/** * Indicates whether the user has permission to use the artefact in their own Pages. The name * refers to the "publish" permission for group files. * * If a user has "publish" permission on an artefact, it is assumed the also have "edit" and * "view" permission (i.e. can view it in the artefact chooser -- see $USER->can_view_artefact()) * * @param ArtefactType $a * @return boolean */ public function can_publish_artefact($a) { $parent = $a->get_parent_instance(); if ($parent) { if (!$this->can_view_artefact($parent)) { return false; } } if ($this->get('id') and $this->get('id') == $a->get('owner')) { return true; } if ($i = $a->get('institution')) { if ($i == 'mahara') { return $this->get('admin'); } return $this->in_institution($i) || $this->can_edit_institution($i); } if (!($group = $a->get('group'))) { return false; } require_once 'group.php'; if (!($role = group_user_access($group, $this->id))) { return false; } if ($role == 'admin') { return true; } if ($this->id == $a->get('author')) { return true; } return $a->role_has_permission($role, 'republish'); }