<?php

if (!defined('XOOPS_ROOT_PATH')) exit();

class LegacyRender_AbstractEditAction extends LegacyRender_Action
{
	var $mObject = null;
	var $mObjectHandler = null;
	var $mActionForm = null;

	function _getId()
	{
	}
	
	function &_getHandler()
	{
	}
	
	function _setupObject()	
	{
		$id = $this->_getId();

		$this->mObjectHandler = $this->_getHandler();
		
		$this->mObject =& $this->mObjectHandler->get($id);
		if ($this->mObject == null && $this->isEnableCreate()) {
			$this->mObject =& $this->mObjectHandler->create();
		}
	}

	function _setupActionForm()
	{
	}

	/**
	 * @return bool
	 */	
	function isEnableCreate()
	{
		return true;
	}
	
	function prepare(&$controller, &$xoopsUser)
	{
		$this->_setupActionForm();
		$this->_setupObject();
	}

	function getDefaultView(&$controller,&$xoopsUser)
	{
		if ($this->mObject == null) {
			return LEGACYRENDER_FRAME_VIEW_ERROR;
		}

		$this->mActionForm->load($this->mObject);

		return LEGACYRENDER_FRAME_VIEW_INPUT;
	}

	function execute(&$controller,&$xoopsUser)
	{
		if ($this->mObject == null) {
			return LEGACYRENDER_FRAME_VIEW_ERROR;
		}

		//
		// If image is no, the data has to continue to keep his value.
		//
		$this->mActionForm->load($this->mObject);

		$this->mActionForm->fetch();
		$this->mActionForm->validate();

		if($this->mActionForm->hasError()) {
			return LEGACYRENDER_FRAME_VIEW_INPUT;
		}
			
		$this->mActionForm->update($this->mObject);

		return $this->mObjectHandler->insert($this->mObject) ? LEGACYRENDER_FRAME_VIEW_SUCCESS
		                                                     : LEGACYRENDER_FRAME_VIEW_ERROR;
	}
}

?>