true,
"text" => sprintf("Gallery3 requires PHP 5.2 or newer, current version: %s.", PHP_VERSION));
$failed = true;
} else {
self::$messages["PHP Version"] = array("error" => false,
"text" => PHP_VERSION);
}
if (!(is_dir(SYSPATH) AND is_file(SYSPATH.'core/Bootstrap'.EXT))) {
self::$messages["Kohana Directory"] = array("error" => true,
"text" => "The configured Kohana directory does not exist or does not contain the required files.");
} else {
self::$messages["Kohana Directory"] = array("error" => false,
"text" => SYSPATH);
}
if (!(is_dir(APPPATH) AND is_file(APPPATH.'config/config'.EXT))) {
self::$messages["Application Directory"] = array("error" => true,
"text" => "The configured Gallery3 application directory does not exist or does not contain the required files.");
$failed = true;
} else {
self::$messages["Application Directory"] = array("error" => false,
"text" => APPPATH);
}
if (!(is_dir(MODPATH))) {
self::$messages["Modules Directory"] = array("error" => true,
"text" => "The configured Gallery3 modules directory does not exist or does not contain the required files.");
$failed = true;
} else {
self::$messages["Modules Directory"] = array("error" => false,
"text" => MODPATH);
}
if (!(is_dir(THEMEPATH))) {
self::$messages["Theme Directory"] = array("error" => true,
"text" => "The configured Gallery3 themes directory does not exist or does not contain the required files.");
$failed = true;
} else {
self::$messages["Themes Directory"] = array("error" => false,
"text" => THEMEPATH);
}
if (!@preg_match("/^.$/u", utf8_encode("\xF1"))) {
self::$messages["PCRE UTF-8"] = array("error" => true,
"text" => "Perl-Compatible Regular Expressions has not been compiled with UTF-8 support.",
"html" => "PCRE has not been compiled with UTF-8 support.");
$failed = true;
} else if (!@preg_match("/^\pL$/u", utf8_encode("\xF1"))) {
self::$messages["PCRE UTF-8"] = array("error" => true,
"text" => "Perl-Compatible Regular Expressions has not been compiled with Unicode support.",
"html" => "PCRE has not been compiled with Unicode property support.");
$failed = true;
} else {
self::$messages["PCRE UTF-8"] = array("error" => false,
"text" => "Pass");
}
if (!(class_exists("ReflectionClass"))) {
self::$messages["Reflection Enabled"] = array("error" => true,
"text" => "PHP relection is either not loaded or not compiled in.",
"html" => "PHP relection is either not loaded or not compiled in.");
$failed = true;
} else {
self::$messages["Reflection Enabled"] = array("error" => false,
"text" => "Pass");
}
if (!(function_exists("filter_list"))) {
self::$messages["Filters Enabled"] = array("error" => true,
"text" => "The filter extension is either not loaded or not compiled in.",
"html" => "The filter extension is either not loaded or not compiled in.");
$failed = true;
} else {
self::$messages["Filters Enabled"] = array("error" => false,
"text" => "Pass");
}
if (!(extension_loaded("iconv"))) {
self::$messages["Iconv Loaded"] = array("error" => true,
"text" => "The iconv extension is not loaded.",
"html" => "The iconv extension is not loaded.");
$failed = true;
} else {
self::$messages["Iconv Enabled"] = array("error" => false,
"text" => "Pass");
}
if (extension_loaded("mbstring") &&
(ini_get("mbstring.func_overload") & MB_OVERLOAD_STRING)) {
self::$messages["Mbstring Overloaded"] = array("error" => true,
"text" => "The mbstring extension is overloading PHP's native string functions.",
"html" => "The mbstring extension is overloading PHP's native string functions.");
$failed = true;
} else {
self::$messages["MbString Overloaded"] = array("error" => false,
"text" => "Pass");
}
if (!(isset($_SERVER["REQUEST_URI"]) || isset($_SERVER["PHP_SELF"]))) {
self::$messages["URI Determination"] = array("error" => true,
"text" => "Neither \$_SERVER['REQUEST_URI'] or \$_SERVER['PHP_SELF'] is available.",
"html" => "Neither \$_SERVER['REQUEST_URI']
or \$_SERVER['PHP_SELF'] is available.");
$failed = true;
} else {
self::$messages["URI Determination"] = array("error" => false,
"text" => "Pass");
}
$short_tags = ini_get("short_open_tag");
if (empty($short_tags)) {
self::$messages["Short Tags"] = array("error" => true,
"text" => "Gallery3 requires that PHP short tags be enabled.",
"html" => "Gallery3 requires that PHP short tags be enabled");
$failed = true;
} else {
self::$messages["Short Tags"] = array("error" => false,
"text" => "Pass");
}
return $failed;
}
public static function display_requirements() {
if (PHP_SAPI == 'cli') {
print self::_render("installer/views/installer.txt");
} else {
print self::_render("installer/views/installer.html");
}
}
/* -h Database host (default: localhost)
* -u Database user (default: root)
* -p Database user password (default: )
* -d Database name (default: gallery3)
* -t Table prefix (default: )
* -f Response file (default: not used)
* The response file is a php file that contains the following syntax;
* $config[key] = value;
* Where key is one of "host", "user", "password", "dbname", "prefix". Values specified
* on the command line will override values contained in this file
*/
public function parse_cli_parms($argv) {
for ($i=0; $i < count($argv); $i++) {
switch (strtolower($argv[$i])) {
case "-d":
$arguments["dbname"] = $argv[++$i];
break;
case "-h":
$arguments["host"] = $argv[++$i];
break;
case "-u":
$arguments["user"] = $argv[++$i];
break;
case "-p":
$arguments["password"] = $argv[++$i];
break;
case "-t":
$arguments["prefix"] = $argv[++$i];
break;
case "-f":
$arguments["file"] = $argv[++$i];
break;
}
}
$config = array("host" => "localhost", "user" => "root", "password" => "",
"dbname" => "gallery3", "prefix" => "");
if (!empty($arguments["file"])) {
if (file_exists($arguments["file"])) {
include $arguments["file"];
}
unset($arguments["file"]);
}
self::$config = array_merge($config, $arguments);
var_dump(self::$config);
}
private static function _render($view) {
if ($view == '')
return;
// Buffering on
ob_start();
try
{
// Views are straight HTML pages with embedded PHP, so importing them
// this way insures that $this can be accessed as if the user was in
// the controller, which gives the easiest access to libraries in views
include realpath($view . EXT);
}
catch (Exception $e)
{
// Display the exception using its internal __toString method
echo $e;
}
// Fetch the output and close the buffer
return ob_get_clean();
}
}