Advertisement
Guest User

Untitled

a guest
Sep 20th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. <?php
  2. // ini_set("display_errors", 1);
  3. $errors = array();
  4. $data = array();
  5.  
  6. // Required fields
  7. $fields = array(
  8. 'family' => array('/^[\pL\pPd]+$/siu', 'Фамилия'),
  9. 'first-name' => array('/^[\pL\pPd]+$/siu', 'Имя'),
  10. 'phone' => array('/^.+$/siu', 'Телефон'),
  11. 'email' => array('/^[\pL\.\-\_]+\@[\pL\.\-\_]+\.[\pL]+$/siu', 'E-Mail'),
  12. 'cof_passportend' => array('/^(\d+)\-(\d+)\-(\d+)$/siu', 'Срок действия паспорта')
  13. );
  14.  
  15. foreach ($fields as $key => $rex) {
  16. $data[$key] = empty($_POST[$key]) ? '' : trim($_POST[$key]);
  17. if (empty($data[$key])) {
  18. $errors[$key] = 'Поле "'.$rex[1].'" не заполнено';
  19. continue;
  20. }
  21. if (preg_match($rex[0], $data[$key])) continue;
  22. $errors[$key] = 'Поле "'.$rex[1].'" заполнено некорректно';
  23. }
  24.  
  25. $data['phone'] = preg_replace("/[^0-9]/", "", $data['phone']);
  26.  
  27. $pe = new DateTime($data['cof_passportend'].' 00:00:00');
  28. $nw = new DateTime();
  29. if ($nw >= $pe) $errors['cof_passportend'] = 'Ваш паспорт просрочен';
  30.  
  31. $tvr = $modx->getObject('modTemplateVarResource', array(
  32. 'tmplvarid' => 11,
  33. 'contentid' => $modx->resource->get('id')
  34. ));
  35. if ($tvr) {
  36. $nw = new DateTime($tvr->get('value'));
  37. if ($nw >= $pe) $errors['cof_passportend'] = 'Ваш паспорт будет просрочен';
  38. }
  39.  
  40. // Errors
  41. if (!empty($errors)) return $AjaxForm->error('В форме содержатся ошибки!', $errors);
  42.  
  43. // Other fields
  44. $fields = array(
  45. 'surname', 'cof_country', 'cof_passport',
  46. 'cof_food_preferences', 'cof_boat_experience', 'cof_medical_info'
  47. );
  48.  
  49. foreach ($fields as $key) $data[$key] = strip_tags(empty($_POST[$key]) ? '' : trim($_POST[$key]));
  50.  
  51. // MiniShop
  52. $miniShop2 = $modx->getService(
  53. 'minishop2',
  54. 'miniShop2',
  55. MODX_CORE_PATH.'components/minishop2/model/minishop2/',
  56. $scriptProperties
  57. );
  58.  
  59. if (!($miniShop2 instanceof miniShop2)) return $AjaxForm->error('Ошибка сервиса магазина!');
  60. $scriptProperties['json_response'] = true;
  61. $miniShop2->initialize($modx->context->key, $scriptProperties);
  62.  
  63. // User
  64. $uid = $modx->user->isAuthenticated('web') ? $modx->user->getOne('Profile')->get('id') : 0;
  65.  
  66. // Fullname
  67. $fname = array();
  68. foreach (array('lastname', 'name', 'surname') as $k) {
  69. if (empty($data[$key])) continue;
  70. $fname[] = $data[$key];
  71. }
  72. $fname = implode(' ', $fname);
  73.  
  74. // Cart
  75. $miniShop2->cart->clean();
  76. $miniShop2->order->clean();
  77.  
  78. // Fields
  79. $miniShop2->order->add('user_id' , $uid);
  80. $miniShop2->order->add('receiver' , $fname);
  81. $miniShop2->order->add('phone' , $data['phone']);
  82. $miniShop2->order->add('email' , $data['email']);
  83. $miniShop2->order->add('delivery' , 2); // id метода доставки
  84. $miniShop2->order->add('payment' , 1); // id метода оплаты
  85.  
  86. // Process
  87. $res = $miniShop2->cart->add($modx->resource->get('id'), 1, $_POST['options']);
  88. $res = $miniShop2->order->submit();
  89. if ($res['success']) {
  90. $modx->sendRedirect($modx->makeUrl($modx->resource->get('id')));
  91. }
  92. return $AjaxForm->success('Форма успешно отправлена. Сейчас вы перейдете на страницу оплаты.');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement