예제 #1
0
 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;
 }
예제 #3
0
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;
}