Exemple #1
0
 /**
  * Transforms tracking set for Drizzle, which has no SET type
  *
  * Converts int<>string for Drizzle, does nothing for MySQL
  *
  * @param int|string $tracking_set Set to convert
  *
  * @return int|string
  */
 private static function _transformTrackingSet($tracking_set)
 {
     if (!PMA_DRIZZLE) {
         return $tracking_set;
     }
     // init conversion array (key 3 doesn't exist in calculated array)
     if (isset(self::$_tracking_set_flags[3])) {
         // initialize flags
         $set = self::$_tracking_set_flags;
         $array = array();
         for ($i = 0, $nb = count($set); $i < $nb; $i++) {
             $flag = 1 << $i;
             $array[$flag] = $set[$i];
             $array[$set[$i]] = $flag;
         }
         self::$_tracking_set_flags = $array;
     }
     if (is_numeric($tracking_set)) {
         // int > string conversion
         $aflags = array();
         // count/2 - conversion table has both int > string
         // and string > int values
         for ($i = 0, $nb = count(self::$_tracking_set_flags) / 2; $i < $nb; $i++) {
             $flag = 1 << $i;
             if ($tracking_set & $flag) {
                 $aflags[] = self::$_tracking_set_flags[$flag];
             }
         }
         $flags = implode(',', $aflags);
     } else {
         // string > int conversion
         $flags = 0;
         foreach (explode(',', $tracking_set) as $strflag) {
             if ($strflag == '') {
                 continue;
             }
             $flags |= self::$_tracking_set_flags[$strflag];
         }
     }
     return $flags;
 }