function appthemes_process_membership_order($current_user, $order)
{
    //if order ID matches pending membership id suffix, then process the order by extendning the date and setting the ID
    if (isset($current_user->active_membership_pack)) {
        $user_active_pack_id = get_pack_id($current_user->active_membership_pack);
    } else {
        $user_active_pack_id = false;
    }
    if (isset($current_user->membership_expires)) {
        $user_active_pack_expiration = $current_user->membership_expires;
    } else {
        $user_active_pack_expiration = strtotime(current_time('mysql'));
    }
    if ($order['total_cost'] == 0 || $order['order_id'] == $_REQUEST['oid'] || $order['order_id'] == $_REQUEST['custom'] || $order['order_id'] == $_REQUEST['invoice']) {
        //update the user profile to current order pack_id taking it off "pending" status and setup the membership object
        update_user_meta($current_user->ID, 'active_membership_pack', $order['pack_id']);
        $membership = get_pack($order['pack_id']);
        //extend membership if its still active, so long as its not free (otherwise free extentions could be infinite)
        $expires_in_days = appthemes_seconds_to_days(strtotime($user_active_pack_expiration) - strtotime(current_time('mysql')));
        $purchase = $order['pack_duration'] . ' ' . __('days', 'appthemes');
        if ($expires_in_days > 0 && $order['total_cost'] > 0 && $order['pack_id'] == $user_active_pack_id) {
            $updated_expires_date = appthemes_mysql_date($user_active_pack_expiration, $order['pack_duration']);
        } else {
            $updated_expires_date = appthemes_mysql_date(current_time('mysql'), $order['pack_duration']);
        }
        update_user_meta($current_user->ID, 'membership_expires', $updated_expires_date);
        $order['updated_expires_date'] = $updated_expires_date;
        delete_option($order['option_order_id']);
        //return the order information in case its needed
        return $order;
    } else {
        //get orders of the user
        $the_order = get_user_orders($current_user->ID, $order['order_id']);
        return false;
    }
}
function get_pack($theID, $type = '', $return = '')
{
    global $wpdb, $the_pack;
    if (stristr($theID, 'pend')) {
        $theID = get_pack_id($theID);
    }
    //if the type is dashboard or ad, then get the assume the ID sent is the postID and packID needs to be obtained
    if ($type == 'ad' || $type == 'dashboard') {
        $theID = get_pack_id($theID, $type);
    }
    //make sure the value is a proper MySQL int value
    $theID = intval($theID);
    if ($theID > 0) {
        $the_pack = $wpdb->get_row("SELECT * FROM {$wpdb->cp_ad_packs} WHERE pack_id = '{$theID}'");
        $the_pack = apply_filters('cp_get_package', $the_pack, $theID);
    }
    if (!empty($return) && !empty($the_pack)) {
        $the_pack = (array) $the_pack;
        if ($return == 'array') {
            return $the_pack;
        } else {
            return $the_pack[$return];
        }
    }
    return $the_pack;
}