function WidgetLastWikis($id, $params) { wfProfileIn(__METHOD__); global $wgSitename, $wgCookiePrefix, $wgOut; $cookie = isset($_COOKIE["{$wgCookiePrefix}recentlyvisited"]) ? $_COOKIE["{$wgCookiePrefix}recentlyvisited"] : false; $server = $_SERVER['SERVER_NAME']; $found = false; $count = 0; $urls = !empty($cookie) ? unserialize($cookie) : array(); // first, prepare the existing rank $items = array(); if (is_array($urls) && count($urls) > 0) { for ($index = 0; $index < 6; $index++) { $url = isset($urls[$index]['url']) ? $urls[$index]['url'] : ''; $name = isset($urls[$index]['name']) ? $urls[$index]['name'] : ''; if ($url == $server) { $found = true; } elseif ($url != '') { $items[] = array('href' => "http://" . $url, 'name' => $name); $count++; } } } // next, add the current Wikia into the list, if it's not already there if (!$found) { if (count($urls) == 5) { array_pop($urls); } if (is_array($url)) { array_unshift($urls, array('url' => $server, 'name' => $wgSitename)); } $expire = time() + 3600 * 24 * 7; $req = new WebRequest(); $req->response()->setcookie('recentlyvisited', serialize($urls), $expire); } if (count($items) > 0) { $ret = WidgetFramework::wrapLinks($items); } else { $ret = $wgOut->parse(wfMsg('wt_lastwikis_noresults')); } wfProfileOut(__METHOD__); return $ret; }
/** * Dismisses notification about updated community message * * Moved from BeforePageDisplay into separate method by Macbre * * @author Maciej Błaszkowski <marooned at wikia-inc.com> */ static function dismissMessage() { wfProfileIn(__METHOD__); global $wgUser, $wgMemc, $wgCityId, $wgExternalDatawareDB; $communityMessagesTimestamp = $wgMemc->get(wfMemcKey('CommunityMessagesTimestamp')); if (!$communityMessagesTimestamp) { //do not waste time on getting timestamp from 'community-corner' - `now` will be enough $communityMessagesTimestamp = time(); } if ($wgUser->isLoggedIn()) { $userTimestamp = self::getUserTimestamp($wgUser); //we have newer message - update user's timestamp if (($userTimestamp === false || $communityMessagesTimestamp > $userTimestamp) && !wfReadOnly()) { $dbw = wfGetDB(DB_MASTER, array(), $wgExternalDatawareDB); $dbw->replace('user_flags', null, array('city_id' => $wgCityId, 'user_id' => $wgUser->getID(), 'type' => self::USER_FLAGS_COMMUNITY_MESSAGES, 'data' => wfTimestamp(TS_DB, $communityMessagesTimestamp)), __METHOD__); // fix for AJAX calls $dbw->commit(); } } else { //anon $req = new WebRequest(); $req->response()->setcookie('CommunityMessages', $communityMessagesTimestamp, time() + 86400); } //hide notice in this session [omit need to send cookie back (anon) or slave lag (logged in)] self::$messageSeen = true; wfDebug(__METHOD__ . " - message dismissed\n"); wfProfileOut(__METHOD__); }
/** * Main entry point. * * @param array $session initial session array * * @return Array: new session array */ public function execute(array $session) { $this->session = $session; if (isset($session['settings'])) { $this->settings = $session['settings'] + $this->settings; } $this->exportVars(); $this->setupLanguage(); if (($this->getVar('_InstallDone') || $this->getVar('_UpgradeDone')) && $this->request->getVal('localsettings')) { $this->request->response()->header('Content-type: application/x-httpd-php'); $this->request->response()->header('Content-Disposition: attachment; filename="LocalSettings.php"'); $ls = InstallerOverrides::getLocalSettingsGenerator($this); $rightsProfile = $this->rightsProfiles[$this->getVar('_RightsProfile')]; foreach ($rightsProfile as $group => $rightsArr) { $ls->setGroupRights($group, $rightsArr); } echo $ls->getText(); return $this->session; } $cssDir = $this->request->getVal('css'); if ($cssDir) { $cssDir = $cssDir == 'rtl' ? 'rtl' : 'ltr'; $this->request->response()->header('Content-type: text/css'); echo $this->output->getCSS($cssDir); return $this->session; } if (isset($session['happyPages'])) { $this->happyPages = $session['happyPages']; } else { $this->happyPages = array(); } if (isset($session['skippedPages'])) { $this->skippedPages = $session['skippedPages']; } else { $this->skippedPages = array(); } $lowestUnhappy = $this->getLowestUnhappy(); # Special case for Creative Commons partner chooser box. if ($this->request->getVal('SubmitCC')) { $page = $this->getPageByName('Options'); $this->output->useShortHeader(); $this->output->allowFrames(); $page->submitCC(); return $this->finish(); } if ($this->request->getVal('ShowCC')) { $page = $this->getPageByName('Options'); $this->output->useShortHeader(); $this->output->allowFrames(); $this->output->addHTML($page->getCCDoneBox()); return $this->finish(); } # Get the page name. $pageName = $this->request->getVal('page'); if (in_array($pageName, $this->otherPages)) { # Out of sequence $pageId = false; $page = $this->getPageByName($pageName); } else { # Main sequence if (!$pageName || !in_array($pageName, $this->pageSequence)) { $pageId = $lowestUnhappy; } else { $pageId = array_search($pageName, $this->pageSequence); } # If necessary, move back to the lowest-numbered unhappy page if ($pageId > $lowestUnhappy) { $pageId = $lowestUnhappy; if ($lowestUnhappy == 0) { # Knocked back to start, possible loss of session data. $this->showSessionWarning = true; } } $pageName = $this->pageSequence[$pageId]; $page = $this->getPageByName($pageName); } # If a back button was submitted, go back without submitting the form data. if ($this->request->wasPosted() && $this->request->getBool('submit-back')) { if ($this->request->getVal('lastPage')) { $nextPage = $this->request->getVal('lastPage'); } elseif ($pageId !== false) { # Main sequence page # Skip the skipped pages $nextPageId = $pageId; do { $nextPageId--; $nextPage = $this->pageSequence[$nextPageId]; } while (isset($this->skippedPages[$nextPage])); } else { $nextPage = $this->pageSequence[$lowestUnhappy]; } $this->output->redirect($this->getUrl(array('page' => $nextPage))); return $this->finish(); } # Execute the page. $this->currentPageName = $page->getName(); $this->startPageWrapper($pageName); if ($page->isSlow()) { $this->disableTimeLimit(); } $result = $page->execute(); $this->endPageWrapper(); if ($result == 'skip') { # Page skipped without explicit submission. # Skip it when we click "back" so that we don't just go forward again. $this->skippedPages[$pageName] = true; $result = 'continue'; } else { unset($this->skippedPages[$pageName]); } # If it was posted, the page can request a continue to the next page. if ($result === 'continue' && !$this->output->headerDone()) { if ($pageId !== false) { $this->happyPages[$pageId] = true; } $lowestUnhappy = $this->getLowestUnhappy(); if ($this->request->getVal('lastPage')) { $nextPage = $this->request->getVal('lastPage'); } elseif ($pageId !== false) { $nextPage = $this->pageSequence[$pageId + 1]; } else { $nextPage = $this->pageSequence[$lowestUnhappy]; } if (array_search($nextPage, $this->pageSequence) > $lowestUnhappy) { $nextPage = $this->pageSequence[$lowestUnhappy]; } $this->output->redirect($this->getUrl(array('page' => $nextPage))); } return $this->finish(); }
/** * Output stylesheet for web installer pages */ public function outputCss() { $this->request->response()->header('Content-type: text/css'); echo $this->output->getCSS(); }
<?php /** * Check versions of installed packages */ $webRequest = new WebRequest(TYPEF_PROVIDER . '?output=json'); $response = $webRequest->response(); if (!is_array($response)) { $response = json_decode($response, true); } $dir = scandir(TYPEF_DIR . '/source/packages'); foreach ($dir as $file) { if (substr($file, -4) == '.xml') { $pathinfo = pathinfo($file); $xml = simplexml_load_file(TYPEF_DIR . '/source/packages/' . $file); $latest = isset($response[$pathinfo['filename']]) ? $response[$pathinfo['filename']] : 'N/A'; echo str_pad($pathinfo['filename'], 24, '.') . str_pad("{$xml['version']}", 15, '.') . $latest . "\n"; } }
public static function isBeta(WebRequest $request) { $tux = $request->getVal('tux', null); if ($tux === null) { $tux = $request->getCookie('tux', null, true); } elseif ($tux) { $request->response()->setCookie('tux', 1); } else { $request->response()->setCookie('tux', 0); } return $tux; }