Example #1
0
 /**
  * Trigger order status update when changing the status in the backend
  *
  * @param   string
  * @param   DataContainer
  *
  * @return  string
  * @link    http://www.contao.org/callbacks.html#save_callback
  */
 public function updateOrderStatus($varValue, $dc)
 {
     if ($dc->activeRecord && $dc->activeRecord->order_status != $varValue) {
         /** @var Order $objOrder */
         if (($objOrder = Order::findByPk($dc->id)) !== null) {
             if (TL_MODE == 'BE') {
                 if ($objOrder->pageId == 0) {
                     unset($GLOBALS['objPage']);
                 }
                 Frontend::loadOrderEnvironment($objOrder);
             }
             // Status update has been cancelled, do not update
             if (!$objOrder->updateOrderStatus($varValue)) {
                 return $dc->activeRecord->order_status;
             }
         }
     }
     return $varValue;
 }
Example #2
0
 /**
  * Run the controller
  */
 public function run()
 {
     $this->logRequest();
     $objMethod = null;
     try {
         $strMod = $this->getModule();
         $intId = $this->getModuleId();
         if ($strMod == '' || $intId == 0) {
             \System::log('Invalid post-sale request (param error): ' . \Environment::get('request'), __METHOD__, TL_ERROR);
             $objResponse = new Response('Bad Request', 400);
             $objResponse->send();
         }
         switch (strtolower($strMod)) {
             case 'pay':
                 $objMethod = Payment::findByPk($intId);
                 break;
             case 'ship':
                 $objMethod = Shipping::findByPk($intId);
                 break;
         }
         if (null === $objMethod) {
             \System::log('Invalid post-sale request (model not found): ' . \Environment::get('request'), __METHOD__, TL_ERROR);
             $objResponse = new Response('Not Found', 404);
             $objResponse->send();
         }
         \System::log('New post-sale request: ' . \Environment::get('request'), __METHOD__, TL_ACCESS);
         if (!$objMethod instanceof IsotopePostsale) {
             \System::log('Invalid post-sale request (interface not implemented): ' . \Environment::get('request'), __METHOD__, TL_ERROR);
             $objResponse = new Response('Not Implemented', 501);
             $objResponse->send();
         }
         /** @type Order $objOrder */
         $objOrder = $objMethod->getPostsaleOrder();
         if (null === $objOrder || !$objOrder instanceof IsotopeProductCollection) {
             \System::log(get_class($objMethod) . ' did not return a valid order', __METHOD__, TL_ERROR);
             $objResponse = new Response('Failed Dependency', 424);
             $objResponse->send();
         }
         Frontend::loadOrderEnvironment($objOrder);
         $objMethod->processPostsale($objOrder);
         $objResponse = new Response();
         $objResponse->send();
     } catch (\Exception $e) {
         \System::log(sprintf('Exception in post-sale request. See system/logs/isotope_postsale.log for details.', $e->getFile(), $e->getLine(), $e->getMessage()), __METHOD__, TL_ERROR);
         log_message(sprintf("Exception in post-sale request\n%s\n\n", $e->getTraceAsString()), 'isotope_postsale.log');
         $objResponse = new Response('Internal Server Error', 500);
         $objResponse->send();
     }
 }