/**
* MYSQL save/update panels
*/
private function set_paneldb()
{
global $aidlink, $locale, $defender;
if (isset($_POST['panel_save'])) {
$this->data['panel_id'] = isset($_POST['panel_id']) ? form_sanitizer($_POST['panel_id'], '0', 'panel_id') : 0;
$this->data['panel_name'] = isset($_POST['panel_name']) ? form_sanitizer($_POST['panel_name'], '', 'panel_name') : '';
$this->data['panel_side'] = isset($_POST['panel_side']) ? form_sanitizer($_POST['panel_side'], 1, 'panel_side') : 1;
$this->data['panel_access'] = isset($_POST['panel_access']) ? form_sanitizer($_POST['panel_access'], '0', 'panel_access') : 0;
// panel name is unique
$result = dbcount("(panel_id)", DB_PANELS, "panel_name='" . $this->data['panel_name'] . "' AND panel_id !='" . $this->data['panel_id'] . "'");
if ($result) {
$defender->stop();
addNotice('danger', $locale['471']);
}
$this->data['panel_filename'] = isset($_POST['panel_filename']) ? form_sanitizer($_POST['panel_filename'], '', 'panel_filename') : '';
// panel content formatting
if ($this->data['panel_filename'] == 'none') {
$this->data['panel_type'] = "php";
$this->data['panel_content'] = isset($_POST['panel_content']) ? addslashes($_POST['panel_content']) : '';
if (!$this->data['panel_content']) {
$this->data['panel_content'] = "opentable(\"name\");\n" . "echo \"Content\";\n" . "closetable();";
if ($this->data['panel_side'] == 1 || $this->data['panel_side'] == 4) {
$this->data['panel_content'] = "openside(\"name\");\n" . "echo \"Content\";\n" . "closeside();";
}
}
} else {
$this->data['panel_content'] = '';
$this->data['panel_type'] = "file";
}
// need to add fourth option. only show in front page.
$this->data['panel_restriction'] = isset($_POST['panel_restriction']) ? form_sanitizer($_POST['panel_restriction'], '', 'panel_restriction') : 0;
// 3, show on all, 2 = show on home page. 1 = exclude , 0 = include
// post 0 to include all , 1 to exclude all, show all.
if ($this->data['panel_restriction'] == '3') {
// show on all
$this->data['panel_display'] = $this->data['panel_side'] !== 1 && $this->data['panel_side'] !== 4 ? 1 : 0;
$this->data['panel_url_list'] = '';
} elseif ($this->data['panel_restriction'] == '2') {
// show on homepage only
$this->data['panel_display'] = 0;
$this->data['panel_url_list'] = '';
if ($this->data['panel_side'] == 1 || $this->data['panel_side'] == 4) {
$this->data['panel_url_list'] = fusion_get_settings('opening_page');
// because 1 and 4 directly overide panel_display.
}
} else {
// require panel_url_list in this case
$this->data['panel_url_list'] = isset($_POST['panel_url_list']) ? form_sanitizer($_POST['panel_url_list'], '', 'panel_url_list') : '';
if ($this->data['panel_url_list']) {
$this->data['panel_url_list'] = str_replace(",", "\r\n", $this->data['panel_url_list']);
if ($this->data['panel_restriction'] == 1) {
// exclude mode
$this->data['panel_display'] = $this->data['panel_side'] !== 1 && $this->data['panel_side'] !== 4 ? 1 : 0;
} else {
// include mode
$this->data['panel_display'] = $this->data['panel_side'] !== 1 && $this->data['panel_side'] !== 4 ? 1 : 0;
}
} else {
$defender->stop();
addNotice('danger', $locale['475']);
}
}
$panel_languages = isset($_POST['panel_languages']) ? \defender::sanitize_array($_POST['panel_languages']) : array();
if (!empty($panel_languages)) {
$this->data['panel_languages'] = implode('.', $panel_languages);
}
// panel order .. add to last or sort - no need since we already have drag and drop... but if they dont have jquery this would be a good idea.
if ($this->data['panel_id'] && self::verify_panel($this->data['panel_id'])) {
dbquery_insert(DB_PANELS, $this->data, 'update');
addNotice('info', $locale['482']);
if (!defined('FUSION_NULL')) {
redirect(FUSION_SELF . $aidlink . "&section=listpanel&status=su");
}
} else {
// add panel order automatically
$result = dbquery("SELECT panel_order FROM " . DB_PANELS . " WHERE panel_side='" . intval($this->data['panel_side']) . "' ORDER BY panel_order DESC LIMIT 1");
if (dbrows($result) != 0) {
$data = dbarray($result);
$this->data['panel_order'] = $data['panel_order'] + 1;
} else {
$this->data['panel_order'] = 1;
}
dbquery_insert(DB_PANELS, $this->data, 'save');
addNotice('success', $locale['485']);
if (!defined('FUSION_NULL')) {
redirect(FUSION_SELF . $aidlink . "&section=listpanel&status=sn");
}
}
}
}