@@ -51,8 +51,10 @@ public function __construct( Visualizer_Plugin $plugin ) {
51
51
$ this ->_addAction ( 'init ' , 'setupCustomPostTypes ' );
52
52
$ this ->_addAction ( 'plugins_loaded ' , 'loadTextDomain ' );
53
53
$ this ->_addFilter ( 'visualizer_logger_data ' , 'getLoggerData ' );
54
- $ this ->_addFilter ( 'visualizer_get_chart_counts ' , 'getChartCountsByTypeAndMeta ' );
54
+ $ this ->_addFilter ( 'visualizer_get_chart_counts ' , 'getUsage ' , 10 , 2 );
55
55
56
+ // only for testing
57
+ // $this->_addAction( 'admin_init', 'getUsage' );
56
58
}
57
59
/**
58
60
* Fetches the SDK logger data.
@@ -62,34 +64,80 @@ public function __construct( Visualizer_Plugin $plugin ) {
62
64
* @access public
63
65
*/
64
66
public function getLoggerData ( $ data ) {
65
- return $ this ->getChartCountsByTypeAndMeta ( );
67
+ return $ this ->getUsage ( $ data );
66
68
}
67
69
68
70
/**
69
- * Fetches the types of charts created and their counts .
71
+ * Fetches the usage of charts.
70
72
*
73
+ * @param array $data The default data that needs to be sent.
71
74
* @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
73
77
*/
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 );
78
80
$ query_args = array (
79
81
'post_type ' => Visualizer_Plugin::CPT_VISUALIZER ,
80
82
'posts_per_page ' => 300 ,
83
+ 'post_status ' => 'publish ' ,
81
84
'fields ' => 'ids ' ,
82
85
'no_rows_found ' => false ,
83
86
'update_post_meta_cache ' => false ,
84
87
'update_post_term_cache ' => false ,
88
+ );
85
89
90
+ // default permissions.
91
+ $ default_perms = array (
92
+ 'read ' => 'all ' ,
93
+ 'read-specific ' => null ,
94
+ 'edit ' => 'roles ' ,
95
+ 'edit-specific ' => array ( 'administrator ' ),
86
96
);
87
97
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
+ );
88
103
$ query = new WP_Query ( $ query_args );
89
104
while ( $ query ->have_posts () ) {
90
105
$ chart_id = $ query ->next_post ();
91
106
$ 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
+
93
141
if ( ! empty ( $ meta_keys ) ) {
94
142
foreach ( $ meta_keys as $ name => $ key ) {
95
143
$ data = get_post_meta ( $ chart_id , $ key , true );
@@ -101,6 +149,7 @@ public function getChartCountsByTypeAndMeta( $meta_keys = array() ) {
101
149
}
102
150
}
103
151
}
152
+
104
153
return $ charts ;
105
154
}
106
155
0 commit comments