/** * Main method for displaying hub pages */ public function index() { global $wgCityId; $wikiFactoryHub = WikiFactoryHub::getInstance(); $verticalId = $wikiFactoryHub->getVerticalId($wgCityId); $currentHub = ''; $allVerticals = $wikiFactoryHub->getAllVerticals(); if (isset($allVerticals[$verticalId]['short'])) { $currentHub = $allVerticals[$verticalId]['short']; } $this->setVal('currentHub', $currentHub); if (!$this->checkAccess()) { $titleText = $this->getContext()->getTitle()->getText(); $titleTextSplit = explode('/', $titleText); $this->hubUrl = $titleTextSplit[0]; $this->app->wg->Out->setStatusCode(404); $this->overrideTemplate('404'); return; } $editHubModel = new EditHubModel(); $this->modules = array(); foreach ($editHubModel->getModulesIds() as $moduleId) { $this->modules[$moduleId] = $this->renderModule($editHubModel, $moduleId, $editHubModel->getNotTranslatedModuleName($moduleId)); } $this->response->addAsset('wikiahubs_v3'); $this->response->addAsset('wikiahubs_v3_modal'); $this->response->addAsset('wikiahubs_v3_scss'); $this->response->addAsset('wikiahubs_v3_scss_mobile'); $this->wg->Out->addJsConfigVars(['wgWikiaHubsVerticalId' => $this->verticalId]); if (F::app()->checkSkin('wikiamobile')) { $this->overrideTemplate('wikiamobileindex'); } }
public static function onMakeGlobalVariablesScript(&$vars) { if (F::app()->wg->title->isSpecial('EditHub')) { $editHubModel = new EditHubModel(); $vars['wgEditHubConstants'] = $editHubModel->getAvailableStatuses(); $vars['wgEditHubThumbnailSize'] = $editHubModel->getThumbnailSize(); $vars['wgEditHubUrlRegex'] = trim(WikiaValidatorRestrictiveUrl::URL_RESTRICTIVE_REGEX, 'i/'); $vars['wgEditHubUrl'] = SpecialPage::getTitleFor('EditHub', 'editHub')->getFullURL(); } return true; }
public function filterData($data) { if (!empty($data['text'])) { $model = new EditHubModel(); $data['text'] = strip_tags($data['text'], $model->getAllowedTags()); } if (!empty($data['imageLink'])) { $data['imageLink'] = $this->addProtocolToLink($data['imageLink']); } return parent::filterData($data); }
public function loadData(EditHubModel $model, $params) { $hubParams = $this->getHubsParams(); $lastTimestamp = $model->getLastPublishedTimestamp($hubParams, $params['ts']); $params = $this->prepareParameters($params); $structuredData = WikiaDataAccess::cache($this->getMemcacheKey($lastTimestamp, $this->skinName), WikiaResponse::CACHE_SHORT, function () use($model, $params) { return $this->loadStructuredData($model, $params); }); if ($this->getShouldFilterCommercialData()) { $structuredData = $this->filterCommercialData($structuredData); } return $structuredData; }
protected function loadStructuredData(EditHubModel $model, $params) { $hubParams = $this->getHubsParams(); $moduleData = $model->getPublishedData($hubParams, $params['ts'], $this->getModuleId()); if (empty($moduleData[$this->getModuleId()]['data'])) { $moduleData = array(); } else { $moduleData = $moduleData[$this->getModuleId()]['data']; } $structuredData = array(); if (!empty($moduleData)) { $structuredData = $this->getStructuredData($moduleData); } return $structuredData; }
public function renderEditor($data) { $model = new EditHubModel(); $videoField = $data['form']->getField('video'); $videoUrlField = $data['form']->getField('videoUrl'); if (!empty($videoField['value'])) { foreach ($videoField['value'] as $i => $video) { $data['videos'][$i] = $model->getVideoData($video, $model->getThumbnailSize()); $data['videos'][$i]['title'] = $video; //we enabled curators to edit a video url so if they've changed it we change it here $data['videos'][$i]['fullUrl'] = !empty($videoUrlField['value'][$i]) ? $videoUrlField['value'][$i] : $data['videos'][$i]['fileUrl']; //numbers next to section starts with 2 $data['videos'][$i]['section-no'] = $i + 2; } } return parent::renderEditor($data); }
/** * @param $module WikiaHubsModuleService */ private function purgeCache($module) { global $wgCityId, $wgDisableWAMOnHubs; $module->purgeMemcache($this->date); $this->getHubsServicesHelper()->purgeHubV3Varnish($wgCityId); if (!$wgDisableWAMOnHubs && $this->selectedModuleId == WikiaHubsModuleSliderService::MODULE_ID && $this->date == $this->editHubModel->getLastPublishedTimestamp($wgCityId, null)) { $this->purgeWikiaHomepageHubs(); } }
public function renderEditor($data) { $sliderModel = new WikiaHubsSliderModel(); $data['slidesCount'] = $sliderModel->getSlidesCount(); $data['photos'] = array(); $model = new EditHubModel(); $imageSize = $model->getThumbnailSize(); for ($i = 1; $i <= $data['slidesCount']; $i++) { $photo = $data['form']->getField('photo' . $i); if (!empty($photo['value'])) { $imageData = $this->getImageInfo($photo['value'], $imageSize); $data['photos'][$i]['url'] = $imageData->url; $data['photos'][$i]['imageWidth'] = $imageData->width; $data['photos'][$i]['imageHeight'] = $imageData->height; } } return parent::renderEditor($data); }
public function getRealDataV3($cityId, $prevTimestamp = null) { if ($cityId === 0) { return []; } $currentData = $this->getDataFromModulesV3($cityId); $timestamp = $this->editHubModel->getLastPublishedTimestamp($cityId, $prevTimestamp); foreach ($currentData as &$val) { $val['timestamp'] = $timestamp; } $prevTimestamp = $timestamp - 1; for ($i = 0; $i < self::MAX_DATE_LOOP; $i++) { $prevTimestamp = $this->editHubModel->getLastPublishedTimestamp($cityId, $prevTimestamp); $prevData = null; if ($prevTimestamp) { $prevData = $this->getDataFromModulesV3($cityId, $prevTimestamp); } if ($prevData === null) { $prevTimestamp--; continue; } foreach ($currentData as $url => &$val) { if (array_key_exists($url, $prevData)) { $val['timestamp'] = $prevTimestamp; } } $prevTimestamp--; } $prevTimestamp++; foreach ($currentData as $url => &$val) { if ($val['timestamp'] === $prevTimestamp) { $val['timestamp'] = self::MIN_DATE_FOUND; } } $timestamps = []; // Obtain a list of columns foreach ($currentData as $key => $row) { $timestamps[$key] = $row['timestamp']; } array_multisort($timestamps, SORT_DESC, $currentData); return $currentData; }
public function renderEditor($data) { $data['sectionLimit'] = $this->sectionsLimit; $fileNameField = $data['form']->getField('fileName'); if (!empty($fileNameField['value'])) { $model = new EditHubModel(); $imageData = $this->getImageInfo($fileNameField['value'], $model->getThumbnailSize()); $data['fileUrl'] = $imageData->url; $data['imageWidth'] = $imageData->width; $data['imageHeight'] = $imageData->height; } return parent::renderEditor($data); }
public function filterData($data) { $data = parent::filterData($data); $boxesCount = $this->getModel()->getBoxesCount(); for ($i = 1; $i <= $boxesCount; $i++) { if (!empty($data[self::FIELD_NAME_URL . $i])) { $data[self::FIELD_NAME_URL . $i] = $this->addProtocolToLink($data[self::FIELD_NAME_URL . $i]); } if (!empty($data[self::FIELD_NAME_USERSURL . $i])) { $data['usersUrl' . $i] = $this->addProtocolToLink($data[self::FIELD_NAME_USERSURL . $i]); // get Wiki URL $parsedUrl = parse_url($data[self::FIELD_NAME_USERSURL . $i]); $data['wikiUrl' . $i] = $parsedUrl['host']; $userName = UserService::getNameFromUrl($data[self::FIELD_NAME_USERSURL . $i]); if ($userName !== false) { $data['UserName' . $i] = $userName; } } if (!empty($data[self::FIELD_NAME_QUOTE . $i])) { $model = new EditHubModel(); $data[self::FIELD_NAME_QUOTE . $i] = strip_tags($data[self::FIELD_NAME_QUOTE . $i], $model->getAllowedTags()); } } return $data; }
protected function isValidModule(EditHubModel $model, $moduleId) { if ($moduleId > 0) { return in_array($moduleId, $model->getModulesIds()); } return false; }
/** * @group Slow * @slowExecutionTime 0.05588 ms * @dataProvider getDataModulesSavedDataProvider */ public function testCheckModulesSaved($savedModules, $expectedVal) { $dbMock = $this->getMock('DatabaseMysql', array('select', 'fetchRow')); $dbMock->expects($this->any())->method('fetchRow')->will($this->returnValue($savedModules)); $dbMock->expects($this->once())->method('select')->will($this->returnValue(array())); $this->mockGlobalFunction('wfGetDB', $dbMock); $model = new EditHubModel(); $returnedVal = $model->checkModulesSaved('en', '2', '1360454400'); $this->assertEquals($expectedVal, $returnedVal); }