Skip to content

Commit 14e0e5d

Browse files
stellargelaaczerzuh
authored andcommitted
EL-1194/dates
infotext bug fix
1 parent 2a35b36 commit 14e0e5d

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed

classes/dates.php

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<?php
2+
// This file is part of Moodle - http://moodle.org/
3+
//
4+
// Moodle is free software: you can redistribute it and/or modify
5+
// it under the terms of the GNU General Public License as published by
6+
// the Free Software Foundation, either version 3 of the License, or
7+
// (at your option) any later version.
8+
//
9+
// Moodle is distributed in the hope that it will be useful,
10+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
// GNU General Public License for more details.
13+
//
14+
// You should have received a copy of the GNU General Public License
15+
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
16+
17+
/**
18+
* Contains the class for fetching the important dates in mod_questionnaire for a given module instance and a user.
19+
*
20+
* @package mod_questionnaire
21+
* @copyright 2022 University of Vienna
22+
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23+
*/
24+
25+
declare(strict_types=1);
26+
27+
namespace mod_questionnaire;
28+
29+
use core\activity_dates;
30+
31+
/**
32+
* Class for fetching the important dates in mod_questionnaire for a given module instance and a user.
33+
*
34+
* @copyright 2022 University of Vienna
35+
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36+
*/
37+
class dates extends activity_dates {
38+
39+
/**
40+
* Returns a list of important dates in mod_questionnaire
41+
*
42+
* @return array
43+
*/
44+
protected function get_dates(): array {
45+
global $DB;
46+
47+
$timeopen = $this->cm->customdata['opendate'] ?? null;
48+
$timeclose = $this->cm->customdata['closedate'] ?? null;
49+
50+
$now = time();
51+
$dates = [];
52+
53+
if ($timeopen) {
54+
$openlabelid = $timeopen > $now ? 'activitydate:opens' : 'activitydate:opened';
55+
$dates[] = [
56+
'label' => get_string($openlabelid, 'core_course'),
57+
'timestamp' => (int) $timeopen,
58+
];
59+
}
60+
61+
if ($timeclose) {
62+
$closelabelid = $timeclose > $now ? 'activitydate:closes' : 'activitydate:closed';
63+
$dates[] = [
64+
'label' => get_string($closelabelid, 'core_course'),
65+
'timestamp' => (int) $timeclose,
66+
];
67+
}
68+
69+
return $dates;
70+
}
71+
}

lib.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,3 +1276,41 @@ function mod_questionnaire_coursemodule_edit_post_actions($data, $course) {
12761276

12771277
return $data;
12781278
}
1279+
1280+
/**
1281+
* Add a get_coursemodule_info function in case any questionnaire type wants to add 'extra' information
1282+
* for the course (see resource).
1283+
*
1284+
* Given a course_module object, this function returns any "extra" information that may be needed
1285+
* when printing this activity in a course listing. See get_array_of_activities() in course/lib.php.
1286+
*
1287+
* @param stdClass $coursemodule The coursemodule object (record).
1288+
* @return cached_cm_info An object on information that the courses
1289+
* will know about (most noticeably, an icon).
1290+
*/
1291+
function questionnaire_get_coursemodule_info($coursemodule) {
1292+
global $DB;
1293+
1294+
$dbparams = array('id'=>$coursemodule->instance);
1295+
if (! $questionnaire = $DB->get_record('questionnaire', $dbparams)) {
1296+
return false;
1297+
}
1298+
1299+
$result = new cached_cm_info();
1300+
$result->name = $questionnaire->name;
1301+
1302+
if ($coursemodule->showdescription) {
1303+
// Convert intro to html. Do not filter cached version, filters run at display time.
1304+
$result->content = format_module_intro('questionnaire', $questionnaire, $coursemodule->id, false);
1305+
}
1306+
1307+
// Populate some other values that can be used in calendar or on dashboard.
1308+
if ($questionnaire->opendate) {
1309+
$result->customdata['opendate'] = $questionnaire->opendate;
1310+
}
1311+
if ($questionnaire->closedate) {
1312+
$result->customdata['closedate'] = $questionnaire->closedate;
1313+
}
1314+
1315+
return $result;
1316+
}

0 commit comments

Comments
 (0)