Массовое удаление заказов из административной панели — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально для версии 2.9.5''' Если в административной панели, в модуле "Интернте-магазин", с…»)
 
Строка 4: Строка 4:
  
 
<source lang="php">
 
<source lang="php">
public function deleteAllOrders () {
+
public function deleteAllOrders () {
+
$orders = new selector('objects');
    $pages = new selector('objects');
+
$orders->types('object-type')->name('emarket', 'order');
    $pages->types('object-type')->id(50);
+
$time = 1461888000; // 29.4.2016
    $time = 1328021732;
+
$orders->where('status_change_date')->eqless($time);
    $pages->where('status_change_date')->eqless($time);
+
$umiObjects = umiObjectsCollection::getInstance();
    $ObjectsCollection = umiObjectsCollection::getInstance();
+
 
+
foreach ($orders as $order) {
    foreach($pages as $page) {
+
$id = $order->getId();
$ObjectsCollection->delObject($page->getId());
+
$umiObjects->delObject($id);
    }
+
echo "удален заказ $id<br>";
 +
}
 
}
 
}
 
</source>
 
</source>
  
Разместите данный код в файле classes/modules/custom.php  после строки //TODO: Write your own macroses here. В строке
+
Разместите данный код в файле classes/modules/custom.php  после строки //TODO: Write your own macroses here.
<source lang="php">
 
$pages->types('object-type')->id(50);
 
</source>
 
мы задаем id типа данных "Заказ", если у Вас id типа данных "Заказ" другой - тогда подставьте соответствующее значение.  
 
  
 
В переменную  
 
В переменную  

Версия 12:47, 29 июня 2016

Актуально для версии 2.9.5

Если в административной панели, в модуле "Интернте-магазин", скопилось большое количество заказов, то удалять их вручную по-одному будет довольно утомительно. Чтобы облегчить задачу, можно сделать выборку с помощью Selector, получить все заказы, у которых, к примеру, последний раз изменялся статус заказа больше года назад, и удалить эти заказы. Ниже приведен код, который это делает:

public function deleteAllOrders () {		
	$orders = new selector('objects');
	$orders->types('object-type')->name('emarket', 'order');
	$time = 1461888000; // 29.4.2016
	$orders->where('status_change_date')->eqless($time);
	$umiObjects = umiObjectsCollection::getInstance();

	foreach ($orders as $order) {
		$id = $order->getId();
		$umiObjects->delObject($id);
		echo "удален заказ $id<br>";
	}
}

Разместите данный код в файле classes/modules/custom.php после строки //TODO: Write your own macroses here.

В переменную

$time = 1328021732;

мы передаем дату, с которой будем сравнивать дату изменения статуса заказа (т.е. если дата последнего изменения статуса заказа старше чем эта - заказ будет удален). В данный момент это 31 января 2012 года, вы можете установить сюда свое значение, воспользовавшись Unixtime конвертером. Данный конвертер можно найти в свободном доступе в интернете - например, здесь http://www.cy-pr.com/tools/time/