Перейти к содержимому


Фотография
- - - - -

При импорте CSV не удалять объекты других пользователей

импорт

Лучший Ответ al2401 , 12 August 2016 - 16:07

->where('created_by <> ?', JFactory::getUser()->id)

В этой строке нужно поставить created_by = ? чтобы удалялись объекты только текущего пользователя

 

 

 

  if ($item->created_by != JFactory::getUser()->id) { return null; }
если добавляю эту строку то новые записи не добавляются, убрал, импорт работает, и записи других пользователей не удаляются, что и требовалось, спасибо
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 5

#1 al2401

al2401

Отправлено 20 June 2016 - 17:34

Добрый день, пользователи через подачу материала добавляют свои материалы, также через импорт JBZOO загружаются материалы из CSV.

 

В файле импорта только активные материалы для публикации, поэтому включаем опцию удалять записи которых нет в CSV, при этом удаляются записи добавленные другими пользователями через подачу материалов.

 

Подскажите как сделать, чтобы при импорте обрабатывались записи только одного пользователя, например загружаем файл от админа и при следующей загрузке обрабатываются только эти записи, т.е. удаляются и изменяются записи только добавленные админом.

 

Как пожелание добавить опцию:

импорт с зависимостью от пользователя, в CSV добавляем колонку "логин" и при импорте записи обрабатываются для каждого пользователя.


  • 0

#2 Vseprosto

Vseprosto

Отправлено 20 June 2016 - 19:41

Данной возможности у импорта нет насколько знаю, а вам как вариант при импорте не удалять а деактивировать, а после провести сортировку по выключенным и массово их удалять


  • 0

#3 al2401

al2401

Отправлено 21 June 2016 - 08:39

Деактивировать не вариант, т.к. будут деактивированы также записи других пользователей, у которых уже могут быть не активные записи, поэтому не понятно какие потом включать, кроме того записей более тысячи, а выгрузка через CSV ежедневная, это будет достаточно трудоемко.

 

Может есть решение через изменение кода, добавить в нужное место And user = "admin"


Сообщение отредактировал al2401: 22 June 2016 - 07:27

  • 0

#4 SmetDenis

SmetDenis

Отправлено 28 June 2016 - 09:21

Нужно будет изменить два места в коде.

 

Здесь материал выбирается из базы для последующих изменений.

Если автор не совпадает с текущим пользователем, то делаем виде что материал не был найден по ключу

p53x_200x0.png

 

        if ($item->created_by != JFactory::getUser()->id) {
            return null;
        }

 

 

В конце импорта будет шаг для чистки базы данных. Он коснется только найденных материалов, т.к. список их ID сохраняется в сессию.

По идее сработает автоматически, но  для перестраховки можно добавить условие проверки пользователя в запрос на удаление

 

->where('created_by <> ?', JFactory::getUser()->id)

 

f2gr_200x0.png


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#5 al2401

al2401

Отправлено 28 June 2016 - 10:25

Денис спасибо большое, то что нужно.


  • 0

#6 al2401

al2401

Отправлено 12 August 2016 - 16:07   Лучший Ответ

->where('created_by <> ?', JFactory::getUser()->id)

В этой строке нужно поставить created_by = ? чтобы удалялись объекты только текущего пользователя

 

 

 

  if ($item->created_by != JFactory::getUser()->id) { return null; }
если добавляю эту строку то новые записи не добавляются, убрал, импорт работает, и записи других пользователей не удаляются, что и требовалось, спасибо

Сообщение отредактировал al2401: 12 August 2016 - 16:18

  • 2





Темы с аналогичным тегами импорт

Click to return to top of page in style!