NEW FEATURE: new sorting algorithm
authorArun Persaud <arun@nubati.net>
Wed, 3 Dec 2008 07:29:29 +0000 (23:29 -0800)
committerArun Persaud <arun@nubati.net>
Wed, 3 Dec 2008 07:29:29 +0000 (23:29 -0800)
you can now sort your hand "low to high" and change your default using the setting dialog

include/db.php
include/functions.php
include/preferences.php

index 514bde271a48f2ce976c664ba94ff25c4211adb6..de549a5bd68a438f39b28c14cc603ac74af2b066 100644 (file)
@@ -729,6 +729,14 @@ function DB_get_PREF($myid)
   else
     $PREF['autosetup']='no';
 
+  /* Sorting */
+  $r = DB_query_array("SELECT value FROM User_Prefs".
+                     " WHERE user_id='$myid' AND pref_key='sorting'" );
+  if($r)
+    $PREF['sorting'] = $r[0];
+  else
+    $PREF['sorting']='high-low';
+
   return $PREF;
 }
 
index 5c23958ea8b4315afc5e33a69b5837732deb55a9..466b4ae34f631d7c6a08414ebbbdd079aa0943b9 100644 (file)
@@ -608,21 +608,39 @@ function set_gametype($gametype)
 
 function mysort($cards,$gametype)
 {
-  usort ( $cards, "sort_comp" );
+  global $PREF;
+  if(isset($PREF['sorting']))
+    if($PREF['sorting']=='high-low')
+      usort ( $cards, 'sort_comp_high_low' );
+    else
+      usort ( $cards, 'sort_comp_low_high' );
+  else
+    usort ( $cards, 'sort_comp_high_low' );
   return $cards;
 }
 
-function sort_comp($a,$b)
+function sort_comp_high_low($a,$b)
 {
   global $CARDS;
 
   $ALL = array();
-  $ALL = array_merge($CARDS["trump"],$CARDS["diamonds"],$CARDS["clubs"],
-                    $CARDS["hearts"],$CARDS["spades"]);
+  $ALL = array_merge($CARDS['trump'],$CARDS['diamonds'],$CARDS['clubs'],
+                    $CARDS['hearts'],$CARDS['spades']);
 
   return pos_array($a,$ALL)-pos_array($b,$ALL);
 }
 
+function sort_comp_low_high($a,$b)
+{
+  global $CARDS;
+
+  $ALL = array();
+  $ALL = array_merge($CARDS['trump'],$CARDS['diamonds'],$CARDS['clubs'],
+                    $CARDS['hearts'],$CARDS['spades']);
+
+  return -pos_array($a,$ALL)+pos_array($b,$ALL);
+}
+
 function can_call($what,$hash)
 {
   global $RULES;
index 67e2eecb409e3e7d7e6b1a51f9c5a778a1f7a0de..775c4b2d6ef359de26afcce6526d08df31a5f3d2 100644 (file)
@@ -92,6 +92,24 @@ if(myisset("autosetup"))
       }
   }
 
+if(myisset("sorting"))
+  {
+    $sorting = $_REQUEST['sorting'];
+    if($sorting != $PREF['sorting'])
+      {
+       /* check if we already have an entry for the user, if so change it, if not create new one */
+       $result = DB_query("SELECT * from User_Prefs".
+                          " WHERE user_id='$myid' AND pref_key='sorting'" );
+       if( DB_fetch_array($result))
+         $result = DB_query("UPDATE User_Prefs SET value=".DB_quote_smart($sorting).
+                            " WHERE user_id='$myid' AND pref_key='sorting'" );
+       else
+         $result = DB_query("INSERT INTO User_Prefs VALUES(NULL,'$myid','sorting',".
+                            DB_quote_smart($sorting).")");
+       $changed_sorting=1;
+      }
+  }
+
 
 if(myisset("password0") &&  $_REQUEST["password0"]!="" )
   {
@@ -166,6 +184,22 @@ echo "  <select id=\"autosetup\" name=\"autosetup\" size=\"1\">\n";
   echo "  </select>\n";
 if($changed_autosetup) echo "changed";
 echo " </td></tr>\n";
+echo "    <tr><td>Sorting:          </td><td>";
+
+echo "  <select id=\"sorting\" name=\"sorting\" size=\"1\">\n";
+      if($PREF['sorting']=="high-low")
+       {
+         echo "   <option value=\"high-low\" selected=\"selected\">high to low</option>\n";
+         echo "   <option value=\"low-high\">low to high</option>\n";
+       }
+      else
+       {
+         echo "   <option value=\"high-low\">high to low</option>\n";
+         echo "   <option value=\"low-high\" selected=\"selected\">low to high</option>\n";
+       }
+  echo "  </select>\n";
+if($changed_sorting) echo "changed";
+echo " </td></tr>\n";
 echo "    <tr><td>Card set:              </td><td>";
 
 echo "  <select id=\"cards\" name=\"cards\" size=\"1\">\n";