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_user 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
|
||||
// DEFINE('ERROR_STRICT', 3);
|
||||
// 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)
|
||||
// -1 is never expire cache
|
||||
// DEFINE('SMARTY_CACHE_LIFETIME', -1);
|
||||
|
||||
@@ -270,38 +270,57 @@ if ($form->my_page_name == 'edit_order') {
|
||||
|
||||
$position = 0;
|
||||
$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
|
||||
$j = $i - 1;
|
||||
$menu_data[$j]['pagename'] = htmlentities($menuarray[($i-1)]['page_name']);
|
||||
$menu_data[$j]['filename'] = $menuarray[($i-1)]['filename'].(isset($menuarray[$j]['query_string']) ? $menuarray[$j]['query_string'] : '');
|
||||
if ($i == 1 || !($j % $SPLIT_FACTOR)) {
|
||||
$menu_data[$j]['splitfactor_in'] = 1;
|
||||
$j = $i + 1;
|
||||
$menu_data[$i]['pagename'] = htmlentities($data['page_name']);
|
||||
$menu_data[$i]['filename'] =
|
||||
// prefix folder or host name
|
||||
(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 {
|
||||
$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;
|
||||
$menu_data[$j]['position'] = 1;
|
||||
$menu_data[$j]['popup'] = 0;
|
||||
$menu_data[$i]['position'] = 1;
|
||||
$menu_data[$i]['popup'] = 0;
|
||||
} else {
|
||||
// add query stuff
|
||||
// HAS TO DONE LATER ... set urlencode, etc ...
|
||||
// check if popup needed
|
||||
if (isset($menuarray[$j]['popup']) && $menuarray[$j]['popup'] == 1) {
|
||||
$menu_data[$j]['popup'] = 1;
|
||||
$menu_data[$j]['rand'] = uniqid((string)rand());
|
||||
$menu_data[$j]['width'] = $menuarray[$j]['popup_x'];
|
||||
$menu_data[$j]['height'] = $menuarray[$j]['popup_y'];
|
||||
if (isset($data['popup']) && $data['popup'] == 1) {
|
||||
$menu_data[$i]['popup'] = 1;
|
||||
$menu_data[$i]['rand'] = uniqid((string)rand());
|
||||
$menu_data[$i]['width'] = $data['popup_x'];
|
||||
$menu_data[$i]['height'] = $data['popup_y'];
|
||||
} else {
|
||||
$menu_data[$j]['popup'] = 0;
|
||||
$menu_data[$i]['popup'] = 0;
|
||||
}
|
||||
$menu_data[$j]['position'] = 0;
|
||||
$menu_data[$i]['position'] = 0;
|
||||
} // highlight or not
|
||||
if (!($i % $SPLIT_FACTOR) || (($i + 1) > count($menuarray))) {
|
||||
$menu_data[$j]['splitfactor_out'] = 1;
|
||||
if (!($j % $SPLIT_FACTOR) || (($j + 1) > count($menuarray))) {
|
||||
$menu_data[$i]['splitfactor_out'] = 1;
|
||||
} else {
|
||||
$menu_data[$j]['splitfactor_out'] = 0;
|
||||
$menu_data[$i]['splitfactor_out'] = 0;
|
||||
}
|
||||
} // for
|
||||
// $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'])) {
|
||||
$q = "DELETE FROM temp_files";
|
||||
$form->dbExec($q);
|
||||
// gets all files in the current dir ending with .php
|
||||
$crap = exec('ls *.php', $output, $status);
|
||||
// now get all that are NOT in de DB
|
||||
$q = "INSERT INTO temp_files VALUES ";
|
||||
for ($i = 0; $i < count($output); $i ++) {
|
||||
$t_q = "('".$form->dbEscapeString($output[$i])."')";
|
||||
$form->dbExec($q.$t_q, 'NULL');
|
||||
// gets all files in the current dir and dirs given ending with .php
|
||||
$folders = array('../admin/', '../frontend/');
|
||||
$files = array('*.php');
|
||||
$search_glob = array();
|
||||
foreach ($folders as $folder) {
|
||||
// make sure this folder actually exists
|
||||
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');
|
||||
} else {
|
||||
// show file menu
|
||||
@@ -372,6 +412,7 @@ if ($form->my_page_name == 'edit_order') {
|
||||
$DATA['filename_exist'] = 1;
|
||||
$DATA['filename'] = $form->table_array['filename']['value'];
|
||||
} // File Name View IF
|
||||
$elements[] = $form->formCreateElement('hostname');
|
||||
$elements[] = $form->formCreateElement('name');
|
||||
// $elements[] = $form->formCreateElement('tag');
|
||||
// $elements[] = $form->formCreateElement('min_acl');
|
||||
|
||||
@@ -12,11 +12,16 @@ $edit_pages = array(
|
||||
'output_name' => 'Add File ...',
|
||||
'mandatory' => 1,
|
||||
'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 ".
|
||||
"LEFT JOIN edit_page ep ON temp_files.filename = ep.filename ".
|
||||
"WHERE ep.filename IS NULL"
|
||||
),
|
||||
'hostname' => array(
|
||||
'value' => isset($GLOBALS['hostname']) ? $GLOBALS['hostname'] : '',
|
||||
'output_name' => 'Hostname or folder',
|
||||
'type' => 'text'
|
||||
),
|
||||
'name' => array(
|
||||
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
|
||||
'output_name' => 'Page name',
|
||||
@@ -107,7 +112,7 @@ $edit_pages = array(
|
||||
// "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',
|
||||
'show_fields' => array(
|
||||
array(
|
||||
|
||||
@@ -434,7 +434,9 @@ class Login extends \CoreLibs\DB\IO
|
||||
$pages = array();
|
||||
$pages_acl = array();
|
||||
// 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 .= "FROM edit_page ep ";
|
||||
$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'],
|
||||
'cuid' => $res['cuid'],
|
||||
'content_alias_uid' => $res['content_alias_uid'], // for reference of content data on a differen page
|
||||
'hostname' => $res['hostname'],
|
||||
'filename' => $res['filename'],
|
||||
'page_name' => $res['edit_page_name'],
|
||||
'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)) {
|
||||
$url .= '?'.$query_string;
|
||||
}
|
||||
@@ -295,7 +299,11 @@ class Backend extends \CoreLibs\DB\IO
|
||||
// if page name matchs -> set selected flag
|
||||
$selected = 0;
|
||||
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;
|
||||
$this->page_name = $name;
|
||||
|
||||
@@ -321,7 +321,7 @@ class IO extends \CoreLibs\Basic
|
||||
$this->db_user = $db_config['db_user'] ?? '';
|
||||
$this->db_pwd = $db_config['db_pass'] ?? '';
|
||||
$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_encoding = !empty($db_config['db_encoding']) ? $db_config['db_encoding'] : '';
|
||||
$this->db_type = $db_config['db_type'] ?? '';
|
||||
|
||||
@@ -1974,7 +1974,9 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
||||
} else {
|
||||
// only create query if we have a primary key
|
||||
// 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'];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user