--- a/wedocs/includes/Upgrader/Abstracts/UpgradeHandler.php
+++ b/wedocs/includes/Upgrader/Abstracts/UpgradeHandler.php
@@ -44,8 +44,11 @@
if ( $need_upgrade ) {
$this->handle_upgrade();
update_option( 'wedocs_version', $this->version );
- $this->next();
}
+
+ // Always call next() to continue the upgrade chain,
+ // even if this upgrade didn't need to run
+ $this->next();
}
/**
--- a/wedocs/includes/Upgrader/Upgrades/Upgrades.php
+++ b/wedocs/includes/Upgrader/Upgrades/Upgrades.php
@@ -11,7 +11,10 @@
*
* @since 2.0.2
*/
- public $class_list = array( '2.0.2' => V_2_0_2::class );
+ public $class_list = array(
+ '2.0.2' => V_2_0_2::class,
+ '2.1.17' => V_2_1_17::class,
+ );
/**
* Get wedocs installed version number.
--- a/wedocs/includes/Upgrader/Upgrades/V_2_0_2.php
+++ b/wedocs/includes/Upgrader/Upgrades/V_2_0_2.php
@@ -91,28 +91,7 @@
* @return void
*/
private function add_documentation_handling_capabilities() {
- global $wp_roles;
-
- if ( class_exists( 'WP_Roles' ) && ! isset( $wp_roles ) ) {
- $wp_roles = new WP_Roles(); // @codingStandardsIgnoreLine
- }
-
- $roles = $wp_roles->get_names();
- $capabilities = array(
- 'edit_post',
- 'edit_docs',
- 'publish_docs',
- 'edit_others_docs',
- 'read_private_docs',
- 'edit_private_docs',
- 'edit_published_docs'
- );
-
- // Push documentation handling access to users.
- foreach ( $capabilities as $capability ) {
- foreach ( $roles as $role_key => $role ) {
- $wp_roles->add_cap( $role_key, $capability );
- }
- }
+ // Use the centralized function that restricts capabilities to administrator and editor only.
+ wedocs_user_documentation_handling_capabilities();
}
}
--- a/wedocs/includes/Upgrader/Upgrades/V_2_1_17.php
+++ b/wedocs/includes/Upgrader/Upgrades/V_2_1_17.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace WeDevsWeDocsUpgraderUpgrades;
+
+use WeDevsWeDocsUpgraderAbstractsUpgradeHandler;
+
+/**
+ * Upgrade handler for version 2.1.17.
+ *
+ * Security fix: Remove documentation editing capabilities from unauthorized roles.
+ */
+class V_2_1_17 extends UpgradeHandler {
+
+ /**
+ * Upgrade version.
+ *
+ * @since 2.1.17
+ *
+ * @var string
+ */
+ protected $version = '2.1.17';
+
+ /**
+ * Upgrade necessary data in database.
+ *
+ * @since 2.1.17
+ *
+ * @return void
+ */
+ public function handle_upgrade() {
+ $this->fix_documentation_capabilities();
+ }
+
+ /**
+ * Fix documentation handling capabilities.
+ *
+ * Removes editing capabilities from unauthorized roles (Subscriber, Contributor, Author)
+ * that were incorrectly granted in previous versions. Only Administrator and Editor
+ * should have documentation editing capabilities.
+ *
+ * @since 2.1.17
+ *
+ * @return void
+ */
+ private function fix_documentation_capabilities() {
+ wedocs_user_documentation_handling_capabilities();
+ }
+}
--- a/wedocs/vendor/autoload.php
+++ b/wedocs/vendor/autoload.php
@@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
-return ComposerAutoloaderInita5217d61fa6434ba2fea633864271676::getLoader();
+return ComposerAutoloaderInite532af9dea4f886b1976a7c707e31000::getLoader();
--- a/wedocs/vendor/composer/autoload_classmap.php
+++ b/wedocs/vendor/composer/autoload_classmap.php
@@ -34,6 +34,7 @@
'WeDevs\WeDocs\Upgrader\Upgrader' => $baseDir . '/includes/Upgrader/Upgrader.php',
'WeDevs\WeDocs\Upgrader\Upgrades\Upgrades' => $baseDir . '/includes/Upgrader/Upgrades/Upgrades.php',
'WeDevs\WeDocs\Upgrader\Upgrades\V_2_0_2' => $baseDir . '/includes/Upgrader/Upgrades/V_2_0_2.php',
+ 'WeDevs\WeDocs\Upgrader\Upgrades\V_2_1_17' => $baseDir . '/includes/Upgrader/Upgrades/V_2_1_17.php',
'WeDevs\WeDocs\Walker' => $baseDir . '/includes/Walker.php',
'WeDevs\WeDocs\Widget' => $baseDir . '/includes/Widget.php',
);
--- a/wedocs/vendor/composer/autoload_real.php
+++ b/wedocs/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInita5217d61fa6434ba2fea633864271676
+class ComposerAutoloaderInite532af9dea4f886b1976a7c707e31000
{
private static $loader;
@@ -24,15 +24,15 @@
require __DIR__ . '/platform_check.php';
- spl_autoload_register(array('ComposerAutoloaderInita5217d61fa6434ba2fea633864271676', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderInite532af9dea4f886b1976a7c707e31000', 'loadClassLoader'), true, true);
self::$loader = $loader = new ComposerAutoloadClassLoader(dirname(dirname(__FILE__)));
- spl_autoload_unregister(array('ComposerAutoloaderInita5217d61fa6434ba2fea633864271676', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderInite532af9dea4f886b1976a7c707e31000', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require __DIR__ . '/autoload_static.php';
- call_user_func(ComposerAutoloadComposerStaticInita5217d61fa6434ba2fea633864271676::getInitializer($loader));
+ call_user_func(ComposerAutoloadComposerStaticInite532af9dea4f886b1976a7c707e31000::getInitializer($loader));
} else {
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
@@ -53,12 +53,12 @@
$loader->register(true);
if ($useStaticLoader) {
- $includeFiles = ComposerAutoloadComposerStaticInita5217d61fa6434ba2fea633864271676::$files;
+ $includeFiles = ComposerAutoloadComposerStaticInite532af9dea4f886b1976a7c707e31000::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
- composerRequirea5217d61fa6434ba2fea633864271676($fileIdentifier, $file);
+ composerRequiree532af9dea4f886b1976a7c707e31000($fileIdentifier, $file);
}
return $loader;
@@ -70,7 +70,7 @@
* @param string $file
* @return void
*/
-function composerRequirea5217d61fa6434ba2fea633864271676($fileIdentifier, $file)
+function composerRequiree532af9dea4f886b1976a7c707e31000($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
--- a/wedocs/vendor/composer/autoload_static.php
+++ b/wedocs/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
namespace ComposerAutoload;
-class ComposerStaticInita5217d61fa6434ba2fea633864271676
+class ComposerStaticInite532af9dea4f886b1976a7c707e31000
{
public static $files = array (
'bc33bdda64b68124ebec25fc6f289c9e' => __DIR__ . '/../..' . '/includes/functions.php',
@@ -53,6 +53,7 @@
'WeDevs\WeDocs\Upgrader\Upgrader' => __DIR__ . '/../..' . '/includes/Upgrader/Upgrader.php',
'WeDevs\WeDocs\Upgrader\Upgrades\Upgrades' => __DIR__ . '/../..' . '/includes/Upgrader/Upgrades/Upgrades.php',
'WeDevs\WeDocs\Upgrader\Upgrades\V_2_0_2' => __DIR__ . '/../..' . '/includes/Upgrader/Upgrades/V_2_0_2.php',
+ 'WeDevs\WeDocs\Upgrader\Upgrades\V_2_1_17' => __DIR__ . '/../..' . '/includes/Upgrader/Upgrades/V_2_1_17.php',
'WeDevs\WeDocs\Walker' => __DIR__ . '/../..' . '/includes/Walker.php',
'WeDevs\WeDocs\Widget' => __DIR__ . '/../..' . '/includes/Widget.php',
);
@@ -60,9 +61,9 @@
public static function getInitializer(ClassLoader $loader)
{
return Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInita5217d61fa6434ba2fea633864271676::$prefixLengthsPsr4;
- $loader->prefixDirsPsr4 = ComposerStaticInita5217d61fa6434ba2fea633864271676::$prefixDirsPsr4;
- $loader->classMap = ComposerStaticInita5217d61fa6434ba2fea633864271676::$classMap;
+ $loader->prefixLengthsPsr4 = ComposerStaticInite532af9dea4f886b1976a7c707e31000::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInite532af9dea4f886b1976a7c707e31000::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInite532af9dea4f886b1976a7c707e31000::$classMap;
}, null, ClassLoader::class);
}
--- a/wedocs/wedocs.php
+++ b/wedocs/wedocs.php
@@ -3,7 +3,7 @@
Plugin Name: weDocs
Plugin URI: https://wedocs.co/
Description: A documentation plugin for WordPress
-Version: 2.1.16
+Version: 2.1.17
Author: weDevs
Author URI: https://wedocs.co/?utm_source=wporg&utm_medium=banner&utm_campaign=author-uri
License: GPL2
@@ -61,7 +61,7 @@
*
* @var string
*/
- const VERSION = '2.1.16';
+ const VERSION = '2.1.17';
/**
* The plugin url.