Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bfe3fdcff4 | ||
|
|
1feb7bf574 | ||
|
|
272a5ad202 | ||
|
|
8a86145307 |
@@ -1,6 +1,6 @@
|
||||
-- add uid add for edit_access table
|
||||
|
||||
CREATE OR REPLACE FUNCTION set_edit_access_uid() RETURNS TRIGGER AS
|
||||
CREATE OR REPLACE FUNCTION set_edit_access_uid() RETURNS TRIGGER AS
|
||||
$$
|
||||
DECLARE
|
||||
myrec RECORD;
|
||||
|
||||
@@ -8,10 +8,13 @@
|
||||
-- DROP TABLE edit_access;
|
||||
CREATE TABLE edit_access (
|
||||
edit_access_id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(255) UNIQUE,
|
||||
name VARCHAR UNIQUE,
|
||||
description VARCHAR,
|
||||
COLOR VARCHAR
|
||||
color VARCHAR,
|
||||
uid VARCHAR,
|
||||
enabled BOOLEAN DEFAULT 'true',
|
||||
protected INT
|
||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||
|
||||
DELETE FROM edit_access;
|
||||
INSERT INTO edit_access (name) VALUES ('Admin Access');
|
||||
INSERT INTO edit_access (name, enabled, protected) VALUES ('Admin Access', 't', 1);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
-- DROP TABLE edit_group;
|
||||
CREATE TABLE edit_group (
|
||||
edit_group_id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(50),
|
||||
name VARCHAR,
|
||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||
edit_scheme_id INT,
|
||||
edit_access_right_id INT NOT NULL,
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
-- DROP TABLE edit_language;
|
||||
CREATE TABLE edit_language (
|
||||
edit_language_id SERIAL PRIMARY KEY,
|
||||
short_name VARCHAR(2),
|
||||
long_name VARCHAR(70),
|
||||
iso_name VARCHAR(12),
|
||||
short_name VARCHAR,
|
||||
long_name VARCHAR,
|
||||
iso_name VARCHAR,
|
||||
order_number INT,
|
||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||
lang_default SMALLINT NOT NULL DEFAULT 0 UNIQUE
|
||||
lang_default SMALLINT NOT NULL DEFAULT 0
|
||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||
|
||||
INSERT INTO edit_language (short_name, long_name, iso_name, order_number, enabled, lang_default) VALUES ('en', 'English', 'UTF-8', 1, 1, 1);
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
-- DROP TABLE edit_menu_group;
|
||||
CREATE TABLE edit_menu_group (
|
||||
edit_menu_group_id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
flag VARCHAR(50),
|
||||
name VARCHAR,
|
||||
flag VARCHAR,
|
||||
order_number INT NOT NULL
|
||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
-- DROP TABLE edit_page;
|
||||
CREATE TABLE edit_page (
|
||||
edit_page_id SERIAL PRIMARY KEY,
|
||||
filename VARCHAR(70),
|
||||
name VARCHAR(255) UNIQUE,
|
||||
filename VARCHAR,
|
||||
name VARCHAR UNIQUE,
|
||||
order_number INT NOT NULL,
|
||||
online SMALLINT NOT NULL DEFAULT 0,
|
||||
menu SMALLINT NOT NULL DEFAULT 0,
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
-- DROP TABLE edit_query_string;
|
||||
CREATE TABLE edit_query_string (
|
||||
edit_query_string_id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
value VARCHAR(255),
|
||||
name VARCHAR,
|
||||
value VARCHAR,
|
||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||
dynamic SMALLINT NOT NULL DEFAULT 0,
|
||||
edit_page_id INT NOT NULL,
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
CREATE TABLE edit_scheme (
|
||||
edit_scheme_id SERIAL PRIMARY KEY,
|
||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||
name VARCHAR(50),
|
||||
header_color VARCHAR(7),
|
||||
css_file VARCHAR(50),
|
||||
template VARCHAR(50)
|
||||
name VARCHAR,
|
||||
header_color VARCHAR,
|
||||
css_file VARCHAR,
|
||||
template VARCHARs
|
||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||
|
||||
INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Default Scheme', '#E0E2FF', 1);
|
||||
INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Admin', '#CC7E7E', 1);
|
||||
INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Visitor', '#B0C4B3', 1);
|
||||
INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Default Scheme', 'E0E2FF', 1);
|
||||
INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Admin', 'CC7E7E', 1);
|
||||
INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Visitor', 'B0C4B3', 1);
|
||||
|
||||
@@ -7,5 +7,5 @@
|
||||
|
||||
-- DROP TABLE temp_files;
|
||||
CREATE TABLE temp_files (
|
||||
filename VARCHAR(250)
|
||||
filename VARCHAR
|
||||
);
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
-- DROP TABLE edit_visible_group;
|
||||
CREATE TABLE edit_visible_group (
|
||||
edit_visible_group_id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
flag VARCHAR(50)
|
||||
name VARCHAR,
|
||||
flag VARCHAR
|
||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||
|
||||
DELETE FROM edit_visible_group;
|
||||
|
||||
@@ -24,7 +24,7 @@ extract($_POST, EXTR_SKIP);
|
||||
|
||||
$table_width = 750;
|
||||
// this is for certain CMS modules that set a relative path
|
||||
define(REL_PATH, '');
|
||||
define('REL_PATH', '');
|
||||
|
||||
ob_start();
|
||||
include("config.inc");
|
||||
@@ -137,7 +137,7 @@ $DATA['GROUP_NAME'] = $_SESSION["GROUP_NAME"];
|
||||
$DATA['GROUP_LEVEL'] = $_SESSION["GROUP_LEVEL"];
|
||||
$PAGES = $_SESSION["PAGES"];
|
||||
|
||||
//$form->debug('menu', $form->print_ar($PAGES));
|
||||
//$form->debug('menu', $form->printAr($PAGES));
|
||||
|
||||
// baue nav aus $PAGES ...
|
||||
for ($i = 0; $i < count($PAGES); $i ++) {
|
||||
@@ -204,6 +204,7 @@ if ($form->yes) {
|
||||
$elements[] = $form->formCreateElement("login_error_date_last");
|
||||
$elements[] = $form->formCreateElement("login_error_date_first");
|
||||
$elements[] = $form->formCreateElement("enabled");
|
||||
$elements[] = $form->formCreateElement("protected");
|
||||
$elements[] = $form->formCreateElement("username");
|
||||
$elements[] = $form->formCreateElement("password");
|
||||
$elements[] = $form->formCreateElement("password_change_interval");
|
||||
@@ -283,6 +284,8 @@ if ($form->yes) {
|
||||
break;
|
||||
case "edit_access":
|
||||
$elements[] = $form->formCreateElement("name");
|
||||
$elements[] = $form->formCreateElement("enabled");
|
||||
$elements[] = $form->formCreateElement("protected");
|
||||
$elements[] = $form->formCreateElement("color");
|
||||
$elements[] = $form->formCreateElement("description");
|
||||
// add name/value list here
|
||||
@@ -292,7 +295,7 @@ if ($form->yes) {
|
||||
print "[No valid page definition given]";
|
||||
break;
|
||||
}
|
||||
// $form->debug('edit', "Elements: <pre>".$form->print_ar($elements));
|
||||
// $form->debug('edit', "Elements: <pre>".$form->printAr($elements));
|
||||
$DATA['elements'] = $elements;
|
||||
$DATA['hidden'] = $form->formCreateHiddenFields();
|
||||
$DATA['save_delete'] = $form->formCreateSaveDelete();
|
||||
@@ -304,7 +307,7 @@ $DEBUG_DATA['DEBUG'] = $DEBUG_TMPL;
|
||||
// create main data array
|
||||
$CONTENT_DATA = array_merge($HEADER, $DATA, $DEBUG_DATA);
|
||||
// data is 1:1 mapping (all vars, values, etc)
|
||||
while (list($key, $value) = each($CONTENT_DATA)) {
|
||||
foreach ($CONTENT_DATA as $key => $value) {
|
||||
$smarty->assign($key, $value);
|
||||
}
|
||||
if (is_dir(BASE.TEMPLATES_C)) {
|
||||
|
||||
@@ -28,6 +28,26 @@ $edit_access = array (
|
||||
"error_check" => "custom",
|
||||
"error_regex" => "/[\dA-Fa-f]{6}/",
|
||||
"error_example" => "F6A544"
|
||||
),
|
||||
"enabled" => array (
|
||||
"value" => $GLOBALS["enabled"],
|
||||
"output_name" => "Enabled",
|
||||
"type" => "binary",
|
||||
"int" => 1,
|
||||
"element_list" => array (
|
||||
"1" => "Yes",
|
||||
"0" => "No"
|
||||
)
|
||||
),
|
||||
"protected" => array (
|
||||
"value" => $GLOBALS["protected"],
|
||||
"output_name" => "Protected",
|
||||
"type" => "binary",
|
||||
"int" => 1,
|
||||
"element_list" => array (
|
||||
"1" => "Yes",
|
||||
"0" => "No"
|
||||
)
|
||||
)
|
||||
),
|
||||
"table_name" => "edit_access",
|
||||
|
||||
@@ -29,6 +29,7 @@ $edit_users = array (
|
||||
)
|
||||
),
|
||||
// password date when first insert and password is set, needs special field with connection to password
|
||||
// password reset force interval, if set, user needs to reset password after X time period
|
||||
'password_change_interval' => array (
|
||||
'value' => $GLOBALS['password_change_interval'],
|
||||
'output_name' => 'Password change interval',
|
||||
@@ -38,7 +39,6 @@ $edit_users = array (
|
||||
'size' => 5, // make it 5 chars long
|
||||
'length' => 5
|
||||
),
|
||||
// password reset force interval, if set, user needs to reset password after X time period
|
||||
"enabled" => array (
|
||||
"value" => $GLOBALS["enabled"],
|
||||
"output_name" => "Enabled",
|
||||
@@ -163,10 +163,15 @@ $edit_users = array (
|
||||
"type" => "view",
|
||||
"empty" => "-"
|
||||
),
|
||||
// planned delete lock flag
|
||||
"protected" => array (
|
||||
"value" => $GLOBALS["protected"],
|
||||
"int" => 1
|
||||
"output_name" => "Protected",
|
||||
"type" => "binary",
|
||||
"int" => 1,
|
||||
"element_list" => array (
|
||||
"1" => "Yes",
|
||||
"0" => "No"
|
||||
)
|
||||
)
|
||||
),
|
||||
"load_query" => "SELECT edit_user_id, username, enabled, debug, db_debug, strict, locked, login_error_count FROM edit_user ORDER BY username",
|
||||
|
||||
@@ -70,6 +70,8 @@ class Login extends \CoreLibs\DB\IO
|
||||
private $login_error; // login error code, can be matched to the array login_error_msg, which holds the string
|
||||
private $password_change = false; // if this is set to true, the user can change passwords
|
||||
private $password_change_ok = false; // password change was successful
|
||||
private $password_forgot = false; // can we reset password and mail to user with new password set screen
|
||||
private $password_forgot_ok = false; // password forgot mail send ok
|
||||
private $pw_change_deny_users = array (); // array of users for which the password change is forbidden
|
||||
|
||||
// if we have password change we need to define some rules
|
||||
@@ -83,7 +85,11 @@ class Login extends \CoreLibs\DB\IO
|
||||
// all possible login error conditions
|
||||
private $login_error_msg = array ();
|
||||
// this is an array holding all strings & templates passed from the outside (translation)
|
||||
private $login_template = array ('strings' => array (), 'password_change' => '', 'template' => '');
|
||||
private $login_template = array (
|
||||
'strings' => array (),
|
||||
'password_change' => '',
|
||||
'template' => ''
|
||||
);
|
||||
|
||||
// acl vars
|
||||
public $acl = array ();
|
||||
@@ -179,6 +185,10 @@ class Login extends \CoreLibs\DB\IO
|
||||
if (defined('PASSWORD_CHANGE')) {
|
||||
$this->password_change = PASSWORD_CHANGE;
|
||||
}
|
||||
// NOTE: forgot password flow with email
|
||||
if (defined('PASSWORD_FORGOT')) {
|
||||
$this->password_forgot = PASSWORD_FORGOT;
|
||||
}
|
||||
// max login counts before error reporting
|
||||
$this->max_login_error_count = 10;
|
||||
// users that never get locked, even if they are set strict
|
||||
@@ -216,6 +226,10 @@ class Login extends \CoreLibs\DB\IO
|
||||
if ($this->password_change) {
|
||||
$this->loginPasswordChange();
|
||||
}
|
||||
// password forgot
|
||||
if ($this->password_forgot) {
|
||||
$this->loginPasswordForgot();
|
||||
}
|
||||
// if !$euid || permission not okay, print login screan
|
||||
echo $this->loginPrintLogin();
|
||||
// closing all connections, depending on error status, exit
|
||||
@@ -332,7 +346,7 @@ class Login extends \CoreLibs\DB\IO
|
||||
$q .= "eu.edit_access_right_id = eareu.edit_access_right_id AND ";
|
||||
$q .= "eg.edit_access_right_id = eareg.edit_access_right_id AND ";
|
||||
// password match is done in script, against old plain or new blowfish encypted
|
||||
$q .= "(LOWER(username) = '".strtolower($this->username)."') ";
|
||||
$q .= "(LOWER(username) = '".$this->dbEscapeString(strtolower($this->username))."') ";
|
||||
$res = $this->dbReturn($q);
|
||||
// username is wrong, but we throw for wrong username and wrong password the same error
|
||||
if (!$this->cursor_ext[md5($q)]["num_rows"]) {
|
||||
@@ -386,7 +400,9 @@ class Login extends \CoreLibs\DB\IO
|
||||
$_SESSION["DEFAULT_LANG"] = $res["lang_short"].'_'.strtolower(str_replace('-', '', $res["lang_iso"]));
|
||||
// reset any login error count for this user
|
||||
if ($res['login_error_count'] > 0) {
|
||||
$q = "UPDATE edit_user SET login_error_count = 0, login_error_date_last = NULL, login_error_date_first = NULL WHERE edit_user_id = ".$res['edit_user_id'];
|
||||
$q = "UPDATE edit_user ";
|
||||
$q .= "SET login_error_count = 0, login_error_date_last = NULL, login_error_date_first = NULL ";
|
||||
$q .= "WHERE edit_user_id = ".$res['edit_user_id'];
|
||||
$this->dbExec($q);
|
||||
}
|
||||
$pages = array();
|
||||
@@ -573,7 +589,7 @@ class Login extends \CoreLibs\DB\IO
|
||||
unset($_SESSION["GROUP_NAME"]);
|
||||
unset($_SESSION["HEADER_COLOR"]);
|
||||
session_destroy();
|
||||
// he prints the login screen again
|
||||
// then prints the login screen again
|
||||
$this->permission_okay = 0;
|
||||
}
|
||||
}
|
||||
@@ -596,88 +612,91 @@ class Login extends \CoreLibs\DB\IO
|
||||
// * if an account ACL is set, set this parallel, account ACL overrides user ACL if it applies
|
||||
// * if edit access ACL level is set, use this, else use page
|
||||
// set all base ACL levels as a list keyword -> ACL number
|
||||
public function loginSetAcl()
|
||||
private function loginSetAcl()
|
||||
{
|
||||
// we start with the default acl
|
||||
$this->acl['base'] = DEFAULT_ACL_LEVEL;
|
||||
// only set acl if we have permission okay
|
||||
if ($this->permission_okay) {
|
||||
// we start with the default acl
|
||||
$this->acl['base'] = DEFAULT_ACL_LEVEL;
|
||||
|
||||
// set admin flag and base to 100
|
||||
if ($_SESSION['ADMIN']) {
|
||||
$this->acl['admin'] = 1;
|
||||
$this->acl['base'] = 100;
|
||||
} else {
|
||||
$this->acl['admin'] = 0;
|
||||
// now go throw the flow and set the correct ACL
|
||||
// user > page > group
|
||||
// group ACL 0
|
||||
if ($_SESSION['GROUP_ACL_LEVEL'] != -1) {
|
||||
$this->acl['base'] = $_SESSION['GROUP_ACL_LEVEL'];
|
||||
}
|
||||
// page ACL 1
|
||||
if ($_SESSION['PAGES_ACL_LEVEL'][$this->page_name] != -1) {
|
||||
$this->acl['base'] = $_SESSION['PAGES_ACL_LEVEL'][$this->page_name];
|
||||
}
|
||||
// user ACL 2
|
||||
if ($_SESSION['USER_ACL_LEVEL'] != -1) {
|
||||
$this->acl['base'] = $_SESSION['USER_ACL_LEVEL'];
|
||||
}
|
||||
}
|
||||
|
||||
// set the current page acl
|
||||
// start with default acl
|
||||
// set group if not -1, overrides default
|
||||
// set page if not -1, overrides group set
|
||||
$this->acl['page'] = DEFAULT_ACL_LEVEL;
|
||||
if ($_SESSION['GROUP_ACL_LEVEL'] != -1) {
|
||||
$this->acl['page'] = $_SESSION['GROUP_ACL_LEVEL'];
|
||||
}
|
||||
if (isset($_SESSION['PAGES_ACL_LEVEL'][$this->page_name]) && $_SESSION['PAGES_ACL_LEVEL'][$this->page_name] != -1) {
|
||||
$this->acl['page'] = $_SESSION['PAGES_ACL_LEVEL'][$this->page_name];
|
||||
}
|
||||
|
||||
// PER ACCOUNT (UNIT/edit access)->
|
||||
foreach ($_SESSION['UNIT'] as $ea_id => $unit) {
|
||||
// if admin flag is set, all units are set to 100
|
||||
if ($this->acl['admin']) {
|
||||
$this->acl['unit'][$ea_id] = $this->acl['base'];
|
||||
// set admin flag and base to 100
|
||||
if ($_SESSION['ADMIN']) {
|
||||
$this->acl['admin'] = 1;
|
||||
$this->acl['base'] = 100;
|
||||
} else {
|
||||
if ($unit['acl_level'] != -1) {
|
||||
$this->acl['unit'][$ea_id] = $unit['acl_level'];
|
||||
} else {
|
||||
$this->acl['unit'][$ea_id] = $this->acl['base'];
|
||||
$this->acl['admin'] = 0;
|
||||
// now go throw the flow and set the correct ACL
|
||||
// user > page > group
|
||||
// group ACL 0
|
||||
if ($_SESSION['GROUP_ACL_LEVEL'] != -1) {
|
||||
$this->acl['base'] = $_SESSION['GROUP_ACL_LEVEL'];
|
||||
}
|
||||
// page ACL 1
|
||||
if ($_SESSION['PAGES_ACL_LEVEL'][$this->page_name] != -1) {
|
||||
$this->acl['base'] = $_SESSION['PAGES_ACL_LEVEL'][$this->page_name];
|
||||
}
|
||||
// user ACL 2
|
||||
if ($_SESSION['USER_ACL_LEVEL'] != -1) {
|
||||
$this->acl['base'] = $_SESSION['USER_ACL_LEVEL'];
|
||||
}
|
||||
}
|
||||
// detail name/level set
|
||||
$this->acl['unit_detail'][$ea_id] = array (
|
||||
'name' => $unit['name'],
|
||||
'uid' => $unit['uid'],
|
||||
'level' => $this->default_acl_list[$this->acl['unit'][$ea_id]]['name'],
|
||||
'default' => $unit['default'],
|
||||
'data' => $unit['data']
|
||||
);
|
||||
// set default
|
||||
if ($unit['default']) {
|
||||
$this->acl['unit_id'] = $unit['id'];
|
||||
$this->acl['unit_name'] = $unit['name'];
|
||||
$this->acl['unit_uid'] = $unit['uid'];
|
||||
|
||||
// set the current page acl
|
||||
// start with default acl
|
||||
// set group if not -1, overrides default
|
||||
// set page if not -1, overrides group set
|
||||
$this->acl['page'] = DEFAULT_ACL_LEVEL;
|
||||
if ($_SESSION['GROUP_ACL_LEVEL'] != -1) {
|
||||
$this->acl['page'] = $_SESSION['GROUP_ACL_LEVEL'];
|
||||
}
|
||||
if (isset($_SESSION['PAGES_ACL_LEVEL'][$this->page_name]) && $_SESSION['PAGES_ACL_LEVEL'][$this->page_name] != -1) {
|
||||
$this->acl['page'] = $_SESSION['PAGES_ACL_LEVEL'][$this->page_name];
|
||||
}
|
||||
|
||||
// PER ACCOUNT (UNIT/edit access)->
|
||||
foreach ($_SESSION['UNIT'] as $ea_id => $unit) {
|
||||
// if admin flag is set, all units are set to 100
|
||||
if ($this->acl['admin']) {
|
||||
$this->acl['unit'][$ea_id] = $this->acl['base'];
|
||||
} else {
|
||||
if ($unit['acl_level'] != -1) {
|
||||
$this->acl['unit'][$ea_id] = $unit['acl_level'];
|
||||
} else {
|
||||
$this->acl['unit'][$ea_id] = $this->acl['base'];
|
||||
}
|
||||
}
|
||||
// detail name/level set
|
||||
$this->acl['unit_detail'][$ea_id] = array (
|
||||
'name' => $unit['name'],
|
||||
'uid' => $unit['uid'],
|
||||
'level' => $this->default_acl_list[$this->acl['unit'][$ea_id]]['name'],
|
||||
'default' => $unit['default'],
|
||||
'data' => $unit['data']
|
||||
);
|
||||
// set default
|
||||
if ($unit['default']) {
|
||||
$this->acl['unit_id'] = $unit['id'];
|
||||
$this->acl['unit_name'] = $unit['name'];
|
||||
$this->acl['unit_uid'] = $unit['uid'];
|
||||
}
|
||||
}
|
||||
// flag if to show extra edit access drop downs (because user has multiple groups assigned)
|
||||
if (count($_SESSION['UNIT']) > 1) {
|
||||
$this->acl['show_ea_extra'] = 1;
|
||||
} else {
|
||||
$this->acl['show_ea_extra'] = 0;
|
||||
}
|
||||
// set the default edit access
|
||||
$this->acl['default_edit_access'] = $_SESSION['UNIT_DEFAULT'];
|
||||
// integrate the type acl list, but only for the keyword -> level
|
||||
foreach ($this->default_acl_list as $level => $data) {
|
||||
$this->acl['min'][$data['type']] = $level;
|
||||
}
|
||||
// set the full acl list too
|
||||
$this->acl['acl_list'] = $_SESSION['DEFAULT_ACL_LIST'];
|
||||
// debug
|
||||
// $this->debug('ACL', $this->print_ar($this->acl));
|
||||
}
|
||||
// flag if to show extra edit access drop downs (because user has multiple groups assigned)
|
||||
if (count($_SESSION['UNIT']) > 1) {
|
||||
$this->acl['show_ea_extra'] = 1;
|
||||
} else {
|
||||
$this->acl['show_ea_extra'] = 0;
|
||||
}
|
||||
// set the default edit access
|
||||
$this->acl['default_edit_access'] = $_SESSION['UNIT_DEFAULT'];
|
||||
// integrate the type acl list, but only for the keyword -> level
|
||||
foreach ($this->default_acl_list as $level => $data) {
|
||||
$this->acl['min'][$data['type']] = $level;
|
||||
}
|
||||
// set the full acl list too
|
||||
$this->acl['acl_list'] = $_SESSION['DEFAULT_ACL_LIST'];
|
||||
// debug
|
||||
// $this->debug('ACL', $this->print_ar($this->acl));
|
||||
}
|
||||
|
||||
// METHOD: loginCheckEditAccess
|
||||
@@ -793,7 +812,7 @@ class Login extends \CoreLibs\DB\IO
|
||||
// METHOD: loginPrintLogin
|
||||
// WAS : login_print_login
|
||||
// PARAMS: none
|
||||
// RETURN: none
|
||||
// RETURN: html data for login page
|
||||
// DESC : prints out login html part if no permission (error) is set
|
||||
private function loginPrintLogin()
|
||||
{
|
||||
@@ -863,7 +882,7 @@ class Login extends \CoreLibs\DB\IO
|
||||
// METHOD: loginCloseClass
|
||||
// WAS : login_close_class
|
||||
// PARAMS: none
|
||||
// RETURN: none
|
||||
// RETURN: true on permission ok, false on permission wrong
|
||||
// DESC : last function called, writes log and prints out error msg and exists script if permission 0
|
||||
private function loginCloseClass()
|
||||
{
|
||||
@@ -882,8 +901,8 @@ class Login extends \CoreLibs\DB\IO
|
||||
// prepare for log
|
||||
if ($this->euid) {
|
||||
// get user from user table
|
||||
$q = "SELECT username, password FROM edit_user WHERE edit_user_id = ".$this->euid;
|
||||
list($username, $password) = $this->dbReturnRow($q);
|
||||
$q = "SELECT username FROM edit_user WHERE edit_user_id = ".$this->euid;
|
||||
list($username) = $this->dbReturnRow($q);
|
||||
} // if euid is set, get username (or try)
|
||||
$this->writeLog($event, '', $this->login_error, $username);
|
||||
} // write log under certain settings
|
||||
@@ -898,50 +917,50 @@ class Login extends \CoreLibs\DB\IO
|
||||
|
||||
// METHOD: loginSetTemplates
|
||||
// WAS : login_set_templates
|
||||
// PARAMS:
|
||||
// PARAMS: none
|
||||
// RETURN: none
|
||||
// DESC : checks if there are external templates, if not uses internal fallback ones
|
||||
private function loginSetTemplates()
|
||||
{
|
||||
$strings = array (
|
||||
'HTML_TITLE' => $this->l->__("LOGIN"),
|
||||
'TITLE' => $this->l->__("LOGIN"),
|
||||
'USERNAME' => $this->l->__("Username"),
|
||||
'PASSWORD' => $this->l->__("Password"),
|
||||
'LOGIN' => $this->l->__("Login"),
|
||||
'HTML_TITLE' => $this->l->__('LOGIN'),
|
||||
'TITLE' => $this->l->__('LOGIN'),
|
||||
'USERNAME' => $this->l->__('Username'),
|
||||
'PASSWORD' => $this->l->__('Password'),
|
||||
'LOGIN' => $this->l->__('Login'),
|
||||
'ERROR_MSG' => '',
|
||||
'LOGOUT_TARGET' => '',
|
||||
'PASSWORD_CHANGE_BUTTON_VALUE' => $this->l->__('Change Password')
|
||||
);
|
||||
|
||||
$error_msgs = array (
|
||||
"100" => $this->l->__("Fatal Error: <b>[EUID] came in as GET/POST!</b>"), // actually obsolete
|
||||
"1010" => $this->l->__("Fatal Error: <b>Login Failed - Wrong Username or Password</b>"), // user not found
|
||||
"1011" => $this->l->__("Fatal Error: <b>Login Failed - Wrong Username or Password</b>"), // blowfish password wrong
|
||||
"1012" => $this->l->__("Fatal Error: <b>Login Failed - Wrong Username or Password</b>"), // fallback md5 password wrong
|
||||
"1013" => $this->l->__("Fatal Error: <b>Login Failed - Wrong Username or Password</b>"), // new password_hash wrong
|
||||
"102" => $this->l->__("Fatal Error: <b>Login Failed - Please enter username and password</b>"),
|
||||
"103" => $this->l->__("Fatal Error: <b>You do not have the rights to access this Page</b>"),
|
||||
"104" => $this->l->__("Fatal Error: <b>Login Failed - User not enabled</b>"),
|
||||
"105" => $this->l->__("Fatal Error: <b>Login Failed - User is locked</b>"),
|
||||
"220" => $this->l->__("Fatal Error: <b>Password change - The user could not be found</b>"), // actually this is an illegal user, but I mask it
|
||||
'200' => $this->l->__("Fatal Error: <b>Password change - Please enter username and old password</b>"),
|
||||
"201" => $this->l->__("Fatal Error: <b>Password change - The user could not be found</b>"),
|
||||
"202" => $this->l->__("Fatal Error: <b>Password change - The old password is not correct</b>"),
|
||||
"203" => $this->l->__("Fatal Error: <b>Password change - Please fill out both new password fields</b>"),
|
||||
"204" => $this->l->__("Fatal Error: <b>Password change - The new passwords do not match</b>"),
|
||||
"205" => $this->l->__("Fatal Error: <b>Password change - The new password is not in a valid format</b>"), // we should also not here WHAT is valid
|
||||
"300" => $this->l->__("Success: <b>Password change successful</b>"), // for OK password change
|
||||
"9999" => $this->l->__("Fatal Error: <b>necessary crypt engine could not be found</b>. Login is impossible") // this is bad bad error
|
||||
'100' => $this->l->__('Fatal Error: <b>[EUID] came in as GET/POST!</b>'), // actually obsolete
|
||||
'1010' => $this->l->__('Fatal Error: <b>Login Failed - Wrong Username or Password</b>'), // user not found
|
||||
'1011' => $this->l->__('Fatal Error: <b>Login Failed - Wrong Username or Password</b>'), // blowfish password wrong
|
||||
'1012' => $this->l->__('Fatal Error: <b>Login Failed - Wrong Username or Password</b>'), // fallback md5 password wrong
|
||||
'1013' => $this->l->__('Fatal Error: <b>Login Failed - Wrong Username or Password</b>'), // new password_hash wrong
|
||||
'102' => $this->l->__('Fatal Error: <b>Login Failed - Please enter username and password</b>'),
|
||||
'103' => $this->l->__('Fatal Error: <b>You do not have the rights to access this Page</b>'),
|
||||
'104' => $this->l->__('Fatal Error: <b>Login Failed - User not enabled</b>'),
|
||||
'105' => $this->l->__('Fatal Error: <b>Login Failed - User is locked</b>'),
|
||||
'220' => $this->l->__('Fatal Error: <b>Password change - The user could not be found</b>'), // actually this is an illegal user, but I mask it
|
||||
'200' => $this->l->__('Fatal Error: <b>Password change - Please enter username and old password</b>'),
|
||||
'201' => $this->l->__('Fatal Error: <b>Password change - The user could not be found</b>'),
|
||||
'202' => $this->l->__('Fatal Error: <b>Password change - The old password is not correct</b>'),
|
||||
'203' => $this->l->__('Fatal Error: <b>Password change - Please fill out both new password fields</b>'),
|
||||
'204' => $this->l->__('Fatal Error: <b>Password change - The new passwords do not match</b>'),
|
||||
'205' => $this->l->__('Fatal Error: <b>Password change - The new password is not in a valid format</b>'), // we should also not here WHAT is valid
|
||||
'300' => $this->l->__('Success: <b>Password change successful</b>'), // for OK password change
|
||||
'9999' => $this->l->__('Fatal Error: <b>necessary crypt engine could not be found</b>. Login is impossible') // this is bad bad error
|
||||
);
|
||||
|
||||
// if password change is okay
|
||||
if ($this->password_change) {
|
||||
$strings = array_merge($strings, array (
|
||||
'TITLE_PASSWORD_CHANGE' => 'Change Password for User',
|
||||
'OLD_PASSWORD' => $this->l->__("Old Password"),
|
||||
'NEW_PASSWORD' => $this->l->__("New Password"),
|
||||
'NEW_PASSWORD_CONFIRM' => $this->l->__("New Password confirm"),
|
||||
'OLD_PASSWORD' => $this->l->__('Old Password'),
|
||||
'NEW_PASSWORD' => $this->l->__('New Password'),
|
||||
'NEW_PASSWORD_CONFIRM' => $this->l->__('New Password confirm'),
|
||||
'CLOSE' => $this->l->__('Close'),
|
||||
'JS_SHOW_HIDE' => "function ShowHideDiv(id) { element = document.getElementById(id); if (element.className == 'visible' || !element.className) element.className = 'hidden'; else element.className = 'visible'; }",
|
||||
'PASSWORD_CHANGE_BUTTON' => '<input type="button" name="pw_change" value="'.$strings['PASSWORD_CHANGE_BUTTON_VALUE'].'" OnClick="ShowHideDiv(\'pw_change_div\');">'
|
||||
@@ -960,7 +979,10 @@ class Login extends \CoreLibs\DB\IO
|
||||
</div>
|
||||
{PASSWORD_CHANGE_SHOW}
|
||||
EOM;
|
||||
} else {
|
||||
}
|
||||
if ($this->password_forgot) {
|
||||
}
|
||||
if (!$this->password_change && !$this->password_forgot) {
|
||||
$strings = array_merge($strings, array (
|
||||
'JS_SHOW_HIDE' => '',
|
||||
'PASSWORD_CHANGE_BUTTON' => '',
|
||||
|
||||
@@ -270,12 +270,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->int_pk_name = $this->pk_name;
|
||||
// check if reference_arrays are given and proceed them
|
||||
if (is_array($config_array["reference_arrays"])) {
|
||||
while (list($key, $value) = each($config_array["reference_arrays"])) {
|
||||
foreach ($config_array["reference_arrays"] as $key => $value) {
|
||||
$this->reference_array[$key] = $value;
|
||||
}
|
||||
}
|
||||
if (is_array($config_array["element_list"])) {
|
||||
while (list($key, $value) = each($config_array["element_list"])) {
|
||||
foreach ($config_array["element_list"] as $key => $value) {
|
||||
$this->element_list[$key] = $value;
|
||||
}
|
||||
}
|
||||
@@ -319,7 +319,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
}
|
||||
reset($this->table_array);
|
||||
$string .= "<b>TABLE ARRAY DUMP:</b> ".$this->table_name."<br>";
|
||||
while (list($key, $value) = each($this->table_array)) {
|
||||
foreach ($this->table_array as $key => $value) {
|
||||
$string .= "<b>$key</b>: ".$value["value"]."<br>";
|
||||
}
|
||||
return $string;
|
||||
@@ -347,7 +347,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->table_array = array ();
|
||||
}
|
||||
reset($this->table_array);
|
||||
while (list($key, $value) = each($this->table_array)) {
|
||||
foreach ($this->table_array as $key => $value) {
|
||||
if ($value[$want_key] && !$key_value) {
|
||||
return $key;
|
||||
} elseif ($value[$want_key] == $key_value && $key_value) {
|
||||
@@ -368,7 +368,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->table_array = array ();
|
||||
}
|
||||
reset($this->table_array);
|
||||
while (list($key, $value) = each($this->table_array)) {
|
||||
foreach ($this->table_array as $key => $value) {
|
||||
if ($value[$want_key] && !$key_value) {
|
||||
array_push($key_array, $key);
|
||||
}
|
||||
@@ -474,22 +474,26 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
{
|
||||
// only do if the user is allowed to delete
|
||||
if ($this->group_level_user <= $this->security_level["delete"] && !$this->table_array["protected"]["value"] && !$this->error) {
|
||||
for ($i = 0; $i < count($element_list); $i ++) {
|
||||
if (!is_array($element_list)) {
|
||||
$element_list = array ();
|
||||
}
|
||||
for ($i = 0, $i_max = count($element_list); $i < $i_max; $i ++) {
|
||||
// $this->debug('form_error', "Array: ".is_array($this->element_list[$element_list[$i]]["read_data"])." | ".$this->element_list[$element_list[$i]]["delete"]);
|
||||
// if prefix, set it
|
||||
$prfx = ($this->element_list[$element_list[$i]]["prefix"]) ? $this->element_list[$element_list[$i]]["prefix"]."_" : '';
|
||||
// get the primary key
|
||||
while (list($el_name, $data) = each($this->element_list[$element_list[$i]]["elements"])) {
|
||||
foreach ($this->element_list[$element_list[$i]]["elements"] as $el_name => $data) {
|
||||
if ($data["pk_id"]) {
|
||||
$pk_name = $el_name;
|
||||
}
|
||||
}
|
||||
// which key should be deleted
|
||||
$id = $remove_name[$i];
|
||||
if (($this->element_list[$element_list[$i]]["delete_name"] || $this->element_list[$element_list[$i]]["delete"]) && !$this->element_list[$element_list[$i]]["enable_name"]) {
|
||||
if (($this->element_list[$element_list[$i]]["delete_name"] || $this->element_list[$element_list[$i]]["delete"]) &&
|
||||
!$this->element_list[$element_list[$i]]["enable_name"]
|
||||
) {
|
||||
// flag var name
|
||||
$flag = $remove_name[$i]."_flag";
|
||||
|
||||
if ($_POST[$flag] == "true") {
|
||||
$q = "DELETE FROM ".$element_list[$i]." WHERE ".$pk_name." = ".$_POST[$id];
|
||||
$this->dbExec($q);
|
||||
@@ -497,7 +501,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->warning = 1;
|
||||
} // post okay true -> delete
|
||||
} elseif (is_array($this->element_list[$element_list[$i]]["read_data"]) && !$this->element_list[$element_list[$i]]["delete"]) {
|
||||
for ($j = 0; $j < count($_POST[$id]); $j ++) {
|
||||
if (!is_array($_POST[$id])) {
|
||||
$_POST[$id] = array ();
|
||||
}
|
||||
for ($j = 0, $j_max = count($_POST[$id]); $j < $j_max; $j ++) {
|
||||
// if it is not activated
|
||||
if (!$_POST[$remove_name[$i]][$j]) {
|
||||
$q = "UPDATE ".$element_list[$i]." WHERE ".$pk_name." = ".$_POST[$prfx.$pk_name][$j];
|
||||
@@ -511,7 +518,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
// $this->debug('form_clean', "ID [$id] [$prfx.$pk_name]");
|
||||
// $this->debug('form_clean', "ID arr: ".$this->print_ar($_POST[$id]));
|
||||
// $this->debug('form_clean', "PK arr: ".$this->print_ar($_POST[$prfx.$pk_name]));
|
||||
for ($j = 0; $j < count($_POST[$prfx.$pk_name]); $j ++) {
|
||||
for ($j = 0, $j_max = count($_POST[$prfx.$pk_name]); $j < $j_max; $j ++) {
|
||||
if (!$_POST[$remove_name[$i]][$j] && $_POST[$prfx.$pk_name][$j]) {
|
||||
$q = "DELETE FROM ".$element_list[$i]." WHERE ".$pk_name." = ".$_POST[$prfx.$pk_name][$j];
|
||||
// $this->debug('edit_db', "DEL: $q");
|
||||
@@ -540,13 +547,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
|
||||
// lade liste
|
||||
$this->dbExec($this->load_query);
|
||||
while ($res = $this->db_fetch_array()) {
|
||||
while ($res = $this->dbFetchArray()) {
|
||||
$pk_ids[] = $res[$this->int_pk_name];
|
||||
if ($res[$this->int_pk_name] == $this->table_array[$this->int_pk_name]["value"]) {
|
||||
$pk_selected = $res[$this->int_pk_name];
|
||||
}
|
||||
unset($t_string);
|
||||
for ($i = 0; $i < count($this->field_array); $i ++) {
|
||||
for ($i = 0, $i_max = count($this->field_array); $i < $i_max; $i ++) {
|
||||
if ($t_string) {
|
||||
$t_string .= ", ";
|
||||
}
|
||||
@@ -612,7 +619,14 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$show_delete = 1;
|
||||
}
|
||||
} // print save/delete row at all$
|
||||
return array('seclevel_okay' => $seclevel_okay, 'save' => $save, 'pk_name' => $pk_name, 'pk_value' => $pk_value, 'show_delete' => $show_delete, 'hide_delete_checkbox' => $hide_delete_checkbox);
|
||||
return array(
|
||||
'seclevel_okay' => $seclevel_okay,
|
||||
'save' => $save,
|
||||
'pk_name' => $pk_name,
|
||||
'pk_value' => $pk_value,
|
||||
'show_delete' => $show_delete,
|
||||
'hide_delete_checkbox' => $hide_delete_checkbox
|
||||
);
|
||||
} // end of function
|
||||
|
||||
// METHOD: formCreateElement
|
||||
@@ -717,7 +731,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$data['name'] = $element_name;
|
||||
$data['value'][] = "";
|
||||
$data['output'][] = $this->l->__("Please choose ...");
|
||||
while ($res = $this->db_return($query)) {
|
||||
while ($res = $this->dbReturn($query)) {
|
||||
$data['value'][] = $res[0];
|
||||
$data['output'][] = $res[1];
|
||||
if ($this->table_array[$element_name]["value"] == $res[0]) {
|
||||
@@ -743,7 +757,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$data['value'][] = "";
|
||||
$data['output'][] = $this->l->__("Please choose ...");
|
||||
// outer query overrules inner
|
||||
while (list($key, $value) = each($query)) {
|
||||
foreach ($query as $key => $value) {
|
||||
$data['value'][] = $key;
|
||||
$data['output'][] = $value;
|
||||
if ($this->table_array[$element_name]["value"] == $key) {
|
||||
@@ -757,7 +771,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$query = $this->table_array[$element_name]["query"];
|
||||
}
|
||||
$data['name'] = $element_name;
|
||||
while (list($key, $value) = each($query)) {
|
||||
foreach ($query as $key => $value) {
|
||||
$data['value'][] = $key;
|
||||
$data['output'][] = $value;
|
||||
if ($this->table_array[$element_name]["value"] == $key) {
|
||||
@@ -806,7 +820,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->table_array = array ();
|
||||
}
|
||||
reset($this->table_array);
|
||||
while (list($key, $value) = each($this->table_array)) {
|
||||
foreach ($this->table_array as $key => $value) {
|
||||
//if ($value["mandatory"] && $value["error_check"])
|
||||
// if error value set && somethign input, check if input okay
|
||||
if ($value["error_check"] && $this->table_array[$key]["value"]) {
|
||||
@@ -844,7 +858,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
break;
|
||||
// check unique, check if field in table is not yet exist
|
||||
case "unique":
|
||||
$q = "SELECT ".$key." FROM ".$this->table_name." WHERE ".$key." = '".$this->db_escape_string($this->table_array[$key]["value"])."'";
|
||||
$q = "SELECT ".$key." FROM ".$this->table_name." WHERE ".$key." = '".$this->dbEscapeString($this->table_array[$key]["value"])."'";
|
||||
if ($this->table_array[$this->int_pk_name]["value"]) {
|
||||
$q .= " AND ".$this->int_pk_name." <> ".$this->table_array[$this->int_pk_name]["value"];
|
||||
}
|
||||
@@ -928,7 +942,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->reference_array = array ();
|
||||
}
|
||||
reset($this->reference_array);
|
||||
while (list($key, $value) = each($this->reference_array)) {
|
||||
foreach ($this->reference_array as $key => $value) {
|
||||
if ($this->reference_array[$key]["mandatory"] && !$this->reference_array[$key]["selected"][0]) {
|
||||
$this->msg .= sprintf($this->l->__("Please select at least one Element from field <b>%s</b>!<br>"), $this->reference_array[$key]["output_name"]);
|
||||
}
|
||||
@@ -938,7 +952,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
if (is_array($this->element_list)) {
|
||||
// check the mandatory stuff
|
||||
// if mandatory, check that at least on pk exists or if at least the mandatory field is filled
|
||||
while (list($table_name, $reference_array) = each($this->element_list)) {
|
||||
foreach ($this->element_list as $table_name => $reference_array) {
|
||||
// set pk/fk id for this
|
||||
foreach ($reference_array['elements'] as $_name => $_data) {
|
||||
if ($_data['pk_id']) {
|
||||
@@ -955,7 +969,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
// get max elements
|
||||
$max = 0;
|
||||
foreach ($keys as $key) {
|
||||
if (count($_POST[$prfx.$key]) > $max) {
|
||||
if (is_array($_POST[$prfx.$key]) && count($_POST[$prfx.$key]) > $max) {
|
||||
$max = count($_POST[$prfx.$key]);
|
||||
}
|
||||
// $this->debug('edit_error_chk', "KEY: $prfx$key | count: ".count($_POST[$prfx.$key])." | M: $max");
|
||||
@@ -965,7 +979,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
# check each row
|
||||
for ($i = 0; $i < $max; $i ++) {
|
||||
// either one of the post pks is set, or the mandatory
|
||||
while (list($el_name, $data_array) = each($reference_array["elements"])) {
|
||||
foreach ($reference_array["elements"] as $el_name => $data_array) {
|
||||
if ($data_array["mandatory"]) {
|
||||
$mand_name = $data_array["output_name"];
|
||||
}
|
||||
@@ -999,7 +1013,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
switch ($error_check) {
|
||||
// check unique, check if field in table is not yet exist
|
||||
case "unique":
|
||||
$q = "SELECT ".$_pk_name." FROM ".$table_name." WHERE ".$el_name." = '".$this->db_escape_string($_POST[$prfx.$el_name][$i])."'";
|
||||
$q = "SELECT ".$_pk_name." FROM ".$table_name." WHERE ".$el_name." = '".$this->dbEscapeString($_POST[$prfx.$el_name][$i])."'";
|
||||
if ($this->table_array[$this->int_pk_name]["value"]) {
|
||||
$q .= " AND ".$this->int_pk_name." <> ".$this->table_array[$this->int_pk_name]["value"];
|
||||
}
|
||||
@@ -1078,7 +1092,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->table_array = array ();
|
||||
}
|
||||
reset($this->table_array);
|
||||
while (list($key, $value) = each($this->table_array)) {
|
||||
foreach ($this->table_array as $key => $value) {
|
||||
unset($this->table_array[$key]["value"]);
|
||||
unset($this->table_array[$key]["input_value"]);
|
||||
// if preset var present preset
|
||||
@@ -1091,7 +1105,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->reference_array = array ();
|
||||
}
|
||||
reset($this->reference_array);
|
||||
while (list($key, $value) = each($this->reference_array)) {
|
||||
foreach ($this->reference_array as $key => $value) {
|
||||
unset($this->reference_array[$key]["selected"]);
|
||||
}
|
||||
}
|
||||
@@ -1109,14 +1123,14 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
if ($pk_id) {
|
||||
$this->pk_id = $pk_id;
|
||||
}
|
||||
$this->table_array = $this->db_read(1);
|
||||
$this->table_array = $this->dbRead(1);
|
||||
|
||||
// reset all temp fields
|
||||
if (!is_array($this->table_array)) {
|
||||
$this->table_array = array ();
|
||||
}
|
||||
reset($this->table_array);
|
||||
while (list($key, $value) = each($this->table_array)) {
|
||||
foreach ($this->table_array as $key => $value) {
|
||||
unset($this->table_array[$key]["input_value"]);
|
||||
}
|
||||
|
||||
@@ -1126,10 +1140,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->reference_array = array ();
|
||||
}
|
||||
reset($this->reference_array);
|
||||
while (list($key, $value) = each($this->reference_array)) {
|
||||
foreach ($this->reference_array as $key => $value) {
|
||||
unset($this->reference_array[$key]["selected"]);
|
||||
$q = "SELECT ".$this->reference_array[$key]["other_table_pk"]." FROM ".$this->reference_array[$key]["table_name"]." WHERE ".$this->int_pk_name."=".$this->table_array[$this->int_pk_name]["value"];
|
||||
while ($res = $this->db_return($q)) {
|
||||
while ($res = $this->dbReturn($q)) {
|
||||
$this->reference_array[$key]["selected"][] = $res[$this->reference_array[$key]["other_table_pk"]];
|
||||
}
|
||||
}
|
||||
@@ -1151,13 +1165,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->table_array = array ();
|
||||
}
|
||||
reset($this->table_array);
|
||||
while (list($key, $value) = each($this->table_array)) {
|
||||
foreach ($this->table_array as $key => $value) {
|
||||
// drop_down_db with input + reference table
|
||||
// $this->debug('form', "A: ".$this->table_array[$key]["type"]." --- ".$this->table_array[$key]["input_value"]);
|
||||
if ($this->table_array[$key]["type"] == "drop_down_db_input" && $this->table_array[$key]["input_value"]) {
|
||||
// $this->debug('form', "HERE");
|
||||
// check if this text name already exists (lowercase compare)
|
||||
$q = "SELECT ".$this->table_array[$key]["pk_name"]." FROM ".$this->table_array[$key]["table_name"]." WHERE LCASE(".$this->table_array[$key]["input_name"].") = '".$this->db_escape_string(strtolower($this->table_array[$key]["input_value"]))."'";
|
||||
$q = "SELECT ".$this->table_array[$key]["pk_name"]." FROM ".$this->table_array[$key]["table_name"]." WHERE LCASE(".$this->table_array[$key]["input_name"].") = '".$this->dbEscapeString(strtolower($this->table_array[$key]["input_value"]))."'";
|
||||
// if a where was given, add here
|
||||
if ($this->table_array[$key]["where"]) {
|
||||
$q .= " AND ".$this->table_array[$key]["where"];
|
||||
@@ -1168,7 +1182,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
} else {
|
||||
// if a where was given, set this key also [dangerous!]
|
||||
// postgreSQL compatible insert
|
||||
$q = "INSERT INTO ".$this->table_array[$key]["table_name"]." (".$this->table_array[$key]["input_name"].") VALUES ('".$this->db_escape_string($this->table_array[$key]["input_value"])."')";
|
||||
$q = "INSERT INTO ".$this->table_array[$key]["table_name"]." (".$this->table_array[$key]["input_name"].") VALUES ('".$this->dbEscapeString($this->table_array[$key]["input_value"])."')";
|
||||
$this->dbExec($q);
|
||||
if ($this->table_array[$key]["where"]) {
|
||||
// make an update on the just inseted data with the where data als update values
|
||||
@@ -1186,7 +1200,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
// if drop down & input are different
|
||||
if ($this->table_array[$key]["input_value"] != $this->table_array[$key]["value"]) {
|
||||
// check if "right input" is in DB
|
||||
$q = "SELECT ".$this->table_array[$key]["input_name"]." FROM ".$this->table_array[$key]["table_name"]." WHERE LCASE(".$this->table_array[$key]["input_name"].") = '".strtolower($this->db_escape_string($this->table_array[$key]["input_value"]))."'";
|
||||
$q = "SELECT ".$this->table_array[$key]["input_name"]." FROM ".$this->table_array[$key]["table_name"]." WHERE LCASE(".$this->table_array[$key]["input_name"].") = '".strtolower($this->dbEscapeString($this->table_array[$key]["input_value"]))."'";
|
||||
// if a where was given, add here
|
||||
if ($this->table_array[$key]["where"]) {
|
||||
$q .= " AND ".$this->table_array[$key]["where"];
|
||||
@@ -1262,7 +1276,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$q = "DELETE FROM ".$reference_array["table_name"]." WHERE ".$this->int_pk_name."=".$this->table_array[$this->int_pk_name]["value"];
|
||||
$this->dbExec($q);
|
||||
$q = "INSERT INTO ".$reference_array["table_name"]." (".$reference_array["other_table_pk"].", ".$this->int_pk_name.") VALUES ";
|
||||
for ($i = 0; $i < count($reference_array["selected"]); $i ++) {
|
||||
for ($i = 0, $i_max = count($reference_array["selected"]); $i < $i_max; $i ++) {
|
||||
$t_q = "(".$reference_array["selected"][$i].", ".$this->table_array[$this->int_pk_name]["value"].")";
|
||||
$this->dbExec($q.$t_q);
|
||||
}
|
||||
@@ -1274,7 +1288,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->element_list = array ();
|
||||
}
|
||||
reset($this->element_list);
|
||||
while (list($table_name, $reference_array) = each($this->element_list)) {
|
||||
foreach ($this->element_list as $table_name => $reference_array) {
|
||||
// get the number of keys from the elements array
|
||||
$keys = array_keys($reference_array["elements"]);
|
||||
// element prefix name
|
||||
@@ -1282,13 +1296,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
// get max elements
|
||||
$max = 0;
|
||||
foreach ($keys as $key) {
|
||||
if (count($_POST[$prfx.$key]) > $max) {
|
||||
if (is_array($_POST[$prfx.$key]) && count($_POST[$prfx.$key]) > $max) {
|
||||
$max = count($_POST[$prfx.$key]);
|
||||
}
|
||||
}
|
||||
// $this->debug('edit_error', "MAX: $max");
|
||||
// check if there is a hidden key, update, else insert
|
||||
while (list($el_name, $data_array) = each($reference_array["elements"])) {
|
||||
foreach ($reference_array["elements"] as $el_name => $data_array) {
|
||||
// this is only for reference_data part, at least one of the text fields need to be set for writing
|
||||
$blow_write = array ();
|
||||
// $this->debug('edit_error_query', "QUERY: ".$this->print_ar($_POST));
|
||||
@@ -1364,14 +1378,14 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$q_values[$i] .= $_value;
|
||||
} else {
|
||||
// normal data gets escaped
|
||||
$q_data[$i] .= $el_name." = '".$this->db_escape_string($_value)."'";
|
||||
$q_values[$i] .= "'".$this->db_escape_string($_value)."'";
|
||||
$q_data[$i] .= $el_name." = '".$this->dbEscapeString($_value)."'";
|
||||
$q_values[$i] .= "'".$this->dbEscapeString($_value)."'";
|
||||
}
|
||||
}
|
||||
}
|
||||
} // eche table elements
|
||||
// finalize the queries, add FK key reference for inserts and run the query
|
||||
for ($i = 0; $i < count($type); $i ++) {
|
||||
for ($i = 0, $i_max = count($type); $i < $i_max; $i ++) {
|
||||
$q = '';
|
||||
if (!$no_write[$i]) {
|
||||
if ($type[$i] == "update") {
|
||||
@@ -1416,7 +1430,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->element_list = array ();
|
||||
}
|
||||
reset($this->element_list);
|
||||
while (list($table_name, $data_array) = each($this->element_list)) {
|
||||
foreach ($this->element_list as $table_name => $data_array) {
|
||||
$q = "DELETE FROM ".$table_name." WHERE ".$this->int_pk_name." = ".$this->table_array[$this->int_pk_name]["value"];
|
||||
$this->dbExec($q);
|
||||
}
|
||||
@@ -1426,12 +1440,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->table_array = array ();
|
||||
}
|
||||
reset($this->table_array);
|
||||
while (list($key, $value) = each($this->table_array)) {
|
||||
foreach ($this->table_array as $key => $value) {
|
||||
if ($this->table_array[$key]["type"] == "file") {
|
||||
unlink($this->table_array[$key]["save_dir"].$this->table_array[$key]["value"]);
|
||||
}
|
||||
}
|
||||
$this->db_delete();
|
||||
$this->dbDelete();
|
||||
$this->warning = 1;
|
||||
$this->msg = $this->l->__("Dataset has been deleted!");
|
||||
}
|
||||
@@ -1441,21 +1455,25 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
// PARAMS: $hidden_array
|
||||
// RETURN: the input fields (html)
|
||||
// DESC : creates HTML hidden input fields out of an hash array
|
||||
public function formCreateHiddenFields($hidden_array = "")
|
||||
public function formCreateHiddenFields($hidden_array = array ())
|
||||
{
|
||||
$hidden = array ();
|
||||
if (!is_array($this->table_array)) {
|
||||
$this->table_array = array ();
|
||||
}
|
||||
reset($this->table_array);
|
||||
while (list($key, $value) = each($this->table_array)) {
|
||||
foreach ($this->table_array as $key => $value) {
|
||||
if ($this->table_array[$key]["type"] == "hidden") {
|
||||
$hidden_array[$key] = $this->table_array[$key]["value"];
|
||||
if (array_key_exists($key, $this->table_array)) {
|
||||
$hidden_array[$key] = $this->table_array[$key]["value"];
|
||||
} else {
|
||||
$hidden_array[$key] = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
if (is_array($hidden_array)) {
|
||||
reset($hidden_array);
|
||||
while (list($key, $value) = each($hidden_array)) {
|
||||
foreach ($hidden_array as $key => $value) {
|
||||
$hidden[] = array('key' => $key, 'value' => $value);
|
||||
}
|
||||
}
|
||||
@@ -1475,7 +1493,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
}
|
||||
$data['name'] = $this->reference_array[$table_name]["other_table_pk"];
|
||||
$data['size'] = $this->reference_array[$table_name]["select_size"];
|
||||
while ($res = $this->db_return($this->reference_array[$table_name]["query"])) {
|
||||
while ($res = $this->dbReturn($this->reference_array[$table_name]["query"])) {
|
||||
$data['value'][] = $res[0];
|
||||
$data['output'][] = $res[1];
|
||||
$data['selected'][] = ($this->checked($this->reference_array[$table_name]["selected"], $res[0])) ? $res[0] : '';
|
||||
@@ -1523,7 +1541,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
reset($this->element_list[$table_name]["elements"]);
|
||||
// generic data read in (counts for all rows)
|
||||
// visible list data output
|
||||
while (list($el_name, $data_array) = each($this->element_list[$table_name]["elements"])) {
|
||||
foreach ($this->element_list[$table_name]["elements"] as $el_name => $data_array) {
|
||||
$this->debug('CFG', 'El: '.$el_name.' -> '.$this->print_ar($data_array));
|
||||
// if the element name matches the read array, then set the table as a name prefix
|
||||
$q_select[] = $el_name; // this is for reading the data
|
||||
@@ -1542,7 +1560,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
// only two elements are allowed: pos 0 is key, pso 1 is visible output name
|
||||
if ($data_array['type'] == 'drop_down_db') {
|
||||
$md_q = md5($data_array['query']);
|
||||
while ($res = $this->db_return($data_array['query'])) {
|
||||
while ($res = $this->dbReturn($data_array['query'])) {
|
||||
$this->debug('edit', "Q[$md_q] pos: ".$this->cursor_ext[$md_q]["pos"]." | want: ".$data_array["preset"]." | set: ".$data['preset'][$el_name]);
|
||||
// first is default for this element
|
||||
if (!$data['preset'][$el_name] && ($this->cursor_ext[$md_q]["pos"] == $data_array['preset'])) {
|
||||
@@ -1555,7 +1573,19 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
} elseif ($data_array["element_list"]) {
|
||||
$data['element_list'][$el_name] = $data_array["element_list"]; // this is for the checkboxes
|
||||
}
|
||||
$proto[$el_name] = ($this->error) ? $_POST[$el_name][(count($_POST[$el_name]) - 1)] : ''; // this is for the new line
|
||||
$this->debug('CREATE ELEMENT LIST TABLE', 'Post: '.$el_name.' => '.$_POST[$el_name].' => '.is_array($_POST[$el_name]));
|
||||
// if error, check new line addition so we don't loose it
|
||||
if ($this->error) {
|
||||
if (is_array($_POST[$el_name])) {
|
||||
// this is for the new line
|
||||
$proto[$el_name] = $_POST[$el_name][(count($_POST[$el_name]) - 1)];
|
||||
} else {
|
||||
$proto[$el_name] = 0;
|
||||
}
|
||||
} else {
|
||||
$proto[$el_name] = '';
|
||||
}
|
||||
// $proto[$el_name] = $this->error ? $_POST[$el_name][(count($_POST[$el_name]) - 1)] : '';
|
||||
}
|
||||
// $this->debug('CFG DATA', 'Data: '.$this->print_ar($data));
|
||||
// $this->debug('CFG PROTO', 'Proto: '.$this->print_ar($proto));
|
||||
@@ -1610,11 +1640,11 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
if ($q) {
|
||||
$pos = 0; // position in while for overwrite if needed
|
||||
// read out the list and add the selected data if needed
|
||||
while ($res = $this->db_return($q)) {
|
||||
while ($res = $this->dbReturn($q)) {
|
||||
$_data = array ();
|
||||
$prfx = $data["prefix"]; // short
|
||||
// go through each res
|
||||
for ($i = 0; $i < count($q_select); $i ++) {
|
||||
for ($i = 0, $i_max = count($q_select); $i < $i_max; $i ++) {
|
||||
// query select part, set to the element name
|
||||
$el_name = $q_select[$i];
|
||||
// $this->debug('edit_error', "[$i] ELNAME: $el_name | POS[$prfx$el_name]: ".$_POST[$prfx.$el_name][$pos]." | RES: ".$res[$el_name]);
|
||||
@@ -1649,12 +1679,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
$this->element_list[$table_name]['max_empty'] = 10;
|
||||
}
|
||||
// check if we need to fill fields
|
||||
$element_count = count($data['content']);
|
||||
$missing_empty_count = $this->element_list[$table_name]['max_empty'] - count($data['content']);
|
||||
$element_count = is_array($data['content']) ? count($data['content']) : 0;
|
||||
$missing_empty_count = $this->element_list[$table_name]['max_empty'] - $element_count;
|
||||
$this->debug('CFG MAX', 'Max empty: '.$this->element_list[$table_name]['max_empty'].', Missing: '.$missing_empty_count.', Has: '.$element_count);
|
||||
// set if we need more open entries or if we do not have any entries yet
|
||||
if (($missing_empty_count < $this->element_list[$table_name]['max_empty']) || $element_count == 0) {
|
||||
for ($pos = count($data['content']); $pos <= ($this->element_list[$table_name]['max_empty'] + $element_count); $pos ++) {
|
||||
for ($pos = $element_count , $pos_max = $this->element_list[$table_name]['max_empty'] + $element_count; $pos <= $pos_max; $pos ++) {
|
||||
$_data = array ();
|
||||
|
||||
// the fields that need to be filled are in data->type array:
|
||||
|
||||
Reference in New Issue
Block a user