/**
  * Remove company from project
  *
  * @param void
  * @return null
  */
 function remove_company()
 {
     if (!active_project()->canChangePermissions(logged_user())) {
         flash_error(lang('no access permissions'));
         ajx_current("empty");
         return;
     }
     // if
     $project = Projects::findById(get_id('project_id'));
     if (!$project instanceof Project) {
         flash_error(lang('project dnx'));
         ajx_current("empty");
         return;
     }
     // if
     $company = Companies::findById(get_id('company_id'));
     if (!$company instanceof Company) {
         flash_error(lang('company dnx'));
         ajx_current("empty");
         return;
     }
     // if
     $project_company = ProjectCompanies::findById(array('project_id' => $project->getId(), 'company_id' => $company->getId()));
     if (!$project_company instanceof ProjectCompany) {
         flash_error(lang('company not on project'));
         ajx_current("empty");
         return;
     }
     // if
     try {
         DB::beginWork();
         $project_company->delete();
         $users = ProjectUsers::getCompanyUsersByProject($company, $project);
         if (is_array($users)) {
             foreach ($users as $user) {
                 $project_user = ProjectUsers::findById(array('project_id' => $project->getId(), 'user_id' => $user->getId()));
                 if ($project_user instanceof ProjectUser) {
                     $project_user->delete();
                 }
             }
             // foreach
         }
         // if
         DB::commit();
         flash_success(lang('success remove company from project'));
         ajx_current("reload");
     } catch (Exception $e) {
         DB::rollback();
         flash_error(lang('error remove company from project'));
         ajx_current("empty");
     }
     // try
 }
 /**
  * Update company permissions
  *
  * @param void
  * @return null
  */
 function update_permissions()
 {
     if (!logged_user()->isAdministrator(owner_company())) {
         flash_error(lang('no access permissions'));
         $this->redirectTo('dashboard');
     }
     // if
     $company = Companies::findById(get_id());
     if (!$company instanceof Company) {
         flash_error(lang('company dnx'));
         $this->redirectToReferer(get_url('administration'));
     }
     // if
     if ($company->isOwner()) {
         flash_error(lang('error owner company has all permissions'));
         $this->redirectToReferer(get_url('administration'));
     }
     // if
     $projects = Projects::getAll(Projects::ORDER_BY_NAME);
     if (!is_array($projects) || !count($projects)) {
         flash_error(lang('no projects in db'));
         $this->redirectToUrl($company->getViewUrl());
     }
     // if
     tpl_assign('projects', $projects);
     tpl_assign('company', $company);
     if (array_var($_POST, 'submitted') == 'submitted') {
         $counter = 0;
         $logged_user = logged_user();
         // reuse...
         foreach ($projects as $project) {
             if (!$logged_user->isProjectUser($project)) {
                 continue;
             }
             // if
             $new_value = array_var($_POST, 'project_' . $project->getId()) == 'checked';
             $relation = ProjectCompanies::findById(array('project_id' => $project->getId(), 'company_id' => $company->getId()));
             // findById
             $current_value = $relation instanceof ProjectCompany;
             try {
                 if ($current_value != $new_value) {
                     if ($new_value) {
                         $relation = new ProjectCompany();
                         $relation->setProjectId($project->getId());
                         $relation->setCompanyId($company->getId());
                         $relation->save();
                     } else {
                         $relation->delete();
                     }
                     // if
                     $counter++;
                 }
                 // if
             } catch (Exception $e) {
                 die($e->__toString());
             }
             // if
         }
         // foreach
         flash_success(lang('success update company permissions', $counter));
         $this->redirectToUrl($company->getViewUrl());
     }
     // if
 }
Esempio n. 3
0
 /**
  * Check if this company is part of specific project
  *
  * @param Project $project
  * @return boolean
  */
 function isProjectCompany(Project $project)
 {
     if ($this->isOwner() && $project->getCompanyId() == $this->getId()) {
         return true;
     }
     // uf
     return ProjectCompanies::findById(array('project_id' => $project->getId(), 'company_id' => $this->getId())) instanceof ProjectCompany;
 }