示例#1
0
 /**
  * Accept input from the data source and queue things up 
  * 
  * @param QuickBooks_Driver $Driver
  * @return boolean
  */
 public function input($Driver)
 {
     if ($this->_mode != QUICKBOOKS_TRANSPORT_MODE_INPUT) {
         return false;
     }
     // Clean up magic quotes junk
     $this->_compat();
     $defaults = array('method' => QUICKBOOKS_TRANSPORT_METHOD_ENQUEUE, 'action' => $this->_action, 'ident' => null, 'replace' => true, 'priority' => 0, 'extra' => null, 'qbxml' => null, 'id' => null);
     $data = array_merge($defaults, $_POST);
     if (empty($data['id'])) {
         $data['id'] = QuickBooks_Utilities::generateGUID();
     }
     $data['extra'] = array('__extra' => $data['extra'], '__id' => $data['id'], '__method' => $data['method'], '__replace' => $data['replace'], '__priority' => $data['priority']);
     // They must pass *at least* a valid method *and* either an action, or a qbXML request
     $errno = QUICKBOOKS_TRANSPORT_ERROR_OK;
     $errmsg = null;
     if (!$data['action'] and !$data['qbxml']) {
         $errno = QUICKBOOKS_TRANSPORT_ERROR_MISSING;
         $errmsg = 'You must HTTP POST at least either an "action" parameter or a "qbxml" parameter.';
     } else {
         if (!is_numeric($data['priority'])) {
             $errno = QUICKBOOKS_TRANSPORT_ERROR_VALIDATE;
             $errmsg = 'The value "' . $data['priority'] . '" is invalid for the priority field.';
         }
     }
     if (!$errno) {
         $ok = false;
         switch ($data['method']) {
             case QUICKBOOKS_TRANSPORT_METHOD_ENQUEUE:
                 $ok = $Driver->queueEnqueue($this->_user, $data['action'], $data['ident'], (bool) $data['replace'], (int) $data['priority'], $data['extra'], $data['qbxml']);
                 break;
             case QUICKBOOKS_TRANSPORT_METHOD_EXISTS:
             case QUICKBOOKS_TRANSPORT_METHOD_RECUR:
             default:
                 $errmsg = 'Unimplemented method: ' . $data['method'];
                 break;
         }
     }
     $this->_ack($data, $ok, $data['id'], $errno, $errmsg);
     $this->_done = true;
     return $ok == true;
 }