Merge branch 'install_23_STABLE' of git://git.moodle.org/moodle-install into MOODLE_2...
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Sat, 11 Jan 2014 14:57:04 +0000 (15:57 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Sat, 11 Jan 2014 14:57:04 +0000 (15:57 +0100)
course/loginas.php
user/profile/index.php

index 51e7bbe..c43c6ab 100644 (file)
@@ -60,6 +60,23 @@ if (has_capability('moodle/user:loginas', $systemcontext)) {
         print_error('usernotincourse');
     }
     $context = $coursecontext;
+
+    // Check if course has SEPARATEGROUPS and user is part of that group.
+    if (groups_get_course_groupmode($course) == SEPARATEGROUPS &&
+            !has_capability('moodle/site:accessallgroups', $context)) {
+        $samegroup = false;
+        if ($groups = groups_get_all_groups($course->id, $USER->id)) {
+            foreach ($groups as $group) {
+                if (groups_is_member($group->id, $userid)) {
+                    $samegroup = true;
+                    break;
+                }
+            }
+        }
+        if (!$samegroup) {
+            print_error('nologinas');
+        }
+    }
 }
 
 /// Login as this user and return to course home page.
index 0617d17..17ab381 100644 (file)
@@ -41,20 +41,23 @@ switch ($action) {
         break;
     case 'deletecategory':
         $id      = required_param('id', PARAM_INT);
-        profile_delete_category($id);
+        if (confirm_sesskey()) {
+            profile_delete_category($id);
+        }
         redirect($redirect,get_string('deleted'));
         break;
     case 'deletefield':
         $id      = required_param('id', PARAM_INT);
         $confirm = optional_param('confirm', 0, PARAM_BOOL);
 
+        // If no userdata for profile than don't show confirmation.
         $datacount = $DB->count_records('user_info_data', array('fieldid'=>$id));
-        if (data_submitted() and ($confirm and confirm_sesskey()) or $datacount===0) {
+        if (((data_submitted() and $confirm) or ($datacount === 0)) and confirm_sesskey()) {
             profile_delete_field($id);
             redirect($redirect,get_string('deleted'));
         }
 
-        //ask for confirmation
+        // Ask for confirmation, as there is user data available for field.
         $fieldname = $DB->get_field('user_info_field', 'name', array('id'=>$id));
         $optionsyes = array ('id'=>$id, 'confirm'=>1, 'action'=>'deletefield', 'sesskey'=>sesskey());
         $strheading = get_string('profiledeletefield', 'admin', $fieldname);
@@ -173,7 +176,7 @@ function profile_category_icons($category) {
     /// Delete
     /// Can only delete the last category if there are no fields in it
     if ( ($categorycount > 1) or ($fieldcount == 0) ) {
-        $editstr .= '<a title="'.$strdelete.'" href="index.php?id='.$category->id.'&amp;action=deletecategory';
+        $editstr .= '<a title="'.$strdelete.'" href="index.php?id='.$category->id.'&amp;action=deletecategory&amp;sesskey='.sesskey();
         $editstr .= '"><img src="'.$OUTPUT->pix_url('t/delete') . '" alt="'.$strdelete.'" class="iconsmall" /></a> ';
     } else {
         $editstr .= '<img src="'.$OUTPUT->pix_url('spacer') . '" alt="" class="iconsmall" /> ';
@@ -216,7 +219,7 @@ function profile_field_icons($field) {
     $editstr = '<a title="'.$stredit.'" href="index.php?id='.$field->id.'&amp;action=editfield"><img src="'.$OUTPUT->pix_url('t/edit') . '" alt="'.$stredit.'" class="iconsmall" /></a> ';
 
     /// Delete
-    $editstr .= '<a title="'.$strdelete.'" href="index.php?id='.$field->id.'&amp;action=deletefield';
+    $editstr .= '<a title="'.$strdelete.'" href="index.php?id='.$field->id.'&amp;action=deletefield&amp;sesskey='.sesskey();
     $editstr .= '"><img src="'.$OUTPUT->pix_url('t/delete') . '" alt="'.$strdelete.'" class="iconsmall" /></a> ';
 
     /// Move up