|
@ -13,8 +13,11 @@ |
|
|
// |
|
|
// |
|
|
// You should have received a copy of the GNU General Public License |
|
|
// You should have received a copy of the GNU General Public License |
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
|
|
|
|
|
|
|
|
namespace mod_attendance\import; |
|
|
namespace mod_attendance\import; |
|
|
|
|
|
|
|
|
|
|
|
defined('MOODLE_INTERNAL') || die(); |
|
|
|
|
|
|
|
|
use csv_import_reader; |
|
|
use csv_import_reader; |
|
|
use mod_attendance_notifyqueue; |
|
|
use mod_attendance_notifyqueue; |
|
|
use mod_attendance_structure; |
|
|
use mod_attendance_structure; |
|
@ -28,8 +31,7 @@ use stdClass; |
|
|
* @copyright 2017 Catalyst IT |
|
|
* @copyright 2017 Catalyst IT |
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|
|
*/ |
|
|
*/ |
|
|
class sessions |
|
|
class sessions { |
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
/** @var string $error The errors message from reading the xml */ |
|
|
/** @var string $error The errors message from reading the xml */ |
|
|
protected $error = ''; |
|
|
protected $error = ''; |
|
@ -56,8 +58,7 @@ class sessions |
|
|
* |
|
|
* |
|
|
* @param string $msg |
|
|
* @param string $msg |
|
|
*/ |
|
|
*/ |
|
|
public function fail($msg) |
|
|
public function fail($msg) { |
|
|
{ |
|
|
|
|
|
$this->error = $msg; |
|
|
$this->error = $msg; |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
@ -67,8 +68,7 @@ class sessions |
|
|
* |
|
|
* |
|
|
* @return string The import id. |
|
|
* @return string The import id. |
|
|
*/ |
|
|
*/ |
|
|
public function get_importid() |
|
|
public function get_importid() { |
|
|
{ |
|
|
|
|
|
return $this->importid; |
|
|
return $this->importid; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -77,8 +77,7 @@ class sessions |
|
|
* |
|
|
* |
|
|
* @return array The headers (lang strings) |
|
|
* @return array The headers (lang strings) |
|
|
*/ |
|
|
*/ |
|
|
public static function list_required_headers() |
|
|
public static function list_required_headers() { |
|
|
{ |
|
|
|
|
|
return array( |
|
|
return array( |
|
|
get_string('course', 'attendance'), |
|
|
get_string('course', 'attendance'), |
|
|
get_string('groups', 'attendance'), |
|
|
get_string('groups', 'attendance'), |
|
@ -101,8 +100,7 @@ class sessions |
|
|
* |
|
|
* |
|
|
* @return array The found headers (names from import) |
|
|
* @return array The found headers (names from import) |
|
|
*/ |
|
|
*/ |
|
|
public function list_found_headers() |
|
|
public function list_found_headers() { |
|
|
{ |
|
|
|
|
|
return $this->foundheaders; |
|
|
return $this->foundheaders; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -112,8 +110,7 @@ class sessions |
|
|
* @param |
|
|
* @param |
|
|
* data array The mapping data. |
|
|
* data array The mapping data. |
|
|
*/ |
|
|
*/ |
|
|
protected function read_mapping_data($data) |
|
|
protected function read_mapping_data($data) { |
|
|
{ |
|
|
|
|
|
if ($data) { |
|
|
if ($data) { |
|
|
return array( |
|
|
return array( |
|
|
'course' => $data->header0, |
|
|
'course' => $data->header0, |
|
@ -158,8 +155,7 @@ class sessions |
|
|
* index The column index we want |
|
|
* index The column index we want |
|
|
* @return string The column data. |
|
|
* @return string The column data. |
|
|
*/ |
|
|
*/ |
|
|
protected function get_column_data($row, $index) |
|
|
protected function get_column_data($row, $index) { |
|
|
{ |
|
|
|
|
|
if ($index < 0) { |
|
|
if ($index < 0) { |
|
|
return ''; |
|
|
return ''; |
|
|
} |
|
|
} |
|
@ -182,11 +178,11 @@ class sessions |
|
|
* @param bool $useprogressbar |
|
|
* @param bool $useprogressbar |
|
|
* Whether progress bar should be displayed, to avoid html output on CLI. |
|
|
* Whether progress bar should be displayed, to avoid html output on CLI. |
|
|
*/ |
|
|
*/ |
|
|
public function __construct($text = null, $encoding = null, $delimiter = null, $importid = 0, $mappingdata = null, $useprogressbar = false) |
|
|
public function __construct($text = null, $encoding = null, $delimiter = null, $importid = 0, |
|
|
{ |
|
|
$mappingdata = null, $useprogressbar = false) { |
|
|
global $CFG; |
|
|
global $CFG; |
|
|
|
|
|
|
|
|
require_once ($CFG->libdir . '/csvlib.class.php'); |
|
|
require_once($CFG->libdir . '/csvlib.class.php'); |
|
|
|
|
|
|
|
|
$type = 'sessions'; |
|
|
$type = 'sessions'; |
|
|
|
|
|
|
|
@ -318,8 +314,7 @@ class sessions |
|
|
* |
|
|
* |
|
|
* @return array of errors from parsing the xml. |
|
|
* @return array of errors from parsing the xml. |
|
|
*/ |
|
|
*/ |
|
|
public function get_error() |
|
|
public function get_error() { |
|
|
{ |
|
|
|
|
|
return $this->error; |
|
|
return $this->error; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -328,12 +323,12 @@ class sessions |
|
|
* |
|
|
* |
|
|
* @return void |
|
|
* @return void |
|
|
*/ |
|
|
*/ |
|
|
public function import() |
|
|
public function import() { |
|
|
{ |
|
|
|
|
|
global $DB; |
|
|
global $DB; |
|
|
|
|
|
|
|
|
// Count of sessions added. |
|
|
// Count of sessions added. |
|
|
$okcount = 0; |
|
|
$okcount = 0; |
|
|
|
|
|
$groupids = array(); |
|
|
|
|
|
|
|
|
foreach ($this->sessions as $session) { |
|
|
foreach ($this->sessions as $session) { |
|
|
// Check course shortname matches. |
|
|
// Check course shortname matches. |
|
@ -354,7 +349,8 @@ class sessions |
|
|
foreach ($session->groups as $groupname) { |
|
|
foreach ($session->groups as $groupname) { |
|
|
$gid = groups_get_group_by_name($course->id, $groupname); |
|
|
$gid = groups_get_group_by_name($course->id, $groupname); |
|
|
if ($gid === false) { |
|
|
if ($gid === false) { |
|
|
\mod_attendance_notifyqueue::notify_problem(get_string('sessionunknowngroup', 'attendance', $groupname)); |
|
|
\mod_attendance_notifyqueue::notify_problem(get_string('sessionunknowngroup', |
|
|
|
|
|
'attendance', $groupname)); |
|
|
} else { |
|
|
} else { |
|
|
$groupids[] = $gid; |
|
|
$groupids[] = $gid; |
|
|
} |
|
|
} |
|
@ -368,7 +364,7 @@ class sessions |
|
|
), 'id', 'id'); |
|
|
), 'id', 'id'); |
|
|
|
|
|
|
|
|
foreach ($activities as $activity) { |
|
|
foreach ($activities as $activity) { |
|
|
// Build the session data |
|
|
// Build the session data. |
|
|
$cm = get_coursemodule_from_instance('attendance', $activity->id, $course->id); |
|
|
$cm = get_coursemodule_from_instance('attendance', $activity->id, $course->id); |
|
|
$att = new mod_attendance_structure($activity, $cm, $course); |
|
|
$att = new mod_attendance_structure($activity, $cm, $course); |
|
|
$sessions = attendance_construct_sessions_data_for_add($session, $att); |
|
|
$sessions = attendance_construct_sessions_data_for_add($session, $att); |
|
@ -391,7 +387,8 @@ class sessions |
|
|
} |
|
|
} |
|
|
$activities->close(); |
|
|
$activities->close(); |
|
|
} else { |
|
|
} else { |
|
|
mod_attendance_notifyqueue::notify_problem(get_string('error:coursehasnoattendance', 'attendance', $session->course)); |
|
|
mod_attendance_notifyqueue::notify_problem(get_string('error:coursehasnoattendance', |
|
|
|
|
|
'attendance', $session->course)); |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
mod_attendance_notifyqueue::notify_problem(get_string('error:coursenotfound', 'attendance', $session->course)); |
|
|
mod_attendance_notifyqueue::notify_problem(get_string('error:coursenotfound', 'attendance', $session->course)); |
|
@ -423,8 +420,7 @@ class sessions |
|
|
* @param stdClass $session |
|
|
* @param stdClass $session |
|
|
* @return boolean |
|
|
* @return boolean |
|
|
*/ |
|
|
*/ |
|
|
private function session_exists(stdClass $session) |
|
|
private function session_exists(stdClass $session) { |
|
|
{ |
|
|
|
|
|
global $DB; |
|
|
global $DB; |
|
|
|
|
|
|
|
|
$check = clone $session; |
|
|
$check = clone $session; |
|
@ -441,4 +437,3 @@ class sessions |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|