%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home1/lightco1/www/ilfanale.com.au/administrator/components/com_mobilize/models/
Upload File :
Create Path :
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;
    }

}

Zerion Mini Shell 1.0