/** * Create or renew the user edition lock in an instance of treasurehunt. * * @param int $treasurehuntid The identifier of treasure hunt. * @param int $userid The identifier of user who block the instance. * @return int The lock id. */ function treasurehunt_renew_edition_lock($treasurehuntid, $userid) { global $DB; $table = 'treasurehunt_locks'; $params = array('treasurehuntid' => $treasurehuntid, 'userid' => $userid); $time = time() + treasurehunt_get_setting_lock_time(); $lock = $DB->get_record($table, $params); if (!empty($lock)) { $DB->update_record($table, array('id' => $lock->id, 'lockedtill' => $time)); return $lock->id; } else { treasurehunt_delete_old_locks($treasurehuntid); return $DB->insert_record($table, array('treasurehuntid' => $treasurehuntid, 'userid' => $userid, 'lockedtill' => $time)); } }
list($course, $cm) = get_course_and_cm_from_cmid($cmid, 'treasurehunt'); $treasurehunt = $DB->get_record('treasurehunt', array('id' => $cm->instance), '*', MUST_EXIST); require_login($course, true, $cm); $context = context_module::instance($cm->id); $url = new moodle_url('/mod/treasurehunt/editstage.php', array('cmid' => $cmid)); if (!empty($id)) { $url->param('id', $id); } if (!empty($roadid)) { $url->param('roadid', $roadid); } $PAGE->set_url($url); require_capability('mod/treasurehunt:managetreasurehunt', $context); if (!treasurehunt_is_edition_loked($treasurehunt->id, $USER->id)) { $lockid = treasurehunt_renew_edition_lock($treasurehunt->id, $USER->id); $renewlocktime = (treasurehunt_get_setting_lock_time() - 5) * 1000; $PAGE->requires->js_call_amd('mod_treasurehunt/renewlock', 'renew_edition_lock', array($treasurehunt->id, $lockid, $renewlocktime)); if ($id) { // if entry is specified require_capability('mod/treasurehunt:editstage', $context); $title = get_string('editingstage', 'treasurehunt'); $sql = 'SELECT id,name,cluetext,cluetextformat,cluetexttrust,' . 'activitytoend,roadid,questiontext,questiontextformat,' . 'questiontexttrust,playstagewithoutmoving FROM {treasurehunt_stages} WHERE id=?'; $params = array($id); if (!($stage = $DB->get_record_sql($sql, $params))) { print_error('invalidentry'); } // Si existe la pregunta recojo las respuestas. if ($stage->questiontext !== '') { // Hago que se muestre la pregunta. $stage->addsimplequestion = optional_param('addsimplequestion', 1, PARAM_INT); $sqlanswers = 'SELECT a.id,a.answertext,a.answertextformat,a.answertexttrust,' . ' a.correct FROM {treasurehunt_answers} a INNER JOIN' . ' {treasurehunt_stages} r ON r.id=a.stageid WHERE r.id=?';