/** * adds $value['foo_display'] for each $value['foo'] enum from civicrm_phonecall * * @param array $values (reference) the array up for enhancing * @return void */ function addDisplayEnums(&$values) { $enumFields =& CRM_Core_DAO_Phonecall::getEnums(); foreach ($enumFields as $enum) { if (isset($values[$enum])) { $values[$enum . '_display'] = CRM_Core_DAO_Phonecall::tsEnum($enum, $values[$enum]); } } }
/** * function to get the list of open Actvities * * @param array reference $params array of parameters * @param int $offset which row to start from ? * @param int $rowCount how many rows to fetch * @param object|array $sort object or array describing sort order for sql query. * @param type $type type of history we're interested in * * @return array (reference) $values the relevant data object values of open activitie * * @access public * @static */ function &getOpenActivities(&$params, $offset = null, $rowCount = null, $sort = null, $type = 'Activity') { require_once 'CRM/Core/DAO/Phonecall.php'; $dao =& new CRM_Core_DAO(); $contactId = CRM_Utils_Type::escape($params['contact_id'], 'Integer'); $query = "\n( SELECT\n civicrm_phonecall.id as id,\n civicrm_phonecall.source_contact_id as source_contact_id, \n civicrm_phonecall.target_entity_id as target_contact_id,\n civicrm_phonecall.subject as subject,\n civicrm_phonecall.scheduled_date_time as date,\n civicrm_phonecall.status as status,\n source.display_name as sourceName,\n target.display_name as targetName,\n civicrm_activity_type.id as activity_type_id,\n civicrm_activity_type.name as activity_type\n FROM civicrm_activity_type, civicrm_phonecall, civicrm_contact source, civicrm_contact target\n WHERE\n civicrm_activity_type.id = 2 AND\n civicrm_phonecall.source_contact_id = source.id AND\n civicrm_phonecall.target_entity_table = 'civicrm_contact' AND\n civicrm_phonecall.target_entity_id = target.id AND\n ( civicrm_phonecall.source_contact_id = {$contactId}\n OR civicrm_phonecall.target_entity_id = {$contactId} )\n AND civicrm_phonecall.status != 'Completed'\n ) UNION\n( SELECT \n civicrm_meeting.id as id,\n civicrm_meeting.source_contact_id as source_contact_id,\n civicrm_meeting.target_entity_id as target_contact_id,\n civicrm_meeting.subject as subject,\n civicrm_meeting.scheduled_date_time as date,\n civicrm_meeting.status as status,\n source.display_name as sourceName,\n target.display_name as targetName,\n civicrm_activity_type.id as activity_type_id,\n civicrm_activity_type.name as activity_type\n FROM civicrm_activity_type, civicrm_meeting, civicrm_contact source, civicrm_contact target\n WHERE\n civicrm_activity_type.id = 1 AND\n civicrm_meeting.source_contact_id = source.id AND\n civicrm_meeting.target_entity_table = 'civicrm_contact' AND\n civicrm_meeting.target_entity_id = target.id AND\n ( civicrm_meeting.source_contact_id = {$contactId}\n OR civicrm_meeting.target_entity_id = {$contactId} )\n AND civicrm_meeting.status != 'Completed'\n) UNION\n( SELECT \n civicrm_activity.id as id,\n civicrm_activity.source_contact_id as source_contact_id,\n civicrm_activity.target_entity_id as target_contact_id,\n civicrm_activity.subject as subject,\n civicrm_activity.scheduled_date_time as date,\n civicrm_activity.status as status,\n source.display_name as sourceName,\n target.display_name as targetName,\n civicrm_activity_type.id as activity_type_id,\n civicrm_activity_type.name as activity_type\n FROM civicrm_activity, civicrm_contact source, civicrm_contact target ,civicrm_activity_type\n WHERE\n civicrm_activity.source_contact_id = source.id AND\n civicrm_activity.target_entity_table = 'civicrm_contact' AND\n civicrm_activity.target_entity_id = target.id AND\n ( civicrm_activity.source_contact_id = {$contactId}\n OR civicrm_activity.target_entity_id = {$contactId} ) AND\n civicrm_activity_type.id = civicrm_activity.activity_type_id AND civicrm_activity_type.is_active = 1 AND \n civicrm_activity.status != 'Completed'\n )\n"; $order = ''; if ($sort) { $orderBy = $sort->orderBy(); if (!empty($orderBy)) { $order = " ORDER BY {$orderBy}"; } } if (empty($order)) { $order = " ORDER BY date desc "; } if ($rowCount > 0) { $limit = " LIMIT {$offset}, {$rowCount} "; } $queryString = $query . $order . $limit; $dao->query($queryString); $values = array(); $rowCnt = 0; while ($dao->fetch()) { $values[$rowCnt]['activity_type_id'] = $dao->activity_type_id; $values[$rowCnt]['activity_type'] = $dao->activity_type; $values[$rowCnt]['id'] = $dao->id; $values[$rowCnt]['subject'] = $dao->subject; $values[$rowCnt]['date'] = $dao->date; $values[$rowCnt]['status'] = $dao->status; $values[$rowCnt]['sourceName'] = $dao->sourceName; $values[$rowCnt]['targetName'] = $dao->targetName; $values[$rowCnt]['sourceID'] = $dao->source_contact_id; $values[$rowCnt]['targetID'] = $dao->target_contact_id; $rowCnt++; } foreach ($values as $key => $array) { CRM_Core_DAO_Meeting::addDisplayEnums($values[$key]); CRM_Core_DAO_Phonecall::addDisplayEnums($values[$key]); } return $values; }