Exemple #1
0
 /**
  * @param $permissions array
  * @return boolean
  *
  * Takes an array of $permission_id=>'on' pairs and adds permissions for the company
  */
 public function setPermissions($permissions, &$errors = array())
 {
     $db = DB::Instance();
     $db->StartTrans();
     $result = true;
     //		Save the Company Permissions
     $companypermission = DataObjectFactory::Factory('Companypermission');
     $delete_permissions = $companypermission->getAll();
     $current_permissions = count($delete_permissions);
     if (empty($delete_permissions)) {
         foreach ($permissions as $permission_id => $on) {
             $delete_permissions[] = $permission_id;
         }
     }
     //		1) if item is selected, do not delete it [unset($delete_permissions[$id])]
     //		2) if item is selected and it already exists in Company Permissions [$current_permissions>0]
     //			we do not need to insert it [unset($permissions[$permissionid])]
     $deleteHasPermissions = false;
     foreach ($delete_permissions as $id => $permissionid) {
         if (isset($permissions[$permissionid]['permissions'])) {
             unset($delete_permissions[$id]);
             if ($current_permissions > 0) {
                 unset($permissions[$permissionid]);
             }
             $deleteHasPermissions = true;
         }
     }
     //		delete the company permissions where the input is deselected
     if (!empty($delete_permissions)) {
         $companypermissions = new CompanypermissionCollection($companypermission);
         $sh = new SearchHandler($companypermissions, false, false);
         if (!empty($delete_permissions)) {
             $sh->addConstraint(new Constraint('permissionid', 'in', '(' . implode(',', $delete_permissions) . ')'));
         }
         $companypermissions->delete($sh);
     }
     foreach ($permissions as $permission_id => $on) {
         if (isset($on['permissions'])) {
             $data['permissionid'] = $permission_id;
             $cp = DataObject::Factory($data, $errors, 'Companypermission');
             if (count($errors) > 0 || !$cp->save()) {
                 $errors[] = 'Failed to save Company Permissions';
                 $db->FailTrans();
                 $result = false;
                 break;
             }
         }
     }
     //		only delete role permissions for deselected lines
     //      if not all lines deselected
     if (count($errors) == 0 && $deleteHasPermissions) {
         foreach ($delete_permissions as $permission_id) {
             $this->deleteHasPermissions($permission_id, $errors);
         }
     }
     $db->CompleteTrans();
     return $result;
 }
 public function view()
 {
     if (!$this->loadData()) {
         $this->dataError();
         sendBack();
     }
     $systemcompany = $this->_uses[$this->modeltype];
     $this->addSidebar($systemcompany);
     $company = new Company();
     $company->load($systemcompany->company_id, TRUE);
     $this->view->set('company', $company);
     $permissions = new CompanypermissionCollection(new Companypermission());
     $permissions->getPermissions($systemcompany->id);
     $this->view->set('permissions', $permissions);
     $this->view->set('page_title', $this->getPageName('system_company'));
 }