public function execute()
 {
     wfProfileIn(__METHOD__);
     // check rights
     if (!ThemeDesignerHelper::checkAccess()) {
         $this->displayRestrictionError();
         wfProfileOut(__METHOD__);
         return;
     }
     Wikia::setVar('OasisEntryControllerName', 'ThemeDesigner');
     wfProfileOut(__METHOD__);
 }
 public function execute()
 {
     wfProfileIn(__METHOD__);
     global $wgOut, $wgExtensionsPath;
     // check rights
     if (!ThemeDesignerHelper::checkAccess()) {
         $this->displayRestrictionError();
         wfProfileOut(__METHOD__);
         return;
     }
     $wgOut->allowClickjacking();
     $this->setHeaders();
     $wgOut->setPageTitle('Example Page Title');
     $wgOut->addScript('<script src="' . $wgExtensionsPath . '/wikia/ThemeDesigner/js/ThemeDesignerPreview.js"></script>');
     $wgOut->addLink(array("type" => "text/css", "rel" => "stylesheet", "href" => AssetsManager::getInstance()->getSassCommonURL('/extensions/wikia/ThemeDesigner/css/ThemeDesignerPreview.scss')));
     $wgOut->addHtml(F::app()->renderView('ThemeDesigner', 'Preview'));
     // page header: use static date
     global $wgHooks;
     $wgHooks['PageHeaderIndexAfterExecute'][] = 'SpecialThemeDesignerPreview::modifyHeaderData';
     wfProfileOut(__METHOD__);
 }
 public function saveSettings($settings, $cityId = null)
 {
     global $wgCityId, $wgUser;
     $cityId = empty($cityId) ? $wgCityId : $cityId;
     // Verify wordmark length ( CONN-116 )
     if (!empty($settings['wordmark-text'])) {
         $settings['wordmark-text'] = trim($settings['wordmark-text']);
     }
     if (empty($settings['wordmark-text'])) {
         // Do not save wordmark if its empty.
         unset($settings['wordmark-text']);
     } else {
         if (mb_strlen($settings['wordmark-text']) > 50) {
             $settings['wordmark-text'] = mb_substr($settings['wordmark-text'], 0, 50);
         }
     }
     if (isset($settings['favicon-image-name']) && strpos($settings['favicon-image-name'], 'Temp_file_') === 0) {
         $temp_file = new LocalFile(Title::newFromText($settings['favicon-image-name'], 6), RepoGroup::singleton()->getLocalRepo());
         $file = new LocalFile(Title::newFromText(self::FaviconImageName, 6), RepoGroup::singleton()->getLocalRepo());
         $file->upload($temp_file->getPath(), '', '');
         $temp_file->delete('');
         Wikia::invalidateFavicon();
         $settings['favicon-image-url'] = $file->getURL();
         $settings['favicon-image-name'] = $file->getName();
         $file->repo->forceMaster();
         $history = $file->getHistory(1);
         if (count($history) == 1) {
             $oldFaviconFile = array('url' => $history[0]->getURL(), 'name' => $history[0]->getArchiveName());
         }
     }
     if (isset($settings['wordmark-image-name']) && strpos($settings['wordmark-image-name'], 'Temp_file_') === 0) {
         $temp_file = new LocalFile(Title::newFromText($settings['wordmark-image-name'], 6), RepoGroup::singleton()->getLocalRepo());
         $file = new LocalFile(Title::newFromText(self::WordmarkImageName, 6), RepoGroup::singleton()->getLocalRepo());
         $file->upload($temp_file->getPath(), '', '');
         $temp_file->delete('');
         $settings['wordmark-image-url'] = $file->getURL();
         $settings['wordmark-image-name'] = $file->getName();
         $file->repo->forceMaster();
         $history = $file->getHistory(1);
         if (count($history) == 1) {
             $oldFile = array('url' => $history[0]->getURL(), 'name' => $history[0]->getArchiveName());
         }
     }
     if (isset($settings['background-image-name']) && strpos($settings['background-image-name'], 'Temp_file_') === 0) {
         $temp_file = new LocalFile(Title::newFromText($settings['background-image-name'], 6), RepoGroup::singleton()->getLocalRepo());
         $file = new LocalFile(Title::newFromText(self::BackgroundImageName, 6), RepoGroup::singleton()->getLocalRepo());
         $file->upload($temp_file->getPath(), '', '');
         $temp_file->delete('');
         $settings['background-image'] = $file->getURL();
         $settings['background-image-name'] = $file->getName();
         $settings['background-image-width'] = $file->getWidth();
         $settings['background-image-height'] = $file->getHeight();
         $imageServing = new ImageServing(null, 120, array("w" => "120", "h" => "65"));
         $settings['user-background-image'] = $file->getURL();
         $settings['user-background-image-thumb'] = wfReplaceImageServer($file->getThumbUrl($imageServing->getCut($file->getWidth(), $file->getHeight(), "origin") . "-" . $file->getName()));
         $file->repo->forceMaster();
         $history = $file->getHistory(1);
         if (count($history) == 1) {
             $oldBackgroundFile = array('url' => $history[0]->getURL(), 'name' => $history[0]->getArchiveName());
         }
     }
     $reason = wfMsg('themedesigner-reason', $wgUser->getName());
     // update history
     if (!empty($GLOBALS[self::WikiFactoryHistory])) {
         $history = $GLOBALS[self::WikiFactoryHistory];
         $lastItem = end($history);
         $revisionId = intval($lastItem['revision']) + 1;
     } else {
         $history = array();
         $revisionId = 1;
     }
     // #140758 - Jakub
     // validation
     // default color values
     foreach (ThemeDesignerHelper::getColorVars() as $sColorVar => $sDefaultValue) {
         if (!isset($settings[$sColorVar]) || !ThemeDesignerHelper::isValidColor($settings[$sColorVar])) {
             $settings[$sColorVar] = $sDefaultValue;
         }
     }
     // update WF variable with current theme settings
     WikiFactory::setVarByName(self::WikiFactorySettings, $cityId, $settings, $reason);
     // add entry
     $history[] = array('settings' => $settings, 'author' => $wgUser->getName(), 'timestamp' => wfTimestampNow(), 'revision' => $revisionId);
     // limit history size to last 10 changes
     $history = array_slice($history, -self::HistoryItemsLimit);
     if (count($history) > 1) {
         for ($i = 0; $i < count($history) - 1; $i++) {
             if (isset($oldFaviconFile) && isset($history[$i]['settings']['favicon-image-name'])) {
                 if ($history[$i]['settings']['favicon-image-name'] == self::FaviconImageName) {
                     $history[$i]['settings']['favicon-image-name'] = $oldFaviconFile['name'];
                     $history[$i]['settings']['favicon-image-url'] = $oldFaviconFile['url'];
                 }
             }
             if (isset($oldFile) && isset($history[$i]['settings']['wordmark-image-name'])) {
                 if ($history[$i]['settings']['wordmark-image-name'] == self::WordmarkImageName) {
                     $history[$i]['settings']['wordmark-image-name'] = $oldFile['name'];
                     $history[$i]['settings']['wordmark-image-url'] = $oldFile['url'];
                 }
             }
             if (isset($oldBackgroundFile) && isset($history[$i]['settings']['background-image-name'])) {
                 if ($history[$i]['settings']['background-image-name'] == self::BackgroundImageName) {
                     $history[$i]['settings']['background-image-name'] = $oldBackgroundFile['name'];
                 }
             }
         }
     }
     WikiFactory::setVarByName(self::WikiFactoryHistory, $cityId, $history, $reason);
 }
