<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.5 |
+ | CiviCRM version 4.6 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
abstract class CRM_Core_Component_Info {
- /*
- * Name of the class (minus component namespace path)
- * of the component invocation class'es name.
- */
- CONST COMPONENT_INVOKE_CLASS = 'Invoke';
+ /**
+ * Name of the class (minus component namespace path)
+ * of the component invocation class'es name.
+ */
+ const COMPONENT_INVOKE_CLASS = 'Invoke';
- /*
- * Name of the class (minus component namespace path)
- * of the component configuration class'es name.
- */
- CONST COMPONENT_CONFIG_CLASS = 'Config';
+ /**
+ * Name of the class (minus component namespace path)
+ * of the component configuration class'es name.
+ */
+ const COMPONENT_CONFIG_CLASS = 'Config';
- /*
- * Name of the class (minus component namespace path)
- * of the component BAO Query class'es name.
- */
- CONST COMPONENT_BAO_QUERY_CLASS = 'BAO_Query';
+ /**
+ * Name of the class (minus component namespace path)
+ * of the component BAO Query class'es name.
+ */
+ const COMPONENT_BAO_QUERY_CLASS = 'BAO_Query';
- /*
- * Name of the class (minus component namespace path)
- * of the component user dashboard plugin.
- */
- CONST COMPONENT_USERDASHBOARD_CLASS = 'Page_UserDashboard';
+ /**
+ * Name of the class (minus component namespace path)
+ * of the component user dashboard plugin.
+ */
+ const COMPONENT_USERDASHBOARD_CLASS = 'Page_UserDashboard';
- /*
- * Name of the class (minus component namespace path)
- * of the component tab offered to contact record view.
- */
- CONST COMPONENT_TAB_CLASS = 'Page_Tab';
+ /**
+ * Name of the class (minus component namespace path)
+ * of the component tab offered to contact record view.
+ */
+ const COMPONENT_TAB_CLASS = 'Page_Tab';
- /*
- * Name of the class (minus component namespace path)
- * of the component tab offered to contact record view.
- */
- CONST COMPONENT_ADVSEARCHPANE_CLASS = 'Form_Search_AdvancedSearchPane';
+ /**
+ * Name of the class (minus component namespace path)
+ * of the component tab offered to contact record view.
+ */
+ const COMPONENT_ADVSEARCHPANE_CLASS = 'Form_Search_AdvancedSearchPane';
- /*
- * Name of the directory (assumed in component directory)
- * where xml resources used by this component live.
- */
- CONST COMPONENT_XML_RESOURCES = 'xml';
+ /**
+ * Name of the directory (assumed in component directory)
+ * where xml resources used by this component live.
+ */
+ const COMPONENT_XML_RESOURCES = 'xml';
- /*
- * Name of the directory (assumed in xml resources path)
- * containing component menu definition XML file names.
- */
- CONST COMPONENT_MENU_XML = 'Menu';
+ /**
+ * Name of the directory (assumed in xml resources path)
+ * containing component menu definition XML file names.
+ */
+ const COMPONENT_MENU_XML = 'Menu';
- /*
+ /**
* Stores component information.
* @var array component settings as key/value pairs
*/
*/
protected $keyword;
- /*
- * Class constructor, sets name and namespace (those are stored
- * in the component registry (database) and no need to duplicate
- * them here, as well as populates the info variable.
- *
- * @param string $name name of the component
- * @param string $namespace namespace prefix for component's files
- * @access public
- *
+ /**
+ * @param string $name
+ * Name of the component.
+ * @param string $namespace
+ * Namespace prefix for component's files.
+ * @param int $componentID
*/
public function __construct($name, $namespace, $componentID) {
$this->name = $name;
$this->info['url'] = $this->getKeyword();
}
+ /**
+ * EXPERIMENTAL: Get a list of AngularJS modules
+ *
+ * @return array list of modules; same format as CRM_Utils_Hook::angularModules(&$angularModules)
+ * @see CRM_Utils_Hook::angularModules
+ */
+ public function getAngularModules() {
+ return array();
+ }
+
/**
* Provides base information about the component.
* Needs to be implemented in component's information
* class.
*
* @return array collection of required component settings
- * @access public
*
*/
abstract public function getInfo();
* @param bool $getAllUnconditionally
*
* @return array|null collection of permissions, null if none
- * @access public
*/
abstract public function getPermissions($getAllUnconditionally = FALSE);
+ /**
+ * Determine how many other records refer to a given record
+ *
+ * @param CRM_Core_DAO $dao
+ * The item for which we want a reference count.
+ * @return array 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
+ */
+ public function getReferenceCounts($dao) {
+ return array();
+ }
+
/**
* Provides information about user dashboard element
* offered by this component.
*
* @return array|null collection of required dashboard settings,
* null if no element offered
- * @access public
*
*/
abstract public function getUserDashboardElement();
*
* @return array|null collection of required dashboard settings,
* null if no element offered
- * @access public
*
*/
abstract public function registerTab();
*
* @return array|null collection of required pane settings,
* null if no element offered
- * @access public
*
*/
abstract public function registerAdvancedSearchPane();
* class.
*
* @return array|null collection of activity types
- * @access public
*
*/
abstract public function getActivityTypes();
* marked as enabled in configuration.
*
* @return boolean true if component is enabled, false if not
- * @access public
*
*/
public function isEnabled() {
* Provides component's configuration object.
*
* @return mixed component's configuration object
- * @access public
*
*/
public function getConfigObject() {
* Provides component's menu definition object.
*
* @return mixed component's menu definition object
- * @access public
*
*/
public function getMenuObject() {
* Provides component's invocation object.
*
* @return mixed component's invocation object
- * @access public
*
*/
public function getInvokeObject() {
* Provides component's BAO Query object.
*
* @return mixed component's BAO Query object
- * @access public
*
*/
public function getBAOQueryObject() {
/**
* Builds advanced search form's component specific pane.
*
- * @access public
*
*/
public function buildAdvancedSearchPaneForm(&$form) {
* Provides component's user dashboard page object.
*
* @return mixed component's User Dashboard applet object
- * @access public
*
*/
public function getUserDashboardObject() {
* Provides component's contact record tab object.
*
* @return mixed component's contact record tab object
- * @access public
*
*/
public function getTabObject() {
* Provides component's advanced search pane's template path.
*
* @return string component's advanced search pane's template path
- * @access public
*
*/
public function getAdvancedSearchPaneTemplatePath() {
* Provides information whether given component uses system wide search.
*
* @return boolean true if component needs search integration
- * @access public
*
*/
public function usesSearch() {
* Provides the xml menu files
*
* @return array array of menu files
- * @access public
*
*/
public function menuFiles() {
* FIXME: accessed from beyond component infrastructure.
*
* @return string component keyword
- * @access public
*
*/
public function getKeyword() {
* Helper for figuring out menu XML file location.
*
* @return mixed component's element as class instance
- * @access private
*
*/
private function _getMenuXMLPath() {
* @param $cl
*
* @return mixed component's element as class instance
- * @access private
*/
private function _instantiate($cl) {
$className = $this->namespace . '_' . $cl;
- require_once (str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php');
+ require_once str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
return new $className();
}
}
-