/**
  * Moves position of a category in list, with given offset
  * 
  * @access public
  * @param CMS_moduleCategory $siblingCategory 
  * @param integer $moveOffset values 1 or -1 expected
  * @return boolean true on succes, false on failure
  */
 static function moveCategoryOrder(&$siblingCategory, $moveOffset)
 {
     // Checks : pages must be CMS_moduleCategory and offset in (1, -1)
     if (!$siblingCategory instanceof CMS_moduleCategory) {
         CMS_grandFather::raiseError("Category to move not valid.");
         return false;
     }
     if (!SensitiveIO::isInSet($moveOffset, array(1, -1))) {
         CMS_grandFather::raiseError("Offset must be 1 or -1");
         return false;
     }
     // Find the siblings to switch order
     $parent = $siblingCategory->getParent();
     // Use this function to compact of siblings order
     if (!$parent instanceof CMS_moduleCategory || !CMS_moduleCategories_catalog::compactSiblingsOrder($parent->getID())) {
         CMS_grandFather::raiseError("Reordering siblings failed for category " . $parent->getID());
         return false;
     }
     $siblings = $parent->getSiblings();
     $sibling_to_move_left = false;
     $sibling_to_move_right = false;
     $lastSibling = false;
     foreach ($siblings as $aSibling) {
         if ($moveOffset == 1 && $lastSibling && $lastSibling->getID() == $siblingCategory->getID()) {
             $sibling_to_move_left = $aSibling;
             $sibling_to_move_right = $siblingCategory;
             break;
         }
         if ($moveOffset == -1 && $lastSibling && $aSibling->getID() == $siblingCategory->getID()) {
             $sibling_to_move_left = $siblingCategory;
             $sibling_to_move_right = $lastSibling;
             break;
         }
         $lastSibling = $aSibling;
     }
     if ($sibling_to_move_left && $sibling_to_move_right) {
         //move the siblings order
         $sql = "\n\t\t\t\tupdate\n\t\t\t\t\tmodulesCategories\n\t\t\t\tset\n\t\t\t\t\torder_mca=order_mca - 1\n\t\t\t\twhere\n\t\t\t\t\tid_mca='" . $sibling_to_move_left->getID() . "'\n\t\t\t";
         $q = new CMS_query($sql);
         $sql = "\n\t\t\t\tupdate\n\t\t\t\t\tmodulesCategories\n\t\t\t\tset\n\t\t\t\t\torder_mca=order_mca + 1\n\t\t\t\twhere\n\t\t\t\t\tid_mca='" . $sibling_to_move_right->getID() . "'\n\t\t\t";
         $q = new CMS_query($sql);
         //Clear polymod cache
         //CMS_cache::clearTypeCacheByMetas('polymod', array('module' => $sibling_to_move_right->getAttribute('moduleCodename')));
         CMS_cache::clearTypeCache('polymod');
         return true;
     } else {
         CMS_grandFather::raiseError("Move impossible (first or last sibling to move, or parent and sibling not related");
         return false;
     }
 }