PHP Classes

File: bt-include/default-tasks.php

Recommend this page to a friend!
  Classes of Michael Dale   Bluetrait   bt-include/default-tasks.php   Download  
File: bt-include/default-tasks.php
Role: Auxiliary script
Content type: text/plain
Description: Default Plugin Tasks File
Class: Bluetrait
A multi-user blog system
Author: By
Last change:
Date: 16 years ago
Size: 4,876 bytes
 

Contents

Class file image Download
<?php
/*
    Bluetrait 2.0 Default Tasks
    Michael Dale Copyright 2008
*/

if (!defined('BT_ROOT')) exit;

//html filter
bt_add_task(BT_PLUGIN_NAME, 'common_loaded', 'bt_load_kses');

//404 handler
bt_add_task(BT_PLUGIN_NAME, '404', 'bt_404');

//Cron system
bt_add_task(BT_PLUGIN_NAME, 'shutdown', 'bt_run_cron');

//default cron tasks
bt_add_task(BT_PLUGIN_NAME, 'cron_every_hour', 'bt_future_post');
bt_add_task(BT_PLUGIN_NAME, 'cron_every_hour', 'bt_session_garbage_collection');
bt_add_task(BT_PLUGIN_NAME, 'cron_every_day', 'bt_update_check');
bt_add_task(BT_PLUGIN_NAME, 'cron_every_day', 'bt_update_check_plugins');
bt_add_task(BT_PLUGIN_NAME, 'cron_every_month', 'bt_monthly_maintenance');

//text editor
bt_add_task(BT_PLUGIN_NAME, 'admin_text_editor', 'bt_text_editor');

/*
    Default Themed Content Support
*/
//blog
bt_add_task(BT_PLUGIN_NAME, 'theme_type_blog', 'bt_theme_handle');
//404
bt_add_task(BT_PLUGIN_NAME, 'theme_type_404', 'bt_theme_handle');
//cms
bt_add_task(BT_PLUGIN_NAME, 'theme_type_cms', 'bt_theme_handle');

function
bt_load_kses() {
   
/*
        Note: Filters for kses are stored in default-filters.php
    */
   
include(BT_ROOT . BT_INCLUDE . '/kses.functions.php');
    include(
BT_ROOT . BT_INCLUDE . '/kses.tasks.php');

    return
true;
}

function
bt_404() {
    global
$bt_content_identifier;

   
bt_set_header('HTTP/1.0 404 Not Found');
   
bt_set_404();
   
$bt_content_identifier['theme_type'] = '404';
   
    return
true;
}

function
bt_run_cron() {
   
    if (
defined('BT_RUNNING_CRON')) return false;
    if (
bt_datetime() < bt_get_config('next_cron_run')) return false;
   
   
bt_set_config('next_cron_run', bt_datetime(3600));
   
   
$domain = bt_get_config('domain');
   
   
//IPv6 not working under vista
    //$domain = '127.0.0.1';
   
   
if (bt_get_config('https')) {
       
$domain = 'ssl://' . $domain;
    }

   
$socket = @fsockopen($domain, bt_get_config('port_number'), $errno, $errstr, 0.01);

    if (
$socket) {
       
$request =
       
"GET " . bt_get_config('script_path') . "/bt-cron.php HTTP/1.0\r\n"
       
. "Host: " . bt_get_config('domain') . "\r\n"
       
. "User-Agent: Bluetrait/" . bt_get_config('program_version')
        .
"\r\n\r\n";
        @
fwrite($socket, $request);
        @
fclose($socket);
        return
true;
    }
    else {
       
trigger_error('Unable to start cron', E_USER_ERROR);
        return
false;
    }
}

function
bt_future_post() {
    global
$bt_db, $bt_tb;

   
$query = "UPDATE $bt_tb->posts SET post_type = 'published' WHERE post_type = 'future' AND post_date <= ?";
   
   
$now = bt_datetime();
   
$stmt = $bt_db->prepare($query);
   
$stmt->bindParam(1, $now);
   
    try {
       
$stmt->execute();
    }
    catch (
Exception $e) {
       
bt_die($e->getMessage());
    }
}

function
bt_update_check() {

   
$options = array(
       
'http' => array(
           
'user_agent' => 'Bluetrait/' . bt_get_config('program_version'),
           
'timeout' => 5
       
)
    );
   
   
$context = stream_context_create($options);
   
$url = 'http://update.bluetrait.org/bluetrait2/update_check.php';
   
$update_feed = file_get_contents($url, false, $context);
    if (
$update_feed) {
       
bt_set_config('last_update_response', $update_feed);
        return
true;
    }
    else {
       
trigger_error('Unable to contact update server', E_USER_WARNING);
        return
false;
    }
   
}

function
bt_update_check_plugins() {

   
$plugins = bt_get_all_plugins();

   
$options = array(
       
'http' => array(
           
'user_agent' => 'Bluetrait/' . bt_get_config('program_version'),
           
'timeout' => 5
       
)
    );
   
$plugin_update_array = bt_get_config('plugin_update_data');
    foreach (
$plugins as $plugin) {
        if (!empty(
$plugin['plugin_update_checker_url'])) {
           
$context = stream_context_create($options);
           
$url = $plugin['plugin_update_checker_url'];
           
$update_feed = file_get_contents($url, false, $context);
            if (
$update_feed) {
               
$plugin_update_array[$plugin['plugin_file_name']] = $update_feed;
            }
            else {
               
trigger_error('Unable to contact update server for plugin "' . bt_htmlentities($plugin['plugin_file_name']) . '"', E_USER_WARNING);
            }
        }
    }
   
bt_set_config('plugin_update_data', $plugin_update_array);
    return
true;
}

function
bt_monthly_maintenance() {

   
//optimise tables
   
bt_optimise_tables();
}

function
bt_session_garbage_collection() {
    global
$bt_session;
       
   
//if (!defined('BT_RUNNING_CRON')) {
       
$bt_session->gc();
   
//}

}

function
bt_theme_handle() {
    global
$bt_post_array, $bt_db, $bt_tb, $bt_error, $bt_post, $bt_comment_array, $bt_input_error, $bt_comment;

    include(
BT_ROOT . BT_CONTENT . '/bt-themes/' . BT_CURRENT_THEME . '/' . BT_CURRENT_THEME_TYPE . '/index.php');
}

function
bt_text_editor($array) {

   
$name = $array['name'];
   
$value = $array['value'];
?>
<textarea name="<?php echo $name; ?>" style="width: 100%" rows="20" id="<?php echo $name; ?>"><?php echo $value; ?></textarea>
<?php
}

?>