/**
  * 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');
     }
 }
Пример #2
0
 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);
 }
Пример #7
0
 /**
  * @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);
 }
Пример #9
0
 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;
 }
Пример #13
0
 /**
  * @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);
 }