Пример #1
0
 protected function notice($msg, $params = null, $fullString = false)
 {
     if (!$fullString) {
         $msg = $this->messages->get($msg, $params);
     }
     $this->reporter->message($msg, 'notice');
 }
 function checkPhpExtensions()
 {
     $ok = true;
     if (!version_compare($this->buildProperties['PHP_VERSION_TARGET'], phpversion(), '<=')) {
         $this->error('php.bad.version');
         $notice = $this->messages->get('php.version.required', $this->buildProperties['PHP_VERSION_TARGET']);
         $notice .= '. ' . $this->messages->get('php.version.current', phpversion());
         $this->reporter->showNotice($notice);
         $ok = false;
     } else {
         if ($this->verbose) {
             $this->ok('php.ok.version', phpversion());
         }
     }
     $extensions = array('dom', 'SPL', 'SimpleXML', 'pcre', 'session', 'tokenizer', 'iconv', 'filter', 'json');
     foreach ($extensions as $name) {
         if (!extension_loaded($name)) {
             $this->error('extension.required.not.installed', $name);
             $ok = false;
         } else {
             if ($this->verbose) {
                 $this->ok('extension.required.installed', $name);
             }
         }
     }
     if (count($this->databases)) {
         $driversInfos = jDbParameters::getDriversInfosList();
         $req = $this->dbRequired ? 'required' : 'optional';
         $okdb = false;
         array_combine($this->databases, array_fill(0, count($this->databases), false));
         $alreadyExtensionsChecked = array();
         $okdatabases = array();
         foreach ($this->databases as $name) {
             foreach ($driversInfos as $driverInfo) {
                 list($dbType, $nativeExt, $pdoExt, $jdbDriver, $pdoDriver) = $driverInfo;
                 if ($name == $dbType || $name == $nativeExt || $name == $pdoDriver) {
                     if (extension_loaded($nativeExt)) {
                         if (!isset($alreadyExtensionsChecked[$nativeExt])) {
                             if ($this->verbose) {
                                 $this->ok('extension.installed', $nativeExt);
                             }
                             $alreadyExtensionsChecked[$nativeExt] = true;
                             $okdb = true;
                             $okdatabases[$name] = true;
                         }
                     } else {
                         if (!isset($alreadyExtensionsChecked[$nativeExt])) {
                             if ($this->verbose) {
                                 $this->notice('extension.not.installed', $nativeExt);
                             }
                             $alreadyExtensionsChecked[$nativeExt] = false;
                         }
                     }
                     if (extension_loaded($pdoExt)) {
                         if (!isset($alreadyExtensionsChecked[$pdoExt])) {
                             if ($this->verbose) {
                                 $this->ok('extension.installed', $pdoExt);
                             }
                             $alreadyExtensionsChecked[$pdoExt] = true;
                             $okdb = true;
                             $okdatabases[$name] = true;
                         }
                     } else {
                         if (!isset($alreadyExtensionsChecked[$pdoExt])) {
                             if ($this->verbose) {
                                 $this->notice('extension.not.installed', $pdoExt);
                             }
                             $alreadyExtensionsChecked[$pdoExt] = false;
                         }
                     }
                 }
             }
         }
         if ($this->dbRequired) {
             if ($okdb) {
                 $this->ok('extension.database.ok', implode(',', array_keys($okdatabases)));
             } else {
                 $this->error('extension.database.missing');
                 $ok = false;
             }
         } else {
             if ($okdb) {
                 $this->ok('extension.database.ok2', implode(',', array_keys($okdatabases)));
             } else {
                 $this->notice('extension.database.missing2');
             }
         }
     }
     foreach ($this->otherExtensions as $name => $required) {
         $req = $required ? 'required' : 'optional';
         if (!extension_loaded($name)) {
             if ($required) {
                 $this->error('extension.' . $req . '.not.installed', $name);
                 $ok = false;
             } else {
                 $this->notice('extension.' . $req . '.not.installed', $name);
             }
         } else {
             if ($this->verbose) {
                 $this->ok('extension.' . $req . '.installed', $name);
             }
         }
     }
     if ($ok) {
         $this->ok('extensions.required.ok');
     }
     return $ok;
 }
Пример #3
0
 function checkPhpExtensions()
 {
     $ok = true;
     if (!version_compare($this->buildProperties['PHP_VERSION_TARGET'], phpversion(), '<=')) {
         $this->error('php.bad.version');
         $notice = $this->messages->get('php.version.required', $this->buildProperties['PHP_VERSION_TARGET']);
         $notice .= '. ' . $this->messages->get('php.version.current', phpversion());
         $this->reporter->showNotice($notice);
         $ok = false;
     } else {
         if ($this->verbose) {
             $this->ok('php.ok.version', phpversion());
         }
     }
     $extensions = array('dom', 'SPL', 'SimpleXML', 'pcre', 'session', 'tokenizer', 'iconv', 'filter', 'json');
     if ($this->buildProperties['ENABLE_PHP_JELIX'] == '1') {
         $extensions[] = 'jelix';
     }
     foreach ($extensions as $name) {
         if (!extension_loaded($name)) {
             $this->error('extension.required.not.installed', $name);
             $ok = false;
         } else {
             if ($this->verbose) {
                 $this->ok('extension.required.installed', $name);
             }
         }
     }
     if (count($this->databases)) {
         $req = $this->dbRequired ? 'required' : 'optional';
         $okdb = false;
         if (class_exists('PDO')) {
             $pdodrivers = PDO::getAvailableDrivers();
         } else {
             $pdodrivers = array();
         }
         foreach ($this->databases as $name) {
             if (!extension_loaded($name) && !in_array($name, $pdodrivers)) {
                 $this->notice('extension.not.installed', $name);
             } else {
                 $okdb = true;
                 if ($this->verbose) {
                     $this->ok('extension.installed', $name);
                 }
             }
         }
         if ($this->dbRequired) {
             if ($okdb) {
                 $this->ok('extension.database.ok');
             } else {
                 $this->error('extension.database.missing');
                 $ok = false;
             }
         } else {
             if ($okdb) {
                 $this->ok('extension.database.ok2');
             } else {
                 $this->notice('extension.database.missing2');
             }
         }
     }
     foreach ($this->otherExtensions as $name => $required) {
         $req = $required ? 'required' : 'optional';
         if (!extension_loaded($name)) {
             if ($required) {
                 $this->error('extension.' . $req . '.not.installed', $name);
                 $ok = false;
             } else {
                 $this->notice('extension.' . $req . '.not.installed', $name);
             }
         } else {
             if ($this->verbose) {
                 $this->ok('extension.' . $req . '.installed', $name);
             }
         }
     }
     if ($ok) {
         $this->ok('extensions.required.ok');
     }
     return $ok;
 }
Пример #4
0
 protected function notice($msg)
 {
     $this->reporter->message($msg, 'notice');
 }