Upgrade for silverstripe namespaces

This commit is contained in:
Damian Mooyman 2016-08-29 15:56:13 +12:00
parent 32ae8f8d94
commit 1cb63311d8
No known key found for this signature in database
GPG Key ID: 78B823A10DE27D1A
11 changed files with 54 additions and 68 deletions

View File

@ -9,20 +9,18 @@ Andreas Piening (Nickname: apiening)
## Requirements
* SilverStripe 3.2 or newer
* SilverStripe 4.0 or newer
## Installation
* If using composer, run `composer require silverstripe/sqlite3 1.4.*-dev`.
* Otherwise, download, unzip and copy the sqlite3 folder to your project root so that it becomes a
sibling of `framework/`.
* Install using composer with `composer require silverstripe/sqlite3 ^2`.
## Configuration
Either use the installer to automatically install SQLite or add this to your _config.php (right after
"require_once("conf/ConfigureFromEnv.php");" if you are using _ss_environment.php)
$databaseConfig['type'] = 'SQLiteDatabase';
$databaseConfig['type'] = 'SQLite3Database';
$databaseConfig['path'] = "/path/to/my/database/file";
Make sure the webserver has sufficient privileges to write to that folder and that it is protected from
@ -42,18 +40,14 @@ $database = 'SS_mysite';
require_once("conf/ConfigureFromEnv.php");
global $databaseConfig;
$databaseConfig = array(
"type" => 'SQLiteDatabase',
"type" => 'SQLite3Database',
"server" => 'none',
"username" => 'none',
"password" => 'none',
"database" => $database,
"path" => "/path/to/my/database/file",
);
SSViewer::set_theme('blackcandy');
SiteTree::enable_nested_urls();
```
Again: make sure that the webserver has permission to read and write to the above path (/path/to/my/database/,

View File

@ -1,3 +1,5 @@
<?php
use SilverStripe\Dev\Deprecation;
Deprecation::notification_version('1.4.0', 'sqlite3');

View File

@ -1,36 +1,36 @@
---
name: sqlite3connectors
---
Injector:
SilverStripe\Core\Injector\Injector:
SQLite3PDODatabase:
class: 'SilverStripe\SQLite\SQLite3Database'
class: SilverStripe\SQLite\SQLite3Database
properties:
connector: %$PDOConnector
schemaManager: %$SQLite3SchemaManager
queryBuilder: %$SQLite3QueryBuilder
SQLite3Database:
class: 'SilverStripe\SQLite\SQLite3Database'
class: SilverStripe\SQLite\SQLite3Database
properties:
connector: %$SQLite3Connector
schemaManager: %$SQLite3SchemaManager
queryBuilder: %$SQLite3QueryBuilder
# Legacy connector names
SQLiteDatabase:
class: 'SilverStripe\SQLite\SQLite3Database'
class: SilverStripe\SQLite\SQLite3Database
properties:
connector: %$SQLite3Connector
schemaManager: %$SQLite3SchemaManager
queryBuilder: %$SQLite3QueryBuilder
SQLitePDODatabase:
class: 'SilverStripe\SQLite\SQLite3Database'
class: SilverStripe\SQLite\SQLite3Database
properties:
connector: %$SQLite3Connector
schemaManager: %$SQLite3SchemaManager
queryBuilder: %$SQLite3QueryBuilder
SQLite3Connector:
class: 'SilverStripe\SQLite\SQLite3Connector'
class: SilverStripe\SQLite\SQLite3Connector
type: prototype
SQLite3SchemaManager:
class: 'SilverStripe\SQLite\SQLite3SchemaManager'
class: SilverStripe\SQLite\SQLite3SchemaManager
SQLite3QueryBuilder:
class: 'SilverStripe\SQLite\SQLite3QueryBuilder'
class: SilverStripe\SQLite\SQLite3QueryBuilder

View File

@ -1,4 +0,0 @@
SQLLite3Database:
# Extension used to distinguish between sqllite database files and other files
# Required to handle multiple databases
database_extension: '.sqlite'

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\Dev\Install\DatabaseAdapterRegistry;
$sqliteDatabaseAdapterRegistryFields = array(
'path' => array(
'title' => 'Directory path<br /><small>Absolute path to directory, writeable by the webserver user.<br />'

View File

@ -7,8 +7,6 @@ use SQLite3;
/**
* SQLite connector class
*
* @package SQLite3
*/
class SQLite3Connector extends DBConnector
{

View File

@ -2,25 +2,31 @@
namespace SilverStripe\SQLite;
use Convert;
use File;
use SilverStripe\ORM\DataList;
use SilverStripe\Assets\File;
use SilverStripe\Core\Config\Configurable;
use SilverStripe\Core\Convert;
use SilverStripe\Dev\Deprecation;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\Connect\SS_Database;
use Config;
use Deprecation;
use PaginatedList;
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\PaginatedList;
use SilverStripe\ORM\Queries\SQLSelect;
/**
* SQLite database controller class
*
* @package SQLite3
*/
class SQLite3Database extends SS_Database
{
use Configurable;
/**
* Extension added to every database name
*
* @config
* @var string
*/
private static $database_extension = '.sqlite';
/**
* Database schema manager object
@ -65,7 +71,7 @@ class SQLite3Database extends SS_Database
*/
public static function database_extension()
{
return Config::inst()->get('SilverStripe\\SQLite\\SQLite3Database', 'database_extension');
return static::config()->get('database_extension');
}
/**
@ -110,16 +116,8 @@ class SQLite3Database extends SS_Database
// Ensure database name is set
if (empty($parameters['database'])) {
$parameters['database'] = 'database' . self::database_extension();
$parameters['database'] = 'database';
}
$dbName = $parameters['database'];
if (!self::is_valid_database_name($dbName)) {
// If not using the correct file extension for database files then the
// results of SQLite3SchemaManager::databaseList will be unpredictable
$extension = self::database_extension();
Deprecation::notice('3.2', "SQLite3Database now expects a database file with extension \"$extension\". Behaviour may be unpredictable otherwise.");
}
// use the very lightspeed SQLite In-Memory feature for testing
if ($this->getLivesInMemory()) {
$file = ':memory:';
@ -130,7 +128,7 @@ class SQLite3Database extends SS_Database
}
//assumes that the path to dbname will always be provided:
$file = $parameters['path'] . '/' . $dbName;
$file = $parameters['path'] . '/' . $parameters['database'] . self::database_extension();
if (!file_exists($parameters['path'])) {
SQLiteDatabaseConfigurationHelper::create_db_dir($parameters['path']);
SQLiteDatabaseConfigurationHelper::secure_db_dir($parameters['path']);
@ -269,7 +267,7 @@ class SQLite3Database extends SS_Database
$htmlEntityKeywords = htmlentities(utf8_decode($keywords));
$pageClass = 'SilverStripe\\CMS\\Model\\SiteTree';
$fileClass = 'File';
$fileClass = 'SilverStripe\\Assets\\File';
$extraFilters = array($pageClass => '', $fileClass => '');

View File

@ -7,8 +7,6 @@ use SQLite3Result;
/**
* A result-set from a SQLite3 database.
*
* @package SQLite3
*/
class SQLite3Query extends SS_Query
{

View File

@ -10,8 +10,6 @@ use InvalidArgumentException;
/**
* Builds a SQL query string from a SQLExpression object
*
* @package SQLite3
*/
class SQLite3QueryBuilder extends DBQueryBuilder
{

View File

@ -2,16 +2,14 @@
namespace SilverStripe\SQLite;
use SilverStripe\Control\Director;
use SilverStripe\Dev\Debug;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\ORM\Connect\DBSchemaManager;
use Exception;
use SapphireTest;
use Debug;
use Director;
/**
* SQLite schema manager class
*
* @package SQLite3
*/
class SQLite3SchemaManager extends DBSchemaManager
{
@ -52,7 +50,7 @@ class SQLite3SchemaManager extends DBSchemaManager
// If using file based database ensure any existing file is removed
$parameters = $this->database->getParameters();
$fullpath = $parameters['path'] . '/' . $name;
$fullpath = $parameters['path'] . '/' . $name . SQLite3Database::database_extension();
if (is_writable($fullpath)) {
unlink($fullpath);
}
@ -76,17 +74,21 @@ class SQLite3SchemaManager extends DBSchemaManager
if ($files !== false) {
foreach ($files as $file) {
// Filter non-files
if (!is_file("$directory/$file")) {
continue;
}
// Filter non-files
if (!is_file("$directory/$file")) {
continue;
}
// Filter those with correct extension
if (!SQLite3Database::is_valid_database_name($file)) {
continue;
}
// Filter those with correct extension
if (!SQLite3Database::is_valid_database_name($file)) {
continue;
}
$databases[] = $file;
if ($extension = SQLite3Database::database_extension()) {
$databases[] = substr($file, 0, -strlen($extension));
} else {
$databases[] = $file;
}
}
}
return $databases;

View File

@ -2,19 +2,17 @@
namespace SilverStripe\SQLite;
use DatabaseConfigurationHelper;
use SilverStripe\Dev\Install\DatabaseAdapterRegistry;
use SilverStripe\Dev\Install\DatabaseConfigurationHelper;
use SQLite3;
use PDO;
use Exception;
use DatabaseAdapterRegistry;
/**
* This is a helper class for the SS installer.
*
* It does all the specific checking for SQLiteDatabase
* to ensure that the configuration is setup correctly.
*
* @package SQLite3
*/
class SQLiteDatabaseConfigurationHelper implements DatabaseConfigurationHelper
{