Test Failed
Push — master ( 322de2...d56fde )
by Alxarafe
38:58
created
htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/Reader/Excel5.php 1 patch
Switch Indentation   +897 added lines, -897 removed lines patch added patch discarded remove patch
@@ -994,76 +994,76 @@  discard block
 block discarded – undo
994 994
 			if ($definedName['isBuiltInName']) {
995 995
 				switch ($definedName['name']) {
996 996
 
997
-				case pack('C', 0x06):
998
-					// print area
999
-					//	in general, formula looks like this: Foo!$C$7:$J$66,Bar!$A$1:$IV$2
1000
-					$ranges = explode(',', $definedName['formula']); // FIXME: what if sheetname contains comma?
1001
-
1002
-					$extractedRanges = array();
1003
-					foreach ($ranges as $range) {
1004
-						// $range should look like one of these
1005
-						//		Foo!$C$7:$J$66
1006
-						//		Bar!$A$1:$IV$2
1007
-
1008
-						$explodes = explode('!', $range);	// FIXME: what if sheetname contains exclamation mark?
1009
-						$sheetName = trim($explodes[0], "'");
1010
-
1011
-						if (count($explodes) == 2) {
1012
-							if (strpos($explodes[1], ':') === FALSE) {
1013
-								$explodes[1] = $explodes[1] . ':' . $explodes[1];
1014
-							}
1015
-							$extractedRanges[] = str_replace('$', '', $explodes[1]); // C7:J66
1016
-						}
1017
-					}
1018
-					if ($docSheet = $this->_phpExcel->getSheetByName($sheetName)) {
1019
-						$docSheet->getPageSetup()->setPrintArea(implode(',', $extractedRanges)); // C7:J66,A1:IV2
1020
-					}
1021
-					break;
1022
-
1023
-				case pack('C', 0x07):
1024
-					// print titles (repeating rows)
1025
-					// Assuming BIFF8, there are 3 cases
1026
-					// 1. repeating rows
1027
-					//		formula looks like this: Sheet!$A$1:$IV$2
1028
-					//		rows 1-2 repeat
1029
-					// 2. repeating columns
1030
-					//		formula looks like this: Sheet!$A$1:$B$65536
1031
-					//		columns A-B repeat
1032
-					// 3. both repeating rows and repeating columns
1033
-					//		formula looks like this: Sheet!$A$1:$B$65536,Sheet!$A$1:$IV$2
1034
-
1035
-					$ranges = explode(',', $definedName['formula']); // FIXME: what if sheetname contains comma?
1036
-
1037
-					foreach ($ranges as $range) {
1038
-						// $range should look like this one of these
1039
-						//		Sheet!$A$1:$B$65536
1040
-						//		Sheet!$A$1:$IV$2
1041
-
1042
-						$explodes = explode('!', $range);
1043
-
1044
-						if (count($explodes) == 2) {
1045
-							if ($docSheet = $this->_phpExcel->getSheetByName($explodes[0])) {
1046
-
1047
-								$extractedRange = $explodes[1];
1048
-								$extractedRange = str_replace('$', '', $extractedRange);
1049
-
1050
-								$coordinateStrings = explode(':', $extractedRange);
1051
-								if (count($coordinateStrings) == 2) {
1052
-									list($firstColumn, $firstRow) = PHPExcel_Cell::coordinateFromString($coordinateStrings[0]);
1053
-									list($lastColumn, $lastRow) = PHPExcel_Cell::coordinateFromString($coordinateStrings[1]);
1054
-
1055
-									if ($firstColumn == 'A' and $lastColumn == 'IV') {
1056
-										// then we have repeating rows
1057
-										$docSheet->getPageSetup()->setRowsToRepeatAtTop(array($firstRow, $lastRow));
1058
-									} elseif ($firstRow == 1 and $lastRow == 65536) {
1059
-										// then we have repeating columns
1060
-										$docSheet->getPageSetup()->setColumnsToRepeatAtLeft(array($firstColumn, $lastColumn));
1061
-									}
1062
-								}
1063
-							}
1064
-						}
1065
-					}
1066
-					break;
997
+				    case pack('C', 0x06):
998
+					    // print area
999
+					    //	in general, formula looks like this: Foo!$C$7:$J$66,Bar!$A$1:$IV$2
1000
+					    $ranges = explode(',', $definedName['formula']); // FIXME: what if sheetname contains comma?
1001
+
1002
+					    $extractedRanges = array();
1003
+					    foreach ($ranges as $range) {
1004
+						    // $range should look like one of these
1005
+						    //		Foo!$C$7:$J$66
1006
+						    //		Bar!$A$1:$IV$2
1007
+
1008
+						    $explodes = explode('!', $range);	// FIXME: what if sheetname contains exclamation mark?
1009
+						    $sheetName = trim($explodes[0], "'");
1010
+
1011
+						    if (count($explodes) == 2) {
1012
+							    if (strpos($explodes[1], ':') === FALSE) {
1013
+								    $explodes[1] = $explodes[1] . ':' . $explodes[1];
1014
+							    }
1015
+							    $extractedRanges[] = str_replace('$', '', $explodes[1]); // C7:J66
1016
+						    }
1017
+					    }
1018
+					    if ($docSheet = $this->_phpExcel->getSheetByName($sheetName)) {
1019
+						    $docSheet->getPageSetup()->setPrintArea(implode(',', $extractedRanges)); // C7:J66,A1:IV2
1020
+					    }
1021
+					    break;
1022
+
1023
+				    case pack('C', 0x07):
1024
+					    // print titles (repeating rows)
1025
+					    // Assuming BIFF8, there are 3 cases
1026
+					    // 1. repeating rows
1027
+					    //		formula looks like this: Sheet!$A$1:$IV$2
1028
+					    //		rows 1-2 repeat
1029
+					    // 2. repeating columns
1030
+					    //		formula looks like this: Sheet!$A$1:$B$65536
1031
+					    //		columns A-B repeat
1032
+					    // 3. both repeating rows and repeating columns
1033
+					    //		formula looks like this: Sheet!$A$1:$B$65536,Sheet!$A$1:$IV$2
1034
+
1035
+					    $ranges = explode(',', $definedName['formula']); // FIXME: what if sheetname contains comma?
1036
+
1037
+					    foreach ($ranges as $range) {
1038
+						    // $range should look like this one of these
1039
+						    //		Sheet!$A$1:$B$65536
1040
+						    //		Sheet!$A$1:$IV$2
1041
+
1042
+						    $explodes = explode('!', $range);
1043
+
1044
+						    if (count($explodes) == 2) {
1045
+							    if ($docSheet = $this->_phpExcel->getSheetByName($explodes[0])) {
1046
+
1047
+								    $extractedRange = $explodes[1];
1048
+								    $extractedRange = str_replace('$', '', $extractedRange);
1049
+
1050
+								    $coordinateStrings = explode(':', $extractedRange);
1051
+								    if (count($coordinateStrings) == 2) {
1052
+									    list($firstColumn, $firstRow) = PHPExcel_Cell::coordinateFromString($coordinateStrings[0]);
1053
+									    list($lastColumn, $lastRow) = PHPExcel_Cell::coordinateFromString($coordinateStrings[1]);
1054
+
1055
+									    if ($firstColumn == 'A' and $lastColumn == 'IV') {
1056
+										    // then we have repeating rows
1057
+										    $docSheet->getPageSetup()->setRowsToRepeatAtTop(array($firstRow, $lastRow));
1058
+									    } elseif ($firstRow == 1 and $lastRow == 65536) {
1059
+										    // then we have repeating columns
1060
+										    $docSheet->getPageSetup()->setColumnsToRepeatAtLeft(array($firstColumn, $lastColumn));
1061
+									    }
1062
+								    }
1063
+							    }
1064
+						    }
1065
+					    }
1066
+					    break;
1067 1067
 
1068 1068
 				}
1069 1069
 			} else {
@@ -2491,12 +2491,12 @@  discard block
 block discarded – undo
2491 2491
 				$builtInId = ord($recordData{2});
2492 2492
 
2493 2493
 				switch ($builtInId) {
2494
-				case 0x00:
2495
-					// currently, we are not using this for anything
2496
-					break;
2494
+				    case 0x00:
2495
+					    // currently, we are not using this for anything
2496
+					    break;
2497 2497
 
2498
-				default:
2499
-					break;
2498
+				    default:
2499
+					    break;
2500 2500
 				}
2501 2501
 
2502 2502
 			} else {
@@ -3305,8 +3305,8 @@  discard block
 block discarded – undo
3305 3305
 			if (!$isNotInit) {
3306 3306
 				$this->_phpSheet->getPageSetup()->setPaperSize($paperSize);
3307 3307
 				switch ($isPortrait) {
3308
-				case 0: $this->_phpSheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); break;
3309
-				case 1: $this->_phpSheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); break;
3308
+				    case 0: $this->_phpSheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); break;
3309
+				    case 1: $this->_phpSheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); break;
3310 3310
 				}
3311 3311
 
3312 3312
 				$this->_phpSheet->getPageSetup()->setScale($scale, false);
@@ -4551,93 +4551,93 @@  discard block
 block discarded – undo
4551 4551
 			}
4552 4552
 
4553 4553
 			switch ($hyperlinkType) {
4554
-			case 'URL':
4555
-				// section 5.58.2: Hyperlink containing a URL
4556
-				// e.g. http://example.org/index.php
4557
-
4558
-				// offset: var; size: 16; GUID of URL Moniker
4559
-				$offset += 16;
4560
-				// offset: var; size: 4; size (in bytes) of character array of the URL including trailing zero word
4561
-				$us = self::_GetInt4d($recordData, $offset);
4562
-				$offset += 4;
4563
-				// offset: var; size: $us; character array of the URL, no Unicode string header, always 16-bit characters, zero-terminated
4564
-				$url = self::_encodeUTF16(substr($recordData, $offset, $us - 2), false);
4565
-                $nullOffset = strpos($url, 0x00);
4566
-				if ($nullOffset)
4567
-                    $url = substr($url,0,$nullOffset);
4568
-				$url .= $hasText ? '#' : '';
4569
-				$offset += $us;
4570
-				break;
4571
-
4572
-			case 'local':
4573
-				// section 5.58.3: Hyperlink to local file
4574
-				// examples:
4575
-				//   mydoc.txt
4576
-				//   ../../somedoc.xls#Sheet!A1
4577
-
4578
-				// offset: var; size: 16; GUI of File Moniker
4579
-				$offset += 16;
4580
-
4581
-				// offset: var; size: 2; directory up-level count.
4582
-				$upLevelCount = self::_GetInt2d($recordData, $offset);
4583
-				$offset += 2;
4584
-
4585
-				// offset: var; size: 4; character count of the shortened file path and name, including trailing zero word
4586
-				$sl = self::_GetInt4d($recordData, $offset);
4587
-				$offset += 4;
4588
-
4589
-				// offset: var; size: sl; character array of the shortened file path and name in 8.3-DOS-format (compressed Unicode string)
4590
-				$shortenedFilePath = substr($recordData, $offset, $sl);
4591
-				$shortenedFilePath = self::_encodeUTF16($shortenedFilePath, true);
4592
-				$shortenedFilePath = substr($shortenedFilePath, 0, -1); // remove trailing zero
4593
-
4594
-				$offset += $sl;
4595
-
4596
-				// offset: var; size: 24; unknown sequence
4597
-				$offset += 24;
4598
-
4599
-				// extended file path
4600
-				// offset: var; size: 4; size of the following file link field including string lenth mark
4601
-				$sz = self::_GetInt4d($recordData, $offset);
4602
-				$offset += 4;
4603
-
4604
-				// only present if $sz > 0
4605
-				if ($sz > 0) {
4606
-					// offset: var; size: 4; size of the character array of the extended file path and name
4607
-					$xl = self::_GetInt4d($recordData, $offset);
4608
-					$offset += 4;
4609
-
4610
-					// offset: var; size 2; unknown
4611
-					$offset += 2;
4612
-
4613
-					// offset: var; size $xl; character array of the extended file path and name.
4614
-					$extendedFilePath = substr($recordData, $offset, $xl);
4615
-					$extendedFilePath = self::_encodeUTF16($extendedFilePath, false);
4616
-					$offset += $xl;
4617
-				}
4618
-
4619
-				// construct the path
4620
-				$url = str_repeat('..\\', $upLevelCount);
4621
-				$url .= ($sz > 0) ?
4622
-					$extendedFilePath : $shortenedFilePath; // use extended path if available
4623
-				$url .= $hasText ? '#' : '';
4624
-
4625
-				break;
4626
-
4627
-
4628
-			case 'UNC':
4629
-				// section 5.58.4: Hyperlink to a File with UNC (Universal Naming Convention) Path
4630
-				// todo: implement
4631
-				return;
4632
-
4633
-			case 'workbook':
4634
-				// section 5.58.5: Hyperlink to the Current Workbook
4635
-				// e.g. Sheet2!B1:C2, stored in text mark field
4636
-				$url = 'sheet://';
4637
-				break;
4638
-
4639
-			default:
4640
-				return;
4554
+			    case 'URL':
4555
+				    // section 5.58.2: Hyperlink containing a URL
4556
+				    // e.g. http://example.org/index.php
4557
+
4558
+				    // offset: var; size: 16; GUID of URL Moniker
4559
+				    $offset += 16;
4560
+				    // offset: var; size: 4; size (in bytes) of character array of the URL including trailing zero word
4561
+				    $us = self::_GetInt4d($recordData, $offset);
4562
+				    $offset += 4;
4563
+				    // offset: var; size: $us; character array of the URL, no Unicode string header, always 16-bit characters, zero-terminated
4564
+				    $url = self::_encodeUTF16(substr($recordData, $offset, $us - 2), false);
4565
+                    $nullOffset = strpos($url, 0x00);
4566
+				    if ($nullOffset)
4567
+                        $url = substr($url,0,$nullOffset);
4568
+				    $url .= $hasText ? '#' : '';
4569
+				    $offset += $us;
4570
+				    break;
4571
+
4572
+			    case 'local':
4573
+				    // section 5.58.3: Hyperlink to local file
4574
+				    // examples:
4575
+				    //   mydoc.txt
4576
+				    //   ../../somedoc.xls#Sheet!A1
4577
+
4578
+				    // offset: var; size: 16; GUI of File Moniker
4579
+				    $offset += 16;
4580
+
4581
+				    // offset: var; size: 2; directory up-level count.
4582
+				    $upLevelCount = self::_GetInt2d($recordData, $offset);
4583
+				    $offset += 2;
4584
+
4585
+				    // offset: var; size: 4; character count of the shortened file path and name, including trailing zero word
4586
+				    $sl = self::_GetInt4d($recordData, $offset);
4587
+				    $offset += 4;
4588
+
4589
+				    // offset: var; size: sl; character array of the shortened file path and name in 8.3-DOS-format (compressed Unicode string)
4590
+				    $shortenedFilePath = substr($recordData, $offset, $sl);
4591
+				    $shortenedFilePath = self::_encodeUTF16($shortenedFilePath, true);
4592
+				    $shortenedFilePath = substr($shortenedFilePath, 0, -1); // remove trailing zero
4593
+
4594
+				    $offset += $sl;
4595
+
4596
+				    // offset: var; size: 24; unknown sequence
4597
+				    $offset += 24;
4598
+
4599
+				    // extended file path
4600
+				    // offset: var; size: 4; size of the following file link field including string lenth mark
4601
+				    $sz = self::_GetInt4d($recordData, $offset);
4602
+				    $offset += 4;
4603
+
4604
+				    // only present if $sz > 0
4605
+				    if ($sz > 0) {
4606
+					    // offset: var; size: 4; size of the character array of the extended file path and name
4607
+					    $xl = self::_GetInt4d($recordData, $offset);
4608
+					    $offset += 4;
4609
+
4610
+					    // offset: var; size 2; unknown
4611
+					    $offset += 2;
4612
+
4613
+					    // offset: var; size $xl; character array of the extended file path and name.
4614
+					    $extendedFilePath = substr($recordData, $offset, $xl);
4615
+					    $extendedFilePath = self::_encodeUTF16($extendedFilePath, false);
4616
+					    $offset += $xl;
4617
+				    }
4618
+
4619
+				    // construct the path
4620
+				    $url = str_repeat('..\\', $upLevelCount);
4621
+				    $url .= ($sz > 0) ?
4622
+					    $extendedFilePath : $shortenedFilePath; // use extended path if available
4623
+				    $url .= $hasText ? '#' : '';
4624
+
4625
+				    break;
4626
+
4627
+
4628
+			    case 'UNC':
4629
+				    // section 5.58.4: Hyperlink to a File with UNC (Universal Naming Convention) Path
4630
+				    // todo: implement
4631
+				    return;
4632
+
4633
+			    case 'workbook':
4634
+				    // section 5.58.5: Hyperlink to the Current Workbook
4635
+				    // e.g. Sheet2!B1:C2, stored in text mark field
4636
+				    $url = 'sheet://';
4637
+				    break;
4638
+
4639
+			    default:
4640
+				    return;
4641 4641
 
4642 4642
 			}
4643 4643
 
@@ -5059,54 +5059,54 @@  discard block
 block discarded – undo
5059 5059
 		$iData = substr($recordData, 8);
5060 5060
 
5061 5061
 		switch ($cf) {
5062
-		case 0x09: // Windows bitmap format
5063
-			// BITMAPCOREINFO
5064
-			// 1. BITMAPCOREHEADER
5065
-			// offset: 0; size: 4; bcSize, Specifies the number of bytes required by the structure
5066
-			$bcSize = self::_GetInt4d($iData, 0);
5067
-//			var_dump($bcSize);
5068
-
5069
-			// offset: 4; size: 2; bcWidth, specifies the width of the bitmap, in pixels
5070
-			$bcWidth = self::_GetInt2d($iData, 4);
5071
-//			var_dump($bcWidth);
5072
-
5073
-			// offset: 6; size: 2; bcHeight, specifies the height of the bitmap, in pixels.
5074
-			$bcHeight = self::_GetInt2d($iData, 6);
5075
-//			var_dump($bcHeight);
5076
-			$ih = imagecreatetruecolor($bcWidth, $bcHeight);
5077
-
5078
-			// offset: 8; size: 2; bcPlanes, specifies the number of planes for the target device. This value must be 1
5079
-
5080
-			// offset: 10; size: 2; bcBitCount specifies the number of bits-per-pixel. This value must be 1, 4, 8, or 24
5081
-			$bcBitCount = self::_GetInt2d($iData, 10);
5082
-//			var_dump($bcBitCount);
5083
-
5084
-			$rgbString = substr($iData, 12);
5085
-			$rgbTriples = array();
5086
-			while (strlen($rgbString) > 0) {
5087
-				$rgbTriples[] = unpack('Cb/Cg/Cr', $rgbString);
5088
-				$rgbString = substr($rgbString, 3);
5089
-			}
5090
-			$x = 0;
5091
-			$y = 0;
5092
-			foreach ($rgbTriples as $i => $rgbTriple) {
5093
-				$color = imagecolorallocate($ih, $rgbTriple['r'], $rgbTriple['g'], $rgbTriple['b']);
5094
-				imagesetpixel($ih, $x, $bcHeight - 1 - $y, $color);
5095
-				$x = ($x + 1) % $bcWidth;
5096
-				$y = $y + floor(($x + 1) / $bcWidth);
5097
-			}
5098
-			//imagepng($ih, 'image.png');
5099
-
5100
-			$drawing = new PHPExcel_Worksheet_Drawing();
5101
-			$drawing->setPath($filename);
5102
-			$drawing->setWorksheet($this->_phpSheet);
5103
-
5104
-			break;
5105
-
5106
-		case 0x02: // Windows metafile or Macintosh PICT format
5107
-		case 0x0e: // native format
5108
-		default;
5109
-			break;
5062
+		    case 0x09: // Windows bitmap format
5063
+			    // BITMAPCOREINFO
5064
+			    // 1. BITMAPCOREHEADER
5065
+			    // offset: 0; size: 4; bcSize, Specifies the number of bytes required by the structure
5066
+			    $bcSize = self::_GetInt4d($iData, 0);
5067
+    //			var_dump($bcSize);
5068
+
5069
+			    // offset: 4; size: 2; bcWidth, specifies the width of the bitmap, in pixels
5070
+			    $bcWidth = self::_GetInt2d($iData, 4);
5071
+    //			var_dump($bcWidth);
5072
+
5073
+			    // offset: 6; size: 2; bcHeight, specifies the height of the bitmap, in pixels.
5074
+			    $bcHeight = self::_GetInt2d($iData, 6);
5075
+    //			var_dump($bcHeight);
5076
+			    $ih = imagecreatetruecolor($bcWidth, $bcHeight);
5077
+
5078
+			    // offset: 8; size: 2; bcPlanes, specifies the number of planes for the target device. This value must be 1
5079
+
5080
+			    // offset: 10; size: 2; bcBitCount specifies the number of bits-per-pixel. This value must be 1, 4, 8, or 24
5081
+			    $bcBitCount = self::_GetInt2d($iData, 10);
5082
+    //			var_dump($bcBitCount);
5083
+
5084
+			    $rgbString = substr($iData, 12);
5085
+			    $rgbTriples = array();
5086
+			    while (strlen($rgbString) > 0) {
5087
+				    $rgbTriples[] = unpack('Cb/Cg/Cr', $rgbString);
5088
+				    $rgbString = substr($rgbString, 3);
5089
+			    }
5090
+			    $x = 0;
5091
+			    $y = 0;
5092
+			    foreach ($rgbTriples as $i => $rgbTriple) {
5093
+				    $color = imagecolorallocate($ih, $rgbTriple['r'], $rgbTriple['g'], $rgbTriple['b']);
5094
+				    imagesetpixel($ih, $x, $bcHeight - 1 - $y, $color);
5095
+				    $x = ($x + 1) % $bcWidth;
5096
+				    $y = $y + floor(($x + 1) / $bcWidth);
5097
+			    }
5098
+			    //imagepng($ih, 'image.png');
5099
+
5100
+			    $drawing = new PHPExcel_Worksheet_Drawing();
5101
+			    $drawing->setPath($filename);
5102
+			    $drawing->setWorksheet($this->_phpSheet);
5103
+
5104
+			    break;
5105
+
5106
+		    case 0x02: // Windows metafile or Macintosh PICT format
5107
+		    case 0x0e: // native format
5108
+		    default;
5109
+			    break;
5110 5110
 
5111 5111
 		}
