Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Q
question2answer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
outils
question2answer
Commits
10e8e762
Commit
10e8e762
authored
Jan 18, 2019
by
Scott
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polyfill old DB functions with DbConnection
parent
1455b5c5
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
84 additions
and
5 deletions
+84
-5
qa-db.php
qa-include/qa-db.php
+82
-4
Application.php
qa-src/App/Application.php
+2
-1
No files found.
qa-include/qa-db.php
View file @
10e8e762
...
@@ -33,6 +33,10 @@ function qa_db_allow_connect()
...
@@ -33,6 +33,10 @@ function qa_db_allow_connect()
{
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
qa_service
(
'database'
)
->
allowConnect
();
return
;
global
$qa_db_allow_connect
;
global
$qa_db_allow_connect
;
$qa_db_allow_connect
=
true
;
$qa_db_allow_connect
=
true
;
...
@@ -49,6 +53,10 @@ function qa_db_connect($failhandler = null)
...
@@ -49,6 +53,10 @@ function qa_db_connect($failhandler = null)
{
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
qa_service
(
'database'
)
->
connect
(
$failhandler
);
return
;
global
$qa_db_connection
,
$qa_db_fail_handler
,
$qa_db_allow_connect
;
global
$qa_db_connection
,
$qa_db_fail_handler
,
$qa_db_allow_connect
;
if
(
!
$qa_db_allow_connect
)
if
(
!
$qa_db_allow_connect
)
...
@@ -112,6 +120,10 @@ function qa_db_fail_error($type, $errno = null, $error = null, $query = null)
...
@@ -112,6 +120,10 @@ function qa_db_fail_error($type, $errno = null, $error = null, $query = null)
{
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
qa_service
(
'database'
)
->
failError
(
$type
,
$errno
,
$error
,
$query
);
return
;
global
$qa_db_fail_handler
;
global
$qa_db_fail_handler
;
@
error_log
(
'PHP Question2Answer MySQL '
.
$type
.
' error '
.
$errno
.
': '
.
$error
.
(
isset
(
$query
)
?
(
' - Query: '
.
$query
)
:
''
));
@
error_log
(
'PHP Question2Answer MySQL '
.
$type
.
' error '
.
$errno
.
': '
.
$error
.
(
isset
(
$query
)
?
(
' - Query: '
.
$query
)
:
''
));
...
@@ -137,6 +149,9 @@ function qa_db_connection($connect = true)
...
@@ -137,6 +149,9 @@ function qa_db_connection($connect = true)
{
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
return
qa_service
(
'database'
);
global
$qa_db_connection
;
global
$qa_db_connection
;
if
(
$connect
&&
!
(
$qa_db_connection
instanceof
mysqli
))
{
if
(
$connect
&&
!
(
$qa_db_connection
instanceof
mysqli
))
{
...
@@ -157,6 +172,10 @@ function qa_db_disconnect()
...
@@ -157,6 +172,10 @@ function qa_db_disconnect()
{
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
qa_service
(
'database'
)
->
disconnect
();
return
;
global
$qa_db_connection
;
global
$qa_db_connection
;
if
(
$qa_db_connection
instanceof
mysqli
)
{
if
(
$qa_db_connection
instanceof
mysqli
)
{
...
@@ -182,6 +201,9 @@ function qa_db_query_raw($query)
...
@@ -182,6 +201,9 @@ function qa_db_query_raw($query)
{
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
return
qa_service
(
'database'
)
->
query
(
$query
);
if
(
QA_DEBUG_PERFORMANCE
)
{
if
(
QA_DEBUG_PERFORMANCE
)
{
global
$qa_usage
;
global
$qa_usage
;
...
@@ -221,6 +243,9 @@ function qa_db_query_execute($query)
...
@@ -221,6 +243,9 @@ function qa_db_query_execute($query)
{
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
return
qa_service
(
'database'
)
->
query
(
$query
);
$db
=
qa_db_connection
();
$db
=
qa_db_connection
();
for
(
$attempt
=
0
;
$attempt
<
100
;
$attempt
++
)
{
for
(
$attempt
=
0
;
$attempt
<
100
;
$attempt
++
)
{
...
@@ -245,6 +270,10 @@ function qa_db_escape_string($string)
...
@@ -245,6 +270,10 @@ function qa_db_escape_string($string)
{
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
$pdo
=
qa_service
(
'database'
)
->
getPDO
();
return
$pdo
->
quote
(
$string
);
$db
=
qa_db_connection
();
$db
=
qa_db_connection
();
return
$db
->
real_escape_string
(
$string
);
return
$db
->
real_escape_string
(
$string
);
}
}
...
@@ -272,10 +301,8 @@ function qa_db_argument_to_mysql($argument, $alwaysquote, $arraybrackets = false
...
@@ -272,10 +301,8 @@ function qa_db_argument_to_mysql($argument, $alwaysquote, $arraybrackets = false
$result
=
implode
(
','
,
$parts
);
$result
=
implode
(
','
,
$parts
);
}
elseif
(
isset
(
$argument
))
{
}
elseif
(
isset
(
$argument
))
{
if
(
$alwaysquote
||
!
is_numeric
(
$argument
))
// PDO adds quotes so no need here
$result
=
"'"
.
qa_db_escape_string
(
$argument
)
.
"'"
;
$result
=
qa_db_escape_string
(
$argument
);
else
$result
=
qa_db_escape_string
(
$argument
);
}
else
}
else
$result
=
'NULL'
;
$result
=
'NULL'
;
...
@@ -292,6 +319,9 @@ function qa_db_add_table_prefix($rawname)
...
@@ -292,6 +319,9 @@ function qa_db_add_table_prefix($rawname)
{
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
return
qa_service
(
'database'
)
->
addTablePrefix
(
$rawname
);
$prefix
=
QA_MYSQL_TABLE_PREFIX
;
$prefix
=
QA_MYSQL_TABLE_PREFIX
;
if
(
defined
(
'QA_MYSQL_USERS_PREFIX'
))
{
if
(
defined
(
'QA_MYSQL_USERS_PREFIX'
))
{
...
@@ -338,6 +368,8 @@ function qa_db_prefix_callback($matches)
...
@@ -338,6 +368,8 @@ function qa_db_prefix_callback($matches)
*/
*/
function
qa_db_apply_sub
(
$query
,
$arguments
)
function
qa_db_apply_sub
(
$query
,
$arguments
)
{
{
// function left intact as it does not use db connection, and DbConnection does not allow #/$ params
$query
=
preg_replace_callback
(
'/\^([A-Za-z_0-9]+)/'
,
'qa_db_prefix_callback'
,
$query
);
$query
=
preg_replace_callback
(
'/\^([A-Za-z_0-9]+)/'
,
'qa_db_prefix_callback'
,
$query
);
if
(
!
is_array
(
$arguments
))
if
(
!
is_array
(
$arguments
))
...
@@ -402,6 +434,10 @@ function qa_db_query_sub_params($query, $params)
...
@@ -402,6 +434,10 @@ function qa_db_query_sub_params($query, $params)
*/
*/
function
qa_db_num_rows
(
$result
)
function
qa_db_num_rows
(
$result
)
{
{
if
(
$result
instanceof
\Q2A\Database\DbResult
)
return
$result
->
rowCount
();
if
(
$result
instanceof
mysqli_result
)
if
(
$result
instanceof
mysqli_result
)
return
$result
->
num_rows
;
return
$result
->
num_rows
;
...
@@ -414,6 +450,9 @@ function qa_db_num_rows($result)
...
@@ -414,6 +450,9 @@ function qa_db_num_rows($result)
*/
*/
function
qa_db_last_insert_id
()
function
qa_db_last_insert_id
()
{
{
return
qa_service
(
'database'
)
->
lastInsertId
();
$db
=
qa_db_connection
();
$db
=
qa_db_connection
();
return
$db
->
insert_id
;
return
$db
->
insert_id
;
}
}
...
@@ -424,6 +463,9 @@ function qa_db_last_insert_id()
...
@@ -424,6 +463,9 @@ function qa_db_last_insert_id()
*/
*/
function
qa_db_affected_rows
()
function
qa_db_affected_rows
()
{
{
return
\PDOstatement
::
rowCount
();
$db
=
qa_db_connection
();
$db
=
qa_db_connection
();
return
$db
->
affected_rows
;
return
$db
->
affected_rows
;
}
}
...
@@ -534,6 +576,9 @@ function qa_db_list_tables($onlyTablesWithPrefix = false)
...
@@ -534,6 +576,9 @@ function qa_db_list_tables($onlyTablesWithPrefix = false)
*/
*/
function
qa_db_single_select
(
$selectspec
)
function
qa_db_single_select
(
$selectspec
)
{
{
return
qa_service
(
'database'
)
->
singleSelect
(
$selectspec
);
// check for cached results
// check for cached results
if
(
isset
(
$selectspec
[
'caching'
]))
{
if
(
isset
(
$selectspec
[
'caching'
]))
{
$cacheDriver
=
\Q2A\Storage\CacheFactory
::
getCacheDriver
();
$cacheDriver
=
\Q2A\Storage\CacheFactory
::
getCacheDriver
();
...
@@ -578,6 +623,9 @@ function qa_db_single_select($selectspec)
...
@@ -578,6 +623,9 @@ function qa_db_single_select($selectspec)
*/
*/
function
qa_db_multi_select
(
$selectspecs
)
function
qa_db_multi_select
(
$selectspecs
)
{
{
return
qa_service
(
'database'
)
->
multiSelect
(
$selectspecs
);
if
(
!
count
(
$selectspecs
))
if
(
!
count
(
$selectspecs
))
return
array
();
return
array
();
...
@@ -690,6 +738,9 @@ function qa_db_multi_select($selectspecs)
...
@@ -690,6 +738,9 @@ function qa_db_multi_select($selectspecs)
*/
*/
function
qa_db_post_select
(
&
$outresult
,
$selectspec
)
function
qa_db_post_select
(
&
$outresult
,
$selectspec
)
{
{
return
;
// private method in DbConnection
// PHP's sorting algorithm is not 'stable', so we use '_order_' element to keep stability.
// PHP's sorting algorithm is not 'stable', so we use '_order_' element to keep stability.
// By contrast, MySQL's ORDER BY does seem to give the results in a reliable order.
// By contrast, MySQL's ORDER BY does seem to give the results in a reliable order.
...
@@ -739,6 +790,11 @@ function qa_db_post_select(&$outresult, $selectspec)
...
@@ -739,6 +790,11 @@ function qa_db_post_select(&$outresult, $selectspec)
*/
*/
function
qa_db_read_all_assoc
(
$result
,
$key
=
null
,
$value
=
null
)
function
qa_db_read_all_assoc
(
$result
,
$key
=
null
,
$value
=
null
)
{
{
if
(
$result
instanceof
\Q2A\Database\DbResult
)
{
return
$result
->
fetchAllAssoc
(
$key
,
$value
);
}
if
(
!
(
$result
instanceof
mysqli_result
))
if
(
!
(
$result
instanceof
mysqli_result
))
qa_fatal_error
(
'Reading all assoc from invalid result'
);
qa_fatal_error
(
'Reading all assoc from invalid result'
);
...
@@ -764,6 +820,11 @@ function qa_db_read_all_assoc($result, $key = null, $value = null)
...
@@ -764,6 +820,11 @@ function qa_db_read_all_assoc($result, $key = null, $value = null)
*/
*/
function
qa_db_read_one_assoc
(
$result
,
$allowempty
=
false
)
function
qa_db_read_one_assoc
(
$result
,
$allowempty
=
false
)
{
{
if
(
$result
instanceof
\Q2A\Database\DbResult
)
{
return
$allowempty
?
$result
->
fetchNextAssoc
()
:
$result
->
fetchNextAssocOrFail
();
}
if
(
!
(
$result
instanceof
mysqli_result
))
if
(
!
(
$result
instanceof
mysqli_result
))
qa_fatal_error
(
'Reading one assoc from invalid result'
);
qa_fatal_error
(
'Reading one assoc from invalid result'
);
...
@@ -786,6 +847,11 @@ function qa_db_read_one_assoc($result, $allowempty = false)
...
@@ -786,6 +847,11 @@ function qa_db_read_one_assoc($result, $allowempty = false)
*/
*/
function
qa_db_read_all_values
(
$result
)
function
qa_db_read_all_values
(
$result
)
{
{
if
(
$result
instanceof
\Q2A\Database\DbResult
)
{
return
$result
->
fetchAllValues
(
0
);
}
if
(
!
(
$result
instanceof
mysqli_result
))
if
(
!
(
$result
instanceof
mysqli_result
))
qa_fatal_error
(
'Reading column from invalid result'
);
qa_fatal_error
(
'Reading column from invalid result'
);
...
@@ -807,6 +873,11 @@ function qa_db_read_all_values($result)
...
@@ -807,6 +873,11 @@ function qa_db_read_all_values($result)
*/
*/
function
qa_db_read_one_value
(
$result
,
$allowempty
=
false
)
function
qa_db_read_one_value
(
$result
,
$allowempty
=
false
)
{
{
if
(
$result
instanceof
\Q2A\Database\DbResult
)
{
return
$allowempty
?
$result
->
fetchOneValue
(
0
)
:
$result
->
fetchOneValueOrFail
(
0
);
}
if
(
!
(
$result
instanceof
mysqli_result
))
if
(
!
(
$result
instanceof
mysqli_result
))
qa_fatal_error
(
'Reading one value from invalid result'
);
qa_fatal_error
(
'Reading one value from invalid result'
);
...
@@ -829,6 +900,10 @@ function qa_db_read_one_value($result, $allowempty = false)
...
@@ -829,6 +900,10 @@ function qa_db_read_one_value($result, $allowempty = false)
*/
*/
function
qa_suspend_update_counts
(
$suspend
=
true
)
function
qa_suspend_update_counts
(
$suspend
=
true
)
{
{
qa_service
(
'database'
)
->
suspendUpdateCounts
(
$suspend
);
return
;
global
$qa_update_counts_suspended
;
global
$qa_update_counts_suspended
;
$qa_update_counts_suspended
+=
(
$suspend
?
1
:
-
1
);
$qa_update_counts_suspended
+=
(
$suspend
?
1
:
-
1
);
...
@@ -841,6 +916,9 @@ function qa_suspend_update_counts($suspend = true)
...
@@ -841,6 +916,9 @@ function qa_suspend_update_counts($suspend = true)
*/
*/
function
qa_should_update_counts
()
function
qa_should_update_counts
()
{
{
return
qa_service
(
'database'
)
->
shouldUpdateCounts
();
global
$qa_update_counts_suspended
;
global
$qa_update_counts_suspended
;
return
(
$qa_update_counts_suspended
<=
0
);
return
(
$qa_update_counts_suspended
<=
0
);
...
...
qa-src/App/Application.php
View file @
10e8e762
...
@@ -19,6 +19,7 @@
...
@@ -19,6 +19,7 @@
namespace
Q2A\App
;
namespace
Q2A\App
;
use
Q2A\Http\Router
;
use
Q2A\Http\Router
;
use
Q2A\Database\DbConnection
;
class
Application
class
Application
{
{
...
@@ -31,7 +32,6 @@ class Application
...
@@ -31,7 +32,6 @@ class Application
protected
function
__construct
()
protected
function
__construct
()
{
{
$this
->
container
=
new
Container
();
$this
->
container
=
new
Container
();
$this
->
registerCoreServices
();
$this
->
registerCoreServices
();
}
}
...
@@ -54,6 +54,7 @@ class Application
...
@@ -54,6 +54,7 @@ class Application
private
function
registerCoreServices
()
private
function
registerCoreServices
()
{
{
$this
->
container
->
set
(
'router'
,
new
Router
());
$this
->
container
->
set
(
'router'
,
new
Router
());
$this
->
container
->
set
(
'database'
,
new
DbConnection
());
}
}
/**
/**
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment