+
+ static function getImageProperties($img, $imgRes = 300, $w = NULL, $h = NULL) {
+ $imgsize = getimagesize($img);
+ $f = $imgRes / 25.4;
+ $w = !empty($w) ? $w : $imgsize[0] / $f;
+ $h = !empty($h) ? $h : $imgsize[1] / $f;
+ return array($w, $h);
+ }
+
+ /**
+ * function to build badges parameters before actually creating badges.
+ *
+ * @param array $params associated array of submitted values
+ * @params object $form form/controller object
+ *
+ * @return void
+ * @access public
+ * @static
+ */
+ public static function buildBadges(&$params, &$form) {
+ // get name badge layout info
+ $layoutInfo = CRM_Badge_BAO_Layout::buildLayout($params);
+
+ // spit / get actual field names from token
+ $returnProperties = array();
+ if (!empty($layoutInfo['data']['token'])) {
+ foreach ($layoutInfo['data']['token'] as $index => $value) {
+ $element = '';
+ if ($value) {
+ $token = CRM_Utils_Token::getTokens($value);
+ if (key($token) == 'contact') {
+ $element = $token['contact'][0];
+ }
+ elseif (key($token) == 'event') {
+ $element = $token['event'][0];
+ //FIX ME - we need to standardize event token names
+ if (substr($element, 0, 6) != 'event_') {
+ $element = 'event_' . $element;
+ }
+ }
+ elseif (key($token) == 'participant') {
+ $element = $token['participant'][0];
+ }
+
+ // build returnproperties for query
+ $returnProperties[$element] = 1;
+ }
+
+ // add actual field name to row element
+ $layoutInfo['data']['rowElements'][$index] = $element;
+ }
+ }
+
+ // add additional required fields for query execution
+ $additionalFields = array('participant_register_date', 'participant_id', 'event_id', 'contact_id');
+ foreach ($additionalFields as $field) {
+ $returnProperties[$field] = 1;
+ }
+
+ if ($form->_single) {
+ $queryParams = NULL;
+ }
+ else {
+ $queryParams = $form->get('queryParams');
+ }
+
+ $query = new CRM_Contact_BAO_Query($queryParams, $returnProperties, NULL, FALSE, FALSE,
+ CRM_Contact_BAO_Query::MODE_EVENT
+ );
+
+ list($select, $from, $where, $having) = $query->query();
+ if (empty($where)) {
+ $where = "WHERE {$form->_componentClause}";
+ }
+ else {
+ $where .= " AND {$form->_componentClause}";
+ }
+
+ $sortOrder = NULL;
+ if ($form->get(CRM_Utils_Sort::SORT_ORDER)) {
+ $sortOrder = $form->get(CRM_Utils_Sort::SORT_ORDER);
+ if (!empty($sortOrder)) {
+ $sortOrder = " ORDER BY $sortOrder";
+ }
+ }
+ $queryString = "$select $from $where $having $sortOrder";
+
+ $dao = CRM_Core_DAO::executeQuery($queryString);
+ $rows = array();
+ while ($dao->fetch()) {
+ $rows[$dao->participant_id] = array();
+ foreach ($returnProperties as $key => $dontCare) {
+ $rows[$dao->participant_id][$key] = isset($dao->$key) ? $dao->$key : NULL;
+ }
+ }
+
+ $eventBadgeClass = new CRM_Badge_BAO_Badge();
+ $eventBadgeClass->createLabels($rows, $layoutInfo);
+ }