/** * Cycle through the url list to call the removeIntroImages function */ private static function removeIntroImagesUrls(&$urls, $px, $text) { $dbr = wfGetDB(DB_SLAVE); foreach ($urls as &$url) { $err = ''; $final_step = ''; if (!$url['title']) { $err = 'Unable to load article'; } else { $introText = ''; $wikitext = Wikitext::getWikitext($dbr, $url['title']); if ($wikitext) { $introText = Wikitext::getIntro($wikitext); } if (!$introText) { $err = 'Unable to load wikitext'; } else { //first, let's use the intro image for the final step if ($px > 0) { $new_final_step = self::makeFinalStep($introText, $px, $text); if ($new_final_step) { list($stepsText, $sectionID) = Wikitext::getStepsSection($wikitext, true); $stepsText = $stepsText . $new_final_step; $wikitext = Wikitext::replaceStepsSection($wikitext, $sectionID, $stepsText, true); if (preg_match("@[\r\n]+===[^=]*===@m", $stepsText)) { $final_step = 'x (alt)'; //success! (yay!) but has alt methods (boo!) } else { $final_step = 'x'; //success! } } } $prevIntroText = $introText; $introText = self::removeIntroImages($prevIntroText, $url['title']); if ($introText && $introText != $prevIntroText) { $wikitext = Wikitext::replaceIntro($wikitext, $introText, true); $comment = 'Removing intro images'; if ($final_step == 'x') { $comment .= '; Made final step out of former intro image'; } $err = Wikitext::saveWikitext($url['title'], $wikitext, $comment); if (empty($err)) { //make sure the intro image adder doesn't grab it $id = $url['title']->getArticleID(); if ($id) { $dbw = wfGetDB(DB_MASTER); $dbw->update('imageadder', array('imageadder_hasimage' => 1), array('imageadder_page' => $id)); } } } else { $err = 'Either no intro image or no intro found'; } } } $url['err'] = $err; $url['final_step'] = $final_step; } }
/** * process a single article for the subheaders */ private static function processSubheaders($title, $csv) { list($wikitext, $stepsText, $sectionID) = self::getWikitext($title); if ($wikitext && $stepsText) { $subs = Wikitext::countAltMethods($stepsText); if ($subs > 1) { //we have some parts/methods/ways! $newstepsText = preg_replace('@(^\\s*===\\s*)(Method |Part )(.*?:|.*?\\.|\\s*===|)@im', '$1', $stepsText); //have we made a difference? if (strcmp($stepsText, $newstepsText) != 0) { //it has changed; update the sub headers $newWikitext = Wikitext::replaceStepsSection($wikitext, $sectionID, $newstepsText, true); if ($newWikitext) { //sub headers have been updated, add the "magic word" list($newestWikitext, $magic_word) = self::addMagicWord($stepsText, $newWikitext); if ($newestWikitext) { $data = array(); Wikitext::saveWikitext($title, $newestWikitext, self::$comment); $url = 'http://www.wikihow.com/' . $title->getDBKey(); $data[] = $url; $data[] = $magic_word; //rock! now a little logic to grab what changed... preg_match('@^===.*===?@im', $stepsText, $m); $data[] = $m[0]; preg_match('@^===.*===?@im', $newstepsText, $m); $data[] = $m[0]; //show it print $url . ' ' . $magic_word . "\n"; //log it self::logIt($url . ' ' . $magic_word); //write it to the csv fputcsv($csv, $data, chr(9)); //good night, sweet prince... usleep(self::SLEEPTIME); return true; } } } } } return false; }
private function resizeImages($article) { global $wgServer; if (!$dbw) { $dbw = wfGetDB(DB_MASTER); } $err = ''; $title = Title::newFromURL($article); if (!$title || !$title->exists()) { return; } $wikitext = Wikitext::getWikitext($dbw, $title); if (!$wikitext) { $err = 'Unable to load wikitext'; } else { if (preg_match('@^#REDIRECT@m', $wikitext)) { $err = 'REDIRECT'; } else { list($stepsText, $sectionID) = Wikitext::getStepsSection($wikitext, true); list($stepsText, $err) = self::resizeEachImage($stepsText); if ($stepsText) { $wikitext = Wikitext::replaceStepsSection($wikitext, $sectionID, $stepsText, true); $comment = 'Resized images to the {{largeimage}} size.'; $err = Wikitext::saveWikitext($title, $wikitext, $comment); } } } if ($err) { $err .= chr(9) . $wgServer . '/' . $article; //print $err."\n"; self::logError($err); } elseif ($stepsText) { self::logIt($wgServer . '/' . $article); return $wgServer . '/' . $article; } }
function categorize($aid) { global $wgRequest; $t = Title::newFromId($aid); if ($t && $t->exists()) { $dbr = wfGetDB(DB_MASTER); $wikitext = Wikitext::getWikitext($dbr, $t); $intro = Wikitext::getIntro($wikitext); $intro = $this->stripCats($intro); $cats = array_reverse($wgRequest->getArray('cats', array())); $intro .= $this->getCatsWikiText($cats); $wikitext = Wikitext::replaceIntro($wikitext, $intro); $result = Wikitext::saveWikitext($t, $wikitext, 'categorization'); // Article saved successfully if ($result === '') { wfRunHooks("CategoryHelperSuccess", array()); } } }
function removeVideoSection(&$article) { $ret = false; $t = Title::newFromID($article['page_id']); if ($t) { $dbw = wfGetDB(DB_MASTER); $wikitext = Wikitext::getWikitext($dbw, $t); try { $wikitext = Wikitext::removeVideoSection($wikitext); $result = Wikitext::saveWikitext($t, $wikitext, "vidbot - removing video section"); printArticleRemoval($t); $ret = true; } catch (Exception $e) { error($e->getMessage() . ", Title: " . $t->getText() . "\n"); } } return $ret; }