url = $url[0];
$this -> register_plugin($this -> name, __FILE__);
$this -> initialize_options();
$this -> add_action('widgets_init', 'mref_widget_register', 10, 1);
$this -> add_action('admin_head');
$this -> add_action('wp_head');
return true;
}
function mref_widget($args = array(), $widget_args = array()) {
extract($args, EXTR_SKIP);
if (is_numeric($widget_args)) {
$widget_args = array('number' => $widget_args);
}
$widget_args = wp_parse_args($widget_args, array('number' => -1));
extract($widget_args, EXTR_SKIP);
$options = get_option('mref-widget');
$title = $options[$number]['title'];
$candisplay='';
if($options[$number]['allcategories'] == '' && $options[$number]['postcategory']=='') {
$candisplay='yes';
}else{
if (is_category()){
if($options[$number]['allcategories'] == 'Y') {
//dispaly the widget here
$candisplay='yes';
}else{
if($options[$number]['postcategory']!='') {
$curcatid = get_query_var('cat');
$postcategory = explode(",", $options[$number]['postcategory']);
foreach($postcategory as $postcat){
if($curcatid == $postcat) {
$candisplay='yes';
}//endif
}//endforeach
}//endif
}//end else
}//endif
}//endif
if($candisplay){
//dispaly the widget here
if (empty($options[$number])) {
return;
}
$title = $options[$number]['title'];
$recent = $options[$number]['recent'];
$orderby = $options[$number]['orderby'];
$order = $options[$number]['order'];
$max_length = $options[$number]['max_length'];
$exclude = $options[$number]['exclude'];
$numberitems = $options[$number]['numberitems'];
$rotateposts = $options[$number]['rotateposts'];
$linkdescriptions = $options[$number]['linkdescriptions'];
$catrsslinks = $options[$number]['catrsslinks'];
$itemdates = $options[$number]['itemdates'];
$dateformat = $options[$number]['dateformat'];
$pagesparent = $options[$number]['pagesparent'];
$hide_empty = $options[$number]['hide_empty'];
$titlelink = $options[$number]['titlelink'];
$titlelinkurl = $options[$number]['titlelinkurl'];
$levels = $options[$number]['levels'];
if (preg_match("%^([posts|pages]*)\-.*?$%si", $recent, $matches)) {
$post_type = rtrim($matches[1], 's');
if ($post_type == "post") {
preg_match("%^posts\-(.*?)$%si", $recent, $matches);
$category = $matches[1];
$newcategory = (empty($category) || $category == "all") ? false : $category;
//should posts be rotated by category?
if (!empty($rotateposts) && $rotateposts == "Y") {
$category_args = array(
'type' => "post",
'number' => false,
'orderby' => "name",
'order' => "ASC",
'hide_empty' => true,
);
$currid = 0;
if ($categories = get_categories($category_args)) {
//check if a category's posts has been rotated
if (${'rotateposts' . $number} = $this -> get_option('rotateposts' . $number)) {
if (!empty($categories[${'rotateposts' . $number}])) {
$newcategory = $categories[${'rotateposts' . $number}] -> cat_ID;
$currid = ${'rotateposts' . $number};
} else {
$newcategory = $categories[0] -> cat_ID;
}
} else {
$newcategory = $categories[0] -> cat_ID;
}
}
$this -> update_option('rotateposts' . $number, ($currid + 1));
}
//WP post arguments for get_posts()
$post_args = array(
'numberposts' => (empty($numberitems)) ? false : $numberitems,
'category' => $newcategory,
'orderby' => (empty($orderby) || $orderby == "name") ? 'title' : 'date',
'order' => (empty($order) || $order == "ASC") ? 'ASC' : 'DESC',
'exclude' => (empty($exclude)) ? false : $exclude,
'post_type' => $post_type
);
if ($posts = get_posts($post_args)) {
$items = array();
foreach ($posts as $post) {
$items[] = array(
'title' => $post -> post_title,
'post_ID' => $post -> ID,
'href' => get_permalink($post -> ID),
'date' => date($dateformat, strtotime($post -> post_date)),
);
}
}
} elseif ($post_type == "page") {
preg_match("%^pages\-(.*?)$%si", $recent, $matches);
$child_of = $matches[1];
if (!empty($child_of) && $child_of != "all" && $child_of != 0 && $pagesparent == "Y") {
$parent = get_page($child_of);
$args['parent']['title'] = $parent -> post_title;
$args['parent']['href'] = get_permalink($parent -> ID);
}
$page_args = array(
'post_parent' => (empty($child_of) || $child_of == "all") ? 0 : $child_of,
'order' => (empty($order) || $order == "ASC") ? 'ASC' : 'DESC',
'orderby' => (empty($orderby) || $orderby == "name") ? 'post_title' : 'post_date',
'post__not_in' => (empty($exclude)) ? false : explode(",",$exclude),
'post_type' => 'page',
'posts_per_page' => (empty($numberitems)) ? false : (int)$numberitems
);
$pages =query_posts($page_args);
foreach ($pages as $page) {
$items[] = array(
'title' => $page -> post_title,
'href' => get_permalink($page -> ID),
'date' => date($dateformat, strtotime($page -> post_date)),
'page_ID' => $page -> ID
);
$childargs = array(
'child_of' => $page -> ID,
'order' => $order,
'orderby' => $orderby,
'exclude' => $exclude
);
$usedpages[] = $page -> ID;
$this -> get_pages($childargs);
}
wp_reset_query();
}
} elseif (ereg("categories", $recent)) {
preg_match("%^categories\-(.*?)$%i", $recent, $matches);
$parent_id = $matches[1];
if (!empty($parent_id) && $parent_id != "all" && $parent_id != 0 && $pagesparent == "Y") {
$parent = get_category($parent_id);
$args['parent']['title'] = $parent -> cat_name;
$args['parent']['href'] = get_category_link($parent -> cat_ID);
$allcategories = false;
} else {
$allcategories = true;
}
$category_args = array(
'number' => (empty($numberitems)) ? false : $numberitems,
'parent' => ($parent_id == "all") ? false : $parent_id,
'order' => $order,
'orderby' => (empty($orderby) || $orderby != "date") ? 'name' : 'ID',
'exclude' => (empty($exclude)) ? false : $exclude,
'hide_empty' => (empty($hide_empty) || $hide_empty == "Y") ? true : false
);
if ($categories = get_categories($category_args)) {
global $items, $levels;
$items = array();
$levels = $options[$number]['levels'];
$c = 0;
foreach ($categories as $category) {
$items[$c] = array(
'title' => $category -> cat_name,
'href' => get_category_link($category -> cat_ID),
'cat_ID' => $category -> cat_ID
);
$childargs = array(
'parent' => $category -> cat_ID,
'order' => $order,
'orderby' => (empty($orderby) || $orderby != "date") ? 'name' : 'ID',
'exclude' => (empty($exclude)) ? false : $exclude,
'hide_empty' => true
);
$this -> get_categories($childargs);
$c++;
}
}
} elseif (ereg("links", $recent)) {
preg_match("%^links\-(.*?)$%si", $recent, $matches);
$category = $matches[1];
$link_args = array(
'orderby' => (empty($orderby) || $orderby != "date") ? 'name' : 'updated',
'order' => $order,
'limit' => $numberitems,
'category' => (empty($category) || $category == "all") ? false : $category,
'exclude' => (empty($exclude)) ? false : $exclude
);
if ($links = get_bookmarks($link_args)) {
$items = array();
$l = 0;
foreach ($links as $link) {
$items[$l] = array(
'title' => $link -> link_name,
'href' => $link -> link_url,
'description' => strip_tags($link -> link_description),
'date' => $link -> link_updated
);
$items[$l]['date'] = (empty($link -> link_updated) || strtotime($link -> link_updated) == false || $link -> link_updated == "0000-00-00 00:00:00") ? date("Y-m-d H:i:s", time()) : $link -> link_updated;
$items[$l]['date'] = date($dateformat, strtotime($items[$l]['date']));
$l++;
}
}
} elseif (ereg("comments", $recent)) {
if (!empty($exclude)) {
$exludeids = explode(",", $exclude);
if (!empty($excludeids) && is_array($excludeids)) {
$where_exclude = " AND";
$c = 1;
foreach ($excludeids as $cid) {
if (!empty($cid)) {
$where_exclude .= "`comment_ID` != '" . $cid . "'";
if ($c < count($excludeids)) {
$where_exclude .= " AND";
}
}
$c++;
}
}
}
global $wpdb;
$comments_query = "SELECT * FROM `" . $wpdb -> prefix . "comments` WHERE `comment_approved` = '1' " . $where_exclude . " ORDER BY `comment_date` " . $order . " LIMIT $numberitems ;";
if ($comments = $wpdb -> get_results($comments_query)) {
$items = array();
foreach ($comments as $comment) {
$items[] = array(
'title' => $comment -> comment_content,
'comment_ID' => $comment -> comment_ID,
'href' => get_permalink($comment -> comment_post_ID) . "#comment-" . $comment -> comment_ID,
'date' => date($dateformat, strtotime($comment -> comment_date)),
);
}
}
}
if (!empty($items)) {
if (!empty($catrsslinks) && $catrsslinks == "Y") {
$catrss = '';
if($recent == "categories-all")
$catrss = 'rss2&cat=all';
else if($post_type == "post" )
{
$catrss = 'rss2';
}
else if($recent=="comments")
{
$catrss = "comments-rss2";
}
else
$catrss = 'rss2';
$oldtitle = $title;
if($post_type != "page"){
$rssatag = $title = '';
$title .= '
';
$title .= ' ';
$title .= $rssatag;
$title .= $oldtitle;
$title .= '';
}
if (!empty($items)) {
foreach ($items as $ikey => $ival) {
if($recent == "comments")
$items[$ikey]['rsslink'] = false;
else
$items[$ikey]['rsslink'] = true;
}
}
}
$args['title'] = (empty($title)) ? '' : $title;
$args['titlelink'] = (empty($titlelink)) ? 'N' : $titlelink;
$args['titlelinkurl'] = (empty($titlelinkurl)) ? '' : $titlelinkurl;
$args['linkdescriptions'] = (empty($linkdescriptions)) ? '' : $linkdescriptions;
$args['itemdates'] = (empty($itemdates)) ? '' : $itemdates;
$args['max_length'] = (empty($max_length)) ? '' : $max_length;
$this -> render('widget', array('args' => $args, 'items' => $items, 'children' => $children));
}
}
}
function mref_widget_control($widget_args = array()) {
global $wp_registered_widgets;
static $updated = false;
if (is_numeric($widget_args)) {
$widget_args = array('number' => $widget_args);
}
$widget_args = wp_parse_args($widget_args, array('number' => -1));
if (!empty($widget_args['number']) && is_array($widget_args['number'])) {
extract($widget_args['number'], EXTR_SKIP);
} else {
extract($widget_args, EXTR_SKIP);
}
$options = get_option('mref-widget');
if (empty($options) || !is_array($options)) {
$options = array();
}
if (!$updated && !empty($_POST['sidebar'])) {
$sidebar = $_POST['sidebar'];
$sidebars_widgets = wp_get_sidebars_widgets();
if (!empty($sidebars_widgets[$sidebar])) {
$this_sidebar = $sidebars_widgets[$sidebar];
} else {
$this_sidebar = array();
}
if (!empty($this_sidebar)) {
foreach ($this_sidebar as $_widget_id ) {
if ('mref_widget' == $wp_registered_widgets[$_widget_id]['callback'] && isset($wp_registered_widgets[$_widget_id]['params'][0]['number'])) {
$widget_number = $wp_registered_widgets[$_widget_id]['params'][0]['number'];
if (!in_array("mref-" . $widget_number, $_POST['widget-id'])) {
unset($options[$widget_number]);
}
}
}
}
if (!empty($_POST['mref-widget'])) {
foreach ($_POST['mref-widget'] as $widget_number => $widget_values) {
if (!isset($widget_values['title']) && isset($options[$widget_number])) {
continue;
}
$allcategories = $widget_values['allcategories'];
if($widget_values['postcategory']!='') {
$postcategory = implode(",", $widget_values['postcategory']);
}
$title = strip_tags(stripslashes($widget_values['title']));
$recent = $widget_values['recent'];
$orderby = $widget_values['orderby'];
$order = $widget_values['order'];
$max_length = $widget_values['max_length'];
$exclude = $widget_values['exclude'];
$numberitems = $widget_values['numberitems'];
$rotateposts = $widget_values['rotateposts'];
$linkdescriptions = $widget_values['linkdescriptions'];
$catrsslinks = $widget_values['catrsslinks'];
$itemdates = $widget_values['itemdates'];
$dateformat = $widget_values['dateformat'];
$pagesparent = $widget_values['pagesparent'];
$hide_empty = $widget_values['hide_empty'];
$titlelink = $widget_values['titlelink'];
$titlelinkurl = $widget_values['titlelinkurl'];
$levels = $widget_values['levels'];
$options[$widget_number] = compact('title', 'recent', 'orderby', 'order', 'max_length', 'exclude', 'numberitems', 'rotateposts', 'linkdescriptions', 'catrsslinks', 'itemdates', 'dateformat', 'pagesparent', 'hide_empty', 'titlelink', 'titlelinkurl', 'levels', 'postcategory', 'allcategories');
}
}
update_option('mref-widget', $options);
$updated = true;
}
if (-1 == $number) {
$number = '%i%';
$title = '';
$recent = 'posts-all';
$orderby = 'date';
$order = 'DESC';
$max_length = 50;
$exclude = '';
$numberitems = 5;
$rotateposts = false;
$itemdates = false;
$dateformat = "Y-m-d H:i:s";
$pagesparent = "Y";
$hide_empty = "Y";
$titlelink = "";
$titlelinkurl = "";
$levels = 1;
} else {
$title = $options[$number]['title'];
$recent = $options[$number]['recent'];
$orderby = $options[$number]['orderby'];
$order = $options[$number]['order'];
$max_length = $options[$number]['max_length'];
$exclude = $options[$number]['exclude'];
$numberitems = $options[$number]['numberitems'];
$rotateposts = $options[$number]['rotateposts'];
$linkdescriptions = $options[$number]['linkdescriptions'];
$catrsslinks = $options[$number]['catrsslinks'];
$itemdates = $options[$number]['itemdates'];
$dateformat = $options[$number]['dateformat'];
$pagesparent = $options[$number]['pagesparent'];
$hide_empty = $options[$number]['hide_empty'];
$titlelink = $options[$number]['titlelink'];
$titlelinkurl = $options[$number]['titlelinkurl'];
$levels = $options[$number]['levels'];
$allcategories = $options[$number]['allcategories'];
$postcategory = explode(',',$options[$number]['postcategory']);
}
?>
adversion) && $this -> adversion == true) : ?>
plugin_name); ?> plugin_name); ?> plugin_name); ?>
plugin_name); ?>
plugin_name); ?> :
plugin_name); ?> :
plugin_name); ?>
:
;">
leave empty to show full titles
Enter comma separated IDs
value="Y" name="mref-widget[][allcategories]" id="mref_widget__allcategories"> plugin_name); ?>
Default : If you select nothing here, your widget will be displayed in position throughout your entire site, like other widgets. if you select "All Categories", it will be displayed only on Post Categories. If you Select only certain categories in the pop-down - this widget will only appear in those categories.
More Location Options Coming in Pro Version
Watch for our "Pro Version" of Max-Ref Widgets Coming Soon with More Locations, More Features. And a third tab full of more helpful options....WebFadds.com