auth_admin::build_permission_array PHP Method

build_permission_array() public method

Building content array from permission rows with explicit key ordering used by display_mask()
public build_permission_array ( &$permission_row, &$content_array, &$categories, $key_sort_array )
    function build_permission_array(&$permission_row, &$content_array, &$categories, $key_sort_array)
    {
        global $user, $phpbb_container;
        /* @var $phpbb_permissions \phpbb\permissions */
        $phpbb_permissions = $phpbb_container->get('acl.permissions');
        foreach ($key_sort_array as $forum_id) {
            if (!isset($permission_row[$forum_id])) {
                continue;
            }
            $permissions = $permission_row[$forum_id];
            ksort($permissions);
            @reset($permissions);
            while (list($permission, $auth_setting) = each($permissions)) {
                $cat = $phpbb_permissions->get_permission_category($permission);
                // Build our categories array
                if (!isset($categories[$cat])) {
                    $categories[$cat] = $phpbb_permissions->get_category_lang($cat);
                }
                // Build our content array
                if (!isset($content_array[$forum_id])) {
                    $content_array[$forum_id] = array();
                }
                if (!isset($content_array[$forum_id][$cat])) {
                    $content_array[$forum_id][$cat] = array('S_YES' => false, 'S_NEVER' => false, 'S_NO' => false, 'permissions' => array());
                }
                $content_array[$forum_id][$cat]['S_YES'] |= $auth_setting == ACL_YES ? true : false;
                $content_array[$forum_id][$cat]['S_NEVER'] |= $auth_setting == ACL_NEVER ? true : false;
                $content_array[$forum_id][$cat]['S_NO'] |= $auth_setting == ACL_NO ? true : false;
                $content_array[$forum_id][$cat]['permissions'][$permission] = $auth_setting;
            }
        }
    }

Usage Example

 /**
  * Display permission settings able to be set
  */
 function display_auth_options($auth_options)
 {
     global $template, $user;
     $content_array = $categories = array();
     $key_sort_array = array(0);
     $auth_options = array(0 => $auth_options);
     // Making use of auth_admin method here (we do not really want to change two similar code fragments)
     auth_admin::build_permission_array($auth_options, $content_array, $categories, $key_sort_array);
     $content_array = $content_array[0];
     $template->assign_var('S_NUM_PERM_COLS', sizeof($categories));
     // Assign to template
     foreach ($content_array as $cat => $cat_array) {
         $template->assign_block_vars('auth', array('CAT_NAME' => $user->lang['permission_cat'][$cat], 'S_YES' => $cat_array['S_YES'] && !$cat_array['S_NEVER'] && !$cat_array['S_NO'] ? true : false, 'S_NEVER' => $cat_array['S_NEVER'] && !$cat_array['S_YES'] && !$cat_array['S_NO'] ? true : false, 'S_NO' => $cat_array['S_NO'] && !$cat_array['S_NEVER'] && !$cat_array['S_YES'] ? true : false));
         foreach ($cat_array['permissions'] as $permission => $allowed) {
             $template->assign_block_vars('auth.mask', array('S_YES' => $allowed == ACL_YES ? true : false, 'S_NEVER' => $allowed == ACL_NEVER ? true : false, 'S_NO' => $allowed == ACL_NO ? true : false, 'FIELD_NAME' => $permission, 'PERMISSION' => $user->lang['acl_' . $permission]['lang']));
         }
     }
 }