* */ 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; } } ?>