private function _list_bookings() { $task_booked_time = 0; $task_booked_percentage = 100; $bookings = array('confirmed' => array(), 'suspected' => array()); $mc = new org_openpsa_relatedto_collector($this->_object->guid, 'org_openpsa_calendar_event_dba'); $mc->add_value_property('status'); $mc->add_constraint('status', '<>', org_openpsa_relatedto_dba::NOTRELATED); // TODO: fromClass too? $mc->execute(); $relations = $mc->list_keys(); foreach ($relations as $guid => $empty) { try { $booking = new org_openpsa_calendar_event_dba($mc->get_subkey($guid, 'fromGuid')); } catch (midcom_error $e) { continue; } if ($mc->get_subkey($guid, 'status') == org_openpsa_relatedto_dba::CONFIRMED) { $bookings['confirmed'][] = $booking; $task_booked_time += ($booking->end - $booking->start) / 3600; } else { $bookings['suspected'][] = $booking; } } usort($bookings['confirmed'], array('self', '_sort_by_time')); usort($bookings['suspected'], array('self', '_sort_by_time')); $task_booked_time = round($task_booked_time); if ($this->_object->plannedHours != 0) { $task_booked_percentage = round(100 / $this->_object->plannedHours * $task_booked_time); } $this->_request_data['task_booked_percentage'] = $task_booked_percentage; $this->_request_data['task_booked_time'] = $task_booked_time; return $bookings; }
/** * Queries org.openpsa.sales for suspected task links and saves them */ function get_suspected_sales_links() { debug_add('called'); //Safety if (!$this->_suspects_classes_present()) { debug_add('required classes not present, aborting', MIDCOM_LOG_WARN); return; } // Do no seek if we already have confirmed links $mc = new org_openpsa_relatedto_collector($this->guid, array('org_openpsa_salesproject_dba', 'org_openpsa_salesproject_deliverable_dba')); $mc->add_constraint('status', '=', org_openpsa_relatedto_dba::CONFIRMED); $links = $mc->get_related_guids(); if (!empty($links)) { $cnt = count($links); debug_add("Found {$cnt} confirmed links already, skipping seek"); return; } $link_def = $this->_suspect_defaults(); $sales_suspect_links = org_openpsa_relatedto_suspect::find_links_object_component($this, 'org.openpsa.sales', $link_def); foreach ($sales_suspect_links as $linkdata) { debug_add("processing sales link {$linkdata['other_obj']->guid}, (class: " . get_class($linkdata['other_obj']) . ")"); $stat = $linkdata['link']->create(); if ($stat) { debug_add("saved link to {$linkdata['other_obj']->guid} (link id #{$linkdata['link']->id})", MIDCOM_LOG_INFO); } else { debug_add("could not save link to {$linkdata['other_obj']->guid}, errstr" . midcom_connection::get_error_string(), MIDCOM_LOG_WARN); } } debug_add('done'); return; }