framework = $framework; } /** * Déclare une donnée « supplémentaire ». * * @param string $object_name Nom de l'objet auquel est rattaché cette donnée * @param string $name Nom de la donnée * @param string $type Type de la donnée (int, str, json, blob, timestamp, etc) * @param int $length Taille maximale de la donnée * @param string $libelle Description de la donnée (dans les formulaires par ex.) * @param bool $list 'true' si le champ doit être montré dans les listing * @param bool $search 'true' si le champ doit être recherchable * @param string $alias Alias de champ de fusion * * @return bool|string 'true' si l'opération s'est bien passé, sinon un message d'erreur */ abstract public function setup_data(string $object_name, string $name, string $type, int $length, string $libelle, bool $list = false, bool $search = false, string $alias = ''); /** * Enregistre une donnée « supplémentaire » en base de données. * * @param string $object_name Le nom de l'objet (ou sa classe) correspondant à sa table en BDD * @param array $object_ids La liste des identifiants des objets concernés * @param string $data_name Le nom de la valeur stockée (nom du champ ou de la clé) * @param string $data_type Le type de donnée à stocker (int, str, json, blob, timestamp, etc.) * @param mixed $data_value La valeur à stocker * * @return extra_data_result|false * @return array ([(, ), ...]|null, |null) * si l'opération a échouée le premier élément sera null, * et un message d'erreur indiquera la raison de l'échec, * sinon c'est l'inverse, le premier élément sera un tableau et il n'y * aura aucun message (null). */ abstract public function store_data(string $object_name, array $object_ids, string $data_name, string $data_type, $data_value); /** * Récupère une donnée « supplémentaire » en base de données. * * @param string $object_name Le nom de l'objet (ou sa classe) correspondant à sa table en BDD * @param array $object_ids La liste des identifiants des objets concernés * @param string $data_name Le nom de la valeur stockée (nom du champ ou de la clé) * @param string $data_type Le type de donnée à stocker (int, str, json, blob, timestamp, etc.) * * @return extra_data_result * @return array ([(, , ), ...]|null, |null) * si l'opération a échouée le premier élément sera null, * et un message d'erreur indiquera la raison de l'échec, * sinon c'est l'inverse, le premier élément sera un tableau et il n'y * aura aucun message (null). */ abstract public function get_data(string $object_name, array $object_ids, string $data_name, string $data_type); // TODO document abstract public function update_data(array $data_ids, string $data_type, $data_value); // TODO document abstract public function delete_data(array $data_ids, string $data_type); /** * Log un message en lui ajoutant un préfixe. * * @param string $method La méthode d'où provient le message (càd: __METHOD__) * @param string $message Le message à écire dans le ficheir de logs * @param string $level Le niveau de log * * @return void */ protected function log(string $method, string $message, string $level = 'DEBUG') { $this->framework->log($method, $message, $level); } } /** * Représente un résultat d'un appel à l'une des méthodes store/get. */ class extra_data_result { public ?array $items = null; public ?string $error_message = null; public function __construct(?array $items, ?string $err_msg) { $this->items = $items; $this->error_message = $err_msg; } }