public static function setDefaultView() { global $wgRequest; $defaultView = $wgRequest->getVal('defaultView'); // this method will perfrom extra check if (MyHome::setDefaultView($defaultView)) { return array('msg' => wfMsg('myhome-default-view-success')); } else { return array(); } }
private function renderDefaultSwitch() { // only add switch to activity / watchlist feed $feeds = array('activity', 'watchlist'); if (!in_array($this->type, $feeds)) { return ''; } // check current default view $defaultView = MyHome::getDefaultView(); if ($defaultView == $this->type) { return ''; } // render checkbox with label $html = ''; $html .= Xml::openElement('div', array('id' => 'myhome-feed-switch-default', 'class' => 'accent')); $html .= Xml::element('input', array('id' => 'myhome-feed-switch-default-checkbox', 'type' => 'checkbox', 'name' => $this->type, 'disabled' => 'true')); $html .= Xml::element('label', array('for' => 'myhome-feed-switch-default-checkbox'), wfMsg('myhome-default-view-checkbox', wfMsg("myhome-{$this->type}-feed"))); $html .= Xml::closeElement('div'); return $html; }
private function filterOne($res) { wfProfileIn(__METHOD__); if ($res['type'] == 'log') { $this->filterLog($res); } else { if (empty($res['pageid'])) { $title = Title::newFromText($res['title']); } else { $title = Title::newFromID($res['pageid']); } if ($title && $title->exists()) { if ($title->isRedirect()) { if ($this->proxyType == self::WL) { $this->filterRedirect($res, $title); } } else { $res['rc_params'] = MyHome::unpackData($res['rc_params']); if (isset($res['rc_params']['rollback'])) { $this->invisibleRevisions[] = $res['rc_params']['revId']; } else { if (!in_array($res['revid'], $this->invisibleRevisions)) { $hidenewpages = !empty($this->parameters['flags']) && in_array('hidenewpages', $this->parameters['flags']); //do not show hidden categories (see RT#32015) if (isset($res['rc_params']['categoryInserts'])) { $res['rc_params']['categoryInserts'] = $this->filterHiddenCategories($res['rc_params']['categoryInserts']); } if ($res['type'] == 'new' && !$hidenewpages) { $this->filterNew($res, $title); } else { if ($res['type'] == 'edit') { $this->filterEdit($res, $title); } } } } } } } wfProfileOut(__METHOD__); }
function execute($par) { wfProfileIn(__METHOD__); global $wgOut, $wgUser, $wgBlankImgUrl; $this->setHeaders(); // not available for skins different than Oasis if (!F::app()->checkSkin('oasis')) { $wgOut->addWikiMsg('myhome-switch-to-monaco'); wfProfileOut(__METHOD__); return; } // choose default view (RT #68074) if ($wgUser->isLoggedIn()) { $this->defaultView = MyHome::getDefaultView(); if ($par == '') { $par = $this->defaultView; } } else { $this->defaultView = false; } // watchlist feed if ($par == 'watchlist') { $this->classWatchlist = "selected"; // not available for anons if ($wgUser->isAnon()) { if (get_class(RequestContext::getMain()->getSkin()) == 'SkinOasis') { $wgOut->wrapWikiMsg('<div class="latest-activity-watchlist-login" >$1</div>', array('oasis-activity-watchlist-login', wfGetReturntoParam())); } else { $wgOut->wrapWikiMsg('<div id="myhome-log-in">$1</div>', array('myhome-log-in', wfGetReturntoParam())); } //oasis-activity-watchlist-login // RT #23970 $wgOut->addInlineScript(<<<JS \$(function() { \t\$('#myhome-log-in').find('a').click(function(ev) { \t\topenLogin(ev); \t}); }); JS ); wfProfileOut(__METHOD__); return; } else { $this->feedSelected = 'watchlist'; $feedProxy = new WatchlistFeedAPIProxy(); $feedRenderer = new WatchlistFeedRenderer(); } } else { //for example: wiki-domain.com/wiki/Special:WikiActivity $this->feedSelected = 'activity'; $feedProxy = new ActivityFeedAPIProxy(); $feedRenderer = new ActivityFeedRenderer(); } $feedProvider = new DataFeedProvider($feedProxy); global $wgJsMimeType, $wgExtensionsPath; $wgOut->addScript("<script type=\"{$wgJsMimeType}\" src=\"{$wgExtensionsPath}/wikia/MyHome/WikiActivity.js\"></script>\n"); $wgOut->addExtensionStyle(AssetsManager::getInstance()->getSassCommonURL('extensions/wikia/MyHome/oasis.scss')); wfRunHooks('SpecialWikiActivityExecute', array($wgOut, $wgUser)); $data = $feedProvider->get(50); // this breaks when set to 60... // FIXME: do it in AchievementsII extension global $wgEnableAchievementsInActivityFeed, $wgEnableAchievementsExt; if (!empty($wgEnableAchievementsInActivityFeed) && !empty($wgEnableAchievementsExt)) { $wgOut->addExtensionStyle("{$wgExtensionsPath}/wikia/AchievementsII/css/achievements_sidebar.css"); } // use message from MyHome as special page title $wgOut->setPageTitle(wfMsg('oasis-activity-header')); $template = new EasyTemplate(dirname(__FILE__) . '/templates'); $template->set('data', $data['results']); $showMore = isset($data['query-continue']); if ($showMore) { $template->set('query_continue', $data['query-continue']); } if (empty($data['results'])) { $template->set('emptyMessage', wfMsgExt("myhome-activity-feed-empty", array('parse'))); } $template->set_vars(array('showMore' => $showMore, 'type' => $this->feedSelected, 'wgBlankImgUrl' => $wgBlankImgUrl)); $wgOut->addHTML($template->render('activityfeed.oasis')); // page header: replace subtitle with navigation global $wgHooks; $wgHooks['PageHeaderIndexAfterExecute'][] = array(&$this, 'addNavigation'); wfProfileOut(__METHOD__); }
function testUnpackData() { $in = MyHome::customDataPrefix . '{"foo":"bar"}'; $out = array('foo' => 'bar'); $this->assertEquals($out, MyHome::unpackData($in)); }
/** * Hook that's called when a RecentChange is saved. This prevents any problems from race-conditions between * the creation of a RecentChange and the awarding of its corresponding Achievement (they occur on the same * page-load, but one isn't guaranteed to be before the other). */ public static function savingAnRc(&$rc) { global $wgAchievementToAddToRc, $wgWikiaForceAIAFdebug; wfProfileIn(__METHOD__); // If an achievement is spooled from earlier in the pageload, stuff it into this RecentChange. Wikia::log(__METHOD__, "", "RecentChange has arrived.", $wgWikiaForceAIAFdebug); if (!empty($wgAchievementToAddToRc)) { Wikia::log(__METHOD__, "", "RecentChange arrived. Storing achievement that we've already seen.", $wgWikiaForceAIAFdebug); $additionalData = array('Badge' => $wgAchievementToAddToRc); MyHome::storeInRecentChanges($rc, $additionalData); unset($wgAchievementToAddToRc); } wfProfileOut(__METHOD__); return true; }