Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 548 Ответов
  • 22938 Просмотров
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #420 : 10.11.2015, 16:02:57 »
b2z, она сама это однозначно не сделает =)
Чуток поможем ;)

Код: php
// Выбираем ID
SELECT content_id
FROM #__chmos_compilations_articles
WHERE compilation_id = (int) $id

$contentIds = $db->loadColumn();

// Удаляем сборник
$table->delete($id);

// Подключаем модель
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/models', 'ContentModel');
$model = JModelLegacy::getInstance('Article', 'ContentModel', array('ignore_request' => true));

// Удаляем материалы
$model->delete($contentIds);

Ну а долелать запрос на выборку ID оставим в качестве домашнего задания  ^-^
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #421 : 10.11.2015, 19:22:11 »
b2z, спасибо за "чуток"! =)
----------------------------------

Мы так понимаем, нам нужно после
$model->delete($contentIds);

написать вот это:

SELECT id
FROM #__content
WHERE id = (int) $contentIds

$content = $db->loadColumn();
$content->delete;

-------------
Похоже на правду?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #422 : 10.11.2015, 19:47:00 »
Похоже на правду?
Нет, перед тем, как $contentIds использовать, ее  нужно получить.
Порядок не меняйте, только запрос нужно правильно составить.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #423 : 10.11.2015, 20:15:37 »
robert, подскажите, пожалуйста, что мы не так понимаем в запросе, который составил нам автор b2z?
----------------

SELECT content_id 
FROM #__chmos_compilations_articles
WHERE compilation_id = (int) $id
Это мы выбрали данные поля "content_id" из таблицы #__chmos_compilations_articles, которые соответствуют значению "compilation_id" равному id удаляемого сборника
-------------------------
$contentIds = $db->loadColumn(); - здесь данные, которые мы вызвали функцией SELECT, мы помещаем в переменную $contentIds и сохраняем результаты в специальный листок
------------------------
$table->delete($id); - удаляем сборник
------------------------
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/models', 'ContentModel');
$model = JModelLegacy::getInstance('Article', 'ContentModel', array('ignore_request' => true));
Здесь мы подключаем какую-то модель. И в переменную заключаем данные из этой модели. Что это такое, мы не поняли
------------------------
$model->delete($contentIds); - здесь мы удаляем данные из модели, которые соответствуют переменной $contentIds
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #424 : 10.11.2015, 21:30:45 »
Все правильно поняли. Кроме:
Цитировать
$model->delete($contentIds); - здесь мы удаляем данные из модели, которые соответствуют переменной $contentIds

Вы удаляете не из модели, а из базы данных. $contentIds - это массив с ID материалов.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Создание папок из фронтенда
« Ответ #425 : 10.11.2015, 21:39:15 »
в целом, логика правильная
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #426 : 10.11.2015, 23:09:36 »
Логика правильная - это радует. =)

Цитировать
...перед тем, как $contentIds использовать, ее  нужно получить.

В этой строке $model->delete($contentIds); мы удаляем данные из базы, которые соответствуют переменной $contentIds

Вы говорите, что "перед тем, как $contentIds использовать, ее  нужно получить" (автор AlekVolsk).

Что-то мы запутались...

$db->setQuery($query);
$result = $db->loadObject();

Это как-то так делается?
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Создание папок из фронтенда
« Ответ #427 : 10.11.2015, 23:17:51 »
Вы говорите, что "перед тем, как $contentIds использовать, ее  нужно получить" (автор AlekVolsk).
Это писал не я, а robert
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #428 : 10.11.2015, 23:29:35 »
Код: php-brief
// Выбираем ID
$db=JFactory::getDbo();
$query='SELECT content_id
FROM #__chmos_compilations_articles
WHERE compilation_id='.(int)$id;
$db->setQuery($query);
$contentIds=$db->loadColumn();

// Удаляем сборник
$table->delete($id);
 
