diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/ilias_interface/ConnectedIlias.php | 21 | ||||
| -rw-r--r-- | lib/ilias_interface/IliasSoap.php | 74 | ||||
| -rw-r--r-- | lib/ilias_interface/studip_referrer_7x.php | 4 | ||||
| -rw-r--r-- | lib/ilias_interface/studip_referrer_8x.php | 4 | ||||
| -rw-r--r-- | lib/modules/IliasInterfaceModule.php | 14 |
5 files changed, 110 insertions, 7 deletions
diff --git a/lib/ilias_interface/ConnectedIlias.php b/lib/ilias_interface/ConnectedIlias.php index 0dc1723..a917e1a 100644 --- a/lib/ilias_interface/ConnectedIlias.php +++ b/lib/ilias_interface/ConnectedIlias.php @@ -607,6 +607,27 @@ class ConnectedIlias } /** + * get connected studip courses list for given user + * + * @param string $user_id Stud.IP user id + * @return array course id array + */ + public function getConnectedCoursesForUser(string $user_id): array + { + $query = 'SELECT module_id, object_id + FROM object_contentmodules + JOIN seminar_user ON object_contentmodules.object_id = seminar_user.Seminar_id + WHERE seminar_user.user_id = ? + AND system_type = ? + AND module_type = ?'; + return DBManager::get()->fetchPairs($query, [ + $user_id, + $this->index, + 'crs' + ]); + } + + /** * get ILIAS path * * returns full path for given ILIAS ref ID diff --git a/lib/ilias_interface/IliasSoap.php b/lib/ilias_interface/IliasSoap.php index 585595b..9168195 100644 --- a/lib/ilias_interface/IliasSoap.php +++ b/lib/ilias_interface/IliasSoap.php @@ -28,7 +28,7 @@ class IliasSoap extends StudipSoapClient private $user_sid; private $user_type; private $soap_cache; - private $separator_string; + public $separator_string; private $caching_active = false; @@ -1170,8 +1170,7 @@ class IliasSoap extends StudipSoapClient * * returns repository-path to ilias-object * @access public - * @param string source_id reference-id - * @param string target_id reference-id + * @param string ref_id reference id * @return string result */ function getPath($ref_id) @@ -1202,8 +1201,7 @@ class IliasSoap extends StudipSoapClient * returns repository-path to ilias-object * * @access public - * @param string source_id reference-id - * @param string target_id reference-id + * @param string ref_id reference id * @return string result */ function getRawPath($ref_id) @@ -1680,6 +1678,72 @@ class IliasSoap extends StudipSoapClient } /** + * get courses for given user by status + * + * gets course array for given course data + * @access public + * @param string $user_id ilias user id + * @param string $status MEMBER = 1, TUTOR = 2, ADMIN = 4, OWNER = 8 + * @return array course array + */ + public function getCoursesForUserStatus(string $user_id, string $status): array + { + $courses = []; + $xmlrs = '<?xml version="1.0" encoding="utf-8"?> + <result> + <colspecs> + <colspec idx="0" name="user_id"/> + <colspec idx="1" name="status"/> + </colspecs> + <rows> + <row> + <column>'.$user_id.'</column> + <column>'.$status.'</column> + </row> + </rows> + </result>'; + $param = [ + 'sid' => $this->getSID(), + 'parameters' => $xmlrs + ]; + $result = $this->call('getCoursesForUser', $param); + + if ($result) { + $s = simplexml_load_string($result); + foreach ($s->rows->row as $row) { + $ref_id = (string)$row->column[0]; + $courses[$ref_id] = []; + $courses[$ref_id]['title'] = (string)$row->column[2]; + $s2 = simplexml_load_string((string)$row->column[1]); + $courses[$ref_id]['title'] = trim((string)$s2->MetaData->General->Title); + $courses[$ref_id]['description'] = trim((string)$s2->MetaData->General->Description); + $courses[$ref_id]['status_text'] = ''; + $courses[$ref_id]['status'] = $status; + switch ($status) { + case 1: + $courses[$ref_id]['status_text'] = _('Kursmitglied'); + break; + case 2: + $courses[$ref_id]['status_text'] = _('Kurstutor/-in'); + break; + case 4: + $courses[$ref_id]['status_text'] = _('Kursadministrator/-in'); + break; + } + if (isset($s2->Settings->Availability->Unlimited)) { + $courses[$ref_id]['online'] = 1; + } elseif (isset($s2->Settings->Availability->NotAvailable)) { + $courses[$ref_id]['online'] = 0; + } else { + $courses[$ref_id]['online'] = 1; + } + $courses[$ref_id]['availability'] = $s2->Settings->Availability; + } + } + return $courses; + } + + /** * check reference by title * * gets reference id by object id diff --git a/lib/ilias_interface/studip_referrer_7x.php b/lib/ilias_interface/studip_referrer_7x.php index e367569..fd62820 100644 --- a/lib/ilias_interface/studip_referrer_7x.php +++ b/lib/ilias_interface/studip_referrer_7x.php @@ -107,6 +107,10 @@ if(file_exists("./ilias.ini.php")){ case 'exc': $base_url = "ilias.php?baseClass=ilExerciseHandlerGUI"; break; + case 'cat': + case 'crs': + $base_url= "ilias.php?baseClass=ilrepositorygui&cmd=edit"; + break; case 'webr': $base_url = "ilias.php?baseClass=ilLinkResourceHandlerGUI"; break; diff --git a/lib/ilias_interface/studip_referrer_8x.php b/lib/ilias_interface/studip_referrer_8x.php index f7552af..fc9f66d 100644 --- a/lib/ilias_interface/studip_referrer_8x.php +++ b/lib/ilias_interface/studip_referrer_8x.php @@ -107,6 +107,10 @@ if(file_exists("./ilias.ini.php")){ case 'exc': $base_url = "ilias.php?baseClass=ilExerciseHandlerGUI"; break; + case 'cat': + case 'crs': + $base_url= "ilias.php?baseClass=ilrepositorygui&cmd=edit"; + break; case 'webr': $base_url = "ilias.php?baseClass=ilLinkResourceHandlerGUI"; break; diff --git a/lib/modules/IliasInterfaceModule.php b/lib/modules/IliasInterfaceModule.php index 2ab82ad..54a4916 100644 --- a/lib/modules/IliasInterfaceModule.php +++ b/lib/modules/IliasInterfaceModule.php @@ -19,10 +19,20 @@ class IliasInterfaceModule extends CorePlugin implements StudipModule, SystemPlu Navigation::addItem('/admin/config/ilias_interface', new Navigation(_('ILIAS-Schnittstelle'), 'dispatch.php/admin/ilias_interface')); } - if (Seminar_Perm::get()->have_perm('tutor') || (Seminar_Perm::get()->have_perm('autor') && array_key_exists('show_tools_page', $ilias_interface_config) && $ilias_interface_config['show_tools_page'])) { - $ilias = new Navigation(_('ILIAS'), 'dispatch.php/my_ilias_accounts'); + if (Seminar_Perm::get()->have_perm('tutor') || Seminar_Perm::get()->have_perm('autor')) { + $ilias = new Navigation(_('ILIAS'), 'dispatch.php/my_ilias_accounts/my_courses'); $ilias->setImage(Icon::create('ilias')); $ilias->setDescription(_('Schnittstelle zu ILIAS')); + $ilias->addSubNavigation( + 'my_courses', + new Navigation(_('Meine Kurse'), 'dispatch.php/my_ilias_accounts/my_courses') + ); + if (!empty($ilias_interface_config['show_tools_page'])) { + $ilias->addSubNavigation( + 'my_accounts', + new Navigation(_('Meine Lernobjekte und Accounts'), 'dispatch.php/my_ilias_accounts') + ); + } Navigation::addItem('/contents/my_ilias_accounts', $ilias); } } |
