X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fcarnet%2Fcontacts.pdf.inc.php;h=a981b1c7045a1e626a8e18a7487f94e72b504d40;hb=f1aff3488654b74277c8640629640ee65d395ec5;hp=32617b1eef57b218fa94557c6138b8105bcab9bf;hpb=c83168b1f1bf43e24bcf3a5f3fe272d10198ea2a;p=platal.git diff --git a/modules/carnet/contacts.pdf.inc.php b/modules/carnet/contacts.pdf.inc.php index 32617b1..a981b1c 100644 --- a/modules/carnet/contacts.pdf.inc.php +++ b/modules/carnet/contacts.pdf.inc.php @@ -1,6 +1,6 @@ report = error_reporting(0); parent::FPDF(); @@ -53,7 +53,7 @@ class ContactsPDF extends FPDF $this->AddPage(); } - function Output($name='mescontacts.pdf', $dest='I') + public function Output($name='mescontacts.pdf', $dest='I') { Header('Pragma: public'); error_reporting(0); @@ -61,7 +61,7 @@ class ContactsPDF extends FPDF error_reporting($this->report); } - function Rotate($angle, $x=-1, $y=-1) + private function Rotate($angle, $x=-1, $y=-1) { if ($x==-1) { $x = $this->x; @@ -84,14 +84,14 @@ class ContactsPDF extends FPDF } } - function Header() + public function Header() { $this->SetFont('Vera Sans', 'B', 20); $this->SetTextColor(230); $this->Rotate(45, 55, 190); - $this->Text(55, 190, "informations limitées à un usage"); - $this->Text(40, 210, "strictement personnel et non commercial"); + $this->Text(55, 190, utf8_decode("informations limitées à un usage")); + $this->Text(40, 210, utf8_decode("strictement personnel et non commercial")); $this->Rotate(0); $this->setLeftMargin(5); @@ -111,7 +111,7 @@ class ContactsPDF extends FPDF $this->ColSetup(false); } - function Footer() + public function Footer() { $this->setLeftMargin(5); $this->setRightMargin(5); @@ -122,7 +122,7 @@ class ContactsPDF extends FPDF $this->Cell(0, 10, '(en date du '.strftime('%d %B %Y').')', 0, 0, 'R'); } - function ColSetup($col) + private function ColSetup($col) { $this->col = $col; $x = 10 + $this->col * 100; @@ -132,7 +132,7 @@ class ContactsPDF extends FPDF $this->SetY($this->y0); } - function NextCol() + private function NextCol() { $this->ColSetup(1 - $this->col); if ($this->col == 0) { @@ -140,12 +140,12 @@ class ContactsPDF extends FPDF } } - function AcceptPageBreak() + public function AcceptPageBreak() { $this->broken = true; } - function Space($w=0.1, $h=0.5) + private function Space($w=0.1, $h=0.5) { $x = $this->getX(); $y = $this->getY(); @@ -154,7 +154,7 @@ class ContactsPDF extends FPDF $this->Ln($h); } - function TableRow($l, $r, $font = 'Sans') + private function TableRow($l, $r, $font = 'Sans') { $this->SetFont('Vera Sans', 'B', 8); $y = $this->getY(); @@ -173,63 +173,48 @@ class ContactsPDF extends FPDF $this->setX($x); } - function Address($a) + private function Address($a) { + if (!$a->text) { + return; + } $l = "adresse\n"; - if ($a['active']) { + if ($a->hasFlag('current')) { $l .= 'actuelle'; - } elseif ($a['secondaire']) { + } elseif ($a->hasFlag('secondary')) { $l .= 'secondaire'; } else { $l .= 'principale'; } - $r = ''; - $r = trim("$r\n".$a['adr1']); - $r = trim("$r\n".$a['adr2']); - $r = trim("$r\n".$a['adr3']); - $r = trim("$r\n".trim($a['postcode'].' '.$a['city'])); - - $this->TableRow($l, $r); + $this->TableRow($l, utf8_decode($a->text)); - if (!empty($a['tels'])) { - foreach ($a['tels'] as $tel) { - if (!empty($tel['tel'])) { - $this->TableRow($tel['tel_type'], $tel['tel'], 'Mono'); - } - } + foreach ($a->phones() as $phone) { + $this->TableRow(utf8_decode($phone->displayType()), + utf8_decode($phone->display), 'Mono'); } } - function AddressPro($a) + private function AddressPro($a) { - if ($a['entreprise']) { - $this->TableRow('Entreprise', $a['entreprise']); - } - - if ($a['adr1'] || $a['adr2'] || $a['adr3'] || $a['postcode'] || $a['city']) { - $r = ''; - $r = trim("$r\n".$a['adr1']); - $r = trim("$r\n".$a['adr2']); - $r = trim("$r\n".$a['adr3']); - $r = trim("$r\n".trim($a['postcode'].' '.$a['city'])); - $this->TableRow('adresse pro', $r); + if ($a->company) { + $this->TableRow('Entreprise', utf8_decode($a->company->name)); } - - if ($a['tel']) { - $this->TableRow('Téléphone', $a['tel'], 'Mono'); + if ($a->address()) { + $this->TableRow('adresse pro', utf8_decode($a->address()->text)); } - if ($a['fax']) { - $this->TableRow('Fax', $a['fax'], 'Mono'); + foreach ($a->phones() as $phone) { + $this->TableRow(utf8_decode($phone->displayType()), + utf8_decode($phone->display), 'Mono'); } } - function Error($msg) + public function Error($msg) { $this->error = true; } - function wordwrap($text, $maxwidth = 90) { + private function wordwrap($text, $maxwidth = 90) { $text = trim($text); if ($text==='') { return 0; } $space = $this->GetStringWidth(' '); @@ -259,7 +244,7 @@ class ContactsPDF extends FPDF return $count; } - static function AddContact($self, $x, $wp = true) + public static function AddContact(ContactsPDF $self, Profile $profile, $wp = true) { /* infamous hack : 1- we store the current state. @@ -274,35 +259,33 @@ class ContactsPDF extends FPDF $self->SetFillColor(245, 248, 252); $self->SetLineWidth(0.4); - $nom = $x['prenom'].' ' - .($x['nom_usage'] ? "{$x['nom_usage']} ({$x['nom']})" : $x['nom']) - ." ({$x['promo']})"; + $nom = utf8_decode($profile->full_name); $ok = false; if ($wp) { - $res = XDB::query("SELECT * FROM photo WHERE attachmime IN ('jpeg', 'png') AND uid={?}", - $x['user_id']); - if ($i = $res->numRows()) { - $old2 = clone $self; - $photo = $res->fetchOneAssoc(); - $width = $photo['x'] * 20/$photo['y']; - $GLOBALS["p{$x['user_id']}"] = $photo['attach']; - - $_x = $self->getX(); - $_y = $self->getY(); - $self->Cell(0, 20, '', '', 0, '', 1); - error_reporting(0); - $self->Image("var://p{$x['user_id']}", $_x, $_y, $width, 20, $photo['attachmime']); - error_reporting($self->report); - - if ($self->error) { - $self = clone $old2; - } else { - $self->setX($_x); - $self->Cell($width, 20, '', "T"); - $h = 20 / $self->wordwrap($nom, 90-$width); - $self->MultiCell(0, $h, $nom, 'T', 'C'); - $ok = true; + $photo = $profile->getPhoto(false, true); + if ($photo) { + list(, $type) = explode('/', $photo->mimeType()); + $type = ($type == 'jpeg') ? 'jpg' : $type; + if (method_exists($self, '_parse' . $type)) { + $old2 = clone $self; + $width = $photo->width() * 20 / $photo->height(); + $_x = $self->getX(); + $_y = $self->getY(); + $self->Cell(0, 20, '', '', 0, '', 1); + error_reporting(0); + $self->Image($photo->path(), $_x, $_y, $width, 20, $type); + error_reporting($self->report); + + if ($self->error) { + $self = clone $old2; + } else { + $self->setX($_x); + $self->Cell($width, 20, '', "T"); + $h = 20 / $self->wordwrap($nom, 90 - $width); + $self->MultiCell(0, $h, $nom, 'T', 'C'); + $ok = true; + } } } } @@ -310,37 +293,32 @@ class ContactsPDF extends FPDF $self->MultiCell(0, 6, $nom, "T", 'C', 1); } - if ($x['mobile']) { + if ($profile->mobile) { $self->Space(); - $self->TableRow('mobile', $x['mobile'], 'Mono'); + $self->TableRow('mobile', utf8_decode($profile->mobile), 'Mono'); } - foreach ($x['adr'] as $a) { + $it = $profile->iterAddresses(Profile::ADDRESS_ALL); + while ($a = $it->next()) { $self->Space(); $self->Address($a); } - - if (!empty($x['adr_pro'])) { - foreach ($x['adr_pro'] as $a) { - if ( ! ($a['entreprise'] || $a['tel'] || $a['fax'] - || $a['adr1'] || $a['adr2'] || $a['adr3'] || $a['postcode'] || $a['city']) ) - { - continue; - } - $self->Space(); - $self->AddressPro($a); - } + $it = $profile->getJobs(Profile::JOBS_CURRENT); + foreach ($it as $a) { + $self->Space(); + $self->AddressPro($a); } $self->Space(0.4, 5); if ($self->broken) { $old->NextCol(); - $self = ContactsPDF::AddContact($old, $x, $wp); + $self = ContactsPDF::AddContact($old, $profile, $wp); } return $self; } } +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>