// Подключаем модель
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_content/models','ContentModel');
$model=JModelLegacy::getInstance('Article','ContentModel',array('ignore_request'=>true));
 
// Удаляем материалы
$model->delete($contentIds);
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #429 : 11.11.2015, 00:25:59 »
AlekVolsk, извините, пожалуйста. Перепутали.
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #430 : 11.11.2015, 00:29:17 »
robert, мы вставили код в models/compilation.php в функцию public function delete($id).
Проверили. Сборник удаляется. Но материал, который в нём - нет (модуль списка произведений пользователя выводит материал).
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #431 : 11.11.2015, 00:33:10 »
Сделайте
Код: php-brief
print_r($contentIds);
и посмотрите, что выводится.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #432 : 11.11.2015, 00:34:34 »
... А мы ещё подумали, почему автор b2z написал функцию SELECT без обращения к базе данных? ...Подумали, что так надо. А, оказывается, это и был один из моментов, который нам нужно было доработать.
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #433 : 11.11.2015, 00:41:39 »
robert, ничего не выводится....
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #434 : 11.11.2015, 00:50:19 »
robert, ничего не выводится....
Хм, а как $id объявляется? Сделайте
Код: php-brief
echo $id;
А вообще, приведите весь код.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #435 : 11.11.2015, 00:57:14 »
Вот код models/compilation.php:
Спойлер
[свернуть]
« Последнее редактирование: 11.11.2015, 01:01:24 от mila_serdnaya »
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #436 : 11.11.2015, 01:02:48 »
protected function canDelete($record) в коде выше лишняя.
---------
Вот код models/compilation.php, который у нас сейчас:
Спойлер
[свернуть]
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #437 : 11.11.2015, 01:06:34 »
Ни print_r($contentIds);, ни echo $id;, которые мы записали в файл вида default.php, никакие данные не выводят.


   
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #438 : 11.11.2015, 01:09:33 »
Вот файл default.php, который у нас сейчас есть:
Цитировать
Код
<?php
/**
 * @version     1.0.0
 * @package     com_chmos
 * @copyright   © 2015. Все права защищены.
 * @license     GNU General Public License версии 2 или более поздней; Смотрите LICENSE.txt
 * @author      Дмитрий Рекун <b2z@joomlablog.ru> - http://norrnext.com
 */
