示例#1
0
 public function getCurrentSchemaVersion()
 {
     if (empty($this->_module)) {
         throw new FFR_Exception('Module was empty.  A module must be set.');
     }
     $cache = Zend_Controller_Action_HelperBroker::getStaticHelper('Cache')->getManager()->getCache('database');
     if (!($version = $cache->load($this->_module . 'Version'))) {
         // Ensure we have valid connection to the database
         if (!$this->_db->isConnected()) {
             $this->_db->getServerVersion();
         }
         $sql = 'SELECT schema_version FROM ' . $this->_schemaVersionTable . ' WHERE schema_module = "' . $this->_module . '"';
         $version = null;
         try {
             $version = $this->_db->fetchOne($sql);
         } catch (Zend_Db_Exception $e) {
             // exception means that the schema version table doesn't exist, so create it
             $createSql = "CREATE TABLE {$this->_schemaVersionTable} (\n                                schema_id INT NOT NULL AUTO_INCREMENT,\n                                schema_version INT NOT NULL,\n                                schema_module VARCHAR(50),\n                                PRIMARY KEY (schema_id)\n                            )";
             $this->_db->query($createSql);
         }
         // There isn't a version record so lets make one
         if ($version === null || $version === false) {
             $insertSql = "INSERT  {$this->_schemaVersionTable} SET schema_version = 0," . ' schema_module = "' . $this->_module . '"';
             $this->_db->query($insertSql);
             $version = $this->_db->fetchOne($sql);
         }
         $cache->save($version, $this->_module . 'Version', array('schemaVersion'));
     }
     return $version;
 }
示例#2
0
 function getCurrentSchemaVersion()
 {
     // Ensure we have valid connection to the database
     if (!$this->_db->isConnected()) {
         $this->_db->getServerVersion();
     }
     $schemaVersionTableName = $this->getPrefixedSchemaVersionTableName();
     $sql = "SELECT version FROM " . $schemaVersionTableName;
     try {
         $version = $this->_db->fetchOne($sql);
     } catch (Exception $e) {
         // exception means that the schema version table doesn't exist, so create it
         $createSql = "CREATE TABLE {$schemaVersionTableName} ( \n                version bigint NOT NULL,\n                PRIMARY KEY (version)\n            )";
         $this->_db->query($createSql);
         $insertSql = "INSERT INTO {$schemaVersionTableName} (version) VALUES (0)";
         $this->_db->query($insertSql);
         $version = $this->_db->fetchOne($sql);
     }
     return $version;
 }
示例#3
0
文件: Abstract.php 项目: cwcw/cms
 /**
  * Retrieve server version in PHP style
  *
  * @return string
  */
 public function getServerVersion()
 {
     return $this->_adapter->getServerVersion();
 }
示例#4
0
 public function getRequirementErrors(Zend_Db_Adapter_Abstract $db = null)
 {
     $errors = array();
     $phpVersion = phpversion();
     if (version_compare($phpVersion, '5.2.11', '<')) {
         $errors['phpVersion'] = new XenForo_Phrase('php_version_x_does_not_meet_requirements', array('version' => $phpVersion));
     }
     $safeModeIni = @ini_get('safe_mode');
     if (is_bool($safeModeIni) || intval($safeModeIni)) {
         $isSafeMode = (bool) $safeModeIni;
     } else {
         $isSafeMode = in_array(strtolower($safeModeIni), array('on', 'yes', 'true'));
     }
     if ($isSafeMode) {
         $errors['safe_mode'] = new XenForo_Phrase('php_must_not_be_in_safe_mode');
     }
     if (!function_exists('mysqli_connect')) {
         $errors['mysqlPhp'] = new XenForo_Phrase('required_php_extension_x_not_found', array('extension' => 'MySQLi'));
     }
     if (!function_exists('gd_info')) {
         $errors['gd'] = new XenForo_Phrase('required_php_extension_x_not_found', array('extension' => 'GD'));
     } else {
         if (!function_exists('imagecreatefromjpeg')) {
             $errors['gdJpeg'] = new XenForo_Phrase('gd_jpeg_support_missing');
         }
     }
     if (!function_exists('iconv')) {
         $errors['iconv'] = new XenForo_Phrase('required_php_extension_x_not_found', array('extension' => 'Iconv'));
     }
     if (!function_exists('ctype_alnum')) {
         $errors['ctype'] = new XenForo_Phrase('required_php_extension_x_not_found', array('extension' => 'Ctype'));
     }
     if (!function_exists('preg_replace')) {
         $errors['pcre'] = new XenForo_Phrase('required_php_extension_x_not_found', array('extension' => 'PCRE'));
     } else {
         try {
             preg_match('/./u', 'x');
         } catch (Exception $e) {
             $errors['pcre'] = new XenForo_Phrase('pcre_unicode_support_missing');
         }
     }
     if (!function_exists('spl_autoload_register')) {
         $errors['spl'] = new XenForo_Phrase('required_php_extension_x_not_found', array('extension' => 'SPL'));
     }
     if (!function_exists('json_encode')) {
         $errors['json'] = new XenForo_Phrase('required_php_extension_x_not_found', array('extension' => 'JSON'));
     }
     if (!class_exists('DOMDocument') || !class_exists('SimpleXMLElement')) {
         $errors['xml'] = new XenForo_Phrase('required_php_xml_extensions_not_found');
     }
     if ($db) {
         $mySqlVersion = $db->getServerVersion();
         if ($mySqlVersion && intval($mySqlVersion) < 5) {
             $errors['mysqlVersion'] = new XenForo_Phrase('mysql_version_x_does_not_meet_requirements', array('version' => $mySqlVersion));
         }
     }
     $dataDir = XenForo_Helper_File::getExternalDataPath();
     if (!is_dir($dataDir) || !is_writable($dataDir)) {
         $errors['dataDir'] = new XenForo_Phrase('directory_x_must_be_writable', array('directory' => $dataDir));
     } else {
         foreach (scandir($dataDir) as $file) {
             if ($file[0] == '.') {
                 continue;
             }
             $fullPath = "{$dataDir}/{$file}";
             if (is_dir($fullPath) && !is_writable($fullPath)) {
                 $errors['dataDir'] = new XenForo_Phrase('all_directories_under_x_must_be_writable', array('directory' => $dataDir));
             }
         }
     }
     $internalDataDir = XenForo_Helper_File::getInternalDataPath();
     if (!is_dir($internalDataDir) || !is_writable($internalDataDir)) {
         $errors['internalDataDir'] = new XenForo_Phrase('directory_x_must_be_writable', array('directory' => $internalDataDir));
     } else {
         foreach (scandir($internalDataDir) as $file) {
             if ($file[0] == '.') {
                 continue;
             }
             $fullPath = "{$internalDataDir}/{$file}";
             if (is_dir($fullPath) && !is_writable($fullPath)) {
                 $errors['internalDataDir'] = new XenForo_Phrase('all_directories_under_x_must_be_writable', array('directory' => $internalDataDir));
             }
         }
     }
     return $errors;
 }