/** * Update an existing event * * This api is used for updating an existing event. * Required parrmeters : id of a event * * @param Array $params an associative array of title/value property values of civicrm_event * * @return array of updated event property values * @access public */ function &crm_update_event($params) { if (!is_array($params)) { return _crm_error('Params is not an array'); } if (!isset($params['id'])) { return _crm_error('Required parameter missing'); } require_once 'CRM/Event/BAO/Event.php'; $eventBAO =& new CRM_Event_BAO_Event(); $eventBAO->id = $params['id']; if ($eventBAO->find(true)) { $fields = $eventBAO->fields(); foreach ($fields as $name => $field) { if (array_key_exists($name, $params)) { $eventBAO->{$name} = $params[$name]; } } $eventBAO->save(); } $event = array(); _crm_object_to_array($eventBAO, $event); return $event; }
/** * Returns all files assigned to a single entity instance. * * @param object $entityID id of the supported entity. * @param string $entity_table * * @return array nested array of entity-file property values. * @access public */ function crm_get_files_by_entity($entityID, $entityTable = 'civicrm_contact', $fileID = null) { if (!$entityID) { return _crm_error('Required parameters missing'); } require_once 'CRM/Core/DAO/EntityFile.php'; require_once 'CRM/Core/DAO/File.php'; $entityFileDAO =& new CRM_Core_DAO_EntityFile(); $entityFileDAO->entity_table = $entityTable; $entityFileDAO->entity_id = $entityID; if ($fileID) { $entityFileDAO->file_id = $fileID; } if ($entityFileDAO->find()) { $entityFile = array(); while ($entityFileDAO->fetch()) { _crm_object_to_array($entityFileDAO, $entityFile); $files[$entityFileDAO->file_id] = $entityFile; if (array_key_exists('file_id', $files[$entityFileDAO->file_id])) { $fileDAO =& new CRM_Core_DAO_File(); $fileDAO->id = $entityFile['file_id']; $fileDAO->find(true); _crm_object_to_array($fileDAO, $files[$entityFileDAO->file_id]); } if (CRM_Utils_Array::value('file_type_id', $files[$entityFileDAO->file_id])) { $files[$entityFileDAO->file_id]['file_type'] = CRM_Core_OptionGroup::getLabel('file_type', $files[$entityFileDAO->file_id]['file_type_id']); } } } else { return _crm_error('Exact match not found'); } return $files; }
/** * Update an existing contact membership * * This api is used for updating an existing contact membership. * Required parrmeters : id of a membership * * @param Array $params an associative array of name/value property values of civicrm_membership * * @return array of updated membership property values * @access public */ function crm_update_contact_membership($params) { _crm_initialize(); if (!is_array($params)) { return _crm_error('Params is not an array'); } if (!isset($params['id'])) { return _crm_error('Required parameter missing'); } $changeFields = array('membership_start_date' => 'start_date', 'membership_end_date' => 'end_date', 'membership_source' => 'source'); foreach ($changeFields as $field => $requiredField) { if (array_key_exists($field, $params)) { $params[$requiredField] = $params[$field]; unset($params[$field]); } } require_once 'CRM/Member/BAO/Membership.php'; $membershipBAO =& new CRM_Member_BAO_Membership(); $membershipBAO->id = $params['id']; $membershipBAO->find(true); $oldStatusID = $membershipBAO->status_id; $membershipBAO->copyValues($params); $datefields = array('start_date', 'end_date', 'join_date', 'reminder_date'); //fix the dates foreach ($datefields as $value) { $membershipBAO->{$value} = CRM_Utils_Date::customFormat($membershipBAO->{$value}, '%Y%m%d'); // Handle resetting date to 'null' (which is converted to 00000 by customFormat) if ($membershipBAO->{$value} == '00000') { $membershipBAO->{$value} = 'null'; } $params[$value] = $membershipBAO->{$value}; } $membershipBAO->save(); require_once "CRM/Core/Action.php"; // Check and add membership for related contacts $relatedContacts = CRM_Member_BAO_Membership::checkMembershipRelationship($membershipBAO->id, (int) $membershipBAO->contact_id, CRM_Core_Action::UPDATE); //delete all the related membership records before creating CRM_Member_BAO_Membership::deleteRelatedMemberships($membershipBAO->id); $params['membership_type_id'] = $membershipBAO->membership_type_id; foreach ($relatedContacts as $contactId => $relationshipStatus) { if ($relationshipStatus & CRM_Contact_BAO_Relationship::CURRENT) { $params['contact_id'] = $contactId; $params['owner_membership_id'] = $membershipBAO->id; unset($params['id']); CRM_Member_BAO_Membership::create($params, CRM_Core_DAO::$_nullArray); } } // Create activity history record. require_once "CRM/Member/PseudoConstant.php"; $membershipType = CRM_Member_PseudoConstant::membershipType($membershipBAO->membership_type_id); if (!$membershipType) { $membershipType = ts('Membership'); } $activitySummary = $membershipType; if ($membershipBAO->source != 'null') { $activitySummary .= " - {$membershipBAO->source}"; } if ($membershipBAO->owner_membership_id) { $cid = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership', $membershipBAO->owner_membership_id, 'contact_id'); $displayName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $cid, 'display_name'); $activitySummary .= " (by {$displayName})"; } // create activity record only if there is change in the statusID (CRM-2521). if ($oldStatusID != $membershipBAO->status_id) { $activityParams = array('source_contact_id' => $membershipBAO->contact_id, 'source_record_id' => $membershipBAO->id, 'activity_type_id' => array_search('Membership Signup', CRM_Core_PseudoConstant::activityType()), 'subject' => $activitySummary, 'activity_date_time' => $params['join_date'], 'is_test' => $membershipBAO->is_test, 'status_id' => 2); require_once 'api/v2/Activity.php'; if (is_a(civicrm_activity_create($activityParams), 'CRM_Core_Error')) { return false; } } $membership = array(); _crm_object_to_array($membershipBAO, $membership); $membershipBAO->free(); return $membership; }
/** * Updates a note record. * * This api is used to update an existing note record. * 'id' of the note-record to be updated is the required parameter. * * @param array $params Associative array of property name/value pairs with new values to be updated with. * * @return Array of all Note property values (updated). * * @access public */ function &crm_update_note(&$params) { if (!is_array($params)) { return _crm_error('Params is not an array'); } if (!isset($params['id'])) { return _crm_error('Required parameter missing'); } $noteBAO =& new CRM_Core_BAO_Note(); $noteBAO->id = $params['id']; if ($noteBAO->find(true)) { $noteBAO->copyValues($params); if (!$params['modified_date'] && !$noteBAO->modified_date) { $noteBAO->modified_date = date("Ymd"); } } $noteBAO->save(); $note = array(); _crm_object_to_array($noteBAO, $note); return $note; }