当前位置: 首页>>代码示例>>PHP>>正文


PHP CRM_Core_DAO::acceptedSQLOperators方法代码示例

本文整理汇总了PHP中CRM_Core_DAO::acceptedSQLOperators方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Core_DAO::acceptedSQLOperators方法的具体用法?PHP CRM_Core_DAO::acceptedSQLOperators怎么用?PHP CRM_Core_DAO::acceptedSQLOperators使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CRM_Core_DAO的用法示例。


在下文中一共展示了CRM_Core_DAO::acceptedSQLOperators方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: run

 /**
  * @return string
  */
 function run()
 {
     CRM_Utils_System::setTitle(ts('API explorer and generator'));
     CRM_Core_Resources::singleton()->addScriptFile('civicrm', 'templates/CRM/Admin/Page/APIExplorer.js')->addScriptUrl('//cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js', 99)->addStyleUrl('//cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css', 99);
     $this->assign('operators', CRM_Core_DAO::acceptedSQLOperators());
     return parent::run();
 }
开发者ID:prashantgajare,项目名称:civicrm-core,代码行数:10,代码来源:APIExplorer.php

示例2: addWhere

 /**
  * @param string $field
  * @param string $op
  * @param mixed $value
  * @return $this
  * @throws \API_Exception
  */
 public function addWhere($field, $op, $value)
 {
     if (!in_array($op, \CRM_Core_DAO::acceptedSQLOperators())) {
         throw new \API_Exception('Unsupported operator');
     }
     $this->where[$field] = array($op => $value);
     return $this;
 }
开发者ID:civicrm,项目名称:api4,代码行数:15,代码来源:Get.php

示例3: run

 /**
  * Run page.
  *
  * @return string
  */
 public function run()
 {
     CRM_Core_Resources::singleton()->addScriptFile('civicrm', 'templates/CRM/Admin/Page/APIExplorer.js')->addScriptFile('civicrm', 'bower_components/google-code-prettify/bin/prettify.min.js', 99)->addStyleFile('civicrm', 'bower_components/google-code-prettify/bin/prettify.min.css', 99)->addVars('explorer', array('max_joins' => \Civi\API\SelectQuery::MAX_JOINS));
     $this->assign('operators', CRM_Core_DAO::acceptedSQLOperators());
     // List example directories
     $examples = array();
     foreach (scandir(\Civi::paths()->getPath('[civicrm.root]/api/v3/examples')) as $item) {
         if ($item && strpos($item, '.') === FALSE) {
             $examples[] = $item;
         }
     }
     $this->assign('examples', $examples);
     return parent::run();
 }
开发者ID:konadave,项目名称:civicrm-core,代码行数:19,代码来源:APIExplorer.php

示例4: run

 /**
  * @return string
  */
 public function run()
 {
     CRM_Core_Resources::singleton()->addScriptFile('civicrm', 'templates/CRM/Admin/Page/APIExplorer.js')->addScriptFile('civicrm', 'bower_components/google-code-prettify/bin/prettify.min.js', 99)->addStyleFile('civicrm', 'bower_components/google-code-prettify/bin/prettify.min.css', 99);
     $this->assign('operators', CRM_Core_DAO::acceptedSQLOperators());
     // List example directories
     global $civicrm_root;
     $examples = array();
     foreach (scandir(CRM_Utils_file::addTrailingSlash($civicrm_root, '/') . 'api/v3/examples') as $item) {
         if ($item && strpos($item, '.') === FALSE) {
             $examples[] = $item;
         }
     }
     $this->assign('examples', $examples);
     return parent::run();
 }
开发者ID:rajeshrhino,项目名称:civicrm-core,代码行数:18,代码来源:APIExplorer.php

