public function to_array($template_ids = false) { $out = parent::to_array(); $Categories = new PerchEvents_Categories(); $cats = $Categories->get_for_event($this->id()); $out['category_slugs'] = ''; $out['category_names'] = ''; if (PerchUtil::count($cats)) { $slugs = array(); $names = array(); foreach ($cats as $Category) { $slugs[] = $Category->categorySlug(); $names[] = $Category->categoryTitle(); // for template $out[$Category->categorySlug()] = true; } $out['category_slugs'] = implode(' ', $slugs); $out['category_names'] = implode(', ', $names); } if (PerchUtil::count($template_ids) && in_array('eventURL', $template_ids)) { $Settings = PerchSettings::fetch(); $url_template = $Settings->get('perch_events_detail_url')->val(); $this->tmp_url_vars = $out; $out['eventURL'] = preg_replace_callback('/{([A-Za-z0-9_\\-]+)}/', array($this, "substitute_url_vars"), $url_template); $this->tmp_url_vars = false; } if (isset($out['eventDynamicFields']) && $out['eventDynamicFields'] != '') { $dynamic_fields = PerchUtil::json_safe_decode($out['eventDynamicFields'], true); if (PerchUtil::count($dynamic_fields)) { foreach ($dynamic_fields as $key => $value) { $out['perch_' . $key] = $value; } } $out = array_merge($dynamic_fields, $out); } return $out; }
/** * * Gets the categories used for an event * @param string $id_or_slug id or slug of the current event * @param string $template template to render the categories * @param bool $return if set to true returns the output rather than echoing it */ function perch_events_event_categories($id_or_slug, $opts = 'event_category_link.html', $return = false) { $id_or_slug = rtrim($id_or_slug, '/'); $default_opts = array('template' => 'event_category_link.html', 'skip-template' => false, 'cache' => true); if (!is_array($opts)) { $opts = array('template' => $opts); } if (is_array($opts)) { $opts = array_merge($default_opts, $opts); } else { $opts = $default_opts; } if ($opts['skip-template']) { $return = true; } $cache = false; $template = $opts['template']; if ($opts['cache']) { $cache_key = 'perch_events_event_categories' . md5($id_or_slug . serialize($opts)); $cache = PerchEvents_Cache::get_static($cache_key, 10); if ($opts['skip-template']) { $cache = unserialize($cache); } } if ($cache) { if ($return) { return $cache; } echo $cache; return ''; } $API = new PerchAPI(1.0, 'perch_events'); $Events = new PerchEvents_Events($API); $eventID = false; if (is_numeric($id_or_slug)) { $eventID = intval($id_or_slug); } else { $Event = $Events->find_by_slug($id_or_slug); if (is_object($Event)) { $eventID = $Event->id(); } } if ($eventID !== false) { $Categories = new PerchEvents_Categories(); $cats = $Categories->get_for_event($eventID); if ($opts['skip-template']) { $out = array(); foreach ($cats as $Cat) { $out[] = $Cat->to_array(); } if ($opts['cache']) { PerchEvents_Cache::save_static($cache_key, serialize($out)); } return $out; } $Template = $API->get('Template'); $Template->set('events/' . $template, 'events'); $r = $Template->render_group($cats, true); if ($r != '') { PerchBlog_Cache::save_static($cache_key, $r); } if ($return) { return $r; } echo $r; } return false; }