function load_data_types()
 {
     global $data_types_list;
     // $data_types_path = get_theme_root() . "/runway-framework/data-types";
     $data_types_path = FRAMEWORK_DIR . 'data-types';
     $data_types_base = $data_types_path . "/data-type.php";
     if (!file_exists($data_types_path) || !file_exists($data_types_base)) {
         wp_die("Error: has no data types.");
     } else {
         include_once $data_types_base;
         $data_types_array = include_data_types($data_types_path);
         foreach ($data_types_array as $name => $path) {
             $data_type_slug = basename($path, '.php');
             if ($name == 'fileupload-type.php') {
                 if (!did_action('wp_enqueue_media')) {
                     wp_enqueue_media();
                 }
                 // Needed for upload field
             }
             $data_types_list[$data_type_slug] = array('filename' => $name, 'classname' => ucfirst(str_replace('-', '_', $data_type_slug)));
             // Unsupported in old PHP versions
             $data_types_list[$data_type_slug]['classname']::assign_actions_and_filters();
         }
     }
 }
 public function add_to_customize_page()
 {
     if (!empty($this->options_pages)) {
         foreach ($this->options_pages as $key => $page_options) {
             if (!empty($page_options)) {
                 $current = $this->prepare_form($page_options);
                 $settings = $this->make_settings($current);
                 if (!empty($settings)) {
                     ${$current['admin_object']} = new Settings_Object($settings);
                 }
                 add_action('customize_controls_print_styles', array(${$current['admin_object']}, 'include_extension_css'));
                 add_action('customize_controls_print_scripts', array(${$current['admin_object']}, 'include_extension_js'));
                 $_this = ${$current['admin_object']};
                 add_action('customize_register', function ($wp_customize) use($_this) {
                     // $data_types_path = get_theme_root() . "/runway-framework/data-types";
                     $data_types_path = FRAMEWORK_DIR . 'data-types';
                     $data_types_base = $data_types_path . '/data-type.php';
                     $_this->data_types = array();
                     if (!file_exists($data_types_path) || !file_exists($data_types_base)) {
                         wp_die("Error: data types");
                     } else {
                         include_once $data_types_base;
                         include_data_types($data_types_path);
                     }
                     $_this->data = get_option($_this->option_key);
                     // including js and cs
                     // $_this->include_extension_css();
                     // $_this->include_extension_js();
                     foreach ($_this->builder_page->sortOrder as $tab) {
                         if ($tab != 'none') {
                             foreach ($tab as $container_id => $container_fields) {
                                 if ($container_id != 'none') {
                                     $container = $_this->builder_page->elements->{$container_id};
                                     if (isset($container->display_on_customization_page) && $container->display_on_customization_page == true) {
                                         $wp_customize->add_section($container->index, array('title' => $container->title, 'description' => '', 'priority' => isset($container->priority) ? $container->priority : ''));
                                         $priority_level = 0;
                                         foreach ($container_fields as $field_id) {
                                             if ($field_id != 'none') {
                                                 $field = $_this->builder_page->elements->{$field_id};
                                                 $class_Name = ucfirst(str_replace('-', '_', $field->type));
                                                 if (class_exists($class_Name)) {
                                                     $wp_customize->add_setting($field->alias, array('default' => '', 'type' => 'customize'));
                                                     $option_field = new $class_Name($_this, $field, $wp_customize, $field->alias, array('label' => $field->title, 'section' => $container->index, 'settings' => $field->alias, 'priority' => $priority_level));
                                                     $priority_level++;
                                                     add_action('customize_save_' . $field->alias, array($option_field, 'save'));
                                                     add_filter('customize_value_' . $field->alias, array($option_field, 'get_value'));
                                                     $wp_customize->add_control($option_field);
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 });
             }
         }
     }
 }