/** * Edit project * * @param void * @return null */ function edit() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $this->setTemplate('add_project'); $project = Projects::findById(get_id()); if (!$project instanceof Project) { flash_error(lang('project dnx')); ajx_current("empty"); return; } // if if (!$project->canEdit(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } // if $project_data = array_var($_POST, 'project'); if (!is_array($project_data)) { $project_data = array('name' => $project->getName(), 'description' => $project->getDescription(), 'show_description_in_overview' => $project->getShowDescriptionInOverview(), 'color' => 0); // array } // if $projects = logged_user()->getActiveProjects(); tpl_assign('project', $project); tpl_assign('projects', $projects); tpl_assign('project_data', $project_data); tpl_assign('billing_amounts', $project->getBillingAmounts()); tpl_assign('subject_matter_experts', ProjectContacts::getContactsByProject($project)); if (is_array(array_var($_POST, 'project'))) { if (array_var($project_data, 'parent_id') == $project->getId()) { flash_error(lang("workspace own parent error")); ajx_current("empty"); return; } if (!isset($project_data['parent_id'])) { $project_data['parent_id'] = $project->getParentId(); } $project->setFromAttributes($project_data); try { DB::beginWork(); if (array_var($project_data, 'parent_id') != $project->getParentId()) { if ($project->getParentWorkspace() instanceof Project && !logged_user()->isProjectUser($project->getParentWorkspace())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } // if $parent = Projects::findById(array_var($project_data, 'parent_id')); if ($parent) { if (!$project->canSetAsParentWorkspace($parent)) { flash_error(lang('error cannot set workspace as parent', $parent->getName())); ajx_current("empty"); return; } } $project->setParentWorkspace($parent); } $project->save(); /* Billing */ WorkspaceBillings::clearByProject($project); $billings = array_var($project_data, 'billing', null); if ($billings) { foreach ($billings as $billing_id => $billing) { if ($billing['update'] && $billing['value'] && $billing['value'] != 0) { $wb = new WorkspaceBilling(); $wb->setProjectId($project->getId()); $wb->setBillingId($billing_id); $value = $billing['value']; if (strpos($value, ',') && !strpos($value, '.')) { $value = str_replace(',', '.', $value); } $wb->setValue($value); $wb->save(); } } } /* Project contacts */ if (can_manage_contacts(logged_user())) { ProjectContacts::clearByProject($project); $contacts = array_var($project_data, 'contacts', null); if ($contacts) { foreach ($contacts as $contact_data) { $contact = Contacts::findById($contact_data['contact_id']); if ($contact instanceof Contact) { $pc = new ProjectContact(); $pc->setProjectId($project->getId()); $pc->setContactId($contact_data['contact_id']); $pc->setRole($contact_data['role']); $pc->save(); } } } } /* <permissions> */ $permissions = null; $permissionsString = array_var($_POST, 'permissions'); if ($permissionsString && $permissionsString != '') { $permissions = json_decode($permissionsString); } if (is_array($permissions) && count($permissions) > 0) { //Clear old modified permissions $ids = array(); foreach ($permissions as $perm) { $ids[] = $perm->wsid; } ProjectUsers::clearByProject($project, implode(',', $ids)); //Add new permissions //TODO - Make batch update of these permissions foreach ($permissions as $perm) { if (ProjectUser::hasAnyPermissions($perm->pr, $perm->pc)) { $relation = new ProjectUser(); $relation->setProjectId($project->getId()); $relation->setUserId($perm->wsid); $relation->setCheckboxPermissions($perm->pc, $relation->getUserOrGroup()->isGuest() ? false : true); $relation->setRadioPermissions($perm->pr, $relation->getUserOrGroup()->isGuest() ? false : true); $relation->save(); } //endif //else if the user has no permissions at all, he is not a project_user. ProjectUser is not created } //end foreach } // if /* </permissions> */ $object_controller = new ObjectController(); $object_controller->add_custom_properties($project); ApplicationLogs::createLog($project, null, ApplicationLogs::ACTION_EDIT, false, true); DB::commit(); if (logged_user()->isProjectUser($project)) { $workspace_info = $this->get_workspace_info($project); evt_add("workspace edited", $workspace_info); } flash_success(lang('success edit project', $project->getName())); ajx_current("back"); return; } catch (Exception $e) { DB::rollback(); flash_error($e->getMessage()); ajx_current("empty"); } // try } // if }
/** * This function will return all roles in project * * @param void * @return array */ function getAllRoles() { if (is_null($this->all_roles)) { $this->all_roles = ProjectContacts::getRolesByProject($this); } // if return $this->all_roles; }
/** * Returns CSVs of the workspaces the contact is assigned to * * @return unknown */ function getProjectIdsCSV($wsIds = null, $extra_cond = null) { $workspaces = ProjectContacts::getProjectsByContact($this, $extra_cond); $result = array(); if ($workspaces) { if (!is_null($wsIds)) { foreach ($workspaces as $w) { if ($this->isInCsv($w->getId(), $wsIds)) { $result[] = $w->getId(); } } } else { foreach ($workspaces as $w) { $result[] = $w->getId(); } } } return implode(',', $result); }
function getRole(Contact $contact, Project $project) { return ProjectContacts::findOne(array('conditions' => '`project_id` = ' . $project->getId() . ' AND `contact_id` = ' . $contact->getId())); }
/** * Return manager instance * * @access protected * @param void * @return ProjectContacts */ function manager() { if (!$this->manager instanceof ProjectContacts) { $this->manager = ProjectContacts::instance(); } return $this->manager; }
<?php $show_help_option = user_config_option('show_context_help'); if ($show_help_option == 'always' || $show_help_option == 'until_close' && user_config_option('show_dashboard_info_widget_context_help', true, logged_user()->getId())) { render_context_help($this, 'chelp dashboard info widget', 'dashboard_info_widget'); } $date_format = user_config_option('date_format'); ?> <div style="padding:10px"> <?php $project = active_project(); $contacts = ProjectContacts::getContactsByProject($project); //if (can_manage_contacts(logged_user())){ if (count($contacts) > 0) { ?> <div class='endSeparatorDiv'> <b><?php echo lang('workspace contacts'); ?> :</b> <div style='padding-left:15px'><?php $c = 0; foreach ($contacts as $contact) { if ($c != 0) { echo '<br/>'; } $c++; if ($contact->canView(logged_user())) { ?> <span><a href="<?php
/** * This function will return paginated result. Result is an array where first element is * array of returned object and second populated pagination object that can be used for * obtaining and rendering pagination data using various helpers. * * Items and pagination array vars are indexed with 0 for items and 1 for pagination * because you can't use associative indexing with list() construct * * @access public * @param array $arguments Query argumens (@see find()) Limit and offset are ignored! * @param integer $items_per_page Number of items per page * @param integer $current_page Current page number * @return array */ function paginate($arguments = null, $items_per_page = 10, $current_page = 1) { if (isset($this) && instance_of($this, 'ProjectContacts')) { return parent::paginate($arguments, $items_per_page, $current_page); } else { return ProjectContacts::instance()->paginate($arguments, $items_per_page, $current_page); //$instance =& ProjectContacts::instance(); //return $instance->paginate($arguments, $items_per_page, $current_page); } // if }
function import_from_vcard() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } @set_time_limit(0); ini_set('auto_detect_line_endings', '1'); if (isset($_GET['from_menu']) && $_GET['from_menu'] == 1) { unset($_SESSION['go_back']); } if (isset($_SESSION['go_back'])) { unset($_SESSION['go_back']); ajx_current("start"); } tpl_assign('import_type', 'contact'); if (!Contact::canAdd(logged_user(), active_or_personal_project())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } // if $this->setTemplate('vcard_import'); $filedata = array_var($_FILES, 'vcard_file'); if (is_array($filedata) && !array_var($_GET, 'step2')) { $filename = ROOT . '/tmp/' . logged_user()->getId() . 'temp.vcf'; copy($filedata['tmp_name'], $filename); //ajx_current("empty"); } else { if (array_var($_GET, 'step2')) { $filename = ROOT . '/tmp/' . logged_user()->getId() . 'temp.vcf'; $result = $this->read_vcard_file($filename); unlink($filename); $import_result = array('import_ok' => array(), 'import_fail' => array()); foreach ($result as $contact_data) { try { DB::beginWork(); if (isset($contact_data['photo_tmp_filename'])) { $file_id = FileRepository::addFile($contact_data['photo_tmp_filename'], array('public' => true)); $contact_data['picture_file'] = $file_id; unlink($contact_data['photo_tmp_filename']); unset($contact_data['photo_tmp_filename']); } if (isset($contact_data['company_name'])) { $company = Companies::findOne(array("conditions" => "`name` = '" . mysql_real_escape_string($contact_data['company_name']) . "'")); if ($company == null) { $company = new Company(); $company->setName($contact_data['company_name']); $company->setClientOfId(logged_user()->getCompanyId()); $company->save(); ApplicationLogs::createLog($company, null, ApplicationLogs::ACTION_ADD); } $contact_data['company_id'] = $company->getId(); unset($contact_data['company_name']); } $contact_data['import_status'] = '(' . lang('updated') . ')'; $fname = mysql_real_escape_string(array_var($contact_data, "firstname")); $lname = mysql_real_escape_string(array_var($contact_data, "lastname")); $contact = Contacts::findOne(array("conditions" => "firstname = '" . $fname . "' AND lastname = '" . $lname . "' OR email <> '' AND email = '" . array_var($contact_data, "email") . "'")); $log_action = ApplicationLogs::ACTION_EDIT; if (!$contact) { $contact = new Contact(); $contact_data['import_status'] = '(' . lang('new') . ')'; $log_action = ApplicationLogs::ACTION_ADD; $can_import = active_project() != null ? $contact->canAdd(logged_user(), active_project()) : can_manage_contacts(logged_user()); } else { $can_import = $contact->canEdit(logged_user()); } if ($can_import) { $contact->setFromAttributes($contact_data); $contact->save(); ApplicationLogs::createLog($contact, null, $log_action); $contact->setTagsFromCSV(array_var($_GET, 'tags')); if (active_project() instanceof Project) { $pc = ProjectContacts::findOne(array("conditions" => "contact_id = " . $contact->getId() . " AND project_id = " . active_project()->getId())); if (!$pc) { $pc = new ProjectContact(); $pc->setContactId($contact->getId()); $pc->setProjectId(active_project()->getId()); $pc->setRole(array_var($contact_data, 'role')); $pc->save(); } $contact->addToWorkspace(active_project()); } $import_result['import_ok'][] = array('firstname' => $fname, 'lastname' => $lname, 'email' => $contact_data['email'], 'import_status' => $contact_data['import_status']); } else { throw new Exception(lang('no access permissions')); } DB::commit(); } catch (Exception $e) { DB::rollback(); $fail_msg = substr_utf($e->getMessage(), strpos_utf($e->getMessage(), "\r\n")); $import_result['import_fail'][] = array('firstname' => $fname, 'lastname' => $lname, 'email' => $contact_data['email'], 'import_status' => $contact_data['import_status'], 'fail_message' => $fail_msg); } } $_SESSION['go_back'] = true; tpl_assign('import_result', $import_result); } } }