'.__('Please set a master key (DC_MASTER_KEY) in configuration file.').'

'; } # Check if dotclear is already installed $schema = dbSchema::init($core->con); if (in_array($core->prefix.'post',$schema->getTables())) { $can_install = false; $err = '

'.__('Dotclear is already installed.').'

'; } # Check system capabilites if (!dcSystemCheck($core->con,$_e)) { $can_install = false; $err = '

'.__('Dotclear cannot be installed.').'

'; } # Get information and perform install $u_email = $u_firstname = $u_name = $u_login = $u_pwd = ''; $mail_sent = false; if ($can_install && !empty($_POST)) { $u_email = !empty($_POST['u_email']) ? $_POST['u_email'] : null; $u_firstname = !empty($_POST['u_firstname']) ? $_POST['u_firstname'] : null; $u_name = !empty($_POST['u_name']) ? $_POST['u_name'] : null; $u_login = !empty($_POST['u_login']) ? $_POST['u_login'] : null; $u_pwd = !empty($_POST['u_pwd']) ? $_POST['u_pwd'] : null; $u_pwd2 = !empty($_POST['u_pwd2']) ? $_POST['u_pwd2'] : null; try { # Check user information if (empty($u_login)) { throw new Exception(__('No user ID given')); } if (!preg_match('/^[A-Za-z0-9@._-]{2,}$/',$u_login)) { throw new Exception(__('User ID must contain at least 2 characters using letters, numbers or symbols.')); } if ($u_email && !text::isEmail($u_email)) { throw new Exception(__('Invalid email address')); } if (empty($u_pwd)) { throw new Exception(__('No password given')); } if ($u_pwd != $u_pwd2) { throw new Exception(__("Passwords don't match")); } if (strlen($u_pwd) < 6) { throw new Exception(__('Password must contain at least 6 characters.')); } # Try to guess timezone $default_tz = 'Europe/London'; if (!empty($_POST['u_date']) && function_exists('timezone_open')) { if (preg_match('/\((.+)\)$/',$_POST['u_date'],$_tz)) { $_tz = $_tz[1]; $_tz = @timezone_open($_tz); if ($_tz instanceof DateTimeZone) { $_tz = @timezone_name_get($_tz); if ($_tz) { $default_tz = $_tz; } } unset($_tz); } } # Create schema $_s = new dbStruct($core->con,$core->prefix); require dirname(__FILE__).'/../../inc/dbschema/db-schema.php'; $si = new dbStruct($core->con,$core->prefix); $changes = $si->synchronize($_s); # Create user $cur = $core->con->openCursor($core->prefix.'user'); $cur->user_id = $u_login; $cur->user_super = 1; $cur->user_pwd = crypt::hmac(DC_MASTER_KEY,$u_pwd); $cur->user_name = (string) $u_name; $cur->user_firstname = (string) $u_firstname; $cur->user_email = (string) $u_email; $cur->user_lang = $dlang; $cur->user_tz = $default_tz; $cur->user_creadt = date('Y-m-d H:i:s'); $cur->user_upddt = date('Y-m-d H:i:s'); $cur->user_options = serialize($core->userDefaults()); $cur->insert(); $core->auth->checkUser($u_login); $admin_url = preg_replace('%install/index.php$%','',$_SERVER['REQUEST_URI']); $root_url = preg_replace('%/admin/install/index.php$%','',$_SERVER['REQUEST_URI']); # Create blog $cur = $core->con->openCursor($core->prefix.'blog'); $cur->blog_id = 'default'; $cur->blog_url = http::getHost().$root_url.'/index.php?'; $cur->blog_name = __('My first blog'); $core->addBlog($cur); $core->blogDefaults($cur->blog_id); $blog_settings = new dcSettings($core,'default'); $blog_settings->addNamespace('system'); $blog_settings->system->put('blog_timezone',$default_tz); $blog_settings->system->put('lang',$dlang); $blog_settings->system->put('public_url',$root_url.'/public'); $blog_settings->system->put('themes_url',$root_url.'/themes'); $blog_settings->system->put('date_format',__('%A, %B %e %Y')); # Add Dotclear version $cur = $core->con->openCursor($core->prefix.'version'); $cur->module = 'core'; $cur->version = (string) DC_VERSION; $cur->insert(); # Create first post $core->setBlog('default'); $cur = $core->con->openCursor($core->prefix.'post'); $cur->user_id = $u_login; $cur->post_format = 'xhtml'; $cur->post_lang = $dlang; $cur->post_title = __('Welcome to Dotclear!'); $cur->post_content = '

'.__('This is your first entry. When you\'re ready '. 'to blog, log in to edit or delete it.').'

'; $cur->post_content_xhtml = $cur->post_content; $cur->post_status = 1; $cur->post_open_comment = 1; $cur->post_open_tb = 0; $post_id = $core->blog->addPost($cur); # Add a comment to it $cur = $core->con->openCursor($core->prefix.'comment'); $cur->post_id = $post_id; $cur->comment_tz = $default_tz; $cur->comment_author = __('Dotclear Team'); $cur->comment_email = 'contact@dotclear.net'; $cur->comment_site = 'http://www.dotclear.org/'; $cur->comment_content = __("

