Exemplo n.º 1
0
 /**
  * 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');
 }