diff -r 53cff4b4a802 -r bde1974c263b web/wp-content/plugins/page2cat/page2cat.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/wp-content/plugins/page2cat/page2cat.php Wed Feb 03 15:37:20 2010 +0000 @@ -0,0 +1,850 @@ +
+ +Category Page plugin + | +Support Forum | +GPL2© ≥ 2007 Paolo Tresso / Pixline | +If you like this plugin, support its development with a small donation.

'); + +$wpdb->page2cat = $table_prefix . 'page2cat'; + +###################################################### +# check version. # +###################################################### + +$p2c_version = get_option('pixline_page2cat_version'); + register_activation_hook(__FILE__, 'page2cat_install'); + +// DB installation. usually happen just one time. +function page2cat_install(){ +global $wpdb, $p2c_version; + +if ($version < 6): + $query = " + CREATE TABLE `".$wpdb->prefix."page2cat` ( + `rel_ID` BIGINT NOT NULL AUTO_INCREMENT , + `page_ID` BIGINT NOT NULL , + `cat_ID` BIGINT NOT NULL , + PRIMARY KEY ( `rel_ID` ) , + INDEX ( `page_ID` , `cat_ID` ) + ); + "; + + if(is_file(ABSPATH . 'wp-admin/includes/upgrade.php')){ + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + }elseif(is_file(ABSPATH . 'wp-admin/upgrade-functions.php')){ + require_once(ABSPATH . 'wp-admin/upgrade-functions.php'); + } + + if($wpdb->get_var("SHOW TABLES LIKE '".$wpdb->prefix."page2cat'") != $wpdb->prefix."page2cat") { + dbDelta($query); + delete_option('pixline_page2cat_version'); + add_option('pixline_page2cat_version', 6); + } + +update_option('p2c_use_empty','false'); +update_option('p2c_show_used_pages','false'); +update_option('p2c_catlist_limit',5); +update_option('p2c_catlist_title',''); +endif; + +delete_option('p2c_use_img'); // deprecated, so we're going to delete it anyway. +if( !get_option('p2c_use_empty')) update_option('p2c_use_empty','false'); +if(!get_option('p2c_show_used_pages')) update_option('p2c_show_used_pages','false'); +if(!get_option('p2c_catlist_limit')) update_option('p2c_catlist_limit',5); +if(!get_option('p2c_catlist_title')) update_option('p2c_catlist_title',''); +} + +###################################### +# setup management and option panels # +###################################### + +// adds a panel under "manage ยป category pages" +// shows actual connections, and allow creations of new ones. +function page2cat_manage_page(){ +global $wpdb, $wp_db_version; + + #print_r($_POST); #die(); + + // multiple delete + if( isset($_POST['deleteit']) && !empty($_POST['p2c_reldel'])): + foreach($_POST['p2c_reldel'] as $key=>$id): + $query = "DELETE FROM {$wpdb->page2cat} WHERE rel_ID = '".$id."' LIMIT 1;"; + $daje = $wpdb->get_results($query); + endforeach; + echo '
+

Some connections deleted.

'; + endif; + + // multiple link + if( isset($_POST['action']) && $_POST['p2c_linkto'] == true && $_POST['multipageid'] != ""): +# print_r($_POST); + $pageid = $_POST['multipageid'][0]; + foreach($_POST['p2c_reladd'] as $key=>$id): + if(trim($id)!=""): + $query = "INSERT INTO {$wpdb->page2cat} (rel_ID, page_ID, cat_ID) VALUES ('', '".$pageid."', '".$id."');"; + $daje = $wpdb->get_results($query); + endif; + endforeach; + echo '
+

Connections created.

'; + + elseif( isset($_POST['action']) && $_POST['p2c_update'] == true): +# print_r($_POST); die(); + $pageid = $_POST['pageid']; + foreach($pageid as $cat_id=>$page_id): + if(trim($page_id) != ""): + $sql = "INSERT INTO {$wpdb->page2cat} (rel_ID, page_ID, cat_ID) VALUES ('', '".$page_id."', '".$cat_id."');"; + $result = $wpdb->get_results($sql); + endif; + endforeach; + echo('
+

