Skip to content
Extraits de code Groupes Projets
Valider edc3f0c8 rédigé par JamesRezo's avatar JamesRezo :tada:
Parcourir les fichiers

feat: version compatible SPIP4.2

parent 560acb88
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# Calendrier Mini # Corbeille
## Documentation ## Documentation
......
<?php <?php
/**
* Plugin Corbeille 3.0 /**
* * Plugin Corbeille 3.0
* Collectif *
* Licence GPL * Collectif
*/ * Licence GPL
if (!defined("_ECRIRE_INC_VERSION")) { */
return;
} if (!defined('_ECRIRE_INC_VERSION')) {
include_spip('inc/utils'); return;
/** }
* Parametres de configuration personnalisables/surchargeables de la corbeille : include_spip('inc/utils');
* global $corbeille_params; /**
* * Parametres de configuration personnalisables/surchargeables de la corbeille :
* $corbeille_params["nom de l'objet SPIP"] = array ( * global $corbeille_params;
* [voir la structure ci-dessous] *
* ); * $corbeille_params["nom de l'objet SPIP"] = array (
* * [voir la structure ci-dessous]
* la fonction corbeille_table_infos($objet) renverra : * );
* - si $objet==-1, la liste des objets renseignes *
* - sinon, la globale $corbeille_params[$objet] si elle existe * la fonction corbeille_table_infos($objet) renverra :
* - sinon, la valeur par defaut $param[$objet] si elle existe * - si $objet==-1, la liste des objets renseignes
* - sinon, false * - sinon, la globale $corbeille_params[$objet] si elle existe
* * - sinon, la valeur par defaut $param[$objet] si elle existe
* "nom de l'objet spip" => array ( * - sinon, false
* "statut" => nom du statut dans la base de donnees (bdd), *
* "table" => nom eventuel de la table, pour definir plusieurs noisettes avec une meme table mais des statuts differents * "nom de l'objet spip" => array (
* "tableliee" => tableau des tables spip a vider en meme temps * "statut" => nom du statut dans la base de donnees (bdd),
* ) * "table" => nom eventuel de la table, pour definir plusieurs noisettes avec une meme table mais des statuts differents
* * "tableliee" => tableau des tables spip a vider en meme temps
* @param string $table * )
* @return array *
*/ * @param string $table
function corbeille_table_infos($table=-1){ * @return array
global $corbeille_params; */
if (!is_array($corbeille_params)) function corbeille_table_infos($table = -1) {
$corbeille_params = array(); global $corbeille_params;
if (isset($corbeille_params[$table])) if (!is_array($corbeille_params)) {
return $corbeille_params[$table]; $corbeille_params = [];
}
$param = array ( if (isset($corbeille_params[$table])) {
"articles" => array( return $corbeille_params[$table];
"statut" => "poubelle", }
"tableliee"=> array("spip_auteurs_articles","spip_documents_liens","spip_mots_articles","spip_signatures","spip_versions","spip_versions_fragments","spip_forum"),
), $param = [
"auteurs" => array( 'articles' => [
"statut" => "5poubelle", 'statut' => 'poubelle',
"tableliee"=> array("spip_documents_liens"), 'tableliee' => ['spip_auteurs_articles','spip_documents_liens','spip_mots_articles','spip_signatures','spip_versions','spip_versions_fragments','spip_forum'],
), ],
"breves"=> array( 'auteurs' => [
"statut" => "refuse", 'statut' => '5poubelle',
"tableliee"=> array("spip_documents_liens"), 'tableliee' => ['spip_documents_liens'],
), ],
"forums_publics" => array( 'breves' => [
"statut" => "off", 'statut' => 'refuse',
"table"=>"forum", 'tableliee' => ['spip_documents_liens'],
), ],
"forums_prives" => array( 'forums_publics' => [
"statut" => "privoff", 'statut' => 'off',
"table"=>"forum", 'table' => 'forum',
), ],
"signatures"=> array( 'forums_prives' => [
"statut" => "poubelle", 'statut' => 'privoff',
), 'table' => 'forum',
"sites" => array( ],
"statut" => "refuse", 'signatures' => [
"tableliee"=> array("spip_syndic_articles","spip_mots_syndic","spip_documents_liens"), 'statut' => 'poubelle',
), ],
); 'sites' => [
$param = pipeline('corbeille_table_infos', $param); 'statut' => 'refuse',
'tableliee' => ['spip_syndic_articles','spip_mots_syndic','spip_documents_liens'],
if (isset($param[$table])) ],
return $param[$table]; ];
if ($table==-1) $param = pipeline('corbeille_table_infos', $param);
return array_merge(array_keys($corbeille_params), array_keys($param)); if (isset($param[$table])) {
return false; return $param[$table];
} }
if ($table == -1) {
/** return array_merge(array_keys($corbeille_params), array_keys($param));
* supprime les elements listes d'un type donne }
* return false;
* @param nom $table }
* @param tableau $ids
* @return $ids trouves (sinon false) /**
*/ * supprime les elements listes d'un type donne
function corbeille_vider($table, $ids=array()) { *
include_spip('base/abstract_sql'); * @param nom $table
$params = corbeille_table_infos($table); * @param tableau $ids
if (isset($params['table'])) * @return $ids trouves (sinon false)
$table = $params['table']; */
function corbeille_vider($table, $ids = []) {
$type = objet_type($table);
$table_sql = table_objet_sql($type); include_spip('base/abstract_sql');
$id_table = id_table_objet($type); $params = corbeille_table_infos($table);
if (isset($params['table'])) {
$statut = $params['statut']; $table = $params['table'];
if (!$statut) }
return false;
$type = objet_type($table);
// determine les index des elements a supprimer $table_sql = table_objet_sql($type);
if ($ids===-1) { $id_table = id_table_objet($type);
// recupere les identifiants des objets a supprimer $statut = $params['statut'];
$ids = array_column(sql_allfetsel($id_table,$table_sql,'statut='.sql_quote($statut)), $id_table); if (!$statut) {
} return false;
else { }
// verifions les ids qui existent vraiment
$ids = array_column(sql_allfetsel($id_table,$table_sql,sql_in($id_table,$ids).' AND statut='.sql_quote($statut)), $id_table); // determine les index des elements a supprimer
} if ($ids === -1) {
if (!count($ids)) // recupere les identifiants des objets a supprimer
return false; $ids = array_column(sql_allfetsel($id_table, $table_sql, 'statut=' . sql_quote($statut)), $id_table);
}
if ($pre_suppression=charger_fonction($table."_pre_suppression","corbeille", true)) { else {
$pre_suppression($ids); // verifions les ids qui existent vraiment
} $ids = array_column(sql_allfetsel($id_table, $table_sql, sql_in($id_table, $ids) . ' AND statut=' . sql_quote($statut)), $id_table);
}
// supprime les elements definis par la liste des index if (!count($ids)) {
sql_delete($table_sql,sql_in($id_table,$ids)); return false;
spip_log("Numeros des entrees". implode(',',$ids)." supprimees dans la table $table_sql", "corbeille"); }
if ($pre_suppression = charger_fonction($table . '_pre_suppression', 'corbeille', true)) {
// suppresion des elements lies $pre_suppression($ids);
if (isset($params['tableliee']) and $table_liee=$params['tableliee']) { }
$trouver_table = charger_fonction('trouver_table','base');
foreach($table_liee as $unetable) { // supprime les elements definis par la liste des index
$desc = $trouver_table($unetable); sql_delete($table_sql, sql_in($id_table, $ids));
if (isset($desc['field'][$id_table])){ spip_log('Numeros des entrees' . implode(',', $ids) . " supprimees dans la table $table_sql", 'corbeille');
sql_delete($unetable,sql_in($id_table,$ids)); // suppresion des elements lies
spip_log("Numeros des entrees ". implode(',',$ids)." supprimees dans la table $unetable","corbeille"); if (isset($params['tableliee']) and $table_liee = $params['tableliee']) {
} elseif(isset($desc['field']['id_objet']) AND isset($desc['field']['objet'])){ $trouver_table = charger_fonction('trouver_table', 'base');
sql_delete($unetable,sql_in('id_objet',$ids)." AND objet=".sql_quote($type)); foreach ($table_liee as $unetable) {
spip_log("Numeros des entrees ". implode(',',$ids)." supprimees dans la table $unetable","corbeille"); $desc = $trouver_table($unetable);
} if (isset($desc['field'][$id_table])) {
} sql_delete($unetable, sql_in($id_table, $ids));
} spip_log('Numeros des entrees ' . implode(',', $ids) . " supprimees dans la table $unetable", 'corbeille');
return $ids; } elseif (isset($desc['field']['id_objet']) and isset($desc['field']['objet'])) {
} sql_delete($unetable, sql_in('id_objet', $ids) . ' AND objet=' . sql_quote($type));
spip_log('Numeros des entrees ' . implode(',', $ids) . " supprimees dans la table $unetable", 'corbeille');
}
}
}
return $ids;
}
<?php <?php
/**
* Plugin Corbeille 3.0 /**
* * Plugin Corbeille 3.0
* Collectif *
* Licence GPL * Collectif
*/ * Licence GPL
if (!defined("_ECRIRE_INC_VERSION")) return; */
if (!defined('_ECRIRE_INC_VERSION')) { return;
/** }
* Corbeille_icone_poubelle() affiche l'icone poubelle (vide ou pleine)
* @param $total_table nb d'elŽments supprimable pour un objet donnŽ
*/ /**
function corbeille_icone_poubelle($total_table) { * Corbeille_icone_poubelle() affiche l'icone poubelle (vide ou pleine)
if (empty($total_table)) { * @param $total_table nb d'elŽments supprimable pour un objet donnŽ
return "<img src='".chemin_image('trash-empty-32.png')."' alt='trash empty'/>"; */
} else { function corbeille_icone_poubelle($total_table) {
return "<img src='".chemin_image('trash-full-32.png')."' alt='trash full'/>";
} if (empty($total_table)) {
} return "<img src='" . chemin_image('trash-empty-32.png') . "' alt='trash empty'/>";
} else {
return "<img src='" . chemin_image('trash-full-32.png') . "' alt='trash full'/>";
}
}
<?php <?php
/**
* Plugin Corbeille 3.0 /**
* * Plugin Corbeille 3.0
* Collectif *
* Licence GPL * Collectif
*/ * Licence GPL
if (!defined("_ECRIRE_INC_VERSION")) { */
return;
} if (!defined('_ECRIRE_INC_VERSION')) {
return;
function formulaires_editer_corbeille_charger_dist($table){ }
include_spip('action/corbeille_vider');
$params = corbeille_table_infos($table); function formulaires_editer_corbeille_charger_dist($table) {
return array('table'=>$table,'elements'=>array(),'recherche'=>_request('recherche'),'_statut'=>$params['statut']); include_spip('action/corbeille_vider');
} $params = corbeille_table_infos($table);
return ['table' => $table,'elements' => [],'recherche' => _request('recherche'),'_statut' => $params['statut']];
}
function formulaires_editer_corbeille_traiter_dist($table){
include_spip('action/corbeille_vider');
include_spip('inc/objet'); function formulaires_editer_corbeille_traiter_dist($table) {
if(_request('effacer_tout'))
$res = corbeille_vider($table,-1); include_spip('action/corbeille_vider');
else include_spip('inc/objet');
$res = corbeille_vider($table,_request('elements')); if (_request('effacer_tout')) {
$objet_sg = objet_type($table); $res = corbeille_vider($table, -1);
$objet_pl = table_objet($table); } else {
if ($res){ $res = corbeille_vider($table, _request('elements'));
if (count($res)>1) }
$message = _T('corbeille:elements_supprimes',array('objet'=>$objet_pl,'ids'=>'#'.join(', #',$res))); $objet_sg = objet_type($table);
else $objet_pl = table_objet($table);
$message = _T('corbeille:element_supprime',array('objet'=>$objet_sg,'ids'=>'#'.join(', #',$res))); if ($res) {
} if (count($res) > 1) {
else $message = _T('corbeille:elements_supprimes', ['objet' => $objet_pl,'ids' => '#' . join(', #', $res)]);
$message = _T('corbeille:aucun_element_supprime'); } else {
$message = _T('corbeille:element_supprime', ['objet' => $objet_sg,'ids' => '#' . join(', #', $res)]);
return array('message_ok'=>$message); }
} } else {
$message = _T('corbeille:aucun_element_supprime');
}
return ['message_ok' => $message];
}
<?php <?php
/**
* Plugin Corbeille 3.0 /**
* * Plugin Corbeille 3.0
* Collectif *
* Licence GPL * Collectif
*/ * Licence GPL
if (!defined("_ECRIRE_INC_VERSION")) return; */
include_once _DIR_RESTREINT."genie/optimiser.php"; if (!defined('_ECRIRE_INC_VERSION')) { return;
}
/**
* Pas d'optimisation auto avec le plugin corbeille ! include_once _DIR_RESTREINT . 'genie/optimiser.php';
* /**
* @param unknown_type $t * Pas d'optimisation auto avec le plugin corbeille !
* @return unknown *
*/ * @param unknown_type $t
function genie_optimiser($t){ * @return unknown
*/
optimiser_base_une_table(); function genie_optimiser($t) {
optimiser_base_une_table();
// la date souhaitee pour le tour suivant = apres-demain a 4h du mat ; // la date souhaitee pour le tour suivant = apres-demain a 4h du mat ;
// sachant qu'on a un delai de 48h, on renvoie aujourd'hui a 4h du mat // sachant qu'on a un delai de 48h, on renvoie aujourd'hui a 4h du mat
// avec une periode de flou entre 2h et 6h pour ne pas saturer un hebergeur // avec une periode de flou entre 2h et 6h pour ne pas saturer un hebergeur
// qui aurait beaucoup de sites SPIP // qui aurait beaucoup de sites SPIP
return -(mktime(2,0,0) + rand(0, 3600*4)); return -(mktime(2, 0, 0) + rand(0, 3600 * 4));
} }
<paquet <paquet
prefix="corbeille" prefix="corbeille"
categorie="maintenance" categorie="maintenance"
version="3.2.2" version="4.0.0"
etat="stable" etat="stable"
compatibilite="[3.2.0;4.1.*]" compatibilite="[4.1.0;4.2.*]"
logo="prive/themes/spip/images/trash-full-32.png" logo="prive/themes/spip/images/trash-full-32.png"
documentation="https://contrib.spip.net/2855" documentation="https://contrib.spip.net/2855"
> >
<nom>Corbeille</nom> <nom>Corbeille</nom>
<!-- Gestion des documents mis &#224; la corbeille --> <!-- Gestion des documents mis &#224; la corbeille -->
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter