First commit
This commit is contained in:
commit
c6e2478c40
13918 changed files with 2303184 additions and 0 deletions
211
sites/all/modules/civicrm/CRM/Event/Badge.php
Normal file
211
sites/all/modules/civicrm/CRM/Event/Badge.php
Normal file
|
@ -0,0 +1,211 @@
|
|||
<?php
|
||||
/*
|
||||
+--------------------------------------------------------------------+
|
||||
| CiviCRM version 4.7 |
|
||||
+--------------------------------------------------------------------+
|
||||
| This file is a part of CiviCRM. |
|
||||
| |
|
||||
| CiviCRM is free software; you can copy, modify, and distribute it |
|
||||
| under the terms of the GNU Affero General Public License |
|
||||
| Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
|
||||
| |
|
||||
| CiviCRM is distributed in the hope that it will be useful, but |
|
||||
| WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
||||
| See the GNU Affero General Public License for more details. |
|
||||
| |
|
||||
| You should have received a copy of the GNU Affero General Public |
|
||||
| License and the CiviCRM Licensing Exception along |
|
||||
| with this program; if not, contact CiviCRM LLC |
|
||||
| at info[AT]civicrm[DOT]org. If you have questions about the |
|
||||
| GNU Affero General Public License or the licensing of CiviCRM, |
|
||||
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
|
||||
+--------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2010 Tech To The People
|
||||
* Licensed to CiviCRM under the Academic Free License version 3.0.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @package CRM
|
||||
* @copyright CiviCRM LLC (c) 2004-2017
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This class print the name badges for the participants
|
||||
* It isn't supposed to be called directly, but is the parent class of the classes in CRM/Event/Badges/XXX.php
|
||||
*
|
||||
*/
|
||||
class CRM_Event_Badge {
|
||||
/**
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->style = array(
|
||||
'width' => 0.1,
|
||||
'cap' => 'round',
|
||||
'join' => 'round',
|
||||
'dash' => '2,2',
|
||||
'color' => array(0, 0, 200),
|
||||
);
|
||||
$this->format = '5160';
|
||||
$this->imgExtension = 'png';
|
||||
$this->imgRes = 300;
|
||||
$this->event = NULL;
|
||||
$this->setDebug(FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $debug
|
||||
*/
|
||||
public function setDebug($debug = TRUE) {
|
||||
if (!$debug) {
|
||||
$this->debug = FALSE;
|
||||
$this->border = 0;
|
||||
}
|
||||
else {
|
||||
$this->debug = TRUE;
|
||||
$this->border = "LTRB";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the labels (pdf).
|
||||
*
|
||||
* It assumes the participants are from the same event
|
||||
*
|
||||
* @param array $participants
|
||||
*/
|
||||
public function run(&$participants) {
|
||||
// fetch the 1st participant, and take her event to retrieve its attributes
|
||||
$participant = reset($participants);
|
||||
$eventID = $participant['event_id'];
|
||||
$this->event = self::retrieveEvent($eventID);
|
||||
//call function to create labels
|
||||
self::createLabels($participants);
|
||||
CRM_Utils_System::civiExit(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $eventID
|
||||
*
|
||||
* @return CRM_Event_BAO_Event|null
|
||||
*/
|
||||
protected function retrieveEvent($eventID) {
|
||||
$bao = new CRM_Event_BAO_Event();
|
||||
if ($bao->get('id', $eventID)) {
|
||||
return $bao;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $eventID
|
||||
* @param bool $img
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getImageFileName($eventID, $img = FALSE) {
|
||||
global $civicrm_root;
|
||||
$path = "CRM/Event/Badge";
|
||||
if ($img == FALSE) {
|
||||
return FALSE;
|
||||
}
|
||||
if ($img == TRUE) {
|
||||
$img = get_class($this) . "." . $this->imgExtension;
|
||||
}
|
||||
|
||||
// CRM-13235 - leverage the Smarty path to get all templates directories
|
||||
$template = CRM_Core_Smarty::singleton();
|
||||
if (isset($template->template_dir) && $template->template_dir) {
|
||||
$dirs = is_array($template->template_dir) ? $template->template_dir : array($template->template_dir);
|
||||
foreach ($dirs as $dir) {
|
||||
foreach (array("$dir/$path/$eventID/$img", "$dir/$path/$img") as $imgFile) {
|
||||
if (file_exists($imgFile)) {
|
||||
return $imgFile;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$imgFile = 'No template directories defined anywhere??';
|
||||
}
|
||||
|
||||
// not sure it exists, but at least will display a meaniful fatal error in debug mode
|
||||
return $imgFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $img
|
||||
*/
|
||||
public function printBackground($img = FALSE) {
|
||||
$x = $this->pdf->GetAbsX();
|
||||
$y = $this->pdf->GetY();
|
||||
if ($this->debug) {
|
||||
$this->pdf->Rect($x, $y, $this->pdf->width, $this->pdf->height, 'D', array(
|
||||
'all' => array(
|
||||
'width' => 1,
|
||||
'cap' => 'round',
|
||||
'join' => 'round',
|
||||
'dash' => '2,10',
|
||||
'color' => array(255, 0, 0),
|
||||
),
|
||||
));
|
||||
}
|
||||
$img = $this->getImageFileName($this->event->id, $img);
|
||||
if ($img) {
|
||||
$imgsize = getimagesize($img);
|
||||
// mm
|
||||
$f = $this->imgRes / 25.4;
|
||||
$w = $imgsize[0] / $f;
|
||||
$h = $imgsize[1] / $f;
|
||||
$this->pdf->Image($img, $this->pdf->GetAbsX(), $this->pdf->GetY(), $w, $h, strtoupper($this->imgExtension), '', '', FALSE, 72, '', FALSE, FALSE, $this->debug, FALSE, FALSE, FALSE);
|
||||
}
|
||||
$this->pdf->SetXY($x, $y);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is supposed to be overridden.
|
||||
*
|
||||
* @param array $participant
|
||||
*/
|
||||
public function generateLabel($participant) {
|
||||
$txt = "{$this->event['title']}
|
||||
{$participant['display_name']}
|
||||
{$participant['current_employer']}";
|
||||
|
||||
$this->pdf->MultiCell($this->pdf->width, $this->pdf->lineHeight, $txt);
|
||||
}
|
||||
|
||||
public function pdfExtraFormat() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create labels (pdf).
|
||||
*
|
||||
* @param array $participants
|
||||
*/
|
||||
public function createLabels(&$participants) {
|
||||
|
||||
$this->pdf = new CRM_Utils_PDF_Label($this->format, 'mm');
|
||||
$this->pdfExtraFormat();
|
||||
$this->pdf->Open();
|
||||
$this->pdf->setPrintHeader(FALSE);
|
||||
$this->pdf->setPrintFooter(FALSE);
|
||||
$this->pdf->AddPage();
|
||||
$this->pdf->AddFont('DejaVu Sans', '', 'DejaVuSans.php');
|
||||
$this->pdf->SetFont('DejaVu Sans');
|
||||
$this->pdf->SetGenerator($this, "generateLabel");
|
||||
|
||||
foreach ($participants as $participant) {
|
||||
$this->pdf->AddPdfLabel($participant);
|
||||
}
|
||||
$this->pdf->Output($this->event->title . '.pdf', 'D');
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue