set_role_manager_capabilities(); } /** * Add index file to forms upload folder. * * @since 7.11.8 * @access protected * @return void */ protected function set_role_manager_capabilities() { $builder_settings = get_option( 'fusion_builder_settings', [] ); if ( isset( $builder_settings['capabilities'] ) ) { $new_capabilities = $this->get_default_role_manager_capabilities(); $old_capabilities = $builder_settings['capabilities']; $post_types = [ 'fusion_tb_layout', 'fusion_tb_section', 'awb_off_canvas', 'fusion_icons', 'fusion_form', 'slide', 'avada_library', 'avada_portfolio', 'avada_faq', 'post', 'page', ]; $cap_matcher = [ 'dashboard_menu' => 'dashboard_access', 'avada_builder' => 'backed_builder_edit', 'avada_live' => 'live_builder_edit', 'page_options' => 'page_options', 'submissions' => 'submissions_access', ]; foreach ( $old_capabilities as $role => $caps ) { foreach ( $caps as $cap ) { if ( 'global_options' === $cap ) { $new_capabilities[ $role ][ 'awb_' . $cap ]['dashboard_access'] = 'on'; } elseif ( 'global_elements' === $cap ) { $new_capabilities[ $role ]['avada_library'][ $cap ] = 'on'; } else { $base_cap = str_replace( $post_types, '', $cap ); $base_cap = str_replace( '__', '_page_', $base_cap ); $post_type = str_replace( $base_cap, '', $cap ); $base_cap = ltrim( $base_cap, '_' ); if ( 'submissions' === $base_cap ) { $user_role = get_role( $role ); if ( isset( $user_role->capabilities['moderate_comments'] ) && $user_role->capabilities['moderate_comments'] ) { $new_capabilities[ $role ][ $post_type ][ $cap_matcher[ $base_cap ] ] = 'on'; } } else { $new_capabilities[ $role ][ $post_type ][ $cap_matcher[ $base_cap ] ] = 'on'; } } } } unset( $builder_settings['capabilities'] ); $builder_settings['role_manager_caps'] = $new_capabilities; update_option( 'fusion_builder_settings', $builder_settings ); } } /** * Get default role manager capabilities. * * @since 3.11.8 * @access private * @return array */ private function get_default_role_manager_capabilities() { $default_role_capabilities = $this->get_default_role_capabilities(); $editor = $default_role_capabilities; $editor['fusion_tb_layout'] = $this->get_capability_choices( [ 'on' ] ); $editor['fusion_tb_section'] = $this->get_capability_choices( [ 'on', 'on', 'on', 'on' ] ); $editor['fusion_form'] = $this->get_capability_choices( [ 'on', 'on', 'on', 'on', 'on' ] ); $editor['avada_library'] = $this->get_capability_choices( [ 'on', 'on', 'on', 'on', '', 'on' ] ); $capabilities = [ 'editor' => $editor, 'author' => $default_role_capabilities, 'contributor' => $default_role_capabilities, 'default' => $default_role_capabilities, ]; return $capabilities; } /** * Get capabilities for a default role. * * @since 3.11.8 * @access private * @return array */ private function get_default_role_capabilities() { $capabilities = [ 'awb_global_options' => $this->get_capability_choices( [ 'off' ] ), 'awb_prebuilts' => $this->get_capability_choices( [ 'off' ] ), 'awb_studio' => $this->get_capability_choices( [ 'off' ] ), 'fusion_tb_layout' => $this->get_capability_choices( [ 'off' ] ), 'fusion_tb_section' => $this->get_capability_choices( [ 'off', 'off', 'off', 'off' ] ), 'awb_off_canvas' => $this->get_capability_choices( [ 'on', 'on', 'on', 'on' ] ), 'fusion_icons' => $this->get_capability_choices( [ 'on' ] ), 'fusion_form' => $this->get_capability_choices( [ 'on', 'on', 'on', 'on', 'off' ] ), 'slide' => $this->get_capability_choices( [ 'on', '', '', 'on' ] ), 'avada_library' => $this->get_capability_choices( [ 'on', 'on', 'on', 'on', '', 'off' ] ), 'avada_portfolio' => $this->get_capability_choices( [ 'on', 'on', 'on', 'on' ] ), 'avada_faq' => $this->get_capability_choices( [ 'on', 'on', 'on', 'on' ] ), 'post' => $this->get_capability_choices( [ '', 'on', 'on', 'on' ] ), 'page' => $this->get_capability_choices( [ '', 'on', 'on', 'on' ] ), 'product' => $this->get_capability_choices( [ '', 'on', 'on', 'on' ] ), ]; return $capabilities; } /** * Get capability choices. * * @since 3.11.8 * @access private * @param array $selection The selection "mask" of choices. * @return array */ private function get_capability_choices( $selection ) { $available_choices = [ 'dashboard_access', 'backed_builder_edit', 'live_builder_edit', 'page_options', 'submissions_access', 'global_elements' ]; $selected_choices = []; foreach ( $selection as $index => $value ) { if ( '' !== $value ) { $selected_choices[ $available_choices[ $index ] ] = $value; } } return $selected_choices; } }