134 lines
4.2 KiB
PHP
134 lines
4.2 KiB
PHP
<?php
|
|
if (!defined('_ECRIRE_INC_VERSION')){
|
|
return;
|
|
}
|
|
|
|
|
|
/**
|
|
* fonction de recuperation et liaison image / objet
|
|
*
|
|
* @param $id_objet
|
|
* @param $objet
|
|
* @param $mode
|
|
* @param array $options['secu' => false, 'obfusquer' => false, 'id_document' => ID du document pour lequel on va remplacer le fichier]
|
|
* @return array tableau des id_document $Tid_doc
|
|
*/
|
|
function inc_bigform_traiter_dist($id_objet, $objet = 'article', $mode = 'auto', $options = false) {
|
|
include_spip('inc/joindre_document');
|
|
include_spip('inc/autoriser');
|
|
|
|
$proteger = false;
|
|
$obfusquer = false;
|
|
$id_document = 'new';
|
|
if (is_array($options)) {
|
|
if (array_key_exists('proteger', $options)) {
|
|
$proteger = $options['proteger'];
|
|
}
|
|
if (array_key_exists('obfusquer', $options)) {
|
|
$obfusquer = $options['obfusquer'];
|
|
}
|
|
if (array_key_exists('id_document', $options)
|
|
&& $options['id_document'] == intval($options['id_document'])
|
|
&& intval($options['id_document'])
|
|
) {
|
|
$id_document = $options['id_document'];
|
|
}
|
|
} else {
|
|
if ($options) {
|
|
$proteger = true;
|
|
}
|
|
}
|
|
|
|
set_request('joindre_upload','ok');
|
|
|
|
$files = joindre_trouver_fichier_envoye();
|
|
$html_titre = _request('html_titre');
|
|
$html_ordre = _request('html_ordre');
|
|
|
|
// calcul ordre des titres des files uploades
|
|
$lesTitres = [];
|
|
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];
|
|
}
|
|
}
|
|
|
|
// en mode logoon, on va supprimer le (ou les) anciens logos. on récupère d'abord leurs id
|
|
//if ($mode == 'logoon'){
|
|
//$T_docs_objet = sql_allfetsel('id_document','spip_documents_liens',"id_objet=".intval($id_objet)." AND objet='" . $objet . "'");
|
|
//}
|
|
//
|
|
|
|
/*
|
|
* On peut utiliser une fonction SPIP
|
|
* pour supprimer les logos
|
|
* Si aucune image n'est envoyée, $files est un string
|
|
* et dans ce cas on n'efface rien !
|
|
*/
|
|
if ($mode === 'logoon' and !is_string($files)) {
|
|
include_spip('action/editer_logo');
|
|
logo_supprimer($objet, $id_objet, 'on');
|
|
}
|
|
if ($mode === 'logooff' and !is_string($files)) {
|
|
include_spip('action/editer_logo');
|
|
logo_supprimer($objet, $id_objet, 'off');
|
|
}
|
|
|
|
$Tid_doc = [];
|
|
if (is_array($files) and count($files)) {
|
|
// si l'auteur n'a pas le droit d'associer un document à l'objet lui refiler une autorisation exceptionnelle
|
|
// typiquement les 1comite ne peuvent associer un doc à un article de statut publie...
|
|
$autorisation_temp = false;
|
|
include_spip('inc/autoriser');
|
|
// supprimer les _ du nom de l'objet pour que l'autorisation temporaire fonctionne
|
|
$type = str_replace('_', '', strncmp($objet, '_', 1) == 0 ? $objet : objet_type($objet, false));
|
|
if (!autoriser('associerdocuments', $type, $id_objet)) {
|
|
autoriser_exception('associerdocuments', $type, $id_objet);
|
|
$autorisation_temp = true;
|
|
}
|
|
|
|
$ajouter_document = charger_fonction('ajouter_documents', 'action');
|
|
$Tid_doc = $ajouter_document($id_document, $files, $objet, $id_objet, $mode);
|
|
|
|
if ($autorisation_temp) {
|
|
autoriser_exception('associerdocuments', $type, $id_objet, false);
|
|
}
|
|
|
|
if (is_array($Tid_doc) and count($Tid_doc) and $proteger) {
|
|
include_spip('inc/bigform_securiser_doc');
|
|
bigform_securiser_doc($Tid_doc);
|
|
}
|
|
|
|
if (is_array($Tid_doc) and count($Tid_doc) and $obfusquer) {
|
|
include_spip('inc/bigform_obfusquer_doc');
|
|
bigform_obfusquer_doc($Tid_doc);
|
|
}
|
|
if (is_array($Tid_doc) and count($Tid_doc) and defined('_BIGFORM_OBFUSQUER')) {
|
|
include_spip('inc/bigform_obfusquer_doc');
|
|
bigform_obfusquer_doc($Tid_doc);
|
|
}
|
|
}
|
|
|
|
// si tout s'est bien passé, on supprime le/les anciens logos
|
|
//if ($mode == 'logoon'){
|
|
//foreach ($T_docs_objet as $i => $ligne) {
|
|
//$id_doc = $ligne['id_document'];
|
|
//if (sql_getfetsel('mode','spip_documents','id_document=' . intval($id_doc)) == 'logoon'){
|
|
//sql_delete('spip_documents', 'id_document='.intval($id_doc));
|
|
//sql_delete('spip_documents_liens', 'id_document='.intval($id_doc));
|
|
//}
|
|
//}
|
|
//}
|
|
|
|
if (!empty($html_titre) and count($Tid_doc)) {
|
|
foreach ($Tid_doc as $i => $id_doc) {
|
|
$titre = $lesTitres[$i];
|
|
if ($titre) {
|
|
sql_updateq('spip_documents', array("titre" => $titre), 'id_document='.intval($id_doc));
|
|
}
|
|
}
|
|
}
|
|
|
|
return $Tid_doc;
|
|
}
|