diff --git a/Services/WebServices/ECS/classes/Course/class.ilECSCmsCourseMemberCommandQueueHandler.php b/Services/WebServices/ECS/classes/Course/class.ilECSCmsCourseMemberCommandQueueHandler.php index 284bd2e8fb57..94c75c81f0b2 100644 --- a/Services/WebServices/ECS/classes/Course/class.ilECSCmsCourseMemberCommandQueueHandler.php +++ b/Services/WebServices/ECS/classes/Course/class.ilECSCmsCourseMemberCommandQueueHandler.php @@ -225,12 +225,12 @@ protected function readAssignments($course, $course_member): array // the sequence number in the course ressource $sequence_number = (int) $pgroup->num; // find parallel group with by sequence number - $tmp_pgroup = $course->groups[$sequence_number]; + $tmp_pgroup = $course->groups[$sequence_number] ?? null; if (is_object($tmp_pgroup) && $tmp_pgroup->id !== '') { $this->log->debug('Found parallel group with id: ' . $tmp_pgroup->id . ': for sequence number: ' . $sequence_number); // @todo check hierarchy of roles - $assigned[$tmp_pgroup->id][$member->personID] = array( + $assigned[$pgroup->id][$member->personID] = array( 'id' => $member->personID, 'role' => $pgroup->role ); @@ -459,7 +459,7 @@ private function readCourseMember(ilECSSetting $server, $a_content_id) */ private function readCourse($course_member) { - $ecs_id = ilECSImportManager::getInstance()->lookupEContentIdByContentId( + $ecs_id = ilECSImportManager::getInstance()->lookupLatestEContentIdByContentId( $this->getServer()->getServerId(), $this->getMid(), $course_member->lectureID diff --git a/Services/WebServices/ECS/classes/class.ilECSImportManager.php b/Services/WebServices/ECS/classes/class.ilECSImportManager.php index 95757d05aa05..1dacf3e86cb8 100644 --- a/Services/WebServices/ECS/classes/class.ilECSImportManager.php +++ b/Services/WebServices/ECS/classes/class.ilECSImportManager.php @@ -121,6 +121,20 @@ public function lookupEContentIdByContentId($a_server_id, $a_mid, $a_content_id) return 0; } + public function lookupLatestEContentIdByContentId($a_server_id, $a_mid, $a_content_id): int + { + $query = 'SELECT * from ecs_import ' . + 'WHERE server_id = ' . $this->db->quote($a_server_id, 'integer') . ' ' . + 'AND mid = ' . $this->db->quote($a_mid, 'integer') . ' ' . + 'AND content_id = ' . $this->db->quote($a_content_id, 'text') . ' ' . + 'ORDER BY econtent_id DESC'; + $res = $this->db->query($query); + if ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) { + return (int) $row->econtent_id; + } + return 0; + } + /** * get all imported links *