Update edit_user form page and also minor updates to Form and ArraIO
login_user_id is unique if not null (as index, constraint only with PostgreSQL 15) login_user_id_revalidate_after is not longer not null and default set, no need for this DB\Extended\ArrayIO: add sql_read for datetime fields to change amount of data (eg only up to minute) with to_char() method. sample: YYYY-MM-DD HH24:MI Add date/datetime/emptynull for setting empty fields to null and not empty string Output\From\Generate: Remove all fill for spacer and change them to placeholder html types. Add datetime check next to date, time only checks edit_user Admin Form: add all new columns there
This commit is contained in:
@@ -599,12 +599,15 @@ CREATE TABLE edit_user (
|
|||||||
login_user_id_set_date TIMESTAMP WITHOUT TIME ZONE, -- when above uid was set
|
login_user_id_set_date TIMESTAMP WITHOUT TIME ZONE, -- when above uid was set
|
||||||
login_user_id_valid_from TIMESTAMP WITHOUT TIME ZONE, -- if set, from when the above uid is valid
|
login_user_id_valid_from TIMESTAMP WITHOUT TIME ZONE, -- if set, from when the above uid is valid
|
||||||
login_user_id_valid_until TIMESTAMP WITHOUT TIME ZONE, -- if set, until when the above uid is valid
|
login_user_id_valid_until TIMESTAMP WITHOUT TIME ZONE, -- if set, until when the above uid is valid
|
||||||
login_user_id_revalidate_after INTERVAL DEFAULT '0 days', -- user must login to revalidated login id after set days, 0 for forever
|
login_user_id_revalidate_after INTERVAL, -- user must login to revalidated login id after set days, 0 for forever
|
||||||
login_user_id_locked SMALLINT DEFAULT 0, -- lock for login user id, but still allow normal login
|
login_user_id_locked SMALLINT DEFAULT 0, -- lock for login user id, but still allow normal login
|
||||||
-- additional ACL json block
|
-- additional ACL json block
|
||||||
additional_acl JSONB -- additional ACL as JSON string (can be set by other pages)
|
additional_acl JSONB -- additional ACL as JSON string (can be set by other pages)
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|
||||||
|
-- create unique index
|
||||||
|
CREATE UNIQUE INDEX edit_user_login_user_id_key ON edit_user (login_user_id) WHERE login_user_id IS NOT NULL;
|
||||||
|
|
||||||
COMMENT ON COLUMN edit_user.username IS 'Login username, must set';
|
COMMENT ON COLUMN edit_user.username IS 'Login username, must set';
|
||||||
COMMENT ON COLUMN edit_user.password IS 'Login password, must set';
|
COMMENT ON COLUMN edit_user.password IS 'Login password, must set';
|
||||||
COMMENT ON COLUMN edit_user.enabled IS 'Login is enabled (master switch)';
|
COMMENT ON COLUMN edit_user.enabled IS 'Login is enabled (master switch)';
|
||||||
|
|||||||
@@ -59,12 +59,15 @@ CREATE TABLE edit_user (
|
|||||||
login_user_id_set_date TIMESTAMP WITHOUT TIME ZONE, -- when above uid was set
|
login_user_id_set_date TIMESTAMP WITHOUT TIME ZONE, -- when above uid was set
|
||||||
login_user_id_valid_from TIMESTAMP WITHOUT TIME ZONE, -- if set, from when the above uid is valid
|
login_user_id_valid_from TIMESTAMP WITHOUT TIME ZONE, -- if set, from when the above uid is valid
|
||||||
login_user_id_valid_until TIMESTAMP WITHOUT TIME ZONE, -- if set, until when the above uid is valid
|
login_user_id_valid_until TIMESTAMP WITHOUT TIME ZONE, -- if set, until when the above uid is valid
|
||||||
login_user_id_revalidate_after INTERVAL DEFAULT '0 days', -- user must login to revalidated login id after set days, 0 for forever
|
login_user_id_revalidate_after INTERVAL, -- user must login to revalidated login id after set days, 0 for forever
|
||||||
login_user_id_locked SMALLINT DEFAULT 0, -- lock for login user id, but still allow normal login
|
login_user_id_locked SMALLINT DEFAULT 0, -- lock for login user id, but still allow normal login
|
||||||
-- additional ACL json block
|
-- additional ACL json block
|
||||||
additional_acl JSONB -- additional ACL as JSON string (can be set by other pages)
|
additional_acl JSONB -- additional ACL as JSON string (can be set by other pages)
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|
||||||
|
-- create unique index
|
||||||
|
CREATE UNIQUE INDEX edit_user_login_user_id_key ON edit_user (login_user_id) WHERE login_user_id IS NOT NULL;
|
||||||
|
|
||||||
COMMENT ON COLUMN edit_user.username IS 'Login username, must set';
|
COMMENT ON COLUMN edit_user.username IS 'Login username, must set';
|
||||||
COMMENT ON COLUMN edit_user.password IS 'Login password, must set';
|
COMMENT ON COLUMN edit_user.password IS 'Login password, must set';
|
||||||
COMMENT ON COLUMN edit_user.enabled IS 'Login is enabled (master switch)';
|
COMMENT ON COLUMN edit_user.enabled IS 'Login is enabled (master switch)';
|
||||||
|
|||||||
@@ -2,13 +2,14 @@
|
|||||||
|
|
||||||
-- the login uid, at least 32 chars
|
-- the login uid, at least 32 chars
|
||||||
ALTER TABLE edit_user ADD login_user_id VARCHAR;
|
ALTER TABLE edit_user ADD login_user_id VARCHAR;
|
||||||
|
CREATE UNIQUE INDEX edit_user_login_user_id_key ON edit_user (login_user_id) WHERE login_user_id IS NOT NULL;
|
||||||
-- when above uid was set
|
-- when above uid was set
|
||||||
ALTER TABLE edit_user ADD login_user_id_set_date TIMESTAMP WITHOUT TIME ZONE;
|
ALTER TABLE edit_user ADD login_user_id_set_date TIMESTAMP WITHOUT TIME ZONE;
|
||||||
-- if set, from/until when the above uid is valid
|
-- if set, from/until when the above uid is valid
|
||||||
ALTER TABLE edit_user ADD login_user_id_valid_from TIMESTAMP WITHOUT TIME ZONE;
|
ALTER TABLE edit_user ADD login_user_id_valid_from TIMESTAMP WITHOUT TIME ZONE;
|
||||||
ALTER TABLE edit_user ADD login_user_id_valid_until TIMESTAMP WITHOUT TIME ZONE;
|
ALTER TABLE edit_user ADD login_user_id_valid_until TIMESTAMP WITHOUT TIME ZONE;
|
||||||
-- user must login to revalidated login id after set days, 0 for forever
|
-- user must login to revalidated login id after set days, 0 for forever
|
||||||
ALTER TABLE edit_user ADD login_user_id_revalidate_after INTERVAL NOT NULL DEFAULT '0 days';
|
ALTER TABLE edit_user ADD login_user_id_revalidate_after INTERVAL;
|
||||||
-- lock for login user id, but still allow normal login
|
-- lock for login user id, but still allow normal login
|
||||||
ALTER TABLE edit_user ADD login_user_id_locked SMALLINT NOT NULL DEFAULT 0;
|
ALTER TABLE edit_user ADD login_user_id_locked SMALLINT NOT NULL DEFAULT 0;
|
||||||
|
|
||||||
@@ -39,7 +40,6 @@ END;
|
|||||||
$$
|
$$
|
||||||
LANGUAGE 'plpgsql';
|
LANGUAGE 'plpgsql';
|
||||||
|
|
||||||
|
|
||||||
CREATE TRIGGER trg_edit_user_set_login_user_id_set_date
|
CREATE TRIGGER trg_edit_user_set_login_user_id_set_date
|
||||||
BEFORE INSERT OR UPDATE ON edit_user
|
BEFORE INSERT OR UPDATE ON edit_user
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_login_user_id_set_date();
|
FOR EACH ROW EXECUTE PROCEDURE set_login_user_id_set_date();
|
||||||
|
|||||||
@@ -599,12 +599,15 @@ CREATE TABLE edit_user (
|
|||||||
login_user_id_set_date TIMESTAMP WITHOUT TIME ZONE, -- when above uid was set
|
login_user_id_set_date TIMESTAMP WITHOUT TIME ZONE, -- when above uid was set
|
||||||
login_user_id_valid_from TIMESTAMP WITHOUT TIME ZONE, -- if set, from when the above uid is valid
|
login_user_id_valid_from TIMESTAMP WITHOUT TIME ZONE, -- if set, from when the above uid is valid
|
||||||
login_user_id_valid_until TIMESTAMP WITHOUT TIME ZONE, -- if set, until when the above uid is valid
|
login_user_id_valid_until TIMESTAMP WITHOUT TIME ZONE, -- if set, until when the above uid is valid
|
||||||
login_user_id_revalidate_after INTERVAL DEFAULT '0 days', -- user must login to revalidated login id after set days, 0 for forever
|
login_user_id_revalidate_after INTERVAL, -- user must login to revalidated login id after set days, 0 for forever
|
||||||
login_user_id_locked SMALLINT DEFAULT 0, -- lock for login user id, but still allow normal login
|
login_user_id_locked SMALLINT DEFAULT 0, -- lock for login user id, but still allow normal login
|
||||||
-- additional ACL json block
|
-- additional ACL json block
|
||||||
additional_acl JSONB -- additional ACL as JSON string (can be set by other pages)
|
additional_acl JSONB -- additional ACL as JSON string (can be set by other pages)
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|
||||||
|
-- create unique index
|
||||||
|
CREATE UNIQUE INDEX edit_user_login_user_id_key ON edit_user (login_user_id) WHERE login_user_id IS NOT NULL;
|
||||||
|
|
||||||
COMMENT ON COLUMN edit_user.username IS 'Login username, must set';
|
COMMENT ON COLUMN edit_user.username IS 'Login username, must set';
|
||||||
COMMENT ON COLUMN edit_user.password IS 'Login password, must set';
|
COMMENT ON COLUMN edit_user.password IS 'Login password, must set';
|
||||||
COMMENT ON COLUMN edit_user.enabled IS 'Login is enabled (master switch)';
|
COMMENT ON COLUMN edit_user.enabled IS 'Login is enabled (master switch)';
|
||||||
|
|||||||
@@ -397,10 +397,17 @@ if ($form->my_page_name == 'edit_order') {
|
|||||||
$elements[] = $form->formCreateElement('login_error_date_last');
|
$elements[] = $form->formCreateElement('login_error_date_last');
|
||||||
$elements[] = $form->formCreateElement('login_error_date_first');
|
$elements[] = $form->formCreateElement('login_error_date_first');
|
||||||
$elements[] = $form->formCreateElement('enabled');
|
$elements[] = $form->formCreateElement('enabled');
|
||||||
|
$elements[] = $form->formCreateElement('deleted');
|
||||||
$elements[] = $form->formCreateElement('protected');
|
$elements[] = $form->formCreateElement('protected');
|
||||||
$elements[] = $form->formCreateElement('username');
|
$elements[] = $form->formCreateElement('username');
|
||||||
$elements[] = $form->formCreateElement('password');
|
$elements[] = $form->formCreateElement('password');
|
||||||
$elements[] = $form->formCreateElement('password_change_interval');
|
$elements[] = $form->formCreateElement('password_change_interval');
|
||||||
|
$elements[] = $form->formCreateElement('login_user_id');
|
||||||
|
$elements[] = $form->formCreateElement('login_user_id_set_date');
|
||||||
|
$elements[] = $form->formCreateElement('login_user_id_locked');
|
||||||
|
$elements[] = $form->formCreateElement('login_user_id_revalidate_after');
|
||||||
|
$elements[] = $form->formCreateElement('login_user_id_valid_from');
|
||||||
|
$elements[] = $form->formCreateElement('login_user_id_valid_until');
|
||||||
$elements[] = $form->formCreateElement('email');
|
$elements[] = $form->formCreateElement('email');
|
||||||
$elements[] = $form->formCreateElement('last_name');
|
$elements[] = $form->formCreateElement('last_name');
|
||||||
$elements[] = $form->formCreateElement('first_name');
|
$elements[] = $form->formCreateElement('first_name');
|
||||||
@@ -408,6 +415,8 @@ if ($form->my_page_name == 'edit_order') {
|
|||||||
$elements[] = $form->formCreateElement('edit_access_right_id');
|
$elements[] = $form->formCreateElement('edit_access_right_id');
|
||||||
$elements[] = $form->formCreateElement('strict');
|
$elements[] = $form->formCreateElement('strict');
|
||||||
$elements[] = $form->formCreateElement('locked');
|
$elements[] = $form->formCreateElement('locked');
|
||||||
|
$elements[] = $form->formCreateElement('lock_until');
|
||||||
|
$elements[] = $form->formCreateElement('lock_after');
|
||||||
$elements[] = $form->formCreateElement('admin');
|
$elements[] = $form->formCreateElement('admin');
|
||||||
$elements[] = $form->formCreateElement('debug');
|
$elements[] = $form->formCreateElement('debug');
|
||||||
$elements[] = $form->formCreateElement('db_debug');
|
$elements[] = $form->formCreateElement('db_debug');
|
||||||
|
|||||||
@@ -53,6 +53,16 @@ $edit_users = [
|
|||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
'deleted' => [
|
||||||
|
'value' => $GLOBALS['deleted'] ?? '',
|
||||||
|
'output_name' => 'Deleted',
|
||||||
|
'type' => 'binary',
|
||||||
|
'int' => 1,
|
||||||
|
'element_list' => [
|
||||||
|
'1' => 'Yes',
|
||||||
|
'0' => 'No'
|
||||||
|
],
|
||||||
|
],
|
||||||
'strict' => [
|
'strict' => [
|
||||||
'value' => $GLOBALS['strict'] ?? '',
|
'value' => $GLOBALS['strict'] ?? '',
|
||||||
'output_name' => 'Strict (Lock after errors)',
|
'output_name' => 'Strict (Lock after errors)',
|
||||||
@@ -119,6 +129,71 @@ $edit_users = [
|
|||||||
'output_name' => 'First Name',
|
'output_name' => 'First Name',
|
||||||
'type' => 'text'
|
'type' => 'text'
|
||||||
],
|
],
|
||||||
|
'lock_until' => [
|
||||||
|
'value' => $GLOBALS['lock_until'] ?? '',
|
||||||
|
'output_name' => 'Lock account until',
|
||||||
|
'type' => 'datetime',
|
||||||
|
'error_check' => 'datetime',
|
||||||
|
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
||||||
|
'datetime' => 1,
|
||||||
|
],
|
||||||
|
'lock_after' => [
|
||||||
|
'value' => $GLOBALS['lock_after'] ?? '',
|
||||||
|
'output_name' => 'Lock account after',
|
||||||
|
'type' => 'datetime',
|
||||||
|
'error_check' => 'datetime',
|
||||||
|
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
||||||
|
'datetime' => 1,
|
||||||
|
],
|
||||||
|
'login_user_id' => [
|
||||||
|
'value' => $GLOBALS['login_user_id'] ?? '',
|
||||||
|
'output_name' => '_GET/_POST loginUserId direct login ID',
|
||||||
|
'type' => 'text',
|
||||||
|
'error_check' => 'unique|custom',
|
||||||
|
'error_regex' => "/^[A-Za-z0-9]+$/",
|
||||||
|
'emptynull' => 1,
|
||||||
|
],
|
||||||
|
'login_user_id_set_date' => [
|
||||||
|
'output_name' => 'loginUserId set date',
|
||||||
|
'value' => $GLOBALS['login_user_id_set_date'] ?? '',
|
||||||
|
'type' => 'view',
|
||||||
|
'empty' => '-'
|
||||||
|
],
|
||||||
|
'login_user_id_locked' => [
|
||||||
|
'value' => $GLOBALS['login_user_id_locked'] ?? '',
|
||||||
|
'output_name' => 'loginUserId usage locked',
|
||||||
|
'type' => 'binary',
|
||||||
|
'int' => 1,
|
||||||
|
'element_list' => [
|
||||||
|
'1' => 'Yes',
|
||||||
|
'0' => 'No'
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'login_user_id_revalidate_after' => [
|
||||||
|
'value' => $GLOBALS['login_user_id_revalidate_after'] ?? '',
|
||||||
|
'output_name' => 'loginUserId, User must login after n days',
|
||||||
|
'type' => 'text',
|
||||||
|
'error_check' => 'intervalshort',
|
||||||
|
'interval' => 1, // interval needs NULL write for empty
|
||||||
|
'size' => 5, // make it 5 chars long
|
||||||
|
'length' => 5
|
||||||
|
],
|
||||||
|
'login_user_id_valid_from' => [
|
||||||
|
'value' => $GLOBALS['login_user_id_valid_from'] ?? '',
|
||||||
|
'output_name' => 'loginUserId valid from',
|
||||||
|
'type' => 'datetime',
|
||||||
|
'error_check' => 'datetime',
|
||||||
|
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
||||||
|
'datetime' => 1,
|
||||||
|
],
|
||||||
|
'login_user_id_valid_until' => [
|
||||||
|
'value' => $GLOBALS['login_user_id_valid_until'] ?? '',
|
||||||
|
'output_name' => 'loginUserId valid until',
|
||||||
|
'type' => 'datetime',
|
||||||
|
'error_check' => 'datetime',
|
||||||
|
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
||||||
|
'datetime' => 1,
|
||||||
|
],
|
||||||
'edit_language_id' => [
|
'edit_language_id' => [
|
||||||
'value' => $GLOBALS['edit_language_id'] ?? '',
|
'value' => $GLOBALS['edit_language_id'] ?? '',
|
||||||
'output_name' => 'Language',
|
'output_name' => 'Language',
|
||||||
@@ -187,7 +262,8 @@ $edit_users = [
|
|||||||
'cols' => 60
|
'cols' => 60
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'load_query' => "SELECT edit_user_id, username, enabled, debug, db_debug, strict, locked, login_error_count "
|
'load_query' => "SELECT edit_user_id, username, enabled, deleted, "
|
||||||
|
. "strict, locked, login_error_count "
|
||||||
. "FROM edit_user ORDER BY username",
|
. "FROM edit_user ORDER BY username",
|
||||||
'table_name' => 'edit_user',
|
'table_name' => 'edit_user',
|
||||||
'show_fields' => [
|
'show_fields' => [
|
||||||
@@ -197,31 +273,26 @@ $edit_users = [
|
|||||||
[
|
[
|
||||||
'name' => 'enabled',
|
'name' => 'enabled',
|
||||||
'binary' => ['Yes', 'No'],
|
'binary' => ['Yes', 'No'],
|
||||||
'before_value' => 'Enabled: '
|
'before_value' => 'ENBL: '
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'name' => 'debug',
|
'name' => 'deleted',
|
||||||
'binary' => ['Yes', 'No'],
|
'binary' => ['Yes', 'No'],
|
||||||
'before_value' => 'Debug: '
|
'before_value' => 'DEL: '
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'db_debug',
|
|
||||||
'binary' => ['Yes', 'No'],
|
|
||||||
'before_value' => 'DB Debug: '
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'name' => 'strict',
|
'name' => 'strict',
|
||||||
'binary' => ['Yes', 'No'],
|
'binary' => ['Yes', 'No'],
|
||||||
'before_value' => 'Strict: '
|
'before_value' => 'STRC: '
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'name' => 'locked',
|
'name' => 'locked',
|
||||||
'binary' => ['Yes', 'No'],
|
'binary' => ['Yes', 'No'],
|
||||||
'before_value' => 'Locked: '
|
'before_value' => 'LCK: '
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'name' => 'login_error_count',
|
'name' => 'login_error_count',
|
||||||
'before_value' => 'Errors: '
|
'before_value' => 'ERR: '
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'element_list' => [
|
'element_list' => [
|
||||||
|
|||||||
@@ -32,7 +32,10 @@
|
|||||||
<input type="hidden" name="HIDDEN_{$element.data.name}" value="{$element.data.HIDDEN_value}">
|
<input type="hidden" name="HIDDEN_{$element.data.name}" value="{$element.data.HIDDEN_value}">
|
||||||
{/if}
|
{/if}
|
||||||
{if $element.type == 'date'}
|
{if $element.type == 'date'}
|
||||||
<input type="text" name="{$element.data.name}" value="{$element.data.value}" size="10" maxlength="10">
|
<input type="text" name="{$element.data.name}" value="{$element.data.value}" size="10" maxlength="10" placeholder="YYYY-MM-DD">
|
||||||
|
{/if}
|
||||||
|
{if $element.type == 'datetime'}
|
||||||
|
<input type="text" name="{$element.data.name}" value="{$element.data.value}" size="16" maxlength="16" placeholder="YYYY-MM-DD HH:mm">
|
||||||
{/if}
|
{/if}
|
||||||
{if $element.type == 'textarea'}
|
{if $element.type == 'textarea'}
|
||||||
<textarea name="{$element.data.name}"{if $element.data.rows} rows="{$element.data.rows}"{/if}{if $element.data.cols} cols="{$element.data.cols}"{/if}>{$element.data.value}</textarea>
|
<textarea name="{$element.data.name}"{if $element.data.rows} rows="{$element.data.rows}"{/if}{if $element.data.cols} cols="{$element.data.cols}"{/if}>{$element.data.value}</textarea>
|
||||||
|
|||||||
@@ -75,9 +75,9 @@ class Login
|
|||||||
/** @var string the user id var*/
|
/** @var string the user id var*/
|
||||||
private $euid;
|
private $euid;
|
||||||
/** @var string _GET/_POST loginUserId parameter for non password login */
|
/** @var string _GET/_POST loginUserId parameter for non password login */
|
||||||
private $login_user_id;
|
private $login_user_id = '';
|
||||||
/** @var string source, either _GET or _POST or empty */
|
/** @var string source, either _GET or _POST or empty */
|
||||||
private $login_user_id_source;
|
private $login_user_id_source = '';
|
||||||
/** @var bool set to true if illegal characters where found in the login user id string */
|
/** @var bool set to true if illegal characters where found in the login user id string */
|
||||||
private $login_unclear = false;
|
private $login_unclear = false;
|
||||||
// is set to one if login okay, or EUID is set and user is okay to access this page
|
// is set to one if login okay, or EUID is set and user is okay to access this page
|
||||||
@@ -548,7 +548,8 @@ class Login
|
|||||||
. "OR (eu.login_user_id_valid_until IS NOT NULL AND NOW() <= eu.login_user_id_valid_until))"
|
. "OR (eu.login_user_id_valid_until IS NOT NULL AND NOW() <= eu.login_user_id_valid_until))"
|
||||||
. ") THEN 1::INT ELSE 0::INT END AS login_user_id_valid_date, "
|
. ") THEN 1::INT ELSE 0::INT END AS login_user_id_valid_date, "
|
||||||
// check if user must login
|
// check if user must login
|
||||||
. "CASE WHEN eu.login_user_id_revalidate_after > '0 days'::INTERVAL "
|
. "CASE WHEN eu.login_user_id_revalidate_after IS NOT NULL "
|
||||||
|
. "AND eu.login_user_id_revalidate_after > '0 days'::INTERVAL "
|
||||||
. "AND (eu.login_user_id_set_date + eu.login_user_id_revalidate_after)::DATE "
|
. "AND (eu.login_user_id_set_date + eu.login_user_id_revalidate_after)::DATE "
|
||||||
. "<= NOW()::DATE "
|
. "<= NOW()::DATE "
|
||||||
. "THEN 1::INT ELSE 0::INT END AS login_user_id_revalidate, "
|
. "THEN 1::INT ELSE 0::INT END AS login_user_id_revalidate, "
|
||||||
@@ -1888,7 +1889,8 @@ EOM;
|
|||||||
. "OR (eu.login_user_id_valid_until IS NOT NULL AND NOW() <= eu.login_user_id_valid_until))"
|
. "OR (eu.login_user_id_valid_until IS NOT NULL AND NOW() <= eu.login_user_id_valid_until))"
|
||||||
. ") THEN 1::INT ELSE 0::INT END AS login_user_id_valid_date, "
|
. ") THEN 1::INT ELSE 0::INT END AS login_user_id_valid_date, "
|
||||||
// check if user must login
|
// check if user must login
|
||||||
. "CASE WHEN eu.login_user_id_revalidate_after > '0 days'::INTERVAL "
|
. "CASE WHEN eu.login_user_id_revalidate_after IS NOT NULL "
|
||||||
|
. "AND eu.login_user_id_revalidate_after > '0 days'::INTERVAL "
|
||||||
. "AND eu.login_user_id_set_date + eu.login_user_id_revalidate_after <= NOW()::DATE "
|
. "AND eu.login_user_id_set_date + eu.login_user_id_revalidate_after <= NOW()::DATE "
|
||||||
. "THEN 1::INT ELSE 0::INT END AS login_user_id_revalidate, "
|
. "THEN 1::INT ELSE 0::INT END AS login_user_id_revalidate, "
|
||||||
. "eu.login_user_id_locked "
|
. "eu.login_user_id_locked "
|
||||||
|
|||||||
@@ -271,7 +271,15 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
if ($q_select) {
|
if ($q_select) {
|
||||||
$q_select .= ', ';
|
$q_select .= ', ';
|
||||||
}
|
}
|
||||||
$q_select .= $column;
|
if (
|
||||||
|
!empty($data_array['type']) && $data_array['type'] == 'datetime' &&
|
||||||
|
!empty($data_array['sql_read'])
|
||||||
|
) {
|
||||||
|
// convert tom different timestamp type
|
||||||
|
$q_select .= "TO_CHAR($column, '" . $data_array['sql_read'] . "') AS $column";
|
||||||
|
} else {
|
||||||
|
$q_select .= $column;
|
||||||
|
}
|
||||||
|
|
||||||
// check FK ...
|
// check FK ...
|
||||||
if (isset($this->table_array[$column]['fk']) && isset($this->table_array[$column]['value'])) {
|
if (isset($this->table_array[$column]['fk']) && isset($this->table_array[$column]['value'])) {
|
||||||
@@ -450,7 +458,12 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
} elseif (isset($this->table_array[$column]['bool'])) {
|
} elseif (isset($this->table_array[$column]['bool'])) {
|
||||||
// boolean storeage (reverse check on ifset)
|
// boolean storeage (reverse check on ifset)
|
||||||
$q_data .= "'" . $this->dbBoolean($this->table_array[$column]['value'], true) . "'";
|
$q_data .= "'" . $this->dbBoolean($this->table_array[$column]['value'], true) . "'";
|
||||||
} elseif (isset($this->table_array[$column]['interval'])) {
|
} elseif (
|
||||||
|
isset($this->table_array[$column]['interval']) ||
|
||||||
|
isset($this->table_array[$column]['date']) ||
|
||||||
|
isset($this->table_array[$column]['datetime']) ||
|
||||||
|
isset($this->table_array[$column]['emptynull'])
|
||||||
|
) {
|
||||||
// for interval we check if no value, then we set null
|
// for interval we check if no value, then we set null
|
||||||
if (
|
if (
|
||||||
!isset($this->table_array[$column]['value']) ||
|
!isset($this->table_array[$column]['value']) ||
|
||||||
|
|||||||
@@ -969,11 +969,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
}
|
}
|
||||||
// date (YYYY-MM-DD)
|
// date (YYYY-MM-DD)
|
||||||
if ($this->table_array[$element_name]['type'] == 'date') {
|
if ($this->table_array[$element_name]['type'] == 'date') {
|
||||||
if (!$this->table_array[$element_name]['value']) {
|
|
||||||
$this->table_array[$element_name]['value'] = 'YYYY-MM-DD';
|
|
||||||
}
|
|
||||||
$data['name'] = $element_name;
|
$data['name'] = $element_name;
|
||||||
$data['value'] = $this->table_array[$element_name]['value'];
|
$data['value'] = $this->table_array[$element_name]['value'] ?? '';
|
||||||
|
}
|
||||||
|
// date time (no sec) (YYYY-MM-DD HH:mm)
|
||||||
|
if ($this->table_array[$element_name]['type'] == 'datetime') {
|
||||||
|
$data['name'] = $element_name;
|
||||||
|
$data['value'] = $this->table_array[$element_name]['value'] ?? '';
|
||||||
}
|
}
|
||||||
// textarea
|
// textarea
|
||||||
if ($this->table_array[$element_name]['type'] == 'textarea') {
|
if ($this->table_array[$element_name]['type'] == 'textarea') {
|
||||||
@@ -1168,7 +1170,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
if (!\CoreLibs\Combined\DateTime::checkDate($this->table_array[$key]['value'])) {
|
if (!\CoreLibs\Combined\DateTime::checkDate($this->table_array[$key]['value'])) {
|
||||||
$this->msg .= sprintf(
|
$this->msg .= sprintf(
|
||||||
$this->l->__(
|
$this->l->__(
|
||||||
'Please enter a vailid date (YYYY-MM-DD) for the <b>%s</b> Field!<br>'
|
'Please enter a valid date (YYYY-MM-DD) for the <b>%s</b> Field!<br>'
|
||||||
),
|
),
|
||||||
$this->table_array[$key]['output_name']
|
$this->table_array[$key]['output_name']
|
||||||
);
|
);
|
||||||
@@ -1178,14 +1180,22 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
if (!\CoreLibs\Combined\DateTime::checkDateTime($this->table_array[$key]['value'])) {
|
if (!\CoreLibs\Combined\DateTime::checkDateTime($this->table_array[$key]['value'])) {
|
||||||
$this->msg .= sprintf(
|
$this->msg .= sprintf(
|
||||||
$this->l->__(
|
$this->l->__(
|
||||||
'Please enter a vailid time (HH:MM[:SS]) for the <b>%s</b> Field!<br>'
|
'Please enter a valid time (HH:mm[:SS]) for the <b>%s</b> Field!<br>'
|
||||||
),
|
),
|
||||||
$this->table_array[$key]['output_name']
|
$this->table_array[$key]['output_name']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'datetime': // YYYY-MM-DD HH:MM[:SS]
|
case 'datetime': // YYYY-MM-DD HH:MM[:SS]
|
||||||
// not implemented
|
if (!\CoreLibs\Combined\DateTime::checkDateTime($this->table_array[$key]['value'])) {
|
||||||
|
$this->msg .= sprintf(
|
||||||
|
$this->l->__(
|
||||||
|
'Please enter a valid date time (YYYY-MM-DD HH:mm) '
|
||||||
|
. 'for the <b>%s</b> Field!<br>'
|
||||||
|
),
|
||||||
|
$this->table_array[$key]['output_name']
|
||||||
|
);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'intervalshort': // ony interval n [Y/M/D] only
|
case 'intervalshort': // ony interval n [Y/M/D] only
|
||||||
if (preg_match("/^\d{1,3}\ ?[YMDymd]{1}$/", $this->table_array[$key]['value'])) {
|
if (preg_match("/^\d{1,3}\ ?[YMDymd]{1}$/", $this->table_array[$key]['value'])) {
|
||||||
|
|||||||
Reference in New Issue
Block a user