<?PHP
/* ====================
Seditio - Website engine
Copyright Neocrome & Seditio Team
https://seditio.org
[BEGIN_SED]
File=admin.dic.inc.php
Version=179
Updated=2022-jul-15
Type=Core.admin
Author=Amro
Description=Administration panel
[END_SED]
==================== */
if ( !defined('SED_CODE') || !defined('SED_ADMIN') ) { die('Wrong URL.'); }
list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = sed_auth('dic', 'a');
sed_block($usr['isadmin']);
// ---------- Breadcrumbs
$urlpaths = array();
$urlpaths[sed_url("admin", "m=tools")] = $L['adm_manage'];
$urlpaths[sed_url("admin", "m=dic")] = $L['core_dic'];
$admintitle = $L['core_dic'];
$adminhelp = $L['adm_help_dic'];
$mn = sed_import('mn', 'G', 'TXT');
$did = sed_import('did','G','INT');
$tid = sed_import('tid','G','INT');
$sql_dic = sed_sql_query("SELECT * FROM $db_dic WHERE 1 ORDER BY dic_title ASC");
while ($row_dic = sed_sql_fetchassoc($sql_dic))
{
$dic_list[$row_dic['dic_id']] = $row_dic['dic_title'];
}
$t = new XTemplate(sed_skinfile('admin.dic', false, true));
switch($mn)
{
case 'dicitem':
if ($a == 'update' && (!empty($tid)))
{
$ititle = sed_import('ititle','P','TXT');
$icode = sed_import('icode','P','TXT');
$idefval = sed_import('idefval','P','INT');
$ichildren = sed_import('ichildren', 'P', 'INT');
$sql = sed_sql_query("UPDATE $db_dic_items SET ditem_title = '".sed_sql_prep($ititle)."',
ditem_code = '".sed_sql_prep($icode)."', ditem_children = '".(int)$ichildren."',
ditem_defval = '".(int)$idefval."' WHERE ditem_id = '".$tid."'");
sed_log("Update term #".$tid,'adm');
sed_cache_clear('sed_dic');
sed_redirect(sed_url("admin", "m=dic&mn=dicitem&did=".$did."&msg=917", "", true));
}
elseif ($a == 'delete' && (!empty($tid)))
{
$sql = sed_sql_query("DELETE FROM $db_dic_items WHERE ditem_id = '".$tid."'");
sed_log("Deleted term #".$tid,'adm');
sed_cache_clear('sed_dic');
sed_redirect(sed_url("admin", "m=dic&mn=dicitem&did=".$did."&msg=917", "", true));
}
elseif ($a == 'add' && (!empty($did)))
{
$ditemtitle = sed_import('ditemtitle','P','TXT');
$ditemcode = sed_import('ditemcode','P','TXT');
$ditemdefval = sed_import('ditemdefval','P','TXT');
$ditemchildren = sed_import('ditemchildren', 'P', 'INT');
$sql = sed_sql_query("INSERT into $db_dic_items (ditem_dicid, ditem_title, ditem_code, ditem_children, ditem_defval)
VALUES (".(int)$did.", '".sed_sql_prep($ditemtitle)."', '".sed_sql_prep($ditemcode)."', '".(int)$ditemchildren."', '".(int)$ditemdefval."')");
sed_log("Added new term in directory #".$did,'adm');
sed_cache_clear('sed_dic');
sed_redirect(sed_url("admin", "m=dic&mn=dicitem&did=".$did."&msg=917", "", true));
}
$sql = sed_sql_query("SELECT * FROM $db_dic WHERE dic_id = '".$did."'");
$drow = sed_sql_fetchassoc($sql);
$t -> assign(array(
"DIC_TERMS_DICTIONARY" => sed_cc($drow['dic_title'])
));
$sql = sed_sql_query("SELECT d.*, t.* FROM $db_dic_items AS t LEFT JOIN $db_dic AS d ON t.ditem_dicid = d.dic_id WHERE t.ditem_dicid = '".$did."'");
while($row = sed_sql_fetchassoc($sql))
{
if ($row['ditem_defval'] > 0)
{
$t -> assign(array(
"TERM_LIST_DEFVAL" => $row['ditem_defval']
));
$t -> parse("ADMIN_DIC.DIC_TERMS.TERMS_LIST.TERM_DEFAULT");
}
$children_url = (!empty($row['ditem_children'])) ? sed_url('admin', 'm=dic&mn=dicitem&did='.$row['ditem_children']) : '';
$t -> assign(array(
"TERM_LIST_ID" => $row['ditem_id'],
"TERM_LIST_TITLE" => sed_cc($row['ditem_title']),
"TERM_LIST_CODE" => sed_cc($row['ditem_code']),
"TERM_LIST_CHILDRENDIC" => (!empty($row['ditem_children'])) ? "<a href=\"".$children_url."\">ID#".$row['ditem_children'].' '.$dic_list[$row['ditem_children']]."</a>" : '',
"TERM_LIST_DELETE_URL" => sed_url('admin', 'm=dic&mn=dicitem&a=delete&tid='.$row['ditem_id']."&did=".$row['dic_id']),
"TERM_LIST_EDIT_URL" => sed_url('admin', 'm=dic&mn=dicitemedit&tid='.$row['ditem_id'])
));
$t -> parse("ADMIN_DIC.DIC_TERMS.TERMS_LIST");
}
$urlpaths[sed_url("admin", "m=dic&mn=dicitem&did=".$did)] = $drow['dic_title'];
$admintitle = $drow['dic_title'];
$t -> assign(array(
"TERM_ADD_SEND" => sed_url('admin', 'm=dic&mn=dicitem&a=add&did='.$did),
"TERM_ADD_TITLE" => sed_textbox('ditemtitle', isset($ditemtitle)?$ditemtitle:''),
"TERM_ADD_CODE" => sed_textbox('ditemcode', isset($ditemcode)?$ditemcode:''),
"TERM_ADD_CHILDRENDIC" => sed_selectbox('', 'ditemchildren', $dic_list),
"TERM_ADD_DEFVAL" => sed_radiobox("ditemdefval", $sed_yesno, isset($ditemdefval)?$ditemdefval:'')
));
$t -> parse("ADMIN_DIC.DIC_TERMS");
break;
case 'dicedit':
$dicparent = array();
$sqlp = sed_sql_query("SELECT * FROM $db_dic WHERE dic_id != '".$did."'");
while ($rowp = sed_sql_fetchassoc($sqlp))
{
$dicparent[$rowp['dic_id']] = $rowp['dic_title'];
}
$sql = sed_sql_query("SELECT * FROM $db_dic WHERE dic_id = '".$did."'");
$row = sed_sql_fetchassoc($sql);
$t -> assign(array(
"DIC_EDIT_SEND" => sed_url('admin', 'm=dic&a=update&did='.$did),
"DIC_EDIT_TITLE" => sed_textbox('dtitle', $row['dic_title']),
"DIC_EDIT_TYPE" => sed_selectbox($row['dic_type'], 'dtype', $dic_type),
"DIC_EDIT_VALUES" => sed_textarea('dvalues', $row['dic_values'], 5, 60),
"DIC_EDIT_MERA" => sed_textbox('dmera', $row['dic_mera']),
"DIC_EDIT_FORM_TITLE" => sed_textbox('dformtitle', $row['dic_form_title']),
"DIC_EDIT_FORM_DESC" => sed_textarea('dformdesc', $row['dic_form_desc'], 5, 60),
"DIC_EDIT_FORM_SIZE" => sed_textbox('dformsize', $row['dic_form_size'], 3, 10),
"DIC_EDIT_FORM_MAXSIZE" => sed_textbox('dformmaxsize', $row['dic_form_maxsize'], 3, 10),
"DIC_EDIT_FORM_COLS" => sed_textbox('dformcols', $row['dic_form_cols'], 3, 10),
"DIC_EDIT_FORM_ROWS" => sed_textbox('dformrows', $row['dic_form_rows'], 3, 10),
"DIC_EDIT_DICPARENT" => sed_selectbox($row['dic_parent'], 'dparent', $dicparent) //sed_textbox('dtype', $row['dic_type'])
));
$t -> parse("ADMIN_DIC.DIC_EDIT");
break;
case 'dicitemedit':
$sql = sed_sql_query("SELECT d.*, t.* FROM $db_dic_items AS t LEFT JOIN $db_dic AS d ON t.ditem_dicid = d.dic_id WHERE t.ditem_id = '".$tid."' LIMIT 1");
$row = sed_sql_fetchassoc($sql);
$t -> assign(array(
"DIC_TITLE" => sed_cc($row['dic_title']),
"DIC_ITEM_EDIT_SEND" => sed_url('admin', 'm=dic&mn=dicitem&a=update&tid='.$tid."&did=".$row['dic_id']),
"DIC_ITEM_EDIT_TITLE" => sed_textbox('ititle', $row['ditem_title']),
"DIC_ITEM_EDIT_CHILDRENDIC" => sed_selectbox($row['ditem_children'], 'ichildren', $dic_list),
"DIC_ITEM_EDIT_CODE" => sed_textbox('icode', $row['ditem_code']),
"DIC_ITEM_EDIT_DEFVAL" => sed_radiobox("idefval", $sed_yesno, $row['ditem_defval'])
));
$t -> parse("ADMIN_DIC.DIC_ITEM_EDIT");
break;
case 'extra':
$extralocation = sed_import('extralocation','P','TXT');
$extratype = sed_import('extratype','P','TXT');
$extrasize = sed_import('extrasize','P','INT');
$sql = sed_sql_query("SELECT * FROM $db_dic WHERE dic_id = '".$did."'");
if (sed_sql_numrows($sql) > 0)
{
$row = sed_sql_fetchassoc($sql);
//---
if ($a == 'add' && (!empty($did)))
{
if (!empty($extralocation) && !empty($row['dic_code']))
{
sed_extrafield_add($extralocation, $row['dic_code'], $extratype, $extrasize);
sed_redirect(sed_url("admin", "m=dic&mn=extra&did=".$did, "", true));
}
}
//---
if ($a == 'update' && (!empty($did)))
{
$extradelete = sed_import('extradelete','P','BOL');
if ($extradelete)
{
sed_extrafield_remove($row['dic_extra_location'], $row['dic_code']);
}
else
{
sed_extrafield_update($row['dic_extra_location'], $row['dic_code'], $extratype, $extrasize);
}
sed_redirect(sed_url("admin", "m=dic&mn=extra&did=".$did, "", true));
}
$urlpaths[sed_url("admin", "m=dic&mn=dicitem&did=".$did)] = $row['dic_title'];
$urlpaths[sed_url("admin", "m=dic&mn=extra&did=".$did)] = $L['adm_dic_extra'];
$admintitle = $L['adm_dic_extra'];
$location_arr = array('pages' => 'Pages', 'users' => 'Users', 'com' => 'Comments', 'forum_topics' => 'Forum topics');
$type_arr = array('varchar' => 'VARCHAR', 'text' => 'TEXT', 'int' => 'INTEGER', 'tinyint' => 'TINY INTEGER', 'boolean' => 'BOOLEAN');
for ($i = 1; $i <= 255; $i++) { $maxsize_arr[$i] = $i; }
if (!empty($row['dic_extra_location']))
{
$i = 1;
$colname = $row['dic_code'];
$fieldsres = sed_sql_query("SELECT * FROM ".$cfg['sqldbprefix'].$row['dic_extra_location']." LIMIT 1");
$isset_column = "";
while ($i <= sed_sql_numfields($fieldsres))
{
$column = sed_sql_fetchfield($fieldsres, $i);
if (preg_match("#.*?_$colname$#", $column->name, $match))
{
$isset_column = ($match[0] != "") ? $match[0] : "";
break;
}
}
}
if (!empty($isset_column))
{
$t -> assign(array(
"DIC_EXTRA_DELETE" => sed_radiobox("extradelete", $yesno_arr, 0)
));
$t -> parse("ADMIN_DIC.DIC_EXTRA.DIC_EXTRA_DELETE");
}
$t -> assign(array(
"DIC_EXTRA_SEND" => sed_url('admin', 'm=dic&mn=extra&did='.$did.'&a='.((!empty($isset_column)) ? "update" : "add")),
"DIC_EXTRA_SUBMIT_NAME" => (!empty($isset_column)) ? $L['Update'] : $L['Add'],
"DIC_EXTRA_TITLE" => $row['dic_title'],
"DIC_EXTRA_DICCODE" => $row['dic_code'],
"DIC_EXTRA_LOCATION" => (!empty($isset_column)) ?
$row['dic_extra_location']." / <strong>".$isset_column."</strong>" :
sed_selectbox($row['dic_extra_location'], 'extralocation', $location_arr),
"DIC_EXTRA_TYPE" => sed_selectbox($row['dic_extra_type'], 'extratype', $type_arr, false),
"DIC_EXTRA_SIZE" => sed_selectbox($row['dic_extra_size'], 'extrasize', $maxsize_arr)
));
$t -> parse("ADMIN_DIC.DIC_EXTRA");
}
break;
default:
$dtitle = sed_import('dtitle','P','TXT');
$dcode = sed_import('dcode','P','ALP');
$dparent = sed_import('dparent','P','INT');
$dtype = sed_import('dtype','P','INT');
$dvalues = sed_import('dvalues','P','TXT');
$dmera = sed_import('dmera','P','TXT');
$dformtitle = sed_import('dformtitle','P','TXT');
$dformdesc = sed_import('dformdesc','P','TXT');
$dformsize = sed_import('dformsize','P','TXT');
$dformmaxsize = sed_import('dformmaxsize','P','TXT');
$dformcols = sed_import('dformcols','P','TXT');
$dformrows = sed_import('dformrows','P','TXT');
if ($a == 'update' && (!empty($did)))
{
$sql = sed_sql_query("UPDATE $db_dic SET
dic_title = '".sed_sql_prep($dtitle)."',
dic_type = '".(int)$dtype."',
dic_values = '".sed_sql_prep($dvalues)."',
dic_mera = '".sed_sql_prep($dmera)."',
dic_parent = '".sed_sql_prep($dparent)."',
dic_form_title = '".sed_sql_prep($dformtitle)."',
dic_form_desc = '".sed_sql_prep($dformdesc)."',
dic_form_size = '".sed_sql_prep($dformsize)."',
dic_form_maxsize = '".sed_sql_prep($dformmaxsize)."',
dic_form_cols = '".sed_sql_prep($dformcols)."',
dic_form_rows = '".sed_sql_prep($dformrows)."'
WHERE dic_id = '".$did."'");
sed_log("Update directory #".$did,'adm');
sed_cache_clear('sed_dic');
sed_redirect(sed_url("admin", "m=dic&msg=917", "", true));
}
elseif ($a == 'delete' && (!empty($did)))
{
$sql = sed_sql_query("SELECT COUNT(*) FROM $db_dic_items WHERE ditem_dicid = '".$did."'");
$totalitems = sed_sql_result($sql, 0, "COUNT(*)");
if ($totalitems == 0)
{
$sql = sed_sql_query("DELETE FROM $db_dic WHERE dic_id = '".$did."'");
sed_log("Deleted directory #".$did,'adm');
sed_cache_clear('sed_dic');
sed_redirect(sed_url("admin", "m=dic&msg=917", "", true));
}
}
elseif ($a == 'add')
{
if (empty($dtitle) || empty($dcode) || empty($dtype))
{
$msg = 303;
}
else
{
$dcode = preg_replace('/[^a-zA-Z0-9]/', '', $dcode);
$sql = sed_sql_query("INSERT into $db_dic
(dic_title,
dic_code,
dic_type,
dic_values,
dic_mera,
dic_form_title,
dic_form_desc,
dic_form_size,
dic_form_maxsize,
dic_form_cols,
dic_form_rows
)
VALUES
('".sed_sql_prep($dtitle)."',
'".sed_sql_prep($dcode)."',
'".(int)$dtype."',
'".sed_sql_prep($dvalues)."',
'".sed_sql_prep($dmera)."',
'".sed_sql_prep($dformtitle)."',
'".sed_sql_prep($dformdesc)."',
'".sed_sql_prep($dformsize)."',
'".sed_sql_prep($dformmaxsize)."',
'".sed_sql_prep($dformcols)."',
'".sed_sql_prep($dformrows)."')");
sed_log("Addded directory #".$did,'adm');
sed_cache_clear('sed_dic');
sed_redirect(sed_url("admin", "m=dic&msg=917", "", true));
}
}
$sql = sed_sql_query("SELECT DISTINCT(ditem_dicid), COUNT(*) FROM $db_dic_items WHERE 1 GROUP BY ditem_dicid");
while ($row = sed_sql_fetchassoc($sql))
{ $termcount[$row['ditem_dicid']] = $row['COUNT(*)']; }
$sql = sed_sql_query("SELECT * FROM $db_dic");
while ($row = sed_sql_fetchassoc($sql))
{
if (isset($termcount[$row['dic_id']]) && $termcount[$row['dic_id']] < 1)
{
$t -> assign(array(
"DIC_LIST_DELETE_URL" => sed_url("admin", "m=dic&a=delete&did=".$row['dic_id'])
));
$t -> parse("ADMIN_DIC.DIC_STRUCTURE.DIC_LIST.ADMIN_DELETE");
}
$t -> assign(array(
"DIC_LIST_EDIT_URL" => sed_url("admin", "m=dic&mn=dicedit&did=".$row['dic_id'])
));
$t -> parse("ADMIN_DIC.DIC_STRUCTURE.DIC_LIST.ADMIN_ACTIONS");
$dic_code = "<a href=\"".sed_url('admin', 'm=dic&mn=extra&did='.$row['dic_id'])."\">".$row['dic_code']."</a>";
if (!empty($row['dic_extra_location']))
{
$i = 1;
$colname = $row['dic_code'];
$fieldsres = sed_sql_query("SELECT * FROM ".$cfg['sqldbprefix'].$row['dic_extra_location']." LIMIT 1");
$isset_column = "";
while ($i <= sed_sql_numfields($fieldsres))
{
$column = sed_sql_fetchfield($fieldsres, $i);
if (preg_match("#.*?_$colname$#", $column->name, $match))
{
$dic_code .= ($match[0] != "") ? " <strong>(".$column->table."#".$match[0].")</strong>" : "";
break;
}
$i++;
}
}
$t -> assign(array(
"DIC_LIST_ID" => $row['dic_id'],
"DIC_LIST_URL" => sed_url('admin', 'm=dic&mn=dicitem&did='.$row['dic_id']),
"DIC_LIST_TITLE" => $row['dic_title'],
"DIC_LIST_CODE" => $dic_code,
"DIC_LIST_TYPE" => isset($dic_type[$row['dic_type']])?$dic_type[$row['dic_type']]:''
));
$t -> parse("ADMIN_DIC.DIC_STRUCTURE.DIC_LIST");
}
$t -> assign(array(
"DIC_ADD_SEND" => sed_url('admin', 'm=dic&a=add'),
"DIC_ADD_TITLE" => sed_textbox('dtitle', $dtitle),
"DIC_ADD_VALUES" => sed_textarea('dvalues', $dvalues, 5, 60),
"DIC_ADD_MERA" => sed_textbox('dmera', $dmera, 8, 50),
"DIC_ADD_CODE" => sed_textbox('dcode', $dcode),
"DIC_ADD_TYPE" => sed_selectbox(isset($dtype)?$dtype:'', 'dtype', $dic_type),
"DIC_ADD_FORM_TITLE" => sed_textbox('dformtitle', $dformtitle),
"DIC_ADD_FORM_DESC" => sed_textarea('dformdesc', $dformdesc, 5, 60),
"DIC_ADD_FORM_SIZE" => sed_textbox('dformsize', $dformsize, 3, 10),
"DIC_ADD_FORM_MAXSIZE" => sed_textbox('dformmaxsize', $dformmaxsize, 3, 10),
"DIC_ADD_FORM_COLS" => sed_textbox('dformcols', $dformcols, 3, 10),
"DIC_ADD_FORM_ROWS" => sed_textbox('dformrows', $dformrows, 3, 10)
));
$t -> parse("ADMIN_DIC.DIC_STRUCTURE");
break;
}
$t->assign("ADMIN_DIC_TITLE", $admintitle);
$t -> parse("ADMIN_DIC");
$adminmain .= $t -> text("ADMIN_DIC");
?>