Compare commits

...

18 Commits
2.2.0 ... 2

Author SHA1 Message Date
Steve Boyd df532bb741
MNT Use gha-dispatch-ci (#71) 2023-03-20 16:31:41 +13:00
Will Rossiter 1a87b18e71
fix: remove deprecated function 2023-01-24 20:04:50 +13:00
Guy Sartorelli ee7f0e4d25
Merge pull request #65 from lekoala/patch-1
prevent php 8 complaining about null values
2022-09-06 15:59:32 +12:00
Thomas Portelange 66c1c09b74
switch back to null
users are expected to use ?? '' if needed
2022-08-31 09:00:08 +02:00
Thomas Portelange d3d03d9f79
Update code/SQLite3Connector.php
Co-authored-by: Guy Sartorelli <36352093+GuySartorelli@users.noreply.github.com>
2022-08-31 08:58:48 +02:00
Guy Sartorelli f949becc6a
Merge branch '2.1' into 2 2022-08-31 12:58:44 +12:00
Thomas Portelange ecaadc029e
Enforce proper type
Otherwise it may fail when passed to preg_match

Deprecated: preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated
2022-08-19 15:07:23 +02:00
Thomas Portelange 05abb3f483
prevent php 8 complaining about null values
Fix Deprecated: SQLite3::escapeString(): Passing null to parameter #1 ($string) of type string is deprecated
2022-08-19 15:04:48 +02:00
Guy Sartorelli f102cad3bf
Merge pull request #64 from creative-commoners/pulls/2.1/phpcs
MNT Add codesniffer
2022-08-05 14:48:24 +12:00
Steve Boyd d142dd77e4 MNT Add codesniffer 2022-08-05 12:33:00 +12:00
Steve Boyd a919f8a317 Merge branch '2.1' into 2 2022-08-02 19:11:46 +12:00
Steve Boyd ea06c57cfb Merge branch '2.0' into 2.1 2022-08-02 19:11:02 +12:00
Guy Sartorelli d399c27722
Merge pull request #63 from creative-commoners/pulls/2.0/standardise-modules
MNT Standardise modules
2022-08-02 16:18:19 +12:00
Steve Boyd bf07381fc9 MNT Standardise modules 2022-08-01 16:23:18 +12:00
Guy Sartorelli 2ba8fe5c50
Merge pull request #61 from elliot-sawyer/compat/8.1
PHP 8.1 compatibility
2022-07-25 12:12:09 +12:00
Elliot Sawyer f9dfa9f34c PHP 8.1 compatibility 2022-07-20 19:17:01 +12:00
Sam Minnée c95b0105f5
Merge pull request #60 from chrometoasters/pulls/transaction-mode-not-supported
Override transaction mode support check method
2019-09-25 10:03:09 +12:00
Michal Kleiner 22d46a5ef8 Override transaction mode support check method as these are not supported by SQLite 2019-09-16 14:50:16 +12:00
13 changed files with 82 additions and 177 deletions

11
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,11 @@
name: CI
on:
push:
pull_request:
workflow_dispatch:
jobs:
ci:
name: CI
uses: silverstripe/gha-ci/.github/workflows/ci.yml@v1

16
.github/workflows/dispatch-ci.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: Dispatch CI
on:
# At 3:00 PM UTC, only on Sunday and Monday
schedule:
- cron: '0 15 * * 0,1'
jobs:
dispatch-ci:
name: Dispatch CI
# 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: Dispatch CI
uses: silverstripe/gha-dispatch-ci@v1

17
.github/workflows/keepalive.yml vendored Normal file
View File

@ -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

View File

@ -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/*]

View File

@ -1,58 +0,0 @@
language: php
dist: trusty
cache:
directories:
- $HOME/.composer/cache/files
env:
global:
- DB=SQLITE
matrix:
fast_finish: true
include:
- php: 5.6
env:
- CORE_VERSION=1.0.x-dev
- PDO=0
- php: 7.0
env:
- CORE_VERSION=1.1.x-dev
- PDO=1
- php: 7.1
env:
- CORE_VERSION=4.2.x-dev
- PDO=0
- php: 7.2
env:
- CORE_VERSION=4.3.x-dev
- PDO=0
- php: 7.3
env:
- CORE_VERSION=4.x-dev
- PDO=1
- PHPCS_TEST=1
before_script:
# Init PHP
- phpenv rehash
- phpenv config-rm xdebug.ini || true
- export PATH=~/.composer/vendor/bin:$PATH
- echo 'memory_limit = 2048M' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
# Install composer dependencies
- composer validate
- composer require --no-update silverstripe/recipe-cms:$CORE_VERSION
- composer install --no-interaction --no-progress --no-suggest --optimize-autoloader --verbose --profile
- if [[ $PHPCS_TEST ]]; then composer global require squizlabs/php_codesniffer:^3 --prefer-dist --no-interaction --no-progress --no-suggest -o; fi
script:
- vendor/bin/phpunit vendor/silverstripe/framework/tests
- if [[ $PHPCS_TEST ]]; then composer run-script lint; fi

View File

@ -1,7 +1,7 @@
# SQLite3 Module
[![Build Status](https://travis-ci.org/silverstripe/silverstripe-sqlite3.png?branch=master)](https://travis-ci.org/silverstripe/silverstripe-sqlite3)
[![SilverStripe supported module](https://img.shields.io/badge/silverstripe-supported-0071C4.svg)](https://www.silverstripe.org/software/addons/silverstripe-commercially-supported-module-list/)
[![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
@ -10,7 +10,7 @@ Andreas Piening (Nickname: apiening)
## Requirements
* SilverStripe 4.0 or newer
* Silverstripe 4.0 or newer
## Installation
@ -27,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

View File

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

View File

@ -170,7 +170,7 @@ class SQLite3Connector extends DBConnector
public function escapeString($value)
{
return $this->dbConn->escapeString($value);
return $this->dbConn->escapeString($value ?? '');
}
public function selectDatabase($name)

View File

@ -411,7 +411,7 @@ class SQLite3Database extends Database
$queries[$class]->setFrom('"'.DataObject::getSchema()->baseDataTable($class).'"');
$queries[$class]->setSelect(array());
foreach ($select[$class] as $clause) {
if (preg_match('/^(.*) +AS +"?([^"]*)"?/i', $clause, $matches)) {
if (preg_match('/^(.*) +AS +"?([^"]*)"?/i', $clause ?? '', $matches)) {
$queries[$class]->selectField($matches[1], $matches[2]);
} else {
$queries[$class]->selectField(str_replace('"', '', $clause));
@ -460,6 +460,19 @@ class SQLite3Database extends Database
return version_compare($this->getVersion(), '3.6', '>=');
}
/**
* Does this database support transaction modes?
*
* SQLite doesn't support transaction modes.
*
* @param string $mode
* @return bool
*/
public function supportsTransactionMode(string $mode): bool
{
return false;
}
public function supportsExtensions($extensions = array('partitions', 'tablespaces', 'clustering'))
{
if (isset($extensions['partitions'])) {
@ -659,7 +672,7 @@ class SQLite3Database extends Database
public function formattedDatetimeClause($date, $format)
{
preg_match_all('/%(.)/', $format, $matches);
preg_match_all('/%(.)/', $format ?? '', $matches);
foreach ($matches[1] as $match) {
if (array_search($match, array('Y', 'm', 'd', 'H', 'i', 's', 'U')) === false) {
user_error('formattedDatetimeClause(): unsupported format character %' . $match, E_USER_WARNING);
@ -681,9 +694,9 @@ class SQLite3Database extends Database
$modifiers[] = 'localtime';
}
if (preg_match('/^now$/i', $date)) {
if (preg_match('/^now$/i', $date ?? '')) {
$date = "'now'";
} elseif (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/i', $date)) {
} elseif (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/i', $date ?? '')) {
$date = "'$date'";
}
@ -698,9 +711,9 @@ class SQLite3Database extends Database
$modifiers[] = 'localtime';
}
if (preg_match('/^now$/i', $date)) {
if (preg_match('/^now$/i', $date ?? '')) {
$date = "'now'";
} elseif (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/i', $date)) {
} elseif (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/i', $date ?? '')) {
$date = "'$date'";
}
@ -720,15 +733,15 @@ class SQLite3Database extends Database
$modifiers2[] = 'localtime';
}
if (preg_match('/^now$/i', $date1)) {
if (preg_match('/^now$/i', $date1 ?? '')) {
$date1 = "'now'";
} elseif (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/i', $date1)) {
} elseif (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/i', $date1 ?? '')) {
$date1 = "'$date1'";
}
if (preg_match('/^now$/i', $date2)) {
if (preg_match('/^now$/i', $date2 ?? '')) {
$date2 = "'now'";
} elseif (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/i', $date2)) {
} elseif (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/i', $date2 ?? '')) {
$date2 = "'$date2'";
}

View File

@ -232,7 +232,7 @@ class SQLite3SchemaManager extends DBSchemaManager
if (self::$vacuum) {
$this->query('VACUUM', E_USER_NOTICE);
$message = $this->database->getConnector()->getLastError();
if (preg_match('/authoriz/', $message)) {
if (preg_match('/authoriz/', $message ?? '')) {
$this->alterationMessage("VACUUM | $message", "error");
} else {
$this->alterationMessage("VACUUMing", "repaired");
@ -371,7 +371,7 @@ class SQLite3SchemaManager extends DBSchemaManager
if ($sqlCreate && $sqlCreate['sql']) {
preg_match(
'/^[\s]*CREATE[\s]+TABLE[\s]+[\'"]?[a-zA-Z0-9_\\\]+[\'"]?[\s]*\((.+)\)[\s]*$/ims',
$sqlCreate['sql'],
$sqlCreate['sql'] ?? '',
$matches
);
$fields = isset($matches[1])

View File

@ -18,12 +18,7 @@
"silverstripe/vendor-plugin": "^1.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7"
},
"extra": {
"branch-alias": {
"2.x-dev": "2.2.x-dev"
}
"squizlabs/php_codesniffer": "^3"
},
"autoload": {
"psr-4": {

View File

@ -1,11 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="SilverStripe">
<description>CodeSniffer ruleset for SilverStripe coding conventions.</description>
<description>CodeSniffer ruleset for SilverStripe coding conventions.</description>
<!-- base rules are PSR-2 -->
<rule ref="PSR2" >
<!-- Current exclusions -->
<exclude name="PSR1.Methods.CamelCapsMethodName" />
</rule>
<file>code</file>
<!-- base rules are PSR-2 -->
<rule ref="PSR2" >
<!-- Current exclusions -->
<exclude name="PSR1.Methods.CamelCapsMethodName" />
</rule>
</ruleset>

View File

@ -1,16 +0,0 @@
<phpunit bootstrap="vendor/silverstripe/cms/tests/bootstrap.php" colors="true">
<testsuite name="Default">
<directory>tests</directory>
</testsuite>
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory suffix=".php">.</directory>
<exclude>
<directory suffix=".php">tests/</directory>
</exclude>
</whitelist>
</filter>
</phpunit>