function action_legender_post($r) { $id_document = $r[1]; $modifs = array(); // taille du document (cas des embed) if ($largeur_document = intval(_request('largeur_document')) AND $hauteur_document = intval(_request('hauteur_document'))) { $modifs['largeur'] = $largeur_document; $modifs['hauteur'] = $hauteur_document; } // Date du document (uniquement dans les rubriques) if (_request('jour_doc') !== null) { $mois_doc = _request('mois_doc'); $jour_doc = _request('jour_doc'); $heure_doc = _request('heure_doc'); $minute_doc = _request('minute_doc'); if (_request('annee_doc') == "0000") $mois_doc = "00"; if ($mois_doc == "00") $jour_doc = "00"; if ($jour_doc == "00"){ $heure_doc = "00"; $minute_doc = "00"; } $date = sprintf('%04d',intval(_request('annee_doc'))) .'-'.sprintf('%02d', intval($mois_doc)) .'-'.sprintf('%02d',intval($jour_doc)) .' '.sprintf('%02d',intval($heure_doc)) .':'.sprintf('%02d',intval($minute_doc)) .':00'; $modifs['date'] = $date; } if (($t = _request('titre_document')) !== NULL) $modifs['titre'] = $t; if (($t = _request('descriptif_document')) !== NULL) $modifs['descriptif'] = $t; include_spip('inc/modifier'); revision_document($id_document, $modifs); }
function vignette_revision($id, $data, $type, $ref) { $s = sql_fetsel("id_document,id_vignette", "spip_documents", "id_document=" . intval($id)); if (!is_array($s)) { return false; } include_spip('inc/modifier'); include_spip('inc/documents'); include_spip('action/editer_document'); //pour revision_document // Chargement d'un nouveau doc ? if ($data['vignette']) { define('FILE_UPLOAD', true); if (is_numeric($s['id_vignette']) && $s['id_vignette'] > 0) { spip_log('suppression de la vignette'); // Suppression du document $vignette = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($s['id_vignette'])); if (@file_exists($f = get_spip_doc($vignette))) { spip_log("efface {$f}"); supprimer_fichier($f); } sql_delete('spip_documents', 'id_document=' . intval($s['id_vignette'])); sql_delete('spip_documents_liens', 'id_document=' . intval($s['id_vignette'])); pipeline('post_edition', array('args' => array('operation' => 'supprimer_document', 'table' => 'spip_documents', 'id_objet' => $s['id_vignette']), 'data' => null)); $id_vignette = 0; } $arg = $data['vignette']; check_upload_error($arg['error']); // Ajout du document comme vignette /** * Méthode >= SPIP 3.0 * ou SPIP 2.x + Mediatheque */ if ($ajouter_documents = charger_fonction('ajouter_documents', 'action', true)) { $x = $ajouter_documents(null, array($arg), '', 0, 'vignette'); $vignette = reset($x); if (intval($vignette)) { document_modifier($id, array('id_vignette' => $vignette)); } else { if ($id_vignette) { document_modifier($id, array('id_vignette' => $id_vignette)); } } } else { if ($ajouter_documents = charger_fonction('ajouter_documents', 'inc', true)) { // On remet l'id_vignette a 0 si on l'a supprimé if ($id_vignette) { revision_document($s['id_document'], array('id_vignette' => 0)); } $x = $ajouter_documents($arg['tmp_name'], $arg['name'], '', '', 'vignette', $id, $actifs); } } } else { // Suppression de la vignette ? if ($wid = array_pop($ref) and $_POST['content_' . $wid . '_vignette_supprimer'] == 'on') { if (is_numeric($s['id_vignette']) && $s['id_vignette'] > 0) { // Suppression du document $vignette = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($s['id_vignette'])); if (@file_exists($f = get_spip_doc($vignette))) { spip_log("efface {$f}"); supprimer_fichier($f); } sql_delete('spip_documents', 'id_document=' . intval($s['id_vignette'])); sql_delete('spip_documents_liens', 'id_document=' . intval($s['id_vignette'])); pipeline('post_edition', array('args' => array('operation' => 'supprimer_document', 'table' => 'spip_documents', 'id_objet' => $s['id_vignette']), 'data' => null)); // On remet l'id_vignette a 0 revision_document($s['id_document'], array('id_vignette' => 0)); } } } return true; }
function action_odt2spip_importe() { global $visiteur_session; $id_auteur = $visiteur_session['id_auteur']; $arg = _request('arg'); $args = explode(":",$arg); // le 1er element de _request('arg') est id_rubrique=XXX $Targs = explode("=", $args[0]); $id_rubrique = $Targs[1]; $hash = _request('hash'); $redirect = _request('redirect'); if ($redirect==NULL) $redirect=""; include_spip("inc/securiser_action"); if (!autoriser('creerarticledans', 'rubrique', $id_rubrique)) die(_T('avis_non_acces_page')); // ss-rep temporaire specifique de l'auteur en cours: tmp/odt2spip/id_auteur/ => le creer si il n'existe pas $base_dezip = _DIR_TMP."odt2spip/"; // avec / final if (!is_dir($base_dezip)) if (!sous_repertoire(_DIR_TMP,'odt2spip')) die (_T('odtspip:err_repertoire_tmp')); $rep_dezip = $base_dezip.$id_auteur.'/'; if (!is_dir($rep_dezip)) if (!sous_repertoire($base_dezip,$id_auteur)) die (_T('odtspip:err_repertoire_tmp')); // traitement d'un fichier odt envoye par $_POST $fichier_zip = addslashes($_FILES['fichier_odt']['name']); if ($_FILES['fichier_odt']['name'] == '' OR $_FILES['fichier_odt']['error'] != 0 OR !move_uploaded_file($_FILES['fichier_odt']['tmp_name'], $rep_dezip.$fichier_zip) ) die(_T('odtspip:err_telechargement_fichier')); // dezipper le fichier odt a la mode SPIP include_spip("inc/pclzip"); $zip = new PclZip($rep_dezip.$fichier_zip); $ok = $zip->extract( PCLZIP_OPT_PATH, $rep_dezip, PCLZIP_OPT_SET_CHMOD, _SPIP_CHMOD, PCLZIP_OPT_REPLACE_NEWER ); if ($zip->error_code < 0) { spip_log('charger_decompresser erreur zip ' . $zip->error_code .' pour fichier ' . $rep_dezip.$fichier_zip); die($zip->errorName(true)); //$zip->error_code } // Creation du fichier necessaire a snippets $odt2spip_generer_sortie = charger_fonction('odt2spip_generer_sortie','inc'); list($fichier_sortie,$xml_sortie) = $odt2spip_generer_sortie($id_auteur,$rep_dezip); // generer l'article a partir du fichier xml de sortie (code pompe sur plugins/snippets/action/snippet_importe.php) include_spip('inc/snippets'); $table = $id = 'articles'; $contexte = $args[0]; $source = $fichier_sortie; if (!$f = snippets_fonction_importer($table)) die(_T('odtspip:err_import_snippet')); include_spip('inc/xml'); $arbre = spip_xml_load($source, false); $translations = $f($id,$arbre,$contexte); snippets_translate_raccourcis_modeles($translations); $id_article = $translations[0][2]; // si on est en 2.0 passer le statut de l'article en prepa sql_updateq('spip_articles', array('statut' => 'prop'), 'id_article='.$id_article); // si necessaire attacher le fichier odt original a l'article et lui mettre un titre signifiant if (_request('attacher_odt') == '1') { // recuperer le titre preg_match('/<titre>(.*?)<\/titre>/', $xml_sortie, $match); $titre = $match[1]; if (!isset($ajouter_documents)) $ajouter_documents = charger_fonction('ajouter_documents','inc'); // la y'a un bogue super-bizarre avec la fonction spip_abstract_insert() qui est donnee comme absente lors de l'appel de ajouter_document() if (!function_exists('spip_abstract_insert')) include_spip('base/abstract_sql'); $id_doc_odt = $ajouter_documents($rep_dezip.$fichier_zip, $fichier_zip, "article", $id_article, 'document', 0, $toto=''); $c = array( 'titre' => $titre, 'descriptif' => _T('odtspip:cet_article_version_odt') ); include_spip('inc/modifier'); revision_document($id_doc_odt,$c); } if (!function_exists('effacer_repertoire_temporaire')) include_spip('inc/getdocument'); // vider le contenu du rep de dezippage effacer_repertoire_temporaire($rep_dezip); // aller sur la page de l'article qui vient d'etre cree redirige_par_entete(parametre_url(str_replace("&","&",urldecode($redirect)),'id_article',$id_article,'&')); }
function vignette_revision($id, $data, $type, $ref) { $s = sql_fetsel("*","spip_documents","id_document=".intval($id)); if (!is_array($s)) return false; include_spip('inc/modifier'); include_spip('inc/documents'); // Chargement d'un nouveau doc ? if ($data['vignette']) { define('FILE_UPLOAD', true); if(is_numeric($s['id_vignette']) && ($s['id_vignette']>0)){ spip_log('suppression de la vignette'); // Suppression du document $vignette = sql_getfetsel('fichier', 'spip_documents', 'id_document='.intval($s['id_vignette'])); if (@file_exists($f = get_spip_doc($vignette))) { spip_log("efface $f"); supprimer_fichier($f); } sql_delete('spip_documents', 'id_document='.intval($s['id_vignette'])); sql_delete('spip_documents_liens', 'id_document='.intval($s['id_vignette'])); pipeline('post_edition', array( 'args' => array( 'operation' => 'supprimer_document', 'table' => 'spip_documents', 'id_objet' => $s['id_vignette'] ), 'data' => null ) ); // On remet l'id_vignette a 0 revision_document($s['id_document'], array('id_vignette'=>0)); } // Ajout du document comme vignette $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); $arg = $data['vignette']; check_upload_error($arg['error']); $x = $ajouter_documents($arg['tmp_name'], $arg['name'],'','', 'vignette', $id, $actifs); }else // Suppression de la vignette ? if ($wid = array_pop($ref) AND $_POST['content_'.$wid.'_vignette_supprimer'] == 'on') { if(is_numeric($s['id_vignette']) && ($s['id_vignette']>0)){ // Suppression du document $vignette = sql_getfetsel('fichier', 'spip_documents', 'id_document='.intval($s['id_vignette'])); if (@file_exists($f = get_spip_doc($vignette))) { spip_log("efface $f"); supprimer_fichier($f); } sql_delete('spip_documents', 'id_document='.intval($s['id_vignette'])); sql_delete('spip_documents_liens', 'id_document='.intval($s['id_vignette'])); pipeline('post_edition', array( 'args' => array( 'operation' => 'supprimer_document', 'table' => 'spip_documents', 'id_objet' => $s['id_vignette'] ), 'data' => null ) ); // On remet l'id_vignette a 0 revision_document($s['id_document'], array('id_vignette'=>0)); } } return true; }