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