123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <?php
-
- if (!check_perms('site_view_flow')) {
- error(403);
- }
-
- // Timeline generation
- if (!isset($_GET['page'])) {
- if (!list($Labels, $InFlow, $OutFlow) = $Cache->get_value('users_timeline')) {
- $DB->query("
- SELECT DATE_FORMAT(JoinDate, \"%b %y\") AS Month, COUNT(UserID)
- FROM users_info
- GROUP BY Month
- ORDER BY JoinDate DESC
- LIMIT 1, 11");
- $TimelineIn = array_reverse($DB->to_array());
-
- $DB->query("
- SELECT DATE_FORMAT(BanDate, \"%b %y\") AS Month, COUNT(UserID)
- FROM users_info
- WHERE BanDate > 0
- GROUP BY Month
- ORDER BY BanDate DESC
- LIMIT 1, 11");
- $TimelineOut = array_reverse($DB->to_array());
-
- $Labels = [];
- foreach ($TimelineIn as $Month) {
- list($Labels[], $InFlow[]) = $Month;
- }
-
- foreach ($TimelineOut as $Month) {
- list(, $OutFlow[]) = $Month;
- }
- $Cache->cache_value('users_timeline', array($Labels, $InFlow, $OutFlow), mktime(0, 0, 0, date('n') + 1, 2));
- }
- }
- // End timeline generation
-
- define('DAYS_PER_PAGE', 100);
- list($Page, $Limit) = Format::page_limit(DAYS_PER_PAGE);
-
- # wtf
- $RS = $DB->query("
- SELECT
- SQL_CALC_FOUND_ROWS
- j.Date,
- DATE_FORMAT(j.Date, '%Y-%m') AS Month,
- CASE ISNULL(j.Flow)
- WHEN 0 THEN j.Flow
- ELSE '0'
- END AS Joined,
- CASE ISNULL(m.Flow)
- WHEN 0 THEN m.Flow
- ELSE '0'
- END AS Manual,
- CASE ISNULL(r.Flow)
- WHEN 0 THEN r.Flow
- ELSE '0'
- END AS Ratio,
- CASE ISNULL(i.Flow)
- WHEN 0 THEN i.Flow
- ELSE '0'
- END AS Inactivity
- FROM (
- SELECT
- DATE_FORMAT(JoinDate, '%Y-%m-%d') AS Date,
- COUNT(UserID) AS Flow
- FROM users_info
- WHERE JoinDate IS NOT NULL
- GROUP BY Date
- ) AS j
- LEFT JOIN (
- SELECT
- DATE_FORMAT(BanDate, '%Y-%m-%d') AS Date,
- COUNT(UserID) AS Flow
- FROM users_info
- WHERE BanDate IS NOT NULL
- AND BanReason = '1'
- GROUP BY Date
- ) AS m ON j.Date = m.Date
- LEFT JOIN (
- SELECT
- DATE_FORMAT(BanDate, '%Y-%m-%d') AS Date,
- COUNT(UserID) AS Flow
- FROM users_info
- WHERE BanDate IS NOT NULL
- AND BanReason = '2'
- GROUP BY Date
- ) AS r ON j.Date = r.Date
- LEFT JOIN (
- SELECT
- DATE_FORMAT(BanDate, '%Y-%m-%d') AS Date,
- COUNT(UserID) AS Flow
- FROM users_info
- WHERE BanDate IS NOT NULL
- AND BanReason = '3'
- GROUP BY Date
- ) AS i ON j.Date = i.Date
- ORDER BY j.Date DESC
- LIMIT $Limit");
-
- $DB->query('SELECT FOUND_ROWS()');
- list($Results) = $DB->next_record();
- View::show_header('User Flow', 'chart');
- $DB->set_query_id($RS);
- ?>
-
- <div class="linkbox">
- <?php
- $Pages = Format::get_pages($Page, $Results, DAYS_PER_PAGE, 11);
- echo $Pages;
- ?>
- </div>
-
- <div class="box">
- <table width="100%">
- <tr class="colhead">
- <td>Date</td>
- <td>+ Joined</td>
- <td>− Manual</td>
- <td>− Ratio</td>
- <td>− Inactivity</td>
- <td>− Total</td>
- <td>Net Growth</td>
- </tr>
-
- <?php
- while (list($Date, $Month, $Joined, $Manual, $Ratio, $Inactivity) = $DB->next_record()) {
- $TotalOut = $Ratio + $Inactivity + $Manual;
- $TotalGrowth = $Joined - $TotalOut; ?>
- <tr class="row">
- <td>
- <?=$Date?>
- </td>
-
- <td>
- <?=number_format($Joined)?>
- </td>
-
- <td>
- <?=number_format($Manual)?>
- </td>
-
- <td>
- <?=number_format((float)$Ratio)?>
- </td>
-
- <td>
- <?=number_format($Inactivity)?>
- </td>
-
- <td>
- <?=number_format($TotalOut)?>
- </td>
-
- <td>
- <?=number_format($TotalGrowth)?>
- </td>
- </tr>
- <?php
- } ?>
- </table>
- </div>
-
- <div class="linkbox">
- <?=$Pages?>
- </div>
- </div>
- <?php
- View::show_footer();
|