5 use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
13 use Elgg\Traits\TimeUsing;
62 return $this->db->getDataRow($select, [$this,
'rowToElggRelationship']) ?:
null;
72 public function delete(
int $id):
bool {
78 return $this->events->triggerSequence(
'delete',
'relationship',
$relationship,
function() use (
$id) {
82 return (
bool) $this->db->deleteData(
$delete);
100 throw new LengthException(
'Relationship name cannot be longer than ' . self::RELATIONSHIP_COLUMN_LENGTH);
123 'time_created' => $insert->param($this->getCurrentTime()->getTimestamp(),
ELGG_VALUE_TIMESTAMP),
127 $id = $this->db->insertData($insert);
131 }
catch (DatabaseException $e) {
132 $prev = $e->getPrevious();
133 if ($prev instanceof UniqueConstraintViolationException) {
148 return $return_id ?
$id :
true;
167 ->andWhere($select->compare(
'guid_two',
'=', $guid_two,
ELGG_VALUE_GUID))
170 $row = $this->db->getDataRow($select, [$this,
'rowToElggRelationship']);
171 return $row instanceof \ElggRelationship ? $row :
false;
185 public function remove(
int $guid_one,
string $relationship,
int $guid_two):
bool {
191 return $this->
delete($obj->id);
207 if ($trigger_events) {
230 if ($inverse_relationship) {
241 $entity_sub =
$delete->subquery(EntityTable::TABLE_NAME);
242 $entity_sub->select(
'guid')
245 if (!$inverse_relationship) {
246 $delete->andWhere(
$delete->compare(
'guid_two',
'in', $entity_sub->getSQL()));
248 $delete->andWhere(
$delete->compare(
'guid_one',
'in', $entity_sub->getSQL()));
252 $this->db->deleteData(
$delete);
271 $select =
Select::fromTable(self::TABLE_NAME);
272 $select->select(
'*');
274 if ($inverse_relationship) {
285 $entity_sub = $select->
subquery(EntityTable::TABLE_NAME);
286 $entity_sub->select(
'guid')
289 if (!$inverse_relationship) {
290 $select->andWhere($select->compare(
'guid_two',
'in', $entity_sub->getSQL()));
292 $select->andWhere($select->compare(
'guid_one',
'in', $entity_sub->getSQL()));
298 $relationships = $this->db->getData($select, [$this,
'rowToElggRelationship']);
301 foreach ($relationships as $rel) {
302 if (!$this->events->triggerBefore(
'delete',
'relationship', $rel)) {
306 if (!$this->events->trigger(
'delete',
'relationship', $rel)) {
310 $remove_ids[] = $rel->id;
314 $chunks = array_chunk($remove_ids, 250);
315 foreach ($chunks as $chunk) {
320 $delete = Delete::fromTable(self::TABLE_NAME);
323 $this->db->deleteData(
$delete);
327 foreach ($relationships as $rel) {
328 if (!in_array($rel->id, $remove_ids)) {
332 $this->events->triggerAfter(
'delete',
'relationship', $rel);
348 $options[
'selects'][] =
new SelectClause(
'COUNT(' . EntityTable::DEFAULT_JOIN_ALIAS .
'.guid) AS total');
$guid
Reset an ElggUpgrade.
$id
Generic annotation delete action.
return[ 'admin/delete_admin_notices'=>['access'=> 'admin'], 'admin/menu/save'=>['access'=> 'admin'], 'admin/plugins/activate'=>['access'=> 'admin'], 'admin/plugins/activate_all'=>['access'=> 'admin'], 'admin/plugins/deactivate'=>['access'=> 'admin'], 'admin/plugins/deactivate_all'=>['access'=> 'admin'], 'admin/plugins/set_priority'=>['access'=> 'admin'], 'admin/security/security_txt'=>['access'=> 'admin'], 'admin/security/settings'=>['access'=> 'admin'], 'admin/security/regenerate_site_secret'=>['access'=> 'admin'], 'admin/site/cache/invalidate'=>['access'=> 'admin'], 'admin/site/flush_cache'=>['access'=> 'admin'], 'admin/site/icons'=>['access'=> 'admin'], 'admin/site/set_maintenance_mode'=>['access'=> 'admin'], 'admin/site/set_robots'=>['access'=> 'admin'], 'admin/site/theme'=>['access'=> 'admin'], 'admin/site/unlock_upgrade'=>['access'=> 'admin'], 'admin/site/settings'=>['access'=> 'admin'], 'admin/upgrade'=>['access'=> 'admin'], 'admin/upgrade/reset'=>['access'=> 'admin'], 'admin/user/ban'=>['access'=> 'admin'], 'admin/user/bulk/ban'=>['access'=> 'admin'], 'admin/user/bulk/delete'=>['access'=> 'admin'], 'admin/user/bulk/unban'=>['access'=> 'admin'], 'admin/user/bulk/validate'=>['access'=> 'admin'], 'admin/user/change_email'=>['access'=> 'admin'], 'admin/user/delete'=>['access'=> 'admin'], 'admin/user/login_as'=>['access'=> 'admin'], 'admin/user/logout_as'=>[], 'admin/user/makeadmin'=>['access'=> 'admin'], 'admin/user/resetpassword'=>['access'=> 'admin'], 'admin/user/removeadmin'=>['access'=> 'admin'], 'admin/user/unban'=>['access'=> 'admin'], 'admin/user/validate'=>['access'=> 'admin'], 'annotation/delete'=>[], 'avatar/upload'=>[], 'comment/save'=>[], 'diagnostics/download'=>['access'=> 'admin'], 'entity/chooserestoredestination'=>[], 'entity/delete'=>[], 'entity/mute'=>[], 'entity/restore'=>[], 'entity/subscribe'=>[], 'entity/trash'=>[], 'entity/unmute'=>[], 'entity/unsubscribe'=>[], 'login'=>['access'=> 'logged_out'], 'logout'=>[], 'notifications/mute'=>['access'=> 'public'], 'plugins/settings/remove'=>['access'=> 'admin'], 'plugins/settings/save'=>['access'=> 'admin'], 'plugins/usersettings/save'=>[], 'register'=>['access'=> 'logged_out', 'middleware'=>[\Elgg\Router\Middleware\RegistrationAllowedGatekeeper::class,],], 'river/delete'=>[], 'settings/notifications'=>[], 'settings/notifications/subscriptions'=>[], 'user/changepassword'=>['access'=> 'public'], 'user/requestnewpassword'=>['access'=> 'public'], 'useradd'=>['access'=> 'admin'], 'usersettings/save'=>[], 'widgets/add'=>[], 'widgets/delete'=>[], 'widgets/move'=>[], 'widgets/save'=>[],]
Extends QueryBuilder with GROUP BY statements.
Extends QueryBuilder with ORDER BY clauses.
Extends QueryBuilder with SELECT clauses.
Query builder for updating data in the database.
static fromTable(string $table)
Returns a QueryBuilder for deleting data from a given table.
Entity table database service.
static intoTable(string $table)
Returns a QueryBuilder for inserting data in a given table.
subquery(string $table, ?string $alias=null)
Creates a new SelectQueryBuilder for join/where sub queries using the DB connection of the primary Qu...
Relationships table database service.
removeAllWithoutEvents(int $guid, string $relationship='', bool $inverse_relationship=false, string $type='')
Removes all relationships originating from a particular entity.
removeAllWithEvents(int $guid, string $relationship='', bool $inverse_relationship=false, string $type='')
Removes all relationships originating from a particular entity.
__construct(protected Database $db, protected EntityTable $entities, protected MetadataTable $metadata, protected EventsService $events)
Constructor.
const RELATIONSHIP_COLUMN_LENGTH
rowToElggRelationship(\stdClass $row)
Convert a database row to a new \ElggRelationship.
removeAll(int $guid, string $relationship='', bool $inverse_relationship=false, string $type='', bool $trigger_events=true)
Removes all relationships originating from a particular entity.
getEntitiesFromCount(array $options=[])
Gets the number of entities by a the number of entities related to them in a particular way.
add(\ElggRelationship $relationship, bool $return_id=false)
Create a relationship between two entities.
check(int $guid_one, string $relationship, int $guid_two)
Check if a relationship exists between two entities.
Query builder for fetching data from the database.
static fromTable(string $table, ?string $alias=null)
Returns a QueryBuilder for selecting data from a given table.
A generic parent class for database exceptions.
Exception thrown if a length is invalid.
const ELGG_VALUE_TIMESTAMP
if($who_can_change_language==='nobody') elseif($who_can_change_language==='admin_only' &&!elgg_is_admin_logged_in()) $options
foreach($recommendedExtensions as $extension) if(empty(ini_get('session.gc_probability'))||empty(ini_get('session.gc_divisor'))) $db
$relationship
Elgg default relationship view.
if(parse_url(elgg_get_site_url(), PHP_URL_PATH) !=='/') if(file_exists(elgg_get_root_path() . 'robots.txt'))
Set robots.txt.