PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 2.27.1
GiveWP – Donation Plugin and Fundraising Platform v2.27.1
4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 All 253 releases
give / vendor / fakerphp / faker / src / Faker / Provider / Barcode.php
Barcode.php
115 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Faker\Provider;
4
5 /**
6 * @see http://en.wikipedia.org/wiki/EAN-13
7 * @see http://en.wikipedia.org/wiki/ISBN
8 */
9 class Barcode extends Base
10 {
11 private function ean($length = 13)
12 {
13 $code = static::numerify(str_repeat('#', $length - 1));
14
15 return $code . static::eanChecksum($code);
16 }
17
18 /**
19 * Utility function for computing EAN checksums
20 *
21 * @param string $input
22 *
23 * @return integer
24 */
25 protected static function eanChecksum($input)
26 {
27 $sequence = (strlen($input) + 1) === 8 ? array(3, 1) : array(1, 3);
28 $sums = 0;
29 foreach (str_split($input) as $n => $digit) {
30 $sums += $digit * $sequence[$n % 2];
31 }
32 return (10 - $sums % 10) % 10;
33 }
34
35 /**
36 * ISBN-10 check digit
37 * @link http://en.wikipedia.org/wiki/International_Standard_Book_Number#ISBN-10_check_digits
38 *
39 * @param string $input ISBN without check-digit
40 * @throws \LengthException When wrong input length passed
41 *
42 * @return integer Check digit
43 */
44 protected static function isbnChecksum($input)
45 {
46 // We're calculating check digit for ISBN-10
47 // so, the length of the input should be 9
48 $length = 9;
49
50 if (strlen($input) !== $length) {
51 throw new \LengthException(sprintf('Input length should be equal to %d', $length));
52 }
53
54 $digits = str_split($input);
55 array_walk(
56 $digits,
57 function (&$digit, $position) {
58 $digit = (10 - $position) * $digit;
59 }
60 );
61 $result = (11 - array_sum($digits) % 11) % 11;
62
63 // 10 is replaced by X
64 return ($result < 10)?$result:'X';
65 }
66
67 /**
68 * Get a random EAN13 barcode.
69 * @return string
70 * @example '4006381333931'
71 */
72 public function ean13()
73 {
74 return $this->ean(13);
75 }
76
77 /**
78 * Get a random EAN8 barcode.
79 * @return string
80 * @example '73513537'
81 */
82 public function ean8()
83 {
84 return $this->ean(8);
85 }
86
87 /**
88 * Get a random ISBN-10 code
89 * @link http://en.wikipedia.org/wiki/International_Standard_Book_Number
90 *
91 * @return string
92 * @example '4881416324'
93 */
94 public function isbn10()
95 {
96 $code = static::numerify(str_repeat('#', 9));
97
98 return $code . static::isbnChecksum($code);
99 }
100
101 /**
102 * Get a random ISBN-13 code
103 * @link http://en.wikipedia.org/wiki/International_Standard_Book_Number
104 *
105 * @return string
106 * @example '9790404436093'
107 */
108 public function isbn13()
109 {
110 $code = '97' . static::numberBetween(8, 9) . static::numerify(str_repeat('#', 9));
111
112 return $code . static::eanChecksum($code);
113 }
114 }
115