// no direct access
defined('_JEXEC') or die; // выражение осуществляет проверку, был ли файл, в котором оно записано, вызван из Joomla. Таким путем запрещается доступ к файлу извне, чтобы предотвратить взлом сайта.

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('bootstrap.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('formbehavior.chosen', 'select');

$user       = JFactory::getUser();
$userId     = $user->get('id');
$listOrder  = $this->state->get('list.ordering');
$listDirn   = $this->state->get('list.direction');
$saveOrder    = $listOrder == 'ordering';
$canCreate  = $user->authorise('core.create', 'com_chmos');
$canEdit    = $user->authorise('core.edit', 'com_chmos');
$canCheckin = $user->authorise('core.manage', 'com_chmos');
$canChange  = $user->authorise('core.edit.state', 'com_chmos');
$canDelete  = $user->authorise('core.delete', 'com_chmos');

print_r($contentIds);
echo $id;

 
?>
 


   
<form action="<?php echo JRoute::_('index.php?option=com_chmos&view=compilations'); ?>" method="post" name="adminForm" id="adminForm">

<table class="table table-bordered" id="compilationList">

<thead>
<tr>
<?php if (isset($this->items[0]->id)): ?>
<th>
<?php echo JText::_('COM_CHMOS_TITLE'); ?>
</th>
<?php endif; ?>
</tr>
</thead>







<tbody>
<?php foreach ($this->items as $i => $item) : ?>
<?php $canEdit = $user->authorise('core.edit', 'com_chmos'); ?>
<?php if (!$canEdit && $user->authorise('core.edit.own', 'com_chmos')): ?>
<?php $canEdit = JFactory::getUser()->id == $item->created_by; ?>
<?php endif; ?>
<tr>
<?php if (isset($this->items[0]->state)): ?>
<?php $class = ($canEdit || $canChange)? 'active' : 'disabled'; ?>
<td>
<a class="btn btn-micro <?php echo $class; ?>" href="<?php echo ($canEdit || $canChange)? JRoute::_('index.php?option=&task=compilation.publish&id=' . $item->id . '&state=' . (($item->state + 1) % 2), false, 2) : '#'; ?>">
<?php if ($item->state == 1): ?>
<i class="icon-publish"></i>
<?php else: ?>
<i class="icon-unpublish"></i>
<?php endif; ?>
</a>
</td>
<?php endif; ?>
<?php if (isset($this->items[0]->id)): ?>
<td>
<?php echo $this->escape($item->title); ?>
<?php endif; ?>
<?php if ($canEdit || $canDelete): ?>
<?php if ($canEdit): ?>
<a href="<?php echo JRoute::_('index.php?option=com_chmos&task=compilationform.edit&id=' . $item->id, false, 2); ?>" class="btn btn-mini" type="button"><i class="icon-edit" ></i></a>
<?php endif; ?>
<?php if ($canDelete): ?>
<button data-item-id="<?php echo $item->id; ?>" class="btn btn-mini delete-button" type="button"><i class="icon-trash" ></i></button>
<?php endif; ?>
</td>
<?php endif; ?>
</tr>

<tr>
<td>
<?php
foreach($item->articles as $article){
echo '<li><a href="'.JRoute::_('index.php?option=com_content&view=article&id='.$article->id).'">'.$article->title.'</a></li>';
};
?>
</td>
</tr>
<?php endforeach; ?>

</tbody>
</table>


<?php if ($canCreate): ?>
<a href="<?php echo JRoute::_('index.php?option=com_chmos&task=compilationform.edit&id=0', false, 2); ?>"
class="btn btn-success btn-small"><i class="icon-plus"></i> <?php echo JText::_('COM_CHMOS_ADD_ITEM'); ?></a>
<?php endif; ?>


<?php echo $this->pagination->getListFooter(); ?>


<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="filter_order" value="<?php echo $this->escape($this->state->get('list.ordering')); ?>" />
<input type="hidden" name="filter_order_Dir" value="<?php echo $this->escape($this->state->get('list.direction')); ?>" />

<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" />
<?php echo JHtml::_('form.token'); ?>
</form>

<script type="text/javascript">
jQuery(document).ready(function () {
jQuery('.delete-button').click(deleteItem);
});

function deleteItem() {
var item_id = jQuery(this).attr('data-item-id');
if (confirm("<?php echo JText::_('COM_CHMOS_DELETE_MESSAGE'); ?>")) {
window.location.href = '<?php echo JRoute::_('index.php?option=com_chmos&task=compilationform.remove&id=', false, 2)?>' + item_id;
}
}
</script>
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #439 : 11.11.2015, 01:23:07 »
Ни print_r($contentIds);, ни echo $id;, которые мы записали в файл вида default.php, никакие данные не выводят.   
Вот файл default.php, который у нас сейчас есть:
Ну да, там ни того, ни другого нет.
Странно, вроде все нормально, кроме необъявленной $table, которая как раз сработала. Замените функцию delete():
Спойлер
[свернуть]
и проверьте, та ли таблица chmos_compilations_articles и те ли поля content_id и compilation_id в ней - я не читал вашу тему с начала.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #440 : 11.11.2015, 01:38:27 »
robert, да, таблицы правильные.
Функцию delete() заменили.
Всё равно print_r($contentIds); и echo $id; ничего не показывают.
Коме того, мы создали сборник, поместили в него материал, затем удалили созданный сборник - а материал не удалился. Модуль, выводящий список произведений автора всё равно его показывает.
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #441 : 11.11.2015, 01:46:38 »
robert, мы пока что спать ещё не ложимся, поэтому Вы на нас не смотрите, пожалуйста.
Но если Вы никуда не торопитесь и хотите/можете уделить нам ещё какое-то время - мы только за. =)
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #442 : 11.11.2015, 02:11:28 »
Хм, вы не ту модель вызываете, что ли? А ну, удалите функцию delete($id) из models/compilation.php и попробуйте удалить какой-нибудь сборник.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #443 : 11.11.2015, 04:30:07 »
robert, сделали. Сборник удалили благополучно. Получается, что нам нужно в другую модель эту функцию засовывать?
У нас в папке models 3 php-файла:
compilationform.php
Цитировать
Код
<?php
/**
 * @version     1.0.0
 * @package     com_chmos
 * @copyright   © 2015. Все права защищены.
 * @license     GNU General Public License версии 2 или более поздней; Смотрите LICENSE.txt
 * @author      Дмитрий Рекун <b2z@joomlablog.ru> - http://norrnext.com
 */