<?php

echo ThemeDesignerHelper::parseText("[[File:Aquarium.jpg|thumb|Quisque pellentesque vestibulum ullamcorper.]]\nLorem ipsum dolor sit amet, [[consectetur]] adipiscing elit. Nunc molestie velit a ante [[fringilla vitae]] euismod velit gravida. [[Curabitur]] eu sem et justo sodales [[consequat quis]] vel justo. Vestibulum ante ipsum primis in faucibus orci [[luctus et ultrices]] posuere cubilia Curae. Quisque vitae lectus odio, quis porta orci. Etiam mattis volutpat enim, id posuere eros faucibus id. [[Integer vehicula libero]] vitae est ornare a pellentesque mauris pharetra. Nam eget lorem vestibulum nisi [[commodo suscipit]] non sit amet justo. Fusce imperdiet lacus sed [[turpis ornare]] pretium. ''Maecenas'' [[ante neque]], imperdiet sed accumsan id, gravida a sem. Morbi eu nisl quis nunc tincidunt condimentum euismod sit amet est.\n\n==Donec dapibus==\n\n''[[Sed porttitor ipsum]]'' quis nisi vehicula vel [[auctor magna]] aliquet. Sed eu quam eget arcu [[varius]] pulvinar. Vestibulum aliquam [[blandit turpis]] a porta. Sed feugiat tempor tristique. Duis iaculis arcu non ligula tincidunt dapibus. Vestibulum gravida [[volutpat purus]] sit amet laoreet. In tincidunt sapien sit amet metus ullamcorper sodales sed dignissim lacus. [[Fusce]] interdum tincidunt sodales. Nunc in metus et nisi scelerisque dapibus.\n\n* Quisque nec tellus\n\n* Auctor rutrum quam\n\n* Ut pretium tristique varius\n\nNulla felis tellus, [[tempus]] a eleifend vel, vulputate elementum augue. [[Aliquam erat]] volutpat. Morbi ut arcu nec nunc suscipit venenatis vitae non tortor. [[Pellentesque]] posuere tortor sed mauris aliquam eget [[facilisis tellus]] imperdiet. Integer odio massa, eleifend gravida porta a, hendrerit non orci. [[Donec quis tellus]] vel purus consectetur posuere eu vitae urna. Phasellus sit amet augue ante. Aenean vulputate [[mattis]] sapien a sagittis.\n\nCras [[hendrerit tellus]] ac enim hendrerit mattis. [[Praesent justo]] nulla, consequat et pharetra a, aliquet eu erat. Suspendisse commodo hendrerit dui vel vulputate. Sed [[sit amet]] orci ligula.\n\nPhasellus [[semper enim eu massa]] ornare convallis. Suspendisse quis elit sapien. Integer lacinia [[ultrices tortor]], nec rhoncus [[metus accumsan]] ut. Aliquam [[nec erat vitae]] diam semper eleifend. Morbi condimentum [[lacinia]] felis at rhoncus. Integer [[imperdiet ultricies]] lobortis. Curabitur [[aliquam lectus]] vel orci suscipit mollis. Integer faucibus [[laoreet]] pharetra. Aliquam at erat [[venenatis lacus]] rhoncus semper. Praesent fringilla ligula et quam ullamcorper id viverra est pretium.\n\n==Praesent consequat==\n\nLorem ipsum dolor sit amet, [[consectetur]] adipiscing elit. Nunc molestie velit a ante [[fringilla vitae]] euismod velit gravida. [[Curabitur]] eu sem et justo sodales [[consequat quis]] vel justo. Vestibulum ante ipsum primis in faucibus orci [[luctus et ultrices]] posuere cubilia Curae. Quisque vitae lectus odio, quis porta orci. Etiam mattis volutpat enim, id posuere eros faucibus id. [[Integer vehicula libero]] vitae est ornare a pellentesque mauris pharetra. Nam eget lorem vestibulum nisi [[commodo suscipit]] non sit amet justo. Fusce imperdiet lacus sed [[turpis ornare]] pretium. ''Maecenas'' [[ante neque]], imperdiet sed accumsan id, gravida a sem. Morbi eu nisl quis nunc tincidunt condimentum euismod sit amet est.\n\nNulla felis tellus, [[tempus]] a eleifend vel, vulputate elementum augue. [[Aliquam erat]] volutpat. Morbi ut arcu nec nunc suscipit venenatis vitae non tortor. [[Pellentesque]] posuere tortor sed mauris aliquam eget [[facilisis tellus]] imperdiet. Integer odio massa, eleifend gravida porta a, hendrerit non orci. [[Donec quis tellus]] vel purus consectetur posuere eu vitae urna. Phasellus sit amet augue ante. Aenean vulputate [[mattis]] sapien a sagittis.\n\nCras [[hendrerit tellus]] ac enim hendrerit mattis. [[Praesent justo]] nulla, consequat et pharetra a, aliquet eu erat. Suspendisse commodo hendrerit dui vel vulputate. Sed [[sit amet]] orci ligula.\n\nPhasellus [[semper enim eu massa]] ornare convallis. Suspendisse quis elit sapien. Integer lacinia [[ultrices tortor]], nec rhoncus [[metus accumsan]] ut. Aliquam [[nec erat vitae]] diam semper eleifend. Morbi condimentum [[lacinia]] felis at rhoncus. Integer [[imperdiet ultricies]] lobortis. Curabitur [[aliquam lectus]] vel orci suscipit mollis. Integer faucibus [[laoreet]] pharetra. Aliquam at erat [[venenatis lacus]] rhoncus semper. Praesent fringilla ligula et quam ullamcorper id viverra est pretium.\n\n\n[[Category:Etiam condimentums]]\n");
 public function executeSaveSettings()
 {
     wfProfileIn(__METHOD__);
     global $wgRequest;
     // check rights
     if (!ThemeDesignerHelper::checkAccess()) {
         $this->displayRestrictionError(__METHOD__);
     }
     $data = $wgRequest->getArray('settings');
     if ($wgRequest->wasPosted()) {
         $themeSettings = new ThemeSettings();
         $themeSettings->saveSettings($data);
     }
     wfProfileOut(__METHOD__);
 }