5112 5112
 
@@ -5298,132 +5298,132 @@  discard block
 block discarded – undo
5298 5298
 			$space5 = isset($space5) ? $space5 : ''; // carriage returns before closing parenthesis
5299 5299
 
5300 5300
 			switch ($token['name']) {
5301
-			case 'tAdd': // addition
5302
-			case 'tConcat': // addition
5303
-			case 'tDiv': // division
5304
-			case 'tEQ': // equality
5305
-			case 'tGE': // greater than or equal
5306
-			case 'tGT': // greater than
5307
-			case 'tIsect': // intersection
5308
-			case 'tLE': // less than or equal
5309
-			case 'tList': // less than or equal
5310
-			case 'tLT': // less than
5311
-			case 'tMul': // multiplication
5312
-			case 'tNE': // multiplication
5313
-			case 'tPower': // power
5314
-			case 'tRange': // range
5315
-			case 'tSub': // subtraction
5316
-				$op2 = array_pop($formulaStrings);
5317
-				$op1 = array_pop($formulaStrings);
5318
-				$formulaStrings[] = "$op1$space1$space0{$token['data']}$op2";
5319
-				unset($space0, $space1);
5320
-				break;
5321
-			case 'tUplus': // unary plus
5322
-			case 'tUminus': // unary minus
5323
-				$op = array_pop($formulaStrings);
5324
-				$formulaStrings[] = "$space1$space0{$token['data']}$op";
5325
-				unset($space0, $space1);
5326
-				break;
5327
-			case 'tPercent': // percent sign
5328
-				$op = array_pop($formulaStrings);
5329
-				$formulaStrings[] = "$op$space1$space0{$token['data']}";
5330
-				unset($space0, $space1);
5331
-				break;
5332
-			case 'tAttrVolatile': // indicates volatile function
5333
-			case 'tAttrIf':
5334
-			case 'tAttrSkip':
5335
-			case 'tAttrChoose':
5336
-				// token is only important for Excel formula evaluator
5337
-				// do nothing
5338
-				break;
5339
-			case 'tAttrSpace': // space / carriage return
5340
-				// space will be used when next token arrives, do not alter formulaString stack
5341
-				switch ($token['data']['spacetype']) {
5342
-				case 'type0':
5343
-					$space0 = str_repeat(' ', $token['data']['spacecount']);
5344
-					break;
5345
-				case 'type1':
5346
-					$space1 = str_repeat("\n", $token['data']['spacecount']);
5347
-					break;
5348
-				case 'type2':
5349
-					$space2 = str_repeat(' ', $token['data']['spacecount']);
5350
-					break;
5351
-				case 'type3':
5352
-					$space3 = str_repeat("\n", $token['data']['spacecount']);
5353
-					break;
5354
-				case 'type4':
5355
-					$space4 = str_repeat(' ', $token['data']['spacecount']);
5356
-					break;
5357
-				case 'type5':
5358
-					$space5 = str_repeat("\n", $token['data']['spacecount']);
5359
-					break;
5360
-				}
5361
-				break;
5362
-			case 'tAttrSum': // SUM function with one parameter
5363
-				$op = array_pop($formulaStrings);
5364
-				$formulaStrings[] = "{$space1}{$space0}SUM($op)";
5365
-				unset($space0, $space1);
5366
-				break;
5367
-			case 'tFunc': // function with fixed number of arguments
5368
-			case 'tFuncV': // function with variable number of arguments
5369
-				if ($token['data']['function'] != '') {
5370
-					// normal function
5371
-					$ops = array(); // array of operators
5372
-					for ($i = 0; $i < $token['data']['args']; ++$i) {
5373
-						$ops[] = array_pop($formulaStrings);
5374
-					}
5375
-					$ops = array_reverse($ops);
5376
-					$formulaStrings[] = "$space1$space0{$token['data']['function']}(" . implode(',', $ops) . ")";
5377
-					unset($space0, $space1);
5378
-				} else {
5379
-					// add-in function
5380
-					$ops = array(); // array of operators
5381
-					for ($i = 0; $i < $token['data']['args'] - 1; ++$i) {
5382
-						$ops[] = array_pop($formulaStrings);
5383
-					}
5384
-					$ops = array_reverse($ops);
5385
-					$function = array_pop($formulaStrings);
5386
-					$formulaStrings[] = "$space1$space0$function(" . implode(',', $ops) . ")";
5387
-					unset($space0, $space1);
5388
-				}
5389
-				break;
5390
-			case 'tParen': // parenthesis
5391
-				$expression = array_pop($formulaStrings);
5392
-				$formulaStrings[] = "$space3$space2($expression$space5$space4)";
5393
-				unset($space2, $space3, $space4, $space5);
5394
-				break;
5395
-			case 'tArray': // array constant
5396
-				$constantArray = self::_readBIFF8ConstantArray($additionalData);
5397
-				$formulaStrings[] = $space1 . $space0 . $constantArray['value'];
5398
-				$additionalData = substr($additionalData, $constantArray['size']); // bite of chunk of additional data
5399
-				unset($space0, $space1);
5400
-				break;
5401
-			case 'tMemArea':
5402
-				// bite off chunk of additional data
5403
-				$cellRangeAddressList = $this->_readBIFF8CellRangeAddressList($additionalData);
5404
-				$additionalData = substr($additionalData, $cellRangeAddressList['size']);
5405
-				$formulaStrings[] = "$space1$space0{$token['data']}";
5406
-				unset($space0, $space1);
5407
-				break;
5408
-			case 'tArea': // cell range address
5409
-			case 'tBool': // boolean
5410
-			case 'tErr': // error code
5411
-			case 'tInt': // integer
5412
-			case 'tMemErr':
5413
-			case 'tMemFunc':
5414
-			case 'tMissArg':
5415
-			case 'tName':
5416
-			case 'tNameX':
5417
-			case 'tNum': // number
5418
-			case 'tRef': // single cell reference
5419
-			case 'tRef3d': // 3d cell reference
5420
-			case 'tArea3d': // 3d cell range reference
5421
-			case 'tRefN':
5422
-			case 'tAreaN':
5423
-			case 'tStr': // string
5424
-				$formulaStrings[] = "$space1$space0{$token['data']}";
5425
-				unset($space0, $space1);
5301
+			    case 'tAdd': // addition
5302
+			    case 'tConcat': // addition
5303
+			    case 'tDiv': // division
5304
+			    case 'tEQ': // equality
5305
+			    case 'tGE': // greater than or equal
5306
+			    case 'tGT': // greater than
5307
+			    case 'tIsect': // intersection
5308
+			    case 'tLE': // less than or equal
5309
+			    case 'tList': // less than or equal
5310
+			    case 'tLT': // less than
5311
+			    case 'tMul': // multiplication
5312
+			    case 'tNE': // multiplication
5313
+			    case 'tPower': // power
5314
+			    case 'tRange': // range
5315
+			    case 'tSub': // subtraction
5316
+				    $op2 = array_pop($formulaStrings);
5317
+				    $op1 = array_pop($formulaStrings);
5318
+				    $formulaStrings[] = "$op1$space1$space0{$token['data']}$op2";
5319
+				    unset($space0, $space1);
5320
+				    break;
5321
+			    case 'tUplus': // unary plus
5322
+			    case 'tUminus': // unary minus
5323
+				    $op = array_pop($formulaStrings);
5324
+				    $formulaStrings[] = "$space1$space0{$token['data']}$op";
5325
+				    unset($space0, $space1);
5326
+				    break;
5327
+			    case 'tPercent': // percent sign
5328
+				    $op = array_pop($formulaStrings);
5329
+				    $formulaStrings[] = "$op$space1$space0{$token['data']}";
5330
+				    unset($space0, $space1);
5331
+				    break;
5332
+			    case 'tAttrVolatile': // indicates volatile function
5333
+			    case 'tAttrIf':
5334
+			    case 'tAttrSkip':
5335
+			    case 'tAttrChoose':
5336
+				    // token is only important for Excel formula evaluator
5337
+				    // do nothing
5338
+				    break;
5339
+			    case 'tAttrSpace': // space / carriage return
5340
+				    // space will be used when next token arrives, do not alter formulaString stack
5341
+				    switch ($token['data']['spacetype']) {
5342
+				        case 'type0':
5343
+					        $space0 = str_repeat(' ', $token['data']['spacecount']);
5344
+					        break;
5345
+				        case 'type1':
5346
+					        $space1 = str_repeat("\n", $token['data']['spacecount']);
5347
+					        break;
5348
+				        case 'type2':
5349
+					        $space2 = str_repeat(' ', $token['data']['spacecount']);
5350
+					        break;
5351
+				        case 'type3':
5352
+					        $space3 = str_repeat("\n", $token['data']['spacecount']);
5353
+					        break;
5354
+				        case 'type4':
5355
+					        $space4 = str_repeat(' ', $token['data']['spacecount']);
5356
+					        break;
5357
+				        case 'type5':
5358
+					        $space5 = str_repeat("\n", $token['data']['spacecount']);
5359
+					        break;
5360
+				    }
5426 5361
 				break;
5362
+			    case 'tAttrSum': // SUM function with one parameter
5363
+				    $op = array_pop($formulaStrings);
5364
+				    $formulaStrings[] = "{$space1}{$space0}SUM($op)";
5365
+				    unset($space0, $space1);
5366
+				    break;
5367
+			    case 'tFunc': // function with fixed number of arguments
5368
+			    case 'tFuncV': // function with variable number of arguments
5369
+				    if ($token['data']['function'] != '') {
5370
+					    // normal function
5371
+					    $ops = array(); // array of operators
5372
+					    for ($i = 0; $i < $token['data']['args']; ++$i) {
5373
+						    $ops[] = array_pop($formulaStrings);
5374
+					    }
5375
+					    $ops = array_reverse($ops);
5376
+					    $formulaStrings[] = "$space1$space0{$token['data']['function']}(" . implode(',', $ops) . ")";
5377
+					    unset($space0, $space1);
5378
+				    } else {
5379
+					    // add-in function
5380
+					    $ops = array(); // array of operators
5381
+					    for ($i = 0; $i < $token['data']['args'] - 1; ++$i) {
5382
+						    $ops[] = array_pop($formulaStrings);
5383
+					    }
5384
+					    $ops = array_reverse($ops);
5385
+					    $function = array_pop($formulaStrings);
5386
+					    $formulaStrings[] = "$space1$space0$function(" . implode(',', $ops) . ")";
5387
+					    unset($space0, $space1);
5388
+				    }
5389
+				    break;
5390
+			    case 'tParen': // parenthesis
5391
+				    $expression = array_pop($formulaStrings);
5392
+				    $formulaStrings[] = "$space3$space2($expression$space5$space4)";
5393
+				    unset($space2, $space3, $space4, $space5);
5394
+				    break;
5395
+			    case 'tArray': // array constant
5396
+				    $constantArray = self::_readBIFF8ConstantArray($additionalData);
5397
+				    $formulaStrings[] = $space1 . $space0 . $constantArray['value'];
5398
+				    $additionalData = substr($additionalData, $constantArray['size']); // bite of chunk of additional data
5399
+				    unset($space0, $space1);
5400
+				    break;
5401
+			    case 'tMemArea':
5402
+				    // bite off chunk of additional data
5403
+				    $cellRangeAddressList = $this->_readBIFF8CellRangeAddressList($additionalData);
5404
+				    $additionalData = substr($additionalData, $cellRangeAddressList['size']);
5405
+				    $formulaStrings[] = "$space1$space0{$token['data']}";
5406
+				    unset($space0, $space1);
5407
+				    break;
5408
+			    case 'tArea': // cell range address
5409
+			    case 'tBool': // boolean
5410
+			    case 'tErr': // error code
5411
+			    case 'tInt': // integer
5412
+			    case 'tMemErr':
5413
+			    case 'tMemFunc':
5414
+			    case 'tMissArg':
5415
+			    case 'tName':
5416
+			    case 'tNameX':
5417
+			    case 'tNum': // number
5418
+			    case 'tRef': // single cell reference
5419
+			    case 'tRef3d': // 3d cell reference
5420
+			    case 'tArea3d': // 3d cell range reference
5421
+			    case 'tRefN':
5422
+			    case 'tAreaN':
5423
+			    case 'tStr': // string
5424
+				    $formulaStrings[] = "$space1$space0{$token['data']}";
5425
+				    unset($space0, $space1);
5426
+				    break;
5427 5427
 			}
5428 5428
 		}
5429 5429
 		$formulaString = $formulaStrings[0];
@@ -5451,546 +5451,546 @@  discard block
 block discarded – undo
5451 5451
 		$name = false; // initialize token name
5452 5452
 
