Login   Register  
PHP Classes
elePHPant
Icontem

File: bt-include/default-tasks.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  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: 2008-10-26 15:53
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($domainbt_get_config('port_number'), $errno$errstr0.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($urlfalse$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($urlfalse$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
}

?>