X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FDAO.php;h=17a94514120af33e0f0359946c7d569d59a09dbd;hb=b44e3f8468ceba3e1b321d31dd2e35a1aa1a5d9a;hp=ed999153f09361bf59d0b32266ede54262b2ba75;hpb=795492f30ecf0ac59d381960e44ac62dcb2b0628;p=civicrm-core.git diff --git a/CRM/Core/DAO.php b/CRM/Core/DAO.php index ed999153f0..17a9451412 100644 --- a/CRM/Core/DAO.php +++ b/CRM/Core/DAO.php @@ -3,7 +3,7 @@ +--------------------------------------------------------------------+ | CiviCRM version 4.6 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2014 | + | Copyright CiviCRM LLC (c) 2004-2015 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -23,13 +23,13 @@ | GNU Affero General Public License or the licensing of CiviCRM, | | see the CiviCRM license FAQ at http://civicrm.org/licensing | +--------------------------------------------------------------------+ -*/ + */ /** * Our base DAO class. All DAO classes should inherit from this class. * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2014 + * @copyright CiviCRM LLC (c) 2004-2015 * $Id$ * */ @@ -70,7 +70,7 @@ class CRM_Core_DAO extends DB_DataObject { */ static $_testEntitiesToSkip = array(); /** - * The factory class for this application + * The factory class for this application. * @var object */ static $_factory = NULL; @@ -78,7 +78,7 @@ class CRM_Core_DAO extends DB_DataObject { static $_checkedSqlFunctionsExist = FALSE; /** - * Class constructor + * Class constructor. * * @return \CRM_Core_DAO */ @@ -88,14 +88,14 @@ class CRM_Core_DAO extends DB_DataObject { } /** - * Empty definition for virtual function + * Empty definition for virtual function. */ public static function getTableName() { return NULL; } /** - * Initialize the DAO object + * Initialize the DAO object. * * @param string $dsn * The database connection string. @@ -220,7 +220,7 @@ class CRM_Core_DAO extends DB_DataObject { break; case CRM_Utils_Type::T_TIME: - CRM_Core_Error::fatal('T_TIME shouldnt be used.'); + CRM_Core_Error::fatal('T_TIME shouldn't be used.'); //$object->$dbName='000000'; //break; case CRM_Utils_Type::T_CCNUM: @@ -393,7 +393,7 @@ class CRM_Core_DAO extends DB_DataObject { } /** - * Returns list of FK relationships + * Returns list of FK relationships. * * * @return array @@ -404,7 +404,7 @@ class CRM_Core_DAO extends DB_DataObject { } /** - * Returns all the column names of this table + * Returns all the column names of this table. * * * @return array @@ -459,6 +459,31 @@ class CRM_Core_DAO extends DB_DataObject { return $this; } + /** + * Deletes items from table which match current objects variables. + * + * Returns the true on success + * + * for example + * + * Designed to be extended + * + * $object = new mytable(); + * $object->ID=123; + * echo $object->delete(); // builds a conditon + * + * $object = new mytable(); + * $object->whereAdd('age > 12'); + * $object->limit(1); + * $object->orderBy('age DESC'); + * $object->delete(true); // dont use object vars, use the conditions, limit and order. + * + * @param bool $useWhere (optional) If DB_DATAOBJECT_WHEREADD_ONLY is passed in then + * we will build the condition only using the whereAdd's. Default is to + * build the condition only using the object parameters. + * + * * @return mixed Int (No. of rows affected) on success, false on failure, 0 on no data affected + */ public function delete($useWhere = FALSE) { $result = parent::delete($useWhere); @@ -612,7 +637,7 @@ class CRM_Core_DAO extends DB_DataObject { } /** - * Get the size and maxLength attributes for this text field + * Get the size and maxLength attributes for this text field. * (or for all text fields) in the DAO object. * * @param string $class @@ -657,7 +682,7 @@ class CRM_Core_DAO extends DB_DataObject { } /** - * Check if there is a record with the same name in the db + * Check if there is a record with the same name in the db. * * @param string $value * The value of the field we are checking. @@ -687,7 +712,7 @@ class CRM_Core_DAO extends DB_DataObject { } /** - * Check if there is a given column in a specific table + * Check if there is a given column in a specific table. * * @param string $tableName * @param string $columnName @@ -865,7 +890,7 @@ LIKE %1 } /** - * Check whether a specific column in a specific table has always the same value + * Check whether a specific column in a specific table has always the same value. * * @param string $tableName * @param string $columnName @@ -883,7 +908,7 @@ LIKE %1 } /** - * Check whether a specific column in a specific table is always NULL + * Check whether a specific column in a specific table is always NULL. * * @param string $tableName * @param string $columnName @@ -900,7 +925,7 @@ LIKE %1 } /** - * Check if there is a given table in the database + * Check if there is a given table in the database. * * @param string $tableName * @@ -1036,7 +1061,7 @@ FROM civicrm_domain } /** - * Get sort string + * Get sort string. * * @param array|object $sort either array or CRM_Utils_Sort * @param string $default @@ -1062,7 +1087,7 @@ FROM civicrm_domain } /** - * Fetch object based on array of properties + * Fetch object based on array of properties. * * @param string $daoName * Name of the dao object. @@ -1094,7 +1119,7 @@ FROM civicrm_domain } /** - * Delete the object records that are associated with this contact + * Delete the object records that are associated with this contact. * * @param string $daoName * Name of the dao object. @@ -1112,7 +1137,7 @@ FROM civicrm_domain } /** - * Execute a query + * Execute a query. * * @param string $query * Query to be executed. @@ -1124,8 +1149,10 @@ FROM civicrm_domain * @param bool $i18nRewrite * @param bool $trapException * - * @return CRM_Core_DAO + * @return CRM_Core_DAO|object * object that holds the results of the query + * NB - if this is defined as just returning a DAO phpstorm keeps pointing + * out all the properties that are not part of the DAO */ public static function &executeQuery( $query, @@ -1158,7 +1185,7 @@ FROM civicrm_domain if ($freeDAO || preg_match('/^(insert|update|delete|create|drop|replace)/i', $queryStr) ) { - // we typically do this for insert/update/delete stataments OR if explicitly asked to + // we typically do this for insert/update/delete statements OR if explicitly asked to // free the dao $dao->free(); } @@ -1166,7 +1193,7 @@ FROM civicrm_domain } /** - * Execute a query and get the single result + * Execute a query and get the single result. * * @param string $query * Query to be executed. @@ -1287,7 +1314,7 @@ FROM civicrm_domain } /** - * make a shallow copy of an object + * make a shallow copy of an object. * and all the fields in the object * * @param string $daoName @@ -1381,6 +1408,16 @@ FROM civicrm_domain return $newObject; } + /** + * Cascade update through related entities. + * + * @param string $daoName + * @param $fromId + * @param $toId + * @param array $newData + * + * @return null + */ public static function cascadeUpdate($daoName, $fromId, $toId, $newData = array()) { $object = new $daoName(); $object->id = $fromId; @@ -1447,7 +1484,7 @@ SELECT contact_id } /** - * Fetch object based on array of properties + * Fetch object based on array of properties. * * @param string $daoName * Name of the dao object. @@ -1662,7 +1699,7 @@ SELECT contact_id } /** - * Deletes the this object plus any dependent objects that are associated with it + * Deletes the this object plus any dependent objects that are associated with it. * ONLY USE FOR TESTING * * @param string $daoName @@ -1708,7 +1745,7 @@ SELECT contact_id } /** - * Set defaults when creating new entity + * Set defaults when creating new entity. * (don't call this set defaults as already in use with different signature in some places) * * @param array $params @@ -1856,7 +1893,7 @@ SELECT contact_id } /** - * Wrapper function to drop triggers + * Wrapper function to drop triggers. * * @param string $tableName * the specific table requiring a rebuild; or NULL to rebuild all tables. @@ -2167,10 +2204,12 @@ SELECT contact_id */ public static function buildOptionsContext($context = NULL) { $contexts = array( - 'get' => "All options are returned, even if they are disabled. Labels are translated.", - 'create' => "Options are filtered appropriately for the object being created/updated. Labels are translated.", - 'search' => "Searchable options are returned. Labels are translated.", - 'validate' => "All options are returned, even if they are disabled. Machine names are used in place of labels.", + 'get' => "get: all options are returned, even if they are disabled; labels are translated.", + 'create' => "create: options are filtered appropriately for the object being created/updated; labels are translated.", + 'search' => "search: searchable options are returned; labels are translated.", + 'validate' => "validate: all options are returned, even if they are disabled; machine names are used in place of labels.", + 'abbreviate' => "abbreviate: enabled options are returned; labels are replaced with abbreviations.", + 'match' => "match: enabled options are returned using machine names as keys; labels are translated.", ); // Validation: enforce uniformity of this param if ($context !== NULL && !isset($contexts[$context])) { @@ -2345,7 +2384,7 @@ SELECT contact_id } // the string is longer than the length and we need a uniq string - // for the same tablename we need the same uniq string everytime + // for the same tablename we need the same uniq string every time // hence we use md5 on the string, which is not random // we'll append 8 characters to the end of the tableName $md5string = substr(md5($string), 0, 8);