X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FDAO%2FNavigation.php;h=488c2afc63e6217857a1136a041328600169d0a1;hb=ee17d64d7179ecef2c341b600cf6c3991ba22e5e;hp=b1cdb593a73789a4b207b1a34b6ebe6e090c9c64;hpb=60808919139a05136c4c3bc4900b7a930d9cff33;p=civicrm-core.git diff --git a/CRM/Core/DAO/Navigation.php b/CRM/Core/DAO/Navigation.php index b1cdb593a7..488c2afc63 100644 --- a/CRM/Core/DAO/Navigation.php +++ b/CRM/Core/DAO/Navigation.php @@ -41,24 +41,6 @@ class CRM_Core_DAO_Navigation extends CRM_Core_DAO { * @var string */ static $_tableName = 'civicrm_navigation'; - /** - * static instance to hold the field values - * - * @var array - */ - static $_fields = null; - /** - * static instance to hold the keys used in $_fields for each field. - * - * @var array - */ - static $_fieldKeys = null; - /** - * static instance to hold the FK relationships - * - * @var string - */ - static $_links = null; /** * static value to see if we should log any modifications to * this table in the civicrm_log table @@ -147,12 +129,13 @@ class CRM_Core_DAO_Navigation extends CRM_Core_DAO { * [CRM_Core_Reference_Interface] */ static function getReferenceColumns() { - if (!self::$_links) { - self::$_links = static ::createReferenceColumns(__CLASS__); - self::$_links[] = new CRM_Core_Reference_Basic(self::getTableName() , 'domain_id', 'civicrm_domain', 'id'); - self::$_links[] = new CRM_Core_Reference_Basic(self::getTableName() , 'parent_id', 'civicrm_navigation', 'id'); + if (!isset(Civi::$statics[__CLASS__]['links'])) { + Civi::$statics[__CLASS__]['links'] = static ::createReferenceColumns(__CLASS__); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName() , 'domain_id', 'civicrm_domain', 'id'); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName() , 'parent_id', 'civicrm_navigation', 'id'); + CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'links_callback', Civi::$statics[__CLASS__]['links']); } - return self::$_links; + return Civi::$statics[__CLASS__]['links']; } /** * Returns all the column names of this table @@ -160,8 +143,8 @@ class CRM_Core_DAO_Navigation extends CRM_Core_DAO { * @return array */ static function &fields() { - if (!(self::$_fields)) { - self::$_fields = array( + if (!isset(Civi::$statics[__CLASS__]['fields'])) { + Civi::$statics[__CLASS__]['fields'] = array( 'id' => array( 'name' => 'id', 'type' => CRM_Utils_Type::T_INT, @@ -252,32 +235,21 @@ class CRM_Core_DAO_Navigation extends CRM_Core_DAO { 'description' => 'Ordering of the navigation items in various blocks.', ) , ); + CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']); } - return self::$_fields; + return Civi::$statics[__CLASS__]['fields']; } /** - * Returns an array containing, for each field, the arary key used for that - * field in self::$_fields. + * Return a mapping from field-name to the corresponding key (as used in fields()). * * @return array + * Array(string $name => string $uniqueName). */ static function &fieldKeys() { - if (!(self::$_fieldKeys)) { - self::$_fieldKeys = array( - 'id' => 'id', - 'domain_id' => 'domain_id', - 'label' => 'label', - 'name' => 'name', - 'url' => 'url', - 'permission' => 'permission', - 'permission_operator' => 'permission_operator', - 'parent_id' => 'parent_id', - 'is_active' => 'is_active', - 'has_separator' => 'has_separator', - 'weight' => 'weight', - ); + if (!isset(Civi::$statics[__CLASS__]['fieldKeys'])) { + Civi::$statics[__CLASS__]['fieldKeys'] = array_flip(CRM_Utils_Array::collect('name', self::fields())); } - return self::$_fieldKeys; + return Civi::$statics[__CLASS__]['fieldKeys']; } /** * Returns the names of this table