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();
     }
 }
Exemple #2
0
 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__);
    }
Exemple #5
0
 function testUnpackData()
 {
     $in = MyHome::customDataPrefix . '{"foo":"bar"}';
     $out = array('foo' => 'bar');
     $this->assertEquals($out, MyHome::unpackData($in));
 }
Exemple #6
0
 /**
  * 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;
 }