Beispiel #1
0
/**
 * 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;
}
Beispiel #2
0
/**
 * 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;
}
Beispiel #3
0
/**
 * 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;
}
Beispiel #4
0
/**
 * 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;
}