diff options
Diffstat (limited to 'engine')
-rw-r--r-- | engine/lib/entities.php | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/engine/lib/entities.php b/engine/lib/entities.php index ba376917b..92ef5a84e 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -458,9 +458,9 @@ * @param int $user_guid The user. * @return bool */ - public function canWriteToContainer($user_guid = 0) + public function canWriteToContainer($user_guid = 0, $entity = null) { - return can_write_to_container($user_guid, $this->getGUID()); + return can_write_to_container($user_guid, $this->getGUID(), 'all', $entity); } /** @@ -1160,9 +1160,11 @@ * Determine whether a given user is able to write to a given container. * * @param int $user_guid The user guid, or 0 for $_SESSION['user']->getGUID() - * @param int $container_guid The container, or 0 for the current page owner. + * @param int $container_guid The container, or 0 for the current page owner.
+ * @param string $entity_type The type of entity, or all for all
+ * @param ElggEntity $entity Optionally, the entity */ - function can_write_to_container($user_guid = 0, $container_guid = 0, $entity_type = 'all') + function can_write_to_container($user_guid = 0, $container_guid = 0, $entity_type = 'all', $entity = null) { global $CONFIG; @@ -1192,7 +1194,7 @@ } // See if anyone else has anything to say - return trigger_plugin_hook('container_permissions_check',$entity_type,array('container' => $container, 'user' => $user), false); + return trigger_plugin_hook('container_permissions_check',$entity_type,array('container' => $container, 'user' => $user, 'entity' => $entity), false); } @@ -1222,8 +1224,18 @@ $site_guid = $CONFIG->site_guid; $site_guid = (int) $site_guid; if ($container_guid == 0) $container_guid = $owner_guid; - - if (!can_write_to_container($owner_guid, $container_guid, $type)) return false; +
+ $temptity = new ElggEntity();
+ $temptity->type = $type;
+ $temptity->subtype = $subtype;
+ $temptity->owner_guid = $owner_guid;
+ $temptity->access_id = $access_id;
+ $temptity->site_guid = $site_guid;
+ $temptity->container_guid = $container_guid;
+ $temptity->time_created = $time;
+ $temptity->time_updated = $time;
+ + if (!can_write_to_container($owner_guid, $container_guid, $type, $temptity)) return false; if ($type=="") throw new InvalidParameterException(elgg_echo('InvalidParameterException:EntityTypeNotSet')); |