Add edit_base* with admin/frontend folder file listing
Before it only listed files in current directory. Because of the hard split select from both. Add hostname/folder input (optional) to prefix files outside the same folder. Note: If no hostname/folder is set and two files in admin and frontend have the same name they will be both highlighted as the point to the same place.
This commit is contained in:
14
4dev/database/update/edit_tables_missing_columns.sql
Executable file
14
4dev/database/update/edit_tables_missing_columns.sql
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
-- update missing edit_* table data
|
||||||
|
|
||||||
|
ALTER TABLE edit_generic ADD cuid VARCHAR;
|
||||||
|
|
||||||
|
ALTER TABLE edit_access ADD enabled SMALLINT DEFAULT 0;
|
||||||
|
ALTER TABLE edit_access ADD protected SMALLINT DEFAULT 0;
|
||||||
|
|
||||||
|
ALTER TABLE edit_group ADD uid VARCHAR;
|
||||||
|
ALTER TABLE edit_group ADD deleted SMALLINT DEFAULT 0;
|
||||||
|
|
||||||
|
ALTER TABLE temp_files ADD folder varchar;
|
||||||
|
ALTER TABLE edit_page ADD hostname varchar;
|
||||||
|
|
||||||
|
ALTER TABLE edit_user ADD deleted SMALLINT DEFAULT 0;
|
||||||
@@ -88,3 +88,5 @@ UPDATE edit_query_string SET cuid = random_string(12) WHERE cuid IS NULL;
|
|||||||
UPDATE edit_scheme SET cuid = random_string(12) WHERE cuid IS NULL;
|
UPDATE edit_scheme SET cuid = random_string(12) WHERE cuid IS NULL;
|
||||||
UPDATE edit_user SET cuid = random_string(12) WHERE cuid IS NULL;
|
UPDATE edit_user SET cuid = random_string(12) WHERE cuid IS NULL;
|
||||||
UPDATE edit_visible_group SET cuid = random_string(12) WHERE cuid IS NULL;
|
UPDATE edit_visible_group SET cuid = random_string(12) WHERE cuid IS NULL;
|
||||||
|
|
||||||
|
-- update all triggers
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ DEFINE('DEFAULT_ACL_LEVEL', 80);
|
|||||||
// 4: very strict, even on normal fixable errors through error
|
// 4: very strict, even on normal fixable errors through error
|
||||||
// DEFINE('ERROR_STRICT', 3);
|
// DEFINE('ERROR_STRICT', 3);
|
||||||
// allow page caching in general, set to 'FALSE' if you do debugging or development!
|
// allow page caching in general, set to 'FALSE' if you do debugging or development!
|
||||||
// DEFINE('ALLOW_SMARTY_CACHE', FALSE);
|
// DEFINE('ALLOW_SMARTY_CACHE', false);
|
||||||
// cache life time, in second', default here is 2 days (172800s)
|
// cache life time, in second', default here is 2 days (172800s)
|
||||||
// -1 is never expire cache
|
// -1 is never expire cache
|
||||||
// DEFINE('SMARTY_CACHE_LIFETIME', -1);
|
// DEFINE('SMARTY_CACHE_LIFETIME', -1);
|
||||||
|
|||||||
@@ -270,38 +270,57 @@ if ($form->my_page_name == 'edit_order') {
|
|||||||
|
|
||||||
$position = 0;
|
$position = 0;
|
||||||
$menu_data = array();
|
$menu_data = array();
|
||||||
for ($i = 1; $i <= count($menuarray); $i ++) {
|
// for ($i = 1; $i <= count($menuarray); $i ++) {
|
||||||
|
foreach ($menuarray as $i => $data) {
|
||||||
// do that for new array
|
// do that for new array
|
||||||
$j = $i - 1;
|
$j = $i + 1;
|
||||||
$menu_data[$j]['pagename'] = htmlentities($menuarray[($i-1)]['page_name']);
|
$menu_data[$i]['pagename'] = htmlentities($data['page_name']);
|
||||||
$menu_data[$j]['filename'] = $menuarray[($i-1)]['filename'].(isset($menuarray[$j]['query_string']) ? $menuarray[$j]['query_string'] : '');
|
$menu_data[$i]['filename'] =
|
||||||
if ($i == 1 || !($j % $SPLIT_FACTOR)) {
|
// prefix folder or host name
|
||||||
$menu_data[$j]['splitfactor_in'] = 1;
|
(isset($data['hostname']) && $data['hostname'] ?
|
||||||
|
$data['hostname'] :
|
||||||
|
''
|
||||||
|
).
|
||||||
|
// filename
|
||||||
|
$data['filename'].
|
||||||
|
// query string
|
||||||
|
(isset($data['query_string']) && $data['query_string'] ?
|
||||||
|
$data['query_string'] :
|
||||||
|
''
|
||||||
|
);
|
||||||
|
if ($j == 1 || !($i % $SPLIT_FACTOR)) {
|
||||||
|
$menu_data[$i]['splitfactor_in'] = 1;
|
||||||
} else {
|
} else {
|
||||||
$menu_data[$j]['splitfactor_in'] = 0;
|
$menu_data[$i]['splitfactor_in'] = 0;
|
||||||
}
|
}
|
||||||
if ($menuarray[$j]['filename'] == $form->getPageName()) {
|
// on matching, we also need to check if we are in the same folder
|
||||||
|
if ($data['filename'] == $form->getPageName() &&
|
||||||
|
(!isset($data['hostname']) || (
|
||||||
|
isset($data['hostname']) &&
|
||||||
|
(!$data['hostname'] || strstr($data['hostname'], CONTENT_PATH) !== false)
|
||||||
|
))
|
||||||
|
) {
|
||||||
$position = $j;
|
$position = $j;
|
||||||
$menu_data[$j]['position'] = 1;
|
$menu_data[$i]['position'] = 1;
|
||||||
$menu_data[$j]['popup'] = 0;
|
$menu_data[$i]['popup'] = 0;
|
||||||
} else {
|
} else {
|
||||||
// add query stuff
|
// add query stuff
|
||||||
// HAS TO DONE LATER ... set urlencode, etc ...
|
// HAS TO DONE LATER ... set urlencode, etc ...
|
||||||
// check if popup needed
|
// check if popup needed
|
||||||
if (isset($menuarray[$j]['popup']) && $menuarray[$j]['popup'] == 1) {
|
if (isset($data['popup']) && $data['popup'] == 1) {
|
||||||
$menu_data[$j]['popup'] = 1;
|
$menu_data[$i]['popup'] = 1;
|
||||||
$menu_data[$j]['rand'] = uniqid((string)rand());
|
$menu_data[$i]['rand'] = uniqid((string)rand());
|
||||||
$menu_data[$j]['width'] = $menuarray[$j]['popup_x'];
|
$menu_data[$i]['width'] = $data['popup_x'];
|
||||||
$menu_data[$j]['height'] = $menuarray[$j]['popup_y'];
|
$menu_data[$i]['height'] = $data['popup_y'];
|
||||||
} else {
|
} else {
|
||||||
$menu_data[$j]['popup'] = 0;
|
$menu_data[$i]['popup'] = 0;
|
||||||
}
|
}
|
||||||
$menu_data[$j]['position'] = 0;
|
$menu_data[$i]['position'] = 0;
|
||||||
} // highlight or not
|
} // highlight or not
|
||||||
if (!($i % $SPLIT_FACTOR) || (($i + 1) > count($menuarray))) {
|
if (!($j % $SPLIT_FACTOR) || (($j + 1) > count($menuarray))) {
|
||||||
$menu_data[$j]['splitfactor_out'] = 1;
|
$menu_data[$i]['splitfactor_out'] = 1;
|
||||||
} else {
|
} else {
|
||||||
$menu_data[$j]['splitfactor_out'] = 0;
|
$menu_data[$i]['splitfactor_out'] = 0;
|
||||||
}
|
}
|
||||||
} // for
|
} // for
|
||||||
// $form->debug('MENU ARRAY', $form->printAr($menu_data));
|
// $form->debug('MENU ARRAY', $form->printAr($menu_data));
|
||||||
@@ -357,14 +376,35 @@ if ($form->my_page_name == 'edit_order') {
|
|||||||
if (!isset($form->table_array['edit_page_id']['value'])) {
|
if (!isset($form->table_array['edit_page_id']['value'])) {
|
||||||
$q = "DELETE FROM temp_files";
|
$q = "DELETE FROM temp_files";
|
||||||
$form->dbExec($q);
|
$form->dbExec($q);
|
||||||
// gets all files in the current dir ending with .php
|
// gets all files in the current dir and dirs given ending with .php
|
||||||
$crap = exec('ls *.php', $output, $status);
|
$folders = array('../admin/', '../frontend/');
|
||||||
// now get all that are NOT in de DB
|
$files = array('*.php');
|
||||||
$q = "INSERT INTO temp_files VALUES ";
|
$search_glob = array();
|
||||||
for ($i = 0; $i < count($output); $i ++) {
|
foreach ($folders as $folder) {
|
||||||
$t_q = "('".$form->dbEscapeString($output[$i])."')";
|
// make sure this folder actually exists
|
||||||
$form->dbExec($q.$t_q, 'NULL');
|
if (is_dir(ROOT.$folder)) {
|
||||||
|
foreach ($files as $file) {
|
||||||
|
$search_glob[] = $folder.$file;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
$crap = exec('ls '.join(' ', $search_glob), $output, $status);
|
||||||
|
// now get all that are NOT in de DB
|
||||||
|
$q = "INSERT INTO temp_files (folder, filename) VALUES ";
|
||||||
|
$t_q = '';
|
||||||
|
foreach ($output as $output_file) {
|
||||||
|
// split the ouput into folder and file
|
||||||
|
// eg ../admin/test.php is ../admin/ and test.php
|
||||||
|
preg_match("/([\.\/\w]+\/)+(\w+\.\w{1,})$/", $output_file, $matches);
|
||||||
|
// if named config.php, skip
|
||||||
|
if ($matches[2] != 'config.php') {
|
||||||
|
if ($t_q) {
|
||||||
|
$t_q .= ', ';
|
||||||
|
}
|
||||||
|
$t_q .= "('".$form->dbEscapeString($matches[1])."', '".$form->dbEscapeString($matches[2])."')";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$form->dbExec($q.$t_q, 'NULL');
|
||||||
$elements[] = $form->formCreateElement('filename');
|
$elements[] = $form->formCreateElement('filename');
|
||||||
} else {
|
} else {
|
||||||
// show file menu
|
// show file menu
|
||||||
@@ -372,6 +412,7 @@ if ($form->my_page_name == 'edit_order') {
|
|||||||
$DATA['filename_exist'] = 1;
|
$DATA['filename_exist'] = 1;
|
||||||
$DATA['filename'] = $form->table_array['filename']['value'];
|
$DATA['filename'] = $form->table_array['filename']['value'];
|
||||||
} // File Name View IF
|
} // File Name View IF
|
||||||
|
$elements[] = $form->formCreateElement('hostname');
|
||||||
$elements[] = $form->formCreateElement('name');
|
$elements[] = $form->formCreateElement('name');
|
||||||
// $elements[] = $form->formCreateElement('tag');
|
// $elements[] = $form->formCreateElement('tag');
|
||||||
// $elements[] = $form->formCreateElement('min_acl');
|
// $elements[] = $form->formCreateElement('min_acl');
|
||||||
|
|||||||
@@ -12,11 +12,16 @@ $edit_pages = array(
|
|||||||
'output_name' => 'Add File ...',
|
'output_name' => 'Add File ...',
|
||||||
'mandatory' => 1,
|
'mandatory' => 1,
|
||||||
'type' => 'drop_down_db',
|
'type' => 'drop_down_db',
|
||||||
'query' => "SELECT DISTINCT temp_files.filename AS id, temp_files.filename AS name ".
|
'query' => "SELECT DISTINCT temp_files.filename AS id, temp_files.folder || temp_files.filename AS name ".
|
||||||
"FROM temp_files ".
|
"FROM temp_files ".
|
||||||
"LEFT JOIN edit_page ep ON temp_files.filename = ep.filename ".
|
"LEFT JOIN edit_page ep ON temp_files.filename = ep.filename ".
|
||||||
"WHERE ep.filename IS NULL"
|
"WHERE ep.filename IS NULL"
|
||||||
),
|
),
|
||||||
|
'hostname' => array(
|
||||||
|
'value' => isset($GLOBALS['hostname']) ? $GLOBALS['hostname'] : '',
|
||||||
|
'output_name' => 'Hostname or folder',
|
||||||
|
'type' => 'text'
|
||||||
|
),
|
||||||
'name' => array(
|
'name' => array(
|
||||||
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
|
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
|
||||||
'output_name' => 'Page name',
|
'output_name' => 'Page name',
|
||||||
@@ -107,7 +112,7 @@ $edit_pages = array(
|
|||||||
// "ORDER BY order_number"
|
// "ORDER BY order_number"
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
'load_query' => "SELECT edit_page_id, filename, name, online, menu, popup FROM edit_page 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',
|
'table_name' => 'edit_page',
|
||||||
'show_fields' => array(
|
'show_fields' => array(
|
||||||
array(
|
array(
|
||||||
|
|||||||
@@ -434,7 +434,9 @@ class Login extends \CoreLibs\DB\IO
|
|||||||
$pages = array();
|
$pages = array();
|
||||||
$pages_acl = array();
|
$pages_acl = array();
|
||||||
// set pages access
|
// set pages access
|
||||||
$q = "SELECT ep.edit_page_id, ep.cuid, epca.cuid AS content_alias_uid, ep.filename, ep.name AS edit_page_name, ep.order_number AS edit_page_order, ep.menu, ";
|
$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, ";
|
||||||
|
$q .= "ep.order_number AS edit_page_order, ep.menu, ";
|
||||||
$q .= "ep.popup, ep.popup_x, ep.popup_y, ep.online, ear.level, ear.type ";
|
$q .= "ep.popup, ep.popup_x, ep.popup_y, ep.online, ear.level, ear.type ";
|
||||||
$q .= "FROM edit_page ep ";
|
$q .= "FROM edit_page ep ";
|
||||||
$q .= "LEFT JOIN edit_page epca ON (epca.edit_page_id = ep.content_alias_edit_page_id)";
|
$q .= "LEFT JOIN edit_page epca ON (epca.edit_page_id = ep.content_alias_edit_page_id)";
|
||||||
@@ -450,6 +452,7 @@ class Login extends \CoreLibs\DB\IO
|
|||||||
'edit_page_id' => $res['edit_page_id'],
|
'edit_page_id' => $res['edit_page_id'],
|
||||||
'cuid' => $res['cuid'],
|
'cuid' => $res['cuid'],
|
||||||
'content_alias_uid' => $res['content_alias_uid'], // for reference of content data on a differen page
|
'content_alias_uid' => $res['content_alias_uid'], // for reference of content data on a differen page
|
||||||
|
'hostname' => $res['hostname'],
|
||||||
'filename' => $res['filename'],
|
'filename' => $res['filename'],
|
||||||
'page_name' => $res['edit_page_name'],
|
'page_name' => $res['edit_page_name'],
|
||||||
'order' => $res['edit_page_order'],
|
'order' => $res['edit_page_order'],
|
||||||
|
|||||||
@@ -287,7 +287,11 @@ class Backend extends \CoreLibs\DB\IO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$url = isset($data['filename']) ? $data['filename'] : '';
|
$url = '';
|
||||||
|
if (isset($data['hostname']) && $data['hostname']) {
|
||||||
|
$url .= $data['hostname'];
|
||||||
|
}
|
||||||
|
$url .= isset($data['filename']) ? $data['filename'] : '';
|
||||||
if (strlen($query_string)) {
|
if (strlen($query_string)) {
|
||||||
$url .= '?'.$query_string;
|
$url .= '?'.$query_string;
|
||||||
}
|
}
|
||||||
@@ -295,7 +299,11 @@ class Backend extends \CoreLibs\DB\IO
|
|||||||
// if page name matchs -> set selected flag
|
// if page name matchs -> set selected flag
|
||||||
$selected = 0;
|
$selected = 0;
|
||||||
if (isset($data['filename']) &&
|
if (isset($data['filename']) &&
|
||||||
$this->getPageName() == $data['filename']
|
$this->getPageName() == $data['filename'] &&
|
||||||
|
(!isset($data['hostname']) || (
|
||||||
|
isset($data['hostname']) &&
|
||||||
|
(!$data['hostname'] || strstr($data['hostname'], CONTENT_PATH) !== false)
|
||||||
|
))
|
||||||
) {
|
) {
|
||||||
$selected = 1;
|
$selected = 1;
|
||||||
$this->page_name = $name;
|
$this->page_name = $name;
|
||||||
|
|||||||
@@ -321,7 +321,7 @@ class IO extends \CoreLibs\Basic
|
|||||||
$this->db_user = $db_config['db_user'] ?? '';
|
$this->db_user = $db_config['db_user'] ?? '';
|
||||||
$this->db_pwd = $db_config['db_pass'] ?? '';
|
$this->db_pwd = $db_config['db_pass'] ?? '';
|
||||||
$this->db_host = $db_config['db_host'] ?? '';
|
$this->db_host = $db_config['db_host'] ?? '';
|
||||||
$this->db_port = !empty($db_config['db_port']) ? $db_config['db_port'] : '5432';
|
$this->db_port = !empty($db_config['db_port']) ? $db_config['db_port'] : 5432;
|
||||||
$this->db_schema = !empty($db_config['db_schema']) ? $db_config['db_schema'] : ''; // do not set to 'public' if not set, because the default is already public
|
$this->db_schema = !empty($db_config['db_schema']) ? $db_config['db_schema'] : ''; // do not set to 'public' if not set, because the default is already public
|
||||||
$this->db_encoding = !empty($db_config['db_encoding']) ? $db_config['db_encoding'] : '';
|
$this->db_encoding = !empty($db_config['db_encoding']) ? $db_config['db_encoding'] : '';
|
||||||
$this->db_type = $db_config['db_type'] ?? '';
|
$this->db_type = $db_config['db_type'] ?? '';
|
||||||
|
|||||||
@@ -1974,7 +1974,9 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
} else {
|
} else {
|
||||||
// only create query if we have a primary key
|
// only create query if we have a primary key
|
||||||
// reads directly from the reference table
|
// reads directly from the reference table
|
||||||
if (isset($this->table_array[$this->int_pk_name]['value'])) {
|
if (isset($this->table_array[$this->int_pk_name]['value']) &&
|
||||||
|
$this->table_array[$this->int_pk_name]['value']
|
||||||
|
) {
|
||||||
$q = 'SELECT '.implode(', ', $q_select).' FROM '.$table_name.' WHERE '.$this->int_pk_name.' = '.$this->table_array[$this->int_pk_name]['value'];
|
$q = 'SELECT '.implode(', ', $q_select).' FROM '.$table_name.' WHERE '.$this->int_pk_name.' = '.$this->table_array[$this->int_pk_name]['value'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user