示例#1
0
function install_content(&$a)
{
    global $install_wizard_pass, $db;
    $o = '';
    $wizard_status = "";
    $install_title = t('Friendica Social Communications Server - Setup');
    if (x($a->data, 'db_conn_failed')) {
        $install_wizard_pass = 2;
        $wizard_status = t('Could not connect to database.');
    }
    if (x($a->data, 'db_create_failed')) {
        $install_wizard_pass = 2;
        $wizard_status = t('Could not create table.');
    }
    $db_return_text = "";
    if (x($a->data, 'db_installed')) {
        $txt = '<p style="font-size: 130%;">';
        $txt .= t('Your Friendica site database has been installed.') . EOL;
        $db_return_text .= $txt;
    }
    if (x($a->data, 'db_failed')) {
        $txt = t('You may need to import the file "database.sql" manually using phpmyadmin or mysql.') . EOL;
        $txt .= t('Please see the file "INSTALL.txt".') . EOL . "<hr>";
        $txt .= "<pre>" . $a->data['db_failed'] . "</pre>" . EOL;
        $db_return_text .= $txt;
    }
    if ($db && $db->connected) {
        $r = q("SELECT COUNT(*) as `total` FROM `user`");
        if ($r && count($r) && $r[0]['total']) {
            $tpl = get_markup_template('install.tpl');
            return replace_macros($tpl, array('$title' => $install_title, '$pass' => '', '$status' => t('Permission denied.'), '$text' => ''));
        }
    }
    if (x($a->data, 'txt') && strlen($a->data['txt'])) {
        $db_return_text .= manual_config($a);
    }
    if ($db_return_text != "") {
        $tpl = get_markup_template('install.tpl');
        return replace_macros($tpl, array('$title' => $install_title, '$pass' => "", '$text' => $db_return_text . what_next()));
    }
    switch ($install_wizard_pass) {
        case 1:
            // System check
            $checks = array();
            check_funcs($checks);
            check_htconfig($checks);
            check_smarty3($checks);
            check_keys($checks);
            if (x($_POST, 'phpath')) {
                $phpath = notags(trim($_POST['phpath']));
            }
            check_php($phpath, $checks);
            check_htaccess($checks);
            function check_passed($v, $c)
            {
                if ($c['required']) {
                    $v = $v && $c['status'];
                }
                return $v;
            }
            $checkspassed = array_reduce($checks, "check_passed", true);
            $tpl = get_markup_template('install_checks.tpl');
            $o .= replace_macros($tpl, array('$title' => $install_title, '$pass' => t('System check'), '$checks' => $checks, '$passed' => $checkspassed, '$see_install' => t('Please see the file "INSTALL.txt".'), '$next' => t('Next'), '$reload' => t('Check again'), '$phpath' => $phpath, '$baseurl' => $a->get_baseurl()));
            return $o;
            break;
        case 2:
            // Database config
            $dbhost = x($_POST, 'dbhost') ? notags(trim($_POST['dbhost'])) : 'localhost';
            $dbuser = notags(trim($_POST['dbuser']));
            $dbpass = notags(trim($_POST['dbpass']));
            $dbdata = notags(trim($_POST['dbdata']));
            $phpath = notags(trim($_POST['phpath']));
            $tpl = get_markup_template('install_db.tpl');
            $o .= replace_macros($tpl, array('$title' => $install_title, '$pass' => t('Database connection'), '$info_01' => t('In order to install Friendica we need to know how to connect to your database.'), '$info_02' => t('Please contact your hosting provider or site administrator if you have questions about these settings.'), '$info_03' => t('The database you specify below should already exist. If it does not, please create it before continuing.'), '$status' => $wizard_status, '$dbhost' => array('dbhost', t('Database Server Name'), $dbhost, ''), '$dbuser' => array('dbuser', t('Database Login Name'), $dbuser, ''), '$dbpass' => array('dbpass', t('Database Login Password'), $dbpass, ''), '$dbdata' => array('dbdata', t('Database Name'), $dbdata, ''), '$adminmail' => array('adminmail', t('Site administrator email address'), $adminmail, t('Your account email address must match this in order to use the web admin panel.')), '$lbl_10' => t('Please select a default timezone for your website'), '$baseurl' => $a->get_baseurl(), '$phpath' => $phpath, '$submit' => t('Submit')));
            return $o;
            break;
        case 3:
            // Site settings
            require_once 'include/datetime.php';
            $dbhost = x($_POST, 'dbhost') ? notags(trim($_POST['dbhost'])) : 'localhost';
            $dbuser = notags(trim($_POST['dbuser']));
            $dbpass = notags(trim($_POST['dbpass']));
            $dbdata = notags(trim($_POST['dbdata']));
            $phpath = notags(trim($_POST['phpath']));
            $adminmail = notags(trim($_POST['adminmail']));
            $timezone = x($_POST, 'timezone') ? $_POST['timezone'] : 'America/Los_Angeles';
            $tpl = get_markup_template('install_settings.tpl');
            $o .= replace_macros($tpl, array('$title' => $install_title, '$pass' => t('Site settings'), '$status' => $wizard_status, '$dbhost' => $dbhost, '$dbuser' => $dbuser, '$dbpass' => $dbpass, '$dbdata' => $dbdata, '$phpath' => $phpath, '$adminmail' => array('adminmail', t('Site administrator email address'), $adminmail, t('Your account email address must match this in order to use the web admin panel.')), '$timezone' => field_timezone('timezone', t('Please select a default timezone for your website'), $timezone, ''), '$baseurl' => $a->get_baseurl(), '$submit' => t('Submit')));
            return $o;
            break;
    }
}
示例#2
0
/**
 * @brief Get output for the setup page.
 *
 * Depending on the state we are currently in it returns different content.
 *
 * @param App &$a
 * @return string parsed HTML output
 */
