Exemplo n.º 1
0
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();
}
Exemplo n.º 2
0
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--;
}