/** * Bookmark family tree page * * @param unknown_type $args user, name, ns, title * @return FTE_SUCCESS, FTE_INVALID_ARG, FTE_NOT_LOGGED_IN, FTE_NOT_AUTHORIZED, FTE_NOT_FOUND, FTE_DUP_KEY, FTE_DB_ERROR */ function wfSetPrimaryFamilyTreePage($args) { global $wgAjaxCachePolicy; // set cache policy $wgAjaxCachePolicy->setPolicy(0); $ns = ''; $titleString = ''; // validate args $args = AjaxUtil::getArgs($args); $status = ftValidateUpdateFamilyTreePageArgs($args); if ($status == FTE_SUCCESS) { // get tree id $treeId = 0; $status = ftGetTreeId($args['user'], $args['name'], $treeId); } if ($status == FTE_SUCCESS) { // get page $ns = $args['ns']; $titleString = $args['title']; $title = Title::newFromText($titleString, $ns); if (!$title) { $status = FTE_INVALID_ARG; } } if ($status == FTE_SUCCESS) { $dbw =& wfGetDB(DB_MASTER); $dbw->ignoreErrors(true); $dbw->begin(); $dbw->update('familytree', array('ft_primary_namespace' => $title->getNamespace(), 'ft_primary_title' => $title->getDBkey()), array('ft_tree_id' => $treeId)); FamilyTreeUtil::deleteFamilyTreesCache($args['user']); $errno = $dbw->lastErrno(); if ($errno > 0) { $status = FTE_DB_ERROR; } if ($status == FTE_SUCCESS) { $dbw->commit(); } else { $dbw->rollback(); } } // return status $ns = @$args['ns']; $titleString = StructuredData::escapeXml(@$args['title']); return "<setprimary status=\"{$status}\" ns=\"{$ns}\" title=\"{$titleString}\"></setprimary>"; }
public static function deleteFamilyTree($db, $userName, $treeName, $delPages) { global $wgUser; if ($wgUser->isBlocked() || wfReadOnly()) { return FTE_NOT_AUTHORIZED; } $status = FTE_SUCCESS; $treeId = $db->selectField('familytree', 'ft_tree_id', array('ft_user' => $userName, 'ft_name' => $treeName)); $errno = $db->lastErrno(); if ($errno > 0) { $status = FTE_DB_ERROR; } else { if ($treeId === false) { $status = FTE_NOT_FOUND; } else { // set up delete job (the delete job should also remove familytree_page/data/gedcom eventually) $job = new DeleteFamilyTreeJob(array('tree_id' => $treeId, 'user' => $userName, 'delete_pages' => $delPages ? '1' : '0')); $job->insert(); $errno = $db->lastErrno(); if ($errno > 0) { $status = FTE_DB_ERROR; } } } if ($status == FTE_SUCCESS) { // remove familytree $db->delete('familytree', array('ft_tree_id' => $treeId)); FamilyTreeUtil::deleteFamilyTreesCache($userName); $errno = $db->lastErrno(); if ($errno > 0) { $status = FTE_DB_ERROR; } } // purge user page StructuredData::purgeTitle(Title::makeTitle(NS_USER, $userName)); return $status; }