+
{{text.associated_coaches}}
@@ -1509,7 +1499,6 @@ export default {
},
},
methods: {
- premiumenabled,
columns(page) {
return 1 + (page.periods * 2);
},
@@ -2144,7 +2133,6 @@ export default {
-
{{ text.studyline_enrollable}}
@@ -2170,7 +2158,6 @@ export default {
>
-
-
{{ text.studyline_enrollable}}
@@ -2229,7 +2215,6 @@ export default {
>
-
diff --git a/amd/src/util/premium.js b/amd/src/util/premium.js
deleted file mode 100644
index 0288799..0000000
--- a/amd/src/util/premium.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/* eslint no-var: "error" */
-/* eslint-env es6*/
-
-import {call} from 'core/ajax';
-import notification from 'core/notification';
-
-// Prepare default value.
-let premiumstatusCache = null;
-
-/**
- * Check if premium status is enabled.
- * @returns {Bool} True/False
- */
-export function premiumenabled() {
- const premium = premiumstatus();
- if (premium) {
- return (premium.enabled) ? true : false;
- } else {
- return true; // Temporarily return true, that is easier than going full async.
- }
-}
-
-/**
- * Get premium status object
- * @returns {Object} The premium status object
- */
-function premiumstatus() {
- if (!premiumstatusCache) {
- // Retrieve premium status if needed.
- call([{
- methodname: 'local_treestudyplan_premiumstatus',
- args: {}
- }])[0].then((response) => {
- premiumstatusCache = response;
- return;
- }).catch(notification.exception);
- }
- return premiumstatusCache;
-}
-
-// Preload premium status.
-premiumstatus();
\ No newline at end of file
diff --git a/amd/src/util/settings.js b/amd/src/util/settings.js
index ac6c1ea..b71e115 100644
--- a/amd/src/util/settings.js
+++ b/amd/src/util/settings.js
@@ -8,7 +8,7 @@ import notification from 'core/notification';
let settingcache = null;
/**
- * Check if premium status is enabled.
+ * Retrieve settings.
* @param {String} key
* @returns {*}
*/
@@ -39,5 +39,5 @@ function loadsettings() {
return settingcache;
}
-// Preload premium status.
+// Preload settings.
loadsettings();
\ No newline at end of file
diff --git a/classes/form/studyplan_editform.php b/classes/form/studyplan_editform.php
index 88bab46..ca98337 100644
--- a/classes/form/studyplan_editform.php
+++ b/classes/form/studyplan_editform.php
@@ -27,7 +27,6 @@ defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot.'/repository/lib.php');
use local_treestudyplan\aggregator;
use local_treestudyplan\studyplan;
-use local_treestudyplan\premium;
use local_treestudyplan\debug;
use local_treestudyplan\studyplanservice;
use local_treestudyplan\courseservice;
@@ -236,14 +235,12 @@ class studyplan_editform extends formbase {
[],
);
- if (premium::enabled()) {
- $field = 'template';
- $mform->addElement('advcheckbox', $field,
- get_string('studyplan_template', 'local_treestudyplan'),
- get_string('studyplan_template_details', 'local_treestudyplan'),
- [],
- );
- }
+ $field = 'template';
+ $mform->addElement('advcheckbox', $field,
+ get_string('studyplan_template', 'local_treestudyplan'),
+ get_string('studyplan_template_details', 'local_treestudyplan'),
+ [],
+ );
}
$aggregators = [];
diff --git a/classes/premium.php b/classes/premium.php
deleted file mode 100644
index b3e1708..0000000
--- a/classes/premium.php
+++ /dev/null
@@ -1,476 +0,0 @@
-.
-
-/**
- * Determine premium status
- * @package local_treestudyplan
- * @copyright 2023 P.M. Kuipers
- * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-
-namespace local_treestudyplan;
-defined('MOODLE_INTERNAL') || die();
-
-require_once($CFG->libdir.'/externallib.php');
-
-/**
- * Handle badge information in the same style as the other classes
- */
-class premium extends \external_api {
-
- /**
- * Toggle the variable below to enable support for premium stuff.
- * If set to false, all premium features will be enabled and no premium settings panel will be visible.
- * @var bool
- */
- private static $premiumsupported = false;
-
- /**
- * Certficate code
- * @var string
- */
- private static $premiumcrt = "-----BEGIN CERTIFICATE-----
-MIIDSzCCAjMCFFlyhmKf1fN7U5lQL/dtlsyP24AQMA0GCSqGSIb3DQEBCwUAMGEx
-CzAJBgNVBAYTAk5MMRYwFAYDVQQIDA1Ob29yZC1Ib2xsYW5kMRowGAYDVQQKDBFN
-aXFyYSBFbmdpbmVlcmluZzEeMBwGA1UEAwwVVHJlZVN0dWR5cGxhbiBQcmVtaXVt
-MCAXDTI0MDIxMDE2MDQwM1oYDzIxMjQwMTE3MTYwNDAzWjBhMQswCQYDVQQGEwJO
-TDEWMBQGA1UECAwNTm9vcmQtSG9sbGFuZDEaMBgGA1UECgwRTWlxcmEgRW5naW5l
-ZXJpbmcxHjAcBgNVBAMMFVRyZWVTdHVkeXBsYW4gUHJlbWl1bTCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBAOD7+Nf5UBYGmIadI+kRM7vSPGA12F6cyZuZ
-O/JsdCWzZx3cCgVYt29DxHRvFVGrhGGLsoaMY9iXc9LdeO02jKqL3RoPo2kc5moT
-SNarsKZcGZXgqo5NATmdMLqQpKAy41H0ybgXZDLq5XKs9YIRlkwSpzQTNeP49mOl
-48giVX3icbpMw1TdQotalKXAtcs62o+guQJNANpjBRxPXssrmDoNXrJcAtUjNOjx
-8M+8tCmwkKwBoK8F3wWxIo04kZ9KILtybMmn4VJJ6SwLEf4StphTIoru8zS7XUt8
-3HbV3PsiyYErPlwIcobfcjwZJpub23bzetvxRvhpeIpLhrTGrPMCAwEAATANBgkq
-hkiG9w0BAQsFAAOCAQEAQwkbP6m3sdQgXEK3mYYZvvs6R/FI9QPu/9ICA+dgfj4y
-7wvL0toYYR5oXdhO9At3MYmS+0bFUmqoTS+cxsC4COpEKFbRBWwbJ3NXAw14Hx2U
-ELLqMZGJNOwNV+3ZdhADrwA++AjUqu144ObrcNUqo4+A4h9R8qj+o0J50Gvwja9R
-Uh67LsF4Ls8fUtqzpqct94bUl6MPMHlH4qpZlgndmQdgOwLWeQEmM8X3WtSJH90S
-n8FqBInMBhGu1uz0Qeo09ke0RHRnghP9EXfig/veMegASZeEhFqmS2Bdiy6gqeZ5
-Klc5I28bGbvxIV5pnL6ZSjHEDp2WreM8HB0XFJwU+Q==
------END CERTIFICATE-----";
-
- /**
- * Cached status
- * @var object
- */
- private static $cachedpremiumstatus = null;
-
- /**
- * Check if premium is supported
- * @return bool
- */
- public static function supported() {
- return self::$premiumsupported;
- }
-
- /**
- * Decrypt encrypted data
- * @param string $encrypted Encrypted data
- */
- private static function decrypt($encrypted) {
- // Get the public key.
- $key = \openssl_get_publickey(self::$premiumcrt);
- if ($key === false) {
- throw new \ParseError("Error parsing public key data)");
- }
- // Determine the key size.
- $keysize = \openssl_pkey_get_details($key)["bits"];
- $blocksize = ($keysize / 8); // Bits / 8. Whether padded or not.
-
- // Decode data in.
- $b64 = \base64_decode($encrypted);
- if ($b64 === false) {
- throw new \ParseError("Error in base64 decoding");
- }
-
- $data = \str_split($b64, $blocksize);
- $decrypted = "";
- $i = 0;
- foreach ($data as $chunk) {
- if (\openssl_public_decrypt($chunk, $dchunk, $key, \OPENSSL_PKCS1_PADDING)) {
- $decrypted .= $dchunk;
- } else {
- throw new \ParseError("Error decrypting chunk $i ({$blocksize} bytes)");
- }
- $i++;
- }
-
- // Deprecated in PHP 8.0 and up, but included to be compatible with 7.4.
- if (\PHP_MAJOR_VERSION < 8) {
- \openssl_pkey_free($key);
- }
-
- return $decrypted;
- }
-
- /**
- * Trim headers from key data
- * @param string $data the key dat with headers
- * @return string Key without headers
- */
- private static function trim_headers($data) {
- // Headers are repeated in this function for easier testing and copy-pasting into other projects.
- $startheader = "----- BEGIN ACTIVATION KEY -----";
- $endheader = "----- END ACTIVATION KEY -----";
-
- $parts = preg_split("/\r?\n/", \trim($data));
- if (count($parts) > 2) {
- $start = -1;
- $end = -1;
- for ($i = 0; $i < count($parts); $i++) {
- // Make sure all unicode spaces are converted to normal spaces before comparing.
- $p = trim(preg_replace('/\s+/u', ' ', $parts[$i]));
-
- if ($p == $startheader) {
- $start = $i + 1;
- }
- if ($start > 0 && $p == $endheader) {
- $end = $i;
- }
- }
-
- if ($start < 0 || $end < 0 || $end - $start <= 0) {
- throw new \ParseError("Invalid activation key wrappers");
- } else {
- $keyslice = array_slice($parts, $start, $end - $start);
- return implode("\n", $keyslice);
- }
- } else {
- throw new \ParseError("Invalid activation key");
- }
- }
-
- /**
- * Check if premium status is enabled
- * @return bool
- */
- public static function enabled() {
- if (self::$premiumsupported) {
- $status = self::premiumstatus();
- return $status->enabled;
- } else {
- return true;
- }
- }
-
- /**
- * Check if the premium key includes a specific intent in addition to the treestudyplan.
- * @param string $intent The intent to search for
- * @return bool
- */
- public static function has_intent($intent) {
- $status = self::premiumstatus();
- if ($status->enabled) {
- return \in_array(\strtolower($intent), $status->intents);
- } else {
- return false;
- }
- }
-
- /**
- * Generate debug info.
- */
- public static function debuginfo() {
- $s = "";
- try {
- $activationkey = \get_config("local_treestudyplan", "premium_key");
- if (strlen($activationkey) > 0) {
- $keydata = self::trim_headers($activationkey);
- $json = self::decrypt($keydata);
- $s .= "Decoded key data:\n----\n";
- $s .= $json . "\n----\n";
- $decoded = \json_decode($json, false);
- $s .= "Read as object:\n----\n";
- $s .= \json_encode($decoded, \JSON_PRETTY_PRINT) ."\n----\n";
- $status = self::premiumstatus();
- $s .= "Parsed premium status block:\n----\n";
- $s .= \json_encode($status, \JSON_PRETTY_PRINT) ."\n----\n";
- $s .= "Message: " . self::statusdescription() . "\n";
- } else {
- $s .= "Premium key empty";
- }
- } catch (\Throwable $x) {
- $s .= "!!! " . get_class($x) . ": " . $x->getCode() . " | " . $x->getMessage(). "\n";
- $stack = explode("\n", $x->getTraceAsString());
- foreach ($stack as $l) {
- $s .= " " . trim($l) ."\n";
- }
- }
-
- $s .= "
";
- return $s;
- }
-
- /**
- * Determine, cache and retrieve premium status
- * @return object
- */
- protected static function premiumstatus() {
- if (!isset(self::$cachedpremiumstatus)) {
-
- // Initialize default object.
- $o = new \stdClass;
- $o->enabled = false;
- $o->intents = [];
- $o->name = "";
- $o->website = "";
- $o->expires = "";
- $o->expired = false;
- $o->issued = "";
- try {
- $activationkey = \get_config("local_treestudyplan", "premium_key");
- if (strlen($activationkey) > 0) {
-
- $keydata = self::trim_headers($activationkey);
- $json = self::decrypt($keydata);
- $decoded = \json_decode($json, false);
-
- if (is_object($decoded)) {
-
- // Copy basic data/.
- $keys = ["name", "website", "expires", "issued"];
- foreach ($keys as $k) {
- if (isset($decoded->$k)) {
- $o->$k = $decoded->$k;
- }
- }
-
- if (!empty($decoded->intent)) {
- $o->intents = explode(",", $decoded->intent);
- }
-
- // Convert dates to DateTime for.
- $now = new \DateTime();
- $issuedate = new \DateTime($o->issued);
- if ($o->expires == 'never') {
- // If expiry date == never.
- $expirydate = new \DateTime(); // Default to now and add a year.
- $expirydate->add(new \DateInterval("P1Y"));
- } else {
- try {
- $expirydate = new \DateTime($o->expires);
- } catch (\Exception $x) {
- $expirydate = new \DateTime(); // Default to now.
- }
- }
-
- if (\in_array('treestudyplan', $o->intents)
- && !empty($o->issued)
- && self::website_match($o->website)
- ) {
- if ($expirydate > $now) {
- $o->enabled = true;
- $o->expired = false;
- } else {
- $o->expired = true;
- $o->enabled = false;
- }
- // Format dates localized.
- $o->issued = \userdate($issuedate->getTimestamp(), \get_string('strftimedate', 'langconfig'));
- if ($o->expires == "never") {
- $o->expires = \get_string("premium:never", 'local_treestudyplan');
- } else {
- $o->expires = \userdate($expirydate->getTimestamp(), \get_string('strftimedate', 'langconfig'));
- }
- }
- }
- }
- } catch (\ParseError $x) {
- $o->status = \get_string("premium:invalidactivationcontent", "local_treestudyplan");
- }
- self::$cachedpremiumstatus = $o;
-
- }
- return self::$cachedpremiumstatus;
- }
-
- /**
- * Check if the current site matches the provided key
- * @param string $key Website pattern to match against
- */
- private static function website_match($key) {
- global $CFG;
- $site = $CFG->wwwroot;
-
- // Add double slashes to key and site if no scheme is set.
- // Basically: if no double slashes present before any dots, slashes or @s.
- if (!\preg_match_all('#^[^./@]*?//#', $key)) {
- $key = "//".$key;
- }
- if (!\preg_match_all('#^[^./@]*?//#', $site)) {
- $site = "//".$site;
- }
- // Use parse_url() to split path and host.
- $keyurl = (object)\parse_url($key);
- $siteurl = (object)\parse_url($site);
-
- // No match if host is empty on key or site.
- if (empty($keyurl->host) || empty($siteurl->host)) {
- return false;
- }
-
- if ($keyurl->host == "*") {
- // Value * matches all.
- return true;
- }
-
- // First match the host part.
- $keyparts = \array_reverse(\explode(".", $keyurl->host));
- $siteparts = \array_reverse(\explode(".", $siteurl->host));
-
- // Trim starting www from both parts, since site.domain and www.site.domain should be treated as the same.
- if (($x = \array_pop($keyparts)) != "www") {
- \array_push($keyparts, $x);
- }
- if (($x = \array_pop($siteparts)) != "www") {
- \array_push($siteparts, $x);
- }
-
- for ($i = 0; $i < count($keyparts); $i++) {
- // No match if the site does not have a part, but the key does. Unless the key part is .
- if (!isset($siteparts[$i])) {
- if ($keyparts[$i] != "*") {
- return false;
- } else {
- $i++; // Increment $i by one before break, to make sure the comparison following this loop holds.
- break; // Stop comparison. Host part matches.
- }
- }
-
- // Now do a proper case insensitive check for matching.
- // Uses fnmatch to easily handle shell type wildcards.
- if (! \fnmatch($keyparts[$i], $siteparts[$i], \FNM_CASEFOLD)) {
- return false;
- }
- }
- // Fail if the site has a deeper subdomain than the key, unless the deepest key subdomain is .
- if ($keyparts[$i - 1] != '*' && count($siteparts) > ($i)) {
- return false;
- }
-
- // If we made it here then the host part matches. Now check the path.
- // If path is /*, matches all subpaths including /.
- $keypath = empty($keyurl->path) ? "/" : $keyurl->path;
- $sitepath = empty($siteurl->path) ? "/" : $siteurl->path;
-
- // Trim trailing / from both paths before comparison.
- if (\strlen($sitepath) > 1) {
- $sitepath = \rtrim($sitepath, "/");
- }
- if (\strlen($keypath) > 1) {
- $keypath = \rtrim($keypath, "/");
- }
-
- // Do a case insensitive fnmatch on the site so wildcards are matched too.
- return \fnmatch($keypath, $sitepath, \FNM_CASEFOLD);
- }
-
- /**
- * Parameter description for webservice function get_premiumstatus
- */
- public static function get_premiumstatus_parameters(): \external_function_parameters {
- return new \external_function_parameters([]);
- }
-
- /**
- * Return value description for webservice function get_premiumstatus
- */
- public static function get_premiumstatus_returns(): \external_description {
- return new \external_single_structure([
- "enabled" => new \external_value(PARAM_BOOL, 'premium status enabled'),
- "website" => new \external_value(PARAM_TEXT, 'premium registration website'),
- "name" => new \external_value(PARAM_TEXT, 'premium registration name'),
- "expires" => new \external_value(PARAM_TEXT, 'premium registration expiry date'),
- "expired" => new \external_value(PARAM_BOOL, 'premium status expired'),
- "intents" => new \external_multiple_structure(
- new \external_value(PARAM_TEXT), 'additional intents included in the license'
- ),
- ]);
- }
-
- /**
- * Get premium status information for webservice
- * @return object
- */
- public static function get_premiumstatus() {
- if (self::$premiumsupported) {
- $status = self::premiumstatus();
- $keys = [
- "enabled",
- "website",
- "name",
- "expires",
- "expired",
- "intents",
- ];
-
- $result = [];
- foreach ($keys as $param) {
- $result[$param] = $status->$param;
- }
- return $result;
- } else {
- return [
- "enabled" => true,
- "website" => '*',
- "name" => '*',
- "expires" => '',
- "expired" => false,
- "intents" => [],
- ];
- }
- }
-
- /**
- * Get a descriptive text of the current premium status
- * @return string HTML description of premium status.
- */
- public static function statusdescription() {
- $status = self::premiumstatus();
-
- $msg = new \stdClass;
- $msg->name = $status->name;
- $msg->issued = $status->issued;
- $msg->expires = $status->expires;
- if ($status->website != "*") {
- $msg->sitestatus = \get_string("premium:onsite", 'local_treestudyplan', $status);
- } else {
- $msg->sitestatus = \get_string("premium:anywhere", 'local_treestudyplan');
- }
-
- if ($status->enabled) {
- return \get_string("premium:active", 'local_treestudyplan', $msg);
- } else if ($status->expired) {
- return \get_string("premium:expired", 'local_treestudyplan', $msg);
- } else if (!self::website_match($status->website)) {
- return \get_string("premium:siteinvalid", 'local_treestudyplan', $status->website);
- } else {
- return \get_string("premium:notregistered", 'local_treestudyplan', $msg);
- }
- }
-
- /**
- * Throw an error if premium status is not enabled
- * @param string $message Message translation key to use in exception
- */
- public static function require_premium($message="premiumfeature:warning") {
- if (! self::enabled()) {
- throw new \moodle_exception($message, "local_treestudyplan");
- }
- }
-
-}
diff --git a/classes/studentstudyplanservice.php b/classes/studentstudyplanservice.php
index 8f2b456..5bdc017 100644
--- a/classes/studentstudyplanservice.php
+++ b/classes/studentstudyplanservice.php
@@ -556,7 +556,7 @@ class studentstudyplanservice extends \external_api {
\external_api::validate_context(\context_system::instance());
// Return empty list if coach role not enabled.
- if (! (premium::enabled() && \get_config("local_treestudyplan", "enablecoach"))) {
+ if (! (\get_config("local_treestudyplan", "enablecoach"))) {
return [];
}
diff --git a/classes/studyplan.php b/classes/studyplan.php
index fd869b4..9af12df 100644
--- a/classes/studyplan.php
+++ b/classes/studyplan.php
@@ -810,7 +810,7 @@ class studyplan {
public function is_coach($user=null) {
global $DB, $USER;
- if (! (premium::enabled() && \get_config("local_treestudyplan", "enablecoach"))) {
+ if (! (\get_config("local_treestudyplan", "enablecoach"))) {
// If coach role is not available, return false immediately.
return false;
}
diff --git a/coach.php b/coach.php
index f64ef87..3f6686b 100644
--- a/coach.php
+++ b/coach.php
@@ -23,7 +23,6 @@
require_once("../../config.php");
-use local_treestudyplan\premium;
require_once($CFG->libdir.'/weblib.php');
@@ -37,7 +36,6 @@ $PAGE->set_context($systemcontext);
$PAGE->set_title(get_string('coaching_plans', 'local_treestudyplan'));
$PAGE->set_heading(get_string('coaching_plans', 'local_treestudyplan'));
-premium::require_premium();
if (! (\get_config("local_treestudyplan", "enablecoach"))) {
throw new \moodle_exception("error:coachdisabled", "local_treestudyplan");
}
diff --git a/db/services.php b/db/services.php
index 3753403..4946b6f 100644
--- a/db/services.php
+++ b/db/services.php
@@ -754,18 +754,6 @@ $functions = [
'capabilities' => 'local/treestudyplan:viewuserreports',
'loginrequired' => true,
],
- /***************************
- * Premium status functions
- ***************************/
- 'local_treestudyplan_premiumstatus' => [ // Web service function name.
- 'classname' => '\local_treestudyplan\premium', // Class containing the external function.
- 'methodname' => 'get_premiumstatus', // External function name.
- 'description' => 'Retrieve premium status info',
- 'type' => 'read', // Database rights of the web service function (read, write).
- 'ajax' => true,
- 'capabilities' => '',
- 'loginrequired' => false,
- ],
/***************************
* Studyline enrollment functions
***************************/
diff --git a/doc/advanced.htm b/doc/advanced.htm
index 02d0d12..2ddf845 100644
--- a/doc/advanced.htm
+++ b/doc/advanced.htm
@@ -139,13 +139,13 @@
local/treestudyplan:lineunenrol |
- (Premium feature related) Users with this right in addition to viewuserreports can unregister students from an registerable line |
+ Users with this right in addition to viewuserreports can unregister students from an registerable line |
manager |
System and/or category |
local/treestudyplan:coach |
- (Premium feature related) Users with this right can be selected as coaches in the given context |
+ Users with this right can be selected as coaches in the given context |
manager |
System and/or category |
diff --git a/edit-plan.php b/edit-plan.php
index ef21b2f..9e8cd15 100644
--- a/edit-plan.php
+++ b/edit-plan.php
@@ -166,7 +166,7 @@ print << {{ text.advanced_import_from_file }}{$a->website}';
-$string["premium:active"] = 'Premium access enabled.
Registered to {$a->name} {$a->sitestatus}
Expires {$a->expires}';
-$string["premium:notregistered"] = 'Premium access disabled ';
-$string["premium:invalidactivationcontent"] = 'Premium activation key not recognized';
-$string["premium:siteinvalid"] = 'Premium access disabled. Activation key is only valid for use on {$a}';
-$string["premium:expired"] = 'Premium access expired on {$a->expires}
Was registered to {$a->name} {$a->sitestatus}';
-$string["settingspage_premium"] = 'Premium registration';
-$string["setting_premium_heading"] = 'Premium features';
-$string["settingdesc_premium_heading"] = 'To access premium features, you need a registration key.
-
Premium features include:
-
-- Overview of grades for all students in a studyplan.
-- Rows in a studyplan which a student can choose to unlock.
-- Coach role, which allows a linked coach to follow student progress and limited options to make changes to the studyplan content.
-
';
-$string["setting_premium_status"] = 'Current premium status';
-$string["setting_premium_key"] = 'Activation key';
-$string["settingdesc_premium_key"] = 'Paste the premium key you received in the box above.
Attention! The lines ----- BEGIN ACTIVATION KEY ----- and ----- END ACTIVATION KEY ----- are part of the key.';
-$string["setting_premium_debug"] = 'Debug info for premium key';
-
-$string["premiumfeature:morestudyplans"] = 'Creating more than 5 studyplans in a single category is a premium feature.';
-$string["premiumfeature:morecategories"] = 'Creating studyplans in more than 20 categories is a premium feature.';
-$string["premiumfeature:warning"] = 'The features on this page are only accessible if your site has premium features enabled.';
$string["error:coachdisabled"] = "The coach page has been disabled by the system administrator";
$string["overall"] = 'Course';
$string["studyplan_report"] = 'Studyplan result overview';
diff --git a/lang/nl/local_treestudyplan.php b/lang/nl/local_treestudyplan.php
index 8ff5648..88d9851 100644
--- a/lang/nl/local_treestudyplan.php
+++ b/lang/nl/local_treestudyplan.php
@@ -475,31 +475,6 @@ $string["error:nostudyplaneditaccess"] = 'Fout: Je hebt geen rechten om studiepl
$string["error:nocategoriesvisible"] = 'Fout: Je kunt geen cursussen in een categorie bekijken. Daarom blijft de cursuslijst leeg';
$string["error:usernotassociated"] = 'Fout: De gevraagde student is niet gekoppeld aan dit studieplan';
-$string["premium:never"] = 'nooit';
-$string["premium:anywhere"] = 'voor gebruik overal';
-$string["premium:onsite"] = 'voor gebruik op {$a->website}';
-$string["premium:active"] = 'Premium toegang ingeschakeld.
Uitgegeven aan {$a->name} {$a->sitestatus}
Verloopt op{$a->expires}';
-$string["premium:notregistered"] = 'Premium toegang staat uitgeschakeld';
-$string["premium:invalidactivationcontent"] = 'Premium activeringssleutel niet herkend';
-$string["premium:siteinvalid"] = 'Premium toegang staat uitgeschakeld. Activeringssleutel is alleen voor gebruik op {$a}';
-$string["premium:expired"] = 'Premium toegang is verlopen op {$a->expires}
Was uitgegeven aan {$a->name} {$a->sitestatus}';
-$string["settingspage_premium"] = 'Premium registratie';
-$string["setting_premium_heading"] = 'Premium features';
-$string["settingdesc_premium_heading"] = 'Voor premium toegang is een activeringssleutel vereist.
-
Premium toegang bevat onder andere:
-
-- Overzichtsrapport van alle resultaten van studenten in een studieplan.
-- Leerlijnen die student kan ontsluiten.
-- Coach rol, waarbij een coach gekoppeld kan worden aan een studieplan, de voortgang van studenten hierin kan volgen en de inhoud hiervan beperkt kan aanpassen.
-
';
-$string["setting_premium_status"] = 'Premium status';
-$string["setting_premium_key"] = 'Activatiesleutel';
-$string["settingdesc_premium_key"] = 'Plak de activatiesleutel in het tekstvak hierboven.
Let op! De regels ----- BEGIN ACTIVATION KEY ----- en ----- END ACTIVATION KEY ----- zijn onderdeel van de sleutel.';
-$string["setting_premium_debug"] = 'Debug info voor premium key';
-
-$string["premiumfeature:morestudyplans"] = 'Meer dan 5 studieplannen in één categorie aanmaken kan alleen met premium toegang.';
-$string["premiumfeature:morecategories"] = 'In meer dan 20 categoriën een studieplan aanmaken kan alleen met premium toegang.';
-$string["premiumfeature:warning"] = 'De functies in deze pagina kun je alleen gebruiken met premium toegang.';
$string["error:coachdisabled"] = "De coach functie is uitgeschakeld";
$string["overall"] = 'Cursus voltooid';
$string["studyplan_report"] = 'Studieplan resultatenoverzicht';
diff --git a/lib.php b/lib.php
index 4eae663..abbf987 100644
--- a/lib.php
+++ b/lib.php
@@ -25,7 +25,6 @@
require_once($CFG->dirroot.'/course/modlib.php');
use local_treestudyplan\local\helpers\webservicehelper;
-use local_treestudyplan\premium;
use local_treestudyplan\studyplan;
use local_treestudyplan\studyplanpage;
@@ -56,7 +55,7 @@ function local_treestudyplan_autofill_customusermenuitems() {
"/local/treestudyplan/view-plan.php" => ["included" => false, "strkey" => "link_viewplan"],
"/local/treestudyplan/edit-plan.php" => ["included" => false, "strkey" => "link_editplan"],
];
- if ((premium::enabled() && \get_config("local_treestudyplan", "enablecoach"))) {
+ if (\get_config("local_treestudyplan", "enablecoach")) {
// Also include the coach role if enabled.
$navitems["/local/treestudyplan/coach.php"] = ["included" => false, "strkey" => "link_coach"];
}
@@ -203,7 +202,7 @@ function local_treestudyplan_extend_navigation(global_navigation $navigation) {
INNER JOIN {local_treestudyplan} t ON c.studyplan_id = t.id
WHERE c.user_id = :user_id";
- if ((premium::enabled() && \get_config("local_treestudyplan", "enablecoach")) &&
+ if (\get_config("local_treestudyplan", "enablecoach") &&
(has_capability('local/treestudyplan:coach', context_system::instance())
|| webservicehelper::has_capability_in_any_category('local/treestudyplan:coach')
) && $DB->count_records_sql($coachsql, ["user_id" => $USER->id]) > 0
diff --git a/result-overview.php b/result-overview.php
index 27a98b6..34cc299 100644
--- a/result-overview.php
+++ b/result-overview.php
@@ -25,7 +25,6 @@ require_once("../../config.php");
use local_treestudyplan\contextinfo;
use local_treestudyplan\studyplanpage;
-use local_treestudyplan\premium;
require_once($CFG->libdir.'/weblib.php');
@@ -48,10 +47,6 @@ $PAGE->set_pagelayout('report');
$PAGE->set_title(get_string('studyplan_report', 'local_treestudyplan'));
$PAGE->set_heading(get_string('studyplan_report', 'local_treestudyplan'));
-if (!premium::enabled()) {
- throw new \moodle_exception("error:nopremiumaccess", "local_treestudyplan", "", premium::statusdescription());
-}
-
if (!has_capability('local/treestudyplan:viewuserreports', $context)) {
throw new \moodle_exception("error:nostudyplanviewaccess", "local_treestudyplan", "", $contextname);
}
diff --git a/settings.php b/settings.php
index 531d344..388062f 100644
--- a/settings.php
+++ b/settings.php
@@ -25,7 +25,6 @@
defined('MOODLE_INTERNAL') || die();
use local_treestudyplan\aggregator;
-use local_treestudyplan\premium;
if ($hassiteconfig) {
@@ -158,13 +157,11 @@ if ($hassiteconfig) {
false,
));
- if (premium::enabled()) {
- $page->add(new admin_setting_configcheckbox('local_treestudyplan/enablecoach',
- get_string('setting_enablecoach', 'local_treestudyplan'),
- get_string('settingdesc_enablecoach', 'local_treestudyplan'),
- false,
- ));
- }
+ $page->add(new admin_setting_configcheckbox('local_treestudyplan/enablecoach',
+ get_string('setting_enablecoach', 'local_treestudyplan'),
+ get_string('settingdesc_enablecoach', 'local_treestudyplan'),
+ false,
+ ));
$page->add(new admin_setting_configselect('local_treestudyplan/display_field',
get_string('setting_display_field', 'local_treestudyplan'),
@@ -382,44 +379,4 @@ if ($hassiteconfig) {
'local_treestudyplan_doc',
get_string('cfg_help', 'local_treestudyplan', null, true),
$CFG->wwwroot . '/local/treestudyplan/doc.php/index.htm'));
-
- /**************************************
- *
- * Settings page: Premium registration
- *
- *************************************/
- if (\local_treestudyplan\premium::supported() || $CFG->debugdeveloper) {
- $pagepremium = new admin_settingpage('local_treestudyplan_settings_premium',
- get_string('settingspage_premium', 'local_treestudyplan', null, true));
-
- // Description heading.
- $pagepremium->add(new admin_setting_heading('local_treestudyplan/premium_heading',
- get_string('setting_premium_heading', 'local_treestudyplan'),
- get_string('settingdesc_premium_heading', 'local_treestudyplan')
- ));
-
- // Description heading.
- $pagepremium->add(new admin_setting_description('local_treestudyplan/premium_status',
- get_string('setting_premium_status', 'local_treestudyplan'),
- premium::statusdescription() . "
" // Add empty row at end.
- ));
-
- $pagepremium->add(new admin_setting_configtextarea('local_treestudyplan/premium_key',
- get_string('setting_premium_key', 'local_treestudyplan'),
- get_string('settingdesc_premium_key', 'local_treestudyplan'),
- "",
- PARAM_RAW
- ));
-
- if ($CFG->debugdeveloper) {
- // Show decrypted key data.
- $pagepremium->add(new admin_setting_description('local_treestudyplan/premium_debug',
- get_string('setting_premium_debug', 'local_treestudyplan'),
- premium::debuginfo() . "
" // Add empty row at end.
- ));
- }
-
- // Add settings page2 to the admin settings category.
- $ADMIN->add('local_treestudyplan', $pagepremium);
- }
}