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;
 }
Esempio n. 2
0
/**
 * 
 * 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;
}