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