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.'
| '
.__('Shortcode').' | '
.__('Built in by WordPress but could be overwritten').' | '
.__('Function called').' |
';
foreach ($shortcode_tags as $code => $func) {
echo '| '.$code.' | ';
if (in_array( $code,$builtin)) _e('built-in');
else echo ' ';
echo ' | '.$func.' |
';
}
echo '
';
}
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 '
| ';
_e('Post');
echo ' | ';
_e('Type');
echo ' | ';
_e('Published');
echo ' | ';
_e('Shortcodes');
if (empty($_REQUEST['tab'])) _e(' (Plugin or theme not active?) ');
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 '| ';
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 ' | |
';
}
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();
?>