Пример #1
0
 public static function render_instance(BlockInstance $instance, $editing = false)
 {
     $configdata = $instance->get('configdata');
     if (!empty($configdata['artefactid'])) {
         safe_require('artefact', 'file');
         safe_require('artefact', 'comment');
         $artefact = $instance->get_artefact_instance($configdata['artefactid']);
         $viewid = $instance->get('view');
         $text = ArtefactTypeFolder::append_view_url($artefact->get('description'), $viewid);
         $smarty = smarty_core();
         $smarty->assign('text', $text);
         $attachments = $artefact->get_attachments();
         if ($attachments) {
             require_once get_config('docroot') . 'artefact/lib.php';
             foreach ($attachments as &$attachment) {
                 $f = artefact_instance_from_id($attachment->id);
                 $attachment->size = $f->describe_size();
                 $attachment->iconpath = $f->get_icon(array('id' => $attachment->id, 'viewid' => isset($options['viewid']) ? $options['viewid'] : 0));
                 $attachment->viewpath = get_config('wwwroot') . 'artefact/artefact.php?artefact=' . $attachment->id . '&view=' . (isset($viewid) ? $viewid : 0);
                 $attachment->downloadpath = get_config('wwwroot') . 'artefact/file/download.php?file=' . $attachment->id;
                 if (isset($viewid)) {
                     $attachment->downloadpath .= '&view=' . $viewid;
                 }
             }
             $smarty->assign('attachments', $attachments);
             $smarty->assign('count', count($attachments));
         }
         if ($artefact->get('allowcomments')) {
             $commentcount = ArtefactTypeComment::count_comments(null, array($configdata['artefactid']));
             $commentcount = isset($commentcount[$configdata['artefactid']]) ? $commentcount[$configdata['artefactid']]->comments : 0;
             $artefacturl = get_config('wwwroot') . 'artefact/artefact.php?view=' . $viewid . '&artefact=' . $configdata['artefactid'];
             $smarty->assign('artefacturl', $artefacturl);
             $smarty->assign('commentcount', $commentcount);
         }
         return $smarty->fetch('blocktype:textbox:content.tpl');
     }
     return '';
 }
