| 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.
QUERY_FORMAT_WILDCARD = 1,
QUERY_FORMAT_NO_QUOTES = 2;
- /*
+ /**
* Define entities that shouldn't be created or deleted when creating/ deleting
- * test objects - this prevents world regions, countries etc from being added / deleted
+ * test objects - this prevents world regions, countries etc from being added / deleted
+ * @var array
*/
static $_testEntitiesToSkip = array();
/**
* Class constructor
*
* @return \CRM_Core_DAO
- * @access public
*/
public function __construct() {
$this->initialize();
* The database connection string.
*
* @return void
- * @static
*/
public static function init($dsn) {
$options = &PEAR::getStaticProperty('DB_DataObject', 'options');
$required = TRUE;
}
if (!$required && $dbName != 'contact_id') {
- $fkDAO = new $FKClassName;
+ $fkDAO = new $FKClassName();
if ($fkDAO->find(TRUE)) {
$this->$dbName = $fkDAO->id;
}
case CRM_Utils_Type::T_TIME:
CRM_Core_Error::fatal('T_TIME shouldnt be used.');
- //$object->$dbName='000000';
- //break;
+ //$object->$dbName='000000';
+ //break;
case CRM_Utils_Type::T_CCNUM:
$this->$dbName = '4111 1111 1111 1111';
break;
* The factory application object.
*
* @return void
- * @static
*/
public static function setFactory(&$factory) {
self::$_factory = &$factory;
/**
* Returns list of FK relationships
*
- * @static
*
* @return array
* Array of CRM_Core_Reference_Interface
*
* @return array
*/
- static function &fields() {
+ public static function &fields() {
$result = NULL;
return $result;
}
/**
* Get/set an associative array of table columns
*
- * @param array key=>type array
* @return array
* (associative)
*/
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);
* @param array $params
* (reference ) associative array of name/value pairs.
*
- * @return boolean
- * did we copy all null values into the object
+ * @return bool
+ * Did we copy all null values into the object
*/
public function copyValues(&$params) {
$fields = &$this->fields();
* (reference ) associative array of name/value pairs.
*
* @return void
- * @static
*/
public static function storeValues(&$object, &$values) {
$fields = &$object->fields();
*
* @return array|null
* the attributes for the object
- * @static
*/
public static function makeAttribute($field) {
if ($field) {
}
/**
- * 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
*
* @return array
* assoc array of name => attribute pairs
- * @static
*/
public static function getAttribute($class, $fieldName = NULL) {
$object = new $class();
* @param string $fieldName
* The name of the field in the DAO.
*
- * @return boolean
+ * @return bool
* true if object exists
- * @static
*/
public static function objectExists($value, $daoName, $daoID, $fieldName = 'name') {
$object = new $daoName();
* @param bool $i18nRewrite
* Whether to rewrite the query on multilingual setups.
*
- * @return boolean
+ * @return bool
* true if exists, else false
- * @static
*/
public static function checkFieldExists($tableName, $columnName, $i18nRewrite = TRUE) {
$query = "
* @param string $fieldName
*
* @return array
- * @static
*/
public static function getStorageValues($tableName = NULL, $maxTablesToCheck = 10, $fieldName = 'Engine') {
$values = array();
* @param string $tableName
* @param string $constraint
*
- * @return boolean
+ * @return bool
* true if constraint exists, false otherwise
- * @static
*/
public static function checkConstraintExists($tableName, $constraint) {
static $show = array();
*
* @throws Exception
*
- * @return boolean
+ * @return bool
* true if CONSTRAINT keyword exists, false otherwise
*/
public static function schemaRequiresRebuilding($tables = array("civicrm_contact")) {
* @param string $tableName
* @param string $columnName
*
- * @return boolean
+ * @return bool
* true if in format, false otherwise
- * @static
*/
public static function checkFKConstraintInFormat($tableName, $columnName) {
static $show = array();
* @param string $columnName
* @param string $columnValue
*
- * @return boolean
+ * @return bool
* true if the value is always $columnValue, false otherwise
- * @static
*/
public static function checkFieldHasAlwaysValue($tableName, $columnName, $columnValue) {
$query = "SELECT * FROM $tableName WHERE $columnName != '$columnValue'";
* @param string $tableName
* @param string $columnName
*
- * @return boolean
+ * @return bool
* true if if the value is always NULL, false otherwise
- * @static
*/
public static function checkFieldIsAlwaysNull($tableName, $columnName) {
$query = "SELECT * FROM $tableName WHERE $columnName IS NOT NULL";
*
* @param string $tableName
*
- * @return boolean
+ * @return bool
* true if exists, else false
- * @static
*/
public static function checkTableExists($tableName) {
$query = "
*
* @return string|null
* Value of $returnColumn in the retrieved record
- * @static
*/
public static function getFieldValue($daoName, $searchValue, $returnColumn = 'name', $searchColumn = 'id', $force = FALSE) {
if (
* @param string $searchColumn
* Name of the column you want to search by.
*
- * @return boolean
+ * @return bool
* true if we found and updated the object, else false
- * @static
*/
public static function setFieldValue($daoName, $searchValue, $setColumn, $setValue, $searchColumn = 'id') {
$object = new $daoName();
*
* @return string
* sortString
- * @static
*/
public static function getSortString($sort, $default = NULL) {
// check if sort is of type CRM_Utils_Sort
*
* @return object
* an object of type referenced by daoName
- * @static
*/
public static function commonRetrieve($daoName, &$params, &$defaults, $returnProperities = NULL) {
$object = new $daoName();
* Id of the contact to delete.
*
* @return void
- * @static
*/
public static function deleteEntityContact($daoName, $contactId) {
$object = new $daoName();
* @param bool $i18nRewrite
* @param bool $trapException
*
- * @return CRM_Core_DAO
+ * @return CRM_Core_DAO|object
* object that holds the results of the query
- * @static
+ * NB - if this is defined as just returning a DAO phpstorm keeps pointing
+ * out all the properties that are not part of the DAO
*/
- static function &executeQuery(
+ public static function &executeQuery(
$query,
$params = array(),
$abort = TRUE,
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();
}
* @return string|null
* the result of the query if any
*
- * @static
*/
- static function &singleValueQuery(
+ public static function &singleValueQuery(
$query,
$params = array(),
$abort = TRUE,
}
/**
- * make a shallow copy of an object
+ * make a shallow copy of an object.
* and all the fields in the object
*
* @param string $daoName
* @return CRM_Core_DAO
* the newly created copy of the object
*/
- static function ©Generic($daoName, $criteria, $newData = NULL, $fieldsFix = NULL, $blockCopyOfDependencies = NULL) {
+ public static function ©Generic($daoName, $criteria, $newData = NULL, $fieldsFix = NULL, $blockCopyOfDependencies = NULL) {
$object = new $daoName();
if (!$newData) {
$object->id = $criteria['id'];
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;
*
* @return object
* an object of type referenced by daoName
- * @static
*/
public static function commonRetrieveAll($daoName, $fieldIdName = 'id', $fieldId, &$details, $returnProperities = NULL) {
- require_once(str_replace('_', DIRECTORY_SEPARATOR, $daoName) . ".php");
+ require_once str_replace('_', DIRECTORY_SEPARATOR, $daoName) . ".php";
$object = new $daoName();
$object->$fieldIdName = $fieldId;
* @param int $numObjects
* @param bool $createOnly
*
- * @return
+ * @return object|array|NULL
+ * NULL if $createOnly. A single object if $numObjects==1. Otherwise, an array of multiple objects.
*/
- static function createTestObject(
+ public static function createTestObject(
$daoName,
$params = array(),
$numObjects = 1,
'CRM_Core_DAO_StateProvince',
'CRM_Core_DAO_Country',
'CRM_Core_DAO_Domain',
- 'CRM_Financial_DAO_FinancialType'
+ 'CRM_Financial_DAO_FinancialType',
//because valid ones exist & we use pick them due to pseudoconstant can't reliably create & delete these
);
}
if ($createOnly) {
- return;
+ return NULL;
}
elseif ($numObjects == 1) {
return $objects[0];
public static function triggerRebuild($tableName = NULL, $force = FALSE) {
$info = array();
- $logging = new CRM_Logging_Schema;
+ $logging = new CRM_Logging_Schema();
$logging->triggerInfo($info, $tableName, $force);
CRM_Core_I18n_Schema::triggerInfo($info, $tableName);
public static function dropTriggers($tableName = NULL) {
$info = array();
- $logging = new CRM_Logging_Schema;
+ $logging = new CRM_Logging_Schema();
$logging->triggerInfo($info, $tableName);
// drop all existing triggers on all tables
*
* @param string $fieldName
* @param string $context
- * @see CRM_Core_DAO::buildOptionsContext.
+ * @see CRM_Core_DAO::buildOptionsContext
* @param array $props
* whatever is known about this bao object.
*
- * @return Array|bool
+ * @return array|bool
*/
public static function buildOptions($fieldName, $context = NULL, $props = array()) {
// If a given bao does not override this function
public function getOptionLabels() {
$fields = $this->fields();
if ($fields === NULL) {
- throw new Exception ('Cannot call getOptionLabels on CRM_Core_DAO');
+ throw new Exception('Cannot call getOptionLabels on CRM_Core_DAO');
}
foreach ($fields as $field) {
$name = CRM_Utils_Array::value('name', $field);
}
$escapedCriteria = array_map(array(
'CRM_Core_DAO',
- 'escapeString'
+ 'escapeString',
), $criteria);
if (!$returnSanitisedArray) {
return (sprintf('%s %s ("%s")', $fieldName, $operator, implode('", "', $escapedCriteria)));
}
return $escapedCriteria;
- break;
// binary operators
'BETWEEN',
'NOT BETWEEN',
'IS NOT NULL',
- 'IS NULL'
+ 'IS NULL',
);
}