<?php
/**
* @package SP Page Builder
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2015 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/
//no direct accees
defined ('_JEXEC') or die ('restricted aceess');
jimport('joomla.application.component.modelitem');
class SppagebuilderModelPage extends JModelItem
{
protected $_context = 'com_sppagebuilder.page';
protected function populateState()
{
$app = JFactory::getApplication('site');
$pageId = $app->input->getInt('id');
$this->setState('page.id', $pageId);
$user = JFactory::getUser();
if ((!$user->authorise('core.edit.state', 'com_sppagebuilder')) && (!$user->authorise('core.edit', 'com_sppagebuilder')))
{
$this->setState('filter.published', 1);
}
$this->setState('filter.language', JLanguageMultilang::isEnabled());
}
public function getItem( $pageId = null )
{
$user = JFactory::getUser();
$pageId = (!empty($pageId))? $pageId : (int)$this->getState('page.id');
if ( $this->_item == null )
{
$this->_item = array();
}
if (!isset($this->_item[$pageId]))
{
try
{
$db = $this->getDbo();
$query = $db->getQuery(true)
->select('a.*')
->from('#__sppagebuilder as a')
->where('a.id = ' . (int) $pageId);
$query->select('l.title AS language_title')
->leftJoin( $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language');
$query->select('ua.name AS author_name')
->leftJoin('#__users AS ua ON ua.id = a.created_by');
// Filter by published state.
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published IN (0, 1))');
}
if ($this->getState('filter.language'))
{
$query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
}
$db->setQuery($query);
$data = $db->loadObject();
if (empty($data)) {
return JError::raiseError(404, JText::_('COM_SPPAGEBUILDER_ERROR_PAGE_NOT_FOUND'));
}
if ($access = $this->getState('filter.access')) {
$data->access_view = true;
}else{
$user = JFactory::getUser();
$groups = $user->getAuthorisedViewLevels();
$data->access_view = in_array($data->access, $groups);
}
$this->_item[$pageId] = $data;
}
catch (Exception $e)
{
if ($e->getCode() == 404 )
{
JError::raiseError(404, $e->getMessage());
}
else
{
$this->setError($e);
$this->_item[$pageId] = false;
}
}
}
return $this->_item[$pageId];
}
// Get form
public function getForm($data = array(), $loadData = true)
{
// Get the form.
$form = $this->loadForm('com_users.profile', 'profile', array('control' => 'jform', 'load_data' => $loadData));
if (empty($form))
{
return false;
}
// Check for username compliance and parameter set
$isUsernameCompliant = true;
if ($this->loadFormData()->username)
{
$username = $this->loadFormData()->username;
$isUsernameCompliant = !(preg_match('#[<>"\'%;()&\\\\]|\\.\\./#', $username) || strlen(utf8_decode($username)) < 2
|| trim($username) != $username);
}
$this->setState('user.username.compliant', $isUsernameCompliant);
if (!JComponentHelper::getParams('com_users')->get('change_login_name') && $isUsernameCompliant)
{
$form->setFieldAttribute('username', 'class', '');
$form->setFieldAttribute('username', 'filter', '');
$form->setFieldAttribute('username', 'description', 'COM_USERS_PROFILE_NOCHANGE_USERNAME_DESC');
$form->setFieldAttribute('username', 'validate', '');
$form->setFieldAttribute('username', 'message', '');
$form->setFieldAttribute('username', 'readonly', 'true');
$form->setFieldAttribute('username', 'required', 'false');
}
// When multilanguage is set, a user's default site language should also be a Content Language
if (JLanguageMultilang::isEnabled())
{
$form->setFieldAttribute('language', 'type', 'frontend_language', 'params');
}
// If the user needs to change their password, mark the password fields as required
if (JFactory::getUser()->requireReset)
{
$form->setFieldAttribute('password1', 'required', 'true');
$form->setFieldAttribute('password2', 'required', 'true');
}
return $form;
}
/**
* Increment the hit counter for the page.
*
* @param integer $pk Optional primary key of the page to increment.
*
* @return boolean True if successful; false otherwise and internal error set.
*/
public function hit($pk = 0)
{
$pk = (!empty($pk)) ? $pk : (int) $this->getState('page.id');
$table = JTable::getInstance('Page', 'SppagebuilderTable');
$table->load($pk);
$table->hit($pk);
return true;
}
public function getMySections() {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id', 'title', 'section')));
$query->from($db->quoteName('#__sppagebuilder_sections'));
//$query->where($db->quoteName('profile_key') . ' LIKE '. $db->quote('\'custom.%\''));
$query->order('id ASC');
$db->setQuery($query);
$results = $db->loadObjectList();
return json_encode($results);
}
public function deleteSection($id){
$db = JFactory::getDbo();
$query = $db->getQuery(true);
// delete all custom keys for user 1001.
$conditions = array(
$db->quoteName('id') . ' = '.$id
);
$query->delete($db->quoteName('#__sppagebuilder_sections'));
$query->where($conditions);
$db->setQuery($query);
return $db->execute();
}
public function saveSection($title, $section){
$db = JFactory::getDbo();
$user = JFactory::getUser();
$obj = new stdClass();
$obj->title = $title;
$obj->section = $section;
$obj->created = JFactory::getDate()->toSql();
$obj->created_by = $user->get('id');
$db->insertObject('#__sppagebuilder_sections', $obj);
return $db->insertid();
}
}