Compare commits

...

11 Commits

Author SHA1 Message Date
Clemens Schwaighofer
be03bc96cb Core libs clean up
- end comments from # to //
- clean up not initialzed vars and wrong named vars
2019-04-22 10:28:01 +09:00
Clemens Schwaighofer
4f73a88a8b Remove old config template 2019-04-22 09:53:58 +09:00
Clemens Schwaighofer
b2019226da Update Smarty test, Base class email comment update
- smarty test with optgroup
- ignore file update for log folder
- email regex comment update
2019-04-03 17:45:56 +09:00
Clemens Schwaighofer
754c2edbd2 Add three new methods to the Basic class
- fceil: hack for float numbers that not properly round up
- floorp: roundown(number, precision): eg 48756, -2 => 48700
- initNumeric: set variable to 0 if not numeric
2018-12-19 11:17:20 +09:00
Clemens Schwaighofer
98e16e6143 Some minor updates for test files 2018-12-14 13:07:10 +09:00
Clemens Schwaighofer
005584e2ed Remove old .htaccess php xdebug, test updates, fixes in admin header
- remove all old php_value settings as they wont work with php-fpm
- test check for removeLB
- fix URL for Error handling include in admin header
2018-11-30 11:37:50 +09:00
Clemens Schwaighofer
7e34c5321d Fix libs Login, Basic and DB
- Login ads auto return error for AJAX based calls (so the script
doesn't loop hang)
- Basic gets remove line break call
- DB gets minor updates with arrays set and fixes in old internal method calls
2018-11-28 15:28:27 +09:00
Clemens Schwaighofer
9d918f3b43 Fix admin edit_access wrong enabled type, other fixes
General notice fixes as much as possible
2018-11-07 13:32:58 +09:00
Clemens Schwaighofer
433b21ab6f Fix default edit_* tables and triggers 2018-10-19 10:17:41 +09:00
Clemens Schwaighofer
826b5fdfd6 Move master config to configs folder and create symlink 2018-10-15 09:54:08 +09:00
Clemens Schwaighofer
a923f07fc7 Install basic composer.phar file 2018-10-12 11:02:45 +09:00
56 changed files with 844 additions and 608 deletions

21
4dev/composer/install.txt Normal file
View File

@@ -0,0 +1,21 @@
Install composer:
curl -sS https://getcomposer.org/installer | /usr/local/php-7.2-httpd-2.4/bin/php
Update composer phar file
/usr/local/php-7.2-httpd-2.4/bin/php composer.phar selfupdate
Install something:
/usr/local/php-7.2-httpd-2.4/bin/php composer.phar require something/something
Update all installed:
/usr/local/php-7.2-httpd-2.4/bin/php composer.phar update
Or update only one package:
/usr/local/php-7.2-httpd-2.4/bin/php composer.phar something/something
Install AWS SDK:
/usr/local/php-7.2-httpd-2.4/bin/php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
Install zipStream:
/usr/local/php-7.2-httpd-2.4/bin/php composer.phar require maennchen/zipstream-php

View File

@@ -136,7 +136,7 @@ INSERT INTO edit_user (username, password, enabled, debug, db_debug, email, prot
-- edit access -- edit access
DELETE FROM edit_access; DELETE FROM edit_access;
INSERT INTO edit_access (name, enabled, protected) VALUES ('Admin Access', 't', 1); INSERT INTO edit_access (name, enabled, protected) VALUES ('Admin Access', 1, 1);
-- edit access user -- edit access user
DELETE FROM edit_access_user; DELETE FROM edit_access_user;

View File

@@ -12,6 +12,7 @@ CREATE TABLE edit_access (
description VARCHAR, description VARCHAR,
color VARCHAR, color VARCHAR,
uid VARCHAR, uid VARCHAR,
enabled BOOLEAN DEFAULT 'true', enabled SMALLINT NOT NULL DEFAULT 0,
protected INT protected INT,
deleted SMALLINT DEFAULT 0
) INHERITS (edit_generic) WITHOUT OIDS; ) INHERITS (edit_generic) WITHOUT OIDS;

View File

@@ -12,5 +12,5 @@ CREATE TABLE edit_scheme (
name VARCHAR, name VARCHAR,
header_color VARCHAR, header_color VARCHAR,
css_file VARCHAR, css_file VARCHAR,
template VARCHARs template VARCHAR
) INHERITS (edit_generic) WITHOUT OIDS; ) INHERITS (edit_generic) WITHOUT OIDS;

View File

