Migrate away from using create_function as long as PHP 5.3+ is available
[squirrelmail.git] / functions / imap_messages.php
index 2640ce641ce113806b0b99439ddeea7aec9445ea..af21b55bbb7acaf04d46bfff92fb08ead144de1d 100755 (executable)
@@ -241,25 +241,47 @@ function get_squirrel_sort($imap_stream, $sSortField, $reverse = false, $aUid =
       case 'TO':
       case 'CC':
         if(!$walk) {
-            array_walk($msgs, create_function('&$v,&$k,$f',
-                '$v[$f] = (isset($v[$f])) ? $v[$f] : "";
-                 $addr = reset(parseRFC822Address($v[$f],1));
-                 $sPersonal = (isset($addr[SQM_ADDR_PERSONAL]) && $addr[SQM_ADDR_PERSONAL]) ?
-                   $addr[SQM_ADDR_PERSONAL] : "";
-                 $sEmail = ($addr[SQM_ADDR_HOST]) ?
-                      $addr[SQM_ADDR_MAILBOX] . "@".$addr[SQM_ADDR_HOST] :
-                      $addr[SQM_ADDR_HOST];
-                 $v[$f] = ($sPersonal) ? decodeHeader($sPersonal, true, false):$sEmail;'),$sSortField);
+            if (check_php_version(5, 3, 0))
+                $walk_function = function(&$v,&$k,$f) {
+                    $v[$f] = (isset($v[$f])) ? $v[$f] : "";
+                    $addr = reset(parseRFC822Address($v[$f],1));
+                    $sPersonal = (isset($addr[SQM_ADDR_PERSONAL]) && $addr[SQM_ADDR_PERSONAL]) ?
+                       $addr[SQM_ADDR_PERSONAL] : "";
+                    $sEmail = ($addr[SQM_ADDR_HOST]) ?
+                          $addr[SQM_ADDR_MAILBOX] . "@".$addr[SQM_ADDR_HOST] :
+                          $addr[SQM_ADDR_HOST];
+                    $v[$f] = ($sPersonal) ? decodeHeader($sPersonal, true, false):$sEmail;
+                };
+            else
+                $walk_function = create_function('&$v,&$k,$f',
+                    '$v[$f] = (isset($v[$f])) ? $v[$f] : "";
+                     $addr = reset(parseRFC822Address($v[$f],1));
+                     $sPersonal = (isset($addr[SQM_ADDR_PERSONAL]) && $addr[SQM_ADDR_PERSONAL]) ?
+                       $addr[SQM_ADDR_PERSONAL] : "";
+                     $sEmail = ($addr[SQM_ADDR_HOST]) ?
+                          $addr[SQM_ADDR_MAILBOX] . "@".$addr[SQM_ADDR_HOST] :
+                          $addr[SQM_ADDR_HOST];
+                     $v[$f] = ($sPersonal) ? decodeHeader($sPersonal, true, false):$sEmail;');
+            array_walk($msgs, $walk_function, $sSortField);
             $walk = true;
         }
         // nobreak
       case 'SUBJECT':
         if(!$walk) {
-            array_walk($msgs, create_function('&$v,&$k,$f',
-                '$v[$f] = (isset($v[$f])) ? $v[$f] : "";
-                 $v[$f] = strtolower(decodeHeader(trim($v[$f]), true, false));
-                 $v[$f] = (preg_match("/^(?:(?:vedr|sv|re|aw|fw|fwd|\[\w\]):\s*)*\s*(.*)$/si", $v[$f], $matches)) ?
-                                    $matches[1] : $v[$f];'),$sSortField);
+            if (check_php_version(5, 3, 0))
+                $walk_function = function(&$v,&$k,$f) {
+                    $v[$f] = (isset($v[$f])) ? $v[$f] : "";
+                    $v[$f] = strtolower(decodeHeader(trim($v[$f]), true, false));
+                    $v[$f] = (preg_match("/^(?:(?:vedr|sv|re|aw|fw|fwd|\[\w\]):\s*)*\s*(.*)$/si", $v[$f], $matches)) ?
+                                       $matches[1] : $v[$f];
+                };
+            else
+                $walk_function = create_function('&$v,&$k,$f',
+                    '$v[$f] = (isset($v[$f])) ? $v[$f] : "";
+                     $v[$f] = strtolower(decodeHeader(trim($v[$f]), true, false));
+                     $v[$f] = (preg_match("/^(?:(?:vedr|sv|re|aw|fw|fwd|\[\w\]):\s*)*\s*(.*)$/si", $v[$f], $matches)) ?
+                                        $matches[1] : $v[$f];');
+            array_walk($msgs, $walk_function, $sSortField);
             $walk = true;
         }
         foreach ($msgs as $item) {
@@ -276,9 +298,16 @@ function get_squirrel_sort($imap_stream, $sSortField, $reverse = false, $aUid =
       case 'DATE':
       case 'INTERNALDATE':
         if(!$walk) {
-            array_walk($msgs, create_function('&$v,$k,$f',
-                '$v[$f] = (isset($v[$f])) ? $v[$f] : "";
-                 $v[$f] = getTimeStamp(explode(" ",$v[$f]));'),$sSortField);
+            if (check_php_version(5, 3, 0))
+                $walk_function = function(&$v,$k,$f) {
+                    $v[$f] = (isset($v[$f])) ? $v[$f] : "";
+                    $v[$f] = getTimeStamp(explode(" ",$v[$f]));
+                };
+            else
+                $walk_function = create_function('&$v,$k,$f',
+                    '$v[$f] = (isset($v[$f])) ? $v[$f] : "";
+                     $v[$f] = getTimeStamp(explode(" ",$v[$f]));');
+            array_walk($msgs, $walk_function, $sSortField);
             $walk = true;
         }
         // nobreak;