AppTable.php 2.37 KB
<?php
namespace App\Model\Table;

use Cake\ORM\Table;
use Cake\ORM\TableRegistry;
use Cake\Datasource\EntityInterface;

/**
 * App Model
 */
class AppTable extends Table
{

    // Voir utilisation de cette propriété plus loin
    public $current_entity = null;
    
    // autoriser les caracteres habituels standards pour un ou plusieurs MOTs
    // accents + - _ / () . , \s (=space)
    private $string = "a-zA-Z0-9éèàùâêôîôûç%().,\/\s\+\-_'";

    public function check_string($check)
    {
        return (bool) preg_match('/^[' . $this->string . ']*$/', $check);
    }

    // autoriser les caracteres spéciaux (pour une PHRASE ou paragraphe) :
    // check_string PLUS ces symboles ====> & * > < ? % ! : , " '
    public function check_string_with_some_special_cars($check)
    {
        return (bool) preg_match('/^[' . $this->string . '?%!:,&#*><\-\+\="\'' . ']*$/', $check);
    }

    public function check_mail($check)
    {
        return (bool) filter_var($check, FILTER_VALIDATE_EMAIL);
    }

    // @Override parent Table
    /* 
     * (EP202009) pour comportement commun à toutes les EntitiesTable à la fin du save() ou du delete()
     * 
     * On crée une variable globale $this->current_entity qui contient l'entité (Entity) courante 
     * (après save, donc mise à jour avec les données du formulaire, et avec un new id si ADD, 
     * mais aussi avec les erreurs si le save s'est mal passé)
     * Cette entité courante est récupérable depuis TOUT controleur, comme ceci :
     *      - $this->Materiels->current_entity
     *      ou plus simplement avec le raccourci AppController :
     *      - $this->getCurrentEntity()
     * 
     */
    public function save(EntityInterface $entity, $options = []) {
        $success = parent::save($entity,$options);
        $this->current_entity = $entity;
        return $success;
    }
    public function delete(EntityInterface $entity, $options = []) {
        $DEBUG = false;
        $this->current_entity = $entity;
        if (!$DEBUG) return parent::delete($entity,$options);
        return true;
    }
    
    /*
    public function getEntity($id) {
        debug($this->get($id));
        debug($this->getEntityClass()); // 'App\Model\Entity\Materiel'
        debug($this->getTable()); // table name
        //_getClassName() 
        //return TableRegistry::getTableLocator()->get('Materiels')->get($id);
    }
    */
    
}