/** * Fetches all inbound messages for given accounts (normally triggered via cron) * @param TxttoolsAccount[] $txttoolsAccounts The accounts to check * @return MoodletxtInboundMessage[] Inbound messages found * @version 2015062901 * @since 2010090301 */ public function getInboundMessages($txttoolsAccounts = array()) { $responses = array(); $lastUpdate = get_config('moodletxt', 'Inbound_Last_Update'); foreach ($txttoolsAccounts as $account) { try { $requests = $this->XMLBuilder->buildInboundMessageRequest($account, 0, 'ALL', $lastUpdate); $response = $this->outboundConnector->sendData($requests, $account); $this->XMLParser->setTxttoolsAccountObject($account); // Needed to set destination account $responses = array_merge($responses, $this->XMLParser->parse($response)); } catch (Exception $ex) { file_put_contents('C:\\moodle.log', time() . ': cron inbound poll failed for account (' . $account->getUsername() . '@' . $account->getUrl() . ') -> ' . $ex->getMessage(), FILE_APPEND); } } set_config('Inbound_Last_Update', time(), 'moodletxt'); return $responses; }
$inPayload = required_param('x', PARAM_RAW); // Assuming we have the right params, set up for parsing $parser = new MoodletxtXMLParser(); $decrypter = new MoodletxtEncryption(); $sentMessagesDAO = new TxttoolsSentMessageDAO(); $receivedMessagesDAO = new TxttoolsReceivedMessageDAO(); $inboundFilterManager = new MoodletxtInboundFilterManager(); $key = get_config('moodletxt', 'EK'); $pushUsername = get_config('moodletxt', 'Push_Username'); $pushPassword = $decrypter->decrypt($key, get_config('moodletxt', 'Push_Password')); // Check credentials against those stored in Moodle if ($inPushUser === $pushUsername && $inPushPass === $pushPassword) { $parsedInboundMessages = array(); $parsedStatusUpdates = array(); try { $parsedObjects = $parser->parse($inPayload); } catch (Exception $ex) { // Invalid XML from remote system die; } if (is_array($parsedObjects)) { // Filter objects and save accordingly foreach ($parsedObjects as $parsedObject) { if ($parsedObject instanceof MoodletxtInboundMessage) { array_push($parsedInboundMessages, $parsedObject); } else { if ($parsedObject instanceof MoodletxtOutboundSMSStatus) { array_push($parsedStatusUpdates, $parsedObject); } } }