<?php
/**
 * Joomla! component Creative Contact Form
 *
 * @version $Id: 2012-04-05 14:30:25 svn $
 * @author creative-solutions.net
 * @package Creative Contact Form
 * @subpackage com_creativecontactform
 * @license GNU/GPL
 *
 */

// no direct access
defined('_JEXEC') or die('Restircted access');

// import Joomla modelform library
jimport('joomla.application.component.modeladmin');

class CreativeContactFormModelTemplate extends JModelAdmin
{
	/**
	 * Returns a reference to the a Table object, always creating it.
	 *
	 * @param	type	The table type to instantiate
	 * @param	string	A prefix for the table class name. Optional.
	 * @param	array	Configuration array for model. Optional.
	 * @return	JTable	A database object
	 * @since	1.6
	 */
	public function getTable($type = 'Template', $prefix = 'CreativeContactFormTable', $config = array()) 
	{
		return JTable::getInstance($type, $prefix, $config);
	}
	/**
	 * Method to get the record form.
	 *
	 * @param	array	$data		Data for the form.
	 * @param	boolean	$loadData	True if the form is to load its own data (default case), false if not.
	 * @return	mixed	A JForm object on success, false on failure
	 * @since	1.6
	 */
	
	/**
	 * Method to get styles
	 *
	 */
	public function getStyles() {
		if(isset($_GET['id']))
			$id = (int)$_GET['id'];
		$db		= $this->getDbo();
		$sql = "SELECT `styles` FROM `#__contact_templates` WHERE `id` = ".$id;
		$db->setQuery($sql);
		return $styles = $db->loadResult();
	}
	
	public function getForm($data = array(), $loadData = true) 
	{
		// Get the form.
		$form = $this->loadForm('com_creativecontactform.template', 'template', array('control' => '', 'load_data' => $loadData));
		if (empty($form)) 
		{
			return false;
		}
		return $form;
	}
	/**
	 * Method to get the data that should be injected in the form.
	 *
	 * @return	mixed	The data for the form.
	 * @since	1.6
	 */
	protected function loadFormData() 
	{
		// Check the session for previously entered form data.
		$data = JFactory::getApplication()->getUserState('com_creativepolling.edit.creativetemplate.data', array());
		if (empty($data)) 
		{
			$data = $this->getItem();
		}
		return $data;
	}
	
	/**
	 * Method to save data
	 *
	 * @return	mixed	The data for the form.
	 * @since	1.6
	 */
	public function store()
	{
		$id = (int)$_REQUEST['id'];
		$id_template = (int)$_REQUEST['id_template'];
		$published = (int)$_REQUEST['published'];
		$template_name = htmlspecialchars($_REQUEST['name'], ENT_QUOTES);
			
		//if id ==0, we add the record
		if($id == 0) {
	
			$query = ' SELECT * FROM #__contact_templates '.
					'  WHERE id = '.$id_template;
			$this->_db->setQuery( $query );
			$tmp = $this->_db->loadObject();
	
	
	
			$new_template = new JObject();
			$new_template->id = NULL;
			$new_template->name = $template_name;
			$new_template->published = $published;
			$new_template->styles = $tmp->styles;
	
			if (!$this->_db->insertObject( '#__contact_templates', $new_template, 'id' ))
				return false;
		}
		else { //else update the record
			$new_template = new JObject();
			$new_template->id = $id;
			$new_template->name = $template_name;
			$styles = str_replace(array('~','|'), '', $_REQUEST['styles']);
			$styles_formated = '';
			$ind = 0;
			foreach($styles as $k => $val) {
				$styles_formated .= $k.'~'.$val;
				if($ind != sizeof($styles) - 1)
					$styles_formated .= '|';
				$ind ++;
			}
	
			$new_template->styles = $styles_formated;
				
			if (!$this->_db->updateObject( '#__contact_templates', $new_template, 'id' ))
				return false;
		}
		return true;
	}
}
