| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | 
							- <?php 
 
- /*
 
- 	Cause de workflow
 
- 	Compare un champ de l'entité ciblé à la valeur définie dans la cause
 
- 	Ne s'applique qu'aux workflows de type entité et liste
 
- */
 
- class EntityFieldCause{
 
- 	//Descriptif de la cause
 
- 	public static function manifest($key = null){
 
- 		$manifest = array(
 
- 			'slug' => 'entity-field',
 
- 			'label' => 'Entité',
 
- 			'type' => array(Workflow::TYPE_ENTITY,Workflow::TYPE_LIST),
 
- 			'class' => get_called_class(),
 
- 			'path' => __FILE__,
 
- 			'icon' => 'fas fa-leaf',
 
- 			'attributes' => ' data-filter-type="entity-field" ',
 
- 			'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="entity-field" data-value-selector=".filter-value:last-child">
 
- 			<div class="filter-subfield  d-inline-block">
 
- 				'.$entity['label'].'.
 
- 				<select data-id="entity-field" class="d-inline-block mt-2 border-0 font-weight-bold text-primary" value="Ma colonne">
 
- 					<option value="">- Attribut - </option>';
 
- 					 if(isset($entity['fields'] )):
 
- 					 foreach($entity['fields'] as $slug=>$attribute): 
 
- 						$stream .=' <option data-attribute-type="'.$attribute['type'].'" value="'.$slug.'">'.$attribute['label'].'</option>';
 
- 					 endforeach; 
 
- 					endif;
 
- 			$stream .='</select>
 
- 			</div>
 
- 			<select class="form-control filter-operator border-0 text-primary">
 
- 				<option data-default-view="'.base64_encode(json_encode(array('view' => "text"))).'" value="=">Égal</option>
 
- 				<option data-default-view="'.base64_encode(json_encode(array('view' => "text"))).'" value="!=">Différent</option>
 
- 				<option data-default-view="'.base64_encode(json_encode(array('view' => "text"))).'" value=">">Inférieur</option>
 
- 				<option data-default-view="'.base64_encode(json_encode(array('view' => "text"))).'" value="<">Supérieur</option>
 
- 				<option data-default-view="'.base64_encode(json_encode(array('view' => "text"))).'" value="like">Contient</option>
 
- 			</select>
 
- 			
 
- 		</div>';
 
- 		
 
- 		return $stream;;
 
- 	}
 
- 	//Méthode de vérification de la cause
 
- 	public static function check($filter,$parameters = array()){
 
- 		if(!isset($parameters['current'])) throw new Exception("Aucun item entité n'est présent");
 
- 		$column = $filter['subcolumn']['entity-field'];
 
- 		$class = get_class($parameters['current']);
 
- 		
 
- 		$columnValue = null;
 
- 		
 
- 		//la colonne évoquée peut être un attribut de classe ou une méthode de classe
 
- 		if( property_exists ( $class , $column ) ) $columnValue = $parameters['current']->$column;
 
- 		if( method_exists ( $class , $column ) ) $columnValue = $parameters['current']->$column();
 
- 				
 
- 		switch($filter['operator']){
 
- 			case '=':
 
- 				if(!isset($columnValue) ) return false;
 
- 				if($columnValue != $filter['value'][0]  ) return false;
 
- 			break;
 
- 			case '!=':
 
- 				if(isset($columnValue) && $columnValue == $filter['value'][0]  ) return false;
 
- 			break;
 
- 			case '<':
 
- 				if($columnValue > $filter['value'][0]) return false;
 
- 			break;
 
- 			case '>':
 
- 				if($columnValue < $filter['value'][0]) return false;
 
- 			break;
 
- 			case 'like':
 
- 				if( strpos(  mb_strtolower($columnValue), mb_strtolower($filter['value'][0]) ) === false  ) return false;
 
- 			break;
 
- 		}
 
- 		
 
- 		return true;
 
- 	}
 
- 	
 
- }
 
- ?>
 
 
  |