/** * Helper function that adds a member to parents if necessary * * @param org_openpsa_projects_task_dba $object The object for which we search the parent */ function add_resource_to_parent(&$object) { $parent = $object->get_parent(); if (!$parent) { return; } if (is_a($parent, 'org_openpsa_projects_project')) { org_openpsa_contacts_role_dba::add($parent->guid, $this->person, $this->orgOpenpsaObtype); return; } $mc = self::new_collector('task', $parent->id); $mc->add_constraint('orgOpenpsaObtype', '=', $this->orgOpenpsaObtype); $mc->add_constraint('person', '=', $this->person); $mc->execute(); if ($mc->count() > 0) { //Resource is already present, aborting return; } $new_resource = new org_openpsa_projects_task_resource_dba(); $new_resource->person = $this->person; $new_resource->orgOpenpsaObtype = $this->orgOpenpsaObtype; $new_resource->task = $parent->id; $new_resource->create(); }
/** * Calls find_task_prospects and saves the results as prospects * * @param org_openpsa_projects_task_dba &$task object to search prospect resources for * @return boolean indicating success/failure */ function save_task_prospects(&$task) { midcom::get('auth')->request_sudo('org.openpsa.projects'); $task->set_parameter('org.openpsa.projects.projectbroker', 'local_search', 'SEARCH_IN_PROGRESS'); $task->get_members(); $prospects = $this->find_task_prospects($task); if (!is_array($prospects)) { return false; } foreach ($prospects as $person) { if (isset($task->resources[$person->id]) && $task->resources[$person->id]) { continue; } $prospect = new org_openpsa_projects_task_resource_dba(); $prospect->person = $person->id; $prospect->task = $task->id; $prospect->orgOpenpsaObtype = ORG_OPENPSA_OBTYPE_PROJECTPROSPECT; if (!$prospect->create()) { // TODO: Error reporting } } $task->set_parameter('org.openpsa.projects.projectbroker', 'local_search', 'SEARCH_COMPLETE'); midcom::get('auth')->drop_sudo(); return true; }
/** * Adds new contacts or resources * * @param string $property Where should thy be added * @param array $ids The IDs of the contacts to add */ function add_members($property, $ids) { if (!is_array($ids) || empty($ids)) { return; } foreach ($ids as $id) { $resource = new org_openpsa_projects_task_resource_dba(); switch ($property) { case 'contacts': $resource->orgOpenpsaObtype = ORG_OPENPSA_OBTYPE_PROJECTCONTACT; break; case 'resources': $resource->orgOpenpsaObtype = ORG_OPENPSA_OBTYPE_PROJECTRESOURCE; break; default: continue; } $resource->task = $this->id; $resource->person = (int) $id; if ($resource->create()) { $this->{$property}[$id] = true; } } }