aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ilias_interface/ConnectedIlias.php21
-rw-r--r--lib/ilias_interface/IliasSoap.php74
-rw-r--r--lib/ilias_interface/studip_referrer_7x.php4
-rw-r--r--lib/ilias_interface/studip_referrer_8x.php4
-rw-r--r--lib/modules/IliasInterfaceModule.php14
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);
}
}