
This reverts commit e9ad11742876f9f78d743a28afd547ee7480c7f9, reversing changes made to f30fc6204a6bc7643d7952b1df98a3aa7b462dea.
203 lines
4.2 KiB
PHP
Executable File
203 lines
4.2 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;
|
|
}
|
|
|
|
}
|
|
|
|
?>
|