From 4a1cb4f7ddc28910570aff50925bebd5b6e6787a Mon Sep 17 00:00:00 2001 From: jmalmsten-panopto Date: Wed, 22 Mar 2017 14:52:21 -0700 Subject: [PATCH] 2017032203 release code. (#90) --- lib/panopto_data.php | 30 ++++++++++++++++++++++++------ version.php | 2 +- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/lib/panopto_data.php b/lib/panopto_data.php index bbc64ca..f95962f 100644 --- a/lib/panopto_data.php +++ b/lib/panopto_data.php @@ -384,18 +384,38 @@ public function get_provisioning_info($getsharedinfo = true) { $mappedpanoptocourse = $this->get_course(); } - if (isset($mappedpanoptocourse)) { + $provisioninginfo->ExternalCourseID = $this->instancename . ':' . $this->moodlecourseid; + + if (isset($mappedpanoptocourse) && ($provisioninginfo->ExternalCourseID !== $mappedpanoptocourse->ExternalCourseID)) { $provisioninginfo->ExternalCourseID = $mappedpanoptocourse->ExternalCourseID; $namechunks = explode(':', $mappedpanoptocourse->DisplayName); // Display names generated by panopto are formatted like :, this assumes that format. // Hacky but there is not much else we can do until we move to provisioning by folder ID. - if (count($namechunks) === 2) { + + $chunkscount = count($namechunks); + if ($chunkscount === 2) { $provisioninginfo->shortname = $namechunks[0]; $provisioninginfo->longname = $namechunks[1]; + } else if ($chunkscount === 1) { + // This is a weird case I don't expect to happen. This should only occur if the user maps to a panopto folder that does not contain any colons. + $provisioninginfo->shortname = ''; + $provisioninginfo->longname = $namechunks[0]; } else { - $provisioninginfo->shortname = substr($mappedpanoptocourse->DisplayName, 0, 5); - $provisioninginfo->longname = $mappedpanoptocourse->DisplayName; + $provisioninginfo->shortname = $namechunks[0]; + $mappedlongname = ''; + + // If there are more than 2 chunks take the chunks after the first one and combine them into a longname. + // Panopto should recombine these into the original namechunk[0]:mappedlongname. Where mappedlongname = namechunk[1]:namechunk[2]:...:namechunk[n] + for ($i = 1; $i < count($namechunks); ++$i) { + $mappedlongname .= $namechunks[$i]; + + if ($i !== $chunkscount - 1) { + $mappedlongname .= ':'; + } + } + + $provisioninginfo->longname = $mappedlongname; } } else { $provisioninginfo->shortname = $DB->get_field( @@ -413,8 +433,6 @@ public function get_provisioning_info($getsharedinfo = true) { if (!isset($provisioninginfo->shortname) || empty($provisioninginfo->shortname)) { $provisioninginfo->shortname = substr($provisioninginfo->longname, 0, 5); } - - $provisioninginfo->ExternalCourseID = $this->instancename . ':' . $this->moodlecourseid; } $provisioninginfo->Server = $this->servername; diff --git a/version.php b/version.php index 93c6e8e..d530104 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ // Plugin version should normally be the same as the internal version. // If an admin wants to install with an older version number, however, set that here. -$plugin->version = 2017032000; +$plugin->version = 2017032203; // Requires this Moodle version - 2.7. $plugin->requires = 2014051200;