diff --git a/.phan/config.php b/.phan/config.php
index 79bae302..900f9ef8 100644
--- a/.phan/config.php
+++ b/.phan/config.php
@@ -109,8 +109,9 @@ return [
// ignore the old qq tests
'www/admin/qq_file_upload_front.php',
'www/admin/qq_file_upload_ajax.php',
- // symlink files for msarty
+ // symlink ignore
'www/lib/smarty-3.1.30/SmartyBC.class.php',
+ 'www/lib/htmlMimeMail-2.5.1/HtmlMimeMailCreate.php',
],
// what not to show as problem
diff --git a/www/configs/config.master.php b/www/configs/config.master.php
index 4e48b752..6ff5d447 100644
--- a/www/configs/config.master.php
+++ b/www/configs/config.master.php
@@ -169,6 +169,8 @@ define('PUBLIC_SCHEMA', 'public');
define('DEV_SCHEMA', 'public');
define('TEST_SCHEMA', 'public');
define('LIVE_SCHEMA', 'public');
+define('GLOBAL_DB_SCHEMA', '');
+define('LOGIN_DB_SCHEMA', '');
/************* CORE HOST SETTINGS *****************/
if (file_exists(BASE.CONFIGS.'config.host.php')) {
diff --git a/www/includes/edit_base.php b/www/includes/edit_base.php
index aa14083b..c81ed40b 100644
--- a/www/includes/edit_base.php
+++ b/www/includes/edit_base.php
@@ -102,7 +102,7 @@ if ($form->my_page_name == 'edit_order') {
if (!isset($position)) {
$position = array();
}
- $row_data_id = $_POST['row_data_id'];
+ $row_data_id = $_POST['row_data_id'] ?? [];
$original_id = $row_data_id;
if (count($position)) {
$row_data_order = $_POST['row_data_order'];
@@ -116,8 +116,8 @@ if ($form->my_page_name == 'edit_order') {
// this gets the old before (moves one "up")
// is done for every element in row
// echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")
";
- $temp_id = $row_data_id[$position[$i]];
- $row_data_id[$position[$i]] = $row_data_id[$position[$i] - 1];
+ $temp_id = $row_data_id[$position[$i]] ?? null;
+ $row_data_id[$position[$i]] = $row_data_id[$position[$i] - 1] ?? null;
$row_data_id[$position[$i] - 1] = $temp_id;
// echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")
";
} // for
@@ -129,8 +129,8 @@ if ($form->my_page_name == 'edit_order') {
// same as up, just up in other way, starts from bottom (last element) and moves "up"
// element before actuel gets temp, this element, becomes element after this,
// element after this, gets this
- $temp_id = $row_data_id[$position[$i] + 1];
- $row_data_id[$position[$i] + 1] = $row_data_id[$position[$i]];
+ $temp_id = $row_data_id[$position[$i] + 1] ?? null;
+ $row_data_id[$position[$i] + 1] = $row_data_id[$position[$i]] ?? null;
$row_data_id[$position[$i]] = $temp_id;
} // for
} // if down
@@ -140,8 +140,10 @@ if ($form->my_page_name == 'edit_order') {
(isset($down) && ($position[count($position) - 1] != (count($row_data_id) - 1)))
) {
for ($i = 0; $i < count($row_data_id); $i ++) {
- $q = "UPDATE ".$table_name." SET order_number = ".$row_data_order[$i]." WHERE ".$table_name."_id = ".$row_data_id[$i];
- $q = $form->dbExec($q);
+ if (isset($row_data_order[$i]) && isset($row_data_id[$i])) {
+ $q = "UPDATE ".$table_name." SET order_number = ".$row_data_order[$i]." WHERE ".$table_name."_id = ".$row_data_id[$i];
+ $q = $form->dbExec($q);
+ }
} // for all article ids ...
} // if write
} // if there is something to move
@@ -187,7 +189,9 @@ if ($form->my_page_name == 'edit_order') {
// list of points to order
for ($j = 0; $j < count($position); $j++) {
// if matches, put into select array
- if ($original_id[$position[$j]] == $row_data[$i]['id']) {
+ if (isset($original_id[$position[$j]]) && isset($row_data[$i]['id']) &&
+ $original_id[$position[$j]] == $row_data[$i]['id']
+ ) {
$options_selected[] = $i;
}
}
@@ -301,7 +305,7 @@ if ($form->my_page_name == 'edit_order') {
(!$data['hostname'] || strstr($data['hostname'], CONTENT_PATH) !== false)
))
) {
- $position = $j;
+ $position = $i;
$menu_data[$i]['position'] = 1;
$menu_data[$i]['popup'] = 0;
} else {
@@ -326,7 +330,7 @@ if ($form->my_page_name == 'edit_order') {
} // for
// $form->debug('MENU ARRAY', $form->printAr($menu_data));
$DATA['menu_data'] = $menu_data;
- $DATA['page_name'] = $menuarray[$position]['page_name'];
+ $DATA['page_name'] = $menuarray[$position]['page_name'] ?? '-Undefined ['.$position.'] -';
$L_TITLE = $DATA['page_name'];
// html title
$HEADER['HTML_TITLE'] = $form->l->__($L_TITLE);
diff --git a/www/layout/admin/javascript/edit.jq.js b/www/layout/admin/javascript/edit.jq.js
index 43512c83..cba2e6cd 100644
--- a/www/layout/admin/javascript/edit.jq.js
+++ b/www/layout/admin/javascript/edit.jq.js
@@ -121,8 +121,7 @@ function setCenter(id, left, top)
function goToPos(element, offset = 0)
{
try {
- if ($('#' + element).length)
- {
+ if ($('#' + element).length) {
$('body,html').animate({
scrollTop: $('#' + element).offset().top - offset
}, 500);
@@ -558,6 +557,21 @@ function aelx(base, ...attach)
return base;
}
+/**
+ * same as aelx, but instead of using objects as parameters
+ * get an array of objects to attach
+ * @param {Object} base object to where we attach the elements
+ * @param {Array} attach array of objects to attach
+ * @return {Object} "none", technically there is no return needed, global attach
+ */
+function aelxar(base, attach)
+{
+ for (var i = 0; i < attach.length; i ++) {
+ base.sub.push(Object.assign({}, attach[i]));
+ }
+ return base;
+}
+
/**
* resets the sub elements of the base element given
* @param {Object} base cel created element
diff --git a/www/layout/admin/javascript/edit.pt.js b/www/layout/admin/javascript/edit.pt.js
index 4fb9b1e8..e39d09a1 100644
--- a/www/layout/admin/javascript/edit.pt.js
+++ b/www/layout/admin/javascript/edit.pt.js
@@ -201,8 +201,7 @@ function setCenter(id, left, top)
function goToPos(element, offset = 0)
{
try {
- if ($(element))
- {
+ if ($(element)) {
// get the element pos
var pos = $(element).cumulativeOffset();
// if not top element and no offset given, set auto offset for top element
@@ -618,6 +617,21 @@ function aelx(base, ...attach)
return base;
}
+/**
+ * same as aelx, but instead of using objects as parameters
+ * get an array of objects to attach
+ * @param {Object} base object to where we attach the elements
+ * @param {Array} attach array of objects to attach
+ * @return {Object} "none", technically there is no return needed, global attach
+ */
+function aelxar(base, attach)
+{
+ attach.each(function(t) {
+ base.sub.push(Object.assign({}, t));
+ });
+ return base;
+}
+
/**
* resets the sub elements of the base element given
* @param {Object} base cel created element
diff --git a/www/lib/CoreLibs/ACL/Login.php b/www/lib/CoreLibs/ACL/Login.php
index ca3ce821..988ce6ab 100644
--- a/www/lib/CoreLibs/ACL/Login.php
+++ b/www/lib/CoreLibs/ACL/Login.php
@@ -161,8 +161,7 @@ class Login extends \CoreLibs\DB\IO
// if we have a search path we need to set it, to use the correct DB to login
// check what schema to use. if there is a login schema use this, else check if there is a schema set in the config, or fall back to DB_SCHEMA if this exists, if this also does not exists use public schema
- if (defined('LOGIN_DB_SCHEMA')) {
- /** @phan-suppress-next-line PhanUndeclaredConstant */
+ if (defined('LOGIN_DB_SCHEMA') && LOGIN_DB_SCHEMA) {
$SCHEMA = LOGIN_DB_SCHEMA;
} elseif (isset($db_config['db_schema']) && $db_config['db_schema']) {
$SCHEMA = $db_config['db_schema'];
diff --git a/www/lib/CoreLibs/Admin/Backend.php b/www/lib/CoreLibs/Admin/Backend.php
index f4a65bcb..0c49d891 100644
--- a/www/lib/CoreLibs/Admin/Backend.php
+++ b/www/lib/CoreLibs/Admin/Backend.php
@@ -169,8 +169,7 @@ class Backend extends \CoreLibs\DB\IO
}
// check schema
- if (defined('LOGIN_DB_SCHEMA')) {
- /** @phan-suppress-next-line PhanUndeclaredConstant */
+ if (defined('LOGIN_DB_SCHEMA') && LOGIN_DB_SCHEMA) {
$SCHEMA = LOGIN_DB_SCHEMA;
} elseif ($this->dbGetSchema()) {
$SCHEMA = $this->dbGetSchema();
@@ -256,7 +255,6 @@ class Backend extends \CoreLibs\DB\IO
$type = 'popup';
} else {
$type = 'normal';
- /** @phan-suppress-next-line PhanTypeArraySuspicious */
$data['popup'] = 0;
}
$query_string = '';
@@ -443,8 +441,7 @@ class Backend extends \CoreLibs\DB\IO
string $associate = null,
string $file = null
): void {
- if (defined('GLOBAL_DB_SCHEMA')) {
- /** @phan-suppress-next-line PhanUndeclaredConstant */
+ if (defined('GLOBAL_DB_SCHEMA') && GLOBAL_DB_SCHEMA) {
$SCHEMA = GLOBAL_DB_SCHEMA;
} elseif ($this->dbGetSchema()) {
$SCHEMA = $this->dbGetSchema();
diff --git a/www/lib/CoreLibs/Basic.php b/www/lib/CoreLibs/Basic.php
index 3f60413d..418084f8 100644
--- a/www/lib/CoreLibs/Basic.php
+++ b/www/lib/CoreLibs/Basic.php
@@ -1808,6 +1808,7 @@ class Basic
*/
public static function stringByteFormat($number, bool $dot_thousand = false)
{
+ $matches = [];
// detects up to exo bytes
preg_match("/([\d.,]*)\s?(eb|pb|tb|gb|mb|kb|e|p|t|g|m|k|b)$/", strtolower($number), $matches);
if (isset($matches[1]) && isset($matches[2])) {
@@ -2181,6 +2182,8 @@ class Basic
}
// if type is not in the list, but returns as PDF, we need to convert to JPEG before
if (!$type) {
+ $output = [];
+ $return = null;
// is this a PDF, if no, return from here with nothing
$convert_prefix = 'png:';
# TEMP convert to PNG, we then override the file name
diff --git a/www/lib/CoreLibs/DB/IO.php b/www/lib/CoreLibs/DB/IO.php
index 874a71e9..8f9fabca 100644
--- a/www/lib/CoreLibs/DB/IO.php
+++ b/www/lib/CoreLibs/DB/IO.php
@@ -633,6 +633,7 @@ class IO extends \CoreLibs\Basic
*/
private function __dbReturnTable(string $query): array
{
+ $matches = [];
if (preg_match("/^SELECT /i", $query)) {
preg_match("/ (FROM) (([\w_]+)\.)?([\w_]+) /i", $query, $matches);
} else {
@@ -655,6 +656,7 @@ class IO extends \CoreLibs\Basic
*/
private function __dbPrepareExec(string $query, string $pk_name)
{
+ $matches= [];
// to either use the returning method or the guess method for getting primary keys
$this->returning_id = false;
// set the query
@@ -1454,6 +1456,7 @@ class IO extends \CoreLibs\Basic
*/
public function dbPrepare(string $stm_name, string $query, string $pk_name = '')
{
+ $matches = [];
if (!$query) {
$this->error_id = 11;
$this->__dbError();
@@ -1507,6 +1510,7 @@ class IO extends \CoreLibs\Basic
$this->prepare_cursor[$stm_name]['pk_name'] = $pk_name;
}
}
+ $match = [];
// search for $1, $2, in the query and push it into the control array
preg_match_all('/(\$[0-9]{1,})/', $query, $match);
$this->prepare_cursor[$stm_name]['count'] = count($match[1]);
@@ -1665,6 +1669,7 @@ class IO extends \CoreLibs\Basic
*/
public function dbCompareVersion(string $compare): bool
{
+ $matches = [];
// compare has =, >, < prefix, and gets stripped, if the rest is not X.Y format then error
preg_match("/^([<>=]{1,})(\d{1,})\.(\d{1,})/", $compare, $matches);
$compare = $matches[1];
@@ -1909,10 +1914,10 @@ class IO extends \CoreLibs\Basic
*/
public function dbTimeFormat(string $age, bool $show_micro = false): string
{
+ $matches = [];
// in string (datetime diff): 1786 days 22:11:52.87418
// or (age): 4 years 10 mons 21 days 12:31:11.87418
// also -09:43:54.781021 or without - prefix
-
preg_match("/(.*)?(\d{2}):(\d{2}):(\d{2})(\.(\d+))/", $age, $matches);
$prefix = $matches[1] != '-' ? $matches[1] : '';