$item->load($item_id_move); switch ($direction) { case "up": $item->rank--; break; case "down": $item->rank++; } $item_to_move = new CItemPrestation(); $item_to_move->object_class = $item->object_class; $item_to_move->object_id = $item->object_id; $item_to_move->rank = $item->rank; $item_to_move->loadMatchingObject(); if ($item_to_move->_id) { $direction == "up" ? $item_to_move->rank++ : $item_to_move->rank--; $item_to_move->store(); } $item->store(); $prestation = new $item->object_class(); $prestation->load($item->object_id); $items = $prestation->loadBackRefs("items", "rank"); $i = 1; foreach ($items as $item) { $item->rank = $i; $item->store(); $i++; } $item = new CItemPrestation(); $item->load($item_id); $smarty = new CSmartyDP(); $smarty->assign("item", $item);