/** * Reorder a set of sortable objects based on a list of id/position * Beware that there is no check made on the positions passed * So incoherent positions will result in an incoherent list * * @param array $order id => rank pairs * @param PropelPDO $con optional connection * * @return boolean true if the reordering took place, false if a database problem prevented it */ public static function reorder(array $order, PropelPDO $con = null) { if ($con === null) { $con = Propel::getConnection(AbsenceEleveTypePeer::DATABASE_NAME); } $con->beginTransaction(); try { $ids = array_keys($order); $objects = AbsenceEleveTypePeer::retrieveByPKs($ids); foreach ($objects as $object) { $pk = $object->getPrimaryKey(); if ($object->getSortableRank() != $order[$pk]) { $object->setSortableRank($order[$pk]); $object->save($con); } } $con->commit(); return true; } catch (PropelException $e) { $con->rollback(); throw $e; } }