New Category Page created succesfully.

'); + endif; + + // single delete, confirm request + if( isset($_REQUEST['p2cdel']) && !isset($_REQUEST['p2c_confirm']) ): + $relid = $wpdb->escape($_REQUEST['p2cdel']); + echo "

Delete this Category › Page relation?

"; + $opt = $wpdb->get_results("SELECT * FROM {$wpdb->page2cat} WHERE rel_ID = '".$relid."' LIMIT 1;"); + $catid = $opt[0]->cat_ID; + $pageid = $opt[0]->page_ID; + $catname = get_cat_name($catid); + $page = get_page($pageid); + $title = $page->post_title; + echo "
"; + echo "

You are going to delete the relationship between + Category ".$catname." and Page ".$title.". Confirm?

"; + echo '

+ + + + +

'; + echo "
"; + endif; + + // confirmed, so delete this connection + if( isset($_REQUEST['p2cdel']) && $_REQUEST['p2c_confirm'] == 'true'): + $relid = $wpdb->escape($_REQUEST['p2cdel']); + $myopts = $wpdb->get_results("DELETE FROM {$wpdb->page2cat} WHERE rel_ID = '".$relid."' LIMIT 1;"); + echo('

You have succesfully deleted a connection.

'); + echo "
Back to Category Pages manage page
"; + endif; + + + /* + real pages + */ + $count_used = $wpdb->get_var("SELECT count(*) FROM {$wpdb->page2cat};"); + + if($wp_db_version >= 6124): // this is WordPress >= 2.3 + $count_full = $wpdb->get_var("SELECT count(*) + FROM {$wpdb->terms} AS t LEFT JOIN {$wpdb->term_taxonomy} AS tt + ON t.term_id = tt.term_id WHERE tt.taxonomy='category';"); + + $count_noempty = $wpdb->get_var("SELECT count(*) + FROM {$wpdb->terms} AS t LEFT JOIN {$wpdb->term_taxonomy} AS tt + ON t.term_id = tt.term_id WHERE tt.taxonomy='category' AND tt.count != '0';"); + else: // WP < 2.3 + $count_full = $wpdb->get_var("SELECT count(*) FROM {$wpdb->categories};"); + $count_noempty = $wpdb->get_var("SELECT count(*) FROM {$wpdb->categories}; WHERE category_count != '0';"); + endif; + + $count_free = $count_full - $count_used; + if(get_option('p2c_use_empty') == "false"): $count_usable = $count_noempty - $count_used; else : $count_usable = $count_free; endif; + + + // this is the already connected page + + + $myopts = $wpdb->get_results("SELECT * FROM {$wpdb->page2cat} ORDER BY page_ID ASC;"); + $usedcats = array(); + $usedpages = array(); + + if($_REQUEST['view'] == 'new'): + $css1 = ''; $css2 = ' class="current"'; + $pagetitle = "New connection"; + else: + $css1 = ' class="current"'; $css2 = ''; + $pagetitle = "Manage connections"; + endif; + + + if( !isset($_REQUEST['p2cdel'])): + echo "

Category Pages

"; + echo ''; + +if($_REQUEST['view'] != 'new'): + + if(count($myopts) != 0): +# echo "

These categories and these pages are already connected each other. You can view the category page in your website, clicking on the Category name. You can also edit or delete each connection.

"; + + echo "
"; + echo "
 
"; + echo '
+
+ + + + +
'; + echo "
"; + echo "
"; + + echo "
"; + echo ' + '; + echo ""; + echo ""; + echo " + + + + + "; + echo ""; + foreach($myopts as $opt): + $catid = $opt->cat_ID; + $pageid = $opt->page_ID; + $catname = get_cat_name($catid); + $usedcats[] = $catid; + $usedpages[] = $pageid; + $page = get_page($pageid); + $title = $page->post_title; + + echo " + + + + + "; + endforeach; + + echo ""; + echo "
"; + if($wp_db_version >= 7098): echo "" ; + else: echo " "; endif; + echo "Host CategoryHeader Page 
".$catname." + ".$title." + Delete
"; + + echo "
"; + echo "
 