@@ -26,8 +26,8 @@ CREATE TABLE edit_user (
edit_scheme_id INT, edit_scheme_id INT,
edit_access_right_id INT NOT NULL, edit_access_right_id INT NOT NULL,
login_error_count INT, login_error_count INT,
login_error_date_last TIMESTAMP WTIHOUT TIME ZONE, login_error_date_last TIMESTAMP WITHOUT TIME ZONE,
login_error_date_first TIMESTAMP WTIHOUT TIME ZONE, login_error_date_first TIMESTAMP WITHOUT TIME ZONE,
strict SMALLINT DEFAULT 0, strict SMALLINT DEFAULT 0,
locked SMALLINT DEFAULT 0, locked SMALLINT DEFAULT 0,
password_change_date TIMESTAMP WITHOUT TIME ZONE, -- only when password is first set or changed password_change_date TIMESTAMP WITHOUT TIME ZONE, -- only when password is first set or changed

View File

@@ -2,3 +2,8 @@ DROP TRIGGER trg_edit_access ON edit_access;
CREATE TRIGGER trg_edit_access CREATE TRIGGER trg_edit_access
BEFORE INSERT OR UPDATE ON edit_access BEFORE INSERT OR UPDATE ON edit_access
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
DROP TRIGGER trg_set_edit_access_uid ON edit_access;
CREATE TRIGGER trg_set_edit_access_uid
BEFORE INSERT OR UPDATE ON edit_access
FOR EACH ROW EXECUTE PROCEDURE set_edit_access_uid();

View File

@@ -1,4 +0,0 @@
-- DROP TRIGGER trg_set_edit_access_uid ON edit_access;
CREATE TRIGGER trg_set_edit_access_uid
BEFORE INSERT OR UPDATE ON edit_access
FOR EACH ROW EXECUTE PROCEDURE set_edit_access_uid();

View File

@@ -1,6 +1,3 @@
# php_value xdebug.profiler_output_dir /home/developer/xdebug/
# php_value xdebug.profiler_output_name timestamp
# php_value xdebug.profiler_enable 0
# all .inc files are denied access from outside # all .inc files are denied access from outside
<Files "*.inc"> <Files "*.inc">
Require all denied Require all denied

View File

@@ -32,7 +32,7 @@ ob_end_flush();
// set + check edit access id // set + check edit access id
$edit_access_id = 3; $edit_access_id = 3;
if (array_key_exists('unit', $login->acl)) { if (isset($login) && is_object($login) && isset($login->acl['unit'])) {
print "ACL UNIT: ".print_r(array_keys($login->acl['unit']), 1)."<br>"; print "ACL UNIT: ".print_r(array_keys($login->acl['unit']), 1)."<br>";
print "ACCESS CHECK: ".$login->loginCheckEditAccess($edit_access_id)."<br>"; print "ACCESS CHECK: ".$login->loginCheckEditAccess($edit_access_id)."<br>";
if ($login->loginCheckEditAccess($edit_access_id)) { if ($login->loginCheckEditAccess($edit_access_id)) {
@@ -68,14 +68,16 @@ print "CALLER BACKTRACE: ".$basic->getCallerMethod()."<br>";
$basic->debug('SOME MARK', 'Some error output'); $basic->debug('SOME MARK', 'Some error output');
print "EDIT ACCESS ID: ".$basic->edit_access_id."<br>"; print "EDIT ACCESS ID: ".$basic->edit_access_id."<br>";
// print "ACL: <br>".$basic->print_ar($login->acl)."<br>"; if (isset($login)) {
$basic->debug('ACL', "ACL: ".$basic->printAr($login->acl)); // print "ACL: <br>".$basic->print_ar($login->acl)."<br>";
// print "DEFAULT ACL: <br>".$basic->print_ar($login->default_acl_list)."<br>"; $basic->debug('ACL', "ACL: ".$basic->printAr($login->acl));
// print "DEFAULT ACL: <br>".$basic->print_ar($login->default_acl_list)."<br>"; // print "DEFAULT ACL: <br>".$basic->print_ar($login->default_acl_list)."<br>";
// $result = array_flip(array_filter(array_flip($login->default_acl_list), function ($key) { if (is_numeric($key)) return $key; })); // print "DEFAULT ACL: <br>".$basic->print_ar($login->default_acl_list)."<br>";
// print "DEFAULT ACL: <br>".$basic->print_ar($result)."<br>"; // $result = array_flip(array_filter(array_flip($login->default_acl_list), function ($key) { if (is_numeric($key)) return $key; }));
// DEPRICATED CALL // print "DEFAULT ACL: <br>".$basic->print_ar($result)."<br>";
// $basic->adbSetACL($login->acl); // DEPRICATED CALL
// $basic->adbSetACL($login->acl);
}
// DB client encoding // DB client encoding
print "DB Client encoding: ".$basic->dbGetEncoding()."<br>"; print "DB Client encoding: ".$basic->dbGetEncoding()."<br>";
@@ -165,14 +167,14 @@ print "DB Version bigger than $to_db_version: ".$basic->dbCompareVersion('>='.$t
print "DB Version bigger $to_db_version: ".$basic->dbCompareVersion('>'.$to_db_version)."<br>"; print "DB Version bigger $to_db_version: ".$basic->dbCompareVersion('>'.$to_db_version)."<br>";
/* $q = "SELECT FOO FRO BAR"; /* $q = "SELECT FOO FRO BAR";
// $q = "Select * from foo"; // $q = "Select * from foo";
$foo = $basic->dbExecAsync($q); $foo = $basic->dbExecAsync($q);
print "[ERR] Query: ".$q."<br>"; print "[ERR] Query: ".$q."<br>";
print "[ERR] RESOURCE: $foo<br>"; print "[ERR] RESOURCE: $foo<br>";
while (($ret = $basic->dbCheckAsync()) === true) while (($ret = $basic->dbCheckAsync()) === true)
{ {
print "[ERR]: $ret<br>"; print "[ERR]: $ret<br>";
// sleep(5); sleep(5);
} */ } */
// search path check // search path check
@@ -210,7 +212,7 @@ print "COMPARE DATE: ".$basic->compareDate($date_1, $date_2)."<br>";
// array re // array re
// print error messages // print error messages
print $login->printErrorMsg(); // print $login->printErrorMsg();
print $basic->printErrorMsg(); print $basic->printErrorMsg();
print "</body></html>"; print "</body></html>";

View File

@@ -1,25 +0,0 @@
<?php
/********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2018/10/11
* SHORT DESCRIPTION:
* pre config included -> includes master config
* HISTORY:
*********************************************************************/
define('CONFIG_PATH', 'configs'.DIRECTORY_SEPARATOR);
// config path prefix search, start with 0, got down each level __DIR__ has, if nothing found -> bail
$CONFIG_PATH_PREFIX = '';
for ($dir_pos = 0, $dir_max = count(explode('/', __DIR__)); $dir_pos <= $dir_max; $dir_pos ++) {
$CONFIG_PATH_PREFIX .= '..'.DIRECTORY_SEPARATOR;
if (file_exists($CONFIG_PATH_PREFIX.CONFIG_PATH.'config.inc')) {
require $CONFIG_PATH_PREFIX.CONFIG_PATH.'config.inc';
break;
}
}
// fail if no base DS is not set
if (!defined('DS')) {
exit('Base config unloadable');
}
// __END__

1
www/admin/config.php Symbolic link
View File

@@ -0,0 +1 @@
../configs/config.php

View File

@@ -71,6 +71,9 @@ if (defined('LAYOUT')) {
// there are the POSITION stored, that should CHANGE there order (up/down) // there are the POSITION stored, that should CHANGE there order (up/down)
// $row_data_id ... has ALL ids from the sorting part // $row_data_id ... has ALL ids from the sorting part
// $row_data_order ... has ALL order positions from the soirting part // $row_data_order ... has ALL order positions from the soirting part
if (!is_array($position)) {
$position = array ();
}
if (count($position)) { if (count($position)) {
$original_id = $row_data_id; $original_id = $row_data_id;
@@ -146,9 +149,12 @@ if ($error) {
$DATA['form_error_msg'] = $messages; $DATA['form_error_msg'] = $messages;
// all the row data // all the row data
$options_id = array(); $options_id = array ();
$options_name = array(); $options_name = array ();
$options_selected = array(); $options_selected = array ();
if (!is_array($row_data)) {
$row_data = array ();
}
for ($i = 0; $i < count($row_data); $i ++) { for ($i = 0; $i < count($row_data); $i ++) {
$options_id[] = $i; $options_id[] = $i;
$options_name[] = $row_data[$i]["name"]; $options_name[] = $row_data[$i]["name"];
@@ -165,8 +171,8 @@ $DATA['options_name'] = $options_name;
$DATA['options_selected'] = $options_selected; $DATA['options_selected'] = $options_selected;
// hidden list for the data (id, order number) // hidden list for the data (id, order number)
$row_data_id = array(); $row_data_id = array ();
$row_data_order = array(); $row_data_order = array ();
for ($i = 0; $i < count($row_data); $i++) { for ($i = 0; $i < count($row_data); $i++) {
$row_data_id[] = $row_data[$i]["id"]; $row_data_id[] = $row_data[$i]["id"];
$row_data_order[] = $row_data[$i]["order"]; $row_data_order[] = $row_data[$i]["order"];
@@ -184,7 +190,7 @@ $DEBUG_DATA['DEBUG'] = $DEBUG_TMPL;
// create main data array // create main data array
$CONTENT_DATA = array_merge($HEADER, $DATA, $DEBUG_DATA); $CONTENT_DATA = array_merge($HEADER, $DATA, $DEBUG_DATA);
// data is 1:1 mapping (all vars, values, etc) // 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); $smarty->assign($key, $value);
} }
$smarty->display('edit_order.tpl'); $smarty->display('edit_order.tpl');
@@ -192,5 +198,4 @@ $smarty->display('edit_order.tpl');
echo $login->printErrorMsg(); echo $login->printErrorMsg();
echo $db->printErrorMsg(); echo $db->printErrorMsg();
# __END__ // __END__

View File

@@ -10,7 +10,7 @@ if ($DEBUG_ALL) {
} }
// sample config // sample config
require("config.inc"); require 'config.php';
echo "FILE: ".BASE.LIB."Error.Handling.inc<br>"; echo "FILE: ".BASE.LIB."Error.Handling.inc<br>";
require(BASE.LIB."Error.Handling.inc"); require(BASE.LIB."Error.Handling.inc");

17
www/admin/l10n_test.php Executable file
View File

@@ -0,0 +1,17 @@
<?php
// debug for L10n issues in php 7.3
// namespace test
ob_start();
$lang = 'en_utf8';
// admin class tests
require 'config.php';
$l = new CoreLibs\Language\L10n($lang);
echo "OK<br>";
ob_end_flush();
// __END__

View File

@@ -18,5 +18,24 @@ require BASE.INCLUDES.'admin_set_paths.inc';
// smarty test // smarty test
$cms->DATA['SMARTY_TEST'] = 'Test Data'; $cms->DATA['SMARTY_TEST'] = 'Test Data';
// drop down test with optgroups
$options = array (
'' => '選択してください',
'4/25(木)' => array (
'4/25(木) 11:00-11:50' => '4/25(木) 11:00-11:50',
'4/25(木) 12:20-13:00' => '4/25(木) 12:20-13:00'
),
'4/26(金)' => array (
'4/26(金) 11:00-11:50' => '4/26(金) 11:00-11:50',
'4/26(金) 12:20-13:00' => '4/26(金) 12:20-13:00'
),
'4/27(土)' => array (
'4/27(土) 11:00-11:50' => '4/27(土) 11:00-11:50',
'4/27(土) 12:20-13:00' => '4/27(土) 12:20-13:00'
)
);
$cms->DATA['drop_down_test'] = $options;
require BASE.INCLUDES.'admin_smarty.inc'; require BASE.INCLUDES.'admin_smarty.inc';
require BASE.INCLUDES.'admin_footer.inc'; require BASE.INCLUDES.'admin_footer.inc';

View File

@@ -17,6 +17,15 @@ print "BASE: ".BASE."<br>";
print "ROOT: ".ROOT."<br>"; print "ROOT: ".ROOT."<br>";
print "HOST: ".$HOST_NAME." => DB HOST: ".$DB_HOST[$HOST_NAME]." => ".MAIN_DB."<br>"; print "HOST: ".$HOST_NAME." => DB HOST: ".$DB_HOST[$HOST_NAME]." => ".MAIN_DB."<br>";
$text = 'I am some text
with some
line breaks
in there. Theis
is sucky';
print "LB remove: ".$base->removeLB($text)."<br>";
print "LB remove: ".$base->removeLB($text, '##BR##')."<br>";
// $test = array ( // $test = array (
// 'A' => array ( // 'A' => array (
// 'B' => array (), // 'B' => array (),

BIN
www/composer.phar Executable file

Binary file not shown.

25
www/configs/config.php Executable file
View File

@@ -0,0 +1,25 @@
<?php
/********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2018/10/11
* SHORT DESCRIPTION:
* pre config included -> includes master config
* HISTORY:
*********************************************************************/
define('CONFIG_PATH', 'configs'.DIRECTORY_SEPARATOR);
// config path prefix search, start with 0, got down each level __DIR__ has, if nothing found -> bail
$CONFIG_PATH_PREFIX = '';
for ($dir_pos = 0, $dir_max = count(explode('/', __DIR__)); $dir_pos <= $dir_max; $dir_pos ++) {
$CONFIG_PATH_PREFIX .= '..'.DIRECTORY_SEPARATOR;
if (file_exists($CONFIG_PATH_PREFIX.CONFIG_PATH.'config.inc')) {
require $CONFIG_PATH_PREFIX.CONFIG_PATH.'config.inc';
break;
}
}
// fail if no base DS is not set
if (!defined('DS')) {
exit('Base config unloadable');
}
// __END__

View File

@@ -1,293 +0,0 @@
<?php
/********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2003/06/10
* SHORT DESCRIPTION:
* configuration file
* HISTORY:
*********************************************************************/
/************* SESSION NAMES *************/
// server name HASH
DEFINE('SERVER_NAME_HASH', hash('crc32b', $_SERVER['HTTP_HOST']));
// backend
DEFINE('EDIT_SESSION_NAME', '<ADMIN SESSION NAME>'.SERVER_NAME_HASH);
// frontend
DEFINE('SESSION_NAME', '<SESSION NAME>'.SERVER_NAME_HASH);
// SET_SESSION_NAME should be set in the header if a special session name is needed
// DEFINE('SET_SESSION_NAME', SESSION_NAME);
/************* LANGUAGE / ENCODING *******/
DEFINE('DEFAULT_LANG', 'en_utf8');
// default web page encoding setting
DEFINE('DEFAULT_ENCODING', 'UTF-8');
/************* PATHS *********************/
// directory seperator
DEFINE('DS', DIRECTORY_SEPARATOR);
// ** NEW/BETTER DIR DECLARATIONS **
// path to original file (if symlink)
DEFINE('DIR', __DIR__.DS);
// base dir root folder level
DEFINE('BASE', str_replace('configs', '', __DIR__));
// ** OLD DIR DECLARATIONS **
// path to document root of file called
DEFINE('ROOT', getcwd().DS);
// libs path
DEFINE('LIB', 'lib'.DS);
DEFINE('LIBS', 'lib'.DS);
// configs folder
DEFINE('CONFIGS', 'configs'.DS);
// includes (strings, arrays for static, etc)
DEFINE('INCLUDES', 'includes'.DS);
// layout base path
DEFINE('LAYOUT', 'layout'.DS);
// pic-root (compatible to CMS)
DEFINE('PICTURES', 'images'.DS);
// images
DEFINE('IMAGES', 'images'.DS);
// icons (below the images/ folder)
DEFINE('ICONS', 'icons'.DS);
// media
DEFINE('MEDIA', 'media'.DS);
// flash-root (below media)
DEFINE('FLASH', 'flash'.DS);
// uploads (anything to keep)
DEFINE('UPLOADS', 'uploads'.DS);
// files (binaries) (below media)
DEFINE('BINARIES', 'binaries'.DS);
// files (videos) (below media)
DEFINE('VIDEOS', 'videos'.DS);
// files (documents) (below media)
DEFINE('DOCUMENTS', 'documents'.DS);
// files (pdfs) (below media)
DEFINE('PDFS', 'documents'.DS);
// CSV
DEFINE('CSV', 'csv'.DS);
// css
DEFINE('CSS', 'css'.DS);
// js
DEFINE('JS', 'javascript'.DS);
// table arrays
DEFINE('TABLE_ARRAYS', 'table_arrays'.DS);
// smarty libs path
DEFINE('SMARTY', 'Smarty'.DS);
// po langs
DEFINE('LANG', 'lang'.DS);
// cache path
DEFINE('CACHE', 'cache'.DS);
// temp path
DEFINE('TMP', 'tmp'.DS);
// log files
DEFINE('LOG', 'log'.DS);
// compiled template folder
DEFINE('TEMPLATES_C', 'templates_c'.DS);
// template base
DEFINE('TEMPLATES', 'templates'.DS);
// frontend template dir', only for admin
DEFINE('TEMPLATES_FRONTEND', 'templates_frontend'.DS);
// default template
DEFINE('DEFAULT_TEMPLATE', 'default'.DS);
// default template file
DEFINE('DEFAULT_TEMPLATE_FILE', 'default.tpl');
/************* HASH / ACL DEFAULT / ERROR SETTINGS / SMARTY *************/
// default hash type
DEFINE('DEFAULT_HASH', 'sha256');
// default acl level
DEFINE('DEFAULT_ACL_LEVEL', 80);
// default levels for certain actions
/* DEFINE('DEFAULT_ACL_READ', 20);
DEFINE('DEFAULT_ACL_CONFIRM', 35);
DEFINE('DEFAULT_ACL_MOD', 40);
DEFINE('DEFAULT_ACL_WRITE', 60);
DEFINE('DEFAULT_ACL_SEND', 70);
DEFINE('DEFAULT_ACL_DEL', 80);
DEFINE('DEFAULT_ACL_ADMIN', 100); */
// SSL host name
// DEFINE('SSL_HOST', 'ssl.host.name');
// error page strictness, Default is 3
// 1: only show error page as the last mesure if really no mid & aid can be loaded and found at all
// 2: if template not found, do not search, show error template
// 3: if default template is not found, show error template, do not fall back to default tree
// 4: very strict, even on normal fixable errors through error
// DEFINE('ERROR_STRICT', 3);
// allow page caching in general, set to 'FALSE' if you do debugging or development!
// DEFINE('ALLOW_SMARTY_CACHE', FALSE);
// cache life time, in seconds, default here is 2 days (172800s)
// -1 is never expire cache
// DEFINE('SMARTY_CACHE_LIFETIME', -1);
/************* LOGOUT ********************/
// logout target
DEFINE('LOGOUT_TARGET', '');
// password change allowed
DEFINE('PASSWORD_CHANGE', false);
// min/max password length
DEFINE('PASSWORD_MIN_LENGTH', 8);
DEFINE('PASSWORD_MAX_LENGTH', 255);
/************* AJAX / ACCESS *************/
// ajax request type
DEFINE('AJAX_REQUEST_TYPE', 'POST');
// what AJAX type to use
DEFINE('USE_PROTOTYPE', true);
DEFINE('USE_SCRIPTACULOUS', false);
DEFINE('USE_JQUERY', false);
/************* LAYOUT WIDTHS *************/
DEFINE('PAGE_WIDTH', 800);
// the default template name
DEFINE('MASTER_TEMPLATE_NAME', 'main_body.tpl');
// below two can be defined here, but they should be
// defined in either the header file or the file itself
/************* LOGGING *******************/
// DEFINE('LOG_FILE_ID', '');
/************* QUEUE TABLE *************/
// if we have a dev/live system
// set_live is a per page/per item
// live_queue is a global queue system
// DEFINE('QUEUE', 'live_queue');
/************* DB PATHS (PostgreSQL) *****************/
// schema names, can also be defined per <DB INFO>
DEFINE('PUBLIC_SCHEMA', 'public');
DEFINE('DEV_SCHEMA', 'public');
DEFINE('TEST_SCHEMA', 'public');
DEFINE('LIVE_SCHEMA', 'public');
/************* OTHER PATHS *****************/
// File and Folder paths
// ID is TARGET (first array element)
// $PATHS['test']['csv_path'] = '';
// $PATHS['test']['perl_bin'] = '';
// $PATHS['test']['redirect_url'] = '';
// non constant part
/************* DB ACCESS *****************/
if (file_exists(BASE.CONFIGS.'config.db.inc')) {
require BASE.CONFIGS.'config.db.inc';
}
// -> below in config.db.inc
// *** START ***
// // please be VERY carefull only to change the right side
// $DB_CONFIG = array (
// '<DB ID>' => array (
// 'db_name' => '<DB NAME>',
// 'db_user' => '<DB USER>',
// 'db_pass' => '<DB PASSWORD>',
// 'db_host' => '<DB HOST>',
// 'db_port' => '5432',
// 'db_schema' => '<DB SCHEMA>', // if not set, uses public
// 'db_type' => 'pgsql',
// 'db_encoding' => '',
// 'db_ssl' => 'disable' // allow, disable, require, prefer
// )
// );
// *** END ***
if (file_exists(BASE.CONFIGS.'config.host.inc')) {
require BASE.CONFIGS.'config.host.inc';
}
// // -> below in config.host.inc
// *** START ***
// // each host has a different db_host
// // development host
// $DB_HOST['<HOST NAME>'] = '<DB ID>';
// // target host (live)
// // $DB_TARGET_HOST['<HOST NAME>'] = '<DB ID>';
// // url redirect database
// // $DB_URL_REDIRECT_HOST['<HOST NAME>'] = '<DB ID>';
// // location flagging
// // test/dev/live
// $LOCATION['<HOST NAME>'] = '<test|live|remote|etc>';
// // show DEBUG override
// // true/false
// $DEBUG_FLAG['<HOST NAME>'] = true;
// // set postgresql paths (schemas)
// $DB_PATH['<HOST NAME>'] = PUBLIC_SCHEMA;
// *** END ***
// set the USE_DATABASE var, if there is nothing set, we assume TRUE
$USE_DATABASE = defined('USE_DATABASE') ? USE_DATABASE : true;
// live frontend pages
// ** missing live domains **
// get the name without the port
list($HOST_NAME, $PORT) = array_pad(explode(':', $_SERVER['HTTP_HOST'], 2), 2, null);
if (!$DB_HOST[$HOST_NAME] && $USE_DATABASE) {
echo 'No matching DB config found. Contact Admin<br>';
exit -1;
}
// set HOST name
DEFINE('HOST_NAME', $HOST_NAME);
// set SSL on
if ((array_key_exists('HTTPS', $_SERVER) && !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ||
$_SERVER['SERVER_PORT'] == 443) {
DEFINE('HOST_SSL', true);
DEFINE('HOST_PROTOCOL', 'https://');
} else {
DEFINE('HOST_SSL', false);
DEFINE('HOST_PROTOCOL', 'http://');
}
// define the static names
DEFINE('LOGIN_DB', $DB_HOST[$HOST_NAME]);
DEFINE('MAIN_DB', $DB_HOST[$HOST_NAME]);
DEFINE('DB_SCHEMA', $DB_PATH[$HOST_NAME]);
// DEFINE('TARGET_DB', $DB_TARGET_HOST[$HOST_NAME]);
// DEFINE('URL_REDIRECT_DB', $DB_URL_REDIRECT_HOST[$HOST_NAME]);
// next three if top is not set
// DEFINE('DEV_SCHEMA', $DB_CONFIG[MAIN_DB]['db_schema']);
// DEFINE('TEST_SCHEMA', $DB_CONFIG[MAIN_DB]['db_schema']);
// DEFINE('PUBLIC_SCHEMA', $DB_CONFIG[TARGET_DB]['db_schema']);
DEFINE('LOGIN_DB_SCHEMA', 'public'); // where the edit* tables are
DEFINE('GLOBAL_DB_SCHEMA', 'public'); // where global tables are that are used by all schemas (eg queue tables for online, etc)
DEFINE('TARGET', $LOCATION[$HOST_NAME]);
// DEFINE('CSV_PATH', $PATHS[TARGET]['csv_path']);
// DEFINE('EXPORT_SCRIPT', $PATHS[TARGET]['perl_bin']);
// DEFINE('REDIRECT_URL', $PATHS[TARGET]['redirect_url']);
DEFINE('DEBUG', $DEBUG_FLAG[$HOST_NAME]);
DEFINE('SHOW_ALL_ERRORS', false); // show all errors if debug_all & show_error_handling are enabled
/************* GENERAL PAGE TITLE ********/
$G_TITLE = '<OVERALL PAGE TITLE>';
/************ STYLE SHEETS / JS **********/
$EDIT_STYLESHEET = 'edit.css';
$EDIT_JAVASCRIPT = 'edit.js';
$STYLESHEET = 'frontend.css';
$JAVASCRIPT = 'frontend.js';
/************* CONVERT *******************/
$paths = array (
'/bin',
'/usr/bin',
'/usr/local/bin'
);
// find convert
foreach ($paths as $path) {
if (file_exists($path.'/convert') && is_file($path.'/convert')) {
// image magick convert location
DEFINE('CONVERT', $path.'/convert');
}
}
// turn off debug if debug flag is OFF
if (DEBUG == false) {
$ECHO_ALL = 0;
$DEBUG_ALL = 0;
$PRINT_ALL = 0;
$DB_DEBUG = 0;
$ENABLE_ERROR_HANDLING = 0;
}
// any other global definitons here
// DEFINE('SOME_ID', <SOME VALUE>);
// read auto loader
require BASE.LIB.'autoloader.php';
# __END__

View File

@@ -1,4 +1,4 @@
<? <?php
/******************************************************************** /********************************************************************
* AUTHOR: Clemens Schwaighofer * AUTHOR: Clemens Schwaighofer
* CREATED: 2005/07/19 * CREATED: 2005/07/19
@@ -7,45 +7,55 @@
* HISTORY: * HISTORY:
*********************************************************************/ *********************************************************************/
$day_short[1] = "Mon"; $day_short = array (
$day_short[2] = "Tue"; 1 => 'Mon',
$day_short[3] = "Wed"; 2 => 'Tue',
$day_short[4] = "Thu"; 3 => 'Wed',
$day_short[5] = "Fri"; 4 => 'Thu',
$day_short[6] = "Sat"; 5 => 'Fri',
$day_short[7] = "Sun"; 6 => 'Sat',
7 => 'Sun'
);
$day_long[1] = "Monday"; $day_long = array (
$day_long[2] = "Tuesday"; 1 => 'Monday',
$day_long[3] = "Wednesday"; 2 => 'Tuesday',
$day_long[4] = "Thursday"; 3 => 'Wednesday',
$day_long[5] = "Friday"; 4 => 'Thursday',
$day_long[6] = "Saturday"; 5 => 'Friday',
$day_long[7] = "Sunday"; 6 => 'Saturday',
7 => 'Sunday'
);
// monate // months
$month_long[1] = "January"; $month_long = array (
$month_long[2] = "February"; 1 => 'January',
$month_long[3] = "March"; 2 => 'February',
$month_long[4] = "April"; 3 => 'March',
$month_long[5] = "May"; 4 => 'April',
$month_long[6] = "June"; 5 => 'May',
$month_long[7] = "July"; 6 => 'June',
$month_long[8] = "August"; 7 => 'July',
$month_long[9] = "September"; 8 => 'August',
$month_long[10] = "October"; 9 => 'September',
$month_long[11] = "November"; 10 => 'October',
$month_long[12] = "December"; 11 => 'November',
12 => 'December'
);
$month_short[1] = "Jan"; $month_short = array (
$month_short[2] = "Feb"; 1 => 'Jan',
$month_short[3] = "Mar"; 2 => 'Feb',
$month_short[4] = "Apr"; 3 => 'Mar',
$month_short[5] = "May"; 4 => 'Apr',
$month_short[6] = "Jun"; 5 => 'May',
$month_short[7] = "Jul"; 6 => 'Jun',
$month_short[8] = "Aug"; 7 => 'Jul',
$month_short[9] = "Sep"; 8 => 'Aug',
$month_short[10] = "Oct"; 9 => 'Sep',
$month_short[11] = "Nov"; 10 => 'Oct',
$month_short[12] = "Dec"; 11 => 'Nov',
12 => 'Dec'
);
// __END__

View File

@@ -10,3 +10,5 @@
// print debug messages // print debug messages
echo $login->printErrorMsg(); echo $login->printErrorMsg();
echo $cms->printErrorMsg(); echo $cms->printErrorMsg();
// __END__

View File

@@ -10,7 +10,7 @@
//------------------------------ variable init start //------------------------------ variable init start
// for dev test we set full error reporting; writes everything, except E_ERROR into logs/php_error-<day>.log // for dev test we set full error reporting; writes everything, except E_ERROR into logs/php_error-<day>.log
if ($DEBUG_ALL && $ENABLE_ERROR_HANDLING) { if ($DEBUG_ALL && $ENABLE_ERROR_HANDLING) {
include("../lib/Error.Handling.inc"); include(BASE.LIBS."Error.Handling.inc");
} }
// predefine vars // predefine vars
$lang = ''; $lang = '';
@@ -94,3 +94,5 @@ if ((TARGET == 'live' || TARGET == 'remote') && !$DEBUG_ALL_OVERRIDE) {
$cms->print_output_all = 0; $cms->print_output_all = 0;
} }
$cms->DATA['JS_DEBUG'] = DEBUG; $cms->DATA['JS_DEBUG'] = DEBUG;
// __END__

View File

@@ -55,7 +55,10 @@ $cms->CSS_SPECIAL_TEMPLATE_NAME = @$CSS_NAME;
$cms->JS_SPECIAL_TEMPLATE_NAME = @$JS_NAME; $cms->JS_SPECIAL_TEMPLATE_NAME = @$JS_NAME;
// set basic template path (tmp) // set basic template path (tmp)
$smarty->setTemplateDir(LAYOUT.$TEMPLATE_DIR.TEMPLATES); // no outside $cms->template_path = LAYOUT.$TEMPLATE_DIR.TEMPLATES;
if ($smarty) {
$smarty->setTemplateDir($cms->template_path);
}
$cms->lang_dir = LAYOUT.$TEMPLATE_DIR.LANG; // no outside $cms->lang_dir = LAYOUT.$TEMPLATE_DIR.LANG; // no outside
$cms->includes = BASE.INCLUDES; // no longer in templates, only global $cms->includes = BASE.INCLUDES; // no longer in templates, only global
$cms->javascript = LAYOUT.$TEMPLATE_DIR.JS; $cms->javascript = LAYOUT.$TEMPLATE_DIR.JS;
@@ -141,4 +144,4 @@ if (!file_exists($smarty->getTemplateDir()[0].DS.$TEMPLATE_TRANSLATE)) {
$cms->debug("LANGUAGE", "SL: ".$_SESSION['DEFAULT_CHARSET']." | ".$_SESSION['LANG']." | ".$_SESSION['DEFAULT_LANG']); $cms->debug("LANGUAGE", "SL: ".$_SESSION['DEFAULT_CHARSET']." | ".$_SESSION['LANG']." | ".$_SESSION['DEFAULT_LANG']);
$cms->debug("TEMPLATE", "P: ".$smarty->getTemplateDir()[0]); $cms->debug("TEMPLATE", "P: ".$smarty->getTemplateDir()[0]);
# __END__ // __END__

View File

@@ -101,4 +101,4 @@ if (is_dir(BASE.CACHE)) {
} }
$smarty->display($MASTER_TEMPLATE_NAME, $TEMPLATE.$lang, $TEMPLATE.$lang); $smarty->display($MASTER_TEMPLATE_NAME, $TEMPLATE.$lang, $TEMPLATE.$lang);
# __END__ // __END__

View File

@@ -22,7 +22,7 @@ $DB_DEBUG = 1;
extract($_POST, EXTR_SKIP); extract($_POST, EXTR_SKIP);
$table_width = 750; $table_width = '100%';
// this is for certain CMS modules that set a relative path // this is for certain CMS modules that set a relative path
define('REL_PATH', ''); define('REL_PATH', '');
@@ -325,4 +325,4 @@ $smarty->display('edit_body.tpl');
echo $login->printErrorMsg(); echo $login->printErrorMsg();
echo $form->printErrorMsg(); echo $form->printErrorMsg();
# __END__ // __END__

View File

@@ -1,4 +1,5 @@
<?php <?php
$edit_access = array ( $edit_access = array (
"table_array" => array ( "table_array" => array (
"edit_access_id" => array ( "edit_access_id" => array (
@@ -33,7 +34,7 @@ $edit_access = array (
"value" => $GLOBALS["enabled"], "value" => $GLOBALS["enabled"],
"output_name" => "Enabled", "output_name" => "Enabled",
"type" => "binary", "type" => "binary",
"int" => 1, "int" => 1, // OR "bool" => 1
"element_list" => array ( "element_list" => array (
"1" => "Yes", "1" => "Yes",
"0" => "No" "0" => "No"
@@ -95,4 +96,4 @@ $edit_access = array (
) )
); );
# __END__ // __END__

View File

@@ -1,4 +1,5 @@
<?php <?php
$edit_groups = array ( $edit_groups = array (
"table_array" => array ( "table_array" => array (
"edit_group_id" => array ( "edit_group_id" => array (
@@ -98,4 +99,4 @@ $edit_groups = array (
) )
); );
# __END__ // __END__

View File

@@ -1,4 +1,5 @@
<?php <?php
$edit_languages=array ( $edit_languages=array (
"table_array" => array ( "table_array" => array (
"edit_language_id" => array ( "edit_language_id" => array (
@@ -71,4 +72,4 @@ $edit_languages=array (
"table_name" => "edit_language" "table_name" => "edit_language"
); );
# __END__ // __END__

View File

@@ -1,4 +1,5 @@
<?php <?php
$edit_menu_group = array ( $edit_menu_group = array (
"table_array" => array ( "table_array" => array (
"edit_menu_group_id" => array ( "edit_menu_group_id" => array (
@@ -36,4 +37,4 @@ $edit_menu_group = array (
) )
); );
# __END__ // __END__

View File

@@ -1,4 +1,5 @@
<?php <?php
$edit_pages = array ( $edit_pages = array (
"table_array" => array ( "table_array" => array (
"edit_page_id" => array ( "edit_page_id" => array (
@@ -176,4 +177,4 @@ $edit_pages = array (
) // element list ) // element list
); );
# __END__ // __END__

View File

@@ -1,4 +1,5 @@
<?php <?php
$edit_schemes = array ( $edit_schemes = array (
"table_array" => array ( "table_array" => array (
"edit_scheme_id" => array ( "edit_scheme_id" => array (
@@ -53,4 +54,4 @@ $edit_schemes = array (
) )
); // main array ); // main array
# __END__ // __END__

View File

@@ -1,4 +1,5 @@
<?php <?php
$edit_users = array ( $edit_users = array (
"table_array" => array ( "table_array" => array (
"edit_user_id" => array ( "edit_user_id" => array (
@@ -257,4 +258,4 @@ $edit_users = array (
) )
); );
# __END__ // __END__

View File

@@ -1,4 +1,5 @@
<?php <?php
$edit_visible_group = array ( $edit_visible_group = array (
"table_array" => array ( "table_array" => array (
"edit_visible_group_id" => array ( "edit_visible_group_id" => array (
@@ -29,4 +30,4 @@ $edit_visible_group = array (
) )
); );
# __END__ // __END__

View File

@@ -17,20 +17,28 @@ if (clientPC.indexOf('opera') != -1) {
var is_opera_preseven = (window.opera && !document.childNodes); var is_opera_preseven = (window.opera && !document.childNodes);
var is_opera_seven = (window.opera && document.childNodes); var is_opera_seven = (window.opera && document.childNodes);
} }
// debug set
var FRONTEND_DEBUG = false;
var DEBUG = true;
if (!DEBUG) {
$($H(window.console)).each(function(w) {
window.console[w.key] = function() {};
});
}
// METHOD: pop
// PARAMS: url, window name, features
// RETURN: none
// DESC : opens a popup window with winNAme and given features (string)
function pop(theURL, winName, features) { function pop(theURL, winName, features) {
winName = window.open(theURL, winName, features); winName = window.open(theURL, winName, features);
winName.focus(); winName.focus();
} }
function emd_check_checkbox() { // METHOD: expandTA
for (i = 0; i < document.manage_emails.length; i ++) { // PARAMS: id
if (document.manage_emails.elements[i].checked == false && document.manage_emails.elements[i].type == 'checkbox') { // RETURN: none
document.manage_emails.elements[i].checked = true; // DESC : automatically resize a text area based on the amount of lines in it
}
}
}
function expandTA(ta_id) { function expandTA(ta_id) {
var ta; var ta;
// if a string comes, its a get by id, else use it as an element pass on // if a string comes, its a get by id, else use it as an element pass on
@@ -50,11 +58,13 @@ function expandTA(ta_id) {
} }
ta.rows = numNewRows + theRows.length; ta.rows = numNewRows + theRows.length;
} }
// METHOD: ShowHideMenu // METHOD: ShowHideMenu
// PARAMS: status -> show or hide // PARAMS: status -> show or hide
// id -> id to work on // id -> id to work on
// RETURN: none // RETURN: none
// DESC: shows or hides the menu // DESC: shows or hides the menu
// this is used in some old menu templates
function ShowHideMenu(status, id) function ShowHideMenu(status, id)
{ {
if (status == 'show') { if (status == 'show') {
@@ -70,18 +80,7 @@ function ShowHideMenu(status, id)
} }
} }
function ShowHideDiv(id) // used in old templates
{
element = document.getElementById(id);
if (element.className == 'visible' || !element.className) {
element.className = 'hidden';
} else {
element.className = 'visible';
}
// alert('E: ' + element.className + ' -- ' + element.style.visibility);
}
// move element action // move element action
function mv(id, direction) function mv(id, direction)
{ {
@@ -107,10 +106,39 @@ function le(id)
} }
} }
// METHOD: sh
// PARAMS: id -> element to hide
// showText -> text for the element if shown
// hideText -> text for the element if hidden
// RETURN: returns true if hidden, or false if not
// DESC : hides an element, additional writes 1 (show) or 0 (hide) into <id>Flag field
// this needs scriptacolous installed for BlindUp/BlindDown
function sh(id, showText, hideText)
{
flag = id + 'Flag';
btn = id + 'Btn';
// get status from element (hidden or visible)
divStatus = $(id).visible();
//console.log('Set flag %s for element %s', divStatus, id);
if (divStatus) {
// hide the element
Effect.BlindUp(id, {duration:0.3});
$(flag).value = 0;
$(btn).innerHTML = showText;
} else if (!divStatus) {
// show the element
Effect.BlindDown(id, {duration:0.3});
$(flag).value = 1;
$(btn).innerHTML = hideText;
}
// return current button status
return divStatus;
}
// METHOD: getWindowSize // METHOD: getWindowSize
// PARAMS: none // PARAMS: none
// RETURN: array with width/height // RETURN: array with width/height
// DESC: wrapper to get the real window size for the current browser window // DESC : wrapper to get the real window size for the current browser window
function getWindowSize() function getWindowSize()
{ {
var width, height; var width, height;
@@ -125,7 +153,7 @@ function getWindowSize()
// METHOD: getScrollOffset // METHOD: getScrollOffset
// PARAMS: none // PARAMS: none
// RETURN: array with x/y px // RETURN: array with x/y px
// DESC: wrapper to get the correct scroll offset // DESC : wrapper to get the correct scroll offset
function getScrollOffset() function getScrollOffset()
{ {
var left, top; var left, top;
@@ -140,7 +168,7 @@ function getScrollOffset()
// METHOD: setCenter // METHOD: setCenter
// PARAMS: id to set center // PARAMS: id to set center
// RETURN: none // RETURN: none
// DESC: centers div to current window size middle // DESC : centers div to current window size middle
function setCenter(id, left, top) function setCenter(id, left, top)
{ {
// get size of id // get size of id
@@ -166,38 +194,146 @@ function setCenter(id, left, top)
} }
} }
// METHOD sh // METHOD: goToPos()
// PARAMS: id -> element to hide // PARAMS: element, offset (default 0)
// showText -> text for the element if shown // RETURN: none
// hideText -> text for the element if hidden // DESC: goes to an element id position
// RETURN: returns true if hidden, or false if not function goToPos(element, offset = 0)
// DESC: hides an element, additional writes 1 (show) or 0 (hide) into <id>Flag field
function sh(id, showText, hideText)
{ {
flag = id + 'Flag'; try {
btn = id + 'Btn'; if ($(element))
// get status from element (hidden or visible) {
divStatus = $(id).visible(); // get the element pos
//console.log('Set flag %s for element %s', divStatus, id); var pos = $(element).cumulativeOffset();
if (divStatus) { // if not top element and no offset given, set auto offset for top element
// hide the element // also compensate by -40 for some offset calc issue and not have it too much to the header
Effect.BlindUp(id, {duration:0.3}); if (pos.top != 0 && offset == 0) {
$(flag).value = 0; offset = ($(GL_main_content_div).style.paddingTop.replace('px', '') * -1) - 40;
$(btn).innerHTML = showText; }
} else if (!divStatus) { //console.log('Scroll to: %s, Offset: %s [%s], PT: %s', element, offset, $('pbsMainContent').style.paddingTop.replace('px', ''), pos.top);
// show the element window.scrollTo(pos.left, pos.top + offset);
Effect.BlindDown(id, {duration:0.3}); }
$(flag).value = 1; } catch (err) {
$(btn).innerHTML = hideText; errorCatch(err);
} }
// return current button status
return divStatus;
} }
// METHOD: __
// PARAMS: text
// RETURN: translated text (based on PHP selected language)
// DESC : uses the i18n array created in the translation template, that is filled from gettext in PHP (Smarty)
function __(string)
{
if (typeof i18n !== 'undefined' && isObject(i18n) && i18n[string]) {
return i18n[string];
} else {
return string;
}
}
// METHOD: string.format
// PARAMS: any, for string format
// RETURN: formatted string
// DESC : simple sprintf formater for replace
// "{0} is cool, {1} is not".format("Alpha", "Beta");
// First, checks if it isn't implemented yet.
if (!String.prototype.format) {
String.prototype.format = function()
{
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number)
{
return typeof args[number] != 'undefined' ?
args[number] :
match
;
});
};
}
// METHOD: numberWithCommas
// PARAMS: number
// RETURN: formatted with , in thousands
// DESC : formats flat number 123456 to 123,456
const numberWithCommas = (x) => {
var parts = x.toString().split(".");
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return parts.join(".");
};
// METHOD:
// PARAMS: string
// RETURN: string with <br>
// DESC : converts line breaks to br
function convertLBtoBR(string)
{
return string.replace(/(?:\r\n|\r|\n)/g, '<br>');
}
if (!String.prototype.escapeHTML) {
String.prototype.escapeHTML = function() {
return this.replace(/[&<>"'\/]/g, function (s) {
var entityMap = {
"&": "&amp;",
"<": "&lt;",
">": "&gt;",
'"': '&quot;',
"'": '&#39;',
"/": '&#x2F;'
};
return entityMap[s];
});
};
}
if (!String.prototype.unescapeHTML) {
String.prototype.unescapeHTML = function() {
return this.replace(/&[#\w]+;/g, function (s) {
var entityMap = {
"&amp;": "&",
"&lt;": "<",
"&gt;": ">",
'&quot;': '"',
'&#39;': "'",
'&#x2F;': "/"
};
return entityMap[s];
});
};
}
// METHOD: getTimestamp
// PARAMS: none
// RETURN: timestamp (in milliseconds)
// DESC : returns current timestamp (unix timestamp)
function getTimestamp()
{
let date = new Date();
return date.getTime();
}
// METHOD: isObject
// PARAMS: possible object
// RETURN: true/false if it is an object or not
function isObject(val) {
if (val === null) {
return false;
}
return ((typeof val === 'function') || (typeof val === 'object'));
}
// METHOD: exists
// PARAMS: uid
// RETURN: true/false
// DESC : checks if a DOM element actually exists
const exists = (id) => $(id) ? true : false;
// METHOD: formatBytes // METHOD: formatBytes
// PARAMS: bytes in int // PARAMS: bytes in int
// RETURN: string in GB/MB/KB // RETURN: string in GB/MB/KB
// DESC: converts a int number into bytes with prefix in two decimals precision // DESC : converts a int number into bytes with prefix in two decimals precision
// currently precision is fixed, if dynamic needs check for max/min precision // currently precision is fixed, if dynamic needs check for max/min precision
function formatBytes(bytes) function formatBytes(bytes)
{ {
@@ -210,6 +346,142 @@ function formatBytes(bytes)
return parseFloat(Math.round(bytes * Math.pow(10, 2)) / Math.pow(10, 2)) + ['kB', 'MB', 'GB', 'TB', 'PB', 'EB'][i]; return parseFloat(Math.round(bytes * Math.pow(10, 2)) / Math.pow(10, 2)) + ['kB', 'MB', 'GB', 'TB', 'PB', 'EB'][i];
} }
// METHOD: goToPos()
// PARAMS: element, offset (default 0)
// RETURN: none
// DESC : goes to an element id position
function goToPos(element, offset = 0)
{
try {
if ($(element))
{
// get the element pos
var pos = $(element).cumulativeOffset();
// if not top element and no offset given, set auto offset for top element
// also compensate by -40 for some offset calc issue and not have it too much to the header
if (pos.top != 0 && offset == 0) {
offset = ($(GL_main_content_div).style.paddingTop.replace('px', '') * -1) - 40;
}
//console.log('Scroll to: %s, Offset: %s [%s], PT: %s', element, offset, $('pbsMainContent').style.paddingTop.replace('px', ''), pos.top);
window.scrollTo(pos.left, pos.top + offset);
}
} catch (err) {
errorCatch(err);
}
}
// METHOD: errorCatch
// PARAMS: err (error from try/catch
// RETURN: none
// DESC : prints out error messages based on data available from the browser
function errorCatch(err)
{
// for FF & Chrome
if (err.stack) {
// only FF
if (err.lineNumber) {
console.log('ERROR[%s:%s] %s', err.name, err.lineNumber, err.message);
} else if (err.line) {
// only Safari
console.log('ERROR[%s:%s] %s', err.name, err.line, err.message);
} else {
console.log('ERROR[%s] %s', err.name, err.message);
}
// stack trace
console.log('ERROR[stack] %s', err.stack);
} else if (err.number) {
// IE
console.log('ERROR[%s:%s] %s', err.name, err.number, err.message);
console.log('ERROR[description] %s', err.description);
} else {
// the rest
console.log('ERROR[%s] %s', err.name, err.message);
}
}
// METHOD: actionIndicator
// PARAMS: none
// RETURN: none
// DESC : show or hide the "do" overlay
function actionIndicator(loc = '')
{
if ($('overlayBox').visible()) {
actionIndicatorHide(loc);
} else {
actionIndicatorShow(loc);
}
}
// METHOD: actionIndicatorShow/actionIndicatorHide
// PARAMS: loc for console log info
// RETURN: none
// DESC : explicit show/hide for action Indicator
// instead of automatically show or hide, do
// on command
function actionIndicatorShow(loc = '')
{
console.log('Indicator: SHOW [%s]', loc);
$('indicator').addClassName('progress');
setCenter('indicator', true, true);
$('indicator').show();
overlayBoxShow();
}
function actionIndicatorHide(loc = '')
{
console.log('Indicator: HIDE [%s]', loc);
$('indicator').hide();
$('indicator').removeClassName('progress');
overlayBoxHide();
}
// METHOD: overlayBoxView
// PARAMS: none
// RETURN: none
// DESC : shows or hides the overlay box
function overlayBoxShow()
{
// check if overlay box exists and if yes set the z-index to 100
if ($('overlayBox').visible()) {
$('overlayBox').style.zIndex = "100";
} else {
$('overlayBox').show();
}
}
function overlayBoxHide()
{
// if the overlay box z-index is 100, do no hide, but set to 98
if ($('overlayBox').style.zIndex == 100) {
$('overlayBox').style.zIndex = "98";
} else {
$('overlayBox').hide();
}
}
// METHOD: setOverlayBox
// PARAMS: none
// RETURN: none
// DESC : position the overlay block box and shows it
function setOverlayBox()
{
var viewport = document.viewport.getDimensions();
$('overlayBox').setStyle ({
width: '100%',
height: '100%'
});
$('overlayBox').show();
}
// METHOD: ClearCall
// PARAMS: none
// RETURN: none
// DESC : the abort call, clears the action box and hides it and the overlay box
function ClearCall()
{
$('actionBox').innerHTML = '';
$('actionBox').hide();
$('overlayBox').hide();
}
// *** DOM MANAGEMENT FUNCTIONS // *** DOM MANAGEMENT FUNCTIONS
// METHOD: cel [create element] // METHOD: cel [create element]
// PARAMS: tag: must set tag (div, span, etc) // PARAMS: tag: must set tag (div, span, etc)
@@ -220,7 +492,7 @@ function formatBytes(bytes)
// RETURN: object // RETURN: object
// DESC : creates object for DOM element creation flow // DESC : creates object for DOM element creation flow
const cel = (tag, id = '', content = '', css = [], options = {}) => const cel = (tag, id = '', content = '', css = [], options = {}) =>
element = { _element = {
tag: tag, tag: tag,
id: id, id: id,
name: options.name, // override name if set [name gets ignored in tree build anyway] name: options.name, // override name if set [name gets ignored in tree build anyway]
@@ -241,7 +513,7 @@ function ael(base, attach, id = '')
if (id) { if (id) {
// base id match already // base id match already
if (base.id == id) { if (base.id == id) {
base.sub.push(attach); base.sub.push(Object.assign({}, attach));
} else { } else {
// sub check // sub check
if (base.sub.length > 0) { if (base.sub.length > 0) {
@@ -252,7 +524,7 @@ function ael(base, attach, id = '')
} }
} }
} else { } else {
base.sub.push(attach); base.sub.push(Object.assign({}, attach));
} }
return base; return base;
} }
@@ -271,7 +543,7 @@ function aelx(base, ...attach)
return base; return base;
} }
// METHOD: rel [rese element] // METHOD: rel [reset element]
// PARAMS: cel created element // PARAMS: cel created element
// RETURN: "none", is self change, but returns base.sub // RETURN: "none", is self change, but returns base.sub
// DESC : resets the sub elements of the base element given // DESC : resets the sub elements of the base element given
@@ -281,23 +553,23 @@ const rel = (base) => base.sub = [];
// PARAMS: element, style sheet to remove // PARAMS: element, style sheet to remove
// RETURN: "none", in place because of reference // RETURN: "none", in place because of reference
// DESC : searches and removes style from css array // DESC : searches and removes style from css array
function rcssel(element, css) function rcssel(_element, css)
{ {
let css_index = element.css.indexOf(css); let css_index = _element.css.indexOf(css);
if (css_index > -1) { if (css_index > -1) {
element.css.splice(css_index, 1); _element.css.splice(css_index, 1);
} }
} }
// METHOD acssel [add css element] // METHOD: acssel [add css element]
// PARAMS: element, style sheet to add // PARAMS: element, style sheet to add
// RETURN: "none", in place add because of reference // RETURN: "none", in place add because of reference
// DESC : adds a new style sheet to the element given // DESC : adds a new style sheet to the element given
function acssel(element, css) function acssel(_element, css)
{ {
let css_index = element.css.indexOf(css); let css_index = _element.css.indexOf(css);
if (css_index == -1) { if (css_index == -1) {
element.css.push(css); _element.css.push(css);
} }
} }
@@ -306,10 +578,10 @@ function acssel(element, css)
// RETURN: "none", in place add because of reference // RETURN: "none", in place add because of reference
// DESC : removes one css and adds another // DESC : removes one css and adds another
// is a wrapper around rcssel/acssel // is a wrapper around rcssel/acssel
function scssel(element, rcss, acss) function scssel(_element, rcss, acss)
{ {
rcssel(element, rcss); rcssel(_element, rcss);
acssel(element, acss); acssel(_element, acss);
} }
// METHOD: phfo [produce html from object] // METHOD: phfo [produce html from object]
@@ -375,6 +647,7 @@ function phfo(tree)
// combine to string // combine to string
return content.join(''); return content.join('');
} }
// *** DOM MANAGEMENT FUNCTIONS
// BLOCK: html wrappers for quickly creating html data blocks // BLOCK: html wrappers for quickly creating html data blocks
// METHOD: html_options // METHOD: html_options
@@ -393,36 +666,33 @@ function html_options(name, data, selected = '', options_only = false, return_st
let data_list = []; // for sorted output let data_list = []; // for sorted output
// set outside select, gets stripped on return if options only is true // set outside select, gets stripped on return if options only is true
element_select = cel('select', name); element_select = cel('select', name);
if (isObject(data)) { // console.log('Call for %s, options: %s', name, options_only);
// console.log('Call for %s, options: %s', name, options_only); if (sort == 'keys') {
// console.log('Call for %s, options: %s', name, options_only); data_list = Object.keys(data).sort();
if (sort == 'keys') { } else if (sort == 'values') {
data_list = Object.keys(data).sort(); data_list = Object.keys(data).sort((a, b) => ('' + data[a]).localeCompare(data[b]));
} else if (sort == 'values') { } else {
data_list = Object.keys(data).sort((a, b) => ('' + data[a]).localeCompare(data[b])); data_list = Object.keys(data);
} else { }
data_list = Object.keys(data); // console.log('ORDER: %s', data_list);
} // use the previously sorted list
// console.log('ORDER: %s', data_list); // for (const [key, value] of Object.entries(data)) {
// use the previously sorted list for (const key of data_list) {
// for (const [key, value] of Object.entries(data)) { let value = data[key];
for (const key of data_list) { console.log('create [%s] options: key: %s, value: %s', name, key, value);
let value = data[key]; // basic options init
console.log('options: key: %s, value: %s', key, value); let options = {
// basic options init 'label': value,
let options = { 'value': key
'label': value, };
'value': key // add selected if matching
}; if (selected == key) {
// add selected if matching options.selected = '';
if (selected == key) {
options.selected = '';
}
// create the element option
element_option = cel('option', '', value, '', options);
// attach it to the select element
ael(element_select, element_option);
} }
// create the element option
element_option = cel('option', '', value, '', options);
// attach it to the select element
ael(element_select, element_option);
} }
// if with select part, convert to text // if with select part, convert to text
if (!options_only) { if (!options_only) {
@@ -445,4 +715,71 @@ function html_options(name, data, selected = '', options_only = false, return_st
} }
} }
// METHOD: html_options_refill
// PARAMS: name/id, array of options, sort = ''
// sort [def '']: if empty as is, else allowed 'keys', 'values' all others are ignored
// RETURN: none
// DESC : refills a select box with options and keeps the selected
function html_options_refill(name, data, sort = '')
{
let element_option;
let option_selected;
let data_list = []; // for sorted output
// skip if not exists
if ($(name)) {
// console.log('Call for %s, options: %s', name, options_only);
if (sort == 'keys') {
data_list = Object.keys(data).sort();
} else if (sort == 'values') {
data_list = Object.keys(data).sort((a, b) => ('' + data[a]).localeCompare(data[b]));
} else {
data_list = Object.keys(data);
}
// first read in existing ones from the options and get the selected one
[].forEach.call(document.querySelectorAll('#' + name + ' :checked'), function(elm) {
option_selected = elm.value;
});
$(name).innerHTML = '';
for (const key of data_list) {
let value = data[key];
// console.log('add [%s] options: key: %s, value: %s', name, key, value);
element_option = document.createElement('option');
element_option.label = value;
element_option.value = key;
element_option.innerHTML = value;
$(name).appendChild(element_option);
}
}
}
// METHOD: initDatepickr
// PARAMS: initial date ID (#)
// RETURN: true on ok, false on failure
// DESC : inits date pickr which translations for dates (week/month)
function initDatepickr(init_date)
{
if ($(init_date)) {
datepickr('#' + init_date); // we need to add this so we have it initialized before we can actually change the definitions
// dates in japanese
datepickr.prototype.l10n.months.shorthand = [__('Jan'), __('Feb'), __('Mar'), __('Apr'), __('May'), __('Jun'), __('Jul'), __('Aug'), __('Sep'), __('Oct'), __('Nov'), __('Dec')];
datepickr.prototype.l10n.months.longhand = [__('January'), __('February'), __('March'), __('April'), __('May'), __('June'), __('July'), __('August'), __('September'), __('October'), __('November'), __('December')];
datepickr.prototype.l10n.weekdays.shorthand = [__('Mon'), __('Tue'), __('Wed'), __('Thu'), __('Fri'), __('Sat'), __('Sun')];
datepickr.prototype.l10n.weekdays.longhand = [__('Monday'), __('Tuesday'), __('Wednesday'), __('Thursday'), __('Friday'), __('Saturday'), __('Sunday')];
return true;
} else {
return false;
}
}
// *** MASTER logout call
// METHOD: loginLogout
// PARAMS: none
// RETURN: none
// DESC : submits basic data for form logout
function loginLogout()
{
$('login_logout').value = 'Logout';
$(form_name).submit();
}
/* END */ /* END */

View File

@@ -79,7 +79,7 @@
<!-- TOP MENU END //--> <!-- TOP MENU END //-->
<tr> <tr>
<td width="{$table_width}" class="edit_bgcolor"> <td width="{$table_width}" class="edit_bgcolor">
<form method="post" name="edit_form"> <form method="post" name="edit_form" style="margin-block-end: 0em;">
<table width="100%" border="0" cellpadding="2" cellspacing="1"> <table width="100%" border="0" cellpadding="2" cellspacing="1">
<!-- LOAD START //--> <!-- LOAD START //-->
{include file="edit_load.tpl"} {include file="edit_load.tpl"}

5
www/layout/admin/default/templates/smarty_test.tpl Normal file → Executable file
View File

@@ -1,3 +1,8 @@
<div> <div>
{$SMARTY_TEST} {$SMARTY_TEST}
</div> </div>
<div>
<select id="drop_down_test" name="drop_down_test">
{html_options options=$drop_down_test selected=$drop_down_test_selected}
</select>
</div>

View File

@@ -72,6 +72,11 @@ class Login extends \CoreLibs\DB\IO
private $password_change_ok = false; // password change was successful 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 = 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 $password_forgot_ok = false; // password forgot mail send ok
private $change_password;
private $pw_username;
private $pw_old_password;
private $pw_new_password;
private $pw_new_password_confirm;
private $pw_change_deny_users = array (); // array of users for which the password change is forbidden 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 // if we have password change we need to define some rules
@@ -179,12 +184,12 @@ class Login extends \CoreLibs\DB\IO
$_POST['pw_new_password_confirm'] = ''; $_POST['pw_new_password_confirm'] = '';
} }
// pass on vars to Object vars // pass on vars to Object vars
$this->login = $_POST["login_login"]; $this->login = $_POST['login_login'];
$this->username = $_POST["login_username"]; $this->username = $_POST['login_username'];
$this->password = $_POST["login_password"]; $this->password = $_POST['login_password'];
$this->logout = $_POST["login_logout"]; $this->logout = $_POST['login_logout'];
// password change vars // password change vars
$this->change_password = $_POST["change_password"]; $this->change_password = $_POST['change_password'];
$this->pw_username = $_POST['pw_username']; $this->pw_username = $_POST['pw_username'];
$this->pw_old_password = $_POST['pw_old_password']; $this->pw_old_password = $_POST['pw_old_password'];
$this->pw_new_password = $_POST['pw_new_password']; $this->pw_new_password = $_POST['pw_new_password'];
@@ -845,63 +850,77 @@ class Login extends \CoreLibs\DB\IO
private function loginPrintLogin() private function loginPrintLogin()
{ {
if (!$this->permission_okay) { if (!$this->permission_okay) {
// set the templates now // get global AJAX page trigger
$this->loginSetTemplates(); // if true, return error ajax
// if there is a global logout target ... global $AJAX_PAGE;
if (file_exists($this->logout_target) && $this->logout_target) { if ($AJAX_PAGE === true) {
$LOGOUT_TARGET = $this->logout_target; $data = array (
'status' => 'error',
'error_code' => $this->loging_error,
'msg' => array (
'level' => 'error',
'str' => $this->l->__('Login necessary')
)
);
$html_string = json_encode($data);
} else { } else {
$LOGOUT_TARGET = ""; // set the templates now
} $this->loginSetTemplates();
// if there is a global logout target ...
$html_string = $this->login_template['template']; if (file_exists($this->logout_target) && $this->logout_target) {
$LOGOUT_TARGET = $this->logout_target;
// if password change is okay } else {
if ($this->password_change) { $LOGOUT_TARGET = "";
$html_string_password_change = $this->login_template['password_change'];
// pre change the data in the PASSWORD_CHANGE_DIV first
foreach ($this->login_template['strings'] as $string => $data) {
if ($data) {
$html_string_password_change = str_replace('{'.$string.'}', $data, $html_string_password_change);
}
} }
$html_string = $this->login_template['template'];
// if password change is okay
if ($this->password_change) {
$html_string_password_change = $this->login_template['password_change'];
// pre change the data in the PASSWORD_CHANGE_DIV first
foreach ($this->login_template['strings'] as $string => $data) {
if ($data) {
$html_string_password_change = str_replace('{'.$string.'}', $data, $html_string_password_change);
}
}
// print error messagae
if ($this->login_error) {
$html_string_password_change = str_replace('{ERROR_MSG}', $this->login_error_msg[$this->login_error].'<br>', $html_string_password_change);
} else {
$html_string_password_change = str_replace('{ERROR_MSG}', '<br>', $html_string_password_change);
}
// if pw change action, show the float again
if ($this->change_password && !$this->password_change_ok) {
$html_string_password_change = str_replace('{PASSWORD_CHANGE_SHOW}', '<script language="JavaScript">ShowHideDiv(\'pw_change_div\');</script>', $html_string_password_change);
} else {
$html_string_password_change = str_replace('{PASSWORD_CHANGE_SHOW}', '', $html_string_password_change);
}
$this->login_template['strings']['PASSWORD_CHANGE_DIV'] = $html_string_password_change;
}
// put in the logout redirect string
if ($this->logout && $LOGOUT_TARGET) {
$html_string = str_replace('{LOGOUT_TARGET}', '<meta http-equiv="refresh" content="0; URL='.$LOGOUT_TARGET.'">', $html_string);
} else {
$html_string = str_replace('{LOGOUT_TARGET}', '', $html_string);
}
// print error messagae // print error messagae
if ($this->login_error) { if ($this->login_error) {
$html_string_password_change = str_replace('{ERROR_MSG}', $this->login_error_msg[$this->login_error].'<br>', $html_string_password_change); $html_string = str_replace('{ERROR_MSG}', $this->login_error_msg[$this->login_error].'<br>', $html_string);
} elseif ($this->password_change_ok && $this->password_change) {
$html_string = str_replace('{ERROR_MSG}', $this->login_error_msg[300].'<br>', $html_string);
} else { } else {
$html_string_password_change = str_replace('{ERROR_MSG}', '<br>', $html_string_password_change); $html_string = str_replace('{ERROR_MSG}', '<br>', $html_string);
} }
// if pw change action, show the float again
if ($this->change_password && !$this->password_change_ok) { // create the replace array context
$html_string_password_change = str_replace('{PASSWORD_CHANGE_SHOW}', '<script language="JavaScript">ShowHideDiv(\'pw_change_div\');</script>', $html_string_password_change); foreach ($this->login_template['strings'] as $string => $data) {
} else { $html_string = str_replace('{'.$string.'}', $data, $html_string);
$html_string_password_change = str_replace('{PASSWORD_CHANGE_SHOW}', '', $html_string_password_change);
} }
$this->login_template['strings']['PASSWORD_CHANGE_DIV'] = $html_string_password_change;
} }
// put in the logout redirect string
if ($this->logout && $LOGOUT_TARGET) {
$html_string = str_replace('{LOGOUT_TARGET}', '<meta http-equiv="refresh" content="0; URL='.$LOGOUT_TARGET.'">', $html_string);
} else {
$html_string = str_replace('{LOGOUT_TARGET}', '', $html_string);
}
// print error messagae
if ($this->login_error) {
$html_string = str_replace('{ERROR_MSG}', $this->login_error_msg[$this->login_error].'<br>', $html_string);
} elseif ($this->password_change_ok && $this->password_change) {
$html_string = str_replace('{ERROR_MSG}', $this->login_error_msg[300].'<br>', $html_string);
} else {
$html_string = str_replace('{ERROR_MSG}', '<br>', $html_string);
}
// create the replace array context
foreach ($this->login_template['strings'] as $string => $data) {
$html_string = str_replace('{'.$string.'}', $data, $html_string);
}
// return the created HTML here // return the created HTML here
return $html_string; return $html_string;
} // if permission is 0 then print out login } // if permission is 0 then print out login
@@ -1173,4 +1192,4 @@ EOM;
} }
} // close class } // close class
# __END__ // __END__

View File

@@ -359,4 +359,4 @@ class Backend extends \CoreLibs\DB\IO
} }
} }
# __END__ // __END__

View File

@@ -307,8 +307,8 @@ class Basic
'.*@bandai\.jp$' => 'keitai_willcom_bandai', # willcom paipo! (kids) '.*@bandai\.jp$' => 'keitai_willcom_bandai', # willcom paipo! (kids)
'.*@pipopa\.ne\.jp$' => 'keitai_willcom_pipopa', # willcom paipo! (kids) '.*@pipopa\.ne\.jp$' => 'keitai_willcom_pipopa', # willcom paipo! (kids)
'.*@([a-z0-9]{2,4}\.)?pdx\.ne\.jp$' => 'keitai_willcom_pdx', # actually only di,dj,dk,wm -> all others are "wrong", but none also allowed? '.*@([a-z0-9]{2,4}\.)?pdx\.ne\.jp$' => 'keitai_willcom_pdx', # actually only di,dj,dk,wm -> all others are "wrong", but none also allowed?
'.*@ymobile([1]{1})?\.ne\.jp$' => 'keitai_willcom_ymobile', # ymobile, ymobile1 techincally not willcom, but I group them there '.*@ymobile([1]{1})?\.ne\.jp$' => 'keitai_willcom_ymobile', # ymobile, ymobile1 techincally not willcom, but I group them there (softbank sub)
'.*@y-mobile\.ne\.jp$' => 'keitai_willcom_ymobile', # y-mobile techincally not willcom, but I group them there '.*@y-mobile\.ne\.jp$' => 'keitai_willcom_ymobile', # y-mobile techincally not willcom, but I group them there (softbank sub)
'.*@emnet\.ne\.jp$' => 'keitai_willcom_emnet', # e-mobile, group will willcom '.*@emnet\.ne\.jp$' => 'keitai_willcom_emnet', # e-mobile, group will willcom
'.*@emobile\.ne\.jp$' => 'keitai_willcom_emnet', # e-mobile, group will willcom '.*@emobile\.ne\.jp$' => 'keitai_willcom_emnet', # e-mobile, group will willcom
'.*@emobile-s\.ne\.jp$' => 'keitai_willcom_emnet' # e-mobile, group will willcom '.*@emobile-s\.ne\.jp$' => 'keitai_willcom_emnet' # e-mobile, group will willcom
@@ -419,6 +419,7 @@ class Basic
{ {
unset($string); unset($string);
list($major, $minor, $patchlvl) = explode(".", $this->class_info[$class_name]["class_version"]); list($major, $minor, $patchlvl) = explode(".", $this->class_info[$class_name]["class_version"]);
$string = '';
$string .= "<b>-Class-info-[".$class_name."]-></b> Class Name: <b>".$this->class_info[$class_name]["class_name"]."</b><br>"; $string .= "<b>-Class-info-[".$class_name."]-></b> Class Name: <b>".$this->class_info[$class_name]["class_name"]."</b><br>";
$string .= "<b>-Class-info-[".$class_name."]-></b> Class Author: <b>".$this->class_info[$class_name]["class_author"]."</b><br>"; $string .= "<b>-Class-info-[".$class_name."]-></b> Class Author: <b>".$this->class_info[$class_name]["class_author"]."</b><br>";
$string .= "<b>-Class-info-[".$class_name."]-></b> Class Version: <b>".$this->class_info[$class_name]["class_version"]."</b><br>"; $string .= "<b>-Class-info-[".$class_name."]-></b> Class Version: <b>".$this->class_info[$class_name]["class_version"]."</b><br>";
@@ -484,7 +485,8 @@ class Basic
if ($set_microtime == -1) { if ($set_microtime == -1) {
$string .= substr($microtime, 1); $string .= substr($microtime, 1);
} elseif ($set_microtime >= 1) { } elseif ($set_microtime >= 1) {
$string .= substr(round($microtime, $set_microtime), 1); // in round case we run this through number format to always get the same amount of digits
$string .= substr(number_format(round($microtime, $set_microtime), $set_microtime), 1);
} }
return $string; return $string;
} }
@@ -1195,6 +1197,7 @@ class Basic
$pos = 0; $pos = 0;
$split = 36; // after 36 single bytes characters, if then comes MB, it is broken $split = 36; // after 36 single bytes characters, if then comes MB, it is broken
// has to 2 x 36 < 74 so the mb_encode_mimeheader 74 hardcoded split does not get triggered // has to 2 x 36 < 74 so the mb_encode_mimeheader 74 hardcoded split does not get triggered
$_string = '';
while ($pos < mb_strlen($string, $encoding)) { while ($pos < mb_strlen($string, $encoding)) {
$output = mb_strimwidth($string, $pos, $split, "", $encoding); $output = mb_strimwidth($string, $pos, $split, "", $encoding);
$pos += mb_strlen($output, $encoding); $pos += mb_strlen($output, $encoding);
@@ -1238,7 +1241,7 @@ class Basic
// DESC : calculates the bytes based on a string with nnG, nnM, etc // DESC : calculates the bytes based on a string with nnG, nnM, etc
public static function stringByteFormat($number) public static function stringByteFormat($number)
{ {
$number = trim($number); $number = (int)trim($number);
$last = strtolower($number[strlen($number) - 1]); $last = strtolower($number[strlen($number) - 1]);
switch ($last) { switch ($last) {
case 't': case 't':
@@ -1785,6 +1788,7 @@ class Basic
} }
// max should be 63 for this case // max should be 63 for this case
$max_rand = count($chars) - 1; $max_rand = count($chars) - 1;
$salt_string = '';
// create the salt part // create the salt part
for ($i = 1; $i <= $nSize; $i ++) { for ($i = 1; $i <= $nSize; $i ++) {
$salt_string .= $chars[mt_rand(0, $max_rand)]; $salt_string .= $chars[mt_rand(0, $max_rand)];
@@ -2259,7 +2263,52 @@ class Basic
// DESC : full wrapper for html entities // DESC : full wrapper for html entities
public function htmlent($string) public function htmlent($string)
{ {
return htmlentities($string, ENT_COMPAT|ENT_HTML401, 'UTF-8', false); if (is_string($string)) {
return htmlentities($string, ENT_COMPAT|ENT_HTML401, 'UTF-8', false);
} else {
return $string;
}
}
// METHOD: removeLB
// PARAMS: string, optional replace character
// RETURN: string with line breaks removed
// DESC : strips out all line breaks or replaced with given string
public function removeLB($string, $replace = ' ')
{
return str_replace(array("\r", "\n"), $replace, $string);
}
// METHOD: fceil
// PARAMS: number, round decimals (default 10)
// RETURN: correct ceil number
// DESC : some float numbers will be rounded up even if they have no decimal entries
public function fceil($number, $precision = 10)
{
return ceil(round($number, $precision));
}
// METHOD floorp
// PARAMS: number, round to
// RETURN: floor number but with tround to
// DESC : eg 48767 with -2 -> 48700
public function floorp($number, $precision = -2)
{
$mult = pow(10, $precision); // Can be cached in lookup table
return floor($number * $mult) / $mult;
}
// METHOD: initNumeric
// PARAMS: any value
// RETURN: if not numeric, sets to 0, else returns value already set
// DESC : inits input to 0, if value is not numeric
public function initNumeric($number)
{
if (!is_numeric($number)) {
return 0;
} else {
return $number;
}
} }
// METHOD: setFormToken // METHOD: setFormToken
@@ -2444,4 +2493,4 @@ class Basic
} }
} }
# __END__ // __END__

View File

@@ -133,6 +133,7 @@ class ArrayIO extends \CoreLibs\DB\IO
public function dbDumpArray($write = 0) public function dbDumpArray($write = 0)
{ {
reset($this->table_array); reset($this->table_array);
$string = '';
foreach ($this->table_array as $column => $data_array) { foreach ($this->table_array as $column => $data_array) {
$string .= "<b>".$column."</b> -> ".$data_array["value"]."<br>"; $string .= "<b>".$column."</b> -> ".$data_array["value"]."<br>";
} }
@@ -200,20 +201,21 @@ class ArrayIO extends \CoreLibs\DB\IO
$q .= $this->pk_name." = ".$this->table_array[$this->pk_name]["value"]." "; $q .= $this->pk_name." = ".$this->table_array[$this->pk_name]["value"]." ";
// delete files and build FK query // delete files and build FK query
reset($this->table_array); reset($this->table_array);
$q_where = '';
foreach ($this->table_array as $column => $data_array) { foreach ($this->table_array as $column => $data_array) {
// suchen nach bildern und lschen ... // suchen nach bildern und lschen ...
if ($this->table_array[$column]["file"] && file_exists($this->table_array[$column]["url"].$this->table_array[$column]["value"])) { if ($this->table_array[$column]["file"] && file_exists($this->table_array[$column]["url"].$this->table_array[$column]["value"])) {
if (file_exists($this->table_array[$column]["path"].$this->table_array[$column]["value"])) { if (file_exists($this->table_array[$column]["path"].$this->table_array[$column]["value"])) {
unlink($this->table_array[$column]["path"].$this->table_array[$column]["value"]); unlink($this->table_array[$column]["path"].$this->table_array[$column]["value"]);
} }
$dateiname = str_replace("_tn", "", $this->table_array[$column]["value"]); $file_name = str_replace("_tn", "", $this->table_array[$column]["value"]);
if (file_exists($this->table_array[$column]["path"].$dateiname)) { if (file_exists($this->table_array[$column]["path"].$file_name)) {
unlink($this->table_array[$column]["path"].$dateiname); unlink($this->table_array[$column]["path"].$file_name);
} }
} }
// if we have a foreign key
if ($this->table_array[$column]["fk"]) { if ($this->table_array[$column]["fk"]) {
// zusammenstellen der FKs // create FK constraint checks
if ($q_where) { if ($q_where) {
$q_where .= " AND "; $q_where .= " AND ";
} }
@@ -251,6 +253,8 @@ class ArrayIO extends \CoreLibs\DB\IO
return $this->table_array; return $this->table_array;
} }
reset($this->table_array); reset($this->table_array);
$q_select = '';
$q_where = '';
// create select part & addition FK part // create select part & addition FK part
foreach ($this->table_array as $column => $data_array) { foreach ($this->table_array as $column => $data_array) {
if ($q_select) { if ($q_select) {
@@ -326,6 +330,9 @@ class ArrayIO extends \CoreLibs\DB\IO
} }
reset($this->table_array); reset($this->table_array);
$q_data = '';
$q_vars = '';
$q_where = '';
foreach ($this->table_array as $column => $data_array) { foreach ($this->table_array as $column => $data_array) {
/********************************* START FILE *************************************/ /********************************* START FILE *************************************/
// file upload // file upload
@@ -338,9 +345,9 @@ class ArrayIO extends \CoreLibs\DB\IO
if (file_exists($this->table_array[$column]["path"].$this->table_array[$column]["value"])) { if (file_exists($this->table_array[$column]["path"].$this->table_array[$column]["value"])) {
unlink($this->table_array[$column]["path"].$this->table_array[$column]["value"]); unlink($this->table_array[$column]["path"].$this->table_array[$column]["value"]);
} }
$dateiname = str_replace("_tn", "", $this->table_array[$column]["value"]); $file_name = str_replace("_tn", "", $this->table_array[$column]["value"]);
if (file_exists($this->table_array[$column]["path"].$dateiname)) { if (file_exists($this->table_array[$column]["path"].$file_name)) {
unlink($this->table_array[$column]["path"].$dateiname); unlink($this->table_array[$column]["path"].$file_name);
} }
$this->table_array[$column]["value"] = ""; $this->table_array[$column]["value"] = "";
} else { } else {
@@ -355,20 +362,19 @@ class ArrayIO extends \CoreLibs\DB\IO
$ext = end($filename_parts); $ext = end($filename_parts);
array_splice($filename_parts, -1, 1); array_splice($filename_parts, -1, 1);
$name = str_replace(" ", "_", implode(".", $filename_parts)); $name = str_replace(" ", "_", implode(".", $filename_parts));
//echo "PK: $pk_ids_file<br>"; $file_name = $name.".".$ext;
$dateiname = $name.$pk_ids_file.".".$ext; //echo "Dn: $file_name";
//echo "Dn: $dateiname"; copy($this->table_array[$column]["tmp"], $this->table_array[$column]["path"].$file_name);
copy($this->table_array[$column]["tmp"], $this->table_array[$column]["path"].$dateiname);
// automatisch thumbnail generieren, geht nur mit convert (ImageMagic!!!), aber nur bei bild .. // automatisch thumbnail generieren, geht nur mit convert (ImageMagic!!!), aber nur bei bild ..
if (strtolower($ext) == "jpeg" || strtolower($ext) == "jpg" || strtolower($ext) == "gif" || strtolower($ext) == "png") { if (strtolower($ext) == "jpeg" || strtolower($ext) == "jpg" || strtolower($ext) == "gif" || strtolower($ext) == "png") {
$dateiname_tn = $name.$pk_ids_file."_tn.".$ext; $file_name_tn = $name."_tn.".$ext;
$eingang = $this->table_array[$column]["path"].$dateiname; $eingang = $this->table_array[$column]["path"].$file_name;
$ausgang = $this->table_array[$column]["path"].$dateiname_tn; $ausgang = $this->table_array[$column]["path"].$file_name_tn;
$com = "convert -geometry 115 $eingang $ausgang"; $com = "convert -geometry 115 $eingang $ausgang";
exec($com); exec($com);
$this->table_array[$column]["value"] = $dateiname_tn; $this->table_array[$column]["value"] = $file_name_tn;
} else { } else {
$this->table_array[$column]["value"] = $dateiname; $this->table_array[$column]["value"] = $file_name;
} }
} elseif (file_exists($this->table_array[$column]["path"].$this->table_array[$column]["value"])) { } elseif (file_exists($this->table_array[$column]["path"].$this->table_array[$column]["value"])) {
// mach gar nix, wenn bild schon da ??? // mach gar nix, wenn bild schon da ???
@@ -409,6 +415,9 @@ class ArrayIO extends \CoreLibs\DB\IO
$_value = $this->table_array[$column]["value"]; $_value = $this->table_array[$column]["value"];
} }
$q_data .= $_value; $q_data .= $_value;
} elseif ($this->table_array[$column]['bool']) {
// boolean storeage (reverse check on ifset)
$q_data .= "'".$this->dbBoolean($this->table_array[$column]["value"], true)."'";
} elseif ($this->table_array[$column]["interval"]) { } elseif ($this->table_array[$column]["interval"]) {
// for interval we check if no value, then we set null // for interval we check if no value, then we set null
if (!$this->table_array[$column]["value"]) { if (!$this->table_array[$column]["value"]) {
@@ -543,4 +552,4 @@ class ArrayIO extends \CoreLibs\DB\IO
} }
} // end of class } // end of class
# __END__ // __END__

View File

@@ -124,7 +124,7 @@
* - closes db connection and writes error_msg to global error_msg * - closes db connection and writes error_msg to global error_msg
* db_cursor_pos($query) * db_cursor_pos($query)
* - returns the current position the db_return * - returns the current position the db_return
* $array_of_hashes db_show_table_meta_Data($table_name) * $array_of_hashes db_show_table_meta_data($table_name)
* - returns an hashed array of table column data * - returns an hashed array of table column data
* function db_prepare($stm_name, $query) * function db_prepare($stm_name, $query)
* - prepares a query with the given stm name, returns false on error * - prepares a query with the given stm name, returns false on error
@@ -317,11 +317,11 @@ class IO extends \CoreLibs\Basic
$this->db_user = $db_config['db_user'] ?? ''; $this->db_user = $db_config['db_user'] ?? '';
$this->db_pwd = $db_config['db_pass'] ?? ''; $this->db_pwd = $db_config['db_pass'] ?? '';
$this->db_host = $db_config['db_host'] ?? ''; $this->db_host = $db_config['db_host'] ?? '';
$this->db_port = array_key_exists('db_port', $db_config) ? $db_config['db_port'] : '5432'; $this->db_port = !empty($db_config['db_port']) ? $db_config['db_port'] : '5432';
$this->db_schema = array_key_exists('db_schema', $db_config) ? $db_config['db_schema'] : ''; // do not set to 'public' if not set, because the default is already public $this->db_schema = !empty($db_config['db_schema']) ? $db_config['db_schema'] : ''; // do not set to 'public' if not set, because the default is already public
$this->db_encoding = array_key_exists('db_encoding', $db_config) ? $db_config['db_encoding'] : ''; $this->db_encoding = !empty($db_config['db_encoding']) ? $db_config['db_encoding'] : '';
$this->db_type = $db_config['db_type'] ?? ''; $this->db_type = $db_config['db_type'] ?? '';
$this->db_ssl = array_key_exists('db_ssl', $db_config) ? $db_config['db_ssl'] : 'allow'; $this->db_ssl = !empty($db_config['db_ssl']) ? $db_config['db_ssl'] : 'allow';
// set the target encoding to the DEFAULT_ENCODING if it is one of them: EUC, Shift_JIS, UTF-8 // set the target encoding to the DEFAULT_ENCODING if it is one of them: EUC, Shift_JIS, UTF-8
// @ the moment set only from outside // @ the moment set only from outside
@@ -511,6 +511,7 @@ class IO extends \CoreLibs\Basic
// NOTE : used in db_dump_data only // NOTE : used in db_dump_data only
private function __printArray($array) private function __printArray($array)
{ {
$string = '';
foreach ($array as $key => $value) { foreach ($array as $key => $value) {
$string .= $this->nbsp.'<b>'.$key.'</b> => '; $string .= $this->nbsp.'<b>'.$key.'</b> => ';
if (is_array($value)) { if (is_array($value)) {
@@ -938,7 +939,7 @@ class IO extends \CoreLibs\Basic
// DESC : returns the current set client encoding from the connected DB // DESC : returns the current set client encoding from the connected DB
public function dbGetEncoding() public function dbGetEncoding()
{ {
return $this->db_return_row('SHOW client_encoding')['client_encoding']; return $this->dbReturnRow('SHOW client_encoding')['client_encoding'];
} }
// METHOD: dbInfo // METHOD: dbInfo
@@ -977,6 +978,7 @@ class IO extends \CoreLibs\Basic
} else { } else {
$array = $this->cursor_ext; $array = $this->cursor_ext;
} }
$string = '';
if (is_array($array)) { if (is_array($array)) {
$this->nbps = ''; $this->nbps = '';
$string .= $this->__printArray($array); $string .= $this->__printArray($array);
@@ -1816,6 +1818,7 @@ class IO extends \CoreLibs\Basic
// DESC : this is only needed for Postgresql. Converts postgresql arrays to PHP // DESC : this is only needed for Postgresql. Converts postgresql arrays to PHP
public function dbArrayParse($text) public function dbArrayParse($text)
{ {
$output = array ();
return $this->db_functions->__dbArrayParse($text, $output); return $this->db_functions->__dbArrayParse($text, $output);
} }
@@ -2117,3 +2120,5 @@ class IO extends \CoreLibs\Basic
return $this->dbSqlEscape($value, $kbn); return $this->dbSqlEscape($value, $kbn);
} }
} // end if db class } // end if db class
// __END__

View File

@@ -148,7 +148,7 @@ class PgSQL
{ {
$result = pg_execute($this->dbh, $name, $data); $result = pg_execute($this->dbh, $name, $data);
if (!$result) { if (!$result) {
$this->last_error_query = $query; $this->last_error_query = $name;
} }
return $result; return $result;
} }
@@ -428,4 +428,4 @@ class PgSQL
} }
} }
# __END__ // __END__

View File

@@ -45,4 +45,4 @@ class CachedFileReader extends CoreLibs\Language\Core\StringReader
} }
} }
# __END__ // __END__

View File

@@ -88,4 +88,4 @@ class FileReader
} }
} }
# __END__ // __END__

View File

@@ -146,8 +146,8 @@ class GetTextReader
private function load_tables() private function load_tables()
{ {
if (is_array($this->cache_translations) && if (is_array($this->cache_translations) &&
is_array($this->table_originals) && is_array($this->table_originals) &&
is_array($this->table_translations)) { is_array($this->table_translations)) {
return; return;
} }
@@ -457,4 +457,4 @@ class GetTextReader
} }
} }
# __END__ // __END__

View File

@@ -51,4 +51,4 @@ class StreamReader
} }
} }
# __END__ // __END__

View File

@@ -64,4 +64,4 @@ class StringReader
} }
} }
# __END__ // __END__

View File

@@ -57,7 +57,6 @@ class L10n extends \CoreLibs\Basic
} else { } else {
$this->input = false; $this->input = false;
} }
$this->l10n = new GetTextReader($this->input); $this->l10n = new GetTextReader($this->input);
} }
@@ -114,3 +113,5 @@ class L10n extends \CoreLibs\Basic
return $this->mofile; return $this->mofile;
} }
} }
// __END__

View File

@@ -323,7 +323,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$this->table_array = array (); $this->table_array = array ();
} }
reset($this->table_array); reset($this->table_array);
$string .= "<b>TABLE ARRAY DUMP:</b> ".$this->table_name."<br>"; $string = "<b>TABLE ARRAY DUMP:</b> ".$this->table_name."<br>";
foreach ($this->table_array as $key => $value) { foreach ($this->table_array as $key => $value) {
$string .= "<b>$key</b>: ".$value["value"]."<br>"; $string .= "<b>$key</b>: ".$value["value"]."<br>";
} }
@@ -557,7 +557,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
if ($res[$this->int_pk_name] == $this->table_array[$this->int_pk_name]["value"]) { if ($res[$this->int_pk_name] == $this->table_array[$this->int_pk_name]["value"]) {
$pk_selected = $res[$this->int_pk_name]; $pk_selected = $res[$this->int_pk_name];
} }
unset($t_string); $t_string = '';
for ($i = 0, $i_max = count($this->field_array); $i < $i_max; $i ++) { for ($i = 0, $i_max = count($this->field_array); $i < $i_max; $i ++) {
if ($t_string) { if ($t_string) {
$t_string .= ", "; $t_string .= ", ";
@@ -879,8 +879,8 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
break; break;
case "alphanumericspace": case "alphanumericspace":
// $this->debug('edit', 'IN Alphanumericspace'); // $this->debug('edit', 'IN Alphanumericspace');
if (!preg_match("/^[0-9A-Za-z\ ]+$/", $this->table_array[$key]["value"])) { if (!preg_match("/^[0-9A-Za-z_\-\ ]+$/", $this->table_array[$key]["value"])) {
$this->msg .= sprintf($this->l->__("Please enter a valid alphanumeric (Numbers and Letters, spaces allowed) value for the <b>%s</b> Field!<br>"), $this->table_array[$key]["output_name"]); $this->msg .= sprintf($this->l->__("Please enter a valid alphanumeric (Numbers and Letters, -, _ and spaces allowed) value for the <b>%s</b> Field!<br>"), $this->table_array[$key]["output_name"]);
} }
break; break;
case "alphanumeric": case "alphanumeric":
@@ -1013,7 +1013,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
} }
// do optional error checks like for normal fields // do optional error checks like for normal fields
// currently active: unique/alphanumeric // currently active: unique/alphanumeric
if ($data_rray['error_check']) { if ($data_array['error_check']) {
foreach (explode('|', $value["error_check"]) as $error_check) { foreach (explode('|', $value["error_check"]) as $error_check) {
switch ($error_check) { switch ($error_check) {
// check unique, check if field in table is not yet exist // check unique, check if field in table is not yet exist
@@ -1314,6 +1314,9 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// go through all submitted data // go through all submitted data
// for ($i = 0; $i < count($_POST[$el_name]); $i ++) // for ($i = 0; $i < count($_POST[$el_name]); $i ++)
for ($i = 0; $i < $max; $i ++) { for ($i = 0; $i < $max; $i ++) {
$q_data[$i] = '';
$q_names[$i] = '';
$q_values[$i] = '';
// if we have enable name & delete set, then only insert/update those which are flagged as active // if we have enable name & delete set, then only insert/update those which are flagged as active
// check if mandatory field is set, if not set "do not write flag" // check if mandatory field is set, if not set "do not write flag"
if ($data_array["mandatory"] && !$_POST[$prfx.$el_name][$i]) { if ($data_array["mandatory"] && !$_POST[$prfx.$el_name][$i]) {
@@ -1718,4 +1721,4 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
} }
} // end of class } // end of class
# __END__ // __END__

View File

@@ -527,7 +527,7 @@ class ProgressBar
case 'percent': case 'percent':
// only one inner percent // only one inner percent
// print "STYLE[$name]: ".$style_lbl."<br>"; // print "STYLE[$name]: ".$style_lbl."<br>";
if (!$html_percent) { if (!isset($html_percent)) {
$html_percent = '<div id="plbl'.$name.$this->code.'" style="'.$style_lbl.'width:'.$data['width'].'px;line-height:1;text-shadow: 0 0 .2em white, 0 0 .5em white;">'.$this->__calculatePercent($this->step).'%</div>'."\n"; $html_percent = '<div id="plbl'.$name.$this->code.'" style="'.$style_lbl.'width:'.$data['width'].'px;line-height:1;text-shadow: 0 0 .2em white, 0 0 .5em white;">'.$this->__calculatePercent($this->step).'%</div>'."\n";
} }
break; break;
@@ -669,4 +669,4 @@ class ProgressBar
} }
} }
# __END__ // __END__

View File

@@ -29,4 +29,4 @@ class SmartyExtend extends SmartyBC
} }
} }
# __END__ // __END__

View File

@@ -28,4 +28,4 @@ class qqUploadedFileForm
} }
} }
# __END__ // __END__

View File

@@ -43,4 +43,4 @@ class qqUploadedFileXhr
} }
} }
# __END__ // __END__

View File

@@ -109,4 +109,4 @@ class qqFileUploader
} }
} }
# __END__ // __END__

View File

@@ -108,3 +108,5 @@ function MyErrorHandler($type, $message, $file, $line, $context)
// init the error handler // init the error handler
set_error_handler("MyErrorHandler"); set_error_handler("MyErrorHandler");
// __END__

View File

@@ -54,4 +54,4 @@ if (class_exists('Autoload', false) === false) {
spl_autoload_register('Autoloader\Autoload::load', true, true); spl_autoload_register('Autoloader\Autoload::load', true, true);
} // end check for already defined } // end check for already defined
# __END__ // __END__

1
www/log/.gitignore vendored
View File

@@ -1,2 +1,3 @@
*log *log
*LOG
!.gitignore !.gitignore