Example #1
0
 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));
Example #3
0
 /**
  * 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' => '');
 }