| // | Aidan Lister | // +----------------------------------------------------------------------+ // // $Id: version_compare.php,v 1.1 2005/07/11 16:34:36 ggiunta Exp $ /** * Replace version_compare() * * @category PHP * @package PHP_Compat * @link http://php.net/function.version_compare * @author Philippe Jausions * @author Aidan Lister * @version $Revision: 1.1 $ * @since PHP 4.1.0 * @require PHP 4.0.0 (user_error) */ if (!function_exists('version_compare')) { function version_compare($version1, $version2, $operator = '<') { // Check input if (!is_scalar($version1)) { user_error('version_compare() expects parameter 1 to be string, ' . gettype($version1) . ' given', E_USER_WARNING); return; } if (!is_scalar($version2)) { user_error('version_compare() expects parameter 2 to be string, ' . gettype($version2) . ' given', E_USER_WARNING); return; } if (!is_scalar($operator)) { user_error('version_compare() expects parameter 3 to be string, ' . gettype($operator) . ' given', E_USER_WARNING); return; } // Standardise versions $v1 = explode('.', str_replace('..', '.', preg_replace('/([^0-9\.]+)/', '.$1.', str_replace(array('-', '_', '+'), '.', trim($version1))))); $v2 = explode('.', str_replace('..', '.', preg_replace('/([^0-9\.]+)/', '.$1.', str_replace(array('-', '_', '+'), '.', trim($version2))))); // Replace empty entries at the start of the array while (empty($v1[0]) && array_shift($v1)) {} while (empty($v2[0]) && array_shift($v2)) {} // Release state order // '#' stands for any number $versions = array( 'dev' => 0, 'alpha' => 1, 'a' => 1, 'beta' => 2, 'b' => 2, 'RC' => 3, '#' => 4, 'p' => 5, 'pl' => 5); // Loop through each segment in the version string $compare = 0; for ($i = 0, $x = min(count($v1), count($v2)); $i < $x; $i++) { if ($v1[$i] == $v2[$i]) { continue; } $i1 = $v1[$i]; $i2 = $v2[$i]; if (is_numeric($i1) && is_numeric($i2)) { $compare = ($i1 < $i2) ? -1 : 1; break; } // We use the position of '#' in the versions list // for numbers... (so take care of # in original string) if ($i1 == '#') { $i1 = ''; } elseif (is_numeric($i1)) { $i1 = '#'; } if ($i2 == '#') { $i2 = ''; } elseif (is_numeric($i2)) { $i2 = '#'; } if (isset($versions[$i1]) && isset($versions[$i2])) { $compare = ($versions[$i1] < $versions[$i2]) ? -1 : 1; } elseif (isset($versions[$i1])) { $compare = 1; } elseif (isset($versions[$i2])) { $compare = -1; } else { $compare = 0; } break; } // If previous loop didn't find anything, compare the "extra" segments if ($compare == 0) { if (count($v2) > count($v1)) { if (isset($versions[$v2[$i]])) { $compare = ($versions[$v2[$i]] < 4) ? 1 : -1; } else { $compare = -1; } } elseif (count($v2) < count($v1)) { if (isset($versions[$v1[$i]])) { $compare = ($versions[$v1[$i]] < 4) ? -1 : 1; } else { $compare = 1; } } } // Compare the versions if (func_num_args() > 2) { switch ($operator) { case '>': case 'gt': return (bool) ($compare > 0); break; case '>=': case 'ge': return (bool) ($compare >= 0); break; case '<=': case 'le': return (bool) ($compare <= 0); break; case '==': case '=': case 'eq': return (bool) ($compare == 0); break; case '<>': case '!=': case 'ne': return (bool) ($compare != 0); break; case '': case '<': case 'lt': return (bool) ($compare < 0); break; default: return; } } return $compare; } } ?>' href='#n83'>83
name: "Green Room"
display_name: "Green Room"
panels {
  name: "TIMESCALE"
  path: "Panels/Green Room/panel_1"
  clue: "timescale"
  answer: "herbal"
  symbols: SPARKLES
  symbols: ZERO
  symbols: EXAMPLE
}
panels {
  name: "MAILBOX"
  path: "Panels/Green Room/panel_2"
  clue: "mailbox"
  answer: "black"
  symbols: EXAMPLE
}
panels {
  name: "MILKY"
  path: "Panels/Green Room/panel_3"
  clue: "milky"
  answer: "white"
  symbols: SUN
}
panels {
  name: "TAN"
  path: "Panels/Green Room/panel_4"
  clue: "tan"
  answer: "sun"
  symbols: EXAMPLE
}
panels {
  name: "BLAND"
  path: "Panels/Green Room/panel_5"
  clue: "bland"
  answer: "sweet"
  symbols: SWEET
}
panels {
  name: "WATERCOOLER"
  path: "Panels/Green Room/panel_6"
  clue: "watercooler"
  answer: "iced"
  symbols: AGE
  symbols: EVAL
}
panels {
  name: "FIXATE"
  path: "Panels/Green Room/panel_7"
  clue: "fixate"
  answer: "breakfast"
  symbols: SUN
  symbols: AGE
}
panels {
  name: "THAT"
  path: "Panels/Green Room/panel_8"
  clue: "that"
  answer: "thai"
  symbols: SPARKLES
}
panels {
  name: "RICE"
  path: "Panels/Green Room/panel_9"
  clue: "rice"
  answer: "jasmine"
  symbols: EXAMPLE
}
panels {
  name: "DOUBLE"
  path: "Panels/Green Room/panel_10"
  clue: "double"
  answer: "bubble"
  symbols: ZERO
}
panels {
  name: "BADMINTON"
  path: "Panels/Green Room/panel_11"
  clue: "badminton"
  answer: "mint"
  symbols: SPARKLES
}