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); } }
function removeTagArticles() { global $wgRequest, $IP; $urlList = Misc::getUrlDecodedData($wgRequest->getVal('urls')); $tags = $wgRequest->getArray('tags'); WAPUtil::createTagArrayFromRequestArray($tags); $langs = $this->config->getSupportedLanguages(); foreach ($langs as $lang) { $this->wapDB->removeTagsFromArticles($urlList, $lang, $tags); } $this->outputSuccessHtml("Tag(s) successfully removed"); }
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__); } } }
public function addUser(&$url, $powerUser = false) { if (0 !== stripos($url, 'http://www.wikihow.com/')) { throw new Exception('User urls should start with http://www.wikihow.com/'); } $uname = WAPUtil::getUserNameFromUserUrl($url); $success = false; $u = User::newFromName($uname); if ($u) { $uid = $u->getId(); if (!empty($uid)) { $groupName = $this->getWAPConfig()->getWikiHowGroupName(); $u->addGroup($groupName); if ($powerUser) { $powerUserGroup = WAPDB::getInstance($this->dbType)->getWAPConfig()->getWikiHowPowerUserGroupName(); $u->addGroup($powerUserGroup); } $success = true; } } return $success; }
public function getCompletedArticles($langCode, $fromDate) { global $IP; $dbr = self::getDBR(); require_once "{$IP}/extensions/wikihow/DatabaseHelper.class.php"; $articleTable = $this->config->getArticleTableName(); $defaultUser = $this->config->getDefaultUserName(); $rows = DatabaseHelper::batchSelect($articleTable, array('*'), array("ct_completed" => 1, "ct_lang_code" => $langCode, "ct_completed_timestamp > '{$fromDate}'", "ct_user_text != '{$defaultUser}'"), __METHOD__, array(), DatabaseHelper::DEFAULT_BATCH_SIZE, $dbr); $this->formatData($rows); return self::getReportArray(WAPUtil::generateTSVOutput($rows)); }