"; + echo '
+ + + + + + +
'; + echo "
"; + echo "
"; + + else: + + echo "

Sorry, no Category » Page connection available (yet). Maybe you want to create some new connections?

"; + endif; + + +else: +// this is the 'new' page + + $usedcats = $wpdb->get_col("SELECT cat_ID FROM {$wpdb->page2cat};"); +# print_r($usedcats); + $opt3 = get_option('p2c_use_empty'); + if($opt3 == "true"): $empty = false; $excats = ""; elseif($opt3 == "false"): $empty = true; $excats = implode(',',$usedcats); endif; + + $catdef = array('type' => 'post', 'child_of' => 0, 'orderby' => 'name', 'order' => 'ASC', + 'hide_empty' => $empty, 'include_last_update_time' => false, 'hierarchical' => true, + 'exclude' => $excats, 'include' => '', 'number' => '', 'pad_counts' => true); + $others = get_categories($catdef); + + $used = count($usedcats); + $count = count($others); + + if( $count == 0): + echo "

Sorry, you don't have any usable category (or there are some, but empty; check your settings).

"; + else: +# echo "

New connections

"; +# echo "

These categories aren't connected with any page. Here you can setup a connection with an existent page, or create a brand new one.

"; + + echo "
"; + $pages_already_used = implode(',',$usedpages); + if(get_option('p2c_show_used_pages')=='true') $exclude = $pages_already_used; else $exclude =""; + + // wp_dropdown_pages settings (for both boxes in this page) + $pre_ddprefs = array('depth' => 0, 'child_of' => 0, 'selected' => 0, + 'echo' => 0,'name' => 'multipageid[]', 'exclude' => $exclude, + 'show_option_none' => '(none)'); + + +/* + echo "
"; + echo "
+ +
+
"; + echo '
+ + + + Link checked to: + '.wp_dropdown_pages($pre_ddprefs).' + +
'; + echo "
 
"; + echo "
"; +*/ + echo ""; + echo ""; + echo " + "; + echo " + + + "; + echo ""; + + + foreach($others as $otro): + switch($wp_db_version): + // "7098"=>"2.5", "6124"=>"2.3.3", "5183"=>"2.2.1", "4773"=>"2.1.3" + case ( $wp_db_version < 5183 ): // WP 2.1.3 and smaller + $versioned_catid = $otro->cat_ID; + $versioned_catname = $otro->cat_name; + $versioned_slug = $otro->category_nicename; + $versioned_count = $otro->category_count + $otro->posts_private; + break; + case ( $wp_db_version >= 5183 ): // WP 2.2.1 and greater + default: + $versioned_catid = $otro->term_id; + $versioned_catname = $otro->name; + $versioned_slug = $otro->category_nicename; + $versioned_count = $otro->count; + break; + endswitch; + + // wp_dropdown_pages settings + $ddprefs = array('depth' => 0, 'child_of' => 0, 'selected' => 0, + 'echo' => 0,'name' => 'pageid['.$versioned_catid.']', + 'exclude' => $exclude, 'show_option_none' => '(none)'); + + $output = " + + + "; + $output .= " + "; + + $stringhe[$versioned_catname] = $output; + endforeach; + + asort($stringhe); + reset($stringhe); + + foreach($stringhe as $stringa): + echo $stringa; + endforeach; + + echo ""; + echo "
"; + if($wp_db_version >= 7098): echo ""; + else: echo " "; endif; + echo "Host CategoryChoose PageCreate New Page
".$versioned_catname." ".wp_dropdown_pages($ddprefs)."Create New
"; + + echo "
"; + echo "
+ +
"; + echo '
+ + + + Link checked to: + '.wp_dropdown_pages($pre_ddprefs).' + +
'; + echo "
"; + echo "
"; +endif; + + echo "
"; + endif; + echo PIXLINE_FOOTER; + echo "
"; + endif; +} + +// adds styles in admin head (WP 2.5+) +function page2cat_metabox_styles(){ +?> + + + + +
+

Category Pages

+
+ +
+
+get_results("SELECT * FROM {$wpdb->page2cat} WHERE page_ID = '".$post_ID."';",OBJECT); + ?> +

