本文整理汇总了PHP中JAccessRules::getData方法的典型用法代码示例。如果您正苦于以下问题:PHP JAccessRules::getData方法的具体用法?PHP JAccessRules::getData怎么用?PHP JAccessRules::getData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JAccessRules
的用法示例。
在下文中一共展示了JAccessRules::getData方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: save
/**
* Method to save the configuration data.
*
* @param array $data An array containing all global config data.
*
* @return boolean True on success, false on failure.
*
* @since 1.6
*/
public function save($data)
{
$app = JFactory::getApplication();
// Save the rules
if (isset($data['rules'])) {
$rules = new JAccessRules($data['rules']);
// Check that we aren't removing our Super User permission
// Need to get groups from database, since they might have changed
$myGroups = JAccess::getGroupsByUser(JFactory::getUser()->get('id'));
$myRules = $rules->getData();
$hasSuperAdmin = $myRules['core.admin']->allow($myGroups);
if (!$hasSuperAdmin) {
$app->enqueueMessage(JText::_('COM_CONFIG_ERROR_REMOVING_SUPER_ADMIN'), 'error');
return false;
}
$asset = JTable::getInstance('asset');
if ($asset->loadByName('root.1')) {
$asset->rules = (string) $rules;
if (!$asset->check() || !$asset->store()) {
$app->enqueueMessage(JText::_('SOME_ERROR_CODE'), 'error');
return;
}
} else {
$app->enqueueMessage(JText::_('COM_CONFIG_ERROR_ROOT_ASSET_NOT_FOUND'), 'error');
return false;
}
}
// Clear cache of com_config component.
$this->cleanCache('_system', 0);
$this->cleanCache('_system', 1);
}
示例2: testGetData
/**
* Tests the JAccessRules::getData method.
*
* @return void
*
* @since 12.2
*/
public function testGetData()
{
$array = array('edit' => array(-42 => 1, 2 => 1, 3 => 0));
$rule = new JAccessRules($array);
$data = $rule->getData();
$this->assertArrayHasKey('edit', $data);
$this->assertInstanceOf('JAccessRule', $data['edit']);
}
示例3: _createComponentRules
/**
* Creates initial component actions based on global config and on some ... logic
*
* @return array
* @since 11.1
*/
protected function _createComponentRules($component)
{
$groups = $this->_getUserGroups();
// Get flexicontent ACTION names, and initialize flexicontent rules to empty *
$flexi_actions = JAccess::getActions($component, 'component');
$flexi_rules = array();
foreach ($flexi_actions as $action) {
$flexi_rules[$action->name] = array();
// * WE NEED THIS (even if it remains empty), because we will compare COMPONENT actions in DB when checking initial permissions
$flexi_action_names[] = $action->name;
// Create an array of all COMPONENT actions names
}
// Get Joomla ACTION names
$root = JTable::getInstance('asset');
$root->loadByName('root.1');
$joomla_rules = new JAccessRules($root->rules);
foreach ($joomla_rules->getData() as $action_name => $data) {
$joomla_action_names[] = $action_name;
}
//echo "<pre>"; print_r($rules->getData()); echo "</pre>";
// Decide the actions to grant (give) to each user group
foreach ($groups as $group) {
// STEP 1: we will -grant- all NON-STANDARD component ACTIONS to any user group, that has 'core.manage' ACTION in the Global Configuration
// NOTE (a): if some user group has the --Super Admin-- Global Configuration ACTION (aka 'core.admin' for asset root.1), then it also has 'core.manage'
// NOTE (b): The STANDARD Joomla ACTIONs will not be set thus they will default to value -INHERIT- (=value "")
if (JAccess::checkGroup($group->id, 'core.manage')) {
//$flexi_rules['core.manage'][$group->id] = 1;
foreach ($flexi_action_names as $action_name) {
//if ($action_name == 'core.admin') continue; // component CONFIGURE action, skip it, this will can only be granted by STEP 2
if (in_array($action_name, $joomla_action_names)) {
continue;
}
// Skip Joomla STANDARD rules allowing them to inherit
$flexi_rules[$action_name][$group->id] = 1;
}
}
// STEP 2: we will set ACTIONS already granted in GLOBAL CONFIGURATION (this include the COMPONENT CONFIGURE 'core.admin' action)
// NOTE: that actions that do not exist in global configuration, will not be set here, so they will default to the the setting received by STEP 1
// NOTE: this was commented out and thus heritage will be used instead for existing Global ACTIONS
/*foreach($flexi_action_names as $action_name) {
if (JAccess::checkGroup($group->id, $action_name)) {
$flexi_rules[$action_name][$group->id] = 1;
}
}*/
// STEP 3: Handle some special case of custom-added ACTIONs
// e.g. Grant --OWNED-- actions if they have the corresponding --GENERAL-- actions
if (!empty($flexi_rules['core.delete'][$group->id])) {
if (in_array('core.delete.own', $flexi_action_names)) {
$flexi_rules['core.delete.own'][$group->id] = 1;
}
//CanDeleteOwn
}
if (!empty($flexi_rules['core.edit.state'][$group->id])) {
if (in_array('core.edit.state.own', $flexi_action_names)) {
$flexi_rules['core.edit.state.own'][$group->id] = 1;
}
//CanPublishOwn
}
// Give these regardless of edit privelege, since if the do not have edit then they cannot access item form and save task anyway
//if( !empty($flexi_rules['core.edit'][$group->id]) || !empty($flexi_rules['core.edit.own'][$group->id])) {
if (1) {
if (in_array('flexicontent.change.cat', $flexi_action_names)) {
$flexi_rules['flexicontent.change.cat'][$group->id] = 1;
}
// CanChangeCat
if (in_array('flexicontent.change.cat.sec', $flexi_action_names)) {
$flexi_rules['flexicontent.change.cat.sec'][$group->id] = 1;
}
// CanChangeSecCat
if (in_array('flexicontent.change.cat.feat', $flexi_action_names)) {
$flexi_rules['flexicontent.change.cat.feat'][$group->id] = 1;
}
// CanChangeFeatCat
if (in_array('flexicontent.uploadfiles', $flexi_action_names)) {
$flexi_rules['flexicontent.uploadfiles'][$group->id] = 1;
}
// CanUploadFiles
}
// By default give to everybody the edit field values privelege
if (in_array('flexicontent.editfieldvalues', $flexi_action_names)) {
$flexi_rules['flexicontent.editfieldvalues'][$group->id] = 1;
}
//CanEditFieldValues
}
// return rules, a NOTE: MAYBE in future we create better initial permissions by checking allow/deny/inherit values instead of just HAS ACTION ...
return $flexi_rules;
}
示例4: save
/**
* Method to save the configuration data.
*
* @param array $data An array containing all global config data.
*
* @return boolean True on success, false on failure.
*
* @since 1.6
*/
public function save($data)
{
$app = JFactory::getApplication();
// Check that we aren't setting wrong database configuration
$options = array('driver' => $data['dbtype'], 'host' => $data['host'], 'user' => $data['user'], 'password' => JFactory::getConfig()->get('password'), 'database' => $data['db'], 'prefix' => $data['dbprefix']);
try {
$dbc = JDatabaseDriver::getInstance($options)->getVersion();
} catch (Exception $e) {
$app->enqueueMessage(JText::_('JLIB_DATABASE_ERROR_DATABASE_CONNECT'), 'error');
return false;
}
// Save the rules
if (isset($data['rules'])) {
$rules = new JAccessRules($data['rules']);
// Check that we aren't removing our Super User permission
// Need to get groups from database, since they might have changed
$myGroups = JAccess::getGroupsByUser(JFactory::getUser()->get('id'));
$myRules = $rules->getData();
$hasSuperAdmin = $myRules['core.admin']->allow($myGroups);
if (!$hasSuperAdmin) {
$app->enqueueMessage(JText::_('COM_CONFIG_ERROR_REMOVING_SUPER_ADMIN'), 'error');
return false;
}
$asset = JTable::getInstance('asset');
if ($asset->loadByName('root.1')) {
$asset->rules = (string) $rules;
if (!$asset->check() || !$asset->store()) {
$app->enqueueMessage(JText::_('SOME_ERROR_CODE'), 'error');
return;
}
} else {
$app->enqueueMessage(JText::_('COM_CONFIG_ERROR_ROOT_ASSET_NOT_FOUND'), 'error');
return false;
}
unset($data['rules']);
}
// Save the text filters
if (isset($data['filters'])) {
$registry = new Registry();
$registry->loadArray(array('filters' => $data['filters']));
$extension = JTable::getInstance('extension');
// Get extension_id
$extension_id = $extension->find(array('name' => 'com_config'));
if ($extension->load((int) $extension_id)) {
$extension->params = (string) $registry;
if (!$extension->check() || !$extension->store()) {
$app->enqueueMessage(JText::_('SOME_ERROR_CODE'), 'error');
return;
}
} else {
$app->enqueueMessage(JText::_('COM_CONFIG_ERROR_CONFIG_EXTENSION_NOT_FOUND'), 'error');
return false;
}
unset($data['filters']);
}
// Get the previous configuration.
$prev = new JConfig();
$prev = JArrayHelper::fromObject($prev);
// Merge the new data in. We do this to preserve values that were not in the form.
$data = array_merge($prev, $data);
/*
* Perform miscellaneous options based on configuration settings/changes.
*/
// Escape the offline message if present.
if (isset($data['offline_message'])) {
$data['offline_message'] = JFilterOutput::ampReplace($data['offline_message']);
}
// Purge the database session table if we are changing to the database handler.
if ($prev['session_handler'] != 'database' && $data['session_handler'] == 'database') {
$table = JTable::getInstance('session');
$table->purge(-1);
}
if (empty($data['cache_handler'])) {
$data['caching'] = 0;
}
$path = JPATH_SITE . '/cache';
// Give a warning if the cache-folder can not be opened
if ($data['caching'] > 0 && $data['cache_handler'] == 'file' && @opendir($path) == false) {
JLog::add(JText::sprintf('COM_CONFIG_ERROR_CACHE_PATH_NOTWRITABLE', $path), JLog::WARNING, 'jerror');
$data['caching'] = 0;
}
// Clean the cache if disabled but previously enabled.
if (!$data['caching'] && $prev['caching']) {
$cache = JFactory::getCache();
$cache->clean();
}
// Create the new configuration object.
$config = new Registry('config');
$config->loadArray($data);
// Overwrite the old FTP credentials with the new ones.
$temp = JFactory::getConfig();
//.........这里部分代码省略.........
示例5: save
/**
* Method to save the configuration data.
*
* @param array $data An array containing all global config data.
*
* @return boolean True on success, false on failure.
*
* @since 1.6
*/
public function save($data)
{
$app = JFactory::getApplication();
// Check that we aren't setting wrong database configuration
$options = array('driver' => $data['dbtype'], 'host' => $data['host'], 'user' => $data['user'], 'password' => JFactory::getConfig()->get('password'), 'database' => $data['db'], 'prefix' => $data['dbprefix']);
try {
$dbc = JDatabaseDriver::getInstance($options)->getVersion();
} catch (Exception $e) {
$app->enqueueMessage(JText::_('JLIB_DATABASE_ERROR_DATABASE_CONNECT'), 'error');
return false;
}
// Check if we can set the Force SSL option
if ((int) $data['force_ssl'] !== 0 && (int) $data['force_ssl'] !== (int) JFactory::getConfig()->get('force_ssl', '0')) {
try {
// Make an HTTPS request to check if the site is available in HTTPS.
$host = JUri::getInstance()->getHost();
$options = new \Joomla\Registry\Registry();
$options->set('userAgent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0');
$options->set('transport.curl', array(CURLOPT_SSL_VERIFYPEER => false));
$response = JHttpFactory::getHttp($options)->get('https://' . $host . JUri::root(true) . '/', array('Host' => $host), 10);
// If available in HTTPS check also the status code.
if (!in_array($response->code, array(200, 503, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310), true)) {
throw new RuntimeException('HTTPS version of the site returned an invalid HTTP status code.');
}
} catch (RuntimeException $e) {
$data['force_ssl'] = 0;
// Also update the user state
$app->setUserState('com_config.config.global.data.force_ssl', 0);
// Inform the user
$app->enqueueMessage(JText::_('COM_CONFIG_ERROR_SSL_NOT_AVAILABLE'), 'warning');
}
}
// Save the rules
if (isset($data['rules'])) {
$rules = new JAccessRules($data['rules']);
// Check that we aren't removing our Super User permission
// Need to get groups from database, since they might have changed
$myGroups = JAccess::getGroupsByUser(JFactory::getUser()->get('id'));
$myRules = $rules->getData();
$hasSuperAdmin = $myRules['core.admin']->allow($myGroups);
if (!$hasSuperAdmin) {
$app->enqueueMessage(JText::_('COM_CONFIG_ERROR_REMOVING_SUPER_ADMIN'), 'error');
return false;
}
$asset = JTable::getInstance('asset');
if ($asset->loadByName('root.1')) {
$asset->rules = (string) $rules;
if (!$asset->check() || !$asset->store()) {
$app->enqueueMessage(JText::_('SOME_ERROR_CODE'), 'error');
return;
}
} else {
$app->enqueueMessage(JText::_('COM_CONFIG_ERROR_ROOT_ASSET_NOT_FOUND'), 'error');
return false;
}
unset($data['rules']);
}
// Save the text filters
if (isset($data['filters'])) {
$registry = new Registry();
$registry->loadArray(array('filters' => $data['filters']));
$extension = JTable::getInstance('extension');
// Get extension_id
$extension_id = $extension->find(array('name' => 'com_config'));
if ($extension->load((int) $extension_id)) {
$extension->params = (string) $registry;
if (!$extension->check() || !$extension->store()) {
$app->enqueueMessage(JText::_('SOME_ERROR_CODE'), 'error');
return;
}
} else {
$app->enqueueMessage(JText::_('COM_CONFIG_ERROR_CONFIG_EXTENSION_NOT_FOUND'), 'error');
return false;
}
unset($data['filters']);
}
// Get the previous configuration.
$prev = new JConfig();
$prev = JArrayHelper::fromObject($prev);
// Merge the new data in. We do this to preserve values that were not in the form.
$data = array_merge($prev, $data);
/*
* Perform miscellaneous options based on configuration settings/changes.
*/
// Escape the offline message if present.
if (isset($data['offline_message'])) {
$data['offline_message'] = JFilterOutput::ampReplace($data['offline_message']);
}
// Purge the database session table if we are changing to the database handler.
if ($prev['session_handler'] != 'database' && $data['session_handler'] == 'database') {
$table = JTable::getInstance('session');
//.........这里部分代码省略.........
示例6: save
/**
* Method to save the configuration data.
*
* @param array An array containing all global config data.
* @return bool True on success, false on failure.
* @since 1.6
*/
public function save($data)
{
// Save the rules
if (isset($data['rules'])) {
$rules = new JAccessRules($data['rules']);
// Check that we aren't removing our Super User permission
// Need to get groups from database, since they might have changed
$myGroups = JAccess::getGroupsByUser(JFactory::getUser()->get('id'));
$myRules = $rules->getData();
$hasSuperAdmin = $myRules['core.admin']->allow($myGroups);
if (!$hasSuperAdmin) {
$this->setError(JText::_('COM_CONFIG_ERROR_REMOVING_SUPER_ADMIN'));
return false;
}
$asset = JTable::getInstance('asset');
if ($asset->loadByName('root.1')) {
$asset->rules = (string) $rules;
if (!$asset->check() || !$asset->store()) {
JError::raiseNotice('SOME_ERROR_CODE', $asset->getError());
}
} else {
$this->setError(JText::_('COM_CONFIG_ERROR_ROOT_ASSET_NOT_FOUND'));
return false;
}
unset($data['rules']);
}
// Save the text filters
if (isset($data['filters'])) {
$registry = new JRegistry();
$registry->loadArray(array('filters' => $data['filters']));
$extension = JTable::getInstance('extension');
// Get extension_id
$extension_id = $extension->find(array('name' => 'com_config'));
if ($extension->load((int) $extension_id)) {
$extension->params = (string) $registry;
if (!$extension->check() || !$extension->store()) {
JError::raiseNotice('SOME_ERROR_CODE', $extension->getError());
}
} else {
$this->setError(JText::_('COM_CONFIG_ERROR_CONFIG_EXTENSION_NOT_FOUND'));
return false;
}
unset($data['filters']);
}
// Get the previous configuration.
$prev = new JConfig();
$prev = JArrayHelper::fromObject($prev);
// Merge the new data in. We do this to preserve values that were not in the form.
$data = array_merge($prev, $data);
/*
* Perform miscellaneous options based on configuration settings/changes.
*/
// Escape the sitename if present.
if (isset($data['sitename'])) {
$data['sitename'] = $data['sitename'];
}
// Escape the MetaDesc if present.
if (isset($data['MetaDesc'])) {
$data['MetaDesc'] = $data['MetaDesc'];
}
// Escape the MetaKeys if present.
if (isset($data['MetaKeys'])) {
$data['MetaKeys'] = $data['MetaKeys'];
}
// Escape the offline message if present.
if (isset($data['offline_message'])) {
$data['offline_message'] = JFilterOutput::ampReplace($data['offline_message']);
}
// Purge the database session table if we are changing to the database handler.
if ($prev['session_handler'] != 'database' && $data['session_handler'] == 'database') {
$table = JTable::getInstance('session');
$table->purge(-1);
}
if (empty($data['cache_handler'])) {
$data['caching'] = 0;
}
// Clean the cache if disabled but previously enabled.
if (!$data['caching'] && $prev['caching']) {
$cache = JFactory::getCache();
$cache->clean();
}
// Create the new configuration object.
$config = new JRegistry('config');
$config->loadArray($data);
/*
* Write the configuration file.
*/
jimport('joomla.filesystem.path');
jimport('joomla.filesystem.file');
// Set the configuration file path.
$file = JPATH_CONFIGURATION . '/configuration.php';
// Overwrite the old FTP credentials with the new ones.
$temp = JFactory::getConfig();
//.........这里部分代码省略.........
示例7: save
/**
* Method to save the configuration data.
*
* @param array An array containing all global config data.
*
* @return bool True on success, false on failure.
*
* @since 1.6
*/
public function save($data)
{
// Save the rules
if (isset($data['rules'])) {
$rules = new JAccessRules($data['rules']);
// Check that we aren't removing our Super User permission
// Need to get groups from database, since they might have changed
$myGroups = JAccess::getGroupsByUser(JFactory::getUser()->get('id'));
$myRules = $rules->getData();
$hasSuperAdmin = $myRules['core.admin']->allow($myGroups);
if (!$hasSuperAdmin) {
$this->setError(JText::_('COM_CONFIG_ERROR_REMOVING_SUPER_ADMIN'));
return false;
}
$asset = JTable::getInstance('asset');
if ($asset->loadByName('root.1')) {
$asset->rules = (string) $rules;
if (!$asset->check() || !$asset->store()) {
JError::raiseNotice('SOME_ERROR_CODE', $asset->getError());
}
} else {
$this->setError(JText::_('COM_CONFIG_ERROR_ROOT_ASSET_NOT_FOUND'));
return false;
}
unset($data['rules']);
}
// Save the text filters
if (isset($data['filters'])) {
$registry = new JRegistry();
$registry->loadArray(array('filters' => $data['filters']));
$extension = JTable::getInstance('extension');
// Get extension_id
$extension_id = $extension->find(array('name' => 'com_config'));
if ($extension->load((int) $extension_id)) {
$extension->params = (string) $registry;
if (!$extension->check() || !$extension->store()) {
JError::raiseNotice('SOME_ERROR_CODE', $extension->getError());
}
} else {
$this->setError(JText::_('COM_CONFIG_ERROR_CONFIG_EXTENSION_NOT_FOUND'));
return false;
}
unset($data['filters']);
}
// Get the previous configuration.
$prev = new JConfig();
$prev = JArrayHelper::fromObject($prev);
// Merge the new data in. We do this to preserve values that were not in the form.
$data = array_merge($prev, $data);
/*
* Perform miscellaneous options based on configuration settings/changes.
*/
// Escape the offline message if present.
if (isset($data['offline_message'])) {
$data['offline_message'] = JFilterOutput::ampReplace($data['offline_message']);
}
// Purge the database session table if we are changing to the database handler.
if ($prev['session_handler'] != 'database' && $data['session_handler'] == 'database') {
$table = JTable::getInstance('session');
$table->purge(-1);
}
if (empty($data['cache_handler'])) {
$data['caching'] = 0;
}
// Clean the cache if disabled but previously enabled.
if (!$data['caching'] && $prev['caching']) {
$cache = JFactory::getCache();
$cache->clean();
}
// Create the new configuration object.
$config = new JRegistry('config');
$config->loadArray($data);
// Overwrite the old FTP credentials with the new ones.
$temp = JFactory::getConfig();
$temp->set('ftp_enable', $data['ftp_enable']);
$temp->set('ftp_host', $data['ftp_host']);
$temp->set('ftp_port', $data['ftp_port']);
$temp->set('ftp_user', $data['ftp_user']);
$temp->set('ftp_pass', $data['ftp_pass']);
$temp->set('ftp_root', $data['ftp_root']);
// Clear cache of com_config component.
$this->cleanCache('_system');
// Write the configuration file.
return $this->writeConfigFile($config);
}