Exemple #1
0
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;
}
Exemple #3
0
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("&amp;","&",urldecode($redirect)),'id_article',$id_article,'&'));
}
Exemple #4
0
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;
}