function JB_expire_posts($post_type) { if ($post_type == 'PREMIUM') { if (defined('JB_P_POSTS_DISPLAY_DAYS')) { $display_days = JB_P_POSTS_DISPLAY_DAYS; $type_sql = " AND post_mode = 'premium' "; } else { $display_days = JB_POSTS_DISPLAY_DAYS; $type_sql = " AND post_mode != 'premium' "; } } else { $display_days = JB_POSTS_DISPLAY_DAYS; $type_sql = " AND post_mode != 'premium' "; } // select all field_id where type is Category form the post table // then put these field_ids in to a string, eg 13, 22, 24 $sql = "SELECT field_id FROM form_fields WHERE field_type='CATEGORY' AND form_id='1' "; $cat_result = JB_mysql_query($sql) or die(mysql_error()); $cats = array(); if (mysql_num_rows($cat_result)) { while ($cat_row = mysql_fetch_array($cat_result, MYSQL_ASSOC)) { $cats[] = "`" . $cat_row['field_id'] . "`"; } $cats = ', ' . implode(',', $cats); } else { // there are no categories to select $cats = ''; } // Now select the $cats along with the post_id form the posts table which // are older than $display_days (expired) $now = gmdate("Y-m-d H:i:s"); $sql = "SELECT post_id {$cats} FROM posts_table WHERE DATE_SUB('{$now}',INTERVAL " . jb_escape_sql($display_days) . " DAY) >= `post_date` AND expired='N' {$type_sql} "; $exp_result = JB_mysql_query($sql) or $DB_ERROR = mysql_error(); $affected_cats = array(); while ($post_row = mysql_fetch_array($exp_result, MYSQL_ASSOC)) { // go through each column, if the column is a post_id then expire // else it is a category foreach ($post_row as $col_name => $col_val) { if ($col_name == 'post_id') { //echo "update post_id:".$col_val."<br>"; // set to expired JB_expire_post($col_val); } else { $affected_cats[$col_val] = $col_name; // remember the affected category } } } foreach ($affected_cats as $key => $val) { //JB_update_post_category_counters($leaf_cat_id, $field_id, $search_set=''); JB_update_post_category_counters($key, $val); //echo "updating counters...$key, $val<br>"; } JB_finalize_post_updates(); }
function JB_update_post_category_counters($leaf_cat_id, $field_id, $search_set = '') { static $level; $level++; $row = jb_get_category($leaf_cat_id); if (strlen(trim($search_set)) == 0) { $sql = "SELECT search_set FROM categories WHERE category_id='" . jb_escape_sql($leaf_cat_id) . "' AND search_set != '' "; $result = jb_mysql_query($sql); if (mysql_num_rows($result) > 0) { $search_set = array_pop(mysql_fetch_row($result)); } } if (strlen($search_set) > 0) { $search_set .= ',' . $leaf_cat_id; } else { $search_set = $leaf_cat_id; } $search_set_sql = JB_get_optimized_search_set_query($search_set, $field_id); $sql = "SELECT count(*) FROM posts_table WHERE approved='Y' AND expired='N' " . $search_set_sql . " "; $result = JB_mysql_query($sql) or die(mysql_error() . $sql); $row = mysql_fetch_row($result); $count = $row[0]; $sql = "UPDATE categories SET obj_count='{$count}' WHERE category_id='" . jb_escape_sql($leaf_cat_id) . "' AND form_id=1 "; JB_mysql_query($sql) or die(mysql_error() . $sql); // go down the tree to the root $sql = "SELECT category_id, parent_category_id, search_set FROM categories WHERE category_id='" . jb_escape_sql($leaf_cat_id) . "' "; $result = JB_mysql_query($sql) or die(mysql_error() . $sql); if ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { if (mysql_num_rows($result) > 0) { $sql = "SELECT category_id, search_set from categories WHERE category_id='" . jb_escape_sql($row['parent_category_id']) . "' "; $result = JB_mysql_query($sql) or die(mysql_error()); if (mysql_num_rows($result) > 0) { $row = mysql_fetch_array($result, MYSQL_ASSOC); JB_update_post_category_counters($row['category_id'], $field_id, $row['search_set']); } } } $level--; }