diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..a148387
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,16 @@
+name: CI
+
+on:
+ push:
+ pull_request:
+ workflow_dispatch:
+ # Every Sunday at 3:00pm UTC
+ schedule:
+ - cron: '0 15 * * 0'
+
+jobs:
+ ci:
+ name: CI
+ # Only run cron on the silverstripe account
+ if: (github.event_name == 'schedule' && github.repository_owner == 'silverstripe') || (github.event_name != 'schedule')
+ uses: silverstripe/gha-ci/.github/workflows/ci.yml@v1
diff --git a/.github/workflows/keepalive.yml b/.github/workflows/keepalive.yml
new file mode 100644
index 0000000..c48f07e
--- /dev/null
+++ b/.github/workflows/keepalive.yml
@@ -0,0 +1,17 @@
+name: Keepalive
+
+on:
+ workflow_dispatch:
+ # The 15th of every month at 3:50pm UTC
+ schedule:
+ - cron: '50 15 15 * *'
+
+jobs:
+ keepalive:
+ name: Keepalive
+ # Only run cron on the silverstripe account
+ if: (github.event_name == 'schedule' && github.repository_owner == 'silverstripe') || (github.event_name != 'schedule')
+ runs-on: ubuntu-latest
+ steps:
+ - name: Keepalive
+ uses: silverstripe/gha-keepalive@v1
diff --git a/.scrutinizer.yml b/.scrutinizer.yml
deleted file mode 100644
index d1ebd80..0000000
--- a/.scrutinizer.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-inherit: true
-
-checks:
- php:
- verify_property_names: true
- verify_argument_usable_as_reference: true
- verify_access_scope_valid: true
- useless_calls: true
- use_statement_alias_conflict: true
- variable_existence: true
- unused_variables: true
- unused_properties: true
- unused_parameters: true
- unused_methods: true
- unreachable_code: true
- too_many_arguments: true
- sql_injection_vulnerabilities: true
- simplify_boolean_return: true
- side_effects_or_types: true
- security_vulnerabilities: true
- return_doc_comments: true
- return_doc_comment_if_not_inferrable: true
- require_scope_for_properties: true
- require_scope_for_methods: true
- require_php_tag_first: true
- psr2_switch_declaration: true
- psr2_class_declaration: true
- property_assignments: true
- prefer_while_loop_over_for_loop: true
- precedence_mistakes: true
- precedence_in_conditions: true
- phpunit_assertions: true
- php5_style_constructor: true
- parse_doc_comments: true
- parameter_non_unique: true
- parameter_doc_comments: true
- param_doc_comment_if_not_inferrable: true
- optional_parameters_at_the_end: true
- one_class_per_file: true
- no_unnecessary_if: true
- no_trailing_whitespace: true
- no_property_on_interface: true
- no_non_implemented_abstract_methods: true
- no_error_suppression: true
- no_duplicate_arguments: true
- no_commented_out_code: true
- newline_at_end_of_file: true
- missing_arguments: true
- method_calls_on_non_object: true
- instanceof_class_exists: true
- foreach_traversable: true
- fix_line_ending: true
- fix_doc_comments: true
- duplication: true
- deprecated_code_usage: true
- deadlock_detection_in_loops: true
- code_rating: true
- closure_use_not_conflicting: true
- catch_class_exists: true
- blank_line_after_namespace_declaration: false
- avoid_multiple_statements_on_same_line: true
- avoid_duplicate_types: true
- avoid_conflicting_incrementers: true
- avoid_closing_tag: true
- assignment_of_null_return: true
- argument_type_checks: true
-
-filter:
- paths: [code/*, tests/*]
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 1d6f607..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-# See https://github.com/silverstripe-labs/silverstripe-travis-support for setup details
-
-sudo: false
-
-language: php
-
-php:
- - 5.5
- - 5.6
- - 7.0
-
-env:
- - DB=SQLITE CORE_RELEASE=master PDO=1
-
-matrix:
- include:
- - php: 5.6
- env: DB=SQLITE CORE_RELEASE=master PDO=0
- allow_failures:
- - php: 7.0
-
-before_script:
- - composer self-update || true
- - git clone git://github.com/silverstripe-labs/silverstripe-travis-support.git ~/travis-support
- - php ~/travis-support/travis_setup.php --source `pwd` --target ~/builds/ss
- - cd ~/builds/ss
- - composer install
-
-script:
- - vendor/bin/phpunit framework/tests
diff --git a/README.md b/README.md
index c742a43..f628e6f 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
# SQLite3 Module
-[![Build Status](https://travis-ci.org/silverstripe-labs/silverstripe-sqlite3.png?branch=master)](https://travis-ci.org/silverstripe-labs/silverstripe-sqlite3)
+[![CI](https://github.com/silverstripe/silverstripe-sqlite3/actions/workflows/ci.yml/badge.svg)](https://github.com/silverstripe/silverstripe-sqlite3/actions/workflows/ci.yml)
+[![Silverstripe supported module](https://img.shields.io/badge/silverstripe-supported-0071C4.svg)](https://www.silverstripe.org/software/addons/silverstripe-commercially-supported-module-list/)
## Maintainer Contact
@@ -9,7 +10,7 @@ Andreas Piening (Nickname: apiening)
## Requirements
- * SilverStripe 4.0 or newer
+ * Silverstripe 4.0 or newer
## Installation
@@ -26,7 +27,6 @@ Either use the installer to automatically install SQLite or add this to your _co
Make sure the webserver has sufficient privileges to write to that folder and that it is protected from
external access.
-
### Sample mysite/_config.php
```php
diff --git a/_configure_database.php b/_configure_database.php
index a58391b..ea41f4a 100644
--- a/_configure_database.php
+++ b/_configure_database.php
@@ -2,13 +2,12 @@
// Script called from ConfigureFromEnv.php
global $databaseConfig;
-if(strpos($databaseConfig['type'], 'SQLite') === 0) {
+if (strpos($databaseConfig['type'], 'SQLite') === 0) {
+ if (defined('SS_SQLITE_DATABASE_PATH')) {
+ $databaseConfig['path'] = SS_SQLITE_DATABASE_PATH;
+ }
- if(defined('SS_SQLITE_DATABASE_PATH')) {
- $databaseConfig['path'] = SS_SQLITE_DATABASE_PATH;
- }
-
- if(defined('SS_SQLITE_DATABASE_KEY')) {
- $databaseConfig['key'] = SS_SQLITE_DATABASE_KEY;
- }
+ if (defined('SS_SQLITE_DATABASE_KEY')) {
+ $databaseConfig['key'] = SS_SQLITE_DATABASE_KEY;
+ }
}
diff --git a/_register_database.php b/_register_database.php
index 552f933..3918bac 100644
--- a/_register_database.php
+++ b/_register_database.php
@@ -4,51 +4,51 @@ use SilverStripe\Dev\Install\DatabaseAdapterRegistry;
use SilverStripe\SQLite\SQLiteDatabaseConfigurationHelper;
$sqliteDatabaseAdapterRegistryFields = array(
- 'path' => array(
- 'title' => 'Directory path
Absolute path to directory, writeable by the webserver user.
'
- . 'Recommended to be outside of your webroot',
- 'default' => dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'assets' . DIRECTORY_SEPARATOR . '.sqlitedb'
- ),
- 'database' => array(
- 'title' => 'Database filename (extension .sqlite)',
- 'default' => 'database.sqlite'
- )
+ 'path' => array(
+ 'title' => 'Directory path
Absolute path to directory, writeable by the webserver user.
'
+ . 'Recommended to be outside of your webroot',
+ 'default' => dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'assets' . DIRECTORY_SEPARATOR . '.sqlitedb'
+ ),
+ 'database' => array(
+ 'title' => 'Database filename (extension .sqlite)',
+ 'default' => 'database.sqlite'
+ )
);
// Basic SQLLite3 Database
/** @skipUpgrade */
DatabaseAdapterRegistry::register(
- array(
- 'class' => 'SQLite3Database',
+ array(
+ 'class' => 'SQLite3Database',
'module' => 'sqlite3',
- 'title' => 'SQLite 3.3+ (using SQLite3)',
- 'helperPath' => __DIR__.'/code/SQLiteDatabaseConfigurationHelper.php',
+ 'title' => 'SQLite 3.3+ (using SQLite3)',
+ 'helperPath' => __DIR__.'/code/SQLiteDatabaseConfigurationHelper.php',
'helperClass' => SQLiteDatabaseConfigurationHelper::class,
- 'supported' => class_exists('SQLite3'),
- 'missingExtensionText' => 'The SQLite3
- PHP Extension is not available. Please install or enable it of them and refresh this page.',
- 'fields' => array_merge($sqliteDatabaseAdapterRegistryFields, array('key' => array(
- 'title' => 'Encryption key
This function is experimental and requires configuration of an '
- . 'encryption module',
- 'default' => ''
- )))
- )
+ 'supported' => class_exists('SQLite3'),
+ 'missingExtensionText' => 'The SQLite3
+ PHP Extension is not available. Please install or enable it of them and refresh this page.',
+ 'fields' => array_merge($sqliteDatabaseAdapterRegistryFields, array('key' => array(
+ 'title' => 'Encryption key
This function is experimental and requires configuration of an '
+ . 'encryption module',
+ 'default' => ''
+ )))
+ )
);
// PDO database
/** @skipUpgrade */
DatabaseAdapterRegistry::register(
- array(
- 'class' => 'SQLite3PDODatabase',
+ array(
+ 'class' => 'SQLite3PDODatabase',
'module' => 'sqlite3',
- 'title' => 'SQLite 3.3+ (using PDO)',
- 'helperPath' => __DIR__.'/code/SQLiteDatabaseConfigurationHelper.php',
+ 'title' => 'SQLite 3.3+ (using PDO)',
+ 'helperPath' => __DIR__.'/code/SQLiteDatabaseConfigurationHelper.php',
'helperClass' => SQLiteDatabaseConfigurationHelper::class,
- 'supported' => (class_exists('PDO') && in_array('sqlite', PDO::getAvailableDrivers())),
- 'missingExtensionText' =>
- 'Either the PDO Extension or the
- SQLite3 PDO Driver
- are unavailable. Please install or enable these and refresh this page.',
- 'fields' => $sqliteDatabaseAdapterRegistryFields
- )
+ 'supported' => (class_exists('PDO') && in_array('sqlite', PDO::getAvailableDrivers())),
+ 'missingExtensionText' =>
+ 'Either the PDO Extension or the
+ SQLite3 PDO Driver
+ are unavailable. Please install or enable these and refresh this page.',
+ 'fields' => $sqliteDatabaseAdapterRegistryFields
+ )
);
diff --git a/code/SQLite3Connector.php b/code/SQLite3Connector.php
index 4a8c79d..b2d4a31 100644
--- a/code/SQLite3Connector.php
+++ b/code/SQLite3Connector.php
@@ -111,7 +111,10 @@ class SQLite3Connector extends DBConnector
case 'array':
case 'unknown type':
default:
- user_error("Cannot bind parameter \"$value\" as it is an unsupported type ($phpType)", E_USER_ERROR);
+ user_error(
+ "Cannot bind parameter \"$value\" as it is an unsupported type ($phpType)",
+ E_USER_ERROR
+ );
break;
}
$values[] = array(
@@ -176,7 +179,10 @@ class SQLite3Connector extends DBConnector
public function selectDatabase($name)
{
if ($name !== $this->databaseName) {
- user_error("SQLite3Connector can't change databases. Please create a new database connection", E_USER_ERROR);
+ user_error(
+ "SQLite3Connector can't change databases. Please create a new database connection",
+ E_USER_ERROR
+ );
}
return true;
}
diff --git a/code/SQLite3Database.php b/code/SQLite3Database.php
index 44f83a0..5ad7dd0 100644
--- a/code/SQLite3Database.php
+++ b/code/SQLite3Database.php
@@ -323,16 +323,22 @@ class SQLite3Database extends Database
$notMatch = $invertedMatch ? "NOT " : "";
if ($keywords) {
$match[$pageClass] = "
- (Title LIKE '%$keywords%' OR MenuTitle LIKE '%$keywords%' OR Content LIKE '%$keywords%' OR MetaDescription LIKE '%$keywords%' OR
- Title LIKE '%$htmlEntityKeywords%' OR MenuTitle LIKE '%$htmlEntityKeywords%' OR Content LIKE '%$htmlEntityKeywords%' OR MetaDescription LIKE '%$htmlEntityKeywords%')
+ (Title LIKE '%$keywords%' OR MenuTitle LIKE '%$keywords%' OR Content LIKE '%$keywords%' OR " .
+ "MetaDescription LIKE '%$keywords%' OR " .
+ "Title LIKE '%$htmlEntityKeywords%' OR MenuTitle LIKE '%$htmlEntityKeywords%' OR Content LIKE " .
+ "'%$htmlEntityKeywords%' OR MetaDescription LIKE '%$htmlEntityKeywords%')
";
$fileClassSQL = Convert::raw2sql($fileClass);
- $match[$fileClass] = "(Name LIKE '%$keywords%' OR Title LIKE '%$keywords%') AND ClassName = '$fileClassSQL'";
+ $match[$fileClass] = "(Name LIKE '%$keywords%' OR Title LIKE '%$keywords%') AND " .
+ "ClassName = '$fileClassSQL'";
// We make the relevance search by converting a boolean mode search into a normal one
$relevanceKeywords = $keywords;
$htmlEntityRelevanceKeywords = $htmlEntityKeywords;
- $relevance[$pageClass] = "(Title LIKE '%$relevanceKeywords%' OR MenuTitle LIKE '%$relevanceKeywords%' OR Content LIKE '%$relevanceKeywords%' OR MetaDescription LIKE '%$relevanceKeywords%') + (Title LIKE '%$htmlEntityRelevanceKeywords%' OR MenuTitle LIKE '%$htmlEntityRelevanceKeywords%' OR Content LIKE '%$htmlEntityRelevanceKeywords%' OR MetaDescription LIKE '%$htmlEntityRelevanceKeywords%')";
+ $relevance[$pageClass] = "(Title LIKE '%$relevanceKeywords%' OR MenuTitle LIKE '%$relevanceKeywords%' OR " .
+ "Content LIKE '%$relevanceKeywords%' OR MetaDescription LIKE '%$relevanceKeywords%') + (Title LIKE " .
+ "'%$htmlEntityRelevanceKeywords%' OR MenuTitle LIKE '%$htmlEntityRelevanceKeywords%' OR Content LIKE " .
+ "'%$htmlEntityRelevanceKeywords%' OR MetaDescription LIKE '%$htmlEntityRelevanceKeywords%')";
$relevance[$fileClass] = "(Name LIKE '%$relevanceKeywords%' OR Title LIKE '%$relevanceKeywords%')";
} else {
$relevance[$pageClass] = $relevance[$fileClass] = 1;
diff --git a/code/SQLite3SchemaManager.php b/code/SQLite3SchemaManager.php
index c338565..4f16db3 100644
--- a/code/SQLite3SchemaManager.php
+++ b/code/SQLite3SchemaManager.php
@@ -319,7 +319,8 @@ class SQLite3SchemaManager extends DBSchemaManager
$queries = array(
"BEGIN TRANSACTION",
"CREATE TABLE \"{$tableName}_renamefield_{$oldName}\" (" . implode(',', $newColsSpec) . ")",
- "INSERT INTO \"{$tableName}_renamefield_{$oldName}\" SELECT " . implode(',', $oldCols) . " FROM \"$tableName\"",
+ "INSERT INTO \"{$tableName}_renamefield_{$oldName}\" SELECT " . implode(',', $oldCols) .
+ " FROM \"$tableName\"",
"DROP TABLE \"$tableName\"",
"ALTER TABLE \"{$tableName}_renamefield_{$oldName}\" RENAME TO \"$tableName\"",
"COMMIT"
@@ -521,7 +522,8 @@ class SQLite3SchemaManager extends DBSchemaManager
// Ensure the cache table exists
if (empty($this->enum_map)) {
- $this->query("CREATE TABLE IF NOT EXISTS \"SQLiteEnums\" (\"TableColumn\" TEXT PRIMARY KEY, \"EnumList\" TEXT)");
+ $str = "CREATE TABLE IF NOT EXISTS \"SQLiteEnums\" (\"TableColumn\" TEXT PRIMARY KEY, \"EnumList\" TEXT)";
+ $this->query($str);
}
// Ensure the table row exists
diff --git a/code/SQLiteDatabaseConfigurationHelper.php b/code/SQLiteDatabaseConfigurationHelper.php
index a18fdc5..d39e8bf 100644
--- a/code/SQLiteDatabaseConfigurationHelper.php
+++ b/code/SQLiteDatabaseConfigurationHelper.php
@@ -41,7 +41,11 @@ class SQLiteDatabaseConfigurationHelper implements DatabaseConfigurationHelper
if (empty($databaseConfig['key'])) {
$conn = @new SQLite3($file, SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE);
} else {
- $conn = @new SQLite3($file, SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, $databaseConfig['key']);
+ $conn = @new SQLite3(
+ $file,
+ SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE,
+ $databaseConfig['key']
+ );
}
break;
case 'SQLite3PDODatabase':
diff --git a/composer.json b/composer.json
index bdd24f0..f6be3f5 100644
--- a/composer.json
+++ b/composer.json
@@ -1,34 +1,30 @@
{
- "name": "silverstripe/sqlite3",
- "description": "Adds SQLite3 support to SilverStripe",
- "type": "silverstripe-module",
- "keywords": ["silverstripe", "sqlite3", "database"],
- "authors": [
- {
- "name": "Ingo Schommer",
- "email": "ingo@silverstripe.com"
- },
- {
- "name": "Sean Harvey",
- "email": "sean@silverstripe.com"
- }
- ],
- "require": {
- "silverstripe/framework": "~4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.8"
- },
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "SilverStripe\\SQLite\\": "code/"
- }
- },
+ "name": "silverstripe/sqlite3",
+ "description": "Adds SQLite3 support to SilverStripe",
+ "type": "silverstripe-module",
+ "keywords": ["silverstripe", "sqlite3", "database"],
+ "authors": [
+ {
+ "name": "Ingo Schommer",
+ "email": "ingo@silverstripe.com"
+ },
+ {
+ "name": "Sean Harvey",
+ "email": "sean@silverstripe.com"
+ }
+ ],
+ "require": {
+ "silverstripe/framework": "~4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8",
+ "squizlabs/php_codesniffer": "^3"
+ },
+ "autoload": {
+ "psr-4": {
+ "SilverStripe\\SQLite\\": "code/"
+ }
+ },
"minimum-stability": "dev",
"prefer-stable": true
}
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
new file mode 100644
index 0000000..fa18f0b
--- /dev/null
+++ b/phpcs.xml.dist
@@ -0,0 +1,12 @@
+
+
+ CodeSniffer ruleset for SilverStripe coding conventions.
+
+ code
+
+
+
+
+
+
+