flatpress/admin/panels/entry/admin.entry.commedit.php
Fraenkiman b9dace1686 Fixes #304 | inaccurate error messages
- Fixes #304 | inaccurate error messages in the comment editing panel
2024-02-21 18:47:22 +01:00

144 lines
2.7 KiB
PHP

<?php
/**
* Comment edit panel
*
* Type:
* Name:
* Date: 21.02.2024
* Purpose: Provides the option to edit comments
* Input:
*
* @author FlatPress
*
*/
class admin_entry_commedit extends AdminPanelActionValidated {
var $validators = array(
array(
'name',
'name',
'notEmpty',
false,
false,
'trim,stripslashes'
),
array(
'email',
'email',
'isEmail',
true,
false,
'trim,stripslashes'
),
array(
'url',
'url',
'isURL',
true,
false,
'trim,stripslashes'
),
array(
'content',
'content',
'notEmpty',
false,
false,
'stripslashes'
)
);
var $events = array(
'save'
);
var $args = array(
'entry',
'comment'
);
var $nosuchcomment = false;
function commedit_validate() {
$lerr = & $lang ['admin'] ['entry'] ['commedit'] ['error'];
$errors = array();
// check name
if (!$name) {
$errors ['name'] = $lerr ['name'];
}
// check email
if ($email) {
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors ['email'] = $lerr ['email'];
}
}
// check url
if ($url) {
if (!filter_var($url, FILTER_VALIDATE_URL)) {
$errors ['url'] = $lerr ['url'];
}
}
// check content
if (!$content) {
$errors ['content'] = $lerr ['content'];
}
// assign error messages to template
if ($errors) {
$smarty->assign('error', $errors);
return false;
}
}
function setup() {
$this->nosuchcomment = !comment_exists($_REQUEST ['entry'], $_REQUEST ['comment']);
$this->smarty->assign('entryid', $_REQUEST ['entry']);
$this->smarty->assign('id', $_REQUEST ['comment']);
}
function main() {
global $lang;
if ($this->nosuchcomment) return PANEL_REDIRECT_DEFAULT;
$e = entry_parse($_REQUEST ['entry']);
if ($e) {
$this->smarty->assign('entrysubject', $e ['subject']);
} else return PANEL_REDIRECT_DEFAULT;
$comment = comment_parse($_REQUEST ['entry'], $_REQUEST ['comment']);
if ($comment) {
$this->smarty->assign('values', $comment);
$this->smarty->append('values', array('ip_address' => $comment ['ip-address']), true);
} else return PANEL_REDIRECT_DEFAULT;
}
function onsave($content) {
if ($this->nosuchcomment) return PANEL_REDIRECT_DEFAULT;
$comment = comment_parse($_REQUEST ['entry'], $_REQUEST ['comment']);
if (isset($comment ['loggedin']))
$content ['loggedin'] = $comment ['loggedin'];
$content ['ip-address'] = $comment ['ip-address'];
$content ['date'] = $comment ['date'];
$success = comment_save($_REQUEST ['entry'], $content);
$this->smarty->assign('success', $success ? 1 : -1);
if ($success < 0) {
$this->main();
return PANEL_NOREDIRECT;
}
return PANEL_REDIRECT_CURRENT;
}
function onerror() {
$this->main();
return 0;
}
}
?>