From 4116a758588b7163ccda1554c03348ba07c274c3 Mon Sep 17 00:00:00 2001 From: David Woloszyn Date: Sat, 9 Dec 2023 11:18:21 +1100 Subject: [PATCH] MDL-79709 tiny_premium: Capability to access Tiny Premium features --- .../plugins/premium/classes/plugininfo.php | 4 +-- lib/editor/tiny/plugins/premium/db/access.php | 35 +++++++++++++++++++ .../plugins/premium/lang/en/tiny_premium.php | 1 + lib/editor/tiny/plugins/premium/version.php | 2 +- 4 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 lib/editor/tiny/plugins/premium/db/access.php diff --git a/lib/editor/tiny/plugins/premium/classes/plugininfo.php b/lib/editor/tiny/plugins/premium/classes/plugininfo.php index 09b11df295f..9c7ccdea441 100644 --- a/lib/editor/tiny/plugins/premium/classes/plugininfo.php +++ b/lib/editor/tiny/plugins/premium/classes/plugininfo.php @@ -30,7 +30,7 @@ use editor_tiny\plugin; class plugininfo extends plugin { /** - * Determine if the plugin should be enabled by checking if the Tiny Premium API key is set. + * Determine if the plugin should be enabled by checking the capability and if the Tiny Premium API key is set. * * @param context $context The context that the editor is used within * @param array $options The options passed in when requesting the editor @@ -44,6 +44,6 @@ class plugininfo extends plugin { array $fpoptions, ?editor $editor = null ): bool { - return get_config('tiny_premium', 'apikey') != false; + return has_capability('tiny/premium:accesspremium', $context) && (get_config('tiny_premium', 'apikey') != false); } } diff --git a/lib/editor/tiny/plugins/premium/db/access.php b/lib/editor/tiny/plugins/premium/db/access.php new file mode 100644 index 00000000000..4de2001eac4 --- /dev/null +++ b/lib/editor/tiny/plugins/premium/db/access.php @@ -0,0 +1,35 @@ +. + +/** + * Tiny premium capabilities. + * + * @package tiny_premium + * @copyright 2023 David Woloszyn + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +$capabilities = [ + 'tiny/premium:accesspremium' => [ + 'captype' => 'read', + 'contextlevel' => CONTEXT_USER, + 'archetypes' => [ + 'user' => CAP_ALLOW, + ], + ], +]; diff --git a/lib/editor/tiny/plugins/premium/lang/en/tiny_premium.php b/lib/editor/tiny/plugins/premium/lang/en/tiny_premium.php index a01b10238a2..dd88bf64b8a 100644 --- a/lib/editor/tiny/plugins/premium/lang/en/tiny_premium.php +++ b/lib/editor/tiny/plugins/premium/lang/en/tiny_premium.php @@ -28,4 +28,5 @@ defined('MOODLE_INTERNAL') || die(); $string['pluginname'] = 'Tiny premium'; $string['apikey'] = 'API key'; $string['apikey_desc'] = 'Your Tiny premium API key requires a paid subscription. You can find your key on your Tiny Cloud account page.'; +$string['premium:accesspremium'] = 'Access Tiny Premium features'; $string['privacy:metadata'] = 'The Tiny premium plugin for TinyMCE does not store any personal data.'; diff --git a/lib/editor/tiny/plugins/premium/version.php b/lib/editor/tiny/plugins/premium/version.php index b753a435ed9..3fed8b0f1e8 100644 --- a/lib/editor/tiny/plugins/premium/version.php +++ b/lib/editor/tiny/plugins/premium/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2023100900; +$plugin->version = 2023111300; $plugin->requires = 2023100400; $plugin->component = 'tiny_premium';