%PDF- %PDF-
| Direktori : /home1/lightco1/www/plugins/csviaddon/menus/com_menus/model/export/ |
| Current File : //home1/lightco1/www/plugins/csviaddon/menus/com_menus/model/export/menu.php |
<?php
/**
* @package CSVI
* @subpackage JoomlaMenu
*
* @author Roland Dalmulder <contact@csvimproved.com>
* @copyright Copyright (C) 2006 - 2016 RolandD Cyber Produksi. All rights reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
* @link http://www.csvimproved.com
*/
defined('_JEXEC') or die;
require_once JPATH_ADMINISTRATOR . '/components/com_csvi/models/exports.php';
/**
* Export Joomla Menus.
*
* @package CSVI
* @subpackage JoomlaMenu
* @since 6.3.0
*/
class Com_MenusModelExportMenu extends CsviModelExports
{
/**
* List of core fields
*
* @var array
* @since 6.5.0
*/
private $corefields = array();
/**
* Export the data.
*
* @return void.
*
* @since 6.3.0
*/
protected function exportBody()
{
if (parent::exportBody())
{
// Build something fancy to only get the fieldnames the user wants
$userfields = array();
$exportfields = $this->fields->getFields();
$this->loadCoreFields();
foreach ($exportfields as $field)
{
switch ($field->field_name)
{
case 'component':
$userfields[] = $this->db->quoteName('component_id');
break;
case 'template_style':
$userfields[] = $this->db->quoteName('template_style_id');
break;
case 'menu-anchor_title':
case 'menu-anchor_css':
case 'menu_image':
case 'menu_text':
case 'page_title':
case 'show_page_heading':
case 'page_heading':
case 'pageclass_sfx':
case 'menu-meta_description':
case 'menu-meta_keywords':
case 'robots':
case 'secure':
$userfields[] = $this->db->quoteName('params');
break;
case 'custom':
break;
default:
if (in_array($field->field_name, $this->corefields))
{
$userfields[] = $this->db->quoteName($field->field_name);
}
break;
}
}
// Build the query
$userfields = array_unique($userfields);
$query = $this->db->getQuery(true);
$query->select(implode(",\n", $userfields));
$query->from($this->db->quoteName('#__menu', 'm'));
// Make sure the ID is always greater than 0 as we don't want to export the root
$query->where('parent_id > 0');
// Filter by published state
$publish_state = $this->template->get('publish_state');
if ($publish_state != '' && ($publish_state == 1 || $publish_state == 0))
{
$query->where($this->db->quoteName('m.published') . ' = ' . (int) $publish_state);
}
// Filter by menu type
$menutype = $this->template->get('menutype', 'mainmenu');
if ($menutype != '')
{
$query->where($this->db->quoteName('m.menutype') . ' = ' . $this->db->quote($menutype));
}
// Add a limit if user wants us to
$limits = $this->getExportLimit();
// Execute the query
$this->csvidb->setQuery($query, $limits['offset'], $limits['limit']);
$this->log->add('Export query' . $query->__toString(), false);
// Check if there are any records
$logcount = $this->csvidb->getNumRows();
if ($logcount > 0)
{
while ($record = $this->csvidb->getRow())
{
$this->log->incrementLinenumber();
foreach ($exportfields as $field)
{
$fieldname = $field->field_name;
// Set the field value
if (isset($record->$fieldname))
{
$fieldvalue = $record->$fieldname;
}
else
{
$fieldvalue = '';
}
// Process the field
switch ($fieldname)
{
case 'component':
$query = $this->db->getQuery(true)
->select($this->db->quoteName('name'))
->from($this->db->quoteName('#__extensions'))
->where($this->db->quoteName('extension_id') . ' = ' . (int) $record->component_id);
$this->db->setQuery($query);
$fieldvalue = $this->db->loadResult();
break;
case 'template_style':
$query = $this->db->getQuery(true)
->select($this->db->quoteName('title'))
->from($this->db->quoteName('#__template_styles'))
->where($this->db->quoteName('id') . ' = ' . (int) $record->template_style_id);
$this->db->setQuery($query);
$fieldvalue = $this->db->loadResult();
break;
case 'access':
$query = $this->db->getQuery(true)
->select($this->db->quoteName('title'))
->from($this->db->quoteName('#__usergroups'))
->where($this->db->quoteName('id') . ' = ' . (int) $record->access);
$this->db->setQuery($query);
$fieldvalue = $this->db->loadResult();
break;
default:
// Check if the field is one of the parameters
$parameters = json_decode($record->params);
if (isset($parameters->$fieldname))
{
$fieldvalue = $parameters->$fieldname;
}
switch ($fieldname)
{
case 'show_page_heading':
case 'published':
case 'menu_text':
switch ($fieldvalue)
{
case 1:
$fieldvalue = 'Y';
break;
case 0:
$fieldvalue = 'N';
break;
}
break;
case 'secure':
switch ($fieldvalue)
{
case 1:
$fieldvalue = 'Y';
break;
case -1:
$fieldvalue = 'N';
break;
}
break;
}
break;
}
// Store the field value
$this->fields->set($field->csvi_templatefield_id, $fieldvalue);
}
// Output the data
$this->addExportFields();
// Output the contents
$this->writeOutput();
}
}
else
{
$this->addExportContent('COM_CSVI_NO_DATA_FOUND');
// Output the contents
$this->writeOutput();
}
}
}
/**
* Load the core supported fields.
*
* @return void.
*
* @since 6.0
*/
public function loadCoreFields()
{
// Set the corefields, needed to be able to distinguish component fields
$this->corefields = array(
'id',
'menutype',
'title',
'alias',
'note',
'path',
'link',
'type',
'published',
'parent_id',
'level',
'component_id',
'checked_out',
'checked_out_time',
'browserNav',
'access',
'img',
'template_style_id',
'params',
'lft',
'rgt',
'home',
'language',
'client_id',
'template_style',
'menuordering',
'menu-anchor_title',
'menu-anchor_css',
'menu_image',
'menu_text',
'page_title',
'show_page_heading',
'pageclass_sfx',
'menu-meta_description',
'menu-meta_keywords',
'robots',
'secure',
'page_heading',
);
}
}