/** * get singleton instance * Private access use * ilECSTaskScheduler::start() or * ilECSTaskScheduler::startTaskExecution * * @access private * @static * * @return ilECSTaskScheduler * */ public static function _getInstanceByServerId($a_server_id) { if (self::$instances[$a_server_id]) { return self::$instances[$a_server_id]; } include_once './Services/WebServices/ECS/classes/class.ilECSSetting.php'; return self::$instances[$a_server_id] = new ilECSTaskScheduler(ilECSSetting::getInstanceByServerId($a_server_id)); }
/** * Constructor * * @access public */ public function __construct($a_server_id) { global $ilLog, $ilDB; include_once 'Services/WebServices/ECS/classes/class.ilECSSetting.php'; $this->settings = ilECSSetting::getInstanceByServerId($a_server_id); $this->log = $ilLog; $this->db = $ilDB; $this->read(); }
/** * Constructor * @param ilObjectGUI $settingsContainer */ public function __construct($settingsContainer, $server_id, $mid) { global $lng, $ilCtrl; $this->container = $settingsContainer; $this->server = ilECSSetting::getInstanceByServerId($server_id); $this->mid = $mid; $this->lng = $lng; $this->lng->loadLanguageModule('ecs'); $this->ctrl = $ilCtrl; }
/** * Fill row * @staticvar int $counter * @param array $set */ public function fillRow($set) { global $ilCtrl; $ilCtrl->setParameter($this->getParentObject(), 'server_id', $set['server_id']); $ilCtrl->setParameterByClass('ilecsmappingsettingsgui', 'server_id', $set['server_id']); if ($set['active']) { $this->tpl->setVariable('IMAGE_OK', ilUtil::getImagePath('icon_ok.svg')); $this->tpl->setVariable('TXT_OK', $this->lng->txt('ecs_activated')); } else { $this->tpl->setVariable('IMAGE_OK', ilUtil::getImagePath('icon_not_ok.svg')); $this->tpl->setVariable('TXT_OK', $this->lng->txt('ecs_inactivated')); } $this->tpl->setVariable('VAL_TITLE', ilECSSetting::getInstanceByServerId($set['server_id'])->getTitle()); $this->tpl->setVariable('LINK_EDIT', $ilCtrl->getLinkTarget($this->getParentObject(), 'edit')); $this->tpl->setVariable('TXT_SRV_ADDR', $this->lng->txt('ecs_server_addr')); if (ilECSSetting::getInstanceByServerId($set['server_id'])->getServer()) { $this->tpl->setVariable('VAL_DESC', ilECSSetting::getInstanceByServerId($set['server_id'])->getServer()); } else { $this->tpl->setVariable('VAL_DESC', $this->lng->txt('ecs_not_configured')); } $dt = ilECSSetting::getInstanceByServerId($set['server_id'])->fetchCertificateExpiration(); if ($dt != NULL) { $this->tpl->setVariable('TXT_CERT_VALID', $this->lng->txt('ecs_cert_valid_until')); $now = new ilDateTime(time(), IL_CAL_UNIX); $now->increment(IL_CAL_MONTH, 2); if (ilDateTime::_before($dt, $now)) { $this->tpl->setCurrentBlock('invalid'); $this->tpl->setVariable('VAL_ICERT', ilDatePresentation::formatDate($dt)); $this->tpl->parseCurrentBlock(); } else { $this->tpl->setCurrentBlock('valid'); $this->tpl->setVariable('VAL_VCERT', ilDatePresentation::formatDate($dt)); $this->tpl->parseCurrentBlock(); } } // Actions include_once './Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php'; $list = new ilAdvancedSelectionListGUI(); $list->setSelectionHeaderClass('small'); $list->setItemLinkClass('small'); $list->setId('actl_' . $set['server_id']); $list->setListTitle($this->lng->txt('actions')); if (ilECSSetting::getInstanceByServerId($set['server_id'])->isEnabled()) { $list->addItem($this->lng->txt('ecs_deactivate'), '', $ilCtrl->getLinkTarget($this->getParentObject(), 'deactivate')); } else { $list->addItem($this->lng->txt('ecs_activate'), '', $ilCtrl->getLinkTarget($this->getParentObject(), 'activate')); } $list->addItem($this->lng->txt('edit'), '', $ilCtrl->getLinkTarget($this->getParentObject(), 'edit')); $list->addItem($this->lng->txt('copy'), '', $ilCtrl->getLinkTarget($this->getParentObject(), 'cp')); $list->addItem($this->lng->txt('delete'), '', $ilCtrl->getLinkTarget($this->getParentObject(), 'delete')); $this->tpl->setVariable('ACTIONS', $list->getHTML()); $ilCtrl->clearParameters($this->getParentObject()); }
/** * get matching category * * @param object $econtent ilECSEcontent * @return * @static */ public static function getMatchingCategory($a_server_id, $a_matchable_content) { global $ilLog; if (is_null(self::$cached_active_rules)) { self::$cached_active_rules = self::getActiveRules(); } foreach (self::$cached_active_rules as $rule) { if ($rule->matches($a_matchable_content)) { $ilLog->write(__METHOD__ . ': Found assignment for field type: ' . $rule->getFieldName()); return $rule->getContainerId(); } $ilLog->write(__METHOD__ . ': Category assignment failed for field: ' . $rule->getFieldName()); } // Return default container $ilLog->write(__METHOD__ . ': Using default container'); return ilECSSetting::getInstanceByServerId($a_server_id)->getImportId(); }
/** * Handle an event in a listener. * * @param string $a_component component, e.g. "Modules/Forum" or "Services/User" * @param string $a_event event e.g. "createUser", "updateUser", "deleteUser", ... * @param array $a_parameter parameter array (assoc), array("name" => ..., "phone_office" => ...) */ static function handleEvent($a_component, $a_event, $a_parameter) { global $ilLog; $ilLog->write(__METHOD__ . ': Listening to event from: ' . $a_component); switch ($a_component) { case 'Services/User': switch ($a_event) { case 'afterCreation': $user = $a_parameter['user_obj']; $this->handleMembership($user); break; } break; case 'Modules/Course': switch ($a_event) { case 'addSubscriber': case 'addParticipant': if (ilObjUser::_lookupAuthMode($a_parameter['usr_id']) == 'ecs') { if (!($user = ilObjectFactory::getInstanceByObjId($a_parameter['usr_id']))) { $GLOBALS['ilLog']->write(__METHOD__ . ': No valid user found for usr_id ' . $a_parameter['usr_id']); return true; } include_once './Services/WebServices/ECS/classes/class.ilECSImport.php'; $server_id = ilECSImport::lookupServerId($a_parameter['usr_id']); $GLOBALS['ilLog']->write(__METHOD__ . ': Found server id: ' . $server_id); include_once 'Services/WebServices/ECS/classes/class.ilECSSetting.php'; $settings = ilECSSetting::getInstanceByServerId($server_id); $end = new ilDateTime(time(), IL_CAL_UNIX); $end->increment(IL_CAL_MONTH, $settings->getDuration()); if ($user->getTimeLimitUntil() < $end->get(IL_CAL_UNIX)) { $user->setTimeLimitUntil($end->get(IL_CAL_UNIX)); $user->update(); } self::_sendNotification($settings, $user); unset($user); } break; } break; } }
/** * Read trees from ecs * * @throws ilECSConnectorException */ public function read() { $GLOBALS['ilLog']->write(__METHOD__ . ': Begin read'); try { include_once './Services/WebServices/ECS/classes/Tree/class.ilECSDirectoryTreeConnector.php'; $dir_reader = new ilECSDirectoryTreeConnector(ilECSSetting::getInstanceByServerId($this->server_id)); $trees = $dir_reader->getDirectoryTrees(); $GLOBALS['ilLog']->write(__METHOD__ . ' ' . print_r($trees, true)); if ($trees instanceof ilECSUriList) { foreach ((array) $trees->getLinkIds() as $tree_id) { include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php'; include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTree.php'; if (!ilECSCmsData::treeExists($this->server_id, $this->mid, $tree_id)) { $result = $dir_reader->getDirectoryTree($tree_id); $this->storeTree($tree_id, $result->getResult()); } } } } catch (ilECSConnectorException $e) { throw $e; } }
/** * Get data from server * * @param int $a_server_id * @param int $a_econtent_id * @param string $a_resource_type * @return ilECSEContentDetails */ public static function getInstance($a_server_id, $a_econtent_id, $a_resource_type) { global $ilLog; try { include_once './Services/WebServices/ECS/classes/class.ilECSSetting.php'; include_once './Services/WebServices/ECS/classes/class.ilECSConnector.php'; $connector = new ilECSConnector(ilECSSetting::getInstanceByServerId($a_server_id)); $res = $connector->getResource($a_resource_type, $a_econtent_id, true); if ($res->getHTTPCode() == ilECSConnector::HTTP_CODE_NOT_FOUND) { return; } if (!is_object($res->getResult())) { $ilLog->write(__METHOD__ . ': Error parsing result. Expected result of type array.'); $ilLog->logStack(); throw new ilECSConnectorException('error parsing json'); } } catch (ilECSConnectorException $exc) { return; } include_once './Services/WebServices/ECS/classes/class.ilECSEContentDetails.php'; $details = new self(); $details->loadFromJSON($res->getResult()); return $details; }
/** * Init settings * * @access protected */ protected function initSettings($a_server_id = 1) { include_once 'Services/WebServices/ECS/classes/class.ilECSSetting.php'; $this->settings = ilECSSetting::getInstanceByServerId($a_server_id); }
/** * Get setting * @return ilECSSetting */ public function getServer() { return ilECSSetting::getInstanceByServerId($this->server_id); }
/** * send notifications about new EContent */ protected function sendNewContentNotification($a_server_id) { include_once 'Services/WebServices/ECS/classes/class.ilECSSetting.php'; $settings = ilECSSetting::getInstanceByServerId($a_server_id); if (!count($rcps = $settings->getEContentRecipients())) { return; } include_once './Services/Mail/classes/class.ilMail.php'; include_once './Services/Language/classes/class.ilLanguageFactory.php'; $lang = ilLanguageFactory::_getLanguage(); $lang->loadLanguageModule('ecs'); $mail = new ilMail(self::MAIL_SENDER); $message = $lang->txt('ecs_' . $this->getType() . '_created_body_a') . "\n\n"; $message .= $lang->txt('title') . ': ' . $this->getTitle() . "\n"; if (strlen($desc = $this->getDescription())) { $message .= $lang->txt('desc') . ': ' . $desc . "\n"; } include_once './Services/Link/classes/class.ilLink.php'; $href = ilLink::_getStaticLink($this->getRefId(), $this->getType(), true); $message .= $lang->txt("perma_link") . ': ' . $href . "\n\n"; $message .= ilMail::_getAutoGeneratedMessageString(); $mail->sendMail($settings->getEContentRecipientsAsString(), '', '', $lang->txt('ecs_new_econtent_subject'), $message, array(), array('normal')); }
/** * handle delete * Objects that are moved to the trash call ECS-Remove * * @see ilRepUtil * @param array $a_subbtree_nodes */ public static function _handleDelete(array $a_subbtree_nodes) { // active? include_once './Services/WebServices/ECS/classes/class.ilECSServerSettings.php'; if (!ilECSServerSettings::getInstance()->activeServerExists()) { return; } include_once './Services/WebServices/ECS/classes/class.ilECSSetting.php'; include_once './Services/WebServices/ECS/classes/class.ilECSExport.php'; $exported = ilECSExport::getExportedIds(); foreach ($a_subbtree_nodes as $node) { if (in_array($node['obj_id'], $exported)) { if ($content_obj = ilObjectFactory::getInstanceByRefId($node['child'], false)) { $settings = self::getInstanceByObject($content_obj); // Read export server ids foreach (ilECSExport::getExportServerIds($node['obj_id']) as $sid) { $server = ilECSSetting::getInstanceByServerId($sid); $export_settings = new ilECSExport($sid, $content_obj->getId()); $settings->doDelete($server, $export_settings); } } } } }
/** * Update enrolment status * @param type $a_obj_id * @param ilObjUser $user * @param type $a_status * @return boolean */ protected static function updateEnrolmentStatus($a_obj_id, ilObjUser $user, $a_status) { include_once './Services/WebServices/ECS/classes/class.ilECSRemoteUser.php'; $remote = ilECSRemoteUser::factory($user->getId()); if (!$remote instanceof ilECSRemoteUser) { return FALSE; } include_once './Services/WebServices/ECS/classes/Connectors/class.ilECSEnrolmentStatus.php'; $enrol = new ilECSEnrolmentStatus(); $enrol->setId('il_' . $GLOBALS['ilSetting']->get('inst_id', 0) . '_' . ilObject::_lookupType($a_obj_id) . '_' . $a_obj_id); $enrol->setPersonId($remote->getRemoteUserId()); $enrol->setPersonIdType(ilECSEnrolmentStatus::ID_UID); $enrol->setStatus($a_status); try { include_once './Services/WebServices/ECS/classes/Connectors/class.ilECSEnrolmentStatusConnector.php'; $con = new ilECSEnrolmentStatusConnector(ilECSSetting::getInstanceByServerId(1)); $con->addEnrolmentStatus($enrol, $remote->getMid()); } catch (ilECSConnectorException $e) { $GLOBALS['ilLog']->write(__METHOD__ . ': update enrolment status faild with message: ' . $e->getMessage()); return false; } }
/** * Read all actice servers * @global ilDB $ilDB */ private function readActiveServers() { global $ilDB; $query = 'SELECT server_id FROM ecs_server ' . 'WHERE active = ' . $ilDB->quote(1, 'integer') . ' ' . 'ORDER BY title '; $res = $ilDB->query($query); $this->servers = array(); while ($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) { $this->servers[$row->server_id] = ilECSSetting::getInstanceByServerId($row->server_id); } }
/** * Singleton Constructor * * @access private * */ private function __construct($a_server_id) { $this->settings = ilECSSetting::getInstanceByServerId($a_server_id); $this->read(); }
/** * Get instance by server id * @param int $a_server_id * @return ilECSCommunityReader */ public static function getInstanceByServerId($a_server_id) { if (isset(self::$instances[$a_server_id])) { return self::$instances[$a_server_id]; } return self::$instances[$a_server_id] = new ilECSCommunityReader(ilECSSetting::getInstanceByServerId($a_server_id)); }