本文整理汇总了PHP中CRM_Core_BAO_CustomField::getTableColumnGroup方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Core_BAO_CustomField::getTableColumnGroup方法的具体用法?PHP CRM_Core_BAO_CustomField::getTableColumnGroup怎么用?PHP CRM_Core_BAO_CustomField::getTableColumnGroup使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Core_BAO_CustomField
的用法示例。
在下文中一共展示了CRM_Core_BAO_CustomField::getTableColumnGroup方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: setUp
function setUp()
{
parent::setUp();
// Create Group For Individual Contact Type
$groupIndividual = array('title' => 'TestGroup For Indivi' . substr(sha1(rand()), 0, 5), 'extends' => array('Individual'), 'style' => 'Inline', 'is_active' => 1);
$this->CustomGroupIndividual = $this->customGroupCreate($groupIndividual);
$this->IndividualField = $this->customFieldCreate(array('custom_group_id' => $this->CustomGroupIndividual['id']));
// Create Group For Individual-Student Contact Sub Type
$groupIndiStudent = array('title' => 'Student Test' . substr(sha1(rand()), 0, 5), 'extends' => array('Individual', array('Student')), 'style' => 'Inline', 'is_active' => 1);
$this->CustomGroupIndiStudent = $this->customGroupCreate($groupIndiStudent);
$this->IndiStudentField = $this->customFieldCreate(array('custom_group_id' => $this->CustomGroupIndiStudent['id']));
$params = array('first_name' => 'Mathev', 'last_name' => 'Adison', 'contact_type' => 'Individual');
$this->individual = $this->individualCreate($params);
$params = array('first_name' => 'Steve', 'last_name' => 'Tosun', 'contact_type' => 'Individual', 'contact_sub_type' => 'Student');
$this->individualStudent = $this->individualCreate($params);
$params = array('first_name' => 'Mark', 'last_name' => 'Dawson', 'contact_type' => 'Individual', 'contact_sub_type' => 'Parent');
$this->individualParent = $this->individualCreate($params);
$params = array('organization_name' => 'Wellspring', 'contact_type' => 'Organization');
$this->organization = $this->organizationCreate($params);
$params = array('organization_name' => 'SubUrban', 'contact_type' => 'Organization', 'contact_sub_type' => 'Sponsor');
$this->organizationSponsor = $this->organizationCreate($params);
//refresh php cached variables
CRM_Core_PseudoConstant::flush();
CRM_Core_BAO_CustomField::getTableColumnGroup($this->IndividualField['id'], True);
CRM_Core_BAO_CustomField::getTableColumnGroup($this->IndiStudentField['id'], True);
}
示例2: civicrm_api3_pcpteams_create
/**
* File for the CiviCRM APIv3 group functions
*
* @package CiviCRM_APIv3
* @subpackage API_pcpteams
* @copyright CiviCRM LLC (c) 2004-2014
*/
function civicrm_api3_pcpteams_create($params)
{
// since we are allowing html input from the user
// we also need to purify it, so lets clean it up
// $params['pcp_title'] = $pcp['title'];
// $params['pcp_contact_id'] = $pcp['contact_id'];
$htmlFields = array('intro_text', 'page_text', 'title');
foreach ($htmlFields as $field) {
if (!empty($params[$field])) {
$params[$field] = CRM_Utils_String::purifyHTML($params[$field]);
}
}
$entity_table = CRM_PCP_BAO_PCP::getPcpEntityTable($params['page_type']);
$pcpBlock = new CRM_PCP_DAO_PCPBlock();
$pcpBlock->entity_table = $entity_table;
$pcpBlock->entity_id = $params['page_id'];
$pcpBlock->find(TRUE);
$params['pcp_block_id'] = $pcpBlock->id;
$params['goal_amount'] = CRM_Utils_Rule::cleanMoney($params['goal_amount']);
// 1 -> waiting review
// 2 -> active / approved (default for now)
$params['status_id'] = CRM_Utils_Array::value('status_id', $params, 2);
// active by default for now
$params['is_active'] = CRM_Utils_Array::value('is_active', $params, 1);
$pcp = CRM_Pcpteams_BAO_PCP::create($params, FALSE);
//Custom Set
$customFields = CRM_Core_BAO_CustomField::getFields('PCP', FALSE, FALSE, NULL, NULL, TRUE);
$isCustomValueSet = FALSE;
foreach ($customFields as $fieldID => $fieldValue) {
list($tableName, $columnName, $cgId) = CRM_Core_BAO_CustomField::getTableColumnGroup($fieldID);
if (!empty($params[$columnName]) || !empty($params["custom_{$fieldID}"])) {
$isCustomValueSet = TRUE;
//FIXME: to find out the custom value exists, set -1 as default now
$params["custom_{$fieldID}_-1"] = !empty($params[$columnName]) ? $params[$columnName] : $params["custom_{$fieldID}"];
}
}
if ($isCustomValueSet) {
$params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, $customFields, $pcp->id, 'PCP');
CRM_Core_BAO_CustomValueTable::store($params['custom'], 'civicrm_pcp', $pcp->id);
}
//end custom set
$values = array();
@_civicrm_api3_object_to_array_unique_fields($pcp, $values[$pcp->id]);
return civicrm_api3_create_success($values, $params, 'Pcpteams', 'create');
}
示例3: deleteFileReferences
/**
* A static function wrapper that deletes the various objects that are
* connected to a file object (i.e. file, entityFile and customValue
*/
public static function deleteFileReferences($fileID, $entityID, $fieldID)
{
$fileDAO = new CRM_Core_DAO_File();
$fileDAO->id = $fileID;
if (!$fileDAO->find(TRUE)) {
CRM_Core_Error::fatal();
}
// lets call a pre hook before the delete, so attachments hooks can get the info before things
// disappear
CRM_Utils_Hook::pre('delete', 'File', $fileID, $fileDAO);
// get the table and column name
list($tableName, $columnName, $groupID) = CRM_Core_BAO_CustomField::getTableColumnGroup($fieldID);
$entityFileDAO = new CRM_Core_DAO_EntityFile();
$entityFileDAO->file_id = $fileID;
$entityFileDAO->entity_id = $entityID;
$entityFileDAO->entity_table = $tableName;
if (!$entityFileDAO->find(TRUE)) {
CRM_Core_Error::fatal();
}
$entityFileDAO->delete();
$fileDAO->delete();
// also set the value to null of the table and column
$query = "UPDATE {$tableName} SET {$columnName} = null WHERE {$columnName} = %1";
$params = array(1 => array($fileID, 'Integer'));
CRM_Core_DAO::executeQuery($query, $params);
}
示例4: run
//.........这里部分代码省略.........
$errors = CRM_Profile_Form::validateContactActivityProfile($this->_activityId, $this->_id, $this->_gid);
if (!empty($errors)) {
CRM_Core_Error::fatal(array_pop($errors));
}
}
//reformat fields array
foreach ($fields as $name => $field) {
// also eliminate all formatting fields
if (CRM_Utils_Array::value('field_type', $field) == 'Formatting') {
unset($fields[$name]);
}
// make sure that there is enough permission to expose this field
if (!$admin && $field['visibility'] == 'User and User Admin Only') {
unset($fields[$name]);
}
}
if ($this->_isContactActivityProfile) {
$contactFields = $activityFields = array();
foreach ($fields as $fieldName => $field) {
if (CRM_Utils_Array::value('field_type', $field) == 'Activity') {
$activityFields[$fieldName] = $field;
} else {
$contactFields[$fieldName] = $field;
}
}
CRM_Core_BAO_UFGroup::getValues($this->_id, $contactFields, $values);
if ($this->_activityId) {
CRM_Core_BAO_UFGroup::getValues(NULL, $activityFields, $values, TRUE, array(array('activity_id', '=', $this->_activityId, 0, 0)));
}
} else {
$customWhereClause = NULL;
if ($this->_multiRecord & CRM_Core_Action::VIEW && $this->_recordId) {
if ($this->_allFields) {
$copyFields = $fields;
CRM_Core_BAO_UFGroup::shiftMultiRecordFields($copyFields, $multiRecordFields);
$fieldKey = key($multiRecordFields);
} else {
$fieldKey = key($fields);
}
if ($fieldID = CRM_Core_BAO_CustomField::getKeyID($fieldKey)) {
$tableColumnGroup = CRM_Core_BAO_CustomField::getTableColumnGroup($fieldID);
$columnName = "{$tableColumnGroup[0]}.id";
$customWhereClause = $columnName . ' = ' . $this->_recordId;
}
}
CRM_Core_BAO_UFGroup::getValues($this->_id, $fields, $values, TRUE, NULL, FALSE, $customWhereClause);
}
// $profileFields array can be used for customized display of field labels and values in Profile/View.tpl
$profileFields = array();
$labels = array();
foreach ($fields as $name => $field) {
//CRM-14338
// Create a unique, non-empty index for each field.
$index = $field['title'];
if ($index === '') {
$index = ' ';
}
while (array_key_exists($index, $labels)) {
$index .= ' ';
}
$labels[$index] = preg_replace('/\\s+|\\W+/', '_', $name);
}
foreach ($values as $title => $value) {
$profileFields[$labels[$title]] = array('label' => $title, 'value' => $value);
}
$template->assign_by_ref('row', $values);
$template->assign_by_ref('profileFields', $profileFields);
}
$name = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $this->_gid, 'name');
$this->assign('ufGroupName', $name);
CRM_Utils_Hook::viewProfile($name);
if (strtolower($name) == 'summary_overlay') {
$template->assign('overlayProfile', TRUE);
}
if ($this->_multiRecord & CRM_Core_Action::VIEW && $this->_recordId && !$this->_allFields) {
$fieldDetail = reset($fields);
$fieldId = CRM_Core_BAO_CustomField::getKeyID($fieldDetail['name']);
$customGroupDetails = CRM_Core_BAO_CustomGroup::getGroupTitles(array($fieldId));
$multiRecTitle = $customGroupDetails[$fieldId]['groupTitle'];
} else {
$title = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $this->_gid, 'title');
}
//CRM-4131.
$displayName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $this->_id, 'display_name');
if ($displayName) {
$session = CRM_Core_Session::singleton();
$config = CRM_Core_Config::singleton();
if ($session->get('userID') && CRM_Core_Permission::check('access CiviCRM') && CRM_Contact_BAO_Contact_Permission::allow($session->get('userID'), CRM_Core_Permission::VIEW) && !$config->userFrameworkFrontend) {
$contactViewUrl = CRM_Utils_System::url('civicrm/contact/view', "action=view&reset=1&cid={$this->_id}", TRUE);
$this->assign('displayName', $displayName);
$displayName = "<a href=\"{$contactViewUrl}\">{$displayName}</a>";
}
$title .= ' - ' . $displayName;
}
$title = isset($multiRecTitle) ? ts('View %1 Record', array(1 => $multiRecTitle)) : $title;
CRM_Utils_System::setTitle($title);
// invoke the pagRun hook, CRM-3906
CRM_Utils_Hook::pageRun($this);
return trim($template->fetch($this->getHookedTemplateFileName()));
}
示例5: delete
public function delete($useWhere = FALSE)
{
list($fileID, $entityID, $fieldID) = func_get_args();
// get the table and column name
list($tableName, $columnName, $groupID) = CRM_Core_BAO_CustomField::getTableColumnGroup($fieldID);
$entityFileDAO = new CRM_Core_DAO_EntityFile();
$entityFileDAO->file_id = $fileID;
$entityFileDAO->entity_id = $entityID;
$entityFileDAO->entity_table = $tableName;
if ($entityFileDAO->find(TRUE)) {
$entityFileDAO->delete();
} else {
CRM_Core_Error::fatal();
}
$fileDAO = new CRM_Core_DAO_File();
$fileDAO->id = $fileID;
if ($fileDAO->find(TRUE)) {
$fileDAO->delete();
} else {
CRM_Core_Error::fatal();
}
// also set the value to null of the table and column
$query = "UPDATE {$tableName} SET {$columnName} = null WHERE {$columnName} = %1";
$params = array(1 => array($fileID, 'Integer'));
CRM_Core_DAO::executeQuery($query, $params);
}
示例6: exportDAO
function exportDAO($object, $objectName, $additional = null)
{
$dbFields =& $object->fields();
$xml = " <{$objectName}>";
foreach ($dbFields as $name => $dontCare) {
// ignore all ids
if ($name == 'id' || substr($name, -3, 3) == '_id') {
continue;
}
if (isset($object->{$name}) && $object->{$name} !== null) {
// hack for extends_entity_column_value
if ($name == 'extends_entity_column_value') {
if ($object->extends == 'Event' || $object->extends == 'Activity') {
$key = $object->extends == 'Event' ? 'event_type' : 'activity_type';
$xml .= "\n <extends_entity_column_value_option_group>{$key}</extends_entity_column_value_option_group>";
$types = explode(CRM_Core_DAO::VALUE_SEPARATOR, substr($object->{$name}, 1, -1));
$value = array();
foreach ($types as $type) {
$values[] = $this->_xml['optionValue']['map']["{$key}.{$type}"];
}
$value = implode(',', $values);
$xml .= "\n <extends_entity_column_value_option_value>{$value}</extends_entity_column_value_option_value>";
} else {
echo "This extension: {$object->extends} is not yet handled";
exit;
}
}
if ($name == 'field_name') {
$value = $object->{$name};
if (substr($value, 0, 7) == 'custom_') {
// hack for profile field_name
$cfID = substr($value, 7);
require_once 'CRM/Core/BAO/CustomField.php';
list($tableName, $columnName, $groupID) = CRM_Core_BAO_CustomField::getTableColumnGroup($cfID);
$value = "custom.{$tableName}.{$columnName}";
}
$xml .= "\n <{$name}>{$value}</{$name}>";
} else {
$value = str_replace(CRM_Core_DAO::VALUE_SEPARATOR, ":;:;:;", $object->{$name});
$xml .= "\n <{$name}>{$value}</{$name}>";
}
}
}
if ($additional) {
$xml .= $additional;
}
$xml .= "\n </{$objectName}>\n";
return $xml;
}
示例7: moveAllBelongings
//.........这里部分代码省略.........
$submitted[$key] = CRM_Core_DAO::VALUE_SEPARATOR . implode(CRM_Core_DAO::VALUE_SEPARATOR, $mergeValue) . CRM_Core_DAO::VALUE_SEPARATOR;
} else {
$submitted[$key] = $mergeValue;
}
}
} elseif (in_array($htmlType, array('Multi-Select Country', 'Multi-Select State/Province'))) {
//we require submitted values should be in array format
if ($value) {
$mergeValueArray = explode(CRM_Core_DAO::VALUE_SEPARATOR, $value);
//hack to remove null values from array.
$mergeValue = array();
foreach ($mergeValueArray as $k => $v) {
if ($v != '') {
$mergeValue[] = $v;
}
}
$submitted[$key] = $mergeValue;
}
}
break;
default:
break;
}
}
}
// **** Do file custom fields related migrations
// FIXME: move this someplace else (one of the BAOs) after discussing
// where to, and whether CRM_Core_BAO_File::deleteFileReferences() shouldn't actually,
// like, delete a file...
if (!isset($customFiles)) {
$customFiles = array();
}
foreach ($customFiles as $customId) {
list($tableName, $columnName, $groupID) = CRM_Core_BAO_CustomField::getTableColumnGroup($customId);
// get the contact_id -> file_id mapping
$fileIds = array();
$sql = "SELECT entity_id, {$columnName} AS file_id FROM {$tableName} WHERE entity_id IN ({$mainId}, {$otherId})";
$dao = CRM_Core_DAO::executeQuery($sql, CRM_Core_DAO::$_nullArray);
while ($dao->fetch()) {
$fileIds[$dao->entity_id] = $dao->file_id;
}
$dao->free();
// delete the main contact's file
if (!empty($fileIds[$mainId])) {
CRM_Core_BAO_File::deleteFileReferences($fileIds[$mainId], $mainId, $customId);
}
// move the other contact's file to main contact
//NYSS need to INSERT or UPDATE depending on whether main contact has an existing record
if (CRM_Core_DAO::singleValueQuery("SELECT id FROM {$tableName} WHERE entity_id = {$mainId}")) {
$sql = "UPDATE {$tableName} SET {$columnName} = {$fileIds[$otherId]} WHERE entity_id = {$mainId}";
} else {
$sql = "INSERT INTO {$tableName} ( entity_id, {$columnName} ) VALUES ( {$mainId}, {$fileIds[$otherId]} )";
}
CRM_Core_DAO::executeQuery($sql, CRM_Core_DAO::$_nullArray);
if (CRM_Core_DAO::singleValueQuery("\n SELECT id\n FROM civicrm_entity_file\n WHERE entity_table = '{$tableName}' AND file_id = {$fileIds[$otherId]}")) {
$sql = "\n UPDATE civicrm_entity_file\n SET entity_id = {$mainId}\n WHERE entity_table = '{$tableName}' AND file_id = {$fileIds[$otherId]}";
} else {
$sql = "\n INSERT INTO civicrm_entity_file ( entity_table, entity_id, file_id )\n VALUES ( '{$tableName}', {$mainId}, {$fileIds[$otherId]} )";
}
CRM_Core_DAO::executeQuery($sql, CRM_Core_DAO::$_nullArray);
}
// move view only custom fields CRM-5362
$viewOnlyCustomFields = array();
foreach ($submitted as $key => $value) {
$fid = (int) substr($key, 7);
if (array_key_exists($fid, $cFields) && !empty($cFields[$fid]['attributes']['is_view'])) {
示例8: delete
public function delete($fileID, $entityID, $fieldID)
{
// get the table and column name
require_once 'CRM/Core/BAO/CustomField.php';
list($tableName, $columnName, $groupID) = CRM_Core_BAO_CustomField::getTableColumnGroup($fieldID);
require_once "CRM/Core/DAO/EntityFile.php";
$entityFileDAO =& new CRM_Core_DAO_EntityFile();
$entityFileDAO->file_id = $fileID;
$entityFileDAO->entity_id = $entityID;
$entityFileDAO->entity_table = $tableName;
if ($entityFileDAO->find(true)) {
$entityFileDAO->delete();
} else {
CRM_Core_Error::fatal();
}
require_once "CRM/Core/DAO/File.php";
$fileDAO =& new CRM_Core_DAO_File();
$fileDAO->id = $fileID;
if ($fileDAO->find(true)) {
$fileDAO->delete();
} else {
CRM_Core_Error::fatal();
}
// also set the value to null of the table and column
$query = "UPDATE {$tableName} SET {$columnName} = null WHERE {$columnName} = %1";
$params = array(1 => array($fileID, 'Integer'));
CRM_Core_DAO::executeQuery($query, $params);
}
示例9: customFieldCreate
/**
* Create custom field.
*
* @param array $params
* (custom_group_id) is required.
* @return array
*/
public function customFieldCreate($params)
{
$params = array_merge(array('label' => 'Custom Field', 'data_type' => 'String', 'html_type' => 'Text', 'is_searchable' => 1, 'is_active' => 1, 'default_value' => 'defaultValue'), $params);
$result = $this->callAPISuccess('custom_field', 'create', $params);
// these 2 functions are called with force to flush static caches
CRM_Core_BAO_CustomField::getTableColumnGroup($result['id'], 1);
CRM_Core_Component::getEnabledComponents(1);
return $result;
}
示例10: exportDAO
/**
* @param string $objectName
* Business-entity/xml-tag name.
* @param CRM_Core_DAO $object
* @param $mappedFields
*
* @return array
*/
public function exportDAO($objectName, $object, $mappedFields)
{
$dbFields =& $object->fields();
// Filter the list of keys and values so that we only export interesting stuff
$keyValues = array();
foreach ($dbFields as $name => $dontCare) {
// ignore all ids
if ($name == 'id' || substr($name, -3, 3) == '_id') {
continue;
}
if (isset($object->{$name}) && $object->{$name} !== NULL) {
// hack for extends_entity_column_value
if ($name == 'extends_entity_column_value') {
if (in_array($object->extends, array('Event', 'Activity', 'Relationship', 'Individual', 'Organization', 'Household', 'Case'))) {
if ($object->extends == 'Event') {
$key = 'event_type';
} elseif ($object->extends == 'Activity') {
$key = 'activity_type';
} elseif ($object->extends == 'Relationship') {
$key = 'relationship_type';
} elseif ($object->extends == 'Case') {
$key = 'case_type';
}
$types = explode(CRM_Core_DAO::VALUE_SEPARATOR, substr($object->{$name}, 1, -1));
$values = array();
if (in_array($object->extends, array('Individual', 'Organization', 'Household'))) {
$key = 'contact_type';
$values = $types;
} else {
foreach ($types as $type) {
if (in_array($key, array('activity_type', 'event_type', 'case_type'))) {
$ogID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', $key, 'id', 'name');
$ovParams = array('option_group_id' => $ogID, 'value' => $type);
CRM_Core_BAO_OptionValue::retrieve($ovParams, $oValue);
$values[] = $oValue['name'];
} else {
$relTypeName = CRM_Core_DAO::getFieldValue('CRM_Contact_BAO_RelationshipType', $type, 'name_a_b', 'id');
$values[] = $relTypeName;
}
}
}
$keyValues['extends_entity_column_value_option_group'] = $key;
$value = implode(',', $values);
$object->extends_entity_column_value = $value;
} else {
echo "This extension: {$object->extends} is not yet handled";
exit;
}
}
$value = $object->{$name};
if ($name == 'field_name') {
// hack for profile field_name
if (substr($value, 0, 7) == 'custom_') {
$cfID = substr($value, 7);
list($tableName, $columnName, $groupID) = CRM_Core_BAO_CustomField::getTableColumnGroup($cfID);
$value = "custom.{$tableName}.{$columnName}";
}
}
$keyValues[$name] = $value;
}
}
$keyValues += $this->computeMappedFields($mappedFields, $object);
return $keyValues;
}
示例11: _civicrm_api3_attachment_parse_params
/**
* Attachment parsing helper.
*
* @param array $params
*
* @return array
* (0 => int $id, 1 => array $file, 2 => array $entityFile, 3 => string $name, 4 => string $content,
* 5 => string $moveFile, 6 => $isTrusted, 7 => bool $returnContent)
* - array $file: whitelisted fields that can pass through directly to civicrm_file
* - array $entityFile: whitelisted fields that can pass through directly to civicrm_entity_file
* - string $name: the printable name
* - string $moveFile: the full path to a local file whose content should be loaded
* - bool $isTrusted: whether we trust the requester to do sketchy things (like moving files or reassigning entities)
* - bool $returnContent: whether we are expected to return the full content of the file
* @throws API_Exception validation errors
*/
function _civicrm_api3_attachment_parse_params($params)
{
$id = CRM_Utils_Array::value('id', $params, NULL);
if ($id && !is_numeric($id)) {
throw new API_Exception("Malformed id");
}
$file = array();
foreach (array('mime_type', 'description', 'upload_date') as $field) {
if (array_key_exists($field, $params)) {
$file[$field] = $params[$field];
}
}
$entityFile = array();
foreach (array('entity_table', 'entity_id') as $field) {
if (array_key_exists($field, $params)) {
$entityFile[$field] = $params[$field];
}
}
if (empty($params['entity_table']) && isset($params['field_name'])) {
$tableInfo = CRM_Core_BAO_CustomField::getTableColumnGroup(intval(str_replace('custom_', '', $params['field_name'])));
$entityFile['entity_table'] = $tableInfo[0];
}
$name = NULL;
if (array_key_exists('name', $params)) {
if ($params['name'] != basename($params['name']) || preg_match(':[/\\\\]:', $params['name'])) {
throw new API_Exception('Malformed name');
}
$name = $params['name'];
}
$content = NULL;
if (isset($params['content'])) {
$content = $params['content'];
}
$moveFile = NULL;
if (isset($params['options']['move-file'])) {
$moveFile = $params['options']['move-file'];
} elseif (isset($params['options.move-file'])) {
$moveFile = $params['options.move-file'];
}
$isTrusted = empty($params['check_permissions']);
$returns = isset($params['return']) ? $params['return'] : array();
$returns = is_array($returns) ? $returns : array($returns);
$returnContent = in_array('content', $returns);
return array($id, $file, $entityFile, $name, $content, $moveFile, $isTrusted, $returnContent);
}
示例12: postProcess
//.........这里部分代码省略.........
case 'Multi-Select Country':
case 'Multi-Select State/Province':
// Merge values from both contacts for multivalue fields, CRM-4385
// get the existing custom values from db.
require_once 'CRM/Core/BAO/CustomValueTable.php';
$customParams = array('entityID' => $this->_cid, $key => true);
$customfieldValues = CRM_Core_BAO_CustomValueTable::getValues($customParams);
if (CRM_Utils_array::value($key, $customfieldValues)) {
$existingValue = explode(CRM_Core_DAO::VALUE_SEPARATOR, $customfieldValues[$key]);
if (is_array($existingValue) && !empty($existingValue)) {
$mergeValue = $submmtedCustomValue = array();
if ($value) {
$submmtedCustomValue = explode(CRM_Core_DAO::VALUE_SEPARATOR, $value);
}
//hack to remove null and duplicate values from array.
foreach (array_merge($submmtedCustomValue, $existingValue) as $k => $v) {
if ($v != '' && !in_array($v, $mergeValue)) {
$mergeValue[] = $v;
}
}
//keep state and country as array format.
//for checkbox and m-select format w/ VALUE_SEPERATOR
if (in_array($htmlType, array('CheckBox', 'Multi-Select', 'AdvMulti-Select'))) {
$submitted[$key] = CRM_Core_BAO_CustomOption::VALUE_SEPERATOR . implode(CRM_Core_BAO_CustomOption::VALUE_SEPERATOR, $mergeValue) . CRM_Core_BAO_CustomOption::VALUE_SEPERATOR;
} else {
$submitted[$key] = $mergeValue;
}
}
} else {
if (in_array($htmlType, array('Multi-Select Country', 'Multi-Select State/Province'))) {
//we require submitted values should be in array format
if ($value) {
$mergeValueArray = explode(CRM_Core_DAO::VALUE_SEPARATOR, $value);
//hack to remove null values from array.
$mergeValue = array();
foreach ($mergeValueArray as $k => $v) {
if ($v != '') {
$mergeValue[] = $v;
}
}
$submitted[$key] = $mergeValue;
}
}
}
break;
default:
break;
}
}
}
// handle the related tables
if (isset($moveTables)) {
CRM_Dedupe_Merger::moveContactBelongings($this->_cid, $this->_oid, $moveTables);
}
// move file custom fields
// FIXME: move this someplace else (one of the BAOs) after discussing
// where to, and whether CRM_Core_BAO_File::delete() shouldn't actually,
// like, delete a file...
require_once 'CRM/Core/BAO/File.php';
require_once 'CRM/Core/DAO/CustomField.php';
require_once 'CRM/Core/DAO/CustomGroup.php';
require_once 'CRM/Core/DAO/EntityFile.php';
require_once 'CRM/Core/Config.php';
if (!isset($customFiles)) {
$customFiles = array();
}
foreach ($customFiles as $customId) {
list($tableName, $columnName, $groupID) = CRM_Core_BAO_CustomField::getTableColumnGroup($customId);
// get the contact_id -> file_id mapping
$fileIds = array();
$sql = "SELECT entity_id, {$columnName} AS file_id FROM {$tableName} WHERE entity_id IN ({$this->_cid}, {$this->_oid})";
$dao =& CRM_Core_DAO::executeQuery($sql, CRM_Core_DAO::$_nullArray);
while ($dao->fetch()) {
$fileIds[$dao->entity_id] = $dao->file_id;
}
$dao->free();
// delete the main contact's file
CRM_Core_BAO_File::delete($fileIds[$this->_cid], $this->_cid, $customId);
// move the other contact's file to main contact
$sql = "UPDATE {$tableName} SET {$columnName} = {$fileIds[$this->_oid]} WHERE entity_id = {$this->_cid}";
CRM_Core_DAO::executeQuery($sql, CRM_Core_DAO::$_nullArray);
$sql = "UPDATE civicrm_entity_file SET entity_id = {$this->_cid} WHERE entity_table = '{$tableName}' AND file_id = {$fileIds[$this->_oid]}";
CRM_Core_DAO::executeQuery($sql, CRM_Core_DAO::$_nullArray);
}
// move other's belongings and delete the other contact
CRM_Dedupe_Merger::moveContactBelongings($this->_cid, $this->_oid);
$otherParams = array('contact_id' => $this->_oid);
if (CRM_Core_Permission::check('delete contacts')) {
civicrm_contact_delete($otherParams);
} else {
CRM_Core_Session::setStatus(ts('Do not have sufficient permission to delete duplicate contact.'));
}
if (isset($submitted)) {
$submitted['contact_id'] = $this->_cid;
CRM_Contact_BAO_Contact::createProfileContact($submitted, CRM_Core_DAO::$_nullArray, $this->_cid);
}
CRM_Core_Session::setStatus(ts('The contacts have been merged.'));
$url = CRM_Utils_System::url('civicrm/contact/view', "reset=1&cid={$this->_cid}");
CRM_Utils_System::redirect($url);
}
示例13: customFieldCreate
/**
* Function to create custom field
*
* @param array $params (custom_group_id) is required
* @return array|int
* @internal param string $name name of custom field
* @internal param int $apiversion API version to use
*/
function customFieldCreate($params)
{
$params = array_merge(array('label' => 'Custom Field', 'data_type' => 'String', 'html_type' => 'Text', 'is_searchable' => 1, 'is_active' => 1, 'default_value' => 'defaultValue'), $params);
$result = $this->callAPISuccess('custom_field', 'create', $params);
if ($result['is_error'] == 0 && isset($result['id'])) {
CRM_Core_BAO_CustomField::getTableColumnGroup($result['id'], 1);
// force reset of enabled components to help grab custom fields
CRM_Core_Component::getEnabledComponents(1);
return $result;
}
}
示例14: moveAllBelongings
//.........这里部分代码省略.........
} else {
$submitted[$key] = $mergeValue;
}
}
}
} elseif (in_array($htmlType, array('Multi-Select Country', 'Multi-Select State/Province'))) {
//we require submitted values should be in array format
if ($value) {
$mergeValueArray = explode(CRM_Core_DAO::VALUE_SEPARATOR, $value);
//hack to remove null values from array.
$mergeValue = array();
foreach ($mergeValueArray as $k => $v) {
if ($v != '') {
$mergeValue[] = $v;
}
}
$submitted[$key] = $mergeValue;
}
}
break;
default:
break;
}
}
}
// **** Do file custom fields related migrations
// FIXME: move this someplace else (one of the BAOs) after discussing
// where to, and whether CRM_Core_BAO_File::deleteFileReferences() shouldn't actually,
// like, delete a file...
if (!isset($customFiles)) {
$customFiles = array();
}
foreach ($customFiles as $customId) {
list($tableName, $columnName, $groupID) = CRM_Core_BAO_CustomField::getTableColumnGroup($customId);
// get the contact_id -> file_id mapping
$fileIds = array();
$sql = "SELECT entity_id, {$columnName} AS file_id FROM {$tableName} WHERE entity_id IN ({$mainId}, {$otherId})";
$dao = CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
$fileIds[$dao->entity_id] = $dao->file_id;
}
$dao->free();
// delete the main contact's file
if (!empty($fileIds[$mainId])) {
CRM_Core_BAO_File::deleteFileReferences($fileIds[$mainId], $mainId, $customId);
}
// move the other contact's file to main contact
//NYSS need to INSERT or UPDATE depending on whether main contact has an existing record
if (CRM_Core_DAO::singleValueQuery("SELECT id FROM {$tableName} WHERE entity_id = {$mainId}")) {
$sql = "UPDATE {$tableName} SET {$columnName} = {$fileIds[$otherId]} WHERE entity_id = {$mainId}";
} else {
$sql = "INSERT INTO {$tableName} ( entity_id, {$columnName} ) VALUES ( {$mainId}, {$fileIds[$otherId]} )";
}
CRM_Core_DAO::executeQuery($sql);
if (CRM_Core_DAO::singleValueQuery("\n SELECT id\n FROM civicrm_entity_file\n WHERE entity_table = '{$tableName}' AND file_id = {$fileIds[$otherId]}")) {
$sql = "\n UPDATE civicrm_entity_file\n SET entity_id = {$mainId}\n WHERE entity_table = '{$tableName}' AND file_id = {$fileIds[$otherId]}";
} else {
$sql = "\n INSERT INTO civicrm_entity_file ( entity_table, entity_id, file_id )\n VALUES ( '{$tableName}', {$mainId}, {$fileIds[$otherId]} )";
}
CRM_Core_DAO::executeQuery($sql);
}
// move view only custom fields CRM-5362
$viewOnlyCustomFields = array();
foreach ($submitted as $key => $value) {
$fid = (int) substr($key, 7);
if (array_key_exists($fid, $cFields) && !empty($cFields[$fid]['attributes']['is_view'])) {