An edit page can have a new type of reference data type that is not a link between table A and main table, but a sub table to main table with several text fields + enable field. This sub field list can have a max set, that adds empty rows to keep max empty list available. The sub table filed does not need a read_data element as the read is directly connected to the master table (uses the elemen list key name for table and the elements as read fields). This sub elements need to have at least one as type = text and can have error check addded (currently unique and alphanumeric work). Also fix all old addslashes to correct db_escape_string Read in for reference list also can have multiple elements (read data -> name | seperated) All sub reads have element prefixes Inline documentation update
346 lines
12 KiB
PHP
346 lines
12 KiB
PHP
<?
|
|
/********************************************************************
|
|
* AUTHOR: Clemens "Gullevek" Schwaighofer (www.gullevek.org)
|
|
* CREATED: 2003/06/10
|
|
* SHORT DESCRIPTION:
|
|
* central include for all edit_pages
|
|
* - edit_groups.php
|
|
* - edit_languages.php
|
|
* - edit_pages.php
|
|
* - edit_schemes.php
|
|
* - edit_users.php
|
|
* - edit_visible_group.php
|
|
* HISTORY:
|
|
* 2005/06/30 (cs) remove color settings, they are in CSS File now
|
|
* 2005/06/22 (cs) moved load of config array into form class, set lang and lang is must set var for form class; removed the page name setting, moved it into the form class, remove all HTML from main page
|
|
* 2004/09/30 (cs) changed layout to fit default layout & changed LIBS, etc
|
|
* 2003-06-10: creation of this page
|
|
*********************************************************************/
|
|
|
|
$DEBUG_ALL = 1;
|
|
$DB_DEBUG = 1;
|
|
|
|
extract($_POST, EXTR_SKIP);
|
|
|
|
$table_width = 750;
|
|
// this is for certain CMS modules that set a relative path
|
|
define(REL_PATH, '');
|
|
|
|
ob_start();
|
|
include("config.inc");
|
|
// overrride debug flags
|
|
if (!DEBUG)
|
|
{
|
|
$DEBUG_ALL = 0;
|
|
$PRINT_ALL = 0;
|
|
$DB_DEBUG = 0;
|
|
$ECHO_ALL = 0;
|
|
// $DEBUG_TMPL = 0;
|
|
}
|
|
// set session name here
|
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
|
// login class
|
|
require(LIBS."Class.Login.inc");
|
|
// form generate for edit interface
|
|
require(LIBS."Class.Form.Generate.inc");
|
|
// Smarty: and the small extend for l10n calls
|
|
require(LIBS.'Class.Smarty.Extend.inc');
|
|
|
|
// set default lang if not set otherwise
|
|
if (!$lang)
|
|
$lang = DEFAULT_LANG;
|
|
// should be utf8
|
|
header("Content-type: text/html; charset=".DEFAULT_ENCODING);
|
|
ob_end_flush();
|
|
$login = new login($DB_CONFIG[LOGIN_DB], $lang);
|
|
|
|
// create form class
|
|
$form = new form($DB_CONFIG[MAIN_DB], $lang);
|
|
$form->db_exec("SET search_path TO ".LOGIN_DB_SCHEMA);
|
|
if ($form->mobile_phone)
|
|
{
|
|
echo "I am sorry, but this page cannot be viewed by a mobile phone";
|
|
exit;
|
|
}
|
|
// smarty template engine (extended Translation version)
|
|
$smarty = new SmartyML($lang);
|
|
|
|
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;
|
|
// form
|
|
$form->debug_output_all = DEBUG ? 1 : 0;
|
|
$form->echo_output_all = 0;
|
|
$form->print_output_all = DEBUG ? 1 : 0;
|
|
}
|
|
// set the template dir
|
|
// WARNING: this has a special check for the mailing tool layout (old layout)
|
|
if (defined('LAYOUT'))
|
|
{
|
|
$smarty->setTemplateDir(LAYOUT.DEFAULT_TEMPLATE.TEMPLATES);
|
|
$DATA['css'] = LAYOUT.DEFAULT_TEMPLATE.CSS;
|
|
$DATA['js'] = LAYOUT.DEFAULT_TEMPLATE.JS;
|
|
}
|
|
else
|
|
{
|
|
$smarty->setTemplateDir(TEMPLATES.DEFAULT_TEMPLATE);
|
|
$DATA['css'] = CSS.DEFAULT_TEMPLATE;
|
|
$DATA['js'] = JS.DEFAULT_TEMPLATE;
|
|
}
|
|
|
|
// space for setting special debug flags
|
|
$login->debug_output_all = 1;
|
|
|
|
// define edit logging function. should be in a special edit interface class later
|
|
// METHOD: EditLog()
|
|
// PARAMS: event -> any kind of event description, data -> any kind of data related to that event
|
|
// RETURN: none
|
|
// DESC: writes all action vars plus other info into edit_log table
|
|
function EditLog($event = '', $data = '')
|
|
{
|
|
$q = "INSERT INTO edit_log ";
|
|
$q .= "(euid, event_date, ip, event, data, page) ";
|
|
$q .= "VALUES (".$_SESSION['EUID'].", NOW(), '".$_SERVER["REMOTE_ADDR"]."', '".$GLOBALS['form']->db_escape_string($event)."', '".$GLOBALS['form']->db_escape_string($data)."', '".$GLOBALS['form']->get_page_name()."')";
|
|
}
|
|
|
|
// log backend data
|
|
// data part creation
|
|
$data = array (
|
|
'_SESSION' => $_SESSION,
|
|
'_GET' => $_GET,
|
|
'_POST' => $_POST,
|
|
'_FILES' => $_FILES
|
|
);
|
|
// log action
|
|
EditLog('Edit Submit', serialize($data));
|
|
|
|
$form->form_procedure_load(${$form->archive_pk_name});
|
|
$form->form_procedure_new();
|
|
$form->form_procedure_save();
|
|
$form->form_procedure_delete();
|
|
$form->form_procedure_delete_from_element_list($element_list, $remove_name);
|
|
|
|
// define all needed smarty stuff for the general HTML/page building
|
|
$HEADER['CSS'] = CSS;
|
|
$HEADER['DEFAULT_ENCODING'] = DEFAULT_ENCODING;
|
|
$HEADER['JS'] = JS;
|
|
$HEADER['STYLESHEET'] = $EDIT_STYLESHEET;
|
|
$HEADER['JAVASCRIPT'] = $EDIT_JAVASCRIPT;
|
|
|
|
$DATA['table_width'] = $table_width;
|
|
|
|
// write out error / status messages
|
|
$messages[] = $form->form_error_msg();
|
|
$DATA['form_error_msg'] = $messages;
|
|
|
|
// MENU START
|
|
// request some session vars
|
|
if (!$HEADER_COLOR)
|
|
$DATA['HEADER_COLOR'] = "#E0E2FF";
|
|
else
|
|
$DATA['HEADER_COLOR'] = $_SESSION['HEADER_COLOR'];
|
|
$DATA['USER_NAME'] = $_SESSION["USER_NAME"];
|
|
$DATA['EUID'] = $_SESSION["EUID"];
|
|
$DATA['GROUP_NAME'] = $_SESSION["GROUP_NAME"];
|
|
$DATA['GROUP_LEVEL'] = $_SESSION["GROUP_LEVEL"];
|
|
$PAGES = $_SESSION["PAGES"];
|
|
|
|
//$form->debug('menu', $form->print_ar($PAGES));
|
|
|
|
// baue nav aus $PAGES ...
|
|
for ($i = 0; $i < count($PAGES); $i ++)
|
|
{
|
|
if ($PAGES[$i]["menu"] && $PAGES[$i]["online"])
|
|
{
|
|
$menuarray[] = $PAGES[$i];
|
|
}
|
|
}
|
|
|
|
// split point for nav points
|
|
$COUNT_NAV_POINTS = count($menuarray);
|
|
$SPLIT_FACTOR = 3;
|
|
$START_SPLIT_COUNT = 3;
|
|
// WTF ?? I dunno what I am doing here ...
|
|
for ($i = 9; $i < $COUNT_NAV_POINTS; $i += $START_SPLIT_COUNT)
|
|
{
|
|
if ($COUNT_NAV_POINTS > $i)
|
|
$SPLIT_FACTOR += 1;
|
|
}
|
|
|
|
for ($i = 1; $i <= count($menuarray); $i ++)
|
|
{
|
|
// 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"].$menuarray[($i-1)]["query_string"];
|
|
if ($i == 1 || !(($i - 1) % $SPLIT_FACTOR))
|
|
{
|
|
$menu_data[$j]['splitfactor_in'] = 1;
|
|
}
|
|
if ($menuarray[($i - 1)]["filename"] == $form->get_page_name())
|
|
{
|
|
$position = $i - 1;
|
|
$menu_data[$j]['position'] = 1;
|
|
}
|
|
else
|
|
{
|
|
// add query stuff
|
|
// HAS TO DONE LATER ... set urlencode, etc ...
|
|
// check if popup needed
|
|
if ($menuarray[($i - 1)]["popup"])
|
|
{
|
|
$menu_data[$j]['popup'] = 1;
|
|
$menu_data[$j]['rand'] = uniqid(rand());
|
|
$menu_data[$j]['width'] = $menuarray[($i-1)]["popup_x"];
|
|
$menu_data[$j]['height'] = $menuarray[($i-1)]["popup_y"];
|
|
} // popup or not
|
|
} // highlight or not
|
|
if (!($i % $SPLIT_FACTOR) || (($i + 1) > count($menuarray)))
|
|
{
|
|
$menu_data[$j]['splitfactor_out'] = 1;
|
|
} // split
|
|
} // for
|
|
$DATA['menu_data'] = $menu_data;
|
|
$DATA['page_name'] = $menuarray[$position]["page_name"];
|
|
$L_TITLE = $DATA['page_name'];
|
|
// html title
|
|
$HEADER['HTML_TITLE'] = ((!$L_TITLE) ? $form->l->__($G_TITLE) : $form->l->__($L_TITLE));
|
|
// END MENU
|
|
// LOAD AND NEW
|
|
$DATA['load'] = $form->form_create_load();
|
|
$DATA['new'] = $form->form_create_new();
|
|
// SHOW DATA PART
|
|
if ($form->yes)
|
|
{
|
|
$DATA['form_yes'] = $form->yes;
|
|
$DATA['form_my_page_name'] = $form->my_page_name;
|
|
|
|
// depending on the "get_page_name()" I show different stuff
|
|
switch ($form->my_page_name)
|
|
{
|
|
case "edit_users":
|
|
$elements[] = $form->form_create_element("login_error_count");
|
|
$elements[] = $form->form_create_element("login_error_date_last");
|
|
$elements[] = $form->form_create_element("login_error_date_first");
|
|
$elements[] = $form->form_create_element("enabled");
|
|
$elements[] = $form->form_create_element("username");
|
|
$elements[] = $form->form_create_element("password");
|
|
$elements[] = $form->form_create_element("password_change_interval");
|
|
$elements[] = $form->form_create_element("email");
|
|
$elements[] = $form->form_create_element("last_name");
|
|
$elements[] = $form->form_create_element("first_name");
|
|
$elements[] = $form->form_create_element("edit_group_id");
|
|
$elements[] = $form->form_create_element("edit_access_right_id");
|
|
$elements[] = $form->form_create_element("strict");
|
|
$elements[] = $form->form_create_element("locked");
|
|
$elements[] = $form->form_create_element("admin");
|
|
$elements[] = $form->form_create_element("debug");
|
|
$elements[] = $form->form_create_element("db_debug");
|
|
$elements[] = $form->form_create_element("edit_language_id");
|
|
$elements[] = $form->form_create_element("edit_scheme_id");
|
|
$elements[] = $form->form_show_list_table("edit_access_user");
|
|
break;
|
|
case "edit_schemes":
|
|
$elements[] = $form->form_create_element("enabled");
|
|
$elements[] = $form->form_create_element("name");
|
|
$elements[] = $form->form_create_element("header_color");
|
|
$elements[] = $form->form_create_element("template");
|
|
break;
|
|
case "edit_pages":
|
|
if (!$form->table_array["edit_page_id"]["value"])
|
|
{
|
|
$q = "DELETE FROM temp_files";
|
|
$form->db_exec($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->db_escape_string($output[$i])."')";
|
|
$form->db_exec($q.$t_q, 'NULL');
|
|
}
|
|
$elements[] = $form->form_create_element("filename");
|
|
}
|
|
else // show file menu
|
|
{
|
|
// just show name of file ...
|
|
$DATA['filename_exist'] = 1;
|
|
$DATA['filename'] = $form->table_array["filename"]["value"];
|
|
} // File Name View IF
|
|
$elements[] = $form->form_create_element("name");
|
|
// $elements[] = $form->form_create_element("tag");
|
|
// $elements[] = $form->form_create_element("min_acl");
|
|
$elements[] = $form->form_create_element("order_number");
|
|
$elements[] = $form->form_create_element("online");
|
|
$elements[] = $form->form_create_element("menu");
|
|
$elements[] = $form->form_show_list_table("edit_query_string");
|
|
$elements[] = $form->form_create_element("popup");
|
|
$elements[] = $form->form_create_element("popup_x");
|
|
$elements[] = $form->form_create_element("popup_y");
|
|
$elements[] = $form->form_show_reference_table("edit_visible_group");
|
|
$elements[] = $form->form_show_reference_table("edit_menu_group");
|
|
break;
|
|
case "edit_languages":
|
|
$elements[] = $form->form_create_element("enabled");
|
|
$elements[] = $form->form_create_element("short_name");
|
|
$elements[] = $form->form_create_element("long_name");
|
|
$elements[] = $form->form_create_element("iso_name");
|
|
break;
|
|
case "edit_groups":
|
|
$elements[] = $form->form_create_element("enabled");
|
|
$elements[] = $form->form_create_element("name");
|
|
$elements[] = $form->form_create_element("edit_access_right_id");
|
|
$elements[] = $form->form_create_element("edit_scheme_id");
|
|
$elements[] = $form->form_show_list_table("edit_page_access");
|
|
break;
|
|
case "edit_visible_group":
|
|
$elements[] = $form->form_create_element("name");
|
|
$elements[] = $form->form_create_element("flag");
|
|
break;
|
|
case "edit_menu_group":
|
|
$elements[] = $form->form_create_element("name");
|
|
$elements[] = $form->form_create_element("flag");
|
|
$elements[] = $form->form_create_element("order_number");
|
|
break;
|
|
case "edit_access":
|
|
$elements[] = $form->form_create_element("name");
|
|
$elements[] = $form->form_create_element("color");
|
|
$elements[] = $form->form_create_element("description");
|
|
// add name/value list here
|
|
$elements[] = $form->form_show_list_table("edit_access_data");
|
|
break;
|
|
break;
|
|
default:
|
|
print "NO NO NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO!";
|
|
break;
|
|
}
|
|
// $form->debug('edit', "Elements: <pre>".$form->print_ar($elements));
|
|
$DATA['elements'] = $elements;
|
|
$DATA['hidden'] = $form->form_create_hidden_fields();
|
|
$DATA['save_delete'] = $form->form_create_save_delete();
|
|
}
|
|
|
|
// debug data, if DEBUG flag is on, this data is print out
|
|
$DEBUG_DATA['DEBUG'] = $DEBUG_TMPL;
|
|
|
|
// create main data array
|
|
$CONTENT_DATA = array_merge($HEADER, $DATA, $DEBUG_DATA);
|
|
// data is 1:1 mapping (all vars, values, etc)
|
|
while (list($key, $value) = each($CONTENT_DATA))
|
|
{
|
|
$smarty->assign($key, $value);
|
|
}
|
|
|
|
// $smarty->assign('popup_page', 'mt_popup_'.$body_part.'.tpl');
|
|
|
|
$smarty->display('edit_body.tpl');
|
|
|
|
// debug output
|
|
echo $login->print_error_msg();
|
|
echo $form->print_error_msg();
|
|
?>
|