Skip to content

Commit

Permalink
Merge branch 'MDL-62273-master' of https://github.com/sammarshallou/m…
Browse files Browse the repository at this point in the history
  • Loading branch information
David Monllao authored and stronk7 committed Jun 6, 2018
2 parents 054900f + bef86c6 commit a7fb68f
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
7 changes: 7 additions & 0 deletions lib/classes/user.php
Expand Up @@ -82,6 +82,13 @@ class core_user {
'alternatename'
];

/** @var int Indicates that user profile view should be prevented */
const VIEWPROFILE_PREVENT = -1;
/** @var int Indicates that user profile view should not be prevented */
const VIEWPROFILE_DO_NOT_PREVENT = 0;
/** @var int Indicates that user profile view should be allowed even if Moodle would prevent it */
const VIEWPROFILE_FORCE_ALLOW = 1;

/** @var stdClass keep record of noreply user */
public static $noreplyuser = false;

Expand Down
27 changes: 27 additions & 0 deletions user/lib.php
Expand Up @@ -1154,6 +1154,33 @@ function user_can_view_profile($user, $course = null, $usercontext = null) {
return true;
}

// Use callbacks so that (primarily) local plugins can prevent or allow profile access.
$forceallow = false;
$plugintypes = get_plugins_with_function('control_view_profile');
foreach ($plugintypes as $plugins) {
foreach ($plugins as $pluginfunction) {
$result = $pluginfunction($user, $course, $usercontext);
switch ($result) {
case core_user::VIEWPROFILE_DO_NOT_PREVENT:
// If the plugin doesn't stop access, just continue to next plugin or use
// default behaviour.
break;
case core_user::VIEWPROFILE_FORCE_ALLOW:
// Record that we are definitely going to allow it (unless another plugin
// returns _PREVENT).
$forceallow = true;
break;
case core_user::VIEWPROFILE_PREVENT:
// If any plugin returns PREVENT then we return false, regardless of what
// other plugins said.
return false;
}
}
}
if ($forceallow) {
return true;
}

// Course contacts have visible profiles always.
if (has_coursecontact_role($user->id)) {
return true;
Expand Down

0 comments on commit a7fb68f

Please sign in to comment.