/** * Used to initialize the application * * Initializes objects needed by the application * Sets application configuration */ public function Initialize() { /** The configuration object for the current object is set */ $this->SetConfigurationObject($this); /** The default configuration settings */ $default_configuration = new DefaultConfiguration(); /** The default configuration is merged with user configuration and the result is returned */ $this->configuration = $default_configuration->GetUpdatedConfiguration($this->user_configuration); /** Php Sessions are enabled if user requested sessions */ $this->EnableSessions(); /** The application authentication and error handling is enabled */ $this->EnableAuthenticationAndErrorHandling(); /** All required classes are included */ $this->IncludeRequiredClasses(); }
/** * Used to get updated application configuration data * * It fetches the default application configuration * It merges the wordpress default configuration with the default application configuration * It then merges the user configuration with the default application configuration * * It returns an array containing application configuration data * * @since 1.0.0 * @param array $user_configuration user defined application configuration * * @return array $configuration the application configuration information */ public function GetUpdatedConfiguration($user_configuration) { /** If the php session is not started then it is started */ if (!$this->IsSessionStarted()) { session_start(); } /** The application name is set to the plugin name */ $user_configuration['general']['application_name'] = $user_configuration['wordpress']['plugin_name']; /** The default application configuration is fetched from parent default configuration object */ $configuration = parent::GetUpdatedConfiguration($user_configuration); /** If the plugin name is not given in application configuration then an exception is thrown */ if (!isset($user_configuration['wordpress']['plugin_name'])) { throw new \Exception("Plugin name was not given in application configuration"); } /** If the plugin version is not given in application configuration then an exception is thrown */ if (!isset($user_configuration['wordpress']['plugin_version'])) { throw new \Exception("Plugin version was not given in application configuration"); } /** Used to indicate that a settings menu is required */ $configuration['wordpress']['use_settings'] = false; /** The page title of the settings option */ $configuration['wordpress']['settings_page_title'] = ''; /** The menu title of the settings option */ $configuration['wordpress']['settings_menu_title'] = ''; /** The minimum access rights for accessing the settings page */ $configuration['wordpress']['settings_menu_permissions'] = 'manage_options'; /** The callback used to create the settings page content */ $configuration['wordpress']['settings_page_content_callback'] = array(); /** The callback used to initialize the admin page. This callback can be used to register fields using the WordPress settings api */ $configuration['wordpress']['admin_init_callback'] = array(); /** The custom actions. e.g ajax function calls */ $configuration['wordpress']['custom_actions'] = array(); /** The custom filters */ $configuration['wordpress']['custom_filters'] = array(); /** The custom shortcodes */ $configuration['wordpress']['custom_shortcodes'] = array(); /** The custom widgets */ $configuration['wordpress']['custom_widgets'] = array(); /** The custom xml rpc methods */ $configuration['wordpress']['custom_xmlrpc_methods'] = array(); /** The user id of the logged in user. It should be set inside the init action */ $configuration['wordpress']['user_id'] = 0; /** The mapping between short name of custom post types and the full name of the custom post types */ $configuration['wordpress']['custom_post_types'] = array(); /** The name of the WordPress plugin folder is determined */ $temp_arr = explode(DIRECTORY_SEPARATOR, $configuration['path']['base_path']); $plugin_folder_name = $temp_arr[count($temp_arr) - 1]; /** The wordpress actions and filters configuration is initialized */ $configuration['wordpress']['actions'] = $configuration['wordpress']['filters'] = array(); /** If the plugin text domain was not set then it is initialized */ if (!isset($configuration['wordpress']['plugin_text_domain'])) { $configuration['wordpress']['plugin_text_domain'] = ''; } /** If the application is being tested then the application class name is set to the testing class name and the testing class name is removed from the list */ if ($configuration['testing']['test_mode']) { $configuration['required_frameworks']['application']['class_name'] = $configuration['required_frameworks']['testing']['class_name']; } /** Used to indicate if api response will be encrypted */ $configuration['wordpress']['encrypted_api'] = false; /** The path to the plugin index.php file */ $configuration['wordpress']['plugin_file_path'] = $configuration['path']['base_path'] . DIRECTORY_SEPARATOR . "index.php"; /** The plugin folder name */ $configuration['wordpress']['plugin_folder_name'] = $plugin_folder_name; /** The plugin url. It is used to create css and javascript file urls */ $configuration['wordpress']['plugin_url'] = $configuration['path']['application_folder_url']; /** The path to the plugin folder */ $configuration['wordpress']['plugin_folder_path'] = $configuration['path']['base_path']; /** The path to the plugin template folder */ $configuration['wordpress']['plugin_template_path'] = $configuration['path']['base_path'] . DIRECTORY_SEPARATOR . $configuration['path']['application_folder'] . DIRECTORY_SEPARATOR . "templates"; /** The path to the plugin language folder */ $configuration['wordpress']['plugin_language_path'] = $configuration['path']['application_folder'] . DIRECTORY_SEPARATOR . "language" . DIRECTORY_SEPARATOR; /** If the plugin text domain was not set then it is derived from the plugin name */ if ($configuration['wordpress']['plugin_text_domain'] == '') { $configuration['wordpress']['plugin_text_domain'] = strtolower(str_replace(" ", "-", $configuration['wordpress']['plugin_name'])); } /** If the plugin prefix is not specified by the user then it is calculated. It is used to create element ids. e.g submit button id */ if (!isset($configuration['wordpress']['plugin_prefix'])) { $temp_arr = explode(" ", strtolower($configuration['wordpress']['plugin_name'])); $configuration['wordpress']['plugin_prefix'] = ""; for ($count = 0; $count < count($temp_arr); $count++) { $configuration['wordpress']['plugin_prefix'] = $configuration['wordpress']['plugin_prefix'] . substr($temp_arr[$count], 0, 1); } } /** The default application configuration is merged with the user configuration */ $configuration = array_replace_recursive($configuration, $user_configuration); return $configuration; }