/** * Hidden constructor. Use Configuration::setup * * @param array $mapping The mapping between configuration files and classes. * * @throws ConfigurationNotFoundException */ protected function __construct($mapping) { // Supported parsers for configuration files $parsers = array('config.php' => new PhpParser()); // Parse each file $configRoot = Paths::configuration(); $env = Baobab::environment(); foreach ($mapping as $file => $className) { $fileLoaded = false; $data = array(); $pathStack = array($configRoot . '/' . $env . '/' . $file, $configRoot . '/' . $file); foreach ($pathStack as $fullPath) { $tempData = null; /** @var \Baobab\Configuration\Parser\Parser $parser */ foreach ($parsers as $ext => $parser) { if (file_exists($fullPath . '.' . $ext)) { $fileLoaded = true; $tempData = $parser->parse($fullPath); break; } } if ($tempData != null) { $data = array_merge($tempData, $data); } } if ($fileLoaded) { $this->initializers[$file] = new $className($file, $data); // Provide some hooks do_action('baobab/configuration/file-loaded?file=' . $file); } } }
/** * Constructor * * @param string $id The ID of the initializer * @param array $data The configuration key/value pairs */ public function __construct($id, $data) { parent::__construct($id, $data); // Boostrap Kirki Hooks::filter('kirki/config', $this, 'configureKirki'); Hooks::filter('customize_register', $this, 'createPanels'); Hooks::filter('kirki/controls', $this, 'registerControls'); /** @noinspection PhpIncludeInspection */ require_once Paths::vendors('aristath/kirki/kirki.php'); }
/** * Constructor * * @param string $id The ID of the initializer * @param array $data The configuration key/value pairs */ public function __construct($id, $data) { parent::__construct($id, $data); // If blade is enabled, include required files if ($this->isBladeEnabled()) { require_once Paths::vendors('autoload.php'); } // Our themes should be properly structured, so we could also provide some common templates within a // different folder Hooks::filter('get_search_form', $this, 'suggestMoreSearchFormTemplates'); }
/** * Apply the data to configure the theme */ public function configureTgmPluginActivationLibrary() { $data = $this->getData(); if (!isset($data['plugins']) || empty($data['plugins'])) { return; } // The default TGMPA settings $defaults = array('id' => 'tgmpa-' . dirname(Paths::theme()), 'default_path' => Paths::theme('vendor/bundled'), 'menu' => dirname(Paths::theme()) . '-install-plugins', 'has_notices' => true, 'dismissable' => true, 'dismiss_msg' => '', 'is_automatic' => true, 'message' => ''); // Merge user configuration with defaults $config = isset($data['options']) ? array_merge($defaults, $data['options']) : $defaults; tgmpa($data['plugins'], $config); }
/** * Apply the data to configure the theme */ public function configureTgmPluginActivationLibrary() { $data = $this->getData(); if (!isset($data['plugins']) || empty($data['plugins'])) { return; } // The default TGMPA settings $defaults = array('default_path' => Paths::theme('vendor/bundled'), 'menu' => dirname(Paths::theme()) . '-install-plugins', 'has_notices' => true, 'dismissable' => true, 'dismiss_msg' => '', 'is_automatic' => true, 'message' => '', 'strings' => array('page_title' => __('Install Required Plugins', 'baobab'), 'menu_title' => __('Install Plugins', 'baobab'), 'installing' => __('Installing Plugin: %s', 'baobab'), 'oops' => __('Something went wrong with the plugin API.', 'baobab'), 'notice_can_install_required' => _n_noop('This theme requires the following plugin: %1$s.', 'This theme requires the following plugins: %1$s.'), 'notice_can_install_recommended' => _n_noop('This theme recommends the following plugin: %1$s.', 'This theme recommends the following plugins: %1$s.'), 'notice_cannot_install' => _n_noop('Sorry, but you do not have the correct permissions to install the %s plugin. Contact the administrator of this site for help on getting the plugin installed.', 'Sorry, but you do not have the correct permissions to install the %s plugins. Contact the administrator of this site for help on getting the plugins installed.'), 'notice_can_activate_required' => _n_noop('The following required plugin is currently inactive: %1$s.', 'The following required plugins are currently inactive: %1$s.'), 'notice_can_activate_recommended' => _n_noop('The following recommended plugin is currently inactive: %1$s.', 'The following recommended plugins are currently inactive: %1$s.'), 'notice_cannot_activate' => _n_noop('Sorry, but you do not have the correct permissions to activate the %s plugin. Contact the administrator of this site for help on getting the plugin activated.', 'Sorry, but you do not have the correct permissions to activate the %s plugins. Contact the administrator of this site for help on getting the plugins activated.'), 'notice_ask_to_update' => _n_noop('The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.', 'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.'), 'notice_cannot_update' => _n_noop('Sorry, but you do not have the correct permissions to update the %s plugin. Contact the administrator of this site for help on getting the plugin updated.', 'Sorry, but you do not have the correct permissions to update the %s plugins. Contact the administrator of this site for help on getting the plugins updated.'), 'install_link' => _n_noop('Begin installing plugin', 'Begin installing plugins'), 'activate_link' => _n_noop('Begin activating plugin', 'Begin activating plugins'), 'return' => __('Return to Required Plugins Installer', 'baobab'), 'plugin_activated' => __('Plugin activated successfully.', 'baobab'), 'complete' => __('All plugins installed and activated successfully. %s', 'baobab'), 'nag_type' => 'updated')); // Merge user configuration with defaults $config = isset($data['options']) ? array_merge_recursive($defaults, $data['options']) : $defaults; tgmpa($data['plugins'], $config); }
/** * Read the manifest file that can be found at the root of the theme's asset folder. * * @return object|null null if the file does not exist or an object representing the manifest data */ protected function loadManifest() { $manifestPath = Paths::assets('manifest.json'); if (file_exists($manifestPath)) { return json_decode(file_get_contents($manifestPath), true); } return null; }
/** * Apply the data to configure the theme */ public function run() { $data = $this->getData(); // Load translations load_theme_textdomain($data['text_domain'], Paths::theme('languages')); }
<?php return array('engine' => 'blade', 'blade' => array('paths' => array('views' => \Baobab\Helper\Paths::theme('app/views'), 'cache' => \Baobab\Helper\Paths::storage('cache/blade'))));
<?php use Baobab\Helper\Paths; return array('always' => array('psr4' => array('Balsa\\Helpers\\' => Paths::theme('app/helpers'), 'Balsa\\Models\\' => Paths::theme('app/models'))), 'admin' => array('psr4' => array('Balsa\\Admin\\' => Paths::theme('app/admin')), 'instantiate' => array('ThemeActivation' => '\\Balsa\\Admin\\ThemeActivation')), 'frontend' => array('psr4' => array('Balsa\\Controllers\\' => Paths::theme('app/controllers'))));