X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fplugins%2Fauto%2Ftradrub%2Ftradrub_pipelines.php;fp=www%2Fplugins%2Fauto%2Ftradrub%2Ftradrub_pipelines.php;h=49583925811920946184b2e1593e1e414d003966;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/plugins/auto/tradrub/tradrub_pipelines.php b/www/plugins/auto/tradrub/tradrub_pipelines.php new file mode 100644 index 0000000..4958392 --- /dev/null +++ b/www/plugins/auto/tradrub/tradrub_pipelines.php @@ -0,0 +1,81 @@ + $id), array('ajax'=>true)); + $flux['data'] .= $trad; + } + return $flux; +} + +/** + * enregistrer les liens entre traductions au moment d'une creation + * de rubrique traduite + * + * @param array $flux + * @return array + */ +function tradrub_post_edition($flux) { + if ((($table = $flux['args']['table']) == 'spip_rubriques') + and ($id_objet = $flux['args']['id_objet']) + and ($flux['args']['action'] == "modifier") + and ($id_trad = _request('lier_trad'))) { + // seulement si id_trad n'est pas deja defini (nouvelle rubrique donc absolument) + $existant = sql_getfetsel('id_trad', 'spip_rubriques', 'id_rubrique='. sql_quote($id_objet)); + if (!$existant) { + rubrique_referente($id_objet, array('lier_trad' => $id_trad)); + } + } + return $flux; +} + + +// ~= ecrire/action/editer_article +// Poser un lien de traduction vers un rubrique de reference +function rubrique_referente($id_rubrique, $c) { + + if (!$c = intval($c['lier_trad'])) return; + + // selectionner la rubrique cible, qui doit etre different de nous-meme, + // et quitter s'il n'existe pas + $id_lier = sql_getfetsel('id_trad', 'spip_rubriques', array( + "id_rubrique = " . sql_quote($c), + "id_rubrique <>" . sql_quote($id_rubrique)) + ); + + if ($id_lier === NULL) + { + spip_log("echec lien de trad vers rubrique incorrect ($lier_trad)"); + return '&trad_err=1'; + } + + // $id_lier est le numero du groupe de traduction + // Si la rubrique visee n'est pas deja traduite, son identifiant devient + // le nouvel id_trad de ce nouveau groupe et on l'affecte aux deux + // articles + if ($id_lier == 0) { + sql_updateq("spip_rubriques", array("id_trad" => $c), sql_in("id_rubrique", array($c, $id_rubrique))); + } + // sinon ajouter notre rubrique dans le groupe + else { + sql_updateq("spip_rubriques", array("id_trad" => $id_lier), "id_rubrique = ". sql_quote($id_rubrique)); + } + + return ''; // pas d'erreur +} + +?>