Supress array errors in form generate

This commit is contained in:
Clemens Schwaighofer
2021-05-17 09:35:09 +09:00
parent be092fc449
commit a46888d101

View File

@@ -1937,7 +1937,8 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// $this->debug('CFG SELECT', 'Proto: '.$this->printAr($q_select)); // $this->debug('CFG SELECT', 'Proto: '.$this->printAr($q_select));
// query for reading in the data // query for reading in the data
$this->debug('edit_error', 'ERR: '.$this->error); $this->debug('edit_error', 'ERR: '.$this->error);
// if we got a read data, build the read select for the read, and read out the 'selected' data // 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'])) { if (isset($this->element_list[$table_name]['read_data'])) {
// we need a second one for the query build only // we need a second one for the query build only
// prefix all elements with the $table name // prefix all elements with the $table name
@@ -1946,6 +1947,9 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
$_q_select[$_pos] = $table_name.'.'.$element; $_q_select[$_pos] = $table_name.'.'.$element;
} }
// set if missing // set if missing
if (!isset($this->element_list[$table_name]['read_data']['pk_id'])) {
$this->element_list[$table_name]['read_data']['pk_id'] = '';
}
if (!isset($this->element_list[$table_name]['read_data']['name'])) { if (!isset($this->element_list[$table_name]['read_data']['name'])) {
$this->element_list[$table_name]['read_data']['name'] = ''; $this->element_list[$table_name]['read_data']['name'] = '';
} }
@@ -1954,10 +1958,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
} }
// add the read names in here, prefix them with the table name // add the read names in here, prefix them with the table name
// earch to read part is split by | // earch to read part is split by |
if (!empty($this->element_list[$table_name]['read_data']['name']) && if (!empty($this->element_list[$table_name]['read_data']['name'])) {
!empty($this->element_list[$table_name]['read_data']['table_name']) /** @phan-suppress-next-line PhanTypeArraySuspiciousNullable */
) {
foreach (explode('|', $this->element_list[$table_name]['read_data']['name']) as $read_name) { foreach (explode('|', $this->element_list[$table_name]['read_data']['name']) as $read_name) {
/** @phan-suppress-next-line PhanTypeArraySuspiciousNullable */
array_unshift($_q_select, $this->element_list[$table_name]['read_data']['table_name'].'.'.$read_name); array_unshift($_q_select, $this->element_list[$table_name]['read_data']['table_name'].'.'.$read_name);
array_unshift($q_select, $read_name); array_unshift($q_select, $read_name);
} }
@@ -1965,24 +1969,29 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
// @phan HACK // @phan HACK
$data['prefix'] = $data['prefix'] ?? ''; $data['prefix'] = $data['prefix'] ?? '';
// set the rest of the data so we can print something out // set the rest of the data so we can print something out
/** @phan-suppress-next-line PhanTypeArraySuspiciousNullable */
$data['type'][$data['prefix'].$this->element_list[$table_name]['read_data']['name']] = 'string'; $data['type'][$data['prefix'].$this->element_list[$table_name]['read_data']['name']] = 'string';
// build the read query // build the read query
$q = 'SELECT '; $q = 'SELECT ';
// if (!$this->table_array[$this->int_pk_name]['value']) // if (!$this->table_array[$this->int_pk_name]['value'])
// $q .= 'DISTINCT '; // $q .= 'DISTINCT ';
// prefix join key with table name, and implode the query select part // prefix join key with table name, and implode the query select part
/** @phan-suppress-next-line PhanTypeArraySuspiciousNullable */
$q .= str_replace($table_name.'.'.$this->element_list[$table_name]['read_data']['pk_id'], $this->element_list[$table_name]['read_data']['table_name'].'.'.$this->element_list[$table_name]['read_data']['pk_id'], implode(', ', $_q_select)).' '; $q .= str_replace($table_name.'.'.$this->element_list[$table_name]['read_data']['pk_id'], $this->element_list[$table_name]['read_data']['table_name'].'.'.$this->element_list[$table_name]['read_data']['pk_id'], implode(', ', $_q_select)).' ';
// if (!$this->table_array[$this->int_pk_name]['value'] && $this->element_list[$table_name]['read_data']['order']) // if (!$this->table_array[$this->int_pk_name]['value'] && $this->element_list[$table_name]['read_data']['order'])
// $q .= ', '.$this->element_list[$table_name]['read_data']['order'].' '; // $q .= ', '.$this->element_list[$table_name]['read_data']['order'].' ';
// read from the read table as main, and left join to the sub table to read the actual data // read from the read table as main, and left join to the sub table to read the actual data
/** @phan-suppress-next-line PhanTypeArraySuspiciousNullable */
$q .= 'FROM '.$this->element_list[$table_name]['read_data']['table_name'].' '; $q .= 'FROM '.$this->element_list[$table_name]['read_data']['table_name'].' ';
$q .= 'LEFT JOIN '.$table_name.' '; $q .= 'LEFT JOIN '.$table_name.' ';
$q .= 'ON ('; $q .= 'ON (';
/** @phan-suppress-next-line PhanTypeArraySuspiciousNullable */
$q .= $this->element_list[$table_name]['read_data']['table_name'].'.'.$this->element_list[$table_name]['read_data']['pk_id'].' = '.$table_name.'.'.$this->element_list[$table_name]['read_data']['pk_id'].' '; $q .= $this->element_list[$table_name]['read_data']['table_name'].'.'.$this->element_list[$table_name]['read_data']['pk_id'].' = '.$table_name.'.'.$this->element_list[$table_name]['read_data']['pk_id'].' ';
// if ($this->table_array[$this->int_pk_name]['value']) // if ($this->table_array[$this->int_pk_name]['value'])
$q .= 'AND '.$table_name.'.'.$this->int_pk_name.' = '.(!empty($this->table_array[$this->int_pk_name]['value']) ? $this->table_array[$this->int_pk_name]['value'] : 'NULL').' '; $q .= 'AND '.$table_name.'.'.$this->int_pk_name.' = '.(!empty($this->table_array[$this->int_pk_name]['value']) ? $this->table_array[$this->int_pk_name]['value'] : 'NULL').' ';
$q .= ') '; $q .= ') ';
if (isset($this->element_list[$table_name]['read_data']['order'])) { if (isset($this->element_list[$table_name]['read_data']['order'])) {
/** @phan-suppress-next-line PhanTypeArraySuspiciousNullable */
$q .= ' ORDER BY '.$this->element_list[$table_name]['read_data']['table_name'].'.'.$this->element_list[$table_name]['read_data']['order']; $q .= ' ORDER BY '.$this->element_list[$table_name]['read_data']['table_name'].'.'.$this->element_list[$table_name]['read_data']['order'];
} }
} else { } else {