function formulaires_illustrer_document_traiter_dist($id_document)
{
    $id_vignette = sql_getfetsel('id_vignette', 'spip_documents', 'id_document=' . intval($id_document));
    $res = array('editable' => true);
    if (_request('supprimer')) {
        $supprimer_document = charger_fonction('supprimer_document', 'action');
        if ($id_vignette and $supprimer_document($id_vignette)) {
            $res['message_ok'] = _T('medias:vignette_supprimee');
        } else {
            $res['message_erreur'] = _T('medias:erreur_suppression_vignette');
        }
    } else {
        $ajouter_documents = charger_fonction('ajouter_documents', 'action');
        include_spip('inc/joindre_document');
        $files = joindre_trouver_fichier_envoye();
        $ajoute = $ajouter_documents($id_vignette, $files, '', 0, 'vignette');
        if (is_numeric(reset($ajoute)) and $id_vignette = reset($ajoute)) {
            include_spip('action/editer_document');
            document_modifier($id_document, array("id_vignette" => $id_vignette, 'mode' => 'document'));
            $res['message_ok'] = _T('medias:document_installe_succes');
        } else {
            $res['message_erreur'] = reset($ajoute);
        }
    }
    // todo :
    // generer les case docs si c'est necessaire
    // rediriger sinon
    return $res;
}
예제 #2
0
/**
 * Fonction d'ajout des versions dans la file d'attente
 *
 * @param int $id_document l'id du document original
 * @param string $objet
 * @param int $id_objet
 */
function action_zencoder_notification()
{
    include_spip('inc/config');
    include_spip('inc/renseigner_document');
    $id_document = _request('id_document');
    $api_key = lire_config('zencoder/api_key');
    spip_log('notification start', 'zencoder');
    // Catch notification
    $notification = json_decode(trim(file_get_contents('php://input')), true);
    spip_log($notification, 'zencoder');
    // Check output/job state
    if ($notification['output']['state'] == 'finished') {
        spip_log('notification job finished', 'zencoder');
        $file = $notification['output']['url'];
        if ($file) {
            $ajouter_documents = charger_fonction('ajouter_documents', 'action');
            $copie_local = charger_fonction('copier_local', 'action');
            spip_log('notification job file' . $file, 'zencoder');
            set_request('joindre_distant', true);
            set_request('url', $file);
            include_spip('inc/joindre_document');
            $files = joindre_trouver_fichier_envoye();
            $nouveaux_doc = $ajouter_documents('new', $files, 'document', $id_document, 'conversion');
            $copie_local($nouveaux_doc[0]);
            /**
             * Invalidation du cache
             */
            include_spip('inc/invalideur');
            suivre_invalideur("0", true);
        }
    } elseif ($notification['output']['state'] == "cancelled") {
        spip_log('canceled' . print_r($notification), 'zencoder');
    } else {
        spip_log('error' . print_r($notification), 'zencoder');
    }
    return;
}
예제 #3
0
function formulaires_upload_traiter_dist($objet, $id_objet, $fond_documents){
	$res = array('editable'=>' ', 'message_ok'=>'');

	$invalider = false;
	$type = objet_type($objet);
	$res['message_ok'] = "";
	$compteur=0;

	// titrer des documents ?
	if (is_array(_request('ref'))) {
		foreach (_request('ref') as $ref) {
		$ref = intval($ref);
			if ($titre = _request("titrer_$ref")) {
			if (formulaireupload_verifier_doc_liaison($ref,$id_objet,$type))
				sql_updateq('spip_documents', array('titre' => $titre) ,'id_document='.$ref);         
			}
		}     
	}

	// supprimer des documents ?   
	if (is_array(_request('supprimer'))) {
	foreach (_request('supprimer') as $supprimer) {
		if ($supprimer = intval($supprimer)) {
			include_spip('inc/autoriser');
		if (formulaireupload_verifier_doc_liaison($supprimer,$id_objet,$type)) {
			sql_delete('spip_documents_liens', 'id_document='.$supprimer);
				$supprimer_document = charger_fonction('supprimer_document','action');
				$supprimer_document($supprimer);
				$invalider = true;
				$compteur++; 			
			spip_log("supprimer document ($type)".$supprimer, 'upload');
		} 			
		}
  	}
	$res['message_ok'] .= _T("formupload:msg_doc_deleted",array("compteur"=>$compteur))."<br />";
	}

	// Ajouter un document (cf plugins-dist/medias)
	include_spip('inc/joindre_document');
	$files = joindre_trouver_fichier_envoye();

	if (is_array($files)) {     
	$compteur = 0; 

	// gestion des quotas ?
	$quota = intval(lire_config("formulaireupload/files_quota"));
	$quota_left = 100;
	if ($quota>0) {
			if ($res_nb_objet = sql_select('id_document', 'spip_documents_liens', array("objet = '$type'",'id_objet='.intval($id_objet))))
						$nb_objet = sql_count($res_nb_objet);
			$quota_left = $quota - $nb_objet;  
			if ($quota_left<1 OR $quota_left<count($files)) 
				$res['message_ok'] .=  _T("formupload:msg_doc_added_max",array("max"=>$quota))."<br />";

		// on reduit les fichiers proposés par le quota restant       
			array_splice($files, $quota_left); 
    }


	// upload des fichiers
	if ($quota_left>0) {
		$ajouter_documents = charger_fonction('ajouter_documents', 'action');
		$nouveaux_doc = $ajouter_documents($id_document,$files,$objet,$id_objet,'document');

		$compteur = count($nouveaux_doc);
	}
	/* A verifier:
		- securite : verifier les extenxions (si forcing)

	*/
		$invalider = true;
		if ($compteur>0)
		$res['message_ok'] .= _T("formupload:msg_doc_added",array("compteur"=>$compteur));
	}

	if ($invalider) {
		include_spip('inc/invalideur');
		suivre_invalideur("0",true);
		spip_log('invalider', 'upload');
	}

	return $res;
}
/**
 * Traitement du formulaire
 *
 * @param int|string $id_document
 *    L'identidiant numérique du document s'il est à remplacer, sinon "new"
 * @param int $id_objet
 *    L'identifiant numérique de l'objet sur lequel on ajoute le document
 * @param string $objet
 *    Le type de l'objet sur lequel on ajoute le document
 * @param string $mode
 *    Le mode du document (auto,choix,document,image,vignette...), par défaut auto
 * @param string $galerie
 *    Passer optionnellement une galerie jointe au form, plus utilise nativement,
 *    on prefere la mise a jour apres upload par ajaxReload('documents')
 * @param bool|string $proposer_media
 *    Doit on afficher la médiathèque ?  par défaut oui
 *    Valeurs possibles si string : false,'non','no'.
 * @param bool|string $proposer_ftp
 *    Doit on afficher le ftp ? par défaut oui
 *    Valeurs possibles si string : false,'non','no'.
 * @return array $res
 *    Le tableau renvoyé par les CVT avec le message et editable
 */
