DKZer.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <?php
  2. namespace Meramo\mrm_be;
  3. use \TYPO3\CMS\Core\Utility\GeneralUtility;
  4. use \TYPO3\CMS\Core\Database\ConnectionPool;
  5. use \TYPO3\CMS\Core\Database\Connection;
  6. class DKZer
  7. {
  8. private $connection;
  9. private $auth_token = null;
  10. private $fetched_data = null;
  11. function __construct(){
  12. $this->auth();
  13. }
  14. private function auth(){
  15. $url = "/auth";
  16. $data = array(
  17. 'usr' => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['usr'],
  18. 'pwd' => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['pwd']
  19. );
  20. $result = $this->sendRequest($url, $data);
  21. if($result["tok"]) $this->auth_token = $result["tok"];
  22. }
  23. private function sendRequest($url, $data){
  24. $url = $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['url'].$url;
  25. $data = json_encode($data);
  26. $ch = curl_init($url);
  27. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  28. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  29. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  30. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  31. 'Content-Type: application/json; charset=utf-8',
  32. 'Content-Length: ' . strlen($data))
  33. );
  34. $result = curl_exec($ch);
  35. if($result === FALSE) return null;
  36. return json_decode($result, TRUE);
  37. }
  38. private function log($msg, $isString = true){
  39. if(!$isString){
  40. $msg = json_encode($msg, JSON_PRETTY_PRINT);
  41. }
  42. file_put_contents('/var/www/html/typo3temp/debug.log', "--- DKZer ---".PHP_EOL.$msg.PHP_EOL, FILE_APPEND);
  43. }
  44. public function getSearchWords($codenrs) {
  45. $resultBerufe = $this->sendRequest(
  46. "/get/beruf",
  47. array(
  48. "tok" => $this->auth_token,
  49. "query" => array(
  50. "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
  51. "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
  52. ),
  53. "select" => "suchworte.name_technisch",
  54. )
  55. )
  56. ;
  57. $resultSystematik = $this->sendRequest(
  58. "/get/systematik",
  59. array(
  60. "tok" => $this->auth_token,
  61. "query" => array(
  62. "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
  63. "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
  64. ),
  65. "select" => "suchworte.name_technisch",
  66. )
  67. )
  68. ;
  69. if($resultBerufe === FALSE && $resultSystematik === FALSE) return null;
  70. $sws = array();
  71. if($resultSystematik)
  72. foreach($resultSystematik as $itm){
  73. foreach($itm["suchworte"] as $swo){
  74. $sws[] = $swo["name_technisch"];
  75. }
  76. }
  77. if($resultBerufe)
  78. foreach($resultBerufe as $itm){
  79. foreach($itm["suchworte"] as $swo){
  80. $sws[] = $swo["name_technisch"];
  81. }
  82. }
  83. $sws = array_unique($sws);
  84. return $sws;
  85. }
  86. public function getSearched($query){
  87. $result = $this->sendRequest(
  88. "/get/systematik",
  89. array(
  90. "tok" => $this->auth_token,
  91. "query" => array(
  92. "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
  93. "bezeichnung" => "***".$query
  94. ),
  95. "select" => "codenr suchworte bezeichnung"
  96. )
  97. )
  98. ;
  99. $result = array_merge($result, $this->sendRequest(
  100. "/get/beruf",
  101. array(
  102. "tok" => $this->auth_token,
  103. "query" => array(
  104. "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
  105. "bezeichnung" => "***".$query
  106. ),
  107. "select" => "codenr suchworte bezeichnung"
  108. )
  109. )
  110. );
  111. $ret = array();
  112. foreach($result as $itm){
  113. $ret[$itm['codenr']] = array('codenr' => $itm['codenr'], 'bezeichnung' => htmlspecialchars($itm['bezeichnung']), 'swcount' => sizeof($itm['suchworte']));
  114. }
  115. $keys = array_keys($ret);
  116. natsort($keys);
  117. $keys = array_values($keys);
  118. $ret2 = array();
  119. foreach($keys as $idx => $key){
  120. $ret2[] = $ret[$key];
  121. }
  122. return array("list" => array_values($ret2));
  123. }
  124. public function getLists($codenrs) {
  125. $resultBerufe = $this->sendRequest(
  126. "/get/beruf",
  127. array(
  128. "tok" => $this->auth_token,
  129. "query" => array(
  130. "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
  131. "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
  132. ),
  133. "select" => "bezeichnung codenr suchworte.name",
  134. )
  135. )
  136. ;
  137. $resultSystematik = $this->sendRequest(
  138. "/get/systematik",
  139. array(
  140. "tok" => $this->auth_token,
  141. "query" => array(
  142. "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
  143. "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
  144. ),
  145. "select" => "bezeichnung codenr suchworte.name",
  146. )
  147. )
  148. ;
  149. if($resultBerufe === FALSE && $resultSystematik === FALSE) return null;
  150. $sws = array();
  151. $berufe = array();
  152. if($resultSystematik)
  153. foreach($resultSystematik as $itm){
  154. $berufe[] = array( "codenr" => $itm["codenr"], "bezeichnung" => $itm["bezeichnung"] );
  155. foreach($itm["suchworte"] as $swo){
  156. $sws[] = $swo["name"];
  157. }
  158. }
  159. if($resultBerufe)
  160. foreach($resultBerufe as $itm){
  161. $berufe[] = array( "codenr" => $itm["codenr"], "bezeichnung" => $itm["bezeichnung"] );
  162. foreach($itm["suchworte"] as $swo){
  163. $sws[] = $swo["name"];
  164. }
  165. }
  166. $sws = array_unique($sws);
  167. return array("sws" => array_values($sws), "berufe" => array_values($berufe));
  168. }
  169. public function getBranch($path){
  170. $result = FALSE;
  171. if($path === "root")
  172. $result = $this->sendRequest(
  173. "/get/systematik",
  174. array(
  175. "tok" => $this->auth_token,
  176. "query" => array(
  177. "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
  178. '$expr' => array('$eq' => array(array('$strLenCP' => '$codenr'), 3))
  179. ),
  180. "select" => "codenr obercodenr suchworte bezeichnung"
  181. )
  182. )
  183. ;
  184. else {
  185. $result = $this->sendRequest(
  186. "/get/systematik",
  187. array(
  188. "tok" => $this->auth_token,
  189. "query" => array(
  190. "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
  191. "codenr" => "***^".$path."\\d$"
  192. ),
  193. "select" => "codenr obercodenr suchworte bezeichnung"
  194. )
  195. )
  196. ;
  197. $result = array_merge($result, $this->sendRequest(
  198. "/get/beruf",
  199. array(
  200. "tok" => $this->auth_token,
  201. "query" => array(
  202. "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
  203. "obercodenr" => $path
  204. ),
  205. "select" => "codenr obercodenr suchworte bezeichnung"
  206. )
  207. )
  208. );
  209. }
  210. $ret = array();
  211. foreach($result as $itm){
  212. $ret[$itm['codenr']] = array('codenr' => $itm['codenr'], 'obercodenr' => $itm['obercodenr'] ? $itm['obercodenr'] : $path, 'bezeichnung' => htmlspecialchars($itm['bezeichnung']), 'swcount' => sizeof($itm['suchworte']));
  213. }
  214. $keys = array_keys($ret);
  215. natsort($keys);
  216. $keys = array_values($keys);
  217. $ret2 = array();
  218. foreach($keys as $idx => $key){
  219. $ret2[] = $ret[$key];
  220. }
  221. return $ret2;
  222. }
  223. }