MDL-65400 block: Support returning settings for core blocks
authorJuan Leyva <juanleyvadelgado@gmail.com>
Wed, 16 Oct 2019 15:44:49 +0000 (17:44 +0200)
committerJuan Leyva <juanleyvadelgado@gmail.com>
Wed, 23 Oct 2019 13:33:56 +0000 (15:33 +0200)
19 files changed:
blocks/activity_results/block_activity_results.php
blocks/blog_recent/block_blog_recent.php
blocks/blog_tags/block_blog_tags.php
blocks/course_list/block_course_list.php
blocks/glossary_random/block_glossary_random.php
blocks/html/block_html.php
blocks/mentees/block_mentees.php
blocks/myoverview/block_myoverview.php
blocks/myprofile/block_myprofile.php
blocks/navigation/block_navigation.php
blocks/online_users/block_online_users.php
blocks/recentlyaccessedcourses/block_recentlyaccessedcourses.php
blocks/rss_client/block_rss_client.php
blocks/section_links/block_section_links.php
blocks/settings/block_settings.php
blocks/starredcourses/block_starredcourses.php
blocks/tag_flickr/block_tag_flickr.php
blocks/tag_youtube/block_tag_youtube.php
blocks/tags/block_tags.php

index 2890415..f62b430 100644 (file)
@@ -704,4 +704,21 @@ class block_activity_results extends block_base {
         return $scale;
 
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $instanceconfigs = !empty($this->config) ? $this->config : new stdClass();
+        $pluginconfigs = get_config('block_activity_results');
+
+        return (object) [
+            'instance' => $instanceconfigs,
+            'plugin' => $pluginconfigs,
+        ];
+    }
 }
index 80befeb..b0d875b 100644 (file)
@@ -125,4 +125,20 @@ class block_blog_recent extends block_base {
             $this->content->text .= get_string('norecentblogentries', 'block_blog_recent');
         }
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = !empty($this->config) ? $this->config : new stdClass();
+
+        return (object) [
+            'instance' => $configs,
+            'plugin' => new stdClass(),
+        ];
+    }
 }
index f46bd41..f479e38 100644 (file)
@@ -206,6 +206,22 @@ class block_blog_tags extends block_base {
         }
         return $this->content;
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = !empty($this->config) ? $this->config : new stdClass();
+
+        return (object) [
+            'instance' => $configs,
+            'plugin' => new stdClass(),
+        ];
+    }
 }
 
 function block_blog_tags_sort($a, $b) {
index b4aa2c1..0c4b832 100644 (file)
@@ -177,6 +177,27 @@ class block_course_list extends block_list {
     public function get_aria_role() {
         return 'navigation';
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        global $CFG;
+
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = (object) [
+            'adminview' => $CFG->block_course_list_adminview,
+            'hideallcourseslink' => $CFG->block_course_list_hideallcourseslink
+        ];
+
+        return (object) [
+            'instance' => new stdClass(),
+            'plugin' => $configs,
+        ];
+    }
 }
 
 
index 5f15e8e..42a6ebc 100644 (file)
@@ -254,5 +254,21 @@ class block_glossary_random extends block_base {
 
         return $this->content;
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = !empty($this->config) ? $this->config : new stdClass();
+
+        return (object) [
+            'instance' => $configs,
+            'plugin' => new stdClass(),
+        ];
+    }
 }
 
index 954a809..cb1f6a6 100644 (file)
@@ -209,4 +209,23 @@ class block_html extends block_base {
 
         return $attributes;
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        global $CFG;
+
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $instanceconfigs = !empty($this->config) ? $this->config : new stdClass();
+        $pluginconfigs = (object) ['allowcssclasses' => $CFG->block_html_allowcssclasses];
+
+        return (object) [
+            'instance' => $instanceconfigs,
+            'plugin' => $pluginconfigs,
+        ];
+    }
 }
index 0c2ff91..ff32630 100644 (file)
@@ -78,5 +78,21 @@ class block_mentees extends block_base {
     public function instance_can_be_docked() {
         return parent::instance_can_be_docked() && isset($this->config->title) && !empty($this->config->title);
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = !empty($this->config) ? $this->config : new stdClass();
+
+        return (object) [
+            'instance' => $configs,
+            'plugin' => new stdClass(),
+        ];
+    }
 }
 
index 3a7dd13..db02741 100644 (file)
@@ -82,5 +82,21 @@ class block_myoverview extends block_base {
     public function has_config() {
         return true;
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = get_config('block_myoverview');
+
+        return (object) [
+            'instance' => new stdClass(),
+            'plugin' => $configs,
+        ];
+    }
 }
 
