/** * Display categories * * @param int $parent_id The parent id/name (only show categories under this category) * @param string $blockname The name of the template block to use (categories by default) */ function titania_display_categories($parent_id = 0, $blockname = 'categories', $is_manage = false) { $only_visible = !$is_manage ? 'AND category_visible = 1' : ''; $sql = 'SELECT * FROM ' . TITANIA_CATEGORIES_TABLE . ' WHERE parent_id = ' . (int) $parent_id . "\n\t\t\t{$only_visible}\n\t\tORDER BY left_id ASC"; $result = phpbb::$db->sql_query($sql); $category = new titania_category(); while ($row = phpbb::$db->sql_fetchrow($result)) { $category->__set_array($row); phpbb::$template->assign_block_vars($blockname, $category->assign_display(true)); } phpbb::$db->sql_freeresult($result); unset($category); }
/** * Display categories * * @param int $parent_id The parent id (only show categories under this category) * @param string $blockname The name of the template block to use (categories by default) * @param bool $is_manage Whether the categories are being displayed in management page. Defaults to false. * @param bool $display_full_tree Whether to display the full category tree. */ public function display_categories($parent_id = 0, $blockname = 'categories', $is_manage = false, $display_full_tree = false, array $params = array()) { $categories = $this->cache->get_categories(); $category = new \titania_category(); $active_parents = array(); if ($parent_id) { $active_parents = $this->cache->get_category_parents($parent_id); $active_parents = $active_parents ? array_keys($active_parents) : array(); $active_parents[] = $parent_id; } foreach ($categories as $data) { $category->__set_array($data); $ignore = !$is_manage && !$category->category_visible || !$display_full_tree && $parent_id != $category->parent_id; if ($ignore) { continue; } $active = in_array($category->category_id, $active_parents) || in_array($category->parent_id, $active_parents); $this->template->assign_block_vars($blockname, array_merge($category->assign_display(true), array('ACTIVE' => $active, 'U_VIEW_CATEGORY' => $category->get_url($params)))); } }
/** * Passes details to the template * * @param bool $simple True to output a simpler version (on the non-main pages) */ public function assign_details($simple = false, $return = false) { $vars = array('CONTRIB_NAME' => $this->contrib_name, 'CONTRIB_DESC' => $this->generate_text_for_display(), 'CONTRIB_VIEWS' => $this->contrib_views, 'CONTRIB_UPDATE_DATE' => $this->contrib_last_update ? phpbb::$user->format_date($this->contrib_last_update) : '', 'CONTRIB_STATUS' => $this->contrib_status, 'CONTRIB_LIMITED_SUPPORT' => $this->contrib_limited_support, 'CONTRIB_LOCAL_NAME' => $this->contrib_local_name, 'CONTRIB_ISO_CODE' => $this->contrib_iso_code, 'CONTRIB_RATING' => $this->contrib_rating, 'CONTRIB_RATING_COUNT' => $this->contrib_rating_count, 'CONTRIB_RATING_STRING' => $this->rating ? $this->rating->get_rating_string($this->get_url('rate')) : '', 'L_ANNOUNCEMENT_TOPIC' => titania::$config->support_in_titania ? phpbb::$user->lang['ANNOUNCEMENT_TOPIC'] : phpbb::$user->lang['ANNOUNCEMENT_TOPIC_SUPPORT'], 'U_VIEW_DEMO' => $this->contrib_demo, 'S_INTEGRATE_DEMO' => $this->options['demo']); // Ignore some stuff before it is submitted else we can cause an error if ($this->contrib_id) { foreach ($this->type->get_allowed_branches(true, false) as $branch => $name) { $release_topic_id = $this->get_release_topic_id($branch); if ($release_topic_id) { phpbb::$template->assign_block_vars('announce_topic', array('URL' => phpbb::append_sid('viewtopic', 't=' . $release_topic_id), 'BRANCH' => $name)); } } if (!empty($this->download)) { $this->assign_download_details(); $vars = array_merge($vars, array('CONTRIB_DOWNLOADS' => $this->contrib_downloads)); } if ($this->contrib_type == TITANIA_TYPE_BBCODE && !empty($this->download)) { $download = reset($this->download); $demo_output = $download['revision_bbc_demo']; $demo_rendered = false; if ($download['revision_status'] == TITANIA_REVISION_APPROVED && !empty($demo_output)) { $demo = $this->type->get_demo()->configure($this->contrib_id, $download['revision_bbc_bbcode_usage'], $download['revision_bbc_html_replace']); $demo_output = $demo->get_demo($demo_output); unset($demo); $demo_rendered = true; } $vars = array_merge($vars, array('CONTRIB_BBC_HTML_REPLACEMENT' => isset($download['revision_bbc_html_replace']) ? $download['revision_bbc_html_replace'] : '', 'CONTRIB_BBC_BBCODE_USAGE' => isset($download['revision_bbc_bbcode_usage']) ? $download['revision_bbc_bbcode_usage'] : '', 'CONTRIB_BBC_HELPLINE' => isset($download['revision_bbc_help_line']) ? $download['revision_bbc_help_line'] : '', 'CONTRIB_BBC_DEMO' => $demo_output, 'S_CONTRIB_BBC_DEMO_RENDERED' => $demo_rendered)); } $use_queue = titania::$config->use_queue && $this->type->use_queue; $u_view_reports = $u_manage = $u_new_revision = $u_queue_discussion = false; if ($this->type->acl_get('moderate')) { $u_view_reports = $this->controller_helper->route('phpbb.titania.manage.attention.redirect', array('type' => TITANIA_CONTRIB, 'id' => $this->contrib_id)); } if ($this->is_manageable()) { $u_manage = $this->get_url('manage'); if (phpbb::$auth->acl_get('u_titania_contrib_submit')) { $u_new_revision = $this->get_url('revision'); } } if ($use_queue && $this->is_manageable('queue_discussion')) { $u_queue_discussion = $this->get_url('queue_discussion'); } $vars = array_merge($vars, array('CONTRIB_TYPE' => $this->type->lang, 'CONTRIB_TYPE_ID' => $this->contrib_type, 'CONTRIB_TYPE_CLEAN' => $this->type->url, 'U_CONTRIB_MANAGE' => $u_manage, 'U_NEW_REVISION' => $u_new_revision, 'U_QUEUE_DISCUSSION' => $u_queue_discussion, 'U_VIEW_CONTRIB' => $this->get_url(), 'U_REPORT' => phpbb::$user->data['is_registered'] ? $this->get_url('report') : '', 'U_VIEW_REPORTS' => $u_view_reports, 'S_CONTRIB_NEW' => $this->contrib_status == TITANIA_CONTRIB_NEW ? true : false, 'S_CONTRIB_VALIDATED' => $this->contrib_status == TITANIA_CONTRIB_APPROVED ? true : false, 'S_CONTRIB_CLEANED' => $this->contrib_status == TITANIA_CONTRIB_CLEANED ? true : false, 'S_CONTRIB_DOWNLOAD_DISABLED' => $this->contrib_status == TITANIA_CONTRIB_DOWNLOAD_DISABLED ? true : false, 'S_CONTRIB_HIDDEN' => $this->contrib_status == TITANIA_CONTRIB_HIDDEN ? true : false, 'S_CONTRIB_DISABLED' => $this->contrib_status == TITANIA_CONTRIB_DISABLED ? true : false, 'JS_CONTRIB_TRANSLATION' => !empty($this->contrib_iso_code) ? 'true' : 'false')); } // Hooks titania::$hook->call_hook_ref(array(__CLASS__, __FUNCTION__), $vars, $this); // Display real author if ($return) { $vars['AUTHOR_NAME_FULL'] = $this->author->get_username_string(); } else { $this->author->assign_details(); } if (!$simple && !$return) { $active_coauthors = $past_coauthors = array(); $author_sort = function ($a, $b) { return strcmp($a['AUTHOR_NAME'], $b['AUTHOR_NAME']); }; // Display Co-authors foreach ($this->coauthors as $user_id => $row) { if ($row['active']) { $active_coauthors[] = $this->author->assign_details(true, $row); } else { $past_coauthors[] = $this->author->assign_details(true, $row); } } usort($active_coauthors, $author_sort); usort($past_coauthors, $author_sort); phpbb::$template->assign_block_vars_array('coauthors', $active_coauthors); phpbb::$template->assign_block_vars_array('past_coauthors', $past_coauthors); // Display Revisions and phpBB versions if (sizeof($this->revisions)) { $revision = new titania_revision($this); $revision->contrib = $this; $phpbb_versions = array(); foreach ($this->revisions as $revision_id => $row) { $revision->__set_array($row); $revision->phpbb_versions = isset($row['phpbb_versions']) ? $row['phpbb_versions'] : array(); $revision->translations = isset($row['translations']) ? $revision->set_translations($row['translations']) : array(); $revision->display('revisions', $this->type->acl_get('view'), $this->options['all_versions']); $phpbb_versions = array_merge($phpbb_versions, $revision->phpbb_versions); } unset($revision); $ordered_phpbb_versions = versions::order_phpbb_version_list_from_db($this->cache, $phpbb_versions, $this->options['all_versions']); if (sizeof($ordered_phpbb_versions) == 1) { phpbb::$template->assign_vars(array('PHPBB_VERSION' => $ordered_phpbb_versions[0])); } else { foreach ($ordered_phpbb_versions as $version_row) { phpbb::$template->assign_block_vars('phpbb_versions', array('NAME' => $version_row)); } } } // Display Screenshots if ($this->screenshots->get_count()) { $message = false; $this->screenshots->parse_attachments($message, false, false, 'screenshots', true); } // Display categories $category = new titania_category(); foreach ($this->category_data as $category_row) { $category->__set_array($category_row); phpbb::$template->assign_block_vars('categories', $category->assign_display(true)); } } if ($return) { return $vars; } phpbb::$template->assign_vars($vars); }