Browse Source

Employer les fonctions de l'API sql

master
Maïeul 2 months ago
parent
commit
a5bb628bd1
  1. 5
      formulaires/configurer_hasher.php
  2. 43
      hasher_fonctions.php

5
formulaires/configurer_hasher.php

@ -9,7 +9,6 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
function formulaires_configurer_hasher_charger_dist(){
list($oui, $non) = hasher_compter_documents();
if (intval($non) > 0) {
$nb_oui = min(intval($non), 100);
}
@ -21,8 +20,8 @@ function formulaires_configurer_hasher_charger_dist(){
$valeurs = array(
'oui'=>$oui,
'non'=>$non,
'nb_oui'=>$nb_oui,
'nb_non'=>$nb_non
'nb_oui'=>$nb_oui ?? 0,
'nb_non'=>$nb_non ?? 0
);
return $valeurs;

43
hasher_fonctions.php

@ -3,7 +3,7 @@
## fonctions pour hasher les documents
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/sql');
/* pour un fichier d'origine situé dans IMG/{$ext}/xxxx.ext,
* prendre les 3 premiers caractères (a, b, c) du md5(xxxx.ext),
@ -43,14 +43,13 @@ function hasher_deplacer_document($id_document, $corriger=false, $rev=false) {
spip_log("Erreur hasher_deplacer_document intval $id_document", 'hash');
return false;
}
if (!$s = spip_query('SELECT fichier FROM spip_documents WHERE id_document='.$id_document)
OR !$t = spip_fetch_array($s)) {
spip_log("Erreur hasher_deplacer_document select doc=$id_document ".var_export($s, true), 'hash');
if (!$t = sql_fetsel('fichier', 'spip_documents', 'id_document='.$id_document)
) {
spip_log("Erreur hasher_deplacer_document select doc=$id_document ", 'hash');
return false;
}
$src = $t['fichier'];
// savoir si on a IMG/ devant (en SPIP 1.9.2) ou pas (SPIP 2)
// savoir si on a IMG/ devant (en SPIP 1.9.2) ou pas (SPIP 2++)
$img = preg_match(',^IMG/,', $src)
? 'IMG/' : '';
$dir_ref = preg_match(',^IMG/,', $src)
@ -71,7 +70,7 @@ function hasher_deplacer_document($id_document, $corriger=false, $rev=false) {
if($corriger) {
if(file_exists(_DIR_IMG.$dest)){
// on note la destination finale
if (!spip_query('UPDATE spip_documents SET fichier="'.$img.$dest.'" WHERE id_document='.$id_document)) {
if (!sql_updateq('spip_documents', ['fichier'=>$img.$dest], ['id_document' => $id_document])) {
spip_log("erreur hasher_deplacer_document update correction $img $dest doc $id_document", 'hash');
return false;
} else {
@ -94,26 +93,25 @@ function hasher_deplacer_document($id_document, $corriger=false, $rev=false) {
// 2. creer au besoin les sous-repertoires
if (!is_dir(_DIR_IMG.$dir = dirname($dest))
AND !mkdir(_DIR_IMG.$dir, _SPIP_CHMOD, /* recursive, php5 */ true)) {
AND !mkdir(_DIR_IMG.$dir, _SPIP_CHMOD, true)) {
spip_log("erreur hasher_deplacer_document mkdir($dir)", 'hash');
return false;
}
// 3. Section critique : il faut modifier dans la base *et* deplacer
// on note les fichiers en cours de deplacement avec un - devant ; si
// ca casse on saura reparer
if (!spip_query('UPDATE spip_documents SET fichier=CONCAT("-", fichier) WHERE id_document='.$id_document)) {
if (!sql_update('spip_documents', ['fichier'=>'CONCAT("-", fichier)'], 'id_document='.$id_document)) {
spip_log("erreur hasher_deplacer_document update 1", 'hash');
return false;
}
// on deplace
if (!rename($dir_ref.$src, _DIR_IMG.$dest)) {
spip_log("erreur hasher_deplacer_document rename", 'hash');
spip_query('UPDATE spip_documents SET fichier="'.$src.'" WHERE id_document='.$id_document);
sql_updateq('spip_documents', ['fichier'=>$src], 'id_document='.$id_document);
return false;
}
// on note la destination finale
if (!spip_query('UPDATE spip_documents SET fichier="'.$img.$dest.'" WHERE id_document='.$id_document)) {
if (!sql_updateq('spip_documents', ['fichier'=>$img.$dest], 'id_document='.$id_document)) {
spip_log("erreur hasher_deplacer_document update 2", 'hash');
return false;
}
@ -140,14 +138,19 @@ function hasher_deplacer_n_documents($n, $corriger=false, $rev=false) {
$dejafait = true;
if (!$n = intval($n)
OR !$s = spip_query($q = "SELECT id_document FROM spip_documents WHERE fichier REGEXP '^(IMG/)?[^/]+/"
. ($rev ? "./././" : "")
."[^/]+$' AND distant='non' ORDER BY date DESC LIMIT $n")) {
spip_log("erreur hasher_deplacer_n_documents requete $q", 'hash');
OR !$s = sql_select(
'id_document',
'spip_documents',
"fichier REGEXP '^(IMG/)?[^/]+/". ($rev ? "./././" : "")."[^/]+$' AND distant='non'",
'',
'date',
$n
)) {
spip_log("erreur hasher_deplacer_n_documents", 'hash');
return false;
}
while ($t = spip_fetch_array($s)) {
while ($t = sql_fetch($s)) {
$id_document = $t['id_document'];
if (hasher_deplacer_document($id_document, $corriger, $rev))
$docs[] = $id_document;
@ -161,13 +164,11 @@ function hasher_deplacer_n_documents($n, $corriger=false, $rev=false) {
*/
function hasher_compter_documents() {
$s = spip_query($q = "SELECT COUNT(*) FROM spip_documents WHERE fichier REGEXP '^(IMG/)?[^/]+/"
$non = sql_countsel('spip_documents', "fichier REGEXP '^(IMG/)?[^/]+/"
."[^/]+$' AND distant='non'");
$non = array_pop(spip_fetch_array($s));
$s = spip_query($q = "SELECT COUNT(*) FROM spip_documents WHERE fichier REGEXP '^(IMG/)?[^/]+/"
$oui = sql_countsel('spip_documents', "fichier REGEXP '^(IMG/)?[^/]+/"
. "./././"
."[^/]+$' AND distant='non'");
$oui = array_pop(spip_fetch_array($s));
return array($oui, $non);
}

Loading…
Cancel
Save