Source of file DataTestController.php
Size: 5,302 Bytes - Last Modified: 2021-12-24T06:45:37+00:00
/var/www/docs.ssmods.com/process/src/src/Controller/DataTestController.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 | <?php namespace Dynamic\FoxyStripe\Controller; use Dynamic\FoxyStripe\Model\FoxyCart; use Dynamic\FoxyStripe\Model\Order; use SilverStripe\Control\Controller; use SilverStripe\Control\Director; use SilverStripe\Core\Injector\Injector; use SilverStripe\Dev\DebugView; use SilverStripe\ORM\ArrayList; use SilverStripe\Security\Member; use SilverStripe\Security\PasswordEncryptor; use SilverStripe\View\ArrayData; /** * Class DataTestController * @package Dynamic\FoxyStripe\Controller */ class DataTestController extends Controller { /** * @var array */ private static $data = [ "TransactionDate" => "now", "OrderID" => "auto", "Email" => "auto", "Password" => "password", "OrderDetails" => [], ]; /** * @throws \SilverStripe\ORM\ValidationException */ public function index() { $rules = Director::config()->get('rules'); $rule = array_search(FoxyStripeController::class, $rules); $myURL = Director::absoluteBaseURL() . explode('//', $rule)[0]; $myKey = FoxyCart::getStoreKey(); $this->updateConfig(); $config = static::config()->get('data'); $config['OrderDetails'] = ArrayList::create($config['OrderDetails']); $xml = $this->renderWith('TestData', $config); $XMLOutput = $xml->RAW(); $XMLOutput_encrypted = \rc4crypt::encrypt($myKey, $XMLOutput); $XMLOutput_encrypted = urlencode($XMLOutput_encrypted); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $myURL); curl_setopt($ch, CURLOPT_POSTFIELDS, array("FoxyData" => $XMLOutput_encrypted)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $response = curl_exec($ch); $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); $configString = print_r(static::config()->get('data'), true); /** @var DebugView $view */ $view = Injector::inst()->create(DebugView::class); echo $view->renderHeader(); echo '<div class="info">'; echo "<h2>Config:</h2><pre>$configString</pre>"; if ($this->getRequest()->getVar('data')) { echo "<h2>Data:</h2><pre>{$xml->HTML()}</pre>"; } echo "<h2>Response:</h2><pre>$response</pre>"; echo '<p></p>'; echo '</div>'; echo $view->renderFooter(); } /** * */ private function updateConfig() { $data = static::config()->get('data'); $transactionDate = $data['TransactionDate']; static::config()->merge('data', [ 'TransactionDate' => strtotime($transactionDate), ]); $order_id = $data['OrderID']; if ($order_id === 'auto' || $order_id < 1) { $lastOrderID = Order::get()->sort('Order_ID')->last()->Order_ID; static::config()->merge('data', [ 'OrderID' => $lastOrderID + 1, ]); } $email = $data['Email']; if ($email === 'auto') { static::config()->merge('data', [ 'Email' => $this->generateEmail(), ]); } $orderDetails = $data['OrderDetails']; if (count($orderDetails) === 0) { static::config()->merge('data', [ 'OrderDetails' => [ $this->generateOrderDetail() ], ]); } if (!array_key_exists('Salt', $data)) { static::config()->merge('data', [ 'Salt' => 'faGgWXUTdZ7i42lpA6cljzKeGBeUwShBSNHECwsJmt', ]); } if (!array_key_exists('HashType', $data)) { static::config()->merge('data', [ 'HashType' => 'sha1_v2.4', ]); } $data = static::config()->get('data'); if (!array_key_exists('HashedPassword', $data)) { $encryptor = PasswordEncryptor::create_for_algorithm($data['HashType']); static::config()->merge('data', [ 'HashedPassword' => $encryptor->encrypt($data['Password'], $data['Salt']), ]); } } /** * @return string */ private function generateEmail() { $emails = Member::get()->filter([ 'Email:EndsWith' => '@example.com', ])->column('Email'); if ($emails && count($emails)) { $email = $emails[count($emails) - 1]; return preg_replace_callback( "|(\d+)|", function ($mathces) { return ++$mathces[1]; }, ); } return 'example0@example.com'; } /** * @return array */ private function generateOrderDetail() { return [ 'Title' => 'foo', 'Price' => 20.00, 'Quantity' => 1, 'Weight' => 0.1, 'DeliveryType' => 'shipped', 'CategoryDescription' => 'Default cateogry', 'CategoryCode' => 'DEFAULT', 'Options' => [ 'Name' => 'color', 'OptionValue' => 'blue', 'PriceMod' => '', 'WeightMod' => '', ], ]; } } |