/** * Return HTML for showing all the user with their recommendations */ public function showUsers() { $dbr = wfGetDB(DB_SLAVE); $sql = "select user_id, user_name, page_title, page_id, ur_score, ur_deleted,count(urcl_id) as views, ur_date_used from user_recommendation join wiki_shared.user on ur_user=user_id join page on page_id=ur_page and page_namespace=0 left join user_recommendation_click_log on ur_user=urcl_user and ur_page=urcl_page group by user_id,page_id order by user_id,ur_score desc"; $res = $dbr->query($sql, __METHOD__); $curUser = false; $outRows = array(); $outRow = false; foreach ($res as $row) { if ($curUser != $row->user_id) { if ($outRow) { $outRows[] = $outRow; } $outRow = array(); $outRow['user_id'] = $row->user_id; $outRow['user_name'] = $row->user_name; $outRow['recommendations'] = array(); $curUser = $row->user_id; } $outRow['recommendations'][] = array('title' => str_replace('-', ' ', $row->page_title), 'page_id' => $row->page_id, 'score' => $row->ur_score, 'views' => $row->views, 'date_used' => $row->ur_date_used); } if ($outRow) { $outRows[] = $outRow; } EasyTemplate::set_path(dirname(__FILE__) . '/'); $vars = array('rows' => $outRows); return EasyTemplate::html('UserRecs.tmpl.php', $vars); }
private function showAdminForm() { global $wgOut; EasyTemplate::set_path(dirname(__FILE__)); $vars['ts'] = wfTimestampNow(); $wgOut->addHtml(EasyTemplate::html('imagefeedback_admin')); }
function execute() { global $wgOut, $wgRequest; require_once 'dedupQuery.php'; $action = $wgRequest->getVal('act'); if ($action == NULL) { EasyTemplate::set_path(dirname(__FILE__)); $wgOut->addHTML(EasyTemplate::html('CommunityExpert.tmpl.php')); } elseif ($action == "get") { $url = $wgRequest->getVal('url'); $query = $this->getQueryFromUrl($url); if ($query) { dedupQuery::addQuery($query); dedupQuery::matchQueries(array($query)); $dbr = wfGetDB(DB_SLAVE); $sql = "select user_name,tq.tq_title as title, sum(ct) as score from firstedit join dedup.title_query tq on tq.tq_page_id=fe_page join dedup.query_match on tq.tq_query=query2 join wiki_shared.user on fe_user=user_id where query1=" . $dbr->addQuotes($query) . " group by fe_user order by score desc"; $dbr = wfGetDB(DB_SLAVE); $res = $dbr->query($sql, __METHOD__); header("Content-Type: text/tsv"); header('Content-Disposition: attachment; filename="Dedup.xls"'); print "User page\tRelated title\n"; foreach ($res as $row) { print "http://www.wikihow.com/User:"******"\thttp://www.wikihow.com/" . str_replace(" ", "-", $row->title) . "\n"; } exit; } else { print "NO URL"; exit; } } }
function execute($par) { global $wgUser, $wgOut, $wgRequest, $wgServer, $isDevServer; $userGroups = $wgUser->getGroups(); if ($wgUser->isBlocked() || !in_array('staff', $userGroups)) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); return; } if ($wgRequest->wasPosted()) { $this->action = $wgRequest->getVal('a'); $this->slowQuery = $wgRequest->getVal('alts') == 'true'; $this->introOnly = $wgRequest->getVal('intonly') == 'true'; switch ($this->action) { case 'cats': $this->outputCategoryReport(); break; case 'articles': $this->outputArticleReport(); break; case 'ids': $this->outputArticleIdReport(); break; } return; } $this->action = empty($par) ? 'cats' : strtolower($par); $wgOut->addScript(HtmlSnips::makeUrlTags('js', array('download.jQuery.js'), 'extensions/wikihow/common', false)); EasyTemplate::set_path(dirname(__FILE__) . '/'); $vars = array(); $this->setVars($vars); $html = EasyTemplate::html('ArticleData', $vars); $wgOut->setPageTitle('Article Stats'); $wgOut->addHTML($html); }
function execute($par) { global $wgUser, $wgOut, $wgRequest, $wgLang; $userGroups = $wgUser->getGroups(); if ($wgUser->isBlocked() || !in_array('staff', $userGroups)) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); return; } if ($wgRequest->getVal("csv")) { $wgOut->disable(); header('Content-type: application/force-download'); header('Content-disposition: attachment; filename="views.csv"'); $edits = $this->getEdits(); print "user,url,date\n"; foreach ($edits as $edit) { $time = $wgLang->timeanddate(wfTimestamp(TS_MW, $edit['log_timestamp']), true); $output = $edit['log_user_name'] . "," . $edit['title_url'] . "," . str_replace(",", "", $time); print "{$output}\n"; } return; } $wgOut->setPageTitle('Method Editor Admin Page'); EasyTemplate::set_path(dirname(__FILE__) . '/'); $this->ts = wfTimestamp(TS_MW, time() - 24 * 3600 * $wgRequest->getVal("days", 30)); $this->printReport(); }
/** * Called when the user goes to an edit page * Override the functionality of the edit to require a URL to translate */ static function onCustomEdit() { global $wgRequest, $wgOut; $draft = $wgRequest->getVal('draft', null); $target = $wgRequest->getVal('title', null); $action = $wgRequest->getVal('action', null); $section = $wgRequest->getVal('section', $wgRequest->getVal('wpSection', null)); $save = $wgRequest->getVal('wpSave', null); $title = Title::newFromURL($target); // We have the dialog to enter the URL when we are adding a new article, and have no existing draft. if (self::isTranslatorUser()) { if ($draft == null && !$title->exists() && $action == 'edit') { EasyTemplate::set_path(dirname(__FILE__) . '/'); // Templates to remove from tranlsation $remove_templates = array("{{FA}}", "\\[\\[Category:[^\\]]+\\]\\]"); // Words or things to automatically translate $translations = array(array('from' => self::getSectionRegex('Steps'), 'to' => self::getSectionWikitext(wfMsg('Steps'))), array('from' => self::getSectionRegex('Tips'), 'to' => self::getSectionWikitext(wfMsg('Tips'))), array('from' => self::getSectionRegex('Warnings'), 'to' => self::getSectionWikitext(wfMsg('Warnings'))), array('from' => self::getSectionRegex('Ingredients'), 'to' => self::getSectionWikitext(wfMsg('Ingredients'))), array('from' => self::getSectionRegex("Things You'll need"), 'to' => self::getSectionWikitext(wfMsg('Thingsyoullneed'))), array('from' => self::getSectionRegex("Related wikiHows"), 'to' => self::getSectionWikitext(wfMsg('Related'))), array('from' => self::getSectionRegex("Sources and Citations"), 'to' => self::getSectionWikitext(wfMsg('Sources')))); $vars = array('title' => $target, 'checkForLL' => true, 'translateURL' => true, 'translations' => json_encode($translations), 'remove_templates' => array_map(preg_quote, $remove_templates)); $html = EasyTemplate::html('TranslateEditor.tmpl.php', $vars); $wgOut->addHTML($html); QuickEdit::showEditForm($title); return false; } elseif ($section == null && $save == null) { EasyTemplate::set_path(dirname(__FILE__) . '/'); $vars = array('title' => $target, 'checkForLL' => true, 'translateURL' => false); $html = EasyTemplate::html('TranslateEditor.tmpl.php', $vars); $wgOut->addHTML($html); QuickEdit::showEditForm($title); return false; } } return true; }
public function execute() { global $wgRequest, $wgOut, $wgUser; $userGroups = $wgUser->getGroups(); if ($wgUser->isBlocked() || !in_array('staff', $userGroups)) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->errorpage('nosuchspecialpage', 'nospecialpagetext'); return; } if ($wgRequest->wasPosted()) { $query = $wgRequest->getVal('query'); ini_set('memory_limit', '1024M'); //Take up to 4 minutes to download big queries set_time_limit(240); $this->getQuery(); } else { EasyTemplate::set_path(dirname(__FILE__) . '/'); $vars = array('fields' => $this->getFields()); $wgOut->addScript(HtmlSnips::makeUrlTags('js', array('download.jQuery.js'), 'extensions/wikihow/common', false)); $wgOut->addScript(HtmlSnips::makeUrlTags('js', array('jquery.sqlbuilder-0.06.js'), 'extensions/wikihow/titus', false)); $html = EasyTemplate::html('flaviusquerytool.tmpl.php', $vars); $wgOut->addHTML($html); } return $html; }
static function beforeHeaderDisplay($isMobile) { global $whEditRedirectSave, $wgOut, $wgRequest, $wgUser, $wgTitle; /* * We only want to display the edit redirect page on desktop after the first edit on a main namespace page. We check a bunch of criteria to ensure this is he case. * criteria to ensure this is indeed the first edit */ if (!$isMobile && isset($_SESSION[self::OUR_SESSION_NAME]) && $_SESSION[self::OUR_SESSION_NAME] && Hydra::isEnabled(self::EXPERIMENT_NAME) || $wgRequest->getVal("abtest_test2") == "1") { // Turn off cache because this is a onetime thing $wgOut->enableClientCache(false); unset($_SESSION[self::OUR_SESSION_NAME]); $cats = $wgTitle->getParentCategories(); if (sizeof($cats) == 0) { return true; } $catkeys = array_keys($cats); $cat = false; foreach ($catkeys as $k) { if (preg_match('@Category:(.+)@i', $k, $matches) && $matches[1] != 'Featured-Articles') { $cat = $matches[1]; break; } } // We only display the edit redirect dialog for main namespace edits if ($wgTitle->getNamespace() == NS_MAIN && $wgRequest->getText('action', 'view') == 'view' && $cat) { EasyTemplate::set_path(dirname(__FILE__)); $catText = str_replace('-', ' ', $cat); $vars = array('cat' => $cat, 'catText' => $catText); $tmpl = EasyTemplate::html("CatRedirect.tmpl.php", $vars); $wgOut->addScript($tmpl); } } return true; }
function execute($par) { global $wgUser, $wgOut, $wgRequest; $userGroups = $wgUser->getGroups(); if ($wgUser->isBlocked() || !in_array('staff', $userGroups)) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); return; } if ($wgRequest->wasPosted()) { $wgOut->disable(); $result = array(); $result['debug'][] = "posted to apiappadmin"; if ($wgRequest->getVal("action") == "default") { $this->testQuery(&$result); } else { if ($wgRequest->getVal("action") == "getpage") { //nothing yet } } echo json_encode($result); return; } $wgOut->setPageTitle('APIAppAdmin'); EasyTemplate::set_path(dirname(__FILE__) . '/'); $vars['css'] = HtmlSnips::makeUrlTags('css', array('apiappadmin.css'), 'extensions/wikihow/apiappsupport', true); $wgOut->addScript(HtmlSnips::makeUrlTags('js', array('apiappadmin.js'), 'extensions/wikihow/apiappsupport', true)); $html = EasyTemplate::html('APIAppAdmin', $vars); $wgOut->addHTML($html); }
public function execute() { global $wgOut; EasyTemplate::set_path(dirname(__FILE__)); $wgOut->setPageTitle("Welcome to wikiHow!"); $wgOut->addHTML(EasyTemplate::html('NewUserPage.tmpl.php')); return true; }
/** * Show the HTML template for adding images to URLs */ private function showTemplate() { global $wgOut, $wgActiveLangs; EasyTemplate::set_path(dirname(__FILE__)); $tmpl = EasyTemplate::html("Alfredo.tmpl.php", array('langs' => $this->langs)); $wgOut->addScript(HtmlSnips::makeUrlTags('js', array('download.jQuery.js'), 'extensions/wikihow/common', false)); $wgOut->addHTML($tmpl); }
public function execute() { require_once 'YBSuggestions.php'; require_once 'KeywordIdeasCSV.php'; global $wgOut, $wgRequest, $wgUser; if ($wgUser->isBlocked()) { throw new PermissionsError('Leonard'); } $userGroups = $wgUser->getGroups(); if (!in_array('staff', $userGroups)) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); return; } $csvFieldName = 'csvfile'; $action = $wgRequest->getVal('act'); $avg_gad_keyword_search_thresh = $wgRequest->getVal('thresh'); if (empty($avg_gad_keyword_search_thresh)) { $avg_gad_keyword_search_thresh = self::AVG_GAD_KEYWORD_MONTHLY_SEARCH_THRESH; } else { $avg_gad_keyword_search_thresh = (int) $avg_gad_keyword_search_thresh; } $groupTitles = $wgRequest->getVal('groupTitles'); $groupTitles = empty($groupTitles) ? false : true; $this->queriesR = $wgRequest->getVal('seed'); $file = $wgRequest->getVal($csvFieldName); if ($action == NULL) { EasyTemplate::set_path(dirname(__FILE__)); $wgOut->addHTML(EasyTemplate::html('Leonard.tmpl.php')); } elseif ($action == 'getTitles' && $_FILES && !empty($_FILES["csvfile"]["name"])) { list($err, $filename) = $this->uploadFile($csvFieldName, $this->allowedFileExts, $this->allowedCsvFileSize, $this->allowedFileTypes, true); if ($err) { $wgOut->addHTML($err); } else { list($err, $seed, $rows) = Yboss::fetchQueries($filename, $avg_gad_keyword_search_thresh, $groupTitles); unlink($filename); if ($err) { $wgOut->addHTML($err); } else { $xlsFileName = ""; if ($seed) { $xlsFileName = $seed[KeywordIdeasCSV::KEY_KEYWORD]; if (!empty($xlsFileName)) { $xlsFileName = str_replace(' ', '-', $xlsFileName); } } $this->printCSVRows($rows, $xlsFileName); } } } elseif ($action == 'getTitles' && $this->queriesR) { $internalDedup = $wgRequest->getVal('internalDedup'); if ($internalDedup) { $this->getTopMatchBatch(); } else { $this->getBatch(); } } }
private function setTemplatePath($templateName) { $path = $this->config->getSystemUITemplatesLocation(); $et = new EasyTemplate($path); // If there isn't a template that is system specific, template should exist in WAP templates if (!$et->template_exists($templateName)) { $path = $this->config->getWAPUITemplatesLocation(); } EasyTemplate::set_path($path); }
function execute($par) { global $wgOut, $wgRequest, $wgUser, $wgParser; wfLoadExtensionMessages("TipsPatrol"); if ($wgUser->isBlocked()) { $wgOut->blockedPage(); return; } if ($wgUser->isAnon() || self::isBlockedFromTipsPatrol($wgUser)) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->errorpage('nosuchspecialpage', 'nospecialpagetext'); return; } $this->skipTool = new ToolSkip("tiptool", "tipsandwarnings", "tw_checkout", "tw_checkout_user", "tw_id"); if ($wgRequest->wasPosted()) { $wgOut->disable(); $result = array(); $tipId = $wgRequest->getVal('tipId'); if ($wgRequest->getVal('coachTip')) { $this->coachResult($tipId, &$result); } elseif ($tipId != null && $wgRequest->getVal('skipTip')) { $this->logTip($tipId, self::TIP_ACTION_SKIP); $this->skipTool->skipItem($tipId); $this->skipTool->unUseItem($tipId); } elseif ($wgRequest->getVal('deleteTip')) { $articleId = $wgRequest->getVal('articleId'); $tip = $wgRequest->getVal('tip'); $this->deleteTip($tipId, $articleId, $tip); } elseif ($wgRequest->getVal('keepTip')) { //used to send to keepTip, but now we have an extra step: QG $articleId = $wgRequest->getVal('articleId'); $tip = $wgRequest->getVal('tip'); $this->logTip($tipId, self::TIP_ACTION_QG, '', $tip); $this->addToQG($tipId, $articleId, $tip, $result); } $this->getNextTip(&$result); echo json_encode($result); return; } $wgOut->setHTMLTitle(wfMsg('tipspatrol')); $wgOut->setPageTitle(wfMsg('tipspatrol')); $wgOut->addHTML(HtmlSnips::makeUrlTags('css', array('tipspatrol.css'), 'extensions/wikihow/tipsandwarnings', false)); $wgOut->addScript(HtmlSnips::makeUrlTags('js', array('tipspatrol.js'), 'extensions/wikihow/tipsandwarnings', false)); $wgOut->addScript(HtmlSnips::makeUrlTags('js', array('mousetrap.min.js,jquery.cookie.js'), 'extensions/wikihow/common', false)); EasyTemplate::set_path(dirname(__FILE__)); $vars = array(); $vars['tip_skip_title'] = wfMsg('tip_skip_title'); $vars['tip_keep_title'] = wfMsg('tip_keep_title'); $vars['tip_delete_title'] = wfMsg('tip_delete_title'); $wgOut->addHTML(EasyTemplate::html('TipsPatrol.tmpl.php', $vars)); $bubbleText = "Only publish this tip if you can make it helpful, clear, and grammatically correct. Most tips should get deleted."; InterfaceElements::addBubbleTipToElement('tip_tip', 'tptrl', $bubbleText); $this->displayLeaderboards(); }
public function header($isUserAgentMobile) { global $wgUser; $sk = $wgUser->getSkin(); if (NewLayout::isNewLayoutPage()) { EasyTemplate::set_path(dirname(__FILE__)); $headerVars = array('form' => GoogSearch::getSearchBox("cse-search-box")); echo EasyTemplate::html('header_' . self::ARTICLE_LAYOUT . '.tmpl.php', $headerVars); } return true; }
public static function parserFunction($parser, $arrowText, $grayText, $scrollText) { global $wgTitle, $wgContLang; $scrollText = self::prepareText($scrollText); $grayText = self::prepareText($grayText); $arrowText = self::prepareText($arrowText); $vars = array('arrowText' => $arrowText, 'grayText' => $grayText, 'scrollText' => $scrollText, 'id' => 'scrl-' . hash("md5", $scrollText . mt_rand(1, 1000))); EasyTemplate::set_path(dirname(__FILE__) . '/'); $html = EasyTemplate::html('textscroller', $vars); $html = preg_replace("@\n@", "", $html); return $parser->insertStripItem($html); }
public function execute() { global $wgRequest, $wgOut; $queries = $wgRequest->getVal('queries'); $checkUrls = $wgRequest->getVal('checkUrls'); if ($queries == NULL) { EasyTemplate::set_path(dirname(__FILE__)); $wgOut->addHTML(EasyTemplate::html('QueryCat.tmpl.php')); } elseif ($checkUrls) { header("Content-Type: text/tsv"); header('Content-Disposition: attachment; filename="Dedup.xls"'); $urls = preg_split("@[\r\n]+@", $queries); foreach ($urls as $url) { if (preg_match("@http://www\\.wikihow\\.com/(.+)@", $url, $matches)) { $t = Title::newFromText($matches[1]); if (!$t) { $t = Title::newFromText(urldecode($matches[1])); } if ($t) { $cats = $t->getParentCategories(); $cats = array_keys($cats); $sls = array(); foreach ($cats as $cat) { $tree = $this->getCategoryTree($cat); if (sizeof($tree) >= 2 && $tree[0] != "Category:WikiHow") { $sls[str_replace('Category:', '', $tree[1])] = 1; } } print $url; foreach ($sls as $sl => $v) { print "\t" . $sl; } print "\n"; } } } exit; } else { header("Content-Type: text/tsv"); header('Content-Disposition: attachment; filename="Dedup.xls"'); print "Query\tTop Level Match\t2nd level match\t3rd level matches\n"; $queries = preg_split("@[\r\n]+@", $queries); foreach ($queries as $query) { print $query . "\t"; self::printQueryLevelCat($query, 0, 1, false); self::printQueryLevelCat($query, 1, 1, false); self::printQueryLevelCat($query, 2, false, true); print "\n"; } exit; } }
function printResponse($testResult, $response) { global $wgOut, $wgUser; wfLoadExtensionMessages('RCTestGrader'); $testResult['heading'] = wfMsg('rct_heading', $wgUser->getName()); $testResult['intro'] = wfMsg('rct_intro'); $testResult['img_class'] = $this->getImgClass($testResult, $response); $testResult['bg_class'] = $this->getBackgroundClass($testResult, $response); $testResult['response_heading'] = $this->getResponseHeading($testResult['correct'], $response); $testResult['response_txt'] = $this->getResponseText($testResult['ideal_responses'], $response, $testResult['correct']); $testResult['exp_heading'] = $testResult['correct'] ? wfMsg('rct_exp_heading_correct') : wfMsg('rct_exp_heading_wrong'); EasyTemplate::set_path(dirname(__FILE__) . '/'); $html = EasyTemplate::html('RCTestGrader', $testResult); $wgOut->addHtml($html); }
public function execute($par) { global $wgRequest, $wgOut, $wgUser, $wgLang, $wgLanguageCode; if ($wgUser->isBlocked()) { $wgOut->blockedPage(); return; } $userGroups = $wgUser->getGroups(); if ($wgUser->getID() == 0 || !(in_array('sysop', $userGroups) || in_array('staff', $userGroups))) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); return; } if (!$wgRequest->wasPosted()) { EasyTemplate::set_path(dirname(__FILE__)); $tmpl = EasyTemplate::html("RevertTool.tmpl.php", array('msg' => wfMsg("mass-revert-message"), 'msgName' => "mass-revert-message")); $wgOut->addHTML($tmpl); return true; } else { set_time_limit(0); $list = $wgRequest->getVal('page-list'); $revertUser = $wgRequest->getVal('revert-user'); $list = explode("\n", $list); $urls = array(); if ($wgLanguageCode != "en") { $pages = Misc::getPagesFromURLs($list); foreach ($pages as $page) { if ($page['lang'] == $wgLanguageCode) { $urls[] = Misc::getLangBaseURL($page['lang']) . '/' . $page['page_title']; } else { $links = TranslationLink::getLinksTo($page['lang'], $page['page_id']); foreach ($links as $link) { if ($link->toLang == $wgLanguageCode) { $urls[] = $link->toURL; } } } } } else { $urls = $list; } $results = $this->revertList($urls, $revertUser); $wgOut->setArticleBodyOnly(true); $wgOut->addHTML(json_encode($results)); return true; } }
function execute($par) { global $wgUser, $wgOut, $wgRequest; $userGroups = $wgUser->getGroups(); if ($wgUser->isBlocked() || !in_array('staff', $userGroups)) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); return; } if ($wgRequest->wasPosted()) { $wgOut->disable(); $result = array(); $result['debug'][] = "posted to tpcoachadmin"; if ($wgRequest->getVal("action") == "newtest") { $this->addNewTest(&$result); } else { if ($wgRequest->getVal("action") == "unblockuser") { $this->unBlockUser(&$result); } else { if ($wgRequest->getVal("action") == "blockuser") { $this->blockUser(&$result); } else { if ($wgRequest->getVal("action") == "reset") { $this->resetState(&$result); } else { if ($wgRequest->getVal("action") == "tpc_toggle") { $this->toggleTPCoach(&$result); } else { if ($wgRequest->getVal("action") == "delete_test") { $this->deleteTest(&$result); } } } } } } echo json_encode($result); return; } $wgOut->setPageTitle('TipsPatrol Coach Admin'); EasyTemplate::set_path(dirname(__FILE__) . '/'); $this->ts = wfTimestamp(TS_MW, time() - 24 * 3600 * $wgRequest->getVal("days", 7)); $this->printData(); }
/** * Execute function */ public function execute() { global $wgOut, $wgUser, $wgRequest, $wgSharedDB; // Only show for staff if ($wgUser->isBlocked()) { $wgOut->blockedPage(); return; } $userGroups = $wgUser->getGroups(); if ($wgUser->getID() == 0 || !in_array('staff', $userGroups)) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); return; } // Display the list of users in a trial $group = $wgRequest->getVal('group', NULL); $experiment = $wgRequest->getval('experiment', NULL); if ($group != NULL && $experiment != NULL) { $dbr = wfGetDB(DB_SLAVE); $sql = 'select user_name, hcu_main_edits from hydra_cohort_user' . ' JOIN ' . $wgSharedDB . '.user on user_id=hcu_user' . ' WHERE hcu_group=' . $dbr->addQuotes($group) . ' AND hcu_experiment=' . $dbr->addQuotes($experiment); $res = $dbr->query($sql, __METHOD__); $wgOut->addHTML("<table>"); $wgOut->addHTML("<tr><td>User Name</td><td>Edit Count</td></tr>"); foreach ($res as $row) { $wgOut->addHTML("<tr><td><a href=\"/User:"******"\">" . $row->user_name . "</a></td><td>" . $row->hcu_main_edits . "</td></tr>\n"); } $wgOut->addHTML("</table>"); return; } $dbr = wfGetDB(DB_SLAVE); // Get stats for edits by users in a trial group $sql = 'select hg_name, hcu_experiment as experiment_name, sum(hcu_main_edits >= ' . self::EDIT_GOAL . ') as success, sum(hcu_main_edits >= ' . self::EDIT_GOAL2 . ') as success2, count(hcu_user) as ct, avg(hcu_main_edits) as avg_edits, hg_id, ht_percent,ht_id from hydra_cohort_user ' . ' JOIN hydra_group on hg_id = hcu_group ' . ' LEFT JOIN hydra_trial on ht_group = hcu_group AND ht_experiment = hcu_experiment ' . ' JOIN ' . $wgSharedDB . '.user on user_id=hcu_user' . ' GROUP BY hcu_group, hcu_experiment'; $res = $dbr->query($sql, __METHOD__); $trials = array(); foreach ($res as $row) { $trials[$row->hg_name][] = array('experiment' => $row->experiment_name, 'group' => $row->hg_id, 'success' => $row->success, 'success2' => $row->success2, 'count' => $row->ct, 'avg_total' => round($row->avg_edits, 2), 'pct' => $row->ht_percent, 'trial' => $row->ht_id); } EasyTemplate::set_path(dirname(__FILE__)); $vars = array('trials' => $trials); $tmpl = EasyTemplate::html("Hydra.experiments.tmpl.php", $vars); $wgOut->addHTML($tmpl); }
function execute($par) { global $wgUser, $wgOut, $wgRequest; $userGroups = $wgUser->getGroups(); if ($wgUser->isBlocked() || !in_array('staff', $userGroups)) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); return; } $wgOut->setPageTitle('Patrol Coach Test Scores'); EasyTemplate::set_path(dirname(__FILE__) . '/'); switch ($wgRequest->getVal("a", "report")) { case "report": $this->ts = wfTimestamp(TS_MW, time() - 24 * 3600 * $wgRequest->getVal("days", 7)); $this->printReport(); break; case "detail": $this->printDetail(); } }
function execute($par) { global $wgOut, $wgRequest, $wgUser; $fname = 'CatSearchUI::execute'; wfProfileIn($fname); $wgOut->setRobotpolicy('noindex,nofollow'); if ($wgUser->getId() == 0) { $wgOut->errorpage('nosuchspecialpage', 'nospecialpagetext'); } $js = HtmlSnips::makeUrlTags('js', array('catsearchui.js'), '/extensions/wikihow/catsearch?rev=' . WH_SITEREV, CATSEARCH_DEBUG); $css = HtmlSnips::makeUrlTags('css', array('catsearchui.css'), '/extensions/wikihow/catsearch?rev=' . WH_SITEREV, CATSEARCH_DEBUG); $vars = array('js' => $js, 'css' => $css, 'csui_search_label' => wfMsg('csui_search_label'), 'csui_interests_label' => wfMsg('csui_interests_label'), 'csui_suggested_label' => wfMsg('csui_suggested_label'), 'csui_no_interests' => wfMsg('csui_no_interests')); $this->getUserCategoriesHtml($vars); EasyTemplate::set_path(dirname(__FILE__) . '/'); $html = EasyTemplate::html('CatSearchUI', $vars); $embedded = intval($wgRequest->getVal('embed')); $wgOut->setArticleBodyOnly($embedded); $wgOut->addHtml($html); wfProfileOut($fname); }
function execute($par) { global $wgRequest, $wgOut, $wgUser; $target = isset($par) ? $par : $wgRequest->getVal('target'); #if ($wgRequest->wasPosted() || true) { if ($wgRequest->getVal('interests')) { $wgOut->disable(); $x = new LSearch(); $interests = split("\n", $wgRequest->getVal('interests')); //$hits= $x->googleSearchResultTitles('"' . implode('" OR "', $interests) . '"'); $result = array(); $result['titles'] = array(); /*foreach ($hits as $t) { $result['titles'][] = $t->getText(); } */ $hits = array(Title::newFromText('French-Kiss'), Title::newFromText('Save-a-Wet-Cell-Phone'), Title::newFromText('Ollie-off-a-Kicker')); foreach ($hits as $t) { $dbr = wfGetDB(DB_SLAVE); $x = array(); $x['url'] = $t->getFullURL(); $x['title'] = $t->getText(); $row = $dbr->selectRow('page', array('page_counter', 'page_touched', 'page_further_editing'), array('page_id' => $t->getArticleID())); $x['counter'] = number_format($row->page_counter, 0, "", ","); $x['touched'] = wfTimeAgo($row->page_touched); if ($row->page_further_editing) { $x['morehelp'] = "yes"; } else { $x['morehelp'] = "no"; } $result['titles'][] = $x; } echo json_encode($result); return; } EasyTemplate::set_path(dirname(__FILE__)); $wgOut->addHTML(EasyTemplate::html('interests.tmpl.php')); }
public function execute() { global $wgRequest, $wgOut, $wgUser; $userGroups = $wgUser->getGroups(); if ($wgUser->isBlocked() || !in_array('staff', $userGroups)) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); return; } if ($wgRequest->wasPosted()) { $query = $wgRequest->getVal('query'); ini_set('memory_limit', '1024M'); //Take up to 4 minutes to download big queries set_time_limit(240); $this->getQuery(); } else { EasyTemplate::set_path(dirname(__FILE__) . '/'); $vars = array('fields' => $this->getFields()); $html = EasyTemplate::html('flaviusquerytool.tmpl.php', $vars); $wgOut->addHTML($html); } return $html; }
public function execute() { global $wgRequest, $wgOut, $wgUser; $userGroups = $wgUser->getGroups(); if (!in_array('staff', $userGroups)) { $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); return; } $dbr = wfGetDB(DB_SLAVE); $pageId = $wgRequest->getVal('page_id', ''); if (!is_int($pageId)) { $t = Title::newFromText($pageId); if ($t) { $pageId = $t->getArticleId(); } else { $pageId = ""; } } if ($pageId) { $t = Title::newFromID($pageId); $sql = "select page_title,r.rev_id, r.rev_comment, user_name, ec_bytes from dedup.edit_contributions join revision r on r.rev_id=ec_rev join revision r2 on r2.rev_id=ec_gr join page on page_id = r2.rev_page join wiki_shared.user on user_id=r.rev_user where page_id=" . $dbr->addQuotes($pageId); $res = $dbr->query($sql, __METHOD__); $contributions = array(); foreach ($res as $row) { $contributions[] = array('page_title' => $row->page_title, 'rev_id' => $row->rev_id, 'user_name' => $row->user_name, 'bytes' => $row->ec_bytes, 'comment' => $row->rev_comment); } EasyTemplate::set_path(dirname(__FILE__) . '/'); $vars = array('contributions' => $contributions); $wgOut->addHTML(EasyTemplate::html('EditContribution_results.tmpl.php', $vars)); } else { EasyTemplate::set_path(dirname(__FILE__) . '/'); $vars = array(); $wgOut->addHTML(EasyTemplate::html('EditContribution_form.tmpl.php', $vars)); } }
function getToolHtml() { EasyTemplate::set_path(dirname(__FILE__) . '/'); $vars = array('dbfields' => $this->getTitusFields(), 'languages' => $this->languageInfo); return EasyTemplate::html('titusquerytool.tmpl.php', $vars); }
<?php define('WH_USE_BACKUP_DB', true); require_once 'commandLine.inc'; $EXPERIMENT_NAME = 'after_rc_notify'; $dbr = wfGetDB(DB_SLAVE); $sql = "select hcu_user, u.user_email, rc_title, pu.user_name, pu.user_id, rev.rev_id from recentchanges join hydra_cohort_user on hcu_user=rc_user join wiki_shared.user u on u.user_id=hcu_user join logging on log_timestamp > date_sub(now(), interval 3 day) AND log_type='patrol' AND log_params=rc_this_oldid join wiki_shared.user pu on pu.user_id=log_user join revision rev on rev_id=rc_this_oldid left join revision rev2 on rev.rev_page=rev2.rev_page AND rev2.rev_id > rev.rev_id AND (rev2.rev_comment like '%Reverted edits by [[Special:Contributions/%' or rev2.rev_comment like '%Copyviocheckbot has found a potential copyright violation%') left join nfd on nfd_page=rev.rev_page and nfd_status=0 where hcu_experiment=" . $dbr->addQuotes($EXPERIMENT_NAME) . " AND u.user_email is NOT NULL AND u.user_email <> '' AND u.user_email_authenticated is NOT NULL AND hcu_run=0 AND rc_patrolled=1 AND rc_namespace=0 AND nfd_page is NULL AND rev2.rev_page is NULL GROUP BY hcu_user"; $res = $dbr->query($sql, __METHOD__); $emails = array(); foreach ($res as $row) { $email = array('from' => 'Krystle <*****@*****.**>', 'to' => $row->user_email, 'article' => $row->rc_title, 'username' => $row->user_name, 'user_id' => $row->hcu_user, 'revision' => $row->rev_id); print_r($email); $emails[] = $email; } global $wgOutputEncoding; $dbw = wfGetDB(DB_MASTER); foreach ($emails as $email) { $from = new MailAddress($email['from']); $to = new MailAddress($email['to']); $subject = 'Nice contribution on wikiHow!'; EasyTemplate::set_path(dirname(__FILE__) . '/../extensions/wikihow/hydra/experiments'); $body = EasyTemplate::html('RCPatrolEmail.tmpl.php', array('articleURL' => 'http://www.wikihow.com/' . $email['article'], 'articleName' => str_replace("-", " ", $email['article']), 'userURL' => 'http://www.wikihow.com/User:'******'username'], 'username' => $email['username'])); $content_type = "text/html; charset={$wgOutputEncoding}"; UserMailer::send($to, $from, $subject, $body, null, $content_type); $sql = "update hydra_cohort_user set hcu_run=1 WHERE hcu_user="******" AND hcu_experiment=" . $dbw->addQuotes($EXPERIMENT_NAME) . " LIMIT 1"; $res = $dbw->query($sql, __METHOD__); $logTo = new MailAddress("elizabethwikihowtest@gmail.com, gershon@wikihow.com"); UserMailer::send($logTo, $from, $to . ":" . $subject, $body, null, $content_type); }
public static function getXPath(&$bodyHtml, &$r) { global $wgWikiHowSections, $IP, $wgTitle; $lang = MobileWikihow::getSiteLanguage(); // munge steps first $opts = array('no-ads' => true); require_once "{$IP}/skins/WikiHowSkin.php"; $oldTitle = $wgTitle; $wgTitle = $r->getTitle(); $vars['bodyHtml'] = WikihowArticleHTML::postProcess($bodyHtml, $opts); $vars['lang'] = $lang; EasyTemplate::set_path(dirname(__FILE__) . '/'); $html = EasyTemplate::html('thumb_html.tmpl.php', $vars); require_once "{$IP}/extensions/wikihow/mobile/JSLikeHTMLElement.php"; $doc = new DOMDocument('1.0', 'utf-8'); $doc->registerNodeClass('DOMElement', 'JSLikeHTMLElement'); $doc->strictErrorChecking = false; $doc->recover = true; @$doc->loadHTML($html); $doc->normalizeDocument(); $xpath = new DOMXPath($doc); $wgTitle = $oldTitle; return $xpath; }
/** * Set html template path for StarterTool actions */ public static function setTemplatePath() { EasyTemplate::set_path(dirname(__FILE__) . '/'); }