X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FDAO.php;h=aa29909f07f3beabde8edf2e7d90a136ac69a2b1;hb=d09979215fb8fa66d3403e88518e6448ed546edb;hp=58e16ee904b947fb0e18d4c0c7a97588421d188f;hpb=95ca1e4e775ce88e3f371abe8390a3526ba537e7;p=civicrm-core.git diff --git a/CRM/Core/DAO.php b/CRM/Core/DAO.php index 58e16ee904..aa29909f07 100644 --- a/CRM/Core/DAO.php +++ b/CRM/Core/DAO.php @@ -1,7 +1,7 @@ initialize(); $this->__table = $this->getTableName(); } @@ -90,20 +91,20 @@ class CRM_Core_DAO extends DB_DataObject { /** * Empty definition for virtual function */ - static function getTableName() { + public static function getTableName() { return NULL; } /** * Initialize the DAO object * - * @param string $dsn the database connection string + * @param string $dsn + * The database connection string. * * @return void - * @access private * @static */ - static function init($dsn) { + public static function init($dsn) { $options = &PEAR::getStaticProperty('DB_DataObject', 'options'); $options['database'] = $dsn; if (defined('CIVICRM_DAO_DEBUG')) { @@ -115,13 +116,12 @@ class CRM_Core_DAO extends DB_DataObject { * @param string $fieldName * @param $fieldDef * @param array $params - * */ protected function assignTestFK($fieldName, $fieldDef, $params) { $required = CRM_Utils_Array::value('required', $fieldDef); $FKClassName = CRM_Utils_Array::value('FKClassName', $fieldDef); $dbName = $fieldDef['name']; - $daoName = get_class($this); + $daoName = str_replace('_BAO_', '_DAO_', get_class($this)); // skip the FK if it is not required // if it's contact id we should create even if not required @@ -163,7 +163,8 @@ class CRM_Core_DAO extends DB_DataObject { * * @param string $fieldName * @param array $fieldDef - * @param int $counter the globally-unique ID of the test object + * @param int $counter + * The globally-unique ID of the test object. */ protected function assignTestValue($fieldName, &$fieldDef, $counter) { $dbName = $fieldDef['name']; @@ -273,10 +274,8 @@ class CRM_Core_DAO extends DB_DataObject { * by resetting some of DAO's internal fields. Use this with caution * * @return void - * @access public - * */ - function reset() { + public function reset() { foreach (array_keys($this->table()) as $field) { unset($this->$field); @@ -296,7 +295,7 @@ class CRM_Core_DAO extends DB_DataObject { * * @return string */ - static function getLocaleTableName($tableName) { + public static function getLocaleTableName($tableName) { global $dbLocale; if ($dbLocale) { $tables = CRM_Core_I18n_Schema::schemaStructureTables(); @@ -310,12 +309,15 @@ class CRM_Core_DAO extends DB_DataObject { /** * Execute a query by the current DAO, localizing it along the way (if needed). * - * @param string $query the SQL query for execution - * @param bool $i18nRewrite whether to rewrite the query + * @param string $query + * The SQL query for execution. + * @param bool $i18nRewrite + * Whether to rewrite the query. * - * @return object the current DAO object after the query execution + * @return object + * the current DAO object after the query execution */ - function query($query, $i18nRewrite = TRUE) { + public function query($query, $i18nRewrite = TRUE) { // rewrite queries that should use $dbLocale-based views for multi-language installs global $dbLocale; if ($i18nRewrite and $dbLocale) { @@ -328,13 +330,13 @@ class CRM_Core_DAO extends DB_DataObject { /** * Static function to set the factory instance for this class. * - * @param object $factory the factory application object + * @param object $factory + * The factory application object. * * @return void - * @access public * @static */ - static function setFactory(&$factory) { + public static function setFactory(&$factory) { self::$_factory = &$factory; } @@ -344,9 +346,8 @@ class CRM_Core_DAO extends DB_DataObject { * @param string $table * * @return void - * @access public */ - function factory($table = '') { + public function factory($table = '') { if (!isset(self::$_factory)) { return parent::factory($table); } @@ -359,9 +360,8 @@ class CRM_Core_DAO extends DB_DataObject { * we need to set the links manually. * * @return void - * @access protected */ - function initialize() { + public function initialize() { $this->_connect(); $this->query("SET NAMES utf8"); } @@ -369,11 +369,10 @@ class CRM_Core_DAO extends DB_DataObject { /** * Defines the default key as 'id'. * - * @access protected * * @return array */ - function keys() { + public function keys() { static $keys; if (!isset($keys)) { $keys = array('id'); @@ -385,11 +384,10 @@ class CRM_Core_DAO extends DB_DataObject { * Tells DB_DataObject which keys use autoincrement. * 'id' is autoincrementing by default. * - * @access protected * * @return array */ - function sequenceKey() { + public function sequenceKey() { static $sequenceKeys; if (!isset($sequenceKeys)) { $sequenceKeys = array('id', TRUE); @@ -401,22 +399,21 @@ class CRM_Core_DAO extends DB_DataObject { * Returns list of FK relationships * * @static - * @access public * - * @return array of CRM_Core_Reference_Interface + * @return array + * Array of CRM_Core_Reference_Interface */ - static function getReferenceColumns() { + public static function getReferenceColumns() { return array(); } /** * Returns all the column names of this table * - * @access public * * @return array */ - static function &fields() { + static function &fields() { $result = NULL; return $result; } @@ -424,11 +421,11 @@ class CRM_Core_DAO extends DB_DataObject { /** * Get/set an associative array of table columns * - * @access public - * @param array key=>type array - * @return array (associative) + * @param array key=>type array + * @return array + * (associative) */ - function table() { + public function table() { $fields = &$this->fields(); $table = array(); @@ -447,7 +444,7 @@ class CRM_Core_DAO extends DB_DataObject { /** * @return $this */ - function save() { + public function save() { if (!empty($this->id)) { $this->update(); @@ -467,7 +464,7 @@ class CRM_Core_DAO extends DB_DataObject { return $this; } - function delete($useWhere = FALSE) { + public function delete($useWhere = FALSE) { $result = parent::delete($useWhere); $event = new \Civi\Core\DAO\Event\PostDelete($this, $result); @@ -479,7 +476,7 @@ class CRM_Core_DAO extends DB_DataObject { /** * @param bool $created */ - function log($created = FALSE) { + public function log($created = FALSE) { static $cid = NULL; if (!$this->getLog()) { @@ -496,10 +493,10 @@ class CRM_Core_DAO extends DB_DataObject { return; } - $dao = new CRM_Core_DAO_Log(); - $dao->entity_table = $this->getTableName(); - $dao->entity_id = $this->id; - $dao->modified_id = $cid; + $dao = new CRM_Core_DAO_Log(); + $dao->entity_table = $this->getTableName(); + $dao->entity_id = $this->id; + $dao->modified_id = $cid; $dao->modified_date = date("YmdHis"); $dao->insert(); } @@ -508,12 +505,13 @@ class CRM_Core_DAO extends DB_DataObject { * Given an associative array of name/value pairs, extract all the values * that belong to this object and initialize the object with said values * - * @param array $params (reference ) associative array of name/value pairs + * @param array $params + * (reference ) associative array of name/value pairs. * - * @return boolean did we copy all null values into the object - * @access public + * @return boolean + * did we copy all null values into the object */ - function copyValues(&$params) { + public function copyValues(&$params) { $fields = &$this->fields(); $allNull = TRUE; foreach ($fields as $name => $value) { @@ -549,14 +547,15 @@ class CRM_Core_DAO extends DB_DataObject { * this is a destructive store, calling function is responsible * for keeping sanity of id's. * - * @param object $object the object that we are extracting data from - * @param array $values (reference ) associative array of name/value pairs + * @param object $object + * The object that we are extracting data from. + * @param array $values + * (reference ) associative array of name/value pairs. * * @return void - * @access public * @static */ - static function storeValues(&$object, &$values) { + public static function storeValues(&$object, &$values) { $fields = &$object->fields(); foreach ($fields as $name => $value) { $dbName = $value['name']; @@ -572,13 +571,14 @@ class CRM_Core_DAO extends DB_DataObject { /** * Create an attribute for this specific field. We only do this for strings and text * - * @param array $field the field under task + * @param array $field + * The field under task. * - * @return array|null the attributes for the object - * @access public + * @return array|null + * the attributes for the object * @static */ - static function makeAttribute($field) { + public static function makeAttribute($field) { if ($field) { if (CRM_Utils_Array::value('type', $field) == CRM_Utils_Type::T_STRING) { $maxLength = CRM_Utils_Array::value('maxlength', $field); @@ -604,7 +604,7 @@ class CRM_Core_DAO extends DB_DataObject { $cols = 80; } - $attributes = array(); + $attributes = array(); $attributes['rows'] = $rows; $attributes['cols'] = $cols; return $attributes; @@ -622,16 +622,18 @@ class CRM_Core_DAO extends DB_DataObject { * Get the size and maxLength attributes for this text field * (or for all text fields) in the DAO object. * - * @param string $class name of DAO class - * @param string $fieldName field that i'm interested in or null if + * @param string $class + * Name of DAO class. + * @param string $fieldName + * Field that i'm interested in or null if. * you want the attributes for all DAO text fields * - * @return array assoc array of name => attribute pairs - * @access public + * @return array + * assoc array of name => attribute pairs * @static */ - static function getAttribute($class, $fieldName = NULL) { - $object = new $class( ); + public static function getAttribute($class, $fieldName = NULL) { + $object = new $class(); $fields = &$object->fields(); if ($fieldName != NULL) { $field = CRM_Utils_Array::value($fieldName, $fields); @@ -658,25 +660,29 @@ class CRM_Core_DAO extends DB_DataObject { * * @throws Exception */ - static function transaction($type) { + public static function transaction($type) { CRM_Core_Error::fatal('This function is obsolete, please use CRM_Core_Transaction'); } /** * Check if there is a record with the same name in the db * - * @param string $value the value of the field we are checking - * @param string $daoName the dao object name - * @param string $daoID the id of the object being updated. u can change your name + * @param string $value + * The value of the field we are checking. + * @param string $daoName + * The dao object name. + * @param string $daoID + * The id of the object being updated. u can change your name. * as long as there is no conflict - * @param string $fieldName the name of the field in the DAO + * @param string $fieldName + * The name of the field in the DAO. * - * @return boolean true if object exists - * @access public + * @return boolean + * true if object exists * @static */ - static function objectExists($value, $daoName, $daoID, $fieldName = 'name') { - $object = new $daoName( ); + public static function objectExists($value, $daoName, $daoID, $fieldName = 'name') { + $object = new $daoName(); $object->$fieldName = $value; $config = CRM_Core_Config::singleton(); @@ -694,19 +700,21 @@ class CRM_Core_DAO extends DB_DataObject { * * @param string $tableName * @param string $columnName - * @param bool $i18nRewrite whether to rewrite the query on multilingual setups + * @param bool $i18nRewrite + * Whether to rewrite the query on multilingual setups. * - * @return boolean true if exists, else false + * @return boolean + * true if exists, else false * @static */ - static function checkFieldExists($tableName, $columnName, $i18nRewrite = TRUE) { + public static function checkFieldExists($tableName, $columnName, $i18nRewrite = TRUE) { $query = " SHOW COLUMNS FROM $tableName LIKE %1 "; $params = array(1 => array($columnName, 'String')); - $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, $i18nRewrite); + $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, $i18nRewrite); $result = $dao->fetch() ? TRUE : FALSE; $dao->free(); return $result; @@ -725,7 +733,7 @@ LIKE %1 * @return array * @static */ - static function getStorageValues($tableName = NULL, $maxTablesToCheck = 10, $fieldName = 'Engine') { + public static function getStorageValues($tableName = NULL, $maxTablesToCheck = 10, $fieldName = 'Engine') { $values = array(); $query = "SHOW TABLE STATUS LIKE %1"; @@ -766,7 +774,7 @@ LIKE %1 * * @return bool */ - static function isDBMyISAM($maxTablesToCheck = 10) { + public static function isDBMyISAM($maxTablesToCheck = 10) { // show error if any of the tables, use 'MyISAM' storage engine. $engines = self::getStorageValues(NULL, $maxTablesToCheck); if (array_key_exists('MyISAM', $engines)) { @@ -781,10 +789,11 @@ LIKE %1 * @param string $tableName * @param string $constraint * - * @return boolean true if constraint exists, false otherwise + * @return boolean + * true if constraint exists, false otherwise * @static */ - static function checkConstraintExists($tableName, $constraint) { + public static function checkConstraintExists($tableName, $constraint) { static $show = array(); if (!array_key_exists($tableName, $show)) { @@ -809,11 +818,12 @@ LIKE %1 * * @throws Exception * - * @return boolean true if CONSTRAINT keyword exists, false otherwise + * @return boolean + * true if CONSTRAINT keyword exists, false otherwise */ - static function schemaRequiresRebuilding($tables = array("civicrm_contact")) { + public static function schemaRequiresRebuilding($tables = array("civicrm_contact")) { $show = array(); - foreach($tables as $tableName){ + foreach ($tables as $tableName) { if (!array_key_exists($tableName, $show)) { $query = "SHOW CREATE TABLE $tableName"; $dao = CRM_Core_DAO::executeQuery($query); @@ -827,7 +837,7 @@ LIKE %1 } $result = preg_match("/\bCONSTRAINT\b\s/i", $show[$tableName]) ? TRUE : FALSE; - if ($result == TRUE){ + if ($result == TRUE) { continue; } else { @@ -844,10 +854,11 @@ LIKE %1 * @param string $tableName * @param string $columnName * - * @return boolean true if in format, false otherwise + * @return boolean + * true if in format, false otherwise * @static */ - static function checkFKConstraintInFormat($tableName, $columnName) { + public static function checkFKConstraintInFormat($tableName, $columnName) { static $show = array(); if (!array_key_exists($tableName, $show)) { @@ -863,7 +874,7 @@ LIKE %1 } $constraint = "`FK_{$tableName}_{$columnName}`"; $pattern = "/\bCONSTRAINT\b\s+%s\s+\bFOREIGN\s+KEY\b\s/i"; - return preg_match(sprintf($pattern, $constraint),$show[$tableName]) ? TRUE : FALSE; + return preg_match(sprintf($pattern, $constraint), $show[$tableName]) ? TRUE : FALSE; } /** @@ -873,12 +884,13 @@ LIKE %1 * @param string $columnName * @param string $columnValue * - * @return boolean true if the value is always $columnValue, false otherwise + * @return boolean + * true if the value is always $columnValue, false otherwise * @static */ - static function checkFieldHasAlwaysValue($tableName, $columnName, $columnValue) { - $query = "SELECT * FROM $tableName WHERE $columnName != '$columnValue'"; - $dao = CRM_Core_DAO::executeQuery($query); + public static function checkFieldHasAlwaysValue($tableName, $columnName, $columnValue) { + $query = "SELECT * FROM $tableName WHERE $columnName != '$columnValue'"; + $dao = CRM_Core_DAO::executeQuery($query); $result = $dao->fetch() ? FALSE : TRUE; $dao->free(); return $result; @@ -890,12 +902,13 @@ LIKE %1 * @param string $tableName * @param string $columnName * - * @return boolean true if if the value is always NULL, false otherwise + * @return boolean + * true if if the value is always NULL, false otherwise * @static */ - static function checkFieldIsAlwaysNull($tableName, $columnName) { - $query = "SELECT * FROM $tableName WHERE $columnName IS NOT NULL"; - $dao = CRM_Core_DAO::executeQuery($query); + public static function checkFieldIsAlwaysNull($tableName, $columnName) { + $query = "SELECT * FROM $tableName WHERE $columnName IS NOT NULL"; + $dao = CRM_Core_DAO::executeQuery($query); $result = $dao->fetch() ? FALSE : TRUE; $dao->free(); return $result; @@ -906,10 +919,11 @@ LIKE %1 * * @param string $tableName * - * @return boolean true if exists, else false + * @return boolean + * true if exists, else false * @static */ - static function checkTableExists($tableName) { + public static function checkTableExists($tableName) { $query = " SHOW TABLES LIKE %1 @@ -927,7 +941,7 @@ LIKE %1 * * @return bool */ - function checkVersion($version) { + public function checkVersion($version) { $query = " SELECT version FROM civicrm_domain @@ -939,11 +953,13 @@ FROM civicrm_domain /** * Find a DAO object for the given ID and return it. * - * @param int $id Id of the DAO object being searched for. + * @param int $id + * Id of the DAO object being searched for. * - * @return object Object of the type of the class that called this function. + * @return object + * Object of the type of the class that called this function. */ - static function findById($id) { + public static function findById($id) { $object = new static(); $object->id = $id; if (!$object->find(TRUE)) { @@ -955,17 +971,22 @@ FROM civicrm_domain /** * Given a DAO name, a column name and a column value, find the record and GET the value of another column in that record * - * @param string $daoName Name of the DAO (Example: CRM_Contact_DAO_Contact to retrieve value from a contact) - * @param int $searchValue Value of the column you want to search by - * @param string $returnColumn Name of the column you want to GET the value of - * @param string $searchColumn Name of the column you want to search by - * @param boolean $force Skip use of the cache + * @param string $daoName + * Name of the DAO (Example: CRM_Contact_DAO_Contact to retrieve value from a contact). + * @param int $searchValue + * Value of the column you want to search by. + * @param string $returnColumn + * Name of the column you want to GET the value of. + * @param string $searchColumn + * Name of the column you want to search by. + * @param bool $force + * Skip use of the cache. * - * @return string|null Value of $returnColumn in the retrieved record + * @return string|null + * Value of $returnColumn in the retrieved record * @static - * @access public */ - static function getFieldValue($daoName, $searchValue, $returnColumn = 'name', $searchColumn = 'id', $force = FALSE) { + public static function getFieldValue($daoName, $searchValue, $returnColumn = 'name', $searchColumn = 'id', $force = FALSE) { if ( empty($searchValue) || trim(strtolower($searchValue)) == 'null' @@ -982,7 +1003,7 @@ FROM civicrm_domain } if (!array_key_exists($cacheKey, self::$_dbColumnValueCache) || $force) { - $object = new $daoName( ); + $object = new $daoName(); $object->$searchColumn = $searchValue; $object->selectAdd(); $object->selectAdd($returnColumn); @@ -1001,18 +1022,23 @@ FROM civicrm_domain /** * Given a DAO name, a column name and a column value, find the record and SET the value of another column in that record * - * @param string $daoName Name of the DAO (Example: CRM_Contact_DAO_Contact to retrieve value from a contact) - * @param int $searchValue Value of the column you want to search by - * @param string $setColumn Name of the column you want to SET the value of - * @param string $setValue SET the setColumn to this value - * @param string $searchColumn Name of the column you want to search by - * - * @return boolean true if we found and updated the object, else false + * @param string $daoName + * Name of the DAO (Example: CRM_Contact_DAO_Contact to retrieve value from a contact). + * @param int $searchValue + * Value of the column you want to search by. + * @param string $setColumn + * Name of the column you want to SET the value of. + * @param string $setValue + * SET the setColumn to this value. + * @param string $searchColumn + * Name of the column you want to search by. + * + * @return boolean + * true if we found and updated the object, else false * @static - * @access public */ - static function setFieldValue($daoName, $searchValue, $setColumn, $setValue, $searchColumn = 'id') { - $object = new $daoName( ); + public static function setFieldValue($daoName, $searchValue, $setColumn, $setValue, $searchColumn = 'id') { + $object = new $daoName(); $object->selectAdd(); $object->selectAdd("$searchColumn, $setColumn"); $object->$searchColumn = $searchValue; @@ -1031,13 +1057,14 @@ FROM civicrm_domain * Get sort string * * @param array|object $sort either array or CRM_Utils_Sort - * @param string $default - default sort value + * @param string $default + * Default sort value. * - * @return string - sortString - * @access public + * @return string + * sortString * @static */ - static function getSortString($sort, $default = NULL) { + public static function getSortString($sort, $default = NULL) { // check if sort is of type CRM_Utils_Sort if (is_a($sort, 'CRM_Utils_Sort')) { return $sort->orderBy(); @@ -1056,17 +1083,21 @@ FROM civicrm_domain /** * Fetch object based on array of properties * - * @param string $daoName name of the dao object - * @param array $params (reference ) an assoc array of name/value pairs - * @param array $defaults (reference ) an assoc array to hold the flattened values - * @param array $returnProperities an assoc array of fields that need to be returned, eg array( 'first_name', 'last_name') - * - * @return object an object of type referenced by daoName - * @access public + * @param string $daoName + * Name of the dao object. + * @param array $params + * (reference ) an assoc array of name/value pairs. + * @param array $defaults + * (reference ) an assoc array to hold the flattened values. + * @param array $returnProperities + * An assoc array of fields that need to be returned, eg array( 'first_name', 'last_name'). + * + * @return object + * an object of type referenced by daoName * @static */ - static function commonRetrieve($daoName, &$params, &$defaults, $returnProperities = NULL) { - $object = new $daoName( ); + public static function commonRetrieve($daoName, &$params, &$defaults, $returnProperities = NULL) { + $object = new $daoName(); $object->copyValues($params); // return only specific fields if returnproperties are sent @@ -1085,15 +1116,16 @@ FROM civicrm_domain /** * Delete the object records that are associated with this contact * - * @param string $daoName name of the dao object - * @param int $contactId id of the contact to delete + * @param string $daoName + * Name of the dao object. + * @param int $contactId + * Id of the contact to delete. * * @return void - * @access public * @static */ - static function deleteEntityContact($daoName, $contactId) { - $object = new $daoName( ); + public static function deleteEntityContact($daoName, $contactId) { + $object = new $daoName(); $object->entity_table = 'civicrm_contact'; $object->entity_id = $contactId; @@ -1103,7 +1135,8 @@ FROM civicrm_domain /** * Execute a query * - * @param string $query query to be executed + * @param string $query + * Query to be executed. * * @param array $params * @param bool $abort @@ -1112,17 +1145,17 @@ FROM civicrm_domain * @param bool $i18nRewrite * @param bool $trapException * - * @return CRM_Core_DAO object that holds the results of the query + * @return CRM_Core_DAO + * object that holds the results of the query * @static - * @access public */ static function &executeQuery( $query, - $params = array(), - $abort = TRUE, - $daoName = NULL, - $freeDAO = FALSE, - $i18nRewrite = TRUE, + $params = array(), + $abort = TRUE, + $daoName = NULL, + $freeDAO = FALSE, + $i18nRewrite = TRUE, $trapException = FALSE ) { $queryStr = self::composeQuery($query, $params, $abort); @@ -1131,7 +1164,7 @@ FROM civicrm_domain $dao = new CRM_Core_DAO(); } else { - $dao = new $daoName( ); + $dao = new $daoName(); } if ($trapException) { @@ -1157,18 +1190,20 @@ FROM civicrm_domain /** * Execute a query and get the single result * - * @param string $query query to be executed + * @param string $query + * Query to be executed. * @param array $params * @param bool $abort * @param bool $i18nRewrite - * @return string|null the result of the query if any + * @return string|null + * the result of the query if any * * @static - * @access public */ - static function &singleValueQuery($query, - $params = array(), - $abort = TRUE, + static function &singleValueQuery( + $query, + $params = array(), + $abort = TRUE, $i18nRewrite = TRUE ) { $queryStr = self::composeQuery($query, $params, $abort); @@ -1201,7 +1236,7 @@ FROM civicrm_domain * @return string * @throws Exception */ - static function composeQuery($query, &$params, $abort = TRUE) { + public static function composeQuery($query, &$params, $abort = TRUE) { $tr = array(); foreach ($params as $key => $item) { if (is_numeric($key)) { @@ -1248,7 +1283,7 @@ FROM civicrm_domain /** * @param null $ids */ - static function freeResult($ids = NULL) { + public static function freeResult($ids = NULL) { global $_DB_DATAOBJECT; if (!$ids) { @@ -1275,24 +1310,29 @@ FROM civicrm_domain } /** - * This function is to make a shallow copy of an object + * make a shallow copy of an object * and all the fields in the object * - * @param string $daoName name of the dao - * @param array $criteria array of all the fields & values + * @param string $daoName + * Name of the dao. + * @param array $criteria + * Array of all the fields & values. * on which basis to copy - * @param array $newData array of all the fields & values + * @param array $newData + * Array of all the fields & values. * to be copied besides the other fields - * @param string $fieldsFix array of fields that you want to prefix/suffix/replace - * @param string $blockCopyOfDependencies fields that you want to block from + * @param string $fieldsFix + * Array of fields that you want to prefix/suffix/replace. + * @param string $blockCopyOfDependencies + * Fields that you want to block from. * getting copied * * - * @return (reference ) the newly created copy of the object - * @access public + * @return CRM_Core_DAO + * the newly created copy of the object */ static function ©Generic($daoName, $criteria, $newData = NULL, $fieldsFix = NULL, $blockCopyOfDependencies = NULL) { - $object = new $daoName( ); + $object = new $daoName(); if (!$newData) { $object->id = $criteria['id']; } @@ -1312,12 +1352,12 @@ FROM civicrm_domain break; } - $newObject = new $daoName( ); + $newObject = new $daoName(); $fields = &$object->fields(); if (!is_array($fieldsFix)) { - $fieldsToPrefix = array(); - $fieldsToSuffix = array(); + $fieldsToPrefix = array(); + $fieldsToSuffix = array(); $fieldsToReplace = array(); } if (!empty($fieldsFix['prefix'])) { @@ -1364,12 +1404,12 @@ FROM civicrm_domain return $newObject; } - static function cascadeUpdate($daoName, $fromId, $toId, $newData = array()) { - $object = new $daoName( ); + public static function cascadeUpdate($daoName, $fromId, $toId, $newData = array()) { + $object = new $daoName(); $object->id = $fromId; if ($object->find(TRUE)) { - $newObject = new $daoName( ); + $newObject = new $daoName(); $newObject->id = $toId; if ($newObject->find(TRUE)) { @@ -1432,19 +1472,21 @@ SELECT contact_id /** * Fetch object based on array of properties * - * @param string $daoName name of the dao object + * @param string $daoName + * Name of the dao object. * @param string $fieldIdName * @param int $fieldId * @param $details - * @param array $returnProperities an assoc array of fields that need to be returned, eg array( 'first_name', 'last_name') + * @param array $returnProperities + * An assoc array of fields that need to be returned, eg array( 'first_name', 'last_name'). * - * @return object an object of type referenced by daoName - * @access public + * @return object + * an object of type referenced by daoName * @static */ - static function commonRetrieveAll($daoName, $fieldIdName = 'id', $fieldId, &$details, $returnProperities = NULL) { - require_once (str_replace('_', DIRECTORY_SEPARATOR, $daoName) . ".php"); - $object = new $daoName( ); + public static function commonRetrieveAll($daoName, $fieldIdName = 'id', $fieldId, &$details, $returnProperities = NULL) { + require_once(str_replace('_', DIRECTORY_SEPARATOR, $daoName) . ".php"); + $object = new $daoName(); $object->$fieldIdName = $fieldId; // return only specific fields if returnproperties are sent @@ -1464,7 +1506,7 @@ SELECT contact_id return $details; } - static function dropAllTables() { + public static function dropAllTables() { // first drop all the custom tables we've created CRM_Core_BAO_CustomGroup::dropAllTables(); @@ -1486,7 +1528,7 @@ SELECT contact_id * * @return string */ - static function escapeString($string) { + public static function escapeString($string) { static $_dao = NULL; if (!$_dao) { @@ -1499,7 +1541,8 @@ SELECT contact_id if (!defined('CIVICRM_DSN')) { if (function_exists('mysql_real_escape_string')) { return mysql_real_escape_string($string); - } else { + } + else { throw new CRM_Core_Exception("Cannot generate SQL. \"mysql_real_escape_string\" is missing. Have you installed PHP \"mysql\" extension?"); } } @@ -1513,11 +1556,13 @@ SELECT contact_id /** * Escape a list of strings for use with "WHERE X IN (...)" queries. * - * @param $strings array - * @param $default string the value to use if $strings has no elements - * @return string eg "abc","def","ghi" + * @param array $strings + * @param string $default + * the value to use if $strings has no elements. + * @return string + * eg "abc","def","ghi" */ - static function escapeStrings($strings, $default = NULL) { + public static function escapeStrings($strings, $default = NULL) { static $_dao = NULL; if (!$_dao) { $_dao = new CRM_Core_DAO(); @@ -1536,14 +1581,15 @@ SELECT contact_id * * @return string */ - static function escapeWildCardString($string) { + public static function escapeWildCardString($string) { // CRM-9155 // ensure we escape the single characters % and _ which are mysql wild // card characters and could come in via sortByCharacter // note that mysql does not escape these characters if ($string && in_array($string, array('%', '_', '%%', '_%') - )) { + ) + ) { return '\\' . $string; } @@ -1579,16 +1625,24 @@ SELECT contact_id 'CRM_Core_DAO_StateProvince', 'CRM_Core_DAO_Country', 'CRM_Core_DAO_Domain', - 'CRM_Financial_DAO_FinancialType'//because valid ones exist & we use pick them due to pseudoconstant can't reliably create & delete these + 'CRM_Financial_DAO_FinancialType' + //because valid ones exist & we use pick them due to pseudoconstant can't reliably create & delete these ); + // Prefer to instantiate BAO's instead of DAO's (when possible) + // so that assignTestValue()/assignTestFK() can be overloaded. + $baoName = str_replace('_DAO_', '_BAO_', $daoName); + if (class_exists($baoName)) { + $daoName = $baoName; + } + for ($i = 0; $i < $numObjects; ++$i) { ++$counter; /** @var CRM_Core_DAO $object */ $object = new $daoName(); - $fields = & $object->fields(); + $fields = &$object->fields(); foreach ($fields as $fieldName => $fieldDef) { $dbName = $fieldDef['name']; $FKClassName = CRM_Utils_Array::value('FKClassName', $fieldDef); @@ -1602,7 +1656,8 @@ SELECT contact_id if ($FKClassName != NULL) { $object->assignTestFK($fieldName, $fieldDef, $params); continue; - } else { + } + else { $object->assignTestValue($fieldName, $fieldDef, $counter); } } @@ -1636,7 +1691,7 @@ SELECT contact_id * @param string $daoName * @param array $params */ - static function deleteTestObjects($daoName, $params = array()) { + public static function deleteTestObjects($daoName, $params = array()) { //this is a test function also backtrace is set for the test suite it sometimes unsets itself // so we re-set here in case $config = CRM_Core_Config::singleton(); @@ -1661,7 +1716,8 @@ SELECT contact_id && ($required || $dbName == 'contact_id') //I'm a bit stuck on this one - we might need to change the singleValueAlter so that the entities don't share a contact // to make this test process pass - line below makes pass for now - && $dbName != 'member_of_contact_id') { + && $dbName != 'member_of_contact_id' + ) { $deletions[] = array($FKClassName, array('id' => $object->$dbName)); // x } } @@ -1671,7 +1727,7 @@ SELECT contact_id foreach ($deletions as $deletion) { CRM_Core_DAO::deleteTestObjects($deletion[0], $deletion[1]); - } + } } /** @@ -1681,7 +1737,7 @@ SELECT contact_id * @param array $params * @param $defaults */ - static function setCreateDefaults(&$params, $defaults) { + public static function setCreateDefaults(&$params, $defaults) { if (isset($params['id'])) { return; } @@ -1699,7 +1755,7 @@ SELECT contact_id * * @return string */ - static function createTempTableName($prefix = 'civicrm', $addRandomString = TRUE, $string = NULL) { + public static function createTempTableName($prefix = 'civicrm', $addRandomString = TRUE, $string = NULL) { $tableName = $prefix . "_temp"; if ($addRandomString) { @@ -1719,7 +1775,7 @@ SELECT contact_id * * @return bool */ - static function checkTriggerViewPermission($view = TRUE, $trigger = TRUE) { + public static function checkTriggerViewPermission($view = TRUE, $trigger = TRUE) { // test for create view and trigger permissions and if allowed, add the option to go multilingual // and logging // I'm not sure why we use the getStaticProperty for an error, rather than checking for DB_Error @@ -1764,7 +1820,7 @@ SELECT contact_id * @param null $message * @param bool $printDAO */ - static function debugPrint($message = NULL, $printDAO = TRUE) { + public static function debugPrint($message = NULL, $printDAO = TRUE) { CRM_Utils_System::xMemory("{$message}: "); if ($printDAO) { @@ -1781,12 +1837,13 @@ SELECT contact_id * Build a list of triggers via hook and add them to (err, reconcile them * with) the database. * - * @param $tableName string the specific table requiring a rebuild; or NULL to rebuild all tables + * @param string $tableName + * the specific table requiring a rebuild; or NULL to rebuild all tables. * @param bool $force * * @see CRM-9716 */ - static function triggerRebuild($tableName = NULL, $force = FALSE) { + public static function triggerRebuild($tableName = NULL, $force = FALSE) { $info = array(); $logging = new CRM_Logging_Schema; @@ -1811,7 +1868,7 @@ SELECT contact_id * * Stop using functions and find another way to strip numeric characters from phones * * Give better error messages (currently a missing fn fatals with "unknown error") */ - static function checkSqlFunctionsExist() { + public static function checkSqlFunctionsExist() { if (!self::$_checkedSqlFunctionsExist) { self::$_checkedSqlFunctionsExist = TRUE; $dao = CRM_Core_DAO::executeQuery("SHOW function status WHERE db = database() AND name = 'civicrm_strip_non_numeric'"); @@ -1824,9 +1881,10 @@ SELECT contact_id /** * Wrapper function to drop triggers * - * @param $tableName string the specific table requiring a rebuild; or NULL to rebuild all tables + * @param string $tableName + * the specific table requiring a rebuild; or NULL to rebuild all tables. */ - static function dropTriggers($tableName = NULL) { + public static function dropTriggers($tableName = NULL) { $info = array(); $logging = new CRM_Logging_Schema; @@ -1837,10 +1895,12 @@ SELECT contact_id } /** - * @param $info array per hook_civicrm_triggerInfo - * @param $onlyTableName string the specific table requiring a rebuild; or NULL to rebuild all tables + * @param array $info + * per hook_civicrm_triggerInfo. + * @param string $onlyTableName + * the specific table requiring a rebuild; or NULL to rebuild all tables. */ - static function createTriggers(&$info, $onlyTableName = NULL) { + public static function createTriggers(&$info, $onlyTableName = NULL) { // Validate info array, should probably raise errors? if (is_array($info) == FALSE) { return; @@ -1925,11 +1985,11 @@ SELECT contact_id } foreach ($tables as $eventName => $events) { foreach ($events as $whenName => $parts) { - $varString = implode("\n", $parts['variables']); - $sqlString = implode("\n", $parts['sql']); - $validName = CRM_Core_DAO::shortenSQLName($tableName, 48, TRUE); + $varString = implode("\n", $parts['variables']); + $sqlString = implode("\n", $parts['sql']); + $validName = CRM_Core_DAO::shortenSQLName($tableName, 48, TRUE); $triggerName = "{$validName}_{$whenName}_{$eventName}"; - $triggerSQL = "CREATE TRIGGER $triggerName $whenName $eventName ON $tableName FOR EACH ROW BEGIN $varString $sqlString END"; + $triggerSQL = "CREATE TRIGGER $triggerName $whenName $eventName ON $tableName FOR EACH ROW BEGIN $varString $sqlString END"; CRM_Core_DAO::executeQuery("DROP TRIGGER IF EXISTS $triggerName"); CRM_Core_DAO::executeQuery( @@ -1948,10 +2008,11 @@ SELECT contact_id /** * Given a list of fields, create a list of references. * - * @param string $className BAO/DAO class name + * @param string $className + * BAO/DAO class name. * @return array */ - static function createReferenceColumns($className) { + public static function createReferenceColumns($className) { $result = array(); $fields = $className::fields(); foreach ($fields as $field) { @@ -1971,9 +2032,10 @@ SELECT contact_id /** * Find all records which refer to this entity. * - * @return array of objects referencing this + * @return array + * Array of objects referencing this */ - function findReferences() { + public function findReferences() { $links = self::getReferencesToTable(static::getTableName()); $occurrences = array(); @@ -1994,14 +2056,15 @@ SELECT contact_id } /** - * @return array each item has keys: - * - name: string - * - type: string - * - count: int - * - table: string|null SQL table name - * - key: string|null SQL column name - */ - function getReferenceCounts() { + * @return array + * each item has keys: + * - name: string + * - type: string + * - count: int + * - table: string|null SQL table name + * - key: string|null SQL column name + */ + public function getReferenceCounts() { $links = self::getReferencesToTable(static::getTableName()); $counts = array(); @@ -2031,12 +2094,14 @@ SELECT contact_id * schema metadata in dynamicForeignKey which enumerates a restricted * set of possible entity_table's. * - * @param string $tableName table referred to + * @param string $tableName + * Table referred to. * - * @return array structure of table and column, listing every table with a - * foreign key reference to $tableName, and the column where the key appears. + * @return array + * structure of table and column, listing every table with a + * foreign key reference to $tableName, and the column where the key appears. */ - static function getReferencesToTable($tableName) { + public static function getReferencesToTable($tableName) { $refsFound = array(); foreach (CRM_Core_DAO_AllCoreTables::getClasses() as $daoClassName) { $links = $daoClassName::getReferenceColumns(); @@ -2055,7 +2120,8 @@ SELECT contact_id /** * Lookup the value of a MySQL global configuration variable. * - * @param string $name e.g. "thread_stack" + * @param string $name + * E.g. "thread_stack". * @param mixed $default * @return mixed */ @@ -2078,8 +2144,10 @@ SELECT contact_id * The overriding function will generally call the lower-level CRM_Core_PseudoConstant::get * * @param string $fieldName - * @param string $context : @see CRM_Core_DAO::buildOptionsContext - * @param array $props : whatever is known about this bao object + * @param string $context + * @see CRM_Core_DAO::buildOptionsContext. + * @param array $props + * whatever is known about this bao object. * * @return Array|bool */ @@ -2115,7 +2183,7 @@ SELECT contact_id /** * Provides documentation and validation for the buildOptions $context param * - * @param String $context + * @param string $context * * @throws Exception * @return array @@ -2138,7 +2206,7 @@ SELECT contact_id * @param string $fieldName * @return bool|array */ - function getFieldSpec($fieldName) { + public function getFieldSpec($fieldName) { $fields = $this->fields(); $fieldKeys = $this->fieldKeys(); @@ -2161,12 +2229,17 @@ SELECT contact_id * $field => array('LIKE' => array('%me%)) * etc * - * @param string $fieldName name of fields - * @param $filter array filter to be applied indexed by operator - * @param $type String type of field (not actually used - nor in api @todo ) - * @param $alias String alternative field name ('as') @todo- not actually used - * @param bool $returnSanitisedArray return a sanitised array instead of a clause - * this is primarily so we can add filters @ the api level to the Query object based fields + * @param string $fieldName + * Name of fields. + * @param array $filter + * filter to be applied indexed by operator. + * @param string $type + * type of field (not actually used - nor in api @todo ). + * @param string $alias + * alternative field name ('as') @todo- not actually used. + * @param bool $returnSanitisedArray + * Return a sanitised array instead of a clause. + * this is primarily so we can add filters @ the api level to the Query object based fields * * @throws Exception * @@ -2177,7 +2250,8 @@ SELECT contact_id * preferable to not double-banger the return context next refactor of this - but keeping the attention * in one place has some advantages as we try to extend this format * - * @return NULL|string|array a string is returned if $returnSanitisedArray is not set, otherwise and Array or NULL + * @return NULL|string|array + * a string is returned if $returnSanitisedArray is not set, otherwise and Array or NULL * depending on whether it is supported as yet */ public static function createSQLFilter($fieldName, $filter, $type, $alias = NULL, $returnSanitisedArray = FALSE) { @@ -2231,7 +2305,7 @@ SELECT contact_id default: if (!$returnSanitisedArray) { - return(sprintf('%s %s "%s"', $fieldName, $operator, CRM_Core_DAO::escapeString($criteria))); + return (sprintf('%s %s "%s"', $fieldName, $operator, CRM_Core_DAO::escapeString($criteria))); } else { return NULL; // not yet implemented (tests required to implement) @@ -2247,7 +2321,23 @@ SELECT contact_id * @return array */ public static function acceptedSQLOperators() { - return array('=', '<=', '>=', '>', '<', 'LIKE', "<>", "!=", "NOT LIKE", 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'IS NOT NULL', 'IS NULL'); + return array( + '=', + '<=', + '>=', + '>', + '<', + 'LIKE', + "<>", + "!=", + "NOT LIKE", + 'IN', + 'NOT IN', + 'BETWEEN', + 'NOT BETWEEN', + 'IS NOT NULL', + 'IS NULL' + ); } /** @@ -2258,8 +2348,10 @@ SELECT contact_id * which can be longer than this length, this function helps with creating * strings that meet various criteria. * - * @param string $string - the string to be shortened - * @param int $length - the max length of the string + * @param string $string + * The string to be shortened. + * @param int $length + * The max length of the string. * * @param bool $makeRandom * @@ -2287,6 +2379,7 @@ SELECT contact_id /** * @param array $params */ - function setApiFilter(&$params) {} + public function setApiFilter(&$params) { + } }