PluginProbe
Topic SEO Content Optimization Tool / 1.0.33
Topic SEO Content Optimization Tool v1.0.33
1.0.43 1.0.42 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.2 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.3 1.0.31 1.0.32 All 40 releases
topic / index.php

index.php in Topic SEO Content Optimization Tool 1.0.33, at index.php

144 lines 5.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: Topic
4 * Plugin URI: https://www.usetopic.com/
5 * Description: Topic helps editors and agencies create content briefs in half the time.
6 * Author: Topic
7 * License: GPL v2 or later
8 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
9 * Version: 1.0.33
10 */
11 if( ! defined( 'ABSPATH') ) {
12 exit;
13 }
14
15
16 class useTopicSeo {
17
18
19 public function __construct() {
20 global $pagenow;
21 if($pagenow == 'post.php' || $pagenow == 'post-new.php'){
22 add_action( 'post_submitbox_misc_actions', array($this, 'add_usetopic_button_classic_editor') );
23 add_action( 'admin_enqueue_scripts', array($this, 'topic_enqueue_assets_classic') );
24 add_action('admin_footer', array($this, 'useTopicSeo_sidebar_box'));
25 add_action( 'enqueue_block_editor_assets', array($this,'topic_enqueue_assets') );
26 }
27 add_action('wp_ajax_get_permalink_for_post_id', array($this, 'get_permalink_for_post_id'));
28 add_action('wp_ajax_search_posts', array($this, 'search_posts'));
29 }
30
31
32 public function add_usetopic_button_classic_editor(){
33 $html = '<div id="major-publishing-actions-use-topic" style="overflow:hidden"><p>'.__( 'Topic SEO Content Optimization Tool', 'usetopic-plugin' ).'</p>';
34 $html .= '<div id="publishing-action-use-topic">';
35 $html .= '<button type="button" aria-pressed="true" aria-expanded="true" id="usetopicMain" class="components-button is-pressed has-icon" aria-label="Topic SEO Content Optimization Tool">Grade Content</button>';
36 $html .= '</div>';
37 $html .= '</div>';
38 echo $html;
39 }
40
41 /**
42 * Function to find the file path for index.[hash].js or index-classic.[hash].js
43 * @param string $filePattern - The file pattern to search for (e.g., 'index' or 'index-classic')
44 * @param string $directory - The directory where the build files are located
45 * @return string|null - Returns the full file path or null if not found
46 */
47 public function getHashedFilePath($filePattern, $directory = 'build') {
48 // Get the full path to the plugin directory
49 $plugin_dir = plugin_dir_path(__FILE__);
50 $full_directory_path = $plugin_dir . $directory;
51
52 if (!is_dir($full_directory_path)) {
53 return null;
54 }
55
56 // Define the regex pattern to match files like index.[hash].js or index-classic.[hash].js
57 $pattern = sprintf('/^%s\.[a-f0-9]{8}\.js$/', preg_quote($filePattern, '/'));
58
59 // Scan the directory for files
60 $files = scandir($full_directory_path);
61
62 // Iterate through the files to find a match
63 foreach ($files as $file) {
64 if (preg_match($pattern, $file)) {
65 // Return the relative path of the matched file
66 return $directory . '/' . $file;
67 }
68 }
69
70 // If no match was found, return null
71 return null;
72 }
73
74 public function topic_enqueue_assets() {
75 $index_file_path = $this->getHashedFilePath('index');
76 if ($index_file_path === null) {
77 $index_file_path = 'build/index.js';
78 }
79 wp_enqueue_script(
80 'topic-gutenberg-sidebar',
81 plugins_url( $index_file_path, __FILE__ ),
82 array( 'wp-plugins', 'wp-edit-post', 'wp-i18n', 'wp-element' ),
83 null
84 );
85 wp_enqueue_style('topic-sidebar-global', plugins_url( 'build/index.css', __FILE__ ), array(), 'all');
86 }
87
88 public function topic_enqueue_assets_classic() {
89 $index_file_path = $this->getHashedFilePath('index-classic');
90 if ($index_file_path === null) {
91 $index_file_path = 'build/index-classic.js';
92 }
93 wp_enqueue_script(
94 'topic-gutenberg-sidebar-classic',
95 plugins_url( $index_file_path , __FILE__ ), array('wp-plugins'), null
96 );
97 wp_enqueue_style('topic-classic-sidebar', plugins_url( 'classic-editor/classic.css', __FILE__ ), array(), 'all');
98 wp_enqueue_style('topic-sidebar-global', plugins_url( 'build/index.css', __FILE__ ), array(), 'all');
99 }
100
101 public function useTopicSeo_sidebar_box($data) {
102 echo '<div id="usetopicData"><div class="closeTopicdata"><strong>'.__( 'Topic SEO Content Optimization Tool', 'usetopic-plugin' ).'</strong><button type="button" class="close" aria-label="Close plugin"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false"><path d="M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"></path></svg><p class="usetopic-tooltip">Close Plugin</p></button></div><div class="content"></div></div>';
103 }
104
105 public function get_permalink_for_post_id(){
106 if(isset($_POST['post_id'])){
107 $post_id = $_POST['post_id'];
108 $permalink = get_permalink(intval($post_id));
109
110 wp_send_json([
111 'permalink' => $permalink
112 ]);
113 }
114 wp_die();
115 }
116
117 public function search_posts(){
118 if(isset($_POST['s'])){
119 $s = $_POST['s'];
120
121 global $wpdb;
122 $myposts = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' AND post_title LIKE '%s'", '%'. $wpdb->esc_like( $s ) .'%') );
123 $post_array = array();
124 foreach ( $myposts as $mypost )
125 {
126 // $post = get_post($mypost);
127 $permalink = get_permalink(intval($mypost->ID));
128 $mypost->permalink = $permalink;
129 $mypost->post_content = "";
130 array_push($post_array, $mypost);
131 }
132
133 wp_send_json([
134 'posts' => $post_array
135 ]);
136 }
137 wp_die();
138 }
139
140
141 }
142
143 $wpUseTopic= new useTopicSeo();
144