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; }