本文整理汇总了PHP中CRM_Core_Permission::checkMenuItem方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Core_Permission::checkMenuItem方法的具体用法?PHP CRM_Core_Permission::checkMenuItem怎么用?PHP CRM_Core_Permission::checkMenuItem使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Core_Permission
的用法示例。
在下文中一共展示了CRM_Core_Permission::checkMenuItem方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: runItem
/**
* Given a menu item, call the appropriate controller and return the response
*
* @param array $item see CRM_Core_Menu
* @return string, HTML
*/
public static function runItem($item)
{
$config = CRM_Core_Config::singleton();
if ($config->userFramework == 'Joomla' && $item) {
$config->userFrameworkURLVar = 'task';
// joomla 1.5RC1 seems to push this in the POST variable, which messes
// QF and checkboxes
unset($_POST['option']);
CRM_Core_Joomla::sidebarLeft();
}
// set active Component
$template = CRM_Core_Smarty::singleton();
$template->assign('activeComponent', 'CiviCRM');
$template->assign('formTpl', 'default');
if ($item) {
// CRM-7656 - make sure we send a clean sanitized path to create printer friendly url
$printerFriendly = CRM_Utils_System::makeURL('snippet', FALSE, FALSE, CRM_Utils_Array::value('path', $item)) . '2';
$template->assign('printerFriendly', $printerFriendly);
if (!array_key_exists('page_callback', $item)) {
CRM_Core_Error::debug('Bad item', $item);
CRM_Core_Error::fatal(ts('Bad menu record in database'));
}
// check that we are permissioned to access this page
if (!CRM_Core_Permission::checkMenuItem($item)) {
CRM_Utils_System::permissionDenied();
return;
}
// check if ssl is set
if (CRM_Utils_Array::value('is_ssl', $item)) {
CRM_Utils_System::redirectToSSL();
}
if (isset($item['title'])) {
CRM_Utils_System::setTitle($item['title']);
}
if (isset($item['breadcrumb']) && !isset($item['is_public'])) {
CRM_Utils_System::appendBreadCrumb($item['breadcrumb']);
}
$pageArgs = NULL;
if (CRM_Utils_Array::value('page_arguments', $item)) {
$pageArgs = CRM_Core_Menu::getArrayForPathArgs($item['page_arguments']);
}
$template = CRM_Core_Smarty::singleton();
if (!empty($item['is_public'])) {
$template->assign('urlIsPublic', TRUE);
} else {
$template->assign('urlIsPublic', FALSE);
self::versionCheck($template);
}
if (isset($item['return_url'])) {
$session = CRM_Core_Session::singleton();
$args = CRM_Utils_Array::value('return_url_args', $item, 'reset=1');
$session->pushUserContext(CRM_Utils_System::url($item['return_url'], $args));
}
$result = NULL;
if (is_array($item['page_callback'])) {
$newArgs = explode('/', $_GET[$config->userFrameworkURLVar]);
require_once str_replace('_', DIRECTORY_SEPARATOR, $item['page_callback'][0]) . '.php';
$result = call_user_func($item['page_callback'], $newArgs);
} elseif (strstr($item['page_callback'], '_Form')) {
$wrapper = new CRM_Utils_Wrapper();
$result = $wrapper->run(CRM_Utils_Array::value('page_callback', $item), CRM_Utils_Array::value('title', $item), isset($pageArgs) ? $pageArgs : NULL);
} else {
$newArgs = explode('/', $_GET[$config->userFrameworkURLVar]);
require_once str_replace('_', DIRECTORY_SEPARATOR, $item['page_callback']) . '.php';
$mode = 'null';
if (isset($pageArgs['mode'])) {
$mode = $pageArgs['mode'];
unset($pageArgs['mode']);
}
$title = CRM_Utils_Array::value('title', $item);
if (strstr($item['page_callback'], '_Page')) {
$object = new $item['page_callback']($title, $mode);
} elseif (strstr($item['page_callback'], '_Controller')) {
$addSequence = 'false';
if (isset($pageArgs['addSequence'])) {
$addSequence = $pageArgs['addSequence'];
$addSequence = $addSequence ? 'true' : 'false';
unset($pageArgs['addSequence']);
}
$object = new $item['page_callback']($title, true, $mode, null, $addSequence);
} else {
CRM_Core_Error::fatal();
}
$result = $object->run($newArgs, $pageArgs);
}
CRM_Core_Session::storeSessionObjects();
return $result;
}
CRM_Core_Menu::store();
CRM_Core_Session::setStatus(ts('Menu has been rebuilt'), ts('Complete'), 'success');
return CRM_Utils_System::redirect();
}
示例2: invoke
/**
* This is the main function that is called on every click action and based on the argument
* respective functions are called
*
* @param $args array this array contains the arguments of the url
*
* @static
* @access public
*/
static function invoke($args)
{
require_once 'CRM/Core/I18n.php';
require_once 'CRM/Utils/Wrapper.php';
require_once 'CRM/Core/Action.php';
require_once 'CRM/Utils/Request.php';
require_once 'CRM/Core/Menu.php';
require_once 'CRM/Core/Component.php';
require_once 'CRM/Core/Permission.php';
if ($args[0] !== 'civicrm') {
return;
}
if (isset($args[1]) and $args[1] == 'menu' and isset($args[2]) and $args[2] == 'rebuild') {
CRM_Core_Menu::store();
CRM_Core_Session::setStatus(ts('Menu has been rebuilt'));
// also reset navigation
require_once 'CRM/Core/BAO/Navigation.php';
CRM_Core_BAO_Navigation::resetNavigation();
return CRM_Utils_System::redirect();
}
// first fire up IDS and check for bad stuff
require_once 'CRM/Core/IDS.php';
$ids = new CRM_Core_IDS();
$ids->check($args);
$config =& CRM_Core_Config::singleton();
// also initialize the i18n framework
$i18n =& CRM_Core_I18n::singleton();
if ($config->userFramework == 'Standalone') {
require_once 'CRM/Core/Session.php';
$session =& CRM_Core_Session::singleton();
if ($session->get('new_install') !== true) {
require_once 'CRM/Core/Standalone.php';
CRM_Core_Standalone::sidebarLeft();
} else {
if ($args[1] == 'standalone' && $args[2] == 'register') {
CRM_Core_Menu::store();
}
}
}
// get the menu items
$path = implode('/', $args);
$item =& CRM_Core_Menu::get($path);
// we should try to compute menus, if item is empty and stay on the same page,
// rather than compute and redirect to dashboard.
if (!$item) {
CRM_Core_Menu::store(false);
$item =& CRM_Core_Menu::get($path);
}
if ($config->userFramework == 'Joomla' && $item) {
$config->userFrameworkURLVar = 'task';
require_once 'CRM/Core/Joomla.php';
// joomla 1.5RC1 seems to push this in the POST variable, which messes
// QF and checkboxes
unset($_POST['option']);
CRM_Core_Joomla::sidebarLeft();
}
// set active Component
$template =& CRM_Core_Smarty::singleton();
$template->assign('activeComponent', 'CiviCRM');
$template->assign('formTpl', 'default');
if ($item) {
if (!array_key_exists('page_callback', $item)) {
CRM_Core_Error::debug('Bad item', $item);
CRM_Core_Error::fatal(ts('Bad menu record in database'));
}
// check that we are permissioned to access this page
if (!CRM_Core_Permission::checkMenuItem($item)) {
CRM_Utils_System::permissionDenied();
return;
}
// check if ssl is set
if (CRM_Utils_Array::value('is_ssl', $item)) {
CRM_Utils_System::redirectToSSL();
}
if (isset($item['title'])) {
CRM_Utils_System::setTitle($item['title']);
}
if (isset($item['breadcrumb']) && !isset($item['is_public'])) {
CRM_Utils_System::appendBreadCrumb($item['breadcrumb']);
}
$pageArgs = null;
if (CRM_Utils_Array::value('page_arguments', $item)) {
$pageArgs = CRM_Core_Menu::getArrayForPathArgs($item['page_arguments']);
}
$template =& CRM_Core_Smarty::singleton();
if (isset($item['is_public']) && $item['is_public']) {
$template->assign('urlIsPublic', true);
} else {
$template->assign('urlIsPublic', false);
}
if (isset($item['return_url'])) {
//.........这里部分代码省略.........
示例3: array
static function &getNavigation($all = false)
{
CRM_Core_Error::fatal();
if (!self::$_menuCache) {
self::get('navigation');
}
if (CRM_Core_Config::isUpgradeMode()) {
return array();
}
if (!array_key_exists('navigation', self::$_menuCache)) {
// problem could be due to menu table empty. Just do a
// menu store and try again
self::store();
// here we goo
self::get('navigation');
if (!array_key_exists('navigation', self::$_menuCache)) {
CRM_Core_Error::fatal();
}
}
$nav =& self::$_menuCache['navigation'];
if (!$nav || !isset($nav['breadcrumb'])) {
return null;
}
$values =& $nav['breadcrumb'];
$config =& CRM_Core_Config::singleton();
foreach ($values as $index => $item) {
if (strpos(CRM_Utils_Array::value($config->userFrameworkURLVar, $_REQUEST), $item['path']) === 0) {
$values[$index]['active'] = 'class="active"';
} else {
$values[$index]['active'] = '';
}
if ($values[$index]['parent']) {
$parent = $values[$index]['parent'];
// only reset if still a leaf
if ($values[$parent]['class'] == 'leaf') {
$values[$parent]['class'] = 'collapsed';
}
// if a child or the parent is active, expand the menu
if ($values[$index]['active'] || $values[$parent]['active']) {
$values[$parent]['class'] = 'expanded';
}
// make the parent inactive if the child is active
if ($values[$index]['active'] && $values[$parent]['active']) {
$values[$parent]['active'] = '';
}
}
}
if (!$all) {
// remove all collapsed menu items from the array
foreach ($values as $weight => $v) {
if ($v['parent'] && $values[$v['parent']]['class'] == 'collapsed') {
unset($values[$weight]);
}
}
}
// check permissions for the rest
require_once 'CRM/Core/Permission.php';
$activeChildren = array();
foreach ($values as $weight => $v) {
if (CRM_Core_Permission::checkMenuItem($v)) {
if ($v['parent']) {
$activeChildren[] = $weight;
}
} else {
unset($values[$weight]);
}
}
// add the start / end tags
$len = count($activeChildren) - 1;
if ($len >= 0) {
$values[$activeChildren[0]]['start'] = true;
$values[$activeChildren[$len]]['end'] = true;
}
ksort($values, SORT_NUMERIC);
$i18n =& CRM_Core_I18n::singleton();
$i18n->localizeTitles($values);
return $values;
}
示例4: _invoke
protected static function _invoke($args)
{
if ($args[0] !== 'civicrm') {
return;
}
require_once 'CRM/Core/I18n.php';
$config = CRM_Core_Config::singleton();
if (isset($args[1]) and $args[1] == 'menu' and isset($args[2]) and $args[2] == 'rebuild') {
// ensure that the user has a good privilege level
if (CRM_Core_Permission::check('administer CiviCRM')) {
self::rebuildMenuAndCaches();
CRM_Core_Session::setStatus(ts('Menu has been rebuilt'));
return CRM_Utils_System::redirect();
} else {
CRM_Core_Error::fatal('You do not have permission to execute this url');
}
}
// first fire up IDS and check for bad stuff
if ($config->useIDS) {
$ids = new CRM_Core_IDS();
$ids->check($args);
}
// also initialize the i18n framework
$i18n = CRM_Core_I18n::singleton();
if ($config->userFramework == 'Standalone') {
$session = CRM_Core_Session::singleton();
if ($session->get('new_install') !== TRUE) {
CRM_Core_Standalone::sidebarLeft();
} elseif ($args[1] == 'standalone' && $args[2] == 'register') {
CRM_Core_Menu::store();
}
}
// get the menu items
$path = implode('/', $args);
$item = CRM_Core_Menu::get($path);
// we should try to compute menus, if item is empty and stay on the same page,
// rather than compute and redirect to dashboard.
if (!$item) {
CRM_Core_Menu::store(FALSE);
$item = CRM_Core_Menu::get($path);
}
if ($config->userFramework == 'Joomla' && $item) {
$config->userFrameworkURLVar = 'task';
// joomla 1.5RC1 seems to push this in the POST variable, which messes
// QF and checkboxes
unset($_POST['option']);
CRM_Core_Joomla::sidebarLeft();
}
// set active Component
$template = CRM_Core_Smarty::singleton();
$template->assign('activeComponent', 'CiviCRM');
$template->assign('formTpl', 'default');
if ($item) {
// CRM-7656 - make sure we send a clean sanitized path to create printer friendly url
$printerFriendly = CRM_Utils_System::makeURL('snippet', FALSE, FALSE, CRM_Utils_Array::value('path', $item)) . '2';
$template->assign('printerFriendly', $printerFriendly);
if (!array_key_exists('page_callback', $item)) {
CRM_Core_Error::debug('Bad item', $item);
CRM_Core_Error::fatal(ts('Bad menu record in database'));
}
// check that we are permissioned to access this page
if (!CRM_Core_Permission::checkMenuItem($item)) {
CRM_Utils_System::permissionDenied();
return;
}
// check if ssl is set
if (CRM_Utils_Array::value('is_ssl', $item)) {
CRM_Utils_System::redirectToSSL();
}
if (isset($item['title'])) {
CRM_Utils_System::setTitle($item['title']);
}
if (isset($item['breadcrumb']) && !isset($item['is_public'])) {
CRM_Utils_System::appendBreadCrumb($item['breadcrumb']);
}
$pageArgs = NULL;
if (CRM_Utils_Array::value('page_arguments', $item)) {
$pageArgs = CRM_Core_Menu::getArrayForPathArgs($item['page_arguments']);
}
$template = CRM_Core_Smarty::singleton();
if (isset($item['is_public']) && $item['is_public']) {
$template->assign('urlIsPublic', TRUE);
} else {
$template->assign('urlIsPublic', FALSE);
}
if (isset($item['return_url'])) {
$session = CRM_Core_Session::singleton();
$args = CRM_Utils_Array::value('return_url_args', $item, 'reset=1');
$session->pushUserContext(CRM_Utils_System::url($item['return_url'], $args));
}
// CRM_Core_Error::debug( $item ); exit( );
$result = NULL;
if (is_array($item['page_callback'])) {
$newArgs = explode('/', $_GET[$config->userFrameworkURLVar]);
require_once str_replace('_', DIRECTORY_SEPARATOR, $item['page_callback'][0]) . '.php';
$result = call_user_func($item['page_callback'], $newArgs);
} elseif (strstr($item['page_callback'], '_Form')) {
$wrapper = new CRM_Utils_Wrapper();
$result = $wrapper->run(CRM_Utils_Array::value('page_callback', $item), CRM_Utils_Array::value('title', $item), isset($pageArgs) ? $pageArgs : NULL);
} else {
//.........这里部分代码省略.........