Advertisement
Guest User

ee_short

a guest
Oct 30th, 2012
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.11 KB | None | 0 0
  1. <?php
  2. function espresso_ticket_qr_code($atts){
  3. global $org_options;
  4. extract( $atts );
  5. $qr_data = '<img src="http://chart.googleapis.com/chart?chs=135x135&cht=qr&chl='.urlencode(json_encode(array( 'event_code'=>$event_code, 'registration_id'=>$registration_id, 'attendee_id'=>$attendee_id )) ).'" alt="QR Check-in Code" />';
  6. return $qr_data;
  7. }
  8.  
  9. /**
  10. * Get either a Gravatar URL or complete image tag for a specified email address.
  11. *
  12. * @param string $email The email address
  13. * @param string $s Size in pixels, defaults to 80px [ 1 - 512 ]
  14. * @param string $d Default imageset to use [ 404 | mm | identicon | monsterid | wavatar ]
  15. * @param string $r Maximum rating (inclusive) [ g | pg | r | x ]
  16. * @param boole $img True to return a complete IMG tag False for just the URL
  17. * @param array $atts Optional, additional key/value attributes to include in the IMG tag
  18. * @return String containing either just a URL or a complete image tag
  19. * @source http://gravatar.com/site/implement/images/php/
  20. */
  21. if (!function_exists('espresso_get_gravatar')) {
  22.  
  23. function espresso_get_gravatar( $email, $s = 80, $d = 'mm', $r = 'g', $img = false, $atts = array() ) {
  24. $url = 'http://www.gravatar.com/avatar/';
  25. $url .= md5( strtolower( trim( $email ) ) );
  26. $url .= "?s=$s&d=$d&r=$r";
  27. if ( $img ) {
  28. $url = '<img src="' . $url . '"';
  29. foreach ( $atts as $key => $val )
  30. $url .= ' ' . $key . '="' . $val . '"';
  31. $url .= ' />';
  32. }
  33. return $url;
  34. }
  35. }
  36.  
  37. function espresso_file_is_selected($name, $selected='') {
  38. $input_item = $name;
  39. $option_selections = array($selected);
  40. if (!in_array( $input_item, $option_selections ) )
  41. return false;
  42. else
  43. echo 'selected="selected"';
  44. return;
  45. }
  46. function espresso_ticket_content($id) {
  47. global $wpdb;
  48. $results = $wpdb->get_results("SELECT * FROM " . EVENTS_TICKET_TEMPLATES . " WHERE id =" . $id);
  49. foreach ($results as $result) {
  50. $ticket_id = $result->id;
  51. $ticket_name = stripslashes_deep($result->ticket_name);
  52. $ticket_content = stripslashes_deep($result->ticket_content);
  53. }
  54. $ticket_data = array('id' => $id, 'ticket_name' => $ticket_name,'ticket_content' => $ticket_content);
  55. return $ticket_data;
  56. }
  57.  
  58. //Retunrs an array of available css template files
  59. function espresso_ticket_css_template_files() {
  60. // read our template dir and build an array of files
  61. if (file_exists(EVENT_ESPRESSO_UPLOAD_DIR . "tickets/templates/css/base.css")) {
  62. $dhandle = opendir(EVENT_ESPRESSO_UPLOAD_DIR . 'tickets/templates/css/');//If the template files have been moved to the uplaods folder
  63. } else {
  64. $dhandle = opendir(ESPRESSO_TICKETING_FULL_PATH . 'templates/css/');
  65. }
  66.  
  67. $files = array();
  68.  
  69. $exclude = array( '.', '..', 'index.htm', 'index.html', 'index.php', '.svn', 'base.css', '.DS_Store', basename($_SERVER['PHP_SELF']) );
  70.  
  71. //if we manage to open the directory
  72. if ($dhandle) {
  73. // loop through all of the files
  74. while (( $fname = readdir( $dhandle )) !== FALSE ) {
  75. // if the file is not in the array of things to exclude
  76. if ( !in_array( $fname, $exclude) && !is_dir( $fname )) {
  77. // then store the filename
  78. $files[] = $fname;
  79. }
  80. }
  81. // close the directory
  82. closedir($dhandle);
  83. }
  84.  
  85. return $files;
  86. }
  87.  
  88. //Retunrs an array of available template files
  89. function espresso_ticket_template_files() {
  90. // read our template dir and build an array of files
  91. if (file_exists(EVENT_ESPRESSO_UPLOAD_DIR . "tickets/templates/index.php")) {
  92. $dhandle = opendir(EVENT_ESPRESSO_UPLOAD_DIR . 'tickets/templates/');//If the template files have been moved to the uplaods folder
  93. } else {
  94. $dhandle = opendir(ESPRESSO_TICKETING_FULL_PATH . 'templates/');
  95. }
  96.  
  97. $files = array();
  98.  
  99. $exclude = array( '.', '..', '.svn', '.DS_Store', basename($_SERVER['PHP_SELF']) );
  100.  
  101. //if we manage to open the directory
  102. if ($dhandle) {
  103. // loop through all of the files
  104. while (( $fname = readdir( $dhandle )) !== FALSE ) {
  105. // if the file is not in the array of things to exclude
  106. if ( !in_array( $fname, $exclude) && !is_dir( $fname )) {
  107. // then store the filename
  108. $files[] = $fname;
  109. }
  110. }
  111. // close the directory
  112. closedir($dhandle);
  113. }
  114.  
  115. return $files;
  116. }
  117.  
  118.  
  119. //Creates the ticket pdf
  120. function espresso_ticket_launch($attendee_id=0, $registration_id=0){
  121. global $wpdb, $org_options;
  122. $data = new stdClass;
  123.  
  124. //Make sure we have attendee data
  125. if ($attendee_id==0 || $registration_id==0)
  126. return;
  127.  
  128. //Get the event record
  129. $sql = "SELECT ed.*, et.css_file, et.template_file, et.ticket_content, et.ticket_logo_url ";
  130. isset($org_options['use_venue_manager']) && $org_options['use_venue_manager'] == 'Y' ? $sql .= ", v.id venue_id, v.name venue_name, v.address venue_address, v.address2 venue_address2, v.city venue_city, v.state venue_state, v.zip venue_zip, v.country venue_country, v.meta venue_meta " : '';
  131. $sql .= " FROM " . EVENTS_DETAIL_TABLE . " ed ";
  132. isset($org_options['use_venue_manager']) && $org_options['use_venue_manager'] == 'Y' ? $sql .= " LEFT JOIN " . EVENTS_VENUE_REL_TABLE . " r ON r.event_id = ed.id LEFT JOIN " . EVENTS_VENUE_TABLE . " v ON v.id = r.venue_id " : '';
  133. $sql .= " JOIN " . EVENTS_ATTENDEE_TABLE . " ea ON ea.event_id=ed.id ";
  134. $sql .= " LEFT JOIN " . EVENTS_TICKET_TEMPLATES . " et ON et.id=ed.ticket_id ";
  135. $sql .= " WHERE ea.id = '" . $attendee_id . "' AND ea.registration_id = '" . $registration_id . "' ";
  136. //echo $sql;
  137. $data->event = $wpdb->get_row($sql, OBJECT);
  138.  
  139. //Get the attendee record
  140. $sql = "SELECT ea.* FROM " . EVENTS_ATTENDEE_TABLE . " ea WHERE ea.id = '" . $attendee_id . "' ";
  141. $data->attendee = $wpdb->get_row($sql, OBJECT);
  142.  
  143. //Get the primary/first attendee
  144. $data->primary_attendee = espresso_is_primary_attendee($data->attendee->id) == true ? true : false;
  145.  
  146. //unserialize the event meta
  147. $data->event->event_meta = unserialize($data->event->event_meta);
  148.  
  149. //Get the registration date
  150. $data->attendee->registration_date = $data->attendee->date;
  151.  
  152. //Get the CSS file
  153. $data->event->css_file = (!empty($data->event->css_file) && $data->event->css_file > '0') ? $data->event->css_file : 'simple.css';
  154. //echo $data->event->css_file;
  155.  
  156. //Get the HTML file
  157. $data->event->template_file = (!empty($data->event->template_file) && $data->event->template_file > '0') ? $data->event->template_file : 'index.php';
  158.  
  159. //Venue information
  160. if (isset($org_options['use_venue_manager']) && $org_options['use_venue_manager'] == 'Y') {
  161. $data->event->venue_id = !empty($data->event->venue_id)?$data->event->venue_id:'';
  162. $data->event->venue_name = !empty($data->event->venue_name)?$data->event->venue_name:'';
  163. $data->event->address = !empty($data->event->venue_address)?$data->event->venue_address:'';
  164. $data->event->address2 = !empty($data->event->venue_address2)?$data->event->venue_address2:'';
  165. $data->event->city = !empty($data->event->venue_city)?$data->event->venue_city:'';
  166. $data->event->state = !empty($data->event->venue_state)?$data->event->venue_state:'';
  167. $data->event->zip = !empty($data->event->venue_zip)?$data->event->venue_zip:'';
  168. $data->event->country = !empty($data->event->venue_country)?$data->event->venue_country:'';
  169. $data->event->venue_meta = !empty($data->event->venue_meta)?unserialize($data->event->venue_meta):'';
  170. } else {
  171. $data->event->venue_name = !empty($data->event->venue_title)?$data->event->venue_title:'';
  172. }
  173.  
  174. //Create the Gravatar image
  175. $data->gravatar = '<img src="' . espresso_get_gravatar($data->attendee->email, $size = '100', $default = 'http://www.gravatar.com/avatar/' ) . '" alt="Gravatar">';
  176.  
  177. //Google map IMAGE creation
  178. $data->event->google_map_image = espresso_google_map_link(array('id' => $data->event->venue_id, 'address' => $data->event->address, 'city' => $data->event->city, 'state' => $data->event->state, 'zip' => $data->event->zip, 'country' => $data->event->country, 'type'=>'map'));
  179.  
  180. //Google map LINK creation
  181. $data->event->google_map_link = espresso_google_map_link(array('address' => $data->event->address, 'city' => $data->event->city, 'state' => $data->event->state, 'zip' => $data->event->zip, 'country' => $data->event->country, 'type'=>'text'));
  182.  
  183. //Create the logo
  184. $data->event->ticket_logo_image = '';
  185. $data->event->ticket_logo_url = empty($data->event->ticket_logo_url) ? $org_options['default_logo_url']: $data->event->ticket_logo_url;
  186. if ( !empty($data->event->ticket_logo_url) ){
  187. $image_size = getimagesize($data->event->ticket_logo_url);
  188. $data->event->ticket_logo_image = '<img src="'.$data->event->ticket_logo_url.'" '.$image_size[3].' alt="logo" /> ';
  189. }
  190.  
  191. //Create the QR Code image
  192. $data->qr_code = espresso_ticket_qr_code( array(
  193. 'attendee_id' => $data->attendee->id,
  194. 'event_name' => stripslashes_deep($data->event->event_name),
  195. 'attendee_first' => $data->attendee->fname,
  196. 'attendee_last' => $data->attendee->lname,
  197. 'registration_id' => $data->attendee->registration_id,
  198. 'event_code' => $data->event->event_code,
  199. 'ticket_type' => $data->attendee->price_option,
  200. 'event_time' => $data->attendee->event_time,
  201. 'amount_pd' => espresso_attendee_price(array(
  202. 'registration_id' => $data->attendee->registration_id,
  203. 'reg_total' => true
  204. )),
  205. ));
  206.  
  207. //Build the ticket name
  208. $ticket_name = sanitize_title_with_dashes($data->attendee->id.' '.$data->attendee->fname.' '.$data->attendee->lname);
  209.  
  210. //Get the HTML as an object
  211. ob_start();
  212. if (file_exists(EVENT_ESPRESSO_UPLOAD_DIR . "tickets/templates/index.php")) {
  213. require_once(EVENT_ESPRESSO_UPLOAD_DIR . 'tickets/templates/'.$data->event->template_file);
  214. } else {
  215. require_once('templates/index.php');
  216. }
  217. $content = ob_get_clean();
  218. $content = espresso_replace_ticket_shortcodes($content, $data);
  219.  
  220. //Check if debugging or mobile is set
  221. if ( (isset($_REQUEST['pdf']) && $_REQUEST['pdf']==true)){
  222. //Create the PDF
  223. define('DOMPDF_ENABLE_REMOTE',true);
  224. require_once(EVENT_ESPRESSO_PLUGINFULLPATH . '/tpc/dompdf/dompdf_config.inc.php');
  225. $dompdf = new DOMPDF();
  226. $dompdf->load_html($content);
  227. //$dompdf->set_paper('A4', 'landscape');
  228. $dompdf->render();
  229. $dompdf->stream($ticket_name.".pdf", array("Attachment" => false));
  230. exit(0);
  231. }
  232.  
  233. echo $content;
  234. exit(0);
  235.  
  236. }
  237.  
  238. //Performst the shortcode replacement
  239. function espresso_replace_ticket_shortcodes($content, $data) {
  240. global $wpdb, $org_options;
  241. $SearchValues = array(
  242. //Attendee/Event Information
  243. "[att_id]",
  244. "[qr_code]",
  245. "[gravatar]",
  246. "[event_id]",
  247. "[event_identifier]",
  248. "[registration_id]",
  249. "[registration_date]",
  250. "[fname]",
  251. "[lname]",
  252. "[event_name]",
  253. "[description]",
  254. "[event_link]",
  255. "[event_url]",
  256.  
  257. //Payment details
  258. "[cost]",
  259. "[ticket_type]",
  260.  
  261. //Organization details
  262. "[company]",
  263. "[co_add1]",
  264. "[co_add2]",
  265. "[co_city]",
  266. "[co_state]",
  267. "[co_zip]",
  268.  
  269. //Dates
  270. "[start_date]",
  271. "[start_time]",
  272. "[end_date]",
  273. "[end_time]",
  274.  
  275. //Ticket data
  276. "[ticket_content]",
  277.  
  278. //Logo
  279. "[ticket_logo_url]",
  280. "[ticket_logo_image]",
  281.  
  282. //Venue information
  283. "[venue_title]",
  284. "[venue_address]",
  285. "[venue_address2]",
  286. "[venue_city]",
  287. "[venue_state]",
  288. "[venue_zip]",
  289. "[venue_country]",
  290. "[venue_phone]",
  291. "[venue_description]",
  292.  
  293. "[venue_website]",
  294. "[venue_image]",
  295.  
  296. "[google_map_image]",
  297. "[google_map_link]",
  298. "[attendee_count]",
  299. );
  300.  
  301. $ReplaceValues = array(
  302. //Attendee/Event Information
  303. $data->attendee->id,
  304. $data->qr_code,
  305. $data->gravatar,
  306. $data->attendee->event_id,
  307. $data->event->event_identifier,
  308. $data->attendee->registration_id,
  309. event_date_display($data->attendee->registration_date),
  310. stripslashes_deep($data->attendee->fname),
  311. stripslashes_deep($data->attendee->lname),
  312. stripslashes_deep($data->event->event_name),
  313. stripslashes_deep($data->event->event_desc),
  314. $data->event_link,
  315. $data->event_url,
  316.  
  317. //Payment details
  318. $org_options['currency_symbol'] .' '. espresso_attendee_price(array('registration_id' => $data->attendee->registration_id, 'session_total' => true)),
  319. $data->attendee->price_option,
  320.  
  321. //Organization details
  322. stripslashes_deep($org_options['organization']),
  323. $org_options['organization_street1'],
  324. $org_options['organization_street2'],
  325. $org_options['organization_city'],
  326. $org_options['organization_state'],
  327. $org_options['organization_zip'],
  328.  
  329. //Dates
  330. event_date_display($data->attendee->start_date),
  331. event_date_display($data->attendee->event_time, get_option('time_format')),
  332. event_date_display($data->attendee->end_date),
  333. event_date_display($data->attendee->end_time, get_option('time_format')),
  334.  
  335. //Ticket data
  336. wpautop(stripslashes_deep(html_entity_decode($data->event->ticket_content, ENT_QUOTES))),
  337.  
  338. //Logo
  339. $data->event->ticket_logo_url,
  340. $data->event->ticket_logo_image, //Returns the logo wrapped in an image tag
  341.  
  342. //Venue information
  343. $data->event->venue_name,
  344. $data->event->address,
  345. $data->event->address2,
  346. $data->event->city,
  347. $data->event->state,
  348. $data->event->zip,
  349. $data->event->country,
  350. $data->event->venue_meta['phone'],
  351. wpautop(stripslashes_deep(html_entity_decode($data->event->venue_meta['description'], ENT_QUOTES))),
  352.  
  353. $data->event->venue_meta['website'],
  354. $data->event->venue_meta['image'],
  355.  
  356. $data->event->google_map_image,
  357. $data->event->google_map_link,
  358. $data->attendee->quantity,
  359. );
  360.  
  361. //Get the questions and answers
  362. $questions = $wpdb->get_results("select qst.question as question, ans.answer as answer from ".EVENTS_ANSWER_TABLE." ans inner join ".EVENTS_QUESTION_TABLE." qst on ans.question_id = qst.id where ans.attendee_id = ".$data->attendee->id, ARRAY_A);
  363. //echo '<p>'.print_r($questions).'</p>';
  364. if ($wpdb->num_rows > 0 && $wpdb->last_result[0]->question != NULL) {
  365. foreach($questions as $q){
  366. $k = $q['question'];
  367. $v = $q['answer'];
  368.  
  369. //Output the question
  370. array_push($SearchValues,"[".'question_'.$k."]");
  371. array_push($ReplaceValues,$k);
  372.  
  373. //Output the answer
  374. array_push($SearchValues,"[".'answer_'.$k."]");
  375. array_push($ReplaceValues,$v);
  376. }
  377. }
  378.  
  379. //Get the event meta
  380. //echo '<p>'.print_r($data->event->event_meta).'</p>';
  381. if (!empty($data->event->event_meta)){
  382. foreach($data->event->event_meta as $k=>$v){
  383. array_push($SearchValues,"[".$k."]");
  384. array_push($ReplaceValues,stripslashes_deep($v));
  385. }
  386. }
  387.  
  388. return str_replace($SearchValues, $ReplaceValues, $content);
  389. }
  390.  
  391. //Creates the dropdown for use in the event editor
  392. if ( !function_exists( 'espresso_ticket_dd' ) ){
  393. function espresso_ticket_dd($current_value = 0){
  394. global $espresso_premium; if ($espresso_premium != true) return;
  395. global $wpdb;
  396. $sql = "SELECT id, ticket_name FROM " .EVENTS_TICKET_TEMPLATES;
  397. $sql .= " WHERE ticket_name != '' ORDER BY ticket_name ";
  398. //echo $sql;
  399. $tickets = $wpdb->get_results($sql);
  400. $num_rows = $wpdb->num_rows;
  401. //return print_r( $tickets );
  402. $field = '<select name="ticket_id" id="ticket_id">\n';
  403. $field .= '<option value="0">'.__('Select a Ticket', 'event_espresso').'</option>';
  404. if ($num_rows > 0) {
  405. foreach ($tickets as $ticket){
  406. $selected = $ticket->id == $current_value ? 'selected="selected"' : '';
  407. $field .= '<option '. $selected .' value="' . $ticket->id .'">' . $ticket->ticket_name. '</option>\n';
  408. }
  409. }
  410. $field .= '</select>';
  411. if ( function_exists('espresso_version') && espresso_version() >= '3.2' ){
  412. $ee_help = '<a class="thickbox" target="_blank" href="#TB_inline?height=400&width=500&inlineId=custom_ticket_info"><span class="question"> [?]</span></a>';
  413. }else{
  414. $ee_help = ' <a class="thickbox" href="#TB_inline?height=300&width=400&inlineId=status_types_info"><img src="' . EVENT_ESPRESSO_PLUGINFULLURL . '/images/question-frame.png" width="16" height="16" /></a>';
  415. }
  416. $html = '<p><label for="ticket_id">' .__('Custom Ticket ','event_espresso') . '</label>' . $field . $ee_help . '</p>';
  417. return $html;
  418. }
  419. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement