Add Install Mode
- added PHP docBlock to methods - increased code quality
This commit is contained in:
parent
8815d07765
commit
6cb277b0bb
2 changed files with 114 additions and 24 deletions
|
@ -8,6 +8,7 @@ use Friendica\App;
|
||||||
use Friendica\Core\Install;
|
use Friendica\Core\Install;
|
||||||
|
|
||||||
require_once 'mod/install.php';
|
require_once 'mod/install.php';
|
||||||
|
require_once 'include/dba.php';
|
||||||
|
|
||||||
class AutomaticInstallation extends Console
|
class AutomaticInstallation extends Console
|
||||||
{
|
{
|
||||||
|
@ -76,7 +77,7 @@ HELP;
|
||||||
// Install database
|
// Install database
|
||||||
$this->out("Inserting data into database...\n");
|
$this->out("Inserting data into database...\n");
|
||||||
|
|
||||||
$checkResults['data'] = Install::loadDatabase();
|
$checkResults['data'] = Install::installDatabaseStructure();
|
||||||
|
|
||||||
if ($checkResults['data'] !== '') {
|
if ($checkResults['data'] !== '') {
|
||||||
throw new \RuntimeException("ERROR: DB Database creation error. Is the DB empty?\n");
|
throw new \RuntimeException("ERROR: DB Database creation error. Is the DB empty?\n");
|
||||||
|
@ -104,7 +105,7 @@ HELP;
|
||||||
$checks = [];
|
$checks = [];
|
||||||
|
|
||||||
Install::checkFunctions($checks);
|
Install::checkFunctions($checks);
|
||||||
Install::checkImagik($checks);
|
Install::checkImagick($checks);
|
||||||
Install::checkHtConfig($checks);
|
Install::checkHtConfig($checks);
|
||||||
Install::checkSmarty3($checks);
|
Install::checkSmarty3($checks);
|
||||||
Install::checkKeys($checks);
|
Install::checkKeys($checks);
|
||||||
|
|
|
@ -14,22 +14,33 @@ use Exception;
|
||||||
use DOMDocument;
|
use DOMDocument;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Contains the class with install relevant stuff *
|
* Contains methods for installation purpose of Friendica
|
||||||
*/
|
*/
|
||||||
class Install extends BaseObject
|
class Install extends BaseObject
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Sets the install-mode for further methods
|
||||||
|
*/
|
||||||
public static function setInstallMode()
|
public static function setInstallMode()
|
||||||
{
|
{
|
||||||
self::getApp()->mode = App::MODE_INSTALL;
|
self::getApp()->mode = App::MODE_INSTALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the current installation environment. There are optional and mandatory checks.
|
||||||
|
*
|
||||||
|
* @param string $phpath Optional path to the PHP binary (Default is 'php')
|
||||||
|
*
|
||||||
|
* @return array First element is a list of all checks and their results,
|
||||||
|
* the second element is a list of passed checks
|
||||||
|
*/
|
||||||
public static function check($phpath = 'php')
|
public static function check($phpath = 'php')
|
||||||
{
|
{
|
||||||
$checks = [];
|
$checks = [];
|
||||||
|
|
||||||
self::checkFunctions($checks);
|
self::checkFunctions($checks);
|
||||||
|
|
||||||
self::checkImagik($checks);
|
self::checkImagick($checks);
|
||||||
|
|
||||||
self::checkHtConfig($checks);
|
self::checkHtConfig($checks);
|
||||||
|
|
||||||
|
@ -53,6 +64,22 @@ class Install extends BaseObject
|
||||||
return array($checks, $checkspassed);
|
return array($checks, $checkspassed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes the installation of Friendica in the given environment.
|
||||||
|
* - Creates `.htconfig.php`
|
||||||
|
* - Installs Database Structure
|
||||||
|
*
|
||||||
|
* @param string $urlpath Path based on the URL of Friendica (e.g. '/friendica')
|
||||||
|
* @param string $dbhost Hostname/IP of the Friendica Database
|
||||||
|
* @param string $dbuser Username of the Database connection credentials
|
||||||
|
* @param string $dbpass Password of the Database connection credentials
|
||||||
|
* @param string $dbdata Name of the Database
|
||||||
|
* @param string $phpath Path to the PHP-Binary (e.g. 'php' or '/usr/bin/php')
|
||||||
|
* @param string $timezone Timezone of the Friendica Installaton (e.g. 'Europe/Berlin')
|
||||||
|
* @param string $language 2-letter ISO 639-1 code (eg. 'en')
|
||||||
|
* @param string $adminmail Mail-Adress of the administrator
|
||||||
|
* @param int $rino Rino-enabled (1 = true, 0 = false)
|
||||||
|
*/
|
||||||
public static function install($urlpath, $dbhost, $dbuser, $dbpass, $dbdata, $phpath, $timezone, $language, $adminmail, $rino = 1)
|
public static function install($urlpath, $dbhost, $dbuser, $dbpass, $dbdata, $phpath, $timezone, $language, $adminmail, $rino = 1)
|
||||||
{
|
{
|
||||||
$tpl = get_markup_template('htconfig.tpl');
|
$tpl = get_markup_template('htconfig.tpl');
|
||||||
|
@ -69,13 +96,12 @@ class Install extends BaseObject
|
||||||
'$rino' => $rino
|
'$rino' => $rino
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
$result = file_put_contents('.htconfig.php', $txt);
|
$result = file_put_contents('.htconfig.php', $txt);
|
||||||
if (! $result) {
|
if (! $result) {
|
||||||
self::getApp()->data['txt'] = $txt;
|
self::getApp()->data['txt'] = $txt;
|
||||||
}
|
}
|
||||||
|
|
||||||
$errors = self::loadDatabase();
|
$errors = self::installDatabaseStructure();
|
||||||
|
|
||||||
if ($errors) {
|
if ($errors) {
|
||||||
self::getApp()->data['db_failed'] = $errors;
|
self::getApp()->data['db_failed'] = $errors;
|
||||||
|
@ -85,13 +111,16 @@ class Install extends BaseObject
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* checks : array passed to template
|
* Adds new checks to the array $checks
|
||||||
* title : string
|
*
|
||||||
* status : boolean
|
* @param array $checks The list of all checks (by-ref parameter!)
|
||||||
* required : boolean
|
* @param string $title The title of the current check
|
||||||
* help : string optional
|
* @param bool $status 1 = check passed, 0 = check not passed
|
||||||
|
* @param bool $required 1 = check is mandatory, 0 = check is optional
|
||||||
|
* @param string $help A help-string for the current check
|
||||||
|
* @param string $error_msg Optional. A error message, if the current check failed
|
||||||
*/
|
*/
|
||||||
private static function addCheck(&$checks, $title, $status, $required, $help)
|
private static function addCheck(&$checks, $title, $status, $required, $help, $error_msg = "")
|
||||||
{
|
{
|
||||||
$checks[] = [
|
$checks[] = [
|
||||||
'title' => $title,
|
'title' => $title,
|
||||||
|
@ -102,6 +131,18 @@ class Install extends BaseObject
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PHP Check
|
||||||
|
*
|
||||||
|
* Checks the PHP environment.
|
||||||
|
*
|
||||||
|
* - Checks if a PHP binary is available
|
||||||
|
* - Checks if it is the CLI version
|
||||||
|
* - Checks if "register_argc_argv" is enabled
|
||||||
|
*
|
||||||
|
* @param string $phpath Optional. The Path to the PHP-Binary
|
||||||
|
* @param array $checks The list of all checks (by-ref parameter!)
|
||||||
|
*/
|
||||||
public static function checkPHP(&$phpath, &$checks)
|
public static function checkPHP(&$phpath, &$checks)
|
||||||
{
|
{
|
||||||
$passed = $passed2 = $passed3 = false;
|
$passed = $passed2 = $passed3 = false;
|
||||||
|
@ -138,7 +179,6 @@ class Install extends BaseObject
|
||||||
self::addCheck($checks, L10n::t('PHP cli binary'), $passed2, true, $help);
|
self::addCheck($checks, L10n::t('PHP cli binary'), $passed2, true, $help);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($passed2) {
|
if ($passed2) {
|
||||||
$str = autoname(8);
|
$str = autoname(8);
|
||||||
$cmd = "$phpath testargs.php $str";
|
$cmd = "$phpath testargs.php $str";
|
||||||
|
@ -151,15 +191,20 @@ class Install extends BaseObject
|
||||||
}
|
}
|
||||||
self::addCheck($checks, L10n::t('PHP register_argc_argv'), $passed3, true, $help);
|
self::addCheck($checks, L10n::t('PHP register_argc_argv'), $passed3, true, $help);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OpenSSL Check
|
||||||
|
*
|
||||||
|
* Checks the OpenSSL Environment
|
||||||
|
*
|
||||||
|
* - Checks, if the command "openssl_pkey_new" is available
|
||||||
|
*
|
||||||
|
* @param array $checks The list of all checks (by-ref parameter!)
|
||||||
|
*/
|
||||||
public static function checkKeys(&$checks)
|
public static function checkKeys(&$checks)
|
||||||
{
|
{
|
||||||
|
|
||||||
$help = '';
|
$help = '';
|
||||||
|
|
||||||
$res = false;
|
$res = false;
|
||||||
|
|
||||||
if (function_exists('openssl_pkey_new')) {
|
if (function_exists('openssl_pkey_new')) {
|
||||||
|
@ -171,16 +216,28 @@ class Install extends BaseObject
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get private key
|
// Get private key
|
||||||
|
|
||||||
if (!$res) {
|
if (!$res) {
|
||||||
$help .= L10n::t('Error: the "openssl_pkey_new" function on this system is not able to generate encryption keys') . EOL;
|
$help .= L10n::t('Error: the "openssl_pkey_new" function on this system is not able to generate encryption keys') . EOL;
|
||||||
$help .= L10n::t('If running under Windows, please see "http://www.php.net/manual/en/openssl.installation.php".');
|
$help .= L10n::t('If running under Windows, please see "http://www.php.net/manual/en/openssl.installation.php".');
|
||||||
}
|
}
|
||||||
self::addCheck($checks, L10n::t('Generate encryption keys'), $res, true, $help);
|
self::addCheck($checks, L10n::t('Generate encryption keys'), $res, true, $help);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PHP functions Check
|
||||||
|
*
|
||||||
|
* Checks the following PHP functions
|
||||||
|
* - libCurl
|
||||||
|
* - GD Graphics
|
||||||
|
* - OpenSSL
|
||||||
|
* - PDO or MySQLi
|
||||||
|
* - mb_string
|
||||||
|
* - XML
|
||||||
|
* - iconv
|
||||||
|
* - POSIX
|
||||||
|
*
|
||||||
|
* @param array $checks The list of all checks (by-ref parameter!)
|
||||||
|
*/
|
||||||
public static function checkFunctions(&$checks)
|
public static function checkFunctions(&$checks)
|
||||||
{
|
{
|
||||||
$ck_funcs = [];
|
$ck_funcs = [];
|
||||||
|
@ -245,7 +302,13 @@ class Install extends BaseObject
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ".htconfig.php" - Check
|
||||||
|
*
|
||||||
|
* Checks if it's possible to create the ".htconfig.php"
|
||||||
|
*
|
||||||
|
* @param array $checks The list of all checks (by-ref parameter!)
|
||||||
|
*/
|
||||||
public static function checkHtConfig(&$checks)
|
public static function checkHtConfig(&$checks)
|
||||||
{
|
{
|
||||||
$status = true;
|
$status = true;
|
||||||
|
@ -264,6 +327,13 @@ class Install extends BaseObject
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Smarty3 Template Check
|
||||||
|
*
|
||||||
|
* Checks, if the directory of Smarty3 is writable
|
||||||
|
*
|
||||||
|
* @param array $checks The list of all checks (by-ref parameter!)
|
||||||
|
*/
|
||||||
public static function checkSmarty3(&$checks)
|
public static function checkSmarty3(&$checks)
|
||||||
{
|
{
|
||||||
$status = true;
|
$status = true;
|
||||||
|
@ -281,6 +351,13 @@ class Install extends BaseObject
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ".htaccess" - Check
|
||||||
|
*
|
||||||
|
* Checks, if "url_rewrite" is enabled in the ".htaccess" file
|
||||||
|
*
|
||||||
|
* @param array $checks The list of all checks (by-ref parameter!)
|
||||||
|
*/
|
||||||
public static function checkHtAccess(&$checks)
|
public static function checkHtAccess(&$checks)
|
||||||
{
|
{
|
||||||
$status = true;
|
$status = true;
|
||||||
|
@ -302,14 +379,21 @@ class Install extends BaseObject
|
||||||
$error_msg['url'] = $test['redirect_url'];
|
$error_msg['url'] = $test['redirect_url'];
|
||||||
$error_msg['msg'] = $test['error'];
|
$error_msg['msg'] = $test['error'];
|
||||||
}
|
}
|
||||||
self::addCheck($checks, L10n::t('Url rewrite is working'), $status, true, $help);
|
self::addCheck($checks, L10n::t('Url rewrite is working'), $status, true, $help, $error_msg);
|
||||||
} else {
|
} else {
|
||||||
// cannot check modrewrite if libcurl is not installed
|
// cannot check modrewrite if libcurl is not installed
|
||||||
/// @TODO Maybe issue warning here?
|
/// @TODO Maybe issue warning here?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function checkImagik(&$checks)
|
/**
|
||||||
|
* Imagick Check
|
||||||
|
*
|
||||||
|
* Checks, if the imagick module is available
|
||||||
|
*
|
||||||
|
* @param array $checks The list of all checks (by-ref parameter!)
|
||||||
|
*/
|
||||||
|
public static function checkImagick(&$checks)
|
||||||
{
|
{
|
||||||
$imagick = false;
|
$imagick = false;
|
||||||
$gif = false;
|
$gif = false;
|
||||||
|
@ -331,7 +415,12 @@ class Install extends BaseObject
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function loadDatabase()
|
/**
|
||||||
|
* Installs the Database structure
|
||||||
|
*
|
||||||
|
* @return string A possible error
|
||||||
|
*/
|
||||||
|
public static function installDatabaseStructure()
|
||||||
{
|
{
|
||||||
$errors = DBStructure::update(false, true, true);
|
$errors = DBStructure::update(false, true, true);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue