Пример #1
0
 /**
  * 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;
     }
 }
Пример #2
0
 /**
  * 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;
 }
Пример #3
0
 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;
     }
 }
Пример #4
0
 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;
}