Merge branch 'MDL-74317-400' of https://github.com/dravek/moodle into MOODLE_400_STABLE
This commit is contained in:
@@ -597,9 +597,20 @@ class block_base {
|
||||
* @return boolean
|
||||
*/
|
||||
function user_can_addto($page) {
|
||||
global $CFG;
|
||||
require_once($CFG->dirroot . '/user/lib.php');
|
||||
|
||||
// List of formats this block supports.
|
||||
$formats = $this->applicable_formats();
|
||||
|
||||
// Check if user is trying to add blocks to their profile page.
|
||||
$userpagetypes = user_page_type_list($page->pagetype, null, null);
|
||||
if (array_key_exists($page->pagetype, $userpagetypes)) {
|
||||
$capability = 'block/' . $this->name() . ':addinstance';
|
||||
return $this->has_add_block_capability($page, $capability)
|
||||
&& has_capability('moodle/user:manageownblocks', $page->context);
|
||||
}
|
||||
|
||||
// The blocks in My Moodle are a special case and use a different capability.
|
||||
$mypagetypes = my_page_type_list($page->pagetype); // Get list of possible my page types.
|
||||
|
||||
@@ -618,10 +629,12 @@ class block_base {
|
||||
&& has_capability('moodle/my:manageblocks', $page->context);
|
||||
}
|
||||
}
|
||||
// Check if this is a block only used on /my.
|
||||
unset($formats['my']);
|
||||
// Check if this is a block only used on 'my' or 'user' page types.
|
||||
foreach (array_keys($mypagetypes + $userpagetypes) as $key) {
|
||||
unset($formats[$key]);
|
||||
}
|
||||
if (empty($formats)) {
|
||||
// Block can only be added to /my - return false.
|
||||
// Block can only be added to 'my' or 'user' page types - return false.
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
+1
-9
@@ -34,14 +34,6 @@ require_login();
|
||||
$context = \context_helper::instance_by_id($contextid);
|
||||
$PAGE->set_context($context);
|
||||
|
||||
if ($context->id === \context_user::instance($USER->id)->id) {
|
||||
$PAGE->set_blocks_editing_capability('moodle/my:manageblocks');
|
||||
}
|
||||
|
||||
if ($PAGE->user_allowed_editing()) {
|
||||
$USER->editing = $setmode;
|
||||
} else {
|
||||
\core\notification::add(get_string('cannotswitcheditmodeon', 'error'), \core\notification::ERROR);
|
||||
}
|
||||
$USER->editing = $setmode;
|
||||
|
||||
redirect($pageurl);
|
||||
|
||||
Vendored
+6
-24
@@ -14,15 +14,6 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* A web service to load the mapping of moodle pix names to fontawesome icon names.
|
||||
*
|
||||
* @package core
|
||||
* @category external
|
||||
* @copyright 2021 Bas Brands <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace core\external;
|
||||
|
||||
use external_api;
|
||||
@@ -54,14 +45,14 @@ class editmode extends external_api {
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the image and return any warnings and the new image url
|
||||
* Set the given edit mode
|
||||
*
|
||||
* @param bool $setmode the current edit mode
|
||||
* @param bool $setmode the new edit mode
|
||||
* @param int $contextid the current page context id
|
||||
* @return array the new edit mode.
|
||||
* @return array
|
||||
*/
|
||||
public static function change_editmode(bool $setmode, int $contextid): array {
|
||||
global $USER, $PAGE;
|
||||
global $USER;
|
||||
|
||||
$params = self::validate_parameters(
|
||||
self::change_editmode_parameters(),
|
||||
@@ -73,19 +64,10 @@ class editmode extends external_api {
|
||||
|
||||
$context = \context_helper::instance_by_id($params['context']);
|
||||
self::validate_context($context);
|
||||
$PAGE->set_context($context);
|
||||
|
||||
if ($context->id === \context_user::instance($USER->id)->id) {
|
||||
$PAGE->set_blocks_editing_capability('moodle/my:manageblocks');
|
||||
}
|
||||
$USER->editing = $params['setmode'];
|
||||
|
||||
$success = false;
|
||||
if ($PAGE->user_allowed_editing()) {
|
||||
$USER->editing = $setmode;
|
||||
$success = true;
|
||||
}
|
||||
|
||||
return ['success' => $success];
|
||||
return ['success' => true];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user