context); try { $total = count($context["items"]); $stop = min($total - $context["position"], $context["batch"]); for ($offset = 0; $offset < $stop; $offset++) { $current_id = $context["position"] + $offset; $id = $context["items"][$current_id]; Database::instance() ->query("Update {items} set weight = {$context["position"]} where id=$id;"); } $context["position"] += $stop; $task->state = "success"; } catch(Exception $e) { $task->status = $e->getMessage(); $task->state = "error"; $task->save(); throw $e; } $task->context = serialize($context); $total = count($context["items"]); $task->percent_complete = $context["position"] / (float)$total * 100; $task->done = $context["position"] == $total || $task->state == "error"; } static function move($task) { $context = unserialize($task->context); try { $target = ORM::factory("item", $context["target"]); $total = count($context["items"]); $stop = min($total - $context["position"], $context["batch"]); for ($offset = 0; $offset < $stop; $offset++) { $current_id = $context["position"] + $offset; $source = ORM::factory("item", $context["items"][$current_id]); core::move_item($source, $target); } $context["position"] += $stop; $task->state = "success"; } catch(Exception $e) { $task->status = $e->getMessage(); $task->state = "error"; $task->save(); throw $e; } $task->context = serialize($context); $total = count($context["items"]); $task->percent_complete = $context["position"] / (float)$total * 100; $task->done = $context["position"] == $total || $task->state == "error"; } }