<pman>Intégration de la branche dev74

This commit is contained in:
Jephté Clain 2025-07-15 16:52:38 +04:00
commit 5cc6b84287
7 changed files with 21 additions and 9 deletions

View File

@ -24,6 +24,8 @@
},
"require-dev": {
"nulib/tests": "^8.2",
"ext-mbstring": "*",
"ext-iconv": "*",
"ext-posix": "*",
"ext-pcntl": "*",
"ext-curl": "*",

7
php/src/app/TODO.md Normal file
View File

@ -0,0 +1,7 @@
# nulib\app
* [ ] ajouter des méthodes normalisées `app::get_cachedir()` et
`app::get_cachefile($name)` avec la valeur par défaut
`cachedir = $vardir/cache`
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -366,13 +366,14 @@ class CapacitorChannel implements ITransactor {
}
/**
* méthode appelée lors du parcours des éléments avec
* {@link Capacitor::each()}
* méthode appelée lors du parcours des éléments avec {@link Capacitor::each()}
*
* @param ?array $row la ligne courante. l'élément courant est accessible via
* $row["item"]
* @return ?array le cas échéant, un tableau non null utilisé pour mettre à
* jour la ligne courante
* Retourner [false] pour arrêter le parcours des éléments (la ligne courante
* ainsi que les autres lignes ne sont plus mise à jour)
*
* - Il est possible de mettre à jour $item en le retourant avec la clé "item"
* - La clé primaire (il s'agit généralement de "id_") ne peut pas être

View File

@ -661,7 +661,9 @@ abstract class CapacitorStorage {
foreach ($rows as $row) {
$rowIds = $this->getRowIds($channel, $row);
$updates = $onEach->invoke([$row, ...$args]);
if (is_array($updates) && $updates) {
if ($updates === [false]) {
break;
} elseif ($updates !== null) {
if (!array_key_exists("modified_", $updates)) {
$updates["modified_"] = date("Y-m-d H:i:s");
}

View File

@ -6,6 +6,11 @@ use nulib\db\pdo\Pdo;
class Mysql extends Pdo {
const PREFIX = "mysql";
static function config_unbufferedQueries(self $mysql): void {
$mysql->db->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
}
const CONFIG_unbufferedQueries = [self::class, "config_unbufferedQueries"];
function getDbname(): ?string {
$url = $this->dbconn["name"] ?? null;
if ($url !== null && preg_match('/^mysql(?::|.*;)dbname=([^;]+)/i', $url, $ms)) {

View File

@ -40,11 +40,6 @@ class Pdo implements IDatabase {
}
const CONFIG_errmodeException_lowerCase = [self::class, "config_errmodeException_lowerCase"];
static function config_unbufferedQueries(self $pdo): void {
$pdo->db->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
}
const CONFIG_unbufferedQueries = [self::class, "config_unbufferedQueries"];
protected const OPTIONS = [
\PDO::ATTR_PERSISTENT => true,
];

View File

@ -276,7 +276,7 @@ class txt {
* supprimer les diacritiques de la chaine $text
*
* la translitération se fait avec les règles de la locale spécifiée.
* NB: la translitération ne fonctionne pas si LC_CTYPE == C ou POISX
* NB: la translitération ne fonctionne pas si LC_CTYPE == C ou POSIX
*/
static final function remove_diacritics(?string $text, string $locale="fr_FR.UTF-8"): ?string {
if ($text === null) return null;