Index: /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/exec/svn_update.php
===================================================================
--- /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/exec/svn_update.php	(revision 132)
+++ /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/exec/svn_update.php	(revision 132)
@@ -0,0 +1,95 @@
+<?php
+
+include_spip('inc/svn_update');
+
+# redefinissables dans ecrire/mes_options ; si on veut en mettre
+# plusieurs separer par des deux-points
+define('_SVN_UPDATE_AUTEURS', '2');
+# fichier source
+define('_SVN_UPDATE_FILE', find_in_path('svn_update_list.txt'));
+
+# securite
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function exec_svn_update() {
+	global $connect_statut, $connect_id_auteur, $connect_toutes_rubriques;
+	global $exec;
+	include_spip('inc/presentation');
+	include_spip('inc/config');
+
+	pipeline('exec_init',
+		array('args'=>array('exec'=>'configuration'),'data'=>''));
+
+	debut_page(_L('Update SVN'), "configuration", "configuration");
+	echo "<br><br><br>";
+	gros_titre(_L('Update SVN'));
+
+
+	if ($connect_statut != '0minirezo'
+	OR !in_array($connect_id_auteur, explode(':', _SVN_UPDATE_AUTEURS))) {
+		echo _T('avis_non_acces_page');
+// debug		echo ($connect_statut);
+// debug		echo ($connect_id_auteur);
+		fin_page();
+		exit;
+	}
+
+	debut_gauche();
+	debut_droite();
+
+	if (!defined('_SVN_UPDATE_FILE')
+	OR !file_exists(_SVN_UPDATE_FILE)) {
+		die ("Fichier de configuration "._SVN_UPDATE_FILE." absent");
+	}
+	$config = file(_SVN_UPDATE_FILE);
+
+	$dirs_ok = array();
+	foreach ($config as $l) {
+		$l = trim($l);
+		if ($l AND substr($l,0,1) != "#") {
+			list($src,$dest) = explode(' ', $l);
+			$dirs_ok[$dest] = $l;
+			$sources[$dest] = $src;
+		}
+	}
+
+	if ($dirs_ok) {
+
+		chdir(_DIR_RACINE);
+		// Appliquer la demande
+		if (_request('dir_svn') == -1) {
+			traiter_config_svn($config);
+		} else
+		if ($dir_svn = _request('dir_svn')
+		AND isset($dirs_ok[$dir_svn])) {
+			traiter_config_svn(array($dirs_ok[$dir_svn]));
+		}
+		chdir(_DIR_RESTREINT_ABS);
+
+
+		// Menu
+
+		echo _L("Choisir le r&eacute;pertoire &agrave; mettre &agrave; jour&nbsp;: ");
+		echo "<form action='./?exec=$exec' method='post'>
+		<input type='hidden' name='exec' value='$exec' />
+		<select name='dir_svn'>
+		<option value=''></option>";
+		foreach ($dirs_ok as $dir => $source) {
+			echo "<option value='$dir'>".$dir
+				." depuis ".$sources[$dir]."</option>\n";
+		}
+		echo "<option value='-1'>** "._L('Tous')."</option>\n";
+		echo "</select>
+		<input type='submit' value='Update' />
+		</form>
+		";
+
+	} else
+		echo _L("D&eacute;sol&eacute;, aucun r&eacute;pertoire n'est accessible en SVN.");
+
+
+	fin_page();
+
+}
+
+?>
Index: /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/inc/svn_update.php
===================================================================
--- /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/inc/svn_update.php	(revision 132)
+++ /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/inc/svn_update.php	(revision 132)
@@ -0,0 +1,73 @@
+<?php
+
+	define('_SVN_COMMAND', 'svn');
+
+	// la fonction qui fait le travail
+	function update_svn($l) {
+		$l = trim($l);
+
+		if (!$l OR substr($l,0,1) == '#') return NULL; // commentaires
+
+		@list($src, $dest, $rev, $user) = explode(' ',$l);
+
+		if (!preg_match(',^(https?|svn)://,', $src))
+			return $src; // erreur
+
+		if (!is_dir($dest))
+			mkdir($dest, 0755, 'recursive');
+
+		if (!is_dir($dest)
+		OR !is_writable($dest))
+			return "Impossible d'ecrire dans ".$dest; // erreur
+
+		// Checkout ?
+		if (!file_exists($entries = "$dest/.svn/entries")) {
+			$command = "checkout $src/ $dest/";
+		}
+
+		else {
+		/*	$entries = join("\n", file($entries));
+			echo $entries;
+			if (!preg_match(',\surl="([^"]+)",', $entries, $r))
+				return "fichier .svn/entries non conforme ou illisible";
+			$old_src = $r[1];
+		
+			// Switch ?
+			if ($old_src != $src) {
+				$command = "switch --relocate $old_src/ $src/ $dest/";
+			}
+ 		*/			
+			// Update
+	      //	else {
+				if ($rev)
+					$command = "update --revision $rev $dest/";
+				else
+					$command = "update $dest/";
+	//		}
+		}
+
+		if ($command) {
+			$command = _SVN_COMMAND." $user ".$command;
+			$out = array();
+			exec($command,$out);
+			array_unshift($out, $command);
+			return $out;
+		}
+
+	}
+
+	function traiter_config_svn($config = array()) {
+		foreach($config as $l) {
+			echo "<hr /><b>", htmlspecialchars($l), "</b>";
+			$res = update_svn($l);
+			if (is_string($res))
+				echo "<br /><b>Erreur: ",
+					htmlspecialchars($res),
+					"</b>";
+			if (is_array($res))
+				echo "<br />".nl2br(htmlspecialchars(join("\n", $res)));
+			echo "<br />\n";
+		}
+	}
+
+?>
Index: /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/plugin.xml
===================================================================
--- /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/plugin.xml	(revision 132)
+++ /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/plugin.xml	(revision 132)
@@ -0,0 +1,31 @@
+<plugin>
+	<nom> <!-- Nom du plugin -->
+	SVN Update redCTA
+	</nom>
+	<auteur>	<!-- Auteur du plugin -->
+	Cedric &amp; Fil
+_ &copy; 2006 - Distribu&#233; sous licence GNU/GPL&#233;
+modificado por Sebas
+	</auteur>
+	<version>
+	0.2
+	</version>
+	<etat>
+	stable
+	</etat>
+	<description>
+	Un utilisateur (par defaut, l'administrateur numero 1) est autoris&#233; &#224; faire une mise &#224; jour SVN du site ou de tout autre r&#233;pertoire. Pour cela il doit se rendre sur la page [ecrire/?exec=svn_update->./?exec=svn_update] et s&#233;lectionner les &#233;l&#233;ments &#224; mettre &#224; jour.
+
+La configuration se fait &#224; deux emplacements :
+- dans <code>ecrire/mes_options.php</code>, on indique la liste des administrateurs autoris&#233;s &#224; proc&#233;der aux mises &#224; jour, par exemple avec :
+_ <code>define('_SVN_UPDATE_AUTEURS', '1:3');</code>
+- Dans le fichier <code>svn_update_list.txt</code> (&#224; recopier dans son r&#233;pertoire personnel de squelettes), on indique la liste des r&#233;pertoires concern&#233;s, en donnant pour chacun une ligne :
+_ <code>source destination [revision] [user]</code>
+_ Par exemple :
+_ <code>svn://zone.spip.org/spip-zone/_squelettes_/sedna sedna</code>
+	</description>
+	<lien></lien> <!-- URI de documentation -->
+	<prefix>
+	svn_update-redcta
+	</prefix>
+</plugin>
Index: /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/svn_update_list.txt
===================================================================
--- /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/svn_update_list.txt	(revision 132)
+++ /trunk/spip/esqueleto-redcta/plugins/svn_update-redcta-spip-1-9/svn_update_list.txt	(revision 132)
@@ -0,0 +1,28 @@
+######################################################################
+## Fichier d'exemple ##
+##
+## On note ici la source SVN de chaque paquet qui nous interesse
+## et sa destination sur le disque (a partir de la racine du site)
+##
+##
+## la plupart des sources sont commentees :
+## recopiez ce fichier dans votre repertoire personnel, et
+## ajoutez/configurez ce qu'il vous faut
+##
+######################################################################
+
+
+##### SPIP
+# la branche 1.9, a la racine
+# svn://trac.rezo.net/spip/branches/spip-1.9 .
+
+
+
+##### PLUGINS
+# auto-installation de ce plugin svn_update
+# svn://zone.spip.org/spip-zone/_plugins_/_stable_/svn_update plugins/svn_update
+
+# plugins de redCTA 
+https://svn.redcta.org.ar/proyectos/redcta/trunk/spip/esqueleto-redcta/plugins/magusine plugins/magusine
+https://svn.redcta.org.ar/proyectos/redcta/trunk/spip/esqueleto-redcta/pages-custom pages-custom
+
