• Модуль: ui
  • Путь к файлу: ~/bitrix/modules/ui/lib/barcode/barcodegenerator.php
  • Класс: BitrixUIBarcodeBarcodeGenerator
  • Вызов: BarcodeGenerator::code_93_encode
private function code_93_encode($data) {
	$data = strtoupper(preg_replace('/[^0-9A-Za-z%+/$ .-]/', '', $data));
	$modules = array();
	/* Start */
	$modules[] = array(1, 1, 1);
	$modules[] = array(0, 1, 1);
	$modules[] = array(1, 1, 1);
	$modules[] = array(0, 1, 1);
	$modules[] = array(1, 4, 1);
	$modules[] = array(0, 1, 1);
	/* Data */
	$values = array();
	for ($i = 0, $n = strlen($data); $i < $n; $i++) {
		$char = substr($data, $i, 1);
		$block = $this->code_93_alphabet[$char];
		$modules[] = array(1, $block[0], 1);
		$modules[] = array(0, $block[1], 1);
		$modules[] = array(1, $block[2], 1);
		$modules[] = array(0, $block[3], 1);
		$modules[] = array(1, $block[4], 1);
		$modules[] = array(0, $block[5], 1);
		$values[] = $block[6];
	}
	/* Check Digits */
	for ($i = 0; $i < 2; $i++) {
		$index = count($values);
		$weight = 0;
		$checksum = 0;
		while ($index) {
			$index--;
			$weight++;
			$checksum += $weight * $values[$index];
			$checksum %= 47;
			$weight %= ($i ? 15 : 20);
		}
		$values[] = $checksum;
	}
	$alphabet = array_values($this->code_93_alphabet);
	for ($i = count($values) - 2, $n = count($values); $i < $n; $i++) {
		$block = $alphabet[$values[$i]];
		$modules[] = array(1, $block[0], 1);
		$modules[] = array(0, $block[1], 1);
		$modules[] = array(1, $block[2], 1);
		$modules[] = array(0, $block[3], 1);
		$modules[] = array(1, $block[4], 1);
		$modules[] = array(0, $block[5], 1);
	}
	/* End */
	$modules[] = array(1, 1, 1);
	$modules[] = array(0, 1, 1);
	$modules[] = array(1, 1, 1);
	$modules[] = array(0, 1, 1);
	$modules[] = array(1, 4, 1);
	$modules[] = array(0, 1, 1);
	$modules[] = array(1, 1, 1);
	/* Return */
	$blocks = array(array('m' => $modules, 'l' => array($data)));
	return array('g' => 'l', 'b' => $blocks);
}