80        $this->lng      = 
$DIC[
'lng'];
 
   81        $this->ctrl     = 
$DIC[
'ilCtrl'];
 
   82        $this->
ilias    = $DIC[
'ilias'];
 
   83        $this->tree     = 
$DIC[
'tree'];
 
   85        $this->log      = 
$DIC[
'ilLog'];
 
   86        $this->db       = 
$DIC[
'ilDB'];
 
   97        return str_replace(
',', 
'.', $a_number);
 
  109                array(CLIENT_WEB_DIR, 
'//'),
 
  110                array(
'[CLIENT_WEB_DIR]', 
'/'),
 
  125        return "background.jpg";
 
  145        return $this->
getAdapter()->getCertificatePath() . 
"background_upload.tmp";
 
  165        return "certificate.xml";
 
  175        return "certificate.xml";
 
  186        include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  199        include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  233        $certificatepath = $this->
getAdapter()->getCertificatePath();
 
  235        $new_xsl = $newObject->getXSLPath();
 
  236        $new_bgimage = $newObject->getBackgroundImagePath();
 
  237        $new_bgimagethumb = $newObject->getBackgroundImageThumbPath();
 
  238        $new_certificatepath = $newObject->getAdapter()->getCertificatePath();
 
  240        if (@file_exists($xsl)) {
 
  242            @copy($xsl, $new_xsl);
 
  243            if (@file_exists($bgimage)) {
 
  244                @copy($bgimage, $new_bgimage);
 
  246            if (@file_exists($bgimagethumb)) {
 
  247                @copy($bgimagethumb, $new_bgimagethumb);
 
  253            $newObject->writeActive(
true);
 
  264        if (@file_exists($this->
getAdapter()->getCertificatePath())) {
 
  265            include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  278            $xslfo = file_get_contents($this->
getXSLPath());
 
  282        if (preg_match(
"/page-width\=\"([^\"]+)\"/", $xslfo, $matches)) {
 
  283            $pagewidth = $matches[1];
 
  285        $pageheight = 
"29.7cm";
 
  286        if (preg_match(
"/page-height\=\"([^\"]+)\"/", $xslfo, $matches)) {
 
  287            $pageheight = $matches[1];
 
  289        $certificatesettings = 
new ilSetting(
"certificate");
 
  290        $pagesize = $certificatesettings->get(
"pageformat");
 
  292        if (((strcmp($pageheight, 
"29.7cm") == 0) || (strcmp($pageheight, 
"297mm") == 0)) && ((strcmp($pagewidth, 
"21cm") == 0) || (strcmp($pagewidth, 
"210mm") == 0))) {
 
  294        } elseif (((strcmp($pagewidth, 
"29.7cm") == 0) || (strcmp($pagewidth, 
"297mm") == 0)) && ((strcmp($pageheight, 
"21cm") == 0) || (strcmp($pageheight, 
"210mm") == 0))) {
 
  295            $pagesize = 
"a4landscape";
 
  296        } elseif (((strcmp($pageheight, 
"21cm") == 0) || (strcmp($pageheight, 
"210mm") == 0)) && ((strcmp($pagewidth, 
"14.8cm") == 0) || (strcmp($pagewidth, 
"148mm") == 0))) {
 
  298        } elseif (((strcmp($pagewidth, 
"21cm") == 0) || (strcmp($pagewidth, 
"210mm") == 0)) && ((strcmp($pageheight, 
"14.8cm") == 0) || (strcmp($pageheight, 
"148mm") == 0))) {
 
  299            $pagesize = 
"a5landscape";
 
  300        } elseif (((strcmp($pageheight, 
"11in") == 0)) && ((strcmp($pagewidth, 
"8.5in") == 0))) {
 
  301            $pagesize = 
"letter";
 
  302        } elseif (((strcmp($pagewidth, 
"11in") == 0)) && ((strcmp($pageheight, 
"8.5in") == 0))) {
 
  303            $pagesize = 
"letterlandscape";
 
  305            $pagesize = 
"custom";
 
  307        if (!strlen($xslfo)) {
 
  308            $pagesize = $certificatesettings->get(
"pageformat");
 
  311        $marginbody_top = 
"0cm";
 
  312        $marginbody_right = 
"2cm";
 
  313        $marginbody_bottom = 
"0cm";
 
  314        $marginbody_left = 
"2cm";
 
  315        if (preg_match(
"/fo:flow[^>]*margin\=\"([^\"]+)\"/", $xslfo, $matches)) {
 
  317            $marginbody = $matches[1];
 
  318            if (preg_match_all(
"/([^\s]+)/", $marginbody, $matches)) {
 
  319                $marginbody_top = $matches[1][0];
 
  320                $marginbody_right = $matches[1][1];
 
  321                $marginbody_bottom = $matches[1][2];
 
  322                $marginbody_left = $matches[1][3];
 
  324        } elseif (preg_match(
"/fo:region-body[^>]*margin\=\"([^\"]+)\"/", $xslfo, $matches)) {
 
  325            $marginbody = $matches[1];
 
  326            if (preg_match_all(
"/([^\s]+)/", $marginbody, $matches)) {
 
  327                $marginbody_top = $matches[1][0];
 
  328                $marginbody_right = $matches[1][1];
 
  329                $marginbody_bottom = $matches[1][2];
 
  330                $marginbody_left = $matches[1][3];
 
  334        $xsl = file_get_contents(
"./Services/Certificate/xml/fo2xhtml.xsl");
 
  335        if ((strlen($xslfo)) && (strlen($xsl))) {
 
  336            $args = array( 
'/_xml' => $xslfo, 
'/_xsl' => $xsl );
 
  338            $output = xslt_process($xh, 
"arg:/_xml", 
"arg:/_xsl", 
null, $args, 
null);
 
  348        $form_fields = array(
 
  349            "pageformat" => $pagesize,
 
  350            "pagewidth" => $pagewidth,
 
  351            "pageheight" => $pageheight,
 
  352            "margin_body_top" => $marginbody_top,
 
  353            "margin_body_right" => $marginbody_right,
 
  354            "margin_body_bottom" => $marginbody_bottom,
 
  355            "margin_body_left" => $marginbody_left,
 
  358        $this->
getAdapter()->addFormFieldsFromObject($form_fields);
 
  370        $content = 
"<html><body>" . $form_data[
"certificate_text"] . 
"</body></html>";
 
  371        $content = preg_replace(
"/<p>( ){1,}<\\/p>/", 
"<p></p>", $content);
 
  372        $content = preg_replace(
"/<p>(\\s)*?<\\/p>/", 
"<p></p>", $content);
 
  375        $content = str_replace(
"<p></p>", 
"<p class=\"emptyrow\"></p>", $content);
 
  376        $content = str_replace(
" ", 
" ", $content);
 
  377        $content = preg_replace(
"//", 
"", $content);
 
  379        include_once 
"./Services/Certificate/classes/class.ilXmlChecker.php";
 
  381        $check->setXMLContent($content);
 
  382        $check->startParsing();
 
  383        if ($check->hasError()) {
 
  384            throw new Exception($this->lng->txt(
"certificate_not_well_formed"));
 
  387        $xsl = file_get_contents(
"./Services/Certificate/xml/xhtml2fo.xsl");
 
  391            'font-family="Helvetica, unifont"',
 
  392            'font-family="' . $this->
settings->get(
'rpc_pdf_font', 
'Helvetica, unifont') . 
'"',
 
  396        $args = array( 
'/_xml' => $content, 
'/_xsl' => $xsl );
 
  398        if (strcmp($form_data[
"pageformat"], 
"custom") == 0) {
 
  399            $pageheight = $form_data[
"pageheight"];
 
  400            $pagewidth = $form_data[
"pagewidth"];
 
  403            $pageheight = $pageformats[$form_data[
"pageformat"]][
"height"];
 
  404            $pagewidth = $pageformats[$form_data[
"pageformat"]][
"width"];
 
  406        include_once 
"./Services/Certificate/classes/class.ilObjCertificateSettingsAccess.php";
 
  409            "pageheight"      => $pageheight,
 
  410            "pagewidth"       => $pagewidth,
 
  411            "backgroundimage" => $backgroundimage,
 
  412            "marginbody"      => implode(
' ', array(
 
  413                $form_data[
"margin_body_top"],
 
  414                $form_data[
"margin_body_right"],
 
  415                $form_data[
"margin_body_bottom"],
 
  416                $form_data[
"margin_body_left"]
 
  419        $output = xslt_process($xh, 
"arg:/_xml", 
"arg:/_xsl", 
null, $args, 
$params);
 
  434        if (count($insert_tags) == 0) {
 
  435            $insert_tags = $this->
getAdapter()->getCertificateVariablesForPreview();
 
  436            foreach (self::getCustomCertificateFields() as $k => $f) {
 
  440        foreach ($insert_tags as $var => $value) {
 
  441            $certificate_text = str_replace($var, $value, $certificate_text);
 
  444        $certificate_text = str_replace(
'[CLIENT_WEB_DIR]', CLIENT_WEB_DIR, $certificate_text);
 
  446        return $certificate_text;
 
  458        $insert_tags = $this->
getAdapter()->getCertificateVariablesForPresentation(
$params);
 
  460        include_once(
"./Services/User/classes/class.ilUserDefinedData.php");
 
  462        $cust_data = $cust_data->getAll();
 
  463        foreach (self::getCustomCertificateFields() as $k => $f) {
 
  467        $xslfo = file_get_contents($this->
getXSLPath());
 
  470        require_once(
'Services/MathJax/classes/class.ilMathJax.php');
 
  474            ->insertLatexImages($xslfo);
 
  476        include_once 
'./Services/WebServices/RPC/classes/class.ilRpcClientFactory.php';
 
  482                include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  485                return $pdf_base64->scalar;
 
  487        } 
catch (Exception $e) {
 
  488            $this->log->write(__METHOD__ . 
': ' . $e->getMessage());
 
  502        $xslfo = file_get_contents($this->
getXSLPath());
 
  505        require_once(
'Services/MathJax/classes/class.ilMathJax.php');
 
  509            ->insertLatexImages($xslfo);
 
  511        include_once 
'./Services/WebServices/RPC/classes/class.ilRpcClientFactory.php';
 
  516            ilUtil::deliverData($pdf_base64->scalar, $this->getAdapter()->getCertificateFilename(), 
"application/pdf");
 
  517        } 
catch (Exception $e) {
 
  518            $this->log->write(__METHOD__ . 
': ' . $e->getMessage());
 
  532        if (!file_exists($this->
getAdapter()->getCertificatePath())) {
 
  552        if (!empty($image_tempfilename)) {
 
  554            $imagepath = $this->
getAdapter()->getCertificatePath();
 
  555            if (!file_exists($imagepath)) {
 
  559            if (!ilUtil::moveUploadedFile(
 
  604        if (self::isActive()) {
 
  605            $obj_id = $this->
getAdapter()->getCertificateID();
 
  606            if ($obj_id && !self::isObjectActive($obj_id)) {
 
  609            if (file_exists($this->
getAdapter()->getCertificatePath())) {
 
  627            if (self::isActive()) {
 
  628                $obj_id = 
$adapter->getCertificateID();
 
  629                if ($obj_id && !self::isObjectActive($obj_id)) {
 
  633                $certificatepath = 
$adapter->getCertificatePath();
 
  634                if (file_exists($certificatepath)) {
 
  636                    if (file_exists($xslpath) && (filesize($xslpath) > 0)) {
 
  654                "name" => $this->lng->txt(
"certificate_a4"), 
 
  659            "a4landscape" => array(
 
  660                "name" => $this->lng->txt(
"certificate_a4_landscape"), 
 
  661                "value" => 
"a4landscape",
 
  666                "name" => $this->lng->txt(
"certificate_a5"), 
 
  671            "a5landscape" => array(
 
  672                "name" => $this->lng->txt(
"certificate_a5_landscape"), 
 
  673                "value" => 
"a5landscape",
 
  678                "name" => $this->lng->txt(
"certificate_letter"), 
 
  683            "letterlandscape" => array(
 
  684                "name" => $this->lng->txt(
"certificate_letter_landscape"), 
 
  685                "value" => 
"letterlandscape",
 
  690                "name" => $this->lng->txt(
"certificate_custom"),
 
  703        include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  706        $xsl = file_get_contents($this->
getXSLPath());
 
  707        $xslexport = str_replace($this->
getAdapter()->getCertificatePath(), 
"", $xsl);
 
  714            include_once 
"./Services/Certificate/classes/class.ilObjCertificateSettingsAccess.php";
 
  719        $zipfile = time() . 
"__" . IL_INST_ID . 
"__" . $this->
getAdapter()->getAdapterType() . 
"__" . $this->
getAdapter()->getCertificateId() . 
"__certificate.zip";
 
  732        include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  739        $subdir = str_replace(
".zip", 
"", strtolower(
$filename)) . 
"/";
 
  741        if (is_dir($importpath . $subdir)) {
 
  743            $copydir = $importpath . $subdir;
 
  746            $copydir = $importpath;
 
  750        foreach ($dirinfo as 
$file) {
 
  751            if (strcmp(
$file[
"type"], 
"file") == 0) {
 
  752                if (strpos(
$file[
"entry"], 
".xml") !== 
false) {
 
  754                } elseif (strpos(
$file[
"entry"], 
".zip") !== 
false) {
 
  761        if ($xmlfiles == 1) {
 
  762            foreach ($dirinfo as 
$file) {
 
  763                if (strcmp(
$file[
"type"], 
"file") == 0) {
 
  764                    if (strpos(
$file[
"entry"], 
".xml") !== 
false) {
 
  765                        $xsl = file_get_contents($copydir . 
$file[
"entry"]);
 
  768                        $xsl = preg_replace_callback(
"/url\([']{0,1}(.*?)[']{0,1}\)/", 
function (array $matches) {
 
  770                            $fileName = basename($matches[1]);
 
  772                            return 'url(' . $basePath . 
'/' . $fileName . 
')';
 
  775                    } elseif (strpos(
$file[
"entry"], 
".zip") !== 
false) {
 
An exception for terminatinating execution or to throw for unit testing.
Adapter class to provide certificate data for the certificate generator.
cloneCertificate($newObject)
Clone the certificate for another test object.
getBackgroundImageTempfilePath()
Returns the filesystem path of the background image temp file during upload.
deliverExportFileXML()
Builds an export file in ZIP format and delivers it.
getBackgroundImageThumbPath()
Returns the filesystem path of the background image thumbnail.
deleteBackgroundImage()
Deletes the background image of a certificate.
getBackgroundImageThumbPathWeb()
Returns the web path of the background image thumbnail.
uploadBackgroundImage($image_tempfilename)
Uploads a background image for the certificate.
static _isComplete($adapter)
Checks the status of the certificate.
exchangeCertificateVariables($certificate_text, $insert_tags=array())
Exchanges the variables in the certificate text with given values.
getPageFormats()
Retrieves predefined page formats.
importCertificate($zipfile, $filename)
Reads an import ZIP file and creates a certificate of it.
getBackgroundImagePathWeb()
Returns the web path of the background image.
getBackgroundImagePath($asRelative=false)
Returns the filesystem path of the background image.
formatNumberString($a_number)
isComplete()
Checks the status of the certificate.
getXSLName()
Returns the filename of the XSL-FO file.
outCertificate($params, $deliver=true)
Creates a PDF certificate.
setAdapter($adapter)
Sets the adapter.
getBackgroundImageName()
Returns the filename of the background image.
deleteCertificate()
Deletes the certificate and all it's data.
hasBackgroundImage()
Checks for the background image of the certificate.
static _getXSLName()
Returns the filename of the XSL-FO file.
getFormFieldsFromFO()
Convert the XSL-FO to the certificate text and the form settings using XSL transformation.
__construct(ilCertificateAdapter $adapter)
ilCertificate constructor
createPreview()
Creates a PDF preview of the XSL-FO certificate.
processXHTML2FO($form_data, $for_export=false)
Convert the certificate text to XSL-FO using XSL transformation.
getXSLPath()
Returns the filesystem path of the XSL-FO file.
getAdapter()
Gets the adapter.
saveCertificate($xslfo, $filename="")
Saves the XSL-FO code to a file.
static setUseRelativeDates($a_status)
set use relative dates
static getInstance()
Singleton: get instance.
const RENDER_PNG_AS_FO_FILE
static hasBackgroundImage()
Returns wheather or not a default background image exists.
static getBackgroundImagePath($asRelative=false)
Returns the filesystem path of the background image.
static getBackgroundImageName()
Returns the filename of the background image.
static factory($a_package, $a_timeout=0)
Creates an ilRpcClient instance to our ilServer.
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static convertImage( $a_from, $a_to, $a_target_format="", $a_geometry="", $a_background_color="")
convert image
static deliverData($a_data, $a_filename, $mime="application/octet-stream", $charset="")
deliver data for download via browser.
static zip($a_dir, $a_file, $compress_content=false)
zips given directory/file into given zip.file
static getDir($a_dir, $a_rec=false, $a_sub_dir="")
get directory
static deliverFile( $a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
static unzip($a_file, $overwrite=false, $a_flat=false)
unzip file
static makeDirParents($a_dir)
Create a new directory and all parent directories.
static removeTrailingPathSeparators($path)
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
if(!is_dir( $entity_dir)) exit("Fatal Error ([A-Za-z0-9]+)\s+" &#(? foreach( $entity_files as $file) $output
redirection script todo: (a better solution should control the processing via a xml file)
if(!file_exists("$old.txt")) if( $old===$new) if(file_exists("$new.txt")) $file