'._t('INSTALL_TITLE_END').'
'._t('INSTALL_END').''; // écriture des balises de fin et ne pas faire la suite echo '
languages; if (file_exists('constant.php')) { die(_t('ALREADY_INSTALLED')); } // Cookie de la session $cookiedir = ''; if(dirname($_SERVER['SCRIPT_NAME'])!='/') $cookiedir=dirname($_SERVER["SCRIPT_NAME"]).'/'; session_set_cookie_params(0, $cookiedir); session_start(); // Protection des variables $_ = array_merge($_GET, $_POST); $whiteList = array( /* La liste blanche recense les variables ne devant pas être passées via la sécurisation, mais simplement échappées pour Php. */ 'mysqlHost', 'mysqlLogin', 'mysqlMdp', 'mysqlBase', 'mysqlPrefix', ); foreach($_ as $key=>&$val){ $val = in_array($key, $whiteList) ? str_replace("'", "\'", $val) : Functions::secure($val); } // Valeurs par défaut, remplacées si une autre valeur est saisie. foreach (array('login','mysqlBase','mysqlHost','mysqlLogin','mysqlMdp','mysqlPrefix','password','root') as $var) { /* Initalise les variables avec le contenu des champs * pour rappeler les valeurs déjà saisies. */ if (!empty($_[$var])) $$var = $_[$var]; else $$var = ''; } if (empty($root)) { // Ne peut être vide, alors on met la valeur par défaut $root = str_replace( basename(__FILE__), '', 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'] ); } if (!isset($_['mysqlPrefix'])) { // Le formulaire n'étant pas soumis, on met cette valeur par défaut. $mysqlPrefix = 'leed_'; } $lib_errors = _t('ERROR'); $lib_success = _t('SUCCESS'); if(isset($_['installButton'])){ if (empty($_['password']) || empty($_['login'])) { $test[$lib_errors][] = _t('INSTALL_ERROR_USERPWD'); } if (!Functions::testDb( $_['mysqlHost'], $_['mysqlLogin'], $_['mysqlMdp'], $_['mysqlBase'] )) { $test[$lib_errors][] = _t('INSTALL_ERROR_CONNEXION'); } else { $test[$lib_success][] = _t('INSTALL_INFO_CONNEXION'); } } if(!is_writable('./')){ $test[$lib_errors][]=_t('INSTALL_ERROR_RIGHT', array(str_replace(basename(__FILE__),'',__FILE__))); }else{ $test[$lib_success][]=_t('INSTALL_INFO_RIGHT'); } if (!@function_exists('mysql_connect')){ $test[$lib_errors][] = _t('INSTALL_ERROR_MYSQLCONNECT'); }else{ $test[$lib_success][] = _t('INSTALL_INFO_MYSQLCONNECT'); } if (!@function_exists('file_get_contents')){ $test[$lib_errors][] = _t('INSTALL_ERROR_FILEGET'); }else{ $test[$lib_success][] = _t('INSTALL_INFO_FILEGET'); } if (!@function_exists('file_put_contents')){ $test[$lib_errors][] = _t('INSTALL_ERROR_FILEPUT'); }else{ $test[$lib_success][] = _t('INSTALL_INFO_FILEPUT'); } if (@version_compare(PHP_VERSION, '5.1.0') <= 0){ $test[$lib_errors][] = _t('INSTALL_ERROR_PHPV', array(PHP_VERSION)); }else{ $test[$lib_success][] = _t('INSTALL_INFO_PHPV', array(PHP_VERSION)); } if(ini_get('safe_mode') && ini_get('max_execution_time')!=0){ $test[$lib_errors][] = _t('INSTALL_ERROR_SAFEMODE'); }else{ $test[$lib_success][] = _t('INSTALL_INFO_SAFEMODE'); } if (isset($_['installButton']) && empty($test[$lib_errors])) { // Pas d'erreur, l'installation peut se faire. $constant = ""; file_put_contents('constant.php', $constant); if (!is_readable('constant.php')) die('"constant.php" not found!'); require_once('constant.php'); require_once('MysqlEntity.class.php'); class_exists('Update') or require_once('Update.class.php'); Update::ExecutePatch(true); require_once('Feed.class.php'); require_once('Event.class.php'); require_once('User.class.php'); require_once('Folder.class.php'); require_once('Configuration.class.php'); $cryptographicSalt = User::generateSalt(); $synchronisationCode = substr(sha1(rand(0,30).time().rand(0,30)),0,10); $root = (substr($_['root'], strlen($_['root'])-1)=='/'?$_['root']:$_['root'].'/'); // DOSSIERS À CONSERVER TELS QUELS, SI DÉJÀ EXISTANTS $feedManager = new Feed(); $feedManager->create(); $eventManager = new Event(); $eventManager->create(); // COMPTE ADMINISTRATEUR, RÀZ SI NÉCESSAIRE $userManager = new User(); if ($userManager->tableExists()) { // Suppose qu'il n'y a qu'un seul utilisateur $userManager->truncate(); } $userManager->create(); $admin = new User(); $admin->setLogin($_['login']); $admin->setPassword($_['password'],$cryptographicSalt); $admin->save(); $_SESSION['currentUser'] = serialize($admin); // DOSSIERS DE FLUX, RECRÉE LE DOSSIER GÉNÉRAL SI NÉCESSAIRE $folderManager = new Folder(); $folderManager->create(); if ($folderManager->rowCount()==0) { //Création du dossier général $folder = new Folder(); $folder->setName(_t('GENERAL_FOLDER')); $folder->setParent(-1); $folder->setIsopen(1); $folder->save(); } // REMET À ZÉRO LA CONFIGURATION $configurationManager = new Configuration(); if ($configurationManager->tableExists()) { $configurationManager->truncate(); } $configurationManager->create(); $configurationManager->add('root',$root); $configurationManager->add('articleView','partial'); $configurationManager->add('articleDisplayContent','1'); $configurationManager->add('articleDisplayAnonymous','0'); $configurationManager->add('articlePerPages','5'); $configurationManager->add('articleDisplayLink','1'); $configurationManager->add('articleDisplayDate','1'); $configurationManager->add('articleDisplayAuthor','1'); $configurationManager->add('articleDisplayHomeSort','1'); $configurationManager->add('articleDisplayFolderSort','1'); $configurationManager->add('displayOnlyUnreadFeedFolder','false'); $configurationManager->add('optionFeedIsVerbose',1); $configurationManager->add('synchronisationType','auto'); $configurationManager->add('feedMaxEvents','50'); $configurationManager->add('synchronisationCode',$synchronisationCode); $configurationManager->add('synchronisationEnableCache','1'); $configurationManager->add('synchronisationForceFeed','0'); $configurationManager->add('cryptographicSalt', $cryptographicSalt); $install_terminee=true; } /* Ci-dessous, on y va si : - la page est simplement affichée, sans avoir été validée - le formulaire est soumis, mais l'installation ne peut se faire */ ?>