aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/lib/entities.php26
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'));