/** * Get explore module data from given date and city id * * @requestParam integer $module [REQUIRED] module id see EditHubModel.class.php from line 9 to 17 * @requestParam integer $city [REQUIRED] city id of given hub * @requestParam integer $timestamp [OPTIONAL] unix timestamp, default current date * * @responseParam array $data - Data return by hub module - structure depends on $module parameter * * @example * @example &module=1&city=2&ts=1359504000 */ public function getModuleDataV3() { wfProfileIn(__METHOD__); $moduleId = $this->request->getInt(self::PARAMETER_MODULE); $cityId = $this->request->getInt(self::PARAMETER_CITY); $timestamp = $this->request->getInt(self::PARAMETER_TIMESTAMP, strtotime('00:00')); $model = $this->getModelV3(); $data = null; if (!$this->isValidModule($model, $moduleId)) { throw new InvalidParameterApiException(self::PARAMETER_MODULE); } if (!$this->isValidCity($cityId)) { throw new InvalidParameterApiException(self::PARAMETER_CITY); } if (!$this->isValidTimestamp($timestamp)) { throw new InvalidParameterApiException(self::PARAMETER_TIMESTAMP); } $moduleName = $model->getNotTranslatedModuleName($moduleId); $moduleService = WikiaHubsModuleService::getModuleByName($moduleName, $cityId); if ($this->isValidModuleService($moduleService)) { $moduleService->setShouldFilterCommercialData($this->hideNonCommercialContent()); $data = $moduleService->loadData($model, ['city_id' => $cityId, 'ts' => $timestamp]); } else { throw new BadRequestApiException(); } $this->setResponseData(['data' => $data], ['urlFields' => ['articleUrl', 'href', 'hubUrl', 'imageLink', 'imageUrl', 'photoUrl', 'url', 'userUrl', 'wikiUrl']], WikiaResponse::CACHE_STANDARD); wfProfileOut(__METHOD__); }
/** * Main action for editing hub modules */ public function editHubAction() { global $wgCityId; if (!$this->checkAccess()) { return false; } $this->retriveDataFromUrl(); $this->wg->Out->addJsConfigVars(['wgEditHubModuleIdSelected' => $this->selectedModuleId, 'wgEditHubModuleIdPopularVideos' => WikiaHubsModulePopularvideosService::MODULE_ID, 'wgEditHubModuleIdFeaturedVideo' => WikiaHubsModuleFeaturedvideoService::MODULE_ID]); $this->checkDate($this->date); $this->flashMessage = FlashMessages::pop(); $modulesData = $this->editHubModel->getModulesData($wgCityId, $this->date, $this->selectedModuleId); $this->prepareLayoutData($this->selectedModuleId, $modulesData); $this->response->addAsset('resources/jquery/jquery.validate.js'); $this->response->addAsset('/extensions/wikia/SpecialEditHub/js/EditHub.js'); $this->response->addAsset('/extensions/wikia/SpecialEditHub/js/EditHubNavigation.js'); $this->response->addAsset('/extensions/wikia/SpecialEditHub/js/jquery.MetaData.js'); $selectedModuleValues = $modulesData['moduleList'][$this->selectedModuleId]['data']; $module = WikiaHubsModuleService::getModuleByName($this->editHubModel->getNotTranslatedModuleName($this->selectedModuleId), $wgCityId); $form = new FormBuilderService(EditHubModel::FORM_FIELD_PREFIX); $form->setFields($module->getFormFields()); if ($this->request->wasPosted()) { $selectedModuleValues = $this->request->getParams(); $selectedModuleValues = $module->filterData($selectedModuleValues); $isValid = $form->validate($selectedModuleValues); if ($isValid) { $this->editHubModel->saveModule(['cityId' => $wgCityId, 'langCode' => $this->wg->ContLang->getCode(), 'verticalId' => WikiFactoryHub::getInstance()->getCategoryId($wgCityId)], $this->date, $this->selectedModuleId, $selectedModuleValues, $this->wg->user->getId()); $this->purgeCache($module); FlashMessages::put(wfMessage('edit-hub-module-save-ok', $modulesData['activeModuleName'])->escaped()); $nextUrl = $this->getNextModuleUrl(); $this->response->redirect($nextUrl); } else { $this->errorMessage = wfMessage('edit-hub-module-save-error')->escaped(); } } $form->setFieldsValues($selectedModuleValues); $this->moduleName = $modulesData['activeModuleName']; $this->moduleContent = $module->renderEditor(['form' => $form]); $this->overrideTemplate('editHub'); }
/** * Render one module with given data * * @param EditHubModel $editHubModel * @param int $moduleId * @param string $moduleName * * @return string */ protected function renderModule($editHubModel, $moduleId, $moduleName) { $params = $this->getParams(); $module = WikiaHubsModuleService::getModuleByName($moduleName, $this->cityId); $moduleData = $module->loadData($editHubModel, $params); if (!empty($moduleData)) { return $module->render($moduleData); } else { Wikia::log(__METHOD__, '', 'no module data for day: ' . $this->wg->lang->date($this->hubTimestamp) . ', lang: ' . $this->wg->ContLang->getCode() . ', vertical: ' . $this->verticalId . ', moduleId: ' . $moduleId); return null; } }