vendor/elements/process-manager-bundle/src/Executor/AbstractExecutor.php line 230

Open in your IDE?
  1. <?php
  2. /**
  3.  * Elements.at
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Enterprise License (PEL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) elements.at New Media Solutions GmbH (https://www.elements.at)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PEL
  13.  */
  14. namespace Elements\Bundle\ProcessManagerBundle\Executor;
  15. use Elements\Bundle\ProcessManagerBundle\Executor\Action\AbstractAction;
  16. use Elements\Bundle\ProcessManagerBundle\Model\Configuration;
  17. use Elements\Bundle\ProcessManagerBundle\Model\MonitoringItem;
  18. use Pimcore\Tool\Console;
  19. abstract class AbstractExecutor implements \JsonSerializable
  20. {
  21.     protected $name '';
  22.     protected $extJsClass '';
  23.     protected $values = [];
  24.     protected $loggers = [];
  25.     protected $executorConfig = [];
  26.     protected $actions = [];
  27.     protected $isShellCommand false;
  28.     /**
  29.      * @var Configuration
  30.      */
  31.     protected $config;
  32.     public function __construct($config = [])
  33.     {
  34.         $this->config $config;
  35.     }
  36.     /**
  37.      * @return boolean
  38.      */
  39.     public function getIsShellCommand()
  40.     {
  41.         return $this->isShellCommand;
  42.     }
  43.     /**
  44.      * @param bool $isShellCommand
  45.      *
  46.      * @return $this
  47.      */
  48.     public function setIsShellCommand($isShellCommand)
  49.     {
  50.         $this->isShellCommand $isShellCommand;
  51.         return $this;
  52.     }
  53.     /**
  54.      * @return string
  55.      */
  56.     public function getName()
  57.     {
  58.         if (!$this->name) {
  59.             $this->name lcfirst(array_pop(explode('\\'get_class($this))));
  60.         }
  61.         return $this->name;
  62.     }
  63.     /**
  64.      * @param string $name
  65.      *
  66.      * @return $this
  67.      */
  68.     public function setName($name)
  69.     {
  70.         $this->name $name;
  71.         return $this;
  72.     }
  73.     /**
  74.      * @return Configuration
  75.      */
  76.     public function getConfig()
  77.     {
  78.         return $this->config;
  79.     }
  80.     /**
  81.      * @param Configuration $config
  82.      *
  83.      * @return $this
  84.      */
  85.     public function setConfig($config)
  86.     {
  87.         $this->config $config;
  88.         return $this;
  89.     }
  90.     /**
  91.      * @return string
  92.      */
  93.     public function getExtJsClass()
  94.     {
  95.         return $this->extJsClass;
  96.     }
  97.     /**
  98.      * @param string $extJsClass
  99.      *
  100.      * @return $this
  101.      */
  102.     public function setExtJsClass($extJsClass)
  103.     {
  104.         $this->extJsClass $extJsClass;
  105.         return $this;
  106.     }
  107.     /**
  108.      * @return array
  109.      */
  110.     public function getValues()
  111.     {
  112.         return $this->values;
  113.     }
  114.     /**
  115.      * @param array $values
  116.      *
  117.      * @return $this
  118.      */
  119.     public function setValues($values)
  120.     {
  121.         $this->values $values;
  122.         return $this;
  123.     }
  124.     public function getExtJsSettings()
  125.     {
  126.         $executorConfig = [
  127.             'extJsClass' => $this->getExtJsClass(),
  128.             'name' => $this->getName(),
  129.             'class' => $this->getConfig()->getExecutorClass(),
  130.         ];
  131.         $data['executorConfig'] = $executorConfig;
  132.         $data['values'] = $this->getValues();
  133.         $data['values']['id'] = $this->getConfig()->getId();
  134.         $data['loggers'] = $this->getLoggers();
  135.         $data['actions'] = $this->getActions();
  136.         foreach ((array)$data['actions'] as $i => $actionData) {
  137.             $className $actionData['class'];
  138.             $x = new $className();
  139.             $data['actions'][$i]['extJsClass'] = $x->getExtJsClass();
  140.             $data['actions'][$i]['config'] = $x->getConfig();
  141.         }
  142.         foreach ((array)$data['loggers'] as $i => $loggerData) {
  143.             $className $loggerData['class'];
  144.             $x = new $className();
  145.             $data['loggers'][$i]['extJsClass'] = $x->getExtJsClass();
  146.             $data['loggers'][$i]['config'] = $x->getConfig();
  147.         }
  148.         return $data;
  149.     }
  150.     /**
  151.      * @return array
  152.      */
  153.     public function getActions()
  154.     {
  155.         return $this->actions;
  156.     }
  157.     /**
  158.      * @param array $actions
  159.      *
  160.      * @return $this
  161.      */
  162.     public function setActions($actions)
  163.     {
  164.         $this->actions $actions;
  165.         return $this;
  166.     }
  167.     /**
  168.      *
  169.      * Tests
  170.      *
  171.      * @param MonitoringItem $monitoringItem
  172.      *
  173.      * @return string
  174.      *
  175.      */
  176.     public function getShellCommand(MonitoringItem $monitoringItem)
  177.     {
  178.         return Console::getPhpCli() . ' ' realpath(PIMCORE_PROJECT_ROOT DIRECTORY_SEPARATOR 'bin' DIRECTORY_SEPARATOR 'console') . ' process-manager:execute-shell-cmd --monitoring-item-id=' $monitoringItem->getId();
  179.     }
  180.     /**
  181.      * returns the command which should be executed
  182.      *
  183.      * the CallbackSettings are only passed at execution time
  184.      *
  185.      * @param string[] $callbackSettings
  186.      * @param null | MonitoringItem $monitoringItem
  187.      *
  188.      * @return mixed
  189.      */
  190.     abstract public function getCommand($callbackSettings = [], $monitoringItem null);
  191.     public function jsonSerialize()
  192.     {
  193.         $values array_merge(['class' => get_class($this)], get_object_vars($this));
  194.         return $values;
  195.     }
  196.     /**
  197.      * @return array
  198.      */
  199.     public function getLoggers()
  200.     {
  201.         return $this->loggers;
  202.     }
  203.     /**
  204.      * @param array $loggers
  205.      *
  206.      * @return $this
  207.      */
  208.     public function setLoggers($loggers)
  209.     {
  210.         $this->loggers $loggers;
  211.         return $this;
  212.     }
  213.     public function getStorageValue()
  214.     {
  215.         $actions = (array)$this->getActions();
  216.         foreach($actions as $i => $data){
  217.             if(is_object($data) && method_exists($data,'getStorageData')){
  218.                 $actions[$i] = $data->getStorageData();
  219.             }
  220.         }
  221.         $data = [
  222.             'values' => (array)$this->getValues(),
  223.             'actions' => $actions,
  224.             'loggers' => (array)$this->getLoggers()
  225.         ];
  226.         return json_encode($data);
  227.     }
  228.     protected function setData($values)
  229.     {
  230.         foreach ($values as $key => $value) {
  231.             $setter 'set' ucfirst($key);
  232.             if (method_exists($this$setter)) {
  233.                 $this->$setter($value);
  234.             }
  235.         }
  236.         return $this;
  237.     }
  238.     /**
  239.      * @param Configuration $configuration
  240.      *
  241.      * @return Configuration
  242.      */
  243.     public function setDataFromResource(Configuration $configuration)
  244.     {
  245.         $settings $configuration->getExecutorSettings();
  246.         if (is_string($settings)) {
  247.             $this->setData(json_decode($settingstrue));
  248.         }
  249.         $this->setConfig($configuration);
  250.         return $configuration;
  251.     }
  252. }