diff --git a/.gitignore b/.gitignore index 8ef0a7e..6f43af7 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,9 @@ vendor/ composer.lock +# Scanner +.scannerwork + # Useless auto-generated files .DS_Store .idea/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ac88e1..9e3de1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.1 (May 5th, 2019) +Remove PHP 7.2 deprecated `create_function` function +Be SonarQube compliant + ## 1.0.0 (November 25th, 2018) Fix helpers and make WordPress website faster diff --git a/sonar-project.properties b/sonar-project.properties index a489859..dc40b69 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -5,9 +5,11 @@ ############################################## # Defaults +sonar.host.url=https://sonarcloud.io +sonar.login=cf1b9e6571847d3474a62fb33c3c8223797dbe7e +sonar.organization=getolympus sonar.projectKey=GetOlympus_Zeus-Core sonar.projectName=Olympus Zeus framework core system used to make all your WordPress plugins and themes developments easier and efficient -sonar.projectVersion=1.0.0 # Metadatas sonar.links.homepage=https://github.com/GetOlympus/Zeus-Core @@ -17,6 +19,3 @@ sonar.links.issue=https://github.com/GetOlympus/Zeus-Core/issues # Standard properties sonar.sources=src/Zeus sonar.tests=tests - -# Language specific properties -sonar.php.tests.reportPath=phpunit.xml diff --git a/src/Zeus/AdminPage/Controller/AdminPageHook.php b/src/Zeus/AdminPage/Controller/AdminPageHook.php index c19c449..be38483 100644 --- a/src/Zeus/AdminPage/Controller/AdminPageHook.php +++ b/src/Zeus/AdminPage/Controller/AdminPageHook.php @@ -111,20 +111,20 @@ public function renderFields() $this->saveFields(); // Get contents - $currentPage = $this->currentPage; - $currentSection = $this->currentSection; - $fields = $this->fields; - $options = $this->options; + $pageCurrent = $this->currentPage; + $sectionCurrent = $this->currentSection; + $formFields = $this->fields; + $contentOptions = $this->options; // Get links - $u_link = 'page='.$currentPage; - $u_section = !empty($currentSection) ? '§ion='.$currentSection : ''; + $u_link = 'page='.$pageCurrent; + $u_section = !empty($sectionCurrent) ? '§ion='.$sectionCurrent : ''; // Work on vars $vars = [ - 'title' => $options['title'], - 'description' => $options['description'], - 'submit' => $options['submit'], + 'title' => $contentOptions['title'], + 'description' => $contentOptions['description'], + 'submit' => $contentOptions['submit'], // Texts and URLs 't_submit' => Translate::t('adminpage.submit'), @@ -133,8 +133,8 @@ public function renderFields() ]; // Display sections - if (!empty($options['sections']) && is_array($options['sections'])) { - foreach ($options['sections'] as $slug => $opts) { + if (!empty($contentOptions['sections']) && is_array($contentOptions['sections'])) { + foreach ($contentOptions['sections'] as $slug => $opts) { // Update option $opts['slug'] = $slug; $opts['u_link'] = admin_url('admin.php?'.$u_link.'§ion='.$slug); @@ -142,7 +142,7 @@ public function renderFields() // Update vars $vars['sections'][] = $opts; - if ($slug !== $currentSection) { + if ($slug !== $sectionCurrent) { continue; } @@ -152,12 +152,12 @@ public function renderFields() } // Work on current vars - $vars['c_page'] = $currentPage; - $vars['c_section'] = $currentSection; + $vars['c_page'] = $pageCurrent; + $vars['c_section'] = $sectionCurrent; // Display fields - if (!empty($fields)) { - foreach ($fields as $field) { + if (!empty($formFields)) { + foreach ($formFields as $field) { if (!$field) { continue; } diff --git a/src/Zeus/AdminPage/Model/AdminPageModel.php b/src/Zeus/AdminPage/Model/AdminPageModel.php index 8c3a246..5091131 100644 --- a/src/Zeus/AdminPage/Model/AdminPageModel.php +++ b/src/Zeus/AdminPage/Model/AdminPageModel.php @@ -111,13 +111,13 @@ public function hasPage($identifier) * Sets the value of page. * * @param string $identifier the identifier - * @param array $options the options + * @param array $configs the options configuration * * @return self */ - public function updatePage($identifier, $options) + public function updatePage($identifier, $configs) { - $this->pages[$identifier] = $options; + $this->pages[$identifier] = $configs; return $this; } diff --git a/src/Zeus/Application/Controller/Application.php b/src/Zeus/Application/Controller/Application.php index 567466b..7323c89 100644 --- a/src/Zeus/Application/Controller/Application.php +++ b/src/Zeus/Application/Controller/Application.php @@ -168,9 +168,9 @@ public function getComponents() 'Widget' => 'GetOlympus\Zeus\Widget\Controller\Widget', ]; - // Iterate on externals to add "Field" suffix + // Iterate on externals foreach ($this->externals as $shortname => $classname) { - $components[$shortname.'Field'] = $classname; + $components[$shortname] = $classname; } return $components; @@ -262,9 +262,9 @@ public function registerComponents() } // Work on file paths - foreach ($this->paths as $action => $paths) { + foreach ($this->paths as $action => $actionPaths) { // Work on paths - $paths = !is_array($paths) ? [$paths] : $paths; + $actionPaths = !is_array($actionPaths) ? [$actionPaths] : $actionPaths; // Work on file name $filepath = OL_ZEUS_CACHE.$this->classname.'-'.$action.'-components.php'; @@ -272,7 +272,7 @@ public function registerComponents() // Check cache file if (!file_exists($filepath)) { // Store all in cache file - ClassMapGenerator::dump($paths, $filepath); + ClassMapGenerator::dump($actionPaths, $filepath); } $classmap = include_once $filepath; diff --git a/src/Zeus/Configuration/Controller/AccessManagement.php b/src/Zeus/Configuration/Controller/AccessManagement.php index 817845a..4b9d03a 100644 --- a/src/Zeus/Configuration/Controller/AccessManagement.php +++ b/src/Zeus/Configuration/Controller/AccessManagement.php @@ -3,7 +3,6 @@ namespace GetOlympus\Zeus\Configuration\Controller; use GetOlympus\Zeus\Configuration\Controller\Configuration; -use GetOlympus\Zeus\Helpers\Controller\Helpers; /** * Access Management controller @@ -17,42 +16,27 @@ class AccessManagement extends Configuration { - /** - * @var array - */ - protected $available = [ - 'access-url', - 'login-error', - 'login-header', - 'login-shake', - 'login-style', - ]; - /** * Add all usefull WP filters and hooks. */ public function init() { - // Check filepath - if (empty($this->filepath)) { + // Initialize filepath with configs + $funcs = $this->getFunctions('AccessManagement', [ + 'access-url', + 'login-error', + 'login-header', + 'login-shake', + 'login-style', + ]); + + // Check functions + if (empty($funcs)) { return; } - // Get configurations - $configs = include $this->filepath; - - // Check - if (empty($configs)) { - return; - } - - // Iterate on configs - foreach ($configs as $key => $args) { - if (!in_array($key, $this->available) || empty($args)) { - continue; - } - - $func = Helpers::toFunctionFormat($key).'Setting'; + // Iterate on functions + foreach ($funcs as $key => $args) { $this->$func($args); } } @@ -62,24 +46,24 @@ public function init() * * @param string $slug */ - public function accessUrlSetting($slug) + public function accessUrlAccessManagement($slug) { if (empty($slug) || 'wp-login.php' === $slug) { return; } // Change login URL - add_filter('login_redirect', function ($url) use ($slug) { + add_filter('login_redirect', function () use ($slug) { return site_url().$slug; }); // Customize Site URL - add_filter('site_url', function ($url, $path, $scheme = null) use ($slug) { + add_filter('site_url', function ($url) use ($slug) { return str_replace('wp-login.php', $slug, $url); }, 10, 3); // Make the redirection works properly - add_filter('wp_redirect', function ($url, $status) use ($slug) { + add_filter('wp_redirect', function ($url) use ($slug) { return str_replace('wp-login.php', $slug, $url); }, 10, 2); } @@ -89,10 +73,10 @@ public function accessUrlSetting($slug) * * @param string|boolean $error */ - public function loginErrorSetting($error) + public function loginErrorAccessManagement($error) { // Define default message - $message = is_bool($error) && $error ? Translate::t('configuration.settings.login.error') : $error; + $message = is_bool($error) && $error ? Translate::t('configuration.accessmanagement.login.error') : $error; // Change login error message add_filter('login_errors', function () use ($message) { @@ -107,7 +91,7 @@ public function loginErrorSetting($error) * * @param array $args */ - public function loginHeaderSetting($args) + public function loginHeaderAccessManagement($args) { if (!$args) { return; @@ -120,14 +104,14 @@ public function loginHeaderSetting($args) ], $args); // Change login head URL - add_filter('login_headerurl', function ($url) use ($configs) { + add_filter('login_headerurl', function () use ($configs) { if (!empty($configs['url'])) { return $configs['url']; } }); // Change login head title - add_filter('login_headertitle', function ($title) use ($configs) { + add_filter('login_headertitle', function () use ($configs) { if (!empty($configs['title'])) { return $configs['title']; } @@ -139,7 +123,7 @@ public function loginHeaderSetting($args) * * @param boolean $shake */ - public function loginShakeSetting($shake) + public function loginShakeAccessManagement($shake) { if ($shake) { return; @@ -155,7 +139,7 @@ public function loginShakeSetting($shake) * * @param array $args */ - public function loginStyleSetting($args) + public function loginStyleAccessManagement($args) { if (!$args) { return; diff --git a/src/Zeus/Configuration/Controller/Clean.php b/src/Zeus/Configuration/Controller/Clean.php index 4d579eb..8589036 100644 --- a/src/Zeus/Configuration/Controller/Clean.php +++ b/src/Zeus/Configuration/Controller/Clean.php @@ -3,7 +3,6 @@ namespace GetOlympus\Zeus\Configuration\Controller; use GetOlympus\Zeus\Configuration\Controller\Configuration; -use GetOlympus\Zeus\Helpers\Controller\Helpers; use GetOlympus\Zeus\Helpers\Controller\HelpersCleanCore; use GetOlympus\Zeus\Helpers\Controller\HelpersCleanFeatures; use GetOlympus\Zeus\Helpers\Controller\HelpersCleanHeaders; @@ -23,42 +22,27 @@ class Clean extends Configuration { - /** - * @var array - */ - protected $available = [ - 'core', - 'features', - 'headers', - 'plugins', - ]; - /** * Add all usefull WP filters and hooks. */ public function init() { - // Check filepath - if (empty($this->filepath)) { - return; - } - - // Get configurations - $configs = include $this->filepath; - - // Check - if (empty($configs)) { + // Initialize filepath with configs + $funcs = $this->getFunctions('Clean', [ + 'core', + 'features', + 'headers', + 'plugins', + ]); + + // Check functions + if (empty($funcs)) { return; } - // Iterate on configs - foreach ($configs as $key => $args) { - if (!in_array($key, $this->available) || empty($args)) { - continue; - } - - $func = Helpers::toFunctionFormat($key).'Clean'; - $this->$func($args); + // Iterate on functions + foreach ($funcs as $key => $args) { + $this->$key($args); } } diff --git a/src/Zeus/Configuration/Controller/Configuration.php b/src/Zeus/Configuration/Controller/Configuration.php index cd3e326..8144eaf 100644 --- a/src/Zeus/Configuration/Controller/Configuration.php +++ b/src/Zeus/Configuration/Controller/Configuration.php @@ -2,6 +2,8 @@ namespace GetOlympus\Zeus\Configuration\Controller; +use GetOlympus\Zeus\Helpers\Controller\Helpers; + /** * Configuration controller * @@ -24,6 +26,42 @@ abstract class Configuration */ abstract public function init(); + /** + * Initialize filepath with configs. + * + * @param string $prepend + * @param array $available + * @return array $functions + */ + public function getFunctions($prepend, $available) + { + // Check filepath + if (empty($this->filepath)) { + return []; + } + + // Get configurations + $configs = include $this->filepath; + + // Check + if (empty($configs)) { + return []; + } + + $functions = []; + + // Iterate on configs + foreach ($configs as $key => $args) { + if (!in_array($key, $available) || empty($args)) { + continue; + } + + $functions[Helpers::toFunctionFormat($key).$prepend] = $args; + } + + return $functions; + } + /** * Add resource path. * diff --git a/src/Zeus/Configuration/Controller/Settings.php b/src/Zeus/Configuration/Controller/Settings.php index 209c113..3585cf8 100644 --- a/src/Zeus/Configuration/Controller/Settings.php +++ b/src/Zeus/Configuration/Controller/Settings.php @@ -3,7 +3,6 @@ namespace GetOlympus\Zeus\Configuration\Controller; use GetOlympus\Zeus\Configuration\Controller\Configuration; -use GetOlympus\Zeus\Helpers\Controller\Helpers; use GetOlympus\Zeus\Render\Controller\Render; use GetOlympus\Zeus\Translate\Controller\Translate; @@ -19,43 +18,28 @@ class Settings extends Configuration { - /** - * @var array - */ - protected $available = [ - 'admin-bar', - 'admin-footer', - 'admin-menu-order', - 'admin-meta-boxes', - 'comments-fields-order', - 'jpeg-quality', - ]; - /** * Add all usefull WP filters and hooks. */ public function init() { - // Check filepath - if (empty($this->filepath)) { + // Initialize filepath with configs + $funcs = $this->getFunctions('Setting', [ + 'admin-bar', + 'admin-footer', + 'admin-menu-order', + 'admin-meta-boxes', + 'comments-fields-order', + 'jpeg-quality', + ]); + + // Check functions + if (empty($funcs)) { return; } - // Get configurations - $configs = include $this->filepath; - - // Check - if (empty($configs)) { - return; - } - - // Iterate on configs - foreach ($configs as $key => $args) { - if (!in_array($key, $this->available) || empty($args)) { - continue; - } - - $func = Helpers::toFunctionFormat($key).'Setting'; + // Iterate on functions + foreach ($funcs as $key => $args) { $this->$func($args); } } diff --git a/src/Zeus/Configuration/Controller/Shortcodes.php b/src/Zeus/Configuration/Controller/Shortcodes.php index 3b2ee1d..abc40c3 100644 --- a/src/Zeus/Configuration/Controller/Shortcodes.php +++ b/src/Zeus/Configuration/Controller/Shortcodes.php @@ -29,15 +29,15 @@ public function init() } // Get configurations - $configs = include $this->filepath; + $settings = include $this->filepath; // Check - if (empty($configs)) { + if (empty($settings)) { return; } // Update - $this->configs = $configs; + $this->configs = $settings; // Enable backend~frontend actions if (OL_ZEUS_ISADMIN) { @@ -129,7 +129,7 @@ public function addShortcodesFrontend() // Iterate on configs foreach ($this->configs as $key => $file) { // Avoid special cases - if (empty($file)) { + if (false !== $file && empty($file)) { continue; } diff --git a/src/Zeus/Configuration/Resources/languages/en_EN.yaml b/src/Zeus/Configuration/Resources/languages/en_EN.yaml index 75adfd2..cda2efe 100644 --- a/src/Zeus/Configuration/Resources/languages/en_EN.yaml +++ b/src/Zeus/Configuration/Resources/languages/en_EN.yaml @@ -1,7 +1,7 @@ # Main contents configuration: - sidebar: - name: Olympus sidebar title - settings: + accessmanagement: login: error: Incorrect login errors + sidebar: + name: Olympus sidebar title diff --git a/src/Zeus/Helpers/Controller/HelpersCleanCore.php b/src/Zeus/Helpers/Controller/HelpersCleanCore.php index dcb88a4..67d77cf 100644 --- a/src/Zeus/Helpers/Controller/HelpersCleanCore.php +++ b/src/Zeus/Helpers/Controller/HelpersCleanCore.php @@ -181,6 +181,7 @@ public function coreJsonApi() /** * Remove post custom metaboxes from post editor to prevent very slow queries + * @see https://9seeds.com/wordpress-admin-post-editor-performance/ */ public function corePostCustomMetabox() { @@ -198,7 +199,7 @@ public function corePostCustomMetabox() */ public function coreRestApi() { - add_filter('rest_authentication_errors', function ($access) { + add_filter('rest_authentication_errors', function () { return new \WP_Error( 'rest_disabled', __('The REST API on this site has been disabled.'), diff --git a/src/Zeus/Zeus.php b/src/Zeus/Zeus.php index 4c8a6cb..88e45fe 100644 --- a/src/Zeus/Zeus.php +++ b/src/Zeus/Zeus.php @@ -104,27 +104,27 @@ abstract class Zeus extends Application */ protected $externals = [ // Zeus field components - 'Background' => 'GetOlympus\Field\Background', - 'Checkbox' => 'GetOlympus\Field\Checkbox', - 'Code' => 'GetOlympus\Field\Code', - 'Color' => 'GetOlympus\Field\Color', - 'Date' => 'GetOlympus\Field\Date', - 'File' => 'GetOlympus\Field\File', - 'Font' => 'GetOlympus\Field\Font', - 'Hidden' => 'GetOlympus\Field\Hidden', - 'Html' => 'GetOlympus\Field\Html', - 'Link' => 'GetOlympus\Field\Link', - 'Map' => 'GetOlympus\Field\Map', - 'Multiselect' => 'GetOlympus\Field\Multiselect', - 'Radio' => 'GetOlympus\Field\Radio', - 'Rte' => 'GetOlympus\Field\Rte', - 'Select' => 'GetOlympus\Field\Select', - 'Social' => 'GetOlympus\Field\Social', - 'Text' => 'GetOlympus\Field\Text', - 'Textarea' => 'GetOlympus\Field\Textarea', - 'Toggle' => 'GetOlympus\Field\Toggle', - 'Upload' => 'GetOlympus\Field\Upload', - 'Wordpress' => 'GetOlympus\Field\Wordpress', + 'BackgroundField' => 'GetOlympus\Field\Background', + 'CheckboxField' => 'GetOlympus\Field\Checkbox', + 'CodeField' => 'GetOlympus\Field\Code', + 'ColorField' => 'GetOlympus\Field\Color', + 'DateField' => 'GetOlympus\Field\Date', + 'FileField' => 'GetOlympus\Field\File', + 'FontField' => 'GetOlympus\Field\Font', + 'HiddenField' => 'GetOlympus\Field\Hidden', + 'HtmlField' => 'GetOlympus\Field\Html', + 'LinkField' => 'GetOlympus\Field\Link', + 'MapField' => 'GetOlympus\Field\Map', + 'MultiselectField' => 'GetOlympus\Field\Multiselect', + 'RadioField' => 'GetOlympus\Field\Radio', + 'RteField' => 'GetOlympus\Field\Rte', + 'SelectField' => 'GetOlympus\Field\Select', + 'SocialField' => 'GetOlympus\Field\Social', + 'TextField' => 'GetOlympus\Field\Text', + 'TextareaField' => 'GetOlympus\Field\Textarea', + 'ToggleField' => 'GetOlympus\Field\Toggle', + 'UploadField' => 'GetOlympus\Field\Upload', + 'WordpressField' => 'GetOlympus\Field\Wordpress', ]; /** @@ -132,9 +132,9 @@ abstract class Zeus extends Application */ protected $internals = [ // Zeus common assets - 'js/dragndrop.js' => 'Resources/assets/js/dragndrop/dragndrop.js', - 'js/modal.js' => 'Resources/assets/js/modal/modal.js', - 'js/tooltip.js' => 'Resources/assets/js/tooltip/tooltip.js', + 'js/dragndrop.js' => 'Resources/assets/js/dragndrop/dragndrop.js', + 'js/modal.js' => 'Resources/assets/js/modal/modal.js', + 'js/tooltip.js' => 'Resources/assets/js/tooltip/tooltip.js', ]; /**