| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- <?php
- namespace Meramo\mrm_be;
- use \TYPO3\CMS\Core\Utility\GeneralUtility;
- use \TYPO3\CMS\Core\Database\ConnectionPool;
- use \TYPO3\CMS\Core\Database\Connection;
- class DKZer
- {
- private $connection;
- private $auth_token = null;
- private $fetched_data = null;
- function __construct(){
- $this->auth();
- }
- private function auth(){
- $url = "/auth";
- $data = array(
- 'usr' => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['usr'],
- 'pwd' => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['pwd']
- );
- $result = $this->sendRequest($url, $data);
- if($result["tok"]) $this->auth_token = $result["tok"];
- }
- private function sendRequest($url, $data){
- $url = $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['url'].$url;
- $data = json_encode($data);
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array(
- 'Content-Type: application/json; charset=utf-8',
- 'Content-Length: ' . strlen($data))
- );
- $result = curl_exec($ch);
- if($result === FALSE) return null;
- return json_decode($result, TRUE);
- }
- private function log($msg, $isString = true){
- if(!$isString){
- $msg = json_encode($msg, JSON_PRETTY_PRINT);
- }
- file_put_contents('/var/www/html/typo3temp/debug.log', "--- DKZer ---".PHP_EOL.$msg.PHP_EOL, FILE_APPEND);
- }
- public function getSearchWords($codenrs) {
- $resultBerufe = $this->sendRequest(
- "/get/beruf",
- array(
- "tok" => $this->auth_token,
- "query" => array(
- "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
- "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
- ),
- "select" => "suchworte.name_technisch",
- )
- )
- ;
- $resultSystematik = $this->sendRequest(
- "/get/systematik",
- array(
- "tok" => $this->auth_token,
- "query" => array(
- "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
- "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
- ),
- "select" => "suchworte.name_technisch",
- )
- )
- ;
- if($resultBerufe === FALSE && $resultSystematik === FALSE) return null;
- $sws = array();
- if($resultSystematik)
- foreach($resultSystematik as $itm){
- foreach($itm["suchworte"] as $swo){
- $sws[] = $swo["name_technisch"];
- }
- }
- if($resultBerufe)
- foreach($resultBerufe as $itm){
- foreach($itm["suchworte"] as $swo){
- $sws[] = $swo["name_technisch"];
- }
- }
- $sws = array_unique($sws);
- return $sws;
- }
- public function getSearched($query){
- $result = $this->sendRequest(
- "/get/systematik",
- array(
- "tok" => $this->auth_token,
- "query" => array(
- "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
- "bezeichnung" => "***".$query
- ),
- "select" => "codenr suchworte bezeichnung"
- )
- )
- ;
- $result = array_merge($result, $this->sendRequest(
- "/get/beruf",
- array(
- "tok" => $this->auth_token,
- "query" => array(
- "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
- "bezeichnung" => "***".$query
- ),
- "select" => "codenr suchworte bezeichnung"
- )
- )
- );
- $ret = array();
- foreach($result as $itm){
- $ret[$itm['codenr']] = array('codenr' => $itm['codenr'], 'bezeichnung' => htmlspecialchars($itm['bezeichnung']), 'swcount' => sizeof($itm['suchworte']));
- }
- $keys = array_keys($ret);
- natsort($keys);
- $keys = array_values($keys);
- $ret2 = array();
- foreach($keys as $idx => $key){
- $ret2[] = $ret[$key];
- }
- return array("list" => array_values($ret2));
- }
- public function getLists($codenrs) {
- $resultBerufe = $this->sendRequest(
- "/get/beruf",
- array(
- "tok" => $this->auth_token,
- "query" => array(
- "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
- "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
- ),
- "select" => "bezeichnung codenr suchworte.name",
- )
- )
- ;
- $resultSystematik = $this->sendRequest(
- "/get/systematik",
- array(
- "tok" => $this->auth_token,
- "query" => array(
- "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
- "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
- ),
- "select" => "bezeichnung codenr suchworte.name",
- )
- )
- ;
- if($resultBerufe === FALSE && $resultSystematik === FALSE) return null;
- $sws = array();
- $berufe = array();
- if($resultSystematik)
- foreach($resultSystematik as $itm){
- $berufe[] = array( "codenr" => $itm["codenr"], "bezeichnung" => $itm["bezeichnung"] );
- foreach($itm["suchworte"] as $swo){
- $sws[] = $swo["name"];
- }
- }
- if($resultBerufe)
- foreach($resultBerufe as $itm){
- $berufe[] = array( "codenr" => $itm["codenr"], "bezeichnung" => $itm["bezeichnung"] );
- foreach($itm["suchworte"] as $swo){
- $sws[] = $swo["name"];
- }
- }
- $sws = array_unique($sws);
- return array("sws" => array_values($sws), "berufe" => array_values($berufe));
- }
- public function getBranch($path){
- $result = FALSE;
- if($path === "root")
- $result = $this->sendRequest(
- "/get/systematik",
- array(
- "tok" => $this->auth_token,
- "query" => array(
- "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
- '$expr' => array('$eq' => array(array('$strLenCP' => '$codenr'), 3))
- ),
- "select" => "codenr obercodenr suchworte bezeichnung"
- )
- )
- ;
- else {
- $result = $this->sendRequest(
- "/get/systematik",
- array(
- "tok" => $this->auth_token,
- "query" => array(
- "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
- "codenr" => "***^".$path."\\d$"
- ),
- "select" => "codenr obercodenr suchworte bezeichnung"
- )
- )
- ;
- $result = array_merge($result, $this->sendRequest(
- "/get/beruf",
- array(
- "tok" => $this->auth_token,
- "query" => array(
- "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
- "obercodenr" => $path
- ),
- "select" => "codenr obercodenr suchworte bezeichnung"
- )
- )
- );
- }
- $ret = array();
- foreach($result as $itm){
- $ret[$itm['codenr']] = array('codenr' => $itm['codenr'], 'obercodenr' => $itm['obercodenr'] ? $itm['obercodenr'] : $path, 'bezeichnung' => htmlspecialchars($itm['bezeichnung']), 'swcount' => sizeof($itm['suchworte']));
- }
- $keys = array_keys($ret);
- natsort($keys);
- $keys = array_values($keys);
- $ret2 = array();
- foreach($keys as $idx => $key){
- $ret2[] = $ret[$key];
- }
- return $ret2;
- }
- }
|