PageRenderTime 48ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/etka/api.php

https://gitlab.com/autodealer-catalog/api
PHP | 177 lines | 124 code | 11 blank | 42 comment | 1 complexity | 0d80b5ddaa99796d0a8397af962e73be MD5 | raw file
  1. <?php defined('LOGIN') or die('No direct script access.');
  2. /**
  3. * Класс с API и внутренними функциями для оригинального каталога ETKA
  4. * В каталог входят следующие марки: Audi, Volkswagen, Seat, Skoda
  5. */
  6. class ETKA extends A2D {
  7. /// Тип каталога, для АвтоДилер пока не указывается
  8. protected static $_type = "ETKA";
  9. /// Производим базовые настройки
  10. public function __construct(){
  11. parent::__construct();
  12. static::$catalogRoot = "/etka";
  13. static::setMark($this->rcv('mark'));
  14. /// Для "хлебных крошек", на какой каталог ссылаться при построении крошек
  15. /// Данным значениям (static::$arrActions) в helpers/breads.php сопоставляются последовательно параметрам из A2D::$aBreads
  16. static::$arrActions = ['mark','market','model','year','code','dir','type','group','subgroup','graphic'];
  17. /// Корневой каталог, откуда стартовать скрипты поиска для текущего каталога (используется в конструкторе формы поиска)
  18. static::$searchIFace = "etka";
  19. /// Массив для построение формы с поиском (опиание в главном README.MD)
  20. static::$searchTabs = [[
  21. 'id' => 1,
  22. 'alias' => 'vin',
  23. 'name' => 'VIN', /// В контексте "Укажите ..."
  24. 'tName' => 'Поиск по VIN',
  25. ],[
  26. 'id' => 2,
  27. 'alias' => 'detail',
  28. 'name' => 'номер детали', /// В контексте "Укажите ..."
  29. 'tName' => 'Поиск по номеру детали',
  30. ]];
  31. }
  32. /// Функция обработки результатов по поиску детали. Можно придумать что-то свое, тогда не забываем изменить код обработки
  33. public function searchETKATree($aResult,$number,$market){ /// Происходит перестроение массива с данными под наши нужды
  34. $aTree = [];
  35. $i = 0; foreach( $aResult AS $r ){ ++$i;
  36. /// Необходимые нам переменные из общей кучи
  37. $mark = $r->mark;
  38. $marketCode = $r->marketCode;
  39. $modelCode = $r->modelCode;
  40. $prod = $r->prod;
  41. $code = $r->code;
  42. $group = $r->group;
  43. $sgroup = $r->sgroup;
  44. $graphic = $r->graphic;
  45. /// Ссылка для перехода на страницу с иллюстрацией при клике по нужной модели
  46. $nextUrl = "/etka/illustration.php?mark={$mark}&market={$marketCode}&model={$modelCode}&year={$prod}&code={$code}&group={$group}&subgroup={$sgroup}&graphic={$graphic}";
  47. /// Добавим хэштэг для подсветки детали на иллюстрации
  48. $nextUrl = $nextUrl."#".$number;
  49. $marketName = $r->marketName;
  50. $modelName = $r->modelName;
  51. /// Как будет выглядит ссылка для пользователя aka анкор (текст ссылки)
  52. $_name = "{$r->groupName}";
  53. /// Собственно, построение массива
  54. $aTree[$mark]['name'] = ucfirst($mark);
  55. $aTree[$mark]['children'][$modelCode]['name'] = $modelName;
  56. $aTree[$mark]['children'][$modelCode]['children'][$prod]['name'] = "({$prod} - ".A2D::property($r,"endDate","...").")";
  57. $aTree[$mark]['children'][$modelCode]['children'][$prod]['children'][$i]['url'] = $nextUrl;
  58. $aTree[$mark]['children'][$modelCode]['children'][$prod]['children'][$i]['name'] = $_name;
  59. /// Если нет рынка в запросе, значит нет фильтрации и будут схожие модели по соседним рынкам
  60. if( !$market ){ /// Просто добавим рынок как дополнительное описание
  61. $aTree[$mark]['children'][$modelCode]['children'][$prod]['children'][$i]['desc'] = " - $marketName";
  62. }
  63. }
  64. return $aTree;
  65. }
  66. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  67. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  68. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  69. /// СТАНДАРТНЫЕ ФУНКЦИИ ДЛЯ ПОЛУЧЕНИЯ ДАННЫХ ///////////////////////////////////////////////////////////////////
  70. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  71. /// Получение марок, если нужна не зависимая точка входа (в примерах не рассматривается)
  72. public function getETKAMarks(){
  73. $body = "t=".static::$_type."&f=".__FUNCTION__.$this->_auth;
  74. $answer = $this->getAnswer($body);
  75. $r = json_decode($answer);
  76. return $r;
  77. }
  78. /// Получение рынков
  79. public function getETKAMarkets($mark){
  80. $body = "t=".static::$_type."&f=".__FUNCTION__.$this->_auth."&mark=$mark";
  81. $answer = $this->getAnswer($body);
  82. $r = json_decode($answer);
  83. return $r;
  84. }
  85. /// Модели выпускаемые для данного рынка
  86. public function getETKAModels($mark,$market){
  87. $body = "t=".static::$_type."&f=".__FUNCTION__.$this->_auth."&mark=$mark&market=$market";
  88. $answer = $this->getAnswer($body);
  89. $r = json_decode($answer);
  90. return $r;
  91. }
  92. /// Дата производства выбранной модели
  93. public function getETKAProduction($mark,$market,$model){
  94. $body = "t=".static::$_type."&f=".__FUNCTION__.$this->_auth."&mark=$mark&market=$market&model=$model";
  95. $answer = $this->getAnswer($body);
  96. $r = json_decode($answer);
  97. return $r;
  98. }
  99. /// Основные группы улов для выбранной модели
  100. public function getETKAGroups($mark,$market,$model,$prod,$cat,$dir){
  101. $body = "t=".static::$_type."&f=".__FUNCTION__.$this->_auth."&mark=$mark&market=$market&model=$model&prod=$prod&cat=$cat&dir=$dir";
  102. $answer = $this->getAnswer($body);
  103. $r = json_decode($answer);
  104. return $r;
  105. }
  106. /// Список деталей, входящих в узел/группу
  107. public function getETKASubGroups($mark,$market,$model,$prod,$cat,$dir,$group){
  108. $body = "t=".static::$_type."&f=".__FUNCTION__.$this->_auth."&mark=$mark&market=$market&model=$model&prod=$prod&cat=$cat&dir=$dir&group=$group";
  109. $answer = $this->getAnswer($body);
  110. $r = json_decode($answer);
  111. return $r;
  112. }
  113. /// Иллюстрация и список номенклатуры для выбранной детали
  114. public function getETKAIllustration($mark,$market,$model,$prod,$cat,$dir,$group,$sgroup,$detail,$zoom){
  115. $body = "t=".static::$_type."&f=".__FUNCTION__.
  116. $this->_auth."&mark=$mark&market=$market&model=$model&prod=$prod&cat=$cat&dir=$dir&group=$group&sgroup=$sgroup&detail=$detail&zoom=$zoom".
  117. "&uIP=".$this->uIP."&uAgent=".$this->uAgent.
  118. "";
  119. $answer = $this->getAnswer($body);
  120. $r = json_decode($answer);
  121. return $r;
  122. }
  123. /// Список оригинальных запчастей для сервисного обслуживания и расходных материалов
  124. public function getETKAServicesParts($mark,$market,$model,$prod,$cat,$dir,$fps){
  125. $body = "t=".static::$_type."&f=".__FUNCTION__.$this->_auth."&mark=$mark&market=$market&model=$model&prod=$prod&cat=$cat&dir=$dir&fps=$fps";
  126. $answer = $this->getAnswer($body);
  127. $r = json_decode($answer);
  128. return $r;
  129. }
  130. /// Список для выбранной категории из getETKAServicesParts
  131. public function getETKASPList($mark,$market,$model,$prod,$cat,$dir,$group,$sgroup){
  132. $body = "t=".static::$_type."&f=".__FUNCTION__.$this->_auth."&mark=$mark&market=$market&model=$model&prod=$prod&cat=$cat&dir=$dir&group=$group&sgroup=$sgroup";
  133. $answer = $this->getAnswer($body);
  134. $r = json_decode($answer);
  135. return $r;
  136. }
  137. /// Поиска детали
  138. public function searchETKANumber($number,$mark){
  139. $body = "t=".static::$_type."&f=".__FUNCTION__.$this->_auth."&number=$number&mark=$mark";
  140. $answer = $this->getAnswer($body);
  141. $r = json_decode($answer);
  142. return $r;
  143. }
  144. /**
  145. * Поиск по VIN происходит в два этапа:
  146. * 1. Получаем возможные модели с кратким списком характеристик
  147. * 2. По выбранной модели получаем подробное описание выбранной модели
  148. */
  149. /// Первый этап
  150. public function searchETKAVIN($vin){
  151. $body = "t=".static::$_type."&f=".__FUNCTION__.$this->_auth."&vin=$vin";
  152. $answer = $this->getAnswer($body);
  153. $r = json_decode($answer);
  154. return $r;
  155. }
  156. /// Второй этап
  157. public function getETKAVinInfo($vin,$vkbz){
  158. $body = "t=ETKA&f=".__FUNCTION__.$this->_auth."&vin=$vin&vkbz=$vkbz";
  159. $answer = $this->getAnswer($body);
  160. $r = json_decode($answer);
  161. return $r;
  162. }
  163. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  164. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  165. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  166. }