From c88f9a4db6672d6f030cbdf613b9e38d4751619e Mon Sep 17 00:00:00 2001 From: Omar abu hussein Date: Tue, 19 Sep 2017 13:45:37 +0100 Subject: [PATCH] CRM-21195: Using DAO instead of direct SQL when building navigation menu --- CRM/Core/BAO/Navigation.php | 37 +++++++++++------------ CRM/Upgrade/Incremental/php/FourSeven.php | 2 +- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/CRM/Core/BAO/Navigation.php b/CRM/Core/BAO/Navigation.php index b7c5a01491..80e61bd383 100644 --- a/CRM/Core/BAO/Navigation.php +++ b/CRM/Core/BAO/Navigation.php @@ -250,27 +250,24 @@ FROM civicrm_navigation WHERE domain_id = $domainID {$whereClause} ORDER BY pare $domainID = CRM_Core_Config::domainID(); $navigationTree = array(); - // get the list of menus - $query = " -SELECT id, label, url, permission, permission_operator, has_separator, parent_id, is_active, name, icon -FROM civicrm_navigation -WHERE domain_id = $domainID -ORDER BY parent_id, weight"; - - $navigation = CRM_Core_DAO::executeQuery($query); - while ($navigation->fetch()) { - $navigationTree[$navigation->id] = array( + $navigationMenu = new self(); + $navigationMenu->domain_id = $domainID; + $navigationMenu->orderBy('parent_id, weight'); + $navigationMenu->find(); + + while ($navigationMenu->fetch()) { + $navigationTree[$navigationMenu->id] = array( 'attributes' => array( - 'label' => $navigation->label, - 'name' => $navigation->name, - 'url' => $navigation->url, - 'icon' => $navigation->icon, - 'permission' => $navigation->permission, - 'operator' => $navigation->permission_operator, - 'separator' => $navigation->has_separator, - 'parentID' => $navigation->parent_id, - 'navID' => $navigation->id, - 'active' => $navigation->is_active, + 'label' => $navigationMenu->label, + 'name' => $navigationMenu->name, + 'url' => $navigationMenu->url, + 'icon' => $navigationMenu->icon, + 'permission' => $navigationMenu->permission, + 'operator' => $navigationMenu->permission_operator, + 'separator' => $navigationMenu->has_separator, + 'parentID' => $navigationMenu->parent_id, + 'navID' => $navigationMenu->id, + 'active' => $navigationMenu->is_active, ), ); } diff --git a/CRM/Upgrade/Incremental/php/FourSeven.php b/CRM/Upgrade/Incremental/php/FourSeven.php index f1b0809711..ccb9d07df0 100644 --- a/CRM/Upgrade/Incremental/php/FourSeven.php +++ b/CRM/Upgrade/Incremental/php/FourSeven.php @@ -440,7 +440,7 @@ class CRM_Upgrade_Incremental_php_FourSeven extends CRM_Upgrade_Incremental_Base 'civicrm_mailing', 'modified_date', "timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When the mailing (or closely related entity) was created or modified or deleted.'"); $this->addTask('CRM-21195 - Add icon field to civicrm_navigation', 'addColumn', - 'civicrm_navigation', 'icon', "varchar(255) NULL DEFAULT NULL COMMENT 'CSS class name for an icon"); + 'civicrm_navigation', 'icon', "varchar(255) NULL DEFAULT NULL COMMENT 'CSS class name for an icon'"); } /* -- 2.25.1