| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/a/w/e/awebpaca/blog/administrator/components/com_jabuilder/models/ |
Upload File : |
<?php
/**
* ------------------------------------------------------------------------
* JA Builder Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2011 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* ------------------------------------------------------------------------
*/
defined('_JEXEC') or die;
require_once JPATH_ADMINISTRATOR . '/components/com_menus/models/item.php';
require_once JPATH_ADMINISTRATOR . '/components/com_menus/tables/menu.php';
class JabuilderModelPage extends JModelAdmin
{
protected $type = 'page';
public function __construct($config = array()) {
$lang = JFactory::getLanguage();
$extension = 'com_menus';
$language_tag = JFactory::getLanguage()->getTag();
$lang->load($extension, JPATH_ADMINISTRATOR, $language_tag, true);
parent::__construct($config);
}
public function getTable($type = 'Page', $prefix = 'JabuilderTable', $config = array())
{
$table = JTable::getInstance($type, $prefix, $config);
return $table;
}
public function getItem($pk = null) {
$item = parent::getItem($pk);
$input = JFactory::getApplication()->input;
$id = $input->get('id',0);
$menuid = $input->get('menuid', 0);
if ($menuid) {
$menu = $this->getMenuModel()->getItem($menuid);
} elseif($id) {
$menu = $this->getMenuByPage($id);
} else {
$menu = null;
}
$item = $this->syncMenuData($item, $menu);
if (!empty($item) && !empty($item->params)) {
$params = $item->params;
$item->feature_image = !empty($params['feature_image']) ? $params['feature_image'] : '';
}
return $item;
}
public function syncMenuData($item, $menu) {
if (!empty($menu)) {
$item->menuid = $menu->id;
if (is_array($menu->params)) {
$menu_params = $menu->params;
} else {
$menu_params = (array) json_decode($menu->params);
}
$item->meta_description = isset($menu_params['menu-meta_description']) ? $menu_params['menu-meta_description'] : '';
$item->meta_keywords = isset($menu_params['menu-meta_keywords']) ? $menu_params['menu-meta_keywords'] : '';
$item->robots = isset($menu_params['robots']) ? $menu_params['robots'] : '';
$item->parent_id = $menu->parent_id;
$item->state = $menu->published;
$item->menutype = $menu->menutype;
$item->access = $menu->access;
$item->menuordering= $menu->id;
$item->template_style_id = $menu->template_style_id;
}
return $item;
}
public function getForm($data = array(), $loadData = true)
{
// Get the form.
$form = $this->loadForm(
'com_jabuilder.page',
'page',
array(
'control' => 'jform',
'load_data' => $loadData
)
);
if (empty($form))
{
return false;
}
return $form;
}
protected function loadFormData()
{
$data = $this->getItem();
return $data;
}
public function save($data)
{
$input = JFactory::getApplication()->input;
$data['type'] = $this->type;
if( $input->getCmd('id') )
{
$data['id'] = $input->getCmd('id');
// unset $data['slug'] if created
if (isset($data['slug'])) unset($data['slug']);
} else {
$data['slug'] = $this->createSlug();
}
if( empty($data['alias']) )
{
$data['alias'] = JabuilderHeper::stringUrlsafe($data['title']);
}
// solved duplicate alias
if( $this->num_duplicated_alias( $data['id'], $data['alias'] ) )
{
for ( $i = 1; $i < 100; $i++)
{
$new_alias = $data['alias'].'-'.$i;
if( !$this->num_duplicated_alias( $data['id'], $new_alias ) )
{
$data['alias'] = $new_alias;
break;
}
}
}
$params = new stdClass();
$params->meta_description = $data['meta_description'];
$params->meta_keywords = $data['meta_keywords'];
$params->robots = $data['robots'];
$params->feature_image = $data['feature_image'];
$data['params'] = json_encode($params);
if (parent::save($data)) {
$menuModel = $this->getMenuModel();
if (!empty($data['menuid'])) {
$menu = $menuModel->getItem($data['menuid']);
$menu->params['menu_image'] = $data['feature_image'];
$menu->params['menu-meta_description'] = $data['meta_description'];
$menu->params['menu-meta_keywords'] = $data['meta_keywords'];
$menu->params['robots'] = $data['robots'];
$menu->published = $data['state'];
$id = $this->getState('page.id');
$menu->link = 'index.php?option=com_jabuilder&view=page&id='.$id;
$menu->access = $data['access'];
$menu->menutype = $data['menutype'];
$menu->parent_id = $data['parent_id'];
$menu->template_style_id = $data['template_style_id'];
$menu->menuordering = $data['menuordering'];
$component = JComponentHelper::getComponent('com_jabuilder');
$menu->component_id = $component->id;
$menuModel->save((array)$menu);
} else {
$this->addNewMenu($data);
}
return true;
}
return false;
}
protected function createSlug () {
$slug = null;
while (!$slug) {
$slug = substr(md5(uniqid(rand(10000,99999), true)), 0, 13);
if ($this->slugExisted ($slug)) $slug = null;
}
return $slug;
}
protected function slugExisted ($slug) {
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select ('id')
->from($db->quoteName('#__jabuilder_pages'))
->where($db->quoteName('slug').'='.$db->quote($slug));
$db->setQuery($query);
return $db->loadResult();
}
protected function num_duplicated_alias($id, $alias)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select( $db->quoteName('alias') )
->from( $db->quoteName('#__jabuilder_pages') )
->where( $db->quoteName('alias').'='.$db->quote($alias) )
->where( $db->quoteName('id').'!='.$id );
$db->setQuery($query);
$db->execute();
return $db->getNumRows();
}
public function getMenuModel() {
$model = JModelAdmin::getInstance('Item', 'MenusModel');
return $model;
}
public function getParentMenuLevel($parent_id) {
$parent = $this->getMenuModel()->getItem($parent_id);
return $parent->level;
}
function getMenuByPage($id=null) {
$q = "SELECT * FROM #__menu ";
$q .= "WHERE link = 'index.php?option=com_jabuilder&view=page&id=$id' and published != -2 order by id desc";
$db = JFactory::getDbo()->setQuery($q);
$menu = $db->loadObject();
return $menu;
}
public function addNewMenu($data) {
$table = JTable::getInstance('Menu', 'MenusTable');
$table->title = $data['title'];
$table->alias = $data['alias'];
$table->published = $data['state'];
$table->access = $data['access'];
$table->menutype = $data['menutype'];
$table->parent_id = $data['parent_id'];
$id = $this->getState('page.id');
$table->link = 'index.php?option=com_jabuilder&view=page&id='.$id;
$table->type = 'component';
$component = JComponentHelper::getComponent('com_jabuilder');
$table->component_id = $component->id;
$table->browserNav = 0;
$table->template_style_id = $data['template_style_id'];
$table->language = '*';
$table->level = $this->getParentMenuLevel($table->parent_id) + 1;
$params = new stdClass();
$params->{'menu-meta_description'} = $data['meta_description'];
$params->{'menu-meta_keywords'} = $data['meta_keywords'];
$params->robots = $data['robots'];
$table->params = json_encode($params);
$table->setLocation($data['parent_id'], 'last-child');
if($table->store()){
return $table;
}
$error = $table->getError();
JFactory::getApplication()->enqueueMessage($error, 'error');
return false;
}
public function publish(&$pks, $value = 1) {
$db = JFactory::getDbo();
foreach($pks as $id) {
$q = 'UPDATE `#__jabuilder_pages` SET state =' . (int) $value . ' WHERE id='. (int) $id;
$db->setQuery($q);
$db->execute();
}
}
}