Update all core libs classes with new Basic class layout

This commit is contained in:
Clemens Schwaighofer
2021-06-14 13:27:18 +09:00
parent 448b54f5c1
commit cb17b553b0
42 changed files with 904 additions and 968 deletions

View File

@@ -73,7 +73,7 @@ print "ARRAYMERGERECURSIVE: ".$basic->printAr(ArrayHandler::arrayMergeRecursive(
// print "ARRAYMERGERECURSIVE: ".$basic->printAr($basic->arrayMergeRecursive($array_1, $array_2, $array_3))."<br>";
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -88,7 +88,7 @@ print "BYTE TO: $byte: ".$basic->humanReadableByteFormat($byte)."<br>";
print "BYTE FROM: $string: ".$basic->stringByteFormat($string)."<br>"; */
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -58,7 +58,7 @@ print "S::COLOR hsl->rgb: $hsl[0], $hsl[1], $hsl[2]: ".$basic->printAr(Colors::h
// TODO: run compare check input must match output
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -141,7 +141,7 @@ $compare_date = ['2021-05-01', '2021-05-10'];
print "CALCDAYSINTERVAL(named): $compare_date[0] = $compare_date[1]: ".$basic->printAr($basic->calcDaysInterval($compare_date[0], $compare_date[1], true))."<br>"; */
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -200,7 +200,7 @@ print "ISSET: ".isset($res['null_varchar'])."<br>";
print "EMPTY: ".empty($res['null_varchar'])."<br>";
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -80,7 +80,7 @@ print "S::FDEBUG: ".FileWriter::fdebug('CLASS TEST DEBUG FILE: '.date('Y-m-d H:i
// error message
// future DEPRECATED
$basic->debug('BASIC CLASS', 'Debug test');
print "BASIC:<br>".$basic->printErrorMsg();
print "BASIC:<br>".$basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -56,7 +56,7 @@ foreach ($email as $s_email) {
} */
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -87,7 +87,7 @@ print "CONV ENCODING: $_string: ".$basic->convertEncoding($_string, 'ISO-2022-JP
print "D/__MBMIMEENCODE: ".$basic->__mbMimeEncode('Some Text', 'UTF-8')."<br>"; */
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -40,7 +40,7 @@ $file = getcwd().DIRECTORY_SEPARATOR.'class_test.file.php';
print "GETLINESFROMFILE: $file: ".File::getLinesFromFile($file)."<br>";
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -55,7 +55,7 @@ print "D/__SHA1SHORT(off): $to_crc: ".$basic->__sha1short($to_crc)."<br>";
print "D/__hash(d): $to_crc: ".$basic->__hash($to_crc)."<br>"; */
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -95,7 +95,7 @@ print "D/MAGICLINK: ".Html::htmlent($basic->magicLinks($magic_link))."<Br>";
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -99,7 +99,7 @@ $basic->correctImageOrientation($image);
echo "<div>S::CREATETHUMBNAILSIMPLE: ".basename($image).": WIDTH: $thumb_width<br><img src=".$basic->createThumbnailSimple($image, $thumb_width)."></div>"; */
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -65,7 +65,7 @@ print "E-JSON: $json: ".$basic->printAr($output)."<br>";
print "E-JSON ERROR: ".$basic->jsonGetLastError().": ".$basic->jsonGetLastError(true)."<br>"; */
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -50,7 +50,7 @@ print "FLOORP: ".$basic->floorp(5123456, -3)."<br>";
print "INITNUMERIC: ".$basic->initNumeric('123')."<br>"; */
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -52,7 +52,7 @@ $mime = 'fake/mime';
$basic->mimeSetAppName($mime, 'This is a fake mime');
print "MIME $mime: ".$basic->mimeGetAppName($mime)."<br>"; */
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -26,6 +26,8 @@ if (!defined('SET_SESSION_NAME')) {
$LOG_FILE_ID = 'classTest-pass';
ob_end_flush();
use CoreLibs\Check\Password as PwdChk;
$basic = new CoreLibs\Basic();
$_password = new CoreLibs\Check\Password();
$password_class = 'CoreLibs\Check\Password';

View File

@@ -71,7 +71,7 @@ if (is_object($login) && isset($login->acl['unit'])) {
print "Something went wrong with the login<br>";
}
// $basic->debug('SESSION', $basic->print_ar($_SESSION));
// $basic->log->debug('SESSION', \CoreLibs\Debug\Support::printAr($_SESSION));
print '<form method="post" name="loginlogout">';
print '<a href="javascript:document.loginlogout.login_logout.value=\'Logou\';document.loginlogout.submit();">Logout</a>';
@@ -79,22 +79,22 @@ print '<input type="hidden" name="login_logout" value="">';
print '</form>';
// print the debug core vars
print "DEBUG OUT: ".$basic->debug_output."<br>";
print "ECHO OUT: ".$basic->echo_output."<br>";
print "PRINT OUT: ".$basic->print_output."<br>";
print "NOT DEBUG OUT: ".$basic->debug_output_not."<br>";
print "NOT ECHO OUT: ".$basic->echo_output_not."<br>";
print "NOT PRINT OUT: ".$basic->print_output_not."<br>";
print "DEBUG OUT ALL: ".$basic->debug_output_all."<br>";
print "ECHO OUT ALL: ".$basic->echo_output_all."<br>";
print "PRINT OUT ALL: ".$basic->print_output_all."<br>";
foreach (['on', 'off'] as $flag) {
foreach (['debug', 'echo', 'print'] as $type) {
$prefix = $flag == 'off' ? 'NOT ' : '';
print $prefix.strtoupper($type).' OUT: '.\CoreLibs\Debug\Support::printAr($basic->log->getLogLevel($type, $flag)).'<br>';
}
}
foreach (['debug', 'echo', 'print'] as $type) {
print strtoupper($type).' OUT ALL: '.$basic->log->getLogLevelAll($type).'<br>';
}
$basic->debug('SOME MARK', 'Some error output');
$basic->log->debug('SOME MARK', 'Some error output');
print "EDIT ACCESS ID: ".$basic->edit_access_id."<br>";
if (is_object($login)) {
// print "ACL: <br>".$basic->print_ar($login->acl)."<br>";
$basic->debug('ACL', "ACL: ".$basic->printAr($login->acl));
$basic->log->debug('ACL', "ACL: ".\CoreLibs\Debug\Support::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; }));
@@ -104,8 +104,8 @@ if (is_object($login)) {
}
// print error messages
// print $login->printErrorMsg();
print $basic->printErrorMsg();
// print $login->log->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -59,7 +59,7 @@ print "U-S::MIN: $min_version: ".(string)PhpVersion::checkPHPVersion($min_versio
// print "MIN: $min_version: ".(string)$basic->checkPHPVersion($min_version)."<br>";
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -48,7 +48,7 @@ print "C->RANDOMKEYGEN(auto): ".$_array->randomKeyGen()."<br>";
// print "D\RANDOMKEYGEN(auto): ".$basic->randomKeyGen()."<br>";
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -56,7 +56,7 @@ echo "RANDOM KEY [default]: ".$basic->randomKeyGen()."<br>";
echo "TIMED [hr]: ".$basic->hrRunningTime()."<br>"; */
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -43,6 +43,6 @@ print "FILEUPLOADERRORMESSAGE(): ".System::fileUploadErrorMessage(-1)."<br>";
print "FILEUPLOADERRORMESSAGE(UPLOAD_ERR_CANT_WRITE): ".System::fileUploadErrorMessage(UPLOAD_ERR_CANT_WRITE)."<br>";
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -51,7 +51,7 @@ print "TOKEN: $token: (ID) ".$token_id." => (S) ".$_SESSION[$token]."<br>";
print "VALIDATE: $token: ".(string)$basic->validateFormToken($token_id, $token)."<br>"; */
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -49,7 +49,7 @@ print "S::UNIQID (sha256): ".$uids_class::uniqId('sha256')."<br>";
print "/DUNIQID (d): ".$basic->uniqId()."<br>"; */
// error message
print $basic->printErrorMsg();
print $basic->log->printErrorMsg();
print "</body></html>";

View File

@@ -7,7 +7,7 @@
* HISTORY:
*********************************************************************/
$day_short = array(
$day_short = [
1 => 'Mon',
2 => 'Tue',
3 => 'Wed',
@@ -15,9 +15,9 @@ $day_short = array(
5 => 'Fri',
6 => 'Sat',
7 => 'Sun'
);
];
$day_long = array(
$day_long = [
1 => 'Monday',
2 => 'Tuesday',
3 => 'Wednesday',
@@ -25,10 +25,10 @@ $day_long = array(
5 => 'Friday',
6 => 'Saturday',
7 => 'Sunday'
);
];
// months
$month_long = array(
$month_long = [
1 => 'January',
2 => 'February',
3 => 'March',
@@ -41,9 +41,9 @@ $month_long = array(
10 => 'October',
11 => 'November',
12 => 'December'
);
];
$month_short = array(
$month_short = [
1 => 'Jan',
2 => 'Feb',
3 => 'Mar',
@@ -56,6 +56,6 @@ $month_short = array(
10 => 'Oct',
11 => 'Nov',
12 => 'Dec'
);
];
// __END__

View File

@@ -8,7 +8,7 @@
*********************************************************************/
// print debug messages
echo $login->printErrorMsg();
echo $cms->printErrorMsg();
echo $login->log->printErrorMsg();
echo $cms->log->printErrorMsg();
// __END__

View File

@@ -54,20 +54,20 @@ $smarty = new CoreLibs\Template\SmartyExtend();
if (TARGET == 'live' || TARGET == 'remote') {
// login
$login->debug_output_all = DEBUG ? 1 : 0;
$login->echo_output_all = 0;
$login->print_output_all = DEBUG ? 1 : 0;
$login->log->setLogLevelAll('debug', DEBUG ? true : false);
$login->log->setLogLevelAll('echo', false);
$login->log->setLogLevelAll('print', DEBUG ? true : false);
// form
$form->debug_output_all = DEBUG ? 1 : 0;
$form->echo_output_all = 0;
$form->print_output_all = DEBUG ? 1 : 0;
$form->log->setLogLevelAll('debug', DEBUG ? true : false);
$form->log->setLogLevelAll('echo', false);
$form->log->setLogLevelAll('print', DEBUG ? true : false);
}
// space for setting special debug flags
$login->debug_output_all = 1;
$login->log->setLogLevelAll('debug', true);
// set smarty arrays
$HEADER = array();
$DATA = array();
$DEBUG_DATA = array();
$HEADER = [];
$DATA = [];
$DEBUG_DATA = [];
// set the template dir
// WARNING: this has a special check for the mailing tool layout (old layout)
if (defined('LAYOUT')) {
@@ -94,13 +94,13 @@ if ($form->my_page_name == 'edit_order') {
// order name is _always_ order_number for the edit interface
// follwing arrays do exist here:
// $position ... has the positions of the array(0..max), cause in a <select>
// $position ... has the positions of the [0..max], cause in a <select>
// I can't put an number into the array field, in this array,
// there are the POSITION stored, that should CHANGE there order (up/down)
// $row_data_id ... has ALL ids from the sorting part
// $row_data_order ... has ALL order positions from the soirting part
if (!isset($position)) {
$position = array();
$position = [];
}
$row_data_id = $_POST['row_data_id'] ?? [];
$original_id = $row_data_id;
@@ -156,29 +156,33 @@ if ($form->my_page_name == 'edit_order') {
$q .= "ORDER BY order_number";
// init arrays
$row_data = array();
$options_id = array();
$options_name = array();
$options_selected = array();
$row_data = [];
$options_id = [];
$options_name = [];
$options_selected = [];
// DB read data for menu
while ($res = $form->dbReturn($q)) {
$row_data[] = array(
$row_data[] = [
"id" => $res[$table_name."_id"],
"name" => $res["name"],
"order" => $res["order_number"]
);
];
} // while read data ...
// html title
$HEADER['HTML_TITLE'] = $form->l->__('Edit Order');
$messages = array();
$messages = [];
// error msg
if (isset($error)) {
if (!isset($msg)) {
$msg = array();
$msg = [];
}
$messages[] = array('msg' => $msg, 'class' => 'error', 'width' => '100%');
$messages[] = [
'msg' => $msg,
'class' => 'error',
'width' => '100%'
];
}
$DATA['form_error_msg'] = $messages;
@@ -201,8 +205,8 @@ if ($form->my_page_name == 'edit_order') {
$DATA['options_selected'] = $options_selected;
// hidden list for the data (id, order number)
$row_data_id = array();
$row_data_order = array();
$row_data_id = [];
$row_data_order = [];
for ($i = 0; $i < count($row_data); $i++) {
$row_data_id[] = $row_data[$i]['id'];
$row_data_order[] = $row_data[$i]['order'];
@@ -230,7 +234,7 @@ if ($form->my_page_name == 'edit_order') {
$DATA['table_width'] = $table_width;
$messages = array();
$messages = [];
// write out error / status messages
$messages[] = $form->formPrintMsg();
$DATA['form_error_msg'] = $messages;
@@ -252,9 +256,9 @@ if ($form->my_page_name == 'edit_order') {
// build nav from $PAGES ...
if (!isset($PAGES) || !is_array($PAGES)) {
$PAGES = array();
$PAGES = [];
}
$menuarray = array();
$menuarray = [];
foreach ($PAGES as $PAGE_CUID => $PAGE_DATA) {
if ($PAGE_DATA['menu'] && $PAGE_DATA['online']) {
$menuarray[] = $PAGE_DATA;
@@ -273,7 +277,7 @@ if ($form->my_page_name == 'edit_order') {
}
$position = 0;
$menu_data = array();
$menu_data = [];
// for ($i = 1; $i <= count($menuarray); $i ++) {
foreach ($menuarray as $i => $data) {
// do that for new array
@@ -299,7 +303,7 @@ if ($form->my_page_name == 'edit_order') {
}
// on matching, we also need to check if we are in the same folder
if (isset($data['filename']) &&
$data['filename'] == $form->getPageName() &&
$data['filename'] == \CoreLibs\Get\System::getPageName() &&
(!isset($data['hostname']) || (
isset($data['hostname']) &&
(!$data['hostname'] || strstr($data['hostname'], CONTENT_PATH) !== false)
@@ -344,7 +348,7 @@ if ($form->my_page_name == 'edit_order') {
$DATA['form_my_page_name'] = $form->my_page_name;
$DATA['filename_exist'] = 0;
$DATA['drop_down_input'] = 0;
$elements = array();
$elements = [];
// depending on the "getPageName()" I show different stuff
switch ($form->my_page_name) {
case 'edit_users':
@@ -382,9 +386,9 @@ if ($form->my_page_name == 'edit_order') {
$q = "DELETE FROM temp_files";
$form->dbExec($q);
// gets all files in the current dir and dirs given ending with .php
$folders = array('../admin/', '../frontend/');
$files = array('*.php');
$search_glob = array();
$folders = ['../admin/', '../frontend/'];
$files = ['*.php'];
$search_glob = [];
foreach ($folders as $folder) {
// make sure this folder actually exists
if (is_dir(ROOT.$folder)) {
@@ -498,7 +502,7 @@ if (is_dir(BASE.CACHE)) {
$smarty->display($EDIT_TEMPLATE, 'editAdmin_'.$smarty->lang, 'editAdmin_'.$smarty->lang);
// debug output
echo $login->printErrorMsg();
echo $form->printErrorMsg();
echo $login->log->printErrorMsg();
echo $form->log->printErrorMsg();
// __END__

View File

@@ -1,26 +1,26 @@
<?php declare(strict_types=1);
$edit_access = array(
'table_array' => array(
'edit_access_id' => array(
'value' => isset($GLOBALS['edit_access_id']) ? $GLOBALS['edit_access_id'] : '',
$edit_access = [
'table_array' => [
'edit_access_id' => [
'value' => $GLOBALS['edit_access_id'] ?? '',
'type' => 'hidden',
'pk' => 1
),
'name' => array(
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
],
'name' => [
'value' => $GLOBALS['name'] ?? '',
'output_name' => 'Access Group Name',
'mandatory' => 1,
'type' => 'text',
'error_check' => 'alphanumericspace|unique'
),
'description' => array(
'value' => isset($GLOBALS['description']) ? $GLOBALS['description'] : '',
],
'description' => [
'value' => $GLOBALS['description'] ?? '',
'output_name' => 'Description',
'type' => 'textarea'
),
'color' => array(
'value' => isset($GLOBALS['color']) ? $GLOBALS['color'] : '',
],
'color' => [
'value' => $GLOBALS['color'] ?? '',
'output_name' => 'Color',
'mandatory' => 0,
'type' => 'text',
@@ -29,80 +29,80 @@ $edit_access = array(
'error_check' => 'custom',
'error_regex' => "/[\dA-Fa-f]{6}/",
'error_example' => 'F6A544'
),
'enabled' => array(
'value' => isset($GLOBALS['enabled']) ? $GLOBALS['enabled'] : 0,
],
'enabled' => [
'value' => $GLOBALS['enabled'] ?? 0,
'output_name' => 'Enabled',
'type' => 'binary',
'int' => 1, // OR 'bool' => 1
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'protected' => array(
'value' => isset($GLOBALS['protected']) ? $GLOBALS['protected'] : 0,
],
],
'protected' => [
'value' => $GLOBALS['protected'] ?? 0,
'output_name' => 'Protected',
'type' => 'binary',
'int' => 1,
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'additional_acl' => array(
'value' => isset($GLOBALS['additional_acl']) ? $GLOBALS['additional_acl'] : '',
],
],
'additional_acl' => [
'value' => $GLOBALS['additional_acl'] ?? '',
'output_name' => 'Additional ACL (as JSON)',
'type' => 'textarea',
'error_check' => 'json',
'rows' => 10,
'cols' => 60
),
),
],
],
'table_name' => 'edit_access',
"load_query" => "SELECT edit_access_id, name FROM edit_access ORDER BY name",
'show_fields' => array(
array(
'show_fields' => [
[
'name' => 'name'
)
),
'element_list' => array(
'edit_access_data' => array(
],
],
'element_list' => [
'edit_access_data' => [
'output_name' => 'Edit Access Data',
'delete_name' => 'remove_edit_access_data',
// 'type' => 'reference_data', # is not a sub table read and connect, but only a sub table with data
'max_empty' => 5, # maxium visible if no data is set, if filled add this number to visible
// 'type' => 'reference_data', // is not a sub table read and connect, but only a sub table with data
'max_empty' => 5, // maxium visible if no data is set, if filled add this number to visible
'prefix' => 'ead',
'elements' => array(
'name' => array(
'elements' => [
'name' => [
'type' => 'text',
'error_check' => 'alphanumeric|unique',
'output_name' => 'Name',
'mandatory' => 1
),
'value' => array(
],
'value' => [
'type' => 'text',
'output_name' => 'Value'
),
'enabled' => array(
],
'enabled' => [
'type' => 'checkbox',
'output_name' => 'Activate',
'int' => 1,
'element_list' => array(1)
),
/*'edit_access_id' => array(
'element_list' => [1]
],
/*'edit_access_id' => [
'int' => 1,
'type' => 'hidden',
'fk_id' => 1 # reference main key from master table above
),*/
'edit_access_data_id' => array(
'fk_id' => 1 // reference main key from master table above
],*/
'edit_access_data_id' => [
'type' => 'hidden',
'int' => 1,
'pk_id' => 1
)
)
)
)
);
],
],
],
],
];
// __END__

View File

@@ -1,109 +1,109 @@
<?php declare(strict_types=1);
$edit_groups = array(
'table_array' => array(
'edit_group_id' => array(
'value' => isset($GLOBALS['edit_group_id']) ? $GLOBALS['edit_group_id'] : '',
$edit_groups = [
'table_array' => [
'edit_group_id' => [
'value' => $GLOBALS['edit_group_id'] ?? '',
'pk' => 1,
'type' => 'hidden'
),
'enabled' => array(
'value' => isset($GLOBALS['enabled']) ? $GLOBALS['enabled'] : '',
],
'enabled' => [
'value' => $GLOBALS['enabled'] ?? '',
'output_name' => 'Enabled',
'int' => 1,
'type' => 'binary',
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'name' => array(
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
],
],
'name' => [
'value' => $GLOBALS['name'] ?? '',
'output_name' => 'Group Name',
'type' => 'text',
'mandatory' => 1
),
'edit_access_right_id' => array(
'value' => isset($GLOBALS['edit_access_right_id']) ? $GLOBALS['edit_access_right_id'] : '',
],
'edit_access_right_id' => [
'value' => $GLOBALS['edit_access_right_id'] ?? '',
'output_name' => 'Group Level',
'mandatory' => 1,
'int' => 1,
'type' => 'drop_down_db',
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level"
),
'edit_scheme_id' => array(
'value' => isset($GLOBALS['edit_scheme_id']) ? $GLOBALS['edit_scheme_id'] : '',
],
'edit_scheme_id' => [
'value' => $GLOBALS['edit_scheme_id'] ?? '',
'output_name' => 'Group Scheme',
'int_null' => 1,
'type' => 'drop_down_db',
'query' => "SELECT edit_scheme_id, name FROM edit_scheme WHERE enabled = 1 ORDER BY name"
),
'additional_acl' => array(
'value' => isset($GLOBALS['additional_acl']) ? $GLOBALS['additional_acl'] : '',
],
'additional_acl' => [
'value' => $GLOBALS['additional_acl'] ?? '',
'output_name' => 'Additional ACL (as JSON)',
'type' => 'textarea',
'error_check' => 'json',
'rows' => 10,
'cols' => 60
),
),
],
],
'load_query' => "SELECT edit_group_id, name, enabled FROM edit_group ORDER BY name",
'table_name' => 'edit_group',
'show_fields' => array(
array(
'show_fields' => [
[
'name' => 'name'
),
array(
],
[
'name' => 'enabled',
'binary' => array('Yes', 'No'),
'binary' => ['Yes', 'No'],
'before_value' => 'Enabled: '
)
),
'element_list' => array(
'edit_page_access' => array(
],
],
'element_list' => [
'edit_page_access' => [
'output_name' => 'Pages',
'mandatory' => 1,
'delete' => 0, // set then reference entries are deleted, else the 'enable' flag is only set
'enable_name' => 'enable_page_access',
'prefix' => 'epa',
'read_data' => array(
'read_data' => [
'table_name' => 'edit_page',
'pk_id' => 'edit_page_id',
'name' => 'name',
'order' => 'order_number'
),
'elements' => array(
'edit_page_access_id' => array(
],
'elements' => [
'edit_page_access_id' => [
'type' => 'hidden',
'int' => 1,
'pk_id' => 1
),
'enabled' => array(
],
'enabled' => [
'type' => 'checkbox',
'output_name' => 'Activate',
'int' => 1,
'element_list' => array(1)
),
'edit_access_right_id' => array(
'element_list' => [1],
],
'edit_access_right_id' => [
'type' => 'drop_down_db',
'output_name' => 'Access Level',
'int' => 1,
'preset' => 1, // first of the select
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level"
),
'edit_page_id' => array(
],
'edit_page_id' => [
'int' => 1,
'type' => 'hidden'
)
],
/*,
'edit_default' => array(
'edit_default' => [
'output_name' => 'Default',
'type' => 'radio',
'mandatory' => 1
)*/
)
) // edit pages ggroup
)
);
],*/
],
], // edit pages ggroup
],
];
// __END__

View File

@@ -1,75 +1,75 @@
<?php declare(strict_types=1);
$edit_languages=array(
'table_array' => array(
'edit_language_id' => array(
'value' => isset($GLOBALS['edit_language_id']) ? $GLOBALS['edit_language_id'] : '',
$edit_languages=[
'table_array' => [
'edit_language_id' => [
'value' => $GLOBALS['edit_language_id'] ?? '',
'type' => 'hidden',
'pk' => 1
),
'short_name' => array(
'value' => isset($GLOBALS['short_name']) ? $GLOBALS['short_name'] : '',
],
'short_name' => [
'value' => $GLOBALS['short_name'] ?? '',
'output_name' => 'Language (short)',
'mandatory' => 1,
'type' => 'text',
'size' => 2,
'length' => 2
),
'long_name' => array(
'value' => isset($GLOBALS['long_name']) ? $GLOBALS['long_name'] : '',
],
'long_name' => [
'value' => $GLOBALS['long_name'] ?? '',
'output_name' => 'Language (long)',
'mandatory' => 1,
'type' => 'text',
'size' => 40
),
'iso_name' => array(
'value' => isset($GLOBALS['iso_name']) ? $GLOBALS['iso_name'] : '',
],
'iso_name' => [
'value' => $GLOBALS['iso_name'] ?? '',
'output_name' => 'ISO Code',
'mandatory' => 1,
'type' => 'text'
),
'order_number' => array(
'value' => isset($GLOBALS['order_number']) ? $GLOBALS['order_number'] : '',
],
'order_number' => [
'value' => $GLOBALS['order_number'] ?? '',
'int' => 1,
'order' => 1
),
'enabled' => array(
'value' => isset($GLOBALS['enabled']) ? $GLOBALS['enabled'] : '',
],
'enabled' => [
'value' => $GLOBALS['enabled'] ?? '',
'output_name' => 'Enabled',
'int' => 1,
'type' => 'binary',
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'lang_default' => array(
'value' => isset($GLOBALS['lang_default']) ? $GLOBALS['lang_default'] : '',
],
],
'lang_default' => [
'value' => $GLOBALS['lang_default'] ?? '',
'output_name' => 'Default Language',
'int' => 1,
'type' => 'binary',
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
)
),
],
],
],
'load_query' => "SELECT edit_language_id, long_name, iso_name, enabled FROM edit_language ORDER BY long_name",
'show_fields' => array(
array(
'show_fields' => [
[
'name' => 'long_name'
),
array(
],
[
'name' => 'iso_name',
'before_value' => 'ISO: '
),
array(
],
[
'name' => 'enabled',
'before_value' => 'Enabled: ',
'binary' => array('Yes','No')
)
),
'binary' => ['Yes','No'],
],
],
'table_name' => 'edit_language'
);
];
// __END__

View File

@@ -1,40 +1,40 @@
<?php declare(strict_types=1);
$edit_menu_group = array(
'table_array' => array(
'edit_menu_group_id' => array(
'value' => isset($GLOBALS['edit_menu_group_id']) ? $GLOBALS['edit_menu_group_id'] : '',
$edit_menu_group = [
'table_array' => [
'edit_menu_group_id' => [
'value' => $GLOBALS['edit_menu_group_id'] ?? '',
'type' => 'hidden',
'pk' => 1
),
'name' => array(
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
],
'name' => [
'value' => $GLOBALS['name'] ?? '',
'output_name' => 'Group name',
'mandatory' => 1,
'type' => 'text'
),
'flag' => array(
'value' => isset($GLOBALS['flag']) ? $GLOBALS['flag'] : '',
],
'flag' => [
'value' => $GLOBALS['flag'] ?? '',
'output_name' => 'Flag',
'mandatory' => 1,
'type' => 'text',
'error_check' => 'alphanumeric|unique'
),
'order_number' => array(
'value' => isset($GLOBALS['order_number']) ? $GLOBALS['order_number'] : '',
],
'order_number' => [
'value' => $GLOBALS['order_number'] ?? '',
'output_name' => 'Group order',
'type' => 'order',
'int' => 1,
'order' => 1
)
),
],
],
'table_name' => 'edit_menu_group',
'load_query' => "SELECT edit_menu_group_id, name FROM edit_menu_group ORDER BY name",
'show_fields' => array(
array(
'show_fields' => [
[
'name' => 'name'
)
)
);
],
],
];
// __END__

View File

@@ -1,101 +1,101 @@
<?php declare(strict_types=1);
$edit_pages = array(
'table_array' => array(
'edit_page_id' => array(
'value' => isset($GLOBALS['edit_page_id']) ? $GLOBALS['edit_page_id'] : '',
$edit_pages = [
'table_array' => [
'edit_page_id' => [
'value' => $GLOBALS['edit_page_id'] ?? '',
'type' => 'hidden',
'pk' => 1
),
'filename' => array(
'value' => isset($GLOBALS['filename']) ? $GLOBALS['filename'] : '',
],
'filename' => [
'value' => $GLOBALS['filename'] ?? '',
'output_name' => 'Add File ...',
'mandatory' => 1,
'type' => 'drop_down_db',
'query' => "SELECT DISTINCT temp_files.filename AS id, temp_files.folder || temp_files.filename AS name ".
"FROM temp_files ".
"LEFT JOIN edit_page ep ON temp_files.filename = ep.filename ".
"WHERE ep.filename IS NULL"
),
'hostname' => array(
'value' => isset($GLOBALS['hostname']) ? $GLOBALS['hostname'] : '',
'query' => "SELECT DISTINCT temp_files.filename AS id, temp_files.folder || temp_files.filename AS name "
."FROM temp_files "
."LEFT JOIN edit_page ep ON temp_files.filename = ep.filename "
."WHERE ep.filename IS NULL"
],
'hostname' => [
'value' => $GLOBALS['hostname'] ?? '',
'output_name' => 'Hostname or folder',
'type' => 'text'
),
'name' => array(
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
],
'name' => [
'value' => $GLOBALS['name'] ?? '',
'output_name' => 'Page name',
'mandatory' => 1,
'type' => 'text'
),
'order_number' => array(
'value' => isset($GLOBALS['order_number']) ? $GLOBALS['order_number'] : '',
],
'order_number' => [
'value' => $GLOBALS['order_number'] ?? '',
'output_name' => 'Page order',
'type' => 'order',
'int' => 1,
'order' => 1
),
/* 'flag' => array(
],
/* 'flag' => [
'value' => isset($GLOBALS['flag']) ? $GLOBALS['flag'] : '',
'output_name' => 'Page Flag',
'type' => 'drop_down_array',
'query' => array(
'query' => [
'0' => '0',
'1' => '1',
'2' => '2',
'3' => '3',
'4' => '4',
'5' => '5'
)
),*/
'online' => array(
'value' => isset($GLOBALS['online']) ? $GLOBALS['online'] : '',
],
],*/
'online' => [
'value' => $GLOBALS['online'] ?? '',
'output_name' => 'Online',
'int' => 1,
'type' => 'binary',
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'menu' => array(
'value' => isset($GLOBALS['menu']) ? $GLOBALS['menu'] : '',
],
],
'menu' => [
'value' => $GLOBALS['menu'] ?? '',
'output_name' => 'Menu',
'int' => 1,
'type' => 'binary',
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'popup' => array(
'value' => isset($GLOBALS['popup']) ? $GLOBALS['popup'] : '',
],
],
'popup' => [
'value' => $GLOBALS['popup'] ?? '',
'output_name' => 'Popup',
'int' => 1,
'type' => 'binary',
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'popup_x' => array(
'value' => isset($GLOBALS['popup_x']) ? $GLOBALS['popup_x'] : '',
],
],
'popup_x' => [
'value' => $GLOBALS['popup_x'] ?? '',
'output_name' => 'Popup Width',
'int_null' => 1,
'type' => 'text',
'size' => 4,
'length' => 4
),
'popup_y' => array(
'value' => isset($GLOBALS['popup_y']) ? $GLOBALS['popup_y'] : '',
],
'popup_y' => [
'value' => $GLOBALS['popup_y'] ?? '',
'output_name' => 'Popup Height',
'int_null' => 1,
'type' => 'text',
'size' => 4,
'length' => 4
),
'content_alias_edit_page_id' => array(
'value' => isset($GLOBALS['content_alias_edit_page_id']) ? $GLOBALS['content_alias_edit_page_id'] : '',
],
'content_alias_edit_page_id' => [
'value' => $GLOBALS['content_alias_edit_page_id'] ?? '',
'output_name' => 'Content Alias Source',
'int_null' => 1,
'type' => 'drop_down_db',
@@ -110,132 +110,132 @@ $edit_pages = array(
// "FROM edit_page ".
// (isset($GLOBALS['edit_page_id']) ? " WHERE edit_page_id <> ".$GLOBALS['edit_page_id'] : "")." ".
// "ORDER BY order_number"
)
),
],
],
'load_query' => "SELECT edit_page_id, CASE WHEN hostname IS NOT NULL THEN hostname ELSE ''::VARCHAR END || filename AS filename, name, online, menu, popup FROM edit_page ORDER BY order_number",
'table_name' => 'edit_page',
'show_fields' => array(
array(
'show_fields' => [
[
'name' => 'name'
),
array(
],
[
'name' => 'filename',
'before_value' => 'Filename: '
),
array(
],
[
'name' => 'online',
'binary' => array('Yes','No'),
'binary' => ['Yes','No'],
'before_value' => 'Online: '
),
array(
],
[
'name' => 'menu',
'binary' => array('Yes','No'),
'binary' => ['Yes','No'],
'before_value' => 'Menu: '
),
array(
],
[
'name' => 'popup',
'binary' => array('Yes','No'),
'binary' => ['Yes','No'],
'before_value' => 'Popup: '
)
),
'reference_arrays' => array(
'edit_visible_group' => array(
],
],
'reference_arrays' => [
'edit_visible_group' => [
'table_name' => 'edit_page_visible_group',
'other_table_pk' => 'edit_visible_group_id',
'output_name' => 'Visible Groups (access)',
'mandatory' => 1,
'select_size' => 10,
'selected' => isset($GLOBALS['edit_visible_group_id']) ? $GLOBALS['edit_visible_group_id'] : '',
'selected' => $GLOBALS['edit_visible_group_id'] ?? '',
'query' => "SELECT edit_visible_group_id, 'Name: ' || name || ', ' || 'Flag: ' || flag FROM edit_visible_group ORDER BY name"
),
'edit_menu_group' => array(
],
'edit_menu_group' => [
'table_name' => 'edit_page_menu_group',
'other_table_pk' => 'edit_menu_group_id',
'output_name' => 'Menu Groups (grouping)',
'mandatory' => 1,
'select_size' => 10,
'selected' => isset($GLOBALS['edit_menu_group_id']) ? $GLOBALS['edit_menu_group_id'] : '',
'selected' => $GLOBALS['edit_menu_group_id'] ?? '',
'query' => "SELECT edit_menu_group_id, 'Name: ' || name || ', ' || 'Flag: ' || flag FROM edit_menu_group ORDER BY order_number"
)
],
),
'element_list' => array(
'edit_query_string' => array(
],
'element_list' => [
'edit_query_string' => [
'output_name' => 'Query Strings',
'delete_name' => 'remove_query_string',
'prefix' => 'eqs',
'elements' => array(
'name' => array(
'elements' => [
'name' => [
'output_name' => 'Name',
'type' => 'text',
'error_check' => 'unique|alphanumeric',
'mandatory' => 1
),
'value' => array(
],
'value' => [
'output_name' => 'Value',
'type' => 'text'
),
'enabled' => array(
],
'enabled' => [
'output_name' => 'Enabled',
'int' => 1,
'type' => 'checkbox',
'element_list' => array(1)
),
'dynamic' => array(
'element_list' => [1],
],
'dynamic' => [
'output_name' => 'Dynamic',
'int' => 1,
'type' => 'checkbox',
'element_list' => array(1)
),
'edit_query_string_id' => array(
'element_list' => [1],
],
'edit_query_string_id' => [
'type' => 'hidden',
'pk_id' => 1
)
) // elements
), // query_string element list
'edit_page_content' => array(
],
], // elements
], // query_string element list
'edit_page_content' => [
'output_name' => 'Page Content',
'delete_name' => 'remove_page_content',
'prefix' => 'epc',
'elements' => array(
'name' => array(
'elements' => [
'name' => [
'output_name' => 'Content',
'type' => 'text',
'error_check' => 'alphanumeric',
'mandatory' => 1
),
'uid' => array(
],
'uid' => [
'output_name' => 'UID',
'type' => 'text',
'error_check' => 'unique|alphanumeric',
'mandatory' => 1
),
'order_number' => array(
],
'order_number' => [
'output_name' => 'Order',
'type' => 'text',
'error_check' => 'int',
'mandatory' => 1
),
'online' => array(
],
'online' => [
'output_name' => 'Online',
'int' => 1,
'type' => 'checkbox',
'element_list' => array(1)
),
'edit_access_right_id' => array(
'element_list' => [1],
],
'edit_access_right_id' => [
'type' => 'drop_down_db',
'output_name' => 'Access Level',
'int' => 1,
'preset' => 1, // first of the select
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level"
),
'edit_page_content_id' => array(
],
'edit_page_content_id' => [
'type' => 'hidden',
'pk_id' => 1
)
)
)
) // element list
);
],
],
],
], // element list
];
// __END__

View File

@@ -1,20 +1,20 @@
<?php declare(strict_types=1);
$edit_schemes = array(
'table_array' => array(
'edit_scheme_id' => array(
'value' => isset($GLOBALS['edit_scheme_id']) ? $GLOBALS['edit_scheme_id'] : '',
$edit_schemes = [
'table_array' => [
'edit_scheme_id' => [
'value' => $GLOBALS['edit_scheme_id'] ?? '',
'type' => 'hidden',
'pk' => 1
),
'name' => array(
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
],
'name' => [
'value' => $GLOBALS['name'] ?? '',
'output_name' => 'Scheme Name',
'mandatory' => 1,
'type' => 'text'
),
'header_color' => array(
'value' => isset($GLOBALS['header_color']) ? $GLOBALS['header_color'] : '',
],
'header_color' => [
'value' => $GLOBALS['header_color'] ?? '',
'output_name' => 'Header Color',
'mandatory' => 1,
'type' => 'text',
@@ -23,35 +23,35 @@ $edit_schemes = array(
'error_check' => 'custom',
'error_regex' => '/[\dA-Fa-f]{6}/',
'error_example' => 'F6A544'
),
'enabled' => array(
'value' => isset($GLOBALS['enabled']) ? $GLOBALS['enabled'] : '',
],
'enabled' => [
'value' => $GLOBALS['enabled'] ?? '',
'output_name' => 'Enabled',
'int' => 1,
'type' => 'binary',
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'template' => array(
'value' => isset($GLOBALS['template']) ? $GLOBALS['template'] : '',
],
],
'template' => [
'value' => $GLOBALS['template'] ?? '',
'output_name' => 'Template',
'type' => 'text'
)
),
],
],
'table_name' => 'edit_scheme',
'load_query' => "SELECT edit_scheme_id, name, enabled FROM edit_scheme ORDER BY name",
'show_fields' => array(
array(
'show_fields' => [
[
'name' => 'name'
),
array(
],
[
'name' => 'enabled',
'binary' => array('Yes', 'No'),
'binary' => ['Yes', 'No'],
'before_value' => 'Enabled: '
)
)
); // main array
],
],
]; // main array
// __END__

View File

@@ -1,270 +1,270 @@
<?php declare(strict_types=1);
$edit_users = array(
'table_array' => array(
'edit_user_id' => array(
'value' => isset($GLOBALS['edit_user_id']) ? $GLOBALS['edit_user_id'] : '',
$edit_users = [
'table_array' => [
'edit_user_id' => [
'value' => $GLOBALS['edit_user_id'] ?? '',
'type' => 'hidden',
'pk' => 1,
'int' => 1
),
'username' => array(
'value' => isset($GLOBALS['username']) ? $GLOBALS['username'] : '',
],
'username' => [
'value' => $GLOBALS['username'] ?? '',
'output_name' => 'Username',
'mandatory' => 1,
'error_check' => 'unique|alphanumericextended',
'type' => 'text'
),
'password' => array(
'value' => isset($GLOBALS['password']) ? $GLOBALS['password'] : '',
'HIDDEN_value' => isset($GLOBALS['HIDDEN_password']) ? $GLOBALS['HIDDEN_password'] : '',
'CONFIRM_value' => isset($GLOBALS['CONFIRM_password']) ? $GLOBALS['CONFIRM_password'] : '',
],
'password' => [
'value' => $GLOBALS['password'] ?? '',
'HIDDEN_value' => $GLOBALS['HIDDEN_password'] ?? '',
'CONFIRM_value' => $GLOBALS['CONFIRM_password'] ?? '',
'output_name' => 'Password',
'mandatory' => 1,
'type' => 'password', // later has to be password for encryption in database
'update' => array( // connected field updates, and update data
'password_change_date' => array( // db row to update
'update' => [ // connected field updates, and update data
'password_change_date' => [ // db row to update
'type' => 'date', // type of field (int/text/date/etc)
'value' => 'NOW()' // value [todo: complex reference
)
)
),
],
],
],
// 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' => isset($GLOBALS['password_change_interval']) ? $GLOBALS['password_change_interval'] : '',
'password_change_interval' => [
'value' => $GLOBALS['password_change_interval'] ?? '',
'output_name' => 'Password change interval',
'error_check' => 'intervalshort', // can be any date length format. n Y/M/D [not H/M/S], only one set, no combination
'type' => 'text',
'interval' => 1, // interval needs NULL write for empty
'size' => 5, // make it 5 chars long
'length' => 5
),
'enabled' => array(
'value' => isset($GLOBALS['enabled']) ? $GLOBALS['enabled'] : '',
],
'enabled' => [
'value' => $GLOBALS['enabled'] ?? '',
'output_name' => 'Enabled',
'type' => 'binary',
'int' => 1,
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'strict' => array(
'value' => isset($GLOBALS['strict']) ? $GLOBALS['strict'] : '',
],
],
'strict' => [
'value' => $GLOBALS['strict'] ?? '',
'output_name' => 'Strict (Lock after errors)',
'type' => 'binary',
'int' => 1,
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'locked' => array(
'value' => isset($GLOBALS['locked']) ? $GLOBALS['locked'] : '',
],
],
'locked' => [
'value' => $GLOBALS['locked'] ?? '',
'output_name' => 'Locked (auto set if strict with errors)',
'type' => 'binary',
'int' => 1,
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'admin' => array(
'value' => isset($GLOBALS['admin']) ? $GLOBALS['admin'] : '',
],
],
'admin' => [
'value' => $GLOBALS['admin'] ?? '',
'output_name' => 'Admin',
'type' => 'binary',
'int' => 1,
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'debug' => array(
'value' => isset($GLOBALS['debug']) ? $GLOBALS['debug'] : '',
],
],
'debug' => [
'value' => $GLOBALS['debug'] ?? '',
'output_name' => 'Debug',
'type' => 'binary',
'int' => 1,
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'db_debug' => array(
'value' => isset($GLOBALS['db_debug']) ? $GLOBALS['db_debug'] : '',
],
],
'db_debug' => [
'value' => $GLOBALS['db_debug'] ?? '',
'output_name' => 'DB Debug',
'type' => 'binary',
'int' => 1,
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'email' => array(
'value' => isset($GLOBALS['email']) ? $GLOBALS['email'] : '',
],
],
'email' => [
'value' => $GLOBALS['email'] ?? '',
'output_name' => 'E-Mail',
'type' => 'text',
'error_check' => 'email'
),
'last_name' => array(
'value' => isset($GLOBALS['last_name']) ? $GLOBALS['last_name'] : '',
],
'last_name' => [
'value' => $GLOBALS['last_name'] ?? '',
'output_name' => 'Last Name',
'type' => 'text'
),
'first_name' => array(
'value' => isset($GLOBALS['first_name']) ? $GLOBALS['first_name'] : '',
],
'first_name' => [
'value' => $GLOBALS['first_name'] ?? '',
'output_name' => 'First Name',
'type' => 'text'
),
'edit_language_id' => array(
'value' => isset($GLOBALS['edit_language_id']) ? $GLOBALS['edit_language_id'] : '',
],
'edit_language_id' => [
'value' => $GLOBALS['edit_language_id'] ?? '',
'output_name' => 'Language',
'mandatory' => 1,
'int' => 1,
'type' => 'drop_down_db',
'query' => "SELECT edit_language_id, long_name FROM edit_language WHERE enabled = 1 ORDER BY order_number"
),
'edit_scheme_id' => array(
'value' => isset($GLOBALS['edit_scheme_id']) ? $GLOBALS['edit_scheme_id'] : '',
],
'edit_scheme_id' => [
'value' => $GLOBALS['edit_scheme_id'] ?? '',
'output_name' => 'Scheme',
'int_null' => 1,
'type' => 'drop_down_db',
'query' => "SELECT edit_scheme_id, name FROM edit_scheme WHERE enabled = 1 ORDER BY name"
),
'edit_group_id' => array(
'value' => isset($GLOBALS['edit_group_id']) ? $GLOBALS['edit_group_id'] : '',
],
'edit_group_id' => [
'value' => $GLOBALS['edit_group_id'] ?? '',
'output_name' => 'Group',
'int' => 1,
'type' => 'drop_down_db',
'query' => "SELECT edit_group_id, name FROM edit_group WHERE enabled = 1 ORDER BY name",
'mandatory' => 1
),
'edit_access_right_id' => array(
'value' => isset($GLOBALS['edit_access_right_id']) ? $GLOBALS['edit_access_right_id'] : '',
],
'edit_access_right_id' => [
'value' => $GLOBALS['edit_access_right_id'] ?? '',
'output_name' => 'User Level',
'mandatory' => 1,
'int' => 1,
'type' => 'drop_down_db',
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level"
),
'login_error_count' => array(
],
'login_error_count' => [
'output_name' => 'Login error count',
'value' => isset($GLOBALS['login_error_count']) ? $GLOBALS['login_error_count'] : '',
'value' => $GLOBALS['login_error_count'] ?? '',
'type' => 'view',
'empty' => '0'
),
'login_error_date_last' => array(
],
'login_error_date_last' => [
'output_name' => 'Last login error',
'value' => isset($GLOBALS['login_error_date_liast']) ? $GLOBALS['login_error_date_liast'] : '',
'value' => $GLOBALS['login_error_date_liast'] ?? '',
'type' => 'view',
'empty' => '-'
),
'login_error_date_first' => array(
],
'login_error_date_first' => [
'output_name' => 'First login error',
'value' => isset($GLOBALS['login_error_date_first']) ? $GLOBALS['login_error_date_first'] : '',
'value' => $GLOBALS['login_error_date_first'] ?? '',
'type' => 'view',
'empty' => '-'
),
'protected' => array(
'value' => isset($GLOBALS['protected']) ? $GLOBALS['protected'] : '',
],
'protected' => [
'value' => $GLOBALS['protected'] ?? '',
'output_name' => 'Protected',
'type' => 'binary',
'int' => 1,
'element_list' => array(
'element_list' => [
'1' => 'Yes',
'0' => 'No'
)
),
'additional_acl' => array(
'value' => isset($GLOBALS['additional_acl']) ? $GLOBALS['additional_acl'] : '',
],
],
'additional_acl' => [
'value' => $GLOBALS['additional_acl'] ?? '',
'output_name' => 'Additional ACL (as JSON)',
'type' => 'textarea',
'error_check' => 'json',
'rows' => 10,
'cols' => 60
),
),
],
],
'load_query' => "SELECT edit_user_id, username, enabled, debug, db_debug, strict, locked, login_error_count FROM edit_user ORDER BY username",
'table_name' => 'edit_user',
'show_fields' => array(
array(
'show_fields' => [
[
'name' => 'username'
),
array(
],
[
'name' => 'enabled',
'binary' => array('Yes', 'No'),
'binary' => ['Yes', 'No'],
'before_value' => 'Enabled: '
),
array(
],
[
'name' => 'debug',
'binary' => array('Yes', 'No'),
'binary' => ['Yes', 'No'],
'before_value' => 'Debug: '
),
array(
],
[
'name' => 'db_debug',
'binary' => array('Yes', 'No'),
'binary' => ['Yes', 'No'],
'before_value' => 'DB Debug: '
),
array(
],
[
'name' => 'strict',
'binary' => array('Yes', 'No'),
'binary' => ['Yes', 'No'],
'before_value' => 'Strict: '
),
array(
],
[
'name' => 'locked',
'binary' => array('Yes', 'No'),
'binary' => ['Yes', 'No'],
'before_value' => 'Locked: '
),
array(
],
[
'name' => 'login_error_count',
'before_value' => 'Errors: '
)
),
'element_list' => array(
'edit_access_user' => array(
],
],
'element_list' => [
'edit_access_user' => [
'output_name' => 'Accounts',
'mandatory' => 1,
'delete' => 0, // set then reference entries are deleted, else the 'enable' flag is only set
'prefix' => 'ecu',
'read_data' => array(
'read_data' => [
'table_name' => 'edit_access',
'pk_id' => 'edit_access_id',
'name' => 'name',
'order' => 'name'
),
'elements' => array(
'edit_access_user_id' => array(
],
'elements' => [
'edit_access_user_id' => [
'output_name' => 'Activate',
'type' => 'hidden',
'int' => 1,
'pk_id' => 1
),
'enabled' => array(
],
'enabled' => [
'type' => 'checkbox',
'output_name' => 'Activate',
'int' => 1,
'element_list' => array(1)
),
'edit_access_right_id' => array(
'element_list' => [1],
],
'edit_access_right_id' => [
'type' => 'drop_down_db',
'output_name' => 'Access Level',
'preset' => 1, // first of the select
'int' => 1,
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level"
),
'edit_default' => array(
],
'edit_default' => [
'type' => 'radio_group',
'output_name' => 'Default',
'int' => 1,
'element_list' => 'radio_group'
),
'edit_access_id' => array(
],
'edit_access_id' => [
'type' => 'hidden',
'int' => 1
)
)
) // edit pages ggroup
)
);
],
],
], // edit pages ggroup
],
];
// __END__

View File

@@ -1,33 +1,33 @@
<?php declare(strict_types=1);
$edit_visible_group = array(
'table_array' => array(
'edit_visible_group_id' => array(
'value' => isset($GLOBALS['edit_visible_group_id']) ? $GLOBALS['edit_visible_group_id'] : '',
$edit_visible_group = [
'table_array' => [
'edit_visible_group_id' => [
'value' => $GLOBALS['edit_visible_group_id'] ?? '',
'type' => 'hidden',
'pk' => 1
),
'name' => array(
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
],
'name' => [
'value' => $GLOBALS['name'] ?? '',
'output_name' => 'Group name',
'mandatory' => 1,
'type' => 'text'
),
'flag' => array(
'value' => isset($GLOBALS['flag']) ? $GLOBALS['flag'] : '',
],
'flag' => [
'value' => $GLOBALS['flag'] ?? '',
'output_name' => 'Flag',
'mandatory' => 1,
'type' => 'text',
'error_check' => 'alphanumeric|unique'
)
),
],
],
'table_name' => 'edit_visible_group',
'load_query' => "SELECT edit_visible_group_id, name FROM edit_visible_group ORDER BY name",
'show_fields' => array(
array(
'show_fields' => [
[
'name' => 'name'
)
)
);
],
],
];
// __END__

View File

@@ -59,6 +59,8 @@
namespace CoreLibs\ACL;
use CoreLibs\Check\Password;
class Login extends \CoreLibs\DB\IO
{
private $euid; // the user id var
@@ -78,33 +80,33 @@ class Login extends \CoreLibs\DB\IO
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 of users for which the password change is forbidden
private $logout_target;
private $max_login_error_count = -1;
private $lock_deny_users = array();
private $lock_deny_users = [];
// if we have password change we need to define some rules
private $password_min_length = PASSWORD_MIN_LENGTH;
// max length is fixed as 255 (for input type max), if set highter, it will be set back to 255
private $password_max_length = PASSWORD_MAX_LENGTH;
// can have several regexes, if nothing set, all is ok
private $password_valid_chars = array(
private $password_valid_chars = [
// '^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,}$',
// '^(?.*(\pL)u)(?=.*(\pN)u)(?=.*([^\pL\pN])u).{8,}',
);
];
// all possible login error conditions
private $login_error_msg = array();
private $login_error_msg = [];
// this is an array holding all strings & templates passed from the outside (translation)
private $login_template = array(
'strings' => array(),
private $login_template = [
'strings' => [],
'password_change' => '',
'template' => ''
);
];
// acl vars
public $acl = array();
public $default_acl_list = array();
public $acl = [];
public $default_acl_list = [];
// login html, if we are on an ajax page
private $login_html = '';
private $login_is_ajax_page = false;
@@ -190,7 +192,7 @@ class Login extends \CoreLibs\DB\IO
// logout target (from config)
$this->logout_target = LOGOUT_TARGET;
// disallow user list for password change
$this->pw_change_deny_users = array('admin');
$this->pw_change_deny_users = ['admin'];
// set flag if password change is okay
if (defined('PASSWORD_CHANGE')) {
$this->password_change = PASSWORD_CHANGE;
@@ -202,18 +204,18 @@ class Login extends \CoreLibs\DB\IO
// max login counts before error reporting
$this->max_login_error_count = 10;
// users that never get locked, even if they are set strict
$this->lock_deny_users = array('admin');
$this->lock_deny_users = ['admin'];
// init default ACL list array
$_SESSION['DEFAULT_ACL_LIST'] = array();
$_SESSION['DEFAULT_ACL_LIST'] = [];
// read the current edit_access_right list into an array
$q = "SELECT level, type, name FROM edit_access_right WHERE level >= 0 ORDER BY level";
while ($res = $this->dbReturn($q)) {
// level to description format (numeric)
$this->default_acl_list[$res['level']] = array(
$this->default_acl_list[$res['level']] = [
'type' => $res['type'],
'name' => $res['name']
);
];
}
// write that into the session
$_SESSION['DEFAULT_ACL_LIST'] = $this->default_acl_list;
@@ -246,12 +248,13 @@ class Login extends \CoreLibs\DB\IO
// do something with possible debug data?
if (TARGET == 'live' || TARGET == 'remote') {
// login
$this->debug_output_all = DEBUG ? 1 : 0;
$this->echo_output_all = 0;
$this->print_output_all = DEBUG ? 1 : 0;
$this->log->setLogLevelAll('debug', DEBUG ? true : false);
$this->log->setLogLevelAll('echo', false);
$this->log->setLogLevelAll('print', DEBUG ? true : false);
}
$status_msg = $this->printErrorMsg();
if ($this->echo_output_all) {
$status_msg = $this->log->printErrorMsg();
// if ($this->echo_output_all) {
if ($this->log->getLogLevelAll('echo')) {
echo $status_msg;
}
// exit so we don't process anything further, at all
@@ -259,8 +262,8 @@ class Login extends \CoreLibs\DB\IO
} else {
// if we are on an ajax page reset any POST/GET array data to avoid
// any accidentical processing going on
$_POST = array();
$_GET = array();
$_POST = [];
$_GET = [];
// set the action to login so we can trigger special login html return
$_POST['action'] = 'login';
$_POST['login_html'] = $this->login_html;
@@ -299,6 +302,7 @@ class Login extends \CoreLibs\DB\IO
if (!$password) {
$password = $this->password;
}
// first, errors on missing encryption
if ((preg_match("/^\\$2(a|y)\\$/", $hash) && CRYPT_BLOWFISH != 1) ||
(preg_match("/^\\$1\\$/", $hash) && CRYPT_MD5 != 1) ||
(preg_match("/^\\$[0-9A-Za-z.]{12}$/", $hash) && CRYPT_STD_DES != 1)
@@ -306,22 +310,11 @@ class Login extends \CoreLibs\DB\IO
// this means password cannot be decrypted because of missing crypt methods
$this->login_error = 9999;
$password_ok = false;
} elseif ((preg_match("/^\\$2(a)\\$/", $hash) ||
// old password have $07$ so we check this
(preg_match("/^\\$2(y)\\$/", $hash) && preg_match("/\\$07\\$/", $hash)) ||
preg_match("/^\\$1\\$/", $hash) ||
preg_match("/^\\$[0-9A-Za-z.]{12}$/", $hash)) &&
/** @phan-suppress-next-line PhanDeprecatedFunction */
!$this->verifyCryptString($password, $hash)
) {
// check passwword as crypted, $2a$ or $2y$ is blowfish start, $1$ is MD5 start, $\w{12} is standard DES
// this is only for OLD $07$ password
$this->login_error = 1011;
$password_ok = false;
} elseif (preg_match("/^\\$2y\\$/", $hash) &&
!$this->passwordVerify($password, $hash)
!Password::passwordVerify($password, $hash)
) {
// this is the new password hash methid, is only $2y$
// all others are not valid anymore
$this->login_error = 1013;
$password_ok = false;
} elseif (!preg_match("/^\\$2(a|y)\\$/", $hash) &&
@@ -393,10 +386,10 @@ class Login extends \CoreLibs\DB\IO
// none to be set, set in login password check
} else {
// check if the current password is an invalid hash and do a rehash and set password
// $this->debug('LOGIN', 'Hash: '.$res['password'].' -> VERIFY: '.($this->passwordVerify($this->password, $res['password']) ? 'OK' : 'FAIL').' => HASH: '.($this->passwordRehashCheck($res['password']) ? 'NEW NEEDED' : 'OK'));
if ($this->passwordRehashCheck($res['password'])) {
// $this->debug('LOGIN', 'Hash: '.$res['password'].' -> VERIFY: '.($Password::passwordVerify($this->password, $res['password']) ? 'OK' : 'FAIL').' => HASH: '.(Password::passwordRehashCheck($res['password']) ? 'NEW NEEDED' : 'OK'));
if (Password::passwordRehashCheck($res['password'])) {
// update password hash to new one now
$q = "UPDATE edit_user SET password = '".$this->dbEscapeString($this->passwordSet($this->password))."' WHERE edit_user_id = ".$res['edit_user_id'];
$q = "UPDATE edit_user SET password = '".$this->dbEscapeString(Password::passwordSet($this->password))."' WHERE edit_user_id = ".$res['edit_user_id'];
$this->dbExec($q);
}
// normal user processing
@@ -428,9 +421,9 @@ class Login extends \CoreLibs\DB\IO
$q .= "WHERE edit_user_id = ".$res['edit_user_id'];
$this->dbExec($q);
}
$edit_page_ids = array();
$pages = array();
$pages_acl = array();
$edit_page_ids = [];
$pages = [];
$pages_acl = [];
// set pages access
$q = "SELECT ep.edit_page_id, ep.cuid, epca.cuid AS content_alias_uid, ";
$q .= "ep.hostname, ep.filename, ep.name AS edit_page_name, ";
@@ -446,7 +439,7 @@ class Login extends \CoreLibs\DB\IO
// page id array for sub data readout
$edit_page_ids[$res['edit_page_id']] = $res['cuid'];
// create the array for pages
$pages[$res['cuid']] = array(
$pages[$res['cuid']] = [
'edit_page_id' => $res['edit_page_id'],
'cuid' => $res['cuid'],
'content_alias_uid' => $res['content_alias_uid'], // for reference of content data on a differen page
@@ -461,9 +454,9 @@ class Login extends \CoreLibs\DB\IO
'online' => $res['online'],
'acl_level' => $res['level'],
'acl_type' => $res['type'],
'query' => array(),
'visible' => array()
);
'query' => [],
'visible' => []
];
// make reference filename -> level
$pages_acl[$res['filename']] = $res['level'];
} // for each page
@@ -482,11 +475,11 @@ class Login extends \CoreLibs\DB\IO
$q .= "WHERE enabled = 1 AND edit_page_id IN (".join(', ', array_keys($edit_page_ids)).") ";
$q .= "ORDER BY eqs.edit_page_id";
while ($res = $this->dbReturn($q)) {
$pages[$edit_page_ids[$res['edit_page_id']]]['query'][] = array(
$pages[$edit_page_ids[$res['edit_page_id']]]['query'][] = [
'name' => $res['name'],
'value' => $res['value'],
'dynamic' => $res['dynamic']
);
];
}
// get the page content and add them to the page
$_edit_page_id = 0;
@@ -496,7 +489,7 @@ class Login extends \CoreLibs\DB\IO
$q .= "epc.edit_page_id IN (".join(', ', array_keys($edit_page_ids)).") ";
$q .= "ORDER BY epc.order_number";
while ($res = $this->dbReturn($q)) {
$pages[$edit_page_ids[$res['edit_page_id']]]['content'][$res['uid']] = array(
$pages[$edit_page_ids[$res['edit_page_id']]]['content'][$res['uid']] = [
'name' => $res['name'],
'uid' => $res['uid'],
'online' => $res['online'],
@@ -504,7 +497,7 @@ class Login extends \CoreLibs\DB\IO
// access name and level
'acl_type' => $res['type'],
'acl_level' => $res['level']
);
];
}
// write back the pages data to the output array
$_SESSION['PAGES'] = $pages;
@@ -515,18 +508,18 @@ class Login extends \CoreLibs\DB\IO
$q .= "WHERE eau.edit_access_id = ea.edit_access_id AND eau.edit_access_right_id = ear.edit_access_right_id ";
$q .= "AND eau.enabled = 1 AND edit_user_id = ".$this->euid." ";
$q .= "ORDER BY ea.name";
$unit_access = array();
$eauid = array();
$unit_acl = array();
$unit_access = [];
$eauid = [];
$unit_acl = [];
while ($res = $this->dbReturn($q)) {
// read edit access data fields and drop them into the unit access array
$q_sub ="SELECT name, value FROM edit_access_data WHERE enabled = 1 AND edit_access_id = ".$res['edit_access_id'];
$ea_data = array();
$ea_data = [];
while ($res_sub = $this->dbReturn($q_sub)) {
$ea_data[$res_sub['name']] = $res_sub['value'];
}
// build master unit array
$unit_access[$res['edit_access_id']] = array(
$unit_access[$res['edit_access_id']] = [
'id' => $res['edit_access_id'],
'acl_level' => $res['level'],
'acl_type' => $res['type'],
@@ -535,7 +528,7 @@ class Login extends \CoreLibs\DB\IO
'color' => $res['color'],
'default' => $res['edit_default'],
'data' => $ea_data
);
];
// set the default unit
if ($res['edit_default']) {
$_SESSION['UNIT_DEFAULT'] = $res['edit_access_id'];
@@ -729,13 +722,13 @@ class Login extends \CoreLibs\DB\IO
}
}
// detail name/level set
$this->acl['unit_detail'][$ea_id] = array(
$this->acl['unit_detail'][$ea_id] = [
'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'];
@@ -887,7 +880,7 @@ class Login extends \CoreLibs\DB\IO
// no error change this users password
if (!$this->login_error && $edit_user_id) {
// update the user (edit_user_id) with the new password
$q = "UPDATE edit_user SET password = '".$this->dbEscapeString($this->passwordSet($this->pw_new_password))."' WHERE edit_user_id = ".$edit_user_id;
$q = "UPDATE edit_user SET password = '".$this->dbEscapeString(Password::passwordSet($this->pw_new_password))."' WHERE edit_user_id = ".$edit_user_id;
$this->dbExec($q);
$data = 'Password change for user "'.$this->pw_username.'"';
$this->password_change_ok = true;
@@ -1013,7 +1006,7 @@ class Login extends \CoreLibs\DB\IO
*/
private function loginSetTemplates(): void
{
$strings = array(
$strings = [
'HTML_TITLE' => $this->l->__('LOGIN'),
'TITLE' => $this->l->__('LOGIN'),
'USERNAME' => $this->l->__('Username'),
@@ -1022,9 +1015,9 @@ class Login extends \CoreLibs\DB\IO
'ERROR_MSG' => '',
'LOGOUT_TARGET' => '',
'PASSWORD_CHANGE_BUTTON_VALUE' => $this->l->__('Change Password')
);
];
$error_msgs = array(
$error_msgs = [
'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
@@ -1043,11 +1036,11 @@ class Login extends \CoreLibs\DB\IO
'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(
$strings = array_merge($strings, [
'TITLE_PASSWORD_CHANGE' => 'Change Password for User',
'OLD_PASSWORD' => $this->l->__('Old Password'),
'NEW_PASSWORD' => $this->l->__('New Password'),
@@ -1055,7 +1048,7 @@ class Login extends \CoreLibs\DB\IO
'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\');">'
));
]);
$this->login_template['password_change'] = <<<EOM
<div id="pw_change_div" class="hidden" style="position: absolute; top: 30px; left: 50px; width: 400px; height: 220px; background-color: white; border: 1px solid black; padding: 25px;">
<table>
@@ -1074,11 +1067,11 @@ EOM;
if ($this->password_forgot) {
}
if (!$this->password_change && !$this->password_forgot) {
$strings = array_merge($strings, array(
$strings = array_merge($strings, [
'JS_SHOW_HIDE' => '',
'PASSWORD_CHANGE_BUTTON' => '',
'PASSWORD_CHANGE_DIV' => ''
));
]);
}
// first check if all strings are set from outside, if not, set with default ones
@@ -1179,13 +1172,13 @@ EOM;
} else {
$this->action = '';
}
$_data_binary = array(
$_data_binary = [
'_SESSION' => $_SESSION,
'_GET' => $_GET,
'_POST' => $_POST,
'_FILES' => $_FILES,
'error' => $this->login_error
);
];
$data_binary = $this->dbEscapeBytea(bzcompress(serialize($_data_binary)));
// SQL querie for log entry
$q = "INSERT INTO edit_log ";
@@ -1194,9 +1187,9 @@ EOM;
$q .= "action, action_id, action_yes, action_flag, action_menu, action_loaded, action_value, action_error) ";
$q .= "VALUES ('".$this->dbEscapeString($username)."', 'PASSWORD', ".($this->euid ? $this->euid : 'NULL').", ";
$q .= "NOW(), '".$this->dbEscapeString($event)."', '".$this->dbEscapeString((string)$error)."', '".$this->dbEscapeString($data)."', '".$data_binary."', '".$this->page_name."', ";
foreach (array(
foreach ([
'REMOTE_ADDR', 'HTTP_USER_AGENT', 'HTTP_REFERER', 'SCRIPT_FILENAME', 'QUERY_STRING', 'SERVER_NAME', 'HTTP_HOST', 'HTTP_ACCEPT', 'HTTP_ACCEPT_CHARSET', 'HTTP_ACCEPT_ENCODING'
) as $server_code) {
] as $server_code) {
if (array_key_exists($server_code, $_SERVER)) {
$q .= "'".$this->dbEscapeString($_SERVER[$server_code])."', ";
} else {

View File

@@ -27,10 +27,10 @@ namespace CoreLibs\Admin;
class Backend extends \CoreLibs\DB\IO
{
// page name
public $menu = array();
public $menu = [];
public $menu_show_flag = 0; // top menu flag (mostly string)
// action ids
public $action_list = array('action', 'action_id', 'action_sub_id', 'action_yes', 'action_flag', 'action_menu', 'action_value', 'action_error', 'action_loaded');
public $action_list = ['action', 'action_id', 'action_sub_id', 'action_yes', 'action_flag', 'action_menu', 'action_value', 'action_error', 'action_loaded'];
public $action;
public $action_id;
public $action_sub_id;
@@ -41,14 +41,14 @@ class Backend extends \CoreLibs\DB\IO
public $action_value;
public $action_error;
// ACL array variable if we want to set acl data from outisde
public $acl = array();
public $acl = [];
public $default_acl;
// queue key
public $queue_key;
// the current active edit access id
public $edit_access_id;
// error/warning/info messages
public $messages = array();
public $messages = [];
public $error = 0;
public $warning = 0;
public $info = 0;
@@ -88,7 +88,7 @@ class Backend extends \CoreLibs\DB\IO
// queue key
if (preg_match("/^(add|save|delete|remove|move|up|down|push_live)$/", $this->action)) {
$this->queue_key = $this->randomKeyGen(3);
$this->queue_key = \CoreLibs\Create\RandomKey::randomKeyGen(3);
}
}
@@ -221,9 +221,9 @@ class Backend extends \CoreLibs\DB\IO
// get the session pages array
$PAGES = $_SESSION['PAGES'] ?? null;
if (!isset($PAGES) || !is_array($PAGES)) {
$PAGES = array();
$PAGES = [];
}
$pages = array();
$pages = [];
foreach ($PAGES as $PAGE_CUID => $PAGE_DATA) {
$pages[] = $PAGE_DATA;
}
@@ -297,7 +297,7 @@ class Backend extends \CoreLibs\DB\IO
// if page name matchs -> set selected flag
$selected = 0;
if (isset($data['filename']) &&
$this->getPageName() == $data['filename'] &&
\CoreLibs\Get\System::getPageName() == $data['filename'] &&
(!isset($data['hostname']) || (
isset($data['hostname']) &&
(!$data['hostname'] || strstr($data['hostname'], CONTENT_PATH) !== false)
@@ -314,14 +314,14 @@ class Backend extends \CoreLibs\DB\IO
$enabled = 1;
}
// write in to view menu array
array_push($this->menu, array(
array_push($this->menu, [
'name' => $this->l->__($name),
'url' => $url,
'selected' => $selected,
'enabled' => $enabled,
'popup' => $type == 'popup' ? 1 : 0,
'type' => $type
));
]);
} // show page
} // online and in menu
} // for each page
@@ -355,11 +355,12 @@ class Backend extends \CoreLibs\DB\IO
* @param string|int|bool $key key
* @param string|int|bool $value value
* @return array associative array
* @deprecated \CoreLibs\Combined\ArrayHandler::genAssocArray()
*/
public function adbAssocArray(array $db_array, $key, $value): array
{
trigger_error('Method '.__METHOD__.' is deprecated', E_USER_DEPRECATED);
return $this->genAssocArray($db_array, $key, $value);
trigger_error('Method '.__METHOD__.' is deprecated: \CoreLibs\Combined\ArrayHandler::genAssocArray', E_USER_DEPRECATED);
return \CoreLibs\Combined\ArrayHandler::genAssocArray($db_array, $key, $value);
}
/**
@@ -367,11 +368,12 @@ class Backend extends \CoreLibs\DB\IO
* converts bytes into formated string with KB, MB, etc
* @param string|int|float $number string or int or number
* @return string formatted string
* @deprecated \CoreLibs\Convert\Byte::humanReadableByteFormat()
*/
public function adbByteStringFormat($number): string
{
trigger_error('Method '.__METHOD__.' is deprecated', E_USER_DEPRECATED);
return $this->humanReadableByteFormat($number);
trigger_error('Method '.__METHOD__.' is deprecated: \CoreLibs\Convert\Byte::humanReadableByteFormat()', E_USER_DEPRECATED);
return \CoreLibs\Convert\Byte::humanReadableByteFormat($number);
}
/**
@@ -383,11 +385,12 @@ class Backend extends \CoreLibs\DB\IO
* @param string $dummy empty, or file_type to show an icon instead of nothing if file is not found
* @param string $path if source start is not ROOT path, if empty ROOT is choosen
* @return string|bool thumbnail name, or false for error
* @deprecated \CoreLibs\Output\Image::createThumbnail()
*/
public function adbCreateThumbnail($pic, $size_x, $size_y, $dummy = '', $path = "", $cache = "")
{
trigger_error('Method '.__METHOD__.' is deprecated', E_USER_DEPRECATED);
return $this->createThumbnail($pic, $size_x, $size_y, $dummy, $path, $cache);
trigger_error('Method '.__METHOD__.' is deprecated: \CoreLibs\Output\Image::createThumbnail()', E_USER_DEPRECATED);
return \CoreLibs\Output\Image::createThumbnail($pic, $size_x, $size_y, $dummy, $path, $cache);
}
/**
@@ -397,15 +400,15 @@ class Backend extends \CoreLibs\DB\IO
* @param array $vars optional data for a possible printf formated msg
* @return void has no return
*/
public function adbMsg(string $level, string $msg, array $vars = array()): void
public function adbMsg(string $level, string $msg, array $vars = []): void
{
if (!preg_match("/^info|warning|error$/", $level)) {
$level = "info";
}
$this->messages[] = array(
$this->messages[] = [
'msg' => vsprintf($this->l->__($msg), $vars),
'class' => $level
);
];
switch ($level) {
case 'info':
$this->info = 1;
@@ -487,13 +490,13 @@ class Backend extends \CoreLibs\DB\IO
bool $name_pos_back = false
) {
// get the build layout
$html_time = $this->printDateTime($year, $month, $day, $hour, $min, $suffix, $min_steps, $name_pos_back);
$html_time = \CoreLibs\Output\Form\Elements::printDateTime($year, $month, $day, $hour, $min, $suffix, $min_steps, $name_pos_back);
// translate the strings inside
foreach (array('Year ', 'Month ', 'Day ', 'Hour ', 'Minute ') as $_time) {
foreach (['Year ', 'Month ', 'Day ', 'Hour ', 'Minute '] as $_time) {
$html_time = str_replace($_time, $this->l->__(str_replace(' ', '', $_time)).' ', $html_time);
}
// replace week days in short
foreach (array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun') as $_date) {
foreach (['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] as $_date) {
$html_time = str_replace('('.$_date.')', '('.$this->l->__($_date).')', $html_time);
}
// return the datetime select string with strings translated

View File

@@ -53,39 +53,6 @@ class Basic
public $host_port;
// logging interface, Debug\Logging class
public $log;
// internal error reporting vars
/* protected $error_id; // error ID for errors in classes
protected $error_msg = []; // the "connection" to the outside errors
// debug output prefix
public $error_msg_prefix = ''; // prefix to the error string (the class name)
// debug flags
public $debug_output; // if this is true, show debug on desconstructor
public $debug_output_not;
public $debug_output_all;
public $echo_output; // errors: echo out, default is 1
public $echo_output_not;
public $echo_output_all;
public $print_output; // errors: print to file, default is 0
public $print_output_not;
public $print_output_all;
// debug flags/settings
public $debug_fp; // filepointer for writing to file
public $debug_filename = 'debug_file.log'; // where to write output
public $hash_algo = 'crc32b'; // the hash algo used for the internal debug uid
public $running_uid = ''; // unique ID set on class init and used in logging as prefix
// log file name
private $log_file_name_ext = 'log'; // use this for date rotate
public $log_max_filesize = 0; // set in kilobytes
private $log_print_file = 'error_msg##LOGID####LEVEL####CLASS####PAGENAME####DATE##';
private $log_file_unique_id; // a unique ID set only once for call derived from this class
public $log_print_file_date = 1; // if set add Y-m-d and do automatic daily rotation
private $log_file_id = ''; // a alphanumeric name that has to be set as global definition
public $log_per_level = false; // set, it will split per level (first parameter in debug call)
public $log_per_class = false; // set, will split log per class
public $log_per_page = false; // set, will split log per called file
public $log_per_run = false; // create a new log file per run (time stamp + unique ID)
// script running time
private $script_starttime; */
// email valid checks
public $email_regex_check = [];
@@ -109,7 +76,7 @@ class Basic
public function __construct()
{
// set per run UID for logging
$this->running_uid = hash($this->hash_algo, uniqid((string)rand(), true));
$this->running_uid = \CoreLibs\Create\Uids::uniqId();
// running time start for script
$this->script_starttime = microtime(true);
@@ -153,68 +120,6 @@ class Basic
list($this->host_name , $this->host_port) = \CoreLibs\Get\System::getHostName();
// logging interface moved here (->debug is now ->log->debug)
$this->log = new \CoreLibs\Debug\Logging();
// init the log file id
// * GLOBALS
// * CONSTANT
// can be overridden with basicSetLogFileId
/* if (isset($GLOBALS['LOG_FILE_ID'])) {
$this->basicSetLogId($GLOBALS['LOG_FILE_ID']);
} elseif (defined('LOG_FILE_ID')) {
$this->basicSetLogId(LOG_FILE_ID);
}
// if given via parameters, only for all
$this->debug_output_all = false;
$this->echo_output_all = false;
$this->print_output_all = false;
// globals overrule given settings, for one (array), eg $ECHO['db'] = 1;
if (isset($GLOBALS['DEBUG']) && is_array($GLOBALS['DEBUG'])) {
$this->debug_output = $GLOBALS['DEBUG'];
}
if (isset($GLOBALS['ECHO']) && is_array($GLOBALS['ECHO'])) {
$this->echo_output = $GLOBALS['ECHO'];
}
if (isset($GLOBALS['PRINT']) && is_array($GLOBALS['PRINT'])) {
$this->print_output = $GLOBALS['PRINT'];
}
// exclude these ones from output
if (isset($GLOBALS['DEBUG_NOT']) && is_array($GLOBALS['DEBUG_NOT'])) {
$this->debug_output_not = $GLOBALS['DEBUG_NOT'];
}
if (isset($GLOBALS['ECHO_NOT']) && is_array($GLOBALS['ECHO_NOT'])) {
$this->echo_output_not = $GLOBALS['ECHO_NOT'];
}
if (isset($GLOBALS['PRINT_NOT']) && is_array($GLOBALS['PRINT_NOT'])) {
$this->print_output_not = $GLOBALS['PRINT_NOT'];
}
// all overrule
if (isset($GLOBALS['DEBUG_ALL'])) {
$this->debug_output_all = $GLOBALS['DEBUG_ALL'];
}
if (isset($GLOBALS['ECHO_ALL'])) {
$this->echo_output_all = $GLOBALS['ECHO_ALL'];
}
if (isset($GLOBALS['PRINT_ALL'])) {
$this->print_output_all = $GLOBALS['PRINT_ALL'];
}
// GLOBAL rules for log writing
if (isset($GLOBALS['LOG_PRINT_FILE_DATE'])) {
$this->log_print_file_date = $GLOBALS['LOG_PRINT_FILE_DATE'];
}
if (isset($GLOBALS['LOG_PER_LEVEL'])) {
$this->log_per_level = $GLOBALS['LOG_PER_LEVEL'];
}
if (isset($GLOBALS['LOG_PER_CLASS'])) {
$this->log_per_class = $GLOBALS['LOG_PER_CLASS'];
}
if (isset($GLOBALS['LOG_PER_PAGE'])) {
$this->log_per_page = $GLOBALS['LOG_PER_PAGE'];
}
if (isset($GLOBALS['LOG_PER_RUN'])) {
$this->log_per_run = $GLOBALS['LOG_PER_RUN'];
} */
// set the regex for checking emails
/** @deprecated */
@@ -430,37 +335,10 @@ class Basic
* all html tags will be stripped and <br> changed to \n
* this is only used for debug output
* @return void has no return
* @[TODO]deprecated Use $basic->log->debug() instead
*/
public function debug(string $level, string $string, bool $strip = false): void
{
/* if ($this->doDebugTrigger('debug', $level)) {
if (!isset($this->error_msg[$level])) {
$this->error_msg[$level] = '';
}
$error_string = '<div>';
$error_string .= '[<span style="font-weight: bold; color: #5e8600;">'.\CoreLibs\Debug\Support::printTime().'</span>] ';
$error_string .= '[<span style="font-weight: bold; color: #c56c00;">'.$level.'</span>] ';
$error_string .= '[<span style="color: #b000ab;">'.$this->host_name.'</span>] ';
$error_string .= '[<span style="color: #08b369;">'.$this->page_name.'</span>] ';
$error_string .= '[<span style="color: #0062A2;">'.$this->running_uid.'</span>] ';
$error_string .= '{<span style="font-style: italic; color: #928100;">'.get_class($this).'</span>} - '.$string;
$error_string .= "</div><!--#BR#-->";
if ($strip) {
// find any <br> and replace them with \n
$string = str_replace('<br>', "\n", $string);
// strip rest of html elements
$string = preg_replace("/(<\/?)(\w+)([^>]*>)/", '', $string);
}
// same string put for print (no html crap inside)
$error_string_print = '['.\CoreLibs\Debug\Support::printTime().'] ['.$this->host_name.'] ['.\CoreLibs\Get\System::getPageName(2).'] ['.$this->running_uid.'] {'.get_class($this).'} <'.$level.'> - '.$string;
$error_string_print .= "\n";
// write to file if set
$this->writeErrorMsg($level, $error_string_print);
// write to error level
if ($this->doDebugTrigger('echo', $level)) {
$this->error_msg[$level] .= $error_string;
}
} */
$this->log->debug($level, $string, $strip);
}
@@ -481,33 +359,10 @@ class Basic
* prints out the error string
* @param string $string prefix string for header
* @return string error msg for all levels
* @deprecated Use $basic->log->printErrorMsg() instead
*/
public function printErrorMsg(string $string = ''): string
{
/* $string_output = '';
if ($this->debug_output_all) {
if ($this->error_msg_prefix) {
$string = $this->error_msg_prefix;
}
$script_end = microtime(true) - $this->script_starttime;
foreach ($this->error_msg as $level => $temp_debug_output) {
if ($this->doDebugTrigger('debug', $level)) {
if ($this->doDebugTrigger('echo', $level)) {
$string_output .= '<div style="font-size: 12px;">[<span style="font-style: italic; color: #c56c00;">'.$level.'</span>] '.($string ? "<b>**** ".\CoreLibs\Convert\Html::htmlent($string)." ****</b>\n" : "").'</div>';
$string_output .= $temp_debug_output;
} // echo it out
} // do printout
} // for each level
// create the output wrapper around, so we have a nice formated output per class
if ($string_output) {
$string_prefix = '<div style="text-align: left; padding: 5px; font-size: 10px; font-family: sans-serif; border-top: 1px solid black; border-bottom: 1px solid black; margin: 10px 0 10px 0; background-color: white; color: black;">';
$string_prefix .= '<div style="font-size: 12px;">{<span style="font-style: italic; color: #928100;">'.get_class($this).'</span>}</div>';
$string_output = $string_prefix.$string_output;
$string_output .= '<div><span style="font-style: italic; color: #108db3;">Script Run Time:</span> '.$script_end.'</div>';
$string_output .= '</div>';
}
}
return $string_output; */
return $this->log->printErrorMsg($string);
}

View File

@@ -83,20 +83,7 @@ class Logging
$this->setLogLevels();
}
/**
* sets the internal log file prefix id
* string must be a alphanumeric string
* if non valid string is given it returns the previous set one only
* @param string $string log file id string value
* @return string returns the set log file id string
*/
public function basicSetLogId(string $string): string
{
if (preg_match("/^\w+$/", $string)) {
$this->log_file_id = $string;
}
return $this->log_file_id;
}
// *** PRIVATE ***
/**
* init the basic log levels based on global set variables
@@ -141,8 +128,6 @@ class Logging
$this->log_per_run = $GLOBALS['LOG_PER_RUN'] ?? false;
}
// *** PRIVATE ***
/**
* checks if we have a need to work on certain debug output
* Needs debug/echo/print ad target for which of the debug flag groups we check
@@ -270,29 +255,118 @@ class Logging
// *** PUBLIC ***
/**
* passes list of level names, to turn on debug
* eg $foo->debugFor('print', 'on', ['LOG', 'DEBUG', 'INFO']);
* @param string $type error, echo, print
* sets the internal log file prefix id
* string must be a alphanumeric string
* if non valid string is given it returns the previous set one only
* @param string $string log file id string value
* @return string returns the set log file id string
*/
public function basicSetLogId(string $string): string
{
if (preg_match("/^\w+$/", $string)) {
$this->log_file_id = $string;
}
return $this->log_file_id;
}
/**
* get the current log level setting for All level blocks
* @param string $type Type to get: debug, echo, print
* @return bool False on failure, or the boolean flag from the all var
*/
public function getLogLevelAll(string $type): bool
{
// type check for debug/echo/print
if (!in_array($type, ['debug', 'echo', 'print'])) {
return false;
}
return $this->{$type.'_output_all'};
}
/**
* set log level settings for All types
* if invalid type, skip
* @param string $type Type to get: debug, echo, print
* @param bool $set True or False
* @return void No return
*/
public function setLogLevelAll(string $type, bool $set): void
{
// skip set if not valid
if (!in_array($type, ['debug', 'echo', 'print'])) {
return;
}
$this->{$type.'_output_all'} = $set;
}
/**
* old name for setLogLevel
* @param string $type debug, echo, print
* @param string $flag on/off
* array $array of levels to turn on/off debug
* @return void has no return
*/
public function debugFor(string $type, string $flag): void
{
$this->setLogLevel(...[func_get_args()]);
}
/**
* passes list of level names, to turn on debug
* eg $foo->debugFor('print', 'on', ['LOG', 'DEBUG', 'INFO']);
* @param string $type debug, echo, print
* @param string $flag on/off
* array $array of levels to turn on/off debug
* @return void has no return
*/
public function setLogLevel(string $type, string $flag): void
{
// abort if not valid type
if (!in_array($type, ['debug', 'echo', 'print'])) {
return;
}
// invalid flag type
if (!in_array($flag, ['on', 'off'])) {
return;
}
$debug_on = func_get_args();
array_shift($debug_on); // kick out type
array_shift($debug_on); // kick out flag (on/off)
if (count($debug_on) >= 1) {
foreach ($debug_on as $level) {
$switch = $type.'_output';
if ($flag == 'off') {
$switch .= '_not';
}
$switch = $type.'_output'.($flag == 'off' ? '_not' : '');
$this->{$switch}[$level] = true;
}
}
}
/**
* return the log level for the array type normal and not (disable)
* @param string $type debug, echo, print
* @param string $flag on/off
* @param string $level if not null then check if this array entry is set
* else return false
* @return bool|array if $level is null, return array, else boolean true/false
*/
public function getLogLevel(string $type, string $flag, string $level = null)
{
// abort if not valid type
if (!in_array($type, ['debug', 'echo', 'print'])) {
return false;
}
// invalid flag type
if (!in_array($flag, ['on', 'off'])) {
return false;
}
$switch = $type.'_output'.($flag == 'off' ? '_not' : '');
// bool
if ($level !== null) {
return $this->{$switch}[$level] ?? false;
}
// array
return $this->{$switch};
}
/**
* write debug data to error_msg array
* @param string $level id for error message, groups messages together

View File

@@ -40,8 +40,7 @@ class L10n extends \CoreLibs\Basic
* @param string $lang language name (optional), fallback is en
* @param string $path path, if empty fallback on default internal path
*/
public function __construct(string $lang = '', string $path = ''
)
public function __construct(string $lang = '', string $path = '')
{
parent::__construct();
if (!$lang) {

View File

@@ -14,10 +14,10 @@
* form data
*
* description of the variables && arrays that have to be set ...
* $name_u_choose=array(
* $name_u_choose = [
* # this is the description of ALL fields in the main table
* 'table_array' => array(
* 'name_of_col_in_table' => array(
* 'table_array' => [
* 'name_of_col_in_table' => [
* 'value' => $name_of_col_in_table',
* 'pk' => 1/0 - sets the primary key (only one)
* 'fk' => 1/0 - sets the foreign key (do not use at the moment ... buggy ;)
@@ -35,7 +35,7 @@
* 'order_by' => 'order bY' string for drop_down_db(_input) if no query given but fields set
* 'query' => for drop_down_db/array if no outer query given
* 'preset' => value to preset when array is unset (available for all types)
* 'element_list' => array( 'true', 'false') - MUST (!) be set for binary
* 'element_list' => ['true', 'false'] - MUST (!) be set for binary
* 'length' => 'nr' - only available for 'text' (maxlength)
* 'size' => 'nr' - only available for 'text' (size of input field)
* 'rows' => 'nr' - only available for 'textarea'
@@ -47,12 +47,12 @@
* --- file:
* 'save_dir' => 'directory where it should be saved to
* 'accept_type' => 'mime types accepted (mime/text,mime/jpeg ... etc)'
* ),
* ],
* ...
* ),
* ],
* # all reference tables (n<->n)
* 'reference_array' => array(
* 'name_u_choose' => array(
* 'reference_array' => [
* 'name_u_choose' => [
* 'table_name' => 'table_u_choose_for_n_to_n_table',
* 'other_table_pk' => 'primary_key_name_of_reference_table',
* 'output_name' => 'Printed out next to multiple select field',
@@ -61,18 +61,18 @@
* 'query' => 'the query to load the multiple select field
* (select id, concat_ws(' ',name_a, name_b) from reference_table)',
* 'selected' => $var_name for name='xx' in multiple select
* ),
* ],
* ...
* ),
* ],
* # fields that should be shown from the load_query and with what aditions
* 'show_fields' => array(
* array(
* 'show_fields' => [
* [
* 'name' => 'name_of_col_in_query' - col from the query that should be shown
* 'before_value' => 'text' - if set this text will be put in FRONT of the value from the col
* 'binary' => array('true','false') - for 1/0 fields in DB changes it int human readable format
* ),
* 'binary' => ['true','false'] - for 1/0 fields in DB changes it int human readable format
* ],
* ...
* ),
* ],
* # the laod query
* 'load_query' => 'query', - query for generting the list in 'load' function
* # the name of the main table
@@ -215,7 +215,7 @@ namespace CoreLibs\Output\Form;
class Generate extends \CoreLibs\DB\Extended\ArrayIO
{
// rest
public $field_array = array(); // for the load statetment describes which elements from the load query should be shown and i which format
public $field_array = []; // for the load statetment describes which elements from the load query should be shown and i which format
public $load_query; // the query needed for loading a data set (one row in the table)
public $col_name; // the name of the columen (before _<type>) [used for order button]
public $yes; // the yes flag that triggers the template to show ALL and not only new/load
@@ -224,9 +224,9 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
public $warning; // warning flag, for information (saved, loaded, etc)
public $archive_pk_name; // the pk name for the load select form
private $int_pk_name; // primary key, only internal usage
public $reference_array = array(); // reference arrays -> stored in $this->reference_array[$table_name]=>array();
public $reference_array = []; // reference arrays -> stored in $this->reference_array[$table_name] => [];
public $element_list; // element list for elements next to each other as a special sub group
public $table_array = array();
public $table_array = [];
public $my_page_name; // the name of the page without .php extension
public $mobile_phone = false;
// buttons and checkboxes
@@ -251,7 +251,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
public $l;
// now some default error msgs (english)
public $language_array = array();
public $language_array = [];
/**
* construct form generator
@@ -260,7 +260,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
*/
public function __construct(array $db_config, int $table_width = 750)
{
$this->my_page_name = $this->getPageName(1);
$this->my_page_name = \CoreLibs\Get\System::getPageName(1);
$this->setLangEncoding();
// init the language class
$this->l = new \CoreLibs\Language\L10n($this->lang);
@@ -281,10 +281,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$config_array = ${$this->my_page_name};
} else {
// dummy created
$config_array = array(
'table_array' => array(),
$config_array = [
'table_array' => [],
'table_name' => '',
);
];
}
// start the array_io class which will start db_io ...
@@ -333,21 +333,22 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
(is_array($config_array['security_level']) && count($config_array['security_level']) < 4))
)
) {
$this->security_level = array(
$this->security_level = [
'load' => 100,
'new' => 100,
'save' => 100,
'delete' => 100
);
];
} else {
// write array to class var
$this->security_level = isset($config_array['security_level']) ?
$config_array['security_level'] :
array('load' => 100,
[
'load' => 100,
'new' => 100,
'save' => 100,
'delete' => 100
);
];
}
}
@@ -408,7 +409,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
public function formDumpTableArray()
{
if (!is_array($this->table_array)) {
$this->table_array = array();
$this->table_array = [];
}
reset($this->table_array);
$string = '<b>TABLE ARRAY DUMP:</b> '.$this->table_name.'<br>';
@@ -429,7 +430,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
public function formGetColNameFromKey(string $want_key, ?string $key_value = null): ?string
{
if (!is_array($this->table_array)) {
$this->table_array = array();
$this->table_array = [];
}
reset($this->table_array);
foreach ($this->table_array as $key => $value) {
@@ -451,9 +452,9 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
*/
public function formGetColNameArrayFromKey(string $want_key, ?string $key_value = null): array
{
$key_array = array();
$key_array = [];
if (!is_array($this->table_array)) {
$this->table_array = array();
$this->table_array = [];
}
reset($this->table_array);
foreach ($this->table_array as $key => $value) {
@@ -480,11 +481,11 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
if ($this->warning) {
$class = 'warning';
}
return array(
return [
'msg' => $this->msg,
'width' => $this->table_width,
'class' => $class
);
];
}
// next for functions are pre_test fkts for easier default new,load, etc handling
@@ -577,9 +578,9 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
public function formProcedureDeleteFromElementList(array $element_list, array $remove_name): void
{
/** @phan-suppress-next-line PhanTypeArraySuspiciousNullable */
$this->debug('REMOVE ELEMENT', 'Remove REF ELEMENT: '.$this->base_acl_level.' >= '.$this->security_level['delete']);
$this->debug('REMOVE ELEMENT', 'Protected Value set: '.(string)isset($this->table_array['protected']['value']));
$this->debug('REMOVE ELEMENT', 'Error: '.$this->error);
$this->log->debug('REMOVE ELEMENT', 'Remove REF ELEMENT: '.$this->base_acl_level.' >= '.$this->security_level['delete']);
$this->log->debug('REMOVE ELEMENT', 'Protected Value set: '.(string)isset($this->table_array['protected']['value']));
$this->log->debug('REMOVE ELEMENT', 'Error: '.$this->error);
// only do if the user is allowed to delete
if (isset($this->security_level['delete']) &&
$this->base_acl_level >= $this->security_level['delete'] &&
@@ -588,10 +589,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
!$this->error
) {
if (!is_array($element_list)) {
$element_list = array();
$element_list = [];
}
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']);
// $this->log->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
@@ -619,13 +620,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
!$this->element_list[$element_list[$i]]['delete']
) {
if (!isset($_POST[$id])) {
$_POST[$id] = array();
$_POST[$id] = [];
}
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];
// $this->debug('edit_db', 'UP: $q');
// $this->log->debug('edit_db', 'UP: $q');
// $this->dbExec($q);
$this->msg .= $this->l->__('Disabled deselected entries from list<br>');
$this->warning = 1;
@@ -634,13 +635,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
} elseif (isset($this->element_list[$element_list[$i]]['read_data']) &&
$this->element_list[$element_list[$i]]['delete']
) {
// $this->debug('form_clean', 'ID [$id] [$prfx.$pk_name]');
// $this->debug('form_clean', 'ID arr: '.$this->printAr($_POST[$id]));
// $this->debug('form_clean', 'PK arr: '.$this->printAr($_POST[$prfx.$pk_name]));
// $this->log->debug('form_clean', 'ID [$id] [$prfx.$pk_name]');
// $this->log->debug('form_clean', 'ID arr: '.$this->printAr($_POST[$id]));
// $this->log->debug('form_clean', 'PK arr: '.$this->printAr($_POST[$prfx.$pk_name]));
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');
// $this->log->debug('edit_db', 'DEL: $q');
$this->dbExec($q);
$this->msg .= $this->l->__('Deleted deselected entries from list<br>');
$this->warning = 1;
@@ -662,8 +663,8 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
{
$pk_selected = '';
$t_pk_name = '';
$pk_names = array();
$pk_ids = array();
$pk_names = [];
$pk_ids = [];
// when security level is okay ...
if (isset($this->security_level['load']) &&
$this->base_acl_level >= $this->security_level['load']
@@ -705,12 +706,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$pk_names[] = $t_string;
}
} // show it at all
return array(
return [
't_pk_name' => $t_pk_name,
'pk_ids' => $pk_ids,
'pk_names' => $pk_names,
'pk_selected' => $pk_selected
);
];
}
/**
@@ -736,10 +737,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$new_name = $this->l->__('New');
}
} // security level okay
return array(
return [
'new_name' => $new_name,
'show_checkbox' => $show_checkbox
);
];
}
/**
@@ -783,7 +784,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$show_delete = 1;
}
} // print save/delete row at all$
return array(
return [
'seclevel_okay' => $seclevel_okay,
'save' => $save,
'pk_name' => $pk_name,
@@ -791,7 +792,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
'show_delete' => $show_delete,
'old_school_hidden' => $old_school_hidden,
'hide_delete_checkbox' => $hide_delete_checkbox
);
];
} // end of function
/**
@@ -804,7 +805,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
*/
public function formCreateElement(string $element_name, ?string $query = null): array
{
$data = array();
$data = [];
// special 2nd color for 'binary' attribut
if ($this->table_array[$element_name]['type'] == 'binary' && !isset($this->table_array[$element_name]['value'])) {
$EDIT_FGCOLOR_T = 'edit_fgcolor_no';
@@ -997,12 +998,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$data['value'] = $this->table_array[$element_name]['value'];
}
}
return array(
return [
'output_name' => $output_name,
'color' => $EDIT_FGCOLOR_T,
'type' => $type,
'data' => $data
);
];
}
/**
@@ -1016,16 +1017,16 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
public function formErrorCheck(): void
{
if (!is_array($this->table_array)) {
$this->table_array = array();
$this->table_array = [];
}
reset($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 (isset($value['error_check']) && isset($this->table_array[$key]['value']) && !empty($this->table_array[$key]['value'])) {
$this->debug('ERROR CHECK', 'Key: '.$key.' => '.$value['error_check']);
$this->log->debug('ERROR CHECK', 'Key: '.$key.' => '.$value['error_check']);
// each error check can be a piped seperated value, lets split it
// $this->debug('edit', $value['error_check']);
// $this->log->debug('edit', $value['error_check']);
foreach (explode('|', $value['error_check']) as $error_check) {
switch ($error_check) {
case 'number':
@@ -1073,20 +1074,20 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
}
break;
case 'alphanumericspace':
// $this->debug('edit', 'IN Alphanumericspace');
// $this->log->debug('edit', 'IN Alphanumericspace');
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, -, _ and spaces allowed) value for the <b>%s</b> Field!<br>'), $this->table_array[$key]['output_name']);
}
break;
case 'alphanumeric':
// $this->debug('edit', 'IN Alphanumeric');
// $this->log->debug('edit', 'IN Alphanumeric');
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 only also - and _, no spaces) value for the <b>%s</b> Field!<br>'), $this->table_array[$key]['output_name']);
}
break;
// this one also allows @ and .
case 'alphanumericextended':
// $this->debug('edit', 'IN Alphanumericextended');
// $this->log->debug('edit', 'IN Alphanumericextended');
if (!preg_match("/^[0-9A-Za-z_\-@\.]+$/", $this->table_array[$key]['value'])) {
$this->msg .= sprintf($this->l->__('Please enter a valid alphanumeric extended (Numbers, Letters, -, _, @ and . only, no spaces) value for the <b>%s</b> Field!<br>'), $this->table_array[$key]['output_name']);
}
@@ -1101,7 +1102,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
case 'json':
// check if valid json
$json_out = json_decode($this->table_array[$key]['value'], true);
$this->debug('JSON ENCODE', 'LAST ERROR: '.json_last_error().' WITH: '.$this->table_array[$key]['value']);
$this->log->debug('JSON ENCODE', 'LAST ERROR: '.json_last_error().' WITH: '.$this->table_array[$key]['value']);
if (json_last_error()) {
$this->msg .= sprintf($this->l->__('Please enter a valid JSON string for the field <b>%s<b>: %s'), $this->table_array[$key]['output_name'], json_last_error_msg());
}
@@ -1121,7 +1122,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// main if end
) {
// if mandatory && no input
// $this->debug('form', 'A: '.$this->table_array[$key]['type'].' -- '.$this->table_array[$key]['input_value'].' -- '.$this->table_array[$key]['value']);
// $this->log->debug('form', 'A: '.$this->table_array[$key]['type'].' -- '.$this->table_array[$key]['input_value'].' -- '.$this->table_array[$key]['value']);
if (!$this->table_array[$key]['value'] && $this->table_array[$key]['type'] != 'binary') {
$this->msg .= sprintf($this->l->__('Please enter something into the <b>%s</b> field!<br>'), $this->table_array[$key]['output_name']);
}
@@ -1160,15 +1161,15 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
}
}
} else {
$this->reference_array = array();
$this->reference_array = [];
}
// $this->debug('edit_error', 'QS: <pre>'.print_r($_POST, true).'</pre>');
// $this->log->debug('edit_error', 'QS: <pre>'.print_r($_POST, true).'</pre>');
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
foreach ($this->element_list as $table_name => $reference_array) {
if (!is_array($reference_array)) {
$reference_array = array();
$reference_array = [];
}
// set pk/fk id for this
$_pk_name = '';
@@ -1194,17 +1195,17 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
) {
$max = count($_POST[$prfx.$key]);
}
// $this->debug('edit_error_chk', 'KEY: $prfx$key | count: '.count($_POST[$prfx.$key]).' | M: $max');
// $this->debug('edit_error_chk', 'K: '.$_POST[$prfx.$key].' | '.$_POST[$prfx.$key][0]);
// $this->log->debug('edit_error_chk', 'KEY: $prfx$key | count: '.count($_POST[$prfx.$key]).' | M: $max');
// $this->log->debug('edit_error_chk', 'K: '.$_POST[$prfx.$key].' | '.$_POST[$prfx.$key][0]);
}
$this->debug('POST ARRAY', $this->printAr($_POST));
$this->log->debug('POST ARRAY', $this->printAr($_POST));
// init variables before inner loop run
$mand_okay = 0;
$mand_name = '';
$row_okay = array();
$default_wrong = array();
$error = array();
$element_set = array();
$row_okay = [];
$default_wrong = [];
$error = [];
$element_set = [];
# check each row
for ($i = 0; $i < $max; $i ++) {
// either one of the post pks is set, or the mandatory
@@ -1222,7 +1223,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
}
// we found a mandatory field. check now if one is set to satisfy the main mandatory
// also check, if this field is mandatory and its not set, but any other, throw an error
// $this->debug('edit_error_chk', 'RG error - Data['.$prfx.$el_name.': '.$_POST[$prfx.$el_name][$i].' | '.$_POST[$prfx.$el_name].' - '.$reference_array['enable_name'].' - '.$_POST[$reference_array['enable_name']][$_POST[$prfx.$el_name][$i]]);
// $this->log->debug('edit_error_chk', 'RG error - Data['.$prfx.$el_name.': '.$_POST[$prfx.$el_name][$i].' | '.$_POST[$prfx.$el_name].' - '.$reference_array['enable_name'].' - '.$_POST[$reference_array['enable_name']][$_POST[$prfx.$el_name][$i]]);
if (isset($data_array['mandatory']) &&
$data_array['mandatory'] &&
isset($_POST[$prfx.$el_name][$i]) &&
@@ -1234,12 +1235,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
!isset($_POST[$prfx.$el_name])
) {
// radio group and set where one not active
// $this->debug('edit_error_chk', 'RADIO GROUP');
// $this->log->debug('edit_error_chk', 'RADIO GROUP');
$row_okay[$_POST[$prfx.$el_name][$i] ?? 0] = 0;
$default_wrong[$_POST[$prfx.$el_name][$i] ?? 0] = 1;
$error[$_POST[$prfx.$el_name][$i] ?? 0] = 1;
} elseif (isset($_POST[$prfx.$el_name][$i]) && !isset($error[$i])) {
// $this->debug('edit_error_chk', '[$i]');
// $this->log->debug('edit_error_chk', '[$i]');
$element_set[$i] = 1;
$row_okay[$i] = 1;
} elseif (isset($data_array['mandatory']) &&
@@ -1332,7 +1333,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
{
$this->pk_id = null;
if (!is_array($this->table_array)) {
$this->table_array = array();
$this->table_array = [];
}
reset($this->table_array);
foreach ($this->table_array as $key => $value) {
@@ -1345,7 +1346,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
}
if (is_array($this->reference_array)) {
if (!is_array($this->reference_array)) {
$this->reference_array = array();
$this->reference_array = [];
}
reset($this->reference_array);
foreach ($this->reference_array as $key => $value) {
@@ -1370,7 +1371,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// reset all temp fields
if (!is_array($this->table_array)) {
$this->table_array = array();
$this->table_array = [];
}
reset($this->table_array);
foreach ($this->table_array as $key => $value) {
@@ -1380,7 +1381,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
if (is_array($this->reference_array)) {
// load each reference_table
if (!is_array($this->reference_array)) {
$this->reference_array = array();
$this->reference_array = [];
}
reset($this->reference_array);
foreach ($this->reference_array as $key => $value) {
@@ -1407,17 +1408,17 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// for drop_down_db_input check if text field is filled and if, if not yet in db ...
// and upload files
if (!is_array($this->table_array)) {
$this->table_array = array();
$this->table_array = [];
}
reset($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']);
// $this->log->debug('form', 'A: '.$this->table_array[$key]['type'].' --- '.$this->table_array[$key]['input_value']);
if (isset($this->table_array[$key]['type']) &&
$this->table_array[$key]['type'] == 'drop_down_db_input' &&
$this->table_array[$key]['input_value']
) {
// $this->debug('form', 'HERE');
// $this->log->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->dbEscapeString(strtolower($this->table_array[$key]['input_value']))."'";
// if a where was given, add here
@@ -1471,8 +1472,8 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// if smth in $key, keep as is
// $_file=$key.'_file';
// $_delete=$key.'_delete';
// $this->debug('form', 'UF: '.$GLOBALS['_FILES'][$key.'_file']['name']);
// $this->debug('form', 'delete: '.$key.'_delete => '.$GLOBALS[$key.'_delete']);
// $this->log->debug('form', 'UF: '.$GLOBALS['_FILES'][$key.'_file']['name']);
// $this->log->debug('form', 'delete: '.$key.'_delete => '.$GLOBALS[$key.'_delete']);
if ($GLOBALS['_FILES'][$key.'_file']['name']) {
// check if dir exists
if (is_dir($this->table_array[$key]['save_dir'])) {
@@ -1518,7 +1519,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// write reference array(s) if necessary
if (is_array($this->reference_array)) {
if (!is_array($this->reference_array)) {
$this->reference_array = array();
$this->reference_array = [];
}
reset($this->reference_array);
foreach ($this->reference_array as $reference_array) {
@@ -1533,18 +1534,18 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
} // if reference arrays
// write element list
if (isset($this->element_list) && is_array($this->element_list)) {
$type = array();
$type = [];
reset($this->element_list);
foreach ($this->element_list as $table_name => $reference_array) {
// init arrays
$q_begin = array();
$q_middle = array();
$q_end = array();
$q_names = array();
$q_data = array();
$q_values = array();
$no_write = array();
$block_write = array();
$q_begin = [];
$q_middle = [];
$q_end = [];
$q_names = [];
$q_data = [];
$q_values = [];
$no_write = [];
$block_write = [];
// get the number of keys from the elements array
$keys = array_keys($reference_array['elements']);
// element prefix name
@@ -1556,21 +1557,21 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$max = count($_POST[$prfx.$key]);
}
}
$this->debug('REF ELEMENT', 'RUN FOR TABLE: '.$table_name);
// $this->debug('edit_error', 'MAX: $max');
$this->log->debug('REF ELEMENT', 'RUN FOR TABLE: '.$table_name);
// $this->log->debug('edit_error', 'MAX: $max');
// check if there is a hidden key, update, else insert
foreach ($reference_array['elements'] as $el_name => $data_array) {
// $this->debug('edit_error_query', 'QUERY: '.$this->printAr($_POST));
// $this->log->debug('edit_error_query', 'QUERY: '.$this->printAr($_POST));
// go through all submitted data
// for ($i = 0; $i < count($_POST[$el_name]); $i ++)
for ($i = 0; $i < $max; $i ++) {
if (!isset($no_write[$i])) {
$no_write[$i] = 0;
// $this->debug('REF ELEMENT', 'Init no write for pos: '.$i);
// $this->log->debug('REF ELEMENT', 'Init no write for pos: '.$i);
}
if (!isset($block_write[$i])) {
$block_write[$i] = 0;
// $this->debug('REF ELEMENT', 'Init block write for pos: '.$i);
// $this->log->debug('REF ELEMENT', 'Init block write for pos: '.$i);
}
// 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'
@@ -1580,15 +1581,15 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
) {
$no_write[$i] = 1;
}
// $this->debug('REF ELEMENT', "[$i] [".$prfx.$el_name."]: MANDATORY: ".isset($data_array['mandatory'])." SET: ".isset($_POST[$prfx.$el_name][$i]).", EMPTY: ".empty($_POST[$prfx.$el_name][$i])." | DO ACTION ".((!isset($_POST[$prfx.$el_name][$i]) || (isset($_POST[$prfx.$el_name][$i]) && empty($_POST[$prfx.$el_name][$i]))) ? 'YES' : 'NO')." => NO WRITE: ".$no_write[$i]);
// $this->log->debug('REF ELEMENT', "[$i] [".$prfx.$el_name."]: MANDATORY: ".isset($data_array['mandatory'])." SET: ".isset($_POST[$prfx.$el_name][$i]).", EMPTY: ".empty($_POST[$prfx.$el_name][$i])." | DO ACTION ".((!isset($_POST[$prfx.$el_name][$i]) || (isset($_POST[$prfx.$el_name][$i]) && empty($_POST[$prfx.$el_name][$i]))) ? 'YES' : 'NO')." => NO WRITE: ".$no_write[$i]);
if (!empty($reference_array['enable_name']) &&
isset($reference_array['delete']) && $reference_array['delete'] &&
(!isset($_POST[$reference_array['enable_name']][$i]) || empty($_POST[$reference_array['enable_name']][$i]))
) {
$no_write[$i] = 1;
}
// $this->debug('REF ELEMENT', "[$i] [".$prfx.$el_name."]: ENABLED NAME: ".isset($reference_array['enable_name']).", DELETE: ".isset($reference_array['delete']).", NOT ENABLED FOR POS: ".(isset($reference_array['enable_name']) ? isset($_POST[$reference_array['enable_name']][$i]) : '-'));
$this->debug('REF ELEMENT', "[$i] [".$prfx.$el_name."]: WRITE: ".$no_write[$i]);
// $this->log->debug('REF ELEMENT', "[$i] [".$prfx.$el_name."]: ENABLED NAME: ".isset($reference_array['enable_name']).", DELETE: ".isset($reference_array['delete']).", NOT ENABLED FOR POS: ".(isset($reference_array['enable_name']) ? isset($_POST[$reference_array['enable_name']][$i]) : '-'));
$this->log->debug('REF ELEMENT', "[$i] [".$prfx.$el_name."]: WRITE: ".$no_write[$i]);
// flag if data is in the text field and we are in a reference data set
if (isset($reference_array['type']) && $reference_array['type'] == 'reference_data') {
if (!empty($data_array['type']) && $data_array['type'] == 'text' &&
@@ -1599,7 +1600,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
} else {
$block_write[$i] = 1;
}
// $this->debug('REF ELEMENT', "[$i] [".$prfx.$el_name."]: REFERENCE TYPE: ".isset($reference_array['type']).", SET REFERENCE TYPE: ".(isset($reference_array['type']) ? $reference_array['type'] : '-').", DATA TYPE: ".$data_array['type'].", SET: ".isset($_POST[$prfx.$el_name][$i]).", => BLOCK WIRTE: ".$block_write[$i]);
// $this->log->debug('REF ELEMENT', "[$i] [".$prfx.$el_name."]: REFERENCE TYPE: ".isset($reference_array['type']).", SET REFERENCE TYPE: ".(isset($reference_array['type']) ? $reference_array['type'] : '-').", DATA TYPE: ".$data_array['type'].", SET: ".isset($_POST[$prfx.$el_name][$i]).", => BLOCK WIRTE: ".$block_write[$i]);
// set type and boundaries for insert/update
if (isset($data_array['pk_id']) &&
!empty($data_array['pk_id']) &&
@@ -1608,7 +1609,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$q_begin[$i] = 'UPDATE '.$table_name.' SET ';
$q_end[$i] = ' WHERE '.$el_name.' = '.$_POST[$prfx.$el_name][$i];
$type[$i] = 'update';
$this->debug('REF ELEMENT', 'SET UPDATE');
$this->log->debug('REF ELEMENT', 'SET UPDATE');
} elseif (isset($data_array['pk_id']) &&
!empty($data_array['pk_id']) &&
empty($_POST[$prfx.$el_name][$i])
@@ -1617,13 +1618,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$q_middle[$i] = ') VALUES (';
$q_end[$i] = ')';
$type[$i] = 'insert';
$this->debug('REF ELEMENT', 'SET INSERT');
$this->log->debug('REF ELEMENT', 'SET INSERT');
}
// $this->debug('REF ELEMENT', "[$i] [".$prfx.$el_name."] PK SET: ".isset($data_array['pk_id']).'/'.empty($data_array['pk_id']).', KEY SET: '.empty($_POST[$prfx.$el_name][$i])." -> TYPE: ".(isset($type[$i]) ? $type[$i] : '-'));
// $this->log->debug('REF ELEMENT', "[$i] [".$prfx.$el_name."] PK SET: ".isset($data_array['pk_id']).'/'.empty($data_array['pk_id']).', KEY SET: '.empty($_POST[$prfx.$el_name][$i])." -> TYPE: ".(isset($type[$i]) ? $type[$i] : '-'));
// write all data (insert/update) because I don't know until all are processed if it is insert or update
// don't write primary key backup for update
// for reference_data type, only write if at least one text type field is set
// $this->debug('edit_error', 'I: $i | EL Name: '.$prfx.$el_name.' | Data: '.$_POST[$prfx.$el_name][$i].' | Type: '.$type[$i].' | PK: '.$data_array['pk_id'].', Block write: '.$block_write[$i]);
// $this->log->debug('edit_error', 'I: $i | EL Name: '.$prfx.$el_name.' | Data: '.$_POST[$prfx.$el_name][$i].' | Type: '.$type[$i].' | PK: '.$data_array['pk_id'].', Block write: '.$block_write[$i]);
// only add elements that are not PK or FK flaged
if (!isset($data_array['pk_id']) && !isset($data_array['fk_id'])) {
// update data list
@@ -1701,7 +1702,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$q_end[$i];
}
/** @phan-suppress-next-line PhanTypePossiblyInvalidDimOffset */
$this->debug('edit', 'Pos['.$i.'] => '.$type[$i].' Q: '.$q.'<br>');
$this->log->debug('edit', 'Pos['.$i.'] => '.$type[$i].' Q: '.$q.'<br>');
// write the dataset
if ($q) {
$this->dbExec($q);
@@ -1724,7 +1725,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// remove any reference arrays
if (is_array($this->reference_array)) {
if (!is_array($this->reference_array)) {
$this->reference_array = array();
$this->reference_array = [];
}
reset($this->reference_array);
foreach ($this->reference_array as $reference_array) {
@@ -1735,7 +1736,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// remove any element list references
if (is_array($this->element_list)) {
if (!is_array($this->element_list)) {
$this->element_list = array();
$this->element_list = [];
}
reset($this->element_list);
foreach ($this->element_list as $table_name => $data_array) {
@@ -1745,7 +1746,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
}
// unlink ALL files
if (!is_array($this->table_array)) {
$this->table_array = array();
$this->table_array = [];
}
reset($this->table_array);
foreach ($this->table_array as $key => $value) {
@@ -1763,11 +1764,11 @@ 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 = array())
public function formCreateHiddenFields($hidden_array = [])
{
$hidden = array();
$hidden = [];
if (!is_array($this->table_array)) {
$this->table_array = array();
$this->table_array = [];
}
reset($this->table_array);
foreach ($this->table_array as $key => $value) {
@@ -1784,7 +1785,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
if (is_array($hidden_array)) {
reset($hidden_array);
foreach ($hidden_array as $key => $value) {
$hidden[] = array('key' => $key, 'value' => $value);
$hidden[] = ['key' => $key, 'value' => $value];
}
}
return $hidden;
@@ -1797,7 +1798,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// DESC : creates the multiple select part for a reference_table
public function formCreateElementReferenceTable($table_name)
{
$data = array();
$data = [];
$output_name = $this->reference_array[$table_name]['output_name'];
if (isset($this->reference_array[$table_name]['mandatory']) &&
$this->reference_array[$table_name]['mandatory']
@@ -1809,13 +1810,18 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
while ($res = $this->dbReturn($this->reference_array[$table_name]['query'])) {
$data['value'][] = $res[0];
$data['output'][] = $res[1];
$data['selected'][] = ($this->checked(
$data['selected'][] = (\CoreLibs\Convert\Html::checked(
$this->reference_array[$table_name]['selected'] ?? '',
$res[0]
)) ? $res[0] : '';
}
$type = 'reference_table';
return array('output_name' => $output_name, 'type' => $type, 'color' => 'edit_fgcolor', 'data' => $data);
return [
'output_name' => $output_name,
'type' => $type,
'color' => 'edit_fgcolor',
'data' => $data
];
}
/**
@@ -1829,22 +1835,22 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
public function formCreateElementListTable(string $table_name): array
{
// init data rray
$data = array(
$data = [
'delete_name' => '',
'delete' => 0,
'enable_name' => '',
'prefix' => '',
'pk_name' => '',
'fk_name' => '',
'type' => array(),
'output_name' => array(),
'preset' => array(),
'element_list' => array(),
'output_data' => array(),
'content' => array(),
'pos' => array(),
'type' => [],
'output_name' => [],
'preset' => [],
'element_list' => [],
'output_data' => [],
'content' => [],
'pos' => [],
'table_name' => $table_name // sub table name
);
];
// output name for the viewable left table td box, prefixed with * if mandatory
$output_name = $this->element_list[$table_name]['output_name'];
if (isset($this->element_list[$table_name]['mandatory']) &&
@@ -1870,15 +1876,15 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// build the select part
if (!isset($this->element_list[$table_name]['elements']) || !is_array($this->element_list[$table_name]['elements'])) {
$this->element_list[$table_name]['elements'] = array();
$this->element_list[$table_name]['elements'] = [];
}
reset($this->element_list[$table_name]['elements']);
// generic data read in (counts for all rows)
// visible list data output
$q_select = array();
$proto = array();
$q_select = [];
$proto = [];
foreach ($this->element_list[$table_name]['elements'] as $el_name => $data_array) {
// $this->debug('CFG', 'El: '.$el_name.' -> '.$this->printAr($data_array));
// $this->log->debug('CFG', 'El: '.$el_name.' -> '.$this->printAr($data_array));
// if the element name matches the read array, then set the table as a name prefix
// this is for reading the data
$q_select[] = $el_name;
@@ -1901,7 +1907,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$md_q = md5($data_array['query']);
while ($res = $this->dbReturn($data_array['query'])) {
/** @phan-suppress-next-line PhanTypeInvalidDimOffset */
$this->debug('edit', 'Q['.$md_q.'] pos: '.$this->cursor_ext[$md_q]['pos'].' | want: '.($data_array['preset'] ?? '-').' | set: '.($data['preset'][$el_name] ?? '-'));
$this->log->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 (isset($data_array['preset']) &&
(!isset($data['preset'][$el_name]) || empty($data['preset'][$el_name])) &&
@@ -1916,7 +1922,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
} elseif (isset($data_array['element_list'])) {
$data['element_list'][$el_name] = $data_array['element_list']; // this is for the checkboxes
}
$this->debug('CREATE ELEMENT LIST TABLE', 'Table: '.$table_name.', Post: '.$el_name.' => '.
$this->log->debug('CREATE ELEMENT LIST TABLE', 'Table: '.$table_name.', Post: '.$el_name.' => '.
((isset($_POST[$el_name]) && is_array($_POST[$el_name])) ? 'AS ARRAY'/*.$this->printAr($_POST[$el_name])*/ : 'NOT SET/OR NOT ARRAY').
((isset($_POST[$el_name]) && !is_array($_POST[$el_name])) ? $_POST[$el_name] : ''));
// if error, check new line addition so we don't loose it
@@ -1932,17 +1938,17 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
}
// $proto[$el_name] = $this->error ? $_POST[$el_name][(count($_POST[$el_name]) - 1)] : '';
}
// $this->debug('CFG DATA', 'Data: '.$this->printAr($data));
// $this->debug('CFG PROTO', 'Proto: '.$this->printAr($proto));
// $this->debug('CFG SELECT', 'Proto: '.$this->printAr($q_select));
// $this->log->debug('CFG DATA', 'Data: '.$this->printAr($data));
// $this->log->debug('CFG PROTO', 'Proto: '.$this->printAr($proto));
// $this->log->debug('CFG SELECT', 'Proto: '.$this->printAr($q_select));
// query for reading in the data
$this->debug('edit_error', 'ERR: '.$this->error);
$this->log->debug('edit_error', 'ERR: '.$this->error);
// if we got a read data, build the read select for the read, and read out the 'selected'
/** @phan-assert array $this->element_list[$table_name]['read_data'] */
if (isset($this->element_list[$table_name]['read_data'])) {
// we need a second one for the query build only
// prefix all elements with the $table name
$_q_select = array();
$_q_select = [];
foreach ($q_select as $_pos => $element) {
$_q_select[$_pos] = $table_name.'.'.$element;
}
@@ -2003,19 +2009,19 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$q = 'SELECT '.implode(', ', $q_select).' FROM '.$table_name.' WHERE '.$this->int_pk_name.' = '.$this->table_array[$this->int_pk_name]['value'];
}
}
// $this->debug('CFG QUERY', 'Q: '.$q);
// $this->log->debug('CFG QUERY', 'Q: '.$q);
// only run if we have query strnig
if (isset($q)) {
$pos = 0; // position in while for overwrite if needed
// read out the list and add the selected data if needed
while ($res = $this->dbReturn($q)) {
$_data = array();
$_data = [];
$prfx = $data['prefix'] ?? ''; // short
// go through each res
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]);
// $this->log->debug('edit_error', '[$i] ELNAME: $el_name | POS[$prfx$el_name]: '.$_POST[$prfx.$el_name][$pos].' | RES: '.$res[$el_name]);
// if we have an error, we take what we have in the vars, if not we take the data from the db
if ($this->error) {
// if we have a radio group, set a bit different
@@ -2035,7 +2041,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
}
}
$data['content'][] = $_data;
$data['pos'][] = array(0 => $pos); // this is for the checkboxes
$data['pos'][] = [0 => $pos]; // this is for the checkboxes
$pos ++; // move up one
// reset and unset before next run
unset($_data);
@@ -2056,16 +2062,16 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// check if we need to fill fields
$element_count = (isset($data['content']) && 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);
$this->log->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 = $element_count, $pos_max = $this->element_list[$table_name]['max_empty'] + $element_count; $pos <= $pos_max; $pos ++) {
$_data = array();
$_data = [];
// just in case
if (!isset($data['type'])) {
$data['type'] = array();
$data['type'] = [];
}
// the fields that need to be filled are in data->type array:
// pk fields are unfilled
@@ -2085,10 +2091,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
}
$data['content'][] = $_data;
// this is for the checkboxes
$data['pos'][] = array(
$data['pos'][] = [
0 => $pos
);
$this->debug('CFG ELEMENT LIST FILL', 'Pos: '.$pos.'/'.$pos_max.', Content: '.count($data['content']).', Pos: '.count($data['pos']));
];
$this->log->debug('CFG ELEMENT LIST FILL', 'Pos: '.$pos.'/'.$pos_max.', Content: '.count($data['content']).', Pos: '.count($data['pos']));
}
}
}
@@ -2097,18 +2103,18 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
if (isset($data['delete_name']) && !empty($data['delete_name'])) {
$data['content'][] = $proto;
// we also need the pos add or we through an error in smarty
$data['pos'][] = array(
$data['pos'][] = [
0 => isset($data['pos']) ? count($data['pos']) : 0
);
];
}
// $this->debug('CFG ELEMENT LIST FILL', 'Data array: '.$this->printAr($data));
// $this->log->debug('CFG ELEMENT LIST FILL', 'Data array: '.$this->printAr($data));
$type = 'element_list';
return array(
return [
'output_name' => $output_name,
'type' => $type,
'color' => 'edit_fgcolor',
'data' => $data
);
];
}
} // end of class

View File

@@ -22,12 +22,12 @@ class ProgressBar
public $code; // unique code
public $status = 'new'; // current status (new,show,hide)
public $step = 0; // current step
public $position = array( // current bar position
public $position = [ // current bar position
'left' => null,
'top' => null,
'width' => null,
'height' => null,
);
];
public $clear_buffer_size = 1; // we need to send this before the lfush to get browser output
public $clear_buffer_size_init = 1024*1024; // if I don't send that junk, it won't send anything
@@ -50,7 +50,7 @@ class ProgressBar
public $direction = 'right'; // direction of motion (right,left,up,down)
public $frame = array('show' => false); // ProgressBar Frame
public $frame = ['show' => false]; // ProgressBar Frame
/* 'show' => false, # frame show (true/false)
'left' => 200, # frame position from left
'top' => 100, # frame position from top
@@ -61,8 +61,8 @@ class ProgressBar
'brd_color' => '#dfdfdf #404040 #404040 #dfdfdf' # frame border color
*/
public $label = array(); // ProgressBar Labels
/* 'name' => array( # label name
public $label = []; // ProgressBar Labels
/* 'name' => [ # label name
'type' => 'text', # label type (text,button,step,percent,crossbar)
'value' => 'Please wait ...', # label value
'left' => 10, # label position from left
@@ -75,7 +75,7 @@ class ProgressBar
'font-weight' => '', # label font weight
'color' => '#000000', # label font color
'bgr_color' => '' # label background color
)
]
*/
// output strings
@@ -166,7 +166,7 @@ class ProgressBar
$pixel = $bar - ($this->pedding * 2);
}
$position = array();
$position = [];
switch ($this->direction) {
case 'right':
$position['left'] = $this->pedding;
@@ -221,7 +221,7 @@ class ProgressBar
*/
public function setFrame(int $width = 0, int $height = 0): void
{
$this->frame = array(
$this->frame = [
'show' => true,
'left' => 20,
'top' => 35,
@@ -230,7 +230,7 @@ class ProgressBar
'color' => '#c0c0c0',
'border' => 2,
'brd_color' => '#dfdfdf #404040 #404040 #dfdfdf'
);
];
if ($width > 0) {
$this->frame['width'] = $width;
@@ -252,7 +252,7 @@ class ProgressBar
{
switch ($type) {
case 'text':
$this->label[$name] = array(
$this->label[$name] = [
'type' => 'text',
'value' => $value,
'left' => 0, // keep all to the left in box
@@ -265,10 +265,10 @@ class ProgressBar
'font-weight' => 'normal',
'color' => '#000000',
'bgr_color' => ''
);
];
break;
case 'button':
$this->label[$name] = array(
$this->label[$name] = [
'type' => 'button',
'value' => $value,
'action' => '',
@@ -283,10 +283,10 @@ class ProgressBar
'font-weight' => 'normal',
'color' => '#000000',
'bgr_color' => ''
);
];
break;
case 'step':
$this->label[$name] = array(
$this->label[$name] = [
'type' => 'step',
'value' => $value,
'left' => $this->left + 5,
@@ -299,7 +299,7 @@ class ProgressBar
'font-weight' => 'normal',
'color' => '#000000',
'bgr_color' => ''
);
];
break;
case 'percentlbl':
case 'percent':
@@ -309,7 +309,7 @@ class ProgressBar
} else {
$font_size = 11;
}
$this->label[$name] = array(
$this->label[$name] = [
'type' => $type, // either percent or percentlbl
'value' => $value,
'left' => false,
@@ -322,10 +322,10 @@ class ProgressBar
'font-weight' => 'normal',
'color' => '#000000',
'bgr_color' => ''
);
];
break;
case 'crossbar':
$this->label[$name] = array(
$this->label[$name] = [
'type' => 'crossbar',
'value' => $value,
'left' => $this->left + ($this->width / 2),
@@ -338,7 +338,7 @@ class ProgressBar
'font-weight' => 'normal',
'color' => '#000000',
'bgr_color' => ''
);
];
break;
}
}
@@ -373,7 +373,7 @@ class ProgressBar
// print "SET POSITION[$name]: $left<br>";
// if this is percent, we ignore anything, it is auto positioned
if ($this->label[$name]['type'] != 'percent') {
foreach (array('top', 'left', 'width', 'height') as $pos_name) {
foreach (['top', 'left', 'width', 'height'] as $pos_name) {
if ($$pos_name !== false) {
$this->label[$name][$pos_name] = intval($$pos_name);
}

View File

@@ -107,8 +107,8 @@ class SmartyExtend extends SmartyBC
// iinit lang
$this->l10n = new \CoreLibs\Language\L10n($this->lang);
// variable variable register
// $this->register_modifier('getvar', array(&$this, 'get_template_vars'));
$this->registerPlugin('modifier', 'getvar', array(&$this, 'get_template_vars'));
// $this->register_modifier('getvar', [&$this, 'get_template_vars']);
$this->registerPlugin('modifier', 'getvar', [&$this, 'get_template_vars']);
$this->page_name = pathinfo($_SERVER["PHP_SELF"])['basename'];
@@ -357,7 +357,7 @@ class SmartyExtend extends SmartyBC
// top menu
$this->DATA['nav_menu'] = $cms->adbTopMenu();
$this->DATA['nav_menu_count'] = is_array($this->DATA['nav_menu']) ? count($this->DATA['nav_menu']) : 0;
// messages = array('msg' =>, 'class' => 'error/warning/...')
// messages = ['msg' =>, 'class' => 'error/warning/...']
$this->DATA['messages'] = $cms->messages ?? [];
// the page name
$this->DATA['page_name'] = $this->page_name;
@@ -375,7 +375,7 @@ class SmartyExtend extends SmartyBC
// html title
// set local page title
$this->HEADER['HTML_TITLE'] = !$this->L_TITLE ?
ucfirst(str_replace('_', ' ', $cms->getPageName(1))).(defined(G_TITLE) ? ' - '.$this->l10n->__(G_TITLE) : '') :
ucfirst(str_replace('_', ' ', \CoreLibs\Get\System::getPageName(1))).(defined(G_TITLE) ? ' - '.$this->l10n->__(G_TITLE) : '') :
$this->l10n->__($this->L_TITLE);
// LANG
@@ -408,7 +408,7 @@ class SmartyExtend extends SmartyBC
public function mergeCmsSmartyVars(object $cms): void
{
// array merge HEADER, DATA, DEBUG DATA
foreach (array('HEADER', 'DATA', 'DEBUG_DATA') as $ext_smarty) {
foreach (['HEADER', 'DATA', 'DEBUG_DATA'] as $ext_smarty) {
if (isset($cms->{$ext_smarty}) &&
is_array($cms->{$ext_smarty})
) {