lessParser = new LessParser(); $this->helper = new ModuleHelper(); $this->baseCoreDir = dirname(dirname(__FILE__)); $this->defaultTemplateCoreDir = $this->baseCoreDir . '/templates'; $this->defaultAssetCoreDir = $this->baseCoreDir . '/assets'; $this->setBaseDir($baseDir); add_action( 'init', array($this, 'init' ) ); add_action( 'customize_preview_init', array($this, 'init' ) ); } public function init() { $this->applyLessCss(); } public function applyLessCss() { $config = array(); if ( !empty($this->settings) && !empty($this->getSettings()->getConfig()->admin->style) ) { $config = $this->getSettings()->objectToArray( $this->getSettings()->getConfig()->admin->style ); } if (is_admin()) { $this->lessParser->registerAdminLessCss( $this->getAssetPath('less/admin/agp-options.less'), array_merge($config, array( 'key' => $this->getKey(), ))); } if (is_admin_bar_showing()) { $this->lessParser->registerAdminLessCss( $this->getAssetPath('less/admin/admin-toolbar.less'), array_merge($config, array( 'key' => $this->getKey(), ))); $this->lessParser->registerLessCss( $this->getAssetPath('less/admin/admin-toolbar.less'), array_merge($config, array( 'key' => $this->getKey(), ))); } } /** * Gets template content * * @param string $name * @param string|array $params * @return string */ public function getTemplate($name, $params = NULL) { ob_start(); $template = $this->templateDir . '/' . $name . '.php'; $defaultTemplate = $this->defaultTemplateDir . '/' . $name . '.php'; $defaultTemplateCore = $this->defaultTemplateCoreDir . '/' . $name . '.php'; if ( file_exists($template) && is_file($template) ) { include ($template); } elseif (file_exists($defaultTemplate) && is_file($defaultTemplate) ) { include ($defaultTemplate); } elseif (file_exists($defaultTemplateCore) && is_file($defaultTemplateCore) ) { include ($defaultTemplateCore); } $result = ob_get_clean(); return $result; } /** * Get asset path * * @param string $name * @return string */ public function getAssetPath($name = NULL) { $resultPath = $this->baseDir; if (empty($name)) { if (file_exists($this->assetDir) && is_dir($this->assetDir)) { $resultPath = $this->assetDir; } elseif (file_exists($this->defaultAssetDir) && is_dir($this->defaultAssetDir)) { $resultPath = $this->defaultAssetDir; } elseif (file_exists($this->defaultAssetCoreDir) && is_dir($this->defaultAssetCoreDir)) { $resultPath = $this->defaultAssetCoreDir; } } else { $asset = $this->assetDir . '/' . $name; $defaultAsset = $this->defaultAssetDir . '/' . $name; $defaultAssetCore = $this->defaultAssetCoreDir . '/' . $name; if ( file_exists($asset) && is_file($asset) ) { $resultPath = $asset; } elseif ( file_exists($defaultAsset) && is_file($defaultAsset) ) { $resultPath = $defaultAsset; } elseif ( file_exists($defaultAssetCore) && is_file($defaultAssetCore) ) { $resultPath = $defaultAssetCore; } } return $resultPath; } /** * Get asset Url * * @param string $name * @return string */ public function getAssetUrl($name = NULL) { return $this->toUrl( $this->getAssetPath($name) ); } /** * Gets debug information * * @param all $var */ static public function debug ($var, $echo = true) { if (!$echo) { ob_start(); } print_r('
');
        print_r($var);
        print_r('
'); if (!$echo) { $result = ob_get_clean(); return $result; } } static public function getFiltersForHook( $hook = '', $echo = true ) { global $wp_filter; $hooks = isset( $wp_filter[$hook] ) ? $wp_filter[$hook] : array(); $hooks = call_user_func_array( 'array_merge', $hooks ); foreach( $hooks as &$item ) { // function name as string or static class method eg. 'Foo::Bar' if ( is_string( $item['function'] ) ) { $ref = strpos( $item['function'], '::' ) ? new \ReflectionClass( strstr( $item['function'], '::', true ) ) : new \ReflectionFunction( $item['function'] ); $item['file'] = $ref->getFileName(); $item['line'] = get_class( $ref ) == 'ReflectionFunction' ? $ref->getStartLine() : $ref->getMethod( substr( $item['function'], strpos( $item['function'], '::' ) + 2 ) )->getStartLine(); // array( object, method ), array( string object, method ), array( string object, string 'parent::method' ) } elseif ( is_array( $item['function'] ) ) { $ref = new \ReflectionClass( $item['function'][0] ); // $item['function'][0] is a reference to existing object $item['function'] = array( is_object( $item['function'][0] ) ? get_class( $item['function'][0] ) : $item['function'][0], $item['function'][1] ); $item['file'] = $ref->getFileName(); $item['line'] = strpos( $item['function'][1], '::' ) ? $ref->getParentClass()->getMethod( substr( $item['function'][1], strpos( $item['function'][1], '::' ) + 2 ) )->getStartLine() : $ref->getMethod( $item['function'][1] )->getStartLine(); // closures } elseif ( is_callable( $item['function'] ) ) { $ref = new \ReflectionFunction( $item['function'] ); $item['function'] = get_class( $item['function'] ); $item['file'] = $ref->getFileName(); $item['line'] = $ref->getStartLine(); } } if (!$echo) { ob_start(); } print_r('
');
        print_r($hooks);
        print_r('
'); if (!$echo) { $result = ob_get_clean(); return $result; } } /** * Gets url for the specified file path * * @param string $file * @return string */ public function toUrl($file = '') { // Get correct URL and path to wp-content $content_url = content_url(); $content_dir = untrailingslashit( dirname( dirname( get_stylesheet_directory() ) ) ); // Fix path on Windows $sfile = str_replace( '\\', '/', $file ); $content_dir = str_replace( '\\', '/', $content_dir ); $result = str_replace( $content_dir, $content_url, $sfile ); if ( $result == $sfile ) { $result = plugin_dir_url($file) . basename($file); } return $result; } /** * Gets curent URL * * @global type $wp * @return type */ public function getCurrentUrl() { global $wp; return add_query_arg( $_SERVER['QUERY_STRING'], '', home_url( $wp->request ) ); } /** * Gets base URL * * @return type */ public function getBaseUrl() { return $this->toUrl($this->baseDir); } /** * Getters and Setters */ public function getBaseDir() { return $this->baseDir; } public function getDefaultTemplateDir() { return $this->defaultTemplateDir; } public function getTemplateDir() { return $this->templateDir; } public function getModuleName() { return $this->moduleName; } public function setBaseDir($baseDir) { $this->moduleName = NULL; $this->defaultTemplateDir = NULL; $this->defaultAssetDir = NULL; $this->templateDir = NULL; $this->assetDir = NULL; $this->baseDir = $baseDir; if (!empty($this->baseDir)) { $this->moduleName = basename( $this->baseDir ); $this->defaultTemplateDir = $this->baseDir . '/templates'; $this->defaultAssetDir = $this->baseDir . '/assets'; $this->templateDir = get_stylesheet_directory() . '/templates/'. $this->moduleName; $this->assetDir = $this->templateDir . '/assets'; } return $this; } public function setDefaultTemplateDir($defaultTemplateDir) { $this->defaultTemplateDir = $defaultTemplateDir; return $this; } public function setTemplateDir($templateDir) { $this->templateDir = $templateDir; return $this; } public function setModuleName($moduleName) { $this->moduleName = $moduleName; return $this; } public function getDefaultAssetDir() { return $this->defaultAssetDir; } public function getAssetDir() { return $this->assetDir; } public function setDefaultAssetDir($defaultAssetDir) { $this->defaultAssetDir = $defaultAssetDir; return $this; } public function setAssetDir($assetDir) { $this->assetDir = $assetDir; return $this; } public function getBaseCoreDir() { return $this->baseCoreDir; } public function getDefaultAssetCoreDir() { return $this->defaultAssetCoreDir; } public function setBaseCoreDir($baseCoreDir) { $this->baseCoreDir = $baseCoreDir; return $this; } public function setDefaultAssetCoreDir($defaultAssetCoreDir) { $this->defaultAssetCoreDir = $defaultAssetCoreDir; return $this; } public function getDefaultTemplateCoreDir() { return $this->defaultTemplateCoreDir; } public function setDefaultTemplateCoreDir($defaultTemplateCoreDir) { $this->defaultTemplateCoreDir = $defaultTemplateCoreDir; return $this; } public function getKey() { return $this->key; } public function setKey($key) { $this->key = $key; return $this; } public function getLessParser() { return $this->lessParser; } public function getSettings() { return $this->settings; } public function setSettings(SettingsAbstract $settings) { $this->settings = $settings; return $this; } public function getVersion() { return $this->version; } public function setVersion($version) { $this->version = $version; return $this; } public function getHelper() { return $this->helper; } public function setHelper(ModuleHelper $helper) { $this->helper = $helper; return $this; } }