/**
  * 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(CmsCategoryPeer::DATABASE_NAME);
     }
     $con->beginTransaction();
     try {
         $ids = array_keys($order);
         $objects = CmsCategoryPeer::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 (Exception $e) {
         $con->rollback();
         throw $e;
     }
 }