Use this page as Category Page for these categories.

+ 0): + echo "
    "; + foreach($mypage as $connection): + # print_r($connection); + echo "
  • ".get_cat_name($connection->cat_ID)."
  • + "; + $usedcats[] = $connection->cat_ID; + endforeach; + echo "
"; + endif; + + $opt3 = get_option('p2c_use_empty'); + if($opt3 == "true"): $empty = false; $exclude = ""; + elseif($opt3 == "false"): $empty = true; $exclude = implode(',',$usedcats); + endif; + + $catdef = array('type' => 'post', 'child_of' => 0, 'orderby' => 'name', 'order' => 'ASC', 'exclude' => $exclude, + 'hide_empty' => $empty, 'include_last_update_time' => false, 'hierarchical' => true, 'pad_counts' => true); + + $others = get_categories($catdef); + echo "
"; + echo "
    "; + foreach($others as $cat): + #print_r($cat); exit(); + if($cat->cat_ID == $_REQUEST['p2c']): $flag = "checked='checked'"; else: $flag = ""; endif; + + $has_page = $wpdb->get_var("SELECT count(*) FROM {$wpdb->page2cat} WHERE cat_ID = '".$cat->cat_ID."'"); + if($has_page == 0): + echo "
  • " + ."".get_cat_name($cat->cat_ID)."
  • + "; + else: +# echo "
  • " +# .get_cat_name($cat->cat_ID)." (".$cat->category_count." items)
  • +# "; + $nothing = 0; + endif; + endforeach; + echo "
"; + echo "
"; + echo "
"; + ?> + page2cat} WHERE page_ID = '".$_POST['post_ID']."'"; +$result = $wpdb->get_results($via); +if(count($values) > 0): +foreach($values as $key=>$cat){ + if($_POST['post_ID'] != ""): + $sql = "INSERT INTO {$wpdb->page2cat} (rel_ID, page_ID, cat_ID) VALUES ('','".$_POST['post_ID']."','".$cat."')"; + $result = $wpdb->get_results($sql); + endif; +} +endif; +} + +// trigger page deletion and free db relations +function page2cat_trigger_delete(){ + // yes, there's no trigger, actually.... +} + +// filter the content of a page, check for tag and replace it with a list of posts in the requested category. +// function heavily inspired from Alex Rabe NextGen Gallery's nggfunctions.php. +function page2cat_content_catlist($content){ +global $post; + if ( stristr( $content, '[catlist' )) { + $search = "@(?:

)*\s*\[catlist\s*=\s*(\w+|^\+)\]\s*(?:

)*@i"; + if (preg_match_all($search, $content, $matches)) { + if (is_array($matches)) { + $title = get_option('p2c_catlist_title'); + if($title != "") $output = "

".$title."

"; else $output = ""; + $output .= "
    "; + $limit = get_option('p2c_catlist_limit'); + foreach ($matches[1] as $key =>$v0) { + $catposts = get_posts('category='.$v0."&numberposts=".$limit); + foreach($catposts as $single): + $output .= "
  • ".$single->post_title."
  • "; + endforeach; + $search = $matches[0][$key]; + $replace= $output; + $content= str_replace ($search, $replace, $content); + } + $output .= "
"; + } + } + } +return $content; +} + +// add real option page +function page2cat_options_page(){ +global $wpdb, $styles; + +$p2c_defaults = array("show_usedpages_yes"=>"","show_usedpages_no"=>"","use_empty_no"=>"", "use_empty_yes"=>"", "catlist_limit"=>"", "catlist_title"=>""); + +if(isset($_POST['page2cat_action'])): +#print_r($_POST); #die(); + $sane1 = strip_tags(htmlentities($_POST['p2c_catlist_limit'])); + update_option('p2c_catlist_limit',$sane1); + $sane4 = strip_tags(htmlentities($_POST['p2c_catlist_title'])); + update_option('p2c_catlist_title',$sane4); + $sane2 = strip_tags(htmlentities($_POST['p2c_show_used_pages'])); + update_option('p2c_show_used_pages',$sane2); + $sane3 = strip_tags(htmlentities($_POST['p2c_use_empty'])); + update_option('p2c_use_empty',$sane3); + echo('

