public static function render_instance(BlockInstance $instance, $editing = false) { global $exporter; $configdata = $instance->get('configdata'); $result = ''; if (!empty($configdata['artefactid'])) { require_once get_config('docroot') . 'artefact/lib.php'; $blog = $instance->get_artefact_instance($configdata['artefactid']); $configdata['hidetitle'] = true; $configdata['countcomments'] = true; $configdata['viewid'] = $instance->get('view'); if ($instance->get_view()->is_submitted()) { // Don't display posts added after the submitted date. if ($submittedtime = $instance->get_view()->get('submittedtime')) { $configdata['before'] = $submittedtime; } } $limit = isset($configdata['count']) ? intval($configdata['count']) : 5; $posts = ArtefactTypeBlogpost::get_posts($blog->get('id'), $limit, 0, $configdata); $template = 'artefact:blog:viewposts.tpl'; if ($exporter) { $pagination = false; } else { $baseurl = $instance->get_view()->get_url(); $baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'block=' . $instance->get('id'); $pagination = array('baseurl' => $baseurl, 'id' => 'blogpost_pagination_' . $instance->get('id'), 'datatable' => 'postlist_' . $instance->get('id'), 'jsonscript' => 'artefact/blog/posts.json.php'); } $configdata['blockid'] = $instance->get('id'); $configdata['editing'] = $editing; ArtefactTypeBlogpost::render_posts($posts, $template, $configdata, $pagination); $smarty = smarty_core(); if (isset($configdata['viewid'])) { $artefacturl = get_config('wwwroot') . 'artefact/artefact.php?artefact=' . $blog->get('id') . '&view=' . $configdata['viewid']; $smarty->assign('artefacttitle', '<a href="' . $artefacturl . '">' . hsc($blog->get('title')) . '</a>'); if ($exporter && $posts['count'] > $limit) { $posts['pagination'] = '<a href="' . $artefacturl . '">' . get_string('allposts', 'artefact.blog') . '</a>'; } } else { $smarty->assign('artefacttitle', hsc($blog->get('title'))); } // Only show the 'New entry' link for blogs that you can add an entry to $canaddpost = false; $institution = $blog->get('institution'); $group = $blog->get('group'); if (ArtefactTypeBlog::can_edit_blog($blog, $institution, $group)) { $canaddpost = true; } $smarty->assign('options', $configdata); $smarty->assign('description', $blog->get('description')); $smarty->assign('owner', $blog->get('owner')); $smarty->assign('tags', $blog->get('tags')); $smarty->assign('blockid', $instance->get('id')); $smarty->assign('editing', $editing); $smarty->assign('canaddpost', $canaddpost); $smarty->assign('blogid', $blog->get('id')); $smarty->assign('posts', $posts); $result = $smarty->fetch('artefact:blog:blog.tpl'); } return $result; }
if ($blockid = param_integer('block', null)) { $bi = new BlockInstance($blockid); if (!can_view_view($bi->get('view'))) { json_reply(true, get_string('accessdenied', 'error')); } $configdata = $bi->get('configdata'); $limit = isset($configdata['count']) ? $configdata['count'] : 5; $configdata['countcomments'] = true; $configdata['viewid'] = $bi->get('view'); $posts = ArtefactTypeBlogpost::get_posts($configdata['artefactid'], $limit, $offset, $configdata); $template = 'artefact:blog:viewposts.tpl'; $baseurl = $bi->get_view()->get_url(); $baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'block=' . $blockid; $pagination = array('baseurl' => $baseurl, 'id' => 'blogpost_pagination_' . $blockid, 'datatable' => 'postlist_' . $blockid, 'jsonscript' => 'artefact/blog/posts.json.php'); ArtefactTypeBlogpost::render_posts($posts, $template, $configdata, $pagination); } else { // No block, we're just rendering the blog by itself. $limit = param_integer('limit', ArtefactTypeBlog::pagination); $blogid = param_integer('artefact'); $viewid = param_integer('view'); if (!can_view_view($viewid)) { json_reply(true, get_string('accessdenied', 'error')); } $options = array('viewid' => $viewid, 'countcomments' => true); $posts = ArtefactTypeBlogpost::get_posts($blogid, $limit, $offset, $options); $template = 'artefact:blog:viewposts.tpl'; $baseurl = get_config('wwwroot') . 'artefact/artefact.php?artefact=' . $blogid . '&view=' . $viewid; $pagination = array('baseurl' => $baseurl, 'id' => 'blogpost_pagination', 'datatable' => 'postlist', 'jsonscript' => 'artefact/blog/posts.json.php'); ArtefactTypeBlogpost::render_posts($posts, $template, $options, $pagination); } json_reply(false, array('data' => $posts));
/** * Renders a blog. * * @param array Options for rendering * @return array A two key array, 'html' and 'javascript'. */ public function render_self($options) { if (!isset($options['limit'])) { $limit = self::pagination; } else { if ($options['limit'] === false) { $limit = null; } else { $limit = (int) $options['limit']; } } $offset = isset($options['offset']) ? intval($options['offset']) : 0; if (!isset($options['countcomments'])) { // Count comments if this is a view $options['countcomments'] = !empty($options['viewid']); } $posts = ArtefactTypeBlogpost::get_posts($this->id, $limit, $offset, $options); $template = 'artefact:blog:viewposts.tpl'; $baseurl = get_config('wwwroot') . 'artefact/artefact.php?artefact=' . $this->id; if (!empty($options['viewid'])) { $baseurl .= '&view=' . $options['viewid']; } $pagination = array('baseurl' => $baseurl, 'id' => 'blogpost_pagination', 'datatable' => 'postlist', 'jsonscript' => 'artefact/blog/posts.json.php'); ArtefactTypeBlogpost::render_posts($posts, $template, $options, $pagination); $smarty = smarty_core(); if (isset($options['viewid'])) { $smarty->assign('artefacttitle', '<a href="' . get_config('wwwroot') . 'artefact/artefact.php?artefact=' . $this->get('id') . '&view=' . $options['viewid'] . '">' . hsc($this->get('title')) . '</a>'); } else { $smarty->assign('artefacttitle', hsc($this->get('title'))); } if (!empty($options['details']) and get_config('licensemetadata')) { $smarty->assign('license', render_license($this)); } else { $smarty->assign('license', false); } $options['hidetitle'] = true; $smarty->assign('options', $options); $smarty->assign('description', $this->get('description')); $smarty->assign('owner', $this->get('owner')); $smarty->assign('tags', $this->get('tags')); $smarty->assign_by_ref('posts', $posts); return array('html' => $smarty->fetch('artefact:blog:blog.tpl'), 'javascript' => ''); }