index 4b9013f..db86972 100644 (file)
@@ -129,4 +129,19 @@ class block_myprofile extends block_base {
     public function before_delete() {
     }
 
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = !empty($this->config) ? $this->config : new stdClass();
+
+        return (object) [
+            'instance' => $configs,
+            'plugin' => new stdClass(),
+        ];
+    }
 }
index 76a4c3f..b8080b4 100644 (file)
@@ -326,4 +326,20 @@ class block_navigation extends block_base {
     public function get_aria_role() {
         return 'navigation';
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = !empty($this->config) ? $this->config : new stdClass();
+
+        return (object) [
+            'instance' => $configs,
+            'plugin' => new stdClass(),
+        ];
+    }
 }
index 9d1fc90..dbdf802 100644 (file)
@@ -157,6 +157,27 @@ class block_online_users extends block_base {
 
         return $this->content;
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        global $CFG;
+
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = (object) [
+            'timetosee' => $CFG->block_online_users_timetosee,
+            'onlinestatushiding' => $CFG->block_online_users_onlinestatushiding
+        ];
+
+        return (object) [
+            'instance' => new stdClass(),
+            'plugin' => $configs,
+        ];
+    }
 }
 
 
index 0c8c388..58241a8 100644 (file)
@@ -76,4 +76,20 @@ class block_recentlyaccessedcourses extends block_base {
     public function has_config() {
         return true;
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = get_config('block_recentlyaccessedcourses');
+
+        return (object) [
+            'instance' => new stdClass(),
+            'plugin' => $configs,
+        ];
+    }
 }
index 3b33049..06052c7 100644 (file)
             return core_text::substr($title, 0, $max - 3) . '...';
         }
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        global $CFG;
+
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $instanceconfigs = !empty($this->config) ? $this->config : new stdClass();
+        $pluginconfigs = (object) [
+            'num_entries' => $CFG->block_rss_client_num_entries,
+            'timeout' => $CFG->block_rss_client_timeout
+        ];
+
+        return (object) [
+            'instance' => $instanceconfigs,
+            'plugin' => $pluginconfigs,
+        ];
+    }
 }
index 7f12683..6c638ea 100644 (file)
@@ -154,6 +154,23 @@ class block_section_links extends block_base {
     public function has_config() {
         return true;
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $instanceconfigs = !empty($this->config) ? $this->config : new stdClass();
+        $pluginconfigs = get_config('block_section_links');
+
+        return (object) [
+            'instance' => $instanceconfigs,
+            'plugin' => $pluginconfigs,
+        ];
+    }
 }
 
 
index 1ed9409..96f79f9 100644 (file)
@@ -160,4 +160,20 @@ class block_settings extends block_base {
     public function get_aria_role() {
         return 'navigation';
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = !empty($this->config) ? $this->config : new stdClass();
+
+        return (object) [
+            'instance' => $configs,
+            'plugin' => new stdClass(),
+        ];
+    }
 }
index 46bfda9..365435a 100644 (file)
@@ -81,4 +81,20 @@ class block_starredcourses extends block_base {
     public function has_config() {
         return true;
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = get_config('block_starredcourses');
+
+        return (object) [
+            'instance' => new stdClass(),
+            'plugin' => $configs,
+        ];
+    }
 }
index 22471f3..affb9de 100644 (file)
@@ -178,6 +178,22 @@ class block_tag_flickr extends block_base {
         }
         return $url;
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = !empty($this->config) ? $this->config : new stdClass();
+
+        return (object) [
+            'instance' => $configs,
+            'plugin' => new stdClass(),
+        ];
+    }
 }
 
 
index 9c79fe8..51a33d5 100644 (file)
@@ -398,5 +398,25 @@ class block_tag_youtube extends block_base {
             return $oldcat;
         }
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // There is a private key, only admins can see it.
+        $pluginconfigs = get_config('block_tag_youtube');
+        if (!has_capability('moodle/site:config', context_system::instance())) {
+            unset($pluginconfigs->apikey);
+        }
+        $instanceconfigs = !empty($this->config) ? $this->config : new stdClass();
+
+        return (object) [
+            'instance' => $instanceconfigs,
+            'plugin' => $pluginconfigs,
+        ];
+    }
 }
 
index f263ddf..b0a07d9 100644 (file)
@@ -109,4 +109,20 @@ class block_tags extends block_base {
 
         return $this->content;
     }
+
+    /**
+     * Return the plugin config settings for external functions.
+     *
+     * @return stdClass the configs for both the block instance and plugin
+     * @since Moodle 3.8
+     */
+    public function get_config_for_external() {
+        // Return all settings for all users since it is safe (no private keys, etc..).
+        $configs = !empty($this->config) ? $this->config : new stdClass();
+
+        return (object) [
+            'instance' => $configs,
+            'plugin' => new stdClass(),
+        ];
+    }
 }