X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FMenu.php;h=e548e2cf658a553d37b2da51e02e3f620ea50ae4;hb=829c9b7b5a25b2472f7d675c8d843305be7f5bc4;hp=a18006f062f76d5d067fbbbec5a8a5f61b0f5b56;hpb=4a05187c4ebd6b2b7c0ee8afc8dc105abaed43b6;p=civicrm-core.git diff --git a/CRM/Core/Menu.php b/CRM/Core/Menu.php index a18006f062..e548e2cf65 100644 --- a/CRM/Core/Menu.php +++ b/CRM/Core/Menu.php @@ -1,9 +1,9 @@ $value) { if (!$value) { @@ -161,6 +185,12 @@ class CRM_Core_Menu { return TRUE; } + /** + * @param $menu + * @param $path + * + * @throws Exception + */ static function fillMenuValues(&$menu, $path) { $fieldsToPropagate = array( 'access_callback', @@ -230,13 +260,17 @@ class CRM_Core_Menu { self::buildAdminLinks($menu); } + /** + * This function recomputes menu from xml and populates civicrm_menu + * @param bool $truncate + */ static function store($truncate = TRUE) { // first clean up the db if ($truncate) { $query = 'TRUNCATE civicrm_menu'; CRM_Core_DAO::executeQuery($query); } - $menuArray = self::items(); + $menuArray = self::items($truncate); self::build($menuArray); @@ -267,15 +301,18 @@ class CRM_Core_Menu { } } + /** + * @param $menu + */ static function buildAdminLinks(&$menu) { $values = array(); foreach ($menu as $path => $item) { - if (!CRM_Utils_Array::value('adminGroup', $item)) { + if (empty($item['adminGroup'])) { continue; } - $query = CRM_Utils_Array::value('path_arguments', $item) ? str_replace(',', '&', $item['path_arguments']) . '&reset=1' : 'reset=1'; + $query = !empty($item['path_arguments']) ? str_replace(',', '&', $item['path_arguments']) . '&reset=1' : 'reset=1'; $value = array( 'title' => $item['title'], @@ -285,7 +322,13 @@ class CRM_Core_Menu { ',' => '_', '/' => '_', ) ), - 'url' => CRM_Utils_System::url($path, $query, FALSE), + 'url' => CRM_Utils_System::url($path, $query, + FALSE, // absolute + NULL, // fragment + TRUE, // htmlize + FALSE, // frontend + TRUE // forceBackend; CRM-14439 work-around; acceptable for now because we don't display breadcrumbs on frontend + ), 'icon' => CRM_Utils_Array::value('icon', $item), 'extra' => CRM_Utils_Array::value('extra', $item), ); @@ -306,6 +349,12 @@ class CRM_Core_Menu { $menu['admin'] = array('breadcrumb' => $values); } + /** + * @param bool $all + * + * @return mixed + * @throws Exception + */ static function &getNavigation($all = FALSE) { CRM_Core_Error::fatal(); @@ -412,6 +461,9 @@ class CRM_Core_Menu { return $values; } + /** + * @return null + */ static function &getAdminLinks() { $links = self::get('admin'); @@ -456,7 +508,7 @@ class CRM_Core_Menu { if (array_key_exists($currentPath, $menu) && isset($menu[$currentPath]['title']) ) { - $urlVar = CRM_Utils_Array::value('path_arguments', $menu[$currentPath]) ? '&' . $menu[$currentPath]['path_arguments'] : ''; + $urlVar = !empty($menu[$currentPath]['path_arguments']) ? '&' . $menu[$currentPath]['path_arguments'] : ''; $crumbs[] = array( 'title' => $menu[$currentPath]['title'], 'url' => CRM_Utils_System::url($currentPath, @@ -475,12 +527,22 @@ class CRM_Core_Menu { return $crumbs; } + /** + * @param $menu + * @param $path + */ static function buildReturnUrl(&$menu, $path) { if (!isset($menu[$path]['return_url'])) { list($menu[$path]['return_url'], $menu[$path]['return_url_args']) = self::getReturnUrl($menu, $path); } } + /** + * @param $menu + * @param $path + * + * @return array + */ static function getReturnUrl(&$menu, $path) { if (!isset($menu[$path]['return_url'])) { $pathElements = explode('/', $path); @@ -505,6 +567,10 @@ class CRM_Core_Menu { } } + /** + * @param $menu + * @param $path + */ static function fillComponentIds(&$menu, $path) { static $cache = array(); @@ -538,6 +604,11 @@ class CRM_Core_Menu { } } + /** + * @param $path + * + * @return null + */ static function get($path) { // return null if menu rebuild $config = CRM_Core_Config::singleton(); @@ -640,6 +711,11 @@ UNION ( return $menuPath; } + /** + * @param $pathArgs + * + * @return mixed + */ static function getArrayForPathArgs($pathArgs) { if (!is_string($pathArgs)) { return; @@ -649,7 +725,7 @@ UNION ( $elements = explode(',', $pathArgs); //CRM_Core_Error::debug( 'e', $elements ); foreach ($elements as $keyVal) { - list($key, $val) = explode('=', $keyVal); + list($key, $val) = explode('=', $keyVal, 2); $arr[$key] = $val; }