本文整理汇总了PHP中stats_fix_zeros函数的典型用法代码示例。如果您正苦于以下问题:PHP stats_fix_zeros函数的具体用法?PHP stats_fix_zeros怎么用?PHP stats_fix_zeros使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了stats_fix_zeros函数的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: report_stats_report
//.........这里部分代码省略.........
if (!empty($report) && !empty($time)) {
if ($report == STATS_REPORT_LOGINS && $course->id != SITEID) {
print_error('reportnotavailable');
}
$param = stats_get_parameters($time,$report,$course->id,$mode);
if ($mode == STATS_MODE_DETAILED) {
$param->table = 'user_'.$param->table;
}
if (!empty($param->sql)) {
$sql = $param->sql;
} else {
//TODO: lceanup this ugly mess
$sql = 'SELECT '.((empty($param->fieldscomplete)) ? 'id,roleid,timeend,' : '').$param->fields
.' FROM {stats_'.$param->table.'} WHERE '
.(($course->id == SITEID) ? '' : ' courseid = '.$course->id.' AND ')
.((!empty($userid)) ? ' userid = '.$userid.' AND ' : '')
.((!empty($roleid)) ? ' roleid = '.$roleid.' AND ' : '')
. ((!empty($param->stattype)) ? ' stattype = \''.$param->stattype.'\' AND ' : '')
.' timeend >= '.$param->timeafter
.' '.$param->extras
.' ORDER BY timeend DESC';
}
$stats = $DB->get_records_sql($sql);
if (empty($stats)) {
echo $OUTPUT->notification(get_string('statsnodata'));
} else {
$stats = stats_fix_zeros($stats,$param->timeafter,$param->table,(!empty($param->line2)));
echo $OUTPUT->heading(format_string($course->shortname).' - '.get_string('statsreport'.$report)
.((!empty($user)) ? ' '.get_string('statsreportforuser').' ' .fullname($user,true) : '')
.((!empty($roleid)) ? ' '.$DB->get_field('role','name', array('id'=>$roleid)) : ''));
if (empty($CFG->gdversion)) {
echo "(".get_string("gdneed").")";
} else {
if ($mode == STATS_MODE_DETAILED) {
echo '<div class="graph"><img src="'.$CFG->wwwroot.'/report/stats/graph.php?mode='.$mode.'&course='.$course->id.'&time='.$time.'&report='.$report.'&userid='.$userid.'" alt="'.get_string('statisticsgraph').'" /></div';
} else {
echo '<div class="graph"><img src="'.$CFG->wwwroot.'/report/stats/graph.php?mode='.$mode.'&course='.$course->id.'&time='.$time.'&report='.$report.'&roleid='.$roleid.'" alt="'.get_string('statisticsgraph').'" /></div>';
}
}
$table = new html_table();
$table->align = array('left','center','center','center');
$param->table = str_replace('user_','',$param->table);
switch ($param->table) {
case 'daily' : $period = get_string('day'); break;
case 'weekly' : $period = get_string('week'); break;
case 'monthly': $period = get_string('month', 'form'); break;
default : $period = '';
}
$table->head = array(get_string('periodending','moodle',$period));
if (empty($param->crosstab)) {
$table->head[] = $param->line1;
if (!empty($param->line2)) {
$table->head[] = $param->line2;
}
}
示例2: array_pop
}
// use the earliest.
$time = array_pop(array_keys($timeoptions));
$param = stats_get_parameters($time, STATS_REPORT_USER_VIEW, $course->id, STATS_MODE_DETAILED);
$param->table = 'user_' . $param->table;
$sql = 'SELECT timeend,' . $param->fields . ' FROM ' . $CFG->prefix . 'stats_' . $param->table . ' WHERE ' . ($course->id == SITEID ? '' : ' courseid = ' . $course->id . ' AND ') . ' userid = ' . $user->id . ' AND timeend >= ' . $param->timeafter . $param->extras . ' ORDER BY timeend DESC';
$stats = get_records_sql($sql);
if (empty($stats)) {
print_error('nostatstodisplay', '', $CFG->wwwroot . '/course/user.php?id=' . $course->id . '&user=' . $user->id . '&mode=outline');
}
// MDL-10818, do not display broken graph when user has no permission to view graph
if ($myreports or has_capability('coursereport/stats:view', $coursecontext)) {
echo '<center><img src="' . $CFG->wwwroot . '/course/report/stats/graph.php?mode=' . STATS_MODE_DETAILED . '&course=' . $course->id . '&time=' . $time . '&report=' . STATS_REPORT_USER_VIEW . '&userid=' . $user->id . '" alt="' . get_string('statisticsgraph') . '" /></center>';
}
// What the heck is this about? -- MD
$stats = stats_fix_zeros($stats, $param->timeafter, $param->table, !empty($param->line2), !empty($param->line3));
$table = new object();
$table->align = array('left', 'center', 'center', 'center');
$param->table = str_replace('user_', '', $param->table);
switch ($param->table) {
case 'daily':
$period = get_string('day');
break;
case 'weekly':
$period = get_string('week');
break;
case 'monthly':
$period = get_string('month', 'form');
break;
default:
$period = '';
示例3: report_stats_print_chart
/**
* Fetch statistics data and generate a line chart.
*
* The statistic chart can be view, posts separated by roles and dates.
*
* @param int $courseid course id.
* @param int $report the report type constant eg. STATS_REPORT_LOGINS as defined on statslib.
* @param int $time timestamp of the selected time period.
* @param int $mode the report mode, eg. STATS_MODE_DETAILED as defined on statslib.
* @param int $userid selected user id.
* @param int $roleid selected role id.
*/
function report_stats_print_chart($courseid, $report, $time, $mode, $userid = 0, $roleid = 0)
{
global $DB, $CFG, $OUTPUT;
$course = $DB->get_record("course", array("id" => $courseid), '*', MUST_EXIST);
$coursecontext = context_course::instance($course->id);
stats_check_uptodate($course->id);
$param = stats_get_parameters($time, $report, $course->id, $mode);
if (!empty($userid)) {
$param->table = 'user_' . $param->table;
}
// TODO: cleanup this ugly mess.
$sql = 'SELECT ' . (empty($param->fieldscomplete) ? 'id,roleid,timeend,' : '') . $param->fields . ' FROM {stats_' . $param->table . '} WHERE ' . ($course->id == SITEID ? '' : ' courseid = ' . $course->id . ' AND ') . (!empty($userid) ? ' userid = ' . $userid . ' AND ' : '') . (!empty($roleid) ? ' roleid = ' . $roleid . ' AND ' : '') . (!empty($param->stattype) ? ' stattype = \'' . $param->stattype . '\' AND ' : '') . ' timeend >= ' . $param->timeafter . ' ' . $param->extras . ' ORDER BY timeend DESC';
$stats = $DB->get_records_sql($sql, $param->params);
$stats = stats_fix_zeros($stats, $param->timeafter, $param->table, !empty($param->line2), !empty($param->line3));
$stats = array_reverse($stats);
$chart = new \core\chart_line();
if (empty($param->crosstab)) {
$data = [];
$times = [];
foreach ($stats as $stat) {
// Build the array of formatted times indexed by timestamp used as labels.
if (!array_key_exists($stat->timeend, $times)) {
$times[$stat->timeend] = userdate($stat->timeend, get_string('strftimedate'), $CFG->timezone);
// Just add the data if the time hasn't been added yet.
// The number of lines of data must match the number of labels.
$data['line1'][] = $stat->line1;
if (isset($stat->line2)) {
$data['line2'][] = $stat->line2;
}
if (isset($stat->line3)) {
$data['line3'][] = $stat->line3;
}
}
}
foreach ($data as $line => $serie) {
$series = new \core\chart_series($param->{$line}, array_values($serie));
$chart->add_series($series);
}
} else {
$data = array();
$times = array();
$roles = array();
$missedlines = array();
$rolenames = role_fix_names(get_all_roles($coursecontext), $coursecontext, ROLENAME_ALIAS, true);
foreach ($stats as $stat) {
$data[$stat->roleid][$stat->timeend] = $stat->line1;
if (!empty($stat->zerofixed)) {
$missedlines[] = $stat->timeend;
}
if ($stat->roleid != 0) {
if (!array_key_exists($stat->roleid, $roles)) {
$roles[$stat->roleid] = $rolenames[$stat->roleid];
}
} else {
if (!array_key_exists($stat->roleid, $roles)) {
$roles[$stat->roleid] = get_string('all');
}
}
// Build the array of formatted times indexed by timestamp used as labels.
if (!array_key_exists($stat->timeend, $times)) {
$times[$stat->timeend] = userdate($stat->timeend, get_string('strftimedate'), $CFG->timezone);
}
}
// Fill empty days with zero to avoid chart errors.
foreach (array_keys($times) as $t) {
foreach ($data as $roleid => $stuff) {
if (!array_key_exists($t, $stuff)) {
$data[$roleid][$t] = 0;
}
}
}
krsort($roles);
foreach ($roles as $roleid => $rolename) {
ksort($data[$roleid]);
$series = new \core\chart_series($rolename, array_values($data[$roleid]));
$chart->add_series($series);
}
}
$chart->set_labels(array_values($times));
echo $OUTPUT->render_chart($chart, false);
}