示例5: whereClauseSingle

 /**
  * @param $values
  * @param $query
  */
 public static function whereClauseSingle(&$values, &$query)
 {
     list($name, $op, $value, $grouping, $wildcard) = $values;
     switch ($name) {
         case 'pledge_create_date_low':
         case 'pledge_create_date_high':
             // process to / from date
             $query->dateQueryBuilder($values, 'civicrm_pledge', 'pledge_create_date', 'create_date', 'Pledge Made');
         case 'pledge_start_date_low':
         case 'pledge_start_date_high':
             // process to / from date
             $query->dateQueryBuilder($values, 'civicrm_pledge', 'pledge_start_date', 'start_date', 'Pledge Start Date');
             return;
         case 'pledge_end_date_low':
         case 'pledge_end_date_high':
             // process to / from date
             $query->dateQueryBuilder($values, 'civicrm_pledge', 'pledge_end_date', 'end_date', 'Pledge End Date');
             return;
         case 'pledge_payment_date_low':
         case 'pledge_payment_date_high':
             // process to / from date
             $query->dateQueryBuilder($values, 'civicrm_pledge_payment', 'pledge_payment_date', 'scheduled_date', 'Payment Scheduled');
             return;
         case 'pledge_amount':
         case 'pledge_amount_low':
         case 'pledge_amount_high':
             // process min/max amount
             $query->numberRangeBuilder($values, 'civicrm_pledge', 'pledge_amount', 'amount', 'Pledge Amount');
             return;
         case 'pledge_payment_status_id':
         case 'pledge_status_id':
             if ($name == 'pledge_status_id') {
                 $tableName = 'civicrm_pledge';
                 $query->_tables['civicrm_pledge'] = $query->_whereTables['civicrm_pledge'] = 1;
                 $label = "Pledge Status";
             } else {
                 $tableName = 'civicrm_pledge_payment';
                 $query->_tables['civicrm_pledge_payment'] = $query->_whereTables['civicrm_pledge_payment'] = 1;
                 $label = "Pledge Payment Status";
             }
             $name = 'status_id';
             if (!empty($value) && is_array($value) && !in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
                 $value = array('IN' => $value);
             }
             $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("{$tableName}.{$name}", $op, $value, 'Integer');
             list($qillop, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_Contribution', 'contribution_status_id', $value, $op);
             $query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $label, 2 => $qillop, 3 => $qillVal));
             return;
         case 'pledge_test':
         case 'pledge_is_test':
             // We dont want to include all tests for sql OR CRM-7827
             if (!$value || $query->getOperator() != 'OR') {
                 $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_pledge.is_test', $op, $value, 'Boolean');
                 if ($value) {
                     $query->_qill[$grouping][] = ts('Pledge is a Test');
                 }
                 $query->_tables['civicrm_pledge'] = $query->_whereTables['civicrm_pledge'] = 1;
             }
             return;
         case 'pledge_financial_type_id':
             $type = CRM_Contribute_PseudoConstant::financialType($value);
             $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_pledge.financial_type_id', $op, $value, 'Integer');
             $query->_qill[$grouping][] = ts('Financial Type - %1', array(1 => $type));
             $query->_tables['civicrm_pledge'] = $query->_whereTables['civicrm_pledge'] = 1;
             return;
         case 'pledge_contribution_page_id':
             $page = CRM_Contribute_PseudoConstant::contributionPage($value);
             $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_pledge.contribution_page_id', $op, $value, 'Integer');
             $query->_qill[$grouping][] = ts('Financial Page - %1', array(1 => $page));
             $query->_tables['civicrm_pledge'] = $query->_whereTables['civicrm_pledge'] = 1;
             return;
         case 'pledge_id':
             $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_pledge.id", $op, $value, "Integer");
             $query->_tables['civicrm_pledge'] = $query->_whereTables['civicrm_pledge'] = 1;
             return;
         case 'pledge_frequency_interval':
             $query->_where[$grouping][] = "civicrm_pledge.frequency_interval {$op} {$value}";
             $query->_tables['civicrm_pledge'] = $query->_whereTables['civicrm_pledge'] = 1;
             return;
         case 'pledge_frequency_unit':
             $query->_where[$grouping][] = "civicrm_pledge.frequency_unit {$op} {$value}";
             $query->_tables['civicrm_pledge'] = $query->_whereTables['civicrm_pledge'] = 1;
             return;
         case 'pledge_campaign_id':
             $campParams = array('op' => $op, 'campaign' => $value, 'grouping' => $grouping, 'tableName' => 'civicrm_pledge');
             CRM_Campaign_BAO_Query::componentSearchClause($campParams, $query);
             return;
         case 'pledge_contact_id':
             $name = str_replace('pledge_', '', $name);
             $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_pledge.{$name}", $op, $value, 'Integer');
             list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Pledge_DAO_Pledge', $name, $value, $op);
             $query->_qill[$grouping][] = ts('Contact ID %1 %2', array(1 => $op, 2 => $value));
             $query->_tables['civicrm_pledge'] = $query->_whereTables['civicrm_pledge'] = 1;
             return;
     }
 }
开发者ID:utkarshsharma,项目名称:civicrm-core,代码行数:100,代码来源:Query.php

示例6: buildQillForFieldValue

 /**
  * Build qill for field.
  *
  * Qill refers to the query detail visible on the UI.
  *
  * @param $daoName
  * @param $fieldName
  * @param $fieldValue
  * @param $op
  * @param array $pseduoExtraParam
  *
  * @return array
  */
 public static function buildQillForFieldValue($daoName = NULL, $fieldName, $fieldValue, $op, $pseduoExtraParam = array())
 {
     $qillOperators = CRM_Core_SelectValues::getSearchBuilderOperators();
     if ($fieldName == 'activity_type_id') {
         $pseduoOptions = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'label', TRUE);
     } elseif ($daoName == 'CRM_Event_DAO_Event' && $fieldName == 'id') {
         $pseduoOptions = CRM_Event_BAO_Event::getEvents(0, $fieldValue, TRUE, TRUE, TRUE);
     } elseif ($fieldName == 'contribution_product_id') {
         $pseduoOptions = CRM_Contribute_PseudoConstant::products();
     } elseif ($daoName) {
         $pseduoOptions = CRM_Core_PseudoConstant::get($daoName, $fieldName, $pseduoExtraParam = array());
     }
     //API usually have fieldValue format as array(operator => array(values)),
     //so we need to separate operator out of fieldValue param
     if (is_array($fieldValue) && in_array(key($fieldValue), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
         $op = key($fieldValue);
         $fieldValue = $fieldValue[$op];
     }
     if (is_array($fieldValue)) {
         $qillString = array();
         if (!empty($pseduoOptions)) {
             foreach ((array) $fieldValue as $val) {
                 $qillString[] = $pseduoOptions[$val];
             }
             $fieldValue = implode(', ', $qillString);
         } else {
             $fieldValue = implode(', ', $fieldValue);
         }
     } elseif (!empty($pseduoOptions) && array_key_exists($fieldValue, $pseduoOptions)) {
         $fieldValue = $pseduoOptions[$fieldValue];
     }
     return array(CRM_Utils_Array::value($op, $qillOperators, $op), $fieldValue);
 }
开发者ID:vakeesan26,项目名称:civicrm-core,代码行数:46,代码来源:Query.php

示例7: normalizeDefaultValues

 /**
  * Normalize default values for multiselect plugins.
  *
  * @param array $defaults
  *
  * @return array
  */
 public function normalizeDefaultValues(&$defaults)
 {
     if (!is_array($defaults)) {
         $defaults = array();
     }
     if ($this->_ssID && empty($_POST)) {
         $specialFields = array('contact_type', 'group', 'contact_tags', 'member_membership_type_id', 'member_status_id');
         foreach ($defaults as $element => $value) {
             if (!empty($value) && is_array($value)) {
                 if (in_array($element, $specialFields)) {
                     $element = str_replace('member_membership_type_id', 'membership_type_id', $element);
                     $element = str_replace('member_status_id', 'membership_status_id', $element);
                     $defaults[$element] = array_keys($value);
                 } elseif (in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
                     $defaults[$element] = CRM_Utils_Array::value(key($value), $value);
                     if (is_string($defaults[$element])) {
                         $defaults[$element] = str_replace("%", '', $defaults[$element]);
                     }
                 }
             }
             if (substr($element, 0, 7) == 'custom_' && (substr($element, -5, 5) == '_from' || substr($element, -3, 3) == '_to')) {
                 // Ensure the _relative field is set if from or to are set to ensure custom date
                 // fields with 'from' or 'to' values are displayed when the are set in the smart group
                 // being loaded. (CRM-17116)
                 if (!isset($defaults[CRM_Contact_BAO_Query::getCustomFieldName($element) . '_relative'])) {
                     $defaults[CRM_Contact_BAO_Query::getCustomFieldName($element) . '_relative'] = 0;
                 }
             }
         }
     }
     return $defaults;
 }
开发者ID:rollox,项目名称:civicrm-core,代码行数:39,代码来源:Advanced.php