This is a comment.

\n

To delete it, log in and ". "view your blog's comments. Then you might remove or edit it.

"); $core->blog->addComment($cur); # Plugins initialization define('DC_CONTEXT_ADMIN',true); $core->plugins->loadModules(DC_PLUGINS_ROOT); $plugins_install = $core->plugins->installModules(); # Add default favorites $core->auth->user_prefs->addWorkspace('favorites'); $init_fav = array(); $init_fav['new_post'] = array('new_post',__('New entry'),'post.php', 'images/menu/edit.png','images/menu/edit-b.png', 'usage,contentadmin',null,'menu-new-post'); $init_fav['posts'] = array('posts',__('Entries'),'posts.php', 'images/menu/entries.png','images/menu/entries-b.png', 'usage,contentadmin',null,null); $init_fav['comments'] = array('comments',__('Comments'),'comments.php', 'images/menu/comments.png','images/menu/comments-b.png', 'usage,contentadmin',null,null); $init_fav['prefs'] = array('prefs',__('My preferences'),'preferences.php', 'images/menu/user-pref.png','images/menu/user-pref-b.png', '*',null,null); $init_fav['blog_pref'] = array('blog_pref',__('Blog settings'),'blog_pref.php', 'images/menu/blog-pref.png','images/menu/blog-pref-b.png', 'admin',null,null); $init_fav['blog_theme'] = array('blog_theme',__('Blog appearance'),'blog_theme.php', 'images/menu/themes.png','images/menu/blog-theme-b.png', 'admin',null,null); $init_fav['pages'] = array('pages',__('Pages'),'plugin.php?p=pages', 'index.php?pf=pages/icon.png','index.php?pf=pages/icon-big.png', 'contentadmin,pages',null,null); $init_fav['blogroll'] = array('blogroll',__('Blogroll'),'plugin.php?p=blogroll', 'index.php?pf=blogroll/icon-small.png','index.php?pf=blogroll/icon.png', 'usage,contentadmin',null,null); $count = 0; foreach ($init_fav as $k => $f) { $t = array('name' => $f[0],'title' => $f[1],'url' => $f[2], 'small-icon' => $f[3], 'large-icon' => $f[4],'permissions' => $f[5],'id' => $f[6],'class' => $f[7]); $core->auth->user_prefs->favorites->put(sprintf("g%03s",$count),serialize($t),'string',null,true,true); $count++; } $step = 1; } catch (Exception $e) { $err = $e->getMessage(); } } if (!isset($step)) { $step = 0; } header('Content-Type: text/html; charset=UTF-8'); ?> <?php echo __('Dotclear Install'); ?>
'.__('Dotclear installation').''. '
'; if (!is_writable(DC_TPL_CACHE)) { echo '

'.sprintf(__('Cache directory %s is not writable.'),DC_TPL_CACHE).'

'; } if ($can_install && !empty($err)) { echo '

'.__('Errors:').'

'.$err.'
'; } if (!empty($_GET['wiz'])) { echo '

'.__('Configuration file has been successfully created.').'

'; } if ($can_install && $step == 0) { echo '

'.__('User information').'

'. '

'.__('Please provide the following information needed to create the first user.').'

'. '
'. '
'.__('User information').''. '

'. '

'. '

'. '
'. '
'.__('Username and password').''. '

'. '

'. '

'. '
'. '

'. '
'; } elseif ($can_install && $step == 1) { # Plugins install messages $plugins_install_result = ''; if (!empty($plugins_install['success'])) { $plugins_install_result .= '
'.__('Following plugins have been installed:').'
    '; foreach ($plugins_install['success'] as $k => $v) { $plugins_install_result .= '
  • '.$k.'
  • '; } $plugins_install_result .= '
'; } if (!empty($plugins_install['failure'])) { $plugins_install_result .= '
'.__('Following plugins have not been installed:').'
    '; foreach ($plugins_install['failure'] as $k => $v) { $plugins_install_result .= '
  • '.$k.' ('.$v.')
  • '; } $plugins_install_result .= '
'; } echo '

'.__('All done!').'

'. $plugins_install_result. '

'.__('Dotclear has been successfully installed. Here is some useful information you should keep.').'

'. '

'.__('Your account').'

'. ''. '

'.__('Your blog').'

'. ''. '
'. '

'. form::hidden(array('user_id'),html::escapeHTML($u_login)). form::hidden(array('user_pwd'),html::escapeHTML($u_pwd)). '

'. '
'; } elseif (!$can_install) { echo '

'.__('Installation can not be completed').'

'. '

'.__('Errors:').'

'.$err.'
'. '

'.__('For the said reasons, Dotclear can not be installed. '. 'Please refer to '. 'the documentation to learn how to correct the problem.').'

'; } ?>