Mike42\Escpos\PrintBuffers\EscposPrintBuffer::loadAvailableCharacters PHP Method

loadAvailableCharacters() private method

Based on the printer's connector, compute (or load a cached copy of) maps of UTF character to unicode characters for later use.
    private function loadAvailableCharacters()
    {
        $profile = $this->printer->getPrinterCapabilityProfile();
        $supportedCodePages = $profile->getCodePages();
        $profileName = $profile->getId();
        $cacheFile = dirname(__FILE__) . "/cache/Characters-" . $profileName . ".ser" . (self::COMPRESS_CACHE ? ".z" : "");
        $cacheKey = $profile->getCodePageCacheKey();
        /* Check for pre-generated file */
        if (file_exists($cacheFile)) {
            $cacheData = file_get_contents($cacheFile);
            if (self::COMPRESS_CACHE) {
                $cacheData = gzuncompress($cacheData);
            }
            if ($cacheData) {
                $dataArray = unserialize($cacheData);
                if (isset($dataArray["key"]) && isset($dataArray["available"]) && isset($dataArray["encode"]) && $dataArray["key"] == $cacheKey) {
                    $this->available = $dataArray["available"];
                    $this->encode = $dataArray["encode"];
                    return;
                }
            }
        }
        /* Generate conversion tables */
        $encode = array();
        $available = array();
        foreach ($supportedCodePages as $num => $codePage) {
            $encode[$num] = array();
            if (!$codePage->isEncodable()) {
                continue;
            }
            $map = $codePage->getData();
            for ($char = 128; $char <= 255; $char++) {
                $utf8 = mb_substr($map, $char - 128, 1, self::INPUT_ENCODING);
                if ($utf8 == " ") {
                    // Skip placeholders
                    continue;
                }
                if (!isset($available[$utf8])) {
                    $available[$utf8] = array();
                }
                $available[$utf8][$num] = true;
                $encode[$num][$utf8] = chr($char);
            }
        }
        /* Use generated data */
        $dataArray = array("available" => $available, "encode" => $encode, "key" => $cacheKey);
        $this->available = $dataArray["available"];
        $this->encode = $dataArray["encode"];
        $cacheData = serialize($dataArray);
        if (self::COMPRESS_CACHE) {
            $cacheData = gzcompress($cacheData);
        }
        /* Attempt to cache, but don't worry if we can't */
        @file_put_contents($cacheFile, $cacheData);
    }