{source}
<?php
defined('_JEXEC') or die;
$user = &JFactory::getUser();
$acl = &JFactory::getACL();
// Установить id нужной группы
$required_group_id = 9;
if (!$user->guest) {
// если пользователь не гость, то получаем группу пользователя
$groups = $user->groups;
// Проверяем, что пользователь принадлежит к необходимой группе
if (in_array($required_group_id, $groups)) {
// Префикс названия таблиц
$db_pre = '#__';
// Грузим данные о категориях
$db = &JFactory::getDBO();
$q = 'SELECT category_id, category_parent_id, `name_ru-RU` FROM '.$db_pre.'jshopping_categories ORDER BY ordering';
$db->setQuery($q);
// Выполняем SQL-запрос и получаем данные
$categories_data = $db->loadAssocList();
// Сортировка по подкатегориям
function recursive_options($temp_options, $level, $parent, &$categories) {
$class_done = false;
foreach($temp_options as $option) {

if ($option[2] == $parent) {


$level_string = '';






// Родительским элементам присваиваем класс css


if (!$class_done) {



for ($i = 0; $i < $level - 1; $i++) {




$level_string .= ' ';



}



$temp = array_pop($categories);



$categories[] = JHTML::_('select.option', $temp->id, $level_string . $temp->title, array('option.key' => 'id', 'option.text' => 'title', 'option.attr' => 'class', 'attr' => 'parent_option', 'disable' => true)); 



$class_done = true;


}


for ($i = 0; $i < $level; $i++) {



$level_string .= ' ';


}


$categories[] = JHTML::_('select.option', $option[0], $level_string . $option[1], 'id', 'title');


recursive_options($temp_options, $level+1, $option[0], $categories, $is_parent);

}
}
} 
$results = $categories_data;
$categories = array();
if (count($results)) {
$temp_options = array();
foreach($results as $item) { // Формируем нужный вид массива

array_push($temp_options, array($item["category_id"], $item["name_ru-RU"], $item["category_parent_id"])); 
}
foreach($temp_options as $option) {

if ($option[2] == 0) { 


$categories[] = JHTML::_('select.option', $option[0], $option[1], 'id', 'title');


recursive_options($temp_options, 1, $option[0], $categories);

}
}
}
// Массив отсортированных объектов сохраняем в сессию
$session = JFactory::getSession();
$session->set('categories', $categories);
?>
<div id="main">
<div class="form_area">

<h2>Форма выгрузки</h2>

<form action="/?tmpl=user_export_action" method="post">


<div class="radio_area">



<label style="display: block;"><input type="radio" name="cat_radio" id="cat_radio_all" value="all" checked>Выгружать все категории</label>



<label style="display: block;"><input type="radio" name="cat_radio" id="cat_radio_check" value="check">Выбрать категории для выгрузки (можно выбрать одну или несколько категорий, удерживая Ctrl)</label>


</div>


<div class="select_area">



<?php echo JHTML::_('select.genericlist', $categories, 'list-categories[]', 'class="cat_select" multiple="multiple" size="20" disabled', 'id', 'title'); ?>


</div>


<div class="extra_area">



<h3>




По умолчанию выгружается:



</h3>



<ul>




<li>название товара</li>




<li>категория товара</li>




<li>краткое описание</li>



</ul>



<h3>




Выгружать дополнительно:



</h3>



<label style="display: block;"><input type="checkbox" name="e1">Код товара (артикул)</label>



<label style="display: block;"><input type="checkbox" name="e2">Полное описание</label>



<label style="display: block;"><input type="checkbox" name="e3">Характеристики (параметр заметно увеличивает время выгрузки!)</label>



<label style="display: block;"><input type="checkbox" name="e4">Тех. доки (имена файлов)</label>



<label style="display: block;"><input type="checkbox" name="e5">Цена</label>



<h3>




Формат файла:



</h3>



<label><input type="radio" name="file_radio" value="csv" checked>.csv</label>



<label><input type="radio" name="file_radio" value="xml">.xml</label>



<div class="button_area">




<input type="submit" value="Выгрузка">



</div>


</div>

</form>
</div>
</div>
<script>
var update_select = function () {

if (jQuery("#cat_radio_check").is(":checked")) {


jQuery('.cat_select').prop('disabled', false);

}

else {


jQuery('.cat_select').prop('disabled', 'disabled');

}
};
jQuery(update_select);
jQuery("#cat_radio_all").change(update_select);
jQuery("#cat_radio_check").change(update_select);
</script>
<?php
} else {
// Вывод для user'ов не входящих в группу
echo('<h2>Функция не доступна для данной категории пользователя!</h2>');
}
} else {
// Вывод для неавторизированных на сайте
echo('<h2>Авторизируйтесь на сайте для доступа к форме!</h2>');
}
?>
{/source}
















