PageRenderTime 38ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 1ms

/modules/socolissimo/classes/SCFields.php

https://gitlab.com/ptisky/API_prestashop
PHP | 313 lines | 230 code | 19 blank | 64 comment | 13 complexity | 8bea6c8a704529e8f97072d504a95f20 MD5 | raw file
  1. <?php
  2. /**
  3. * 2007-2016 PrestaShop
  4. *
  5. * NOTICE OF LICENSE
  6. *
  7. * This source file is subject to the Academic Free License (AFL 3.0)
  8. * that is bundled with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://opensource.org/licenses/afl-3.0.php
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@prestashop.com so we can send you a copy immediately.
  14. *
  15. * DISCLAIMER
  16. *
  17. * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
  18. * versions in the future. If you wish to customize PrestaShop for your
  19. * needs please refer to http://www.prestashop.com for more information.
  20. *
  21. * @author PrestaShop SA <contact@prestashop.com> Quadra Informatique <modules@quadra-informatique.fr>
  22. * @copyright 2007-2016 PrestaShop SA
  23. * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
  24. * International Registered Trademark & Property of PrestaShop SA
  25. */
  26. require_once(dirname(__FILE__).'/SCError.php');
  27. /* Inherit of Socolissimo to have acces to the module method and objet model method */
  28. class SCFields extends SCError
  29. {
  30. /* Restriction*/
  31. const REQUIRED = 1;
  32. const NOT_REQUIRED = 2;
  33. const UNKNOWN = 3; /* Not specified on the documentation */
  34. const IGNORED = 4;
  35. const ALL = 5;
  36. /* Delivery type */
  37. const HOME_DELIVERY = 0;
  38. const RELAY_POINT = 1;
  39. const API_REQUEST = 2;
  40. public $context;
  41. /* List of the available restriction type */
  42. public $restriction_list = array(
  43. SCFields::REQUIRED,
  44. SCFields::NOT_REQUIRED,
  45. SCFields::UNKNOWN,
  46. SCFields::IGNORED,
  47. SCFields::ALL
  48. );
  49. /* List of the available delivery type */
  50. public $delivery_list = array(
  51. SCFields::HOME_DELIVERY => array('DOM', 'RDV'),
  52. SCFields::RELAY_POINT => array('BPR', 'A2P', 'MRL', 'CIT', 'ACP', 'CDI', 'CMT', 'BDP'),
  53. SCFields::API_REQUEST => array('API')
  54. );
  55. /* By default, use the home delivery */
  56. public $delivery_mode = SCFields::HOME_DELIVERY;
  57. /* Available returned fields for HOME_DELIVERY and RELAY POINT, fields ordered. */
  58. private $fields = array(
  59. SCFields::HOME_DELIVERY => array(
  60. 'PUDOFOID' => SCFields::REQUIRED,
  61. 'CENAME' => SCFields::REQUIRED,
  62. 'DYPREPARATIONTIME' => SCFields::REQUIRED,
  63. 'DYFORWARDINGCHARGES' => SCFields::REQUIRED,
  64. 'DYFORWARDINGCHARGESCMT' => SCFields::UNKNOWN,
  65. 'TRCLIENTNUMBER' => SCFields::UNKNOWN,
  66. 'TRORDERNUMBER' => SCFields::UNKNOWN,
  67. 'ORDERID' => SCFields::REQUIRED,
  68. 'CECIVILITY' => SCFields::REQUIRED,
  69. 'CEFIRSTNAME' => SCFields::REQUIRED,
  70. 'CECOMPANYNAME' => SCFields::NOT_REQUIRED,
  71. 'CEADRESS1' => SCFields::UNKNOWN,
  72. 'CEADRESS2' => SCFields::UNKNOWN,
  73. 'CEADRESS3' => SCFields::REQUIRED,
  74. 'CEADRESS4' => SCFields::UNKNOWN,
  75. 'CEZIPCODE' => SCFields::REQUIRED,
  76. 'CETOWN' => SCFields::REQUIRED,
  77. 'DELIVERYMODE' => SCFields::REQUIRED,
  78. 'CEDELIVERYINFORMATION' => SCFields::UNKNOWN,
  79. 'CEEMAIL' => SCFields::REQUIRED,
  80. 'CEPHONENUMBER' => SCFields::NOT_REQUIRED,
  81. 'CEDOORCODE1' => SCFields::UNKNOWN,
  82. 'CEDOORCODE2' => SCFields::UNKNOWN,
  83. 'CEENTRYPHONE' => SCFields::UNKNOWN,
  84. 'TRPARAMPLUS' => SCFields::UNKNOWN,
  85. 'TRADERCOMPANYNAME' => SCFields::UNKNOWN,
  86. 'ERRORCODE' => SCFields::UNKNOWN,
  87. /* Error required if specific error exist (handle it has not required for now) */
  88. 'ERR_CENAME' => SCFields::NOT_REQUIRED,
  89. 'ERR_CEFIRSTNAME' => SCFields::NOT_REQUIRED,
  90. 'ERR_CECOMPANYNAME' => SCFields::NOT_REQUIRED,
  91. 'ERR_CEADRESS1' => SCFields::NOT_REQUIRED,
  92. 'ERR_CEADRESS2' => SCFields::NOT_REQUIRED,
  93. 'ERR_CEADRESS3' => SCFields::NOT_REQUIRED,
  94. 'ERR_CEADRESS4' => SCFields::NOT_REQUIRED,
  95. 'ERR_CETOWN' => SCFields::NOT_REQUIRED,
  96. 'ERR_CEDOORCODE1' => SCFields::NOT_REQUIRED,
  97. 'ERR_CEDOORCODE2' => SCFields::NOT_REQUIRED,
  98. 'ERR_CEENTRYPHONE' => SCFields::NOT_REQUIRED,
  99. 'ERR_CEDELIVERYINFORMATION' => SCFields::NOT_REQUIRED,
  100. 'ERR_CEEMAIL' => SCFields::NOT_REQUIRED,
  101. 'ERR_CEPHONENUMBER' => SCFields::NOT_REQUIRED,
  102. 'ERR_TRCLIENTNUMBER' => SCFields::NOT_REQUIRED,
  103. 'ERR_TRORDERNUMBER' => SCFields::NOT_REQUIRED,
  104. 'ERR_TRPARAMPLUS' => SCFields::NOT_REQUIRED,
  105. 'ERR_CECIVILITY' => SCFields::NOT_REQUIRED,
  106. 'ERR_DYWEIGHT' => SCFields::NOT_REQUIRED,
  107. 'ERR_DYPREPARATIONTIME' => SCFields::NOT_REQUIRED,
  108. 'TRRETURNURLKO' => SCFields::REQUIRED,
  109. 'CHARSET' => SCFields::NOT_REQUIRED,
  110. 'CEPAYS' => SCFields::NOT_REQUIRED,
  111. 'TRINTER' => SCFields::NOT_REQUIRED,
  112. 'CELANG' => SCFields::NOT_REQUIRED,
  113. 'NUMVERSION' => SCFields::IGNORED,
  114. 'SIGNATURE' => SCFields::IGNORED
  115. ),
  116. SCFields::RELAY_POINT => array(
  117. 'PUDOFOID' => SCFields::REQUIRED,
  118. 'CENAME' => SCFields::REQUIRED,
  119. 'DYPREPARATIONTIME' => SCFields::REQUIRED,
  120. 'DYFORWARDINGCHARGES' => SCFields::REQUIRED,
  121. 'DYFORWARDINGCHARGESCMT' => SCFields::UNKNOWN,
  122. 'TRCLIENTNUMBER' => SCFields::UNKNOWN,
  123. 'TRORDERNUMBER' => SCFields::UNKNOWN,
  124. 'ORDERID' => SCFields::REQUIRED,
  125. 'CECIVILITY' => SCFields::REQUIRED,
  126. 'CEFIRSTNAME' => SCFields::REQUIRED,
  127. 'CECOMPANYNAME' => SCFields::NOT_REQUIRED,
  128. 'DELIVERYMODE' => SCFields::REQUIRED,
  129. 'PRID' => SCFields::REQUIRED,
  130. 'PRNAME' => SCFields::REQUIRED,
  131. 'PRCOMPLADRESS' => SCFields::UNKNOWN,
  132. 'PRADRESS1' => SCFields::REQUIRED,
  133. 'PRADRESS2' => SCFields::UNKNOWN,
  134. 'PRZIPCODE' => SCFields::REQUIRED,
  135. 'PRTOWN' => SCFields::REQUIRED,
  136. 'LOTACHEMINEMENT' => SCFields::UNKNOWN,
  137. 'DISTRIBUTIONSORT' => SCFields::UNKNOWN,
  138. 'VERSIONPLANTRI' => SCFields::UNKNOWN,
  139. 'CEEMAIL' => SCFields::REQUIRED,
  140. 'CEPHONENUMBER' => SCFields::REQUIRED,
  141. 'TRPARAMPLUS' => SCFields::UNKNOWN,
  142. 'TRADERCOMPANYNAME' => SCFields::UNKNOWN,
  143. 'ERRORCODE' => SCFields::UNKNOWN,
  144. /* Error required if specific error exist (handle it has not required for now) */
  145. 'ERR_CENAME' => SCFields::NOT_REQUIRED,
  146. 'ERR_CEFIRSTNAME' => SCFields::NOT_REQUIRED,
  147. 'ERR_CECOMPANYNAME' => SCFields::NOT_REQUIRED,
  148. 'ERR_CEADRESS1' => SCFields::NOT_REQUIRED,
  149. 'ERR_CEADRESS2' => SCFields::NOT_REQUIRED,
  150. 'ERR_CEADRESS3' => SCFields::NOT_REQUIRED,
  151. 'ERR_CEADRESS4' => SCFields::NOT_REQUIRED,
  152. 'ERR_CETOWN' => SCFields::NOT_REQUIRED,
  153. 'ERR_CEDOORCODE1' => SCFields::NOT_REQUIRED,
  154. 'ERR_CEDOORCODE2' => SCFields::NOT_REQUIRED,
  155. 'ERR_CEENTRYPHONE' => SCFields::NOT_REQUIRED,
  156. 'ERR_CEDELIVERYINFORMATION' => SCFields::NOT_REQUIRED,
  157. 'ERR_CEEMAIL' => SCFields::NOT_REQUIRED,
  158. 'ERR_CEPHONENUMBER' => SCFields::NOT_REQUIRED,
  159. 'ERR_TRCLIENTNUMBER' => SCFields::NOT_REQUIRED,
  160. 'ERR_TRORDERNUMBER' => SCFields::NOT_REQUIRED,
  161. 'ERR_TRPARAMPLUS' => SCFields::NOT_REQUIRED,
  162. 'ERR_CECIVILITY' => SCFields::NOT_REQUIRED,
  163. 'ERR_DYWEIGHT' => SCFields::NOT_REQUIRED,
  164. 'ERR_DYPREPARATIONTIME' => SCFields::NOT_REQUIRED,
  165. 'TRRETURNURLKO' => SCFields::REQUIRED,
  166. 'CHARSET' => SCFields::NOT_REQUIRED,
  167. 'CEPAYS' => SCFields::NOT_REQUIRED,
  168. 'TRINTER' => SCFields::NOT_REQUIRED,
  169. 'CELANG' => SCFields::NOT_REQUIRED,
  170. 'PRPAYS' => SCFields::NOT_REQUIRED,
  171. 'CODERESEAU' => SCFields::NOT_REQUIRED,
  172. 'NUMVERSION' => SCFields::IGNORED,
  173. 'SIGNATURE' => SCFields::IGNORED,
  174. 'ERR_CHARSET' => SCFields::NOT_REQUIRED,
  175. ),
  176. SCFields::API_REQUEST => array(
  177. 'pudoFOId' => SCFields::REQUIRED,
  178. 'ceName' => SCFields::NOT_REQUIRED,
  179. 'dyPreparationTime' => SCFields::NOT_REQUIRED,
  180. 'dyForwardingCharges' => SCFields::REQUIRED,
  181. 'dyForwardingChargesCMT' => SCFields::NOT_REQUIRED,
  182. 'trClientNumber' => SCFields::NOT_REQUIRED,
  183. 'trOrderNumber' => SCFields::NOT_REQUIRED,
  184. 'orderId' => SCFields::REQUIRED,
  185. 'numVersion' => SCFields::REQUIRED,
  186. 'ceCivility' => SCFields::NOT_REQUIRED,
  187. 'ceFirstName' => SCFields::NOT_REQUIRED,
  188. 'ceCompanyName' => SCFields::NOT_REQUIRED,
  189. 'ceAdress1' => SCFields::NOT_REQUIRED,
  190. 'ceAdress2' => SCFields::NOT_REQUIRED,
  191. 'ceAdress3' => SCFields::NOT_REQUIRED,
  192. 'ceAdress4' => SCFields::NOT_REQUIRED,
  193. 'ceZipCode' => SCFields::NOT_REQUIRED,
  194. 'ceTown' => SCFields::NOT_REQUIRED,
  195. 'ceEntryPhone' => SCFields::NOT_REQUIRED,
  196. 'ceDeliveryInformation' => SCFields::NOT_REQUIRED,
  197. 'ceEmail' => SCFields::NOT_REQUIRED,
  198. 'cePhoneNumber' => SCFields::NOT_REQUIRED,
  199. 'ceDoorCode1' => SCFields::NOT_REQUIRED,
  200. 'ceDoorCode2' => SCFields::NOT_REQUIRED,
  201. 'dyWeight' => SCFields::NOT_REQUIRED,
  202. 'trFirstOrder' => SCFields::NOT_REQUIRED,
  203. 'trParamPlus' => SCFields::NOT_REQUIRED,
  204. 'trReturnUrlKo' => SCFields::REQUIRED,
  205. 'trReturnUrlOk' => SCFields::NOT_REQUIRED,
  206. 'CHARSET' => SCFields::NOT_REQUIRED,
  207. 'cePays' => SCFields::NOT_REQUIRED,
  208. 'trInter' => SCFields::NOT_REQUIRED,
  209. 'ceLang' => SCFields::NOT_REQUIRED,
  210. )
  211. );
  212. public function __construct($delivery = 'DOM')
  213. {
  214. parent::__construct();
  215. include dirname(__FILE__).'/../backward_compatibility/backward.php';
  216. $this->setDeliveryMode($delivery);
  217. }
  218. /**
  219. * Check if the field exist for Socolissimp
  220. *
  221. * @param $name
  222. * @return bool
  223. */
  224. public function isAvailableFields($name)
  225. {
  226. return array_key_exists(Tools::strtoupper(trim($name)), $this->fields[$this->delivery_mode]);
  227. }
  228. /**
  229. * Get field for a given restriction
  230. *
  231. * @param int $type
  232. * @return mixed
  233. */
  234. public function getFields($restriction = SCFields::ALL)
  235. {
  236. $tab = array();
  237. if (in_array($restriction, $this->restriction_list))
  238. foreach ($this->fields[$this->delivery_mode] as $key => $value)
  239. if ($value == $restriction || $restriction == SCFields::ALL)
  240. $tab[] = $key;
  241. return $tab;
  242. }
  243. /**
  244. * Check if the fields is required
  245. *
  246. * @param $name
  247. * @return bool
  248. */
  249. public function isRequireField($name)
  250. {
  251. return (in_array(Tools::strtoupper($name), $this->fields[$this->delivery_mode]) && $this->fields[$this->delivery_mode] == SCFields::REQUIRED);
  252. }
  253. /**
  254. * Set delivery mode
  255. *
  256. * @param $delivery
  257. * @return bool
  258. */
  259. public function setDeliveryMode($delivery)
  260. {
  261. if ($delivery)
  262. {
  263. foreach ($this->delivery_list as $delivery_mode => $list)
  264. {
  265. if (in_array($delivery, $list))
  266. {
  267. $this->delivery_mode = $delivery_mode;
  268. return true;
  269. }
  270. }
  271. }
  272. return false;
  273. }
  274. /**
  275. * Check if the returned key is proper to the generated one.
  276. *
  277. * @param $key
  278. * @param $params
  279. * @return bool
  280. */
  281. public function isCorrectSignKey($sign, $params)
  282. {
  283. $tab = array();
  284. foreach ($this->fields[$this->delivery_mode] as $key => $value)
  285. {
  286. if ($value == SCFields::IGNORED)
  287. continue;
  288. $key = trim($key);
  289. if (isset($params[$key]))
  290. $tab[$key] = $params[$key];
  291. }
  292. return $sign == $this->generateKey($tab);
  293. }
  294. }