示例8: run

 /**
  * Build & execute the query and return results array
  *
  * @return array
  * @throws \API_Exception
  * @throws \CRM_Core_Exception
  * @throws \Exception
  */
 public function run()
 {
     // $select_fields maps column names to the field names of the result values.
     $select_fields = $custom_fields = array();
     // populate $select_fields
     $return_all_fields = empty($this->options['return']) || !is_array($this->options['return']);
     $return = $return_all_fields ? array_fill_keys($this->entityFieldNames, 1) : $this->options['return'];
     // core return fields
     foreach ($return as $field_name => $include) {
         if ($include) {
             $field = $this->getField($field_name);
             if ($field && in_array($field['name'], $this->entityFieldNames)) {
                 // 'a.' is an alias for the entity table.
                 $select_fields["a.{$field['name']}"] = $field['name'];
             } elseif ($include && strpos($field_name, '.')) {
                 $fkField = $this->addFkField($field_name);
                 if ($fkField) {
                     $select_fields[implode('.', $fkField)] = $field_name;
                 }
             }
         }
     }
     // Do custom fields IF the params contain the word "custom" or we are returning *
     if ($return_all_fields || strpos(json_encode($this->params), 'custom')) {
         $custom_fields = _civicrm_api3_custom_fields_for_entity($this->entity);
         foreach ($custom_fields as $cf_id => $custom_field) {
             $field_name = "custom_{$cf_id}";
             if ($return_all_fields || !empty($this->options['return'][$field_name]) || !empty($this->options['return']['custom'])) {
                 list($table_name, $column_name) = $this->addCustomField($custom_field);
                 if ($custom_field["data_type"] != "ContactReference") {
                     // 'ordinary' custom field. We will select the value as custom_XX.
                     $select_fields["{$table_name}.{$column_name}"] = $field_name;
                 } else {
                     // contact reference custom field. The ID will be stored in custom_XX_id.
                     // custom_XX will contain the sort name of the contact.
                     $this->query->join("c_{$cf_id}", "LEFT JOIN civicrm_contact c_{$cf_id} ON c_{$cf_id}.id = `{$table_name}`.`{$column_name}`");
                     $select_fields["{$table_name}.{$column_name}"] = $field_name . "_id";
                     // We will call the contact table for the join c_XX.
                     $select_fields["c_{$cf_id}.sort_name"] = $field_name;
                 }
             }
         }
     }
     // Always select the ID.
     $select_fields["a.id"] = "id";
     // populate where_clauses
     foreach ($this->params as $key => $value) {
         $table_name = NULL;
         $column_name = NULL;
         if (substr($key, 0, 7) == 'filter.') {
             // Legacy support for old filter syntax per the test contract.
             // (Convert the style to the later one & then deal with them).
             $filterArray = explode('.', $key);
             $value = array($filterArray[1] => $value);
             $key = 'filters';
         }
         // Legacy support for 'filter's construct.
         if ($key == 'filters') {
             foreach ($value as $filterKey => $filterValue) {
                 if (substr($filterKey, -4, 4) == 'high') {
                     $key = substr($filterKey, 0, -5);
                     $value = array('<=' => $filterValue);
                 }
                 if (substr($filterKey, -3, 3) == 'low') {
                     $key = substr($filterKey, 0, -4);
                     $value = array('>=' => $filterValue);
                 }
                 if ($filterKey == 'is_current' || $filterKey == 'isCurrent') {
                     // Is current is almost worth creating as a 'sql filter' in the DAO function since several entities have the
                     // concept.
                     $todayStart = date('Ymd000000', strtotime('now'));
                     $todayEnd = date('Ymd235959', strtotime('now'));
                     $this->query->where(array("(a.start_date <= '{$todayStart}' OR a.start_date IS NULL) AND (a.end_date >= '{$todayEnd}' OR\n          a.end_date IS NULL)\n          AND a.is_active = 1\n        "));
                 }
             }
         }
         // Ignore the "options" param if it is referring to api options and not a field in this entity
         if ($key === 'options' && is_array($value) && !in_array(\CRM_Utils_Array::first(array_keys($value)), \CRM_Core_DAO::acceptedSQLOperators())) {
             continue;
         }
         $field = $this->getField($key);
         if ($field) {
             $key = $field['name'];
         }
         if (in_array($key, $this->entityFieldNames)) {
             $table_name = 'a';
             $column_name = $key;
         } elseif (($cf_id = \CRM_Core_BAO_CustomField::getKeyID($key)) != FALSE) {
             list($table_name, $column_name) = $this->addCustomField($custom_fields[$cf_id]);
         } elseif (strpos($key, '.')) {
             $fkInfo = $this->addFkField($key);
             if ($fkInfo) {
//.........这里部分代码省略.........
开发者ID:Prem-Patel,项目名称:civicrm-core,代码行数:101,代码来源:SelectQuery.php

示例9: where

 /**
  * Generate the where clause and also the english language.
  * equivalent
  *
  * @return void
  */
 public function where()
 {
     foreach ($this->_ids as $id => $values) {
         // Fixed for Isuue CRM 607
         if (CRM_Utils_Array::value($id, $this->_fields) === NULL || !$values) {
             continue;
         }
         $strtolower = function_exists('mb_strtolower') ? 'mb_strtolower' : 'strtolower';
         foreach ($values as $tuple) {
             list($name, $op, $value, $grouping, $wildcard) = $tuple;
             $field = $this->_fields[$id];
             $fieldName = "{$field['table_name']}.{$field['column_name']}";
             // Autocomplete comes back as a string not an array
             if ($field['data_type'] == 'String' && $field['html_type'] == 'Autocomplete-Select' && $op == '=') {
                 $value = explode(',', $value);
             }
             $isSerialized = CRM_Core_BAO_CustomField::isSerialized($field);
             // fix $value here to escape sql injection attacks
             $qillValue = NULL;
             if (!is_array($value)) {
                 $value = CRM_Core_DAO::escapeString(trim($value));
                 $qillValue = CRM_Core_BAO_CustomField::getDisplayValue($value, $id, $this->_options);
             } elseif (count($value) && in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
                 $op = key($value);
                 $qillValue = CRM_Core_BAO_CustomField::getDisplayValue($value[$op], $id, $this->_options);
             } else {
                 $op = 'IN';
                 $qillValue = CRM_Core_BAO_CustomField::getDisplayValue($value, $id, $this->_options);
             }
             $qillOp = CRM_Utils_Array::value($op, CRM_Core_SelectValues::getSearchBuilderOperators(), $op);
             switch ($field['data_type']) {
                 case 'String':
                 case 'StateProvince':
                 case 'Country':
                     if ($field['is_search_range'] && is_array($value)) {
                         $this->searchRange($field['id'], $field['label'], $field['data_type'], $fieldName, $value, $grouping);
                     } else {
                         // fix $value here to escape sql injection attacks
                         if (!is_array($value)) {
                             if ($field['data_type'] == 'String') {
                                 $value = CRM_Utils_Type::escape($strtolower($value), 'String');
                             } else {
                                 $value = CRM_Utils_Type::escape($value, 'Integer');
                             }
                         } elseif ($isSerialized) {
                             if (in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
                                 $op = key($value);
                                 $value = $value[$op];
                             }
                             $value = implode(',', $value);
                         }
                         // CRM-14563,CRM-16575 : Special handling of multi-select custom fields
                         if ($isSerialized && !empty($value)) {
                             if (strstr($op, 'IN')) {
                                 $value = str_replace(",", "[[:cntrl:]]*|[[:cntrl:]]*", $value);
                                 $value = str_replace('(', '[[.left-parenthesis.]]', $value);
                                 $value = str_replace(')', '[[.right-parenthesis.]]', $value);
                             }
                             $op = strstr($op, '!') || strstr($op, 'NOT') ? 'NOT RLIKE' : 'RLIKE';
                             $value = "[[:cntrl:]]*" . $value . "[[:cntrl:]]*";
                             if (!$wildcard) {
                                 $value = str_replace("[[:cntrl:]]*|", '', $value);
                             }
                         }
                         //FIX for custom data query fired against no value(NULL/NOT NULL)
                         $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $value, 'String');
                         $this->_qill[$grouping][] = "{$field['label']} {$qillOp} {$qillValue}";
                     }
                     break;
                 case 'ContactReference':
                     $label = $value ? CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $value, 'sort_name') : '';
                     $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $value, 'String');
                     $this->_qill[$grouping][] = $field['label'] . " {$qillOp} {$label}";
                     break;
                 case 'Int':
                     if ($field['is_search_range'] && is_array($value)) {
                         $this->searchRange($field['id'], $field['label'], $field['data_type'], $fieldName, $value, $grouping);
                     } else {
                         $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $value, 'Integer');
                         $this->_qill[$grouping][] = ts("%1 %2 %3", array(1 => $field['label'], 2 => $qillOp, 3 => $qillValue));
                     }
                     break;
                 case 'Boolean':
                     if (!is_array($value)) {
                         if (strtolower($value) == 'yes' || strtolower($value) == strtolower(ts('Yes'))) {
                             $value = 1;
                         } else {
                             $value = (int) $value;
                         }
                         $value = $value == 1 ? 1 : 0;
                         $qillValue = $value ? 'Yes' : 'No';
                     }
                     $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $value, 'Integer');
                     $this->_qill[$grouping][] = ts("%1 %2 %3", array(1 => $field['label'], 2 => $qillOp, 3 => $qillValue));
//.........这里部分代码省略.........
开发者ID:utkarshsharma,项目名称:civicrm-core,代码行数:101,代码来源:CustomQuery.php

示例10: _civicrm_api3_field_value_check

/**
 * Get the actual field value.
 *
 * In some case $params[$fieldName] holds Array value in this format Array([operator] => [value])
 * So this function returns the actual field value
 *
 * @param array $params
 * @param string $fieldName
 *
 * @return mixed
 */
function _civicrm_api3_field_value_check(&$params, $fieldName)
{
    $fieldValue = CRM_Utils_Array::value($fieldName, $params);
    $op = NULL;
    if (!empty($fieldValue) && is_array($fieldValue) && array_search(key($fieldValue), CRM_Core_DAO::acceptedSQLOperators())) {
        $op = key($fieldValue);
        $fieldValue = CRM_Utils_Array::value($op, $fieldValue);
    }
    return array($fieldValue, $op);
}
开发者ID:sugan2111,项目名称:Drupal_code,代码行数:21,代码来源:utils.php

示例11: fixCustomFieldValue

 /**
  * @param array $formValues
  * @return null
  */
 public static function fixCustomFieldValue(&$formValues)
 {
     if (empty($formValues)) {
         return NULL;
     }
     foreach (array_keys($formValues) as $key) {
         if (substr($key, 0, 7) != 'custom_') {
             continue;
         } elseif (empty($formValues[$key])) {
             continue;
         }
         $htmlType = CRM_Core_DAO::getFieldValue('CRM_Core_BAO_CustomField', substr($key, 7), 'html_type');
         $dataType = CRM_Core_DAO::getFieldValue('CRM_Core_BAO_CustomField', substr($key, 7), 'data_type');
         if (is_array($formValues[$key])) {
             if (!in_array(key($formValues[$key]), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
                 $formValues[$key] = array('IN' => $formValues[$key]);
             }
         } elseif (stristr($formValues[$key], '%') && ($htmlType == 'TextArea' || $htmlType == 'Text' && $dataType == 'String')) {
             $formValues[$key] = array('LIKE' => $formValues[$key]);
         }
     }
 }
开发者ID:kidaa30,项目名称:yes,代码行数:26,代码来源:CustomValue.php

示例12: unserialize

 /**
  * Given an id, extract the formValues of the saved search.
  *
  * @param int $id
  *   The id of the saved search.
  *
  * @return array
  *   the values of the posted saved search used as default values in various Search Form
  */
 public static function &getFormValues($id)
 {
     $fv = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_SavedSearch', $id, 'form_values');
     $result = NULL;
     if ($fv) {
         // make sure u unserialize - since it's stored in serialized form
         $result = unserialize($fv);
     }
     $specialFields = array('contact_type', 'group', 'contact_tags', 'member_membership_type_id', 'member_status_id');
     foreach ($result as $element => $value) {
         if (CRM_Contact_BAO_Query::isAlreadyProcessedForQueryFormat($value)) {
             $id = CRM_Utils_Array::value(0, $value);
             $value = CRM_Utils_Array::value(2, $value);
             if (is_array($value) && in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
                 $value = CRM_Utils_Array::value(key($value), $value);
             }
             $result[$id] = $value;
             unset($result[$element]);
             continue;
         }
         if (!empty($value) && is_array($value)) {
             if (in_array($element, $specialFields)) {
                 $element = str_replace('member_membership_type_id', 'membership_type_id', $element);
                 $element = str_replace('member_status_id', 'membership_status_id', $element);
                 CRM_Contact_BAO_Query::legacyConvertFormValues($element, $value);
                 $result[$element] = $value;
             } elseif (in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
                 $result[$element] = CRM_Utils_Array::value(key($value), $value);
                 if (is_string($result[$element])) {
                     $result[$element] = str_replace("%", '', $result[$element]);
                 }
             }
         }
         if (substr($element, 0, 7) == 'custom_' && (substr($element, -5, 5) == '_from' || substr($element, -3, 3) == '_to')) {
             // Ensure the _relative field is set if from or to are set to ensure custom date
             // fields with 'from' or 'to' values are displayed when the are set in the smart group
             // being loaded. (CRM-17116)
             if (!isset($result[CRM_Contact_BAO_Query::getCustomFieldName($element) . '_relative'])) {
                 $result[CRM_Contact_BAO_Query::getCustomFieldName($element) . '_relative'] = 0;
             }
         }
         // check to see if we need to convert the old privacy array
         // CRM-9180
         if (!empty($result['privacy'])) {
             if (is_array($result['privacy'])) {
                 $result['privacy_operator'] = 'AND';
                 $result['privacy_toggle'] = 1;
                 if (isset($result['privacy']['do_not_toggle'])) {
                     if ($result['privacy']['do_not_toggle']) {
                         $result['privacy_toggle'] = 2;
                     }
                     unset($result['privacy']['do_not_toggle']);
                 }
                 $result['privacy_options'] = array();
                 foreach ($result['privacy'] as $name => $val) {
                     if ($val) {
                         $result['privacy_options'][] = $name;
                     }
                 }
             }
             unset($result['privacy']);
         }
     }
     return $result;
 }
开发者ID:FundingWorks,项目名称:civicrm-core,代码行数:74,代码来源:SavedSearch.php

示例13: getFormValues

 /**
  * Given an id, extract the formValues of the saved search.
  *
  * @param int $id
  *   The id of the saved search.
  *
  * @return array
  *   the values of the posted saved search used as default values in various Search Form
  */
 public static function getFormValues($id)
 {
     $fv = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_SavedSearch', $id, 'form_values');
     $result = NULL;
     if ($fv) {
         // make sure u unserialize - since it's stored in serialized form
         $result = unserialize($fv);
     }
     //CRM-19250: fetch the default date format to format mysql value as per CRM_Core_Error::addDate()
     $dateFormat = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_PreferencesDate', 'searchDate', 'date_format', 'name');
     $dateFormat = empty($dateFormat) ? CRM_Core_Config::singleton()->dateInputFormat : $dateFormat;
     $dateFormat = CRM_Utils_Array::value($dateFormat, CRM_Core_SelectValues::datePluginToPHPFormats());
     $specialFields = array('contact_type', 'group', 'contact_tags', 'member_membership_type_id', 'member_status_id');
     foreach ($result as $element => $value) {
         if (CRM_Contact_BAO_Query::isAlreadyProcessedForQueryFormat($value)) {
             $id = CRM_Utils_Array::value(0, $value);
             $value = CRM_Utils_Array::value(2, $value);
             if (is_array($value) && in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
                 $value = CRM_Utils_Array::value(key($value), $value);
             }
             if (strpos($id, '_date_low') !== FALSE || strpos($id, '_date_high') !== FALSE) {
                 $result[$id] = date($dateFormat, strtotime($value));
                 $entityName = strstr($id, '_date', TRUE);
                 $result["{$entityName}_date_relative"] = 0;
             } else {
                 $result[$id] = $value;
             }
             unset($result[$element]);
             continue;
         }
         if (!empty($value) && is_array($value)) {
             if (in_array($element, $specialFields)) {
                 // Remove the element to minimise support for legacy formats. It is stored in $value
                 // so will be re-set with the right name.
                 unset($result[$element]);
                 $element = str_replace('member_membership_type_id', 'membership_type_id', $element);
                 $element = str_replace('member_status_id', 'membership_status_id', $element);
                 CRM_Contact_BAO_Query::legacyConvertFormValues($element, $value);
                 $result[$element] = $value;
             } elseif (in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
                 $result[$element] = CRM_Utils_Array::value(key($value), $value);
                 if (is_string($result[$element])) {
                     $result[$element] = str_replace("%", '', $result[$element]);
                 }
             }
         }
         if (substr($element, 0, 7) == 'custom_' && (substr($element, -5, 5) == '_from' || substr($element, -3, 3) == '_to')) {
             // Ensure the _relative field is set if from or to are set to ensure custom date
             // fields with 'from' or 'to' values are displayed when the are set in the smart group
             // being loaded. (CRM-17116)
             if (!isset($result[CRM_Contact_BAO_Query::getCustomFieldName($element) . '_relative'])) {
                 $result[CRM_Contact_BAO_Query::getCustomFieldName($element) . '_relative'] = 0;
             }
         }
         // check to see if we need to convert the old privacy array
         // CRM-9180
         if (!empty($result['privacy'])) {
             if (is_array($result['privacy'])) {
                 $result['privacy_operator'] = 'AND';
                 $result['privacy_toggle'] = 1;
                 if (isset($result['privacy']['do_not_toggle'])) {
                     if ($result['privacy']['do_not_toggle']) {
                         $result['privacy_toggle'] = 2;
                     }
                     unset($result['privacy']['do_not_toggle']);
                 }
                 $result['privacy_options'] = array();
                 foreach ($result['privacy'] as $name => $val) {
                     if ($val) {
                         $result['privacy_options'][] = $name;
                     }
                 }
             }
             unset($result['privacy']);
         }
     }
     return $result;
 }
开发者ID:kcristiano,项目名称:civicrm-core,代码行数:87,代码来源:SavedSearch.php

示例14: where

 /**
  * Generate the where clause and also the english language equivalent.
  */
 public function where()
 {
     foreach ($this->_ids as $id => $values) {
         // Fixed for Issue CRM 607
         if (CRM_Utils_Array::value($id, $this->_fields) === NULL || !$values) {
             continue;
         }
         $strtolower = function_exists('mb_strtolower') ? 'mb_strtolower' : 'strtolower';
         foreach ($values as $tuple) {
             list($name, $op, $value, $grouping, $wildcard) = $tuple;
             $field = $this->_fields[$id];
             $fieldName = "{$field['table_name']}.{$field['column_name']}";
             $isSerialized = CRM_Core_BAO_CustomField::isSerialized($field);
             // fix $value here to escape sql injection attacks
             $qillValue = NULL;
             if (!is_array($value)) {
                 $value = CRM_Core_DAO::escapeString(trim($value));
                 $qillValue = CRM_Core_BAO_CustomField::displayValue($value, $id);
             } elseif (count($value) && in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
                 $op = key($value);
                 $qillValue = strstr($op, 'NULL') ? NULL : CRM_Core_BAO_CustomField::displayValue($value[$op], $id);
             } else {
                 $op = strstr($op, 'IN') ? $op : 'IN';
                 $qillValue = CRM_Core_BAO_CustomField::displayValue($value, $id);
             }
             $qillOp = CRM_Utils_Array::value($op, CRM_Core_SelectValues::getSearchBuilderOperators(), $op);
             switch ($field['data_type']) {
                 case 'String':
                 case 'StateProvince':
                 case 'Country':
                     if ($field['is_search_range'] && is_array($value)) {
                         //didn't found any field under any of these three data-types as searchable by range
                     } else {
                         // fix $value here to escape sql injection attacks
                         if (!is_array($value)) {
                             if ($field['data_type'] == 'String') {
                                 $value = CRM_Utils_Type::escape($strtolower($value), 'String');
                             } else {
                                 $value = CRM_Utils_Type::escape($value, 'Integer');
                             }
                         } elseif ($isSerialized) {
                             if (in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
                                 $op = key($value);
                                 $value = $value[$op];
                             }
                             $value = implode(',', (array) $value);
                         }
                         // CRM-14563,CRM-16575 : Special handling of multi-select custom fields
                         if ($isSerialized && !empty($value) && !strstr($op, 'NULL') && !strstr($op, 'LIKE')) {
                             $sp = CRM_Core_DAO::VALUE_SEPARATOR;
                             if (strstr($op, 'IN')) {
                                 $value = str_replace(",", "{$sp}|{$sp}", $value);
                                 $value = str_replace('(', '[[.left-parenthesis.]]', $value);
                                 $value = str_replace(')', '[[.right-parenthesis.]]', $value);
                             }
                             $op = strstr($op, '!') || strstr($op, 'NOT') ? 'NOT RLIKE' : 'RLIKE';
                             $value = $sp . $value . $sp;
                             if (!$wildcard) {
                                 foreach (explode("|", $value) as $val) {
                                     $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $val, 'String');
                                 }
                             } else {
                                 $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $value, 'String');
                             }
                         } else {
                             //FIX for custom data query fired against no value(NULL/NOT NULL)
                             $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $value, 'String');
                         }
                         $this->_qill[$grouping][] = $field['label'] . " {$qillOp} {$qillValue}";
                     }
                     break;
                 case 'ContactReference':
                     $label = $value ? CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $value, 'sort_name') : '';
                     $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $value, 'String');
                     $this->_qill[$grouping][] = $field['label'] . " {$qillOp} {$label}";
                     break;
                 case 'Int':
                     $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $value, 'Integer');
                     $this->_qill[$grouping][] = ts("%1 %2 %3", array(1 => $field['label'], 2 => $qillOp, 3 => $qillValue));
                     break;
                 case 'Boolean':
                     if (!is_array($value)) {
                         if (strtolower($value) == 'yes' || strtolower($value) == strtolower(ts('Yes'))) {
                             $value = 1;
                         } else {
                             $value = (int) $value;
                         }
                         $value = $value == 1 ? 1 : 0;
                         $qillValue = $value ? 'Yes' : 'No';
                     }
                     $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $value, 'Integer');
                     $this->_qill[$grouping][] = ts("%1 %2 %3", array(1 => $field['label'], 2 => $qillOp, 3 => $qillValue));
                     break;
                 case 'Link':
                 case 'Memo':
                     $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $value, 'String');
                     $this->_qill[$grouping][] = ts("%1 %2 %3", array(1 => $field['label'], 2 => $qillOp, 3 => $qillValue));
