static function record($rg)
 {
     $civicrm_contact = CRM_Utils_Array::value('civicrm_contact', $rg->params, array());
     $civicrm_email = CRM_Utils_Array::value('civicrm_email', $rg->params, array());
     $params = array(1 => array(CRM_Utils_Array::value('first_name', $civicrm_contact, ''), 'String'), 2 => array(CRM_Utils_Array::value('last_name', $civicrm_contact, ''), 'String'), 3 => array(CRM_Utils_Array::value('email', $civicrm_email, ''), 'String'));
     return array("civicrm_contact.{$rg->name}.{$rg->threshold}" => CRM_Core_DAO::composeQuery("\n                SELECT contact.id as id1, {$rg->threshold} as weight\n                FROM civicrm_contact as contact\n                  JOIN civicrm_email as email ON email.contact_id=contact.id\n                WHERE contact_type = 'Individual'\n                  AND first_name = %1\n                  AND last_name = %2\n                  AND email = %3", $params, TRUE));
 }
 function postProcess()
 {
     $values = $this->exportValues();
     $table = $values['table'];
     $field = $values['field'];
     // validate table and field
     if (!isset($this->_structure[$table][$field])) {
         CRM_Core_Error::fatal("{$table}.{$field} is not internationalized.");
     }
     $cols = array();
     $params = array(array($values['id'], 'Int'));
     $i = 1;
     foreach ($this->_locales as $locale) {
         $cols[] = "{$field}_{$locale} = %{$i}";
         $params[$i] = array($values["{$field}_{$locale}"], 'String');
         $i++;
     }
     $query = "UPDATE {$table} SET " . implode(', ', $cols) . " WHERE id = %0";
     $dao = new CRM_Core_DAO();
     $query = CRM_Core_DAO::composeQuery($query, $params, TRUE);
     $dao->query($query, FALSE);
     CRM_Utils_System::civiExit();
 }
Esempio n. 3
0
 /**
  * @param $where
  * @param $params
  *
  * @return string
  */
 function whereClause(&$where, &$params)
 {
     return CRM_Core_DAO::composeQuery($where, $params, TRUE);
 }
Esempio n. 4
0
 function testComposeQueryFailure()
 {
     $cases[] = array('SELECT * FROM whatever WHERE name = %1 AND title = %2 AND year LIKE \'%2012\' ', array(1 => array('Alice', 'String'), 2 => array('Bob', 'String')), 'SELECT * FROM whatever WHERE name = \'Alice\' AND title = \'Bob\' AND year LIKE \'%2012\' ');
     list($inputSql, $inputParams, $expectSql) = $cases[0];
     $actualSql = CRM_Core_DAO::composeQuery($inputSql, $inputParams);
     $this->assertFalse($expectSql == $actualSql);
 }
Esempio n. 5
0
 /**
  * Assert that a SQL query returns a given value.
  *
  * The first argument is an expected value. The remaining arguments are passed
  * to CRM_Core_DAO::singleValueQuery
  *
  * Example: $this->assertSql(2, 'select count(*) from foo where foo.bar like "%1"',
  * array(1 => array("Whiz", "String")));
  * @param $expected
  * @param $query
  * @param array $params
  * @param string $message
  */
 public function assertDBQuery($expected, $query, $params = array(), $message = '')
 {
     if ($message) {
         $message .= ': ';
     }
     $actual = CRM_Core_DAO::singleValueQuery($query, $params);
     $this->assertEquals($expected, $actual, sprintf('%sexpected=[%s] actual=[%s] query=[%s]', $message, $expected, $actual, CRM_Core_DAO::composeQuery($query, $params, FALSE)));
 }
Esempio n. 6
0
 /**
  * Enqueue a query which alters triggers.
  *
  * As this requires a high permission level we funnel the queries through here to
  * facilitate them being taken 'offline'.
  *
  * @param string $triggerSQL
  *   The sql to run to create or drop the triggers.
  * @param array $params
  *   Optional parameters to interpolate into the string.
  */
 public function enqueueQuery($triggerSQL, $params = array())
 {
     if (\Civi::settings()->get('logging_no_trigger_permission')) {
         if (!file_exists($this->getFile())) {
             // Ugh. Need to let user know somehow. This is the first change.
             \CRM_Core_Session::setStatus(ts('The mysql commands you need to run are stored in %1', array(1 => $this->getFile())), '', 'alert', array('expires' => 0));
         }
         $buf = "\n";
         $buf .= "DELIMITER //\n";
         $buf .= \CRM_Core_DAO::composeQuery($triggerSQL, $params) . " //\n";
         $buf .= "DELIMITER ;\n";
         file_put_contents($this->getFile(), $buf, FILE_APPEND);
     } else {
         \CRM_Core_DAO::executeQuery($triggerSQL, $params, TRUE, NULL, FALSE, FALSE);
     }
 }
 /**
  * Assert that a SQL query returns a given value
  *
  * The first argument is an expected value. The remaining arguments are passed
  * to CRM_Core_DAO::singleValueQuery
  *
  * Example: $this->assertSql(2, 'select count(*) from foo where foo.bar like "%1"',
  * array(1 => array("Whiz", "String")));
  */
 function assertDBQuery($expected, $query, $params = array())
 {
     $actual = CRM_Core_DAO::singleValueQuery($query, $params);
     $this->assertEquals($expected, $actual, sprintf('expected=[%s] actual=[%s] query=[%s]', $expected, $actual, CRM_Core_DAO::composeQuery($query, $params, FALSE)));
 }
Esempio n. 8
0
 /**
  * @param int $offset
  * @param int $rowcount
  * @param null $sort
  * @param bool $returnSQL
  *
  * @return string
  */
 public function contactIDs($offset = 0, $rowcount = 0, $sort = NULL, $returnSQL = FALSE)
 {
     $sql = $this->sql('player.id as contact_id', $offset, $rowcount, $sort);
     $this->validateUserSQL($sql);
     if ($returnSQL) {
         return $sql;
     }
     return CRM_Core_DAO::composeQuery($sql, CRM_Core_DAO::$_nullArray);
 }
 /**
  * There's probably a better way to do this.
  */
 public static function runSqlReturnAffectedRows($sql, $params = array())
 {
     $dao = new CRM_Core_DAO();
     $q = CRM_Core_DAO::composeQuery($sql, $params);
     $result = $dao->query($q);
     if (is_a($result, 'DB_Error')) {
         throw new Exception($result->message . "\n" . $result->userinfo);
     }
     $dao->free();
     return $result;
 }