public function addQuerySpecs(stdClass $row)
{
$this->clearQuerySpecs($row->id);
$dbprefix = elgg_get_config('dbprefix');
// Insert a new relationship
$sql = "\n\t\t\tINSERT INTO {$dbprefix}entity_relationships\n\t\t\t (guid_one, relationship, guid_two, time_created)\n\t\t\tVALUES (:guid1, :relationship, :guid2, :time)\n\t\t\t\tON DUPLICATE KEY UPDATE time_created = :time\n\t\t";
$this->query_specs[$row->id][] = $this->db->addQuerySpec(['sql' => $sql, 'params' => [':guid1' => $row->guid_one, ':guid2' => $row->guid_two, ':relationship' => $row->relationship, ':time' => $row->time_created], 'insert_id' => $row->id]);
// Get relationship by its ID
$sql = "\n\t\t\tSELECT * FROM {$dbprefix}entity_relationships\n\t\t\tWHERE id = :id\n\t\t";
$this->query_specs[$row->id][] = $this->db->addQuerySpec(['sql' => $sql, 'params' => [':id' => (int) $row->id], 'results' => function () use($row) {
if (isset($this->rows[$row->id])) {
return [$this->rows[$row->id]];
}
return [];
}]);
// Delete relationship by its ID
$sql = "\n\t\t\tDELETE FROM {$dbprefix}entity_relationships\n\t\t\tWHERE id = :id\n\t\t";
$this->query_specs[$row->id][] = $this->db->addQuerySpec(['sql' => $sql, 'params' => [':id' => (int) $row->id], 'results' => function () use($row) {
if (isset($this->rows[$row->id])) {
$this->clearQuerySpecs($row->id);
unset($this->rows[$row->id]);
return [$row->id];
}
return [];
}, 'times' => 1]);
// Check relationship between two GUIDs
$sql = "\n\t\t\tSELECT * FROM {$dbprefix}entity_relationships\n\t\t\tWHERE guid_one = :guid1\n\t\t\t AND relationship = :relationship\n\t\t\t AND guid_two = :guid2\n\t\t\tLIMIT 1\n\t\t";
$this->query_specs[$row->id][] = $this->db->addQuerySpec(['sql' => $sql, 'params' => [':guid1' => (int) $row->guid_one, ':guid2' => (int) $row->guid_two, ':relationship' => $row->relationship], 'results' => function () use($row) {
if (isset($this->rows[$row->id])) {
return [$this->rows[$row->id]];
}
return [];
}]);
}