//.........这里部分代码省略.........
开发者ID:konadave,项目名称:civicrm-core,代码行数:101,代码来源:CustomQuery.php

示例15: buildQillForFieldValue

 /**
  * Build qill for field.
  *
  * Qill refers to the query detail visible on the UI.
  *
  * @param string $daoName
  * @param string $fieldName
  * @param mixed $fieldValue
  * @param string $op
  * @param array $pseudoExtraParam
  * @param int $type
  *   Type of the field per CRM_Utils_Type
  *
  * @return array
  */
 public static function buildQillForFieldValue($daoName, $fieldName, $fieldValue, $op, $pseudoExtraParam = array(), $type = CRM_Utils_Type::T_STRING)
 {
     $qillOperators = CRM_Core_SelectValues::getSearchBuilderOperators();
     // if Operator chosen is NULL/EMPTY then
     if (strpos($op, 'NULL') !== FALSE || strpos($op, 'EMPTY') !== FALSE) {
         return array(CRM_Utils_Array::value($op, $qillOperators, $op), '');
     }
     if ($fieldName == 'activity_type_id') {
         $pseudoOptions = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'label', TRUE);
     } elseif ($fieldName == 'country_id') {
         $pseduoOptions = CRM_Core_PseudoConstant::country();
     } elseif ($fieldName == 'county_id') {
         $pseduoOptions = CRM_Core_PseudoConstant::county();
     } elseif ($fieldName == 'world_region') {
         $pseduoOptions = CRM_Core_PseudoConstant::worldRegion();
     } elseif ($daoName == 'CRM_Event_DAO_Event' && $fieldName == 'id') {
         $pseudoOptions = CRM_Event_BAO_Event::getEvents(0, $fieldValue, TRUE, TRUE, TRUE);
     } elseif ($fieldName == 'contribution_product_id') {
         $pseudoOptions = CRM_Contribute_PseudoConstant::products();
     } elseif ($daoName == 'CRM_Contact_DAO_Group' && $fieldName == 'id') {
         $pseudoOptions = CRM_Core_PseudoConstant::group();
     } elseif ($fieldName == 'country_id') {
         $pseudoOptions = CRM_Core_PseudoConstant::country();
     } elseif ($daoName) {
         $pseudoOptions = CRM_Core_PseudoConstant::get($daoName, $fieldName, $pseudoExtraParam);
     }
     //API usually have fieldValue format as array(operator => array(values)),
     //so we need to separate operator out of fieldValue param
     if (is_array($fieldValue) && in_array(key($fieldValue), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
         $op = key($fieldValue);
         $fieldValue = $fieldValue[$op];
     }
     if (is_array($fieldValue)) {
         $qillString = array();
         if (!empty($pseudoOptions)) {
             foreach ((array) $fieldValue as $val) {
                 $qillString[] = CRM_Utils_Array::value($val, $pseudoOptions, $val);
             }
             $fieldValue = implode(', ', $qillString);
         } else {
             if ($type == CRM_Utils_Type::T_DATE) {
                 foreach ($fieldValue as $index => $value) {
                     $fieldValue[$index] = CRM_Utils_Date::customFormat($value);
                 }
             }
             $separator = ', ';
             // @todo - this is a bit specific (one operator).
             // However it is covered by a unit test so can be altered later with
             // some confidence.
             if ($op == 'BETWEEN') {
                 $separator = ' AND ';
             }
             $fieldValue = implode($separator, $fieldValue);
         }
     } elseif (!empty($pseudoOptions) && array_key_exists($fieldValue, $pseudoOptions)) {
         $fieldValue = $pseudoOptions[$fieldValue];
     } elseif ($type === CRM_Utils_Type::T_DATE) {
         $fieldValue = CRM_Utils_Date::customFormat($fieldValue);
     }
     return array(CRM_Utils_Array::value($op, $qillOperators, $op), $fieldValue);
 }
开发者ID:hoegrammer,项目名称:civicrm-core,代码行数:76,代码来源:Query.php


注:本文中的CRM_Core_DAO::acceptedSQLOperators方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。