/**
  * 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;
 }
Esempio n. 2
0
$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);
                }
            }
        }