function _user_relationships_save_relationship in User Relationships 5.2
Create the new relationship
2 calls to _user_relationships_save_relationship()
- user_relationships_request_relationship in ./
user_relationships_api.inc - Public API for creating a relationship.
- user_relationships_update_relationship in ./
user_relationships_api.inc - Public API for updating a relationship.
File
- ./
user_relationships.module, line 225
Code
function _user_relationships_save_relationship(&$relationship, $op = 'create') {
if (!isset($relationship->flags)) {
$relationship->flags = UR_OK;
}
_user_relationships_invoke('pre-save', $relationship, $op);
if (!$relationship->created_at) {
$relationship->created_at = time();
}
if ($relationship->rid) {
// Delete the original request
db_query('DELETE FROM {user_relationships} WHERE rid = %d', $relationship->rid);
// Delete possible requests coming the other direction
$relationship_type = user_relationships_type_load($relationship->rtid);
if (!$relationship_type->is_oneway) {
db_query('DELETE FROM {user_relationships} WHERE rtid = %d AND requester_id = %d AND requestee_id = %d', $relationship->rtid, $relationship->requestee_id, $relationship->requester_id);
}
}
else {
$relationship->rid = db_next_id('{user_relationships}_id');
}
$queries = array();
$relationship_type = user_relationships_type_load($relationship->rtid);
$query = 'INSERT INTO {user_relationships} (rid, requester_id, requestee_id, rtid, approved, created_at, updated_at, flags) VALUES';
$insertions = '(%d, %d, %d, %d, %d, %d, %d, %d)';
$arguments = array(
$relationship->rid,
$relationship->requester_id,
$relationship->requestee_id,
$relationship->rtid,
$relationship->approved,
$relationship->created_at,
time(),
$relationship->flags,
);
$queries[] = array(
"{$query} {$insertions}",
$arguments,
);
if ($relationship->approved && !$relationship_type->is_oneway) {
$requester = $arguments[1];
$arguments[1] = $arguments[2];
$arguments[2] = $requester;
$queries[] = array(
"{$query} {$insertions}",
$arguments,
);
}
foreach ($queries as $query) {
if (db_query($query[0], $query[1]) === FALSE) {
// If this ever happens we have major problems
return FALSE;
}
}
_user_relationships_invoke('post-save', $relationship, $op);
return $relationship;
}