WordPress.org

Plugin Directory


Ignore:
Timestamp:
08/04/08 10:08:02 (9 years ago)
Author:
mark8barnes
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • sermon-browser/trunk/sermon.php

    r57103 r58027  
    55Description: Add sermons to your Wordpress blog. Main coding by <a href="http://codeandmore.com/">Tien Do Xuan</a>. Design and additional coding 
    66Author: Mark Barnes 
    7 Version: 0.34 
     7Version: 0.35 
    88Author URI: http://www.4-14.org.uk/ 
    99 
     
    2828 ** Set up                            ** 
    2929 **************************************/ 
    30 define('SB_CURRENT_VERSION', '0.34'); 
     30define('SB_CURRENT_VERSION', '0.35'); 
     31define('SB_DATABASE_VERSION', '1.5'); 
    3132$directories = explode(DIRECTORY_SEPARATOR,dirname(__FILE__)); 
    3233if ($directories[count($directories)-1] == 'mu-plugins') { 
     
    5051add_action('admin_menu', 'sb_add_pages'); 
    5152sb_sermon_install(); 
     53add_action('rightnow_end', 'sb_rightnow'); 
    5254 
    5355// Add Sermons menu and sub-menus in admin 
     
    8385    if (ini_get('file_uploads')<>'1') ini_set('file_uploads', '1'); 
    8486    // Only proceed with install if necessary 
    85     if(get_option('sb_sermon_db_version') =='1.4') return; 
     87    $db_version = get_option('sb_sermon_db_version'); 
     88    if($db_version == SB_DATABASE_VERSION) return; 
    8689    global $wpdb; 
    8790    global $defaultMultiForm, $defaultSingleForm, $defaultStyle; 
    8891    require_once(ABSPATH . 'wp-includes/pluggable.php'); 
    8992    require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
     93    // Create folders 
    9094    $sermonUploadDir = sb_get_default('sermon_path'); 
    91     if (!is_dir(sb_get_value('wordpress_path').$sermonUploadDir)) { 
    92         if (sb_mkdir(sb_get_value('wordpress_path').$sermonUploadDir)) { 
    93             @chmod(sb_get_value('wordpress_path').$sermonUploadDir, 0777);           
    94         } 
    95     } 
    96     if(!is_dir(sb_get_value('wordpress_path').$sermonUploadDir.'images') && sb_mkdir(sb_get_value('wordpress_path').$sermonUploadDir.'images')){ 
    97         @chmod(sb_get_value('wordpress_path').$sermonUploadDir.'images', 0777); 
    98     } 
    99     //Upgrade database from earlier versions 
     95    if (!is_dir(sb_get_value('wordpress_path').$sermonUploadDir)) 
     96        sb_mkdir(sb_get_value('wordpress_path').$sermonUploadDir); 
     97    if(!is_dir(sb_get_value('wordpress_path').$sermonUploadDir.'images')) 
     98        sb_mkdir(sb_get_value('wordpress_path').$sermonUploadDir.'images'); 
    10099    $books = sb_get_default('bible_books'); 
    101     switch (get_option('sb_sermon_db_version')) { 
    102         case '1.0': // Also moves files from old default folder to new default folder 
    103             $oldSermonPath = sb_get_value('plugin_path')."/files/"; 
    104             $files = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}sb_stuff WHERE type = 'file' ORDER BY name asc");  
    105             foreach ((array)$files as $file) { 
    106                 @chmod(sb_get_value('wordpress_path').$oldSermonPath.$file->name, 0777); 
    107                 @rename(sb_get_value('wordpress_path').$oldSermonPath.$file->name, sb_get_value('wordpress_path').$sermonUploadDir.$file->name); 
    108             } 
    109             $table_name = $wpdb->prefix . "sb_preachers"; 
    110             if($wpdb->get_var("show tables like '$table_name'") == $table_name) {             
    111                   $wpdb->query("ALTER TABLE " . $table_name . " ADD `description` TEXT NOT NULL, ADD `image` VARCHAR( 255 ) NOT NULL ;"); 
    112             } 
    113             update_option('sb_sermon_db_version', '1.1');        
    114         case '1.1': 
    115             add_option('sb_sermon_style', base64_encode($defaultStyle)); 
    116             if(!is_dir(sb_get_value('wordpress_path').$sermonUploadDir.'images') && sb_mkdir(sb_get_value('wordpress_path').$sermonUploadDir.'images')){ 
    117                 @chmod(sb_get_value('wordpress_path').$sermonUploadDir.'images', 0777); 
    118             } 
    119             update_option('sb_sermon_db_version', '1.2');    
    120         case '1.2': 
    121             $wpdb->query("ALTER TABLE ".$wpdb->prefix."sb_stuff ADD count INT(10) NOT NULL"); 
    122             $wpdb->query("ALTER TABLE ".$wpdb->prefix."sb_books_sermons ADD INDEX (sermon_id)"); 
    123             $wpdb->query("ALTER TABLE ".$wpdb->prefix."sb_sermons_tags ADD INDEX (sermon_id)"); 
    124             update_option('sb_sermon_db_version', '1.3'); 
    125         case '1.3': 
    126             $wpdb->query("ALTER TABLE ".$wpdb->prefix."sb_series ADD page_id INT(10) NOT NULL"); 
    127             $wpdb->query("ALTER TABLE ".$wpdb->prefix."sb_sermons ADD page_id INT(10) NOT NULL"); 
    128             add_option('sb_display_method', 'dynamic'); 
    129             add_option('sb_sermons_per_page', '15'); 
    130             add_option('sb_sermon_multi_output', base64_encode(strtr(sb_get_value('multi_form'), sb_search_results_dictionary()))); 
    131             add_option('sb_sermon_single_output', base64_encode(strtr(sb_get_value('single_form'), sb_sermon_page_dictionary()))); 
    132             add_option('sb_sermon_style_output', base64_encode(stripslashes(base64_decode(get_option('sb_sermon_style'))))); 
    133             add_option('sb_sermon_style_date_modified', strtotime('now')); 
    134             update_option('sb_sermon_db_version', '1.4'); 
    135         case '1.4' : 
    136             return; 
    137         default: 
    138             update_option('sb_sermon_db_version', '1.0'); 
    139     }        
    140  
    141     //Create default tables 
    142    $table_name = $wpdb->prefix . "sb_preachers"; 
    143    if($wpdb->get_var("show tables like '$table_name'") != $table_name) {             
    144       $sql = "CREATE TABLE " . $table_name . " ( 
    145         `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
    146         `name` VARCHAR( 30 ) NOT NULL , 
    147         `description` TEXT NOT NULL , 
    148         `image` VARCHAR( 255 ) NOT NULL, 
    149         PRIMARY KEY ( `id` ) 
    150         );"; 
    151       dbDelta($sql); 
    152       $sql = "INSERT INTO " . $table_name . "(name, description, image) VALUES ( 'C H Spurgeon', '', '' );"; 
    153       dbDelta($sql); 
    154       $sql = "INSERT INTO " . $table_name . "(name, description, image) VALUES ( 'Martyn Lloyd-Jones', '', '' );"; 
    155       dbDelta($sql); 
    156    } 
    157     
    158    $table_name = $wpdb->prefix . "sb_series"; 
    159    if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
    160       $sql = "CREATE TABLE " . $table_name . " ( 
    161         `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
    162         `name` VARCHAR( 255 ) NOT NULL , 
    163         `page_id` INT(10) NOT NULL, 
    164         PRIMARY KEY ( `id` ) 
    165         );"; 
    166       dbDelta($sql); 
    167       $sql = "INSERT INTO " . $table_name . "(name) VALUES ( 'Exposition of the Psalms' );"; 
    168       dbDelta($sql); 
    169       $sql = "INSERT INTO " . $table_name . "(name) VALUES ( 'Exposition of Romans' );"; 
    170       dbDelta($sql); 
    171    } 
    172     
    173    $table_name = $wpdb->prefix . "sb_services"; 
    174    if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
    175       $sql = "CREATE TABLE " . $table_name . " ( 
    176         `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
    177         `name` VARCHAR( 255 ) NOT NULL , 
    178         `time` VARCHAR( 5 ) NOT NULL ,  
    179         PRIMARY KEY ( `id` ) 
    180         );"; 
    181       dbDelta($sql); 
    182       $sql = "INSERT INTO " . $table_name . "(name, time) VALUES ( 'Sunday Morning', '10:30' );"; 
    183       dbDelta($sql); 
    184       $sql = "INSERT INTO " . $table_name . "(name, time) VALUES ( 'Sunday Evening', '18:00' );"; 
    185       dbDelta($sql); 
    186       $sql = "INSERT INTO " . $table_name . "(name, time) VALUES ( 'Midweek Meeting', '19:00' );"; 
    187       dbDelta($sql); 
    188       $sql = "INSERT INTO " . $table_name . "(name, time) VALUES ( 'Special event', '20:00' );"; 
    189       dbDelta($sql); 
    190    } 
    191     
    192    $table_name = $wpdb->prefix . "sb_sermons"; 
    193    if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
    194       $sql = "CREATE TABLE " . $table_name . " ( 
    195         `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
    196         `title` VARCHAR( 255 ) NOT NULL , 
    197         `preacher_id` INT( 10 ) NOT NULL , 
    198         `date` DATE NOT NULL , 
    199         `service_id` INT( 10 ) NOT NULL , 
    200         `series_id` INT( 10 ) NOT NULL , 
    201         `start` TEXT NOT NULL , 
    202         `end` TEXT NOT NULL , 
    203         `description` TEXT , 
    204         `time` VARCHAR ( 5 ),  
    205         `override` TINYINT ( 1 ) ,   
    206         `page_id` INT(10) NOT NULL, 
    207         PRIMARY KEY ( `id` ) 
    208         );"; 
    209       dbDelta($sql); 
    210    } 
    211  
    212     $table_name = $wpdb->prefix . "sb_books_sermons"; 
    213     if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
    214       $sql = "CREATE TABLE " . $table_name . " (         
    215         `id` INT(10) NOT NULL AUTO_INCREMENT, 
    216         `book_name` VARCHAR( 30 ) NOT NULL ,         
    217         `chapter` INT(10) NOT NULL, 
    218         `verse` INT(10) NOT NULL, 
    219         `order` INT(10) NOT NULL, 
    220         `type` VARCHAR ( 30 ),  
    221         `sermon_id` INT( 10 ) NOT NULL, 
    222         INDEX (`sermon_id`), 
    223         PRIMARY KEY ( `id` ) 
    224         );"; 
    225       dbDelta($sql); 
    226    } 
    227  
    228     $table_name = $wpdb->prefix . "sb_books"; 
    229     if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
    230       $sql = "CREATE TABLE " . $table_name . " (         
    231         `id` INT(10) NOT NULL AUTO_INCREMENT, 
    232         `name` VARCHAR( 30 ) NOT NULL , 
    233         PRIMARY KEY ( `id` ) 
    234         );"; 
    235       dbDelta($sql); 
    236    } 
    237     
    238    $table_name = $wpdb->prefix . "sb_stuff"; 
    239    if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
    240       $sql = "CREATE TABLE " . $table_name . " ( 
    241         `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
    242         `type` VARCHAR( 30 ) NOT NULL , 
    243         `name` TEXT NOT NULL , 
    244         `sermon_id` INT( 10 ) NOT NULL , 
    245         `count` INT( 10 ) NOT NULL , 
    246         PRIMARY KEY ( `id` ) 
    247         );"; 
    248       dbDelta($sql); 
    249    } 
    250  
    251     $table_name = $wpdb->prefix . "sb_tags"; 
     100     //Upgrade database from earlier versions 
     101    if ($db_version) { 
     102        switch ($db_version) { 
     103            case '1.0':  
     104                // Also moves files from old default folder to new default folder 
     105                $oldSermonPath = sb_get_value('plugin_path')."/files/"; 
     106                $files = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}sb_stuff WHERE type = 'file' ORDER BY name asc");  
     107                foreach ((array)$files as $file) { 
     108                    @chmod(sb_get_value('wordpress_path').$oldSermonPath.$file->name, 0777); 
     109                    @rename(sb_get_value('wordpress_path').$oldSermonPath.$file->name, sb_get_value('wordpress_path').$sermonUploadDir.$file->name); 
     110                } 
     111                $table_name = $wpdb->prefix . "sb_preachers"; 
     112                if($wpdb->get_var("show tables like '$table_name'") == $table_name) {             
     113                      $wpdb->query("ALTER TABLE " . $table_name . " ADD `description` TEXT NOT NULL, ADD `image` VARCHAR( 255 ) NOT NULL ;"); 
     114                } 
     115                update_option('sb_sermon_db_version', '1.1');        
     116            case '1.1': 
     117                add_option('sb_sermon_style', base64_encode($defaultStyle)); 
     118                if(!is_dir(sb_get_value('wordpress_path').$sermonUploadDir.'images') && sb_mkdir(sb_get_value('wordpress_path').$sermonUploadDir.'images')){ 
     119                    @chmod(sb_get_value('wordpress_path').$sermonUploadDir.'images', 0777); 
     120                } 
     121                update_option('sb_sermon_db_version', '1.2');    
     122            case '1.2': 
     123                $wpdb->query("ALTER TABLE ".$wpdb->prefix."sb_stuff ADD count INT(10) NOT NULL"); 
     124                $wpdb->query("ALTER TABLE ".$wpdb->prefix."sb_books_sermons ADD INDEX (sermon_id)"); 
     125                $wpdb->query("ALTER TABLE ".$wpdb->prefix."sb_sermons_tags ADD INDEX (sermon_id)"); 
     126                update_option('sb_sermon_db_version', '1.3'); 
     127            case '1.3': 
     128                $wpdb->query("ALTER TABLE ".$wpdb->prefix."sb_series ADD page_id INT(10) NOT NULL"); 
     129                $wpdb->query("ALTER TABLE ".$wpdb->prefix."sb_sermons ADD page_id INT(10) NOT NULL"); 
     130                add_option('sb_display_method', 'dynamic'); 
     131                add_option('sb_sermons_per_page', '15'); 
     132                add_option('sb_sermon_multi_output', base64_encode(strtr(sb_get_value('multi_form'), sb_search_results_dictionary()))); 
     133                add_option('sb_sermon_single_output', base64_encode(strtr(sb_get_value('single_form'), sb_sermon_page_dictionary()))); 
     134                add_option('sb_sermon_style_output', base64_encode(stripslashes(base64_decode(get_option('sb_sermon_style'))))); 
     135                add_option('sb_sermon_style_date_modified', strtotime('now')); 
     136                update_option('sb_sermon_db_version', '1.4'); 
     137            case '1.4' : 
     138                //Remove duplicate indexes added by a previous bug 
     139                $extra_indexes = $wpdb->get_results("SELECT index_name, table_name FROM INFORMATION_SCHEMA.STATISTICS WHERE table_schema = '".DB_NAME."' AND index_name LIKE 'sermon_id_%'"); 
     140                if (is_array($extra_indexes)) 
     141                    foreach ($extra_indexes as $extra_index) 
     142                        $wpdb->query("ALTER TABLE ".$extra_index->table_name." DROP INDEX {$extra_index->index_name}"); 
     143                //Remove duplicate tags added by a previous bug 
     144                $unique_tags = $wpdb->get_results("SELECT DISTINCT name FROM {$wpdb->prefix}sb_tags"); 
     145                if (is_array($unique_tags)) { 
     146                    foreach ($unique_tags as $tag) { 
     147                        $tag_ids = $wpdb->get_results("SELECT id FROM {$wpdb->prefix}sb_tags WHERE name='{$tag->name}'"); 
     148                        if (is_array($tag_ids)) { 
     149                            foreach ($tag_ids as $tag_id) { 
     150                                $wpdb->query("UPDATE {$wpdb->prefix}sb_sermons_tags SET tag_id='{$tag_ids[0]->id}' WHERE tag_id='{$tag_id->id}'"); 
     151                                if ($tag_ids[0]->id != $tag_id->id) 
     152                                    $wpdb->query("DELETE FROM {$wpdb->prefix}sb_tags WHERE id='{$tag_id->id}'"); 
     153                            } 
     154                        } 
     155                    } 
     156                } 
     157                sb_delete_unused_tags(); 
     158                $wpdb->query("ALTER TABLE {$wpdb->prefix}sb_tags CHANGE name name VARCHAR(255)"); 
     159                $wpdb->query("ALTER TABLE {$wpdb->prefix}sb_tags ADD UNIQUE (name)"); 
     160                update_option('sb_sermon_db_version', '1.5'); 
     161                return; 
     162            default: 
     163                update_option('sb_sermon_db_version', '1.0'); 
     164        }        
     165    } else { //Create default tables 
     166       $table_name = $wpdb->prefix . "sb_preachers"; 
     167       if($wpdb->get_var("show tables like '$table_name'") != $table_name) {             
     168          $sql = "CREATE TABLE " . $table_name . " ( 
     169            `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
     170            `name` VARCHAR( 30 ) NOT NULL , 
     171            `description` TEXT NOT NULL , 
     172            `image` VARCHAR( 255 ) NOT NULL, 
     173            PRIMARY KEY ( `id` ) 
     174            );"; 
     175          dbDelta($sql); 
     176          $sql = "INSERT INTO " . $table_name . "(name, description, image) VALUES ( 'C H Spurgeon', '', '' );"; 
     177          dbDelta($sql); 
     178          $sql = "INSERT INTO " . $table_name . "(name, description, image) VALUES ( 'Martyn Lloyd-Jones', '', '' );"; 
     179          dbDelta($sql); 
     180       } 
     181        
     182       $table_name = $wpdb->prefix . "sb_series"; 
    252183       if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
    253184          $sql = "CREATE TABLE " . $table_name . " ( 
    254185            `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
    255             `name` TEXT NOT NULL , 
     186            `name` VARCHAR( 255 ) NOT NULL , 
     187            `page_id` INT(10) NOT NULL, 
     188            PRIMARY KEY ( `id` ) 
     189            );"; 
     190          dbDelta($sql); 
     191          $sql = "INSERT INTO " . $table_name . "(name) VALUES ( 'Exposition of the Psalms' );"; 
     192          dbDelta($sql); 
     193          $sql = "INSERT INTO " . $table_name . "(name) VALUES ( 'Exposition of Romans' );"; 
     194          dbDelta($sql); 
     195       } 
     196        
     197       $table_name = $wpdb->prefix . "sb_services"; 
     198       if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
     199          $sql = "CREATE TABLE " . $table_name . " ( 
     200            `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
     201            `name` VARCHAR( 255 ) NOT NULL , 
     202            `time` VARCHAR( 5 ) NOT NULL ,  
     203            PRIMARY KEY ( `id` ) 
     204            );"; 
     205          dbDelta($sql); 
     206          $sql = "INSERT INTO " . $table_name . "(name, time) VALUES ( 'Sunday Morning', '10:30' );"; 
     207          dbDelta($sql); 
     208          $sql = "INSERT INTO " . $table_name . "(name, time) VALUES ( 'Sunday Evening', '18:00' );"; 
     209          dbDelta($sql); 
     210          $sql = "INSERT INTO " . $table_name . "(name, time) VALUES ( 'Midweek Meeting', '19:00' );"; 
     211          dbDelta($sql); 
     212          $sql = "INSERT INTO " . $table_name . "(name, time) VALUES ( 'Special event', '20:00' );"; 
     213          dbDelta($sql); 
     214       } 
     215        
     216       $table_name = $wpdb->prefix . "sb_sermons"; 
     217       if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
     218          $sql = "CREATE TABLE " . $table_name . " ( 
     219            `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
     220            `title` VARCHAR( 255 ) NOT NULL , 
     221            `preacher_id` INT( 10 ) NOT NULL , 
     222            `date` DATE NOT NULL , 
     223            `service_id` INT( 10 ) NOT NULL , 
     224            `series_id` INT( 10 ) NOT NULL , 
     225            `start` TEXT NOT NULL , 
     226            `end` TEXT NOT NULL , 
     227            `description` TEXT , 
     228            `time` VARCHAR ( 5 ),  
     229            `override` TINYINT ( 1 ) ,   
     230            `page_id` INT(10) NOT NULL, 
    256231            PRIMARY KEY ( `id` ) 
    257232            );"; 
    258233          dbDelta($sql); 
    259234       } 
    260      
    261     $table_name = $wpdb->prefix . "sb_sermons_tags"; 
    262        if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
    263           $sql = "CREATE TABLE " . $table_name . " ( 
    264             `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
    265             `sermon_id` INT( 10 ) NOT NULL , 
    266             `tag_id` INT( 10 ) NOT NULL , 
     235 
     236        $table_name = $wpdb->prefix . "sb_books_sermons"; 
     237        if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
     238          $sql = "CREATE TABLE " . $table_name . " (         
     239            `id` INT(10) NOT NULL AUTO_INCREMENT, 
     240            `book_name` VARCHAR( 30 ) NOT NULL ,         
     241            `chapter` INT(10) NOT NULL, 
     242            `verse` INT(10) NOT NULL, 
     243            `order` INT(10) NOT NULL, 
     244            `type` VARCHAR ( 30 ),  
     245            `sermon_id` INT( 10 ) NOT NULL, 
    267246            INDEX (`sermon_id`), 
    268247            PRIMARY KEY ( `id` ) 
     
    270249          dbDelta($sql); 
    271250       } 
    272     $welcome_name = __('Delete', $sermon_domain); 
    273     $welcome_text = __('Congratulations, you just completed the installation!', $sermon_domain);     
    274     add_option('sb_sermon_upload_dir', $sermonUploadDir); 
    275     add_option('sb_sermon_upload_url', sb_get_default('attachment_url')); 
    276     add_option('sb_podcast', sb_get_value('wordpress_url').'?podcast'); 
    277     add_option('sb_display_method', 'dynamic'); 
    278     add_option('sb_sermons_per_page', '15'); 
    279     delete_option('sb_sermon_multi_form'); 
    280     add_option('sb_sermon_multi_form', base64_encode(sb_default_multi_template())); 
    281     delete_option('sb_sermon_single_form'); 
    282     add_option('sb_sermon_single_form', base64_encode(sb_default_single_template())); 
    283     delete_option('sb_sermon_style'); 
    284     add_option('sb_sermon_style', base64_encode(sb_default_css())); 
    285     add_option('sb_sermon_multi_output', base64_encode(strtr(sb_default_multi_template(), sb_search_results_dictionary()))); 
    286     add_option('sb_sermon_single_output', base64_encode(strtr(sb_default_single_template(), sb_sermon_page_dictionary()))); 
    287     add_option('sb_sermon_style_output', base64_encode(sb_default_css())); 
    288     for ($i=0; $i < count($books); $i++) {  
    289         $wpdb->query("INSERT INTO {$wpdb->prefix}sb_books VALUES (null, '{$books[$i]}');"); 
     251 
     252        $table_name = $wpdb->prefix . "sb_books"; 
     253        if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
     254          $sql = "CREATE TABLE " . $table_name . " (         
     255            `id` INT(10) NOT NULL AUTO_INCREMENT, 
     256            `name` VARCHAR( 30 ) NOT NULL , 
     257            PRIMARY KEY ( `id` ) 
     258            );"; 
     259          dbDelta($sql); 
     260       } 
     261        
     262       $table_name = $wpdb->prefix . "sb_stuff"; 
     263       if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
     264          $sql = "CREATE TABLE " . $table_name . " ( 
     265            `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
     266            `type` VARCHAR( 30 ) NOT NULL , 
     267            `name` TEXT NOT NULL , 
     268            `sermon_id` INT( 10 ) NOT NULL , 
     269            `count` INT( 10 ) NOT NULL , 
     270            PRIMARY KEY ( `id` ) 
     271            );"; 
     272          dbDelta($sql); 
     273       } 
     274 
     275        $table_name = $wpdb->prefix . "sb_tags"; 
     276           if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
     277                $sql = "CREATE TABLE " . $table_name . " ( 
     278                    `id` int(10) NOT NULL auto_increment, 
     279                    `name` varchar(255) default NULL, 
     280                    PRIMARY KEY (`id`), 
     281                    UNIQUE KEY `name` (`name`) 
     282                    );"; 
     283              dbDelta($sql); 
     284           } 
     285         
     286        $table_name = $wpdb->prefix . "sb_sermons_tags"; 
     287           if($wpdb->get_var("show tables like '$table_name'") != $table_name) {       
     288              $sql = "CREATE TABLE " . $table_name . " ( 
     289                `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
     290                `sermon_id` INT( 10 ) NOT NULL , 
     291                `tag_id` INT( 10 ) NOT NULL , 
     292                INDEX (`sermon_id`), 
     293                PRIMARY KEY ( `id` ) 
     294                );"; 
     295              dbDelta($sql); 
     296           } 
     297        $welcome_name = __('Delete', $sermon_domain); 
     298        $welcome_text = __('Congratulations, you just completed the installation!', $sermon_domain);     
     299        add_option('sb_sermon_upload_dir', $sermonUploadDir); 
     300        add_option('sb_sermon_upload_url', sb_get_default('attachment_url')); 
     301        add_option('sb_podcast', sb_get_value('wordpress_url').'?podcast'); 
     302        add_option('sb_display_method', 'dynamic'); 
     303        add_option('sb_sermons_per_page', '15'); 
     304        delete_option('sb_sermon_multi_form'); 
     305        add_option('sb_sermon_multi_form', base64_encode(sb_default_multi_template())); 
     306        delete_option('sb_sermon_single_form'); 
     307        add_option('sb_sermon_single_form', base64_encode(sb_default_single_template())); 
     308        delete_option('sb_sermon_style'); 
     309        add_option('sb_sermon_style', base64_encode(sb_default_css())); 
     310        add_option('sb_sermon_style_date_modified', strtotime('now')); 
     311        add_option('sb_sermon_multi_output', base64_encode(strtr(sb_default_multi_template(), sb_search_results_dictionary()))); 
     312        add_option('sb_sermon_single_output', base64_encode(strtr(sb_default_single_template(), sb_sermon_page_dictionary()))); 
     313        add_option('sb_sermon_style_output', base64_encode(sb_default_css())); 
     314        for ($i=0; $i < count($books); $i++) {  
     315            $wpdb->query("INSERT INTO {$wpdb->prefix}sb_books VALUES (null, '{$books[$i]}');"); 
     316        } 
     317        add_option('sb_sermon_db_version', SB_DATABASE_VERSION); 
    290318    } 
    291     add_option('sb_sermon_db_version', '1.4'); 
    292319} 
    293320 
     
    12891316        $wpdb->query("UPDATE {$wpdb->prefix}sb_stuff SET sermon_id = 0 WHERE sermon_id = $mid AND type = 'file';"); 
    12901317        $wpdb->query("DELETE FROM {$wpdb->prefix}sb_stuff WHERE sermon_id = $mid AND type <> 'file';"); 
     1318        sb_delete_unused_tags(); 
    12911319        echo '<div id="message" class="updated fade"><p><b>'.__('Sermon removed from database.', $sermon_domain).'</b></div>'; 
    12921320    } 
     
    14591487        // deal with books 
    14601488        $wpdb->query("DELETE FROM {$wpdb->prefix}sb_books_sermons WHERE sermon_id = $id;");  
    1461         foreach ($startz as $i => $st) { 
     1489        if (isset($startz)) foreach ($startz as $i => $st) { 
    14621490            $wpdb->query("INSERT INTO {$wpdb->prefix}sb_books_sermons VALUES(null, '{$st['book']}', '{$st['chapter']}', '{$st['verse']}', $i, 'start', $id);"); 
    14631491        } 
    1464         foreach ($endz as $i => $ed) { 
     1492        if (isset($$endz)) foreach ($endz as $i => $ed) { 
    14651493            $wpdb->query("INSERT INTO {$wpdb->prefix}sb_books_sermons VALUES(null, '{$ed['book']}', '{$ed['chapter']}', '{$ed['verse']}', $i, 'end', $id);"); 
    14661494        } 
     
    15201548        foreach ($tags as $tag) { 
    15211549            $clean_tag = trim(mysql_real_escape_string($tag)); 
    1522             $wpdb->query("INSERT IGNORE INTO {$wpdb->prefix}sb_tags VALUES (null, '$clean_tag')"); 
    1523             $tag_id = $wpdb->insert_id; 
    1524             $wpdb->query("INSERT INTO {$wpdb->prefix}sb_sermons_tags VALUES (null, $id, $tag_id)"); 
    1525         } 
     1550            $existing_id = $wpdb->get_var("SELECT id FROM {$wpdb->prefix}sb_tags WHERE name='$clean_tag'"); 
     1551            if (is_null($existing_id)) { 
     1552                $wpdb->query("INSERT  INTO {$wpdb->prefix}sb_tags VALUES (null, '$clean_tag')"); 
     1553                $existing_id = $wpdb->insert_id; 
     1554            } 
     1555            $wpdb->query("INSERT INTO {$wpdb->prefix}sb_sermons_tags VALUES (null, $id, $existing_id)"); 
     1556        } 
     1557        sb_delete_unused_tags(); 
    15261558        // everything is fine, get out of here! 
    15271559        if(!$error) { 
     
    23102342} 
    23112343 
     2344// Displays stats in the dashboard 
     2345function sb_rightnow () { 
     2346    global $wpdb, $sermon_domain; 
     2347    $file_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."sb_stuff WHERE type='file'"); 
     2348    if ($file_count > 0) { 
     2349        $sermon_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."sb_sermons"); 
     2350        $preacher_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."sb_preachers"); 
     2351        $series_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."sb_series"); 
     2352        $tag_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."sb_tags WHERE name<>''"); 
     2353        $download_count = $wpdb->get_var("SELECT SUM(count) FROM ".$wpdb->prefix."sb_stuff"); 
     2354        $download_average = round($download_count/$sermon_count, 1); 
     2355        $most_popular = $wpdb->get_results("SELECT title, sermon_id, sum(count) AS c FROM ".$wpdb->prefix."sb_stuff LEFT JOIN ".$wpdb->prefix."sb_sermons ON ".$wpdb->prefix."sb_sermons.id = sermon_id GROUP BY sermon_id ORDER BY c DESC LIMIT 1"); 
     2356        $most_popular = $most_popular[0]; 
     2357        $output_string = '<p class="youhave">'.__("You have")." "; 
     2358        $output_string = $output_string.'<a href="'.sb_get_value('wordpress_url').'/wp-admin/admin.php?page=sermon-browser/uploads.php">'; 
     2359        $output_string = $output_string.sprintf(__ngettext('%d file', '%d files', $file_count), $file_count)."</a> "; 
     2360        if ($sermon_count > 0) { 
     2361            $output_string = $output_string.__("in")." ".'<a href="'.sb_get_value('admin_url').'sermon.php">'; 
     2362            $output_string = $output_string.sprintf(__ngettext('%d sermon', '%d sermons', $sermon_count), $sermon_count)."</a> "; 
     2363        } 
     2364        if ($preacher_count > 0) { 
     2365            $output_string = $output_string.__("from")." ".'<a href="'.sb_get_value('wordpress_url').'/wp-admin/admin.php?page=sermon-browser/preachers.php">'; 
     2366            $output_string = $output_string.sprintf(__ngettext('%d preacher', '%d preachers', $preacher_count), $preacher_count)."</a> "; 
     2367        } 
     2368        if ($series_count > 0) { 
     2369            $output_string = $output_string.__("in")." ".'<a href="'.sb_get_value('wordpress_url').'/wp-admin/admin.php?page=sermon-browser/manage.php">'; 
     2370            $output_string = $output_string.sprintf(__('%d series'), $series_count)."</a> "; 
     2371        } 
     2372        if ($tag_count > 0)  
     2373            $output_string = $output_string.__("using")." ".sprintf(__ngettext('%d tag', '%d tags', $tag_count), $tag_count)." "; 
     2374        if (substr($output_string, -1) == " ") 
     2375            $output_string = substr($output_string, 0, -1); 
     2376        if ($download_count > 0)  
     2377            $output_string = $output_string.". ".sprintf(__ngettext('Only one file has been downloaded', 'They have been downloaded a total of %d times', $download_count), $download_count); 
     2378        if ($download_count > 1) { 
     2379            $output_string = $output_string.", ".sprintf(__ngettext('an average of once per sermon', 'an average of %d times per sermon', $download_average), $download_average); 
     2380            $most_popular_title = '<a href="'.sb_get_value('wordpress_url').'/wp-admin/admin.php?page=sermon-browser/new_sermon.php&mid='.$most_popular->sermon_id.'">'.$most_popular->title.'</a>'; 
     2381            $output_string = $output_string.". ".sprintf(__('The most popular sermon is %s, which has been downloaded %s times'), $most_popular_title, $most_popular->c); 
     2382        } 
     2383        $output_string = $output_string.'.</p>'; 
     2384    } 
     2385    echo $output_string; 
     2386} 
     2387 
    23122388// Find new files uploaded by FTP 
    23132389function sb_scan_dir() { 
     
    23512427} 
    23522428 
    2353 // Recursive mkdir function for PHP < 5.0.0 
    2354 function sb_mkdir($pathname, $mode=0777) 
    2355 { 
     2429// Recursive mkdir function 
     2430function sb_mkdir($pathname, $mode=0777) { 
    23562431    is_dir(dirname($pathname)) || sb_mkdir(dirname($pathname), $mode); 
    23572432    @mkdir($pathname, $mode); 
    23582433    return @chmod($pathname, $mode); 
     2434} 
     2435 
     2436// Delete any unused tags 
     2437function sb_delete_unused_tags() { 
     2438    global $wpdb; 
     2439    $unused_tags = $wpdb->get_results("SELECT {$wpdb->prefix}sb_tags.id AS id, {$wpdb->prefix}sb_sermons_tags.id AS sid FROM {$wpdb->prefix}sb_tags LEFT JOIN {$wpdb->prefix}sb_sermons_tags ON {$wpdb->prefix}sb_tags.id = {$wpdb->prefix}sb_sermons_tags.tag_id WHERE {$wpdb->prefix}sb_sermons_tags.tag_id IS NULL"); 
     2440    if (is_array($unused_tags)) 
     2441        foreach ($unused_tags AS $unused_tag) 
     2442            $wpdb->query("DELETE FROM {$wpdb->prefix}sb_tags WHERE id='{$unused_tag->id}'"); 
    23592443} 
    23602444 
Note: See TracChangeset for help on using the changeset viewer.