/**
  * Add user to this project
  *
  * @param User $user
  * @param Role $role
  * @param array $permissions
  * @return null
  */
 function addUser($user, $role = null, $permissions = null)
 {
     $project_user = ProjectUsers::findById(array('user_id' => $user->getId(), 'project_id' => $this->getId()));
     if (!instance_of($project_user, 'ProjectUser')) {
         $project_user = new ProjectUser();
     }
     // if
     $project_user->setUserId($user->getId());
     $project_user->setProjectId($this->getId());
     if (instance_of($role, 'Role')) {
         $project_user->setRoleId($role->getId());
         $project_user->setPermissions(null);
     } else {
         $project_user->setRoleId(0);
         $project_user->setPermissions($permissions);
     }
     // if
     $save = $project_user->save();
     if ($save && !is_error($save)) {
         clean_user_permissions_cache($user);
         event_trigger('on_project_user_added', array($this, $user, $role, $permissions));
         return true;
     } else {
         return $save;
     }
     // if
 }