rid, $weight, $table); } } else { relationship_insert($source_nid, $relationship_type, $target_nid, $uid, $weight, $table); } } function relationship_insert($source_nid, $relationship_type, $target_nid, $uid = NULL, $weight = 0, $table = 'relationship') { if ($uid === NULL) { $sql = "INSERT INTO {%s} (source_nid, relationship_type, target_nid, weight, created) VALUES (%d, '%s', %d, %d, %d);"; db_query($sql, $table, $source_nid, $relationship_type, $target_nid, $weight, time()); } else { $sql = "INSERT INTO {%s} (source_nid, relationship_type, target_nid, uid, weight, created) VALUES (%d, '%s', %d, %d, %d, %d);"; db_query($sql, $table, $source_nid, $relationship_type, $target_nid, $uid, $weight, time()); } } function relationship_update($rid, $weight, $table = 'relationship') { $sql = "UPDATE {%s} r SET weight = %d WHERE rid = %d"; db_query($sql, $table, $weight, $rid); } function relationship_get($source_nid = NULL, $relationship_type = NULL, $target_nid = NULL, $uid = -1, $table = 'relationship') { return _relationship_operation('SELECT', $source_nid, $relationship_type, $target_nid, $uid, $table); } function relationship_unset($source_nid = NULL, $relationship_type = NULL, $target_nid = NULL, $uid = -1, $table = 'relationship') { _relationship_operation('DELETE', $source_nid, $relationship_type, $target_nid, $uid, $table); } function _relationship_operation($op = 'SELECT', $source_nid = NULL, $relationship_type = NULL, $target_nid = NULL, $uid = -1, $table = 'relationship') { $params = array($table); if (isset($source_nid)) { $filters[] = "r.source_nid = %d"; $params[] = $source_nid; } if (isset($relationship_type)) { $filters[] = "r.relationship_type = '%s'"; $params[] = $relationship_type; } if (isset($target_nid)) { $filters[] = "r.target_nid = %d"; $params[] = $target_nid; } if ($uid === NULL) { $filters[] = "r.uid IS NULL"; } else if ($uid > -1) { $filters[] = "r.uid = %d"; $params[] = $uid; } switch ($op) { case 'SELECT': $relationships = array(); if (count($params)) { $sql = 'SELECT r.* FROM {%s} r WHERE ' . implode(' AND ', $filters) . ' ORDER BY r.weight ASC;'; $result = db_query($sql, $params); while ($relationship = db_fetch_object($result)) { $relationships[] = $relationship; } } return $relationships; case 'DELETE': if (count($params)) { $sql = 'DELETE FROM {%s} r WHERE ' . implode(' AND ', $filters) . ';'; db_query($sql, $params); } break; } }