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; }
function crayons_update_article($id_article, $c = false) { include_spip('action/editer_article'); // Enregistrer les nouveaux contenus revisions_articles($id_article, $c); // En cas de statut ou de id_rubrique // NB: instituer_article veut id_parent, et pas id_rubrique ! if (isset($c['id_rubrique'])) { $c['id_parent'] = $c['id_rubrique']; unset($c['id_rubrique']); } instituer_article($id_article, $c); }
function snippets_articles_importer($id_target,$arbre,$contexte){ include_spip('base/serial'); include_spip('base/abstract_sql'); include_spip('inc/snippets'); $table_prefix = $GLOBALS['table_prefix'] ; $champs_non_importables = array("id_article","id_rubrique","id_secteur","maj","export","visites","referers","popularite","id_trad","idx","id_version","url_propre"); $champs_non_ajoutables = array('titre','date','date_redac','lang'); $champs_jointures = array('auteur','mot'); $champs_defaut_values = array('statut'=>'lememe'); $table = 'spip_articles'; $primary = 'id_article'; $fields = $GLOBALS['tables_principales']['spip_articles']['field']; $tag_objets="articles"; $tag_objet="article"; $translations = array(); $forcer_id = false ; // mettre true pour garder les meme id que dans le XML $forcer_maj = false ; // mettre true pour mettre a jour un lot d'articles de meme titre que dans le spip cible if ($arbre && isset($arbre[$tag_objets])) foreach($arbre[$tag_objets] as $objets){ foreach($objets[$tag_objet] as $objet){ spip_log($objet['titre'],"snippets"); $creation = false; $auteur_connu = false ; // mettre a jour des articles deja en bdd avec le xml fournit if($forcer_maj){ $id_target = ''; $id_article_trouve = sql_fetsel("id_article","spip_articles","titre=".sql_quote($objet['titre'][0])); // ajouter la rub courrante $id_target = $id_article_trouve['id_article'] ; if(!intval($id_target)) spip_log($objet['titre'][0].$id_target,"snippets_titres_erreur"); } include_spip('action/editer_article'); // si c'est une creation, creer le formulaire avec les infos d'entete if (!($id_objet=intval($id_target))){ if (preg_match(",id_rubrique=([0-9]*),i",$contexte,$regs)) $id_rubrique=intval($regs[1]); $id_objet = insert_article($id_rubrique); // forcer l'id if($forcer_id){ $champs_non_importables = array("id_rubrique","id_secteur","maj","export","visites","referers","popularite","id_trad","idx","id_version","url_propre"); $sql = "UPDATE ".$table_prefix."_articles SET id_article = '".$objet['id_article'][0]."' WHERE id_article = '$id_objet'"; spip_query($sql); $id_objet = $objet['id_article'][0] ; } $creation = true; } // sinon on ajoute chaque champ, sauf le titre $row = spip_fetch_array(spip_query("SELECT * FROM $table WHERE $primary="._q($id_objet))); foreach (array_keys($row) as $key) if ( !in_array($key,$champs_non_importables) AND !in_array($key,$champs_jointures) AND ($creation OR !in_array($key,$champs_non_ajoutables) OR !$row[$key]) AND isset($objet[$key])){ $v=trim(spip_xml_aplatit($objet[$key])); $row[$key] = ($creation or $forcer_maj)?$v:($row[$key].$v); } revisions_articles($id_objet , $row); $translations[] = array($table,$objet[$primary],$id_objet); // gerer l'import de liens eventuels if ($id AND isset($objet['liens'])){ foreach($objet['liens'] as $liens){ // A FAIRE } } $id_article = $id_objet ; if ( $objet['auteur'] AND ($creation OR $forcer_maj)){ $auteur_connu = true ; sql_delete("spip_auteurs_articles","id_article=".sql_quote($id_article)); foreach($objet['auteur'] as $nom){ // ajouter l'auteur spip_log($nom,"snippets"); $id_auteur = get_id_auteur($nom); if ($id_auteur) { spip_log($nom.$id_auteur,"snippets"); $sql="INSERT INTO ".$table_prefix."_auteurs_articles (id_auteur, id_article) VALUES ($id_auteur, $id_article)"; spip_query($sql); } } } if($auteur_connu){ // se virer soi-meme $connect_id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ; $sql = "DELETE FROM ".$table_prefix."_auteurs_articles WHERE id_auteur = '$connect_id_auteur' AND id_article = '$id_article'"; spip_query($sql); } // statut de l'article if($champs_defaut_values['statut'] != 'prepa'){ $sql = "UPDATE ".$table_prefix."_articles SET statut = '".$objet['statut'][0]."' WHERE id_article = '$id_article'"; spip_query($sql); } if ( $objet['mot'] AND ($creation OR $forcer_maj)){ sql_delete("spip_mots_articles","id_article=".sql_quote($id_article)); foreach($objet['mot'] as $mot){ spip_log($mot,"snippets"); // ajouter le mot cle $id_article = $id_objet ; $table_prefix = $GLOBALS['table_prefix'] ; $id_mot = get_id_mot($mot); if ($id_mot) { $sql="INSERT INTO ".$table_prefix."_mots_articles (id_mot, id_article) VALUES ($id_mot, $id_article)"; spip_query($sql); } } } if ( $objet['document'] AND ($creation OR $forcer_maj)){ sql_delete("spip_documents_liens","id_objet=".sql_quote($id_article)." and objet='article'"); foreach($objet['document'] as $doc){ spip_log("--> ".$doc,"snippets"); // ajouter le doc list($id,$fichier,$extension,$titre,$descriptif) = explode('|',$doc) ; spip_log("--- $id,$fichier,$extension,$titre","snippets"); spip_log("hop ".$fichier,"snippets"); $table_prefix = $GLOBALS['table_prefix'] ; $id_doc = get_id_doc($fichier); if ($id_doc) { spip_log("hop doc".$fichier."trouve".$id_doc,"snippets"); $sql="INSERT INTO ".$table_prefix."_documents_liens (id_document, id_objet, objet) VALUES ($id_doc, $id_article,'article')"; spip_query($sql); }else{ // au cas ou, on creer un doc, mais il vaut mieux transferer les doc avec toutes les infos avant de snippet $a = array( 'date' => 'NOW()', 'distant' => 'non', 'mode' => 'image', 'titre'=> $titre, 'descriptif'=> $descriptif, 'extension'=> $extension, 'fichier' => $fichier ); //'largeur' => $largeur, //'hauteur' => $hauteur, //'taille' => $taille, if($forcer_id) $a['id_document'] = $id ; $id = sql_insertq("spip_documents", $a); spip_log ("ajout du document $fichier $titre (M 'image' T 'article' L '$id_article' D '$id')","snippets"); sql_insertq("spip_documents_articles", array('id_document' => $id, 'id_article' => $id_article)); } } } } } return $translations; }