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