Exemplo n.º 1
0
    /**
     * Get the queue history between two timestamps
     *
     * @param \DateTime $start	Lower time limit of the queue activity calendar
     * @param \DateTime $end	Upper time limit of the queue activity calendar
     *
     * @return Retuns an array in the form of Array([year] => Array([month] => Array([day] => Array('new' => int, 'approved' => int, 'denied' => int))))
     */
    public function get_queue_history(\DateTime $start, \DateTime $end)
    {
        $start_time = (int) $start->setTimezone($this->utc)->getTimestamp();
        $end_time = (int) $end->setTimezone($this->utc)->getTimestamp();
        $day_tpl = array('new' => 0, 'approved' => 0, 'denied' => 0);
        $history = date::get_calendar_ary($this->user, $start, $end, $day_tpl);
        $sql = 'SELECT queue_status AS status, queue_submit_time AS submit_time, queue_close_time AS close_time
			FROM ' . TITANIA_QUEUE_TABLE . '
			WHERE queue_type = ' . $this->queue_type . '
				AND ' . $this->db->sql_in_set('queue_status', array(TITANIA_QUEUE_CLOSED, TITANIA_QUEUE_HIDE), true) . '
				AND ((queue_submit_time > ' . $start_time . ' AND queue_submit_time < ' . $end_time . ') 
					OR (queue_close_time > ' . $start_time . ' AND queue_close_time < ' . $end_time . '))';
        $result = $this->db->sql_query($sql);
        while ($row = $this->db->sql_fetchrow($result)) {
            $this->fill_history_actions($history, $start_time, $end_time, $row);
        }
        $this->db->sql_freeresult($result);
        return $history;
    }
Exemplo n.º 2
0
 /**
  * Generate queue stats
  *
  * @return bool Returns true if there have been any revisions validated. False otherwise.
  */
 protected function generate_stats()
 {
     $total_revs_denied = $this->stats->get_queue_item_count(TITANIA_QUEUE_DENIED);
     $total_revs_approved = $this->stats->get_queue_item_count(TITANIA_QUEUE_APPROVED);
     $total_revs_validated = $total_revs_denied + $total_revs_approved;
     if (!$total_revs_validated) {
         return false;
     }
     $current_time = time();
     $year_ago = new \DateTime('midnight tomorrow', $this->user->timezone);
     $year_ago->modify('-1 year')->setTimezone(new \DateTimezone('UTC'));
     $validated_cache_ttl = round($total_revs_validated / 1000) * 86400;
     $validated_statuses = array(TITANIA_QUEUE_DENIED, TITANIA_QUEUE_APPROVED);
     $closed_statuses = array(TITANIA_QUEUE_CLOSED, TITANIA_QUEUE_DENIED, TITANIA_QUEUE_APPROVED, TITANIA_QUEUE_HIDE);
     $oldest_unvalidated_rev = $this->stats->get_oldest_revision_time(false, $closed_statuses);
     $oldest_validated_rev = $this->stats->get_oldest_revision_time($validated_statuses);
     $unvalidated_avg_wait = $this->stats->get_average_wait(0, 0, true, false, $closed_statuses);
     $validated_avg_wait = $this->stats->get_average_wait($year_ago->getTimestamp(), 0, false, $validated_statuses, false, $validated_cache_ttl);
     $revisions_in_queue = $this->stats->get_queue_item_count(false, $closed_statuses);
     $this->template->assign_vars(array('DENIED_RATIO' => round($total_revs_denied / $total_revs_validated * 100), 'APPROVED_RATIO' => round($total_revs_approved / $total_revs_validated * 100), 'AVG_PAST_VALIDATION_TIME' => $this->user->lang('AVG_PAST_VALIDATION_TIME', $validated_avg_wait), 'AVG_CURRENT_QUEUE_WAIT' => $this->user->lang('AVG_CURRENT_QUEUE_WAIT', $unvalidated_avg_wait), 'OLDEST_UNVALIDATED_REV' => $this->user->lang('OLDEST_UNVALIDATED_REV', date::format_time_delta($this->user, $oldest_unvalidated_rev, $current_time)), 'NUM_REVISIONS_IN_QUEUE' => $this->user->lang('NUM_REVISIONS_IN_QUEUE', $revisions_in_queue), 'SINCE_X_VALIDATED_REVS' => $this->user->lang('SINCE_X_VALIDATED_REVS', $this->user->format_date($oldest_validated_rev, 'd M Y'), $total_revs_validated, $total_revs_denied, $total_revs_approved), 'S_QUEUE_ACTIVE' => $revisions_in_queue));
     return true;
 }