X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=api%2Fv3%2FActivity.php;h=fc1e693f6dad686a97bdc647bcaa8fec34c7c2b0;hb=86bfa4f6487e37328f4b18c50cab27958311a0d2;hp=c7d033ec6a7face4fe37a68cd638ff51288be445;hpb=192e8d1a947814993aa699e47ac1669ac17b1045;p=civicrm-core.git diff --git a/api/v3/Activity.php b/api/v3/Activity.php index c7d033ec6a..fc1e693f6d 100644 --- a/api/v3/Activity.php +++ b/api/v3/Activity.php @@ -3,7 +3,7 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 4.5 | + | CiviCRM version 4.6 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2014 | +--------------------------------------------------------------------+ @@ -41,7 +41,8 @@ /** * Creates or updates an Activity. See the example for usage * - * @param array $params Associative array of property name/value + * @param array $params + * Associative array of property name/value. * pairs for the activity. * {@getfields activity_create} * @@ -75,7 +76,6 @@ function civicrm_api3_activity_create($params) { return $errors; } - // processing for custom data $values = $activityArray = array(); _civicrm_api3_custom_format_params($params, $values, 'Activity'); @@ -177,7 +177,8 @@ function civicrm_api3_activity_create($params) { /** * Specify Meta data for create. Note that this data is retrievable via the getfields function * and is used for pre-filling defaults and ensuring mandatory requirements are met. - * @param array $params (reference) array of parameters determined by getfields + * @param array $params + * (reference) array of parameters determined by getfields. */ function _civicrm_api3_activity_create_spec(&$params) { @@ -212,7 +213,8 @@ function _civicrm_api3_activity_create_spec(&$params) { /** * Gets a CiviCRM activity according to parameters * - * @param array $params Associative array of property name/value + * @param array $params + * Associative array of property name/value. * pairs for the activity. * * @return array @@ -233,8 +235,8 @@ function civicrm_api3_activity_get($params) { else { $activities = _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params, FALSE); } - $options = _civicrm_api3_get_options_from_params($params, FALSE,'activity','get'); - if($options['is_count']) { + $options = _civicrm_api3_get_options_from_params($params, FALSE, 'activity', 'get'); + if ($options['is_count']) { return civicrm_api3_create_success($activities, $params, 'activity', 'get'); } @@ -248,7 +250,8 @@ function civicrm_api3_activity_get($params) { * * NOTE: Called by civicrm-core and CiviHR * - * @param array $params API request parameters + * @param array $params + * API request parameters. * @param array $activities * @return array new activities list */ @@ -274,16 +277,19 @@ function _civicrm_api3_activity_get_formatResult($params, $activities) { $activities[$key]['assignee_contact_id'] = CRM_Activity_BAO_ActivityAssignment::retrieveAssigneeIdsByActivityId($activityArray['id']); } break; + case 'target_contact_id': foreach ($activities as $key => $activityArray) { $activities[$key]['target_contact_id'] = CRM_Activity_BAO_ActivityTarget::retrieveTargetIdsByActivityId($activityArray['id']); } break; + case 'source_contact_id': foreach ($activities as $key => $activityArray) { $activities[$key]['source_contact_id'] = CRM_Activity_BAO_Activity::getSourceContactID($activityArray['id']); } break; + default: if (substr($n, 0, 6) == 'custom') { $returnProperties[$n] = $v; @@ -303,7 +309,8 @@ function _civicrm_api3_activity_get_formatResult($params, $activities) { /** * Delete a specified Activity. * - * @param array $params array holding 'id' of activity to be deleted + * @param array $params + * Array holding 'id' of activity to be deleted. * {@getfields activity_delete} * * @throws API_Exception @@ -326,14 +333,13 @@ function civicrm_api3_activity_delete($params) { } /** - * Function to check for required params + * Check for required params * - * @param array $params associated array of fields + * @param array $params + * Associated array of fields. * * @throws API_Exception * @throws Exception - * @internal param bool $addMode true for add mode - * * @return array $error array with errors */ function _civicrm_api3_activity_check_params(&$params) { @@ -365,18 +371,17 @@ function _civicrm_api3_activity_check_params(&$params) { } } - $sql = ' SELECT count(*) FROM civicrm_contact WHERE id IN (' . implode(', ', $contactIds) . ' )'; if (count($contactIds) != CRM_Core_DAO::singleValueQuery($sql)) { - throw new API_Exception('Invalid ' . ' Contact Id'); + throw new API_Exception('Invalid ' . ' Contact Id'); } } - - $activityIds = array('activity' => CRM_Utils_Array::value('id', $params), + $activityIds = array( + 'activity' => CRM_Utils_Array::value('id', $params), 'parent' => CRM_Utils_Array::value('parent_id', $params), 'original' => CRM_Utils_Array::value('original_id', $params), ); @@ -405,7 +410,7 @@ SELECT count(*) $activityTypeIdInList = array_search(($activityName ? $activityName : $activityLabel), $activityTypes); if (!$activityTypeIdInList) { - $errorString = $activityName ? "Invalid Activity Name : $activityName" : "Invalid Activity Type Label"; + $errorString = $activityName ? "Invalid Activity Name : $activityName" : "Invalid Activity Type Label"; throw new Exception($errorString); } elseif ($activityTypeId && ($activityTypeId != $activityTypeIdInList)) { @@ -426,7 +431,6 @@ SELECT count(*) throw new API_Exception('Invalid Activity Duration (in minutes)'); } - //if adding a new activity & date_time not set make it now // this should be managed by the wrapper layer & setting ['api.default'] in speces // needs testing @@ -437,3 +441,52 @@ SELECT count(*) return NULL; } +/** + * @see _civicrm_api3_generic_getlist_params. + * + * @param $request + * Array. + */ +function _civicrm_api3_activity_getlist_params(&$request) { + $fieldsToReturn = array('activity_date_time', 'activity_type_id', 'subject', 'source_contact_id'); + $request['params']['return'] = array_unique(array_merge($fieldsToReturn, $request['extra'])); + $request['params']['options']['sort'] = 'activity_date_time DESC'; + $request['params'] += array( + 'is_current_revision' => 1, + 'is_deleted' => 0, + ); +} + +/** + * @see _civicrm_api3_generic_getlist_output + * + * @param $result + * Array. + * @param $request + * Array. + * + * @return array + */ +function _civicrm_api3_activity_getlist_output($result, $request) { + $output = array(); + if (!empty($result['values'])) { + foreach ($result['values'] as $row) { + $data = array( + 'id' => $row[$request['id_field']], + 'label' => $row[$request['label_field']] ? $row[$request['label_field']] : ts('(no subject)'), + 'description' => array(CRM_Core_Pseudoconstant::getLabel('CRM_Activity_BAO_Activity', 'activity_type_id', $row['activity_type_id'])), + ); + if (!empty($row['activity_date_time'])) { + $data['description'][0] .= ': ' . CRM_Utils_Date::customFormat($row['activity_date_time']); + } + if (!empty($row['source_contact_id'])) { + $data['description'][] = ts('By %1', array(1 => CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $row['source_contact_id'], 'display_name'))); + } + foreach ($request['extra'] as $field) { + $data['extra'][$field] = isset($row[$field]) ? $row[$field] : NULL; + } + $output[] = $data; + } + } + return $output; +}