Skip to content

Commit 56db28a

Browse files
Merge pull request #552 from contactashish13/issue-551
Collect more usage statistics
2 parents c8bb1f9 + 7e786ca commit 56db28a

File tree

1 file changed

+58
-9
lines changed

1 file changed

+58
-9
lines changed

classes/Visualizer/Module/Setup.php

Lines changed: 58 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@ public function __construct( Visualizer_Plugin $plugin ) {
5151
$this->_addAction( 'init', 'setupCustomPostTypes' );
5252
$this->_addAction( 'plugins_loaded', 'loadTextDomain' );
5353
$this->_addFilter( 'visualizer_logger_data', 'getLoggerData' );
54-
$this->_addFilter( 'visualizer_get_chart_counts', 'getChartCountsByTypeAndMeta' );
54+
$this->_addFilter( 'visualizer_get_chart_counts', 'getUsage', 10, 2 );
5555

56+
// only for testing
57+
// $this->_addAction( 'admin_init', 'getUsage' );
5658
}
5759
/**
5860
* Fetches the SDK logger data.
@@ -62,34 +64,80 @@ public function __construct( Visualizer_Plugin $plugin ) {
6264
* @access public
6365
*/
6466
public function getLoggerData( $data ) {
65-
return $this->getChartCountsByTypeAndMeta();
67+
return $this->getUsage( $data );
6668
}
6769

6870
/**
69-
* Fetches the types of charts created and their counts.
71+
* Fetches the usage of charts.
7072
*
73+
* @param array $data The default data that needs to be sent.
7174
* @param array $meta_keys An array of name vs. meta keys - to return how many charts have these keys.
72-
* @access private
75+
*
76+
* @access public
7377
*/
74-
public function getChartCountsByTypeAndMeta( $meta_keys = array() ) {
75-
$charts = array();
76-
$charts['chart_types'] = array();
77-
// the initial query arguments to fetch charts
78+
public function getUsage( $data, $meta_keys = array() ) {
79+
$charts = array( 'types' => array(), 'sources' => array(), 'library' => array(), 'permissions' => 0, 'manual_config' => 0, 'scheduled' => 0 );
7880
$query_args = array(
7981
'post_type' => Visualizer_Plugin::CPT_VISUALIZER,
8082
'posts_per_page' => 300,
83+
'post_status' => 'publish',
8184
'fields' => 'ids',
8285
'no_rows_found' => false,
8386
'update_post_meta_cache' => false,
8487
'update_post_term_cache' => false,
88+
);
8589

90+
// default permissions.
91+
$default_perms = array(
92+
'read' => 'all',
93+
'read-specific' => null,
94+
'edit' => 'roles',
95+
'edit-specific' => array( 'administrator' ),
8696
);
8797

98+
// collect all schedules chart ids.
99+
$scheduled = array_merge(
100+
array_keys( get_option( Visualizer_Plugin::CF_CHART_SCHEDULE, array() ) ),
101+
array_keys( get_option( Visualizer_Plugin::CF_DB_SCHEDULE, array() ) )
102+
);
88103
$query = new WP_Query( $query_args );
89104
while ( $query->have_posts() ) {
90105
$chart_id = $query->next_post();
91106
$type = get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_TYPE, true );
92-
$charts['chart_types'][ $type ] = isset( $charts['chart_types'][ $type ] ) ? $charts['chart_types'][ $type ] + 1 : 1;
107+
$charts['types'][ $type ] = isset( $charts['types'][ $type ] ) ? $charts['types'][ $type ] + 1 : 1;
108+
$source = get_post_meta( $chart_id, Visualizer_Plugin::CF_SOURCE, true );
109+
$charts['sources'][ $source ] = isset( $charts['sources'][ $source ] ) ? $charts['sources'][ $source ] + 1 : 1;
110+
$lib = get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_LIBRARY, true );
111+
$charts['library'][ $lib ] = isset( $charts['library'][ $lib ] ) ? $charts['library'][ $lib ] + 1 : 1;
112+
$settings = get_post_meta( $chart_id, Visualizer_Plugin::CF_SETTINGS, true );
113+
if ( array_key_exists( 'manual', $settings ) && ! empty( $settings['manual'] ) ) {
114+
$charts['manual_config'] = $charts['manual_config'] + 1;
115+
}
116+
117+
// phpcs:ignore WordPress.PHP.StrictInArray.FoundNonStrictFalse
118+
if ( in_array( $chart_id, $scheduled, false ) ) {
119+
$charts['scheduled'] = $charts['scheduled'] + 1;
120+
}
121+
122+
if ( Visualizer_Module::is_pro() ) {
123+
$permissions = get_post_meta( $chart_id, Visualizer_PRO::CF_PERMISSIONS, true );
124+
if ( empty( $permissions ) ) {
125+
continue;
126+
}
127+
$permissions = $permissions['permissions'];
128+
$customized = false;
129+
foreach ( $default_perms as $key => $val ) {
130+
if ( ! is_array( $val ) && ! is_null( $val ) && isset( $permissions[ $key ] ) && $permissions[ $key ] !== $val ) {
131+
$customized = true;
132+
} elseif ( is_array( $val ) && ! is_null( $val ) && isset( $permissions[ $key ] ) && count( $permissions[ $key ] ) !== count( $val ) ) {
133+
$customized = true;
134+
}
135+
}
136+
if ( $customized ) {
137+
$charts['permissions'] = $charts['permissions'] + 1;
138+
}
139+
}
140+
93141
if ( ! empty( $meta_keys ) ) {
94142
foreach ( $meta_keys as $name => $key ) {
95143
$data = get_post_meta( $chart_id, $key, true );
@@ -101,6 +149,7 @@ public function getChartCountsByTypeAndMeta( $meta_keys = array() ) {
101149
}
102150
}
103151
}
152+
104153
return $charts;
105154
}
106155

0 commit comments

Comments
 (0)