private function processEvent() { $dom = $this->dom; $headerNode = $dom->getElementsByTagName('SIF_Header')->item(0); $originalMsgId = $headerNode->getElementsByTagName('SIF_MsgId')->item(0)->nodeValue; $originalSourceId = $headerNode->getElementsByTagName('SIF_SourceId')->item(0)->nodeValue; $originalTimestamp = $headerNode->getElementsByTagName('SIF_Timestamp')->item(0)->nodeValue; $validSourceId = Agent::checkSourceId($originalSourceId); if (!$validSourceId) { RegisterError::invalidSourceId($agent->sourceId, $originalMsgId); } else { $agent = new Agent($originalSourceId); if ($agent->isRegistered()) { $eventObjectNode = $dom->getElementsByTagName('SIF_EventObject')->item(0); $objectName = $eventObjectNode->getAttribute('ObjectName'); $objectAction = $eventObjectNode->getAttribute('Action'); $objectAction = strtolower($objectAction); if (!DataObject::objectExists($objectName)) { ProvisionError::invalidObject($originalSourceId, $originalMsgId, $objectName); exit; } else { $allowed = $this->hasPermission($objectName, $objectAction, $agent->agentId); if ($allowed) { $provider = DataObject::isProvider($objectName, $agent->agentId); if ($provider) { $this->publishEvent($agent->agentId, $objectName, $objectAction, $_SESSION['ZONE_VERSION'], $dom->saveXml($headerNode)); $timestamp = Utility::createTimestamp(); $msgId = Utility::createMessageId(); $sifMessageNode = $dom->getElementsByTagName('SIF_Message')->item(0); XmlHelper::buildSuccessMessage($msgId, $timestamp, $originalSourceId, $originalMsgId, 0, $originalMsg = null, $desc = null); } else { ProvisionError::notProviderError($originalSourceId, $originalMsgId); } } else { switch ($objectAction) { case 'add': ProvisionError::invalidPermissionToPublishAdd($originalSourceId, $originalMsgId, $objectName); break; case 'change': ProvisionError::invalidPermissionToPublishChange($originalSourceId, $originalMsgId, $objectName); break; case 'delete': ProvisionError::invalidPermissionToPublishDelete($originalSourceId, $originalMsgId, $objectName); break; } //switch for error message } //allowed } //object exist } else { RegisterError::notRegisteredError($originalSourceId, $originalMsgId); } //not registered } //valid sourceId }
private function processPublishChangeObjects($objectNode) { $objects = $objectNode->getElementsByTagName('SIF_Object'); foreach ($objects as $object) { $objectName = $object->getAttribute('ObjectName'); $contexts = $object->getElementsByTagName('SIF_Context'); if (!DataObject::objectExists($objectName)) { ProvisionError::invalidObject($this->originalSourceId, $this->originalMsgId, $objectName); if (CODELEVEL != 3) { exit; } else { return false; } } else { if ($contexts->length != 0) { foreach ($contexts as $context) { $contextId = Context::getContextId($context->nodeValue); if (!DataObject::allowedToPublishChange($this->agent->agentId, $objectName, $contextId)) { ProvisionError::invalidPermissionToPublishChange($this->originalSourceId, $this->originalMsgId, $objectName); if (CODELEVEL != 3) { exit; } else { return false; } } else { $dataObject = new DataObject($objectName); $dataObject->contextId = $contextId; array_push($this->publishChangeObjects, $dataObject); } //check if allowed to publish change } } else { if (!DataObject::allowedToPublishChange($this->agent->agentId, $objectName)) { ProvisionError::invalidPermissionToPublishChange($this->originalSourceId, $this->originalMsgId, $objectName); if (CODELEVEL != 3) { exit; } else { return false; } } else { $dataObject = new DataObject($objectName); array_push($this->publishChangeObjects, $dataObject); } //check if allowed to publish change } //check if there are contexts } //check if object exist } //loop through objects }