2014-03-25 14:22:54 -03:00

135 lines
3.9 KiB
PHP

<?php
class Controller_charts extends Crunchbutton_Controller_Account {
public function init() {
if (!c::admin()->permission()->check(['global', 'metrics-manage-cohorts'])) {
return ;
}
switch ( c::getPagePiece(1) ) {
case 'cohort':
switch ( c::getPagePiece(2) ) {
case 'new':
$this->cohort_new();
break;
case 'remove':
$this->cohort_remove();
break;
default:
$this->cohort();
break;
}
break;
default:
$this->overview();
break;
}
}
public function overview() {
// select count(*) as users from `session` where date_activity>DATE_SUB(NOW(),INTERVAL 10 MINUTE);
$data = [
'all' => [
'orders' => Order::q('select count(*) as c from `order` where env="live"')->c,
'tickets' => Crunchbutton_Support::pendingSupport()->count(),
],
'day' => [
'orders' => Order::q('
select count(*) as c from `order`
where
env="live"
and date > date_sub(now(), interval 24 hour)
')->c
],
'week' => [
'orders' => Order::q('
select count(*) as c from `order`
where
env="live"
and date > date_sub(now(), interval 1 week)
')->c
]
];
c::view()->data = $data;
$chartUsers = new Crunchbutton_Chart_User();
$chartRevenue = new Crunchbutton_Chart_Revenue();
$chartChurn = new Crunchbutton_Chart_Churn();
$chartGift = new Crunchbutton_Chart_Giftcard();
$chartOrder = new Crunchbutton_Chart_Order();
$graphs = [];
if ( c::admin()->permission()->check( ['global','metrics-all','metrics-main'] ) ) {
$graphs[ 'Main' ] = array_merge(
$chartUsers->getGroups( 'main' ),
$chartRevenue->getGroups( 'main' ),
$chartGift->getGroups( 'main' ),
$chartOrder->getGroups( 'main' ),
$chartChurn->getGroups( 'main' )
);
}
if ( c::admin()->permission()->check( ['global','metrics-all','metrics-investors'] ) ) {
$graphs[ 'For Investors' ] = array_merge(
$chartUsers->getGroups( 'investors' ),
$chartRevenue->getGroups( 'investors' ),
$chartChurn->getGroups( 'investors' ),
$chartGift->getGroups( 'investors' ),
$chartOrder->getGroups( 'investors' )
);
}
if ( c::admin()->permission()->check( ['global','metrics-all','metrics-detailed-analytics'] ) ) {
$graphs[ 'Detailed Analytics' ] = array_merge(
$chartUsers->getGroups( 'detailed-analytics' ),
$chartRevenue->getGroups( 'detailed-analytics' ),
$chartChurn->getGroups( 'detailed-analytics' ),
$chartGift->getGroups( 'detailed-analytics' ),
$chartOrder->getGroups( 'detailed-analytics' )
);
}
if ( c::admin()->permission()->check( ['global','metrics-all','metrics-no-grouped-charts'] ) ) {
$graphs[ 'Old Graphs' ] = array_merge(
$chartUsers->getGroups(),
$chartRevenue->getGroups(),
$chartChurn->getGroups(),
$chartGift->getGroups(),
$chartOrder->getGroups()
);
}
c::view()->graphs = $graphs;
c::view()->display('charts/index');
}
public function cohort(){
c::view()->cohorts = Crunchbutton_Chart_Cohort::q( 'SELECT * FROM chart_cohort ORDER BY name DESC' );
c::view()->display( 'charts/cohort/index' );
}
public function cohort_new(){
c::view()->display( 'charts/cohort/form' );
}
public function cohort_remove(){
$id_chart_cohort = $_POST[ 'id_chart_cohort' ];
$cohort = Crunchbutton_Chart_Cohort::o( $id_chart_cohort );
if( $cohort->id_chart_cohort ){
$cohort->delete();
}
echo 'ok';
}
}