/** * @maybe * Constructor */ public function __construct(ilECSSetting $server) { $this->server = $server; $this->mapping = ilECSNodeMappingSettings::getInstance(); include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSettings.php'; $this->mid = ilECSParticipantSettings::loookupCmsMid($this->getServer()->getServerId()); }
/** * Do delete */ protected function doDelete() { $this->initSettings($_REQUEST['server_id']); $this->settings->delete(); // Delete communities include_once './Services/WebServices/ECS/classes/class.ilECSCommunitiesCache.php'; ilECSCommunitiesCache::delete((int) $_REQUEST['server_id']); include_once './Services/WebServices/ECS/classes/class.ilECSDataMappingSettings.php'; ilECSDataMappingSettings::delete((int) $_REQUEST['server_id']); include_once './Services/WebServices/ECS/classes/class.ilECSEventQueueReader.php'; ilECSEventQueueReader::deleteServer((int) $_REQUEST['server_id']); include_once './Services/WebServices/ECS/classes/class.ilECSExport.php'; ilECSExport::deleteByServer((int) $_REQUEST['server_id']); include_once './Services/WebServices/ECS/classes/class.ilECSImport.php'; ilECSImport::deleteByServer((int) $_REQUEST['server_id']); include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSettings.php'; ilECSParticipantSettings::deleteByServer((int) $_REQUEST['server_id']); ilUtil::sendSuccess($this->lng->txt('ecs_setting_deleted'), true); $this->ctrl->redirect($this, 'overview'); }
/** * Set tabs * @global ilTabsGUI $ilTabs */ protected function setTabs() { global $ilTabs; include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSettings.php'; $ilTabs->clearTargets(); $ilTabs->setBackTarget($this->lng->txt('ecs_back_settings'), $this->ctrl->getParentReturn($this)); // Directories are only visible for import type campus managment. if (ilECSParticipantSettings::loookupCmsMid($this->getServer()->getServerId()) == $this->getMid()) { $ilTabs->addTab('ecs_dir_allocation', $this->lng->txt('ecs_dir_alloc'), $this->ctrl->getLinkTarget($this, 'dSettings')); } $ilTabs->addTab('ecs_crs_allocation', $this->lng->txt('ecs_crs_alloc'), $this->ctrl->getLinkTarget($this, 'cStart')); }
/** * Refresh participants */ protected function refreshParticipants() { include_once './Services/WebServices/ECS/classes/class.ilECSCommunityReader.php'; include_once './Services/WebServices/ECS/classes/class.ilECSServerSettings.php'; include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSettings.php'; include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSetting.php'; $servers = ilECSServerSettings::getInstance(); $servers->readInactiveServers(); foreach ($servers->getServers() as $server) { $creader = ilECSCommunityReader::getInstanceByServerId($server->getServerId()); // read community foreach (ilECSParticipantSettings::getAvailabeMids($server->getServerId()) as $mid) { if (!$creader->getParticipantByMID($mid)) { $GLOBALS['ilLog']->write(__METHOD__ . ': Deleting deprecated participant ' . $server->getServerId() . ' ' . $mid); $part = new ilECSParticipantSetting($server->getServerId(), $mid); $part->delete(); } } } ilUtil::sendSuccess($this->lng->txt('settings_saved'), TRUE); $this->ctrl->redirect($this, 'communities'); }
/** * Handle update event * * called by ilTaskScheduler * * @param ilECSSetting $a_server * @param int $a_econtent_id * @param array $a_mids * @return boolean */ public function handleUpdate(ilECSSetting $a_server, $a_econtent_id, array $a_mids) { global $ilLog; // get content details include_once './Services/WebServices/ECS/classes/class.ilECSEContentDetails.php'; $details = ilECSEContentDetails::getInstance($a_server->getServerId(), $a_econtent_id, $this->getECSObjectType()); if (!$details instanceof ilECSEContentDetails) { $this->handleDelete($a_server, $a_econtent_id); $ilLog->write(__METHOD__ . ': Handling delete of deprecated remote object. DONE'); return; } $ilLog->write(__METHOD__ . ': Receivers are ' . print_r($details->getReceivers(), true)); $ilLog->write(__METHOD__ . ': Senders are ' . print_r($details->getSenders(), true)); // check owner (sender mid) include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSettings.php'; if (!ilECSParticipantSettings::getInstanceByServerId($a_server->getServerId())->isImportAllowed($details->getSenders())) { $ilLog->write('Ignoring disabled participant. MID: ' . $details->getOwner()); return true; } // new mids include_once 'Services/WebServices/ECS/classes/class.ilECSImport.php'; include_once 'Services/WebServices/ECS/classes/class.ilECSConnector.php'; foreach (array_intersect($a_mids, $details->getReceivers()) as $mid) { try { $connector = new ilECSConnector($a_server); $res = $connector->getResource($this->getECSObjectType(), $a_econtent_id); if ($res->getHTTPCode() == ilECSConnector::HTTP_CODE_NOT_FOUND) { continue; } $json = $res->getResult(); $GLOBALS['ilLog']->write(__METHOD__ . ': Received json: ' . print_r($json, true)); if (!is_object($json)) { // try as array (workaround for invalid content) $json = $json[0]; if (!is_object($json)) { throw new ilECSConnectorException('invalid json'); } } } catch (ilECSConnectorException $exc) { $ilLog->write(__METHOD__ . ': Error parsing result. ' . $exc->getMessage()); $ilLog->logStack(); return false; } // Update existing // Check receiver mid if ($obj_id = ilECSImport::_isImported($a_server->getServerId(), $a_econtent_id, $mid)) { $ilLog->write(__METHOD__ . ': Handling update for existing object'); $remote = ilObjectFactory::getInstanceByObjId($obj_id, false); if (!$remote instanceof ilRemoteObjectBase) { $ilLog->write(__METHOD__ . ': Cannot instantiate remote object. Got object type ' . $remote->getType()); continue; } $remote->updateFromECSContent($a_server, $json, $details->getMySender()); } else { $GLOBALS['ilLog']->write(__METHOD__ . ': my sender ' . $details->getMySender() . 'vs mid' . $mid); $ilLog->write(__METHOD__ . ': Handling create for non existing object'); $this->createFromECSEContent($a_server, $json, $details->getMySender()); // update import status $ilLog->write(__METHOD__ . ': Updating import status'); include_once './Services/WebServices/ECS/classes/class.ilECSImport.php'; $import = new ilECSImport($a_server->getServerId(), $this->getId()); $import->setEContentId($a_econtent_id); // Store receiver mid $import->setMID($mid); $import->save(); $ilLog->write(__METHOD__ . ': Sending notification'); $this->sendNewContentNotification($a_server->getServerId()); } } $ilLog->write(__METHOD__ . ': done'); return true; }
/** * Update ECS Export Settings * * Processes post data from addSettingstoForm() * to be used in ilObject->update() AFTER object data has been updated * * @return bool */ public function handleSettingsUpdate() { if (!$this->isActive()) { return true; } // Parse post data $mids = array(); foreach ((array) $_POST['ecs_sid'] as $sid_mid) { $tmp = explode('_', $sid_mid); $mids[$tmp[0]][] = $tmp[1]; } try { include_once './Services/WebServices/ECS/classes/class.ilECSCommunitiesCache.php'; include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSettings.php'; include_once './Services/WebServices/ECS/classes/class.ilECSSetting.php'; // Update for each server foreach (ilECSParticipantSettings::getExportServers() as $server_id) { $server = ilECSSetting::getInstanceByServerId($server_id); if ($server->isEnabled()) { // Export $export = true; if (!$_POST['ecs_export']) { $export = false; } if (!count($mids[$server_id])) { $export = false; } $this->handleSettingsForServer($server, $export, $mids[$server_id]); } } } catch (ilECSConnectorException $exc) { ilUtil::sendFailure('Error exporting to ECS server: ' . $exc->getMessage()); return false; } return true; }
/** * init handler */ private function init() { include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSettings.php'; $this->mid = ilECSParticipantSettings::loookupCmsMid($this->getServer()->getServerId()); }
/** * get enabled participants * * @access public * */ public function getEnabledParticipants() { include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSettings.php'; $ps = ilECSParticipantSettings::getInstanceByServerId($this->getServer()->getServerId()); $en = $ps->getEnabledParticipants(); foreach ($this->getCommunities() as $community) { foreach ($community->getParticipants() as $participant) { if (in_array($participant->getMid(), $en)) { $e_part[] = $participant; } } } return $e_part ? $e_part : array(); }