src/CarCutter/ConfigManager.php line 272

Open in your IDE?
  1. <?php
  2. /**
  3.  * Carcutter Data Platform
  4.  * Configuration Manager
  5.  */
  6. namespace App\CarCutter;
  7. use League\Flysystem\FilesystemAdapter;
  8. use League\Flysystem\Ftp\FtpAdapter;
  9. use Pimcore\Model\DataObject\CustomerConfig;
  10. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnAutoGestion;
  11. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnBee2Link;
  12. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnFTPSettings;
  13. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnKeplerVO;
  14. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnPlanetVO;
  15. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnHomeNet;
  16. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnMaxDigital;
  17. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnDAT;
  18. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnProMax;
  19. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnDealerSearch;
  20. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnCarbase;
  21. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnWayke;
  22. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnFastback;
  23. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnAutoTelex;
  24. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnOpenFlex;
  25. use Pimcore\Model\DataObject\Fieldcollection\Data\ConnWebhook;
  26. class ConfigManager
  27. {
  28.     public static function loadConfigByName(string $name) : ?CustomerConfig
  29.     {
  30.         $list = new CustomerConfig\Listing();
  31.         $list->setCondition('name = :name and enabled = 1', [
  32.             'name' => $name
  33.         ]);
  34.         if($results $list->load()) {
  35.             return $results[0];
  36.         }
  37.         return null;
  38.     }
  39.     public static function loadConfigByToken(string $token) : ?CustomerConfig
  40.     {
  41.         $list = new CustomerConfig\Listing();
  42.         $list->setCondition('token = :token and enabled = 1', [
  43.             'token' => $token
  44.         ]);
  45.         if($results $list->load()) {
  46.             return $results[0];
  47.         }
  48.         return null;
  49.     }
  50.     public static function loadValidConfigs() : array
  51.     {
  52.         $list = new CustomerConfig\Listing();
  53.         $list->setCondition('enabled = 1');
  54.         return $list->load();
  55.     }
  56.     public static function getUploadAdapter(CustomerConfig $configstring $type ''bool $raw false) : mixed
  57.     {
  58.         return self::getAdapter($config, ['out''bi'], $type$raw);
  59.     }
  60.     
  61.     public static function getProMaxAdapter(CustomerConfig $config) : mixed
  62.     {
  63.         $availableConnections self::getConnections($configConnProMax::class, []);
  64.         if(count($availableConnections) > 0) {
  65.             return $availableConnections;
  66.         }
  67.         return null;
  68.     }
  69.     public static function getDealerCarSearchAdapter(CustomerConfig $config) : mixed
  70.     {
  71.         $availableConnections self::getConnections($configConnDealerSearch::class, []);
  72.         echo count($availableConnections)." DealerCarSearch Files found\n";
  73.         if(count($availableConnections) > 0) {
  74.             return $availableConnections;
  75.         }
  76.         return null;
  77.     }
  78.     public static function getDownloadAdapter(CustomerConfig $configstring $type ''bool $raw false) : ?FilesystemAdapter
  79.     {
  80.         return self::getAdapter($config, ['in''bi'], $type$raw);
  81.     }
  82.     public static function getBeelinkAdapter(CustomerConfig $config) : mixed
  83.     {
  84.         $availableConnections self::getConnections($configConnBee2Link::class, []);
  85.         if(count($availableConnections) > 0) {
  86.             return $availableConnections;
  87.         }
  88.         return null;
  89.     }
  90.     public static function getOpenFlexAdapter(CustomerConfig $config) : mixed
  91.     {
  92.         $availableConnections self::getConnections($configConnOpenFlex::class, []);
  93.         if(count($availableConnections) > 0) {
  94.             return $availableConnections;
  95.         }
  96.         return null;
  97.     }
  98.     
  99.     public static function getCarBaseAdapter(CustomerConfig $config) : mixed
  100.     {
  101.         $availableConnections self::getConnections($configConnCarbase::class, []);
  102.         if(count($availableConnections) > 0) {
  103.             return $availableConnections;
  104.         }
  105.         return null;
  106.     }
  107.     public static function getWebhookAdapter(CustomerConfig $config) : mixed
  108.     {
  109.         $availableConnections self::getConnections($configConnWebhook::class, []);
  110.         if(count($availableConnections) > 0) {
  111.             return $availableConnections;
  112.         }
  113.         return null;
  114.     }
  115.     public static function getFastbackAdapter(CustomerConfig $config) : mixed
  116.     {
  117.         $availableConnections self::getConnections($configConnFastback::class, []);
  118.         if(count($availableConnections) > 0) {
  119.             echo count($availableConnections)." Fastback connections found\n";
  120.             return $availableConnections;
  121.         }
  122.         return null;
  123.     }
  124.     public static function getWaykeAdapter(CustomerConfig $config) : mixed
  125.     {
  126.         $availableConnections self::getConnections($configConnWayke::class, []);
  127.         if(count($availableConnections) > 0) {
  128.             return $availableConnections;
  129.         }
  130.         return null;
  131.     }
  132.     public static function getDATAdapter(CustomerConfig $config) : mixed
  133.     {
  134.         $availableConnections self::getConnections($configConnDAT::class, []);
  135.         if(count($availableConnections) > 0) {
  136.             echo count($availableConnections)." DAT connections found\n";
  137.             return $availableConnections;
  138.         }
  139.         return null;
  140.     }
  141.     public static function getPlanetVoAdapter(CustomerConfig $config) : mixed
  142.     {
  143.         $availableConnections self::getConnections($configConnPlanetVO::class, []);
  144.         if(count($availableConnections) > 0)
  145.         {
  146.             echo count($availableConnections)." PVO connections found\n";
  147.             return $availableConnections;
  148.         }
  149.         return null;
  150.     }
  151.     public static function getAutoTelexAdapter(CustomerConfig $config) : mixed
  152.     {
  153.         $availableConnections self::getConnections($configConnAutoTelex::class, []);
  154.         if(count($availableConnections) > 0)
  155.         {
  156.             echo count($availableConnections)." AutoTelex connections found\n";
  157.             return $availableConnections;
  158.         }
  159.         return null;
  160.     }
  161.     public static function getKeplerVOAdapter(CustomerConfig $config) : ?ConnKeplerVO
  162.     {
  163.         $availableConnections self::getConnections($configConnKeplerVO::class, []);
  164.         if(count($availableConnections) > 0)
  165.         {
  166.             return array_pop($availableConnections);
  167.         }
  168.         return null;
  169.     }
  170.     public static function getHomeNetAdapter(CustomerConfig $config) : mixed
  171.     {
  172.         $availableConnections self::getConnections($configConnHomeNet::class, []);
  173.         if(count($availableConnections) > 0)
  174.         {
  175.             return $availableConnections;
  176.         }
  177.         //echo "no HomeNet connections found\n";
  178.         return null;
  179.     }
  180.     
  181.     
  182.     public static function getMaxDigitalAdapter(CustomerConfig $config) : mixed
  183.     {
  184.         $availableConnections self::getConnections($configConnMaxDigital::class, []);
  185.         if(count($availableConnections) > 0)
  186.         {
  187.             return $availableConnections;
  188.         }
  189.         //echo "no HomeNet connections found\n";
  190.         return null;
  191.     }
  192.     private static function getAdapter(CustomerConfig $config, array $directionsstring $type ''bool $raw false) : mixed
  193.     {
  194.         $availableConnections self::getConnections($config$type$directions);
  195.         if(count($availableConnections) > 0) {
  196.             $probe array_pop($availableConnections);
  197.             if(!$raw && $probe::class === ConnFTPSettings::class)
  198.             {
  199.                 return self::getFtpAdapter($probe);
  200.             }
  201.             elseif ($raw && $probe::class === ConnFTPSettings::class)
  202.             {
  203.                 return $probe;
  204.             }
  205.         }
  206.         return null;
  207.     }
  208.     private static function getFtpAdapter(ConnFTPSettings $config) : ?FtpAdapter
  209.     {
  210.         return new FtpAdapter(
  211.             // Connection options
  212.             \League\Flysystem\Ftp\FtpConnectionOptions::fromArray([
  213.                 'host' => $config->getHostName(), // required
  214.                 'root' => $config->getBaseFolder(), // required
  215.                 'username' => $config->getUser(), // required
  216.                 'password' => $config->getPassword(), // required
  217.                 'port' => intval($config->getPort()),
  218.                 'ssl' => $config->getSsl(),
  219.                 'timeout' => 90,
  220.                 'utf8' => $config->getUseUtf(),
  221.                 'passive' => true,
  222.                 'transferMode' => FTP_BINARY,
  223.                 'systemType' => null// 'windows' or 'unix'
  224.                 'ignorePassiveAddress' => $config->getIgnorePassiveAddress(), // true or false
  225.                 'timestampsOnUnixListingsEnabled' => false// true or false
  226.                 'recurseManually' => true // true
  227.             ])
  228.         );
  229.     }
  230.     public static function getConnections(CustomerConfig $configstring $type '', array $directions) : mixed
  231.     {
  232.         $connections $config->getConnections();
  233.         if($connections->getCount() === 0) {
  234.             return [];
  235.         }
  236.         $connItems $connections->getItems();
  237.         $availableConnections array_filter($connItems, function($c) use ($type$directions) {
  238.             if($type === '' || $c::class === $type) {
  239.                 if(method_exists($c'getDirection')) {
  240.                     if(in_array($c->getDirection(), $directions)) {
  241.                         return true;
  242.                     }
  243.                 } else {
  244.                     return true;
  245.                 }
  246.             }
  247.             return false;
  248.         });
  249.         return $availableConnections;
  250.     }
  251. }