static function addCategory($title) { global $wgCollectionMaxArticles, $wgCollectionArticleNamespaces; $limit = $wgCollectionMaxArticles - CollectionSession::countArticles(); if ($limit <= 0) { self::limitExceeded(); return; } $db = wfGetDB(DB_SLAVE); $tables = array('page', 'categorylinks'); $fields = array('page_namespace', 'page_title'); $options = array('USE INDEX' => 'cl_sortkey', 'ORDER BY' => 'cl_type, cl_sortkey', 'LIMIT' => $limit + 1); $where = array('cl_from=page_id', 'cl_to' => $title->getDBkey()); $res = $db->select($tables, $fields, $where, __METHOD__, $options); $count = 0; $limitExceeded = false; foreach ($res as $row) { if (++$count > $limit) { $limitExceeded = true; break; } if (in_array($row->page_namespace, $wgCollectionArticleNamespaces)) { $articleTitle = Title::makeTitle($row->page_namespace, $row->page_title); if (CollectionSession::findArticle($articleTitle->getPrefixedText()) == -1) { self::addArticle($articleTitle); } } } $db->freeResult($res); return $limitExceeded; }
private function deleteUnusedArticles() { $newList = array(); foreach ($this->mLinkList as $item) { if (CollectionSession::findArticle($item['name']) != -1) { $newList[] = $item; } } $this->mLinkList = $newList; }
function wfAjaxCollectionGetPopupData($title) { global $wgScriptPath; $json = new Services_JSON(); $result = array(); $imagePath = "{$wgScriptPath}/extensions/Collection/images"; $t = Title::newFromText($title); if ($t && $t->isRedirect()) { $a = new Article($t, 0); $t = $a->followRedirect(); if ($t instanceof Title) { $title = $t->getPrefixedText(); } } if (CollectionSession::findArticle($title) == -1) { $result['action'] = 'add'; $result['text'] = wfMsg('coll-add_linked_article'); $result['img'] = "{$imagePath}/silk-add.png"; } else { $result['action'] = 'remove'; $result['text'] = wfMsg('coll-remove_linked_article'); $result['img'] = "{$imagePath}/silk-remove.png"; } $result['title'] = $title; $r = new AjaxResponse($json->encode($result)); $r->setContentType('application/json'); return $r; }