Your IP : 216.73.216.55


Current Path : /home/g/i/t/giteleslfp/www/administrator/components/com_templateck/models/
Upload File :
Current File : /home/g/i/t/giteleslfp/www/administrator/components/com_templateck/models/templates.php

<?php

/**
 * @name		Template Creator CK
 * @copyright	Copyright (C) since 2011. All rights reserved.
 * @license		GNU General Public License version 2 or later; see LICENSE.txt
 * @author		Cedric Keiflin - http://www.template-creator.com - http://www.joomlack.fr
 */
defined('TCK_LOADED') or die;

jimport('joomla.application.component.modellist');

/**
 * Methods supporting a list of Templateck records.
 */
class TemplateckModeltemplates extends JModelList {

	/**
	 * Constructor.
	 *
	 * @param    array    An optional associative array of configuration settings.
	 * @see        JController
	 * @since    1.6
	 */
	public function __construct($config = array()) {
		if (empty($config['filter_fields'])) {
			$config['filter_fields'] = array(
				'id', 'a.id',
				'ordering', 'a.ordering',
				'state', 'a.state',
				'joomlaversion', 'a.joomlaversion',
				'name', 'a.name',
				'creationdate', 'a.creationdate',
				'author', 'a.author',
				'authoremail', 'a.authoremail',
				'authorurl', 'a.authorurl',
				'copyright', 'a.copyright',
				'license', 'a.license',
				'version', 'a.version',
				'description', 'a.description',
				'htmlcode', 'a.htmlcode',
				'theme', 'a.theme',
				'cssparams', 'a.cssparams',
				'options', 'a.options',
				'htmlcode_responsive', 'a.htmlcode_responsive',
			);
		}

		parent::__construct($config);
	}

	/**
	 * Method to auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 */
	protected function populateState($ordering = null, $direction = null) {
		// Initialise variables.
		$app = JFactory::getApplication('administrator');

		// Load the filter state.
		$search = $app->getUserStateFromRequest($this->context . '.filter.search', 'filter_search');
		$this->setState('filter.search', $search);

		$published = $app->getUserStateFromRequest($this->context . '.filter.state', 'filter_published', '', 'string');
		$this->setState('filter.state', $published);

		// Load the parameters.
		$params = JComponentHelper::getParams('com_templateck');
		$this->setState('params', $params);

		// List state information.
		parent::populateState('a.id', 'asc');
	}

	/**
	 * Method to get a store id based on model configuration state.
	 *
	 * This is necessary because the model is used by the component and
	 * different modules that might need different sets of data or different
	 * ordering requirements.
	 *
	 * @param	string		$id	A prefix for the store id.
	 * @return	string		A store id.
	 * @since	1.6
	 */
	protected function getStoreId($id = '') {
		// Compile the store id.
		$id.= ':' . $this->getState('filter.search');
		$id.= ':' . $this->getState('filter.state');

		return parent::getStoreId($id);
	}

	/**
	 * Build an SQL query to load the list data.
	 *
	 * @return	JDatabaseQuery
	 * @since	1.6
	 */
	protected function getListQuery() {
		// Create a new query object.
		$db = $this->getDbo();
		$query = $db->getQuery(true);

		// Select the required fields from the table.
		$query->select(
				$this->getState(
						'list.select', 'a.*'
				)
		);
		$query->from('`#__templateck_templates` AS a');


		// Join over the users for the checked out user.
		// $query->select('uc.name AS editor');
		// $query->join('LEFT', '#__users AS uc ON uc.id=a.checked_out');

		// Filter by published state
		// $published = $this->getState('filter.state');
		// if (is_numeric($published)) {
			// $query->where('a.state = ' . (int) $published);
		// } else if ($published === '') {
			// $query->where('(a.state IN (0, 1))');
		// }

		// Filter by search in title
		$search = $this->getState('filter.search');
		if (!empty($search)) {
			if (stripos($search, 'id:') === 0) {
				$query->where('a.id = ' . (int) substr($search, 3));
			} else {
				$search = $db->Quote('%' .$search . '%');
				$query->where('(' . 'a.name LIKE ' . $search . ' )');
			}
		}

		// Add the list ordering clause.
		$orderCol = $this->state->get('list.ordering');
		$orderDirn = $this->state->get('list.direction');
		if ($orderCol && $orderDirn) {
			$query->order($orderCol . ' ' . $orderDirn);
		}
		
		// $query = "SELECT * FROM #__templateck_templates ORDER BY id";
		return $query;
	}

	public function getTable($type = 'Template', $prefix = 'TemplateckTable', $config = array()) {
		return JTable::getInstance($type, $prefix, $config);
	}

	function copy() {

		$row = $this->getTable();
		$input = new TCK_Input();
		$ids = $input->get('id', '', 'array');
		$id = isset($ids[0]) ? (int) $ids[0] : null;

		$row->load($id);
		$row->id = 0;
		
		// copy the whole template folder with html and custom css
		if (!$this->copyFolder($row, '-copy')) {
			JFactory::getApplication()->enqueueMessage(JText::_('CK_ERROR_COPY_TEMPLATE_FOLDER'), 'warning');
			return false;
		}
		
		// give the new name
		$row->name .= '-copy';

		// Store the table to the database
		if (!$row->store()) {
			$this->setError($row->getErrorMsg());
			return false;
		}

		// $this->setId($row->id);

		return true;
	}

	private function copyFolder($data, $suffix) {
		$path = TEMPLATECREATORCK_TEMPLATES_PATH;
		if (file_exists($path . '/' . $data->name)) {
			if (!JFolder::copy($path . '/' . $data->name, $path . '/' . $data->name . $suffix)) {
				return false;
			}
		}
		return true;
	}

	function delete() {
		$row = $this->getTable();
		$input = new TCK_Input();
		$ids = $input->get('cid', '', 'array');
//		$id = isset($ids[0]) ? (int) $ids[0] : null;
		foreach ($ids as $id) {
			$row->load((int)$id);

			// Store the table to the database
			if (!$row->delete()) {
				$this->setError($row->getErrorMsg());
				return false;
			}
		}
		// $this->setId($row->id);

		return true;
	}
}