public function Edit()
 {
     $t_role = $this->getRoleObject();
     $t_screen = new ca_editor_ui_screens();
     $o_dm = Datamodel::load();
     $t_list = new ca_lists();
     $va_role_vars = $t_role->get('vars');
     $va_bundle_access_settings = $va_role_vars['bundle_access_settings'];
     $vn_default_bundle_access_level = (int) $this->request->config->get('default_bundle_access_level');
     $va_bundle_list = $va_table_names = array();
     foreach (ca_users::$s_bundlable_tables as $vs_table) {
         $t_instance = $o_dm->getInstanceByTableName($vs_table, true);
         $va_table_names[$vs_table] = caUcFirstUTF8Safe($t_instance->getProperty('NAME_PLURAL'));
         $va_available_bundles = $t_screen->getAvailableBundles($vs_table);
         foreach ($va_available_bundles as $vs_bundle_name => $va_bundle_info) {
             $vn_access = isset($va_bundle_access_settings[$vs_table . '.' . $vs_bundle_name]) ? $va_bundle_access_settings[$vs_table . '.' . $vs_bundle_name] : $vn_default_bundle_access_level;
             $va_bundle_list[$vs_table][$vs_bundle_name] = array('bundle_info' => $va_bundle_info, 'access' => $vn_access);
         }
     }
     $this->view->setVar('bundle_list', $va_bundle_list);
     $vn_default_type_access_level = (int) $this->request->config->get('default_type_access_level');
     $va_type_list = array();
     $va_type_access_settings = $va_role_vars['type_access_settings'];
     foreach (ca_users::$s_bundlable_tables as $vs_table) {
         $t_instance = $o_dm->getInstanceByTableName($vs_table, true);
         if (!($vs_list_code = $t_instance->getTypeListCode())) {
             continue;
         }
         $va_table_names[$vs_table] = caUcFirstUTF8Safe($t_instance->getProperty('NAME_PLURAL'));
         $va_types = $t_list->getListItemsAsHierarchy($vs_list_code, array('additionalTableToJoin' => 'ca_list_item_labels'));
         if (is_array($va_types)) {
             foreach ($va_types as $vn_i => $va_type_info) {
                 $vn_item_id = $va_type_info['NODE']['item_id'];
                 $vn_access = isset($va_type_access_settings[$vs_table . '.' . $vn_item_id]) ? $va_type_access_settings[$vs_table . '.' . $vn_item_id] : $vn_default_type_access_level;
                 $va_type_info['NODE']['level'] = $va_type_info['LEVEL'];
                 $va_type_list[$vs_table][$vn_item_id] = array('type_info' => $va_type_info['NODE'], 'access' => $vn_access);
             }
         }
     }
     $vn_default_source_access_level = (int) $this->request->config->get('default_source_access_level');
     $va_source_list = array();
     $va_source_access_settings = $va_role_vars['source_access_settings'];
     foreach (ca_users::$s_bundlable_tables as $vs_table) {
         $t_instance = $o_dm->getInstanceByTableName($vs_table, true);
         if (!($vs_list_code = $t_instance->getSourceListCode())) {
             continue;
         }
         $va_table_names[$vs_table] = caUcFirstUTF8Safe($t_instance->getProperty('NAME_PLURAL'));
         $va_sources = $t_list->getListItemsAsHierarchy($vs_list_code, array('additionalTableToJoin' => 'ca_list_item_labels'));
         if (is_array($va_sources)) {
             foreach ($va_sources as $vn_i => $va_source_info) {
                 $vn_item_id = $va_source_info['NODE']['item_id'];
                 $vn_access = isset($va_source_access_settings[$vs_table . '.' . $vn_item_id]) ? $va_source_access_settings[$vs_table . '.' . $vn_item_id] : $vn_default_source_access_level;
                 $va_source_info['NODE']['level'] = $va_source_info['LEVEL'];
                 $va_source_list[$vs_table][$vn_item_id] = array('source_info' => $va_source_info['NODE'], 'access' => $vn_access, 'default' => $vn_item_id == $va_source_access_settings[$vs_table . '_default_id']);
             }
         }
     }
     $va_access_status_list = array();
     if (is_array($va_access_statuses = $t_list->getListItemsAsHierarchy('access_statuses', array('additionalTableToJoin' => 'ca_list_item_labels')))) {
         $va_access_status_settings = $va_role_vars['access_status_settings'];
         foreach ($va_access_statuses as $vn_i => $va_access_status_info) {
             if (!$va_access_status_info['NODE']['parent_id']) {
                 continue;
             }
             $vn_item_id = $va_access_status_info['NODE']['item_id'];
             $va_access_status_info['NODE']['level'] = $va_access_status_info['LEVEL'];
             $vn_access = isset($va_access_status_settings[$vn_item_id]) ? $va_access_status_settings[$vn_item_id] : null;
             $va_access_status_list[$vn_item_id] = array('access_status_info' => $va_access_status_info['NODE'], 'access' => $vn_access);
         }
     }
     $this->view->setVar('type_list', $va_type_list);
     $this->view->setVar('source_list', $va_source_list);
     $this->view->setVar('access_status_list', $va_access_status_list);
     $this->view->setVar('table_display_names', $va_table_names);
     $this->render('role_edit_html.php');
 }