codespell: CRM/*
[civicrm-core.git] / CRM / Core / DAO.php
index ed999153f09361bf59d0b32266ede54262b2ba75..17a94514120af33e0f0359946c7d569d59a09dbd 100644 (file)
@@ -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.                                    |
   |                                                                    |
   | 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);