// No direct access.
defined('_JEXEC') or die;

/**
 * Chmos model.
 */
class ChmosModelCompilationForm extends JModelForm
{

var $_item = null;

/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @since    1.6
*/
protected function populateState()
{
$app = JFactory::getApplication('com_chmos');

// Load state from the request userState on edit or from the passed variable on default
if (JFactory::getApplication()->input->get('layout') == 'edit')
{
$id = JFactory::getApplication()->getUserState('com_chmos.edit.compilation.id');
}
else
{
$id = JFactory::getApplication()->input->get('id');
JFactory::getApplication()->setUserState('com_chmos.edit.compilation.id', $id);
}
$this->setState('compilation.id', $id);

// Load the parameters.
$params       = $app->getParams();
$params_array = $params->toArray();
if (isset($params_array['item_id']))
{
$this->setState('compilation.id', $params_array['item_id']);
}
$this->setState('params', $params);

}

/**
* Method to get an ojbect.
*
* @param    integer    The id of the object to get.
*
* @return    mixed    Object on success, false on failure.
*/
public function getData($id = null)
{
if ($this->_item === null)
{
$this->_item = false;

if (empty($id))
{
$id = $this->getState('compilation.id');
}

// Get a level row instance.
$table = $this->getTable();

// Attempt to load the row.
if ($table !== false && $table->load($id))
{

$user = JFactory::getUser();
$id   = $table->id;
if($id){
$canEdit = $user->authorise('core.edit', 'com_chmos.compilation.'.$id) || $user->authorise('core.create', 'com_chmos.compilation.'.$id);
}
else{
$canEdit = $user->authorise('core.edit', 'com_chmos') || $user->authorise('core.create', 'com_chmos');
}
if (!$canEdit && $user->authorise('core.edit.own', 'com_chmos.compilation.'.$id))
{
$canEdit = $user->id == $table->created_by;
}

if (!$canEdit)
{
throw new Exception(JText::_('JERROR_ALERTNOAUTHOR'), 500);
}

// Check published state.
if ($published = $this->getState('filter.published'))
{
if ($table->state != $published)
{
return $this->_item;
}
}

// Convert the JTable to a clean JObject.
$properties  = $table->getProperties(1);
$this->_item = JArrayHelper::toObject($properties, 'JObject');
}
}

return $this->_item;
}

public function getTable($type = 'Compilation', $prefix = 'ChmosTable', $config = array())
{
$this->addTablePath(JPATH_ADMINISTRATOR . '/components/com_chmos/tables');

return JTable::getInstance($type, $prefix, $config);
}

/**
* Method to check in an item.
*
* @param    integer        The id of the row to check out.
*
* @return    boolean        True on success, false on failure.
* @since    1.6
*/
public function checkin($id = null)
{
// Get the id.
$id = (!empty($id))? $id : (int) $this->getState('compilation.id');

if ($id)
{

// Initialise the table
$table = $this->getTable();

// Attempt to check the row in.
if (method_exists($table, 'checkin'))
{
if (!$table->checkin($id))
{
return false;
}
}
}

return true;
}

/**
* Method to check out an item for editing.
*
* @param    integer        The id of the row to check out.
*
* @return    boolean        True on success, false on failure.
* @since    1.6
*/
public function checkout($id = null)
{
// Get the user id.
$id = (!empty($id))? $id : (int) $this->getState('compilation.id');

if ($id)
{

// Initialise the table
$table = $this->getTable();

// Get the current user object.
$user = JFactory::getUser();

// Attempt to check the row out.
if (method_exists($table, 'checkout'))
{
if (!$table->checkout($user->get('id'), $id))
{
return false;
}
}
}

return true;
}

/**
* Method to get the profile form.
*
* The base form is loaded from XML
*
* @param    array   $data     An optional array of data for the form to interogate.
* @param    boolean $loadData True if the form is to load its own data (default case), false if not.
*
* @return    JForm    A JForm object on success, false on failure
* @since    1.6
*/
public function getForm($data = array(), $loadData = true)
{
// Get the form.
$form = $this->loadForm('com_chmos.compilation', 'compilationform', array(
'control'   => 'jform',
'load_data' => $loadData
));
if (empty($form))
{
return false;
}

return $form;
}

/**
* Method to get the data that should be injected in the form.
*
* @return    mixed    The data for the form.
* @since    1.6
*/
protected function loadFormData()
{
$data = JFactory::getApplication()->getUserState('com_chmos.edit.compilation.data', array());
if (empty($data))
{
$data = $this->getData();
}


return $data;
}

/**
* Method to save the form data.
*
* @param    array        The form data.
*
* @return    mixed        The user id on success, false on failure.
* @since    1.6
*/
public function save($data)
{
$id    = (!empty($data['id']))? $data['id'] : (int) $this->getState('compilation.id');
$state = (!empty($data['state']))? 1 : 0;
$user  = JFactory::getUser();

if ($id)
{
//Check the user can edit this item
$authorised = $user->authorise('core.edit', 'com_chmos.compilation.'.$id) || $authorised = $user->authorise('core.edit.own', 'com_chmos.compilation.'.$id);
if ($user->authorise('core.edit.state', 'com_chmos.compilation.'.$id)!== true && $state == 1)
{ //The user cannot edit the state of the item.
$data['state'] = 0;
}
}
else
{
//Check the user can create new items in this section
$authorised = $user->authorise('core.create', 'com_chmos');
if ($user->authorise('core.edit.state', 'com_chmos.compilation.'.$id)!== true && $state == 1)
{ //The user cannot edit the state of the item.
$data['state'] = 0;
}
}

if ($authorised !== true)
{
throw new Exception(JText::_('JERROR_ALERTNOAUTHOR'), 403);
}

$table = $this->getTable();
if ($table->save($data) === true)
{
return $table->id;
}
else
{
return false;
}

}

public function delete($data)
{
$id = (!empty($data['id']))? $data['id'] : (int) $this->getState('compilation.id');
if (JFactory::getUser()->authorise('core.delete', 'com_chmos.compilation.'.$id)!== true)
{
throw new Exception(403, JText::_('JERROR_ALERTNOAUTHOR'));
}
$table = $this->getTable();
if ($table->delete($data['id']) === true)
{
return $id;
}
else
{
return false;
}
}

public function getCanSave()
{
$table = $this->getTable();

return $table !== false;
}
}

 compilations.php:
Спойлер
[свернуть]

 и compilation.php (функцию delete убрали)
Спойлер
[свернуть]

Мы эту функцию писали для compilation.php.
Но сборники удаляются после того, как мы из compilation.php эту функцию удаления убрали. Может быть, отгадка кроется в функции delete файла compilationform.php?
« Последнее редактирование: 11.11.2015, 04:33:39 от mila_serdnaya »
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #444 : 11.11.2015, 04:43:50 »
Ага. Кажется, robert, Вы были правы.
Мы только что удалили функцию delete из файла compilationform.php. Потом создали сборник, поместили в него произведение, нажали на удалить - а он не удаляется, возникает ошибка:Fatal error: Call to undefined method ChmosModelCompilationForm::delete() in Z:\home\starting\www\components\com_chmos\controllers\compilationform.php on line 209

Получается, нужно функцию delete, код которой Вы нам подправили, вставлять в файл compilationform.php?
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #445 : 11.11.2015, 04:51:48 »
Вот функция delete файла compilationform.php
Цитировать
Код
public function delete($data)
{



$id = (!empty($data['id']))? $data['id'] : (int) $this->getState('compilation.id');
if (JFactory::getUser()->authorise('core.delete', 'com_chmos.compilation.'.$id)!== true)
{
throw new Exception(403, JText::_('JERROR_ALERTNOAUTHOR'));
}
$table = $this->getTable();
if ($table->delete($data['id']) === true)
{
return $id;
}
else
{
return false;
}
}

