On ajoute un 4 arg à bigform_traiter (false par defaut),

qui permet de deplacer les fichiers dans un dossiers proteger
This commit is contained in:
Christophe 2020-03-20 22:40:43 +01:00
parent a82ea8f707
commit f08682bed9
5 changed files with 62 additions and 4 deletions

12
base/bigform.php Normal file
View file

@ -0,0 +1,12 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')){
return;
}
function bigform_declarer_tables_principales($tables_principales){
$tables_principales['spip_documents']['field']['protected'] = 'varchar(5) NOT NULL';
return $tables_principales;
}

View file

@ -33,6 +33,7 @@ function bigform_upgrade($nom_meta_base_version, $version_cible) {
$maj['create'] = [['ecrire_meta', 'bigup', serialize($config_defaut)]];
$maj['1.0.1'] = [['ecrire_meta', 'bigup', serialize($config_defaut)]];
$maj['1.0.3'] = [['maj_tables', ['spip_documents']]];
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);

View file

@ -0,0 +1,39 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')){
return;
}
function bigform_securiser_doc($Tid_doc){
$rep = sous_repertoire(_DIR_IMG, 'PROTECTED');
$content = "# Deny all requests from Apache 2.4+.
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
# Deny all requests from Apache 2.0-2.2.
<IfModule !mod_authz_core.c>
Deny from all
</IfModule>";
if (!verifier_htaccess($rep . "/.htaccess")) {
ecrire_fichier($rep . "/.htaccess", $content);
}
foreach ($Tid_doc as $id) {
if (intval($id)) {
$r = sql_fetsel('extension, fichier','spip_documents','id_document='.intval($id));
$fichier = $r['fichier'];
$ext = $r['extension'];
sous_repertoire(_DIR_IMG . 'PROTECTED', $ext);
if ($fichier) {
$source = _DIR_IMG . "/" . $fichier;
if (file_exists($source)) {
$d = deplacer_fichier_upload($source, _DIR_IMG . 'PROTECTED/' . $fichier, true);
if ($d) {
sql_updateq('spip_documents',['protected' => 'oui'], 'id_document='.$id);
}
}
}
}
}
}

View file

@ -11,7 +11,7 @@ if (!defined('_ECRIRE_INC_VERSION')){
* @param $mode
* @return array tableau des id_document $Tid_doc
*/
function inc_bigform_traiter_dist($id_objet, $objet = 'article', $mode='auto') {
function inc_bigform_traiter_dist($id_objet, $objet = 'article', $mode='auto', $secu = false) {
include_spip('inc/joindre_document');
set_request('joindre_upload','ok');
@ -21,7 +21,7 @@ function inc_bigform_traiter_dist($id_objet, $objet = 'article', $mode='auto') {
// calcul ordre des titres des files uploades
$lesTitres = [];
if (is_array($files)){
if (is_array($files) and is_array($html_ordre)){
foreach ($files as $i => $t) {
$index = array_search($t['name'], $html_ordre);
$lesTitres[] = $html_titre[$index];
@ -53,6 +53,11 @@ function inc_bigform_traiter_dist($id_objet, $objet = 'article', $mode='auto') {
if (is_array($files) and count($files)) {
$ajouter_document = charger_fonction('ajouter_documents', 'action');
$Tid_doc = $ajouter_document('new', $files, $objet, $id_objet,$mode);
if (is_array($Tid_doc) and count($Tid_doc) and $secu) {
include_spip('inc/bigform_securiser_doc');
bigform_securiser_doc($Tid_doc);
}
}
// si tout s'est bien passé, on supprime le/les anciens logos

View file

@ -1,12 +1,12 @@
<paquet
prefix="bigform"
categorie="edition"
version="1.0.5"
version="1.0.7"
etat="dev"
compatibilite="[3.2.5;3.3.*]"
logo="prive/themes/spip/images/bigform-64.png"
documentation=""
schema="1.0.1"
schema="1.0.3"
>
<nom>BigForm</nom>
@ -19,6 +19,7 @@
<necessite nom="bigup" compatibilite="[1.0.0;[" />
<pipeline nom="autoriser" inclure="bigform_autorisations.php" />
<pipeline nom="declarer_tables_principales" inclure="base/bigform.php" />
</paquet>