function formulaires_joindre_document_traiter_dist($id_document = 'new', $id_objet = 0, $objet = '', $mode = 'auto', $galerie = false, $proposer_media = true, $proposer_ftp = true)
{
    $res = array('editable' => true);
    $ancre = '';
    // on joint un document deja dans le site
    if (_request('joindre_mediatheque')) {
        $refdoc_joindre = _request('refdoc_joindre');
        $refdoc_joindre = strtr($refdoc_joindre, ";,", "  ");
        $refdoc_joindre = preg_replace(',\\b(doc|document|img),', '', $refdoc_joindre);
        // expliciter les intervales xxx-yyy
        while (preg_match(",\\b(\\d+)-(\\d+)\\b,", $refdoc_joindre, $m)) {
            $refdoc_joindre = str_replace($m[0], implode(" ", range($m[1], $m[2])), $refdoc_joindre);
        }
        $refdoc_joindre = explode(" ", $refdoc_joindre);
        include_spip('action/editer_document');
        foreach ($refdoc_joindre as $j) {
            if ($j = intval(preg_replace(',^(doc|document|img),', '', $j))) {
                // lier le parent en plus
                $champs = array('ajout_parents' => array("{$objet}|{$id_objet}"));
                document_modifier($j, $champs);
                if (!$ancre) {
                    $ancre = $j;
                }
                $sel[] = $j;
                $res['message_ok'] = _T('medias:document_attache_succes');
            }
        }
        if ($sel) {
            $res['message_ok'] = singulier_ou_pluriel(count($sel), 'medias:document_attache_succes', 'medias:nb_documents_attache_succes');
        }
        set_request('refdoc_joindre', '');
        // vider la saisie
    } else {
        $ajouter_documents = charger_fonction('ajouter_documents', 'action');
        $mode = joindre_determiner_mode($mode, $id_document, $objet);
        include_spip('inc/joindre_document');
        $files = joindre_trouver_fichier_envoye();
        $nouveaux_doc = $ajouter_documents($id_document, $files, $objet, $id_objet, $mode);
        if (defined('_tmp_zip')) {
            unlink(_tmp_zip);
        }
        if (defined('_tmp_dir')) {
            effacer_repertoire_temporaire(_tmp_dir);
        }
        // checker les erreurs eventuelles
        $messages_erreur = array();
        $nb_docs = 0;
        $sel = array();
        foreach ($nouveaux_doc as $doc) {
            if (!is_numeric($doc)) {
                $messages_erreur[] = $doc;
            } elseif (!$doc) {
                $messages_erreur[] = _T('medias:erreur_insertion_document_base', array('fichier' => '<em>???</em>'));
            } else {
                if (!$ancre) {
                    $ancre = $doc;
                }
                $sel[] = $doc;
            }
        }
        if (count($messages_erreur)) {
            $res['message_erreur'] = implode('<br />', $messages_erreur);
        }
        if ($sel) {
            $res['message_ok'] = singulier_ou_pluriel(count($sel), 'medias:document_installe_succes', 'medias:nb_documents_installe_succes');
        }
        if ($ancre) {
            $res['redirect'] = "#doc{$ancre}";
        }
    }
    if (count($sel) or isset($res['message_ok'])) {
        $callback = "";
        if ($ancre) {
            $callback .= "jQuery('#doc{$ancre} a.editbox').eq(0).focus();";
        }
        if (count($sel)) {
            // passer les ids document selectionnes aux pipelines
            $res['ids'] = $sel;
            $sel = "#doc" . implode(",#doc", $sel);
            $callback .= "jQuery('{$sel}').animateAppend();";
        }
        $js = "if (window.jQuery) jQuery(function(){ajaxReload('documents',{callback:function(){ {$callback} }});});";
        $js = "<script type='text/javascript'>{$js}</script>";
        if (isset($res['message_erreur'])) {
            $res['message_erreur'] .= $js;
        } else {
            $res['message_ok'] .= $js;
        }
    }
    return $res;
}
function article_import_k2($mon_article)
{
    include_spip('joomla2spip_fonctions');
    include_spip('plugins/installer');
    $err = '';
    // chercher si l'article n'a pas deja ete importe
    $ancien_id = $mon_article['id_article'];
    $result = sql_fetsel('id_article', 'spip_articles', 'id_article=' . intval($ancien_id));
    if ($result) {
        return;
    }
    // chercher la rubrique
    $titre_rub = $mon_article['rubrique'];
    $result = sql_fetsel('id_rubrique', 'spip_rubriques', 'titre=' . sql_quote($titre_rub));
    if ($result) {
        $id_rubrique = $result['id_rubrique'];
    }
    // creer article vide
    include_spip('action/editer_article');
    $id_article = insert_article($id_rubrique);
    $sql = "UPDATE spip_articles SET id_article = '{$ancien_id}' WHERE id_article = '{$id_article}'";
    spip_query($sql);
    if (spip_version_compare($GLOBALS['spip_version_branche'], '3.0.0', '>=')) {
        include_spip('action/editer_article');
        $sql = "UPDATE spip_auteurs_liens SET id_objet = '{$ancien_id}' WHERE id_objet = '{$id_article}' AND objet = 'article'";
    } else {
        include_spip('inc/modifier');
        $sql = "UPDATE spip_auteurs_articles SET id_article = '{$ancien_id}' WHERE id_article = '{$id_article}'";
    }
    spip_query($sql);
    $id_article = $ancien_id;
    // le remplir
    $c = array();
    foreach (array('surtitre', 'titre', 'soustitre', 'descriptif', 'nom_site', 'url_site', 'chapo', 'texte', 'maj', 'ps', 'visites') as $champ) {
        $c[$champ] = $mon_article[$champ];
    }
    revisions_articles($id_article, $c);
    // Modification de statut, changement de rubrique ?
    $c = array();
    foreach (array('date', 'statut', 'id_parent') as $champ) {
        $c[$champ] = $mon_article[$champ];
    }
    $c['id_parent'] = $id_rubrique;
    $err .= instituer_article($id_article, $c);
    // Un lien de trad a prendre en compte
    if (!spip_version_compare($GLOBALS['spip_version_branche'], '3.0.0', '>=')) {
        $err .= article_referent($id_article, array('lier_trad' => _request('lier_trad')));
    }
    // ajouter les extras
    // les documents attachées
    if (isset($mon_article['document']) and count($mon_article['document']) > 0) {
        $ajouter_documents = charger_fonction('ajouter_documents', 'action');
        $copie_local = charger_fonction('copier_local', 'action');
        include_spip('inc/joindre_document');
        include_spip('formulaires/joindre_document');
        foreach ($mon_article['document'] as $document) {
            $file = url_absolue('media/k2/attachments/' . $document['fichier']);
            spip_log($file, 'teste');
            set_request('joindre_distant', true);
            set_request('url', $file);
            $files = joindre_trouver_fichier_envoye();
            $mode = joindre_determiner_mode('auto', 'new', 'article');
            $nouveaux_doc = $ajouter_documents('new', $files, 'article', $id_article, $mode);
            spip_log($nouveaux_doc, 'teste');
            $id_document = $nouveaux_doc[0];
            $copie_local($id_document);
            $titre = isset($document['titre']) ? $document['titre'] : '';
            sql_updateq('spip_documents', array('titre' => $titre), 'id_document=' . $id_document);
        }
    }
    return $err;
}