b2evolution

Multilingual multiuser multiblog engine

b2evolution Technical Documentation (CVS HEAD) [ class tree: install ] [ index: install ] [ all elements ]

Source for file index.php

Documentation is available at index.php

  1. <?php
  2. /**
  3.  * This is the main install menu
  4.  *
  5.  * IF YOU ARE READING THIS IN YOUR WEB BROWSER, IT MEANS THAT PHP IS NOT PROPERLY INSTALLED
  6.  * ON YOUR WEB SERVER. IF YOU DON'T KNOW WHAT THIS MEANS, CONTACT YOUR SERVER ADMINISTRATOR
  7.  * OR YOUR HOSTING COMPANY.
  8.  *
  9.  * b2evolution - {@link http://b2evolution.net/}
  10.  * Released under GNU GPL License - {@link http://b2evolution.net/about/license.html}
  11.  * @copyright (c)2003-2010 by Francois PLANQUE - {@link http://fplanque.net/}
  12.  *
  13.  * @package install
  14.  */
  15.  
  16. /**
  17.  * include config and default functions:
  18.  */
  19. require_once dirname(__FILE__).'/../conf/_config.php';
  20.  
  21. // Make the includes believe they are being called in the right place...
  22. define'EVO_MAIN_INIT'true );
  23.  
  24. /**
  25.  * Define that we're in the install process.
  26.  */
  27. define'EVO_IS_INSTALLING'true );
  28.  
  29. $script_start_time time();
  30. $localtimenow $script_start_time// used e.g. for post_datemodified (sample posts)
  31.  
  32. if$config_is_done )
  33. {    // Base config is not done yet, try to guess some values needed for correct display:
  34.     $rsc_url '../rsc/';
  35. }
  36.  
  37. require_once $inc_path.'_core/_class'.floor(PHP_VERSION).'.funcs.php';
  38. require_once $inc_path.'_core/_misc.funcs.php';
  39.  
  40. load_class'_core/model/_log.class.php''Log');
  41. $Debuglog new Log();
  42. load_class'_core/model/_messages.class.php''Messages');
  43. $Messages new Messages();
  44.  
  45. /**
  46.  * Load modules.
  47.  *
  48.  * This initializes table name aliases and is required before trying to connect to the DB.
  49.  */
  50. load_class'_core/model/_module.class.php''Module' );
  51. foreach$modules as $module )
  52. {
  53.     require_once $inc_path.$module.'/_'.$module.'.init.php';
  54. }
  55.  
  56. // fp> TODO: we may want to try to get the base init into here somehow
  57. // $require_base_config = false;
  58.  
  59. require_once $conf_path.'_upgrade.php';
  60. // no longer exists: require_once $inc_path.'_vars.inc.php';
  61. load_class'/_core/model/db/_db.class.php''DB' );
  62. //load_funcs('collections/model/_blog.funcs.php');
  63. //load_funcs('collections/model/_category.funcs.php');
  64. //load_class( 'items/model/_item.class.php', 'Item' );
  65. //load_funcs('items/model/_item.funcs.php');
  66. //load_funcs('users/model/_user.funcs.php');
  67. //load_funcs( '_core/ui/forms/_form.funcs.php' );
  68. load_class'_core/model/_timer.class.php''Timer' );
  69. //load_class( 'plugins/model/_plugins.class.php', 'Plugins' );
  70.  
  71.  
  72. require_once dirname(__FILE__).'/_functions_install.php';
  73.  
  74. $Timer new Timer('main');
  75.  
  76. load_funcs('_core/_param.funcs.php');
  77.  
  78. // Let the modules load/register what they need:
  79. modules_call_method'init' );
  80.  
  81.  
  82. param'action''string''default' );
  83.  
  84. // Load all available locale defintions:
  85. locales_load_available_defs();
  86. param'locale''string' );
  87. ifpreg_match('/[a-z]{2}-[A-Z]{2}(-.{1,14})?/'$locale) )
  88. {
  89.     $default_locale $locale;
  90. }
  91. else
  92. // detect language
  93.     $default_locale locale_from_httpaccept();
  94.     // echo 'detected locale: ' . $default_locale. '<br />';
  95. }
  96. // Activate default locale:
  97. iflocale_activate$default_locale ) )
  98. {    // Could not activate locale (non-existent?), fallback to en-US:
  99.     $default_locale 'en-US';
  100.     locale_activate'en-US' );
  101. }
  102.  
  103. init_charsets$current_charset );
  104.  
  105. $timestamp time(120// We start dates 2 minutes ago because their dates increase 1 second at a time and we want everything to be visible when the user watches the blogs right after install :P
  106.  
  107.  
  108. switch$action )
  109. {
  110.     case 'evoupgrade':
  111.         $title T_('Upgrade from a previous version');
  112.         break;
  113.  
  114.     case 'newdb':
  115.         $title T_('New Install');
  116.         break;
  117.  
  118.     case 'cafelogupgrade':
  119.         $title T_('Upgrade from Cafelog/b2');
  120.         break;
  121.  
  122.     case 'deletedb':
  123.         $title T_('Delete b2evolution tables');
  124.         break;
  125.  
  126.     case 'start':
  127.         $title T_('Base configuration');
  128.         break;
  129.  
  130.     default:
  131.         $action 'default';
  132.         $title '';
  133. }
  134.  
  135. header('Content-Type: text/html; charset='.$io_charset);
  136. header('Cache-Control: no-cache')// no request to this page should get cached!
  137. ?>
  138. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  139. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php locale_lang(?>" lang="<?php locale_lang(?>"><!-- InstanceBegin template="/Templates/evo_distrib_2.dwt" codeOutsideHTMLIsLocked="false" -->
  140. <head>
  141.     <!-- InstanceBeginEditable name="doctitle" -->
  142.     <title><?php echo T_('b2evo installer').$title ': '.$title '' ?></title>
  143.     <!-- InstanceEndEditable -->
  144.     <meta name="viewport" content="width = 750" />
  145.     <meta name="robots" content="noindex, follow" />
  146.     <link href="../rsc/css/evo_distrib_2.css" rel="stylesheet" type="text/css" />
  147.     <!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
  148.     <!-- InstanceParam name="lang" type="text" value="&lt;?php locale_lang() ?&gt;" -->
  149. </head>
  150.  
  151. <body>
  152.     <!-- InstanceBeginEditable name="BodyHead" --><!-- InstanceEndEditable -->
  153.  
  154.     <div class="wrapper1">
  155.     <div class="wrapper2">
  156.         <span class="version_top"><!-- InstanceBeginEditable name="Version" --><?php echo T_('Installer for version ').' '$app_version ?><!-- InstanceEndEditable --></span>
  157.  
  158.         <a href="http://b2evolution.net/" target="_blank"><img src="../rsc/img/distrib/b2evolution-logo.gif" alt="b2evolution" width="237" height="92" /></a>
  159.  
  160.         <div class="menu_top"><!-- InstanceBeginEditable name="MenuTop" -->
  161.             <span class="floatright"><?php echo T_('After install'?>: <a href="../index.php"><?php echo T_('Blogs'?></a> &middot;
  162.             <a href="../<?php echo $dispatcher ?>"><?php echo T_('Admin'?></a>
  163.             </span>
  164.         <?php echo T_('Current installation'?>:
  165.         <a href="index.php?locale=<?php echo $default_locale ?>"><?php echo T_('Install menu'?></a> &middot;
  166.         <a href="phpinfo.php"><?php echo T_('PHP info'?></a>
  167.         <!-- InstanceEndEditable --></div>
  168.  
  169.         <!-- InstanceBeginEditable name="Main" -->
  170. <?php
  171.  
  172. // echo $action;
  173.  
  174. if$config_is_done || (($action != 'start'&& ($action != 'default'&& ($action != 'conf')) )
  175. // Connect to DB:
  176.  
  177.     $tmp_evoconf_db $db_config;
  178.  
  179.     // We want a friendly message if we can't connect:
  180.     $tmp_evoconf_db['halt_on_error'false;
  181.     $tmp_evoconf_db['show_errors'false;
  182.  
  183.     // Make sure we use the proper charset:
  184.     $tmp_evoconf_db['connection_charset'$evo_charset;
  185.  
  186.     // CONNECT TO DB:
  187.     $DB new DB$tmp_evoconf_db );
  188.     unset($tmp_evoconf_db);
  189.  
  190.     if$DB->error )
  191.     // restart conf
  192.         echo '<div class="error"><p class="error">'.T_('Check your database config settings below and update them if necessary...').'</p></div>';
  193.         display_base_config_recap();
  194.         $action 'start';
  195.     }
  196.     else
  197.     {
  198.         $DB->halt_on_error true;  // From now on, halt on errors.
  199.         $DB->show_errors true;    // From now on, show errors (they're helpful in case of errors!).
  200.  
  201.         // Check MySQL version
  202.         $mysql_version $DB->get_var'SELECT VERSION()' );
  203.         list$mysl_version_main$mysl_version_minor explode'.'$mysql_version );
  204.         if( ($mysl_version_main 100 $mysl_version_minor401 )
  205.         {
  206.             die'<div class="error"><p class="error"><strong>'.sprintf(T_('The minimum requirement for this version of b2evolution is %s version %s but you are trying to use version %s!')'MySQL''4.1'$mysql_version ).'</strong></p></div>');
  207.         }
  208.     }
  209. }
  210.  
  211. // Check PHP version
  212. list$version_main$version_minor explode'.'phpversion() );
  213. if( ($version_main 100 $version_minor401 )
  214. {
  215.     die'<div class="error"><p class="error"><strong>'.sprintf(T_('The minimum requirement for this version of b2evolution is %s version %s but you are trying to use version %s!')'PHP''4.1.0'phpversion() ).'</strong></p></div>');
  216. }
  217.  
  218. // Check other dependencies:
  219. // TODO: Non-install/upgrade-actions should be allowed (e.g. "deletedb")
  220. if$req_errors install_validate_requirements() )
  221. {
  222.     echo '<div class="error">';
  223.     echo '<p class="error"><strong>'.T_('b2evolution cannot be installed, because of the following errors:').'</strong></p>';
  224.     echo '<ul class="error"><li>'.implode'</li><li>'$req_errors ).'</li></ul>';
  225.     echo '</div>';
  226.     die;
  227. }
  228.  
  229. switch$action )
  230. {
  231.     case 'conf':
  232.         /*
  233.          * -----------------------------------------------------------------------------------
  234.          * Write conf file:
  235.          * -----------------------------------------------------------------------------------
  236.          */
  237.         display_locale_selector();
  238.  
  239.         block_open();
  240.  
  241.         param'conf_db_user''string'true );
  242.         param'conf_db_password''raw'true );
  243.         param'conf_db_name''string'true );
  244.         param'conf_db_host''string'true );
  245.         param'conf_db_tableprefix''string'$tableprefix );
  246.         param'conf_baseurl''string'true );
  247.         $conf_baseurl preg_replace'#(/)?$#'''$conf_baseurl ).'/'// force trailing slash
  248.         param'conf_admin_email''string'true );
  249.  
  250.         // Connect to DB:
  251.         $DB new DBarray(
  252.             'user' => $conf_db_user,
  253.             'password' => $conf_db_password,
  254.             'name' => $conf_db_name,
  255.             'host' => $conf_db_host,
  256.             'aliases' => $db_config['aliases'],
  257.             'use_transactions' => $db_config['use_transactions'],
  258.             'table_options' => $db_config['table_options'],
  259.             'connection_charset' => $db_config['connection_charset'],
  260.             'halt_on_error' => false ) );
  261.         if$DB->error )
  262.         // restart conf
  263.             echo '<p class="error">'.T_('It seems that the database config settings you entered don\'t work. Please check them carefully and try again...').'</p>';
  264.             $action 'start';
  265.         }
  266.         else
  267.         {
  268.             $conf_template_filepath $conf_path.'_basic_config.template.php';
  269.             $conf_filepath $conf_path.'_basic_config.php';
  270.  
  271.             // Read original:
  272.             $file_loaded @file$conf_template_filepath );
  273.  
  274.             ifempty$file_loaded ) )
  275.             // This should actually never happen, just in case...
  276.                 echo '<div class="error"><p class="error">'.sprintfT_('Could not load original conf file [%s]. Is it missing?')$conf_filepath ).'</p></div>';
  277.                 break;
  278.             }
  279.  
  280.             // File loaded...
  281.             $conf implode''$file_loaded );
  282.             // Update conf:
  283.             $conf preg_replace(
  284.                 array(
  285.                     '#\$db_config\s*=\s*array\(
  286.                         \s*[\'"]user[\'"]\s*=>\s*[\'"].*?[\'"],     ([^\n\r]*\r?\n)
  287.                         \s*[\'"]password[\'"]\s*=>\s*[\'"].*?[\'"], ([^\n\r]*\r?\n)
  288.                         \s*[\'"]name[\'"]\s*=>\s*[\'"].*?[\'"],     ([^\n\r]*\r?\n)
  289.                         \s*[\'"]host[\'"]\s*=>\s*[\'"].*?[\'"],     ([^\n\r]*\r?\n)
  290.                         #ixs',
  291.                     "#tableprefix\s*=\s*'.*?';#",
  292.                     "#baseurl\s*=\s*'.*?';#",
  293.                     "#admin_email\s*=\s*'.*?';#",
  294.                     "#config_is_done\s*=.*?;#",
  295.                 ),
  296.                 array(
  297.                     "\$db_config = array(\n"
  298.                         ."\t'user'     => '".str_replace"'""\'"$conf_db_user )."',\$1"
  299.                         ."\t'password' => '".str_replace"'""\'"$conf_db_password )."',\$2"
  300.                         ."\t'name'     => '".str_replace"'""\'"$conf_db_name )."',\$3"
  301.                         ."\t'host'     => '".str_replace"'""\'"$conf_db_host )."',\$4",
  302.                     "tableprefix = '".str_replace"'""\'"$conf_db_tableprefix )."';",
  303.                     "baseurl = '".str_replace"'""\'"$conf_baseurl )."';",
  304.                     "admin_email = '".str_replace"'""\'"$conf_admin_email )."';",
  305.                     'config_is_done = 1;',
  306.                 )$conf );
  307.  
  308.             $f @fopen$conf_filepath 'w' );
  309.             if$f == false )
  310.             {
  311.                 ?>
  312.                 <h1><?php echo T_('Config file update'?></h1>
  313.                 <p><strong><?php printfT_('We cannot automatically create or update your config file [%s]!')$conf_filepath )?></strong></p>
  314.                 <p><?php echo T_('There are two ways to deal with this:'?></p>
  315.                 <ul>
  316.                     <li><strong><?php echo T_('You can allow the installer to create the config file by changing permissions for the /conf directory:'?></strong>
  317.                         <ol>
  318.                             <li><?php printfT_('Make sure there is no existing and potentially locked configuration file named <code>%s</code>. If so, please delete it.')$conf_filepath )?></li>
  319.                             <li><?php printfT_('<code>chmod 777 %s</code>. If needed, see the <a %s>online manual about permissions</a>.')$conf_path'href="http://manual.b2evolution.net/Directory_and_file_permissions" target="_blank"' )?></li>
  320.                             <li><?php echo T_('Come back to this page and refresh/reload.'?></li>
  321.                         </ol>
  322.                         <br />
  323.                     </li>
  324.                     <li><strong><?php echo T_('Alternatively, you can update the config file manually:'?></strong>
  325.                         <ol>
  326.                             <li><?php echo T_('Create a new text file with a text editor.'?></li>
  327.                             <li><?php echo T_('Copy the contents from the box below.'?></li>
  328.                             <li><?php echo T_('Paste them into your local text editor. <strong>ATTENTION: make sure there is ABSOLUTELY NO WHITESPACE after the final <code>?&gt;</code> in the file.</strong> Any space, tab, newline or blank line at the end of the conf file may prevent cookies from being set when you try to log in later.'?></li>
  329.                             <li><?php echo T_('Save the file locally under the name <code>_basic_config.php</code>'?></li>
  330.                             <li><?php echo T_('Upload the file to your server, into the <code>/_conf</code> folder.'?></li>
  331.                             <li><?php printfT_('<a %s>Call the installer from scratch</a>.')'href="index.php?locale='.$default_locale.'"'?></li>
  332.                         </ol>
  333.                     </li>
  334.                 </ul>
  335.                 <p><?php echo T_('This is how your _basic_config.php should look like:'?></p>
  336.                 <blockquote>
  337.                 <pre><?php
  338.                     echo htmlspecialchars$conf );
  339.                 ?></pre>
  340.                 </blockquote>
  341.                 <?php
  342.                 break;
  343.             }
  344.             else
  345.             // Write new contents:
  346.                 fwrite$f$conf );
  347.                 fclose($f);
  348.  
  349.                 printf'<p>'.T_('Your configuration file [%s] has been successfully created.').'</p>'$conf_filepath );
  350.  
  351.                 $tableprefix $conf_db_tableprefix;
  352.                 $baseurl $conf_baseurl;
  353.                 $admin_email $conf_admin_email;
  354.                 $config_is_done 1;
  355.                 $action 'menu';
  356.             }
  357.         }
  358.         // ATTENTION: we continue here...
  359.  
  360.     case 'start':
  361.     case 'default':
  362.         /*
  363.          * -----------------------------------------------------------------------------------
  364.          * Start of install procedure:
  365.          * -----------------------------------------------------------------------------------
  366.          */
  367.         if$action == 'start' || !$config_is_done )
  368.         {
  369.             display_locale_selector();
  370.  
  371.             block_open();
  372.  
  373.             echo '<h1>'.T_('Base configuration').'</h1>';
  374.  
  375.             if$config_is_done && $allow_evodb_reset != )
  376.             {
  377.                 echo '<p><strong>'.T_('Resetting the base configuration is currently disabled for security reasons.').'</strong></p>';
  378.                 echo '<p>'.sprintfT_('To enable it, please go to the %s file and change: %s to %s')'/conf/_basic_config.php''<pre>$allow_evodb_reset = 0;</pre>''<pre>$allow_evodb_reset = 1;</pre>' ).'</p>';
  379.                 echo '<p>'.T_('Then reload this page and a reset option will appear.').'</p>';
  380.                 block_close();
  381.                 break;
  382.             }
  383.             else
  384.             {
  385.  
  386.             // Set default params if not provided otherwise:
  387.             param'conf_db_user''string'$db_config['user');
  388.             param'conf_db_password''raw'$db_config['password');
  389.             param'conf_db_name''string'$db_config['name');
  390.             param'conf_db_host''string'$db_config['host');
  391.             param'conf_db_tableprefix''string'$tableprefix );
  392.             // Guess baseurl:
  393.             // TODO: dh> IMHO HTTP_HOST would be a better default, because it's what the user accesses for install.
  394.             //       fp, please change it, if it's ok. SERVER_NAME might get used if HTTP_HOST is not given, but that shouldn't be the case normally.
  395.             // fp> ok for change and test after first 3.x-stable release
  396.             $baseurl 'http://'.isset$_SERVER['SERVER_NAME'$_SERVER['SERVER_NAME''yourserver.com' );
  397.             ifisset$_SERVER['SERVER_PORT'&& $_SERVER['SERVER_PORT'!= '80' ) )
  398.                 $baseurl .= ':'.$_SERVER['SERVER_PORT'];
  399.  
  400.             // ############ Get ReqPath & ReqURI ##############
  401.             list($ReqPath,$ReqURIget_ReqURI();
  402.  
  403.             $baseurl .= preg_replace'#/install(/(index.php)?)?$#'''$ReqPath ).'/';
  404.  
  405.             param'conf_baseurl''string'$baseurl );
  406.             param'conf_admin_email''string'$admin_email );
  407.  
  408.             ?>
  409.  
  410.             <p><?php echo T_('The basic configuration file (<code>/conf/_basic_config.php</code>) has not been created yet. You can do automatically generate it by filling out the form below.'?></p>
  411.  
  412.             <p><?php echo T_('This is the minimum info we need to set up b2evolution on this server:'?></p>
  413.  
  414.             <form class="fform" name="form" action="index.php" method="post">
  415.                 <input type="hidden" name="action" value="conf" />
  416.                 <input type="hidden" name="locale" value="<?php echo $default_locale?>" />
  417.  
  418.                 <fieldset>
  419.                     <legend><?php echo T_('Database you want to install into'?></legend>
  420.                     <p class="note"><?php echo T_('b2evolution stores blog posts, comments, user permissions, etc. in a MySQL database. You must create this database prior to installing b2evolution and provide the access parameters to this database below. If you are not familiar with this, you can ask your hosting provider to create the database for you.'?></p>
  421.                     <?php
  422.                         form_text'conf_db_host'$conf_db_host16T_('MySQL Host/Server')sprintfT_('Typically looks like "localhost" or "sql-6" or "sql-8.yourhost.net"...' ) )120 );
  423.                         form_text'conf_db_name'$conf_db_name16T_('MySQL Database')sprintfT_('Name of the MySQL database you have created on the server' ) )100);
  424.                         form_text'conf_db_user'$conf_db_user16T_('MySQL Username')sprintfT_('Used by b2evolution to access the MySQL database' ) )100 );
  425.                         form_text'conf_db_password'$conf_db_password16T_('MySQL Password')sprintfT_('Used by b2evolution to access the MySQL database' ) )100 )// no need to hyde this. nobody installs b2evolution from a public place
  426.                         // Too confusing for (most) newbies.    form_text( 'conf_db_tableprefix', $conf_db_tableprefix, 16, T_('MySQL tables prefix'), sprintf( T_('All DB tables will be prefixed with this. You need to change this only if you want to have multiple b2evo installations in the same DB.' ) ), 30 );
  427.                     ?>
  428.                 </fieldset>
  429.  
  430.                 <fieldset>
  431.                     <legend><?php echo T_('Additional settings'?></legend>
  432.                     <?php
  433.                         form_text'conf_baseurl'$conf_baseurl50T_('Base URL')sprintfT_('This is where b2evo and your blogs reside by default. CHECK THIS CAREFULLY or not much will work. If you want to test b2evolution on your local machine, in order for login cookies to work, you MUST use http://<strong>localhost</strong>/path... Do NOT use your machine\'s name!' ) )120 );
  434.  
  435.                         form_text'conf_admin_email'$conf_admin_email50T_('Your email')sprintfT_('This is used to create your admin account. You will receive notifications for comments on your blog, etc.' ) )80 );
  436.                     ?>
  437.                 </fieldset>
  438.  
  439.                 <fieldset>
  440.                     <fieldset>
  441.                         <div class="input">
  442.                             <input type="submit" name="submit" value="<?php echo T_('Update config file'?>" class="search" />
  443.                             <input type="reset" value="<?php echo T_('Reset'?>" class="search" />
  444.                         </div>
  445.                     </fieldset>
  446.                 </fieldset>
  447.  
  448.             </form>
  449.  
  450.             <?php
  451.             break;
  452.             }
  453.         }
  454.         // if config was already done, move on to main menu:
  455.  
  456.     case 'menu':
  457.         /*
  458.          * -----------------------------------------------------------------------------------
  459.          * Menu
  460.          * -----------------------------------------------------------------------------------
  461.          */
  462.  
  463.         display_locale_selector();
  464.  
  465.         block_open();
  466.         ?>
  467.         <h1><?php echo T_('How would you like your b2evolution installed?'?></h1>
  468.  
  469.         <?php
  470.             $old_db_version get_db_version();
  471.         ?>
  472.  
  473.         <form action="index.php" method="get">
  474.             <input type="hidden" name="locale" value="<?php echo $default_locale ?>" />
  475.             <input type="hidden" name="confirmed" value="0" />
  476.             <input type="hidden" name="installer_version" value="10" />
  477.  
  478.             <p><?php echo T_('The installation can be done in different ways. Choose one:')?></p>
  479.  
  480.             <p><input type="radio" name="action" id="newdb" value="newdb"
  481.                 <?php
  482.                     // fp> change the above to 'newdbsettings' for an additional settings screen.
  483.                     ifis_null($old_db_version) )
  484.                     {
  485.                         echo 'checked="checked"';
  486.                     }
  487.                 ?>
  488.                 />
  489.                 <label for="newdb"><?php echo T_('<strong>New Install</strong>: Install b2evolution database tables.')?></label></p>
  490.             <p style="margin-left: 2em;">
  491.                 <input type="checkbox" name="create_sample_contents" id="create_sample_contents" value="1" checked="checked" />
  492.                 <label for="create_sample_contents"><?php echo T_('Also install sample blogs &amp; sample contents. The sample posts explain several features of b2evolution. This is highly recommended for new users.')?></label>
  493.             </p>
  494.  
  495.             <p><input type="radio" name="action" id="evoupgrade" value="evoupgrade"
  496.                 <?php if!is_null($old_db_version&& $old_db_version $new_db_version )
  497.                     {
  498.                         echo 'checked="checked"';
  499.                     }
  500.                 ?>
  501.                 />
  502.                 <label for="evoupgrade"><?php echo T_('<strong>Upgrade from a previous version of b2evolution</strong>: Upgrade your b2evolution database tables in order to make them compatible with the current version. <strong>WARNING:</strong> If you have modified your database, this operation may fail. Make sure you have a backup.'?></label></p>
  503.  
  504.             <?php
  505.                 if$allow_evodb_reset == )
  506.                 {
  507.                     ?>
  508.                     <p><input type="radio" name="action" id="deletedb" value="deletedb" />
  509.                     <label for="deletedb"><strong><?php echo T_('Delete b2evolution tables')?></strong>:
  510.                     <?php echo T_('If you have installed b2evolution tables before and wish to start anew, you must delete the b2evolution tables before you can start a new installation. <strong>WARNING: All your b2evolution tables and data will be lost!!!</strong> Any non-b2evolution tables will remain untouched though.')?></label></p>
  511.  
  512.                     <p><input type="radio" name="action" id="start" value="start" />
  513.                     <label for="start"><?php echo T_('<strong>Change your base configuration</strong> (see recap below): You only want to do this in rare occasions where you may have moved your b2evolution files or database to a different location...')?></label></p>
  514.                     <?php
  515.                 }
  516.  
  517.  
  518.             if$allow_evodb_reset != )
  519.             {
  520.                 echo '<div class="floatright"><a href="index.php?action=deletedb&amp;locale='.$default_locale.'">'.T_('Need to start anew?').' &raquo;</a></div>';
  521.             }
  522.             ?>
  523.  
  524.             <p>
  525.             <input type="submit" value="&nbsp; <?php echo T_('GO!')?> &nbsp;"
  526.                 onclick="var dc = document.getElementById( 'deletedb' ); if( dc && dc.checked ) { if ( confirm( '<?php
  527.                     printf/* TRANS: %s gets replaced by app name, usually "b2evolution" */ TS_'Are you sure you want to delete your existing %s tables?\nDo you have a backup?' )$app_name );
  528.                     ?>' ) ) { this.form.confirmed.value = 1; return true; } else return false; }" />
  529.             </p>
  530.             </form>
  531.         <?php
  532.  
  533.         block_close();
  534.  
  535.         display_base_config_recap();
  536.         break;
  537.  
  538.     case 'localeinfo':
  539.         // Info about getting additional locales.
  540.         display_locale_selector();
  541.  
  542.         block_open();
  543.  
  544.         // Note: Do NOT make these strings translatable. We are not in the desired language anyways!
  545.         ?>
  546.         <h2>What if your language is not in the list above?</h2>
  547.         <ol>
  548.             <li>Go to the <a href="http://b2evolution.net/downloads/language-packs.html" target="_blank">language packs section on b2evolution.net</a>.</li>
  549.             <li>Select the version of b2evolution you're trying to install. If it's not available select the closest match (in most cases this should work).</li>
  550.             <li>Find your language and click the "Download" link.</li>
  551.             <li>Unzip the contents of the downloaded ZIP file.</li>
  552.             <li>Upload the new folder (for example es_ES) into the /locales folder on your server. (The /locales folder already contains a few locales such as de_DE, ru_RU, etc.)</li>
  553.             <li>Reload this page. The new locale should now appear in the list at the top of this screen. If it doesn't, it means the language pack you installed is not compatible with this version of b2evolution.</li>
  554.         </ol>
  555.  
  556.         <h3>What if there is no language pack to download?</h3>
  557.         <p>Nobody has contributed a language pack in your language yet. You could help by providing a translation for your language.</p>
  558.         <p>For now, you will have to install b2evolution with a supported language.</p>
  559.         <p>Once you get familiar with b2evolution you will be able to <a href="http://manual.b2evolution.net/Localization" target="_blank">create your own language pack</a> fairly easily.</p>
  560.         <p><a href="index.php?locale=<?php echo $default_locale ?>">&laquo; <?php echo T_('Back to install menu'?></a></p>
  561.         <?php
  562.         break;
  563.  
  564.     case 'newdbsettings':
  565.         /*
  566.          * fp> TODO: Add a screen for additionnal settings:
  567.          * - create_sample_contents : to be moved away from main screen
  568.          * - admin_email: to be moved out of conf file
  569.          * - storage_charset: offer option to FORCE storing data in UTF-8 even if current locale doesn't require it (must be supported by MySQL) -- recommended for multilingual blogs
  570.          * - evo_charset: offer option to FORCE handling data internally in UTF-8 even if current locale doesn't require it (requires mbstring) -- not recommended in most situations
  571.          */
  572.  
  573.  
  574.     case 'newdb':
  575.         /*
  576.          * -----------------------------------------------------------------------------------
  577.          * NEW DB: install a new b2evolution database.
  578.          * -----------------------------------------------------------------------------------
  579.          * Note: auto installers should kick in directly at this step and provide all required params.
  580.          */
  581.  
  582.         // fp> TODO: this test should probably be made more generic and applied to upgrade too.
  583.         $expected_connection_charset $DB->php_to_mysql_charmap($evo_charset);
  584.         if$DB->connection_charset != $expected_connection_charset )
  585.         {
  586.             echo '<div class="error"><p class="error">'.sprintfT_('In order to install b2evolution with the %s locale, your MySQL needs to support the %s connection charset.').' (SET NAMES %s)',
  587.                 $current_locale$evo_charset$expected_connection_charset ).'</p></div>';
  588.             // sam2kb> TODO: If something is not supported we can display a message saying "do this and that, enable extension X etc. etc... or switch to a better hosting".
  589.             break;
  590.         }
  591.  
  592.         if$old_db_version get_db_version() )
  593.         {
  594.             echo '<p><strong>'.T_('OOPS! It seems b2evolution is already installed!').'</strong></p>';
  595.  
  596.             if$old_db_version $new_db_version )
  597.             {
  598.                 echo '<p>'.sprintfT_('Would you like to <a %s>upgrade your existing installation now</a>?')'href="?action=evoupgrade"' ).'</p>';
  599.             }
  600.  
  601.             break;
  602.         }
  603.  
  604.         echo '<h2>'.T_('Checking files...').'</h2>';
  605.         flush();
  606.         // Check for .htaccess:
  607.         install_htaccessfalse );
  608.  
  609.         // Here's the meat!
  610.         install_newdb();
  611.         break;
  612.  
  613.  
  614.     case 'evoupgrade':
  615.         /*
  616.          * -----------------------------------------------------------------------------------
  617.          * EVO UPGRADE: Upgrade data from existing b2evolution database
  618.          * -----------------------------------------------------------------------------------
  619.          */
  620.         require_oncedirname(__FILE__)'/_functions_evoupgrade.php' );
  621.  
  622.  
  623.         echo '<h2>'.T_('Checking files...').'</h2>';
  624.         flush();
  625.         // Check for .htaccess:
  626.         install_htaccesstrue );
  627.  
  628.         echo '<h2>'.T_('Upgrading data in existing b2evolution database...').'</h2>';
  629.         flush();
  630.         ifupgrade_b2evo_tables() )
  631.         {
  632.             ?>
  633.             <p><?php echo T_('Upgrade completed successfully!')?></p>
  634.             <p><?php printfT_('Now you can <a %s>log in</a> with your usual %s username and password.')'href="'.$admin_url.'"''b2evolution')?></p>
  635.             <?php
  636.         }
  637.         break;
  638.  
  639.  
  640.     case 'deletedb':
  641.         /*
  642.          * -----------------------------------------------------------------------------------
  643.          * DELETE DB: Delete the db structure!!! (Everything will be lost)
  644.          * -----------------------------------------------------------------------------------
  645.          */
  646.         require_oncedirname(__FILE__)'/_functions_delete.php' );
  647.  
  648.         echo '<h2>'.T_('Deleting b2evolution tables from the datatase...').'</h2>';
  649.         flush();
  650.  
  651.         if$allow_evodb_reset != )
  652.         {
  653.             echo T_('If you have installed b2evolution tables before and wish to start anew, you must delete the b2evolution tables before you can start a new installation. b2evolution can delete its own tables for you, but for obvious security reasons, this feature is disabled by default.');
  654.             echo '<p>'.sprintfT_('To enable it, please go to the %s file and change: %s to %s')'/conf/_basic_config.php''<pre>$allow_evodb_reset = 0;</pre>''<pre>$allow_evodb_reset = 1;</pre>' ).'</p>';
  655.             echo '<p>'.T_('Then reload this page and a reset option will appear.').'</p>';
  656.             echo '<p><a href="index.php?locale='.$default_locale.'">&laquo; '.T_('Back to install menu').'</a></p>';
  657.  
  658.             break;
  659.         }
  660.  
  661.         ifparam('confirmed''integer'1) )
  662.         {
  663.             ?>
  664.             <p>
  665.             <?php
  666.             echo nl2brhtmlspecialcharssprintf/* TRANS: %s gets replaced by app name, usually "b2evolution" */ T_"Are you sure you want to delete your existing %s tables?\nDo you have a backup?" )$app_name ) ) );
  667.             ?>
  668.             </p>
  669.             <p>
  670.             <form class="inline" name="form" action="index.php" method="post">
  671.                 <input type="hidden" name="action" value="deletedb" />
  672.                 <input type="hidden" name="confirmed" value="1" />
  673.                 <input type="hidden" name="locale" value="<?php echo $default_locale?>" />
  674.                 <input type="submit" value="&nbsp; <?php echo T_('I am sure!')?> &nbsp;" />
  675.             </form>
  676.  
  677.             <form class="inline" name="form" action="index.php" method="get">
  678.                 <input type="hidden" name="locale" value="<?php echo $default_locale?>" />
  679.                 <input type="submit" value="&nbsp; <?php echo T_('CANCEL')?> &nbsp;" />
  680.             </form>
  681.             </p>
  682.             <?php
  683.             break;
  684.         }
  685.  
  686.         // Uninstall Plugins
  687.         // TODO: fp>> I don't trust the plugins to uninstall themselves correctly. There will be tons of lousy poorly written plugins. All I trust them to do is to crash the uninstall procedure. We want a hardcore brute force uninsall! and most users "may NOT want" to even think about "ma-nu-al-ly" removing something from their DB.
  688.         /*
  689.                 $DB->show_errors = $DB->halt_on_error = false;
  690.                 $Plugins = new Plugins();
  691.                 $DB->show_errors = $DB->halt_on_error = true;
  692.                 $at_least_one_failed = false;
  693.                 foreach( $Plugins->get_list_by_event( 'Uninstall' ) as $l_Plugin )
  694.                 {
  695.                     $success = $Plugins->call_method( $l_Plugin->ID, 'Uninstall', $params = array( 'unattended' => true ) );
  696.                     if( $success === false )
  697.                     {
  698.                         echo "Failed un-installing plugin $l_Plugin->classname (ID $l_Plugin->ID)...<br />\n";
  699.                         $at_least_one_failed = false;
  700.                     }
  701.                     else
  702.                     {
  703.                         echo "Uninstalled plugin $l_Plugin->classname (ID $l_Plugin->ID)...<br />\n";
  704.                     }
  705.                 }
  706.                 if( $at_least_one_failed )
  707.                 {
  708.                     echo "You may want to manually remove left files or DB tables from the failed plugin(s).<br />\n";
  709.                 }
  710.                 $DB->show_errors = $DB->halt_on_error = true;
  711.         */
  712.  
  713.         db_delete();
  714.         ?>
  715.         <p><?php echo T_('Reset done!')?></p>
  716.         <p><a href="index.php?locale=<?php echo $default_locale ?>">&laquo; <?php echo T_('Back to install menu'?></a></p>
  717.         <?php
  718.         break;
  719. }
  720.  
  721. ?>
  722.  
  723. <!-- InstanceEndEditable -->
  724.     </div>
  725.  
  726.     <div class="body_fade_out">
  727.  
  728.     <div class="menu_bottom"><!-- InstanceBeginEditable name="MenuBottom" -->
  729.             <?php echo T_('Online resources'?>: <a href="http://b2evolution.net/" target="_blank"><?php echo T_('Official website'?></a> &bull; <a href="http://b2evolution.net/about/recommended-hosting-lamp-best-choices.php" target="_blank"><?php echo T_('Find a host'?></a> &bull; <a href="http://manual.b2evolution.net/" target="_blank"><?php echo T_('Manual'?></a> &bull; <a href="http://forums.b2evolution.net/" target="_blank"><?php echo T_('Forums'?></a>
  730.         <!-- InstanceEndEditable --></div>
  731.  
  732.     <div class="copyright"><!-- InstanceBeginEditable name="CopyrightTail" -->Copyright &copy; 2003-2010 by Fran&ccedil;ois Planque &amp; others &middot; <a href="http://b2evolution.net/about/license.html" target="_blank">GNU GPL license</a> &middot; <a href="http://b2evolution.net/contact/" target="_blank">Contact</a>
  733.         <!-- InstanceEndEditable --></div>
  734.  
  735.     </div>
  736.     </div>
  737.  
  738.     <!-- InstanceBeginEditable name="BodyFoot" -->
  739.     <?php
  740.         // We need to manually call debug_info since there is no shutdown function registered during the install process.
  741.         // debug_info( true ); // force output of debug info
  742.  
  743.         // The following comments get checked in the automatic install script of demo.b2evolution.net:
  744. ?>
  745. <!-- b2evo-install-action:<?php echo $action ?> -->
  746. <!-- b2evo-install-end -->
  747.     <!-- InstanceEndEditable -->
  748. </body>
  749. <!-- InstanceEnd --></html>
  750.  
  751.  
  752. <?php
  753. /*
  754.  * $Log: index.php,v $
  755.  * Revision 1.196  2010/03/04 18:02:55  fplanque
  756.  * Cleaned up .htaccess install
  757.  *
  758.  * Revision 1.195  2010/02/08 17:55:42  efy-yury
  759.  * copyright 2009 -> 2010
  760.  *
  761.  * Revision 1.194  2010/01/28 03:42:19  fplanque
  762.  * minor
  763.  *
  764.  * Revision 1.193  2010/01/25 18:18:25  efy-asimo
  765.  * .htaccess automatic install
  766.  *
  767.  * Revision 1.192  2010/01/21 22:49:10  blueyed
  768.  * Installer: sanitize $action always. Add marker with the action done into the footer, used by the automatic installer.
  769.  *
  770.  * Revision 1.191  2009/12/22 08:45:44  fplanque
  771.  * fix install
  772.  *
  773.  * Revision 1.190  2009/12/06 05:34:31  fplanque
  774.  * Violent refactoring for _main.inc.php
  775.  * Sorry for potential side effects.
  776.  * This needed to be done badly -- for clarity!
  777.  *
  778.  * Revision 1.189  2009/11/30 00:22:05  fplanque
  779.  * clean up debug info
  780.  * show more timers in view of block caching
  781.  *
  782.  * Revision 1.188  2009/09/29 17:56:19  tblue246
  783.  * minor
  784.  *
  785.  * Revision 1.187  2009/09/29 15:47:59  tblue246
  786.  * Installer: Escape single quotes when writing config file
  787.  *
  788.  * Revision 1.186  2009/09/29 13:29:58  tblue246
  789.  * Proper security fixes
  790.  *
  791.  * Revision 1.185  2009/09/29 03:38:34  fplanque
  792.  * security rollback. NEVER EVER ALLOW UNFILTERED INPUTS. problem here: close password with single quote, then inject PHP, no less!!!
  793.  *
  794.  * Revision 1.184  2009/09/28 20:02:43  tblue246
  795.  * param()/$type parameter: Deprecate "" value in favor of (newly added) "raw".
  796.  *
  797.  * Revision 1.183  2009/09/28 17:48:09  tblue246
  798.  * Bugfix: Allow <> chars in DB password
  799.  *
  800.  * Revision 1.182  2009/09/16 01:33:36  fplanque
  801.  * so noone complained about HEAD not (really) being installable?
  802.  *
  803.  * Revision 1.181  2009/09/14 14:31:16  waltercruz
  804.  * minor fix
  805.  *
  806.  * Revision 1.180  2009/09/14 14:10:15  efy-arrin
  807.  * Included the ClassName in load_class() call with proper UpperCase
  808.  *
  809.  * Revision 1.179  2009/07/16 17:14:22  fplanque
  810.  * doc
  811.  *
  812.  * Revision 1.178  2009/07/16 17:09:54  fplanque
  813.  * noindex doc
  814.  * added info for noobs
  815.  *
  816.  * Revision 1.177  2009/07/15 11:58:16  tblue246
  817.  * - Installer:
  818.  *     - Check if the selected locale could be activated and fallback to en-US if not.
  819.  *     - Commented out table prefix option, see mailing list/fplanque ("too complex for most newbies").
  820.  * - Added _basic_config.php to conf/.cvsignore (will replace _config_TEST.php in the future).
  821.  *
  822.  * Revision 1.176  2009/07/14 23:24:04  sam2kb
  823.  * activated table prefix fieldset
  824.  *
  825.  * Revision 1.175  2009/07/14 16:23:32  sam2kb
  826.  * doc
  827.  *
  828.  * Revision 1.174  2009/07/14 15:48:00  fplanque
  829.  * Thx to @slalaurette for finding this
  830.  *
  831.  * Revision 1.173  2009/07/13 19:17:09  tblue246
  832.  * Fixed typos
  833.  *
  834.  * Revision 1.172  2009/07/12 18:41:58  fplanque
  835.  * doc / help
  836.  *
  837.  * Revision 1.171  2009/07/11 19:43:35  tblue246
  838.  * Translation fix
  839.  *
  840.  * Revision 1.170  2009/07/10 06:49:10  sam2kb
  841.  * Made some strings translatable
  842.  *
  843.  * Revision 1.169  2009/07/09 23:45:43  fplanque
  844.  * doc
  845.  *
  846.  * Revision 1.168  2009/07/09 23:23:41  fplanque
  847.  * Check that DB supports proper charset before installing.
  848.  *
  849.  * Revision 1.167  2009/07/09 22:57:32  fplanque
  850.  * Fixed init of connection_charset, especially during install.
  851.  *
  852.  * Revision 1.166  2009/07/06 23:52:25  sam2kb
  853.  * Hardcoded "admin.php" replaced with $dispatcher
  854.  *
  855.  * Revision 1.165  2009/07/02 17:33:00  fplanque
  856.  * only activate ONE locale at install time.
  857.  *
  858.  * Revision 1.164  2009/07/02 15:43:56  fplanque
  859.  * B2evolution no longer ships with _basic_config.php .
  860.  * It ships with _basic_config.template.php instead.
  861.  * That way, uploading a new release never overwrites the previous base config.
  862.  * The installer now creates  _basic_config.php based on _basic_config.template.php + entered form values.
  863.  *
  864.  * Revision 1.163  2009/07/02 14:53:07  fplanque
  865.  * improved some more
  866.  *
  867.  * Revision 1.162  2009/07/02 13:41:38  fplanque
  868.  * fix
  869.  *
  870.  * Revision 1.161  2009/07/02 13:35:23  fplanque
  871.  * Improved installer -- language/locale selection moved to a place where it's visible!
  872.  *
  873.  * Revision 1.160  2009/03/08 23:57:47  fplanque
  874.  * 2009
  875.  *
  876.  * Revision 1.159  2009/03/05 23:38:53  blueyed
  877.  * Merge autoload branch (lp:~blueyed/b2evolution/autoload) into CVS HEAD.
  878.  *
  879.  * Revision 1.158  2009/02/28 18:45:11  fplanque
  880.  * quick cleanup of the installer
  881.  *
  882.  * Revision 1.157  2009/02/27 22:25:16  blueyed
  883.  * Fix inclusion of misc.funcs. Includes load_funcs now after all.
  884.  *
  885.  * Revision 1.156  2009/02/26 22:33:22  blueyed
  886.  * Fix messup in last commit.
  887.  *
  888.  * Revision 1.155  2009/02/26 22:16:54  blueyed
  889.  * Use load_class for classes (.class.php), and load_funcs for funcs (.funcs.php)
  890.  *
  891.  * Revision 1.154  2009/02/17 16:00:25  blueyed
  892.  * Fix doc
  893.  *
  894.  * Revision 1.153  2009/02/12 19:59:41  blueyed
  895.  * - Install: define $localtimenow, so post_datemodified gets set correctly.
  896.  * - Send Cache-Control: no-cache for install/index.php: should not get cached, e.g. when going back to "delete", it should delete!?
  897.  * - indent fixes
  898.  *
  899.  * Revision 1.152  2009/01/28 21:39:10  fplanque
  900.  * Fixed locale selection during install
  901.  *
  902.  * Revision 1.151  2009/01/22 23:26:45  blueyed
  903.  * Fix install-myself test (and stuff around it). Move 'newdb' action from install/index.php to functions_install.php to call it the same as during real install.
  904.  *
  905.  * Revision 1.150  2008/12/22 01:56:54  fplanque
  906.  * minor
  907.  *
  908.  * Revision 1.149  2008/10/05 09:59:30  tblue246
  909.  * fixing log...
  910.  *
  911.  * Revision 1.148  2008/10/04 23:47:32  tblue246
  912.  * reverting to rev 1.146
  913.  *
  914.  * Revision 1.147  2008/10/04 21:44:15  tblue246
  915.  * Set a random $instance_name on installation.
  916.  *
  917.  * Revision 1.146  2008/09/27 00:05:54  fplanque
  918.  * minor/version bump
  919.  *
  920.  * Revision 1.145  2008/09/15 11:01:15  fplanque
  921.  * Installer now creates a demo photoblog
  922.  *
  923.  * Revision 1.144  2008/02/19 11:11:20  fplanque
  924.  * no message
  925.  *
  926.  * Revision 1.143  2008/02/07 00:35:52  fplanque
  927.  * cleaned up install
  928.  *
  929.  * Revision 1.142  2008/01/21 15:00:00  fplanque
  930.  * let browser autodetect charset (russian utf8!!)
  931.  *
  932.  * Revision 1.141  2008/01/21 09:35:38  fplanque
  933.  * (c) 2008
  934.  *
  935.  * Revision 1.140  2008/01/04 19:59:59  blueyed
  936.  * Use relative path for locale flags; trim whitespace
  937.  *
  938.  * Revision 1.139  2007/10/08 21:31:23  fplanque
  939.  * auto install doc
  940.  *
  941.  * Revision 1.138  2007/09/23 18:55:17  fplanque
  942.  * attempting to debloat. The Log class is insane.
  943.  *
  944.  * Revision 1.137  2007/09/19 02:54:16  fplanque
  945.  * bullet proof upgrade
  946.  *
  947.  * Revision 1.136  2007/07/14 02:44:22  fplanque
  948.  * New default page design.
  949.  *
  950.  * Revision 1.135  2007/07/14 00:24:53  fplanque
  951.  * New installer design.
  952.  *
  953.  * Revision 1.134  2007/07/01 18:47:11  fplanque
  954.  * fixes
  955.  *
  956.  * Revision 1.133  2007/06/25 11:02:31  fplanque
  957.  * MODULES (refactored MVC)
  958.  *
  959.  * Revision 1.132  2007/06/24 18:28:55  fplanque
  960.  * refactored skin install
  961.  *
  962.  * Revision 1.129  2007/06/12 21:00:02  blueyed
  963.  * Added non-JS handling of deletedb confirmation
  964.  *
  965.  * Revision 1.128  2007/04/26 00:11:10  fplanque
  966.  * (c) 2007
  967.  *
  968.  * Revision 1.127  2007/01/20 01:44:22  blueyed
  969.  * typo
  970.  *
  971.  * Revision 1.126  2007/01/15 19:10:29  fplanque
  972.  * install refactoring
  973.  *
  974.  * Revision 1.125  2007/01/15 18:48:44  fplanque
  975.  * allow blank install.
  976.  *
  977.  * Revision 1.124  2007/01/15 03:53:24  fplanque
  978.  * refactoring / simplified installer
  979.  *
  980.  * Revision 1.123  2007/01/14 03:47:53  fplanque
  981.  * killed upgrade from b2/cafelog
  982.  * (if people haven't upgraded yet, there's little chance they ever will,
  983.  * no need to maintain this. We also provide an upgrade path with 1.x)
  984.  *
  985.  * Revision 1.122  2007/01/12 02:40:26  fplanque
  986.  * widget default params proof of concept
  987.  * (param customization to be done)
  988.  *
  989.  * Revision 1.121  2007/01/08 02:11:56  fplanque
  990.  * Blogs now make use of installed skins
  991.  * next step: make use of widgets inside of skins
  992.  *
  993.  * Revision 1.120  2006/11/30 06:13:23  blueyed
  994.  * Moved Plugins::install() and sort() galore to Plugins_admin
  995.  *
  996.  * Revision 1.119  2006/11/30 05:43:40  blueyed
  997.  * Moved Plugins::discover() to Plugins_admin::discover(); Renamed Plugins_no_DB to Plugins_admin_no_DB (and deriving from Plugins_admin)
  998.  *
  999.  * Revision 1.118  2006/11/14 00:47:32  fplanque
  1000.  * doc
  1001.  *
  1002.  * Revision 1.117  2006/10/31 04:44:00  blueyed
  1003.  * Fixed cafelogupgrade
  1004.  *
  1005.  * Revision 1.116  2006/10/27 20:11:24  blueyed
  1006.  * TODO
  1007.  *
  1008.  * Revision 1.115  2006/10/14 20:50:29  blueyed
  1009.  * Define EVO_IS_INSTALLING for /install/ and use it in Plugins to skip "dangerous" but unnecessary instantiating of other Plugins
  1010.  *
  1011.  * Revision 1.114  2006/10/01 15:23:28  blueyed
  1012.  * Fixed install
  1013.  */
  1014. ?>

Documentation generated on Sat, 06 Mar 2010 03:53:42 +0100 by phpDocumentor 1.4.2. This site is hosted and maintained by Daniel HAHLER (Contact).