API - add field options to getoptions metadata
[civicrm-core.git] / CRM / Utils / Hook.php
index 8eddda2c8cae4e0165430918245e287c8bd32036..25dec213049ecbb47f03cf847a1cf9247692e185 100644 (file)
@@ -23,7 +23,7 @@
  | GNU Affero General Public License or the licensing of CiviCRM,     |
  | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
  +--------------------------------------------------------------------+
-*/
+ */
 
 /**
  *
@@ -56,7 +56,6 @@ abstract class CRM_Utils_Hook {
    * pattern and cache the instance in this variable
    *
    * @var object
-   * @static
    */
   static private $_singleton = NULL;
 
@@ -71,7 +70,7 @@ abstract class CRM_Utils_Hook {
   private $commonCiviModules = array();
 
   /**
-   * Constructor and getter for the singleton instance
+   * Constructor and getter for the singleton instance.
    *
    * @param bool $fresh
    *
@@ -89,7 +88,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * Invoke hooks
+   * Invoke hooks.
    *
    * @param int $numParams
    *   Number of parameters to pass to the hook.
@@ -295,7 +294,8 @@ abstract class CRM_Utils_Hook {
    * @param object $objectRef
    *   The reference to the object if available.
    *
-   * @return mixed             based on op. pre-hooks return a boolean or
+   * @return mixed
+   *   based on op. pre-hooks return a boolean or
    *                           an error message which aborts the operation
    */
   public static function post($op, $objectName, $objectId, &$objectRef) {
@@ -307,7 +307,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook retrieves links from other modules and injects it into
+   * This hook retrieves links from other modules and injects it into.
    * the view contact tabs
    *
    * @param string $op
@@ -343,7 +343,7 @@ abstract class CRM_Utils_Hook {
    */
   public static function preProcess($formName, &$form) {
     return self::singleton()
-      ->invoke(2, $formName, $form, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject,  'civicrm_preProcess');
+      ->invoke(2, $formName, $form, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, 'civicrm_preProcess');
   }
 
   /**
@@ -394,7 +394,8 @@ abstract class CRM_Utils_Hook {
    * @param array &$files the FILES parameters as sent in by POST
    * @param array &$form the form object
    *
-   * @return mixed             formRule hooks return a boolean or
+   * @return mixed
+   *   formRule hooks return a boolean or
    *                           an array of error messages which display a QF Error
    */
   public static function validate($formName, &$fields, &$files, &$form) {
@@ -413,7 +414,8 @@ abstract class CRM_Utils_Hook {
    * @param array &$form the form object
    * @param array &$errors the array of errors.
    *
-   * @return mixed             formRule hooks return a boolean or
+   * @return mixed
+   *   formRule hooks return a boolean or
    *                           an array of error messages which display a QF Error
    */
   public static function validateForm($formName, &$fields, &$files, &$form, &$errors) {
@@ -422,7 +424,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called before a db write on a custom table
+   * This hook is called before a db write on a custom table.
    *
    * @param string $op
    *   The type of operation being performed.
@@ -488,7 +490,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called when building the menu table
+   * This hook is called when building the menu table.
    *
    * @param array $files
    *   The current set of files to process.
@@ -504,10 +506,21 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called for declaring managed entities via API
+   * This hook is called for declaring managed entities via API.
    *
    * @param array $entities
-   *   List of pending entities.
+   *   List of pending entities. Each entity is an array with keys:
+   *   + 'module': string; for module-extensions, this is the fully-qualifed name (e.g. "com.example.mymodule"); for CMS modules, the name is prefixed by the CMS (e.g. "drupal.mymodule")
+   *   + 'name': string, a symbolic name which can be used to track this entity (Note: Each module creates its own namespace)
+   *   + 'entity': string, an entity-type supported by the CiviCRM API (Note: this currently must be an entity which supports the 'is_active' property)
+   *   + 'params': array, the entity data as supported by the CiviCRM API
+   *   + 'update' (v4.5+): string, a policy which describes when to update records
+   *     - 'always' (default): always update the managed-entity record; changes in $entities will override any local changes (eg by the site-admin)
+   *     - 'never': never update the managed-entity record; changes made locally (eg by the site-admin) will override changes in $entities
+   *   + 'cleanup' (v4.5+): string, a policy which describes whether to cleanup the record when it becomes orphaned (ie when $entities no longer references the record)
+   *     - 'always' (default): always delete orphaned records
+   *     - 'never': never delete orphaned records
+   *     - 'unused': only delete orphaned records if there are no other references to it in the DB. (This is determined by calling the API's "getrefcount" action.)
    *
    * @return null
    *   the return value is ignored
@@ -565,12 +578,12 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * Determine how many other records refer to a given record
+   * Determine how many other records refer to a given record.
    *
    * @param CRM_Core_DAO $dao
    *   The item for which we want a reference count.
    * @param array $refCounts
-   *   Each item in the array is an array with keys:.
+   *   Each item in the array is an Array with keys:
    *   - name: string, eg "sql:civicrm_email:contact_id"
    *   - type: string, eg "sql"
    *   - count: int, eg "5" if there are 5 email addresses that refer to $dao
@@ -584,7 +597,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called when building the amount structure for a Contribution or Event Page
+   * This hook is called when building the amount structure for a Contribution or Event Page.
    *
    * @param int $pageType
    *   Is this a contribution or event page.
@@ -857,7 +870,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called when rendering the contact summary
+   * This hook is called when rendering the contact summary.
    *
    * @param int $contactID
    *   The contactID for whom the summary is being rendered
@@ -940,7 +953,7 @@ abstract class CRM_Utils_Hook {
    *
    * @param array $params
    *   Array fields include: groupName, from, toName, toEmail, subject, cc, bcc, text, html,
-   * returnPath, replyTo, headers, attachments (array)
+   *   returnPath, replyTo, headers, attachments (array)
    * @param string $context
    *   The context in which the hook is being invoked, eg 'civimail'.
    *
@@ -954,7 +967,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called when membership status is being calculated
+   * This hook is called when membership status is being calculated.
    *
    * @param array $membershipStatus
    *   Membership status details as determined - alter if required.
@@ -979,14 +992,14 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called when rendering the Manage Case screen
+   * This hook is called when rendering the Manage Case screen.
    *
    * @param int $caseID
    *   The case ID.
    *
    * @return array
-   *   of data to be displayed, where the key is a unique id to be used for styling (div id's)
-   * and the value is an array with keys 'label' and 'value' specifying label/value pairs
+   *   Array of data to be displayed, where the key is a unique id to be used for styling (div id's)
+   *   and the value is an array with keys 'label' and 'value' specifying label/value pairs
    */
   public static function caseSummary($caseID) {
     return self::singleton()->invoke(1, $caseID,
@@ -1024,21 +1037,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * @param $recordBAO
-   * @param int $recordID
-   * @param $isActive
-   *
-   * @return mixed
-   */
-  public static function enableDisable($recordBAO, $recordID, $isActive) {
-    return self::singleton()->invoke(3, $recordBAO, $recordID, $isActive,
-      self::$_nullObject, self::$_nullObject, self::$_nullObject,
-      'civicrm_enableDisable'
-    );
-  }
-
-  /**
-   * This hooks allows to change option values
+   * This hooks allows to change option values.
    *
    * @param array $options
    *   Associated array of option values / id
@@ -1105,7 +1104,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called before record is exported as CSV
+   * This hook is called before record is exported as CSV.
    *
    * @param string $exportTempTable
    *   Name of the temporary export table used during export.
@@ -1256,9 +1255,8 @@ abstract class CRM_Utils_Hook {
    *                           activity, campaign, case, contact, contribution, event, grant, membership, and pledge
    * @param array &$headers the list of column headers, an associative array with keys: ( name, sort, order )
    * @param array &$rows the list of values, an associate array with fields that are displayed for that component
-   * @param $selector
-   *
-   * @internal param array $seletor the selector object. Allows you access to the context of the search
+   * @param array $selector
+   *   the selector object. Allows you access to the context of the search
    *
    * @return void
    *   modify the header and values object to pass the data u need
@@ -1313,7 +1311,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * Hook definition for altering the generation of Mailing Labels
+   * Hook definition for altering the generation of Mailing Labels.
    *
    * @param array $args
    *   An array of the args in the order defined for the tcpdf multiCell api call.
@@ -1354,7 +1352,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hooks allows alteration of generated page content
+   * This hooks allows alteration of generated page content.
    *
    * @param $content
    *   Previously generated content.
@@ -1397,7 +1395,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook collects the trigger definition from all components
+   * This hook collects the trigger definition from all components.
    *
    * @param $info
    * @param string $tableName
@@ -1529,7 +1527,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called when Settings specifications are loaded
+   * This hook is called when Settings specifications are loaded.
    *
    * @param array $settingsFolders
    *   List of paths from which to derive metadata
@@ -1632,7 +1630,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called for declaring managed entities via API
+   * This hook is called for declaring managed entities via API.
    *
    * @param array[] $entityTypes
    *   List of entity types; each entity-type is an array with keys:
@@ -1650,7 +1648,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called while preparing a profile form
+   * This hook is called while preparing a profile form.
    *
    * @param string $name
    * @return mixed
@@ -1661,7 +1659,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called while validating a profile form submission
+   * This hook is called while validating a profile form submission.
    *
    * @param string $name
    * @return mixed
@@ -1672,7 +1670,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called processing a valid profile form submission
+   * This hook is called processing a valid profile form submission.
    *
    * @param string $name
    * @return mixed
@@ -1726,7 +1724,7 @@ abstract class CRM_Utils_Hook {
 
 
   /**
-   * This hook is called before encoding data in barcode
+   * This hook is called before encoding data in barcode.
    *
    * @param array $data
    *   Associated array of values available for encoding.
@@ -1775,7 +1773,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * This hook is called while viewing contact dashboard
+   * This hook is called while viewing contact dashboard.
    *
    * @param array $availableDashlets
    *   List of dashlets; each is formatted per api/v3/Dashboard
@@ -1851,8 +1849,16 @@ abstract class CRM_Utils_Hook {
    *
    * @code
    * function mymod_civicrm_angularModules(&$angularModules) {
-   *   $angularModules['myAngularModule'] = array('ext' => 'org.example.mymod', 'js' => array('js/myAngularModule.js'));
-   *   $angularModules['myBigAngularModule'] = array('ext' => 'org.example.mymod', 'js' => array('js/part1.js', 'js/part2.js'), 'css' => array('css/myAngularModule.css'));
+   *   $angularModules['myAngularModule'] = array(
+   *     'ext' => 'org.example.mymod',
+   *     'js' => array('js/myAngularModule.js'),
+   *   );
+   *   $angularModules['myBigAngularModule'] = array(
+   *     'ext' => 'org.example.mymod',
+   *     'js' => array('js/part1.js', 'js/part2.js'),
+   *     'css' => array('css/myAngularModule.css'),
+   *     'partials' => array('partials/myBigAngularModule'),
+   *   );
    * }
    * @endcode
    */
@@ -1879,7 +1885,7 @@ abstract class CRM_Utils_Hook {
   }
 
   /**
-   * Generate a default CRUD URL for an entity
+   * Generate a default CRUD URL for an entity.
    *
    * @param array $spec
    *   With keys:.
@@ -1889,10 +1895,10 @@ abstract class CRM_Utils_Hook {
    * @param CRM_Core_DAO $bao
    * @param array $link
    *   To define the link, add these keys to $link:.
-   *  - title: string
-   *  - path: string
-   *  - query: array
-   *  - url: string (used in lieu of "path"/"query")
+   *   - title: string
+   *   - path: string
+   *   - query: array
+   *   - url: string (used in lieu of "path"/"query")
    *      Note: if making "url" CRM_Utils_System::url(), set $htmlize=false
    * @return mixed
    */
@@ -1913,4 +1919,5 @@ abstract class CRM_Utils_Hook {
       'civicrm_fileSearches'
     );
   }
+
 }