Esempio n. 1
0
 /**
  * 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();
 }
Esempio n. 2
0
 /**
  * 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;
 }
Esempio n. 3
0
 /**
  * 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;
         }
     }
 }