| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Main module file for FPA.
 
-  */
 
- define('FPA_ATTR_PERMISSION',  'fpa-permission');
 
- define('FPA_ATTR_MODULE',      'fpa-module');
 
- define('FPA_ATTR_ROLE',        'fpa-role');
 
- define('FPA_ATTR_CHECKED',     'fpa-checked');
 
- define('FPA_ATTR_NOT_CHECKED', 'fpa-not-checked');
 
- define('FPA_ATTR_SYSTEM_NAME', 'fpa-system-name');
 
- // Replacement for improper use of hook_hook_info().
 
- require_once dirname(__FILE__) . '/fpa.theme.inc';
 
- require_once dirname(__FILE__) . '/fpa.form_alter.inc';
 
- /**
 
-  * Implements hook_menu().
 
-  */
 
- function fpa_menu() {
 
-   $items = array();
 
-   
 
-   $items['fpa_modal/%fpa_js/permissions'] = array(
 
-       'title' => 'Permissions',
 
-       'page callback' => '_fpa_ctools',
 
-       'page arguments' => array(1),
 
-       'access arguments' => array('administer permissions'),
 
-       'type' => MENU_CALLBACK,
 
-   );
 
-   
 
-   return $items;
 
- }
 
- /**
 
-  * Implements hook_admin_paths().
 
-  */
 
- function fpa_admin_paths() {
 
-   return array(
 
-     'fpa_modal/*/permissions' => TRUE,
 
-   );
 
- }
 
- /**
 
-  * Implements hook_help().
 
-  */
 
- function fpa_help($path, $arg) {
 
-   if ($path == 'admin/people/permissions') {
 
-     
 
-     $output = '';
 
-     
 
-     $output .= '<p>' . t('Permissions and Module names will match on the readable or system name. The system name is provided as a togglable column.') . '</p>';
 
-     
 
-     $output .= '<p>' . t('Enter in the format of "permission@module", e.g. "admin@system" will show only permissions with the text "admin" in modules with the text "system".') . '</p>';
 
-     
 
-     return $output;
 
-   }
 
- }
 
- /**
 
-  * Loader function to wrap ctools loader function.
 
-  */
 
- function fpa_js_load($arg) {
 
-   $return_code = 0;
 
-   
 
-   if (module_exists('ctools')) {
 
-     $return_code = ctools_js_load($arg);
 
-   }
 
-   
 
-   return $return_code;
 
- }
 
- function fpa_l($permission = '', $text = NULL, $options = array()) {
 
-   
 
-   // Available modal module system names in order of priority.
 
-   $supported_modules = array(
 
-     'ctools',
 
-   );
 
-   
 
-   if (is_null($text)) {
 
-     $text = t('Manage Permissions');
 
-   }
 
-   
 
-   // Find the most preferred modal method from the available methods.
 
-   $modules = array_intersect($supported_modules, array_keys(module_list()));
 
-   $method = array_shift($modules);
 
-   
 
-   $path = 'fpa_modal/nojs/permissions';
 
-   
 
-   $query = array(
 
-     'fpa_perm' => $permission,
 
-     'fpa_method' => $method,
 
-   );
 
-   
 
-   $attributes = array();
 
-   
 
-   switch ($method) {
 
-     case 'ctools':
 
-       ctools_include('ajax');
 
-       ctools_include('modal');
 
-       ctools_modal_add_js();
 
-       $attributes['class'] = 'ctools-use-modal';
 
-       break;
 
-     default:
 
-       $path = 'admin/people/permissions';
 
-       $attributes['target'] = '_blank';
 
-       $query['fpa_method'] = '_blank';
 
-       break;
 
-   }
 
-   
 
-   $options = array_merge_recursive(array('query' => $query, 'attributes' => $attributes), $options);
 
-   
 
-   return l($text, $path, $options);
 
- }
 
- function fpa_fieldset($filter_string, &$parent_item, $group = array()) {
 
-   
 
-   $parent_item['fpa_fieldset'] = array(
 
-     '#type' => 'fieldset',
 
-     '#title' => t('Permissions'),
 
-     '#collapsible' => TRUE,
 
-     '#collapsed' => TRUE,
 
-     '#description' => t('Clicking on this link will launch a modal/tab/window displaying the appropriate permissions.'),
 
-   );
 
-   
 
-   $parent_item['fpa_fieldset'] = array_merge_recursive($parent_item['fpa_fieldset'], $group);
 
-   
 
-   $parent_item['fpa_fieldset']['fpa'] = array(
 
-     '#type' => 'markup',
 
-     '#markup' => fpa_l($filter_string),
 
-   );
 
-   
 
- }
 
- /**
 
-  * Page callback for CTools modal path.
 
-  */
 
- function _fpa_ctools($js = NULL) {
 
-   // Need to include the file that contains the permissions form.
 
-   module_load_include('inc', 'user', 'user.admin');
 
-   
 
-   $form_id = 'user_admin_permissions';
 
-   
 
-   // Fall back if $js is not set.
 
-   if (!$js) {
 
-     return drupal_get_form($form_id);
 
-   }
 
-   ctools_include('modal');
 
-   ctools_include('ajax');
 
-   $form_state = array(
 
-     'title' => t('Permissions'),
 
-     'ajax' => TRUE,
 
-   );
 
-   
 
-   switch ($_GET['fpa_method']) {
 
-     case 'ctools':
 
-       $output = ctools_modal_form_wrapper($form_id, $form_state);
 
-       break;
 
-   }
 
-   
 
-   if (!empty($form_state['executed'])) {
 
-     $output = array();
 
-     $output[] = ctools_ajax_command_reload();
 
-   }
 
-   
 
-   echo ajax_render($output);
 
-   exit;
 
- }
 
- /**
 
-  * @return int Approximate number of bytes of ram required to render the permissions form.
 
-  */
 
- function _fpa_memory_required() {
 
-   
 
-   $permissions_count = count(module_invoke_all('permission'));
 
-   
 
-   $user_roles_count = count(user_roles());
 
-   
 
-   
 
-   $page_ram_required = (9 * 1024 * 1024);
 
-   
 
-   
 
-   // Takes ~26kb per row without any checkboxes.
 
-   $permission_row_overhead = 27261.028783658;
 
-   
 
-   $permissions_ram_required = $permissions_count * $permission_row_overhead;
 
-   
 
-   
 
-   // Determined by checking peak ram on permissions page, over several different number of visible roles.
 
-   $bytes_per_checkbox = 18924.508820799;
 
-   
 
-   $checkboxes_ram_required = $permissions_count * $user_roles_count * $bytes_per_checkbox;
 
-   
 
-   
 
-   return (int) ($page_ram_required + $permissions_ram_required + $checkboxes_ram_required);
 
- }
 
- function _fpa_reset_filter_defaults() {
 
-   setcookie("fpa_module_match", "", time() - 3600, '/');
 
-   setcookie("fpa_filter",       "", time() - 3600, '/');
 
-   setcookie("fpa_roles",        "", time() - 3600, '/');
 
- }
 
 
  |