%PDF- %PDF-
| Direktori : /home1/lightco1/www/ilfanale.com.au/administrator/components/com_mobilize/models/ |
| Current File : //home1/lightco1/www/ilfanale.com.au/administrator/components/com_mobilize/models/profile.php |
<?php
/**
* @version $Id: form.php 19013 2012-11-28 04:48:47Z thailv $
* @package JSNUniform
* @subpackage Models
* @author JoomlaShine Team <support@joomlashine.com>
* @copyright Copyright (C) 2012 JoomlaShine.com. All Rights Reserved.
* @license GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
*
* Websites: http://www.joomlashine.com
* Technical Support: Feedback - http://www.joomlashine.com/contact-us/get-support.html
*/
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.modeladmin');
jimport('joomla.filesystem.file');
/**
* JSNUniform model Form
*
* @package Modales
* @subpackage Form
* @since 1.6
*/
class JSNMobilizeModelProfile extends JModelAdmin {
protected $option = JSN_MOBILIZE;
/**
* Method to get a table object, load it if necessary.
*
* @param string $type The table name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A JTable object
*
* @since 11.1
*/
public function getTable($type = 'Profile', $prefix = 'JSNMobilizeTable', $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
*/
public function getForm($data = array(), $loadData = true) {
$form = $this->loadForm('com_mobilize.profile', 'profile', array('control' => 'jform', 'load_data' => $loadData));
return $form;
}
/**
* (non-PHPdoc)
*
* @see JModelForm::loadFormData()
*
* @return object
*/
protected function loadFormData() {
// Check the session for previously entered form data.
$data = JFactory::getApplication()->getUserState('com_mobilize.edit.profile.data', array());
if (empty($data)) {
$data = $this->getItem();
}
return $data;
}
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 11.1
*/
public function getItem($pk = null) {
$item = parent::getItem($pk);
return $item;
}
/**
* Override save method to save form fields to database
*
* @param array $data Data form
*
* @return boolean
*/
public function save($data) {
$app = JFactory::getApplication();
$post = $app->input->getArray($_POST);
$checkCreate = true;
if (empty($data['profile_id']) || $data['profile_id'] == 0) {
$edition = defined('JSN_MOBILIZE_EDITION') ? JSN_MOBILIZE_EDITION : "free";
if (strtolower($edition) == "free") {
$dataListForm = JSNMobilizeHelper::getProfiles();
if (count($dataListForm) >= 1) {
$checkCreate = false;
}
}
}
if ($checkCreate) {
if (empty($data['profile_id'])) {
$db = $this->getDbo();
$db->setQuery("UPDATE #__jsn_mobilize_profiles SET `ordering` = ordering+1");
$db->execute();
}
if (($result = parent::save($data))) {
$this->saveDataDesign($post);
$this->saveOSSupport($post);
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query = "REPLACE INTO `#__jsn_mobilize_config` (name, value) VALUES ('tmp_config','')";
$db->setQuery($query);
if (!$db->execute()) {
JError::raiseWarning(500, $db->getErrorMsg());
}
return $result;
} else {
$msg = JText::sprintf('JSN_MOBILIZE_YOU_HAVE_REACHED_THE_LIMITATION_OF_1_PROFILE_IN_FREE_EDITION', 0) . ' <a class="jsn-link-action" href="index.php?option=com_mobilize&view=upgrade">' . JText::_("JSN_MOBILIZE_UPGRADE_EDITION") . '</a>';
$this->setError($msg);
return false;
}
}
/**
* Save form Design
*
* @param array $post Data form
*
* @return boolean
*/
public function saveDataDesign($post) {
$profileId = $this->getState($this->getName() . '.id');
if (isset($post['jsnmobilize']) && count($post['jsnmobilize']) && $profileId) {
$getDataDesign = $this->getDataDesign();
$listData = array();
if (!empty($getDataDesign)) {
foreach ($getDataDesign as $item) {
$listData[$item->name] = $item->design_id;
}
}
if (isset($post['style'])) {
$table = JTable::getInstance('Design', 'JSNMobilizeTable');
$table->bind(array('design_id' => isset($listData['mobilize-style']) ? intval($listData['mobilize-style']) : 0, 'profile_id' => $profileId, 'name' => 'mobilize-style', 'value' => json_encode($post['style'])));
if (!$table->store()) {
$this->setError($table->getError());
return false;
}
$getStyle = JSNMobilizeHelper::generateStyle($post['style']);
$urlFolder = JPATH_ROOT . "/templates/jsn_mobilize/css/profiles";
$check = true;
if (!JFolder::exists(JPath::clean($urlFolder))) {
if (!JFolder::create(JPath::clean($urlFolder), 0777)) {
$check = false;
}
} elseif (!is_writable(JPath::clean($urlFolder))) {
$check = false;
}
if ($check) {
$fileName = "profile_" . (int) $profileId . ".css";
$file = JPath::clean($urlFolder . "/" . $fileName);
if (!JFile::write($file, $getStyle, true)) {
$check = false;
}
}
if ($check) {
$table = JTable::getInstance('Design', 'JSNMobilizeTable');
$table->bind(array('design_id' => isset($listData['mobilize-css-file']) ? intval($listData['mobilize-css-file']) : 0, 'profile_id' => $profileId, 'name' => 'mobilize-css-file', 'value' => $fileName));
if (!$table->store()) {
$this->setError($table->getError());
return false;
}
} else {
$table = JTable::getInstance('Design', 'JSNMobilizeTable');
$table->bind(array('design_id' => isset($listData['mobilize-css-file']) ? intval($listData['mobilize-css-file']) : 0, 'profile_id' => $profileId, 'name' => 'mobilize-css-file', 'value' => ""));
if (!$table->store()) {
$this->setError($table->getError());
return false;
}
}
if (!empty($post['mobilize_custom_css_files'])) {
$table = JTable::getInstance('Design', 'JSNMobilizeTable');
$table->bind(array('design_id' => isset($listData['mobilize-custom-css-files']) ? intval($listData['mobilize-custom-css-files']) : 0, 'profile_id' => $profileId, 'name' => 'mobilize-custom-css-files', 'value' => json_encode($post['mobilize_custom_css_files'])));
if (!$table->store()) {
$this->setError($table->getError());
return false;
}
}else{
$table = JTable::getInstance('Design', 'JSNMobilizeTable');
$table->bind(array('design_id' => isset($listData['mobilize-custom-css-files']) ? intval($listData['mobilize-custom-css-files']) : 0, 'profile_id' => $profileId, 'name' => 'mobilize-custom-css-files', 'value' => ''));
if (!$table->store()) {
$this->setError($table->getError());
return false;
}
}
if (!empty($post['mobilize_custom_css_code'])) {
$table = JTable::getInstance('Design', 'JSNMobilizeTable');
$table->bind(array('design_id' => isset($listData['mobilize-custom-css-code']) ? intval($listData['mobilize-custom-css-code']) : 0, 'profile_id' => $profileId, 'name' => 'mobilize-custom-css-code', 'value' => $post['mobilize_custom_css_code']));
if (!$table->store()) {
$this->setError($table->getError());
return false;
}
if ($check) {
$fileName = "custom_css_profile_" . (int) $profileId . ".css";
$file = JPath::clean($urlFolder . "/" . $fileName);
JFile::write($file, $post['mobilize_custom_css_code'], true);
}
}else{
$table = JTable::getInstance('Design', 'JSNMobilizeTable');
$table->bind(array('design_id' => isset($listData['mobilize-custom-css-code']) ? intval($listData['mobilize-custom-css-code']) : 0, 'profile_id' => $profileId, 'name' => 'mobilize-custom-css-code', 'value' => ''));
if (!$table->store()) {
$this->setError($table->getError());
return false;
}
if ($check) {
$fileName = "custom_css_profile_" . (int) $profileId . ".css";
$file = JPath::clean($urlFolder . "/" . $fileName);
JFile::write($file, $post['mobilize_custom_css_code'], true);
}
}
$table = JTable::getInstance('Design', 'JSNMobilizeTable');
$table->bind(array('design_id' => isset($listData['mobilize-css']) ? intval($listData['mobilize-css']) : 0, 'profile_id' => $profileId, 'name' => 'mobilize-css', 'value' => $getStyle));
if (!$table->store()) {
$this->setError($table->getError());
return false;
}
}
foreach ($post['jsnmobilize'] as $key => $data) {
if (is_array($data)) {
$dataItem = new stdClass;
foreach ($data as $item) {
if (!empty($item)) {
$item = !empty($item) ? (get_magic_quotes_gpc() == true || get_magic_quotes_runtime() == true) ? stripslashes($item) : $item : '';
$items = json_decode($item);
$itemValue = isset($items) ? key($items) : '';
$itemType = isset($items->$itemValue) ? $items->$itemValue : '';
$dataItem->$itemValue = $itemType;
}
}
$data = json_encode($dataItem);
} else {
$data = !empty($data) ? (get_magic_quotes_gpc() == true || get_magic_quotes_runtime() == true) ? stripslashes($data) : $data : '';
}
$table = JTable::getInstance('Design', 'JSNMobilizeTable');
$table->bind(array('design_id' => isset($listData[$key]) ? intval($listData[$key]) : 0, 'profile_id' => $profileId, 'name' => $key, 'value' => $data));
if (!$table->store()) {
$this->setError($table->getError());
return false;
}
}
}
}
/**
* Save OS Support
*
* @param array $post Data form
*
* @return boolean
*/
public function saveOSSupport($post) {
$profileId = $this->getState($this->getName() . '.id');
$db = $this->getDbo();
$db->setQuery("DELETE FROM #__jsn_mobilize_os_support WHERE profile_id={$profileId}");
$db->execute();
if (!empty($post["ossupport"])) {
foreach ($post["ossupport"] as $os) {
$table = JTable::getInstance('Ossupport', 'JSNMobilizeTable');
$table->bind(array('profile_id' => $profileId, 'os_id' => $os));
if (!$table->store()) {
$this->setError($table->getError());
return false;
}
}
}
}
/**
* Get Data design.
*
* @return string The default menu type
*
* @since 1.6
*/
public function getDataDesign() {
$profileId = $this->getState($this->getName() . '.id');
// Create a new query object.
if (!empty($profileId)) {
$db = $this->getDbo();
$query = $db->getQuery(true)->select('*')->from('#__jsn_mobilize_design')->where('profile_id=' . intval($profileId));
$db->setQuery($query);
return $db->loadObjectList();
}
}
/**
* Get Data design.
*
* @return string The default menu type
*
* @since 1.6
*/
public function getDataOSSupport() {
$profileId = $this->getState($this->getName() . '.id');
// Create a new query object.
if (!empty($profileId)) {
$db = $this->getDbo();
$query = $db->getQuery(true)->select('*')->from('#__jsn_mobilize_os_support')->where('profile_id=' . intval($profileId));
$db->setQuery($query);
return $db->loadObjectList();
}
}
/**
* Get Data OS.
*
* @return string The default menu type
*
* @since 1.6
*/
public function OrderDataOS() {
$db = $this->getDbo();
$query = $db->getQuery(true)->select('*')->from('#__jsn_mobilize_os')->where($db->quoteName('os_id') . '=' . $db->quote((int) 12))->where($db->quoteName('os_title') . '=' . $db->quote((string) 'iOS 8.x'));
$db->setQuery($query);
$ios8old = $db->loadObject();
if (count($ios8old))
{
$query = $db->getQuery(true);
$query
->update($db->quoteName('#__jsn_mobilize_os'))
->set($db->quoteName('os_value') . '=' . $db->quote('{"ios":["8",">"]}'))
->set($db->quoteName('os_title') . '=' . $db->quote('iOS 8.x and above'))
->where($db->quoteName('os_id') . '=' . $db->quote((int) 12));
$db->setQuery($query);
try
{
$db->execute();
}
catch (Exception $e)
{
}
}
$query = $db->getQuery(true)->select('*')->from('#__jsn_mobilize_os')->order('os_id ASC');
$db->setQuery($query);
$getOs = $db->loadObjectList();
foreach ( $getOs as $os ) {
if($os->os_title == 'iOS 8.x and above'){
$ios8=1;
}
}
if( !isset($ios8) ){
$db->setQuery($query);
$columns = array('os_id', 'os_value', 'os_type', 'os_title', 'os_order');
$values = array(12, $db->quote('{"ios":["8",">"]}'), $db->quote('ios'),$db->quote('iOS 8.x and above'), 3);
$query = $db->getQuery(true);
$query ->insert($db->quoteName('#__jsn_mobilize_os'))
->columns($db->quoteName($columns))
->values(implode(',',$values));
$db->setQuery($query);
$db->execute();
$this->updateOsOrder($getOs);
}else{
$this->updateOsOrder($getOs);
}
}
/**
* Update Order Data OS.
*
* @param array &$getOs
*
* @since 1.6
*/
public function updateOsOrder($getOs){
foreach ( $getOs as $os ) {
$order = 4;
if($os->os_title == 'iOS 6.x and bellow'){
$order=1;
}elseif($os->os_title == 'iOS 7.x'){
$order=2;
}elseif($os->os_title == 'iOS 8.x and above'){
$order=3;
}
$db = $this->getDbo();
$db->setQuery("UPDATE #__jsn_mobilize_os SET `os_order` = " .$order. " WHERE `os_id` = ".$os->os_id);
$db->execute();
}
}
/**
* Get Data OS.
*
* @return string The default menu type
*
* @since 1.6
*/
public function getDataOS() {
$this->OrderDataOS();
$db = $this->getDbo();
$query = $db->getQuery(true)->select('*')->from('#__jsn_mobilize_os')->order('os_order ASC');
$db->setQuery($query);
return $db->loadObjectList();
}
/**
* Override delete method to also delete form fields that associated
*
* @param array &$pks id form
*
* @return boolean
*/
public function delete(&$pks) {
$pks = (array) $pks;
if (count($pks)) {
foreach ($pks as $id) {
$this->_db->setQuery('DELETE FROM #__jsn_mobilize_design where profile_id = ' . (int) $id);
if (!$this->_db->execute()) {
return false;
}
$this->_db->setQuery('DELETE FROM #__jsn_mobilize_profiles where profile_id = ' . (int) $id);
if (!$this->_db->execute()) {
return false;
}
$this->_db->setQuery('DELETE FROM #__jsn_mobilize_os_support where profile_id = ' . (int) $id);
if (!$this->_db->execute()) {
return false;
}
}
}
return true;
}
/**
* Get menu type.
*
* In the absence of better information, this is the first menu ordered by title.
*
* @return string The default menu type
*
* @since 1.6
*/
public function getMenuType() {
// Create a new query object.
$db = $this->getDbo();
$query = $db->getQuery(true)->select('*')->from('#__menu_types')->order('title');
$db->setQuery($query);
$menuType = $db->loadObjectList();
return $menuType;
}
}