function flatten_tree($tree_data, $depth, $exclude_depths = array()) { $ret = array(); $num = count($tree_data); $i = 1; foreach ($tree_data as $id => $info) { $last = $i >= $num; if ($last) { $exclude_depths[] = $depth + 1; } //echo $id.'.'; $ret[$id] = $info['item']; $ret[$id]->set_value('prepped_name', $this->prep_name($ret[$id], $depth, $last, $exclude_depths)); $ret[$id]->set_value('depth', $depth); if (!$ret[$id]->get_value('url')) { $base_url = rtrim(reason_get_site_url($this->site), '/'); $nice_url = $this->tree->get_nice_url($id); $url = $base_url . $nice_url . '/'; $ret[$id]->set_value('url', $url); } if (!empty($info['children'])) { $next_depth = $depth + 1; $ret = $ret + $this->flatten_tree($info['children'], $next_depth, $exclude_depths); } $i++; } return $ret; }
protected function get_tags_html($course, $section) { $tags_str = ''; if ($course && ($interest_tags = $course->get_categories($section))) { $tags_str .= '<ul class="tagList">' . "\n"; foreach ($interest_tags as $slug => $tag) { $text = htmlspecialchars($tag); $tags_str .= '<li><a class="interestTag" href="' . reason_get_site_url(id_of('courses_site')) . 'explore/' . htmlspecialchars($slug) . '" title="Find others with this interest">' . htmlspecialchars($tag) . '</a></li>' . "\n"; } $tags_str .= '</ul>' . "\n"; } return $tags_str; }
/** * Accepts a news item by reference and adds the url and site name * */ function augment_entity(&$news_item_entity, &$valid_page_types) { static $url_builder; $site_id = $news_item_entity->get_value('site_id'); $site = new entity($site_id); $site_unique_name = $site->get_value('unique_name'); if (isset($this->augment_entity_handlers[$site_unique_name])) { $method_name = $this->augment_entity_handlers[$site_unique_name]; return $this->$method_name($news_item_entity, $valid_page_types); } $pub_id = $news_item_entity->get_value('pub_id'); $pub_id_array = (!is_array($pub_id)) ? array($pub_id) : $pub_id; $es = new entity_selector($site_id); $es->add_type(id_of('minisite_page')); $es->limit_tables(array('page_node')); $es->limit_fields(array('page_node.url_fragment')); $es->add_left_relationship($pub_id_array, relationship_id_of('page_to_publication')); $es->add_relation('page_node.custom_page IN ('.implode(",", $valid_page_types).')'); $result = $es->run_one(); if ($result) { $my_url = ''; if (!isset($url_builder)) $url_builder = new reasonPageUrl(); foreach ($result as $k=>$item) { $url_builder->set_id($item->id()); $url_builder->provide_page_entity($item); $page_url = $url_builder->get_url_most_secure(); if (strlen($page_url) > strlen($my_url)) $my_url = $page_url; } $parameters['story_id'] = $news_item_entity->id(); $news_item_entity->set_value('source_name', $site->get_value('name')); $news_item_entity->set_value('source_url', reason_get_site_url($site)); $news_item_entity->set_value('page_url', $my_url); $news_item_entity->set_value('parameters', $parameters); return true; } return false; }