示例#1
0
 public static function updateTrees($dbw, $title, $revId, $allTrees, $treeOwnerIds, $checkedTreeIds, $updateChecked = true, $addWatch = true)
 {
     global $wgUser;
     $talkRevid = -1;
     $result = true;
     $added = false;
     $removed = false;
     foreach ($allTrees as $tree) {
         $treeId = $tree['id'];
         if (in_array($treeId, $checkedTreeIds) && !in_array($treeId, $treeOwnerIds)) {
             // add the page to the tree
             //wfDebug("updateTrees add " . $tree['name'] . "\n");
             if ($talkRevid == -1) {
                 $talkRevision = Revision::newFromTitle($title->getTalkPage());
                 if ($talkRevision) {
                     $talkRevid = $talkRevision->getId();
                 } else {
                     $talkRevid = 0;
                 }
             }
             $result = $result && FamilyTreeUtil::addPage($dbw, $wgUser, $treeId, $title, $revId, $talkRevid);
             $added = true;
         } else {
             if (!in_array($treeId, $checkedTreeIds) && in_array($treeId, $treeOwnerIds)) {
                 // remove the page from the tree
                 //wfDebug("updateTrees remove\n");
                 $result = $result && FamilyTreeUtil::removePage($dbw, $treeId, $title);
                 $removed = true;
             }
         }
         if ($updateChecked) {
             $checked = !$tree['checked'] && in_array($treeId, $checkedTreeIds);
             $unchecked = $tree['checked'] && !in_array($treeId, $checkedTreeIds);
             if ($checked || $unchecked) {
                 $dbw->update('familytree', array('ft_checked' => $checked ? 1 : 0), array('ft_tree_id' => $treeId));
                 FamilyTreeUtil::deleteFamilyTreesCache($wgUser->getName());
             }
         }
     }
     if ($added && !$wgUser->isWatched($title)) {
         //wfDebug("updateTrees - addWatch: ".$title->getPrefixedText()."\n");
         if ($addWatch) {
             StructuredData::addWatch($wgUser, new Article($title, 0));
         }
     } else {
         if ($added || $removed) {
             // purge the article and re-index it
             StructuredData::purgeTitle($title);
             StructuredData::requestIndex($title);
         }
     }
     return $result;
 }
示例#2
0
文件: Hooks.php 项目: k-hasan-19/wiki
function wrMovePage(&$oldTitle)
{
    // remove watchers from old title
    StructuredData::removeAllWatchers($oldTitle);
    if ($oldTitle->getNamespace() == NS_PLACE) {
        StructuredData::requestIndex($oldTitle);
        // moves are indexed separately, but force place to be re-indexed before indexing wlh
        $dbw =& wfGetDB(DB_MASTER);
        $ts = wfTimestampNow();
        $sql = 'insert ignore into index_request (ir_page_id, ir_timestamp) ' . '(select pl_from,' . $dbw->addQuotes($ts) . ' from pagelinks where' . ' pl_namespace=' . $dbw->addQuotes($oldTitle->getNamespace()) . ' and pl_title=' . $dbw->addQuotes($oldTitle->getDBkey()) . ')';
        $dbw->query($sql);
    }
    return true;
}