Esempio n. 1
0
 /**
  * Utility function to sort an array of objects on a given field
  *
  * @param   array  $a              An array of objects
  * @param   mixed  $k              The key (string) or a array of key to sort on
  * @param   mixed  $direction      Direction (integer) or an array of direction to sort in [1 = Ascending] [-1 = Descending]
  * @param   mixed  $caseSensitive  Boolean or array of booleans to let sort occur case sensitive or insensitive
  * @param   mixed  $locale         Boolean or array of booleans to let sort occur using the locale language or not
  *
  * @return  array  The sorted array of objects
  *
  * @since   1.0
  */
 public static function sortObjects(array $a, $k, $direction = 1, $caseSensitive = true, $locale = false)
 {
     if (!is_array($locale) || !is_array($locale[0])) {
         $locale = array($locale);
     }
     $sortCase = (array) $caseSensitive;
     $sortDirection = (array) $direction;
     $key = (array) $k;
     $sortLocale = $locale;
     usort($a, function ($a, $b) use($sortCase, $sortDirection, $key, $sortLocale) {
         for ($i = 0, $count = count($key); $i < $count; $i++) {
             if (isset($sortDirection[$i])) {
                 $direction = $sortDirection[$i];
             }
             if (isset($sortCase[$i])) {
                 $caseSensitive = $sortCase[$i];
             }
             if (isset($sortLocale[$i])) {
                 $locale = $sortLocale[$i];
             }
             $va = $a->{$key}[$i];
             $vb = $b->{$key}[$i];
             if ((is_bool($va) || is_numeric($va)) && (is_bool($vb) || is_numeric($vb))) {
                 $cmp = $va - $vb;
             } elseif ($caseSensitive) {
                 $cmp = String::strcmp($va, $vb, $locale);
             } else {
                 $cmp = String::strcasecmp($va, $vb, $locale);
             }
             if ($cmp > 0) {
                 return $direction;
             }
             if ($cmp < 0) {
                 return -$direction;
             }
         }
         return 0;
     });
     return $a;
 }
Esempio n. 2
0
 /**
  * Check for valid payment gateway.
  *
  * @param string $gateway
  *
  * @return bool
  */
 protected function isValidPaymentGateway($gateway)
 {
     $value1 = String::strtolower($this->paymentService);
     $value2 = String::strtolower($gateway);
     if (String::strcmp($value1, $value2) != 0) {
         return false;
     }
     return true;
 }
 /**
  * Callback function for sorting an array of objects on a key
  *
  * @param   array  &$a  An array of objects
  * @param   array  &$b  An array of objects
  *
  * @return  integer  Comparison status
  *
  * @see     ArrayHelper::sortObjects()
  * @since   11.1
  */
 protected static function _sortObjects(&$a, &$b)
 {
     $key = self::$sortKey;
     for ($i = 0, $count = count($key); $i < $count; $i++) {
         if (isset(self::$sortDirection[$i])) {
             $direction = self::$sortDirection[$i];
         }
         if (isset(self::$sortCase[$i])) {
             $caseSensitive = self::$sortCase[$i];
         }
         if (isset(self::$sortLocale[$i])) {
             $locale = self::$sortLocale[$i];
         }
         $va = $a->{$key}[$i];
         $vb = $b->{$key}[$i];
         if ((is_bool($va) || is_numeric($va)) && (is_bool($vb) || is_numeric($vb))) {
             $cmp = $va - $vb;
         } elseif ($caseSensitive) {
             $cmp = String::strcmp($va, $vb, $locale);
         } else {
             $cmp = String::strcasecmp($va, $vb, $locale);
         }
         if ($cmp > 0) {
             return $direction;
         }
         if ($cmp < 0) {
             return -$direction;
         }
     }
     return 0;
 }