00001 <?php
00002
00016 import('classes.handler.Handler');
00017
00018
00019 import('lib.pkp.classes.linkAction.LinkAction');
00020 import('lib.pkp.classes.core.JSONMessage');
00021
00022 class CatalogHandler extends Handler {
00026 function CatalogHandler() {
00027 parent::Handler();
00028 }
00029
00030
00031
00032
00033
00039 function index($args, &$request) {
00040 $templateMgr =& TemplateManager::getManager();
00041 $this->setupTemplate($request);
00042 $press =& $request->getPress();
00043
00044
00045 $publishedMonographDao =& DAORegistry::getDAO('PublishedMonographDAO');
00046 $publishedMonographs =& $publishedMonographDao->getByPressId($press->getId());
00047 $templateMgr->assign('publishedMonographs', $publishedMonographs->toAssociativeArray());
00048
00049
00050 $templateMgr->display('catalog/index.tpl');
00051 }
00052
00058 function newReleases($args, &$request) {
00059 $templateMgr =& TemplateManager::getManager();
00060 $this->setupTemplate($request);
00061 $press =& $request->getPress();
00062
00063
00064 $newReleaseDao =& DAORegistry::getDAO('NewReleaseDAO');
00065 $newReleases =& $newReleaseDao->getMonographsByAssoc(ASSOC_TYPE_PRESS, $press->getId());
00066 $templateMgr->assign('publishedMonographs', $newReleases);
00067
00068
00069 $templateMgr->display('catalog/newReleases.tpl');
00070 }
00071
00078 function category($args, &$request) {
00079 $templateMgr =& TemplateManager::getManager();
00080 $press =& $request->getPress();
00081 $this->setupTemplate($request);
00082
00083
00084 $categoryDao =& DAORegistry::getDAO('CategoryDAO');
00085 $categoryPath = array_shift($args);
00086 $category =& $categoryDao->getByPath($categoryPath, $press->getId());
00087 if (isset($category)) {
00088 $templateMgr->assign('category', $category);
00089
00090
00091 $publishedMonographDao =& DAORegistry::getDAO('PublishedMonographDAO');
00092 $publishedMonographs =& $publishedMonographDao->getByCategoryId($category->getId(), $press->getId());
00093 $templateMgr->assign('publishedMonographs', $publishedMonographs->toAssociativeArray());
00094
00095
00096 $featureDao =& DAORegistry::getDAO('FeatureDAO');
00097 $featuredMonographIds = $featureDao->getSequencesByAssoc(ASSOC_TYPE_CATEGORY, $category->getId());
00098 $templateMgr->assign('featuredMonographIds', $featuredMonographIds);
00099
00100
00101 $newReleaseDao =& DAORegistry::getDAO('NewReleaseDAO');
00102 $newReleases =& $newReleaseDao->getMonographsByAssoc(ASSOC_TYPE_CATEGORY, $category->getId());
00103 $templateMgr->assign('newReleasesMonographs', $newReleases);
00104
00105 }
00106 $templateMgr->display('catalog/category.tpl');
00107 }
00108
00115 function series($args, &$request) {
00116 $templateMgr =& TemplateManager::getManager();
00117 $press =& $request->getPress();
00118 $this->setupTemplate($request);
00119
00120
00121 $seriesDao =& DAORegistry::getDAO('SeriesDAO');
00122 $seriesPath = array_shift($args);
00123 $series =& $seriesDao->getByPath($seriesPath, $press->getId());
00124 $templateMgr->assign('series', $series);
00125
00126
00127 $publishedMonographDao =& DAORegistry::getDAO('PublishedMonographDAO');
00128 $publishedMonographs =& $publishedMonographDao->getBySeriesId($series->getId(), $press->getId());
00129 $templateMgr->assign('publishedMonographs', $publishedMonographs->toAssociativeArray());
00130
00131
00132 $featureDao =& DAORegistry::getDAO('FeatureDAO');
00133 $featuredMonographIds = $featureDao->getSequencesByAssoc(ASSOC_TYPE_SERIES, $series->getId());
00134 $templateMgr->assign('featuredMonographIds', $featuredMonographIds);
00135
00136
00137 $newReleaseDao =& DAORegistry::getDAO('NewReleaseDAO');
00138 $newReleases =& $newReleaseDao->getMonographsByAssoc(ASSOC_TYPE_SERIES, $series->getId());
00139 $templateMgr->assign('newReleasesMonographs', $newReleases);
00140
00141
00142 $templateMgr->display('catalog/series.tpl');
00143 }
00144
00151 function results($args, &$request) {
00152 $templateMgr =& TemplateManager::getManager();
00153 $press =& $request->getPress();
00154 $this->setupTemplate($request);
00155
00156 $query = $request->getUserVar('query');
00157 $templateMgr->assign('searchQuery', $query);
00158
00159
00160 import('classes.search.MonographSearch');
00161 $keywords = array(MonographSearch::parseQuery($query));
00162
00163 $resultsIterator =& MonographSearch::retrieveResults($press, $keywords);
00164 $publishedMonographs = array();
00165 while ($result =& $resultsIterator->next()) {
00166 $publishedMonograph =& $result['publishedMonograph'];
00167 if ($publishedMonograph) {
00168 $publishedMonographs[$publishedMonograph->getId()] =& $publishedMonograph;
00169 }
00170 unset($result, $publishedMonograph);
00171 }
00172 $templateMgr->assign('publishedMonographs', $publishedMonographs);
00173
00174
00175 $templateMgr->display('catalog/results.tpl');
00176 }
00177
00181 function fullSize($args, &$request) {
00182
00183 $press =& $request->getPress();
00184 $type = $request->getUserVar('type');
00185 $id = $request->getUserVar('id');
00186 $imageInfo = array();
00187
00188 switch ($type) {
00189 case 'category':
00190 $path = '/categories/';
00191 $categoryDao =& DAORegistry::getDAO('CategoryDAO');
00192 $category = $categoryDao->getById($id, $press->getId());
00193 if ($category) {
00194 $imageInfo = $category->getImage();
00195 }
00196 break;
00197 case 'series':
00198 $path = '/series/';
00199 $seriesDao =& DAORegistry::getDAO('SeriesDAO');
00200 $series = $seriesDao->getById($id, $press->getId());
00201 if ($series) {
00202 $imageInfo = $series->getImage();
00203 }
00204 break;
00205 default:
00206 fatalError('invalid type specified');
00207 break;
00208 }
00209
00210 if ($imageInfo) {
00211 import('file.PressFileManager');
00212 $pressFileManager = new PressFileManager($press->getId());
00213 $pressFileManager->downloadFile($pressFileManager->getBasePath() . $path . $imageInfo['name'], null, true);
00214 }
00215 }
00216
00220 function thumbnail($args, &$request) {
00221 $press =& $request->getPress();
00222 $type = $request->getUserVar('type');
00223 $id = $request->getUserVar('id');
00224 $imageInfo = array();
00225
00226 switch ($type) {
00227 case 'category':
00228 $path = '/categories/';
00229 $categoryDao =& DAORegistry::getDAO('CategoryDAO');
00230 $category = $categoryDao->getById($id, $press->getId());
00231 if ($category) {
00232 $imageInfo = $category->getImage();
00233 }
00234 break;
00235 case 'series':
00236 $path = '/series/';
00237 $seriesDao =& DAORegistry::getDAO('SeriesDAO');
00238 $series = $seriesDao->getById($id, $press->getId());
00239 if ($series) {
00240 $imageInfo = $series->getImage();
00241 }
00242 break;
00243 default:
00244 fatalError('invalid type specified');
00245 break;
00246 }
00247
00248 if ($imageInfo) {
00249 import('file.PressFileManager');
00250 $pressFileManager = new PressFileManager($press->getId());
00251 $pressFileManager->downloadFile($pressFileManager->getBasePath() . $path . $imageInfo['thumbnailName'], null, true);
00252 }
00253 }
00254
00258 function setupTemplate(&$request) {
00259 $templateMgr =& TemplateManager::getManager();
00260 $press =& $request->getPress();
00261 $templateMgr->assign('pressCurrency', $press->getSetting('pressCurrency'));
00262 parent::setupTemplate();
00263 }
00264 }
00265
00266 ?>