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