Удаление заказов по выборке средствами API и работы с объектами

Материал из Umicms
Перейти к:навигация, поиск

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

Перед работой с удалением заказов необходимо сделать полный дамп базы данных.

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

В качестве примера, рассмотрим как произвести удаление всех заказов, сделанных ранее заданного года и месяца. Для этого необходимо написать следующий кастом, откроем ~\clases\components\custom.php. и поместим в него код:

public function delOrders($m = 0, $y = 0) {
	$orders = new selector('objects');
	$objectsCollection = umiObjectsCollection::getInstance();
	$orders->types('object-type')->name('emarket','order');
	foreach ($orders as $order){
		$date = $order->order_date;
		echo $order->id."<br />";
		$parsDate=explode('-', $date);
		if ($parsDate[0] < $y){
			$objectsCollection->delObject($order->id);
		}
		if ($parsDate[1] < $m){
			$objectsCollection->delObject($order->id);
		}
		if (( !$parsDate[0] && !$parsDate[1]){
			$objectsCollection->delObject($order->id);
		}
	}
	return "done";
}

где m и y это месяц и год соответственно.