flatpress/admin/panels/entry/admin.entry.write.php
2022-12-29 14:20:31 +01:00

215 lines
4.1 KiB
PHP
Executable File

<?php
/**
* edit entry panel
*
* Type:
* Name:
* Date:
* Purpose:
* Input:
*
* @author NoWhereMan <real_nowhereman at users dot sf dot com>
*
*/
class admin_entry_write extends AdminPanelActionValidated {
var $validators = array(
array(
'subject',
'subject',
'notEmpty',
false,
false,
'trim,stripslashes'
),
array(
'content',
'content',
'notEmpty',
false,
false,
'stripslashes'
)
);
var $events = array(
'save',
'preview',
'savecontinue'
);
var $draft = false;
function _makePreview($arr, $id = null) {
if (!$id) {
$arr ['subject'] = apply_filters('title_save_pre', $arr ['subject']);
$arr ['content'] = apply_filters('content_save_pre', $arr ['content']);
}
if ($this->draft || $this->draft = draft_exists($this->id)) {
if (isset($arr ['categories']) && is_array($arr ['categories']) && !in_array('draft', $arr ['categories'])) {
$arr ['categories'] [] = 'draft';
} else {
$arr ['categories'] [] = 'draft';
}
}
// unfiltered content (for editing)
$this->smarty->assign('post', $arr);
if (THEME_LEGACY_MODE) {
theme_entry_filters($arr, $id);
}
// content for preview
$this->smarty->assign('entry', $arr);
$this->smarty->assign('preview', true);
}
function makePageTitle($title, $sep) {
global $lang, $panel;
if ($this->draft) {
$this->smarty->append('warnings', $lang ['admin'] ['entry'] ['write'] ['msgs'] ['draft']);
}
return "$title $sep {$lang['admin']['entry']['write']['head']}";
}
function draft_class($string) {
return "$string draft";
}
function _getCatsFlags() {
// $this->smarty->assign('saved_categories', entry_categories_format());
$this->smarty->assign('saved_flags', entry_flags_get());
}
function setup() {
$this->id = @$_REQUEST ['entry'];
$this->smarty->assign('id', $this->id);
}
function main() {
global $lang;
$id = $this->id;
if (isset($_REQUEST ['entry'])) {
$arr = draft_parse($id);
if (!$arr)
$arr = entry_parse($id);
else
$this->smarty->assign('draft', true);
// if entry does not exists
if ($arr) {
$this->_makePreview($arr, $id);
}
}
$this->_getCatsFlags();
add_filter('wp_title', array(
&$this,
'makePageTitle'
), 10, 2);
if ($this->draft)
add_filter('admin_body_class', array(
&$this,
'draft_class'
));
}
function _getposteddata() {
$arr ['version'] = system_ver();
$arr ['subject'] = ($_POST ['subject']);
$arr ['content'] = ($_POST ['content']);
$author = user_get();
$arr ['author'] = $author ['userid'];
$arr ['date'] = !empty($_POST ['timestamp']) ? $_POST ['timestamp'] : date_time();
$cats = !empty($_POST ['cats']) ? $_POST ['cats'] : array();
$flags = !empty($_POST ['flags']) ? $_POST ['flags'] : array();
$catids = array_merge(array_keys($flags), array_keys($cats));
$this->draft = isset($flags ['draft']);
if ($catids)
$arr ['categories'] = $catids;
return $arr;
}
function onsave($do_preview = false) {
$id = $this->id;
$data = $this->_getposteddata();
if ($this->draft) {
$success = draft_save($data, $id, true);
$this->smarty->assign('success', $success ? 1 : -1);
} else {
$success = entry_save($data, $id);
$this->smarty->assign('success', is_numeric($success) ? $success : 1);
}
// if ($success) sess_remove('entry');
if ($do_preview)
$this->_makePreview($data);
if ($success < 0) {
$this->main();
return PANEL_NOREDIRECT;
}
return 1;
}
function onpreview() {
global $lang;
$this->_makePreview($this->_getposteddata());
$this->_getCatsFlags();
add_filter('wp_title', array(
&$this,
'makePageTitle'
), 10, 2);
if ($this->draft)
add_filter('admin_body_class', array(
&$this,
'draft_class'
));
return 0;
}
function onsavecontinue() {
global $lang;
$this->onsave(true);
$this->_getCatsFlags();
add_filter('wp_title', array(
&$this,
'makePageTitle'
), 10, 2);
if ($this->draft)
add_filter('admin_body_class', array(
&$this,
'draft_class'
));
}
function onerror() {
$this->main();
return 0;
}
}
?>