Commits vergleichen
8 Commits
680b5bad71
...
513e575a41
Autor | SHA1 | Datum |
---|---|---|
o.pinke | 513e575a41 | |
o.pinke | 53e6a7a47f | |
o.pinke | 8ec4add782 | |
o.pinke | 01255ad980 | |
o.pinke | c9eaa03cd0 | |
o.pinke | 5ccdc05e6b | |
o.pinke | 613c95ad70 | |
o.pinke | 210091ad9b |
127
conlib/local.php
127
conlib/local.php
|
@ -59,13 +59,13 @@ class DB_ConLite extends DB_Sql {
|
||||||
* - $options['enableProfiling'] (bool) Optional, flag to enable profiling
|
* - $options['enableProfiling'] (bool) Optional, flag to enable profiling
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __construct(array $options = array()) {
|
public function __construct(array $options = []) {
|
||||||
global $cachemeta;
|
global $cachemeta;
|
||||||
|
|
||||||
parent::__construct($options);
|
parent::__construct($options);
|
||||||
|
|
||||||
if (!is_array($cachemeta)) {
|
if (!is_array($cachemeta)) {
|
||||||
$cachemeta = array();
|
$cachemeta = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO check this out
|
// TODO check this out
|
||||||
|
@ -109,7 +109,7 @@ class DB_ConLite extends DB_Sql {
|
||||||
*/
|
*/
|
||||||
public function copyResultToArray($sTable = '') {
|
public function copyResultToArray($sTable = '') {
|
||||||
|
|
||||||
$aValues = array();
|
$aValues = [];
|
||||||
|
|
||||||
|
|
||||||
$aMetadata = $this->metadata($sTable);
|
$aMetadata = $this->metadata($sTable);
|
||||||
|
@ -132,17 +132,8 @@ class DB_ConLite extends DB_Sql {
|
||||||
*
|
*
|
||||||
* @deprecated since version 2.0.0, use DB_ConLite instead
|
* @deprecated since version 2.0.0, use DB_ConLite instead
|
||||||
*/
|
*/
|
||||||
class DB_Contenido extends DB_ConLite {
|
class DB_Contenido extends DB_ConLite
|
||||||
|
{
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @deprecated since version 2.0.0
|
|
||||||
* @param array $options
|
|
||||||
*/
|
|
||||||
public function __construct(array $options = array()) {
|
|
||||||
parent::__construct($options);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class Contenido_CT_Sql extends CT_Sql {
|
class Contenido_CT_Sql extends CT_Sql {
|
||||||
|
@ -176,17 +167,12 @@ class Contenido_CT_Sql extends CT_Sql {
|
||||||
* @param string $id The session id (hash)
|
* @param string $id The session id (hash)
|
||||||
* @param string $name Name of the session
|
* @param string $name Name of the session
|
||||||
* @param string $str The value to store
|
* @param string $str The value to store
|
||||||
* @return bool
|
|
||||||
*/
|
*/
|
||||||
public function ac_store($id, $name, $str) {
|
public function ac_store($id, $name, $str): bool {
|
||||||
switch ($this->encoding_mode) {
|
$str = match ($this->encoding_mode) {
|
||||||
case 'slashes':
|
'slashes' => addslashes($name . ':' . $str),
|
||||||
$str = addslashes($name . ':' . $str);
|
default => base64_encode($name . ':' . $str),
|
||||||
break;
|
};
|
||||||
case 'base64':
|
|
||||||
default:
|
|
||||||
$str = base64_encode($name . ':' . $str);
|
|
||||||
}
|
|
||||||
|
|
||||||
$name = addslashes($name);
|
$name = addslashes($name);
|
||||||
$now = date('YmdHis', time());
|
$now = date('YmdHis', time());
|
||||||
|
@ -195,7 +181,7 @@ class Contenido_CT_Sql extends CT_Sql {
|
||||||
"REPLACE INTO %s (sid, name, val, changed) VALUES ('%s', '%s', '%s', '%s')", $this->database_table, $id, $name, $str, $now
|
"REPLACE INTO %s (sid, name, val, changed) VALUES ('%s', '%s', '%s', '%s')", $this->database_table, $id, $name, $str, $now
|
||||||
);
|
);
|
||||||
|
|
||||||
return ($this->db->query($iquery)) ? true : false;
|
return (bool) $this->db->query($iquery);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -280,14 +266,12 @@ class Contenido_CT_Shm extends CT_Shm {
|
||||||
class Contenido_CT_Session extends CT_Session {
|
class Contenido_CT_Session extends CT_Session {
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
$this->ac_start(array(
|
$this->ac_start([
|
||||||
'namespace' => 'contenido_ct_session_ns',
|
'namespace' => 'contenido_ct_session_ns',
|
||||||
'session.hash_function' => '1', // use sha-1 function
|
'session.hash_function' => '1',
|
||||||
'session.hash_bits_per_character' => '5', // and set 5 character to achieve 32 chars
|
// use sha-1 function
|
||||||
# 'session.save_path' => 'your path',
|
'session.hash_bits_per_character' => '5',
|
||||||
# 'session.name' => 'your session name',
|
]);
|
||||||
# 'session.gc_maxlifetime' => 'your lifetime in seconds',
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -321,8 +305,8 @@ class Contenido_Session extends Session {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function delete() {
|
public function delete() {
|
||||||
$oCol = new InUseCollection();
|
$inUseCollection = new InUseCollection();
|
||||||
$oCol->removeSessionMarks($this->id);
|
$inUseCollection->removeSessionMarks($this->id);
|
||||||
parent::delete();
|
parent::delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,6 +420,8 @@ class Contenido_Challenge_Auth extends Auth {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function auth_validatelogin() {
|
public function auth_validatelogin() {
|
||||||
|
$pass = null;
|
||||||
|
$uid = null;
|
||||||
global $username, $password, $challenge, $response, $timestamp;
|
global $username, $password, $challenge, $response, $timestamp;
|
||||||
|
|
||||||
if ($password == '') {
|
if ($password == '') {
|
||||||
|
@ -523,7 +509,7 @@ class Contenido_Challenge_Crypt_Auth extends Auth {
|
||||||
public function auth_loglogin($uid) {
|
public function auth_loglogin($uid) {
|
||||||
global $cfg, $client, $lang, $auth, $sess, $saveLoginTime;
|
global $cfg, $client, $lang, $auth, $sess, $saveLoginTime;
|
||||||
|
|
||||||
$perm = new Contenido_Perm();
|
$contenidoPerm = new Contenido_Perm();
|
||||||
$timestamp = date('Y-m-d H:i:s');
|
$timestamp = date('Y-m-d H:i:s');
|
||||||
$idcatart = '0';
|
$idcatart = '0';
|
||||||
|
|
||||||
|
@ -540,7 +526,7 @@ class Contenido_Challenge_Crypt_Auth extends Auth {
|
||||||
$iTmpClient = $this->db->f('idclient');
|
$iTmpClient = $this->db->f('idclient');
|
||||||
$iTmpLang = $this->db->f('idlang');
|
$iTmpLang = $this->db->f('idlang');
|
||||||
|
|
||||||
if ($perm->have_perm_client_lang($iTmpClient, $iTmpLang)) {
|
if ($contenidoPerm->have_perm_client_lang($iTmpClient, $iTmpLang)) {
|
||||||
$client = $iTmpClient;
|
$client = $iTmpClient;
|
||||||
$lang = $iTmpLang;
|
$lang = $iTmpLang;
|
||||||
$bFound = true;
|
$bFound = true;
|
||||||
|
@ -565,7 +551,7 @@ class Contenido_Challenge_Crypt_Auth extends Auth {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$idaction = $perm->getIDForAction('login');
|
$idaction = $contenidoPerm->getIDForAction('login');
|
||||||
$lastentry = $this->db->nextid($cfg['tab']['actionlog']);
|
$lastentry = $this->db->nextid($cfg['tab']['actionlog']);
|
||||||
|
|
||||||
$sql = "INSERT INTO
|
$sql = "INSERT INTO
|
||||||
|
@ -585,9 +571,12 @@ class Contenido_Challenge_Crypt_Auth extends Auth {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function auth_validatelogin() {
|
public function auth_validatelogin() {
|
||||||
|
$uid = null;
|
||||||
|
$perm = null;
|
||||||
|
$pass = null;
|
||||||
global $username, $password, $challenge, $response, $formtimestamp, $auth_handlers;
|
global $username, $password, $challenge, $response, $formtimestamp, $auth_handlers;
|
||||||
|
|
||||||
$gperm = array();
|
$gperm = [];
|
||||||
|
|
||||||
if ($password == '') {
|
if ($password == '') {
|
||||||
return false;
|
return false;
|
||||||
|
@ -622,11 +611,9 @@ class Contenido_Challenge_Crypt_Auth extends Auth {
|
||||||
$pass = $this->db->f('password'); ## Password is stored as a md5 hash
|
$pass = $this->db->f('password'); ## Password is stored as a md5 hash
|
||||||
|
|
||||||
$bInMaintenance = false;
|
$bInMaintenance = false;
|
||||||
if ($sMaintenanceMode == 'enabled') {
|
#sysadmins are allowed to login every time
|
||||||
#sysadmins are allowed to login every time
|
if ($sMaintenanceMode == 'enabled' && !preg_match('/sysadmin/', $perm)) {
|
||||||
if (!preg_match('/sysadmin/', $perm)) {
|
$bInMaintenance = true;
|
||||||
$bInMaintenance = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($bInMaintenance) {
|
if ($bInMaintenance) {
|
||||||
|
@ -635,14 +622,11 @@ class Contenido_Challenge_Crypt_Auth extends Auth {
|
||||||
unset($pass);
|
unset($pass);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($auth_handlers) && !$bInMaintenance) {
|
if (is_array($auth_handlers) && !$bInMaintenance && array_key_exists($pass, $auth_handlers)) {
|
||||||
if (array_key_exists($pass, $auth_handlers)) {
|
$success = call_user_func($auth_handlers[$pass], $username, $password);
|
||||||
$success = call_user_func($auth_handlers[$pass], $username, $password);
|
if ($success) {
|
||||||
|
$uid = md5($username);
|
||||||
if ($success) {
|
$pass = md5($password);
|
||||||
$uid = md5($username);
|
|
||||||
$pass = md5($password);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -664,9 +648,7 @@ class Contenido_Challenge_Crypt_Auth extends Auth {
|
||||||
$gperm[] = $this->db->f('perms');
|
$gperm[] = $this->db->f('perms');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($gperm)) {
|
$perm = implode(',', $gperm);
|
||||||
$perm = implode(',', $gperm);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($response == '') { ## True when JS is disabled
|
if ($response == '') { ## True when JS is disabled
|
||||||
if (md5($password) != $pass) { ## md5 hash for non-JavaScript browsers
|
if (md5($password) != $pass) { ## md5 hash for non-JavaScript browsers
|
||||||
|
@ -718,8 +700,6 @@ class Contenido_Frontend_Challenge_Crypt_Auth extends Auth {
|
||||||
global $password;
|
global $password;
|
||||||
|
|
||||||
if ($password == '') {
|
if ($password == '') {
|
||||||
/* Stay as nobody when an empty password is passed */
|
|
||||||
$uid = $this->auth['uname'] = $this->auth['uid'] = 'nobody';
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -736,13 +716,18 @@ class Contenido_Frontend_Challenge_Crypt_Auth extends Auth {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function auth_validatelogin() {
|
public function auth_validatelogin() {
|
||||||
|
$perm = null;
|
||||||
|
$gperm = [];
|
||||||
|
$pass = null;
|
||||||
global $username, $password, $challenge, $response, $auth_handlers, $client;
|
global $username, $password, $challenge, $response, $auth_handlers, $client;
|
||||||
|
|
||||||
$client = (int) $client;
|
$client = (int) $client;
|
||||||
|
|
||||||
if (isset($username)) {
|
if (isset($username)) {
|
||||||
$this->auth['uname'] = $username; ## This provides access for 'loginform.ihtml'
|
$this->auth['uname'] = $username;
|
||||||
} else if ($this->nobody) { ## provides for 'default login cancel'
|
## This provides access for 'loginform.ihtml'
|
||||||
|
} elseif ($this->nobody) {
|
||||||
|
## provides for 'default login cancel'
|
||||||
$uid = $this->auth['uname'] = $this->auth['uid'] = 'nobody';
|
$uid = $this->auth['uname'] = $this->auth['uid'] = 'nobody';
|
||||||
return $uid;
|
return $uid;
|
||||||
}
|
}
|
||||||
|
@ -768,13 +753,11 @@ class Contenido_Frontend_Challenge_Crypt_Auth extends Auth {
|
||||||
$perm = $this->db->f('perms');
|
$perm = $this->db->f('perms');
|
||||||
$pass = $this->db->f('password'); ## Password is stored as a md5 hash
|
$pass = $this->db->f('password'); ## Password is stored as a md5 hash
|
||||||
|
|
||||||
if (is_array($auth_handlers)) {
|
if (is_array($auth_handlers) && array_key_exists($pass, $auth_handlers)) {
|
||||||
if (array_key_exists($pass, $auth_handlers)) {
|
$success = call_user_func($auth_handlers[$pass], $username, $password);
|
||||||
$success = call_user_func($auth_handlers[$pass], $username, $password);
|
if ($success) {
|
||||||
if ($success) {
|
$uid = md5($username);
|
||||||
$uid = md5($username);
|
$pass = md5($password);
|
||||||
$pass = md5($password);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -796,9 +779,7 @@ class Contenido_Frontend_Challenge_Crypt_Auth extends Auth {
|
||||||
$gperm[] = $this->db->f('perms');
|
$gperm[] = $this->db->f('perms');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($gperm)) {
|
$perm = implode(',', $gperm);
|
||||||
$perm = implode(',', $gperm);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -837,16 +818,16 @@ function register_auth_handler($aHandlers) {
|
||||||
global $auth_handlers;
|
global $auth_handlers;
|
||||||
|
|
||||||
if (!is_array($auth_handlers)) {
|
if (!is_array($auth_handlers)) {
|
||||||
$auth_handlers = array();
|
$auth_handlers = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_array($aHandlers)) {
|
if (!is_array($aHandlers)) {
|
||||||
$aHandlers = Array($aHandlers);
|
$aHandlers = [$aHandlers];
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($aHandlers as $sHandler) {
|
foreach ($aHandlers as $aHandler) {
|
||||||
if (!in_array($sHandler, $auth_handlers)) {
|
if (!in_array($aHandler, $auth_handlers)) {
|
||||||
$auth_handlers[md5($sHandler)] = $sHandler;
|
$auth_handlers[md5($aHandler)] = $aHandler;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,8 +35,8 @@ if (!defined('CON_FRAMEWORK')) {
|
||||||
die('Illegal call');
|
die('Illegal call');
|
||||||
}
|
}
|
||||||
|
|
||||||
$_PHPLIB = array();
|
$_PHPLIB = [];
|
||||||
$_PHPLIB['libdir'] = str_replace ('\\', '/', dirname(__FILE__) . '/');
|
$_PHPLIB['libdir'] = str_replace ('\\', '/', __DIR__ . '/');
|
||||||
|
|
||||||
global $cfg;
|
global $cfg;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ConLite\GenericDb\Driver;
|
||||||
|
|
||||||
|
class GenericDbDriver
|
||||||
|
{
|
||||||
|
public $_sEncoding;
|
||||||
|
public $_oItemClassInstance;
|
||||||
|
|
||||||
|
public function setEncoding($sEncoding)
|
||||||
|
{
|
||||||
|
$this->_sEncoding = $sEncoding;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setItemClassInstance($oInstance)
|
||||||
|
{
|
||||||
|
$this->_oItemClassInstance = $oInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buildJoinQuery($destinationTable, $destinationClass, $destinationPrimaryKey, $sourceClass, $primaryKey)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buildOperator($sField, $sOperator, $sRestriction)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,51 +1,32 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
namespace ConLite\GenericDb\Driver\MySql;
|
||||||
* Project:
|
|
||||||
* Contenido Content Management System
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* MySQL Driver for GenericDB
|
|
||||||
*
|
|
||||||
* Requirements:
|
|
||||||
* @con_php_req 5.0
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @package Contenido Backend classes
|
|
||||||
* @version 1.12
|
|
||||||
* @author Bjoern Behrens
|
|
||||||
* @copyright four for business AG <www.4fb.de>
|
|
||||||
* @license http://www.contenido.org/license/LIZENZ.txt
|
|
||||||
* @link http://www.4fb.de
|
|
||||||
* @link http://www.contenido.org
|
|
||||||
*
|
|
||||||
* {@internal
|
|
||||||
* created 2006-05-10
|
|
||||||
* modified 2008-05-23 Added Debug_DevNull and Debug_VisibleAdv
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
* }}
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
if (!defined('CON_FRAMEWORK')) {
|
|
||||||
die('Illegal call');
|
|
||||||
}
|
|
||||||
|
|
||||||
class gdbMySQL extends gdbDriver {
|
use cCharacterConverter;
|
||||||
|
use ConLite\GenericDb\Driver\GenericDbDriver;
|
||||||
|
use Contenido_Security;
|
||||||
|
|
||||||
function buildJoinQuery($destinationTable, $destinationClass, $destinationPrimaryKey, $sourceClass, $primaryKey) {
|
class GenericDbDriverMySql extends GenericDbDriver
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public $_oItemClassInstance;
|
||||||
|
public $_sEncoding;
|
||||||
|
function buildJoinQuery($destinationTable, $destinationClass, $destinationPrimaryKey, $sourceClass, $primaryKey)
|
||||||
|
{
|
||||||
// Build a regular LEFT JOIN
|
// Build a regular LEFT JOIN
|
||||||
$field = "$destinationClass.$destinationPrimaryKey";
|
$field = "$destinationClass.$destinationPrimaryKey";
|
||||||
$tables = "";
|
$tables = "";
|
||||||
$join = "LEFT JOIN $destinationTable AS $destinationClass ON " .
|
$join = "LEFT JOIN $destinationTable AS $destinationClass ON " .
|
||||||
Contenido_Security::toString($sourceClass . "." . $primaryKey) . " = " .
|
Contenido_Security::toString($sourceClass . "." . $primaryKey) . " = " .
|
||||||
Contenido_Security::toString($destinationClass . "." . $primaryKey);
|
Contenido_Security::toString($destinationClass . "." . $primaryKey);
|
||||||
$where = "";
|
$where = "";
|
||||||
|
|
||||||
return array("field" => $field, "table" => $tables, "join" => $join, "where" => $where);
|
return ["field" => $field, "table" => $tables, "join" => $join, "where" => $where];
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildOperator($sField, $sOperator, $sRestriction) {
|
function buildOperator($sField, $sOperator, $sRestriction)
|
||||||
|
{
|
||||||
$sOperator = strtolower($sOperator);
|
$sOperator = strtolower($sOperator);
|
||||||
|
|
||||||
$sWhereStatement = "";
|
$sWhereStatement = "";
|
||||||
|
@ -88,14 +69,14 @@ class gdbMySQL extends gdbDriver {
|
||||||
$GLOBALS["_cCharTable"] = new cCharacterConverter;
|
$GLOBALS["_cCharTable"] = new cCharacterConverter;
|
||||||
}
|
}
|
||||||
|
|
||||||
$aliasSearch = array();
|
$aliasSearch = [];
|
||||||
|
|
||||||
$metaCharacters = array("*", "[", "]", "^", '$', "\\", "*", "'", '"', '+');
|
$metaCharacters = ["*", "[", "]", "^", '$', "\\", "*", "'", '"', '+'];
|
||||||
|
|
||||||
for ($i = 0; $i < strlen($sRestriction); $i ++) {
|
for ($i = 0; $i < strlen($sRestriction); $i++) {
|
||||||
$char = substr($sRestriction, $i, 1);
|
$char = substr($sRestriction, $i, 1);
|
||||||
|
|
||||||
$aliases = array();
|
$aliases = [];
|
||||||
|
|
||||||
$aliases = array_merge($aliases, $GLOBALS["_cCharTable"]->fetchDiacriticCharactersForNormalizedChar($this->_sEncoding, $char));
|
$aliases = array_merge($aliases, $GLOBALS["_cCharTable"]->fetchDiacriticCharactersForNormalizedChar($this->_sEncoding, $char));
|
||||||
$normalizedChars = $GLOBALS["_cCharTable"]->fetchNormalizedCharsForDiacriticCharacter($this->_sEncoding, $char);
|
$normalizedChars = $GLOBALS["_cCharTable"]->fetchNormalizedCharsForDiacriticCharacter($this->_sEncoding, $char);
|
||||||
|
@ -106,9 +87,9 @@ class gdbMySQL extends gdbDriver {
|
||||||
|
|
||||||
$aliases = array_merge($aliases, $normalizedChars);
|
$aliases = array_merge($aliases, $normalizedChars);
|
||||||
|
|
||||||
if (count($aliases) > 0) {
|
if ($aliases !== []) {
|
||||||
$aliases[] = $char;
|
$aliases[] = $char;
|
||||||
$allAliases = array();
|
$allAliases = [];
|
||||||
|
|
||||||
foreach ($aliases as $alias) {
|
foreach ($aliases as $alias) {
|
||||||
$alias1 = $this->_oItemClassInstance->_inFilter($alias);
|
$alias1 = $this->_oItemClassInstance->_inFilter($alias);
|
||||||
|
@ -119,8 +100,7 @@ class gdbMySQL extends gdbDriver {
|
||||||
$allAliases = array_unique($allAliases);
|
$allAliases = array_unique($allAliases);
|
||||||
$aliasSearch[] = "(" . implode("|", $allAliases) . ")";
|
$aliasSearch[] = "(" . implode("|", $allAliases) . ")";
|
||||||
} else {
|
} else {
|
||||||
$addChars = array();
|
$addChars = [];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (in_array($char, $metaCharacters)) {
|
if (in_array($char, $metaCharacters)) {
|
||||||
|
@ -131,11 +111,7 @@ class gdbMySQL extends gdbDriver {
|
||||||
$vChar = $this->_oItemClassInstance->_inFilter($char);
|
$vChar = $this->_oItemClassInstance->_inFilter($char);
|
||||||
|
|
||||||
if ($char != $vChar) {
|
if ($char != $vChar) {
|
||||||
if (in_array($vChar, $metaCharacters)) {
|
$addChars[] = in_array($vChar, $metaCharacters) ? "\\\\" . $vChar : $vChar;
|
||||||
$addChars[] = "\\\\" . $vChar;
|
|
||||||
} else {
|
|
||||||
$addChars[] = $vChar;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +120,7 @@ class gdbMySQL extends gdbDriver {
|
||||||
}
|
}
|
||||||
|
|
||||||
$restriction = "'" . implode("", $aliasSearch) . "'";
|
$restriction = "'" . implode("", $aliasSearch) . "'";
|
||||||
$sWhereStatement = implode(" ", array($sField, "REGEXP", $restriction));
|
$sWhereStatement = implode(" ", [$sField, "REGEXP", $restriction]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "fulltext":
|
case "fulltext":
|
||||||
|
@ -152,9 +128,9 @@ class gdbMySQL extends gdbDriver {
|
||||||
break;
|
break;
|
||||||
case "in":
|
case "in":
|
||||||
if (is_array($sRestriction)) {
|
if (is_array($sRestriction)) {
|
||||||
$items = array();
|
$items = [];
|
||||||
|
|
||||||
foreach ($sRestriction as $key => $sRestrictionItem) {
|
foreach ($sRestriction as $sRestrictionItem) {
|
||||||
$items[] = "'" . $this->_oItemClassInstance->_inFilter($sRestrictionItem) . "'";
|
$items[] = "'" . $this->_oItemClassInstance->_inFilter($sRestrictionItem) . "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,14 +139,14 @@ class gdbMySQL extends gdbDriver {
|
||||||
$sRestriction = "'" . $sRestriction . "'";
|
$sRestriction = "'" . $sRestriction . "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
$sWhereStatement = implode(" ", array($sField, "IN (", $sRestriction, ")"));
|
$sWhereStatement = implode(" ", [$sField, "IN (", $sRestriction, ")"]);
|
||||||
break;
|
break;
|
||||||
case "notin":
|
case "notin":
|
||||||
if (is_array($sRestriction)) {
|
if (is_array($sRestriction)) {
|
||||||
$items = array();
|
$items = [];
|
||||||
|
|
||||||
foreach ($sRestriction as $key => $sRestrictionItem) {
|
foreach ($sRestriction as $Restriction) {
|
||||||
$items[] = "'" . $this->_oItemClassInstance->_inFilter($sRestrictionItem) . "'";
|
$items[] = "'" . $this->_oItemClassInstance->_inFilter($Restriction) . "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
$sRestriction = implode(", ", $items);
|
$sRestriction = implode(", ", $items);
|
||||||
|
@ -178,17 +154,15 @@ class gdbMySQL extends gdbDriver {
|
||||||
$sRestriction = "'" . $sRestriction . "'";
|
$sRestriction = "'" . $sRestriction . "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
$sWhereStatement = implode(" ", array($sField, "NOT IN (", $sRestriction, ")"));
|
$sWhereStatement = implode(" ", [$sField, "NOT IN (", $sRestriction, ")"]);
|
||||||
break;
|
break;
|
||||||
default :
|
default :
|
||||||
$sRestriction = "'" . $this->_oItemClassInstance->_inFilter($sRestriction) . "'";
|
$sRestriction = "'" . $this->_oItemClassInstance->_inFilter($sRestriction) . "'";
|
||||||
|
|
||||||
$sWhereStatement = implode(" ", array($sField, $sOperator, $sRestriction));
|
$sWhereStatement = implode(" ", [$sField, $sOperator, $sRestriction]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $sWhereStatement;
|
return $sWhereStatement;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
|
@ -0,0 +1,515 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ConLite\GenericDb;
|
||||||
|
|
||||||
|
use stdClass;
|
||||||
|
abstract class Item extends ItemBaseAbstract
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $_lastSQL;
|
||||||
|
/**
|
||||||
|
* Storage of the source table to use for the user informations
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public $values;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Storage of the fields which were modified, where the keys are the
|
||||||
|
* fieldnames and the values just simple booleans.
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $modifiedValues;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores the old primary key, just in case somebody wants to change it
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $oldPrimaryKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of funcion names of the filters used when data is stored to the db.
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $_arrInFilters = ['urlencode', 'clHtmlSpecialChars', 'addslashes'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of funcion names of the filtersused when data is retrieved from the db
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $_arrOutFilters = ['stripslashes', 'htmldecode', 'urldecode'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class name of meta object
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $_metaObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor function
|
||||||
|
*
|
||||||
|
* @param string $sTable The table to use as information source
|
||||||
|
* @param string $sPrimaryKey The primary key to use
|
||||||
|
* @param int $iLifetime
|
||||||
|
*/
|
||||||
|
public function __construct($sTable = '', $sPrimaryKey = '', $iLifetime = 10)
|
||||||
|
{
|
||||||
|
parent::__construct($sTable, $sPrimaryKey, get_parent_class($this), $iLifetime);
|
||||||
|
}
|
||||||
|
|
||||||
|
function __destruct()
|
||||||
|
{
|
||||||
|
//print_r(self::$_oCache);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads an item by colum/field from the database.
|
||||||
|
*
|
||||||
|
* @param string $sField Specifies the field
|
||||||
|
* @param mixed $mValue Specifies the value
|
||||||
|
* @param bool $bSafe Use inFilter or not
|
||||||
|
* @return bool True if the load was successful
|
||||||
|
*/
|
||||||
|
public function loadBy($sField, mixed $mValue, $bSafe = true): bool
|
||||||
|
{
|
||||||
|
if ($bSafe) {
|
||||||
|
$mValue = $this->_inFilter($mValue);
|
||||||
|
}
|
||||||
|
if ($sField === $this->primaryKey) {
|
||||||
|
$aRecordSet = self::$_oCache->getItem($this->table . "_" . $mValue);
|
||||||
|
} else {
|
||||||
|
$aRecordSet = self::$_oCache->getItemByProperty($this->table . "_" . $sField, $mValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($aRecordSet) {
|
||||||
|
// entry in cache found, load entry from cache
|
||||||
|
$this->loadByRecordSet($aRecordSet);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// SQL-Statement to select by field
|
||||||
|
$sql = sprintf("SELECT * FROM `%s` WHERE %s = '%s'", $this->table, $sField, $mValue);
|
||||||
|
//$sql = $this->db->prepare($sql, $this->table, $sField, $mValue);
|
||||||
|
// Query the database
|
||||||
|
$this->db->query($sql);
|
||||||
|
|
||||||
|
$this->_lastSQL = $sql;
|
||||||
|
|
||||||
|
if ($this->db->num_rows() > 1) {
|
||||||
|
$sMsg = "Tried to load a single line with field $sField and value $mValue from "
|
||||||
|
. $this->table . " but found more than one row";
|
||||||
|
cWarning(__FILE__, __LINE__, $sMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Advance to the next record, return false if nothing found
|
||||||
|
if (!$this->db->next_record()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->loadByRecordSet($this->db->toArray());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads an item by passed where clause from the database.
|
||||||
|
* This function is expensive, since it executes allways a query to the database
|
||||||
|
* to retrieve the primary key, even if the record set is aleady cached.
|
||||||
|
* NOTE: Passed value has to be escaped before. This will not be done by this function.
|
||||||
|
*
|
||||||
|
* @param string $sWhere The where clause like 'idart = 123 AND idlang = 1'
|
||||||
|
* @return bool True if the load was successful
|
||||||
|
*/
|
||||||
|
protected function _loadByWhereClause($sWhere)
|
||||||
|
{
|
||||||
|
// SQL-Statement to select by whee clause
|
||||||
|
$sql = sprintf("SELECT %s AS pk FROM `%s` WHERE ", $this->primaryKey, $this->table) . $sWhere;
|
||||||
|
//$sql = $this->db->prepare($sql, $this->primaryKey, $this->table);
|
||||||
|
// Query the database
|
||||||
|
$this->db->query($sql);
|
||||||
|
|
||||||
|
$this->_lastSQL = $sql;
|
||||||
|
|
||||||
|
if ($this->db->num_rows() > 1) {
|
||||||
|
$sMsg = "Tried to load a single line with where clause '" . $sWhere . "' from "
|
||||||
|
. $this->table . " but found more than one row";
|
||||||
|
cWarning(__FILE__, __LINE__, $sMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Advance to the next record, return false if nothing found
|
||||||
|
if (!$this->db->next_record()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$id = $this->db->f('pk');
|
||||||
|
return $this->loadByPrimaryKey($id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads an item by ID from the database.
|
||||||
|
*
|
||||||
|
* @param string $mValue Specifies the primary key value
|
||||||
|
* @return bool True if the load was successful
|
||||||
|
*/
|
||||||
|
public function loadByPrimaryKey($mValue)
|
||||||
|
{
|
||||||
|
$bSuccess = $this->loadBy($this->primaryKey, $mValue);
|
||||||
|
|
||||||
|
if (($bSuccess == true) && method_exists($this, '_onLoad')) {
|
||||||
|
$this->_onLoad();
|
||||||
|
}
|
||||||
|
return $bSuccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads an item by it's recordset.
|
||||||
|
*
|
||||||
|
* @param array $aRecordSet The recordset of the item
|
||||||
|
*/
|
||||||
|
public function loadByRecordSet(array $aRecordSet)
|
||||||
|
{
|
||||||
|
$this->values = $aRecordSet;
|
||||||
|
$this->oldPrimaryKey = $this->values[$this->primaryKey];
|
||||||
|
$this->virgin = false;
|
||||||
|
self::$_oCache->addItem($this->table . "_" . $this->oldPrimaryKey, $this->values);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if a the item is already loaded.
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function isLoaded()
|
||||||
|
{
|
||||||
|
return !$this->virgin;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function which is called whenever an item is loaded.
|
||||||
|
* Inherited classes should override this function if desired.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function _onLoad()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of a specific field.
|
||||||
|
*
|
||||||
|
* @param string $sField Specifies the field to retrieve
|
||||||
|
* @return mixed Value of the field
|
||||||
|
*/
|
||||||
|
public function getField($sField)
|
||||||
|
{
|
||||||
|
if ($this->virgin == true) {
|
||||||
|
$this->lasterror = 'No item loaded';
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return $this->_outFilter($this->values[$sField]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper for getField (less to type).
|
||||||
|
*
|
||||||
|
* @param string $sField Specifies the field to retrieve
|
||||||
|
* @return mixed Value of the field
|
||||||
|
*/
|
||||||
|
public function get($sField)
|
||||||
|
{
|
||||||
|
return $this->getField($sField);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the value of a specific field.
|
||||||
|
*
|
||||||
|
* @param string $sField Field name
|
||||||
|
* @param string $mValue Value to set
|
||||||
|
* @param bool $bSafe Flag to run defined inFilter on passed value
|
||||||
|
*/
|
||||||
|
public function setField($sField, $mValue, $bSafe = true): bool
|
||||||
|
{
|
||||||
|
if ($this->virgin == true) {
|
||||||
|
$this->lasterror = 'No item loaded';
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->modifiedValues[$sField] = true;
|
||||||
|
|
||||||
|
if ($sField == $this->primaryKey) {
|
||||||
|
$this->oldPrimaryKey = $this->values[$sField];
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->values[$sField] = $bSafe == true ? $this->_inFilter($mValue) : $mValue;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut to setField.
|
||||||
|
*
|
||||||
|
* @param string $sField Field name
|
||||||
|
* @param string $mValue Value to set
|
||||||
|
* @param bool $bSafe Flag to run defined inFilter on passed value
|
||||||
|
*/
|
||||||
|
public function set($sField, $mValue, $bSafe = true)
|
||||||
|
{
|
||||||
|
return $this->setField($sField, $mValue, $bSafe);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores the loaded and modified item to the database.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function store()
|
||||||
|
{
|
||||||
|
if (!$this->isLoaded()) {
|
||||||
|
$this->lasterror = 'No item loaded';
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = 'UPDATE `' . $this->table . '` SET ';
|
||||||
|
$first = true;
|
||||||
|
|
||||||
|
if (!is_array($this->modifiedValues)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (array_keys($this->modifiedValues) as $key) {
|
||||||
|
if ($first == true) {
|
||||||
|
$sql .= "`$key` = '" . $this->values[$key] . "'";
|
||||||
|
$first = false;
|
||||||
|
} else {
|
||||||
|
$sql .= ", `$key` = '" . $this->values[$key] . "'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql .= " WHERE " . $this->primaryKey . " = '" . $this->oldPrimaryKey . "'";
|
||||||
|
|
||||||
|
$this->db->query($sql);
|
||||||
|
|
||||||
|
$this->_lastSQL = $sql;
|
||||||
|
|
||||||
|
if ($this->db->affected_rows() > 0) {
|
||||||
|
self::$_oCache->addItem($this->table . "_" . $this->oldPrimaryKey, $this->values);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->db->affected_rows() >= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns current item data as an assoziative array.
|
||||||
|
*/
|
||||||
|
public function toArray(): array|false
|
||||||
|
{
|
||||||
|
if ($this->virgin == true) {
|
||||||
|
$this->lasterror = 'No item loaded';
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$aReturn = [];
|
||||||
|
foreach (array_keys($this->values) as $field) {
|
||||||
|
$aReturn[$field] = $this->getField($field);
|
||||||
|
}
|
||||||
|
return $aReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns current item data as an object.
|
||||||
|
*/
|
||||||
|
public function toObject(): stdClass|false
|
||||||
|
{
|
||||||
|
$return = $this->toArray();
|
||||||
|
return (false !== $return) ? (object)$return : $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a custom property.
|
||||||
|
*
|
||||||
|
* @param string $sType Specifies the type
|
||||||
|
* @param string $sName Specifies the name
|
||||||
|
* @param mixed $mValue Specifies the value
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function setProperty($sType, $sName, mixed $mValue)
|
||||||
|
{
|
||||||
|
// If this object wasn't loaded before, return false
|
||||||
|
if ($this->virgin == true) {
|
||||||
|
$this->lasterror = 'No item loaded';
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the value
|
||||||
|
$oProperties = $this->_getPropertiesCollectionInstance();
|
||||||
|
return $oProperties->setValue(
|
||||||
|
$this->primaryKey, $this->get($this->primaryKey), $sType, $sName, $mValue
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a custom property.
|
||||||
|
*
|
||||||
|
* @param string $sType Specifies the type
|
||||||
|
* @param string $sName Specifies the name
|
||||||
|
* @return mixed Value of the given property or false
|
||||||
|
*/
|
||||||
|
public function getProperty($sType, $sName)
|
||||||
|
{
|
||||||
|
// If this object wasn't loaded before, return false
|
||||||
|
if ($this->virgin == true) {
|
||||||
|
$this->lasterror = 'No item loaded';
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the value
|
||||||
|
$oProperties = $this->_getPropertiesCollectionInstance();
|
||||||
|
return $oProperties->getValue(
|
||||||
|
$this->primaryKey, $this->get($this->primaryKey), $sType, $sName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes a custom property.
|
||||||
|
*
|
||||||
|
* @param string $sType Specifies the type
|
||||||
|
* @param string $sName Specifies the name
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function deleteProperty($sType, $sName)
|
||||||
|
{
|
||||||
|
// If this object wasn't loaded before, return false
|
||||||
|
if ($this->virgin == true) {
|
||||||
|
$this->lasterror = 'No item loaded';
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete the value
|
||||||
|
$oProperties = $this->_getPropertiesCollectionInstance();
|
||||||
|
return $oProperties->deleteValue(
|
||||||
|
$this->primaryKey, $this->get($this->primaryKey), $sType, $sName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes a custom property by its id.
|
||||||
|
*
|
||||||
|
* @param int $idprop Id of property
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function deletePropertyById($idprop)
|
||||||
|
{
|
||||||
|
$oProperties = $this->_getPropertiesCollectionInstance();
|
||||||
|
return $oProperties->delete($idprop);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the current item
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
// Method doesn't work, remove in future versions
|
||||||
|
// function delete()
|
||||||
|
// {
|
||||||
|
// $this->_collectionInstance->delete($item->get($this->primaryKey));
|
||||||
|
//}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the filter functions used when data is being stored or retrieved
|
||||||
|
* from the database.
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* <pre>
|
||||||
|
* $obj->setFilters(array('addslashes'), array('stripslashes'));
|
||||||
|
* $obj->setFilters(array('htmlencode', 'addslashes'), array('stripslashes', 'htmlencode'));
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param array $aInFilters Array with function names
|
||||||
|
* @param array $aOutFilters Array with function names
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setFilters($aInFilters = [], $aOutFilters = [])
|
||||||
|
{
|
||||||
|
$this->_arrInFilters = $aInFilters;
|
||||||
|
$this->_arrOutFilters = $aOutFilters;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filters the passed data using the functions defines in the _arrInFilters array.
|
||||||
|
*
|
||||||
|
* @param mixed $mData Data to filter
|
||||||
|
* @return mixed Filtered data
|
||||||
|
* @see setFilters
|
||||||
|
*
|
||||||
|
* @todo This method is used from public scope, but it should be protected
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function _inFilter(mixed $mData)
|
||||||
|
{
|
||||||
|
if (is_numeric($mData) || is_array($mData)) {
|
||||||
|
return $mData;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_null($mData)) {
|
||||||
|
$mData = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($this->_arrInFilters as $_arrInFilter) {
|
||||||
|
if (function_exists($_arrInFilter)) {
|
||||||
|
$mData = $_arrInFilter($mData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $mData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filters the passed data using the functions defines in the _arrOutFilters array.
|
||||||
|
*
|
||||||
|
* @param mixed $mData Data to filter
|
||||||
|
* @return mixed Filtered data
|
||||||
|
* @see setFilters
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
protected function _outFilter(mixed $mData)
|
||||||
|
{
|
||||||
|
if (is_numeric($mData))
|
||||||
|
return $mData;
|
||||||
|
|
||||||
|
foreach ($this->_arrOutFilters as $_arrOutFilter) {
|
||||||
|
if (function_exists($_arrOutFilter)) {
|
||||||
|
$mData = $_arrOutFilter($mData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $mData;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function _setMetaObject($sObjectName)
|
||||||
|
{
|
||||||
|
$this->_metaObject = $sObjectName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMetaObject()
|
||||||
|
{
|
||||||
|
global $_metaObjectCache;
|
||||||
|
|
||||||
|
if (!is_array($_metaObjectCache)) {
|
||||||
|
$_metaObjectCache = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$sClassName = $this->_metaObject;
|
||||||
|
$qclassname = strtolower($sClassName);
|
||||||
|
|
||||||
|
if (array_key_exists($qclassname, $_metaObjectCache) && is_object($_metaObjectCache[$qclassname])) {
|
||||||
|
if (strtolower($_metaObjectCache[$qclassname]::class) === $qclassname) {
|
||||||
|
$_metaObjectCache[$qclassname]->setPayloadObject($this);
|
||||||
|
return $_metaObjectCache[$qclassname];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (class_exists($sClassName)) {
|
||||||
|
$_metaObjectCache[$qclassname] = new $sClassName($this);
|
||||||
|
return $_metaObjectCache[$qclassname];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,12 +1,16 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
*
|
namespace ConLite\GenericDb;
|
||||||
*/
|
|
||||||
|
|
||||||
// security check
|
// security check
|
||||||
defined('CON_FRAMEWORK') or die('Illegal call');
|
defined('CON_FRAMEWORK') or die('Illegal call');
|
||||||
|
|
||||||
abstract class cItemBaseAbstract {
|
use DB_ConLite;
|
||||||
|
use PropertyCollection;
|
||||||
|
|
||||||
|
abstract class ItemBaseAbstract
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Database instance, contains the database object
|
* Database instance, contains the database object
|
||||||
|
@ -29,9 +33,9 @@ abstract class cItemBaseAbstract {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Item cache instance
|
* Item cache instance
|
||||||
* @var Contenido_ItemCache
|
* @var ItemCache
|
||||||
*/
|
*/
|
||||||
protected static $_oCache;
|
protected static ItemCache $_oCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GenericDB settings, see $cfg['sql']
|
* GenericDB settings, see $cfg['sql']
|
||||||
|
@ -85,17 +89,17 @@ abstract class cItemBaseAbstract {
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $_className;
|
protected $_className;
|
||||||
|
|
||||||
protected $_bDebug;
|
protected $_bDebug;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets some common properties
|
* Sets some common properties
|
||||||
*
|
*
|
||||||
* @param string $sTable Name of table
|
* @param string $sTable Name of table
|
||||||
* @param string $sPrimaryKey Primary key of table
|
* @param string $sPrimaryKey Primary key of table
|
||||||
* @param string $sClassName Name of parent class
|
* @param string $sClassName Name of parent class
|
||||||
* @param int $iLifetime Lifetime of the object in seconds (NOT USED!)
|
* @param int $iLifetime Lifetime of the object in seconds (NOT USED!)
|
||||||
* @throws Contenido_ItemException If table name or primary key is not set
|
* @throws ItemException
|
||||||
*/
|
*/
|
||||||
protected function __construct($sTable, $sPrimaryKey, $sClassName, $iLifetime = 10) {
|
protected function __construct($sTable, $sPrimaryKey, $sClassName, $iLifetime = 10) {
|
||||||
global $cfg;
|
global $cfg;
|
||||||
|
@ -104,17 +108,17 @@ abstract class cItemBaseAbstract {
|
||||||
|
|
||||||
if ($sTable == '') {
|
if ($sTable == '') {
|
||||||
$sMsg = "$sClassName: No table specified. Inherited classes *need* to set a table";
|
$sMsg = "$sClassName: No table specified. Inherited classes *need* to set a table";
|
||||||
throw new Contenido_ItemException($sMsg);
|
throw new ItemException($sMsg);
|
||||||
} elseif ($sPrimaryKey == '') {
|
} elseif ($sPrimaryKey == '') {
|
||||||
$sMsg = "No primary key specified. Inherited classes *need* to set a primary key";
|
$sMsg = "No primary key specified. Inherited classes *need* to set a primary key";
|
||||||
throw new Contenido_ItemException($sMsg);
|
throw new ItemException($sMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_settings = $cfg['sql'];
|
$this->_settings = $cfg['sql'];
|
||||||
|
|
||||||
// instanciate caching
|
// instanciate caching
|
||||||
$aCacheOpt = (isset($this->_settings['cache'])) ? $this->_settings['cache'] : array();
|
$aCacheOpt = (isset($this->_settings['cache'])) ? $this->_settings['cache'] : array();
|
||||||
self::$_oCache = cItemCache::getInstance($sTable, $aCacheOpt);
|
self::$_oCache = ItemCache::getInstance($sTable, $aCacheOpt);
|
||||||
|
|
||||||
$this->table = $sTable;
|
$this->table = $sTable;
|
||||||
$this->primaryKey = $sPrimaryKey;
|
$this->primaryKey = $sPrimaryKey;
|
||||||
|
@ -159,6 +163,4 @@ abstract class cItemBaseAbstract {
|
||||||
return $this->properties;
|
return $this->properties;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
|
@ -1,30 +1,25 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
namespace ConLite\GenericDb;
|
||||||
*
|
|
||||||
*/
|
|
||||||
// security check
|
// security check
|
||||||
defined('CON_FRAMEWORK') or die('Illegal call');
|
defined('CON_FRAMEWORK') or die('Illegal call');
|
||||||
|
|
||||||
class cItemCache {
|
class ItemCache
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of self instances (Contenido_ItemCache)
|
* List of self instances (Contenido_ItemCache)
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected static $_oInstances = array();
|
protected static $_oInstances = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assoziative cache array
|
* Assoziative cache array
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $_aItemsCache = array();
|
protected $_aItemsCache = [];
|
||||||
|
|
||||||
/**
|
|
||||||
* Table name for current instance
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $_sTable = '';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Max number of items to cache
|
* Max number of items to cache
|
||||||
|
@ -41,18 +36,17 @@ class cItemCache {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contructor of Contenido_ItemCache
|
* Contructor of Contenido_ItemCache
|
||||||
* @param string $sTable Table name
|
* @param string $_sTable Table name
|
||||||
* @param array $aOptions Options array as follows:
|
* @param array $aOptions Options array as follows:
|
||||||
* - $aOptions['max_items_to_cache'] = (int) Number of items to cache
|
* - $aOptions['max_items_to_cache'] = (int) Number of items to cache
|
||||||
* - $aOptions['enable'] = (bool) Flag to enable caching
|
* - $aOptions['enable'] = (bool) Flag to enable caching
|
||||||
*/
|
*/
|
||||||
protected function __construct($sTable, array $aOptions = array()) {
|
protected function __construct(protected $_sTable, array $aOptions = []) {
|
||||||
$this->_sTable = $sTable;
|
|
||||||
if (isset($aOptions['max_items_to_cache']) && (int) $aOptions['max_items_to_cache'] > 0) {
|
if (isset($aOptions['max_items_to_cache']) && (int) $aOptions['max_items_to_cache'] > 0) {
|
||||||
$this->_iMaxItemsToCache = (int) $aOptions['max_items_to_cache'];
|
$this->_iMaxItemsToCache = (int) $aOptions['max_items_to_cache'];
|
||||||
}
|
}
|
||||||
if (isset($aOptions['enable']) && is_bool($aOptions['enable'])) {
|
if (isset($aOptions['enable']) && is_bool($aOptions['enable'])) {
|
||||||
$this->_bEnable = (bool) $aOptions['enable'];
|
$this->_bEnable = $aOptions['enable'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($_GET['frame']) && is_numeric($_GET['frame'])) {
|
if (isset($_GET['frame']) && is_numeric($_GET['frame'])) {
|
||||||
|
@ -62,13 +56,6 @@ class cItemCache {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Prevent cloning
|
|
||||||
*/
|
|
||||||
protected function __clone() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns item cache instance, creates it, if not done before.
|
* Returns item cache instance, creates it, if not done before.
|
||||||
* Works as a singleton for one specific table.
|
* Works as a singleton for one specific table.
|
||||||
|
@ -78,7 +65,7 @@ class cItemCache {
|
||||||
* - $aOptions['max_items_to_cache'] = (int) Number of items to cache
|
* - $aOptions['max_items_to_cache'] = (int) Number of items to cache
|
||||||
* - $aOptions['enable'] = (bool) Flag to enable caching
|
* - $aOptions['enable'] = (bool) Flag to enable caching
|
||||||
*/
|
*/
|
||||||
public static function getInstance($sTable, array $aOptions = array()) {
|
public static function getInstance($sTable, array $aOptions = []) {
|
||||||
if (!isset(self::$_oInstances[$sTable])) {
|
if (!isset(self::$_oInstances[$sTable])) {
|
||||||
self::$_oInstances[$sTable] = new self($sTable, $aOptions);
|
self::$_oInstances[$sTable] = new self($sTable, $aOptions);
|
||||||
}
|
}
|
||||||
|
@ -96,11 +83,8 @@ class cItemCache {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns existing entry from cache by it's id.
|
* Returns existing entry from cache by it's id.
|
||||||
*
|
|
||||||
* @param mixed $mId
|
|
||||||
* @return array|null
|
|
||||||
*/
|
*/
|
||||||
public function getItem($mId) {
|
public function getItem(mixed $mId): ?array {
|
||||||
if (!$this->_bEnable) {
|
if (!$this->_bEnable) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -114,19 +98,15 @@ class cItemCache {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns existing entry from cache by matching propery value.
|
* Returns existing entry from cache by matching propery value.
|
||||||
*
|
|
||||||
* @param mixed $mProperty
|
|
||||||
* @param mixed $mValue
|
|
||||||
* @return array|null
|
|
||||||
*/
|
*/
|
||||||
public function getItemByProperty($mProperty, $mValue) {
|
public function getItemByProperty(mixed $mProperty, mixed $mValue): ?array {
|
||||||
if (!$this->_bEnable) {
|
if (!$this->_bEnable) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// loop thru all cached entries and try to find a entry by it's property
|
// loop thru all cached entries and try to find a entry by it's property
|
||||||
if (is_array($this->_aItemsCache[$this->_iFrame]) && count($this->_aItemsCache[$this->_iFrame]) > 0) {
|
if (is_array($this->_aItemsCache[$this->_iFrame]) && $this->_aItemsCache[$this->_iFrame] !== []) {
|
||||||
foreach ($this->_aItemsCache[$this->_iFrame] as $id => $aEntry) {
|
foreach ($this->_aItemsCache[$this->_iFrame] as $aEntry) {
|
||||||
if (isset($aEntry[$mProperty]) && $aEntry[$mProperty] == $mValue) {
|
if (isset($aEntry[$mProperty]) && $aEntry[$mProperty] == $mValue) {
|
||||||
return $aEntry;
|
return $aEntry;
|
||||||
}
|
}
|
||||||
|
@ -139,28 +119,23 @@ class cItemCache {
|
||||||
* Returns existing entry from cache by matching properties and their values.
|
* Returns existing entry from cache by matching properties and their values.
|
||||||
*
|
*
|
||||||
* @param array $aProperties Assoziative key value pairs
|
* @param array $aProperties Assoziative key value pairs
|
||||||
* @return array|null
|
|
||||||
*/
|
*/
|
||||||
public function getItemByProperties(array $aProperties) {
|
public function getItemByProperties(array $aProperties): ?array {
|
||||||
if (!$this->_bEnable) {
|
if (!$this->_bEnable) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// loop thru all cached entries and try to find a entry by it's property
|
// loop thru all cached entries and try to find a entry by it's property
|
||||||
foreach ($this->_aItemsCache as $id => $aEntry) {
|
foreach ($this->_aItemsCache as $_aItemCache) {
|
||||||
$mFound = null;
|
$mFound = null;
|
||||||
foreach ($aProperties as $key => $value) {
|
foreach ($aProperties as $key => $value) {
|
||||||
if (isset($aEntry[$key]) && $aEntry[$key] == $value) {
|
if (isset($_aItemCache[$key]) && $_aItemCache[$key] == $value) {
|
||||||
if (null === $mFound) {
|
$mFound = true;
|
||||||
$mFound = true;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
$mFound = false;
|
$mFound = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (true === $mFound) {
|
return $_aItemCache;
|
||||||
return $aEntry;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -169,11 +144,10 @@ class cItemCache {
|
||||||
/**
|
/**
|
||||||
* Adds passed item data to internal cache
|
* Adds passed item data to internal cache
|
||||||
*
|
*
|
||||||
* @param mixed $mId
|
|
||||||
* @param array $aData Usually the recordset
|
* @param array $aData Usually the recordset
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function addItem($mId, array $aData) {
|
public function addItem(mixed $mId, array $aData) {
|
||||||
if (!$this->_bEnable) {
|
if (!$this->_bEnable) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -181,7 +155,7 @@ class cItemCache {
|
||||||
if (isset($this->_aItemsCache[$this->_iFrame])) {
|
if (isset($this->_aItemsCache[$this->_iFrame])) {
|
||||||
$aTmpItemsArray = $this->_aItemsCache[$this->_iFrame];
|
$aTmpItemsArray = $this->_aItemsCache[$this->_iFrame];
|
||||||
|
|
||||||
if ($this->_iMaxItemsToCache == count($aTmpItemsArray)) {
|
if ($this->_iMaxItemsToCache == (is_countable($aTmpItemsArray) ? count($aTmpItemsArray) : 0)) {
|
||||||
// we have reached the maximum number of cached items, remove first entry
|
// we have reached the maximum number of cached items, remove first entry
|
||||||
$firstEntryKey = array_shift($aTmpItemsArray);
|
$firstEntryKey = array_shift($aTmpItemsArray);
|
||||||
if (is_array($firstEntryKey))
|
if (is_array($firstEntryKey))
|
||||||
|
@ -197,10 +171,9 @@ class cItemCache {
|
||||||
/**
|
/**
|
||||||
* Removes existing cache entry by it's key
|
* Removes existing cache entry by it's key
|
||||||
*
|
*
|
||||||
* @param mixed $mId
|
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function removeItem($mId) {
|
public function removeItem(mixed $mId) {
|
||||||
if (!$this->_bEnable) {
|
if (!$this->_bEnable) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -211,4 +184,4 @@ class cItemCache {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ConLite\GenericDb;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
|
||||||
|
class ItemException extends Exception {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ConLite\Html;
|
||||||
|
|
||||||
|
class Html extends HtmlCommon
|
||||||
|
{
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ConLite\Html;
|
||||||
|
|
||||||
|
abstract class HtmlCommon implements \ArrayAccess
|
||||||
|
{
|
||||||
|
|
||||||
|
protected string|array|null $attributes = null;
|
||||||
|
|
||||||
|
public function __construct(array|string|null $attributes = null)
|
||||||
|
{
|
||||||
|
$this->attributes = $attributes;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
|
public function offsetExists(mixed $offset): bool
|
||||||
|
{
|
||||||
|
return isset($this->attributes[strtolower($offset)]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
|
public function offsetGet(mixed $offset)
|
||||||
|
{
|
||||||
|
return $this->getAttribute($offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
|
public function offsetSet($offset, $value): void
|
||||||
|
{
|
||||||
|
if (null !== $offset) {
|
||||||
|
$this->setAttribute($offset, $value);
|
||||||
|
} else {
|
||||||
|
$this->setAttribute($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
|
public function offsetUnset($offset): void
|
||||||
|
{
|
||||||
|
$this->removeAttribute($offset);
|
||||||
|
}
|
||||||
|
}
|
|
@ -382,7 +382,8 @@ class DBFSItem extends Item {
|
||||||
parent::store();
|
parent::store();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setField($field, $value, $safe = true) {
|
public function setField($field, $value, $safe = true): bool
|
||||||
|
{
|
||||||
if ($field == "dirname" || $field == "filename" || $field == "mimetype") {
|
if ($field == "dirname" || $field == "filename" || $field == "mimetype") {
|
||||||
// Don't do safe encoding
|
// Don't do safe encoding
|
||||||
$safe = false;
|
$safe = false;
|
||||||
|
@ -391,7 +392,7 @@ class DBFSItem extends Item {
|
||||||
$value = str_replace('"', "", $value);
|
$value = str_replace('"', "", $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
parent::setField($field, $value, $safe);
|
return parent::setField($field, $value, $safe);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -157,12 +157,12 @@ class FrontendUser extends Item
|
||||||
* @param string $field Specifies the field to set
|
* @param string $field Specifies the field to set
|
||||||
* @param string $value Specifies the value to set
|
* @param string $value Specifies the value to set
|
||||||
*/
|
*/
|
||||||
public function setField($field, $value, $safe = true)
|
public function setField($field, $value, $safe = true): bool
|
||||||
{
|
{
|
||||||
if ($field == "password") {
|
if ($field == "password") {
|
||||||
parent::setField($field, md5($value), $safe);
|
return parent::setField($field, md5($value), $safe);
|
||||||
} else {
|
} else {
|
||||||
parent::setField($field, $value, $safe);
|
return parent::setField($field, $value, $safe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
|
@ -447,7 +447,7 @@ class PropertyItem extends Item
|
||||||
* @param string $value
|
* @param string $value
|
||||||
* @param bool $safe Flag to run filter on passed value
|
* @param bool $safe Flag to run filter on passed value
|
||||||
*/
|
*/
|
||||||
public function setField($field, $value, $safe = true)
|
public function setField($field, $value, $safe = true): bool
|
||||||
{
|
{
|
||||||
if (array_key_exists($field, $this->maximumLength)) {
|
if (array_key_exists($field, $this->maximumLength)) {
|
||||||
if (strlen($value) > $this->maximumLength[$field]) {
|
if (strlen($value) > $this->maximumLength[$field]) {
|
||||||
|
@ -455,7 +455,7 @@ class PropertyItem extends Item
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
parent::setField($field, $value, $safe);
|
return parent::setField($field, $value, $safe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Project:
|
|
||||||
* Contenido Content Management System
|
|
||||||
*
|
|
||||||
* @package Contenido Backend classes
|
|
||||||
* @version 1.3
|
|
||||||
* @author Timo Hummel
|
|
||||||
* @copyright four for business AG <www.4fb.de>
|
|
||||||
* @license http://www.contenido.org/license/LIZENZ.txt
|
|
||||||
* @link http://www.4fb.de
|
|
||||||
* @link http://www.contenido.org
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
if (!defined('CON_FRAMEWORK')) {
|
|
||||||
die('Illegal call');
|
|
||||||
}
|
|
||||||
|
|
||||||
class gdbDriver {
|
|
||||||
|
|
||||||
var $_sEncoding;
|
|
||||||
var $_oItemClassInstance;
|
|
||||||
|
|
||||||
public function __construct() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setEncoding($sEncoding) {
|
|
||||||
$this->_sEncoding = $sEncoding;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setItemClassInstance($oInstance) {
|
|
||||||
$this->_oItemClassInstance = $oInstance;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function buildJoinQuery($destinationTable, $destinationClass, $destinationPrimaryKey, $sourceClass, $primaryKey) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public function buildOperator($sField, $sOperator, $sRestriction) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -1,8 +0,0 @@
|
||||||
This directory contains driver classes for use with Contenido's GenericDB. These
|
|
||||||
drivers are responsible for building joins and handling database metadata, but
|
|
||||||
NOT for sending queries and returning results.
|
|
||||||
|
|
||||||
Dieses Verzeichnis enthält Treiberklassen für die Verwendung mit der Contenido
|
|
||||||
GenericDB. Diese Treiber sind ausschließlich dafür da, um Joins aufzubauen und
|
|
||||||
um die Metadaten zu verwalten. Sie sind NICHT für das Senden von Queries oder
|
|
||||||
das zurückgeben von Query-Ergebnissen zuständig.
|
|
|
@ -142,7 +142,7 @@ require_once($cfg['path']['conlite'] . $cfg['path']['includes'] . '/api/function
|
||||||
include_once($cfg['path']['conlite'] . $cfg['path']['classes'] . 'class.autoload.php');
|
include_once($cfg['path']['conlite'] . $cfg['path']['classes'] . 'class.autoload.php');
|
||||||
cAutoload::initialize($cfg);
|
cAutoload::initialize($cfg);
|
||||||
// init composer autoload
|
// init composer autoload
|
||||||
include_once($cfg['path']['conlite'] . 'vendor/autoload.php');
|
include_once(dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'vendor/autoload.php');
|
||||||
|
|
||||||
|
|
||||||
// 2. security check: Check HTTP parameters, if requested
|
// 2. security check: Check HTTP parameters, if requested
|
||||||
|
|
11
rector.php
11
rector.php
|
@ -1,12 +1,14 @@
|
||||||
<?php
|
<?php
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
use Rector\Config\RectorConfig;
|
use Rector\Config\RectorConfig;
|
||||||
use Rector\Set\ValueObject\LevelSetList;
|
use Rector\Set\ValueObject\LevelSetList;
|
||||||
|
use Rector\Set\ValueObject\SetList;
|
||||||
|
|
||||||
return static function (RectorConfig $rectorConfig): void {
|
return static function (RectorConfig $rectorConfig): void {
|
||||||
$rectorConfig->parallel();
|
$rectorConfig->parallel();
|
||||||
$rectorConfig->paths([
|
$rectorConfig->paths([
|
||||||
__DIR__,
|
__DIR__.'/conlite',
|
||||||
]);
|
]);
|
||||||
$rectorConfig->skip([
|
$rectorConfig->skip([
|
||||||
__DIR__ . DIRECTORY_SEPARATOR . 'node_modules',
|
__DIR__ . DIRECTORY_SEPARATOR . 'node_modules',
|
||||||
|
@ -14,5 +16,10 @@ return static function (RectorConfig $rectorConfig): void {
|
||||||
__DIR__ . DIRECTORY_SEPARATOR . 'vendor',
|
__DIR__ . DIRECTORY_SEPARATOR . 'vendor',
|
||||||
]);
|
]);
|
||||||
$rectorConfig->importNames();
|
$rectorConfig->importNames();
|
||||||
$rectorConfig->import(LevelSetList::UP_TO_PHP_80);
|
$rectorConfig->sets([
|
||||||
|
LevelSetList::UP_TO_PHP_80,
|
||||||
|
SetList::CODE_QUALITY,
|
||||||
|
SetList::DEAD_CODE,
|
||||||
|
SetList::NAMING,
|
||||||
|
]);
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '727cad0e1e2ad00ac92dac6aa02e5ea0b4ca1dfb',
|
'reference' => '680b5bad712adbaf56c58c3d71ff53edac53c924',
|
||||||
'name' => 'org.conlite/conlite',
|
'name' => 'org.conlite/conlite',
|
||||||
'dev' => false,
|
'dev' => false,
|
||||||
),
|
),
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '727cad0e1e2ad00ac92dac6aa02e5ea0b4ca1dfb',
|
'reference' => '680b5bad712adbaf56c58c3d71ff53edac53c924',
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'phpmailer/phpmailer' => array(
|
'phpmailer/phpmailer' => array(
|
||||||
|
|
Laden…
In neuem Issue referenzieren