Commit graph

798 commits

Author SHA1 Message Date
e9d449a8ba Fix user manager and tests 2020-12-07 00:07:10 -05:00
ce68566fcb Hopefully fix MySQL 2020-12-06 20:27:20 -05:00
a431243421 Fixes for MySQL and PostgreSQL 2020-12-06 13:17:19 -05:00
fcf1260dab Adjust database portion of user property manager 2020-12-05 22:13:48 -05:00
978929aabd WIP redesign of user properties 2020-12-05 11:01:44 -05:00
94154d4354 Implement Miniflux feed discovery 2020-12-02 18:00:27 -05:00
669e17a1f6 Add ability to discover multiple feeds 2020-12-01 17:12:19 -05:00
2a0d6e6599 OPTIONS tests 2020-12-01 12:08:45 -05:00
7fa5523a7d Simplify handling of invalid paths and methods 2020-12-01 11:06:29 -05:00
def07bb1ad Tests for Miniflux authentication
This appears to match Miniflux's behaviour
2020-11-30 10:52:32 -05:00
90117b5cd7 Fix Miniflux strip value 2020-11-26 08:42:35 -05:00
06dee77bac First tests for Miniflux 2020-11-23 09:31:50 -05:00
f6cd2b87ce Port token data from Microsub branch 2020-11-18 11:25:28 -05:00
d3ebb1bd56 Last set of tests for user management. Fixes #180 2020-11-17 16:23:36 -05:00
e16df90bae Style fixes 2020-11-16 10:26:14 -05:00
180b4ecc9b More user tests 2020-11-16 10:24:06 -05:00
27d9c046d5 More work on user management 2020-11-16 00:11:19 -05:00
7f2117adaa Differentiate between duplicate/missing users and other failure modes 2020-11-15 16:24:26 -05:00
4baf5fa2f9 Tests for new user functionality in Database 2020-11-13 19:30:23 -05:00
dde9d7a28a Refinements to user manager
A greater effort is made to keep the internal database synchronized
2020-11-11 18:50:27 -05:00
eb2fe522bf Last bits of the new user metadata handling 2020-11-10 17:09:59 -05:00
5a17efc7b5 Clean up user driver API
- It is no longer assumed a driver knows whether a user exists
- The $password param is now required (but nullable when setting
2020-11-09 18:14:03 -05:00
771f79323c Strip out remnants of the authorizer 2020-11-09 16:51:30 -05:00
576d7e16a8 Fix handling of bytea-typed nulls 2020-11-09 16:49:42 -05:00
532ce4a502 Prototype changes to user management
The driver itself has not been expnaded; more is probably required to ensure
metadata is kept in sync and users created when the internal database does
not list a user an external database claims to have
2020-11-09 13:43:07 -05:00
b62c11a43e Lasts tests for icon cache; fixes #177 2020-11-07 08:11:06 -05:00
311910795a More tests for icon cache 2020-11-06 17:06:01 -05:00
3d3c20de5c Don't anticipate API features 2020-11-06 15:57:27 -05:00
424b14d2b4 Clean up use of subscriptionFavicon 2020-11-06 10:27:30 -05:00
dd1a80f279 Consolidate subscription icon querying
Users and tests still need adjusting
2020-11-05 18:32:11 -05:00
4fc208d940 More consistent icon API 2020-11-05 16:51:46 -05:00
c3a57ca68b Tests for icon cache population 2020-11-05 14:19:17 -05:00
50fd127ac4 Test for icon fetching 2020-11-05 10:14:42 -05:00
7c40c81fb3 Add icons to the database upon feed update 2020-11-05 08:13:15 -05:00
c25782f98c Partial icon handling skeleton 2020-11-04 20:00:00 -05:00
2438f35f3d Add icon cache to database
Feed updating has not yet been adapted to store
icon data (nor their URLs anymore)
2020-11-04 18:34:22 -05:00
5e60da00a9 Merge branch 'master' into miniflux 2020-11-03 18:58:09 -05:00
41bcffd6fb Correctly query PostgreSQL byte arrays
This required different workarouynd for the native and PDO interfaces
2020-11-03 17:52:20 -05:00
c21ae3eca9 Correctly send binary data to PostgreSQL
This finally brings PostgreSQL to parity with SQLite and MySQL.
Two tests casting binary data to text were removed since behaviour here
should in fact be undefined

Accountinf for any encoding when retrieving data will be addressed by
a later commit
2020-11-02 15:21:04 -05:00
c92bb12a11 Prototype Miniflux dispatcher 2020-11-01 19:11:01 -05:00
8ad7fc81a8 Initially mapping out of Miniflux API 2020-10-31 21:26:11 -04:00
16d2e01668 New schema for PostgreSQL and MySQL 2020-10-30 19:00:11 -04:00
4db1b95cf4 Add numeric IDs and other Miniflux data to SQLite schema 2020-10-30 15:25:22 -04:00
b58a326461 Prepare for schema changes 2020-10-29 11:58:45 -04:00
0117e7f9bf Relax Fever's HTTP correctness for client compat
- Unread on iOS appears to send all API requests as GETs
- Newsflash on Linux sends multipart/form-data input
2020-10-27 10:49:54 -04:00
9b11001402 Fix sample Nginx configuration 2020-10-26 12:57:16 -04:00
afbf3be031 Use 'union all' instead of 'union' in queries 2020-09-22 11:34:52 -04:00
9bc1373998 Version bump 2020-09-09 18:24:42 -04:00
0f3ada598e Work around Picofeed bug
A fix is pending merging upstream
2020-09-09 14:52:35 -04:00
e60f7ea03f Add class constant visibility 2020-03-01 18:32:01 -05:00
bc53a2d24a Style fixes 2020-03-01 15:16:50 -05:00
9696d55b31 Prepare ugfix release 2020-02-16 17:43:46 -05:00
39a1895867 Refine and cover new Guzzle error handling 2020-02-03 16:54:45 -05:00
06d3af0ac3 Fix remaining Picofeed-related test failures 2020-01-24 15:54:08 -05:00
49d003082d Fix problems with nicolus/picofeed
This involved multiple fixes to Picofeed itself, not all of which have
been merged upstream yet
2020-01-23 17:07:20 -05:00
e583ffea67 Start on integrating well-maintained picofeed fork
Picofeed configuration does not seem to get passed to Guzzle.
2020-01-21 08:42:38 -05:00
b5f118e8cb Cleanup 2020-01-20 13:52:48 -05:00
bbace7a0ac Use void and nullable return types where practical 2020-01-20 13:34:03 -05:00
5838af892f Replace references to Zend with Laminas 2020-01-20 10:40:05 -05:00
c4ee7254cd Refactor some tests to use data providers 2020-01-08 12:02:43 -05:00
fb2602fe04 Don't load actual configuration during CLI tests 2019-12-27 09:00:22 -05:00
3ee89bf669 Version bump 2019-12-06 17:46:53 -05:00
c9d4540616 Merge branch 'mysql' 2019-12-06 17:44:29 -05:00
bbe70b6abc Corect CamelCase references to Nextcloud 2019-12-05 13:02:02 -05:00
5df89009e6 Merge branch 'master' of https://code.mensbeam.com/MensBeam/arsse 2019-12-02 19:09:16 -05:00
15de8c2320 Fix PostgreSQL connection error message 2019-12-02 17:14:03 -05:00
737dd9f6b8 Fix foreign keys in MySQL 2019-12-01 15:00:28 -05:00
0e5b242c67 Version bump 2019-10-28 11:07:04 -04:00
c59cdfef76 Whitespace fixes 2019-10-25 15:16:35 -04:00
71c7cd8fb1 Full coverage! Fixes #66 2019-10-19 18:51:01 -04:00
728eecfbb5 Additional service tests 2019-10-19 12:14:13 -04:00
7ac4fb4715 Clarify PDO workaround for SQLite 2019-10-18 16:09:01 -04:00
3ef1177f06 Remove driver lists 2019-10-18 13:20:28 -04:00
b6dd8ab20d Improvements to and proper tests for query builder 2019-10-18 13:11:03 -04:00
c706a76057 Simplify array flattening 2019-10-18 13:10:03 -04:00
64c3ec3571 Coverage fixes and OPML bugfix 2019-10-17 13:00:56 -04:00
1809fb254e Deal with trailing whitespace in media types 2019-09-27 22:54:33 -04:00
4f5a8e3180 Make media type checking more robust 2019-09-27 22:38:03 -04:00
5f993187ea Be explicit with HTTP challenge character encoding 2019-09-27 17:16:34 -04:00
c5337b37b4 Consolidate creation of synthetic server requests 2019-09-25 18:30:53 -04:00
3da884dfbc Don't embed ito SQL strings with question marks
Fixes #175
2019-09-12 09:53:43 -04:00
be5ad50f54 Tests for text search clause generator 2019-09-12 09:41:01 -04:00
fb6e2babb9 Change some conditions to asserts 2019-09-12 08:32:40 -04:00
3aac583c00 Add Microsub to possible future APIs 2019-09-05 14:02:06 -04:00
c9e86e71c4 More style fixes 2019-09-05 11:25:50 -04:00
53aa7a4d0d Style fixes 2019-09-05 10:21:36 -04:00
d9c769d40e Remove Target class 2019-09-05 10:19:05 -04:00
29667464a1 Remove unnecessary namespace imports 2019-09-05 10:03:32 -04:00
0eb0fbcc0d Also normalize relative URLs 2019-09-03 19:34:56 -04:00
3439895779 Normalize URLs before establishing feed uniqueness 2019-09-03 19:04:23 -04:00
a175561574 Documentation corrections 2019-09-03 13:26:00 -04:00
bd71ddb929 Percent-encoding and IPv6 normalization 2019-09-03 13:16:05 -04:00
12fe786a2f Cleanup 2019-08-29 12:28:23 -04:00
d4802bcdb6 Handle IDNs
While IPv6 address normalization was originally planned, this was deemed
too much effort to bother with such a niche feature; IPv6 addresses are
instead passed through unmodified
2019-08-27 15:18:02 -04:00
dc750acf07 Handle ports, paths, and credentials correctly 2019-08-27 11:08:13 -04:00
13c27c2536 Start on URL normalizer 2019-08-26 22:13:30 -04:00
e5696fdf44 Merge branch 'manual' 2019-08-25 13:21:44 -04:00
cfef75ccba Don't update the feed URL when fetching
This can result in some unpredictable constraint violations
2019-08-06 09:58:30 -04:00
1ef669a464 Documentation for user management and OPML 2019-07-31 14:57:43 -04:00
eb120b4629 Fetch in three hours if caching is via etag 2019-07-27 11:03:17 -04:00
137be8bde2 Fix whitespace 2019-07-26 23:24:29 -04:00
45a43488ee Increase compatibility with misbehaving Fever clients 2019-07-26 23:23:22 -04:00
db5bcb78a3 Fix lookup of evergreen tokens 2019-07-26 20:06:47 -04:00
d6220c1bbb Merge branch 'master' into manual 2019-07-26 11:27:14 -04:00
4282ba1c26 Version bump 2019-07-26 09:39:46 -04:00
f7240301e4 Basic database maintenance
Closes #169
2019-07-26 09:37:51 -04:00
422eaf9605 Invalidate sessions on password change; closes #170 2019-07-25 22:34:58 -04:00
faf524c54f CLI test for import
Fixes #35
2019-07-25 15:45:18 -04:00
0e95892aea Do not necessarily ignore blank tags in import
We still make them practically impossible in OPML imports, however
2019-07-24 14:20:17 -04:00
2aa16f3405 Merge branch 'fever' into opml 2019-07-24 14:04:04 -04:00
61b942df70 Defer Fever favicons to a future release 2019-07-24 12:27:50 -04:00
0480465e7e Test Fever XML responses
Fixes #158
2019-07-24 09:10:13 -04:00
30cede9ea4 Make OPML parser protected 2019-07-05 14:58:05 -04:00
7046ce163c More format-neutral code out of OPML class 2019-06-21 13:47:34 -04:00
92b1626dba Remove most unused features of the query builder
Experience has proved programmatically setting joins is not useful, and
getting the types and values of query parts was not being maintained.

The programmatic setting of GROUP BY may be useful in future, however.
2019-06-21 12:00:23 -04:00
c1e13e6199 Tests for file imports 2019-05-12 16:33:19 -04:00
0f7d49c21e More OPML tests and fixes 2019-05-06 19:36:39 -04:00
644750487c Command line documentation and fixes 2019-05-06 00:02:59 -04:00
a30114807f Tests and fixed for OPML feed parsing 2019-05-05 20:29:44 -04:00
cdd9f4dfbe More OPML parser tests 2019-05-02 21:54:49 -04:00
5ba009cfed First set of OPML parser tests 2019-05-02 12:52:52 -04:00
6ef13d0880 Style fixes 2019-05-01 22:52:20 -04:00
b9821d925a CLI for OPML import, and proper exceptions 2019-05-01 10:46:44 -04:00
67492cd7ef Prototype OPML importer routine
In theory the import (as opposed to parse) routine could be used for any
format; this could be used to implement an ad hoc JSON format to avoid
the loss of commas in tags with OPML
2019-04-27 19:50:03 -04:00
3899ee6b4e Allow for replacing label and tag associations
This supplements adding and removing
2019-04-27 18:32:15 -04:00
2af223753d Function to add a feed without a subscription 2019-04-21 14:07:36 -04:00
ceecd58393 OPML parsing comments and minr fixes 2019-04-21 13:10:47 -04:00
825c286e5b Prototype OPML import parser 2019-04-19 18:01:31 -04:00
2d18be959c Tests for undoing read marks 2019-04-10 18:27:57 -04:00
c55a960b85 Slight cleanup 2019-04-10 15:14:45 -04:00
8532c581a8 Handle OPTIONS requests in Fever 2019-04-10 10:51:02 -04:00
afb95e53b0 Initial implementation of read-undo 2019-04-10 10:21:14 -04:00
52bc5fbda6 Tests for simple marking 2019-04-10 09:48:28 -04:00
15915a4393 Initial implementation of simple marks 2019-04-08 23:31:22 -04:00
c783ec4357 Prototype XML output for Fever 2019-04-08 20:58:45 -04:00
98fc3f4940 Test for hot links 2019-04-08 19:21:21 -04:00
4ce371ece6 Tests and fixes for Fever item listing 2019-04-08 18:41:56 -04:00
e3d2215920 Style fixes 2019-04-05 11:03:15 -04:00
0ef606aa03 Return string list of item IDs 2019-04-05 08:20:05 -04:00
0752e9cf3d Implement Fever sync 2019-04-04 19:37:48 -04:00
c6d241e653 Implement Fever item list 2019-04-04 17:57:12 -04:00
12f23ddc16 Updated tests for arbitrary sorting 2019-04-04 17:21:23 -04:00
f72c85c9f6 Hopefully working but maybe broken custom sorting 2019-04-04 11:22:50 -04:00
4b133bddd6 Prototype arbitrary result ordering 2019-04-03 15:02:59 -04:00
74fc39fca0 Implement multi-folder context option 2019-04-02 22:44:09 -04:00
cce1089e10 Handle edge case with folder 0
Folder 0 (the root folder) is a valid, though nonsensical selection:
using it as a positive option is the same as not using the option at
all, and using it as a negative option necessarily yields an empty set.

However, it can in some contexts be validly specified, and so it should
be handled consistently. It had not been previously, but is now.
2019-04-02 19:58:35 -04:00
98f6fca7e3 Enforce minimum array size (for now) 2019-04-02 18:37:46 -04:00
ef1b761f95 Implement most multiple-item context options
Selecting multiple folder trees will require further effort
2019-04-02 18:24:20 -04:00
ba32ad2f17 Add context options for multiple tags, labels, etc 2019-04-02 09:32:31 -04:00
77efaa7b41 CLI command for exporting OPML and sundry cleanup 2019-04-01 17:24:19 -04:00
deea294f8a Add export-to-file wrapper for OPML 2019-04-01 16:54:14 -04:00
35e79d53a9 OPML export fixes, with tests 2019-03-30 10:01:12 -04:00
d63edf541f Insert folders into OPML before subscriptions 2019-03-29 09:02:39 -04:00
25b7b47e0a Prototype OPML exporter 2019-03-28 21:53:04 -04:00
5d994f3dad Normalize Fever input consistently
Two parameters are undocumented, but other implementations consistently
accept them from clients
2019-03-28 14:54:31 -04:00
de615c671a Tests and fixed for Fever feeds and groups 2019-03-27 15:09:04 -04:00
7faec3b0db Fever fixes
- Ensure the last refresh time is included in authenticated requests
- Use a partial mock in auth tests so that other processing does not
get in the way of results
- Make sure the group list includes unused groups
- Make sure the update time of subscriptions is correct
2019-03-27 11:54:47 -04:00
d8407330a0 Add a function to get when feeds were last updated
This is an optimization for Fever, which returns this information with
every API call.
2019-03-26 16:51:44 -04:00
acb3973149 Prototype implementation of Fever groups and feeds 2019-03-26 08:53:26 -04:00
9c61f967e3 Correct CLI password clearing 2019-03-25 17:07:28 -04:00
bf3bf9589f Merge branch 'master' into fever 2019-03-25 14:12:08 -04:00
1e83350dd0 Version bump 2019-03-25 11:57:31 -04:00
65f723c7d4 Fix missing reference to author in TT-RSS. 2019-03-25 11:30:35 -04:00
22c2629078 Partial tests for new CLI features 2019-03-25 10:45:05 -04:00
7d95e8fc09 Split Fever user management from protocol handler 2019-03-25 08:31:49 -04:00
1ce95ef4d9 Add means of testing Fever authentication 2019-03-24 15:05:21 -04:00
e45ba3f0ea Add means of unsetting a password in the backend 2019-03-24 14:42:23 -04:00
07122b524a Rename Fever user functions for consistency 2019-03-21 10:19:30 -04:00
9ebaa20633 Tests for Fever password creation and removal 2019-03-20 22:24:35 -04:00
9168155244 Add method to unset a Fever password 2019-03-20 10:42:04 -04:00
1e2d595992 Full set of authentication tests for Fever 2019-03-19 23:37:08 -04:00
d59223bbcb First authentication test for Fever 2019-03-18 22:49:47 -04:00
b02c910b1e Make token creation check that the user exists 2019-03-10 15:54:43 -04:00
3aa2b62d02 Basic Fever skeleton
Authentication should work, but not tests have been written yet
2019-03-09 22:44:59 -05:00
38bdde1167 Add access tokens to the db, with relevant code
Tokens are similar to sessions in that they stand in for users, but the
protocol handlers will manage them; Fever login hashes are the
originating use case for them. These must never expire, for example,
and we need to specify their values.

This commit also performs a bit of database clean-up
2019-03-09 16:23:56 -05:00
5de1844f6d Add article selection by tag 2019-03-07 11:07:22 -05:00
e6f70527cf Simplify tag summary 2019-03-07 08:20:09 -05:00
ff0c9a3a55 Add functionality for interacting with subscription tags 2019-03-06 22:15:41 -05:00
e2cba68c1b Clarify various SQL queries 2019-03-05 19:25:46 -05:00
4945f8baa3 Clarify various SQL queries 2019-03-05 19:22:01 -05:00
6000d80b7b Work around various SQLite-related problems
- WAL mode was not getting set properly
- Queries using the PDO driver could fail because PDO sucks
2019-03-04 11:08:56 -05:00
ed22090e49 Work around various SQLite-related problems
- WAL mode was not getting set properly
- Queries using the PDO driver could fail because PDO sucks
2019-03-04 11:05:46 -05:00
fb1bdbfb37 Database schema for subscription tags 2019-03-03 12:10:18 -05:00
5efef2c2d0 Console command to refresh all feeds once; fixes #147 2019-03-02 14:59:44 -05:00
44366f48bf Remove arbitrary search term limits; fixes #150 2019-03-02 13:53:43 -05:00
21fdd66d37 Work around limit to SQL parameter placeholders for IN() clauses
Improves #150

LIKE-based matches also need to be similarly conservative
2019-03-01 22:36:25 -05:00
6857e8ec1b Merge branch 'search' 2019-03-01 12:26:08 -05:00
837f3c6dd6 Simplify SQL type handling
This is done in anticipation of dealing with SQL types in
places other than statements
2019-03-01 12:17:33 -05:00
3b8461b1ca Add searching to TTRSS handler 2019-02-28 16:22:04 -05:00
85307bc90a Add parser for TTRSS search strings 2019-02-28 15:31:33 -05:00
95de375e0b Handle folder and label exclusion
Consequently the way label data are retrieved was completely overhauled
2019-02-27 10:48:11 -05:00
1e7724ec80 Filter out duplicates in set context options 2019-02-26 12:54:27 -05:00
677e33e518 Add text search exclusions 2019-02-26 11:39:19 -05:00
89f25d7b91 Fix coverage a little 2019-02-26 11:12:40 -05:00
0dc82f64d5 Allow ranges in exclusion contexts 2019-02-26 11:11:42 -05:00
70443a5264 Make parent re-association on context clone more restrictive 2019-02-25 23:59:48 -05:00
18d52ea402 Make exclusion contexts return their parent on change 2019-02-25 23:37:14 -05:00
b950ac066f Restrict options in not-context and hopefully make it easier to use 2019-02-25 22:41:12 -05:00
14c02d56ac Implement new context options other than not().
Context handling has also been re-organized to simplify later
implementation of the not() option
2019-02-25 16:26:38 -05:00
f4a74eec5d Add all the other context options allowed by the TTRSS search syntax 2019-02-25 10:46:43 -05:00
2df7c25b66 Add ability to search note text 2019-02-23 20:14:52 -05:00
bc3182a961 Basic substring searching 2019-02-22 18:50:39 -05:00
570a9b171c Revert fulltext detection in driver 2019-02-22 18:49:57 -05:00
ace94e3ef8 Fix context, and context tests 2019-02-22 12:34:06 -05:00
f9fde23708 Context changes to support basic text searching 2019-02-22 11:13:42 -05:00
ad8057a40b Driver changes to support basic text searching 2019-02-22 11:13:13 -05:00
908e1fa310 API documentation for database driver interface 2019-02-21 15:43:19 -05:00
b55d0b374f API documentation for database driver interface 2019-02-21 15:10:32 -05:00
17f3a2f059 Start on an API overview for the Database class 2019-02-13 12:37:41 -05:00
b0d5458367 Clarify some prospective protocols 2019-02-04 13:18:33 -05:00
49cefaf5c8 Complete API documentation for the Database class 2019-02-04 13:05:48 -05:00
d3a385beef Partial API documentation for the Database class 2019-02-03 12:25:07 -05:00
b1282b6f6a Upgrade to PHP 7.1 and PHPUnit 7. 2019-01-25 22:07:37 -05:00
f5c5d49d97 Document SQL timeout changes 2019-01-24 11:40:25 -05:00
500851f161 Style fixes 2019-01-23 16:34:54 -05:00
91b6fdc696 Update changelog; bump version 2019-01-23 16:32:48 -05:00
8ea1df920a Unify SQL timeouts
- Exec and lock timeouts now apply to MySQL
- Lock timeout now applies to PostgreSQL
- SQLite now uses a generic lock timeout setting which applies to all
2019-01-23 16:31:54 -05:00
970731073d Fetch timeout should be a float, not an integer 2019-01-23 09:37:41 -05:00
9120d3b3e3 Correctly escape shell command in subprocesds service driver 2019-01-23 09:32:44 -05:00
a5049ac646 Remove reference to PicoFeed in the User-Agent string
PicoFeed is dead, so there's no point.
2019-01-23 09:21:35 -05:00
37131d3775 Remove non-functional curl service driver for now
Its requiring extensive configuration to function makes me disinclined
to revive it, though it may nevertheless happen.
2019-01-23 09:19:26 -05:00
05aadfe7c7 Use correct SQLite chema change procedure; version bump 2019-01-21 10:40:39 -05:00
5335d331f7 Fix configuration exporting 2019-01-21 09:55:25 -05:00
5cd84c4ab4 Validate configuration parameters on import, and other changes
- Each parameter is checked for type and normalized
- Interval strings are converted to DateInterval objects
- Timeouts can be specified as interval strings
- Most intervals can be null to signify infinity
- Driver classes are checked that they implement the correct interface
- Short driver names may be used, and are used by default
- Helpful errors messages are printed in case of erroneous configuration

Exporting is currently broken; this will be fixed in an upcoming commit
2019-01-20 22:40:49 -05:00
b0643de21c Add handling of DateInterval objects to ValueInfo 2019-01-17 16:29:42 -05:00
4670dfc849 Handle connection errors 2019-01-15 10:51:55 -05:00
e92bda5373 Various changes:
- Fix handling of binary data and long strings
- Simplify handling of socket connections
- Fix coverage
2019-01-15 08:58:11 -05:00
5d61ab0a57 Fixes for MySQL native interface
Three test failures remain, but these are minor and will be resolved
soon. Handling of binary data is also broken, but given that this works
fine with the PDO driver, there is presumably some correct method.
2019-01-13 23:17:19 -05:00
81acba90dc Use strict equality when comparing strings 2019-01-11 10:38:06 -05:00
c4a41255b0 Experimental native MySQL driver
No testing has been performed yet, but changes are extensive enough to
warrant a commit. Of particular note:

- SQL states are enumerated in a separate trait to reduce duplication
- PDOStatement is now an abstract class to avoid duplication of
engine-specific error handling
- Error handling has been cleaned up somewhat
2019-01-10 19:01:32 -05:00
206cca35a9 Test tweaks 2018-12-21 17:51:49 -05:00
5a133b795a Correctly munge MySQL queries 2018-12-21 17:37:22 -05:00
b4de56a64e Work around MySQL silliness with same-table foreign keys 2018-12-21 17:02:34 -05:00
f0d30c2eee Make munging of queries a generic feature 2018-12-21 12:35:10 -05:00
24df564045 Mostly successful MySQL database function tests
Two failures remain, at least one requiring query munging.
2018-12-21 10:14:26 -05:00
de07352fd0 Syntactic adjustments for MySQL
- "key", "read", and "rename" are reserved words
- CTEs in INSERTs must precede SELECT
- Empty sets are represented only by explicit null
2018-12-20 21:23:06 -05:00
393b4e95ad Adjustments for MySQL 8
The prototype had been tested against MariaDB
2018-12-20 20:50:56 -05:00
4ef36643a4 Proof-of-concept PDO MySQL driver
- Configuration options were added
- Non-transactional locking was added to the savepoint handlers
- Tests were adjusted for MySQL's reserved words
2018-12-20 18:06:28 -05:00
50f92625ef Use PosgreSQL's existing general Unicode collation
All collations appear to be case-insensitive
2018-12-14 09:18:56 -05:00
2bebdd44cf Implementation of native PostgreSQL interface
Changes to the Database class were required to avoid outputting booleans
2018-12-13 19:47:51 -05:00
161f5f08f6 Proactively support SQLite 3.25 2018-12-12 12:21:28 -05:00
28f803dd28 Handle PostgreSQL connection errors 2018-12-12 11:15:07 -05:00
0f48ce6f37 Use a Unicode collation for SQLite 2018-12-11 14:14:32 -05:00
35d46d2913 Use persistent connections with PostgreSQL 2018-12-10 12:28:43 -05:00
f6966659a9 Use smarter coverage executer; properly suppress stderr during CLI tests 2018-12-07 20:25:48 -05:00
0513b606c2 Merge master 2018-12-07 19:21:44 -05:00
089f666de6 Fix PDO insert ID errors in PHP 7.1 2018-12-06 17:46:00 -05:00
cf896121b2 Style fixes 2018-12-05 17:28:11 -05:00
51755a2ce6 Retire article field groups 2018-12-05 16:55:14 -05:00
15301cd7dc Fix cleanup tests in PostgreSQL 2018-12-05 11:05:01 -05:00