return CRM_Core_DAO::setFieldValue('CRM_Core_DAO_Navigation', $id, 'is_active', $is_active);
}
- /**
- * Get existing / build navigation for CiviCRM Admin Menu.
- *
- * @return array
- * associated array
- */
- public static function getMenus() {
- $menus = array();
-
- $menu = new CRM_Core_DAO_Menu();
- $menu->domain_id = CRM_Core_Config::domainID();
- $menu->find();
-
- while ($menu->fetch()) {
- if ($menu->title) {
- $menus[$menu->path] = $menu->title;
- }
- }
- return $menus;
- }
-
/**
* Add/update navigation record.
*
$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
-FROM civicrm_navigation
-WHERE domain_id = $domainID
-ORDER BY parent_id, weight";
+ $navigationMenu = new self();
+ $navigationMenu->domain_id = $domainID;
+ $navigationMenu->orderBy('parent_id, weight');
+ $navigationMenu->find();
- $navigation = CRM_Core_DAO::executeQuery($query);
- while ($navigation->fetch()) {
- $navigationTree[$navigation->id] = array(
+ while ($navigationMenu->fetch()) {
+ $navigationTree[$navigationMenu->id] = array(
'attributes' => array(
- 'label' => $navigation->label,
- 'name' => $navigation->name,
- 'url' => $navigation->url,
- '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,
),
);
}
if (substr($url, 0, 4) !== 'http') {
//CRM-7656 --make sure to separate out url path from url params,
//as we'r going to validate url path across cross-site scripting.
- $urlParam = explode('?', $url);
- if (empty($urlParam[1])) {
- $urlParam[1] = NULL;
+ $parsedUrl = parse_url($url);
+ if (empty($parsedUrl['query'])) {
+ $parsedUrl['query'] = NULL;
}
- $url = CRM_Utils_System::url($urlParam[0], $urlParam[1], FALSE, NULL, TRUE);
+ if (empty($parsedUrl['fragment'])) {
+ $parsedUrl['fragment'] = NULL;
+ }
+ $url = CRM_Utils_System::url($parsedUrl['path'], $parsedUrl['query'], FALSE, $parsedUrl['fragment'], TRUE);
}
elseif (strpos($url, '&') === FALSE) {
$url = htmlspecialchars($url);
}
}
+ if (!empty($value['attributes']['icon'])) {
+ $menuIcon = sprintf('<span class="%s"></span> ', $value['attributes']['icon']);
+ $name = $menuIcon . $name;
+ }
+
if ($makeLink) {
$url = CRM_Utils_System::evalUrl($url);
if ($target) {
public static function resetNavigation($contactID = NULL) {
$newKey = CRM_Utils_String::createRandom(self::CACHE_KEY_STRLEN, CRM_Utils_String::ALPHANUMERIC);
if (!$contactID) {
- $query = "UPDATE civicrm_setting SET value = '$newKey' WHERE name='navigation' AND contact_id IS NOT NULL";
+ $ser = serialize($newKey);
+ $query = "UPDATE civicrm_setting SET value = '$ser' WHERE name='navigation' AND contact_id IS NOT NULL";
CRM_Core_DAO::executeQuery($query);
CRM_Core_BAO_Cache::deleteGroup('navigation');
}