/** * hasProblems * (returns TRUE if there's a problem) * - Checks an article to see if it contains an image in the intro section * - Checks to see if there's a {{nointroimg}} template * - Checks to see if there's an {{nfd}} template * - Checks to see if there's an {{copyvio}} template * - Checks to see if there's an {{copyviobot}} template * - Makes sure an article has been NABbed * - Makes sure last edit has been patrolled **/ function hasProblems($t, $dbr) { $r = Revision::newFromTitle($t); $intro = Article::getSection($r->getText(), 0); //check for intro image if (preg_match('/\\[\\[Image:(.*?)\\]\\]/', $intro)) { return true; } //check for {{nointroimg}} template if (preg_match('/{{nointroimg/', $intro)) { return true; } //check for {{nfd}} template if (preg_match('/{{nfd/', $intro)) { return true; } //check for {{copyvio}} or {{copyviobot}} template if (preg_match('/{{copyvio/', $intro)) { return true; } //is it NABbed? $is_nabbed = Newarticleboost::isNABbed($dbr, $t->getArticleId()); if (!$is_nabbed) { return true; } //last edit patrolled? if (!GoodRevision::patrolledGood($t)) { return true; } //all clear? return false; }
protected function fetchArticleHtml($title, $revid) { if (!$revid) { $good = GoodRevision::newFromTitle($title, $title->getArticleID()); if ($good) { $revid = $good->latestGood(); } } $article = new Article($title, $revid); if (!$article) { return false; } $article->loadContent(); $rev = $article->mRevision; if (!$rev) { return false; } $this->getNonMobileHtml($title, $rev); $builder = new MobileAppArticleBuilder(); $this->html = $builder->createByHtml($title, $this->html); return true; }
function getLastGoodRevision($aid) { $t = Title::newFromId($aid); $r = null; if (GoodRevision::patrolledGood($t)) { $gr = GoodRevision::newFromTitle($t, $aid); $r = Revision::newFromId($gr->latestGood()); } return $r; }
/** * hasProblems * (returns TRUE if there's a problem) * - Makes sure last edit has been patrolled **/ function hasProblems($pageid) { if (empty($pageid)) { return true; } $t = Title::newFromId($pageid); if (!$t) { return true; } //last edit patrolled? if (!GoodRevision::patrolledGood($t)) { return true; } //all clear? return false; }
private function getFeaturedArticleIntro(&$title) { // use public methods from the RSS feed that do the same thing $article = GoodRevision::newArticleFromLatest($title); $summary = Generatefeed::getArticleSummary($article, $title); return $summary; }
/** * Print the history page for an article. */ function onView() { global $wgScript, $wgUseFileCache; $out = $this->getOutput(); $request = $this->getRequest(); /** * Allow client caching. */ if ($out->checkLastModified($this->page->getTouched())) { return; // Client cache fresh and headers sent, nothing more to do. } wfProfileIn(__METHOD__); $this->preCacheMessages(); # Fill in the file cache if not set already if ($wgUseFileCache && HTMLFileCache::useFileCache($this->getContext())) { $cache = HTMLFileCache::newFromTitle($this->getTitle(), 'history'); if (!$cache->isCacheGood()) { ob_start(array(&$cache, 'saveToFileCache')); } } // Setup page variables. $out->setFeedAppendQuery('action=history'); $out->addModules('mediawiki.action.history'); // Handle atom/RSS feeds. $feedType = $request->getVal('feed'); if ($feedType) { $this->feed($feedType); wfProfileOut(__METHOD__); return; } // Fail nicely if article doesn't exist. if (!$this->page->exists()) { $out->addWikiMsg('nohistory'); # show deletion/move log if there is an entry LogEventsList::showLogExtract($out, array('delete', 'move'), $this->getTitle(), '', array('lim' => 10, 'conds' => array("log_action != 'revision'"), 'showIfEmpty' => false, 'msgKey' => array('moveddeleted-notice'))); wfProfileOut(__METHOD__); return; } /** * Add date selector to quickly get to a certain time */ $year = $request->getInt('year'); $month = $request->getInt('month'); $tagFilter = $request->getVal('tagfilter'); $tagSelector = ChangeTags::buildTagFilterSelector($tagFilter); /** * Option to show only revisions that have been (partially) hidden via RevisionDelete */ if ($request->getBool('deleted')) { $conds = array('rev_deleted != 0'); } else { $conds = array(); } if ($this->getUser()->isAllowed('deletedhistory')) { $checkDeleted = Xml::checkLabel($this->msg('history-show-deleted')->text(), 'deleted', 'mw-show-deleted-only', $request->getBool('deleted')) . "\n"; } else { $checkDeleted = ''; } // Add the general form $action = htmlspecialchars($wgScript); $out->addHTML("<form action=\"{$action}\" method=\"get\" id=\"mw-history-searchform\">" . Xml::fieldset($this->msg('history-fieldset-title')->text(), false, array('id' => 'mw-history-search')) . Html::hidden('title', $this->getTitle()->getPrefixedDBkey()) . "\n" . Html::hidden('action', 'history') . "\n" . Xml::dateMenu($year == null ? MWTimestamp::getLocalInstance()->format('Y') : $year, $month) . ' ' . ($tagSelector ? implode(' ', $tagSelector) . ' ' : '') . $checkDeleted . Xml::submitButton($this->msg('allpagessubmit')->text()) . "\n" . '</fieldset></form>'); wfRunHooks('PageHistoryBeforeList', array(&$this->page, $this->getContext())); // XXCHANGED Reuben 1/23/2014: include good revision debugging info in // page history for staff global $wgUser; $userGroups = $wgUser ? $wgUser->getGroups() : array(); $this->mShowGoodRev = in_array('staff', $userGroups); if ($this->mShowGoodRev) { $pageid = $this->page->getId(); $gr = GoodRevision::newFromTitle($this->getTitle(), $pageid); if ($gr) { $this->mGoodRev = $gr->latestGood(); } } // Create and output the list. $pager = new HistoryPager($this, $year, $month, $tagFilter, $conds); $out->addHTML($pager->getNavigationBar() . $pager->getBody() . $pager->getNavigationBar()); $out->preventClickjacking($pager->getPreventClickjacking()); wfProfileOut(__METHOD__); }
function getNextArticleId() { global $wgMemc; $key = $this->pageIdsKey; $pageIds = $wgMemc->get($key); if (empty($pageIds) || $this->fetchMoreArticleIds()) { $pageIds = $this->getUncategorizedPageIds(); $wgMemc->set($key, $pageIds, $this->oneWeek); // Remove old inuse article ids $wgMemc->set($this->inUseKey, array(), $this->halfHour); } $pageId = -1; foreach ($pageIds as $page) { try { if (!$this->skipped($page) && !$this->inUse($page) && GoodRevision::patrolledGood(Title::newFromId($page))) { $this->markInUse($page); $pageId = $page; break; } } catch (Exception $e) { $this->skip($page); continue; } } return $pageId; }
/** * Template filter callback for wikiHow skin. * Takes an associative array of data set from a SkinTemplate-based * class, and a wrapper for MediaWiki's localization database, and * outputs a formatted page. * * @access private */ public function execute() { global $wgUser, $wgLang, $wgTitle, $wgRequest, $wgParser, $wgGoogleSiteVerification; global $wgOut, $wgScript, $wgStylePath, $wgLanguageCode, $wgForumLink; global $wgContLang, $wgXhtmlDefaultNamespace, $wgContLanguageCode; global $wgWikiHowSections, $IP, $wgServer, $wgServerName, $wgIsDomainTest; global $wgSSLsite, $wgSpecialPages; $prefix = ""; if (class_exists('MobileWikihow')) { $mobileWikihow = new MobileWikihow(); $result = $mobileWikihow->controller(); // false means we stop processing template if (!$result) { return; } } $action = $wgRequest->getVal('action', 'view'); if (count($wgRequest->getVal('diff')) > 0) { $action = 'diff'; } $isMainPage = $wgTitle && $wgTitle->getNamespace() == NS_MAIN && $wgTitle->getText() == wfMessage('mainpage')->inContentLanguage()->text() && $action == 'view'; $isArticlePage = $wgTitle && !$isMainPage && $wgTitle->getNamespace() == NS_MAIN && $action == 'view'; $isDocViewer = $wgTitle->getText() == "DocViewer"; $isBehindHttpAuth = !empty($_SERVER['HTTP_AUTHORIZATION']); // determine whether or not the user is logged in $isLoggedIn = $wgUser->getID() > 0; $isTool = false; wfRunHooks('getToolStatus', array(&$isTool)); $sk = $this->getSkin(); wikihowAds::setCategories(); if (!$isLoggedIn && $action == "view") { wikihowAds::getGlobalChannels(); } $showAds = wikihowAds::isEligibleForAds(); $isIndexed = RobotPolicy::isIndexable($wgTitle); $pageTitle = SkinWikihowSkin::getHTMLTitle($wgOut->getHTMLTitle(), $this->data['title'], $isMainPage); // set the title and what not $avatar = ''; $namespace = $wgTitle->getNamespace(); if ($namespace == NS_USER || $namespace == NS_USER_TALK) { $username = $wgTitle->getText(); $usernameKey = $wgTitle->getDBKey(); $avatar = $wgLanguageCode == 'en' ? Avatar::getPicture($usernameKey) : ""; $h1 = $username; if ($wgTitle->getNamespace() == NS_USER_TALK) { $h1 = $wgLang->getNsText(NS_USER_TALK) . ": {$username}"; } elseif ($username == $wgUser->getName()) { //user's own page $profileBoxName = wfMessage('profilebox-name')->text(); $h1 .= "<div id='gatEditRemoveButtons'>\n\t\t\t\t\t\t\t\t<a href='/Special:Profilebox' id='gatProfileEditButton'>Edit</a>\n\t\t\t\t\t\t\t\t | <a href='#' onclick='removeUserPage(\"{$profileBoxName}\");'>Remove {$profileBoxName}</a>\n\t\t\t\t\t\t\t\t </div>"; } $this->set("title", $h1); } $logoutPage = $wgLang->specialPage("Userlogout"); $returnTarget = $wgTitle->getPrefixedURL(); $returnto = strcasecmp(urlencode($logoutPage), $returnTarget) ? "returnto={$returnTarget}" : ""; $login = ""; if (!$wgUser->isAnon()) { $uname = $wgUser->getName(); if (strlen($uname) > 16) { $uname = substr($uname, 0, 16) . "..."; } $login = wfMessage('welcome_back', $wgUser->getUserPage()->getFullURL(), $uname)->text(); if ($wgLanguageCode == 'en' && $wgUser->isFacebookUser()) { $login = wfMessage('welcome_back_fb', $wgUser->getUserPage()->getFullURL(), $wgUser->getName())->text(); } elseif ($wgLanguageCode == 'en' && $wgUser->isGPlusUser()) { $gname = $wgUser->getName(); if (substr($gname, 0, 3) == 'GP_') { $gname = substr($gname, 0, 12) . '...'; } $login = wfMessage('welcome_back_gp', $wgUser->getUserPage()->getFullURL(), $gname)->text(); } } else { if ($wgLanguageCode == "en") { $login = wfMessage('signup_or_login', $returnto)->text() . " " . wfMessage('social_connect_header')->text(); } else { $login = wfMessage('signup_or_login', $returnto)->text(); } } //XX PROFILE EDIT/CREAT/DEL BOX DATE - need to check for pb flag in order to display this. $pbDate = ""; $pbDateFlag = 0; $profilebox_name = wfMessage('profilebox-name')->text(); if ($wgTitle->getNamespace() == NS_USER) { if ($u = User::newFromName($wgTitle->getDBKey())) { if (UserPagePolicy::isGoodUserPage($wgTitle->getDBKey())) { $pbDate = ProfileBox::getPageTop($u); $pbDateFlag = true; } } } $heading = ''; if (!$sk->suppressH1Tag()) { if ($wgTitle->getNamespace() == NS_MAIN && $wgTitle->exists() && $action == "view") { if (Microdata::showRecipeTags() && Microdata::showhRecipeTags()) { $itemprop_name1 = " fn'"; $itemprop_name2 = ""; } else { $itemprop_name1 = "' itemprop='name'"; $itemprop_name2 = " itemprop='url'"; } $heading = "<h1 class='firstHeading" . $itemprop_name1 . "><a href=\"" . $wgTitle->getFullURL() . "\"" . $itemprop_name2 . ">" . wfMessage('howto', $this->data['title'])->text() . "</a></h1>"; } else { if ($wgTitle->getNamespace() == NS_USER && UserPagePolicy::isGoodUserPage($wgTitle->getDBKey()) || $wgTitle->getNamespace() == NS_USER_TALK) { $heading = "<h1 class=\"firstHeading\" >" . $this->data['title'] . "</h1> " . $pbDate; if ($avatar) { $heading = $avatar . "<div id='avatarNameWrap'>" . $heading . "</div><div style='clear: both;'> </div>"; } } else { if ($this->data['title'] && strtolower(substr($wgTitle->getText(), 0, 9)) != 'userlogin') { $heading = "<h1 class='firstHeading'>" . $this->data['title'] . "</h1>"; } } } } // get the breadcrumbs / category links at the top of the page $catLinksTop = $sk->getCategoryLinks(true); wfRunHooks('getBreadCrumbs', array(&$catLinksTop)); $mainPageObj = Title::newMainPage(); $isPrintable = false; if (MWNamespace::isTalk($wgTitle->getNamespace()) && $action == "view") { $isPrintable = $wgRequest->getVal("printable") == "yes"; } // QWER links for everyone on all pages //$helplink = Linker::link(Title::makeTitle(NS_PROJECT_TALK, 'Help-Team'), wfMessage('help')->text()); $logoutlink = Linker::link(Title::makeTitle(NS_SPECIAL, 'Userlogout'), wfMessage('logout')->text()); $rsslink = "<a href='" . $wgServer . "/feed.rss'>" . wfMessage('rss')->text() . "</a>"; $rplink = Linker::link(Title::makeTitle(NS_SPECIAL, "Randompage"), wfMessage('randompage')->text()); if ($wgTitle->getNamespace() == NS_MAIN && !$isMainPage && $wgTitle->userCan('edit')) { $links[] = array(Title::makeTitle(NS_SPECIAL, "Recentchangeslinked")->getFullURL() . "/" . $wgTitle->getPrefixedURL(), wfMessage('recentchangeslinked')->text()); } //Editing Tools $uploadlink = ""; $freephotoslink = ""; $uploadlink = Linker::link(Title::makeTitle(NS_SPECIAL, "Upload"), wfMessage('upload')->text()); $freephotoslink = Linker::link(Title::makeTitle(NS_SPECIAL, "ImportFreeImages"), wfMessage('imageimport')->text()); $relatedchangeslink = ""; if ($isArticlePage) { $relatedchangeslink = "<li> <a href='" . Title::makeTitle(NS_SPECIAL, "Recentchangeslinked")->getFullURL() . "/" . $wgTitle->getPrefixedURL() . "'>" . wfMessage('recentchangeslinked')->text() . "</a></li>"; } //search $searchTitle = Title::makeTitle(NS_SPECIAL, "LSearch"); $otherLanguageLinks = array(); $translationData = array(); if ($this->data['language_urls']) { foreach ($this->data['language_urls'] as $lang) { if ($lang['code'] == $wgLanguageCode) { continue; } $otherLanguageLinks[$lang['code']] = $lang['href']; $langMsg = $sk->getInterWikiCTA($lang['code'], $lang['text'], $lang['href']); if (!$langMsg) { continue; } $encLangMsg = json_encode($langMsg); $translationData[] = "'{$lang['code']}': {'msg':{$encLangMsg}}"; } } if (!$isMainPage && !$isDocViewer && (!isset($_COOKIE['sitenoticebox']) || !$_COOKIE['sitenoticebox'])) { $siteNotice = $sk->getSiteNotice(); } else { $siteNotice = ''; } // Right-to-left languages $dir = $wgContLang->isRTL() ? "rtl" : "ltr"; $head_element = "<html xmlns:fb=\"https://www.facebook.com/2008/fbml\" xmlns=\"{$wgXhtmlDefaultNamespace}\" xml:lang=\"{$wgContLanguageCode}\" lang=\"{$wgContLanguageCode}\" dir='{$dir}'>\n"; $rtl_css = ""; if ($wgContLang->isRTL()) { $rtl_css = "<style type=\"text/css\" media=\"all\">/*<![CDATA[*/ @import \\a" . wfGetPad("/extensions/min/f/skins/WikiHow/rtl.css") . "\"; /*]]>*/</style>"; $rtl_css .= "\n <!--[if IE]>\n <style type=\"text/css\">\n BODY { margin: 25px; }\n </style>\n <![endif]-->"; } $printable_media = "print"; if ($wgRequest->getVal('printable') == 'yes') { $printable_media = "all"; } $top_search = ""; $footer_search = ""; if ($wgLanguageCode == 'en') { //INTL: Search options for the english site are a bit more complex if (!$isLoggedIn) { $top_search = GoogSearch::getSearchBox("cse-search-box"); } else { $top_search = ' <form id="bubble_search" name="search_site" action="' . $searchTitle->getFullURL() . '" method="get"> <input type="text" class="search_box" name="search" x-webkit-speech /> <input type="submit" value="Search" id="search_site_bubble" class="search_button" /> </form>'; } } else { //INTL: International search just uses Google custom search $top_search = GoogSearch::getSearchBox("cse-search-box"); } $text = $this->data['bodytext']; // Remove stray table under video section. Probably should eventually do it at // the source, but then have to go through all articles. if (strpos($text, '<a name="Video">') !== false) { $vidpattern = "<p><br /></p>\n<center>\n<table width=\"375px\">\n<tr>\n<td><br /></td>\n<td align=\"left\"></td>\n</tr>\n</table>\n</center>\n<p><br /></p>"; $text = str_replace($vidpattern, "", $text); } $this->data['bodytext'] = $text; // hack to get the FA template working, remove after we go live $fa = ''; if ($wgLanguageCode != "nl" && strpos($this->data['bodytext'], 'featurestar') !== false) { $fa = '<p id="feature_star">' . wfMessage('featured_article')->text() . '</p>'; //$this->data['bodytext'] = preg_replace("@<div id=\"featurestar\">(.|\n)*<div style=\"clear:both\"></div>@mU", '', $this->data['bodytext']); } $body = ''; if ($wgTitle->userCan('edit') && $action != 'edit' && $action != 'diff' && $action != 'history' && ($isLoggedIn && !in_array($wgTitle->getNamespace(), array(NS_USER, NS_USER_TALK, NS_IMAGE, NS_CATEGORY)) || !in_array($wgTitle->getNamespace(), array(NS_USER, NS_USER_TALK, NS_IMAGE, NS_CATEGORY)))) { //INTL: Need bigger buttons for non-english sites $editlink_text = $wgTitle->getNamespace() == NS_MAIN ? wfMessage('editarticle')->text() : wfMessage('edit')->text(); $heading = '<a href="' . $wgTitle->getLocalURL($sk->editUrlOptions()) . '" class="editsection">' . $editlink_text . '</a>' . $heading; } if ($isArticlePage || $wgTitle->getNamespace() == NS_PROJECT && $action == 'view' || $wgTitle->getNamespace() == NS_CATEGORY && !$wgTitle->exists()) { if ($wgTitle->getNamespace() == NS_PROJECT && ($wgTitle->getDbKey() == 'RSS-feed' || $wgTitle->getDbKey() == 'Rising-star-feed')) { $list_page = true; $sticky = false; } else { $list_page = false; $sticky = true; } $body .= $heading . ArticleAuthors::getAuthorHeader() . $this->data['bodytext']; $body = '<div id="bodycontents">' . $body . '</div>'; $wikitext = ContentHandler::getContentText($this->getSkin()->getContext()->getWikiPage()->getContent(Revision::RAW)); $magic = WikihowArticleHTML::grabTheMagic($wikitext); $this->data['bodytext'] = WikihowArticleHTML::processArticleHTML($body, array('sticky-headers' => $sticky, 'ns' => $wgTitle->getNamespace(), 'list-page' => $list_page, 'magic-word' => $magic)); } else { if ($action == 'edit') { $heading .= WikihowArticleEditor::grabArticleEditLinks($wgRequest->getVal("guidededitor")); } $this->data['bodyheading'] = $heading; $body = '<div id="bodycontents">' . $this->data['bodytext'] . '</div>'; if (!$isTool) { $this->data['bodytext'] = WikihowArticleHTML::processHTML($body, $action, array('show-gray-container' => $sk->showGrayContainer())); } else { // a little hack to style the no such special page messages for special pages that actually // exist if (false !== strpos($body, 'You have arrived at a "special page"')) { $body = "<div class='minor_section'>{$body}</div>"; } $this->data['bodytext'] = $body; } } // post-process the Steps section HTML to get the numbers working if ($wgTitle->getNamespace() == NS_MAIN && !$isMainPage && ($action == 'view' || $action == 'purge')) { // for preview article after edit, you have to munge the // steps of the previewHTML manually $body = $this->data['bodytext']; $opts = array(); if (!$showAds) { $opts['no-ads'] = true; } //$this->data['bodytext'] = WikihowArticleHTML::postProcess($body, $opts); } // insert avatars into discussion, talk, and kudos pages if (MWNamespace::isTalk($wgTitle->getNamespace()) || $wgTitle->getNamespace() == NS_USER_KUDOS) { $this->data['bodytext'] = Avatar::insertAvatarIntoDiscussion($this->data['bodytext']); } //$navMenu = $sk->genNavigationMenu(); $navTabs = $sk->genNavigationTabs(); // set up the main page $mpActions = ""; $mpWorldwide = ' '; $profileBoxIsUser = false; if ($isLoggedIn && $wgTitle && $wgTitle->getNamespace() == NS_USER) { $name = $wgTitle->getDBKey(); $profileBoxUser = User::newFromName($name); if ($profileBoxUser && $wgUser->getID() == $profileBoxUser->getID()) { $profileBoxIsUser = true; } } // Reuben (11/2013): Micro-customization as a test for BR //$slowSpeedUsers = array('BR'); $slowSpeedUsers = array(); $isSlowSpeedUser = $wgUser && in_array($wgUser->getName(), $slowSpeedUsers); $optimizelyJS = false; if (class_exists('OptimizelyPageSelector') && $wgTitle) { if (OptimizelyPageSelector::isArticleEnabled($wgTitle) && OptimizelyPageSelector::isUserEnabled($wgUser)) { $optimizelyJS = OptimizelyPageSelector::getOptimizelyTag(); } } $showSpotlightRotate = $isMainPage && $wgLanguageCode == 'en'; $showBreadCrumbs = $sk->showBreadCrumbs(); $showSideBar = $sk->showSideBar(); $showHeadSection = $sk->showHeadSection(); $showArticleTabs = $wgTitle->getNamespace() != NS_SPECIAL && !$isMainPage; if (in_array($wgTitle->getNamespace(), array(NS_IMAGE)) && (empty($action) || $action == 'view') && !$isLoggedIn) { $showArticleTabs = false; } $showWikiTextWidget = false; if (class_exists('WikitextDownloader')) { $showWikiTextWidget = WikitextDownloader::isAuthorized() && !$isDocViewer; } $showRCWidget = class_exists('RCWidget') && $wgTitle->getNamespace() != NS_USER && (!$isLoggedIn || $wgUser->getOption('recent_changes_widget_show', true) == 1) && ($isLoggedIn || $isMainPage) && !in_array($wgTitle->getPrefixedText(), array('Special:Avatar', 'Special:ProfileBox', 'Special:IntroImageAdder')) && strpos($wgTitle->getPrefixedText(), 'Special:Userlog') === false && !$isDocViewer && $action != 'edit'; $showFollowWidget = class_exists('FollowWidget') && !$isDocViewer && in_array($wgLanguageCode, array('en', 'de', 'es', 'pt')); $showSocialSharing = $wgTitle && $wgTitle->exists() && $wgTitle->getNamespace() == NS_MAIN && !$isSlowSpeedUser && $action == 'view' && class_exists('WikihowShare'); $showSliderWidget = class_exists('Slider') && $wgTitle->exists() && $wgTitle->getNamespace() == NS_MAIN && !$wgTitle->isProtected() && !$isPrintable && !$isMainPage && $isIndexed && $wgLanguageCode == 'en' && $wgRequest->getVal('oldid') == '' && ($wgRequest->getVal('action') == '' || $wgRequest->getVal('action') == 'view'); $showTopTenTips = $wgTitle->exists() && $wgTitle->getNamespace() == NS_MAIN && $wgLanguageCode == 'en' && !$isPrintable && !$isMainPage && $wgRequest->getVal('oldid') == '' && ($wgRequest->getVal('action') == '' || $wgRequest->getVal('action') == 'view'); $showAltMethod = false; if (class_exists('AltMethodAdder')) { $showAltMethod = true; } $showExitTimer = $wgLanguageCode == 'en' && class_exists('BounceTimeLogger') && !$isSlowSpeedUser; $showRUM = false; //($isArticlePage || $isMainPage) && !$isBehindHttpAuth && !$isSlowSpeedUser; $showGoSquared = ($isArticlePage || $isMainPage) && !$isLoggedIn && !$isBehindHttpAuth && mt_rand(1, 100) <= 30; // 30% chance $showClickIgniter = !$isLoggedIn && !$isBehindHttpAuth && !$wgSSLsite; $showGA = !$isSlowSpeedUser; $showGAevents = $wgLanguageCode == 'en' && $isMainPage && !$isSlowSpeedUser; $isLiquid = false; //!$isMainPage && ( $wgTitle->getNameSpace() == NS_CATEGORY ); $showFeaturedArticlesSidebar = $action == 'view' && !$isMainPage && !$isDocViewer && !$wgSSLsite && $wgTitle->getNamespace() != NS_USER; $isSpecialPage = $wgTitle->getNamespace() == NS_SPECIAL || $wgTitle->getNamespace() == NS_MAIN && $wgRequest->getVal('action') == 'protect' || $wgTitle->getNamespace() == NS_MAIN && $wgRequest->getVal('action') == 'delete'; $showTextScroller = class_exists('TextScroller') && $wgTitle->exists() && $wgTitle->getNamespace() == NS_MAIN && !$isPrintable && !$isMainPage && strpos($this->data['bodytext'], 'textscroller_outer') !== false; $showUserCompletedImages = class_exists('UCIPatrol') && $wgTitle->exists() && $wgTitle->getNamespace() == NS_MAIN && !$isMainPage && UCIPatrol::showUCI($this->getSkin()->getContext()->getTitle()); $showImageFeedback = class_exists('ImageFeedback') && ImageFeedback::isValidPage(); $showWikivideo = class_exists('WHVid') && ($wgTitle->exists() && $wgTitle->getNamespace() == NS_MAIN && strpos($this->data['bodytext'], 'whvid_cont') !== false || $wgTitle->getNamespace() == NS_SPECIAL) && !$isPrintable && !$isMainPage; $showStaffStats = !$isMainPage && $isLoggedIn && (in_array('staff', $wgUser->getGroups()) || in_array('staff_widget', $wgUser->getGroups())) && $wgTitle->getNamespace() == NS_MAIN && class_exists('Pagestats'); $showThumbsUp = class_exists('ThumbsNotifications'); $postLoadJS = $isArticlePage; // add present JS files to extensions/min/groupsConfig.php $fullJSuri = '/extensions/min/g/whjs' . (!$isArticlePage ? ',jqui' : '') . ($showExitTimer ? ',stu' : '') . ($showRCWidget ? ',rcw' : '') . ($showSpotlightRotate ? ',sp' : '') . ($showFollowWidget ? ',fl' : '') . ($showSliderWidget ? ',slj' : '') . ($showThumbsUp ? ',thm' : '') . ($showWikiTextWidget ? ',wkt' : '') . ($showAltMethod ? ',altj' : '') . ($showTopTenTips ? ',tpt' : '') . ($isMainPage ? ',hp' : '') . ($showWikivideo ? ',whv' : '') . ($showImageFeedback ? ',ii' : '') . ($showUserCompletedImages ? ',uci' : '') . ($showTextScroller ? ',ts' : ''); if ($wgOut->mJSminCodes) { $fullJSuri .= ',' . join(',', $wgOut->mJSminCodes); } $cachedParam = $wgRequest && $wgRequest->getVal('c') == 't' ? '&c=t' : ''; $fullJSuri .= '&r=' . WH_SITEREV . $cachedParam . '&e=.js'; $fullCSSuri = '/extensions/min/g/whcss' . (!$isArticlePage ? ',jquic,nona' : '') . ($isLoggedIn ? ',li' : '') . ($showSliderWidget ? ',slc' : '') . ($showAltMethod ? ',altc' : '') . ($showTopTenTips ? ',tptc' : '') . ($showWikivideo ? ',whvc' : '') . ($showTextScroller ? ',tsc' : '') . ($isMainPage ? ',hpc' : '') . ($showImageFeedback ? ',iic' : '') . ($showUserCompletedImages ? ',ucic' : '') . ($isSpecialPage ? ',spc' : ''); if ($wgOut->mCSSminCodes) { $fullCSSuri .= ',' . join(',', $wgOut->mCSSminCodes); } $fullCSSuri .= '&r=' . WH_SITEREV . $cachedParam . '&e=.css'; $tabsArray = $sk->getTabsArray($showArticleTabs); wfRunHooks('JustBeforeOutputHTML', array(&$this)); ?> <!DOCTYPE html> <?php echo $head_element; ?> <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# article: http://ogp.me/ns/article#"> <title><?php echo $pageTitle; ?> </title> <?php /*Hack to add variable WH as a global variable before loading script. This is need because load.php creates a closure when loading wikibits.js Add by Gershon Bialer on 12/2/2013*/ ?> <script> <!-- var WH = WH || {}; //--> </script> <?php if ($showRUM) { ?> <script> <!-- window.UVPERF = {}; UVPERF.authtoken = 'b473c3f9-a845-4dc3-9432-7ad0441e00c3'; UVPERF.start = new Date().getTime(); //--> </script> <?php } ?> <?php if ($wgIsDomainTest) { ?> <base href="http://www.wikihow.com/" /> <?php } ?> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta name="verify-v1" content="/Ur0RE4/QGQIq9F46KZyKIyL0ZnS96N5x1DwQJa7bR8=" /> <meta name="google-site-verification" content="Jb3uMWyKPQ3B9lzp5hZvJjITDKG8xI8mnEpWifGXUb0" /> <meta name="msvalidate.01" content="CFD80128CAD3E726220D4C2420D539BE" /> <meta name="y_key" content="1b3ab4fc6fba3ab3" /> <meta name="p:domain_verify" content="bb366527fa38aa5bc27356b728a2ec6f" /> <?php if ($isArticlePage || $isMainPage) { ?> <link rel="alternate" media="only screen and (max-width: 640px)" href="http://<?php if ($wgLanguageCode != 'en') { echo $wgLanguageCode . "."; } ?> m.wikihow.com/<?php echo $wgTitle->getPartialUrl(); ?> "> <?php } ?> <?php // add CSS files to extensions/min/groupsConfig.php ?> <style type="text/css" media="all">/*<![CDATA[*/ @import "<?php echo $fullCSSuri; ?> "; /*]]>*/</style> <?php // below is the minified http://www.wikihow.com/extensions/min/f/skins/owl/printable.css ?> <style type="text/css" media="<?php echo $printable_media; ?> ">/*<![CDATA[*/ body{background-color:#FFF;font-size:1.2em}#header_outer{background:0 0;position:relative}#header{text-align:center;height:63px!important;width:242px!important;background:url(/skins/owl/images/logo_lightbg_242.jpg) no-repeat center center;margin-top:15px}#article_shell{margin:0 auto;float:none;padding-bottom:2em}.sticking{position:absolute!important;top:0!important}#actions,#article_rating,#article_tabs,#breadcrumb,#bubble_search,#cse-search-box,#end_options,#footer_outer,#header_space,#logo_link,#notification_count,#originators,#sidebar,#sliderbox,.edit,.editsection,.mwimg,.section.relatedwikihows,.section.video,.whvid_cont,.altadder_section{display:none!important} /*]]>*/</style> <?php // Bootstapping certain javascript functions: // A function to merge one object with another; stub funcs // for button swapping (this should be done in CSS anyway); // initialize the timer for bounce stats tracking. ?> <script> <!-- var WH = WH || {}; WH.lang = WH.lang || {}; button_swap = button_unswap = function(){}; WH.exitTimerStartTime = (new Date()).getTime(); WH.mergeLang = function(A){for(i in A){v=A[i];if(typeof v==='string'){WH.lang[i]=v;}}}; //--> </script> <?php if (!$postLoadJS) { ?> <?php echo $this->html('headscripts'); ?> <script type="text/javascript" src="<?php echo $fullJSuri; ?> "></script> <?php } ?> <?php $this->html('headlinks'); ?> <?php if (!$wgIsDomainTest) { ?> <link rel='canonical' href='<?php echo $wgTitle->getFullURL(); ?> '/> <link href="https://plus.google.com/102818024478962731382" rel="publisher" /> <?php } ?> <?php if ($sk->isUserAgentMobile()) { ?> <link media="only screen and (max-device-width: 480px)" href="<?php echo wfGetPad('/extensions/min/f/skins/WikiHow/iphone.css'); ?> " type="text/css" rel="stylesheet" /> <?php } else { ?> <!-- not mobile --> <?php } ?> <!--<![endif]--> <?php echo $rtl_css; ?> <link rel="alternate" type="application/rss+xml" title="wikiHow: How-to of the Day" href="http://www.wikihow.com/feed.rss"/> <link rel="apple-touch-icon" href="<?php echo wfGetPad('/skins/WikiHow/safari-large-icon.png'); ?> " /> <?php //= wfMessage('Test_setup')->text() ?> <?php if (class_exists('CTALinks') && trim(wfMessage('cta_feature')->inContentLanguage()->text()) == "on") { echo CTALinks::getGoogleControlScript(); } ?> <?php echo $wgOut->getHeadItems(); ?> <?php if ($wgTitle && $wgTitle->getText() == "Get Caramel off Pots and Pans") { echo wfMessage('Adunit_test_top')->text(); } ?> <?php $userdir = $wgLang->getDir(); $sitedir = $wgContLang->getDir(); ?> <?php foreach ($otherLanguageLinks as $lang => $url) { ?> <link rel="alternate" hreflang="<?php echo $lang; ?> " href="<?php echo htmlspecialchars($url); ?> " /> <?php } ?> </head> <body <?php if (isset($this->data['body_ondblclick']) && $this->data['body_ondblclick']) { ?> ondblclick="<?php $this->text('body_ondblclick'); ?> "<?php } ?> <?php if (isset($this->data['body_onload']) && $this->data['body_onload']) { ?> onload="<?php $this->text('body_onload'); ?> "<?php } ?> class="mediawiki <?php echo $userdir; ?> sitedir-<?php echo $sitedir; ?> " > <?php wfRunHooks('PageHeaderDisplay', array($sk->isUserAgentMobile())); ?> <?php if (!$isLoggedIn) { echo wikihowAds::getSetup(); } ?> <div id="header_outer"><div id="header"> <ul id="actions"> <?php foreach ($navTabs as $tabid => $tab) { ?> <li id="<?php echo $tabid; ?> _li"> <div class="nav_icon"></div> <a id='<?php echo $tabid; ?> ' class='nav' href='<?php echo $tab['link']; ?> '><?php echo $tab['text']; ?> </a> <?php echo $tab['menu']; ?> </li> <?php } ?> </ul><!--end actions--> <?php if (isset($sk->notifications_count) && (int) $sk->notifications_count > 0) { ?> <div id="notification_count" class="notice"><?php echo $sk->notifications_count; ?> </div> <?php } ?> <?php $holidayLogo = SkinWikihowskin::getHolidayLogo(); $logoPath = $holidayLogo ? $holidayLogo : '/skins/owl/images/wikihow_logo.png'; if ($wgLanguageCode != "en") { $logoPath = "/skins/owl/images/wikihow_logo_intl.png"; } ?> <a href='<?php echo $mainPageObj->getLocalURL(); ?> ' id='logo_link'><img src="<?php echo wfGetPad($logoPath); ?> " class="logo" /></a> <?php echo $top_search; ?> <?php wfRunHooks('EndOfHeader', array(&$wgOut)); ?> </div></div><!--end header--> <?php wfRunHooks('AfterHeader', array(&$wgOut)); ?> <div id="main_container" class="<?php echo $isMainPage ? 'mainpage' : ''; ?> "> <div id="header_space"></div> <div id="main"> <?php wfRunHooks('BeforeActionbar', array(&$wgOut)); ?> <div id="actionbar" class="<?php echo $isTool ? 'isTool' : ''; ?> "> <?php if ($showBreadCrumbs) { ?> <div id="gatBreadCrumb"> <ul id="breadcrumb" class="Breadcrumbs"> <?php echo $catLinksTop; ?> </ul> </div> <?php } ?> <?php if (count($tabsArray) > 0) { echo $sk->getTabsHtml($tabsArray); } ?> </div><!--end actionbar--> <script> <!-- WH.translationData = {<?php echo join(',', $translationData); ?> }; //--> </script> <?php echo $mpActions; ?> <?php $sidebar = !$showSideBar ? 'no_sidebar' : ''; // INTL: load mediawiki messages for sidebar expand and collapse for later use in sidebar boxes $langKeys = array('navlist_collapse', 'navlist_expand', 'usernameoremail', 'password'); print Wikihow_i18n::genJSMsgs($langKeys); ?> <div id="container" class="<?php echo $sidebar; ?> "> <div id="article_shell"> <div id="article"<?php echo Microdata::genSchemaHeader(); ?> > <?php wfRunHooks('BeforeTabsLine', array(&$wgOut)); ?> <?php if (!$isArticlePage && !$isMainPage && $this->data['bodyheading']) { echo '<div class="wh_block">' . $this->data['bodyheading'] . '</div>'; } echo $this->html('bodytext'); $showingArticleInfo = 0; if (in_array($wgTitle->getNamespace(), array(NS_MAIN, NS_PROJECT)) && $action == 'view' && !$isMainPage) { $catLinks = $sk->getCategoryLinks(false); $authors = ArticleAuthors::getAuthorFooter(); if ($authors || is_array($this->data['language_urls']) || $catLinks) { $showingArticleInfo = 1; } ?> <div class="section"> <?php if ($showingArticleInfo) { ?> <h2 class="section_head" id="article_info_header"><span><?php echo wfMessage('article_info')->text(); ?> </span></h2> <div id="article_info" class="section_text"> <?php } else { ?> <h2 class="section_head" id="article_tools_header"><span><?php echo wfMessage('article_tools')->text(); ?> </span></h2> <div id="article_tools" class="section_text"> <?php } ?> <?php echo $fa; ?> <?php if ($catLinks) { ?> <p class="info"> <?php echo wfMessage('categories')->text(); ?> : <?php echo $catLinks; ?> </p> <?php } ?> <p><?php echo $authors; ?> </p> <?php if (is_array($this->data['language_urls'])) { ?> <p class="info"><?php $this->msg('otherlanguages'); ?> :</p> <p class="info"><?php $links = array(); $sk = $this->getSkin(); foreach ($this->data['language_urls'] as $langlink) { $linkText = $langlink['text']; preg_match("@interwiki-(..)@", $langlink['class'], $langCode); if (!empty($langCode[1])) { $linkText = $sk->getInterWikiLinkText($linkText, $langCode[1]); } $links[] = htmlspecialchars(trim($langlink['language'])) . ' <span><a href="' . htmlspecialchars($langlink['href']) . '">' . $linkText . "</a><span>"; } echo implode(", ", $links); ?> </p> <?php } //talk link if ($action == 'view' && MWNamespace::isTalk($wgTitle->getNamespace())) { $talk_link = '#postcomment'; } else { $talk_link = $wgTitle->getTalkPage()->getLocalURL(); } ?> <ul id="end_options"> <li class="endop_discuss"><span></span><a href="<?php echo $talk_link; ?> " id="gatDiscussionFooter"><?php echo wfMessage('at_discuss')->text(); ?> </a></li> <li class="endop_print"><span></span><a href="<?php echo $wgTitle->getLocalUrl('printable=yes'); ?> " id="gatPrintView"><?php echo wfMessage('print')->text(); ?> </a></li> <li class="endop_email"><span></span><a href="#" onclick="return emailLink();" id="gatSharingEmail"><?php echo wfMessage('at_email')->text(); ?> </a></li> <?php if ($isLoggedIn) { ?> <?php if ($wgTitle->userIsWatching()) { ?> <li class="endop_watch"><span></span><a href="<?php echo $wgTitle->getLocalURL('action=unwatch'); ?> "><?php echo wfMessage('at_remove_watch')->text(); ?> </a></li> <?php } else { ?> <li class="endop_watch"><span></span><a href="<?php echo $wgTitle->getLocalURL('action=watch'); ?> "><?php echo wfMessage('at_watch')->text(); ?> </a></li> <?php } ?> <?php } ?> <li class="endop_edit"><span></span><a href="<?php echo $wgTitle->getEditUrl(); ?> " id="gatEditFooter"><?php echo wfMessage('edit')->text(); ?> </a></li> <?php if ($wgTitle->getNamespace() == NS_MAIN) { ?> <li class="endop_fanmail"><span></span><a href="/Special:ThankAuthors?target=<?php echo $wgTitle->getPrefixedURL(); ?> " id="gatThankAuthors"><?php echo wfMessage('at_fanmail')->text(); ?> </a></li> <?php } ?> </ul> <!--end end_options --> <?php if (!in_array($wgTitle->getNamespace(), array(NS_USER, NS_CATEGORY))) { ?> <?php } ?> <?php if ($showAds && $wgTitle->getNamespace() == NS_MAIN) { //only show this ad on article pages echo wikihowAds::getAdUnitPlaceholder(7); } ?> <div class="clearall"></div> </div><!--end article_info section_text--> <p class='page_stats'><?php echo $sk->pageStats(); ?> </p> <div id='article_rating'> <?php echo RateItem::showForm('article'); ?> </div> </div><!--end section--> <?php } if ($showUserCompletedImages) { ?> <div class="section"> <h2 class="section_head" id="uci_header"><span><?php echo wfMessage('user_completed_images')->text(); ?> </span></h2> <div id="uci_images" class="section_text"> <?php echo UCIPatrol::getHTMLForArticle($this->getSkin()->getContext()); ?> </div> <!-- end section_text--> </div><!--end section--> <?php } if (in_array($wgTitle->getNamespace(), array(NS_USER, NS_MAIN, NS_PROJECT)) && $action == 'view' && !$isMainPage) { ?> </div> <!-- article --> <div id=""> <?php } ?> </div> <!--end last_question--> <div class="clearall"></div> </div> <!--end article_shell--> <?php if ($showSideBar) { $loggedOutClass = ""; if ($showAds && $wgTitle->getText() != 'Userlogin' && $wgTitle->getNamespace() == NS_MAIN) { $loggedOutClass = ' logged_out'; } ?> <div id="sidebar"> <?php echo $siteNotice; ?> <!-- Sidebar Top Widgets --> <?php foreach ($sk->mSidebarTopWidgets as $sbWidget) { ?> <?php echo $sbWidget; ?> <?php } ?> <!-- END Sidebar Top Widgets --> <?php if (!$isDocViewer) { ?> <div id="top_links" class="sidebox<?php echo $loggedOutClass; ?> " <?php echo is_numeric(wfMessage('top_links_padding')->text()) ? ' style="padding-left:' . wfMessage('top_links_padding')->text() . 'px;padding-right:' . wfMessage('top_links_padding')->text() . 'px;"' : ''; ?> > <a href="/Special:Randomizer" id="gatRandom" accesskey='x' class="button secondary"><?php echo wfMessage('randompage')->text(); ?> </a> <a href="/Special:Createpage" id="gatWriteAnArticle" class="button secondary"><?php echo wfMessage('writearticle')->text(); ?> </a> <?php if (class_exists('Randomizer') && Randomizer::DEBUG && $wgTitle && $wgTitle->getNamespace() == NS_MAIN && $wgTitle->getArticleId()) { ?> <?php echo Randomizer::getReason($wgTitle); ?> <?php } ?> </div><!--end top_links--> <?php } ?> <?php if ($showStaffStats) { ?> <div class="sidebox" style="padding-top:10px" id="staff_stats_box"></div> <?php } ?> <?php if ($showWikiTextWidget) { ?> <div class="sidebox" id="side_rc_widget"> <a id='wikitext_downloader' href='#'>Download WikiText</a> </div><!--end sidebox--> <?php } ?> <?php if ($showAds && $wgTitle->getText() != 'Userlogin' && $wgTitle->getNamespace() == NS_MAIN) { // temporary ad code for amazon ad loading, added by Reuben 3/13, disabled 4/23, and re-enabled 5/28 if ($wgLanguageCode == 'en') { ?> <script> <!-- var aax_src='3003'; var amzn_targs = ''; var url = encodeURIComponent(document.location); try { url = encodeURIComponent("" + window.top.location); } catch(e) {} document.write("<scr"+"ipt src='//aax-us-east.amazon-Adsystem.com/e/dtb/bid?src=" + aax_src + "&u="+url+"&cb=" + Math.round(Math.random()*10000000) + "'></scr"+"ipt>"); document.close(); //--> </script> <?php } ?> <?php //only show this ad on article pages //comment out next line to turn off HHM ad if (wikihowAds::isHHM() && $wgLanguageCode == 'en') { echo wikihowAds::getHhmAd(); } else { echo wikihowAds::getCategoryAd(); } //Temporairily taking down Jane /*if (class_exists('StarterTool')) { //spellchecker test "ad" echo "<a href='/Special:StarterTool?ref=1' style='display:none' id='starter_ad'><img src='" . wfGetPad('/skins/WikiHow/images/sidebar_spelling3.png') . "' nopin='nopin' /></a>"; }*/ } //<!-- <a href="#"><img src="/skins/WikiHow/images/imgad.jpg" /></a> --> ?> <?php $userLinks = $sk->getUserLinks(); ?> <?php if ($userLinks) { ?> <div class='sidebox'> <?php echo $userLinks; ?> </div> <?php } ?> <?php $related_articles = $sk->getRelatedArticlesBox($this); //disable custom link units // if (!$isLoggedIn && $wgTitle->getNamespace() == NS_MAIN && !$isMainPage) //if ($related_articles != "") //$related_articles .= WikiHowTemplate::getAdUnitPlaceholder(2, true); if ($action == 'view' && $related_articles != "") { $related_articles = '<div id="side_related_articles" class="sidebox">' . $related_articles . '</div><!--end side_related_articles-->'; echo $related_articles; } ?> <?php if ($showSocialSharing) { ?> <div class="sidebox<?php echo $loggedOutClass; ?> " id="sidebar_share"> <h3><?php echo wfMessage('social_share')->text(); ?> </h3> <?php if ($isMainPage) { echo WikihowShare::getMainPageShareButtons(); } else { echo WikihowShare::getTopShareButtons($isIndexed); } ?> <div style="clear:both; float:none;"></div> </div> <?php } ?> <?php if ($mpWorldwide !== "") { ?> <?php echo $mpWorldwide; ?> <?php } ?> <?php /* <!-- <div class="sidebox_shell"> <div class='sidebar_top'></div> <div id="side_fb_timeline" class="sidebox"> </div> <div class='sidebar_bottom_fold'></div> </div> --> <!--end sidebox_shell--> */ ?> <!-- Sidebar Widgets --> <?php foreach ($sk->mSidebarWidgets as $sbWidget) { ?> <?php echo $sbWidget; ?> <?php } ?> <!-- END Sidebar Widgets --> <?php //if ($isLoggedIn) echo $navMenu; ?> <?php if ($showFeaturedArticlesSidebar) { ?> <div id="side_featured_articles" class="sidebox"> <?php echo $sk->getFeaturedArticlesBox(4, 4); ?> </div> <?php } ?> <?php if ($showRCWidget) { ?> <div class="sidebox" id="side_rc_widget"> <?php RCWidget::showWidget(); ?> <p class="bottom_link"> <?php if ($isLoggedIn) { ?> <?php echo wfMessage('welcome', $wgUser->getName(), $wgUser->getUserPage()->getLocalURL())->text(); ?> <?php } else { ?> <a href="/Special:Userlogin" id="gatWidgetBottom"><?php echo wfMessage('rcwidget_join_in')->text(); ?> </a> <?php } ?> <a href="" id="play_pause_button" onclick="rcTransport(this); return false;" ></a> </p> </div><!--end side_recent_changes--> <?php } ?> <?php if (class_exists('FeaturedContributor') && ($wgTitle->getNamespace() == NS_MAIN || $wgTitle->getNamespace() == NS_USER) && !$isMainPage && !$isDocViewer) { ?> <div id="side_featured_contributor" class="sidebox"> <?php FeaturedContributor::showWidget(); ?> <?php if (!$isLoggedIn) { ?> <p class="bottom_button"> <a href="/Special:Userlogin" class="button secondary" id="gatFCWidgetBottom" onclick='gatTrack("Browsing","Feat_contrib_cta","Feat_contrib_wgt");'><?php echo wfMessage('fc_action')->text(); ?> </a> </p> <?php } ?> </div><!--end side_featured_contributor--> <?php } ?> <?php //if (!$isLoggedIn) echo $navMenu; ?> <?php if ($showFollowWidget) { ?> <div class="sidebox"> <?php FollowWidget::showWidget(); ?> </div> <?php } ?> </div><!--end sidebar--> <?php } // end if $showSideBar ?> <div class="clearall" ></div> </div> <!--end container --> </div><!--end main--> <div id="clear_footer"></div> </div><!--end main_container--> <div id="footer_outer"> <div id="footer"> <div id="footer_side"> <?php if ($isLoggedIn) { ?> <?php echo wfMessage('site_footer_owl')->parse(); ?> <?php } else { ?> <?php echo wfMessage('site_footer_owl_anon')->parse(); ?> <?php } ?> </div><!--end footer_side--> <div id="footer_main"> <div id="sub_footer"> <?php if ($isLoggedIn || $isMainPage) { ?> <?php echo wfMessage('sub_footer_new', wfGetPad(), wfGetPad())->text(); ?> <?php } else { ?> <?php echo wfMessage('sub_footer_new_anon', wfGetPad(), wfGetPad())->text(); ?> <?php } ?> </div> </div><!--end footer_main--> </div> <br class="clearall" /> </div><!--end footer--> <div id="dialog-box" title=""></div> <?php // Quick note/edit popup if ($action == 'diff' && $wgLanguageCode == 'en') { echo QuickNoteEdit::displayQuicknote(); echo QuickNoteEdit::displayQuickedit(); } // Slider box -- for non-logged in users on articles only if ($showSliderWidget) { echo Slider::getBox(); echo '<div id="slideshowdetect"></div>'; } ?> <div id="fb-root" ></div> <?php if ($postLoadJS) { ?> <?php echo $this->html('headscripts'); ?> <script type="text/javascript" src="<?php echo $fullJSuri; ?> "></script> <?php } ?> <?php if ($optimizelyJS) { print $optimizelyJS; } ?> <?php if ($showExitTimer) { ?> <script> <!-- if (WH.ExitTimer) { WH.ExitTimer.start(); } //--> </script> <?php } ?> <?php if ($showRCWidget) { ?> <?php RCWidget::showWidgetJS(); ?> <?php } ?> <script type="text/javascript"> <!-- var _gaq = _gaq || []; <?php if ($showGA) { ?> _gaq.push(['_setAccount', 'UA-2375655-1']); _gaq.push(['_setDomainName', '.wikihow.com']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); <?php } ?> //--> </script> <?php if ($showGA) { ?> <?php // Google Analytics Event Track ?> <script type="text/javascript"> <!-- if (typeof Event =='undefined' || typeof Event.observe == 'undefined') { jQuery(window).load(gatStartObservers); } else { Event.observe(window, 'load', gatStartObservers); } //--> </script> <?php // END Google Analytics Event Track ?> <?php if (class_exists('CTALinks') && trim(wfMessage('cta_feature')->inContentLanguage()->text()) == "on") { echo CTALinks::getGoogleControlTrackingScript(); echo CTALinks::getGoogleConversionScript(); } ?> <?php // Load event listeners ?> <?php if ($showGAevents) { ?> <script type="text/javascript"> <!-- if (typeof Event =='undefined' || typeof Event.observe == 'undefined') { jQuery(window).load(initSA); } else { Event.observe(window, 'load', initSA); } //--> </script> <?php } ?> <?php } // $showGA ?> <?php // Load event listeners all pages ?> <?php if (class_exists('CTALinks') && trim(wfMessage('cta_feature')->inContentLanguage()->text()) == "on") { echo CTALinks::getBlankCTA(); } ?> <?php if ($showClickIgniter) { ?> <script type="text/javascript"> (function() { var ci = document.createElement('script'); ci.type = 'text/javascript'; ci.async = true; ci.src = 'http://cdn.clickigniter.io/ci.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ci, s); })(); </script> <?php } ?> <?php if ($showGoSquared) { ?> <script type="text/javascript"> var GoSquared = {}; GoSquared.acct = "GSN-491441-Y"; (function(w){ function gs(){ w._gstc_lt = +new Date; var d = document, g = d.createElement("script"); g.type = "text/javascript"; g.src = "//d1l6p2sc9645hc.cloudfront.net/tracker.js"; g.async = true; var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(g, s); } w.addEventListener ? w.addEventListener("load", gs, false) : w.attachEvent("onload", gs); })(window); </script> <?php } ?> <?php if ($showRUM) { ?> <script> (function(){ var a=document.createElement('script'); a.type='text/javascript'; a.async=true; a.src='//yxjj4c.rumanalytics.com/sampler/basic2'; var b=document.getElementsByTagName('script')[0]; b.parentNode.insertBefore(a,b); })(); </script> <?php } ?> <?php wfRunHooks('ArticleJustBeforeBodyClose', array()); ?> <?php if (($wgRequest->getVal("action") == "edit" || $wgRequest->getVal("action") == "submit2") && $wgRequest->getVal('advanced', null) != 'true') { ?> <script type="text/javascript"> if (document.getElementById('steps') && document.getElementById('wpTextbox1') == null) { InstallAC(document.editform,document.editform.q,document.editform.btnG,"./<?php echo $wgLang->getNsText(NS_SPECIAL) . ":TitleSearch"; ?> ","en"); } </script> <?php } ?> <?php if ($wgLanguageCode == 'en' && !$isLoggedIn && class_exists('GoogSearch')) { ?> <?php echo GoogSearch::getSearchBoxJS(); ?> <?php } ?> <script type="text/javascript"> (function ($) { $(document).ready(function() { WH.addScrollEffectToTOC(); }); $(window).load(function() { if ($('.twitter-share-button').length && (!$.browser.msie || $.browser.version > 7)) { $.getScript("https://platform.twitter.com/widgets.js", function() { twttr.events.bind('tweet', function(event) { if (event) { var targetUrl; if (event.target && event.target.nodeName == 'IFRAME') { targetUrl = extractParamFromUri(event.target.src, 'url'); } _gaq.push(['_trackSocial', 'twitter', 'tweet', targetUrl]); } }); }); } if (isiPhone < 0 && isiPad < 0 && $('.gplus1_button').length) { WH.setGooglePlusOneLangCode(); var node2 = document.createElement('script'); node2.type = 'text/javascript'; node2.async = true; node2.src = 'http://apis.google.com/js/plusone.js'; $('body').append(node2); } if (typeof WH.FB != 'undefined') WH.FB.init('new'); if (typeof WH.GP != 'undefined') WH.GP.init(); if ($('#pinterest').length) { var node3 = document.createElement('script'); node3.type = 'text/javascript'; node3.async = true; node3.src = 'http://assets.pinterest.com/js/pinit.js'; $('body').append(node3); } if (typeof WH.imageFeedback != 'undefined') { WH.imageFeedback(); } if (typeof WH.uciFeedback != 'undefined') { WH.uciFeedback(); } }); })(jQuery); </script> <?php //Temporarily taking down Jane /* var r = Math.random(); if(r <= .05) { $('#starter_ad').show(); }*/ if ($showStaffStats) { ?> <?php echo Pagestats::getJSsnippet("article"); } echo $wgOut->getBottomScripts(); ?> <?php if (class_exists('GoodRevision')) { ?> <?php $grevid = $wgTitle ? GoodRevision::getUsedRev($wgTitle->getArticleID()) : ''; $title = $this->getSkin()->getContext()->getTitle(); $latestRev = $title->getNamespace() == NS_MAIN ? $title->getLatestRevID() : ''; ?> <!-- shown patrolled revid=<?php echo $grevid; ?> , latest=<?php echo $latestRev; ?> --> <?php } echo wfReportTime(); $this->printTrail(); ?> </body> </html> <?php }
/** * Grab the wikitext for the article record */ private function getArticleWikiText() { // cache this if it was already pulled if ($this->wikitext) { return $this->wikitext; } if (!$this->title || !$this->title->exists()) { //throw new Exception('ArticleMetaInfo: title not found'); return ''; } $good = GoodRevision::newFromTitle($this->title, $this->articleID); $revid = $good ? $good->latestGood() : 0; $dbr = $this->getDB(); $rev = Revision::loadFromTitle($dbr, $this->title, $revid); if (!$rev) { //throw new Exception('ArticleMetaInfo: could not load revision'); return ''; } $this->wikitext = $rev->getText(); return $this->wikitext; }
static function loadTitleRevision($title, $revid = 0) { if (!$revid) { $good = GoodRevision::newFromTitle($title, $title->getArticleId()); if ($good) { $revid = $good->latestGood(); } } // TODO these two are to be uncommented only for debugging //$revision = Revision::newFromTitle($title); //$revid = $revision->getId(); $article = new Article($title, $revid); if (!$article) { return null; } $article->loadContent(); $rev = $article->mRevision; return $rev ? $rev : null; }
/** * Print the history page for an article. * * @returns nothing */ function history() { global $wgOut, $wgRequest, $wgTitle; /* * Allow client caching. */ if ($wgOut->checkLastModified($this->mArticle->getTimestamp())) { /* Client cache fresh and headers sent, nothing more to do. */ return; } $wgOut->addScript("<script src='/skins/common/history.js'></script>"); $fname = 'PageHistory::history'; wfProfileIn($fname); /* * Setup page variables. */ $wgOut->setPageTitle(wfMsg('history-title', $this->mTitle->getPrefixedText())); $wgOut->setPageTitleActionText(wfMsg('history_short')); $wgOut->setArticleFlag(false); $wgOut->setArticleRelated(true); $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->setSyndicated(true); $wgOut->setFeedAppendQuery('action=history'); $logPage = SpecialPage::getTitleFor('Log'); $logLink = $this->mSkin->makeKnownLinkObj($logPage, wfMsgHtml('viewpagelogs'), 'page=' . $this->mTitle->getPrefixedUrl()); $wgOut->setSubtitle($logLink); $feedType = $wgRequest->getVal('feed'); if ($feedType) { wfProfileOut($fname); return $this->feed($feedType); } /* * Fail if article doesn't exist. */ if (!$this->mTitle->exists()) { $wgOut->addWikiMsg('nohistory'); wfProfileOut($fname); return; } /* * "go=first" means to jump to the last (earliest) history page. * This is deprecated, it no longer appears in the user interface */ if ($wgRequest->getText("go") == 'first') { $limit = $wgRequest->getInt('limit', 50); $wgOut->redirect($wgTitle->getLocalURL("action=history&limit={$limit}&dir=prev")); return; } wfRunHooks('PageHistoryBeforeList', array(&$this->mArticle)); // XXCHANGED - show last patrolled revision to staff global $wgUser; $userGroups = $wgUser ? $wgUser->getGroups() : array(); $this->mShowGoodRev = in_array('staff', $userGroups); if ($this->mShowGoodRev) { $gr = GoodRevision::newFromTitle($this->mTitle, $this->mArticle->getId()); if ($gr) { $this->mGoodRev = $gr->latestGood(); } } /** * Do the list */ $pager = new PageHistoryPager($this); $this->linesonpage = $pager->getNumRows(); $wgOut->addHTML($pager->getNavigationBar() . $this->beginHistoryList() . $pager->getBody() . $this->endHistoryList() . $pager->getNavigationBar()); wfProfileOut($fname); }
public function execute($par) { global $wgUser, $wgOut, $wgLang, $wgContLang, $wgTitle, $wgMemc; global $IP, $wgDBname, $wgParser; global $wgRequest, $wgSitename, $wgLanguageCode, $wgContLanguageCode; global $wgFeedClasses, $wgUseRCPatrol; global $wgScriptPath, $wgServer; global $wgSitename, $wgFeedClasses, $wgContLanguageCode; global $messageMemc, $wgDBname, $wgFeedCacheTimeout; global $wgFeedClasses, $wgTitle, $wgSitename, $wgContLanguageCode, $wgLanguageCode; $fname = 'wfSpecialGeneratefeed'; $fullfeed = 0; $mrss = 0; if ($par == 'fullfeed') { $fullfeed = 1; } else { if ($par == 'mrss') { $mrss = 1; } } require_once "{$IP}/extensions/wikihow/FeaturedRSSFeed.php"; header('Content-Type: text/xml'); $wgOut->setSquidMaxage(60); $feedFormat = 'rss'; $timekey = "{$wgDBname}:rcfeed:{$feedFormat}:timestamp"; $key = "{$wgDBname}:rcfeed:{$feedFormat}:limit:{$limit}:minor:{$hideminor}"; $feedTitle = wfMsg('Rss-feedtitle'); $feedBlurb = wfMsg('Rss-feedblurb'); $feed = new FeaturedRSSFeed($feedTitle, $feedBlurb, "{$wgServer}{$wgScriptPath}/Main-Page"); if ($mrss) { $feed->outHeaderMRSS(); } else { // Replace to get back to raw feed (not full and without mrss) //$feed->outHeader(); $feed->outHeaderFullFeed(); } // extract the number of days below -- this is default $days = 6; date_default_timezone_set('UTC'); if ($wgRequest->getVal('micro', null) == 1) { $days = FeaturedArticles::getNumberOfDays($days, 'RSS-Microblog-Feed'); $feeds = FeaturedArticles::getFeaturedArticles($days, 'RSS-Microblog-Feed'); } else { $days = FeaturedArticles::getNumberOfDays($days); $feeds = FeaturedArticles::getFeaturedArticles($days); } $now = time(); $itemcount = 0; $itemcountmax = 6; foreach ($feeds as $f) { $url = trim($f[0]); $d = $f[1]; if ($d > $now) { continue; } if (!$url) { continue; } $url = str_replace('http://wiki.ehow.com/', '', $url); $url = str_replace('http://www.wikihow.com/', '', $url); $url = str_replace($wgServer . $wgScriptPath . '/', '', $url); $title = Title::newFromURL(urldecode($url)); $summary = ''; $content = ''; if ($title == null) { echo "title is null for {$url}"; exit; } //from the Featured Articles if ($title->getArticleID() > 0) { $article = GoodRevision::newArticleFromLatest($title); $summary = self::getArticleSummary($article, $title); $images = self::getImages($article, $title); //XXFULL FEED if (!$mrss) { $content = $article->getContent(true); $content = preg_replace('/\\{\\{[^}]*\\}\\}/', '', $content); $output = $wgParser->parse($content, $title, new ParserOptions()); $content = self::addTargetBlank($output->getText()); $content = preg_replace('/href="\\//', 'href="' . $wgServer . '/', $content); $content = preg_replace('/src="\\//', 'src="' . $wgServer . '/', $content); $content = preg_replace('/<span id="gatEditSection" class="editsection1">(.*?)<\\/span>/', '', $content); $content = preg_replace('/<h2> <a target="_blank" href="(.*?)>edit<\\/a>/', '<h2>', $content); $content = preg_replace('/<img src="(.*?)\\/skins\\/common\\/images\\/magnify-clip.png"(.*?)\\/>/', '', $content); $linkEmail = $wgServer . '/index.php?title=Special:EmailLink&target=' . $title->getPrefixedURL(); $backlinks = "\n<div id='articletools'><div class='SecL'></div><div class='SecR'></div><a name='articletools'></a><h2> <span>" . wfMsg('RSS-fullfeed-articletools') . "</span></h2> </div>"; $backlinks .= "<ul>\n"; $backlinks .= "<li type='square'><a target='_blank' href='" . $wgServer . "/" . $title->getPrefixedURL() . "'>" . wfMsg('RSS-fullfeed-articletools-read') . "</a></li>\n"; $backlinks .= "<li type='square'><a target='_blank' href='" . $linkEmail . "'>" . wfMsg('RSS-fullfeed-articletools-email') . "</a></li>\n"; $backlinks .= "<li type='square'><a target='_blank' href='" . $wgServer . $title->getEditURL() . "'>" . wfMsg('RSS-fullfeed-articletools-edit') . "</a></li>\n"; $backlinks .= "<li type='square'><a target='_blank' href='" . $wgServer . "/" . $title->getTalkPage() . "'>" . wfMsg('RSS-fullfeed-articletools-discuss') . "</a></li>\n"; $backlinks .= "<ul>\n"; $content .= $backlinks; } } else { continue; } $talkpage = $title->getTalkPage(); $title_text = $title->getPrefixedText(); if (isset($f[2]) && $f[2] != null && trim($f[2]) != '') { $title_text = $f[2]; } else { $title_text = wfMsg('howto', $title_text); } $item = new FeedItem($title_text, $summary, $title->getFullURL(), $d, null, $talkpage->getFullURL()); if ($mrss) { $feed->outItemMRSS($item, $images); } else { // Replace to get back to raw feed (not full and without mrss) $feed->outItemFullFeed($item, $content, $images); } $itemcount++; } $feed->outFooter(); }
public static function getTitleImage($title, $skip_parser = false) { global $wgContLang; wfProfileIn(__METHOD__); //resolve redirects $r = Revision::newFromTitle($title); if (!$r) { wfProfileOut(__METHOD__); return ""; } $text = $r->getText(); if (preg_match("/^#REDIRECT \\[\\[(.*?)\\]\\]/", $text, $matches)) { if ($matches[1]) { $title = Title::newFromText($matches[1]); if (!$title || !$title->exists()) { wfProfileOut(__METHOD__); return ''; } $goodRev = GoodRevision::newFromTitle($title, $title->getArticleId()); $revId = $goodRev ? $goodRev->latestGood() : 0; $rev = $revId ? Revision::newFromId($revId) : Revision::newFromTitle($title); if (!$rev) { return ''; } $text = $rev->getText(); } } // Make sure to look for an appropriately namespaced image. Always check for "Image" // as a lot of files are in the english image repository $nsTxt = "(Image|" . $wgContLang->getNsText(NS_IMAGE) . ")"; //check the steps $matches = ''; if ($skip_parser) { $steps[0] = self::getStepsNoParser($text); } else { $steps = self::getStepsSection($text, true); } wfProfileIn(__METHOD__ . '-imagematch'); //[[Image:...]] preg_match_all("@\\[\\[" . $nsTxt . ":([^\\|]+)[^\\]]*\\]\\]@im", $steps[0], $matches_img); wfProfileOut(__METHOD__ . '-imagematch'); if (!empty($matches_img[2])) { $matches = $matches_img[2]; } else { //{{largeimage|...}} wfProfileIn(__METHOD__ . '-largeimagematch'); preg_match_all("@\\{\\{largeimage\\|([^\\||\\}]+)\\}\\}@im", $steps[0], $matches_lgimg); wfProfileOut(__METHOD__ . '-largeimagematch'); if (!empty($matches_lgimg[1])) { $matches = $matches_lgimg[1]; } } // Check for wikivideos and pull images from there if (empty($matches)) { //{{whvid|...|...}} wfProfileIn(__METHOD__ . '-whvidmatch'); preg_match_all("@\\{\\{whvid\\|[^\\||\\}]+\\|([^\\||\\}]+)\\}\\}@im", $steps[0], $matches_whvid); wfProfileOut(__METHOD__ . '-whvidmatch'); if (!empty($matches_whvid[1])) { $matches = $matches_whvid[1]; } } if ($matches) { //grab the last image that appears in the steps section $file = wfFindFile(str_replace(" ", "-", end($matches))); if ($file && isset($file)) { wfProfileOut(__METHOD__); return $file; } } wfProfileOut(__METHOD__); }
<?php require_once 'commandLine.inc'; # Export list of alternative methods for a list of articles to CSV file $filename = $argv[0]; $f = fopen($filename, 'r'); $contents = fread($f, filesize($filename)); fclose($f); $pages = preg_split('@[\\r\\n]+@', $contents); foreach ($pages as $page) { $t = Title::newFromText($page); $gr = GoodRevision::newFromTitle($t); if ($gr) { $dbr = wfGetDB(DB_SLAVE); $lr = $gr->latestGood(); $r = Revision::loadFromId($dbr, $lr); if ($r) { $text = Wikitext::getStepsSection($r->getText(), true); if (preg_match_all("@===([^=]+)===@", $text[0], $matches)) { print $page; foreach ($matches[1] as $m) { if (!preg_match("@\r\n@", $m)) { print ',' . $m; } } print "\n"; } } } }
/** * Compute the latest good revisions table for all articles. */ public static function computeLatestAll() { $dbw = wfGetDB(DB_MASTER); $one_week_ago = wfTimestamp(TS_MW, time() - 7 * 24 * 60 * 60); $corrected = array(); $updateRevFunc = function ($page_id, $page_title, $rev_id) { $title = Title::newFromDBkey($page_title); $goodRev = GoodRevision::newFromTitle($title, $page_id); if ($goodRev) { return $goodRev->updateRev($rev_id, true); } else { return false; } }; // Clear from good_revision table all the deleted articles, // articles moved to other namespaces and articles // turned into redirects. $sql = 'DELETE good_revision FROM good_revision LEFT JOIN page ON gr_page = page_id WHERE page_is_redirect <> 0 OR page_namespace <> 0 OR page_title IS NULL'; $dbw->query($sql, __METHOD__); $count = $dbw->affectedRows(); print __METHOD__ . ": removed " . $dbw->affectedRows() . " non-article rows from good_revision table\n"; // List all articles patrolled over the last week and // compute good_rev on them $sql = 'SELECT page_title, page_id, MAX(rc_id) AS rc_id FROM page, recentchanges WHERE page_id = rc_cur_id AND page_namespace = 0 AND page_is_redirect = 0 AND rc_patrolled = 1 AND page_touched >= ' . $dbw->addQuotes($one_week_ago) . ' GROUP BY rc_cur_id'; $patrolled = array(); $res = $dbw->query($sql, __METHOD__); foreach ($res as $obj) { $patrolled[$obj->page_id] = (array) $obj; } // Store recently patrolled articles with their patrolled revision foreach ($patrolled as $row) { $rev_id = GoodRevision::getRevFromRC($row['page_id'], $row['rc_id']); $updated = $updateRevFunc($row['page_id'], $row['page_title'], $rev_id); if ($updated) { $corrected[] = $row['page_id']; } } $count = count($corrected); print __METHOD__ . ": updated {$count} recently patrolled articles in good_revision table\n"; // List all articles that haven't been touched in the last week // and correct their good revision if need $sql = 'SELECT page_title, page_id, page_latest FROM page WHERE page_namespace = 0 AND page_is_redirect = 0 AND page_touched < ' . $dbw->addQuotes($one_week_ago); $rows = array(); $res = $dbw->query($sql, __METHOD__); foreach ($res as $obj) { $rows[] = (array) $obj; } // Store latest revision of all articles not edited in the last week foreach ($rows as $row) { if (!isset($patrolled[$row['page_id']])) { $updated = $updateRevFunc($row['page_id'], $row['page_title'], $row['page_latest']); if ($updated) { $corrected[] = $row['page_id']; } } } print __METHOD__ . ": updated " . (count($corrected) - $count) . " older articles in good_revision table\n"; // Call out to DailyEdits to let Titus and others know what should be recomputed foreach ($corrected as $aid) { DailyEdits::onGoodRevisionFixed($aid); } }
function execute($par) { global $wgUser, $wgOut, $wgLang, $wgContLang, $wgTitle, $wgMemc, $wgDBname; global $wgServer, $wgRequest, $wgSitename, $wgLanguageCode, $wgContLanguageCode; global $wgFeedClasses, $wgUseRCPatrol; global $wgScriptPath, $wgServer; global $wgSitename, $wgFeedClasses, $wgContLanguageCode; $wgOut->setArticleBodyOnly(true); $type = $wgRequest->getVal("type"); $ndisplay = $wgRequest->getVal("ndisplay"); $DEBUG = 1; require_once 'IGGadgetTMPL.php'; global $messageMemc, $wgDBname, $wgFeedCacheTimeout; global $wgFeedClasses, $wgTitle, $wgSitename, $wgContLanguageCode; $wgOut->setSquidMaxage(3600); // extract the number of days $days = 6; if ($ndisplay != "" && is_numeric($ndisplay) && $ndisplay < 10) { $numitems = $ndisplay; } else { $numitems = 3; } date_default_timezone_set("UTC"); $days = FeaturedArticles::getNumberOfDays($days); $feeds = FeaturedArticles::getFeaturedArticles($days); if ($type == "home") { $now = time(); $count = 0; $mainTitle = ""; $relatedArticles = ""; $featuredArticles = ""; $ggtmpl = new GoogleGadgetHome2(); $ggtmpl->outHeader(); $itemnum = 1; $itemmax = 3; foreach ($feeds as $f) { $url = $f[0]; $d = $f[1]; if ($d > $now) { continue; } $url = str_replace("http://wiki.ehow.com/", "", $url); $url = str_replace("http://www.wikihow.com/", "", $url); $url = str_replace($wgServer . $wgScriptPath . "/", "", $url); $title = Title::newFromURL(urldecode($url)); $title_text = $title->getPrefixedText(); if (isset($f[2]) && $f[2] != null && trim($f[2]) != '') { $title_text = $f[2]; } else { $title_text = wfMsg('howto', $title_text); } $mainTitle = $title; $summary = ""; $a = ""; if ($title == null) { echo "title is null for {$url}"; exit; } if ($title->getArticleID() > 0) { $a = GoodRevision::newArticleFromLatest($title); $summary = $a->getContent(true); $summary = preg_replace('/\\{\\{fa\\}\\}/', '', $summary); global $wgParser; $output = $wgParser->parse($summary, $title, new ParserOptions()); $relatedArticles = $this->getRelatedWikihowsFromSource($title, 4); $summary = $this->addTargetBlank($output->getText()); $summary = preg_replace('/href="\\//', 'href="' . $wgServer . '/', $summary); $summary = preg_replace('/src="\\//', 'src="' . $wgServer . '/', $summary); $summary = preg_replace('/<span id="gatEditSection" class="editsection1">(.*?)<\\/span>/', '', $summary); $linkEmail = $wgServer . '/index.php?title=Special:EmailLink&target=' . $title->getPrefixedURL(); $backlinks = "\n<div id='articletools'><div class='SecL'></div><div class='SecR'></div><a name='articletools'></a><h2> <span>Article Tools</span></h2> </div>"; $backlinks .= "<ul style='list-style: none;margin-left:0;padding-left:4em;text-indent:-1em;'>"; $backlinks .= "<li style='list-style-type: none;'><img src='" . $wgServer . "/skins/WikiHow/images/logo_small.png' height=12 width=15> <a target='_blank' href='" . $wgServer . "/" . $title->getPrefixedURL() . "'>Read on wikiHow</a></li>"; $backlinks .= "<li style='list-style-type: none;'><img src='" . $wgServer . "/skins/WikiHow/sharetab/ShareTab_Email.gif' height=15 width=15> <a target='_blank' href='" . $linkEmail . "'>Email this Article</a></li>"; $backlinks .= "<li style='list-style-type: none;'><img src='" . $wgServer . "/skins/WikiHow/images/pencil_benji_park_01.png' height=15 width=15> <a target='_blank' href='" . $wgServer . $title->getEditURL() . "'>Edit</a></li>"; $backlinks .= "<li style='list-style-type: none;'><img src='" . $wgServer . "/skins/WikiHow/images/speech_ballon.png' height=15 width=15> <a target='_blank' href='" . $wgServer . "/Discussion:" . $title->getPrefixedURL() . "'>Discuss</a></li>"; $backlinks .= "<ul>\n"; $summary .= $backlinks; $ggtmpl->outMain($title_text, $summary, $url, $itemnum); $itemnum++; } else { echo '<!-- no article found for articleid:' . $title->getArticleID() . ' title:' . $title_text . ' -->'; } if ($itemnum > $itemmax) { break; } } $relatedArticles = preg_replace('/href="\\//', 'href="' . $wgServer . '/', $relatedArticles); $ggtmpl->outFooter(); } else { if ($type == "canvas") { $now = time(); $count = 0; $mainTitle = ""; $relatedArticles = ""; $featuredArticles = ""; $maxShow = 7; $ggtmpl = new GoogleGadgetCanvas(); $ggtmpl->outHeader(); foreach ($feeds as $f) { $url = $f[0]; $d = $f[1]; if ($d > $now) { continue; } $url = str_replace("http://wiki.ehow.com/", "", $url); $url = str_replace("http://www.wikihow.com/", "", $url); $url = str_replace($wgServer . $wgScriptPath . "/", "", $url); $title = Title::newFromURL(urldecode($url)); $title_text = $title->getPrefixedText(); if (isset($f[2]) && $f[2] != null && trim($f[2]) != '') { $title_text = $f[2]; } else { $title_text = wfMsg('howto', $title_text); } if ($count < $maxShow) { $mainTitle = $title; $summary = ""; $a = ""; if ($title == null) { echo "title is null for {$url}"; exit; } if ($title->getArticleID() > 0) { $a = GoodRevision::newArticleFromLatest($title); $summary = $a->getContent(true); $summary = preg_replace('/\\{\\{.*\\}\\}/', '', $summary); global $wgParser; $output = $wgParser->parse($summary, $title, new ParserOptions()); $relatedArticles = $this->getRelatedWikihowsFromSource($title, 4); $summary = $this->addTargetBlank($output->getText()); $summary = preg_replace('/href="\\//', 'href="' . $wgServer . '/', $summary); $summary = preg_replace('/src="\\//', 'src="' . $wgServer . '/', $summary); $summary = preg_replace('/<span id="gatEditSection" class="editsection1">(.*?)<\\/span>/', '', $summary); $linkEmail = $wgServer . '/index.php?title=Special:EmailLink&target=' . $title->getPrefixedURL(); $backlinks = "\n<div id='articletools'><div class='SecL'></div><div class='SecR'></div><a name='articletools'></a><h2> <span>Article Tools</span></h2> </div>"; $backlinks .= "<ul style='list-style: none;margin-left:0;padding-left:4em;text-indent:-1em;'>"; $backlinks .= "<li style='list-style-type: none;'><img src='" . $wgServer . "/skins/WikiHow/images/logo_small.png' height=12 width=15> <a target='_blank' href='" . $wgServer . "/" . $title->getPrefixedURL() . "'>Read on wikiHow</a></li>"; $backlinks .= "<li style='list-style-type: none;'><img src='" . $wgServer . "/skins/WikiHow/sharetab/ShareTab_Email.gif' height=15 width=15> <a target='_blank' href='" . $linkEmail . "'>Email this Article</a></li>"; $backlinks .= "<li style='list-style-type: none;'><img src='" . $wgServer . "/skins/WikiHow/images/pencil_benji_park_01.png' height=15 width=15> <a target='_blank' href='" . $wgServer . $title->getEditURL() . "'>Edit</a></li>"; $backlinks .= "<li style='list-style-type: none;'><img src='" . $wgServer . "/skins/WikiHow/images/speech_ballon.png' height=15 width=15> <a target='_blank' href='" . $wgServer . "/Discussion:" . $title->getPrefixedURL() . "'>Discuss</a></li>"; $backlinks .= "<ul>\n"; $summary .= $backlinks; $ggtmpl->outMain($title_text, $summary, $url); } else { echo '<!-- no article found for articleid:' . $title->getArticleID() . ' title:' . $title_text . ' -->'; } } $featuredArticles .= '<li><a href="' . $wgServer . '/' . $url . '" target="_blank">' . $title_text . '</a></li>' . "\n"; $count++; } $relatedArticles = preg_replace('/href="\\//', 'href="' . $wgServer . '/', $relatedArticles); $ggtmpl->outFeaturedArticles($featuredArticles); $ggtmpl->outRelatedArticles($relatedArticles); $ggtmpl->outFooter(); } else { $ggtmpl = new GoogleGadgetModule($wgServer); $ggtmpl->outModulePrefs(); exit; } } }
public function calcPageStats(&$statsToCalc, &$row) { $dbr = $this->getWikiDB(); $t = Title::newFromId($row->page_id); $goodRevision = GoodRevision::newFromTitle($t, $row->page_id); $revId = 0; if ($goodRevision) { $revId = $goodRevision->latestGood(); } $r = $revId > 0 ? Revision::loadFromId($dbr, $revId) : Revision::loadFromPageId($dbr, $row->page_id); $fields = array(); if ($r && $t && $t->exists()) { foreach ($statsToCalc as $stat => $isOn) { if ($isOn) { $statCalculator = $this->getStatClass($stat); $fields = array_merge($fields, $statCalculator->calc($dbr, $r, $t, $row)); } } } return $fields; }