Settings saved.

'); +endif; + +$opt3 = get_option('p2c_use_empty'); +if($opt3 == "false"){ + $p2c_defaults['use_empty_no'] = ' selected="selected"'; +}elseif($opt3 == "true"){ + $p2c_defaults['use_empty_yes'] = ' selected="selected"'; +} + +$opt2 = get_option('p2c_show_used_pages'); +if($opt2 == "false"){ + $p2c_defaults['show_usedpages_no'] = ' selected="selected"'; +}elseif($opt2 == "true"){ + $p2c_defaults['show_usedpages_yes'] = ' selected="selected"'; +} + +$p2c_catlist_title = get_option('p2c_catlist_title'); + + + echo "
"; + echo "

Category Page settings

"; + echo "
"; + + echo ' +

Management settings

+

These settings let you customize your Category Page management panel.

+ + + + + + + + + + + +
Show empty categories + (Choose whether empty categories are shown or not. ) +
Allow single page sharing + (You can share a single page with more than a category, if you like.) +
+ +

[catlist] tag settings

+

You can use a [catlist=xx] tag in a post/page to show a list of post from a certain category, replacing xx with the category ID.

+ + + + + + + + + + + +
Display at most + posts. +
Display list title + (Leave empty to show a post list without a title.) +
+ '; + + echo '

+ + +

+ '; + + echo '
'; + echo PIXLINE_FOOTER; + echo "
"; +} + +// template function for manual hacks and widgets :-) +function page2cat_output($cat, $style = 'getpost', $useimg = 1){ +global $wpdb; + + $useimg = get_option('p2c_use_img'); + $mypage = $wpdb->get_row("SELECT * FROM {$wpdb->page2cat} WHERE cat_ID = '".$cat."';",OBJECT); +# print_r($mypage); + $pageid = $mypage->page_ID; + if($pageid != ""): + + switch($style): + + case 'getpost': + ?> +
+ post_title!=""){ + ?> +
+

post_title; ?>

+

+
+
+
+ +
+ posts} WHERE ID='".$pageid."' AND post_type = 'page';"; + $mine = $wpdb->get_results($pagina); + if($mine[0]->post_title!=""){ + ?> +
+ +

post_content,1); ?>

+
+
+
+ +
+ posts} WHERE ID='".$pageid."' AND post_type = 'page';"; + $mine = $wpdb->get_results($pagina); + if($mine[0]->post_title!=""){ + ?> +
+

post_title; ?>

+

post_content,1); ?>

+
+
+
+ + '.single_cat_title('',false).''; + endif; +} + + +// adds sidebox in page write/edit +function page2cat_init(){ + if (function_exists('add_meta_box')) { + add_meta_box('page2cat','Category Page Options', 'page2cat_add_meta_box', 'page'); + add_action('admin_head','page2cat_metabox_styles'); + } else { + add_action('dbx_page_sidebar', 'page2cat_add_sidebox'); + add_action('admin_head','page2cat_sidebox_styles'); + } +} +// install management and options page +function page2cat_config_page() { + if ( function_exists('add_submenu_page') && is_admin()): + add_submenu_page('edit.php', __('Category Pages'), __('Category Pages'), 8, 'category-pages', 'page2cat_manage_page'); + endif; + if( function_exists('add_options_page') && is_admin()): + add_options_page('Category Pages options','Category Pages',8,'category-page-options','page2cat_options_page'); + endif; +} + + +if( is_admin() ): + if( preg_match('|page-new.php|i', $_SERVER['REQUEST_URI']) || + preg_match('|page.php|i', $_SERVER['REQUEST_URI']) || + preg_match('|edit.php|i', $_SERVER['REQUEST_URI']) ){ + add_action('admin_menu', 'page2cat_init'); + } + add_action('admin_menu', 'page2cat_config_page'); + add_action('save_post','page2cat_trigger_save'); +endif; + +add_filter('the_content','page2cat_content_catlist'); // by popular demand :-) +?>