* @copyright (c) 2013, OnePress Ltd * * @package core * @since 1.0.0 */ /** * Common Settings */ class OPanda_StatisticsPage extends OPanda_AdminPage { public function __construct( $plugin ) { $this->id = 'stats'; $this->menuPostType = OPANDA_POST_TYPE; $this->menuTitle = __('Stats & Reports', 'bizpanda'); if( !current_user_can('administrator') ) $this->capabilitiy = "manage_opanda_stats"; parent::__construct( $plugin ); } public function assets($scripts, $styles) { $this->scripts->request('jquery'); $this->styles->request( array( 'bootstrap.core' ), 'bootstrap' ); $this->scripts->add(OPANDA_BIZPANDA_URL . '/assets/admin/js/libs/datepicker.js'); $this->styles->add(OPANDA_BIZPANDA_URL . '/assets/admin/css/libs/datepicker.css'); $this->scripts->add(OPANDA_BIZPANDA_URL . '/assets/admin/js/stats.010000.js'); $this->styles->add(OPANDA_BIZPANDA_URL . '/assets/admin/css/stats.010000.css'); } /** * Shows an index page where a user can set settings. * * @sinve 1.0.0 * @return void */ public function indexAction() { // getting all the items for the item selector $dropdownItems = get_posts(array( 'post_type' => OPANDA_POST_TYPE, 'meta_key' => 'opanda_item', 'meta_value' => OPanda_Items::getAvailableNames(), 'numberposts' => -1 )); // current item $itemId = isset( $_GET['opanda_id'] ) ? $_GET['opanda_id'] : null; if ( empty( $itemId ) ) { $itemId = isset( $dropdownItems[0]->ID ) ? $dropdownItems[0]->ID : 0; } $itemName = OPanda_Items::getItemNameById($itemId); $showPopup = ( count( $dropdownItems ) > 1 && !isset( $_GET['opanda_id'] ) ); $screens = apply_filters("opanda_item_type_stats_screens", array(), $itemName); $screens = apply_filters("opanda_{$itemName}_stats_screens", $screens); $item = get_post( $itemId ); if ( empty( $item) ) die( __('The item with ID = ' . $itemId . ' is not found.' , 'bizpanda' ) ); $itemTitle = empty( $item->post_title ) ? sprintf( __('(no titled, id=%s)', 'bizpanda'), $item->ID ) : $item->post_title; // current item screen $currentScreenName = isset($_REQUEST['opanda_screen']) ? $_REQUEST['opanda_screen'] : 'summary'; $currentScreen = $screens[$currentScreenName]; require_once(OPANDA_BIZPANDA_DIR . '/admin/includes/classes/class.stats-screen.php'); require_once $currentScreen['path']; $screenClass = isset( $currentScreen['screenClsss'] ) ? $currentScreen['screenClsss'] : 'OPanda_StatsScreen'; $screen = new $screenClass(array( 'chartClass' => $currentScreen['chartClass'], 'tableClass' => $currentScreen['tableClass'] )); // current post $postId = isset($_REQUEST['opanda_post_id']) ? intval($_REQUEST['opanda_post_id']) : false; $post = ($postId) ? get_post($postId) : false; // set date range $dateStart = isset($_REQUEST['opanda_date_start']) ? $_REQUEST['opanda_date_start'] : false; $dateEnd = isset($_REQUEST['opanda_date_end']) ? $_REQUEST['opanda_date_end'] : false; $hrsOffset = get_option('gmt_offset'); if (strpos($hrsOffset, '-') !== 0) $hrsOffset = '+' . $hrsOffset; $hrsOffset .= ' hours'; // by default shows a 30 days' range if ( empty($dateEnd) || ($dateRangeEnd = strtotime($dateEnd)) === false) { $phpdate = getdate( strtotime($hrsOffset, time()) ); $dateRangeEnd = mktime(0, 0, 0, $phpdate['mon'], $phpdate['mday'], $phpdate['year']); } if ( empty($dateStart) || ($dateRangeStart = strtotime($dateStart)) === false) { $dateRangeStart = strtotime("-1 month", $dateRangeEnd); } // getting the chart data $chart = $screen->getChart(array( 'itemId' => $itemId, 'postId' => $postId, 'rangeStart' => $dateRangeStart, 'rangeEnd' => $dateRangeEnd, )); // getting the table data $page = ( isset( $_GET['opanda_page'] ) ) ? intval( $_GET['opanda_page'] ) : 1; if ( $page <= 0 ) $page = 1; $table = $screen->getTable(array( 'itemId' => $itemId, 'postId' => $postId, 'rangeStart' => $dateRangeStart, 'rangeEnd' => $dateRangeEnd, 'per' => 50, 'total' => true, 'page' => $page )); // the base urls $urlBase = add_query_arg( array( 'opanda_id' => $itemId, 'opanda_post_id' => $postId, 'opanda_screen' => $currentScreenName, 'opanda_date_start' => date('m/d/Y', $dateRangeStart), 'opanda_date_end' => date('m/d/Y', $dateRangeEnd), ), opanda_get_admin_url('stats') ); $dateStart = date('m/d/Y', $dateRangeStart); $dateEnd = date('m/d/Y', $dateRangeEnd); // extra css classes $tableCssClass = ''; if ( $table->getColumnsCount() > 8 ) $tableCssClass .= ' opanda-concise-table'; else $tableCssClass .= ' opanda-free-table'; ?>

">
By default, the such visitors see the locker without social buttons but with the offer to disable the extensions. You can set another behaviour here.', 'bizpanda'), admin_url('admin.php?page=common-settings-' . $this->plugin->pluginName . '&action=advanced') ) ?>
$screen ) { ?>
:
hasSelectors() ) { ?> getSelectors() as $name => $field ) { ?>
%s (return back)', 'bizpanda'),$post->post_title, add_query_arg( 'opanda_post_id', false, $urlBase ) ); ?>

hasComplexColumns() ) { ?> getHeaderColumns() as $name => $column ) { ?> getHeaderColumns(2) as $name => $column ) { ?> getColumns() as $name => $column ) { ?> getRowsCount(); $i++ ) { if ( $i >= 50 ) break; ?> getDataColumns() as $name => $column ) { ?>
printValue( $i, $name, $column ) ?>