function setup_content(&$a)
{
    global $install_wizard_pass, $db;
    $o = '';
    $wizard_status = '';
    $install_title = t('$Projectname Server - Setup');
    if (x(App::$data, 'db_conn_failed')) {
        $install_wizard_pass = 2;
        $wizard_status = t('Could not connect to database.');
    }
    if (x(App::$data, 'url_fail')) {
        $install_wizard_pass = 3;
        $wizard_status = t('Could not connect to specified site URL. Possible SSL certificate or DNS issue.');
        if (App::$data['url_error']) {
            $wizard_status .= ' ' . App::$data['url_error'];
        }
    }
    if (x(App::$data, 'db_create_failed')) {
        $install_wizard_pass = 2;
        $wizard_status = t('Could not create table.');
    }
    $db_return_text = '';
    if (x(App::$data, 'db_installed')) {
        $txt = '<p style="font-size: 130%;">';
        $txt .= t('Your site database has been installed.') . EOL;
        $db_return_text .= $txt;
    }
    if (x(App::$data, 'db_failed')) {
        $txt = t('You may need to import the file "install/schema_xxx.sql" manually using a database client.') . EOL;
        $txt .= t('Please see the file "install/INSTALL.txt".') . EOL . "<hr>";
        $txt .= "<pre>" . App::$data['db_failed'] . "</pre>" . EOL;
        $db_return_text .= $txt;
    }
    if ($db && $db->connected) {
        $r = q("SELECT COUNT(*) as `total` FROM `account`");
        if ($r && count($r) && $r[0]['total']) {
            $tpl = get_markup_template('install.tpl');
            return replace_macros($tpl, array('$title' => $install_title, '$pass' => '', '$status' => t('Permission denied.'), '$text' => ''));
        }
    }
    if (x(App::$data, 'txt') && strlen(App::$data['txt'])) {
        $db_return_text .= manual_config($a);
    }
    if ($db_return_text != "") {
        $tpl = get_markup_template('install.tpl');
        return replace_macros($tpl, array('$title' => $install_title, '$pass' => '', '$text' => $db_return_text . what_next()));
    }
    switch ($install_wizard_pass) {
        case 1:
            // System check
            $checks = array();
            check_funcs($checks);
            check_htconfig($checks);
            check_store($checks);
            check_smarty3($checks);
            check_keys($checks);
            if (x($_POST, 'phpath')) {
                $phpath = notags(trim($_POST['phpath']));
            }
            check_php($phpath, $checks);
            check_phpconfig($checks);
            check_htaccess($checks);
            function check_passed($v, $c)
            {
                if ($c['required']) {
                    $v = $v && $c['status'];
                }
                return $v;
            }
            $checkspassed = array_reduce($checks, "check_passed", true);
            $tpl = get_markup_template('install_checks.tpl');
            $o .= replace_macros($tpl, array('$title' => $install_title, '$pass' => t('System check'), '$checks' => $checks, '$passed' => $checkspassed, '$see_install' => t('Please see the file "install/INSTALL.txt".'), '$next' => t('Next'), '$reload' => t('Check again'), '$phpath' => $phpath, '$baseurl' => z_root()));
            return $o;
            break;
        case 2:
            // Database config
            $dbhost = x($_POST, 'dbhost') ? notags(trim($_POST['dbhost'])) : '127.0.0.1';
            $dbuser = notags(trim($_POST['dbuser']));
            $dbport = intval(notags(trim($_POST['dbport'])));
            $dbpass = notags(trim($_POST['dbpass']));
            $dbdata = notags(trim($_POST['dbdata']));
            $dbtype = intval(notags(trim($_POST['dbtype'])));
            $phpath = notags(trim($_POST['phpath']));
            $adminmail = notags(trim($_POST['adminmail']));
            $siteurl = notags(trim($_POST['siteurl']));
            $tpl = get_markup_template('install_db.tpl');
            $o .= replace_macros($tpl, array('$title' => $install_title, '$pass' => t('Database connection'), '$info_01' => t('In order to install $Projectname we need to know how to connect to your database.'), '$info_02' => t('Please contact your hosting provider or site administrator if you have questions about these settings.'), '$info_03' => t('The database you specify below should already exist. If it does not, please create it before continuing.'), '$status' => $wizard_status, '$dbhost' => array('dbhost', t('Database Server Name'), $dbhost, t('Default is 127.0.0.1')), '$dbport' => array('dbport', t('Database Port'), $dbport, t('Communication port number - use 0 for default')), '$dbuser' => array('dbuser', t('Database Login Name'), $dbuser, ''), '$dbpass' => array('dbpass', t('Database Login Password'), $dbpass, ''), '$dbdata' => array('dbdata', t('Database Name'), $dbdata, ''), '$dbtype' => array('dbtype', t('Database Type'), $dbtype, '', array(0 => 'MySQL', 1 => 'PostgreSQL')), '$adminmail' => array('adminmail', t('Site administrator email address'), $adminmail, t('Your account email address must match this in order to use the web admin panel.')), '$siteurl' => array('siteurl', t('Website URL'), z_root(), t('Please use SSL (https) URL if available.')), '$lbl_10' => t('Please select a default timezone for your website'), '$baseurl' => z_root(), '$phpath' => $phpath, '$submit' => t('Submit')));
            return $o;
            break;
        case 3:
            // Site settings
            require_once 'include/datetime.php';
            $dbhost = x($_POST, 'dbhost') ? notags(trim($_POST['dbhost'])) : '127.0.0.1';
            $dbport = intval(notags(trim($_POST['dbuser'])));
            $dbuser = notags(trim($_POST['dbuser']));
            $dbpass = notags(trim($_POST['dbpass']));
            $dbdata = notags(trim($_POST['dbdata']));
            $dbtype = intval(notags(trim($_POST['dbtype'])));
            $phpath = notags(trim($_POST['phpath']));
            $adminmail = notags(trim($_POST['adminmail']));
            $siteurl = notags(trim($_POST['siteurl']));
            $timezone = x($_POST, 'timezone') ? $_POST['timezone'] : 'America/Los_Angeles';
            $tpl = get_markup_template('install_settings.tpl');
            $o .= replace_macros($tpl, array('$title' => $install_title, '$pass' => t('Site settings'), '$status' => $wizard_status, '$dbhost' => $dbhost, '$dbport' => $dbport, '$dbuser' => $dbuser, '$dbpass' => $dbpass, '$dbdata' => $dbdata, '$phpath' => $phpath, '$dbtype' => $dbtype, '$adminmail' => array('adminmail', t('Site administrator email address'), $adminmail, t('Your account email address must match this in order to use the web admin panel.')), '$siteurl' => array('siteurl', t('Website URL'), z_root(), t('Please use SSL (https) URL if available.')), '$advanced' => array('advanced', t('Enable $Projectname <strong>advanced</strong> features?'), 1, t('Some advanced features, while useful - may be best suited for technically proficient audiences')), '$timezone' => array('timezone', t('Please select a default timezone for your website'), $timezone, '', get_timezones()), '$baseurl' => z_root(), '$submit' => t('Submit')));
            return $o;
            break;
    }
}