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); } }
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__); } } }