/**
  * 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;
     }
 }
예제 #7
0
 /**
  * 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;
     }
 }
예제 #14
0
 /**
  * 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));
 }