Rev 431 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phpclass MigrationWiki extends ProjetService {const dry_run = false;private function executerRequeteManip($requete, $mode_fetch = false) {// Fonction de commodité pour afficher les requetes au lieu de les executerif (self::dry_run) {echo str_replace('),','),'.NL, $requete);return true;} else {if($mode_fetch) {return $this->bdd->query($requete)->fetchAll($mode_fetch);} else {return $this->bdd->query($requete);}}}private function executerRequete($requete, $mode_fetch = false) {if (self::dry_run) {echo '<pre>'.str_replace('),','),'.NL, $requete).'</pre>';}$retour = $this->bdd->query($requete)->fetchAll($mode_fetch);return $retour;}public function __construct($config, $demarrer_session= true) {parent::__construct($config, $demarrer_session);define('NL',"\n");}public function getElement($uid){exit;$requete_projets_wikinis = 'SELECT * FROM gen_wikini';$wikinis_projets = $this->executerRequete($requete_projets_wikinis, PDO::FETCH_ASSOC);foreach($wikinis_projets as $wikini) {// test sur un wikiif($wikini['gewi_code_alpha_wikini'] != 'relais') {continue;}$base = $wikini['gewi_bdd_nom'];$prefixe = $wikini['gewi_table_prefix'];$chemin_wiki_sur_site = $this->config['appli']['chemin_wikis_integres'];$chemin_wiki = $wikini['gewi_chemin'];echo NL.'Traitement du wiki '.$chemin_wiki.NL;echo NL.$chemin_wiki.NL;if(!file_exists($chemin_wiki)) {echo 'Impossible de migrer le wikini '.$wikini['gewi_code_alpha_wikini'].' : le dossier n\'existe pas'.NL.NL.NL.NL;continue;}$chemin_base_wiki_defaut = $this->config['appli']['chemin_wiki_defaut'];$nom_admin = $this->config['appli']['nom_admin_wiki'];$mail_admin = $this->config['appli']['adresse_admin_wiki'];$pass_admin = $this->config['appli']['pass_admin_wiki'];$infos_admin = array('name' =>$nom_admin, 'email' => $mail_admin, 'password' => $pass_admin);//if(!$this->verifierPresenceTableTriple($base, $prefixe)) {echo 'migration du wiki '.$wikini['gewi_code_alpha_wikini'].NL;// $this->creerTableTriple($base, $prefixe);// $this->ajouterUtilisateurAdmin($base,$prefixe, $infos_admin);$this->copierFichiersWikini($chemin_base_wiki_defaut, $chemin_wiki);$this->changerVersionWakkaConfig($chemin_wiki);echo 'migration du wiki '.$wikini['gewi_code_alpha_wikini'].' effectuée '.NL.NL.NL.NL;//} else {// echo 'wiki dejà à jour '.$wikini['gewi_code_alpha_wikini'].NL.NL.NL.NL;//}}}private function verifierPresenceTableTriple($base, $prefixe) {$requete_presence_table = 'SELECT COUNT(*) as table_existe FROM information_schema.tablesWHERE TABLE_SCHEMA = "'.$base.'" AND TABLE_NAME = "'.$prefixe.'triples"';$resultat_presence_table = $this->executerRequete($requete_presence_table);$presence_table = false;foreach($resultat_presence_table as $table_est_presente) {if($table_est_presente['table_existe'] >= 1) {$presence_table = true;break;}}return $presence_table;}private function creerTableTriple($base, $prefixe) {echo 'Création de la table triple '.NL;$requete_creation_table = 'CREATE TABLE '.$base.'.'.$prefixe.'triples (' .' id int(10) unsigned NOT NULL auto_increment,' .' resource varchar(255) NOT NULL default \'\',' .' property varchar(255) NOT NULL default \'\',' .' value text NOT NULL default \'\',' .' PRIMARY KEY (id),' .' KEY resource (resource),' .' KEY property (property)' .') TYPE=MyISAM';return $this->executerRequeteManip($requete_creation_table);}private function verifierPresenceTableUsers($base, $prefixe) {$requete_presence_table = 'SELECT COUNT(*) as table_existe FROM information_schema.tablesWHERE TABLE_SCHEMA = "'.$base.'" AND TABLE_NAME = "'.$prefixe.'users"';$resultat_presence_table = $this->executerRequete($requete_presence_table);$presence_table = false;foreach($resultat_presence_table as $table_est_presente) {if($table_est_presente['table_existe'] >= 1) {$presence_table = true;break;}}return $presence_table;}private function ajouterUtilisateurAdmin($base, $prefixe, $infos_admin) {if(!$this->verifierPresenceTableUsers($base, $prefixe)) {echo 'Impossible d\'ajouter l\'adminwiki : '.$prefixe.'_users n\'existe_pas'.NL;return;}echo 'Ajout de l\'utilisateur wikiAdmin '.NL;$requete_suppression_si_admin_present = 'DELETE FROM '.$base.'.'.$prefixe.'users '.'WHERE name ="'.$infos_admin['name'].'"';$this->executerRequeteManip($requete_suppression_si_admin_present);$requete_creation_admin = "INSERT INTO ".$base.'.'.$prefixe."users SET "."signuptime = now(), "."name = '".$infos_admin['name']."', "."email = '".$infos_admin['email']."', "."password = md5('".$infos_admin['password']."')";return $this->executerRequeteManip($requete_creation_admin);}private function changerVersionWakkaConfig($chemin_wikini) {if(file_exists($chemin_wikini.'/wakka.config.php')) {$contenu_wakka_config = file_get_contents($chemin_wikini.'/wakka.config.php');$contenu_wakka_config_maj = str_replace('"wikini_version" => "0.4.3"','"wikini_version" => "0.5.0"',$contenu_wakka_config);$contenu_wakka_config_maj = str_replace("'wikini_version' => '0.4.3'","'wikini_version' => '0.5.0'",$contenu_wakka_config_maj);if(self::dry_run) {echo 'Wakka Config mis à jour '.$contenu_wakka_config_maj.NL;} else {file_put_contents($chemin_wikini.'/wakka.config.php', $contenu_wakka_config_maj);}echo 'Changement de la version de wikini '.NL;} else {echo 'Attention ! le fichier '.$chemin_wikini.'/wakka.config.php n\'existe pas '.NL;}}private function copierFichiersWikini($chemin_base_wiki_defaut, $chemin_wiki_dest) {echo 'copie de '.$chemin_base_wiki_defaut.' vers '.$chemin_wiki_dest.NL;if(self::dry_run) {$copie_recursive = true;} else {if(trim($chemin_base_wiki_defaut) != '/' && trim($chemin_wiki_dest) != '/') {echo " cp -Rf -a ".$chemin_base_wiki_defaut."* ".$chemin_wiki_dest."/ 2>&1 ";$copie_recursive = shell_exec( " cp -Rf -a ".$chemin_base_wiki_defaut."* ".$chemin_wiki_dest."/ 2>&1 " );}}return $copie_recursive;}}?>