Skip to content

Commit

Permalink
MDL-61407 mod_quiz: Add initial privacy implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewnicols committed May 3, 2018
1 parent d44064c commit 4c72998
Show file tree
Hide file tree
Showing 10 changed files with 1,184 additions and 23 deletions.
1 change: 1 addition & 0 deletions lang/en/question.php
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,7 @@
$string['started'] = 'Started';
$string['state'] = 'State';
$string['step'] = 'Step';
$string['steps'] = 'Steps';
$string['submissionoutofsequence'] = 'Access out of sequence. Please do not click the back button when working on quiz questions.';
$string['submissionoutofsequencefriendlymessage'] = "You have entered data outside the normal sequence. This can occur if you use your browser's Back or Forward buttons; please don't use these during the test. It can also happen if you click on something while a page is loading. Click <strong>Continue</strong> to resume.";
$string['submit'] = 'Submit';
Expand Down
65 changes: 65 additions & 0 deletions mod/quiz/classes/privacy/helper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Privacy Subsystem helper for mod_quiz.
*
* @package mod_quiz
* @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

namespace mod_quiz\privacy;

use \core_privacy\local\request\writer;
use \core_privacy\local\request\transform;
use \core_privacy\local\request\contextlist;
use \core_privacy\local\request\approved_contextlist;
use \core_privacy\local\request\deletion_criteria;
use \core_privacy\local\metadata\collection;
use \core_privacy\manager;

defined('MOODLE_INTERNAL') || die();

require_once($CFG->dirroot . '/mod/quiz/lib.php');
require_once($CFG->dirroot . '/mod/quiz/locallib.php');

/**
* Privacy Subsystem implementation for mod_quiz.
*
* @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class helper {
/**
* Determine the subcontext for the specified quiz attempt.
*
* @param \stdClass $attempt The attempt data retrieved from the database.
* @param \stdClass $user The user record.
* @return \array The calculated subcontext.
*/
public static function get_quiz_attempt_subcontext(\stdClass $attempt, \stdClass $user) {
$subcontext = [
get_string('attempts', 'mod_quiz'),
];
if ($attempt->userid != $user->id) {
$subcontext[] = fullname($user);
}
$subcontext[] = $attempt->attempt;

return $subcontext;
}
}
66 changes: 66 additions & 0 deletions mod/quiz/classes/privacy/legacy_quizaccess_polyfill.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* This file contains the polyfil to allow a plugin to operate with Moodle 3.3 up.
*
* @package mod_quiz
* @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace mod_quiz\privacy;

defined('MOODLE_INTERNAL') || die();

/**
* The trait used to provide a backwards compatibility for third-party plugins.
*
* @package mod_quiz
* @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
trait legacy_quizaccess_polyfill {

/**
* Export all user data for the specified user, for the specified quiz.
*
* @param \quiz $quiz The quiz being exported
* @param \stdClass $user The user to export data for
* @return \stdClass The data to be exported for this access rule.
*/
public static function export_quizaccess_user_data(\quiz $quiz, \stdClass $user) : \stdClass {
return static::_export_quizaccess_user_data($quiz, $user);
}

/**
* Delete all data for all users in the specified quiz.
*
* @param \quiz $quiz The quiz being deleted
*/
public static function delete_quizaccess_data_for_all_users_in_context(\quiz $quiz) {
static::_delete_quizaccess_data_for_all_users_in_context($quiz);
}

/**
* Delete all user data for the specified user, in the specified quiz.
*
* @param \quiz $quiz The quiz being deleted
* @param \stdClass $user The user to export data for
*/
public static function delete_quizaccess_data_for_user(\quiz $quiz, \stdClass $user) {
static::_delete_quizaccess_data_for_user($quiz, $user);
}
}
Loading

0 comments on commit 4c72998

Please sign in to comment.