From 4526e5431d345bf118d5a36ba7c9834655d1e630 Mon Sep 17 00:00:00 2001
From: clonemeagain <clonemeagain@gmail.com>
Date: Wed, 29 Jan 2014 14:03:57 +1100
Subject: [PATCH] Update class.mailparse.php

Best version of https://github.com/osTicket/osTicket-1.8/pull/348

static keyword added to enable strict test mode.
---
 include/class.mailparse.php | 46 ++++++++++++++++++++++++-------------
 1 file changed, 30 insertions(+), 16 deletions(-)

diff --git a/include/class.mailparse.php b/include/class.mailparse.php
index 32b0083a6..89b1f7776 100644
--- a/include/class.mailparse.php
+++ b/include/class.mailparse.php
@@ -302,22 +302,36 @@ class Mail_Parse {
         return Mail_Parse::parsePriority($this->getHeader());
     }
 
-    function parsePriority($header=null){
-
-        $priority=0;
-        if($header && ($begin=strpos($header,'X-Priority:'))!==false){
-            $begin+=strlen('X-Priority:');
-            $xpriority=preg_replace("/[^0-9]/", "",substr($header, $begin, strpos($header,"\n",$begin) - $begin));
-            if(!is_numeric($xpriority))
-                $priority=0;
-            elseif($xpriority>4)
-                $priority=1;
-            elseif($xpriority>=3)
-                $priority=2;
-            elseif($xpriority>0)
-                $priority=3;
-        }
-        return $priority;
+    static function parsePriority($header=null){
+    	
+    	if (! $header)
+    		return 0;
+    	// Test for normal "X-Priority: INT" style header & stringy version.
+    	// Allows for Importance possibility.
+    	$matching_char = '';
+    	if (preg_match ( '/priority: (\d|\w)/i', $header, $matching_char )
+    			|| preg_match ( '/importance: (\d|\w)/i', $header, $matching_char )) {
+    		switch ($matching_char[1]) {
+    			case 'h' :
+    			case 'H' :// high
+    			case 'u':
+    			case 'U': //Urgent
+    			case 6 :
+    			case 5 :
+    				return 1;
+    			case 'n' : // normal
+    			case 'N' :
+    			case 4 :
+    			case 3 :
+    				return 2;
+    			case 'l' : // low
+    			case 'L' :
+    			case 2 :
+    			case 1 :
+    				return 3;
+    		}
+    	}
+    	return 0;
     }
 
     function parseAddressList($address){
-- 
GitLab