diff --git a/htdocs/setup.php b/htdocs/setup.php index 708f5584..bd776f01 100644 --- a/htdocs/setup.php +++ b/htdocs/setup.php @@ -1,85 +1,108 @@ ok = (boolean) $success; + $this->description = (isset($description)?$description : ($success===true? i18n('Passed') : i18n('Fail'))); + $this->use_class = (isset($use_class)?$use_class:($success===true?'dep_ok' : 'dep_fail')); + } + + public function getClass() { + return $this->use_class; + } + + public function setClass( $new_class ) { + $this->use_class = $new_class; + } + + public function getOK() { + return $this->ok; + } + + public function getDescription() { + return translate($this->description); + } + + public function setDescription( $new_desc ) { + $this->description = $new_desc; + } + +} + /** * We put many of these checks before we even try to load always.php so that we * can try and do some diagnostic work to ensure it will load OK. */ function check_pgsql() { - return function_exists('pg_connect'); + return new CheckResult(function_exists('pg_connect')); } function check_pdo() { - return class_exists('PDO'); + return new CheckResult(class_exists('PDO')); } function check_pdo_pgsql() { global $loaded_extensions; - if ( !check_pdo() ) return false; - return isset($loaded_extensions['pdo_pgsql']); + if ( !check_pdo() ) return new CheckResult(false); + return new CheckResult(isset($loaded_extensions['pdo_pgsql'])); } function check_gettext() { global $phpinfo, $loaded_extensions; - if ( !function_exists('gettext') ) return false; - return isset($loaded_extensions['gettext']); + if ( !function_exists('gettext') ) return new CheckResult(false); + return new CheckResult(isset($loaded_extensions['gettext'])); } function check_suhosin_server_strip() { global $loaded_extensions; - if ( !isset($loaded_extensions['suhosin']) ) return true; - if ( ini_get('suhosin.server.strip') == "0" ) { - return true; - } - - return false; + if ( !isset($loaded_extensions['suhosin']) ) return new CheckResult(true); + return new CheckResult( ini_get('suhosin.server.strip') == "0" ); } function check_magic_quotes_gpc() { - global $loaded_extensions; - - if ( ini_get('magic_quotes_gpc') == "0" ) { - return true; - } - - return false; + return new CheckResult( (get_magic_quotes_gpc() == 0) ); } function check_magic_quotes_runtime() { - global $loaded_extensions; - - if ( ini_get('magic_quotes_runtime') == "0" ) { - return true; - } - - return false; + return new CheckResult( (get_magic_quotes_runtime() == 0) ); } function do_error( $errormessage ) { - printf("
%s
", $errormessage ); + printf("%s
", translate($errormessage) ); } -$loaded_extensions = array_flip(get_loaded_extensions()); -if ( !check_pgsql() ) do_error("PHP 'pgsql' functions are not available" ); -if ( !check_pdo() ) do_error("PHP 'PDO' module is not available" ); -if ( !check_pdo_pgsql() ) do_error("The PDO drivers for PostgreSQL are not available" ); +$loaded_extensions = array_flip(get_loaded_extensions()); +if ( !check_pgsql()->getOK() ) do_error(i18n("PHP 'pgsql' functions are not available") ); +if ( !check_pdo()->getOK() ) do_error(i18n("PHP 'PDO' module is not available") ); +if ( !check_pdo_pgsql()->getOK() ) do_error(i18n("The PDO drivers for PostgreSQL are not available") ); + +function get_phpinfo() { + ob_start( ); + phpinfo(); + $phpinfo = ob_get_contents( ); + ob_end_clean( ); + + $phpinfo = preg_replace( '{^.*?}s', '', $phpinfo); + $phpinfo = preg_replace( '{.*?$}s', '', $phpinfo); + return $phpinfo; +} +$phpinfo = get_phpinfo(); include("./always.php"); include("DAViCalSession.php"); -ob_start( ); -phpinfo(); -$phpinfo = ob_get_contents( ); -ob_end_clean( ); -$phpinfo = preg_replace( '{^.*?}s', '', $phpinfo); -$phpinfo = preg_replace( '{.*?$}s', '', $phpinfo); - - -if ( check_pgsql() ) { +if ( check_pgsql()->GetOK() ) { $session->LoginRequired( (isset($c->restrict_setup_to_admin) && $c->restrict_setup_to_admin ? 'Admin' : null ) ); } @@ -94,29 +117,51 @@ function check_schema_version() { if ( $c->want_dbversion[0] == $c->schema_major && $c->want_dbversion[1] == $c->schema_minor && $c->want_dbversion[2] == $c->schema_patch ) { - return true; + return new CheckResult( true ); } - return false; + $result = new CheckResult(false); + if ( $c->want_dbversion[0] < $c->schema_major + || ($c->want_dbversion[0] == $c->schema_major && $c->want_dbversion[1] < $c->schema_minor) + || ($c->want_dbversion[0] == $c->schema_major + && $c->want_dbversion[1] == $c->schema_minor + && $c->want_dbversion[2] < $c->schema_patch) + ) + { + $result->setClass('dep_warning'); + } + $result->setDescription( sprintf(i18n('Want: %s, Currently: %s'), implode('.',$c->want_dbversion), + $c->schema_major.'.'.$c->schema_minor.'.'.$c->schema_patch)); + return $result; } function check_davical_version() { global $c; $url = 'http://www.davical.org/current_davical_version?v='.$c->version_string; $version_file = @fopen($url, 'r'); - if ( ! $version_file ) return translate("Could not retrieve") . " '$url'"; + if ( ! $version_file ) return new CheckResult( false, translate("Could not retrieve") . " '$url'", 'dep_warning' ); $current_version = trim(fread( $version_file,12)); fclose($version_file); - return ( $c->version_string == $current_version ? true : $current_version ); + $result = new CheckResult($c->version_string == $current_version); + if ( ! $result->getOK() ) { + $result->setDescription( sprintf(i18n('Want: %s, Currently: %s'), $current_version, $c->version_string) ); + if ( $c->version_string > $current_version ) $result->setClass('dep_warning'); + } + return $result; } function check_awl_version() { global $c; - if ( function_exists('awl_version') ) { - return ( $c->want_awl_version == awl_version() ? true : sprintf( "want %f", $c->awl_library_version) ); + if ( !function_exists('awl_version') ) return new CheckResult(false); + + $result = new CheckResult($c->want_awl_version == awl_version()); + if ( ! $result->getOK() ) { + $result->setDescription( sprintf(i18n('Want: %s, Currently: %s'), $c->want_awl_version, awl_version()) ); + if ( $c->want_awl_version < awl_version() ) $result->setClass('dep_warning'); } - return false; + return $result; + } @@ -148,36 +193,43 @@ EOTABLE; } -$dependencies = array( - translate('Current DAViCal version '). $c->version_string => 'check_davical_version', - translate('DAViCal DB Schema version '). implode('.',$c->want_dbversion) => 'check_schema_version', - translate('AWL Library version '). $c->want_awl_version => 'check_awl_version', - translate('PHP PDO module available') => 'check_pdo', - translate('PDO PostgreSQL drivers') => 'check_pdo_pgsql', - translate('PHP PostgreSQL available') => 'check_pgsql', - translate('GNU gettext support') => 'check_gettext', - translate('Suhosin "server.strip" disabled') => 'check_suhosin_server_strip', - translate('PHP Magic Quotes GPC off') => 'check_magic_quotes_gpc', - translate('PHP Magic Quotes runtime off') => 'check_magic_quotes_runtime' /*, - 'YAML' => 'php5-syck' */ -); - -$dependencies_table = ''; -$dep_tpl = '-'.$config_warnings.' -
' + . $config_warnings.'
$paragraph_setup -
$paragraph_versions
-
-
If you can read this then things must be mostly working already.
+$davical_configuration_errors +The installation page on the DAViCal website has +some further information on how to install and configure this application.
+The client setup page on the DAViCal website has information on how +to configure Evolution, Sunbird, Lightning and Mulberry to use remotely hosted calendars.
+The administrative interface has no facility for viewing or modifying calendar data.
+ +$site_statistics_table
+ +$site_statistics_table
- -The client setup page on the DAViCal website has information on how -to configure Evolution, Sunbird, Lightning and Mulberry to use remotely hosted calendars.
-The administrative interface has no facility for viewing or modifying calendar data.
- -If you can read this then things must be mostly working already.
-$davical_configuration_errors -The installation page on the DAViCal website has -some further information on how to install and configure this application.
EOBODY; include("page-footer.php");