Esempio n. 1
0
 function createField($params, $fields = null)
 {
     if (empty($params)) {
         $params = array('custom_group_id' => $fields['groupId'], 'label' => 'test_' . $fields['dataType'], 'html_type' => $fields['htmlType'], 'data_type' => $fields['dataType'], 'weight' => 4, 'is_required' => 1, 'is_searchable' => 0, 'is_active' => 1);
     }
     $customFieldBAO =& new CRM_Core_BAO_CustomField();
     $customFieldBAO->copyValues($params);
     $customField = $customFieldBAO->save();
     $customFieldBAO->column_name = 'test_' . $params['data_type'] . '_' . $customField->id;
     $customFieldObject = $customFieldBAO;
     $customField = $customFieldBAO->save();
     require_once 'CRM/Core/BAO/CustomField.php';
     $createField = CRM_Core_BAO_CustomField::createField($customFieldObject, 'add');
     return $customField;
 }
Esempio n. 2
0
 /**
  * @param $xml
  * @param $idMap
  */
 public function customFields(&$xml, &$idMap)
 {
     // Re-index by group id so we can build out the custom fields one table
     // at a time, and then rebuild the table triggers at the end, rather than
     // rebuilding the table triggers after each field is added (which is
     // painfully slow).
     $fields_indexed_by_group_id = array();
     foreach ($xml->CustomFields as $customFieldsXML) {
         $total = count($customFieldsXML->CustomField);
         foreach ($customFieldsXML->CustomField as $customFieldXML) {
             $id = $idMap['custom_group'][(string) $customFieldXML->custom_group_name];
             $fields_indexed_by_group_id[$id][] = $customFieldXML;
         }
     }
     while (list($group_id, $fields) = each($fields_indexed_by_group_id)) {
         $total = count($fields);
         $count = 0;
         while (list(, $customFieldXML) = each($fields)) {
             $count++;
             $customField = new CRM_Core_DAO_CustomField();
             $customField->custom_group_id = $group_id;
             $skipStore = FALSE;
             if (!$this->copyData($customField, $customFieldXML, FALSE, 'label')) {
                 $skipStore = TRUE;
             }
             if (empty($customField->option_group_id) && isset($customFieldXML->option_group_name)) {
                 $customField->option_group_id = $idMap['option_group'][(string) $customFieldXML->option_group_name];
             }
             if ($skipStore) {
                 continue;
             }
             $customField->save();
             // Only rebuild the table's trigger on the last field added to avoid un-necessary
             // and slow rebuilds when adding many fields at the same time.
             $triggerRebuild = FALSE;
             if ($count == $total) {
                 $triggerRebuild = TRUE;
             }
             $indexExist = FALSE;
             CRM_Core_BAO_CustomField::createField($customField, 'add', $indexExist, $triggerRebuild);
         }
     }
 }
Esempio n. 3
0
 function customFields(&$xml, &$idMap)
 {
     require_once 'CRM/Core/BAO/CustomField.php';
     foreach ($xml->CustomFields as $customFieldsXML) {
         foreach ($customFieldsXML->CustomField as $customFieldXML) {
             $customField = new CRM_Core_DAO_CustomField();
             $customField->custom_group_id = $idMap['custom_group'][(string) $customFieldXML->custom_group_name];
             $skipStore = false;
             if (!$this->copyData($customField, $customFieldXML, false, 'label')) {
                 $skipStore = true;
             }
             if (empty($customField->option_group_id) && isset($customFieldXML->option_group_name)) {
                 $customField->option_group_id = $idMap['option_group'][(string) $customFieldXML->option_group_name];
             }
             if ($skipStore) {
                 continue;
             }
             $customField->save();
             CRM_Core_BAO_CustomField::createField($customField, 'add');
         }
     }
 }
Esempio n. 4
0
 /**
  *  Test civicrm_activity_get() with a good activity ID which
  *  has associated custom data
  */
 function testActivityGetGoodIDCustom()
 {
     //  Insert rows in civicrm_activity creating activities 4 and
     //  13
     $op = new PHPUnit_Extensions_Database_Operation_Insert();
     $op->execute($this->_dbconn, new PHPUnit_Extensions_Database_DataSet_XMLDataSet(dirname(__FILE__) . '/dataset/activity_4_13.xml'));
     //  Insert rows in civicrm_custom_group and civicrm_custom_field
     //  creating Activity Custom to extend activity type 5
     $op = new PHPUnit_Extensions_Database_Operation_Insert();
     $op->execute($this->_dbconn, new PHPUnit_Extensions_Database_DataSet_FlatXMLDataSet(dirname(__FILE__) . '/dataset/custom_group_activity_type_5.xml'));
     //  Drop and create table civicrm_value_activity_custom_9
     $query = 'DROP TABLE IF EXISTS civicrm_value_activity_custom_9';
     AllTests::$utils->do_query($query);
     $group = new CRM_Core_DAO_CustomGroup();
     $group->extends = "Activity";
     $group->table_name = 'civicrm_value_activity_custom_9';
     $group->is_multiple = 0;
     $group->is_active = 1;
     CRM_Core_BAO_CustomGroup::createTable($group);
     //  Add column activity_custom_11 to the custom table
     $customField =& new CRM_Core_DAO_CustomField();
     $customField->column_name = 'activity_custom_11';
     $customField->custom_group_id = 9;
     $customField->is_required = 0;
     $customField->is_active = 1;
     $customField->data_type = 'String';
     $customField->text_length = 255;
     CRM_Core_BAO_CustomField::createField($customField, 'add');
     //  Insert a test value into the new table
     $query = "INSERT INTO civicrm_value_activity_custom_9" . "( entity_id, activity_custom_11 )" . " VALUES ( 4,  'bite my test data' )";
     AllTests::$utils->do_query($query);
     //  Retrieve the test value
     $params = array('activity_id' => 4, 'activity_type_id' => 5);
     $result = civicrm_activity_get($params, true);
     $this->assertEquals(0, $result['is_error'], "Error message: " . $result['error_message']);
     $this->assertEquals(4, $result['result']['id'], 'In line ' . __LINE__);
     $this->assertEquals(17, $result['result']['source_contact_id'], 'In line ' . __LINE__);
     $this->assertEquals(5, $result['result']['activity_type_id'], 'In line ' . __LINE__);
     $this->assertEquals('test activity type id', $result['result']['subject'], 'In line ' . __LINE__);
     $this->assertEquals('bite my test data', $result['result']['custom_11_1'], 'In line ' . __LINE__);
 }
Esempio n. 5
0
 function customFields(&$xml, &$idMap)
 {
     require_once 'CRM/Core/BAO/CustomField.php';
     foreach ($xml->CustomFields as $customFieldsXML) {
         foreach ($customFieldsXML->CustomField as $customFieldXML) {
             $customField = new CRM_Core_DAO_CustomField();
             $this->copyData($customField, $customFieldXML, false);
             $customField->custom_group_id = $idMap['custom_group'][(string) $customFieldXML->custom_group_title];
             if (isset($customFieldXML->option_group_label)) {
                 $customField->option_group_id = $idMap['option_group'][(string) $customFieldXML->option_group_label];
             }
             $customField->save();
             // fix column name
             $customField->table_name = strtolower(CRM_Utils_String::munge($customField->label, '_', 32)) . "_{$customField->id}";
             $customField->save();
             CRM_Core_BAO_CustomField::createField($customField, 'add');
         }
     }
 }