OEModule\OphCoCvi\components\OphCoCvi_Manager::populateCviCertificate PHP Method

populateCviCertificate() protected method

Prepare the Certificate template with the data available from the given event.
protected populateCviCertificate ( Event $event, boolean $ignore_portal = false ) : ODTTemplateManager
$event Event
$ignore_portal boolean - if true, will force the signature box to be rendered rather than checking the portal
return ODTTemplateManager
    protected function populateCviCertificate(\Event $event, $ignore_portal = false)
    {
        $signature_element = $this->getConsentSignatureElementForEvent($event);
        //  we need to check if we already have a signature file linked
        if (!$signature_element->checkSignature()) {
            //TODO: restructure or rename, as this process is basically also going to generate
            //TODO: the QR code signature placeholder when its not yet been captured.
            // we check if the signature is exists on the portal
            $signature = $ignore_portal ? $signature_element->getSignatureBox() : $signature_element->loadSignatureFromPortal();
        } else {
            // TODO: this should be checked before, when we retrieve the patient signature!!!
            // we get the stored signature and creates a GD object from the data
            if ($signature_element->getDecryptedSignature()) {
                $signature = imagecreatefromstring($signature_element->getDecryptedSignature());
            } else {
                $signature = imagecreatetruecolor(1, 1);
            }
        }
        // TODO: need to configure this more cleanly
        $print_helper = new \ODTTemplateManager($this->input_template_file, realpath(__DIR__ . '/..') . '/views/odtTemplate', $this->yii->basePath . '/runtime/cache/cvi/', 'CVICert_' . $event->id . '_' . mt_rand() . '.odt');
        $data_handler = new \ODTDataHandler();
        $structured_data = $this->getStructuredDataForPrintPDF($event);
        $data_handler->setTableAndSimpleTextDataFromArray($structured_data);
        $tables = $data_handler->getTables();
        foreach ($tables as $one_table) {
            $name = $one_table['name'];
            $data = $data_handler->generateSimpleTableHashData($one_table);
            $print_helper->fillTableByName($name, $data, 'name');
        }
        $texts = $data_handler->getSimpleTexts();
        $print_helper->exchangeAllStringValuesByStyleName($texts);
        //$print_helper->exchangeStringValues( $this->getStructuredDataForPrintPDF($id) );
        // TODO: This should be handled more cleanly for the image manipulation
        $print_helper->changeImageFromGDObject('signatureImagePatient', $signature);
        if (array_key_exists('signatureImageConsultant', $structured_data)) {
            $print_helper->changeImageFromGDObject('signatureImageConsultant', $structured_data['signatureImageConsultant']);
        }
        $print_helper->saveContentXML();
        $print_helper->generatePDF();
        return $print_helper;
    }