}s', '', $phpinfo); $phpinfo = preg_replace( '{.*?$}s', '', $phpinfo); $loaded_extensions = array_flip(get_loaded_extensions()); /** @TODO: work out something more than true/false returns for dependency checks */ function check_pgsql() { return function_exists('pg_connect'); } if ( check_pgsql() ) { $session->LoginRequired( (isset($c->restrict_setup_to_admin) && $c->restrict_setup_to_admin ? 'Admin' : null ) ); } function check_pdo() { return class_exists('PDO'); } function check_pdo_pgsql() { global $phpinfo, $loaded_extensions; if ( !class_exists('PDO') ) return false; return isset($loaded_extensions['pdo_pgsql']); } function check_gettext() { global $phpinfo, $loaded_extensions; if ( !function_exists('gettext') ) return false; return isset($loaded_extensions['gettext']); } function check_suhosin_server_strip() { global $phpinfo, $loaded_extensions; if ( !isset($loaded_extensions['suhosin']) ) return true; if ( ini_get('suhosin.server.strip') == "0" ) { return true; } return false; } include("interactive-page.php"); include("page-header.php"); require_once("AwlQuery.php"); function check_schema_version() { global $c; 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 false; } 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'"; $current_version = trim(fread( $version_file,12)); fclose($version_file); return ( $c->version_string == $current_version ? true : $current_version ); } function build_site_statistics() { $principals = translate('No. of Principals'); $collections = translate('No. of Collections'); $resources = translate('No. of Resources'); $table = << $principals$collections$resources %s EOTABLE; if ( !check_pdo_pgsql() ) { return sprintf( $table, ''.translate('Site Statistics require the database to be available!').''); } $sql = 'SELECT (SELECT count(1) FROM principal) AS principals, (SELECT count(1) FROM collection) AS collections, (SELECT count(1) FROM caldav_data) AS resources'; $qry = new AwlQuery($sql); if ( $qry->Exec('setup',__LINE__,__FILE__) && $s = $qry->Fetch() ) { $row = sprintf('%s%s%s', $s->principals, $s->collections, $s->resources ); return sprintf( $table, $row ); } return sprintf( $table, ''.translate('Site Statistics require the database to be available!').''); } $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('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' /*, 'YAML' => 'php5-syck' */ ); $dependencies_table = ''; $dep_tpl = ' %s %s '; foreach( $dependencies AS $k => $v ) { $ok = $v(); $dependencies_table .= sprintf( $dep_tpl, ($ok === true ? 'dep_ok' : 'dep_fail'), $k, (is_string($ok) ? $ok : ($ok ? translate('OK') : translate('Failed'))) ); } $want_dbversion = implode('.',$c->want_dbversion); $heading_setup = translate('Setup'); $paragraph_setup = translate('Currently this page does very little. Suggestions or patches to make it do more useful stuff will be gratefully received.'); $heading_versions = translate('Current Versions'); if ( check_schema_version() != true ) { $paragraph_versions = translate('You are currently running DAViCal version %s. The database schema should be at version %s and it is at version %d.%d.%d.'); $paragraph_versions = sprintf( $paragraph_versions, $c->version_string, $want_dbversion, $c->schema_major, $c->schema_minor, $c->schema_patch); } else { $paragraph_versions = translate('You are currently running DAViCal version %s. The database schema is at version %d.%d.%d.'); $paragraph_versions = sprintf( $paragraph_versions, $c->version_string, $c->schema_major, $c->schema_minor, $c->schema_patch); } $heading_dependencies = translate('Dependencies'); $th_dependency = translate('Dependency'); $th_status = translate('Status'); $heading_site_statistics = translate('Site Statistics'); $site_statistics_table = build_site_statistics(); $heading_config_clients = translate('Configuring Calendar Clients for DAViCal'); $heading_config_davical = translate('Configuring DAViCal'); $davical_configuration_errors = ''; if ( $config_warnings != '' ) { $davical_configuration_errors = '

' . translate('Your configuration produced PHP errors which should be corrected') . '

'.$config_warnings.'
'; } echo << tr.dep_ok { background-color:#80ff80; } tr.dep_fail { background-color:#ffc0c0; } table, table.dependencies { border: 1px grey solid; border-collapse: collapse; padding: 0.1em; margin: 0 1em 1.5em; } table tr td, table tr th, table.dependencies tr td, table.dependencies tr th { border: 1px grey solid; padding: 0.1em 0.2em; } p { padding: 0.3em 0.2em 0.7em; }

$heading_setup

$paragraph_setup

$heading_versions

$paragraph_versions
 

$heading_dependencies

$dependencies_table
$th_dependency $th_status

 

$heading_site_statistics

$site_statistics_table

$heading_config_clients

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.

$heading_config_davical

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");