plugin_name = $plugin_name; $this->version = $version; $this->core = $core; } public function render_tab() { global $wpdb; // Collect Real Data // Total Posts $total_posts = wp_count_posts('post'); $count_posts = isset($total_posts->publish) ? $total_posts->publish : 0; // Total Pages $total_pages = wp_count_posts('page'); $count_pages = isset($total_pages->publish) ? $total_pages->publish : 0; // Total internal links and orphans via Repository. $total_internal_links = AILM_Link_Repository::count_all('internal'); $orphan_ids = AILM_Link_Repository::get_orphan_ids(); $orphan_count = count($orphan_ids); // Clicks $total_all_clicks = 0; $total_internal_clicks = 0; $total_external_clicks = 0; $total_sponsored_clicks = 0; if (class_exists('AILM_Clicks_DB')) { $table_name = esc_sql(AILM_Clicks_DB::get_table_name()); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching if ($wpdb->get_var($wpdb->prepare('SHOW TABLES LIKE %s', $table_name)) === $table_name) { // Request // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, PluginCheck.Security.DirectDB.UnescapedDBParameter $clicks_data = $wpdb->get_results("SELECT link_type, SUM(click_count) as total FROM {$table_name} GROUP BY link_type"); if ($clicks_data) { foreach ($clicks_data as $row) { if ($row->link_type === 'internal') { $total_internal_clicks = (int) $row->total; } elseif ($row->link_type === 'external') { $total_external_clicks = (int) $row->total; } elseif ($row->link_type === 'sponsored') { $total_sponsored_clicks = (int) $row->total; } } } // Total $total_all_clicks = $total_internal_clicks + $total_external_clicks + $total_sponsored_clicks; } } // Broken Links & Outbound (404 Scout) $broken_links = 0; $total_outbound_links = 0; if (class_exists('AILM_Scout_DB')) { $table_name = AILM_Scout_DB::get_table_name(); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching if ($wpdb->get_var($wpdb->prepare('SHOW TABLES LIKE %s', $table_name)) === $table_name) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter $broken_links = (int) $wpdb->get_var("SELECT COUNT(id) FROM {$table_name} WHERE status_code >= 400"); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter $total_outbound_links = (int) $wpdb->get_var("SELECT COUNT(id) FROM {$table_name} WHERE link_type = 'external'"); } } // Sponsored Links $total_sponsored_links = 0; if (class_exists('AILM_Scout_DB')) { $table_name = AILM_Scout_DB::get_table_name(); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching if ($wpdb->get_var($wpdb->prepare('SHOW TABLES LIKE %s', $table_name)) === $table_name) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter $total_sponsored_links = (int) $wpdb->get_var("SELECT COUNT(id) FROM {$table_name} WHERE link_type = 'sponsored'"); } } ?>

0 ? $c1_total : 1; $c1_p1 = round(($count_posts / $c1_total) * 100, 1); $c1_p2 = round(($count_pages / $c1_total) * 100, 1); $c1_p3 = round(($orphan_count / $c1_total) * 100, 1); $c1_l1 = round(($count_posts / $c1_total) * $circ); $c1_l2 = round(($count_pages / $c1_total) * $circ); $c1_l3 = round(($orphan_count / $c1_total) * $circ); $c1_o1 = 0; $c1_o2 = -$c1_l1; $c1_o3 = -($c1_l1 + $c1_l2); $c1_max = max($c1_p1, $c1_p2, $c1_p3); $c1_max = $c1_max > 0 ? $c1_max : 1; $c1_h1 = max(round(($c1_p1 / $c1_max) * 100, 1), 5); $c1_h2 = max(round(($c1_p2 / $c1_max) * 100, 1), 5); $c1_h3 = max(round(($c1_p3 / $c1_max) * 100, 1), 5); // Chart 2 Calculations $c2_total = $total_internal_links + $total_outbound_links + $total_sponsored_links; $c2_total = $c2_total > 0 ? $c2_total : 1; $c2_p1 = round(($total_internal_links / $c2_total) * 100, 1); $c2_p2 = round(($total_outbound_links / $c2_total) * 100, 1); $c2_p3 = round(($total_sponsored_links / $c2_total) * 100, 1); $c2_l1 = round(($total_internal_links / $c2_total) * $circ); $c2_l2 = round(($total_outbound_links / $c2_total) * $circ); $c2_l3 = round(($total_sponsored_links / $c2_total) * $circ); $c2_o1 = 0; $c2_o2 = -$c2_l1; $c2_o3 = -($c2_l1 + $c2_l2); // Chart 3 Calculations $c3_total = $total_all_clicks > 0 ? $total_all_clicks : 1; $c3_p1 = round(($total_internal_clicks / $c3_total) * 100, 1); $c3_p2 = round(($total_external_clicks / $c3_total) * 100, 1); $c3_p3 = round(($total_sponsored_clicks / $c3_total) * 100, 1); $c3_l1 = round(($total_internal_clicks / $c3_total) * $circ); $c3_l2 = round(($total_external_clicks / $c3_total) * $circ); $c3_l3 = round(($total_sponsored_clicks / $c3_total) * $circ); $c3_o1 = 0; $c3_o2 = -$c3_l1; $c3_o3 = -($c3_l1 + $c3_l2); ?>

%
%
%

%
%
%

%
%
%