1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- /**
- * Define a workfloweffect.
- * Un effet est la conséquence d'une ou plusieurs causes
- * @author Administrateur
- * @category Plugin
- * @license MIT
- */
- class WorkflowEffect extends Entity{
- public $id;
- public $type; //Type (Liste configurable)
- public $workflow; //Workflow (Entier)
- public $values; //Valeurs (Texte Long)
- public $sort; //Ordre (Entier)
- protected $TABLE_NAME = 'workflow_effect';
- public $fields = array(
- 'id' => 'key',
- 'type' => 'string',
- 'workflow' => 'int',
- 'values' => 'longstring',
- 'sort' => 'int'
- );
- //Colonnes indexées
- public $indexes = array();
- //Méthode d'execution d'un effet
- public function run($parameters = array()){
- //On récupere la calsse du type d'effet pour l'effet courant
- $type = self::types($this->type);
- // On met les variables de workflow a disposition de l'effet
- // On utilise pas $conf->get volontairement pour eviter le session cache conflictuel avec les workflows
- $theConf = Configuration::load(array('key'=>'workflow-var'));
- $confValue = !$theConf ? '{}' : decrypt($theConf->value);
- $parameters['workflow-var'] = json_decode($confValue,true);
- //On execute la méthode run de la classe du type d'effet ciblée en lui fournissant les données de l'effet et les données workflow (entité, item courant etc...)
- $results = $type::run($this,$parameters);
- $logs[] = '<i class="'.$type::manifest('icon').'"></i> '.$type::manifest('label').'<br><div class="pl-3">'.$results.'</div>';
- return is_array($logs) ? $logs : array();
- }
- //Récuperation des ttyes d'effets possibles
- public static function types($slug = null){
- $types = array();
- //Récuperations des types d'effet par defaut définit dans le dossier effect
- foreach (glob(__DIR__.SLASH.'effect'.SLASH.'*.class.php') as $file) {
- require_once($file);
- $class = str_replace('.class.php','',basename($file));
- $infos = $class::manifest();
- $types[$infos['slug']] = $class;
- }
- //Récuperation des effets fournis par d'autres plugins
- Plugin::callHook('workflow_effect',array(&$types));
- if(!isset($slug)) return $types;
- return isset($types[$slug]) ? $types[$slug] : $types['mail'];
- }
- }
- ?>
|