diff --git a/lam/lib/baseModule.inc b/lam/lib/baseModule.inc
index dc8b300b..78a9ae4d 100644
--- a/lam/lib/baseModule.inc
+++ b/lam/lib/baseModule.inc
@@ -33,6 +33,9 @@ $Id$
* @see baseModule
*/
+/** PDF functions */
+include_once('pdf.inc');
+
/**
* Parent class of all account modules.
* It implements the complete module interface and uses meta-data
@@ -838,7 +841,8 @@ abstract class baseModule {
// TODO workaround for UFPDF, remove when migrated to other PDF library
$value = trim($value);
}
- $result[get_class($this) . '_' . $name] = array('' . $label . '' . $value . '');
+ $result[get_class($this) . '_' . $name][] = new PDFLabelValue($label, $value);
+// $result[get_class($this) . '_' . $name] = array('' . $label . '' . $value . '');
}
/**
@@ -855,7 +859,8 @@ abstract class baseModule {
natcasesort($value);
$value = implode($delimiter, $value);
}
- $result[get_class($this) . '_' . $name] = array('' . $label . '' . $value . '');
+ $result[get_class($this) . '_' . $name][] = new PDFLabelValue($label, $value);
+// $result[get_class($this) . '_' . $name] = array('' . $label . '' . $value . '');
}
/**
@@ -869,7 +874,8 @@ abstract class baseModule {
if (empty($table->rows)) {
return;
}
- if (!empty($table->label)) {
+ $result[get_class($this) . '_' . $name][] = $table;
+/* if (!empty($table->label)) {
$result[get_class($this) . '_' . $name][] = '' . $table->label . ': |
';
}
foreach ($table->rows as $row) {
@@ -881,7 +887,7 @@ abstract class baseModule {
}
$xml .= '';
$result[get_class($this) . '_' . $name][] = $xml;
- }
+ }*/
}
/**
@@ -1963,80 +1969,4 @@ abstract class baseModule {
}
-/**
- * Represents a table for PDF export.
- *
- * @package PDF
- * @author Roland Gruber
- */
-class PDFTable {
-
- /** optional label of table */
- public $label = null;
- /** list of PDFTableRow elements */
- public $rows = array();
-
- /**
- * Constructor
- *
- * @param String $label label
- */
- public function __construct($label = null) {
- $this->label = $label;
- }
-
-}
-
-/**
- * Represents a table row for PDF export.
- *
- * @package PDF
- * @author Roland Gruber
- */
-class PDFTableRow {
-
- /** list of PDFTableCell */
- public $cells = array();
-
-}
-
-/**
- * Represents a table cell for PDF export.
- *
- * @package PDF
- * @author Roland Gruber
- */
-class PDFTableCell {
-
- const ALIGN_LEFT = 'L';
- const ALIGN_RIGHT = 'R';
- const ALIGN_CENTER = 'C';
-
- /** content text of cell */
- public $content = '';
- /** text alignment */
- public $align = self::ALIGN_LEFT;
- /** cell width (e.g. "20%") */
- public $width = null;
- /** bold text */
- public $bold = false;
-
- /**
- * Constructor.
- *
- * @param String $content cell content
- * @param String $width width (e.g. "20%")
- * @param String $align cell alignment (default: left)
- * @param boolean $bold print in bold
- */
- public function __construct($content, $width = null, $align = null, $bold = false) {
- $this->content = empty($content) ? ' ' : $content;
- $this->align = ($align == null) ? self::ALIGN_LEFT : $align;
- $this->width = $width;
- $this->bold = $bold;
- }
-
-}
-
-
?>
\ No newline at end of file
diff --git a/lam/lib/modules.inc b/lam/lib/modules.inc
index 07abcaa9..f73e8de9 100644
--- a/lam/lib/modules.inc
+++ b/lam/lib/modules.inc
@@ -2018,7 +2018,8 @@ class accountContainer {
if (isset($this->finalDN)) {
$dn = $this->finalDN;
}
- $return = array_merge($return,array('main_dn' => array('' . _('DN') . '' . $dn . '')));
+ $return = array_merge($return,array('main_dn' => array(new PDFLabelValue(_('DN'), $dn))));
+ //$return = array_merge($return,array('main_dn' => array('' . _('DN') . '' . $dn . '')));
return $return;
}
diff --git a/lam/lib/pdf.inc b/lam/lib/pdf.inc
index 80d82f21..894b0438 100644
--- a/lam/lib/pdf.inc
+++ b/lam/lib/pdf.inc
@@ -33,6 +33,7 @@ $Id$
/** PDF line width */
define('LAMPDF_LINEWIDTH',190);
+define('LAMPDF_FONT_SIZE', 7);
/** XML functions */
include_once('xml_parser.inc');
@@ -138,18 +139,21 @@ function createModulePDF($accounts, $pdf_structure="default", $returnAsString =
// skip non-existent entries
if (isset($entries[$name])) {
// Get current entry
- $value_entry = $entries[$name];
+ $valueEntries = $entries[$name];
// Print entry only when module sumitted values for it
- if(is_array($value_entry)) {
+ if(is_array($valueEntries)) {
// Loop over all rows of this entry (most of the time this will be just one)
- foreach($value_entry as $line) {
+ foreach($valueEntries as $valueEntry) {
+ if ($valueEntry instanceof PDFLabelValue) {
+ printLabelValue($pdf, $valueEntry, $fontName);
+ }
// Substitue XML syntax with valid FPDF methods
- $methods = processLine($line,true,$fontName);
+ /**$methods = processLine($line,true,$fontName);
// Call every method
foreach($methods as $method) {
call_user_func_array(array(&$pdf,$method[0]),$method[1]);
- }
+ }*/
}
}
}
@@ -177,19 +181,26 @@ function createModulePDF($accounts, $pdf_structure="default", $returnAsString =
/**
* Creates a section headline.
*
- * @param string $line section name
+ * @param PDFEntry $entry content entry
*
- * @return string XML code for headline
+ * @return string headline
*/
-function getSectionHeadline($line) {
- $headline_pattern = '/.*(.*)<\/value><\/block>/';
- if(preg_match($headline_pattern,$line,$matches)) {
- $valueStyle = processFormatTags($matches[1],'');
- return $valueStyle[1];
- }
- else {
- return '';
- }
+function getSectionHeadline($entry) {
+ return $entry->getLabel();
+}
+
+/**
+ * Prints a PDFLabelValue entry.
+ *
+ * @param lamPDF $pdf PDF
+ * @param PDFLabelValue $valueEntry entry
+ * @param string $fontName font name
+ */
+function printLabelValue(&$pdf, $valueEntry, $fontName) {
+ $pdf->SetFont($fontName, 'B', LAMPDF_FONT_SIZE);
+ $pdf->Cell(50, 5, $valueEntry->getLabel() . ':',0,0,'R',0);
+ $pdf->SetFont($fontName, '', LAMPDF_FONT_SIZE);
+ $pdf->MultiCell(0, 5, $valueEntry->getValue(), 0, 'L', 0);
}
/**
@@ -344,3 +355,142 @@ function processAttributes($attrs,$return = array()) {
return $return;
}
}
+
+interface PDFEntry {
+
+ /**
+ * Returns the label of the entry.
+ *
+ * @return string label
+ */
+ public function getLabel();
+
+}
+
+/**
+ * Represents a table for PDF export.
+ *
+ * @package PDF
+ * @author Roland Gruber
+ */
+class PDFTable implements PDFEntry {
+
+ /** optional label of table */
+ private $label = '';
+ /** list of PDFTableRow elements */
+ public $rows = array();
+
+ /**
+ * Constructor
+ *
+ * @param String $label label
+ */
+ public function __construct($label = null) {
+ $this->label = $label;
+ }
+
+ /**
+ * Returns the label.
+ *
+ * @return string $label label
+ */
+ public function getLabel() {
+ return $this->label;
+ }
+
+}
+
+/**
+ * Represents a table row for PDF export.
+ *
+ * @package PDF
+ * @author Roland Gruber
+ */
+class PDFTableRow {
+
+ /** list of PDFTableCell */
+ public $cells = array();
+
+}
+
+/**
+ * Represents a table cell for PDF export.
+ *
+ * @package PDF
+ * @author Roland Gruber
+ */
+class PDFTableCell {
+
+ const ALIGN_LEFT = 'L';
+ const ALIGN_RIGHT = 'R';
+ const ALIGN_CENTER = 'C';
+
+ /** content text of cell */
+ public $content = '';
+ /** text alignment */
+ public $align = self::ALIGN_LEFT;
+ /** cell width (e.g. "20%") */
+ public $width = null;
+ /** bold text */
+ public $bold = false;
+
+ /**
+ * Constructor.
+ *
+ * @param String $content cell content
+ * @param String $width width (e.g. "20%")
+ * @param String $align cell alignment (default: left)
+ * @param boolean $bold print in bold
+ */
+ public function __construct($content, $width = null, $align = null, $bold = false) {
+ $this->content = empty($content) ? ' ' : $content;
+ $this->align = ($align == null) ? self::ALIGN_LEFT : $align;
+ $this->width = $width;
+ $this->bold = $bold;
+ }
+
+}
+
+/**
+ * Simple PDF object to print label value entries.
+ *
+ * @package PDF
+ * @author Roland Gruber
+ */
+class PDFLabelValue implements PDFEntry {
+
+ private $label = '';
+
+ private $value = '';
+
+ /**
+ * Constructor
+ *
+ * @param string $label label
+ * @param string $value value
+ */
+ public function __construct($label, $value) {
+ $this->label = $label;
+ $this->value = $value;
+ }
+
+ /**
+ * Returns the label.
+ *
+ * @return string $label label
+ */
+ public function getLabel() {
+ return $this->label;
+ }
+
+ /**
+ * Returns the value.
+ *
+ * @return string $value value
+ */
+ public function getValue() {
+ return $this->value;
+ }
+
+
+}