bdd->query($requete)->fetchAll($mode_fetch); } else { return $this->bdd->query($requete); } } } private function executerRequete($requete, $mode_fetch = false) { if (self::dry_run) { echo '
'.str_replace('),','),'.NL, $requete).''; } $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 wiki if($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.tables WHERE 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.tables WHERE 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; } } ?>