Пример #2
0
 /**
  * This function returns a list of posts in a given blog.
  *
  * @param integer
  * @param integer
  * @param integer
  * @param array
  */
 public static function get_posts($id, $limit, $offset, $viewoptions = null)
 {
     $results = array('limit' => $limit, 'offset' => $offset);
     // If viewoptions is null, we're getting posts for the my blogs area,
     // and we should get all posts & show drafts first.  Otherwise it's a
     // blog in a view, and we should only get published posts.
     $from = "\n            FROM {artefact} a LEFT JOIN {artefact_blog_blogpost} bp ON a.id = bp.blogpost\n            WHERE a.artefacttype = 'blogpost' AND a.parent = ?";
     if (!is_null($viewoptions)) {
         if (isset($viewoptions['before'])) {
             $from .= " AND a.ctime < '{$viewoptions['before']}'";
         }
         $from .= ' AND bp.published = 1';
     }
     $results['count'] = count_records_sql('SELECT COUNT(*) ' . $from, array($id));
     $data = get_records_sql_assoc('
         SELECT
             a.id, a.title, a.description, a.author, a.authorname, ' . db_format_tsfield('a.ctime', 'ctime') . ', ' . db_format_tsfield('a.mtime', 'mtime') . ',
             a.locked, bp.published, a.allowcomments ' . $from . '
         ORDER BY bp.published ASC, a.ctime DESC', array($id), $offset, $limit);
     if (!$data) {
         $results['data'] = array();
         return $results;
     }
     // Get the attached files.
     $postids = array_map(create_function('$a', 'return $a->id;'), $data);
     $files = ArtefactType::attachments_from_id_list($postids);
     if ($files) {
         safe_require('artefact', 'file');
         foreach ($files as &$file) {
             $file->icon = call_static_method(generate_artefact_class_name($file->artefacttype), 'get_icon', array('id' => $file->attachment));
             $data[$file->artefact]->files[] = $file;
         }
     }
     if ($tags = ArtefactType::tags_from_id_list($postids)) {
         foreach ($tags as &$at) {
             $data[$at->artefact]->tags[] = $at->tag;
         }
     }
     // Get comment counts
     if (!empty($viewoptions['countcomments'])) {
         safe_require('artefact', 'comment');
         $viewids = array();
         $commentcounts = ArtefactTypeComment::count_comments($viewids, array_keys($data));
     }
     // Format dates properly
     foreach ($data as &$post) {
         if (is_null($viewoptions)) {
             // My Blogs area: create forms for publishing & deleting posts.
             if (!$post->published) {
                 $post->publish = ArtefactTypeBlogpost::publish_form($post->id);
             }
             $post->delete = ArtefactTypeBlogpost::delete_form($post->id);
         } else {
             $by = $post->author ? display_default_name($post->author) : $post->authorname;
             $post->postedby = get_string('postedbyon', 'artefact.blog', $by, format_date($post->ctime));
             if (isset($commentcounts)) {
                 $post->commentcount = isset($commentcounts[$post->id]) ? $commentcounts[$post->id]->comments : 0;
             }
         }
         $post->ctime = format_date($post->ctime, 'strftimedaydatetime');
         $post->mtime = format_date($post->mtime);
     }
     $results['data'] = array_values($data);
     return $results;
 }
Пример #3
0
function institution_view_stats_table($limit, $offset, &$institutiondata)
{
    global $USER;
    if ($institutiondata['views'] != 0) {
        $count = count_records_select('view', 'id IN (' . join(',', array_fill(0, $institutiondata['views'], '?')) . ') AND type != ?', array_merge($institutiondata['viewids'], array('dashboard')));
    } else {
        $count = 0;
    }
    $pagination = build_pagination(array('id' => 'stats_pagination', 'url' => get_config('wwwroot') . 'admin/users/statistics.php?institution=' . $institutiondata['name'] . '&type=views', 'jsonscript' => 'admin/users/statistics.json.php', 'datatable' => 'statistics_table', 'count' => $count, 'limit' => $limit, 'offset' => $offset, 'extradata' => array('institution' => $institutiondata['name']), 'setlimit' => true));
    $result = array('count' => $count, 'tablerows' => '', 'pagination' => $pagination['html'], 'pagination_js' => $pagination['javascript']);
    if ($count < 1) {
        return $result;
    }
    $viewdata = get_records_sql_assoc("SELECT\n            v.id, v.title, v.owner, v.group, v.institution, v.visits, v.type, v.ownerformat, v.urlid\n        FROM {view} v\n        WHERE v.id IN (" . join(',', array_fill(0, $institutiondata['views'], '?')) . ") AND v.type != ?\n        ORDER BY v.visits DESC, v.title, v.id", array_merge($institutiondata['viewids'], array('dashboard')), $offset, $limit);
    require_once 'view.php';
    require_once 'group.php';
    View::get_extra_view_info($viewdata, false, false);
    safe_require('artefact', 'comment');
    $comments = ArtefactTypeComment::count_comments(array_keys($viewdata));
    foreach ($viewdata as &$v) {
        $v = (object) $v;
        if ($v->owner) {
            $v->ownername = display_name($v->user);
            $v->ownerurl = profile_url($v->user);
        } else {
            $v->ownername = $v->sharedby;
            if ($v->group) {
                $v->ownerurl = group_homepage_url($v->groupdata);
            } else {
                if ($v->institution && $v->institution != 'mahara') {
                    $v->ownerurl = get_config('wwwroot') . 'institution/index.php?institution=' . $v->institution;
                }
            }
        }
        $v->comments = isset($comments[$v->id]) ? (int) $comments[$v->id]->comments : 0;
    }
    $csvfields = array('title', 'displaytitle', 'fullurl', 'owner', 'group', 'institution', 'ownername', 'ownerurl', 'visits', 'type', 'comments');
    $USER->set_download_file(generate_csv($viewdata, $csvfields), 'viewstatistics.csv', 'text/csv');
    $result['csv'] = true;
    $smarty = smarty_core();
    $smarty->assign('data', $viewdata);
    $smarty->assign('offset', $offset);
    $result['tablerows'] = $smarty->fetch('admin/viewstats.tpl');
    return $result;
}
function view_stats_table($limit, $offset)
{
    $count = count_records_select('view', '(owner != 0 OR owner IS NULL) AND type != ?', array('dashboard'));
    $pagination = build_pagination(array('id' => 'stats_pagination', 'url' => get_config('wwwroot') . 'admin/statistics.php?type=views', 'jsonscript' => 'admin/statistics.json.php', 'datatable' => 'statistics_table', 'count' => $count, 'limit' => $limit, 'offset' => $offset));
    $result = array('count' => $count, 'tablerows' => '', 'pagination' => $pagination['html'], 'pagination_js' => $pagination['javascript']);
    if ($count < 1) {
        return $result;
    }
    $viewdata = get_records_sql_assoc("SELECT\n            v.id, v.title, v.owner, v.group, v.institution, v.visits,\n            u.id AS userid, u.firstname, u.lastname,\n            g.id AS groupid, g.name AS groupname,\n            i.displayname AS institutionname\n        FROM {view} v\n            LEFT JOIN {usr} u ON v.owner = u.id\n            LEFT JOIN {group} g ON v.group = g.id\n            LEFT JOIN {institution} i ON v.institution = i.name\n        WHERE (v.owner != 0 OR \"owner\" IS NULL) AND v.type != ?\n        ORDER BY v.visits DESC, v.title, v.id", array('dashboard'), $offset, $limit);
    safe_require('artefact', 'comment');
    $comments = ArtefactTypeComment::count_comments(array_keys($viewdata));
    foreach ($viewdata as &$v) {
        if ($v->owner) {
            $v->ownername = display_name($v->owner);
            $v->ownerurl = 'user/view.php?id=' . $v->userid;
        } else {
            if ($v->group) {
                $v->ownername = $v->groupname;
                $v->ownerurl = 'group/view.php?id=' . $v->groupid;
            } else {
                if ($v->institution == 'mahara') {
                    $v->ownername = get_config('sitename');
                } else {
                    if ($v->institution) {
                        $v->ownername = $v->institutionname;
                    }
                }
            }
        }
        $v->comments = isset($comments[$v->id]) ? (int) $comments[$v->id]->comments : 0;
    }
    $smarty = smarty_core();
    $smarty->assign('data', $viewdata);
    $smarty->assign('offset', $offset);
    $result['tablerows'] = $smarty->fetch('admin/viewstats.tpl');
    return $result;
}