ZSetUnionStore.php 1.0 KB

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