5453 5453
 		switch ($id) {
5454
-		case 0x03: $name = 'tAdd';		$size = 1;	$data = '+';	break;
5455
-		case 0x04: $name = 'tSub';		$size = 1;	$data = '-';	break;
5456
-		case 0x05: $name = 'tMul';		$size = 1;	$data = '*';	break;
5457
-		case 0x06: $name = 'tDiv';		$size = 1;	$data = '/';	break;
5458
-		case 0x07: $name = 'tPower';	$size = 1;	$data = '^';	break;
5459
-		case 0x08: $name = 'tConcat';	$size = 1;	$data = '&';	break;
5460
-		case 0x09: $name = 'tLT';		$size = 1;	$data = '<';	break;
5461
-		case 0x0A: $name = 'tLE';		$size = 1;	$data = '<=';	break;
5462
-		case 0x0B: $name = 'tEQ';		$size = 1;	$data = '=';	break;
5463
-		case 0x0C: $name = 'tGE';		$size = 1;	$data = '>=';	break;
5464
-		case 0x0D: $name = 'tGT';		$size = 1;	$data = '>';	break;
5465
-		case 0x0E: $name = 'tNE';		$size = 1;	$data = '<>';	break;
5466
-		case 0x0F: $name = 'tIsect';	$size = 1;	$data = ' ';	break;
5467
-		case 0x10: $name = 'tList';		$size = 1;	$data = ',';	break;
5468
-		case 0x11: $name = 'tRange';	$size = 1;	$data = ':';	break;
5469
-		case 0x12: $name = 'tUplus';	$size = 1;	$data = '+';	break;
5470
-		case 0x13: $name = 'tUminus';	$size = 1;	$data = '-';	break;
5471
-		case 0x14: $name = 'tPercent';	$size = 1;	$data = '%';	break;
5472
-		case 0x15:	//	parenthesis
5473
-			$name  = 'tParen';
5474
-			$size  = 1;
5475
-			$data = null;
5476
-			break;
5477
-		case 0x16:	//	missing argument
5478
-			$name = 'tMissArg';
5479
-			$size = 1;
5480
-			$data = '';
5481
-			break;
5482
-		case 0x17:	//	string
5483
-			$name = 'tStr';
5484
-			// offset: 1; size: var; Unicode string, 8-bit string length
5485
-			$string = self::_readUnicodeStringShort(substr($formulaData, 1));
5486
-			$size = 1 + $string['size'];
5487
-			$data = self::_UTF8toExcelDoubleQuoted($string['value']);
5488
-			break;
5489
-		case 0x19:	//	Special attribute
5490
-			// offset: 1; size: 1; attribute type flags:
5491
-			switch (ord($formulaData[1])) {
5492
-			case 0x01:
5493
-				$name = 'tAttrVolatile';
5494
-				$size = 4;
5495
-				$data = null;
5496
-				break;
5497
-			case 0x02:
5498
-				$name = 'tAttrIf';
5499
-				$size = 4;
5500
-				$data = null;
5501
-				break;
5502
-			case 0x04:
5503
-				$name = 'tAttrChoose';
5504
-				// offset: 2; size: 2; number of choices in the CHOOSE function ($nc, number of parameters decreased by 1)
5505
-				$nc = self::_GetInt2d($formulaData, 2);
5506
-				// offset: 4; size: 2 * $nc
5507
-				// offset: 4 + 2 * $nc; size: 2
5508
-				$size = 2 * $nc + 6;
5509
-				$data = null;
5510
-				break;
5511
-			case 0x08:
5512
-				$name = 'tAttrSkip';
5513
-				$size = 4;
5514
-				$data = null;
5515
-				break;
5516
-			case 0x10:
5517
-				$name = 'tAttrSum';
5518
-				$size = 4;
5519
-				$data = null;
5520
-				break;
5521
-			case 0x40:
5522
-			case 0x41:
5523
-				$name = 'tAttrSpace';
5524
-				$size = 4;
5525
-				// offset: 2; size: 2; space type and position
5526
-				switch (ord($formulaData[2])) {
5527
-				case 0x00:
5528
-					$spacetype = 'type0';
5529
-					break;
5530
-				case 0x01:
5531
-					$spacetype = 'type1';
5532
-					break;
5533
-				case 0x02:
5534
-					$spacetype = 'type2';
5535
-					break;
5536
-				case 0x03:
5537
-					$spacetype = 'type3';
5538
-					break;
5539
-				case 0x04:
5540
-					$spacetype = 'type4';
5541
-					break;
5542
-				case 0x05:
5543
-					$spacetype = 'type5';
5544
-					break;
5545
-				default:
5546
-					throw new PHPExcel_Reader_Exception('Unrecognized space type in tAttrSpace token');
5547
-					break;
5548
-				}
5549
-				// offset: 3; size: 1; number of inserted spaces/carriage returns
5550
-				$spacecount = ord($formulaData[3]);
5551
-
5552
-				$data = array('spacetype' => $spacetype, 'spacecount' => $spacecount);
5553
-				break;
5454
+		    case 0x03: $name = 'tAdd';		$size = 1;	$data = '+';	break;
5455
+		    case 0x04: $name = 'tSub';		$size = 1;	$data = '-';	break;
5456
+		    case 0x05: $name = 'tMul';		$size = 1;	$data = '*';	break;
5457
+		    case 0x06: $name = 'tDiv';		$size = 1;	$data = '/';	break;
5458
+		    case 0x07: $name = 'tPower';	$size = 1;	$data = '^';	break;
5459
+		    case 0x08: $name = 'tConcat';	$size = 1;	$data = '&';	break;
5460
+		    case 0x09: $name = 'tLT';		$size = 1;	$data = '<';	break;
5461
+		    case 0x0A: $name = 'tLE';		$size = 1;	$data = '<=';	break;
5462
+		    case 0x0B: $name = 'tEQ';		$size = 1;	$data = '=';	break;
5463
+		    case 0x0C: $name = 'tGE';		$size = 1;	$data = '>=';	break;
5464
+		    case 0x0D: $name = 'tGT';		$size = 1;	$data = '>';	break;
5465
+		    case 0x0E: $name = 'tNE';		$size = 1;	$data = '<>';	break;
5466
+		    case 0x0F: $name = 'tIsect';	$size = 1;	$data = ' ';	break;
5467
+		    case 0x10: $name = 'tList';		$size = 1;	$data = ',';	break;
5468
+		    case 0x11: $name = 'tRange';	$size = 1;	$data = ':';	break;
5469
+		    case 0x12: $name = 'tUplus';	$size = 1;	$data = '+';	break;
5470
+		    case 0x13: $name = 'tUminus';	$size = 1;	$data = '-';	break;
5471
+		    case 0x14: $name = 'tPercent';	$size = 1;	$data = '%';	break;
5472
+		    case 0x15:	//	parenthesis
5473
+			    $name  = 'tParen';
5474
+			    $size  = 1;
5475
+			    $data = null;
5476
+			    break;
5477
+		    case 0x16:	//	missing argument
5478
+			    $name = 'tMissArg';
5479
+			    $size = 1;
5480
+			    $data = '';
5481
+			    break;
5482
+		    case 0x17:	//	string
5483
+			    $name = 'tStr';
5484
+			    // offset: 1; size: var; Unicode string, 8-bit string length
5485
+			    $string = self::_readUnicodeStringShort(substr($formulaData, 1));
5486
+			    $size = 1 + $string['size'];
5487
+			    $data = self::_UTF8toExcelDoubleQuoted($string['value']);
5488
+			    break;
5489
+		    case 0x19:	//	Special attribute
5490
+			    // offset: 1; size: 1; attribute type flags:
5491
+			    switch (ord($formulaData[1])) {
5492
+			        case 0x01:
5493
+				        $name = 'tAttrVolatile';
5494
+				        $size = 4;
5495
+				        $data = null;
5496
+				        break;
5497
+			        case 0x02:
5498
+				        $name = 'tAttrIf';
5499
+				        $size = 4;
5500
+				        $data = null;
5501
+				        break;
5502
+			        case 0x04:
5503
+				        $name = 'tAttrChoose';
5504
+				        // offset: 2; size: 2; number of choices in the CHOOSE function ($nc, number of parameters decreased by 1)
5505
+				        $nc = self::_GetInt2d($formulaData, 2);
5506
+				        // offset: 4; size: 2 * $nc
5507
+				        // offset: 4 + 2 * $nc; size: 2
5508
+				        $size = 2 * $nc + 6;
5509
+				        $data = null;
5510
+				        break;
5511
+			        case 0x08:
5512
+				        $name = 'tAttrSkip';
5513
+				        $size = 4;
5514
+				        $data = null;
5515
+				        break;
5516
+			        case 0x10:
5517
+				        $name = 'tAttrSum';
5518
+				        $size = 4;
5519
+				        $data = null;
5520
+				        break;
5521
+			        case 0x40:
5522
+			        case 0x41:
5523
+				        $name = 'tAttrSpace';
5524
+				        $size = 4;
5525
+				        // offset: 2; size: 2; space type and position
5526
+				        switch (ord($formulaData[2])) {
5527
+				            case 0x00:
5528
+					            $spacetype = 'type0';
5529
+					            break;
5530
+				            case 0x01:
5531
+					            $spacetype = 'type1';
5532
+					            break;
5533
+				            case 0x02:
5534
+					            $spacetype = 'type2';
5535
+					            break;
5536
+				            case 0x03:
5537
+					            $spacetype = 'type3';
5538
+					            break;
5539
+				            case 0x04:
5540
+					            $spacetype = 'type4';
5541
+					            break;
5542
+				            case 0x05:
5543
+					            $spacetype = 'type5';
5544
+					            break;
5545
+				            default:
5546
+					            throw new PHPExcel_Reader_Exception('Unrecognized space type in tAttrSpace token');
5547
+					            break;
5548
+				        }
5549
+				    // offset: 3; size: 1; number of inserted spaces/carriage returns
5550
+				    $spacecount = ord($formulaData[3]);
5551
+
5552
+				    $data = array('spacetype' => $spacetype, 'spacecount' => $spacecount);
5553
+				    break;
5554 5554
 			default:
5555 5555
 				throw new PHPExcel_Reader_Exception('Unrecognized attribute flag in tAttr token');
5556 5556
 				break;
5557 5557
 			}
5558 5558
 			break;
5559
-		case 0x1C:	//	error code
5560
-			// offset: 1; size: 1; error code
5561
-			$name = 'tErr';
5562
-			$size = 2;
5563
-			$data = self::_mapErrorCode(ord($formulaData[1]));
5564
-			break;
5565
-		case 0x1D:	//	boolean
5566
-			// offset: 1; size: 1; 0 = false, 1 = true;
5567
-			$name = 'tBool';
5568
-			$size = 2;
5569
-			$data = ord($formulaData[1]) ? 'TRUE' : 'FALSE';
5570
-			break;
5571
-		case 0x1E:	//	integer
5572
-			// offset: 1; size: 2; unsigned 16-bit integer
5573
-			$name = 'tInt';
5574
-			$size = 3;
5575
-			$data = self::_GetInt2d($formulaData, 1);
5576
-			break;
5577
-		case 0x1F:	//	number
5578
-			// offset: 1; size: 8;
5579
-			$name = 'tNum';
5580
-			$size = 9;
5581
-			$data = self::_extractNumber(substr($formulaData, 1));
5582
-			$data = str_replace(',', '.', (string)$data); // in case non-English locale
5583
-			break;
5584
-		case 0x20:	//	array constant
5585
-		case 0x40:
5586
-		case 0x60:
5587
-			// offset: 1; size: 7; not used
5588
-			$name = 'tArray';
5589
-			$size = 8;
5590
-			$data = null;
5591
-			break;
5592
-		case 0x21:	//	function with fixed number of arguments
5593
-		case 0x41:
5594
-		case 0x61:
5595
-			$name = 'tFunc';
5596
-			$size = 3;
5597
-			// offset: 1; size: 2; index to built-in sheet function
5598
-			switch (self::_GetInt2d($formulaData, 1)) {
5599
-			case   2: $function = 'ISNA'; 			$args = 1; 	break;
5600
-			case   3: $function = 'ISERROR'; 		$args = 1; 	break;
5601
-			case  10: $function = 'NA'; 			$args = 0; 	break;
5602
-			case  15: $function = 'SIN'; 			$args = 1; 	break;
5603
-			case  16: $function = 'COS'; 			$args = 1; 	break;
5604
-			case  17: $function = 'TAN'; 			$args = 1; 	break;
5605
-			case  18: $function = 'ATAN'; 			$args = 1; 	break;
5606
-			case  19: $function = 'PI'; 			$args = 0; 	break;
5607
-			case  20: $function = 'SQRT'; 			$args = 1; 	break;
5608
-			case  21: $function = 'EXP'; 			$args = 1; 	break;
5609
-			case  22: $function = 'LN'; 			$args = 1; 	break;
5610
-			case  23: $function = 'LOG10'; 			$args = 1; 	break;
5611
-			case  24: $function = 'ABS'; 			$args = 1; 	break;
5612
-			case  25: $function = 'INT'; 			$args = 1; 	break;
5613
-			case  26: $function = 'SIGN'; 			$args = 1; 	break;
5614
-			case  27: $function = 'ROUND'; 			$args = 2; 	break;
5615
-			case  30: $function = 'REPT'; 			$args = 2; 	break;
5616
-			case  31: $function = 'MID'; 			$args = 3; 	break;
5617
-			case  32: $function = 'LEN'; 			$args = 1; 	break;
5618
-			case  33: $function = 'VALUE'; 			$args = 1; 	break;
5619
-			case  34: $function = 'TRUE'; 			$args = 0; 	break;
5620
-			case  35: $function = 'FALSE'; 			$args = 0; 	break;
5621
-			case  38: $function = 'NOT'; 			$args = 1; 	break;
5622
-			case  39: $function = 'MOD'; 			$args = 2;	break;
5623
-			case  40: $function = 'DCOUNT'; 		$args = 3;	break;
5624
-			case  41: $function = 'DSUM'; 			$args = 3;	break;
5625
-			case  42: $function = 'DAVERAGE'; 		$args = 3;	break;
5626
-			case  43: $function = 'DMIN'; 			$args = 3;	break;
5627
-			case  44: $function = 'DMAX'; 			$args = 3;	break;
5628
-			case  45: $function = 'DSTDEV'; 		$args = 3;	break;
5629
-			case  48: $function = 'TEXT'; 			$args = 2;	break;
5630
-			case  61: $function = 'MIRR'; 			$args = 3;	break;
5631
-			case  63: $function = 'RAND'; 			$args = 0;	break;
5632
-			case  65: $function = 'DATE'; 			$args = 3;	break;
5633
-			case  66: $function = 'TIME'; 			$args = 3;	break;
5634
-			case  67: $function = 'DAY'; 			$args = 1;	break;
5635
-			case  68: $function = 'MONTH'; 			$args = 1;	break;
5636
-			case  69: $function = 'YEAR'; 			$args = 1;	break;
5637
-			case  71: $function = 'HOUR'; 			$args = 1;	break;
5638
-			case  72: $function = 'MINUTE'; 		$args = 1;	break;
5639
-			case  73: $function = 'SECOND'; 		$args = 1;	break;
5640
-			case  74: $function = 'NOW'; 			$args = 0;	break;
5641
-			case  75: $function = 'AREAS'; 			$args = 1;	break;
5642
-			case  76: $function = 'ROWS'; 			$args = 1;	break;
5643
-			case  77: $function = 'COLUMNS'; 		$args = 1;	break;
5644
-			case  83: $function = 'TRANSPOSE'; 		$args = 1;	break;
5645
-			case  86: $function = 'TYPE'; 			$args = 1;	break;
5646
-			case  97: $function = 'ATAN2'; 			$args = 2;	break;
5647
-			case  98: $function = 'ASIN'; 			$args = 1;	break;
5648
-			case  99: $function = 'ACOS'; 			$args = 1;	break;
5649
-			case 105: $function = 'ISREF'; 			$args = 1;	break;
5650
-			case 111: $function = 'CHAR'; 			$args = 1;	break;
5651
-			case 112: $function = 'LOWER'; 			$args = 1;	break;
5652
-			case 113: $function = 'UPPER'; 			$args = 1;	break;
5653
-			case 114: $function = 'PROPER'; 		$args = 1;	break;
5654
-			case 117: $function = 'EXACT'; 			$args = 2;	break;
5655
-			case 118: $function = 'TRIM'; 			$args = 1;	break;
5656
-			case 119: $function = 'REPLACE'; 		$args = 4;	break;
5657
-			case 121: $function = 'CODE'; 			$args = 1;	break;
5658
-			case 126: $function = 'ISERR'; 			$args = 1;	break;
5659
-			case 127: $function = 'ISTEXT'; 		$args = 1;	break;
5660
-			case 128: $function = 'ISNUMBER'; 		$args = 1;	break;
5661
-			case 129: $function = 'ISBLANK'; 		$args = 1;	break;
5662
-			case 130: $function = 'T'; 				$args = 1;	break;
5663
-			case 131: $function = 'N'; 				$args = 1;	break;
5664
-			case 140: $function = 'DATEVALUE'; 		$args = 1;	break;
5665
-			case 141: $function = 'TIMEVALUE'; 		$args = 1;	break;
5666
-			case 142: $function = 'SLN'; 			$args = 3;	break;
5667
-			case 143: $function = 'SYD'; 			$args = 4;	break;
5668
-			case 162: $function = 'CLEAN'; 			$args = 1;	break;
5669
-			case 163: $function = 'MDETERM'; 		$args = 1;	break;
5670
-			case 164: $function = 'MINVERSE'; 		$args = 1;	break;
5671
-			case 165: $function = 'MMULT'; 			$args = 2;	break;
5672
-			case 184: $function = 'FACT'; 			$args = 1;	break;
5673
-			case 189: $function = 'DPRODUCT'; 		$args = 3;	break;
5674
-			case 190: $function = 'ISNONTEXT'; 		$args = 1;	break;
5675
-			case 195: $function = 'DSTDEVP'; 		$args = 3;	break;
5676
-			case 196: $function = 'DVARP'; 			$args = 3;	break;
5677
-			case 198: $function = 'ISLOGICAL'; 		$args = 1;	break;
5678
-			case 199: $function = 'DCOUNTA'; 		$args = 3;	break;
5679
-			case 207: $function = 'REPLACEB'; 		$args = 4;	break;
5680
-			case 210: $function = 'MIDB'; 			$args = 3;	break;
5681
-			case 211: $function = 'LENB'; 			$args = 1;	break;
5682
-			case 212: $function = 'ROUNDUP'; 		$args = 2;	break;
5683
-			case 213: $function = 'ROUNDDOWN'; 		$args = 2;	break;
5684
-			case 214: $function = 'ASC'; 			$args = 1;	break;
5685
-			case 215: $function = 'DBCS'; 			$args = 1;	break;
5686
-			case 221: $function = 'TODAY'; 			$args = 0;	break;
5687
-			case 229: $function = 'SINH'; 			$args = 1;	break;
5688
-			case 230: $function = 'COSH'; 			$args = 1;	break;
5689
-			case 231: $function = 'TANH'; 			$args = 1;	break;
5690
-			case 232: $function = 'ASINH'; 			$args = 1;	break;
5691
-			case 233: $function = 'ACOSH'; 			$args = 1;	break;
5692
-			case 234: $function = 'ATANH'; 			$args = 1;	break;
5693
-			case 235: $function = 'DGET'; 			$args = 3;	break;
5694
-			case 244: $function = 'INFO'; 			$args = 1;	break;
5695
-			case 252: $function = 'FREQUENCY'; 		$args = 2;	break;
5696
-			case 261: $function = 'ERROR.TYPE'; 	$args = 1;	break;
5697
-			case 271: $function = 'GAMMALN'; 		$args = 1;	break;
5698
-			case 273: $function = 'BINOMDIST'; 		$args = 4;	break;
5699
-			case 274: $function = 'CHIDIST'; 		$args = 2;	break;
5700
-			case 275: $function = 'CHIINV'; 		$args = 2;	break;
5701
-			case 276: $function = 'COMBIN'; 		$args = 2;	break;
5702
-			case 277: $function = 'CONFIDENCE'; 	$args = 3;	break;
5703
-			case 278: $function = 'CRITBINOM'; 		$args = 3;	break;
5704
-			case 279: $function = 'EVEN'; 			$args = 1;	break;
5705
-			case 280: $function = 'EXPONDIST'; 		$args = 3;	break;
5706
-			case 281: $function = 'FDIST'; 			$args = 3;	break;
5707
-			case 282: $function = 'FINV'; 			$args = 3;	break;
5708
-			case 283: $function = 'FISHER'; 		$args = 1;	break;
5709
-			case 284: $function = 'FISHERINV'; 		$args = 1;	break;
5710
-			case 285: $function = 'FLOOR'; 			$args = 2;	break;
5711
-			case 286: $function = 'GAMMADIST'; 		$args = 4;	break;
5712
-			case 287: $function = 'GAMMAINV'; 		$args = 3;	break;
5713
-			case 288: $function = 'CEILING'; 		$args = 2;	break;
5714
-			case 289: $function = 'HYPGEOMDIST';	$args = 4;	break;
5715
-			case 290: $function = 'LOGNORMDIST';	$args = 3;	break;
5716
-			case 291: $function = 'LOGINV';			$args = 3;	break;
5717
-			case 292: $function = 'NEGBINOMDIST';	$args = 3;	break;
5718
-			case 293: $function = 'NORMDIST';		$args = 4;	break;
5719
-			case 294: $function = 'NORMSDIST';		$args = 1;	break;
5720
-			case 295: $function = 'NORMINV';		$args = 3;	break;
5721
-			case 296: $function = 'NORMSINV';		$args = 1;	break;
5722
-			case 297: $function = 'STANDARDIZE';	$args = 3;	break;
5723
-			case 298: $function = 'ODD';			$args = 1;	break;
5724
-			case 299: $function = 'PERMUT';			$args = 2;	break;
5725
-			case 300: $function = 'POISSON';		$args = 3;	break;
5726
-			case 301: $function = 'TDIST';			$args = 3;	break;
5727
-			case 302: $function = 'WEIBULL';		$args = 4;	break;
5728
-			case 303: $function = 'SUMXMY2';		$args = 2;	break;
5729
-			case 304: $function = 'SUMX2MY2';		$args = 2;	break;
5730
-			case 305: $function = 'SUMX2PY2';		$args = 2;	break;
5731
-			case 306: $function = 'CHITEST';		$args = 2;	break;
5732
-			case 307: $function = 'CORREL';			$args = 2;	break;
5733
-			case 308: $function = 'COVAR';			$args = 2;	break;
5734
-			case 309: $function = 'FORECAST';		$args = 3;	break;
5735
-			case 310: $function = 'FTEST';			$args = 2;	break;
5736
-			case 311: $function = 'INTERCEPT';		$args = 2;	break;
5737
-			case 312: $function = 'PEARSON';		$args = 2;	break;
5738
-			case 313: $function = 'RSQ';			$args = 2;	break;
5739
-			case 314: $function = 'STEYX';			$args = 2;	break;
5740
-			case 315: $function = 'SLOPE';			$args = 2;	break;
5741
-			case 316: $function = 'TTEST';			$args = 4;	break;
5742
-			case 325: $function = 'LARGE';			$args = 2;	break;
5743
-			case 326: $function = 'SMALL';			$args = 2;	break;
5744
-			case 327: $function = 'QUARTILE';		$args = 2;	break;
5745
-			case 328: $function = 'PERCENTILE';		$args = 2;	break;
5746
-			case 331: $function = 'TRIMMEAN';		$args = 2;	break;
5747
-			case 332: $function = 'TINV';			$args = 2;	break;
5748
-			case 337: $function = 'POWER';			$args = 2;	break;
5749
-			case 342: $function = 'RADIANS';		$args = 1;	break;
5750
-			case 343: $function = 'DEGREES';		$args = 1;	break;
5751
-			case 346: $function = 'COUNTIF';		$args = 2;	break;
5752
-			case 347: $function = 'COUNTBLANK';		$args = 1;	break;
5753
-			case 350: $function = 'ISPMT';			$args = 4;	break;
5754
-			case 351: $function = 'DATEDIF';		$args = 3;	break;
5755
-			case 352: $function = 'DATESTRING';		$args = 1;	break;
5756
-			case 353: $function = 'NUMBERSTRING';	$args = 2;	break;
5757
-			case 360: $function = 'PHONETIC';		$args = 1;	break;
5758
-			case 368: $function = 'BAHTTEXT';		$args = 1;	break;
5759
-			default:
5760
-				throw new PHPExcel_Reader_Exception('Unrecognized function in formula');
5761
-				break;
5762
-			}
5559
+		    case 0x1C:	//	error code
5560
+			    // offset: 1; size: 1; error code
5561
+			    $name = 'tErr';
5562
+			    $size = 2;
5563
+			    $data = self::_mapErrorCode(ord($formulaData[1]));
5564
+			    break;
5565
+		    case 0x1D:	//	boolean
5566
+			    // offset: 1; size: 1; 0 = false, 1 = true;
5567
+			    $name = 'tBool';
5568
+			    $size = 2;
5569
+			    $data = ord($formulaData[1]) ? 'TRUE' : 'FALSE';
5570
+			    break;
5571
+		    case 0x1E:	//	integer
5572
+			    // offset: 1; size: 2; unsigned 16-bit integer
5573
+			    $name = 'tInt';
5574
+			    $size = 3;
5575
+			    $data = self::_GetInt2d($formulaData, 1);
5576
+			    break;
5577
+		    case 0x1F:	//	number
5578
+			    // offset: 1; size: 8;
5579
+			    $name = 'tNum';
5580
+			    $size = 9;
5581
+			    $data = self::_extractNumber(substr($formulaData, 1));
5582
+			    $data = str_replace(',', '.', (string)$data); // in case non-English locale
5583
+			    break;
5584
+		    case 0x20:	//	array constant
5585
+		    case 0x40:
5586
+		    case 0x60:
5587
+			    // offset: 1; size: 7; not used
5588
+			    $name = 'tArray';
5589
+			    $size = 8;
5590
+			    $data = null;
5591
+			    break;
5592
+		    case 0x21:	//	function with fixed number of arguments
5593
+		    case 0x41:
5594
+		    case 0x61:
5595
+			    $name = 'tFunc';
5596
+			    $size = 3;
5597
+			    // offset: 1; size: 2; index to built-in sheet function
5598
+			    switch (self::_GetInt2d($formulaData, 1)) {
5599
+			        case   2: $function = 'ISNA'; 			$args = 1; 	break;
5600
+			        case   3: $function = 'ISERROR'; 		$args = 1; 	break;
5601
+			        case  10: $function = 'NA'; 			$args = 0; 	break;
5602
+			        case  15: $function = 'SIN'; 			$args = 1; 	break;
5603
+			        case  16: $function = 'COS'; 			$args = 1; 	break;
5604
+			        case  17: $function = 'TAN'; 			$args = 1; 	break;
5605
+			        case  18: $function = 'ATAN'; 			$args = 1; 	break;
5606
+			        case  19: $function = 'PI'; 			$args = 0; 	break;
5607
+			        case  20: $function = 'SQRT'; 			$args = 1; 	break;
5608
+			        case  21: $function = 'EXP'; 			$args = 1; 	break;
5609
+			        case  22: $function = 'LN'; 			$args = 1; 	break;
5610
+			        case  23: $function = 'LOG10'; 			$args = 1; 	break;
5611
+			        case  24: $function = 'ABS'; 			$args = 1; 	break;
5612
+			        case  25: $function = 'INT'; 			$args = 1; 	break;
5613
+			        case  26: $function = 'SIGN'; 			$args = 1; 	break;
5614
+			        case  27: $function = 'ROUND'; 			$args = 2; 	break;
5615
+			        case  30: $function = 'REPT'; 			$args = 2; 	break;
5616
+			        case  31: $function = 'MID'; 			$args = 3; 	break;
5617
+			        case  32: $function = 'LEN'; 			$args = 1; 	break;
5618
+			        case  33: $function = 'VALUE'; 			$args = 1; 	break;
5619
+			        case  34: $function = 'TRUE'; 			$args = 0; 	break;
5620
+			        case  35: $function = 'FALSE'; 			$args = 0; 	break;
5621
+			        case  38: $function = 'NOT'; 			$args = 1; 	break;
5622
+			        case  39: $function = 'MOD'; 			$args = 2;	break;
5623
+			        case  40: $function = 'DCOUNT'; 		$args = 3;	break;
5624
+			        case  41: $function = 'DSUM'; 			$args = 3;	break;
5625
+			        case  42: $function = 'DAVERAGE'; 		$args = 3;	break;
5626
+			        case  43: $function = 'DMIN'; 			$args = 3;	break;
5627
+			        case  44: $function = 'DMAX'; 			$args = 3;	break;
5628
+			        case  45: $function = 'DSTDEV'; 		$args = 3;	break;
5629
+			        case  48: $function = 'TEXT'; 			$args = 2;	break;
5630
+			        case  61: $function = 'MIRR'; 			$args = 3;	break;
5631
+			        case  63: $function = 'RAND'; 			$args = 0;	break;
5632
+			        case  65: $function = 'DATE'; 			$args = 3;	break;
5633
+			        case  66: $function = 'TIME'; 			$args = 3;	break;
5634
+			        case  67: $function = 'DAY'; 			$args = 1;	break;
5635
+			        case  68: $function = 'MONTH'; 			$args = 1;	break;
5636
+			        case  69: $function = 'YEAR'; 			$args = 1;	break;
5637
+			        case  71: $function = 'HOUR'; 			$args = 1;	break;
5638
+			        case  72: $function = 'MINUTE'; 		$args = 1;	break;
5639
+			        case  73: $function = 'SECOND'; 		$args = 1;	break;
5640
+			        case  74: $function = 'NOW'; 			$args = 0;	break;
5641
+			        case  75: $function = 'AREAS'; 			$args = 1;	break;
5642
+			        case  76: $function = 'ROWS'; 			$args = 1;	break;
5643
+			        case  77: $function = 'COLUMNS'; 		$args = 1;	break;
5644
+			        case  83: $function = 'TRANSPOSE'; 		$args = 1;	break;
5645
+			        case  86: $function = 'TYPE'; 			$args = 1;	break;
5646
+			        case  97: $function = 'ATAN2'; 			$args = 2;	break;
5647
+			        case  98: $function = 'ASIN'; 			$args = 1;	break;
5648
+			        case  99: $function = 'ACOS'; 			$args = 1;	break;
5649
+			        case 105: $function = 'ISREF'; 			$args = 1;	break;
5650
+			        case 111: $function = 'CHAR'; 			$args = 1;	break;
5651
+			        case 112: $function = 'LOWER'; 			$args = 1;	break;
5652
+			        case 113: $function = 'UPPER'; 			$args = 1;	break;
5653
+			        case 114: $function = 'PROPER'; 		$args = 1;	break;
5654
+			        case 117: $function = 'EXACT'; 			$args = 2;	break;
5655
+			        case 118: $function = 'TRIM'; 			$args = 1;	break;
5656
+			        case 119: $function = 'REPLACE'; 		$args = 4;	break;
5657
+			        case 121: $function = 'CODE'; 			$args = 1;	break;
5658
+			        case 126: $function = 'ISERR'; 			$args = 1;	break;
5659
+			        case 127: $function = 'ISTEXT'; 		$args = 1;	break;
5660
+			        case 128: $function = 'ISNUMBER'; 		$args = 1;	break;
5661
+			        case 129: $function = 'ISBLANK'; 		$args = 1;	break;
5662
+			        case 130: $function = 'T'; 				$args = 1;	break;
5663
+			        case 131: $function = 'N'; 				$args = 1;	break;
5664
+			        case 140: $function = 'DATEVALUE'; 		$args = 1;	break;
5665
+			        case 141: $function = 'TIMEVALUE'; 		$args = 1;	break;
5666
+			        case 142: $function = 'SLN'; 			$args = 3;	break;
5667
+			        case 143: $function = 'SYD'; 			$args = 4;	break;
5668
+			        case 162: $function = 'CLEAN'; 			$args = 1;	break;
5669
+			        case 163: $function = 'MDETERM'; 		$args = 1;	break;
5670
+			        case 164: $function = 'MINVERSE'; 		$args = 1;	break;
5671
+			        case 165: $function = 'MMULT'; 			$args = 2;	break;
5672
+			        case 184: $function = 'FACT'; 			$args = 1;	break;
5673
+			        case 189: $function = 'DPRODUCT'; 		$args = 3;	break;
5674
+			        case 190: $function = 'ISNONTEXT'; 		$args = 1;	break;
5675
+			        case 195: $function = 'DSTDEVP'; 		$args = 3;	break;
5676
+			        case 196: $function = 'DVARP'; 			$args = 3;	break;
5677
+			        case 198: $function = 'ISLOGICAL'; 		$args = 1;	break;
5678
+			        case 199: $function = 'DCOUNTA'; 		$args = 3;	break;
5679
+			        case 207: $function = 'REPLACEB'; 		$args = 4;	break;
5680
+			        case 210: $function = 'MIDB'; 			$args = 3;	break;
5681
+			        case 211: $function = 'LENB'; 			$args = 1;	break;
5682
+			        case 212: $function = 'ROUNDUP'; 		$args = 2;	break;
5683
+			        case 213: $function = 'ROUNDDOWN'; 		$args = 2;	break;
5684
+			        case 214: $function = 'ASC'; 			$args = 1;	break;
5685
+			        case 215: $function = 'DBCS'; 			$args = 1;	break;
5686
+			        case 221: $function = 'TODAY'; 			$args = 0;	break;
5687
+			        case 229: $function = 'SINH'; 			$args = 1;	break;
5688
+			        case 230: $function = 'COSH'; 			$args = 1;	break;
5689
+			        case 231: $function = 'TANH'; 			$args = 1;	break;
5690
+			        case 232: $function = 'ASINH'; 			$args = 1;	break;
5691
+			        case 233: $function = 'ACOSH'; 			$args = 1;	break;
5692
+			        case 234: $function = 'ATANH'; 			$args = 1;	break;
5693
+			        case 235: $function = 'DGET'; 			$args = 3;	break;
5694
+			        case 244: $function = 'INFO'; 			$args = 1;	break;
5695
+			        case 252: $function = 'FREQUENCY'; 		$args = 2;	break;
5696
+			        case 261: $function = 'ERROR.TYPE'; 	$args = 1;	break;
5697
+			        case 271: $function = 'GAMMALN'; 		$args = 1;	break;
5698
+			        case 273: $function = 'BINOMDIST'; 		$args = 4;	break;
5699
+			        case 274: $function = 'CHIDIST'; 		$args = 2;	break;
5700
+			        case 275: $function = 'CHIINV'; 		$args = 2;	break;
5701
+			        case 276: $function = 'COMBIN'; 		$args = 2;	break;
5702
+			        case 277: $function = 'CONFIDENCE'; 	$args = 3;	break;
5703
+			        case 278: $function = 'CRITBINOM'; 		$args = 3;	break;
5704
+			        case 279: $function = 'EVEN'; 			$args = 1;	break;
5705
+			        case 280: $function = 'EXPONDIST'; 		$args = 3;	break;
5706
+			        case 281: $function = 'FDIST'; 			$args = 3;	break;
5707
+			        case 282: $function = 'FINV'; 			$args = 3;	break;
5708
+			        case 283: $function = 'FISHER'; 		$args = 1;	break;
5709
+			        case 284: $function = 'FISHERINV'; 		$args = 1;	break;
5710
+			        case 285: $function = 'FLOOR'; 			$args = 2;	break;
5711
+			        case 286: $function = 'GAMMADIST'; 		$args = 4;	break;
5712
+			        case 287: $function = 'GAMMAINV'; 		$args = 3;	break;
5713
+			        case 288: $function = 'CEILING'; 		$args = 2;	break;
5714
+			        case 289: $function = 'HYPGEOMDIST';	$args = 4;	break;
5715
+			        case 290: $function = 'LOGNORMDIST';	$args = 3;	break;
5716
+			        case 291: $function = 'LOGINV';			$args = 3;	break;
5717
+			        case 292: $function = 'NEGBINOMDIST';	$args = 3;	break;
5718
+			        case 293: $function = 'NORMDIST';		$args = 4;	break;
5719
+			        case 294: $function = 'NORMSDIST';		$args = 1;	break;
5720
+			        case 295: $function = 'NORMINV';		$args = 3;	break;
5721
+			        case 296: $function = 'NORMSINV';		$args = 1;	break;
5722
+			        case 297: $function = 'STANDARDIZE';	$args = 3;	break;
5723
+			        case 298: $function = 'ODD';			$args = 1;	break;
5724
+			        case 299: $function = 'PERMUT';			$args = 2;	break;
5725
+			        case 300: $function = 'POISSON';		$args = 3;	break;
5726
+			        case 301: $function = 'TDIST';			$args = 3;	break;
5727
+			        case 302: $function = 'WEIBULL';		$args = 4;	break;
5728
+			        case 303: $function = 'SUMXMY2';		$args = 2;	break;
5729
+			        case 304: $function = 'SUMX2MY2';		$args = 2;	break;
5730
+			        case 305: $function = 'SUMX2PY2';		$args = 2;	break;
5731
+			        case 306: $function = 'CHITEST';		$args = 2;	break;
5732
+			        case 307: $function = 'CORREL';			$args = 2;	break;
5733
+			        case 308: $function = 'COVAR';			$args = 2;	break;
5734
+			        case 309: $function = 'FORECAST';		$args = 3;	break;
5735
+			        case 310: $function = 'FTEST';			$args = 2;	break;
5736
+			        case 311: $function = 'INTERCEPT';		$args = 2;	break;
5737
+			        case 312: $function = 'PEARSON';		$args = 2;	break;
5738
+			        case 313: $function = 'RSQ';			$args = 2;	break;
5739
+			        case 314: $function = 'STEYX';			$args = 2;	break;
5740
+			        case 315: $function = 'SLOPE';			$args = 2;	break;
5741
+			        case 316: $function = 'TTEST';			$args = 4;	break;
5742
+			        case 325: $function = 'LARGE';			$args = 2;	break;
5743
+			        case 326: $function = 'SMALL';			$args = 2;	break;
5744
+			        case 327: $function = 'QUARTILE';		$args = 2;	break;
5745
+			        case 328: $function = 'PERCENTILE';		$args = 2;	break;
5746
+			        case 331: $function = 'TRIMMEAN';		$args = 2;	break;
5747
+			        case 332: $function = 'TINV';			$args = 2;	break;
5748
+			        case 337: $function = 'POWER';			$args = 2;	break;
5749
+			        case 342: $function = 'RADIANS';		$args = 1;	break;
5750
+			        case 343: $function = 'DEGREES';		$args = 1;	break;
5751
+			        case 346: $function = 'COUNTIF';		$args = 2;	break;
5752
+			        case 347: $function = 'COUNTBLANK';		$args = 1;	break;
5753
+			        case 350: $function = 'ISPMT';			$args = 4;	break;
5754
+			        case 351: $function = 'DATEDIF';		$args = 3;	break;
5755
+			        case 352: $function = 'DATESTRING';		$args = 1;	break;
5756
+			        case 353: $function = 'NUMBERSTRING';	$args = 2;	break;
5757
+			        case 360: $function = 'PHONETIC';		$args = 1;	break;
5758
+			        case 368: $function = 'BAHTTEXT';		$args = 1;	break;
5759
+			        default:
5760
+				        throw new PHPExcel_Reader_Exception('Unrecognized function in formula');
5761
+				        break;
5762
+			    }
5763 5763
 			$data = array('function' => $function, 'args' => $args);
5764 5764
 			break;
5765
-		case 0x22:	//	function with variable number of arguments
5766
-		case 0x42:
5767
-		case 0x62:
5768
-			$name = 'tFuncV';
5769
-			$size = 4;
5770
-			// offset: 1; size: 1; number of arguments
5771
-			$args = ord($formulaData[1]);
5772
-			// offset: 2: size: 2; index to built-in sheet function
5773
-			$index = self::_GetInt2d($formulaData, 2);
5774
-			switch ($index) {
5775
-			case   0: $function = 'COUNT';			break;
5776
-			case   1: $function = 'IF';				break;
5777
-			case   4: $function = 'SUM';			break;
5778
-			case   5: $function = 'AVERAGE';		break;
5779
-			case   6: $function = 'MIN';			break;
5780
-			case   7: $function = 'MAX';			break;
5781
-			case   8: $function = 'ROW';			break;
5782
-			case   9: $function = 'COLUMN';			break;
5783
-			case  11: $function = 'NPV';			break;
5784
-			case  12: $function = 'STDEV';			break;
5785
-			case  13: $function = 'DOLLAR';			break;
5786
-			case  14: $function = 'FIXED';			break;
5787
-			case  28: $function = 'LOOKUP';			break;
5788
-			case  29: $function = 'INDEX';			break;
5789
-			case  36: $function = 'AND';			break;
5790
-			case  37: $function = 'OR';				break;
5791
-			case  46: $function = 'VAR';			break;
5792
-			case  49: $function = 'LINEST';			break;
5793
-			case  50: $function = 'TREND';			break;
5794
-			case  51: $function = 'LOGEST';			break;
5795
-			case  52: $function = 'GROWTH';			break;
5796
-			case  56: $function = 'PV';				break;
5797
-			case  57: $function = 'FV';				break;
5798
-			case  58: $function = 'NPER';			break;
5799
-			case  59: $function = 'PMT';			break;
5800
-			case  60: $function = 'RATE';			break;
5801
-			case  62: $function = 'IRR';			break;
5802
-			case  64: $function = 'MATCH';			break;
5803
-			case  70: $function = 'WEEKDAY';		break;
5804
-			case  78: $function = 'OFFSET';			break;
5805
-			case  82: $function = 'SEARCH';			break;
5806
-			case 100: $function = 'CHOOSE';			break;
5807
-			case 101: $function = 'HLOOKUP';		break;
5808
-			case 102: $function = 'VLOOKUP';		break;
5809
-			case 109: $function = 'LOG';			break;
5810
-			case 115: $function = 'LEFT';			break;
5811
-			case 116: $function = 'RIGHT';			break;
5812
-			case 120: $function = 'SUBSTITUTE';		break;
5813
-			case 124: $function = 'FIND';			break;
5814
-			case 125: $function = 'CELL';			break;
5815
-			case 144: $function = 'DDB';			break;
5816
-			case 148: $function = 'INDIRECT';		break;
5817
-			case 167: $function = 'IPMT';			break;
5818
-			case 168: $function = 'PPMT';			break;
5819
-			case 169: $function = 'COUNTA';			break;
5820
-			case 183: $function = 'PRODUCT';		break;
5821
-			case 193: $function = 'STDEVP';			break;
5822
-			case 194: $function = 'VARP';			break;
5823
-			case 197: $function = 'TRUNC';			break;
5824
-			case 204: $function = 'USDOLLAR';		break;
5825
-			case 205: $function = 'FINDB';			break;
5826
-			case 206: $function = 'SEARCHB';		break;
5827
-			case 208: $function = 'LEFTB';			break;
5828
-			case 209: $function = 'RIGHTB';			break;
5829
-			case 216: $function = 'RANK';			break;
5830
-			case 219: $function = 'ADDRESS';		break;
5831
-			case 220: $function = 'DAYS360';		break;
5832
-			case 222: $function = 'VDB';			break;
5833
-			case 227: $function = 'MEDIAN';			break;
5834
-			case 228: $function = 'SUMPRODUCT';		break;
5835
-			case 247: $function = 'DB';				break;
5836
-			case 255: $function = '';				break;
5837
-			case 269: $function = 'AVEDEV';			break;
5838
-			case 270: $function = 'BETADIST';		break;
5839
-			case 272: $function = 'BETAINV';		break;
5840
-			case 317: $function = 'PROB';			break;
5841
-			case 318: $function = 'DEVSQ';			break;
5842
-			case 319: $function = 'GEOMEAN';		break;
5843
-			case 320: $function = 'HARMEAN';		break;
5844
-			case 321: $function = 'SUMSQ';			break;
5845
-			case 322: $function = 'KURT';			break;
5846
-			case 323: $function = 'SKEW';			break;
5847
-			case 324: $function = 'ZTEST';			break;
5848
-			case 329: $function = 'PERCENTRANK';	break;
5849
-			case 330: $function = 'MODE';			break;
5850
-			case 336: $function = 'CONCATENATE';	break;
5851
-			case 344: $function = 'SUBTOTAL';		break;
5852
-			case 345: $function = 'SUMIF';			break;
5853
-			case 354: $function = 'ROMAN';			break;
5854
-			case 358: $function = 'GETPIVOTDATA';	break;
5855
-			case 359: $function = 'HYPERLINK';		break;
5856
-			case 361: $function = 'AVERAGEA';		break;
5857
-			case 362: $function = 'MAXA';			break;
5858
-			case 363: $function = 'MINA';			break;
5859
-			case 364: $function = 'STDEVPA';		break;
5860
-			case 365: $function = 'VARPA';			break;
5861
-			case 366: $function = 'STDEVA';			break;
5862
-			case 367: $function = 'VARA';			break;
5863
-			default:
5864
-				throw new PHPExcel_Reader_Exception('Unrecognized function in formula');
5865
-				break;
5866
-			}
5765
+		    case 0x22:	//	function with variable number of arguments
5766
+		    case 0x42:
5767
+		    case 0x62:
5768
+			    $name = 'tFuncV';
5769
+			    $size = 4;
5770
+			    // offset: 1; size: 1; number of arguments
5771
+			    $args = ord($formulaData[1]);
5772
+			    // offset: 2: size: 2; index to built-in sheet function
5773
+			    $index = self::_GetInt2d($formulaData, 2);
5774
+			    switch ($index) {
5775
+			        case   0: $function = 'COUNT';			break;
5776
+			        case   1: $function = 'IF';				break;
5777
+			        case   4: $function = 'SUM';			break;
5778
+			        case   5: $function = 'AVERAGE';		break;
5779
+			        case   6: $function = 'MIN';			break;
5780
+			        case   7: $function = 'MAX';			break;
5781
+			        case   8: $function = 'ROW';			break;
5782
+			        case   9: $function = 'COLUMN';			break;
5783
+			        case  11: $function = 'NPV';			break;
5784
+			        case  12: $function = 'STDEV';			break;
5785
+			        case  13: $function = 'DOLLAR';			break;
5786
+			        case  14: $function = 'FIXED';			break;
5787
+			        case  28: $function = 'LOOKUP';			break;
5788
+			        case  29: $function = 'INDEX';			break;
5789
+			        case  36: $function = 'AND';			break;
5790
+			        case  37: $function = 'OR';				break;
5791
+			        case  46: $function = 'VAR';			break;
5792
+			        case  49: $function = 'LINEST';			break;
5793
+			        case  50: $function = 'TREND';			break;
5794
+			        case  51: $function = 'LOGEST';			break;
5795
+			        case  52: $function = 'GROWTH';			break;
5796
+			        case  56: $function = 'PV';				break;
5797
+			        case  57: $function = 'FV';				break;
5798
+			        case  58: $function = 'NPER';			break;
5799
+			        case  59: $function = 'PMT';			break;
5800
+			        case  60: $function = 'RATE';			break;
5801
+			        case  62: $function = 'IRR';			break;
5802
+			        case  64: $function = 'MATCH';			break;
5803
+			        case  70: $function = 'WEEKDAY';		break;
5804
+			        case  78: $function = 'OFFSET';			break;
5805
+			        case  82: $function = 'SEARCH';			break;
5806
+			        case 100: $function = 'CHOOSE';			break;
5807
+			        case 101: $function = 'HLOOKUP';		break;
5808
+			        case 102: $function = 'VLOOKUP';		break;
5809
+			        case 109: $function = 'LOG';			break;
5810
+			        case 115: $function = 'LEFT';			break;
5811
+			        case 116: $function = 'RIGHT';			break;
5812
+			        case 120: $function = 'SUBSTITUTE';		break;
5813
+			        case 124: $function = 'FIND';			break;
5814
+			        case 125: $function = 'CELL';			break;
5815
+			        case 144: $function = 'DDB';			break;
5816
+			        case 148: $function = 'INDIRECT';		break;
5817
+			        case 167: $function = 'IPMT';			break;
5818
+			        case 168: $function = 'PPMT';			break;
5819
+			        case 169: $function = 'COUNTA';			break;
5820
+			        case 183: $function = 'PRODUCT';		break;
5821
+			        case 193: $function = 'STDEVP';			break;
5822
+			        case 194: $function = 'VARP';			break;
5823
+			        case 197: $function = 'TRUNC';			break;
5824
+			        case 204: $function = 'USDOLLAR';		break;
5825
+			        case 205: $function = 'FINDB';			break;
5826
+			        case 206: $function = 'SEARCHB';		break;
5827
+			        case 208: $function = 'LEFTB';			break;
5828
+			        case 209: $function = 'RIGHTB';			break;
5829
+			        case 216: $function = 'RANK';			break;
5830
+			        case 219: $function = 'ADDRESS';		break;
5831
+			        case 220: $function = 'DAYS360';		break;
5832
+			        case 222: $function = 'VDB';			break;
5833
+			        case 227: $function = 'MEDIAN';			break;
5834
+			        case 228: $function = 'SUMPRODUCT';		break;
5835
+			        case 247: $function = 'DB';				break;
5836
+			        case 255: $function = '';				break;
5837
+			        case 269: $function = 'AVEDEV';			break;
5838
+			        case 270: $function = 'BETADIST';		break;
5839
+			        case 272: $function = 'BETAINV';		break;
5840
+			        case 317: $function = 'PROB';			break;
5841
+			        case 318: $function = 'DEVSQ';			break;
5842
+			        case 319: $function = 'GEOMEAN';		break;
5843
+			        case 320: $function = 'HARMEAN';		break;
5844
+			        case 321: $function = 'SUMSQ';			break;
5845
+			        case 322: $function = 'KURT';			break;
5846
+			        case 323: $function = 'SKEW';			break;
5847
+			        case 324: $function = 'ZTEST';			break;
5848
+			        case 329: $function = 'PERCENTRANK';	break;
5849
+			        case 330: $function = 'MODE';			break;
5850
+			        case 336: $function = 'CONCATENATE';	break;
5851
+			        case 344: $function = 'SUBTOTAL';		break;
5852
+			        case 345: $function = 'SUMIF';			break;
5853
+			        case 354: $function = 'ROMAN';			break;
5854
+			        case 358: $function = 'GETPIVOTDATA';	break;
5855
+			        case 359: $function = 'HYPERLINK';		break;
5856
+			        case 361: $function = 'AVERAGEA';		break;
5857
+			        case 362: $function = 'MAXA';			break;
5858
+			        case 363: $function = 'MINA';			break;
5859
+			        case 364: $function = 'STDEVPA';		break;
5860
+			        case 365: $function = 'VARPA';			break;
5861
+			        case 366: $function = 'STDEVA';			break;
5862
+			        case 367: $function = 'VARA';			break;
5863
+			        default:
5864
+				        throw new PHPExcel_Reader_Exception('Unrecognized function in formula');
5865
+				        break;
5866
+			    }
5867 5867
 			$data = array('function' => $function, 'args' => $args);
5868 5868
 			break;
5869
-		case 0x23:	//	index to defined name
5870
-		case 0x43:
5871
-		case 0x63:
5872
-			$name = 'tName';
5873
-			$size = 5;
5874
-			// offset: 1; size: 2; one-based index to definedname record
5875
-			$definedNameIndex = self::_GetInt2d($formulaData, 1) - 1;
5876
-			// offset: 2; size: 2; not used
5877
-			$data = $this->_definedname[$definedNameIndex]['name'];
5878
-			break;
5879
-		case 0x24:	//	single cell reference e.g. A5
5880
-		case 0x44:
5881
-		case 0x64:
5882
-			$name = 'tRef';
5883
-			$size = 5;
5884
-			$data = $this->_readBIFF8CellAddress(substr($formulaData, 1, 4));
5885
-			break;
5886
-		case 0x25:	//	cell range reference to cells in the same sheet (2d)
5887
-		case 0x45:
5888
-		case 0x65:
5889
-			$name = 'tArea';
5890
-			$size = 9;
5891
-			$data = $this->_readBIFF8CellRangeAddress(substr($formulaData, 1, 8));
5892
-			break;
5893
-		case 0x26:	//	Constant reference sub-expression
5894
-		case 0x46:
5895
-		case 0x66:
5896
-			$name = 'tMemArea';
5897
-			// offset: 1; size: 4; not used
5898
-			// offset: 5; size: 2; size of the following subexpression
5899
-			$subSize = self::_GetInt2d($formulaData, 5);
5900
-			$size = 7 + $subSize;
5901
-			$data = $this->_getFormulaFromData(substr($formulaData, 7, $subSize));
5902
-			break;
5903
-		case 0x27:	//	Deleted constant reference sub-expression
5904
-		case 0x47:
5905
-		case 0x67:
5906
-			$name = 'tMemErr';
5907
-			// offset: 1; size: 4; not used
5908
-			// offset: 5; size: 2; size of the following subexpression
5909
-			$subSize = self::_GetInt2d($formulaData, 5);
5910
-			$size = 7 + $subSize;
5911
-			$data = $this->_getFormulaFromData(substr($formulaData, 7, $subSize));
5912
-			break;
5913
-		case 0x29:	//	Variable reference sub-expression
5914
-		case 0x49:
5915
-		case 0x69:
5916
-			$name = 'tMemFunc';
5917
-			// offset: 1; size: 2; size of the following sub-expression
5918
-			$subSize = self::_GetInt2d($formulaData, 1);
5919
-			$size = 3 + $subSize;
5920
-			$data = $this->_getFormulaFromData(substr($formulaData, 3, $subSize));
5921
-			break;
5922
-
5923
-		case 0x2C: // Relative 2d cell reference reference, used in shared formulas and some other places
5924
-		case 0x4C:
5925
-		case 0x6C:
5926
-			$name = 'tRefN';
5927
-			$size = 5;
5928
-			$data = $this->_readBIFF8CellAddressB(substr($formulaData, 1, 4), $baseCell);
5929
-			break;
5930
-
5931
-		case 0x2D:	//	Relative 2d range reference
5932
-		case 0x4D:
5933
-		case 0x6D:
5934
-			$name = 'tAreaN';
5935
-			$size = 9;
5936
-			$data = $this->_readBIFF8CellRangeAddressB(substr($formulaData, 1, 8), $baseCell);
5937
-			break;
5938
-
5939
-		case 0x39:	//	External name
5940
-		case 0x59:
5941
-		case 0x79:
5942
-			$name = 'tNameX';
5943
-			$size = 7;
5944
-			// offset: 1; size: 2; index to REF entry in EXTERNSHEET record
5945
-			// offset: 3; size: 2; one-based index to DEFINEDNAME or EXTERNNAME record
5946
-			$index = self::_GetInt2d($formulaData, 3);
5947
-			// assume index is to EXTERNNAME record
5948
-			$data = $this->_externalNames[$index - 1]['name'];
5949
-			// offset: 5; size: 2; not used
5950
-			break;
5951
-
5952
-		case 0x3A:	//	3d reference to cell
5953
-		case 0x5A:
5954
-		case 0x7A:
5955
-			$name = 'tRef3d';
5956
-			$size = 7;
5957
-
5958
-			try {
5959
-				// offset: 1; size: 2; index to REF entry
5960
-				$sheetRange = $this->_readSheetRangeByRefIndex(self::_GetInt2d($formulaData, 1));
5961
-				// offset: 3; size: 4; cell address
5962
-				$cellAddress = $this->_readBIFF8CellAddress(substr($formulaData, 3, 4));
5963
-
5964
-				$data = "$sheetRange!$cellAddress";
5965
-			} catch (PHPExcel_Exception $e) {
5966
-				// deleted sheet reference
5967
-				$data = '#REF!';
5968
-			}
5969
-
5970
-			break;
5971
-		case 0x3B:	//	3d reference to cell range
5972
-		case 0x5B:
5973
-		case 0x7B:
5974
-			$name = 'tArea3d';
5975
-			$size = 11;
5976
-
5977
-			try {
5978
-				// offset: 1; size: 2; index to REF entry
5979
-				$sheetRange = $this->_readSheetRangeByRefIndex(self::_GetInt2d($formulaData, 1));
5980
-				// offset: 3; size: 8; cell address
5981
-				$cellRangeAddress = $this->_readBIFF8CellRangeAddress(substr($formulaData, 3, 8));
5982
-
5983
-				$data = "$sheetRange!$cellRangeAddress";
5984
-			} catch (PHPExcel_Exception $e) {
5985
-				// deleted sheet reference
5986
-				$data = '#REF!';
5987
-			}
5988
-
5989
-			break;
5990
-		// Unknown cases	// don't know how to deal with
5991
-		default:
5992
-			throw new PHPExcel_Reader_Exception('Unrecognized token ' . sprintf('%02X', $id) . ' in formula');
5993
-			break;
5869
+		    case 0x23:	//	index to defined name
5870
+		    case 0x43:
5871
+		    case 0x63:
5872
+			    $name = 'tName';
5873
+			    $size = 5;
5874
+			    // offset: 1; size: 2; one-based index to definedname record
5875
+			    $definedNameIndex = self::_GetInt2d($formulaData, 1) - 1;
5876
+			    // offset: 2; size: 2; not used
5877
+			    $data = $this->_definedname[$definedNameIndex]['name'];
5878
+			    break;
5879
+		    case 0x24:	//	single cell reference e.g. A5
5880
+		    case 0x44:
5881
+		    case 0x64:
5882
+			    $name = 'tRef';
5883
+			    $size = 5;
5884
+			    $data = $this->_readBIFF8CellAddress(substr($formulaData, 1, 4));
5885
+			    break;
5886
+		    case 0x25:	//	cell range reference to cells in the same sheet (2d)
5887
+		    case 0x45:
5888
+		    case 0x65:
5889
+			    $name = 'tArea';
5890
+			    $size = 9;
5891
+			    $data = $this->_readBIFF8CellRangeAddress(substr($formulaData, 1, 8));
5892
+			    break;
5893
+		    case 0x26:	//	Constant reference sub-expression
5894
+		    case 0x46:
5895
+		    case 0x66:
5896
+			    $name = 'tMemArea';
5897
+			    // offset: 1; size: 4; not used
5898
+			    // offset: 5; size: 2; size of the following subexpression
5899
+			    $subSize = self::_GetInt2d($formulaData, 5);
5900
+			    $size = 7 + $subSize;
5901
+			    $data = $this->_getFormulaFromData(substr($formulaData, 7, $subSize));
5902
+			    break;
5903
+		    case 0x27:	//	Deleted constant reference sub-expression
5904
+		    case 0x47:
5905
+		    case 0x67:
5906
+			    $name = 'tMemErr';
5907
+			    // offset: 1; size: 4; not used
5908
+			    // offset: 5; size: 2; size of the following subexpression
5909
+			    $subSize = self::_GetInt2d($formulaData, 5);
5910
+			    $size = 7 + $subSize;
5911
+			    $data = $this->_getFormulaFromData(substr($formulaData, 7, $subSize));
5912
+			    break;
5913
+		    case 0x29:	//	Variable reference sub-expression
5914
+		    case 0x49:
5915
+		    case 0x69:
5916
+			    $name = 'tMemFunc';
5917
+			    // offset: 1; size: 2; size of the following sub-expression
5918
+			    $subSize = self::_GetInt2d($formulaData, 1);
5919
+			    $size = 3 + $subSize;
5920
+			    $data = $this->_getFormulaFromData(substr($formulaData, 3, $subSize));
5921
+			    break;
5922
+
5923
+		    case 0x2C: // Relative 2d cell reference reference, used in shared formulas and some other places
5924
+		    case 0x4C:
5925
+		    case 0x6C:
5926
+			    $name = 'tRefN';
5927
+			    $size = 5;
5928
+			    $data = $this->_readBIFF8CellAddressB(substr($formulaData, 1, 4), $baseCell);
5929
+			    break;
5930
+
5931
+		    case 0x2D:	//	Relative 2d range reference
5932
+		    case 0x4D:
5933
+		    case 0x6D:
5934
+			    $name = 'tAreaN';
5935
+			    $size = 9;
5936
+			    $data = $this->_readBIFF8CellRangeAddressB(substr($formulaData, 1, 8), $baseCell);
5937
+			    break;
5938
+
5939
+		    case 0x39:	//	External name
5940
+		    case 0x59:
5941
+		    case 0x79:
5942
+			    $name = 'tNameX';
5943
+			    $size = 7;
5944
+			    // offset: 1; size: 2; index to REF entry in EXTERNSHEET record
5945
+			    // offset: 3; size: 2; one-based index to DEFINEDNAME or EXTERNNAME record
5946
+			    $index = self::_GetInt2d($formulaData, 3);
5947
+			    // assume index is to EXTERNNAME record
5948
+			    $data = $this->_externalNames[$index - 1]['name'];
5949
+			    // offset: 5; size: 2; not used
5950
+			    break;
5951
+
5952
+		    case 0x3A:	//	3d reference to cell
5953
+		    case 0x5A:
5954
+		    case 0x7A:
5955
+			    $name = 'tRef3d';
5956
+			    $size = 7;
5957
+
5958
+			    try {
5959
+				    // offset: 1; size: 2; index to REF entry
5960
+				    $sheetRange = $this->_readSheetRangeByRefIndex(self::_GetInt2d($formulaData, 1));
5961
+				    // offset: 3; size: 4; cell address
5962
+				    $cellAddress = $this->_readBIFF8CellAddress(substr($formulaData, 3, 4));
5963
+
5964
+				    $data = "$sheetRange!$cellAddress";
5965
+			    } catch (PHPExcel_Exception $e) {
5966
+				    // deleted sheet reference
5967
+				    $data = '#REF!';
5968
+			    }
5969
+
5970
+			    break;
5971
+		    case 0x3B:	//	3d reference to cell range
5972
+		    case 0x5B:
5973
+		    case 0x7B:
5974
+			    $name = 'tArea3d';
5975
+			    $size = 11;
5976
+
5977
+			    try {
5978
+				    // offset: 1; size: 2; index to REF entry
5979
+				    $sheetRange = $this->_readSheetRangeByRefIndex(self::_GetInt2d($formulaData, 1));
5980
+				    // offset: 3; size: 8; cell address
5981
+				    $cellRangeAddress = $this->_readBIFF8CellRangeAddress(substr($formulaData, 3, 8));
5982
+
5983
+				    $data = "$sheetRange!$cellRangeAddress";
5984
+			    } catch (PHPExcel_Exception $e) {
5985
+				    // deleted sheet reference
5986
+				    $data = '#REF!';
5987
+			    }
5988
+
5989
+			    break;
5990
+		    // Unknown cases	// don't know how to deal with
5991
+		    default:
5992
+			    throw new PHPExcel_Reader_Exception('Unrecognized token ' . sprintf('%02X', $id) . ' in formula');
5993
+			    break;
5994 5994
 		}
5995 5995
 
5996 5996
 		return array(
@@ -6457,35 +6457,35 @@  discard block
 block discarded – undo
6457 6457
 		$identifier = ord($valueData[0]);
6458 6458
 
6459 6459
 		switch ($identifier) {
6460
-		case 0x00: // empty constant (what is this?)
6461
-			$value = '';
6462
-			$size = 9;
6463
-			break;
6464
-		case 0x01: // number
6465
-			// offset: 1; size: 8; IEEE 754 floating-point value
6466
-			$value = self::_extractNumber(substr($valueData, 1, 8));
6467
-			$size = 9;
6468
-			break;
6469
-		case 0x02: // string value
6470
-			// offset: 1; size: var; Unicode string, 16-bit string length
6471
-			$string = self::_readUnicodeStringLong(substr($valueData, 1));
6472
-			$value = '"' . $string['value'] . '"';
6473
-			$size = 1 + $string['size'];
6474
-			break;
6475
-		case 0x04: // boolean
6476
-			// offset: 1; size: 1; 0 = FALSE, 1 = TRUE
6477
-			if (ord($valueData[1])) {
6478
-				$value = 'TRUE';
6479
-			} else {
6480
-				$value = 'FALSE';
6481
-			}
6482
-			$size = 9;
6483
-			break;
6484
-		case 0x10: // error code
6485
-			// offset: 1; size: 1; error code
6486
-			$value = self::_mapErrorCode(ord($valueData[1]));
6487
-			$size = 9;
6488
-			break;
6460
+		    case 0x00: // empty constant (what is this?)
6461
+			    $value = '';
6462
+			    $size = 9;
6463
+			    break;
6464
+		    case 0x01: // number
6465
+			    // offset: 1; size: 8; IEEE 754 floating-point value
6466
+			    $value = self::_extractNumber(substr($valueData, 1, 8));
6467
+			    $size = 9;
6468
+			    break;
6469
+		    case 0x02: // string value
6470
+			    // offset: 1; size: var; Unicode string, 16-bit string length
6471
+			    $string = self::_readUnicodeStringLong(substr($valueData, 1));
6472
+			    $value = '"' . $string['value'] . '"';
6473
+			    $size = 1 + $string['size'];
6474
+			    break;
6475
+		    case 0x04: // boolean
6476
+			    // offset: 1; size: 1; 0 = FALSE, 1 = TRUE
6477
+			    if (ord($valueData[1])) {
6478
+				    $value = 'TRUE';
6479
+			    } else {
6480
+				    $value = 'FALSE';
6481
+			    }
6482
+			    $size = 9;
6483
+			    break;
6484
+		    case 0x10: // error code
6485
+			    // offset: 1; size: 1; error code
6486
+			    $value = self::_mapErrorCode(ord($valueData[1]));
6487
+			    $size = 9;
6488
+			    break;
6489 6489
 		}
6490 6490
 		return array(
6491 6491
 			'value' => $value,
Please login to merge, or discard this patch.
htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/Reader/Excel2007.php 1 patch
Switch Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -479,13 +479,13 @@
 block discarded – undo
479 479
                     $macros = $customUI = NULL;
480 480
 					foreach ($relsWorkbook->Relationship as $ele) {
481 481
 						switch($ele['Type']){
482
-						case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet":
483
-							$worksheets[(string) $ele["Id"]] = $ele["Target"];
484
-							break;
485
-						// a vbaProject ? (: some macros)
486
-						case "http://schemas.microsoft.com/office/2006/relationships/vbaProject":
487
-							$macros = $ele["Target"];
488
-							break;
482
+						    case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet":
483
+							    $worksheets[(string) $ele["Id"]] = $ele["Target"];
484
+							    break;
485
+						    // a vbaProject ? (: some macros)
486
+						    case "http://schemas.microsoft.com/office/2006/relationships/vbaProject":
487
+							    $macros = $ele["Target"];
488
+							    break;
489 489
 						}
490 490
 					}
491 491
 
Please login to merge, or discard this patch.
dolibarr/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/Shared/OLE.php 1 patch
Switch Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -275,19 +275,19 @@
 block discarded – undo
275 275
 			$name = str_replace("\x00", "", $nameUtf16);
276 276
 			$type = self::_readInt1($fh);
277 277
 			switch ($type) {
278
-			case self::OLE_PPS_TYPE_ROOT:
279
-				$pps = new PHPExcel_Shared_OLE_PPS_Root(null, null, array());
280
-				$this->root = $pps;
281
-				break;
282
-			case self::OLE_PPS_TYPE_DIR:
283
-				$pps = new PHPExcel_Shared_OLE_PPS(null, null, null, null, null,
284
-								   null, null, null, null, array());
285
-				break;
286
-			case self::OLE_PPS_TYPE_FILE:
287
-				$pps = new PHPExcel_Shared_OLE_PPS_File($name);
288
-				break;
289
-			default:
290
-				continue;
278
+			    case self::OLE_PPS_TYPE_ROOT:
279
+				    $pps = new PHPExcel_Shared_OLE_PPS_Root(null, null, array());
280
+				    $this->root = $pps;
281
+				    break;
282
+			    case self::OLE_PPS_TYPE_DIR:
283
+				    $pps = new PHPExcel_Shared_OLE_PPS(null, null, null, null, null,
284
+								       null, null, null, null, array());
285
+				    break;
286
+			    case self::OLE_PPS_TYPE_FILE:
287
+				    $pps = new PHPExcel_Shared_OLE_PPS_File($name);
288
+				    break;
289
+			    default:
290
+				    continue;
291 291
 			}
292 292
 			fseek($fh, 1, SEEK_CUR);
293 293
 			$pps->Type    = $type;
Please login to merge, or discard this patch.
htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel5.php 1 patch
Switch Indentation   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -478,33 +478,33 @@  discard block
 block discarded – undo
478 478
 
479 479
 					switch ($imageFormat) {
480 480
 
481
-					case 1: // GIF, not supported by BIFF8, we convert to PNG
482
-						$blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
483
-						ob_start();
484
-						imagepng(imagecreatefromgif($filename));
485
-						$blipData = ob_get_contents();
486
-						ob_end_clean();
487
-						break;
488
-
489
-					case 2: // JPEG
490
-						$blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
491
-						$blipData = file_get_contents($filename);
492
-						break;
493
-
494
-					case 3: // PNG
495
-						$blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
496
-						$blipData = file_get_contents($filename);
497
-						break;
498
-
499
-					case 6: // Windows DIB (BMP), we convert to PNG
500
-						$blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
501
-						ob_start();
502
-						imagepng(PHPExcel_Shared_Drawing::imagecreatefrombmp($filename));
503
-						$blipData = ob_get_contents();
504
-						ob_end_clean();
505
-						break;
506
-
507
-					default: continue 2;
481
+					    case 1: // GIF, not supported by BIFF8, we convert to PNG
482
+						    $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
483
+						    ob_start();
484
+						    imagepng(imagecreatefromgif($filename));
485
+						    $blipData = ob_get_contents();
486
+						    ob_end_clean();
487
+						    break;
488
+
489
+					    case 2: // JPEG
490
+						    $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
491
+						    $blipData = file_get_contents($filename);
492
+						    break;
493
+
494
+					    case 3: // PNG
495
+						    $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
496
+						    $blipData = file_get_contents($filename);
497
+						    break;
498
+
499
+					    case 6: // Windows DIB (BMP), we convert to PNG
500
+						    $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
501
+						    ob_start();
502
+						    imagepng(PHPExcel_Shared_Drawing::imagecreatefrombmp($filename));
503
+						    $blipData = ob_get_contents();
504
+						    ob_end_clean();
505
+						    break;
506
+
507
+					    default: continue 2;
508 508
 
509 509
 					}
510 510
 
@@ -521,17 +521,17 @@  discard block
 block discarded – undo
521 521
 
522 522
 					switch ($drawing->getRenderingFunction()) {
523 523
 
524
-					case PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG:
525
-						$blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
526
-						$renderingFunction = 'imagejpeg';
527
-						break;
528
-
529
-					case PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF:
530
-					case PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG:
531
-					case PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT:
532
-						$blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
533
-						$renderingFunction = 'imagepng';
534
-						break;
524
+					    case PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG:
525
+						    $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
526
+						    $renderingFunction = 'imagejpeg';
527
+						    break;
528
+
529
+					    case PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF:
530
+					    case PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG:
531
+					    case PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT:
532
+						    $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
533
+						    $renderingFunction = 'imagepng';
534
+						    break;
535 535
 
536 536
 					}
537 537
 
Please login to merge, or discard this patch.
includes/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel5/Escher.php 1 patch
Switch Indentation   +327 added lines, -327 removed lines patch added patch discarded remove patch
@@ -79,434 +79,434 @@
 block discarded – undo
79 79
 
80 80
 		switch (get_class($this->_object)) {
81 81
 
82
-		case 'PHPExcel_Shared_Escher':
83
-			if ($dggContainer = $this->_object->getDggContainer()) {
84
-				$writer = new PHPExcel_Writer_Excel5_Escher($dggContainer);
85
-				$this->_data = $writer->close();
86
-			} else if ($dgContainer = $this->_object->getDgContainer()) {
87
-				$writer = new PHPExcel_Writer_Excel5_Escher($dgContainer);
88
-				$this->_data = $writer->close();
89
-				$this->_spOffsets = $writer->getSpOffsets();
90
-				$this->_spTypes = $writer->getSpTypes();
91
-			}
92
-			break;
93
-
94
-		case 'PHPExcel_Shared_Escher_DggContainer':
95
-			// this is a container record
96
-
97
-			// initialize
98
-			$innerData = '';
82
+		    case 'PHPExcel_Shared_Escher':
83
+			    if ($dggContainer = $this->_object->getDggContainer()) {
84
+				    $writer = new PHPExcel_Writer_Excel5_Escher($dggContainer);
85
+				    $this->_data = $writer->close();
86
+			    } else if ($dgContainer = $this->_object->getDgContainer()) {
87
+				    $writer = new PHPExcel_Writer_Excel5_Escher($dgContainer);
88
+				    $this->_data = $writer->close();
89
+				    $this->_spOffsets = $writer->getSpOffsets();
90
+				    $this->_spTypes = $writer->getSpTypes();
91
+			    }
92
+			    break;
93
+
94
+		    case 'PHPExcel_Shared_Escher_DggContainer':
95
+			    // this is a container record
96
+
97
+			    // initialize
98
+			    $innerData = '';
99
+
100
+			    // write the dgg
101
+			    $recVer			= 0x0;
102
+			    $recInstance	= 0x0000;
103
+			    $recType		= 0xF006;
104
+
105
+			    $recVerInstance  = $recVer;
106
+			    $recVerInstance |= $recInstance << 4;
107
+
108
+			    // dgg data
109
+			    $dggData =
110
+				    pack('VVVV'
111
+					    , $this->_object->getSpIdMax() // maximum shape identifier increased by one
112
+					    , $this->_object->getCDgSaved() + 1 // number of file identifier clusters increased by one
113
+					    , $this->_object->getCSpSaved()
114
+					    , $this->_object->getCDgSaved() // count total number of drawings saved
115
+				    );
116
+
117
+			    // add file identifier clusters (one per drawing)
118
+			    $IDCLs = $this->_object->getIDCLs();
119
+
120
+			    foreach ($IDCLs as $dgId => $maxReducedSpId) {
121
+				    $dggData .= pack('VV', $dgId, $maxReducedSpId + 1);
122
+			    }
123
+
124
+			    $header = pack('vvV', $recVerInstance, $recType, strlen($dggData));
125
+			    $innerData .= $header . $dggData;
126
+
127
+			    // write the bstoreContainer
128
+			    if ($bstoreContainer = $this->_object->getBstoreContainer()) {
129
+				    $writer = new PHPExcel_Writer_Excel5_Escher($bstoreContainer);
130
+				    $innerData .= $writer->close();
131
+			    }
132
+
133
+			    // write the record
134
+			    $recVer			= 0xF;
135
+			    $recInstance	= 0x0000;
136
+			    $recType		= 0xF000;
137
+			    $length			= strlen($innerData);
138
+
139
+			    $recVerInstance  = $recVer;
140
+			    $recVerInstance |= $recInstance << 4;
141
+
142
+			    $header = pack('vvV', $recVerInstance, $recType, $length);
99 143
 
100
-			// write the dgg
101
-			$recVer			= 0x0;
102
-			$recInstance	= 0x0000;
103
-			$recType		= 0xF006;
144
+			    $this->_data = $header . $innerData;
145
+			    break;
146
+
147
+		    case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer':
148
+			    // this is a container record
149
+
150
+			    // initialize
151
+			    $innerData = '';
104 152
 
105
-			$recVerInstance  = $recVer;
106
-			$recVerInstance |= $recInstance << 4;
153
+			    // treat the inner data
154
+			    if ($BSECollection = $this->_object->getBSECollection()) {
155
+				    foreach ($BSECollection as $BSE) {
156
+					    $writer = new PHPExcel_Writer_Excel5_Escher($BSE);
157
+					    $innerData .= $writer->close();
158
+				    }
159
+			    }
107 160
 
108
-			// dgg data
109
-			$dggData =
110
-				pack('VVVV'
111
-					, $this->_object->getSpIdMax() // maximum shape identifier increased by one
112
-					, $this->_object->getCDgSaved() + 1 // number of file identifier clusters increased by one
113
-					, $this->_object->getCSpSaved()
114
-					, $this->_object->getCDgSaved() // count total number of drawings saved
115
-				);
161
+			    // write the record
162
+			    $recVer			= 0xF;
163
+			    $recInstance	= count($this->_object->getBSECollection());
164
+			    $recType		= 0xF001;
165
+			    $length			= strlen($innerData);
116 166
 
117
-			// add file identifier clusters (one per drawing)
118
-			$IDCLs = $this->_object->getIDCLs();
167
+			    $recVerInstance  = $recVer;
168
+			    $recVerInstance |= $recInstance << 4;
119 169
 
120
-			foreach ($IDCLs as $dgId => $maxReducedSpId) {
121
-				$dggData .= pack('VV', $dgId, $maxReducedSpId + 1);
122
-			}
170
+			    $header = pack('vvV', $recVerInstance, $recType, $length);
123 171
 
124
-			$header = pack('vvV', $recVerInstance, $recType, strlen($dggData));
125
-			$innerData .= $header . $dggData;
172
+			    $this->_data = $header . $innerData;
173
+			    break;
126 174
 
127
-			// write the bstoreContainer
128
-			if ($bstoreContainer = $this->_object->getBstoreContainer()) {
129
-				$writer = new PHPExcel_Writer_Excel5_Escher($bstoreContainer);
130
-				$innerData .= $writer->close();
131
-			}
175
+		    case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE':
176
+			    // this is a semi-container record
132 177
 
133
-			// write the record
134
-			$recVer			= 0xF;
135
-			$recInstance	= 0x0000;
136
-			$recType		= 0xF000;
137
-			$length			= strlen($innerData);
178
+			    // initialize
179
+			    $innerData = '';
138 180
 
139
-			$recVerInstance  = $recVer;
140
-			$recVerInstance |= $recInstance << 4;
181
+			    // here we treat the inner data
182
+			    if ($blip = $this->_object->getBlip()) {
183
+				    $writer = new PHPExcel_Writer_Excel5_Escher($blip);
184
+				    $innerData .= $writer->close();
185
+			    }
141 186
 
142
-			$header = pack('vvV', $recVerInstance, $recType, $length);
187
+			    // initialize
188
+			    $data = '';
143 189
 
144
-			$this->_data = $header . $innerData;
145
-			break;
146
-
147
-		case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer':
148
-			// this is a container record
190
+			    $btWin32 = $this->_object->getBlipType();
191
+			    $btMacOS = $this->_object->getBlipType();
192
+			    $data .= pack('CC', $btWin32, $btMacOS);
149 193
 
150
-			// initialize
151
-			$innerData = '';
194
+			    $rgbUid = pack('VVVV', 0,0,0,0); // todo
195
+			    $data .= $rgbUid;
152 196
 
153
-			// treat the inner data
154
-			if ($BSECollection = $this->_object->getBSECollection()) {
155
-				foreach ($BSECollection as $BSE) {
156
-					$writer = new PHPExcel_Writer_Excel5_Escher($BSE);
157
-					$innerData .= $writer->close();
158
-				}
159
-			}
197
+			    $tag = 0;
198
+			    $size = strlen($innerData);
199
+			    $cRef = 1;
200
+			    $foDelay = 0; //todo
201
+			    $unused1 = 0x0;
202
+			    $cbName = 0x0;
203
+			    $unused2 = 0x0;
204
+			    $unused3 = 0x0;
205
+			    $data .= pack('vVVVCCCC', $tag, $size, $cRef, $foDelay, $unused1, $cbName, $unused2, $unused3);
160 206
 
161
-			// write the record
162
-			$recVer			= 0xF;
163
-			$recInstance	= count($this->_object->getBSECollection());
164
-			$recType		= 0xF001;
165
-			$length			= strlen($innerData);
207
+			    $data .= $innerData;
166 208
 
167
-			$recVerInstance  = $recVer;
168
-			$recVerInstance |= $recInstance << 4;
209
+			    // write the record
210
+			    $recVer			= 0x2;
211
+			    $recInstance	= $this->_object->getBlipType();
212
+			    $recType		= 0xF007;
213
+			    $length			= strlen($data);
169 214
 
170
-			$header = pack('vvV', $recVerInstance, $recType, $length);
215
+			    $recVerInstance  = $recVer;
216
+			    $recVerInstance |=	$recInstance << 4;
171 217
 
172
-			$this->_data = $header . $innerData;
173
-			break;
218
+			    $header = pack('vvV', $recVerInstance, $recType, $length);
174 219
 
175
-		case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE':
176
-			// this is a semi-container record
220
+			    $this->_data = $header;
177 221
 
178
-			// initialize
179
-			$innerData = '';
222
+			    $this->_data .= $data;
223
+			    break;
180 224
 
181
-			// here we treat the inner data
182
-			if ($blip = $this->_object->getBlip()) {
183
-				$writer = new PHPExcel_Writer_Excel5_Escher($blip);
184
-				$innerData .= $writer->close();
185
-			}
225
+		    case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip':
226
+			    // this is an atom record
186 227
 
187
-			// initialize
188
-			$data = '';
228
+			    // write the record
229
+			    switch ($this->_object->getParent()->getBlipType()) {
189 230
 
190
-			$btWin32 = $this->_object->getBlipType();
191
-			$btMacOS = $this->_object->getBlipType();
192
-			$data .= pack('CC', $btWin32, $btMacOS);
231
+			        case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG:
232
+				        // initialize
233
+				        $innerData = '';
193 234
 
194
-			$rgbUid = pack('VVVV', 0,0,0,0); // todo
195
-			$data .= $rgbUid;
235
+				        $rgbUid1 = pack('VVVV', 0,0,0,0); // todo
236
+				        $innerData .= $rgbUid1;
196 237
 
197
-			$tag = 0;
198
-			$size = strlen($innerData);
199
-			$cRef = 1;
200
-			$foDelay = 0; //todo
201
-			$unused1 = 0x0;
202
-			$cbName = 0x0;
203
-			$unused2 = 0x0;
204
-			$unused3 = 0x0;
205
-			$data .= pack('vVVVCCCC', $tag, $size, $cRef, $foDelay, $unused1, $cbName, $unused2, $unused3);
238
+				        $tag = 0xFF; // todo
239
+				        $innerData .= pack('C', $tag);
206 240
 
207
-			$data .= $innerData;
241
+				        $innerData .= $this->_object->getData();
208 242
 
209
-			// write the record
210
-			$recVer			= 0x2;
211
-			$recInstance	= $this->_object->getBlipType();
212
-			$recType		= 0xF007;
213
-			$length			= strlen($data);
214
-
215
-			$recVerInstance  = $recVer;
216
-			$recVerInstance |=	$recInstance << 4;
217
-
218
-			$header = pack('vvV', $recVerInstance, $recType, $length);
219
-
220
-			$this->_data = $header;
221
-
222
-			$this->_data .= $data;
223
-			break;
243
+				        $recVer			= 0x0;
244
+				        $recInstance	= 0x46A;
245
+				        $recType		= 0xF01D;
246
+				        $length			= strlen($innerData);
224 247
 
225
-		case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip':
226
-			// this is an atom record
248
+				        $recVerInstance  = $recVer;
249
+				        $recVerInstance |=	$recInstance << 4;
227 250
 
228
-			// write the record
229
-			switch ($this->_object->getParent()->getBlipType()) {
251
+				        $header = pack('vvV', $recVerInstance, $recType, $length);
230 252
 
231
-			case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG:
232
-				// initialize
233
-				$innerData = '';
253
+				        $this->_data = $header;
234 254
 
235
-				$rgbUid1 = pack('VVVV', 0,0,0,0); // todo
236
-				$innerData .= $rgbUid1;
255
+				        $this->_data .= $innerData;
256
+				        break;
237 257
 
238
-				$tag = 0xFF; // todo
239
-				$innerData .= pack('C', $tag);
258
+			        case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG:
259
+				        // initialize
260
+				        $innerData = '';
240 261
 
241
-				$innerData .= $this->_object->getData();
262
+				        $rgbUid1 = pack('VVVV', 0,0,0,0); // todo
263
+				        $innerData .= $rgbUid1;
242 264
 
243
-				$recVer			= 0x0;
244
-				$recInstance	= 0x46A;
245
-				$recType		= 0xF01D;
246
-				$length			= strlen($innerData);
265
+				        $tag = 0xFF; // todo
266
+				        $innerData .= pack('C', $tag);
247 267
 
248
-				$recVerInstance  = $recVer;
249
-				$recVerInstance |=	$recInstance << 4;
268
+				        $innerData .= $this->_object->getData();
250 269
 
251
-				$header = pack('vvV', $recVerInstance, $recType, $length);
270
+				        $recVer			= 0x0;
271
+				        $recInstance	= 0x6E0;
272
+				        $recType		= 0xF01E;
273
+				        $length			= strlen($innerData);
252 274
 
253
-				$this->_data = $header;
275
+				        $recVerInstance  = $recVer;
276
+				        $recVerInstance |=	$recInstance << 4;
254 277
 
255
-				$this->_data .= $innerData;
256
-				break;
278
+				        $header = pack('vvV', $recVerInstance, $recType, $length);
257 279
 
258
-			case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG:
259
-				// initialize
260
-				$innerData = '';
280
+				        $this->_data = $header;
261 281
 
262
-				$rgbUid1 = pack('VVVV', 0,0,0,0); // todo
263
-				$innerData .= $rgbUid1;
282
+				        $this->_data .= $innerData;
283
+				        break;
264 284
 
265
-				$tag = 0xFF; // todo
266
-				$innerData .= pack('C', $tag);
267
-
268
-				$innerData .= $this->_object->getData();
269
-
270
-				$recVer			= 0x0;
271
-				$recInstance	= 0x6E0;
272
-				$recType		= 0xF01E;
273
-				$length			= strlen($innerData);
274
-
275
-				$recVerInstance  = $recVer;
276
-				$recVerInstance |=	$recInstance << 4;
277
-
278
-				$header = pack('vvV', $recVerInstance, $recType, $length);
279
-
280
-				$this->_data = $header;
281
-
282
-				$this->_data .= $innerData;
283
-				break;
284
-
285
-			}
285
+			    }
286 286
 			break;
287 287
 
288
-		case 'PHPExcel_Shared_Escher_DgContainer':
289
-			// this is a container record
288
+		    case 'PHPExcel_Shared_Escher_DgContainer':
289
+			    // this is a container record
290 290
 
291
-			// initialize
292
-			$innerData = '';
291
+			    // initialize
292
+			    $innerData = '';
293 293
 
294
-			// write the dg
295
-			$recVer			= 0x0;
296
-			$recInstance	= $this->_object->getDgId();
297
-			$recType		= 0xF008;
298
-			$length			= 8;
294
+			    // write the dg
295
+			    $recVer			= 0x0;
296
+			    $recInstance	= $this->_object->getDgId();
297
+			    $recType		= 0xF008;
298
+			    $length			= 8;
299 299
 
300
-			$recVerInstance  = $recVer;
301
-			$recVerInstance |= $recInstance << 4;
300
+			    $recVerInstance  = $recVer;
301
+			    $recVerInstance |= $recInstance << 4;
302 302
 
303
-			$header = pack('vvV', $recVerInstance, $recType, $length);
303
+			    $header = pack('vvV', $recVerInstance, $recType, $length);
304 304
 
305
-			// number of shapes in this drawing (including group shape)
306
-			$countShapes = count($this->_object->getSpgrContainer()->getChildren());
307
-			$innerData .= $header . pack('VV', $countShapes, $this->_object->getLastSpId());
308
-			//$innerData .= $header . pack('VV', 0, 0);
305
+			    // number of shapes in this drawing (including group shape)
306
+			    $countShapes = count($this->_object->getSpgrContainer()->getChildren());
307
+			    $innerData .= $header . pack('VV', $countShapes, $this->_object->getLastSpId());
308
+			    //$innerData .= $header . pack('VV', 0, 0);
309 309
 
310
-			// write the spgrContainer
311
-			if ($spgrContainer = $this->_object->getSpgrContainer()) {
312
-				$writer = new PHPExcel_Writer_Excel5_Escher($spgrContainer);
313
-				$innerData .= $writer->close();
310
+			    // write the spgrContainer
311
+			    if ($spgrContainer = $this->_object->getSpgrContainer()) {
312
+				    $writer = new PHPExcel_Writer_Excel5_Escher($spgrContainer);
313
+				    $innerData .= $writer->close();
314 314
 
315
-				// get the shape offsets relative to the spgrContainer record
316
-				$spOffsets = $writer->getSpOffsets();
317
-				$spTypes   = $writer->getSpTypes();
315
+				    // get the shape offsets relative to the spgrContainer record
316
+				    $spOffsets = $writer->getSpOffsets();
317
+				    $spTypes   = $writer->getSpTypes();
318 318
 				
319
-				// save the shape offsets relative to dgContainer
320
-				foreach ($spOffsets as & $spOffset) {
321
-					$spOffset += 24; // add length of dgContainer header data (8 bytes) plus dg data (16 bytes)
322
-				}
319
+				    // save the shape offsets relative to dgContainer
320
+				    foreach ($spOffsets as & $spOffset) {
321
+					    $spOffset += 24; // add length of dgContainer header data (8 bytes) plus dg data (16 bytes)
322
+				    }
323 323
 
324
-				$this->_spOffsets = $spOffsets;
325
-				$this->_spTypes = $spTypes;
326
-			}
324
+				    $this->_spOffsets = $spOffsets;
325
+				    $this->_spTypes = $spTypes;
326
+			    }
327 327
 
328
-			// write the record
329
-			$recVer			= 0xF;
330
-			$recInstance	= 0x0000;
331
-			$recType		= 0xF002;
332
-			$length			= strlen($innerData);
328
+			    // write the record
329
+			    $recVer			= 0xF;
330
+			    $recInstance	= 0x0000;
331
+			    $recType		= 0xF002;
332
+			    $length			= strlen($innerData);
333 333
 
334
-			$recVerInstance  = $recVer;
335
-			$recVerInstance |= $recInstance << 4;
334
+			    $recVerInstance  = $recVer;
335
+			    $recVerInstance |= $recInstance << 4;
336 336
 
337
-			$header = pack('vvV', $recVerInstance, $recType, $length);
337
+			    $header = pack('vvV', $recVerInstance, $recType, $length);
338 338
 
339
-			$this->_data = $header . $innerData;
340
-			break;
339
+			    $this->_data = $header . $innerData;
340
+			    break;
341 341
 
342
-		case 'PHPExcel_Shared_Escher_DgContainer_SpgrContainer':
343
-			// this is a container record
342
+		    case 'PHPExcel_Shared_Escher_DgContainer_SpgrContainer':
343
+			    // this is a container record
344 344
 
345
-			// initialize
346
-			$innerData = '';
345
+			    // initialize
346
+			    $innerData = '';
347 347
 
348
-			// initialize spape offsets
349
-			$totalSize = 8;
350
-			$spOffsets = array();
351
-			$spTypes   = array();
348
+			    // initialize spape offsets
349
+			    $totalSize = 8;
350
+			    $spOffsets = array();
351
+			    $spTypes   = array();
352 352
 
353
-			// treat the inner data
354
-			foreach ($this->_object->getChildren() as $spContainer) {
355
-				$writer = new PHPExcel_Writer_Excel5_Escher($spContainer);
356
-				$spData = $writer->close();
357
-				$innerData .= $spData;
353
+			    // treat the inner data
354
+			    foreach ($this->_object->getChildren() as $spContainer) {
355
+				    $writer = new PHPExcel_Writer_Excel5_Escher($spContainer);
356
+				    $spData = $writer->close();
357
+				    $innerData .= $spData;
358 358
 
359
-				// save the shape offsets (where new shape records begin)
360
-				$totalSize += strlen($spData);
361
-				$spOffsets[] = $totalSize;
359
+				    // save the shape offsets (where new shape records begin)
360
+				    $totalSize += strlen($spData);
361
+				    $spOffsets[] = $totalSize;
362 362
 				
363
-				$spTypes = array_merge($spTypes, $writer->getSpTypes());
364
-			}
363
+				    $spTypes = array_merge($spTypes, $writer->getSpTypes());
364
+			    }
365 365
 
366
-			// write the record
367
-			$recVer			= 0xF;
368
-			$recInstance	= 0x0000;
369
-			$recType		= 0xF003;
370
-			$length			= strlen($innerData);
366
+			    // write the record
367
+			    $recVer			= 0xF;
368
+			    $recInstance	= 0x0000;
369
+			    $recType		= 0xF003;
370
+			    $length			= strlen($innerData);
371 371
 
372
-			$recVerInstance  = $recVer;
373
-			$recVerInstance |= $recInstance << 4;
372
+			    $recVerInstance  = $recVer;
373
+			    $recVerInstance |= $recInstance << 4;
374 374
 
375
-			$header = pack('vvV', $recVerInstance, $recType, $length);
375
+			    $header = pack('vvV', $recVerInstance, $recType, $length);
376 376
 
377
-			$this->_data = $header . $innerData;
378
-			$this->_spOffsets = $spOffsets;
379
-			$this->_spTypes = $spTypes;
380
-			break;
377
+			    $this->_data = $header . $innerData;
378
+			    $this->_spOffsets = $spOffsets;
379
+			    $this->_spTypes = $spTypes;
380
+			    break;
381 381
 
382
-		case 'PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer':
383
-			// initialize
384
-			$data = '';
382
+		    case 'PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer':
383
+			    // initialize
384
+			    $data = '';
385 385
 
386
-			// build the data
386
+			    // build the data
387 387
 
388
-			// write group shape record, if necessary?
389
-			if ($this->_object->getSpgr()) {
390
-				$recVer			= 0x1;
391
-				$recInstance	= 0x0000;
392
-				$recType		= 0xF009;
393
-				$length			= 0x00000010;
388
+			    // write group shape record, if necessary?
389
+			    if ($this->_object->getSpgr()) {
390
+				    $recVer			= 0x1;
391
+				    $recInstance	= 0x0000;
392
+				    $recType		= 0xF009;
393
+				    $length			= 0x00000010;
394 394
 
395
-				$recVerInstance  = $recVer;
396
-				$recVerInstance |= $recInstance << 4;
395
+				    $recVerInstance  = $recVer;
396
+				    $recVerInstance |= $recInstance << 4;
397 397
 
398
-				$header = pack('vvV', $recVerInstance, $recType, $length);
398
+				    $header = pack('vvV', $recVerInstance, $recType, $length);
399 399
 
400
-				$data .= $header . pack('VVVV', 0,0,0,0);
401
-			}
402
-			$this->_spTypes[] = ($this->_object->getSpType());
400
+				    $data .= $header . pack('VVVV', 0,0,0,0);
401
+			    }
402
+			    $this->_spTypes[] = ($this->_object->getSpType());
403 403
 
404
-			// write the shape record
405
-			$recVer			= 0x2;
406
-			$recInstance	= $this->_object->getSpType(); // shape type
407
-			$recType		= 0xF00A;
408
-			$length			= 0x00000008;
404
+			    // write the shape record
405
+			    $recVer			= 0x2;
406
+			    $recInstance	= $this->_object->getSpType(); // shape type
407
+			    $recType		= 0xF00A;
408
+			    $length			= 0x00000008;
409 409
 
410
-			$recVerInstance  = $recVer;
411
-			$recVerInstance |= $recInstance << 4;
410
+			    $recVerInstance  = $recVer;
411
+			    $recVerInstance |= $recInstance << 4;
412 412
 
413
-			$header = pack('vvV', $recVerInstance, $recType, $length);
413
+			    $header = pack('vvV', $recVerInstance, $recType, $length);
414 414
 
415
-			$data .= $header . pack('VV', $this->_object->getSpId(), $this->_object->getSpgr() ? 0x0005 : 0x0A00);
415
+			    $data .= $header . pack('VV', $this->_object->getSpId(), $this->_object->getSpgr() ? 0x0005 : 0x0A00);
416 416
 
417 417
 
418
-			// the options
419
-			if ($this->_object->getOPTCollection()) {
420
-				$optData = '';
418
+			    // the options
419
+			    if ($this->_object->getOPTCollection()) {
420
+				    $optData = '';
421 421
 
422
-				$recVer			= 0x3;
423
-				$recInstance	= count($this->_object->getOPTCollection());
424
-				$recType		= 0xF00B;
425
-				foreach ($this->_object->getOPTCollection() as $property => $value) {
426
-					$optData .= pack('vV', $property, $value);
427
-				}
428
-				$length			= strlen($optData);
422
+				    $recVer			= 0x3;
423
+				    $recInstance	= count($this->_object->getOPTCollection());
424
+				    $recType		= 0xF00B;
425
+				    foreach ($this->_object->getOPTCollection() as $property => $value) {
426
+					    $optData .= pack('vV', $property, $value);
427
+				    }
428
+				    $length			= strlen($optData);
429 429
 
430
-				$recVerInstance  = $recVer;
431
-				$recVerInstance |= $recInstance << 4;
430
+				    $recVerInstance  = $recVer;
431
+				    $recVerInstance |= $recInstance << 4;
432 432
 
433
-				$header = pack('vvV', $recVerInstance, $recType, $length);
434
-				$data .= $header . $optData;
435
-			}
433
+				    $header = pack('vvV', $recVerInstance, $recType, $length);
434
+				    $data .= $header . $optData;
435
+			    }
436 436
 
437
-			// the client anchor
438
-			if ($this->_object->getStartCoordinates()) {
439
-				$clientAnchorData = '';
437
+			    // the client anchor
438
+			    if ($this->_object->getStartCoordinates()) {
439
+				    $clientAnchorData = '';
440 440
 
441
-				$recVer			= 0x0;
442
-				$recInstance	= 0x0;
443
-				$recType		= 0xF010;
441
+				    $recVer			= 0x0;
442
+				    $recInstance	= 0x0;
443
+				    $recType		= 0xF010;
444 444
 
445
-				// start coordinates
446
-				list($column, $row) = PHPExcel_Cell::coordinateFromString($this->_object->getStartCoordinates());
447
-				$c1 = PHPExcel_Cell::columnIndexFromString($column) - 1;
448
-				$r1 = $row - 1;
445
+				    // start coordinates
446
+				    list($column, $row) = PHPExcel_Cell::coordinateFromString($this->_object->getStartCoordinates());
447
+				    $c1 = PHPExcel_Cell::columnIndexFromString($column) - 1;
448
+				    $r1 = $row - 1;
449 449
 
450
-				// start offsetX
451
-				$startOffsetX = $this->_object->getStartOffsetX();
450
+				    // start offsetX
451
+				    $startOffsetX = $this->_object->getStartOffsetX();
452 452
 
453
-				// start offsetY
454
-				$startOffsetY = $this->_object->getStartOffsetY();
453
+				    // start offsetY
454
+				    $startOffsetY = $this->_object->getStartOffsetY();
455 455
 
456
-				// end coordinates
457
-				list($column, $row) = PHPExcel_Cell::coordinateFromString($this->_object->getEndCoordinates());
458
-				$c2 = PHPExcel_Cell::columnIndexFromString($column) - 1;
459
-				$r2 = $row - 1;
456
+				    // end coordinates
457
+				    list($column, $row) = PHPExcel_Cell::coordinateFromString($this->_object->getEndCoordinates());
458
+				    $c2 = PHPExcel_Cell::columnIndexFromString($column) - 1;
459
+				    $r2 = $row - 1;
460 460
 
461
-				// end offsetX
462
-				$endOffsetX = $this->_object->getEndOffsetX();
461
+				    // end offsetX
462
+				    $endOffsetX = $this->_object->getEndOffsetX();
463 463
 
464
-				// end offsetY
465
-				$endOffsetY = $this->_object->getEndOffsetY();
464
+				    // end offsetY
465
+				    $endOffsetY = $this->_object->getEndOffsetY();
466 466
 
467
-				$clientAnchorData = pack('vvvvvvvvv', $this->_object->getSpFlag(),
468
-					$c1, $startOffsetX, $r1, $startOffsetY,
469
-					$c2, $endOffsetX, $r2, $endOffsetY);
467
+				    $clientAnchorData = pack('vvvvvvvvv', $this->_object->getSpFlag(),
468
+					    $c1, $startOffsetX, $r1, $startOffsetY,
469
+					    $c2, $endOffsetX, $r2, $endOffsetY);
470 470
 				
471
-				$length			= strlen($clientAnchorData);
471
+				    $length			= strlen($clientAnchorData);
472 472
 
473
-				$recVerInstance  = $recVer;
474
-				$recVerInstance |= $recInstance << 4;
473
+				    $recVerInstance  = $recVer;
474
+				    $recVerInstance |= $recInstance << 4;
475 475
 
476
-				$header = pack('vvV', $recVerInstance, $recType, $length);
477
-				$data .= $header . $clientAnchorData;
478
-			}
476
+				    $header = pack('vvV', $recVerInstance, $recType, $length);
477
+				    $data .= $header . $clientAnchorData;
478
+			    }
479 479
 
480
-			// the client data, just empty for now
481
-			if (!$this->_object->getSpgr()) {
482
-				$clientDataData = '';
480
+			    // the client data, just empty for now
481
+			    if (!$this->_object->getSpgr()) {
482
+				    $clientDataData = '';
483 483
 
484
-				$recVer			= 0x0;
485
-				$recInstance	= 0x0;
486
-				$recType		= 0xF011;
484
+				    $recVer			= 0x0;
485
+				    $recInstance	= 0x0;
486
+				    $recType		= 0xF011;
487 487
 
488
-				$length = strlen($clientDataData);
488
+				    $length = strlen($clientDataData);
489 489
 
490
-				$recVerInstance  = $recVer;
491
-				$recVerInstance |= $recInstance << 4;
490
+				    $recVerInstance  = $recVer;
491
+				    $recVerInstance |= $recInstance << 4;
492 492
 
493
-				$header = pack('vvV', $recVerInstance, $recType, $length);
494
-				$data .= $header . $clientDataData;
495
-			}
493
+				    $header = pack('vvV', $recVerInstance, $recType, $length);
494
+				    $data .= $header . $clientDataData;
495
+			    }
496 496
 
497
-			// write the record
498
-			$recVer			= 0xF;
499
-			$recInstance	= 0x0000;
500
-			$recType		= 0xF004;
501
-			$length			= strlen($data);
497
+			    // write the record
498
+			    $recVer			= 0xF;
499
+			    $recInstance	= 0x0000;
500
+			    $recType		= 0xF004;
501
+			    $length			= strlen($data);
502 502
 
503
-			$recVerInstance  = $recVer;
504
-			$recVerInstance |= $recInstance << 4;
503
+			    $recVerInstance  = $recVer;
504
+			    $recVerInstance |= $recInstance << 4;
505 505
 
506
-			$header = pack('vvV', $recVerInstance, $recType, $length);
506
+			    $header = pack('vvV', $recVerInstance, $recType, $length);
507 507
 
508
-			$this->_data = $header . $data;
509
-			break;
508
+			    $this->_data = $header . $data;
509
+			    break;
510 510
 
511 511
 		}
512 512
 
Please login to merge, or discard this patch.
htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/Style/Border.php 1 patch
Switch Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -150,26 +150,26 @@
 block discarded – undo
150 150
 	public function getStyleArray($array)
151 151
 	{
152 152
 		switch ($this->_parentPropertyName) {
153
-		case '_allBorders':
154
-				$key = 'allborders';	break;
155
-		case '_bottom':
156
-				$key = 'bottom';		break;
157
-		case '_diagonal':
158
-				$key = 'diagonal';		break;
159
-		case '_horizontal':
160
-				$key = 'horizontal';	break;
161
-		case '_inside':
162
-				$key = 'inside';		break;
163
-		case '_left':
164
-				$key = 'left';			break;
165
-		case '_outline':
166
-				$key = 'outline';		break;
167
-		case '_right':
168
-				$key = 'right';			break;
169
-		case '_top':
170
-				$key = 'top';			break;
171
-		case '_vertical':
172
-				$key = 'vertical';		break;
153
+		    case '_allBorders':
154
+				    $key = 'allborders';	break;
155
+		    case '_bottom':
156
+				    $key = 'bottom';		break;
157
+		    case '_diagonal':
158
+				    $key = 'diagonal';		break;
159
+		    case '_horizontal':
160
+				    $key = 'horizontal';	break;
161
+		    case '_inside':
162
+				    $key = 'inside';		break;
163
+		    case '_left':
164
+				    $key = 'left';			break;
165
+		    case '_outline':
166
+				    $key = 'outline';		break;
167
+		    case '_right':
168
+				    $key = 'right';			break;
169
+		    case '_top':
170
+				    $key = 'top';			break;
171
+		    case '_vertical':
172
+				    $key = 'vertical';		break;
173 173
 		}
174 174
 		return $this->_parent->getStyleArray(array($key => $array));
175 175
 	}
Please login to merge, or discard this patch.
dolibarr/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel.php 1 patch
Switch Indentation   +25 added lines, -25 removed lines patch added patch discarded remove patch
@@ -244,15 +244,15 @@  discard block
 block discarded – undo
244 244
 		$ReturnData=NULL;
245 245
 		$What=strtolower($What);
246 246
 		switch($What){
247
-		case 'all':
248
-			$ReturnData=$this->_ribbonXMLData;
249
-			break;
250
-		case 'target':
251
-		case 'data':
252
-			if(is_array($this->_ribbonXMLData) && array_key_exists($What,$this->_ribbonXMLData)){
253
-				$ReturnData=$this->_ribbonXMLData[$What];
254
-			}//else $ReturnData stay at null
255
-			break;
247
+		    case 'all':
248
+			    $ReturnData=$this->_ribbonXMLData;
249
+			    break;
250
+		    case 'target':
251
+		    case 'data':
252
+			    if(is_array($this->_ribbonXMLData) && array_key_exists($What,$this->_ribbonXMLData)){
253
+				    $ReturnData=$this->_ribbonXMLData[$What];
254
+			    }//else $ReturnData stay at null
255
+			    break;
256 256
 		}//default: $ReturnData at null
257 257
 		return $ReturnData;
258 258
 	}
@@ -284,22 +284,22 @@  discard block
 block discarded – undo
284 284
 		$ReturnData=NULL;
285 285
 		$What=strtolower($What);
286 286
 		switch($What){
287
-		case 'all':
288
-			return $this->_ribbonBinObjects;
289
-			break;
290
-		case 'names':
291
-		case 'data':
292
-			if(is_array($this->_ribbonBinObjects) && array_key_exists($What, $this->_ribbonBinObjects)){
293
-				$ReturnData=$this->_ribbonBinObjects[$What];
294
-			}
295
-			break;
296
-		case 'types':
297
-			if(is_array($this->_ribbonBinObjects) && array_key_exists('data', $this->_ribbonBinObjects) && is_array($this->_ribbonBinObjects['data'])){
298
-				$tmpTypes=array_keys($this->_ribbonBinObjects['data']);
299
-				$ReturnData=array_unique(array_map(array($this,'_getExtensionOnly'), $tmpTypes));
300
-			}else
301
-				$ReturnData=array();//the caller want an array... not null if empty
302
-			break;
287
+		    case 'all':
288
+			    return $this->_ribbonBinObjects;
289
+			    break;
290
+		    case 'names':
291
+		    case 'data':
292
+			    if(is_array($this->_ribbonBinObjects) && array_key_exists($What, $this->_ribbonBinObjects)){
293
+				    $ReturnData=$this->_ribbonBinObjects[$What];
294
+			    }
295
+			    break;
296
+		    case 'types':
297
+			    if(is_array($this->_ribbonBinObjects) && array_key_exists('data', $this->_ribbonBinObjects) && is_array($this->_ribbonBinObjects['data'])){
298
+				    $tmpTypes=array_keys($this->_ribbonBinObjects['data']);
299
+				    $ReturnData=array_unique(array_map(array($this,'_getExtensionOnly'), $tmpTypes));
300
+			    }else
301
+				    $ReturnData=array();//the caller want an array... not null if empty
302
+			    break;
303 303
 		}
304 304
 		return $ReturnData;
305 305
 	}
Please login to merge, or discard this patch.
dolibarr/htdocs/includes/nusoap/lib/Mail/mime.php 1 patch
Switch Indentation   +109 added lines, -109 removed lines patch added patch discarded remove patch
@@ -885,61 +885,61 @@  discard block
 block discarded – undo
885 885
         $text        = !$html && strlen($this->_txtbody);
886 886
 
887 887
         switch (true) {
888
-        case $text && !$attachments:
889
-            $message =& $this->_addTextPart($null, $this->_txtbody);
890
-            break;
891
-
892
-        case !$text && !$html && $attachments:
893
-            $message =& $this->_addMixedPart();
894
-            for ($i = 0; $i < count($this->_parts); $i++) {
895
-                $this->_addAttachmentPart($message, $this->_parts[$i]);
896
-            }
897
-            break;
898
-
899
-        case $text && $attachments:
900
-            $message =& $this->_addMixedPart();
901
-            $this->_addTextPart($message, $this->_txtbody);
902
-            for ($i = 0; $i < count($this->_parts); $i++) {
903
-                $this->_addAttachmentPart($message, $this->_parts[$i]);
904
-            }
905
-            break;
888
+            case $text && !$attachments:
889
+                $message =& $this->_addTextPart($null, $this->_txtbody);
890
+                break;
891
+
892
+            case !$text && !$html && $attachments:
893
+                $message =& $this->_addMixedPart();
894
+                for ($i = 0; $i < count($this->_parts); $i++) {
895
+                    $this->_addAttachmentPart($message, $this->_parts[$i]);
896
+                }
897
+                break;
906 898
 
907
-        case $html && !$attachments && !$html_images:
908
-            if (isset($this->_txtbody)) {
909
-                $message =& $this->_addAlternativePart($null);
910
-                $this->_addTextPart($message, $this->_txtbody);
911
-                $this->_addHtmlPart($message);
912
-            } else {
913
-                $message =& $this->_addHtmlPart($null);
914
-            }
915
-            break;
916
-
917
-        case $html && !$attachments && $html_images:
918
-            // * Content-Type: multipart/alternative;
919
-            //    * text
920
-            //    * Content-Type: multipart/related;
921
-            //       * html
922
-            //       * image...
923
-            if (isset($this->_txtbody)) {
924
-                $message =& $this->_addAlternativePart($null);
899
+            case $text && $attachments:
900
+                $message =& $this->_addMixedPart();
925 901
                 $this->_addTextPart($message, $this->_txtbody);
902
+                for ($i = 0; $i < count($this->_parts); $i++) {
903
+                    $this->_addAttachmentPart($message, $this->_parts[$i]);
904
+                }
905
+                break;
926 906
 
927
-                $ht =& $this->_addRelatedPart($message);
928
-                $this->_addHtmlPart($ht);
929
-                for ($i = 0; $i < count($this->_html_images); $i++) {
930
-                    $this->_addHtmlImagePart($ht, $this->_html_images[$i]);
907
+            case $html && !$attachments && !$html_images:
908
+                if (isset($this->_txtbody)) {
909
+                    $message =& $this->_addAlternativePart($null);
910
+                    $this->_addTextPart($message, $this->_txtbody);
911
+                    $this->_addHtmlPart($message);
912
+                } else {
913
+                    $message =& $this->_addHtmlPart($null);
931 914
                 }
932
-            } else {
933
-                // * Content-Type: multipart/related;
934
-                //    * html
935
-                //    * image...
936
-                $message =& $this->_addRelatedPart($null);
937
-                $this->_addHtmlPart($message);
938
-                for ($i = 0; $i < count($this->_html_images); $i++) {
939
-                    $this->_addHtmlImagePart($message, $this->_html_images[$i]);
915
+                break;
916
+
917
+            case $html && !$attachments && $html_images:
918
+                // * Content-Type: multipart/alternative;
919
+                //    * text
920
+                //    * Content-Type: multipart/related;
921
+                //       * html
922
+                //       * image...
923
+                if (isset($this->_txtbody)) {
924
+                    $message =& $this->_addAlternativePart($null);
925
+                    $this->_addTextPart($message, $this->_txtbody);
926
+
927
+                    $ht =& $this->_addRelatedPart($message);
928
+                    $this->_addHtmlPart($ht);
929
+                    for ($i = 0; $i < count($this->_html_images); $i++) {
930
+                        $this->_addHtmlImagePart($ht, $this->_html_images[$i]);
931
+                    }
932
+                } else {
933
+                    // * Content-Type: multipart/related;
934
+                    //    * html
935
+                    //    * image...
936
+                    $message =& $this->_addRelatedPart($null);
937
+                    $this->_addHtmlPart($message);
938
+                    for ($i = 0; $i < count($this->_html_images); $i++) {
939
+                        $this->_addHtmlImagePart($message, $this->_html_images[$i]);
940
+                    }
940 941
                 }
941
-            }
942
-            /*
942
+                /*
943 943
             // #13444, #9725: the code below was a non-RFC compliant hack
944 944
             // * Content-Type: multipart/related;
945 945
             //    * Content-Type: multipart/alternative;
@@ -958,39 +958,39 @@  discard block
 block discarded – undo
958 958
                 $this->_addHtmlImagePart($message, $this->_html_images[$i]);
959 959
             }
960 960
             */
961
-            break;
962
-
963
-        case $html && $attachments && !$html_images:
964
-            $message =& $this->_addMixedPart();
965
-            if (isset($this->_txtbody)) {
966
-                $alt =& $this->_addAlternativePart($message);
967
-                $this->_addTextPart($alt, $this->_txtbody);
968
-                $this->_addHtmlPart($alt);
969
-            } else {
970
-                $this->_addHtmlPart($message);
971
-            }
972
-            for ($i = 0; $i < count($this->_parts); $i++) {
973
-                $this->_addAttachmentPart($message, $this->_parts[$i]);
974
-            }
975
-            break;
976
-
977
-        case $html && $attachments && $html_images:
978
-            $message =& $this->_addMixedPart();
979
-            if (isset($this->_txtbody)) {
980
-                $alt =& $this->_addAlternativePart($message);
981
-                $this->_addTextPart($alt, $this->_txtbody);
982
-                $rel =& $this->_addRelatedPart($alt);
983
-            } else {
984
-                $rel =& $this->_addRelatedPart($message);
985
-            }
986
-            $this->_addHtmlPart($rel);
987
-            for ($i = 0; $i < count($this->_html_images); $i++) {
988
-                $this->_addHtmlImagePart($rel, $this->_html_images[$i]);
989
-            }
990
-            for ($i = 0; $i < count($this->_parts); $i++) {
991
-                $this->_addAttachmentPart($message, $this->_parts[$i]);
992
-            }
993
-            break;
961
+                break;
962
+
963
+            case $html && $attachments && !$html_images:
964
+                $message =& $this->_addMixedPart();
965
+                if (isset($this->_txtbody)) {
966
+                    $alt =& $this->_addAlternativePart($message);
967
+                    $this->_addTextPart($alt, $this->_txtbody);
968
+                    $this->_addHtmlPart($alt);
969
+                } else {
970
+                    $this->_addHtmlPart($message);
971
+                }
972
+                for ($i = 0; $i < count($this->_parts); $i++) {
973
+                    $this->_addAttachmentPart($message, $this->_parts[$i]);
974
+                }
975
+                break;
976
+
977
+            case $html && $attachments && $html_images:
978
+                $message =& $this->_addMixedPart();
979
+                if (isset($this->_txtbody)) {
980
+                    $alt =& $this->_addAlternativePart($message);
981
+                    $this->_addTextPart($alt, $this->_txtbody);
982
+                    $rel =& $this->_addRelatedPart($alt);
983
+                } else {
984
+                    $rel =& $this->_addRelatedPart($message);
985
+                }
986
+                $this->_addHtmlPart($rel);
987
+                for ($i = 0; $i < count($this->_html_images); $i++) {
988
+                    $this->_addHtmlImagePart($rel, $this->_html_images[$i]);
989
+                }
990
+                for ($i = 0; $i < count($this->_parts); $i++) {
991
+                    $this->_addAttachmentPart($message, $this->_parts[$i]);
992
+                }
993
+                break;
994 994
         }
995 995
 
996 996
         if (!isset($message)) {
@@ -1352,32 +1352,32 @@  discard block
 block discarded – undo
1352 1352
 
1353 1353
         // See get()
1354 1354
         switch (true) {
1355
-        case $text && !$attachments:
1356
-            $headers['Content-Type'] = 'text/plain';
1357
-            break;
1358
-
1359
-        case !$text && !$html && $attachments:
1360
-        case $text && $attachments:
1361
-        case $html && $attachments && !$html_images:
1362
-        case $html && $attachments && $html_images:
1363
-            $headers['Content-Type'] = 'multipart/mixed';
1364
-            break;
1365
-
1366
-        case $html && !$attachments && !$html_images && isset($this->_txtbody):
1367
-        case $html && !$attachments && $html_images && isset($this->_txtbody):
1368
-            $headers['Content-Type'] = 'multipart/alternative';
1369
-            break;
1370
-
1371
-        case $html && !$attachments && !$html_images && !isset($this->_txtbody):
1372
-            $headers['Content-Type'] = 'text/html';
1373
-            break;
1374
-
1375
-        case $html && !$attachments && $html_images && !isset($this->_txtbody):
1376
-            $headers['Content-Type'] = 'multipart/related';
1377
-            break;
1378
-
1379
-        default:
1380
-            return $headers;
1355
+            case $text && !$attachments:
1356
+                $headers['Content-Type'] = 'text/plain';
1357
+                break;
1358
+
1359
+            case !$text && !$html && $attachments:
1360
+            case $text && $attachments:
1361
+            case $html && $attachments && !$html_images:
1362
+            case $html && $attachments && $html_images:
1363
+                $headers['Content-Type'] = 'multipart/mixed';
1364
+                break;
1365
+
1366
+            case $html && !$attachments && !$html_images && isset($this->_txtbody):
1367
+            case $html && !$attachments && $html_images && isset($this->_txtbody):
1368
+                $headers['Content-Type'] = 'multipart/alternative';
1369
+                break;
1370
+
1371
+            case $html && !$attachments && !$html_images && !isset($this->_txtbody):
1372
+                $headers['Content-Type'] = 'text/html';
1373
+                break;
1374
+
1375
+            case $html && !$attachments && $html_images && !isset($this->_txtbody):
1376
+                $headers['Content-Type'] = 'multipart/related';
1377
+                break;
1378
+
1379
+            default:
1380
+                return $headers;
1381 1381
         }
1382 1382
 
1383 1383
         $this->_checkParams();
Please login to merge, or discard this patch.
dolibarr/htdocs/includes/nusoap/lib/Mail/mimePart.php 1 patch
Switch Indentation   +69 added lines, -69 removed lines patch added patch discarded remove patch
@@ -177,27 +177,27 @@  discard block
 block discarded – undo
177 177
 
178 178
         foreach ($params as $key => $value) {
179 179
             switch ($key) {
180
-            case 'encoding':
181
-                $this->_encoding = $value;
182
-                $headers['Content-Transfer-Encoding'] = $value;
183
-                break;
184
-
185
-            case 'cid':
186
-                $headers['Content-ID'] = '<' . $value . '>';
187
-                break;
188
-
189
-            case 'location':
190
-                $headers['Content-Location'] = $value;
191
-                break;
192
-
193
-            case 'body_file':
194
-                $this->_body_file = $value;
195
-                break;
196
-
197
-            // for backward compatibility
198
-            case 'dfilename':
199
-                $params['filename'] = $value;
200
-                break;
180
+                case 'encoding':
181
+                    $this->_encoding = $value;
182
+                    $headers['Content-Transfer-Encoding'] = $value;
183
+                    break;
184
+
185
+                case 'cid':
186
+                    $headers['Content-ID'] = '<' . $value . '>';
187
+                    break;
188
+
189
+                case 'location':
190
+                    $headers['Content-Location'] = $value;
191
+                    break;
192
+
193
+                case 'body_file':
194
+                    $this->_body_file = $value;
195
+                    break;
196
+
197
+                // for backward compatibility
198
+                case 'dfilename':
199
+                    $params['filename'] = $value;
200
+                    break;
201 201
             }
202 202
         }
203 203
 
@@ -481,18 +481,18 @@  discard block
 block discarded – undo
481 481
     function _getEncodedData($data, $encoding)
482 482
     {
483 483
         switch ($encoding) {
484
-        case 'quoted-printable':
485
-            return $this->_quotedPrintableEncode($data);
486
-            break;
484
+            case 'quoted-printable':
485
+                return $this->_quotedPrintableEncode($data);
486
+                break;
487 487
 
488
-        case 'base64':
489
-            return rtrim(chunk_split(base64_encode($data), 76, $this->_eol));
490
-            break;
488
+            case 'base64':
489
+                return rtrim(chunk_split(base64_encode($data), 76, $this->_eol));
490
+                break;
491 491
 
492
-        case '8bit':
493
-        case '7bit':
494
-        default:
495
-            return $data;
492
+            case '8bit':
493
+            case '7bit':
494
+            default:
495
+                return $data;
496 496
         }
497 497
     }
498 498
 
@@ -523,48 +523,48 @@  discard block
 block discarded – undo
523 523
         $data = '';
524 524
 
525 525
         switch ($encoding) {
526
-        case 'quoted-printable':
527
-            while (!feof($fd)) {
528
-                $buffer = $this->_quotedPrintableEncode(fgets($fd));
529
-                if ($fh) {
530
-                    fwrite($fh, $buffer);
531
-                } else {
532
-                    $data .= $buffer;
533
-                }
534
-            }
535
-            break;
536
-
537
-        case 'base64':
538
-            while (!feof($fd)) {
539
-                // Should read in a multiple of 57 bytes so that
540
-                // the output is 76 bytes per line. Don't use big chunks
541
-                // because base64 encoding is memory expensive
542
-                $buffer = fread($fd, 57 * 9198); // ca. 0.5 MB
543
-                $buffer = base64_encode($buffer);
544
-                $buffer = chunk_split($buffer, 76, $this->_eol);
545
-                if (feof($fd)) {
546
-                    $buffer = rtrim($buffer);
526
+            case 'quoted-printable':
527
+                while (!feof($fd)) {
528
+                    $buffer = $this->_quotedPrintableEncode(fgets($fd));
529
+                    if ($fh) {
530
+                        fwrite($fh, $buffer);
531
+                    } else {
532
+                        $data .= $buffer;
533
+                    }
547 534
                 }
535
+                break;
548 536
 
549
-                if ($fh) {
550
-                    fwrite($fh, $buffer);
551
-                } else {
552
-                    $data .= $buffer;
537
+            case 'base64':
538
+                while (!feof($fd)) {
539
+                    // Should read in a multiple of 57 bytes so that
540
+                    // the output is 76 bytes per line. Don't use big chunks
541
+                    // because base64 encoding is memory expensive
542
+                    $buffer = fread($fd, 57 * 9198); // ca. 0.5 MB
543
+                    $buffer = base64_encode($buffer);
544
+                    $buffer = chunk_split($buffer, 76, $this->_eol);
545
+                    if (feof($fd)) {
546
+                        $buffer = rtrim($buffer);
547
+                    }
548
+
549
+                    if ($fh) {
550
+                        fwrite($fh, $buffer);
551
+                    } else {
552
+                        $data .= $buffer;
553
+                    }
553 554
                 }
554
-            }
555
-            break;
556
-
557
-        case '8bit':
558
-        case '7bit':
559
-        default:
560
-            while (!feof($fd)) {
561
-                $buffer = fread($fd, 1048576); // 1 MB
562
-                if ($fh) {
563
-                    fwrite($fh, $buffer);
564
-                } else {
565
-                    $data .= $buffer;
555
+                break;
556
+
557
+            case '8bit':
558
+            case '7bit':
559
+            default:
560
+                while (!feof($fd)) {
561
+                    $buffer = fread($fd, 1048576); // 1 MB
562
+                    if ($fh) {
563
+                        fwrite($fh, $buffer);
564
+                    } else {
565
+                        $data .= $buffer;
566
+                    }
566 567
                 }
567
-            }
568 568
         }
569 569
 
570 570
         fclose($fd);
Please login to merge, or discard this patch.