/** * 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 }
/** * 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; }