UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: anatolii.st от 26 Апреля 2013, 10:54:46

Название: Удалить все заказы
Отправлено: anatolii.st от 26 Апреля 2013, 10:54:46
Всем привет) Несколько лет назад на UMI был сделан интернет магазин и сейчас клиент решил его переименовать и запустить по новой. Но не как не удается удалить все заказы из админки, а их там за 8 000, т.е. есть возможность удалять только по одному и после каждого заказа приходится обновлять всю страницу. Если кто уже сталкивался с этим помогите с sql запросом или скриптом через API, который безопасно удалит все заказы и пользователей.

буду признателен за ответ))
Название: Re:Удалить все заказы
Отправлено: admin от 28 Апреля 2013, 13:03:21
в таких случаях обычно я пишу макрос который удаляет сразу все объекты определенного типа, но иногда не хватает времени на выполнение макроса, тогда я передаю параметр по сколько удалять... и запускаю его несколько раз...

пример подобного кода:
public function del_do() {

            $per_page=1000; // количество объектов которые обрабатываем за раз

             
               $sel = new selector('objects');
               $sel->types('object-type')->name('emarket', 'order');
               
               $sel->limit(0, $per_page);
             
               $total=$sel->length;
               $hierarchy = umiHierarchy::getInstance();
               if($total > 0){
                    foreach($sel as $order) {
                         //... удаляеv заказ $order
                    }
                    exit((string)$total);
               }else exit('end');
             
          }

код пишем например в файл /classes/modules/custom.php

и вызываем в адресной строке /udata/custom/del_do

P.S. не забываем про права на функцию (я обычно делаю это авторизованным под admin, чтобы не прописывать права на эту функцию)

P.P.S. и не забывайте о предосторожностях (например сделать бекап базы), а то вдруг в скрипте что-то не так или ваша задача немного другая (удалить не все заказы , а какую-то часть), а вы все поудаляете  ;)
Название: Re:Удалить все заказы
Отправлено: anatolii.st от 17 Мая 2013, 10:25:07
т.е. на место
//... удаляеv заказ $order

нужно будет дописать  ?
 $hierarchy->delObject($order);

именно так не пашет пишет
Fatal error: Call to undefined method umiHierarchy::delObject() in /home/soundfil/public_html/classes/modules/custom.php on line 2122

версия UMI 2.8.4
Название: Re:Удалить все заказы
Отправлено: admin от 17 Мая 2013, 12:59:13
 $hierarchy->delObject

удаляет страницы что видно из название класса $hierarchy = umiHierarchy::getInstance();

а у вас заказы, они объекты и удалять их надо при помощи класса  umiObjectsCollection::getInstance(); посмотрите документацию с примерами работы с объектами.... http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/primery_ispolzovaniya_vozmozhnostej_api/obekty/