示例#1
0
 private function processTagsOnWAPArticles(&$aids, $langCode, $tags, $add = true)
 {
     $dbr = wfGetDB(DB_SLAVE);
     $dbw = wfGetDB(DB_MASTER);
     $aids = array_unique($aids);
     $pageIds = "(" . implode(",", $aids) . ")";
     $articleTable = $this->getWAPConfig()->getArticleTableName();
     $res = $dbw->select($articleTable, array('ct_page_id', 'ct_lang_code', 'ct_tag_list'), array("ct_lang_code" => $langCode, "ct_page_id IN {$pageIds}"), __METHOD__);
     $articles = array();
     foreach ($res as $row) {
         $row = get_object_vars($row);
         $this->logError($add ? "add tags" : "remove tags");
         $this->logError("(aid, lang, current tags) - (" . implode(",", array_values($row)) . ")");
         $row['ct_tag_list'] = $add ? $this->addTagsToList($row['ct_tag_list'], $tags) : $this->removeTagsFromList($row['ct_tag_list'], $tags);
         $row['ct_tag_list'] = $dbw->strencode($row['ct_tag_list']);
         $this->logError("new tags: " . $row['ct_tag_list']);
         $articles[] = $row;
     }
     if (!empty($articles)) {
         $sql = WAPUtil::makeBulkInsertStatement($articles, $articleTable);
         $this->logError(__METHOD__ . ": sql: {$sql}");
         $dbw->query($sql);
     }
 }
示例#2
0
 function tagArticles(&$pageIds, $langCode, $tags)
 {
     $dbw = $this->dbw;
     // Check for and add new tags
     $tags = $this->addNewTags($tags);
     $ts = wfTimestampNow(TS_UNIX);
     $data = array();
     foreach ($pageIds as $aid) {
         foreach ($tags as $tag) {
             $data[] = array("ca_tag_id" => $tag['tag_id'], "ca_page_id" => $aid, "ca_lang_code" => $langCode, "ca_tagged_on" => $ts);
         }
     }
     if (!empty($data)) {
         $articleTagTable = $this->wapConfig->getArticleTagTableName();
         $articleTable = $this->wapConfig->getArticleTableName();
         $sql = WAPUtil::makeBulkInsertStatement($data, $articleTagTable);
         $dbw->query($sql);
         // Update reserved flag
         $ids = implode(",", $pageIds);
         $sql = "UPDATE {$articleTable}, {$articleTagTable} SET ca_reserved = 1\n\t\t\t\tWHERE ca_page_id = ct_page_id AND ca_lang_code = ct_lang_code AND ca_lang_code = '{$langCode}' AND (ct_user_id > 0 OR ct_completed = 1) AND ca_page_id IN ({$ids})";
         $dbw->query($sql);
     }
 }
 protected function insertRows(&$rows)
 {
     $dbw = wfGetDB(DB_MASTER);
     if (!empty($rows)) {
         $table = $this->getWAPConfig()->getArticleTableName();
         $sql = WAPUtil::makeBulkInsertStatement($rows, $table, true);
         if ($this->simulate) {
             echo $sql, "\n\n====\n\n";
         } else {
             $dbw->query($sql, __METHOD__);
         }
     }
 }