longname, $this->shortname, $this->accesslvl, $this->hook, array(&$this,'config_page')); } function plugin_options_url() { return admin_url( 'tools.php?page='.$this->hook ); } function admin_heading($title) { echo '

'; $active1 = ''; $active2 = ''; $active3 = ''; if (empty($_REQUEST['tab']) OR ($_REQUEST['tab'] == 'available') ) $active3 = 'nav-tab-active'; elseif ($_REQUEST['tab'] == 'all') $active2 = 'nav-tab-active'; else $active1 = 'nav-tab-active'; echo ''.__('View available shortcodes').'   '; echo ''.$title.' ' .__(' maybe missing').'   ' .'' .__('Posts & pages using shortcodes').'' .'


'; } function config_page() { $this->admin_heading($this->longname); if (empty($_REQUEST['tab']) OR ($_REQUEST['tab'] == 'available')) $this->shortcodes_available(); else //if (($_REQUEST['tab'] == 'all') OR ($_REQUEST['tab'] == 'available') ) $this->where_shortcode(); } function shortcodes_available() { global $shortcode_tags; echo '

Shortcodes added ONLY in the front end will not be listed in admin as "available" the wordpress function doesn\'t know about them.. Check Maybe Missing

'; $builtin = array('caption','gallery','audio','video','playlist','embed', 'wp_caption'); ksort($shortcode_tags); echo '
'.PHP_EOL.''; foreach ($shortcode_tags as $code => $func) { echo ''; } echo '
' .__('Shortcode').'' .__('Built in by WordPress but could be overwritten').'' .__('Function called').'
'.$code.''; if (in_array( $code,$builtin)) _e('built-in'); else echo ' '; echo ''.$func.'
'; } function where_shortcode() { global $wpdb; global $shortcode_tags; //$pattern = get_shortcode_regex(array('do_widget')); if (!empty($_REQUEST['tab']) and ($_REQUEST['tab'] == 'all') ) $doall = true; else $doall = false; $types = get_post_types(array( 'public'=> true), 'names' ); $text = "('".implode("','",$types)."')"; $results = array(); $query = "SELECT * FROM $wpdb->posts WHERE post_type IN ".$text." AND post_status IN ( 'publish', 'future') and post_content LIKE '%[%]%' AND post_date <> '' AND post_date is not null ORDER BY post_type ASC, post_date DESC;" ; $results = $wpdb->get_results($query); echo ''; foreach($results as $i => $result) { preg_match_all("^\[(.*)\]^",$result->post_content,$matches, PREG_PATTERN_ORDER); $shorts = array(); foreach ($matches[0] as $j=> $m) { if (substr($m,0,2) == '[[') continue; // its really not a shortcode if (substr($m,0,2) == "['") continue; // its really not a shortcode $sp = strpos($m,' '); if (!$sp) { // there was no space $close = strpos($m,']')-1; if (!$close) { // its not a shortcode, there was no close $code =''; } else { $code = substr($m,1,$close); // there was no space } } else { $code = (substr($m,1,$sp)); } $code = str_replace (' ','',$code); if (substr($code,0,1) === '/') {// might be closing shortcode, check if we had opening $code = substr($code,1,-1); //if (strpos($result->post_content,$code ) < strpos($result->post_content,'/'.$code )) {//its ok } if (!empty($code) and (!stristr($code, 'CDATA'))) { if ($doall or !shortcode_exists( $code )) { $shorts[$code][] = $m; } } } if (empty($shorts)) {continue;} echo ''; } echo '
'; _e('Post'); echo ''; _e('Type'); echo ''; _e('Published'); echo ''; _e('Shortcodes'); if (empty($_REQUEST['tab'])) _e(' (Plugin or theme not active?) '); echo '
'; edit_post_link($result->post_title.' ',' ',' ',$result->ID); echo ''.$result->post_type; echo ''; edit_post_link(substr($result->post_date,0,11),' ',' ',$result->ID); if (!($result->post_status == 'publish')) _e($result->post_status); echo ''; //preg_match_all("^\[(.*)\]^",$result->post_content,$matches, PREG_PATTERN_ORDER); foreach ($shorts as $short=> $instances) { if ( !shortcode_exists($short ) ) { $flag = '' .__('X?').''; } else { $flag = ''.'✔'.''; } foreach ($instances as $i => $m) { echo $flag.' '.substr($m, 0, strpos($m,']',0)+1) ;//*** echo '
'; } }; echo '
'; } } } function amr_shortcodes_add_action_links ( $links ) { $mylinks[] = '' . 'Manage Shortcodes'; return array_merge( $links, $mylinks ); } function amr_shortcodes_load_text() { // wp (see l10n.php) will check wp-content/languages/plugins if nothing found in plugin dir $result = load_plugin_textdomain( 'amr-shortcodes', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); } add_action('plugins_loaded' , 'amr_shortcodes_load_text' ); add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'amr_shortcodes_add_action_links' ); if (is_admin() ) $amr_shortcodes_plugin_admin = new amr_shortcodes_plugin_admin(); ?>