/** * Return all roles for this contact * * @access public * @return array */ function getRoles() { if ($this->getId() == '') { return array(); } return ProjectContacts::getRolesByContact($this); }
function assign_to_project() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $contact = Contacts::findById(get_id()); if (!$contact instanceof Contact) { flash_error(lang('contact dnx')); ajx_current("empty"); return; } // if $projects = active_projects(); $contactRoles = ProjectContacts::getRolesByContact($contact); if (!$contact->canEdit(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } // if $contact_data = array_var($_POST, 'contact'); $enterData = true; if (!is_array($contact_data)) { $enterData = false; foreach ($projects as $project) { $contact_data['pid_' . $project->getId()] = false; $contact_data['role_pid_' . $project->getId()] = ''; if ($contactRoles) { foreach ($contactRoles as $cr) { if ($project->getId() == $cr->getProjectId()) { $contact_data['pid_' . $project->getId()] = true; $contact_data['role_pid_' . $project->getId()] = $cr->getRole(); } // if } // foreach } // if } // foreach } // if if ($enterData) { try { DB::beginWork(); $err = 0; $succ = 0; $workspaces = array(); foreach ($projects as $project) { $pc = ProjectContacts::getRole($contact, $project); if (!isset($contact_data['pid_' . $project->getId()])) { if ($pc instanceof ProjectContact) { $pc->delete(); $succ++; } } else { $role = $contact_data['role_pid_' . $project->getId()]; if ($pc instanceof ProjectContact) { if ($pc->getRole() != $role) { $pc->setRole($role); $pc->save(); $succ++; // ApplicationLogs::createLog($contact, $project, ApplicationLogs::ACTION_EDIT); } //if } else { $pc = new ProjectContact(); $pc->setProjectId($project->getId()); $pc->setContactId($contact->getId()); $pc->setRole($role); $pc->save(); $succ++; // ApplicationLogs::createLog($contact, $project, ApplicationLogs::ACTION_EDIT); } //if else } //if else } //foreach if ($err == 0) { flash_success(lang('success edit contact', $contact->getDisplayName())); DB::commit(); ApplicationLogs::createLog($contact, null, ApplicationLogs::ACTION_EDIT); ajx_current("back"); } else { DB::rollback(); flash_error(lang('failed to assign contact due to permissions', implode(", ", $workspaces))); ajx_current("empty"); } } catch (Exception $e) { DB::rollback(); flash_error($e->getMessage()); ajx_current("empty"); } // try } // if tpl_assign('contact', $contact); tpl_assign('contact_data', $contact_data); tpl_assign('projects', $projects); }