function clean_dead_comments() { global $wpdb, $table_prefix; $sql = sprintf("delete %s from %sgdsr_data_comment l left join %scomments o on o.comment_ID = l.comment_id where o.comment_ID is null", gdFunctionsGDSR::mysql_pre_4_1() ? sprintf("%sgdsr_data_comment", $table_prefix) : "l", $table_prefix, $table_prefix); $wpdb->query($sql); return $wpdb->rows_affected; }
function get_trend_data($ids, $grouping = "post", $type = "article", $period = "over", $last = 1, $over = 30, $multi_id = 0) { global $wpdb, $table_prefix; $strtodate = gdFunctionsGDSR::mysql_version(); $strtodate = $strtodate == 4 ? $strtodate = "date_add(d.vote_date, interval 0 day)" : ($strtodate = "str_to_date(d.vote_date, '%Y-%m-%d')"); if ($period == "over") { $where = sprintf("%s BETWEEN DATE_SUB(NOW(), INTERVAL %s DAY) AND DATE_SUB(NOW(), INTERVAL %s DAY)", $strtodate, $last + $over, $last); } else { $where = sprintf("%s BETWEEN DATE_SUB(NOW(), INTERVAL %s DAY) AND NOW()", $strtodate, $last); } $from = $join = $sql = ""; switch ($grouping) { case "post": $select = $type == "multis" ? "d.post_id" : "d.id"; break; case "user": $select = "u.id"; $join = "p.id = d.id and p.post_status = 'publish' and u.id = p.post_author and "; break; case "category": $select = "t.term_id"; $join = "p.id = d.id and p.post_status = 'publish' and t.term_taxonomy_id = r.term_taxonomy_id and r.object_id = p.id and t.taxonomy = 'category' and t.term_id = x.term_id and "; break; } if ($type == "multis") { switch ($grouping) { case "post": $from = sprintf("%sgdsr_multis_trend d", $table_prefix); break; case "user": $from = sprintf("%s u, %sposts p, %sgdsr_multis_trend d", $wpdb->users, $table_prefix, $table_prefix); break; case "category": $from = sprintf("%sterm_taxonomy t, %sterm_relationships r, %sterms x, %sposts p, %sgdsr_multis_trend d", $table_prefix, $table_prefix, $table_prefix, $table_prefix, $table_prefix); break; } $sql = sprintf("SELECT %s as id, sum(d.total_votes_users) as user_voters, sum(d.average_rating_users * d.total_votes_users) as user_votes, sum(d.total_votes_visitors) as visitor_voters, sum(d.average_rating_visitors * d.total_votes_visitors) as visitor_votes FROM %s WHERE %s%s and %s in (%s) and multi_id = %s group by %s order by %s asc", $select, $from, $join, $where, $select, $ids, $multi_id, $select, $select); } else { switch ($grouping) { case "post": $from = sprintf("%sgdsr_votes_trend d", $table_prefix); break; case "user": $from = sprintf("%s u, %sposts p, %sgdsr_votes_trend d", $wpdb->users, $table_prefix, $table_prefix); break; case "category": $from = sprintf("%sterm_taxonomy t, %sterm_relationships r, %sterms x, %sposts p, %sgdsr_votes_trend d", $table_prefix, $table_prefix, $table_prefix, $table_prefix, $table_prefix); break; } $sql = sprintf("SELECT %s as id, sum(d.user_voters) as user_voters, sum(d.user_votes) as user_votes, sum(d.visitor_voters) as visitor_voters, sum(d.visitor_votes) as visitor_votes FROM %s WHERE %s%s and d.vote_type = '%s' AND %s IN (%s) GROUP BY %s ORDER BY %s asc", $select, $from, $join, $where, $type == "thumbs" ? "artthumb" : "article", $select, $ids, $select, $select); } return $wpdb->get_results($sql); }
function trends_daily($id, $vote_type = 'article', $show = "", $days = 30) { global $wpdb, $table_prefix; $mysql4_strtodate = "date_add(vote_date, interval 0 day)"; $mysql5_strtodate = "str_to_date(vote_date, '%Y-%m-%d')"; $strtodate = ""; $voters = $votes = 0; switch (gdFunctionsGDSR::mysql_version()) { case "4": $strtodate = $mysql4_strtodate; break; case "5": default: $strtodate = $mysql5_strtodate; break; } $sql = sprintf("SELECT user_voters, user_votes, visitor_voters, visitor_votes, %s as vote_date FROM %sgdsr_votes_trend where vote_type = '%s' and id = %s and %s between DATE_SUB(NOW(), INTERVAL %s DAY) AND NOW() order by vote_date asc", $strtodate, $table_prefix, $vote_type, $id, $strtodate, $days); $results = $wpdb->get_results($sql); $data = array(); for ($i = $days; $i > 0; $i--) { $day = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d") - $i, date("Y"))); $data[$day] = array("votes" => 0, "rating" => 0); } foreach ($results as $row) { if ($show == "user") { $voters = $row->user_voters; $votes = $row->user_votes; } else { if ($show == "visitor") { $voters = $row->visitor_voters; $votes = $row->visitor_votes; } else { $voters = $row->visitor_voters + $row->user_voters; $votes = $row->visitor_votes + $row->user_votes; } } $data[$row->vote_date]["rating"] = $voters > 0 ? number_format($votes / $voters, 1) : 0; $data[$row->vote_date]["votes"] = $voters; } return $data; }
/** * Scans folder and adds all folders to array. * * @param string $path folder path * @return array founded folders in array */ function get_folders($path) { $folders = gdFunctionsGDSR::scan_dir($path); $import = array(); foreach ($folders as $folder) { if (substr($folder, 0, 1) != ".") { if (is_dir($path . $folder . "/")) { $import[] = $folder; } } } return $import; }
foreach ($gdsr_items as $it) { $parts = explode(",", $it); $ids[] = $parts[1]; $items[$parts[1]] = $parts[0]; } gdsrAdmDB::update_category_settings("(" . join(", ", $gdsr_items) . ")", $ids, $items, $_POST["gdsr_article_moderation"], $_POST["gdsr_article_voterules"], $_POST["gdsr_comments_moderation"], $_POST["gdsr_comments_voterules"], $_POST["gdsr_integration_mur"], $_POST["gdsr_integration_active_std"], $_POST["gdsr_integration_active_mur"]); } } $all_cats = GDSRDatabase::get_all_categories(); $categories = GDSRHelper::get_categories_hierarchy($all_cats); $number_posts = count($categories); $max_page = floor($number_posts / $posts_per_page); if ($max_page * $posts_per_page != $number_posts) { $max_page++; } $pager = $max_page > 1 ? gdFunctionsGDSR::draw_pager($max_page, $page_id, $url, "pg") : ""; $cat_from = ($page_id - 1) * $posts_per_page; $cat_to = $page_id * $posts_per_page; if ($cat_to > $number_posts) { $cat_to = $number_posts; } ?> <div class="wrap"> <form id="gdsr-articles" method="post" action=""> <h2 class="gdptlogopage">GD Star Rating: <?php _e("Categories", "gd-star-rating"); ?> </h2> <div class="tablenav"> <div class="alignleft">
function clean_dead_articles() { global $wpdb, $table_prefix; $sql = sprintf("delete %s from %sgdsr_multis_data l left join %sposts o on o.ID = l.post_id where o.ID is null", gdFunctionsGDSR::mysql_pre_4_1() ? sprintf("%sgdsr_multis_data", $table_prefix) : "l", $table_prefix, $table_prefix); $wpdb->query($sql); $posts = $wpdb->rows_affected; $sql = sprintf("delete %s from %sgdsr_multis_values l left join %sgdsr_multis_data o on o.id = l.id where o.id is null", gdFunctionsGDSR::mysql_pre_4_1() ? sprintf("%sgdsr_multis_values", $table_prefix) : "l", $table_prefix, $table_prefix); $wpdb->query($sql); return $posts; }
function check_backtrace_access() { $back_trace = gdFunctionsGDSR::get_caller_backtrace(); foreach ($this->function_restrict as $fr) { if (in_array($fr, $back_trace)) { return true; } } return false; }
function include_rating_css_xtra($external = true) { $elements = array(); $presizes = "a" . gdFunctionsGDSR::prefill_zeros($this->o["stars"], 2); $presizes .= "m" . gdFunctionsGDSR::prefill_zeros(20, 2); $presizes .= "c" . gdFunctionsGDSR::prefill_zeros($this->o["cmm_stars"], 2); $presizes .= "r" . gdFunctionsGDSR::prefill_zeros($this->o["cmm_review_stars"], 2); $sizes = array(16, 20, 24, 30); $elements[] = $presizes; $elements[] = join("", $sizes); foreach ($this->g->stars as $s) { $elements[] = $s->primary . substr($s->type, 0, 1) . $s->folder; } $q = join("#", $elements); $url = $this->plugin_url . 'css/gdsr.css.php?s=' . urlencode($q); if ($external) { echo '<link rel="stylesheet" href="' . $url . '" type="text/css" media="screen" />'; } else { echo '<style type="text/css" media=screen>'; $inclusion = "internal"; $base_url_local = $this->plugin_url; $base_url_extra = $this->plugin_xtra_url; include $this->plugin_path . "css/gdsr.css.php"; echo '</style>'; } }
<div class="tablenav-pages"> <?php echo $pager; ?> </div> </div> <br class="clear"/> <?php $sql = gdsrAdmDB::get_visitors($post_id, $vote_type, $filter_date, $filter_vote, $select, ($page_id - 1) * $posts_per_page, $posts_per_page, $sort_column, $sort_order); $rows = $wpdb->get_results($sql, OBJECT); $col[0] = gdFunctionsGDSR::column_sort_vars("user_id", $sort_order, $sort_column); $col[1] = gdFunctionsGDSR::column_sort_vars("user_nicename", $sort_order, $sort_column); $col[2] = gdFunctionsGDSR::column_sort_vars("vote", $sort_order, $sort_column); $col[3] = gdFunctionsGDSR::column_sort_vars("voted", $sort_order, $sort_column); $col[4] = gdFunctionsGDSR::column_sort_vars("ip", $sort_order, $sort_column); $col[5] = gdFunctionsGDSR::column_sort_vars("user_agent", $sort_order, $sort_column); ?> <table class="widefat"> <thead> <tr> <th class="check-column" scope="col"><input type="checkbox" onclick="checkAll(document.getElementById('gdsr-articles'));"/></th> <th scope="col" nowrap="nowrap"><a href="<?php echo $b_url . $col[0]["url"]; ?> "<?php echo $col[0]["cls"]; ?> ><?php _e("ID", "gd-star-rating"); ?>
/** * Scans main and additional graphics folders for stars and trends sets. * * @return GDgfxLib scanned graphics object */ function gfx_scan() { $data = new GDgfxLib(); $stars_folders = gdFunctionsGDSR::get_folders(STARRATING_PATH . "stars/"); foreach ($stars_folders as $f) { $gfx = new GDgfxStar($f); if ($gfx->imported) { $data->stars[] = $gfx; } } if (is_dir(STARRATING_XTRA_PATH . "stars/")) { $stars_folders = gdFunctionsGDSR::get_folders(STARRATING_XTRA_PATH . "stars/"); foreach ($stars_folders as $f) { $gfx = new GDgfxStar($f, false); if ($gfx->imported) { $data->stars[] = $gfx; } } } $trend_folders = gdFunctionsGDSR::get_folders(STARRATING_PATH . "trends/"); foreach ($trend_folders as $f) { $gfx = new GDgfxTrend($f); if ($gfx->imported) { $data->trend[] = $gfx; } } if (is_dir(STARRATING_XTRA_PATH . "trends/")) { $trend_folders = gdFunctionsGDSR::get_folders(STARRATING_XTRA_PATH . "trends/"); foreach ($trend_folders as $f) { $gfx = new GDgfxTrend($f, false); if ($gfx->imported) { $data->trend[] = $gfx; } } } $thumbs_folders = gdFunctionsGDSR::get_folders(STARRATING_PATH . "thumbs/"); foreach ($thumbs_folders as $f) { $gfx = new GDgfxThumb($f); if ($gfx->imported) { $data->thumbs[] = $gfx; } } if (is_dir(STARRATING_XTRA_PATH . "thumbs/")) { $thumbs_folders = gdFunctionsGDSR::get_folders(STARRATING_XTRA_PATH . "thumbs/"); foreach ($thumbs_folders as $f) { $gfx = new GDgfxThumb($f, false); if ($gfx->imported) { $data->thumbs[] = $gfx; } } } return $data; }
$number_posts_all = $number_posts_post + $number_posts_page; if ($select == "post") { $number_posts = $number_posts_post; } else { if ($select == "page") { $number_posts = $number_posts_page; } else { $number_posts = $number_posts_all; } } $max_page = floor($number_posts / $posts_per_page); if ($max_page * $posts_per_page != $number_posts) { $max_page++; } if ($max_page > 1) { $pager = gdFunctionsGDSR::draw_pager($max_page, $page_id, $url, "pg"); } $set = gd_get_multi_set($set_id); ?> <div class="wrap" style="max-width: <?php echo $options["admin_width"]; ?> px"> <form id="gdsr-articles" method="post" action=""> <h2 class="gdptlogopage">GD Star Rating: <?php _e("Multi Set Results", "gd-star-rating"); ?> </h2> <h3 class="gdsetname"><?php _e("Set Name", "gd-star-rating");
function prepare_wsr($widget, $template) { global $gdsr; $bayesian_calculated = !(strpos($template, "%BAYES_") === false); $t_rate = !(strpos($template, "%RATE_TREND%") === false); $t_vote = !(strpos($template, "%VOTE_TREND%") === false); $a_name = !(strpos($template, "%AUTHOR_NAME%") === false); $a_link = !(strpos($template, "%AUTHOR_LINK%") === false); if ($widget["column"] == "bayes" && !$bayesian_calculated) { $widget["column"] == "rating"; } $all_rows = GDSRRenderT2::prepare_data_retrieve($widget, $gdsr->o["bayesian_minimal"]); if (count($all_rows) > 0) { $trends = array(); $trends_calculated = false; if ($t_rate || $t_vote) { $idx = array(); foreach ($all_rows as $row) { switch ($widget["grouping"]) { case "post": $id = $row->post_id; break; case "category": $id = $row->term_id; break; case "user": $id = $row->id; break; } $idx[] = $id; } $trends = GDSRX::get_trend_calculation(join(", ", $idx), $widget["grouping"], $widget['show'], $gdsr->o["trend_last"], $gdsr->o["trend_over"], $widget['source'], $widget['source_set']); $trends_calculated = true; } $stars = $gdsr->o["stars"]; $review_stars = $gdsr->o["review_stars"]; if ($widget["source"] == "multis") { $set = wp_gdget_multi_set($widget["source_set"]); $stars = $review_stars = $set->stars; } $new_rows = array(); foreach ($all_rows as $row) { if ($widget["image_from"] == "content") { $row->image = gdFunctionsGDSR::get_image_from_text($row->post_content); } else { if ($widget["image_from"] == "custom") { $row->image = get_post_meta($row->post_id, $widget["image_custom"], true); } else { $row->image = ""; } } $row->image = apply_filters('gdsr_widget_image_url_prepare', $row->image, $widget, $row); if ($row->image != "" && intval($widget["image_resize_x"]) > 0 && intval($widget["image_resize_y"]) > 0) { $row->image = GDSRRenderT2::prepare_image($row->image, $widget["image_resize_x"], $widget["image_resize_y"]); } if ($widget['source'] == "thumbs") { if ($widget['show'] == "total") { $row->votes = $row->rating = $row->user_recc_plus - $row->user_recc_minus + $row->visitor_recc_plus - $row->visitor_recc_minus; $row->voters = $row->user_recc_plus + $row->user_recc_minus + $row->visitor_recc_plus + $row->visitor_recc_minus; } if ($widget['show'] == "visitors") { $row->votes = $row->rating = $row->visitor_recc_plus - $row->visitor_recc_minus; $row->voters = $row->visitor_recc_plus + $row->visitor_recc_minus; } if ($widget['show'] == "users") { $row->votes = $row->rating = $row->user_recc_plus - $row->user_recc_minus; $row->voters = $row->user_recc_plus + $row->user_recc_minus; } $row->bayesian = -1; } else { if ($widget['show'] == "total") { $row->votes = $row->user_votes + $row->visitor_votes; $row->voters = $row->user_voters + $row->visitor_voters; } if ($widget['show'] == "visitors") { $row->votes = $row->visitor_votes; $row->voters = $row->visitor_voters; } if ($widget['show'] == "users") { $row->votes = $row->user_votes; $row->voters = $row->user_voters; } $row->rating = $row->voters == 0 ? 0 : @number_format($row->votes / $row->voters, 1); $row->review = $row->review == 0 ? 0 : @number_format($row->review / $row->counter, 1); $row->bayesian = $bayesian_calculated ? $gdsr->bayesian_estimate($row->voters, $row->rating, $stars) : -1; } $new_rows[] = $row; } $tr_class = "odd"; $set_rating = $set_voting = null; if ($trends_calculated) { $set_rating = $gdsr->g->find_trend($widget["trends_rating_set"]); $set_voting = $gdsr->g->find_trend($widget["trends_voting_set"]); } $all_rows = array(); foreach ($new_rows as $row) { $row->table_row_class = $tr_class; $row->rating_stars = $row->bayesian_stars = $row->rating_thumb = $row->review_stars = ""; $row->excerpt = GDSRRenderT2::prepare_excerpt($widget["excerpt_words"], $row); $row->excerpt = apply_filters('gdsr_widget_post_excerpt', $row->excerpt); if (strlen($row->title) > $widget["tpl_title_length"] - 3 && $widget["tpl_title_length"] > 0) { $row->title = substr($row->title, 0, $widget["tpl_title_length"] - 3) . " ..."; } $row->title = apply_filters('gdsr_widget_post_title', $row->title); if ($a_link || $a_name && intval($row->author) > 0) { $user = get_userdata($row->author); $row->author_name = $user->display_name; $row->author_url = get_author_posts_url(intval($row->author)); } else { $row->author_name = ""; $row->author_url = ""; } if ($trends_calculated) { $empty = $gdsr->e; switch ($widget["grouping"]) { case "post": $id = $row->post_id; break; case "taxonomy": case "category": $id = $row->term_id; break; case "user": $id = $row->id; break; } $t = $trends[$id]; switch ($widget["trends_rating"]) { case "img": $rate_url = is_null($set_rating) ? "" : $set_rating->get_url(); $image_loc = "center"; switch ($t->trend_rating) { case -1: $image_loc = "bottom"; break; case 0: $image_loc = "center"; break; case 1: $image_loc = "top"; break; } $image_bg = sprintf('background: url(%s) %s no-repeat; height: %spx; width: %spx;', $rate_url, $image_loc, $set_rating->size, $set_rating->size); $row->item_trend_rating = sprintf('<img class="trend" src="%s" style="%s" width="%s" height="%s"></img>', $gdsr->e, $image_bg, $set_rating->size, $set_rating->size); break; case "txt": switch ($t->trend_rating) { case -1: $row->item_trend_rating = $widget["trends_rating_fall"]; break; case 0: $row->item_trend_rating = $widget["trends_rating_same"]; break; case 1: $row->item_trend_rating = $widget["trends_rating_rise"]; break; } break; } switch ($widget["trends_voting"]) { case "img": $vote_url = is_null($set_voting) ? "" : $set_voting->get_url(); $image_loc = "center"; switch ($t->trend_voting) { case -1: $image_loc = "bottom"; break; case 0: $image_loc = "center"; break; case 1: $image_loc = "top"; break; } $image_bg = sprintf('background: url(%s) %s no-repeat; height: %spx; width: %spx;', $vote_url, $image_loc, $set_voting->size, $set_voting->size); $row->item_trend_voting = sprintf('<img class="trend" src="%s" style="%s" width="%s" height="%s"></img>', $gdsr->e, $image_bg, $set_voting->size, $set_voting->size); break; case "txt": switch ($t->trend_voting) { case -1: $row->item_trend_voting = $widget["trends_voting_fall"]; break; case 0: $row->item_trend_voting = $widget["trends_voting_same"]; break; case 1: $row->item_trend_voting = $widget["trends_voting_rise"]; break; } break; } } switch ($widget["grouping"]) { case "post": $row->permalink = get_permalink($row->post_id); break; case "taxonomy": $row->permalink = get_term_link($row->slug, $widget["taxonomy"]); break; case "category": $row->permalink = get_category_link($row->term_id); break; case "user": $row->permalink = get_author_posts_url(intval($row->id)); break; } if ($widget["source"] == "thumbs") { if (!(strpos($template, "%THUMB%") === false)) { $row->rating_thumb = GDSRRender::render_static_thumb($widget['rating_thumb'], $widget['rating_thumb_size'], $row->rating); } } else { if (!(strpos($template, "%STARS%") === false)) { $row->rating_stars = GDSRRender::render_static_stars($widget['rating_stars'], $widget['rating_size'], $stars, $row->rating); } if (!(strpos($template, "%BAYES_STARS%") === false) && $row->bayesian > -1) { $row->bayesian_stars = GDSRRender::render_static_stars($widget['rating_stars'], $stars, $stars, $row->bayesian); } } if (!(strpos($template, "%REVIEW_STARS%") === false) && $row->review > -1) { $row->review_stars = GDSRRender::render_static_stars($widget['review_stars'], $widget['review_size'], $review_stars, $row->review); } if ($tr_class == "odd") { $tr_class = "even"; } else { $tr_class = "odd"; } $all_rows[] = $row; } } if ($widget["column"] == "votes") { $widget["column"] = "voters"; } if ($widget["column"] == "post_title") { $widget["column"] = "title"; } if ($widget["column"] == "count") { $widget["column"] = "counter"; } if ($widget["column"] == "bayes") { $widget["column"] = "bayesian"; } if ($widget["column"] == "id") { $widget["column"] = "post_id"; } $properties = array(); $properties[] = array("property" => $widget["column"], "order" => $widget["order"]); if ($widget["column"] == "rating") { $properties[] = array("property" => "voters", "order" => $widget["order"]); } $sort = new gdSortObjectsArrayGDSR($all_rows, $properties); $all_rows = apply_filters("gdsr_widget_data_prepare", $sort->sorted); return $all_rows; }
function scan_folder() { $files = gdFunctionsGDSR::scan_dir($this->gfx_path); $this->sizes = array(); foreach ($files as $file) { $fparts = explode(".", $file); if ($fparts[1] == $this->type) { $size = substr($fparts[0], -2); $this->sizes[] = $size; } } }
?> </strong> </form> <?php _e("Total files cached", "gd-star-rating"); ?> : <strong><?php echo gdFunctionsGDSR::get_folder_files_count(substr(STARRATING_CACHE_PATH, 0, strlen(STARRATING_CACHE_PATH) - 1)); ?> files</strong> <br /> <?php _e("Total size of cached files", "gd-star-rating"); ?> : <strong><?php echo gdFunctionsGDSR::get_folder_size(substr(STARRATING_CACHE_PATH, 0, strlen(STARRATING_CACHE_PATH) - 1)); ?> bytes</strong> </td> </tr> <tr><th scope="row"><?php _e("Debug", "gd-star-rating"); ?> </th> <td> <form method="post"> <?php _e("Empty the debug file", "gd-star-rating"); ?> <strong>'<?php echo STARRATING_LOG_PATH;