Непонятно, функция delete нужна в файле compilation.php?
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #446 : 11.11.2015, 05:00:27 »
Мы попробовали изменить функция delete файла compilationform.php:
Цитировать
Код
public function delete($data)
{



$id = (!empty($data['id']))? $data['id'] : (int) $this->getState('compilation.id');
if (JFactory::getUser()->authorise('core.delete', 'com_chmos.compilation.'.$id)!== true)
{
throw new Exception(403, JText::_('JERROR_ALERTNOAUTHOR'));
}
$table = $this->getTable();
if ($table->delete($data['id']) === true)
{

$db=JFactory::getDbo();
$query='SELECT content_id
FROM #__chmos_compilations_articles
WHERE compilation_id='.(int)$id;
$db->setQuery($query);
$contentIds=$db->loadColumn();

JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_content/models','ContentModel');
$model=JModelLegacy::getInstance('Article','ContentModel',array('ignore_request'=>true));
 
// Удаляем материалы
$model->delete($contentIds);
return $id;




}
else
{
return false;
}
}

Сборники удаляются, а материалы - нет...
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #447 : 11.11.2015, 08:58:22 »
Да, все выглядит правильно, не знаю, почему материалы не удаляются. Я не знаю всю структуру вашего компонента, но нашел в первых постах b2z его код. Сделайте проверку:
Измените функцию delete() в модели CompilationForm
Спойлер
[свернуть]
и функцию remove() в контроллере CompilationForm
Спойлер
[свернуть]
Удалите какой-нибудь непустой сборник и посмотрите, что выводится в сообщении.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #448 : 11.11.2015, 10:14:07 »
Сначал сделайте выборку материалов из #__chmos_compilations_articles, а потом удаляйте сборник.
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #449 : 11.11.2015, 17:49:00 »
robert, сделали, в сообщении выводится: "Item deleted successfullyIDs to remove: Model exists".
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Создание релиза компонента средствами GitHub

Автор SkyAn

Ответов: 4
Просмотров: 725
Последний ответ 01.11.2019, 17:42:04
от Septdir
[Решено] Создание контент плагина

Автор IvanTopor

Ответов: 4
Просмотров: 1255
Последний ответ 26.02.2016, 13:10:37
от IvanTopor
Создание динамических полей в своем компоненте

Автор NeuroZ

Ответов: 14
Просмотров: 1464
Последний ответ 18.08.2015, 11:17:59
от b2z
Создание таблиц средствами компонента

Автор spirit1086

Ответов: 3
Просмотров: 1043
Последний ответ 18.08.2015, 10:17:09
от spirit1086
Создание изображений PHP и GD

Автор vita1971

Ответов: 6
Просмотров: 927
Последний ответ 10.05.2015, 13:10:38
от vita1971