فهرست منبع

NEW add barcode function to check if EAN13 is valid (#26567)

Regis Houssin 1 سال پیش
والد
کامیت
c9d2d77fef
1فایلهای تغییر یافته به همراه34 افزوده شده و 0 حذف شده
  1. 34 0
      htdocs/core/lib/barcode.lib.php

+ 34 - 0
htdocs/core/lib/barcode.lib.php

@@ -511,3 +511,37 @@ function barcode_outimage($text, $bars, $scale = 1, $mode = "png", $total_y = 0,
 		imagepng($im);
 	}
 }
+
+/**
+ * Check if EAN13 code is valid
+ *
+ * @param string $ean	Code
+ * @return bool
+ */
+function isAValidEAN13($ean)
+{
+	$sumEvenIndexes = 0;
+	$sumOddIndexes  = 0;
+
+	$eanAsArray = array_map('intval', str_split($ean));
+
+	if (!(count($eanAsArray) === 13)) {
+		return false;
+	};
+
+	for ($i = 0; $i < count($eanAsArray)-1; $i++) {
+		if ($i % 2 === 0) {
+			$sumOddIndexes  += $eanAsArray[$i];
+		} else {
+			$sumEvenIndexes += $eanAsArray[$i];
+		}
+	}
+
+	$rest = ($sumOddIndexes + (3 * $sumEvenIndexes)) % 10;
+
+	if ($rest !== 0) {
+		$rest = 10 - $rest;
+	}
+
+	return $rest === $eanAsArray[12];
+}