1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- /*
- Cause de workflow
- Compare une variable (scopée sur le workflow) en configuration avec la valeur définie dans la cause
- */
- class VariableCause{
- //Descriptif de la cause
- public static function manifest($key = null){
- $manifest = array(
- 'slug' => 'var',
- 'label' => 'Variable',
- 'type' => array(Workflow::TYPE_ALL),
- 'class' => get_called_class(),
- 'path' => __FILE__,
- 'icon' => 'fas fa-dollar-sign',
- 'attributes' => ' data-filter-type="configuration-var" ',
- 'color' => '#ff9f43',
- );
- if(!isset($key)) return $manifest;
- return isset($manifest[$key]) ? $manifest[$key] : '' ;
- }
- //Type de filtre de cause custom pour cette cause (champs additionnels)
- public static function filter($entity = array()){
- $stream = '<div class="filter-value-block" data-value-type="configuration-var" data-value-selector=".filter-value:last-child">
- <div class="filter-subfield d-inline-block">
- <i class="fas fa-dollar-sign"></i> <input type="text" data-id="var-slug" class="d-inline-block mt-2 border-0 font-weight-bold text-primary" placeholder="Nom de la variable">';
- $stream .='
- </div>
- <select class="form-control filter-operator border-0 text-primary">
- <option value="=">Égal</option>
- <option value="!=">Différent</option>
- <option value=">">Inférieur</option>
- <option value="<">Supérieur</option>
- <option value="like">Contient</option>
- </select>
- <input type="text" class="form-control filter-value" >
- </div>';
- return $stream;;
- }
- //Méthode de vérification de la cause
- public static function check($filter,$parameters = array()){
- global $conf;
- //On récupere sans passer par le $conf->get dont le cache session n'ets aps compatible avec les workflows
- $theConf = Configuration::load(array('key'=>'workflow-var'));
- $confValue = !$theConf ? '{}' : decrypt($theConf->value);
- $workflowVars = json_decode($confValue,true);
- $varValue = isset($workflowVars[$filter['subcolumn']['var-slug']]) ? $workflowVars[$filter['subcolumn']['var-slug']] :'';
- global $conf;
- switch($filter['operator']){
- case '=':
- if($varValue != $filter['value'][0]) return false;
- break;
- case '!=':
- if($varValue == $filter['value'][0]) return false;
- break;
- case '<':
- if($varValue > $filter['value'][0]) return false;
- break;
- case '>':
- if($varValue < $filter['value'][0]) return false;
- break;
- case 'like':
- if( strpos( mb_strtolower($varValue), mb_strtolower($filter['value'][0]) ) === false ) return false;
- break;
- }
- return true;
- }
- }
- ?>
|