* */ 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; var $id = null; 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; } } ?>