<?php if (!check_perms('site_view_flow')) { error(403); } //Timeline generation if (!isset($_GET['page'])) { if (!list($Labels, $InFlow, $OutFlow, $Max) = $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, 12"); $TimelineIn = array_reverse($DB->to_array()); $DB->query(" SELECT DATE_FORMAT(BanDate, '%b \'%y') AS Month, COUNT(UserID) FROM users_info GROUP BY Month ORDER BY BanDate DESC LIMIT 1, 12"); $TimelineOut = array_reverse($DB->to_array()); foreach ($TimelineIn as $Month) { list($Label, $Amount) = $Month; if ($Amount > $Max) { $Max = $Amount; } } foreach ($TimelineOut as $Month) { list($Label, $Amount) = $Month; if ($Amount > $Max) { $Max = $Amount; } } foreach ($TimelineIn as $Month) { list($Label, $Amount) = $Month; $Labels[] = $Label; $InFlow[] = number_format(($Amount / $Max) * 100, 4); } foreach ($TimelineOut as $Month) { list($Label, $Amount) = $Month; $OutFlow[] = number_format(($Amount / $Max) * 100, 4); } $Cache->cache_value('users_timeline', array($Labels, $InFlow, $OutFlow, $Max), 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); $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 != '0000-00-00 00:00:00' 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 != '0000-00-00 00:00:00' 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 != '0000-00-00 00:00:00' 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 != '0000-00-00 00:00:00' 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'); $DB->set_query_id($RS); ?> <div class="thin"> <? if (!isset($_GET['page'])) { ?> <div class="box pad"> <img src="https://chart.googleapis.com/chart?cht=lc&chs=820x160&chco=000D99,99000D&chg=0,-1,1,1&chxt=y,x&chxs=0,h&chxl=1:|<?=implode('|', $Labels)?>&chxr=0,0,<?=$Max?>&chd=t:<?=implode(',', $InFlow)?>|<?=implode(',', $OutFlow)?>&chls=2,4,0&chdl=New+Registrations|Disabled+Users&chf=bg,s,FFFFFF00" alt="User Flow vs. Time" /> </div> <? } ?> <div class="linkbox"> <? $Pages = Format::get_pages($Page, $Results, DAYS_PER_PAGE, 11); echo $Pages; ?> </div> <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> <? while (list($Date, $Month, $Joined, $Manual, $Ratio, $Inactivity) = $DB->next_record()) { $TotalOut = $Ratio + $Inactivity + $Manual; $TotalGrowth = $Joined - $TotalOut; ?> <tr class="rowb"> <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> <? } ?> </table> <div class="linkbox"> <?=$Pages?> </div> </div> <? View::show_footer(); ?>