本文整理汇总了PHP中CRM_Utils_System::makeURL方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Utils_System::makeURL方法的具体用法?PHP CRM_Utils_System::makeURL怎么用?PHP CRM_Utils_System::makeURL使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Utils_System
的用法示例。
在下文中一共展示了CRM_Utils_System::makeURL方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: __construct
/**
* All CRM single or multi page pages should inherit from this class.
*
* @param string title descriptive title of the controller
* @param boolean whether controller is modal
* @param string scope name of session if we want unique scope, used only by Controller_Simple
* @param boolean addSequence should we add a unique sequence number to the end of the key
* @param boolean ignoreKey should we not set a qfKey for this controller (for standalone forms)
*
* @access public
*
* @return void
*
*/
function __construct($title = NULL, $modal = TRUE, $mode = NULL, $scope = NULL, $addSequence = FALSE, $ignoreKey = FALSE)
{
// this has to true for multiple tab session fix
$addSequence = TRUE;
// let the constructor initialize this, should happen only once
if (!isset(self::$_template)) {
self::$_template = CRM_Core_Smarty::singleton();
self::$_session = CRM_Core_Session::singleton();
}
// lets try to get it from the session and/or the request vars
// we do this early on in case there is a fatal error in retrieving the
// key and/or session
$this->_entryURL = CRM_Utils_Request::retrieve('entryURL', 'String', $this);
// add a unique validable key to the name
$name = CRM_Utils_System::getClassName($this);
if ($name == 'CRM_Core_Controller_Simple' && !empty($scope)) {
// use form name if we have, since its a lot better and
// definitely different for different forms
$name = $scope;
}
$name = $name . '_' . $this->key($name, $addSequence, $ignoreKey);
$this->_title = $title;
if ($scope) {
$this->_scope = $scope;
} else {
$this->_scope = CRM_Utils_System::getClassName($this);
}
$this->_scope = $this->_scope . '_' . $this->_key;
// only use the civicrm cache if we have a valid key
// else we clash with other users CRM-7059
if (!empty($this->_key)) {
CRM_Core_Session::registerAndRetrieveSessionObjects(array("_{$name}_container", array('CiviCRM', $this->_scope)));
}
$this->HTML_QuickForm_Controller($name, $modal);
$snippet = CRM_Utils_Array::value('snippet', $_REQUEST);
if ($snippet) {
if ($snippet == 3) {
$this->_print = CRM_Core_Smarty::PRINT_PDF;
} elseif ($snippet == 4) {
// this is used to embed fragments of a form
$this->_print = CRM_Core_Smarty::PRINT_NOFORM;
self::$_template->assign('suppressForm', TRUE);
$this->_generateQFKey = FALSE;
} elseif ($snippet == 5) {
// this is used for popups and inlined ajax forms
// also used for the various tabs via TabHeader
$this->_print = CRM_Core_Smarty::PRINT_NOFORM;
} elseif ($snippet == 6) {
$this->_print = CRM_Core_Smarty::PRINT_NOFORM;
$this->_QFResponseType = 'json';
} else {
$this->_print = CRM_Core_Smarty::PRINT_SNIPPET;
}
}
// if the request has a reset value, initialize the controller session
if (CRM_Utils_Array::value('reset', $_GET)) {
$this->reset();
// in this case we'll also cache the url as a hidden form variable, this allows us to
// redirect in case the session has disappeared on us
$this->_entryURL = CRM_Utils_System::makeURL(NULL, TRUE, FALSE, NULL, TRUE);
$this->set('entryURL', $this->_entryURL);
}
// set the key in the session
// do this at the end so we have initialized the object
// and created the scope etc
$this->set('qfKey', $this->_key);
// also retrieve and store destination in session
$this->_destination = CRM_Utils_Request::retrieve('civicrmDestination', 'String', $this, FALSE, NULL, $_REQUEST);
}
示例3: buildQuickForm
/**
* Build the common elements between the search/advanced form.
*/
public function buildQuickForm()
{
parent::buildQuickForm();
CRM_Core_Resources::singleton()->addScriptFile('civicrm', 'packages/jquery/plugins/jstree/jquery.jstree.js', 0, 'html-header', FALSE)->addStyleFile('civicrm', 'packages/jquery/plugins/jstree/themes/default/style.css', 0, 'html-header');
$permission = CRM_Core_Permission::getPermission();
// some tasks.. what do we want to do with the selected contacts ?
$tasks = array();
if ($this->_componentMode == 1 || $this->_componentMode == 7) {
$tasks += CRM_Contact_Task::permissionedTaskTitles($permission, CRM_Utils_Array::value('deleted_contacts', $this->_formValues));
} else {
$className = $this->_modeValue['taskClassName'];
$tasks += $className::permissionedTaskTitles($permission, FALSE);
}
if (isset($this->_ssID)) {
if ($permission == CRM_Core_Permission::EDIT) {
$tasks = $tasks + CRM_Contact_Task::optionalTaskTitle();
}
$search_custom_id = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_SavedSearch', $this->_ssID, 'search_custom_id');
$savedSearchValues = array('id' => $this->_ssID, 'name' => CRM_Contact_BAO_SavedSearch::getName($this->_ssID, 'title'), 'search_custom_id' => $search_custom_id);
$this->assign_by_ref('savedSearch', $savedSearchValues);
$this->assign('ssID', $this->_ssID);
}
if ($this->_context === 'smog') {
// CRM-11788, we might want to do this for all of search where force=1
$formQFKey = CRM_Utils_Array::value('qfKey', $this->_formValues);
$getQFKey = CRM_Utils_Array::value('qfKey', $_GET);
$postQFKey = CRM_Utils_Array::value('qfKey', $_POST);
if ($formQFKey && empty($getQFKey) && empty($postQFKey)) {
$url = CRM_Utils_System::makeURL('qfKey') . $formQFKey;
CRM_Utils_System::redirect($url);
}
$permissionForGroup = FALSE;
if (!empty($this->_groupID)) {
// check if user has permission to edit members of this group
$permission = CRM_Contact_BAO_Group::checkPermission($this->_groupID);
if ($permission && in_array(CRM_Core_Permission::EDIT, $permission)) {
$permissionForGroup = TRUE;
}
// check if _groupID exists, it might not if
// we are displaying a hidden group
if (!isset($this->_group[$this->_groupID])) {
$this->_group[$this->_groupID] = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $this->_groupID, 'title');
}
// set the group title
$groupValues = array('id' => $this->_groupID, 'title' => $this->_group[$this->_groupID]);
$this->assign_by_ref('group', $groupValues);
// also set ssID if this is a saved search
$ssID = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $this->_groupID, 'saved_search_id');
$this->assign('ssID', $ssID);
//get the saved search mapping id
if ($ssID) {
$this->_ssID = $ssID;
$ssMappingId = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_SavedSearch', $ssID, 'mapping_id');
$this->assign('ssMappingID', $ssMappingId);
}
// Set dynamic page title for 'Show Members of Group'
CRM_Utils_System::setTitle(ts('Contacts in Group: %1', array(1 => $this->_group[$this->_groupID])));
}
$group_contact_status = array();
foreach (CRM_Core_SelectValues::groupContactStatus() as $k => $v) {
if (!empty($k)) {
$group_contact_status[] = $this->createElement('checkbox', $k, NULL, $v);
}
}
$this->addGroup($group_contact_status, 'group_contact_status', ts('Group Status'));
$this->assign('permissionedForGroup', $permissionForGroup);
}
// add the go button for the action form, note it is of type 'next' rather than of type 'submit'
if ($this->_context === 'amtg') {
// check if _groupID exists, it might not if
// we are displaying a hidden group
if (!isset($this->_group[$this->_amtgID])) {
$this->assign('permissionedForGroup', FALSE);
$this->_group[$this->_amtgID] = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $this->_amtgID, 'title');
}
// Set dynamic page title for 'Add Members Group'
CRM_Utils_System::setTitle(ts('Add to Group: %1', array(1 => $this->_group[$this->_amtgID])));
// also set the group title and freeze the action task with Add Members to Group
$groupValues = array('id' => $this->_amtgID, 'title' => $this->_group[$this->_amtgID]);
$this->assign_by_ref('group', $groupValues);
$this->add('submit', $this->_actionButtonName, ts('Add Contacts to %1', array(1 => $this->_group[$this->_amtgID])), array('class' => 'crm-form-submit'));
$this->add('hidden', 'task', CRM_Contact_Task::GROUP_CONTACTS);
$selectedRowsRadio = $this->addElement('radio', 'radio_ts', NULL, '', 'ts_sel', array('checked' => 'checked'));
$allRowsRadio = $this->addElement('radio', 'radio_ts', NULL, '', 'ts_all');
$this->assign('ts_sel_id', $selectedRowsRadio->_attributes['id']);
$this->assign('ts_all_id', $allRowsRadio->_attributes['id']);
}
$selectedContactIds = array();
$qfKeyParam = CRM_Utils_Array::value('qfKey', $this->_formValues);
// We use ajax to handle selections only if the search results component_mode is set to "contacts"
if ($qfKeyParam && ($this->get('component_mode') <= 1 || $this->get('component_mode') == 7)) {
$this->addClass('crm-ajax-selection-form');
$qfKeyParam = "civicrm search {$qfKeyParam}";
$selectedContactIdsArr = CRM_Core_BAO_PrevNextCache::getSelection($qfKeyParam);
$selectedContactIds = array_keys($selectedContactIdsArr[$qfKeyParam]);
}
$this->assign_by_ref('selectedContactIds', $selectedContactIds);
//.........这里部分代码省略.........
示例4: buildQuickForm
/**
* Build the common elements between the search/advanced form
*
* @access public
*
* @return void
*/
function buildQuickForm()
{
$permission = CRM_Core_Permission::getPermission();
// some tasks.. what do we want to do with the selected contacts ?
$tasks = array('' => ts('- actions -'));
if ($this->_componentMode == 1 || $this->_componentMode == 7) {
$tasks += CRM_Contact_Task::permissionedTaskTitles($permission, CRM_Utils_Array::value('deleted_contacts', $this->_formValues));
} else {
$className = $this->_modeValue['taskClassName'];
$tasks += $className::permissionedTaskTitles($permission, false);
}
if (isset($this->_ssID)) {
if ($permission == CRM_Core_Permission::EDIT) {
$tasks = $tasks + CRM_Contact_Task::optionalTaskTitle();
}
$search_custom_id = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_SavedSearch', $this->_ssID, 'search_custom_id');
$savedSearchValues = array('id' => $this->_ssID, 'name' => CRM_Contact_BAO_SavedSearch::getName($this->_ssID, 'title'), 'search_custom_id' => $search_custom_id);
$this->assign_by_ref('savedSearch', $savedSearchValues);
$this->assign('ssID', $this->_ssID);
}
if ($this->_context === 'smog') {
// CRM-11788, we might want to do this for all of search where force=1
$formQFKey = CRM_Utils_Array::value('qfKey', $this->_formValues);
$getQFKey = CRM_Utils_Array::value('qfKey', $_GET);
$postQFKey = CRM_Utils_Array::value('qfKey', $_POST);
if ($formQFKey && empty($getQFKey) && empty($postQFKey)) {
$url = CRM_Utils_System::makeURL('qfKey') . $formQFKey;
CRM_Utils_System::redirect($url);
}
$permissionForGroup = FALSE;
if (!empty($this->_groupID)) {
// check if user has permission to edit members of this group
$permission = CRM_Contact_BAO_Group::checkPermission($this->_groupID);
if ($permission && in_array(CRM_Core_Permission::EDIT, $permission)) {
$permissionForGroup = TRUE;
}
// check if _groupID exists, it might not if
// we are displaying a hidden group
if (!isset($this->_group[$this->_groupID])) {
$this->_group[$this->_groupID] = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $this->_groupID, 'title');
}
// set the group title
$groupValues = array('id' => $this->_groupID, 'title' => $this->_group[$this->_groupID]);
$this->assign_by_ref('group', $groupValues);
// also set ssID if this is a saved search
$ssID = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $this->_groupID, 'saved_search_id');
$this->assign('ssID', $ssID);
//get the saved search mapping id
if ($ssID) {
$this->_ssID = $ssID;
$ssMappingId = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_SavedSearch', $ssID, 'mapping_id');
$this->assign('ssMappingID', $ssMappingId);
}
// Set dynamic page title for 'Show Members of Group'
CRM_Utils_System::setTitle(ts('Contacts in Group: %1', array(1 => $this->_group[$this->_groupID])));
}
$group_contact_status = array();
foreach (CRM_Core_SelectValues::groupContactStatus() as $k => $v) {
if (!empty($k)) {
$group_contact_status[] = $this->createElement('checkbox', $k, NULL, $v);
}
}
$this->addGroup($group_contact_status, 'group_contact_status', ts('Group Status'));
$this->assign('permissionedForGroup', $permissionForGroup);
}
// add the go button for the action form, note it is of type 'next' rather than of type 'submit'
if ($this->_context === 'amtg') {
// check if _groupID exists, it might not if
// we are displaying a hidden group
if (!isset($this->_group[$this->_amtgID])) {
$this->assign('permissionedForGroup', FALSE);
$this->_group[$this->_amtgID] = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $this->_amtgID, 'title');
}
// Set dynamic page title for 'Add Members Group'
CRM_Utils_System::setTitle(ts('Add to Group: %1', array(1 => $this->_group[$this->_amtgID])));
// also set the group title and freeze the action task with Add Members to Group
$groupValues = array('id' => $this->_amtgID, 'title' => $this->_group[$this->_amtgID]);
$this->assign_by_ref('group', $groupValues);
$this->add('submit', $this->_actionButtonName, ts('Add Contacts to %1', array(1 => $this->_group[$this->_amtgID])), array('class' => 'form-submit', 'onclick' => "return checkPerformAction('mark_x', '" . $this->getName() . "', 1);"));
$this->add('hidden', 'task', CRM_Contact_Task::GROUP_CONTACTS);
} else {
$this->add('select', 'task', ts('Actions:') . ' ', $tasks);
$this->add('submit', $this->_actionButtonName, ts('Go'), array('class' => 'form-submit', 'id' => 'Go', 'onclick' => "return checkPerformAction('mark_x', '" . $this->getName() . "', 0, 1);"));
}
// need to perform tasks on all or selected items ? using radio_ts(task selection) for it
$selectedRowsRadio = $this->addElement('radio', 'radio_ts', NULL, '', 'ts_sel', array('checked' => 'checked', 'onclick' => 'toggleTaskAction( true );'));
$this->assign('ts_sel_id', $selectedRowsRadio->_attributes['id']);
if ($qfKeyParam = CRM_Utils_Array::value('qfKey', $this->_formValues)) {
$qfKeyParam = "civicrm search {$qfKeyParam}";
$selectedContactIdsArr = CRM_Core_BAO_PrevNextCache::getSelection($qfKeyParam);
$selectedContactIds = array_keys($selectedContactIdsArr[$qfKeyParam]);
}
$this->assign_by_ref('selectedContactIds', $selectedContactIds);
//.........这里部分代码省略.........
示例5: __construct
/**
* The constructor takes an assoc array
* key names of variable (which should be the same as the column name)
* value: ascending or descending
*
* @param mixed $vars
* Assoc array as described above.
* @param string $defaultSortOrder
* Order to sort.
*
* @return \CRM_Utils_Sort
*/
public function __construct(&$vars, $defaultSortOrder = NULL)
{
$this->_vars = array();
$this->_response = array();
foreach ($vars as $weight => $value) {
$this->_vars[$weight] = array('name' => $value['sort'], 'direction' => CRM_Utils_Array::value('direction', $value), 'title' => $value['name']);
}
$this->_currentSortID = 1;
if (isset($this->_vars[$this->_currentSortID])) {
$this->_currentSortDirection = $this->_vars[$this->_currentSortID]['direction'];
}
$this->_urlVar = self::SORT_ID;
$this->_link = CRM_Utils_System::makeURL($this->_urlVar, TRUE);
$this->initialize($defaultSortOrder);
}
示例6: makeURL
/**
* Build a url for pager links.
*/
public function makeURL($key, $value)
{
$href = CRM_Utils_System::makeURL($key, TRUE);
// CRM-12212 Remove alpha sort param
if (strpos($href, '&sortByCharacter=')) {
$href = preg_replace('#(.*)\\&sortByCharacter=[^&]*(.*)#', '\\1\\2', $href);
}
return $href . $value;
}
示例7: __construct
/**
* class constructor
*
* @return CRM_Core_Smarty
* @access private
*/
function __construct()
{
parent::__construct();
$config =& CRM_Core_Config::singleton();
if (isset($config->customTemplateDir) && $config->customTemplateDir) {
$this->template_dir = array($config->customTemplateDir, $config->templateDir);
} else {
$this->template_dir = $config->templateDir;
}
$this->compile_dir = $config->templateCompileDir;
//Check for safe mode CRM-2207
if (ini_get('safe_mode')) {
$this->use_sub_dirs = false;
} else {
$this->use_sub_dirs = true;
}
$this->plugins_dir = array($config->smartyDir . 'plugins', $config->pluginsDir);
// add the session and the config here
$session =& CRM_Core_Session::singleton();
$this->assign_by_ref('config', $config);
$this->assign_by_ref('session', $session);
// check default editor and assign to template, store it in session to reduce db calls
$defaultWysiwygEditor = $session->get('defaultWysiwygEditor');
if (!$defaultWysiwygEditor && !CRM_Core_Config::isUpgradeMode()) {
require_once 'CRM/Core/BAO/Preferences.php';
$defaultWysiwygEditor = CRM_Core_BAO_Preferences::value('editor_id');
$session->set('defaultWysiwygEditor', $defaultWysiwygEditor);
}
$this->assign('defaultWysiwygEditor', $defaultWysiwygEditor);
global $tsLocale;
$this->assign('langSwitch', CRM_Core_I18n::languages(true));
$this->assign('tsLocale', $tsLocale);
//check if logged in use has access CiviCRM permission and build menu
require_once 'CRM/Core/Permission.php';
$buildNavigation = CRM_Core_Permission::check('access CiviCRM');
$this->assign('buildNavigation', $buildNavigation);
if (!CRM_Core_Config::isUpgradeMode() && $buildNavigation) {
require_once 'CRM/Core/BAO/Navigation.php';
$contactID = $session->get('userID');
if ($contactID) {
$navigation =& CRM_Core_BAO_Navigation::createNavigation($contactID);
$this->assign('navigation', $navigation);
}
}
$this->register_function('crmURL', array('CRM_Utils_System', 'crmURL'));
$printerFriendly = CRM_Utils_System::makeURL('snippet', false, false) . '2';
$this->assign('printerFriendly', $printerFriendly);
}
示例8: getNextPageLink
function getNextPageLink()
{
if ($this->_currentPage < $this->_totalPages) {
$href = CRM_Utils_System::makeURL(self::PAGE_ID) . $this->getNextPageID();
return $this->_spacesAfter . sprintf('<a href="%s" title="%s">%s</a>', $href, $this->_altNext, $this->_nextImg) . $this->_spacesBefore . $this->_spacesAfter;
}
return '';
}
示例9: getPerPageLink
/**
* given a number create a link that will display the number of
* rows as specified by that link
*
* @param int $perPage the number of rows
*
* @return string the link
* @access void
*/
function getPerPageLink($perPage)
{
if ($perPage != $this->_perPage) {
$href = CRM_Utils_System::makeURL(self::PAGE_ROWCOUNT) . $perPage;
$link = sprintf('<a href="%s" %s>%s</a>', $href, $this->_classString, $perPage) . $this->_spacesBefore . $this->_spacesAfter;
} else {
$link = $this->_spacesBefore . $perPage . $this->_spacesAfter;
}
return $link;
}
示例10: _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 {
//.........这里部分代码省略.........