ZSetUnionStore.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. namespace Predis\Commands;
  3. class ZSetUnionStore extends Command {
  4. protected function canBeHashed() { return false; }
  5. public function getId() { return 'ZUNIONSTORE'; }
  6. public function filterArguments(Array $arguments) {
  7. $options = array();
  8. $argc = count($arguments);
  9. if ($argc > 2 && is_array($arguments[$argc - 1])) {
  10. $options = $this->prepareOptions(array_pop($arguments));
  11. }
  12. if (is_array($arguments[1])) {
  13. $arguments = array_merge(
  14. array($arguments[0], count($arguments[1])),
  15. $arguments[1]
  16. );
  17. }
  18. return array_merge($arguments, $options);
  19. }
  20. private function prepareOptions($options) {
  21. $opts = array_change_key_case($options, CASE_UPPER);
  22. $finalizedOpts = array();
  23. if (isset($opts['WEIGHTS']) && is_array($opts['WEIGHTS'])) {
  24. $finalizedOpts[] = 'WEIGHTS';
  25. foreach ($opts['WEIGHTS'] as $weight) {
  26. $finalizedOpts[] = $weight;
  27. }
  28. }
  29. if (isset($opts['AGGREGATE'])) {
  30. $finalizedOpts[] = 'AGGREGATE';
  31. $finalizedOpts[] = $opts['AGGREGATE'];
  32. }
  33. return $finalizedOpts;
  34. }
  35. }