WordPress.org

Plugin Directory

Changeset 52938 for sermon-browser/trunk


Ignore:
Timestamp:
07/03/08 09:02:45 (6 years ago)
Author:
mark8barnes
Message:
 
Location:
sermon-browser/trunk
Files:
1 added
3 deleted
7 edited

Legend:

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

    r51888 r52938  
    3434$sdict = array( 
    3535    '[sermon_title]' => '<?php echo stripslashes($sermon["Sermon"]->title) ?>', 
    36     '[sermon_description]' => '<?php echo stripslashes($sermon["Sermon"]->description) ?>', 
     36    '[sermon_description]' => '<?php echo wpautop(stripslashes($sermon["Sermon"]->description)) ?>', 
    3737    '[preacher_link]' => '<a href="<?php sb_print_preacher_link($sermon["Sermon"]) ?>"><?php echo stripslashes($sermon["Sermon"]->preacher) ?></a>', 
    3838    '[preacher_description]' => '<?php sb_print_preacher_description($sermon["Sermon"]) ?>', 
  • sermon-browser/trunk/frontend.php

    r52078 r52938  
    33// Required files 
    44require_once('dictionary.php'); //Imports template tags 
    5 require_once('widget.php'); 
     5require_once('widget.php'); // Displays widget if requested 
    66 
    77// Word list for URL building purpose 
     
    1919// Get the URL of the sermons page 
    2020function sb_display_url() { 
    21     global $sef, $wpdb, $isMe, $post; 
    22     if (!$sef) { 
    23         if ($isMe && $permalink_structure) $display_url=get_permalink( $post->ID ); 
    24         else { 
    25             $pageid = $wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE post_content = '[sermons]' AND post_status = 'publish' AND post_date < NOW();"); 
    26             $display_url = get_permalink($pageid); 
    27         } 
    28         $sef=$display_url; 
    29     } 
    30     return $sef; 
    31 } 
    32  
     21    global $display_url, $wpdb; 
     22    if (!$display_url) { 
     23        $pageid = $wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE post_content = '[sermons]' AND post_status = 'publish' AND post_date < NOW();"); 
     24        $display_url = get_permalink($pageid); 
     25    } 
     26    return $display_url; 
     27} 
     28 
     29//Are we appending sermon-browser query to an existing query, or not? 
    3330function sb_query_char () { 
    34     global $sef; 
    35     if (strpos($sef, '?')===FALSE) { 
     31    if (strpos(sb_display_url(), '?')===FALSE) { 
    3632        return '?'; 
    3733    } else { 
     
    3935    } 
    4036} 
    41  
    4237 
    4338//Modify page title 
     
    6661} 
    6762 
    68 //Fix for AudioPlayer v2 
    69 if (!function_exists('ap_insert_player_widgets') & function_exists('insert_audio_player')) { 
     63//Fix to ensure AudioPlayer v2 and AudioPlayer v1 both work 
     64if (!function_exists('ap_insert_player_widgets') && function_exists('insert_audio_player')) { 
    7065    function ap_insert_player_widgets($params) { 
    7166        return insert_audio_player($params); 
     
    7368} 
    7469 
    75 function sb_edit_link ($id) { 
    76     if (current_user_can('edit_posts'))  
    77         echo '<div class="sb_edit_link"><a href="'.get_bloginfo('wpurl').'/wp-admin/admin.php?page=sermon-browser/new_sermon.php&mid='.$id.'">Edit Sermon</a></div>'; 
    78 } 
    79  
    80 //Download external webpage 
     70//Downloads external webpage. Used to add Bible passages to sermon page. 
    8171function sb_download_page ($page_url) { 
    8272    if (function_exists(curl_init)) { 
     
    112102} 
    113103 
    114 //Tidy Bible reference 
    115 function sb_tidy_reference ($start, $end) { 
    116     $r1 = $start['book']; 
     104// Returns human friendly Bible reference (e.g. John 3:1-16, not John 3:1-John 3:16) 
     105function sb_tidy_reference ($start, $end, $add_link = FALSE) { 
     106    if ($add_link) { 
     107        $r1 = '<a href="'.sb_get_book_link($start['book']).'">'.$start['book'].'</a>'; 
     108    } else { 
     109        $r1 = $start['book']; 
     110    } 
    117111    $r2 = $start['chapter']; 
    118112    $r3 = $start['verse']; 
    119     $r4 = $end['book']; 
     113    if ($add_link) { 
     114        $r4 = '<a href="'.sb_get_book_link($end['book']).'">'.$end['book'].'</a>'; 
     115    } else { 
     116        $r4 = $end['book']; 
     117    } 
    120118    $r5 = $end['chapter']; 
    121119    $r6 = $end['verse']; 
     
    133131} 
    134132 
    135 //Add ESV text 
    136 function sb_add_esv_text ($start, $end) { 
    137     // If you are experiencing errors, you should sign up for an ESV API key, and insert the name of your key in place of the letters IP in the URL below (.e.g. ...passageQuery?key=YOURAPIKEY&passage=...) 
    138     $esv_url = 'http://www.esvapi.org/v2/rest/passageQuery?key=IP&passage='.urlencode(sb_tidy_reference ($start, $end)).'&include-headings=false&include-footnotes=false'; 
    139     return sb_download_page ($esv_url); 
     133//Print unstyled bible passage 
     134function sb_print_bible_passage ($start, $end) { 
     135    echo "<p class='bible-passage'>".sb_tidy_reference($start, $end)."</p>"; 
     136} 
     137 
     138// Returns human friendly Bible reference with link to filter 
     139function sb_get_books($start, $end) { 
     140    return sb_tidy_reference ($start, $end, TRUE); 
    140141} 
    141142 
     
    207208} 
    208209 
    209 //Print unstyled bible passage 
    210 function sb_print_bible_passage ($start, $end) { 
    211     $r1 = $start['book']; 
    212     $r2 = $start['chapter']; 
    213     $r3 = $start['verse']; 
    214     $r4 = $end['book']; 
    215     $r5 = $end['chapter']; 
    216     $r6 = $end['verse']; 
    217     if (empty($start['book'])) { 
    218         return ''; 
    219     } 
    220     if ($start['book'] == $end['book']) { 
    221         if ($start['chapter'] == $end['chapter']) { 
    222             $reference = "$r1 $r2:$r3-$r6"; 
    223         } 
    224         else $reference = "$r1 $r2:$r3-$r5:$r6"; 
    225     }    
    226     else $reference =  "$r1 $r2:$r3 - $r4 $r5:$r6"; 
    227     echo "<p class='bible-passage'>".$reference."</p>"; 
    228 } 
    229  
    230 // Display podcast or do download 
     210//Returns ESV text 
     211function sb_add_esv_text ($start, $end) { 
     212    // If you are experiencing errors, you should sign up for an ESV API key, and insert the name of your key in place of the letters IP in the URL below (.e.g. ...passageQuery?key=YOURAPIKEY&passage=...) 
     213    $esv_url = 'http://www.esvapi.org/v2/rest/passageQuery?key=IP&passage='.urlencode(sb_tidy_reference ($start, $end)).'&include-headings=false&include-footnotes=false'; 
     214    return sb_download_page ($esv_url); 
     215} 
     216 
     217//Adds edit sermon link if current user has edit rights 
     218function sb_edit_link ($id) { 
     219    if (current_user_can('edit_posts'))  
     220        echo '<div class="sb_edit_link"><a href="'.get_bloginfo('wpurl').'/wp-admin/admin.php?page=sermon-browser/new_sermon.php&mid='.$id.'">Edit Sermon</a></div>'; 
     221} 
     222 
     223// Display podcast, or download linked files 
    231224function sb_hijack() { 
    232     function sb_get_stuff_count ($stuff_name) { 
     225    function sb_get_download_count ($stuff_name) { 
    233226        global $wpdb; 
    234227        $count = $wpdb->get_var("SELECT COUNT FROM ".$wpdb->prefix."sb_stuff WHERE name='".mysql_real_escape_string($stuff_name)."'"); 
     
    236229    } 
    237230     
    238     function sb_increase_stuff_count ($stuff_name) { 
     231    function sb_increase_download_count ($stuff_name) { 
    239232        global $wpdb; 
    240233        $wpdb->query("UPDATE ".$wpdb->prefix."sb_stuff SET COUNT=COUNT+1 WHERE name='".mysql_real_escape_string($stuff_name)."'"); 
     
    243236    global $filetypes; 
    244237     
     238    //Displays podcast 
    245239    if (isset($_REQUEST['podcast'])) { 
    246240        global $wordpressRealPath; 
     
    267261        die(); 
    268262    } 
     263     
     264    //Forces sermon download of local file 
    269265    if (isset($_REQUEST['download']) AND isset($_REQUEST['file_name'])) { 
    270266        global $wordpressRealPath; 
     
    278274        header("Content-Disposition: attachment; filename=".$file_name.";"); 
    279275        header("Content-Transfer-Encoding: binary"); 
    280         sb_increase_stuff_count ($file_name); 
     276        sb_increase_download_count ($file_name); 
    281277        $file_name = $wordpressRealPath.get_option("sb_sermon_upload_dir").$file_name; 
    282278        header("Content-Length: ".filesize($file_name)); 
     
    284280        exit(); 
    285281    } 
     282     
     283    //Forces sermon download of external URL 
    286284    if (isset($_REQUEST['download']) AND isset($_REQUEST['url'])) { 
    287285        $url = urldecode($_GET['url']); 
     
    312310            header("Content-Transfer-Encoding: binary"); 
    313311            if ($filesize) header("Content-Length: ".$filesize); 
    314             sb_increase_stuff_count ($url); 
     312            sb_increase_download_count ($url); 
    315313            @readfile($url); 
    316314            exit(); 
    317315        } 
    318316        else { 
    319             sb_increase_stuff_count ($url); 
     317            sb_increase_download_count ($url); 
    320318            header('Location: '.$url); 
    321319        } 
    322320    } 
     321     
     322    //Returns local file (doesn't force download) 
    323323    if (isset($_REQUEST['show']) AND isset($_REQUEST['file_name'])) { 
    324324        global $wordpressRealPath, $filetypes; 
     
    329329        else { 
    330330            header ("Content-Type: application/octet-stream"); } 
    331         sb_increase_stuff_count ($file_name); 
     331        sb_increase_download_count ($file_name); 
    332332        $file_name = $wordpressRealPath.get_option("sb_sermon_upload_dir").$file_name; 
    333333        header("Content-Length: ".filesize($file_name)); 
     
    336336        exit(); 
    337337    } 
     338     
     339    //Returns contents of external URL(doesn't force download) 
    338340    if (isset($_REQUEST['show']) AND isset($_REQUEST['url'])) { 
    339341        $url = URLDecode($_GET['url']); 
     
    359361            header("Content-Transfer-Encoding: binary"); 
    360362            if ($filesize) header("Content-Length: ".$filesize); 
    361             sb_increase_stuff_count ($url); 
     363            sb_increase_download_count ($url); 
    362364            @readfile($url); 
    363365            exit(); 
    364366        } 
    365367        else { 
    366             sb_increase_stuff_count ($url); 
     368            sb_increase_download_count ($url); 
    367369            header('Location: '.$url); 
    368370        } 
     
    418420}} 
    419421 
    420 // main entry 
     422// Display single sermon or multi-sermons page 
    421423function sb_sermons_filter($content) { 
    422424    global $wpdb, $clr, $record_count; 
    423     global $wordpressRealPath, $isMe; 
    424     if (!strstr($content, '[sermons]')) {  
    425         $isMe = false; return $content; 
    426     } else { 
    427         $isMe = true; 
    428     } 
     425    global $wordpressRealPath; 
    429426    ob_start(); 
    430427     
     
    432429        $clr = true; 
    433430        $sermon = sb_get_single_sermon((int) $_GET['sermon_id']); 
    434         include($wordpressRealPath.'/wp-content/plugins/sermon-browser/single.php'); 
     431        eval('?>'.base64_decode(get_option('sb_sermon_single_output'))); 
    435432    } else { 
    436433        $clr = false; 
     
    451448        $_REQUEST['page'] ? $_REQUEST['page'] : 1            
    452449        ); 
    453         include($wordpressRealPath.'/wp-content/plugins/sermon-browser/multi.php');      
     450        eval('?>'.base64_decode(get_option('sb_sermon_multi_output'))); 
    454451    }            
    455452    $content = str_replace('[sermons]', ob_get_contents(), $content); 
    456      
    457453    ob_end_clean();      
    458      
    459454    return $content; 
    460455} 
    461456 
     457// Returns URL for search links 
    462458function sb_build_url($arr, $clear = false) { 
    463     global $wl, $post, $sef, $wpdb; 
    464     $sef = sb_display_url(); 
     459    global $wl, $post, $wpdb; 
    465460    $foo = array_merge((array) $_GET, (array) $_POST, $arr); 
     461    if ($foo['page'] && (strpos ($foo['page'], 'sermon-browser/options.php') != FALSE)) { //Remove unwanted parameters passed by the admin page when re-generating pages/posts 
     462        unset($foo['page']); 
     463        if ($foo['rewrite']) unset($foo['rewrite']); 
     464        if ($foo['start']) unset($foo['start']); 
     465        if ($foo['start']) unset($foo['method']); 
     466        if ($foo['start']) unset($foo['mode']); 
     467    } 
    466468    foreach ($foo as $k => $v) { 
    467469        if ((!$clear || in_array($k, array_keys($arr)) || !in_array($k, $wl)) && $k != 'page_id' && $k != 'p') { 
     
    469471        } 
    470472    } 
    471     return $sef.sb_query_char().implode('&', $bar); 
    472 } 
    473  
     473    return sb_display_url().sb_query_char().implode('&', $bar); 
     474} 
     475 
     476// Adds sermon-browser code to Wordpress header 
    474477function sb_print_header() { 
    475478    global $sermon_domain, $sermompage; 
     
    478481    <link rel="alternate" type="application/rss+xml" title="<?php _e('Sermon podcast', $sermon_domain) ?>" href="<?php echo get_option('sb_podcast') ?>" /> 
    479482    <link rel="stylesheet" href="<?php echo $url ?>/wp-content/plugins/sermon-browser/datepicker.css" type="text/css"/> 
    480     <link rel="stylesheet" href="<?php echo $url ?>/wp-content/plugins/sermon-browser/style.css" type="text/css"/> 
     483    <link rel="stylesheet" href="<?php echo $url ?>/wp-content/plugins/sermon-browser/style.php" type="text/css"/> 
    481484    <script type="text/javascript" src="<?php echo $url ?>/wp-includes/js/jquery/jquery.js"></script> 
    482485    <script type="text/javascript" src="<?php echo $url ?>/wp-content/plugins/sermon-browser/datePicker.js"></script> 
     
    484487} 
    485488 
    486 // pretty books 
    487 function sb_get_books($start, $end) { 
    488     $r1 = '<a href="'.sb_get_book_link($start['book']).'">'.$start['book'].'</a>'; 
    489     $r2 = $start['chapter']; 
    490     $r3 = $start['verse']; 
    491      
    492     $r4 = '<a href="'.sb_get_book_link($end['book']).'">'.$end['book'].'</a>'; 
    493     $r5 = $end['chapter']; 
    494     $r6 = $end['verse']; 
    495      
    496     if (empty($start['book'])) { 
    497         return ''; 
    498     } 
    499      
    500     if ($start['book'] == $end['book']) { 
    501         if ($start['chapter'] == $end['chapter']) { 
    502             if($start['verse'] == $end['verse']){ 
    503                 return "$r1 $r2:$r3"; 
    504             } 
    505             return "$r1 $r2:$r3-$r6"; 
    506         } 
    507         return "$r1 $r2:$r3-$r5:$r6"; 
    508     }    
    509     return "$r1 $r2:$r3 - $r4 $r5:$r6"; 
    510 } 
    511  
     489// Returns podcast URL 
    512490function sb_podcast_url() { 
    513491    return str_replace(' ', '%20', sb_build_url(array('podcast' => 1, 'dir'=>'desc', 'sortby'=>'m.date'))); 
    514492} 
    515493 
    516 function sb_print_first_mp3($sermon) { 
    517     $stuff = sb_get_stuff($sermon); 
    518     foreach ((array) $stuff['Files'] as $file) { 
    519         $ext = substr($file, strrpos($file, '.') + 1); 
    520         if (strtolower($ext) == 'mp3') { 
    521             echo str_replace(' ', '%20', get_option('sb_sermon_upload_url').$file); 
    522             break; 
    523         } 
    524     } 
    525 } 
    526 function sb_print_first_mp3_size($sermon) { 
    527     global $wordpressRealPath; 
    528     $stuff = sb_get_stuff($sermon); 
    529     foreach ((array) $stuff['Files'] as $file) { 
    530         $ext = substr($file, strrpos($file, '.') + 1); 
    531         if (strtolower($ext) == 'mp3') { 
    532             $filename = $wordpressRealPath.get_option('sb_sermon_upload_dir').$file; 
    533             echo @filesize($filename); 
    534             break; 
    535         } 
    536     } 
    537 } 
    538  
     494// Prints sermon search URL 
    539495function sb_print_sermon_link($sermon) { 
    540496    echo sb_build_url(array('sermon_id' => $sermon->id), true); 
    541497} 
    542498 
     499// Prints preacher search URL 
    543500function sb_print_preacher_link($sermon) { 
    544501    global $clr; 
     
    546503} 
    547504 
     505// Prints series search URL 
    548506function sb_print_series_link($sermon) { 
    549507    global $clr;     
     
    551509} 
    552510 
     511// Prints service search URL 
    553512function sb_print_service_link($sermon) { 
    554513    global $clr; 
     
    556515} 
    557516 
     517// Prints bible book search URL 
    558518function sb_get_book_link($book_name) { 
    559519    global $clr; 
     
    561521} 
    562522 
     523// Prints tag search URL 
    563524function sb_get_tag_link($tag) { 
    564525    global $clr; 
     
    566527} 
    567528 
     529// Prints tags 
    568530function sb_print_tags($tags) { 
    569531    foreach ((array) $tags as $tag) { 
     
    574536} 
    575537 
     538//Prints tag cloud 
    576539function sb_print_tag_clouds() { 
    577540    global $wpdb; 
     
    580543        $cnt[$tag->name]++; 
    581544    } 
    582      
    583     $minfont = 10; 
    584     $maxfont = 26; 
     545    $minfont = 80; 
     546    $maxfont = 200; 
    585547    $fontrange = $maxfont - $minfont; 
    586548    $maxcnt = 0; 
     
    591553    } 
    592554    $cntrange = $maxcnt + 1 - $mincnt; 
    593      
    594555    $minlog = log($mincnt); 
    595556    $maxlog = log($maxcnt); 
    596557    $logrange = $maxlog == $minlog ? 1 : $maxlog - $minlog; 
    597558    arsort($cnt); 
    598      
    599559    foreach ($cnt as $tag => $count) { 
    600560        $size = $minfont + $fontrange * (log($count) - $minlog) / $logrange; 
    601         $out[] = '<a style="font-size:'.(int) $size.'px" href="'.sb_get_tag_link($tag).'">'.$tag.'</a>'; 
     561        $out[] = '<a style="font-size:'.(int) $size.'%" href="'.sb_get_tag_link($tag).'">'.$tag.'</a>'; 
    602562    } 
    603563    echo implode(' ', $out); 
    604564} 
    605565 
    606 function sb_print_next_page_link($limit = 15) { 
    607     global $sermon_domain; 
     566//Prints link to next page 
     567function sb_print_next_page_link($limit = 0) { 
     568    global $sermon_domain, $record_count, $sermons_per_page; 
     569    if ($limit == 0) $limit = $sermons_per_page; 
    608570    $current = $_REQUEST['page'] ? (int) $_REQUEST['page'] : 1; 
    609571    if ($current < ceil($record_count / $limit)) { 
    610572        $url = sb_build_url(array('page' => ++$current)); 
    611         echo '<a href="'.$url.'">'.__('Next page &raquo;', $sermon_domain).'</a>'; 
     573        echo '<a href="'.$url.'">'.__('Next page', $sermon_domain).' &raquo;</a>'; 
    612574    }    
    613575} 
    614576 
    615 function sb_print_prev_page_link($limit = 15) { 
    616     global $sermon_domain; 
     577//Prints link to previous page 
     578function sb_print_prev_page_link($limit = 0) { 
     579    global $sermon_domain, $sermons_per_page; 
     580    if ($limit == 0) $limit = $sermons_per_page; 
    617581    $current = $_REQUEST['page'] ? (int) $_REQUEST['page'] : 1; 
    618582    if ($current > 1) { 
    619583        $url = sb_build_url(array('page' => --$current)); 
    620         echo '<a href="'.$url.'">'.__('&laquo; Previous page', $sermon_domain).'</a>'; 
     584        echo '<a href="'.$url.'">&laquo; '.__('Previous page', $sermon_domain).'</a>'; 
    621585    }    
    622586} 
    623587 
    624 function sb_print_iso_date($sermon) { 
    625     echo date('d M Y H:i:s O', strtotime($sermon->date.' '.$sermon->time)); 
    626 } 
    627  
     588// Print link to attached files 
    628589function sb_print_url($url) { 
    629590    global $siteicons, $default_site_icon ,$filetypes; 
     
    652613} 
    653614 
     615// Print link to attached external URLs 
    654616function sb_print_url_link($url) { 
    655617    echo '<div class="sermon_file">'; 
     
    666628} 
    667629 
     630//Decode base64 encoded data 
    668631function sb_print_code($code) { 
    669632    echo base64_decode($code); 
    670633} 
    671634 
     635//Prints preacher description 
    672636function sb_print_preacher_description($sermon) { 
    673637    global $sermon_domain; 
     
    678642} 
    679643 
     644//Prints preacher image 
    680645function sb_print_preacher_image($sermon) { 
    681646    if ($sermon->image)  
     
    683648} 
    684649 
     650//Prints link to next sermon 
    685651function sb_print_next_sermon_link($sermon) { 
    686652    global $wpdb; 
     
    692658} 
    693659 
     660//Prints link to previous sermon 
    694661function sb_print_prev_sermon_link($sermon) { 
    695662    global $wpdb; 
     
    701668} 
    702669 
     670//Prints links to other sermons preached on the same day 
    703671function sb_print_sameday_sermon_link($sermon) { 
    704672    global $wpdb, $sermon_domain; 
     
    715683} 
    716684 
     685//Gets single sermon from the database 
    717686function sb_get_single_sermon($id) { 
    718687    global $wpdb; 
     
    745714} 
    746715 
    747 function sb_get_sermons($filter, $order, $page = 1, $limit = 15) { 
    748     global $wpdb, $record_count; 
     716//Get multiple sermons from the database 
     717function sb_get_sermons($filter, $order, $page = 1, $limit = 0) { 
     718    global $wpdb, $record_count, $sermons_per_page; 
     719    if ($limit == 0) $limit = $sermons_per_page; 
    749720    $default_filter = array( 
    750721        'title' => '', 
     
    756727        'book' => '', 
    757728        'tag' => '', 
     729        'id' => '', 
    758730    ); 
    759731    $default_order = array( 
     
    791763    if ($filter['tag'] != '') { 
    792764        $cond .= "AND t.name LIKE '%" . mysql_real_escape_string($filter['tag']) . "%' "; 
     765    } 
     766    if ($filter['id'] != '') { 
     767        $cond .= "AND m.id LIKE '" . mysql_real_escape_string($filter['id']) . "' "; 
    793768    } 
    794769    $offset = $limit * ($page - 1); 
     
    815790} 
    816791 
     792//Gets attachments from database 
    817793function sb_get_stuff($sermon) { 
    818794    global $wpdb; 
     
    828804} 
    829805 
     806//Displays the filter on sermon search page 
    830807function sb_print_filters() { 
    831808    global $wpdb, $sermon_domain, $books; 
  • sermon-browser/trunk/podcast.php

    r51332 r52938  
    1 <!-- must include xmlns:itunes tag --> 
     1<?php 
     2//Prints ISO date for podcast 
     3function sb_print_iso_date($sermon) { 
     4    echo date('d M Y H:i:s O', strtotime($sermon->date.' '.$sermon->time)); 
     5} 
     6 
     7//Prints first .mp3 file 
     8function sb_first_mp3($sermon) { 
     9    $stuff = sb_get_stuff($sermon); 
     10    foreach ((array) $stuff['Files'] as $file) { 
     11        if (strtolower(substr($file, strrpos($file, '.') + 1)) == 'mp3') { 
     12            if (substr($file,0,7) == "http://") { 
     13                $file=get_bloginfo('wpurl').'?show&amp;url='.URLencode($file); 
     14            } else { 
     15                $file=get_bloginfo('wpurl').'?show&amp;file_name='.URLencode($file); 
     16            } 
     17            return $file; 
     18            break; 
     19        } 
     20    } 
     21} 
     22 
     23//Prints size of first .mp3 file 
     24function sb_first_mp3_size($sermon) { 
     25    global $wordpressRealPath; 
     26    $stuff = sb_get_stuff($sermon); 
     27    foreach ((array) $stuff['Files'] as $file) { 
     28        if (strtolower(substr($file, strrpos($file, '.') + 1)) == 'mp3') { 
     29            if (substr($file,0,7) == "http://") { 
     30                if(ini_get('allow_url_fopen')) { 
     31                    $headers = array_change_key_case(get_headers($url, 1),CASE_LOWER); 
     32                    $filesize = $headers['content-length']; 
     33                    if ($filesize) return $filesize; 
     34                } 
     35            } else { 
     36                return @filesize($wordpressRealPath.get_option('sb_sermon_upload_dir').$file); 
     37            } 
     38            break; 
     39        } 
     40    } 
     41} 
     42?> 
    243<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 
    344<channel> 
    445    <atom:link href="<?php echo get_option('sb_podcast') ?>" rel="self" type="application/rss+xml" /> 
    5     <title><?php echo get_bloginfo('name') ?></title> 
     46    <title><?php echo get_bloginfo('name') Podcast?></title> 
    647    <itunes:author></itunes:author> 
    748    <description><?php echo get_bloginfo('description') ?></description> 
     
    1758    <lastBuildDate><?php sb_print_iso_date($sermon[0]) ?></lastBuildDate> 
    1859    <pubDate><?php sb_print_iso_date($sermon[0]) ?></pubDate> 
     60    <generator>Wordpress Sermon Browser plugin (http://www.4-14.org.uk/sermon-browser)</generator> 
    1961    <docs>http://blogs.law.harvard.edu/tech/rss</docs> 
    2062    <category>Religion &amp; Spirituality</category> 
     
    2264        <?php foreach ($sermons as $sermon):  ++$i; if($i>15) break; ?> 
    2365        <item> 
    24             <guid><?php sb_print_first_mp3($sermon) ?></guid> 
     66            <guid><?php echo sb_first_mp3($sermon) ?></guid> 
    2567            <title><?php echo stripslashes($sermon->title) ?></title> 
    26             <link><?php sb_print_first_mp3($sermon) ?></link> 
     68            <link><?php echo sb_first_mp3($sermon) ?></link> 
    2769            <description><?php echo stripslashes($sermon->description) ?></description> 
    28             <enclosure url="<?php sb_print_first_mp3($sermon) ?>" length="<?php sb_print_first_mp3_size($sermon) ?>" type="audio/mpeg"/> 
     70            <enclosure url="<?php echo sb_first_mp3($sermon) ?>" length="<?php echo sb_first_mp3_size($sermon) ?>" type="audio/mpeg"/> 
    2971            <category><?php echo stripslashes($sermon->service) ?></category> 
    3072            <pubDate><?php sb_print_iso_date($sermon) ?></pubDate> 
  • sermon-browser/trunk/readme.txt

    r51889 r52938  
    30302. Place the sermonbrowser folder in your wp-content/plugins folder and upload it to your website. 
    31313. Activate the plugin from the plugins tab of your Wordpress admin. 
    32 4. You may have to change the permissions on some files/folders: the upload folder (by default wp-content/uploads/sermons), and three files in the sermonbrowser folder (multi.php, single.php and styles.css). 
     324. You may have to change the permissions the upload folder (by default wp-content/uploads/sermons). 
     335. Create a Wordpress page with the text [sermons]. The plugin will display your sermons on this page. 
    3334 
    3435== Frequently Asked Questions == 
  • sermon-browser/trunk/sermon-browser.po

    r51888 r52938  
    33"Project-Id-Version: Sermon Browser\n" 
    44"Report-Msgid-Bugs-To: \n" 
    5 "POT-Creation-Date: 2008-06-25 03:44-0000\n" 
     5"POT-Creation-Date: 2008-07-03 09:21-0000\n" 
    66"PO-Revision-Date: \n" 
    77"Last-Translator: Mark Barnes <mark@4-14.org.uk>\n" 
     
    1414"X-Poedit-SearchPath-0: .\n" 
    1515 
    16 #: frontend.php:455 
     16#: frontend.php:481 
    1717msgid "Sermon podcast" 
    1818msgstr "" 
    1919 
    20 #: frontend.php:588 
    21 msgid "Next page &raquo;" 
    22 msgstr "" 
    23  
    24 #: frontend.php:597 
    25 msgid "&laquo; Previous page" 
    26 msgstr "" 
    27  
    28 #: frontend.php:652 
     20#: frontend.php:573 
     21msgid "Next page" 
     22msgstr "" 
     23 
     24#: frontend.php:584 
     25msgid "Previous page" 
     26msgstr "" 
     27 
     28#: frontend.php:639 
    2929msgid "About" 
    3030msgstr "" 
    3131 
    32 #: frontend.php:684 
     32#: frontend.php:675 
    3333msgid "None" 
    3434msgstr "" 
    3535 
    3636#: frontend.php:836 
    37 #: sermon.php:1446 
    38 #: sermon.php:1473 
    39 #: sermon.php:1789 
     37#: sermon.php:1313 
     38#: sermon.php:1340 
     39#: sermon.php:1667 
    4040msgid "Preacher" 
    4141msgstr "" 
     
    6060 
    6161#: frontend.php:862 
    62 #: sermon.php:1455 
    63 #: sermon.php:1476 
    64 #: sermon.php:1802 
     62#: sermon.php:1322 
     63#: sermon.php:1343 
     64#: sermon.php:1680 
    6565msgid "Series" 
    6666msgstr "" 
     
    9090msgstr "" 
    9191 
    92 #: sermon.php:161 
    93 #: sermon.php:764 
    94 #: sermon.php:827 
    95 #: sermon.php:1015 
    96 #: sermon.php:1493 
    97 msgid "Edit" 
    98 msgstr "" 
    99  
    100 #: sermon.php:161 
    101 #: sermon.php:207 
    102 #: sermon.php:418 
    103 #: sermon.php:827 
    104 #: sermon.php:1015 
    105 #: sermon.php:1025 
    106 #: sermon.php:1237 
    107 #: sermon.php:1283 
    108 #: sermon.php:1493 
    109 msgid "Delete" 
    110 msgstr "" 
    111  
    112 #: sermon.php:207 
    113 #: sermon.php:1015 
    114 #: sermon.php:1237 
    115 #: sermon.php:1283 
    116 msgid "Rename" 
    117 msgstr "" 
    118  
    119 #: sermon.php:213 
    120 msgid "No results" 
    121 msgstr "" 
    122  
    123 #: sermon.php:419 
    124 msgid "Congratulations, you just completed the installation!" 
    125 msgstr "" 
    126  
    127 #: sermon.php:439 
    128 #: sermon.php:440 
    129 #: sermon.php:1466 
     92#: sermon.php:53 
     93#: sermon.php:54 
     94#: sermon.php:1333 
    13095#: widget.php:51 
    13196msgid "Sermons" 
    13297msgstr "" 
    13398 
    134 #: sermon.php:441 
     99#: sermon.php:55 
    135100msgid "New Sermon" 
    136101msgstr "" 
    137102 
    138 #: sermon.php:442 
     103#: sermon.php:56 
     104#: sermon.php:723 
    139105msgid "Preachers" 
    140106msgstr "" 
    141107 
    142 #: sermon.php:443 
     108#: sermon.php:57 
    143109msgid "Series &amp; Services" 
    144110msgstr "" 
    145111 
    146 #: sermon.php:444 
     112#: sermon.php:58 
    147113msgid "Uploads" 
    148114msgstr "" 
    149115 
    150 #: sermon.php:445 
    151 #: sermon.php:620 
     116#: sermon.php:59 
     117#: sermon.php:454 
    152118msgid "Options" 
    153119msgstr "" 
    154120 
     121#: sermon.php:60 
     122#: sermon.php:558 
     123msgid "Templates" 
     124msgstr "" 
     125 
     126#: sermon.php:61 
     127msgid "Help" 
     128msgstr "" 
     129 
     130#: sermon.php:276 
     131#: sermon.php:740 
     132#: sermon.php:910 
     133#: sermon.php:920 
     134#: sermon.php:1138 
     135#: sermon.php:1182 
     136#: sermon.php:1362 
     137#: sermon.php:2212 
     138#: sermon.php:2255 
     139msgid "Delete" 
     140msgstr "" 
     141 
     142#: sermon.php:277 
     143msgid "Congratulations, you just completed the installation!" 
     144msgstr "" 
     145 
     146#: sermon.php:312 
     147msgid "You do not have the correct permissions to edit the Sermon Browser options" 
     148msgstr "" 
     149 
     150#: sermon.php:335 
     151#: sermon.php:385 
     152msgid "Error: The upload folder is not writeable. You need to CHMOD the folder to 666 or 777." 
     153msgstr "" 
     154 
     155#: sermon.php:340 
     156#: sermon.php:390 
     157msgid "Error: The upload folder you have specified does not exist." 
     158msgstr "" 
     159 
     160#: sermon.php:345 
     161msgid "Default loaded successfully." 
     162msgstr "" 
     163 
     164#: sermon.php:395 
     165msgid "Options saved successfully." 
     166msgstr "" 
     167 
     168#: sermon.php:435 
     169msgid "Uninstall completed. Please deactivate the plugin." 
     170msgstr "" 
     171 
     172#: sermon.php:440 
     173msgid "Error" 
     174msgstr "" 
     175 
    155176#: sermon.php:446 
    156 msgid "Help" 
    157 msgstr "" 
    158  
    159 #: sermon.php:482 
    160 #: sermon.php:516 
    161 msgid "Error: The upload folder is not writeable. You need to CHMOD the folder to 666 or 777." 
     177msgid "Warning" 
     178msgstr "" 
     179 
     180#: sermon.php:458 
     181msgid "Upload directory" 
     182msgstr "" 
     183 
     184#: sermon.php:462 
     185msgid "Public podcast feed" 
     186msgstr "" 
     187 
     188#: sermon.php:466 
     189msgid "Private podcast feed" 
     190msgstr "" 
     191 
     192#: sermon.php:481 
     193msgid "Sermons per page" 
    162194msgstr "" 
    163195 
    164196#: sermon.php:487 
    165 #: sermon.php:521 
    166 msgid "Error: The upload folder you have specified does not exist." 
    167 msgstr "" 
    168  
    169 #: sermon.php:492 
    170 msgid "Default loaded properly." 
    171 msgstr "" 
    172  
    173 #: sermon.php:526 
    174 #: sermon.php:572 
    175 msgid "Options saved properly." 
     197msgid "The upload folder is not writeable. You need to CHMOD the folder to 666 or 777." 
     198msgstr "" 
     199 
     200#: sermon.php:489 
     201msgid "The upload folder you have specified does not exist." 
     202msgstr "" 
     203 
     204#: sermon.php:496 
     205msgid "Your php.ini file does not allow uploads. Please change file_uploads in php.ini." 
     206msgstr "" 
     207 
     208#: sermon.php:497 
     209msgid "The maximum file size you can upload is only " 
     210msgstr "" 
     211 
     212#: sermon.php:497 
     213msgid "k. Please change upload_max_filesize to at least 15M in php.ini." 
     214msgstr "" 
     215 
     216#: sermon.php:498 
     217msgid "The maximum file size you send through the browser is only " 
     218msgstr "" 
     219 
     220#: sermon.php:498 
     221msgid "k. Please change post_max_size to at least 15M in php.ini." 
     222msgstr "" 
     223 
     224#: sermon.php:499 
     225msgid "The maximum time allowed for any script to run is only " 
     226msgstr "" 
     227 
     228#: sermon.php:499 
     229msgid " seconds. Please change max_execution_time to at least 600 in php.ini." 
     230msgstr "" 
     231 
     232#: sermon.php:500 
     233msgid "The maximum time allowed for an upload script to run is only " 
     234msgstr "" 
     235 
     236#: sermon.php:500 
     237msgid " seconds. Please change max_input_time to at least 600 in php.ini." 
     238msgstr "" 
     239 
     240#: sermon.php:501 
     241msgid "The maximum amount of memory allowed is only " 
     242msgstr "" 
     243 
     244#: sermon.php:501 
     245msgid "k. Please change memory_limit to at least 16M in php.ini." 
     246msgstr "" 
     247 
     248#: sermon.php:504 
     249#: sermon.php:579 
     250msgid "Reset to defaults" 
     251msgstr "" 
     252 
     253#: sermon.php:504 
     254#: sermon.php:579 
     255#: sermon.php:713 
     256#: sermon.php:1808 
     257msgid "Save" 
     258msgstr "" 
     259 
     260#: sermon.php:507 
     261#: sermon.php:514 
     262msgid "Uninstall" 
     263msgstr "" 
     264 
     265#: sermon.php:511 
     266msgid "Remove all files" 
     267msgstr "" 
     268 
     269#: sermon.php:531 
     270msgid "You do not have the correct permissions to edit the Sermon Browser templates" 
    176271msgstr "" 
    177272 
    178273#: sermon.php:550 
    179 msgid "Could not save multi template. Please check permission for multi.php in plugin folder" 
    180 msgstr "" 
    181  
    182 #: sermon.php:559 
    183 msgid "Could not save single template. Please check permission for single.php in plugin folder" 
    184 msgstr "" 
    185  
    186 #: sermon.php:568 
    187 msgid "Could not save style template. Please check permission for style.css in plugin folder" 
    188 msgstr "" 
    189  
    190 #: sermon.php:606 
    191 msgid "Uninstall completed. Please deactivate the plugin" 
    192 msgstr "" 
    193  
    194 #: sermon.php:610 
    195 msgid "Error" 
    196 msgstr "" 
    197  
    198 #: sermon.php:614 
    199 msgid "Warning" 
    200 msgstr "" 
    201  
    202 #: sermon.php:623 
    203 msgid "Upload directory" 
    204 msgstr "" 
    205  
    206 #: sermon.php:627 
    207 msgid "Public podcast feed" 
    208 msgstr "" 
    209  
    210 #: sermon.php:631 
    211 msgid "Private podcast feed" 
    212 msgstr "" 
    213  
    214 #: sermon.php:637 
    215 msgid "The upload folder is not writeable. You need to CHMOD the folder to 666 or 777." 
    216 msgstr "" 
    217  
    218 #: sermon.php:639 
    219 msgid "The upload folder you have specified does not exist." 
    220 msgstr "" 
    221  
    222 #: sermon.php:646 
    223 msgid "Your php.ini file does not allow uploads. Please change file_uploads in php.ini." 
    224 msgstr "" 
    225  
    226 #: sermon.php:647 
    227 msgid "The maximum file size you can upload is only " 
    228 msgstr "" 
    229  
    230 #: sermon.php:647 
    231 msgid "k. Please change upload_max_filesize to at least 15M in php.ini." 
    232 msgstr "" 
    233  
    234 #: sermon.php:648 
    235 msgid "The maximum file size you send through the browser is only " 
    236 msgstr "" 
    237  
    238 #: sermon.php:648 
    239 msgid "k. Please change post_max_size to at least 15M in php.ini." 
    240 msgstr "" 
    241  
    242 #: sermon.php:649 
    243 msgid "The maximum time allowed for any script to run is only " 
    244 msgstr "" 
    245  
    246 #: sermon.php:649 
    247 msgid " seconds. Please change max_execution_time to at least 600 in php.ini." 
     274msgid "Templates saved successfully." 
     275msgstr "" 
     276 
     277#: sermon.php:561 
     278msgid "Multi-sermons form" 
     279msgstr "" 
     280 
     281#: sermon.php:567 
     282msgid "Single sermon form" 
     283msgstr "" 
     284 
     285#: sermon.php:573 
     286msgid "Style" 
     287msgstr "" 
     288 
     289#: sermon.php:597 
     290msgid "You do not have the correct permissions to manage the preachers' database" 
     291msgstr "" 
     292 
     293#: sermon.php:600 
     294msgid "Preacher saved to database." 
     295msgstr "" 
     296 
     297#: sermon.php:624 
     298msgid "Could not save uploaded file. Please try again." 
     299msgstr "" 
     300 
     301#: sermon.php:629 
     302msgid "Could not upload file. Please check the Options page for any errors or warnings." 
    248303msgstr "" 
    249304 
    250305#: sermon.php:650 
    251 msgid "The maximum time allowed for an upload script to run is only " 
    252 msgstr "" 
    253  
    254 #: sermon.php:650 
    255 msgid " seconds. Please change max_input_time to at least 600 in php.ini." 
    256 msgstr "" 
    257  
    258 #: sermon.php:651 
    259 msgid "The maximum amount of memory allowed is only " 
    260 msgstr "" 
    261  
    262 #: sermon.php:651 
    263 msgid "k. Please change memory_limit to at least 16M in php.ini." 
    264 msgstr "" 
    265  
    266 #: sermon.php:654 
    267 #: sermon.php:678 
    268 msgid "Reset to defaults" 
    269 msgstr "" 
    270  
    271 #: sermon.php:654 
    272 #: sermon.php:678 
    273 #: sermon.php:800 
    274 #: sermon.php:1930 
    275 msgid "Save" 
    276 msgstr "" 
    277  
    278 #: sermon.php:657 
    279 msgid "Templates" 
    280 msgstr "" 
    281  
    282 #: sermon.php:660 
    283 msgid "Multi-sermons form" 
    284 msgstr "" 
    285  
    286 #: sermon.php:666 
    287 msgid "Single sermon form" 
    288 msgstr "" 
    289  
    290 #: sermon.php:672 
    291 msgid "Style" 
    292 msgstr "" 
    293  
    294 #: sermon.php:681 
    295 #: sermon.php:687 
    296 msgid "Uninstall" 
     306msgid "You can't delete this preacher." 
     307msgstr "" 
     308 
     309#: sermon.php:664 
     310msgid "Add" 
     311msgstr "" 
     312 
     313#: sermon.php:664 
     314#: sermon.php:740 
     315#: sermon.php:910 
     316#: sermon.php:1362 
     317#: sermon.php:2212 
     318msgid "Edit" 
     319msgstr "" 
     320 
     321#: sermon.php:664 
     322msgid "preacher" 
     323msgstr "" 
     324 
     325#: sermon.php:675 
     326msgid "The images folder is not writeable. You won't be able to upload images." 
    297327msgstr "" 
    298328 
    299329#: sermon.php:684 
    300 msgid "Remove all files" 
    301 msgstr "" 
    302  
    303 #: sermon.php:706 
    304 msgid "Preacher saved to database." 
    305 msgstr "" 
    306  
    307 #: sermon.php:726 
     330#: sermon.php:728 
     331#: sermon.php:894 
     332msgid "Name" 
     333msgstr "" 
     334 
     335#: sermon.php:692 
     336#: sermon.php:1701 
     337msgid "Description" 
     338msgstr "" 
     339 
     340#: sermon.php:704 
     341#: sermon.php:729 
     342msgid "Image" 
     343msgstr "" 
     344 
     345#: sermon.php:723 
     346#: sermon.php:888 
     347msgid "add new" 
     348msgstr "" 
     349 
     350#: sermon.php:727 
     351#: sermon.php:893 
     352#: sermon.php:1124 
     353#: sermon.php:1158 
     354#: sermon.php:1207 
     355#: sermon.php:1338 
     356msgid "ID" 
     357msgstr "" 
     358 
    308359#: sermon.php:730 
    309 msgid "Upload failed." 
    310 msgstr "" 
    311  
    312 #: sermon.php:752 
    313 msgid "You can't delete this preacher." 
    314 msgstr "" 
    315  
    316 #: sermon.php:764 
    317 msgid "Add" 
    318 msgstr "" 
    319  
    320 #: sermon.php:764 
    321 msgid "preacher" 
    322 msgstr "" 
    323  
    324 #: sermon.php:771 
    325 #: sermon.php:815 
    326 #: sermon.php:999 
    327 msgid "Name" 
    328 msgstr "" 
    329  
    330 #: sermon.php:779 
    331 #: sermon.php:1823 
    332 msgid "Description" 
    333 msgstr "" 
    334  
    335 #: sermon.php:791 
    336 #: sermon.php:816 
    337 msgid "Image" 
    338 msgstr "" 
    339  
    340 #: sermon.php:810 
    341 msgid "Manage Preachers" 
    342 msgstr "" 
    343  
    344 #: sermon.php:810 
    345 #: sermon.php:993 
    346 msgid "add new" 
    347 msgstr "" 
    348  
    349 #: sermon.php:814 
     360#: sermon.php:896 
     361#: sermon.php:1127 
     362#: sermon.php:1162 
     363#: sermon.php:1211 
     364#: sermon.php:1345 
     365msgid "Actions" 
     366msgstr "" 
     367 
     368#: sermon.php:755 
     369msgid "You do not have the correct permissions to manage the series and services database" 
     370msgstr "" 
     371 
     372#: sermon.php:895 
     373msgid "Default time" 
     374msgstr "" 
     375 
     376#: sermon.php:910 
     377#: sermon.php:1138 
     378#: sermon.php:1182 
     379#: sermon.php:2255 
     380msgid "Rename" 
     381msgstr "" 
     382 
     383#: sermon.php:912 
     384msgid "Some sermons are currently assigned to that service. You can only delete services that are not used in the database." 
     385msgstr "" 
     386 
     387#: sermon.php:915 
     388msgid "Some sermons are currently in that series. You can only delete series that are empty." 
     389msgstr "" 
     390 
     391#: sermon.php:918 
     392msgid "That preacher has sermons in the database. You can only delete preachers who have no sermons in the database." 
     393msgstr "" 
     394 
     395#: sermon.php:941 
     396msgid "You do not have the correct permissions to upload sermons" 
     397msgstr "" 
     398 
     399#: sermon.php:957 
     400msgid "Files saved to database." 
     401msgstr "" 
     402 
     403#: sermon.php:960 
     404#: sermon.php:1462 
     405msgid " already exists." 
     406msgstr "" 
     407 
    350408#: sermon.php:998 
    351 #: sermon.php:1222 
    352 #: sermon.php:1258 
    353 #: sermon.php:1356 
    354 #: sermon.php:1471 
    355 msgid "ID" 
    356 msgstr "" 
    357  
    358 #: sermon.php:817 
    359 #: sermon.php:1001 
    360 #: sermon.php:1225 
    361 #: sermon.php:1262 
    362 #: sermon.php:1360 
    363 #: sermon.php:1478 
    364 msgid "Actions" 
    365 msgstr "" 
    366  
    367 #: sermon.php:984 
    368 msgid "Manage Series" 
    369 msgstr "" 
    370  
    371 #: sermon.php:985 
    372 msgid "Manage Services" 
    373 msgstr "" 
    374  
    375 #: sermon.php:1000 
    376 msgid "Default time" 
    377 msgstr "" 
    378  
    379 #: sermon.php:1017 
    380 msgid "Some sermons are currently assigned to that service. You can only delete services that are not used in the database." 
    381 msgstr "" 
    382  
    383 #: sermon.php:1020 
    384 msgid "Some sermons are currently in that series. You can only delete series that are empty." 
    385 msgstr "" 
    386  
    387 #: sermon.php:1023 
    388 msgid "That preacher has sermons in the database. You can only delete preachers who have no sermons in the database." 
    389 msgstr "" 
    390  
    391 #: sermon.php:1059 
    392 msgid "Files saved to database." 
    393 msgstr "" 
    394  
    395 #: sermon.php:1062 
    396 #: sermon.php:1584 
    397 msgid " has already existed." 
    398 msgstr "" 
    399  
    400 #: sermon.php:1211 
     409msgid "New file name?" 
     410msgstr "" 
     411 
     412#: sermon.php:1010 
     413msgid "The script is unable to rename your file." 
     414msgstr "" 
     415 
     416#: sermon.php:1037 
     417msgid "The script is unable to delete your file." 
     418msgstr "" 
     419 
     420#: sermon.php:1048 
     421#: sermon.php:1067 
     422msgid "Previous" 
     423msgstr "" 
     424 
     425#: sermon.php:1054 
     426#: sermon.php:1073 
     427msgid "Next" 
     428msgstr "" 
     429 
     430#: sermon.php:1090 
     431msgid "Upload Files" 
     432msgstr "" 
     433 
     434#: sermon.php:1100 
     435msgid "File to upload" 
     436msgstr "" 
     437 
     438#: sermon.php:1105 
     439msgid "Upload" 
     440msgstr "" 
     441 
     442#: sermon.php:1113 
     443msgid "Upload is disabled. Please check your folder setting in Options." 
     444msgstr "" 
     445 
     446#: sermon.php:1119 
    401447msgid "Unlinked files" 
    402448msgstr "" 
    403449 
    404 #: sermon.php:1212 
     450#: sermon.php:1125 
     451#: sermon.php:1159 
     452#: sermon.php:1208 
     453msgid "File name" 
     454msgstr "" 
     455 
     456#: sermon.php:1126 
     457#: sermon.php:1160 
     458#: sermon.php:1209 
     459msgid "File type" 
     460msgstr "" 
     461 
     462#: sermon.php:1153 
    405463msgid "Linked files" 
    406464msgstr "" 
    407465 
    408 #: sermon.php:1213 
    409 #: sermon.php:1344 
    410 msgid "Search for files" 
    411 msgstr "" 
    412  
    413 #: sermon.php:1223 
    414 #: sermon.php:1259 
    415 #: sermon.php:1347 
    416 #: sermon.php:1357 
    417 msgid "File name" 
    418 msgstr "" 
    419  
    420 #: sermon.php:1224 
    421 #: sermon.php:1260 
    422 #: sermon.php:1358 
    423 msgid "File type" 
    424 msgstr "" 
    425  
    426 #: sermon.php:1261 
    427 #: sermon.php:1318 
    428 #: sermon.php:1359 
     466#: sermon.php:1161 
     467#: sermon.php:1210 
    429468#: widget.php:49 
    430469msgid "Sermon" 
    431470msgstr "" 
    432471 
    433 #: sermon.php:1298 
    434 msgid "Upload Files" 
    435 msgstr "" 
    436  
    437 #: sermon.php:1307 
    438 msgid "Current file" 
    439 msgstr "" 
    440  
    441 #: sermon.php:1312 
    442 msgid "File to upload" 
    443 msgstr "" 
    444  
    445 #: sermon.php:1332 
    446 msgid "Upload" 
    447 msgstr "" 
    448  
    449 #: sermon.php:1332 
     472#: sermon.php:1197 
     473msgid "Search for files" 
     474msgstr "" 
     475 
     476#: sermon.php:1201 
     477msgid "Search" 
     478msgstr "" 
     479 
     480#: sermon.php:1216 
     481msgid "Search results will appear here." 
     482msgstr "" 
     483 
     484#: sermon.php:1234 
    450485msgid "Clean up" 
    451486msgstr "" 
    452487 
    453 #: sermon.php:1337 
    454 msgid "Upload is disabled. Please check your folder setting (Sermons / Options)." 
    455 msgstr "" 
    456  
    457 #: sermon.php:1350 
    458 msgid "Search" 
    459 msgstr "" 
    460  
    461 #: sermon.php:1365 
    462 msgid "Search results will appear here." 
    463 msgstr "" 
    464  
    465 #: sermon.php:1396 
     488#: sermon.php:1236 
     489msgid "Pressing the button below scans every sermon in the database, and removes missing attachments. Use with caution!" 
     490msgstr "" 
     491 
     492#: sermon.php:1237 
     493msgid "Clean up missing files" 
     494msgstr "" 
     495 
     496#: sermon.php:1256 
     497#: sermon.php:1433 
     498msgid "You do not have the correct permissions to edit sermons" 
     499msgstr "" 
     500 
     501#: sermon.php:1260 
    466502msgid "Sermon saved to database." 
    467503msgstr "" 
    468504 
    469 #: sermon.php:1406 
     505#: sermon.php:1266 
     506msgid "You do not have the correct permissions to delete sermons" 
     507msgstr "" 
     508 
     509#: sermon.php:1273 
    470510msgid "Sermon removed from database." 
    471511msgstr "" 
    472512 
    473 #: sermon.php:1442 
    474 #: sermon.php:1472 
    475 #: sermon.php:1775 
     513#: sermon.php:1309 
     514#: sermon.php:1339 
     515#: sermon.php:1653 
    476516msgid "Title" 
    477517msgstr "" 
    478518 
    479 #: sermon.php:1463 
     519#: sermon.php:1330 
    480520msgid "Filter" 
    481521msgstr "" 
    482522 
    483 #: sermon.php:1474 
    484 #: sermon.php:1817 
     523#: sermon.php:1341 
     524#: sermon.php:1695 
    485525msgid "Date" 
    486526msgstr "" 
    487527 
    488 #: sermon.php:1475 
    489 #: sermon.php:1831 
     528#: sermon.php:1342 
     529#: sermon.php:1709 
    490530msgid "Service" 
    491531msgstr "" 
    492532 
    493 #: sermon.php:1477 
     533#: sermon.php:1344 
    494534msgid "Stats" 
    495535msgstr "" 
    496536 
    497 #: sermon.php:1781 
     537#: sermon.php:1389 
     538msgid "You do not have the correct permissions to edit or create sermons" 
     539msgstr "" 
     540 
     541#: sermon.php:1426 
     542msgid "You do not have the correct permissions to create sermons" 
     543msgstr "" 
     544 
     545#: sermon.php:1659 
    498546msgid "Tags (comma separated)" 
    499547msgstr "" 
    500548 
    501 #: sermon.php:1798 
     549#: sermon.php:1676 
    502550msgid "Create new preacher" 
    503551msgstr "" 
    504552 
    505 #: sermon.php:1811 
     553#: sermon.php:1689 
    506554msgid "Create new series" 
    507555msgstr "" 
    508556 
    509 #: sermon.php:1840 
     557#: sermon.php:1718 
    510558msgid "Create new service" 
    511559msgstr "" 
    512560 
    513 #: sermon.php:1846 
     561#: sermon.php:1724 
    514562msgid "Time" 
    515563msgstr "" 
    516564 
    517 #: sermon.php:1849 
     565#: sermon.php:1727 
    518566msgid "Override default time" 
    519567msgstr "" 
    520568 
    521 #: sermon.php:1855 
     569#: sermon.php:1733 
    522570msgid "Bible passage" 
    523571msgstr "" 
    524572 
    525 #: sermon.php:1855 
    526 #: sermon.php:1898 
     573#: sermon.php:1733 
     574#: sermon.php:1776 
    527575msgid "add more" 
    528576msgstr "" 
    529577 
    530 #: sermon.php:1859 
     578#: sermon.php:1737 
    531579msgid "From" 
    532580msgstr "" 
    533581 
    534 #: sermon.php:1860 
     582#: sermon.php:1738 
    535583msgid "To" 
    536584msgstr "" 
    537585 
    538 #: sermon.php:1898 
    539 msgid "Files" 
    540 msgstr "" 
    541  
    542 #: sermon.php:1907 
     586#: sermon.php:1776 
     587msgid "Attachments" 
     588msgstr "" 
     589 
     590#: sermon.php:1785 
    543591msgid "Choose existing file:" 
    544592msgstr "" 
    545593 
    546 #: sermon.php:1908 
     594#: sermon.php:1786 
    547595msgid "Upload a new one:" 
    548596msgstr "" 
    549597 
    550 #: sermon.php:1909 
     598#: sermon.php:1787 
    551599msgid "Enter an URL:" 
    552600msgstr "" 
    553601 
    554 #: sermon.php:1910 
     602#: sermon.php:1788 
    555603msgid "Enter embed code:" 
    556604msgstr "" 
    557605 
    558 #: sermon.php:2092 
     606#: sermon.php:1972 
    559607msgid "Help page" 
     608msgstr "" 
     609 
     610#: sermon.php:2261 
     611msgid "No results" 
     612msgstr "" 
     613 
     614#: sermon.php:2270 
     615msgid "You must create a post or page that includes the code [sermons] in order for your sermons to be displayed on your site." 
    560616msgstr "" 
    561617 
  • sermon-browser/trunk/sermon.php

    r52078 r52938  
    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.30.1 
     7Version: 0.31 
    88Author URI: http://www.4-14.org.uk/ 
    99 
     
    2626 
    2727// Localization and set-up 
    28 require_once('dictionary.php'); // Template functions 
    2928$sermon_domain = 'sermon-browser'; 
    3029load_plugin_textdomain($sermon_domain, 'wp-content/plugins/sermon-browser'); 
     30require_once('dictionary.php'); // Template functions 
    3131include_once('filetypes.php'); // User-defined icons 
    3232include('frontend.php'); // Everything related to displaying sermons 
    3333 
    34 // URLs and paths 
     34// Assign global variables 
     35global $url, $wordpressRealPath, $defaultSermonPath, $display_mode, $sermons_per_page, $display_url; 
    3536$url = get_bloginfo('wpurl'); 
    36 global $wordpressRealPath; 
    3737$wordpressRealPath = str_replace("\\", "/", dirname(dirname(dirname(dirname(__FILE__))))); 
    38 global $defaultSermonPath; 
    3938$defaultSermonPath = '/'.get_option('upload_path').'/sermons/'; 
    40 $defaultSermonURL = get_bloginfo('url').'/'.get_option('upload_path').'/sermons/'; 
     39$display_method = get_option('sb_display_method'); 
     40$defaultSermonURL = get_bloginfo('wpurl').'/'.get_option('upload_path').'/sermons/'; 
    4141$books = array('Genesis', 'Exodus', 'Leviticus', 'Numbers', 'Deuteronomy', 'Joshua', 'Judges', 'Ruth', '1 Samuel', '2 Samuel', '1 Kings', '2 Kings', '1 Chronicles', '2 Chronicles', 'Ezra', 'Nehemiah', 'Esther', 'Job', 'Psalm', 'Proverbs', 'Ecclesiastes', 'Song of Solomon', 'Isaiah', 'Jeremiah', 'Lamentations', 'Ezekiel', 'Daniel', 'Hosea', 'Joel', 'Amos', 'Obadiah', 'Jonah', 'Micah', 'Nahum', 'Habakkuk', 'Zephaniah', 'Haggai', 'Zechariah', 'Malachi', 'Matthew', 'Mark', 'Luke', 'John', 'Acts', 'Romans', '1 Corinthians', '2 Corinthians', 'Galatians', 'Ephesians', 'Philippians', 'Colossians', '1 Thessalonians', '2 Thessalonians', '1 Timothy', '2 Timothy', 'Titus', 'Philemon', 'Hebrews', 'James', '1 Peter', '2 Peter', '1 John', '2 John', '3 John', 'Jude', 'Revelation'); 
    42  
    43 //Attempt to set php.ini directives 
    44 if (sb_return_kbytes(ini_get('upload_max_filesize'))<15360) ini_set('upload_max_filesize', '15M'); 
    45 if (sb_return_kbytes(ini_get('post_max_size'))<15360) ini_set('post_max_size', '15M'); 
    46 if (sb_return_kbytes(ini_get('memory_limit'))<16384) ini_set('memory_limit', '16M'); 
    47 if (intval(ini_get('max_input_time'))<600) ini_set('max_input_time','600'); 
    48 if (intval(ini_get('max_execution_time'))<600) ini_set('max_execution_time', '600'); 
    49 if (ini_get('file_uploads')<>'1') ini_set('file_uploads', '1'); 
    50  
    51 //Processing for php.ini values 
    52 function sb_return_kbytes($val) { 
    53     $val = trim($val); 
    54     $last = strtolower($val[strlen($val)-1]); 
    55     switch($last) { 
    56         case 'g': 
    57             $val *= 1024; 
    58         case 'm': 
    59             $val *= 1024; 
    60     } 
    61    return intval($val); 
    62 } 
    63  
    64 // Ajax stuff 
    65 // Throughout this plugin, p stands for preacher, s stands for service and ss stands for series 
    66 if ($_POST['sermon'] == 1) {     
    67     if ($_POST['pname']) { // preacher 
    68         $pname = mysql_real_escape_string($_POST['pname']); 
    69         if ($_POST['pid']) { 
    70             $pid = (int) $_POST['pid']; 
    71             if ($_POST['del']) { 
    72                 $wpdb->query("DELETE FROM {$wpdb->prefix}sb_preachers WHERE id = $pid;"); 
    73             } else { 
    74                 $wpdb->query("UPDATE {$wpdb->prefix}sb_preachers SET name = '$pname' WHERE id = $pid;");                 
    75             } 
    76             echo 'done'; 
    77         } else { 
    78             $wpdb->query("INSERT INTO {$wpdb->prefix}sb_preachers VALUES (null, '$pname', '', '');"); 
    79             echo $wpdb->insert_id; 
    80         }        
    81     } elseif ($_POST['sname']) { // service 
    82         $sname = mysql_real_escape_string($_POST['sname']); 
    83         list($sname, $stime) = split('@', $sname); 
    84         $sname = trim($sname); 
    85         $stime = trim($stime); 
    86         if ($_POST['sid']) { 
    87             $sid = (int) $_POST['sid']; 
    88             if ($_POST['del']) { 
    89                 $wpdb->query("DELETE FROM {$wpdb->prefix}sb_services WHERE id = $sid;"); 
    90             } else { 
    91                 $wpdb->query("UPDATE {$wpdb->prefix}sb_services SET name = '$sname', time = '$stime' WHERE id = $sid;"); 
    92                 $wpdb->query("UPDATE {$wpdb->prefix}sb_sermons SET time = '$stime' WHERE override = 0 AND service_id = $sid;"); 
    93             }            
    94             echo 'done'; 
    95         } else { 
    96             $wpdb->query("INSERT INTO {$wpdb->prefix}sb_services VALUES (null, '$sname', '$stime');"); 
    97             echo $wpdb->insert_id; 
    98         }        
    99     } elseif ($_POST['ssname']) { // series 
    100         $ssname = mysql_real_escape_string($_POST['ssname']); 
    101         if ($_POST['ssid']) { 
    102             $ssid = (int) $_POST['ssid']; 
    103             if ($_POST['del']) { 
    104                 $wpdb->query("DELETE FROM {$wpdb->prefix}sb_series WHERE id = $ssid;"); 
    105             } else { 
    106                 $wpdb->query("UPDATE {$wpdb->prefix}sb_series SET name = '$ssname' WHERE id = $ssid;"); 
    107             }                
    108             echo 'done'; 
    109         } else { 
    110             $wpdb->query("INSERT INTO {$wpdb->prefix}sb_series VALUES (null, '$ssname');"); 
    111             echo $wpdb->insert_id; 
    112         } 
    113     } elseif ($_POST['fname']) { // file         
    114         $fname = mysql_real_escape_string($_POST['fname']); 
    115         if ($_POST['fid']) { 
    116             $fid = (int) $_POST['fid']; 
    117             $oname = mysql_real_escape_string($_POST['oname']);          
    118             if ($_POST['del']) { 
    119                 if (!file_exists($wordpressRealPath.get_option('sb_sermon_upload_dir').$fname) || unlink($wordpressRealPath.get_option('sb_sermon_upload_dir').$fname)) { 
    120                     $wpdb->query("DELETE FROM {$wpdb->prefix}sb_stuff WHERE id = $fid;"); 
    121                     echo 'deleted'; 
    122                 } else { 
    123                     echo 'failed'; 
    124                 }                
    125             } else {                 
    126                 $oname = mysql_real_escape_string($_POST['oname']);  
    127                 if ( !is_writable($wordpressRealPath.get_option('sb_sermon_upload_dir').$fname) && rename($wordpressRealPath.get_option('sb_sermon_upload_dir').$oname, $wordpressRealPath.get_option('sb_sermon_upload_dir').$fname)) { 
    128                     $wpdb->query("UPDATE {$wpdb->prefix}sb_stuff SET name = '$fname' WHERE id = $fid;"); 
    129                     echo 'renamed'; 
    130                 } else {         
    131                     echo 'failed';               
    132                 } 
    133             }                
    134         } 
    135     } elseif ($_POST['fetch']) { // ajax pagination (sermon browser)         
    136         $st = (int) $_POST['fetch'] - 1; 
    137         if (!empty($_POST['title'])) { 
    138             $cond = "and m.title LIKE '%" . mysql_real_escape_string($_POST['title']) . "%' "; 
    139         } 
    140         if ($_POST['preacher'] != 0) { 
    141             $cond .= 'and m.preacher_id = ' . (int) $_POST['preacher'] . ' '; 
    142         } 
    143         if ($_POST['series'] != 0) { 
    144             $cond .= 'and m.series_id = ' . (int) $_POST['series'] . ' '; 
    145         } 
    146         $m = $wpdb->get_results("SELECT m.id, m.title, m.date, p.name as pname, s.name as sname, ss.name as ssname FROM {$wpdb->prefix}sb_sermons as m, {$wpdb->prefix}sb_preachers as p, {$wpdb->prefix}sb_services as s, {$wpdb->prefix}sb_series as ss where m.preacher_id = p.id and m.service_id = s.id and m.series_id = ss.id $cond ORDER BY m.date desc, s.time desc LIMIT $st, 15;"); 
    147         $cnt = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}sb_sermons as m, {$wpdb->prefix}sb_preachers as p, {$wpdb->prefix}sb_services as s, {$wpdb->prefix}sb_series as ss where m.preacher_id = p.id and m.service_id = s.id and m.series_id = ss.id $cond;");   
    148          
    149 ?> 
    150         <?php foreach ($m as $sermon): ?>                    
    151             <tr class="<?php echo ++$i % 2 == 0 ? 'alternate' : '' ?>"> 
    152                 <th style="text-align:center" scope="row"><?php echo $sermon->id ?></th> 
    153                 <td><?php echo stripslashes($sermon->title) ?></td> 
    154                 <td><?php echo stripslashes($sermon->pname) ?></td> 
    155                 <td><?php echo stripslashes($sermon->date) ?></td> 
    156                 <td><?php echo stripslashes($sermon->sname) ?></td> 
    157                 <td><?php echo stripslashes($sermon->ssname) ?></td> 
    158                 <td><?php echo sb_sermon_stats($sermon->id) ?></td> 
    159                 <td style="text-align:center"> 
    160                     <a href="<?php echo $url ?>/wp-admin/admin.php?page=sermon-browser/new_sermon.php&mid=<?php echo $sermon->id ?>"><?php _e('Edit', $sermon_domain) ?></a> | <a onclick="return confirm('Are you sure?')" href="<?php echo $url ?>/wp-admin/admin.php?page=sermon-browser/sermon.php&mid=<?php echo $sermon->id ?>"><?php _e('Delete', $sermon_domain) ?></a> 
    161                 </td> 
    162             </tr> 
    163         <?php endforeach ?> 
    164 <script type="text/javascript"> 
    165 <?php if($cnt<15 || $cnt <= $st+15): ?> 
    166     jQuery('#right').css('display','none'); 
    167     <?php elseif($cnt > $st+15): ?> 
    168     jQuery('#right').css('display',''); 
    169 <?php endif ?> 
    170  
    171      
    172  
    173 </script> 
    174 <?php 
    175     } elseif ($_POST['fetchU'] || $_POST['fetchL'] || $_POST['search']) { // ajax pagination (uploads) 
    176         if ($_POST['fetchU']) { 
    177             $st = (int) $_POST['fetchU'] - 1; 
    178             $abc = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.sermon_id = 0 AND f.type = 'file' ORDER BY f.name LIMIT $st, 15;"); 
    179         } elseif ($_POST['fetchL']) { 
    180             $st = (int) $_POST['fetchL'] - 1; 
    181             $abc = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.sermon_id <> 0 AND f.type = 'file' ORDER BY f.name LIMIT $st, 15;"); 
    182         } else { 
    183             $s = mysql_real_escape_string($_POST['search']); 
    184             $abc = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.name LIKE '%{$s}%' AND f.type = 'file' ORDER BY f.name;"); 
    185         }        
    186 ?> 
    187     <?php if (count($abc) >= 1): ?> 
    188         <?php foreach ($abc as $file): ?> 
    189             <tr class="file <?php echo (++$i % 2 == 0) ? 'alternate' : '' ?>" id="<?php echo $_POST['fetchU'] ? '' : 's' ?>file<?php echo $file->id ?>"> 
    190                 <th style="text-align:center" scope="row"><?php echo $file->id ?></th> 
    191                 <td id="<?php echo $_POST['fetchU'] ? '' : 's' ?><?php echo $file->id ?>"><?php echo substr($file->name, 0, strrpos($file->name, '.')) ?></td> 
    192                 <td style="text-align:center"><?php echo isset($filetypes[substr($file->name, strrpos($file->name, '.') + 1)]['name']) ? $filetypes[substr($file->name, strrpos($file->name, '.') + 1)]['name'] : strtoupper(substr($file->name, strrpos($file->name, '.') + 1)) ?></td> 
    193                 <td><?php echo stripslashes($file->title) ?></td> 
    194                 <td style="text-align:center"> 
    195                     <script type="text/javascript" language="javascript"> 
    196                     function deletelinked_<?php echo $file->id;?>(filename, filesermon) { 
    197                         if (confirm('Do you really want to delete '+filename+'?')) { 
    198                             if (filesermon != '') { 
    199                                 return confirm('This file is linked to the sermon called ['+filesermon+']. Are you sure you want to delete it?'); 
    200                             }    
    201                             return true; 
    202                         } 
    203                         return false; 
    204                     } 
    205                     </script> 
    206                         <a id="link<?php echo $file->id ?>" href="javascript:rename(<?php echo $file->id ?>, '<?php echo $file->name ?>')"><?php _e('Rename', $sermon_domain) ?></a> | <a onclick="return deletelinked_<?php echo $file->id;?>('<?php echo str_replace("'", '', $file->name) ?>', '<?php echo str_replace("'", '', $file->title) ?>');" href="javascript:kill(<?php echo $file->id ?>, '<?php echo $file->name ?>');"><?php _e('Delete', $sermon_domain) ?></a> 
    207                 </td> 
    208             </tr> 
    209         <?php endforeach ?>  
    210         <?php else: ?> 
    211             <tr> 
    212                 <td><?php _e('No results', $sermon_domain) ?></td> 
    213             </tr> 
    214         <?php endif ?> 
    215 <?php        
    216     } 
    217     die(); 
     42$sermons_per_page = get_option('sb_sermons_per_page'); 
     43 
     44if ($_POST['sermon'] == 1) sb_return_ajax_data(); // Return AJAX data if that is all that is required 
     45 
     46// Add admin menu items and check to see whether install/upgrade is necessary 
     47add_action('admin_menu', 'sb_add_pages'); 
     48sb_sermon_install(); 
     49 
     50// Add Sermons menu and sub-menus in admin 
     51function sb_add_pages() { 
     52    global $sermon_domain; 
     53    add_menu_page(__('Sermons', $sermon_domain), __('Sermons', $sermon_domain), 'edit_posts', __FILE__, 'sb_manage_sermons'); 
     54    add_submenu_page(__FILE__, __('Sermons', $sermon_domain), __('Sermons', $sermon_domain), 'edit_posts', __FILE__, 'sb_manage_sermons'); 
     55    add_submenu_page(__FILE__, __('New Sermon', $sermon_domain), __('New Sermon', $sermon_domain), 'publish_posts', 'sermon-browser/new_sermon.php', 'sb_new_sermon'); 
     56    add_submenu_page(__FILE__, __('Preachers', $sermon_domain), __('Preachers', $sermon_domain), 'manage_categories', 'sermon-browser/preachers.php', 'sb_manage_preachers'); 
     57    add_submenu_page(__FILE__, __('Series &amp; Services', $sermon_domain), __('Series &amp; Services', $sermon_domain), 'manage_categories', 'sermon-browser/manage.php', 'sb_manage_everything'); 
     58    add_submenu_page(__FILE__, __('Uploads', $sermon_domain), __('Uploads', $sermon_domain), 'upload_files', 'sermon-browser/uploads.php', 'sb_uploads'); 
     59    add_submenu_page(__FILE__, __('Options', $sermon_domain), __('Options', $sermon_domain), 'manage_options', 'sermon-browser/options.php', 'sb_options'); 
     60    add_submenu_page(__FILE__, __('Templates', $sermon_domain), __('Templates', $sermon_domain), 'manage_options', 'sermon-browser/templates.php', 'sb_templates'); 
     61    add_submenu_page(__FILE__, __('Help', $sermon_domain), __('Help', $sermon_domain), 'read', 'sermon-browser/help.php', 'sb_help'); 
    21862} 
    21963 
    22064// Installer 
    22165function sb_sermon_install () { 
    222    global $wpdb, $mdict, $sdict, $books;     
    223    global $sermon_domain, $sef; 
    224    global $wordpressRealPath; 
    225    global $defaultSermonPath, $defaultSermonURL, $defaultMultiForm, $defaultSingleForm, $defaultStyle; 
    226    require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
    227     
    228    if(get_option('sb_sermon_db_version') =='1.3'){ 
    229        return; 
    230    } 
    231  
    232    $sermonUploadDir = $defaultSermonPath; 
    233  
    234     //Try to create the folder if it doesn't exist 
    235    if (!is_dir($wordpressRealPath.$sermonUploadDir)) { 
    236       //Create that folder 
    237       if (@mkdir($wordpressRealPath.$sermonUploadDir)) { 
    238          //try CHMOD it to 777 
    239          @chmod($wordpressRealPath.$sermonUploadDir, 0777);           
    240       } 
    241    } 
     66    global $books; 
     67    //Attempt to set php.ini directives 
     68    if (sb_return_kbytes(ini_get('upload_max_filesize'))<15360) ini_set('upload_max_filesize', '15M'); 
     69    if (sb_return_kbytes(ini_get('post_max_size'))<15360) ini_set('post_max_size', '15M'); 
     70    if (sb_return_kbytes(ini_get('memory_limit'))<49152) ini_set('memory_limit', '48M'); 
     71    if (intval(ini_get('max_input_time'))<600) ini_set('max_input_time','600'); 
     72    if (intval(ini_get('max_execution_time'))<600) ini_set('max_execution_time', '600'); 
     73    if (ini_get('file_uploads')<>'1') ini_set('file_uploads', '1'); 
     74    // Only proceed with install if necessary 
     75    if(get_option('sb_sermon_db_version') =='1.4') return; 
     76    global $wpdb, $mdict, $sdict, $books;    
     77    global $wordpressRealPath, $defaultSermonPath, $defaultSermonURL, $defaultMultiForm, $defaultSingleForm, $defaultStyle; 
     78    require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
     79    $sermonUploadDir = $defaultSermonPath; 
     80    if (!is_dir($wordpressRealPath.$sermonUploadDir)) { 
     81        if (@mkdir($wordpressRealPath.$sermonUploadDir)) { 
     82            @chmod($wordpressRealPath.$sermonUploadDir, 0777);           
     83        } 
     84    } 
    24285    if(!is_dir($wordpressRealPath.$sermonUploadDir.'images') && @mkdir($wordpressRealPath.$sermonUploadDir.'images')){ 
    24386        @chmod($wordpressRealPath.$sermonUploadDir.'images', 0777); 
     
    24588    //Upgrade database from earlier versions 
    24689    switch (get_option('sb_sermon_db_version')) { 
    247         case '1.0': 
    248             // move files 
     90        case '1.0': // Also moves files from old default folder to new default folder 
    24991            $oldSermonPath = "/wp-content/plugins/sermonbrowser/files/"; 
    25092            $files = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}sb_stuff WHERE type = 'file' ORDER BY name asc");  
     
    25395                @rename($wordpressRealPath.$oldSermonPath.$file->name, $wordpressRealPath.$defaultSermonPath.$file->name); 
    25496            } 
    255             //Now alter tables 
    25697            $table_name = $wpdb->prefix . "sb_preachers"; 
    25798            if($wpdb->get_var("show tables like '$table_name'") == $table_name) {             
     
    266107            update_option('sb_sermon_db_version', '1.2');    
    267108        case '1.2': 
    268             //Alter tables 
    269109            $table_name = $wpdb->prefix . "sb_stuff"; 
    270110            if($wpdb->get_var("show tables like '$table_name'") == $table_name) 
     
    277117                  $wpdb->query("ALTER TABLE ".$table_name." ADD INDEX (sermon_id)"); 
    278118            update_option('sb_sermon_db_version', '1.3'); 
     119        case '1.3': 
     120            $table_name = $wpdb->prefix . "sb_series"; 
     121            if($wpdb->get_var("show tables like '$table_name'") == $table_name) 
     122                  $wpdb->query("ALTER TABLE ".$table_name." ADD page_id INT(10) NOT NULL"); 
     123            $table_name = $wpdb->prefix . "sb_sermons"; 
     124            if($wpdb->get_var("show tables like '$table_name'") == $table_name) 
     125                  $wpdb->query("ALTER TABLE ".$table_name." ADD page_id INT(10) NOT NULL"); 
     126            add_option('sb_display_method', 'dynamic'); 
     127            add_option('sb_sermons_per_page', '15'); 
     128            if ($wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}sb_books") == 0) { 
     129                for ($i=0; $i < count($books); $i++) {  
     130                    $wpdb->query("INSERT INTO {$wpdb->prefix}sb_books VALUES (null, '$books[$i]')"); // Fix missing data bug from earlier versions 
     131                } 
     132            } 
     133            add_option('sb_sermon_multi_output', base64_encode(strtr(stripslashes(get_option('sb_sermon_multi_form')), $mdict))); 
     134            add_option('sb_sermon_single_output', base64_encode(strtr(stripslashes(get_option('sb_sermon_single_form')), $sdict))); 
     135            add_option('sb_sermon_style_output', base64_encode(stripslashes(get_option('sb_sermon_style')))); 
     136            add_option('sb_sermon_style_date_modified', strtotime('now')); 
     137            update_option('sb_sermon_db_version', '1.4'); 
    279138            return; 
    280139            break; 
    281140        default: 
    282             update_option('sb_sermon_db_version', '1.3'); 
     141            update_option('sb_sermon_db_version', '1.4'); 
    283142            break; 
    284143    }        
     
    306165        `id` INT( 10 ) NOT NULL AUTO_INCREMENT , 
    307166        `name` VARCHAR( 255 ) NOT NULL , 
     167        `page_id` INT(10) NOT NULL, 
    308168        PRIMARY KEY ( `id` ) 
    309169        );"; 
     
    348208        `time` VARCHAR ( 5 ),  
    349209        `override` TINYINT ( 1 ) ,   
     210        `page_id` INT(10) NOT NULL, 
    350211        PRIMARY KEY ( `id` ) 
    351212        );"; 
     
    417278    add_option('sb_sermon_upload_dir', $sermonUploadDir); 
    418279    add_option('sb_sermon_upload_url', $defaultSermonURL); 
    419     add_option('sb_podcast', get_bloginfo('url').$sef.'/?podcast'); 
    420     
     280    add_option('sb_podcast', get_bloginfo('url').sb_display_url().'?podcast'); 
     281    add_option('sb_display_method', 'dynamic'); 
     282    add_option('sb_sermons_per_page', '15'); 
    421283    delete_option('sb_sermon_multi_form'); 
    422284    add_option('sb_sermon_multi_form', base64_encode(sb_default_multi_template())); 
     
    425287    delete_option('sb_sermon_style'); 
    426288    add_option('sb_sermon_style', base64_encode(sb_default_css())); 
    427      
     289    add_option('sb_sermon_multi_output', base64_encode(strtr(stripslashes(get_option('sb_sermon_multi_form')), $mdict))); 
     290    add_option('sb_sermon_single_output', base64_encode(strtr(stripslashes(get_option('sb_sermon_single_form')), $sdict))); 
     291    add_option('sb_sermon_style_output', base64_encode(stripslashes(get_option('sb_sermon_style')))); 
    428292    for ($i=0; $i < count($books); $i++) {  
    429293        $wpdb->query("INSERT INTO {$wpdb->prefix}sb_books VALUES (null, '$books[$i]');"); 
    430294    } 
    431 } 
    432  
    433 // admin cp pages 
    434 function sb_add_pages() { 
    435     global $sermon_domain; 
    436     add_menu_page(__('Sermons', $sermon_domain), __('Sermons', $sermon_domain), 'edit_posts', __FILE__, 'sb_manage_sermons'); 
    437     add_submenu_page(__FILE__, __('Sermons', $sermon_domain), __('Sermons', $sermon_domain), 'edit_posts', __FILE__, 'sb_manage_sermons'); 
    438     add_submenu_page(__FILE__, __('New Sermon', $sermon_domain), __('New Sermon', $sermon_domain), 'publish_posts', 'sermon-browser/new_sermon.php', 'sb_new_sermon'); 
    439     add_submenu_page(__FILE__, __('Preachers', $sermon_domain), __('Preachers', $sermon_domain), 'manage_categories', 'sermon-browser/preachers.php', 'sb_manage_preachers'); 
    440     add_submenu_page(__FILE__, __('Series &amp; Services', $sermon_domain), __('Series &amp; Services', $sermon_domain), 'manage_categories', 'sermon-browser/manage.php', 'sb_manage_everything'); 
    441     add_submenu_page(__FILE__, __('Uploads', $sermon_domain), __('Uploads', $sermon_domain), 'upload_files', 'sermon-browser/uploads.php', 'sb_uploads'); 
    442     add_submenu_page(__FILE__, __('Options', $sermon_domain), __('Options', $sermon_domain), 'manage_options', 'sermon-browser/options.php', 'sb_options'); 
    443     add_submenu_page(__FILE__, __('Help', $sermon_domain), __('Help', $sermon_domain), 'read', 'sermon-browser/help.php', 'sb_help'); 
    444 } 
    445  
    446 // textarea @ option 
     295    add_option('sb_sermon_db_version', '1.4'); 
     296} 
     297 
     298// Tidy the textarea input 
    447299function sb_build_textarea($name, $html) { 
    448300    $out = '<textarea name="'.$name.'" cols="75" rows="15">'; 
     
    452304} 
    453305 
    454 // configuration 
     306// Display the options page and handle changes 
    455307function sb_options() { 
    456     global $wpdb, $sermon_domain, $mdict, $sdict, $sef; 
    457     global $wordpressRealPath; 
    458     global $defaultSermonPath, $defaultSermonURL; 
    459     $sef = sb_display_url(); 
     308    global $wpdb, $sermon_domain, $mdict, $sdict, $url, $display_method; 
     309    global $wordpressRealPath, $defaultSermonPath, $defaultSermonURL; 
     310    //Security check 
     311    if (function_exists('current_user_can')&&!current_user_can('manage_options')) 
     312            wp_die(__("You do not have the correct permissions to edit the Sermon Browser options", $sermon_domain)); 
     313    //Reset options to default 
    460314    if ($_POST['resetdefault']) { 
    461315        $dir = $defaultSermonPath; 
    462         update_option('sb_podcast', $sef.'/?podcast'); 
     316        update_option('sb_podcast', sb_display_url().'?podcast'); 
    463317        update_option('sb_sermon_upload_dir', $defaultSermonPath); 
    464318        update_option('sb_sermon_upload_url', $defaultSermonURL); 
     319        update_option('sb_display_method', 'dynamic'); 
     320        update_option('sb_sermons_per_page', '15'); 
    465321        if (!is_dir($wordpressRealPath.$dir)) { 
    466322          //Create that folder 
     
    472328        if(!is_dir($wordpressRealPath.$sermonUploadDir.'images') && @mkdir($wordpressRealPath.$sermonUploadDir.'images')){ 
    473329         @chmod($wordpressRealPath.$sermonUploadDir.'images', 0777); 
    474        }             
     330        }            
     331        $checkSermonUpload = sb_checkSermonUploadable(); 
     332        switch ($checkSermonUpload) { 
     333            case "unwriteable": 
     334                echo '<div id="message" class="updated fade"><p><b>'; 
     335                _e('Error: The upload folder is not writeable. You need to CHMOD the folder to 666 or 777.', $sermon_domain); 
     336                echo '</b></div>'; 
     337                break; 
     338            case "notexist": 
     339                echo '<div id="message" class="updated fade"><p><b>'; 
     340                _e('Error: The upload folder you have specified does not exist.', $sermon_domain); 
     341                echo '</b></div>'; 
     342                break; 
     343            default:  
     344                echo '<div id="message" class="updated fade"><p><b>'; 
     345                _e('Default loaded successfully.', $sermon_domain); 
     346                echo '</b></div>'; 
     347                break; 
     348            } 
     349        //sb_delete_all_pages(); 
     350    } 
     351    // Rewrite posts/pages if display mode changes (reserved for version 0.40) 
     352    // elseif ($_REQUEST['rewrite']=="true" && ($_REQUEST['method']="page" | $_REQUEST['method']="post")) sb_rewrite_all_pages ($_REQUEST['start']); 
     353    // Save options 
     354    elseif ($_POST['save']) { 
     355        $dir = rtrim(str_replace("\\", "/", $_POST['dir']), "/")."/"; 
     356        update_option('sb_podcast', $_POST['podcast']); 
     357        if (intval($_POST['perpage']) > 0) update_option('sb_sermons_per_page', $_POST['perpage']); 
     358        update_option('sb_sermon_upload_dir', $dir); 
     359        update_option('sb_sermon_upload_url', get_bloginfo('url').$dir);         
     360        if (!is_dir($wordpressRealPath.$dir)) { 
     361          if (@mkdir($wordpressRealPath.$dir)) { 
     362             @chmod($wordpressRealPath.$dir, 0777); 
     363            } 
     364        } 
     365        /* Reserved for version 0.40 
     366        $new_display_method = $_REQUEST['displaymethod']; 
     367        if ($display_method != $new_display_method) { 
     368            sb_delete_all_pages(); 
     369            update_option('sb_display_method', $new_display_method); 
     370            $display_method = $new_display_method; 
     371            if ($display_method != "dynamic") { 
     372                echo "<script>document.location = '$url/wp-admin/admin.php?page=sermon-browser/options.php&rewrite=true&start=0&method={$new_display_method}&mode={$_REQUEST['mode']}';</script>"; 
     373            } else { 
     374                echo "<script>document.location = '$url/wp-admin/admin.php?page=sermon-browser/options.php';</script>"; 
     375            } 
     376        } 
     377        */ 
     378        if(!is_dir($wordpressRealPath.$dir.'images') && @mkdir($wordpressRealPath.$sermonUploadDir.'images')){ 
     379            @chmod($wordpressRealPath.$dir.'images', 0777); 
     380        }            
    475381        $checkSermonUpload = sb_checkSermonUploadable(); 
    476382        switch ($checkSermonUpload) { 
     
    487393        default:  
    488394            echo '<div id="message" class="updated fade"><p><b>'; 
    489             _e('Default loaded properly.', $sermon_domain); 
     395            _e('Options saved successfully.', $sermon_domain); 
    490396            echo '</b></div>'; 
    491397            break; 
    492398       } 
    493399    } 
    494     if ($_POST['save']) { 
    495         $dir = rtrim(str_replace("\\", "/", $_POST['dir']), "/")."/"; 
    496         update_option('sb_podcast', $_POST['podcast']); 
    497         update_option('sb_sermon_upload_dir', $dir); 
    498         update_option('sb_sermon_upload_url', get_bloginfo('url').$dir);         
    499         if (!is_dir($wordpressRealPath.$dir)) { 
    500           //Create that folder 
    501           if (@mkdir($wordpressRealPath.$dir)) { 
    502              //try CHMOD it to 777 
    503              @chmod($wordpressRealPath.$dir, 0777);  
    504           } 
    505         } 
    506     if(!is_dir($wordpressRealPath.$dir.'images') && @mkdir($wordpressRealPath.$sermonUploadDir.'images')){ 
    507          @chmod($wordpressRealPath.$dir.'images', 0777); 
    508        }             
    509         $checkSermonUpload = sb_checkSermonUploadable(); 
    510         switch ($checkSermonUpload) { 
    511         case "unwriteable": 
    512             echo '<div id="message" class="updated fade"><p><b>'; 
    513             _e('Error: The upload folder is not writeable. You need to CHMOD the folder to 666 or 777.', $sermon_domain); 
    514             echo '</b></div>'; 
    515             break; 
    516         case "notexist": 
    517             echo '<div id="message" class="updated fade"><p><b>'; 
    518             _e('Error: The upload folder you have specified does not exist.', $sermon_domain); 
    519             echo '</b></div>'; 
    520             break; 
    521         default:  
    522             echo '<div id="message" class="updated fade"><p><b>'; 
    523             _e('Options saved properly.', $sermon_domain); 
    524             echo '</b></div>'; 
    525             break; 
    526        } 
    527     } 
    528      
    529     if ($_POST['save2'] || $_POST['resetdefault2']) { 
    530         $multi = $_POST['multi']; 
    531         $single = $_POST['single']; 
    532         $style = $_POST['style']; 
    533         if($_POST['resetdefault2']){ 
    534             $multi = sb_default_multi_template(); 
    535             $single = sb_default_single_template(); 
    536             $style = sb_default_css(); 
    537         } 
    538         update_option('sb_sermon_multi_form', base64_encode($multi)); 
    539         update_option('sb_sermon_single_form', base64_encode($single)); 
    540         update_option('sb_sermon_style', base64_encode($style)); 
    541         $fh = @fopen($wordpressRealPath.'/wp-content/plugins/sermon-browser/multi.php', 'w'); 
    542         if ($fh) { 
    543             fwrite($fh, strtr(stripslashes($multi), $mdict)); 
    544             fclose($fh); 
    545         } else { 
    546             echo '<div id="message" class="updated fade"><p><b>'; 
    547             _e('Could not save multi template. Please check permission for multi.php in plugin folder', $sermon_domain); 
    548             echo '</b></div>';           
    549         } 
    550         $fh = @fopen($wordpressRealPath.'/wp-content/plugins/sermon-browser/single.php', 'w'); 
    551         if ($fh) { 
    552             fwrite($fh, strtr(stripslashes($single), $sdict)); 
    553             fclose($fh); 
    554         } else { 
    555             echo '<div id="message" class="updated fade"><p><b>'; 
    556             _e('Could not save single template. Please check permission for single.php in plugin folder', $sermon_domain); 
    557             echo '</b></div>';           
    558         } 
    559         $fh = @fopen($wordpressRealPath.'/wp-content/plugins/sermon-browser/style.css', 'w'); 
    560         if ($fh) { 
    561             fwrite($fh, $style); 
    562             fclose($fh); 
    563         } else { 
    564             echo '<div id="message" class="updated fade"><p><b>'; 
    565             _e('Could not save style template. Please check permission for style.css in plugin folder', $sermon_domain); 
    566             echo '</b></div>';           
    567         } 
    568         echo '<div id="message" class="updated fade"><p><b>'; 
    569         _e('Options saved properly.', $sermon_domain); 
    570         echo '</b></div>';       
    571     } 
    572     if ($_POST['uninstall']) { 
     400    //Uninstall plugin 
     401    elseif ($_POST['uninstall']) { 
    573402        if ($_POST['wipe'] == 1) { 
    574403            $dir = $wordpressRealPath.get_option('sb_sermon_upload_dir'); 
     
    581410                closedir($dh); 
    582411            } 
    583             //rmdir($wordpressRealPath.get_option('sb_sermon_upload_dir')); 
    584412        } 
    585413        $table_name = $wpdb->prefix."sb_preachers"; 
     
    601429        delete_option('sb_sermon_db_version'); 
    602430        delete_option('sb_sermon_style'); 
    603         echo '<div id="message" class="updated fade"><p><b>'.__('Uninstall completed. Please deactivate the plugin', $sermon_domain).'</b></div>'; 
    604     } 
    605      
     431        delete_option('sb_sermon_multi_output'); 
     432        delete_option('sb_sermon_single_output'); 
     433        delete_option('sb_sermon_style_output'); 
     434        delete_option('sb_sermon_style_date_modified'); 
     435        echo '<div id="message" class="updated fade"><p><b>'.__('Uninstall completed. Please deactivate the plugin.', $sermon_domain).'</b></div>'; 
     436    } 
     437    //Display error messsages when problems in php.ini 
    606438    function sb_display_error ($message) { 
     439        global $sermon_domain; 
    607440        return  '<tr><td align="right" style="color:#AA0000; font-weight:bold">'.__('Error', $sermon_domain).':</td>'. 
    608441                '<td style="color: #AA0000">'.$message.'</td></tr>'; 
    609442    } 
     443    //Display warning messsages when problems in php.ini 
    610444    function sb_display_warning ($message) { 
     445        global $sermon_domain; 
    611446        return  '<tr><td align="right" style="color:#FF8C00; font-weight:bold">'.__('Warning', $sermon_domain).':</td>'. 
    612447                '<td style="color: #FF8C00">'.$message.'</td></tr>'; 
    613448    } 
     449    sb_check_sermon_tag(); 
     450    // HTML for options page 
    614451?> 
    615452    <form method="post"> 
    616453    <div class="wrap"> 
    617454        <h2><?php _e('Options', $sermon_domain) ?></h2> 
     455        <br style="clear:both"/> 
    618456        <table border="0" class="widefat"> 
    619457            <tr> 
    620                 <td align="right"><?php _e('Upload directory', $sermon_domain) ?>: </td> 
    621                 <td><input type="text" name="dir" value="<?php echo get_option('sb_sermon_upload_dir') ?>" style="width:300px"></td> 
     458                <td align="right" style="vertical-align:middle"><?php _e('Upload directory', $sermon_domain) ?>: </td> 
     459                <td><input type="text" name="dir" value="<?php echo get_option('sb_sermon_upload_dir') ?>" style="width:100%" /></td> 
    622460            </tr> 
    623461            <tr> 
    624                 <td align="right"><?php _e('Public podcast feed', $sermon_domain) ?>: </td> 
    625                 <td><input type="text" name="podcast" value="<?php echo get_option('sb_podcast') ?>" style="width:300px"></td> 
     462                <td align="right" style="vertical-align:middle"><?php _e('Public podcast feed', $sermon_domain) ?>: </td> 
     463                <td><input type="text" name="podcast" value="<?php echo get_option('sb_podcast') ?>" style="width:100%" /></td> 
    626464            </tr> 
    627465            <tr> 
    628466                <td align="right"><?php _e('Private podcast feed', $sermon_domain) ?>: </td> 
    629                 <td><?php echo $sef.'/?podcast' ?></td> 
     467                <td><?php echo sb_display_url().'?podcast' ?></td> 
     468            </tr> 
     469            <?php /* Reserved for version 0.40  
     470            <tr> 
     471                <td align="right" style="vertical-align:middle"><?php _e('Display method', $sermon_domain) ?>: </td> 
     472                <td><select name="displaymethod" id="displaymethod"> 
     473                    <option value="post" <?php echo $display_method == "post" ? 'selected="selected"' : '' ?>><?php _e("Post for each sermon", $sermon_domain) ?></option> 
     474                    <option value="page" <?php echo $display_method == "page" ? 'selected="selected"' : '' ?>><?php _e("Page for each sermon", $sermon_domain) ?></option> 
     475                    <option value="dynamic" <?php echo $display_method == "dynamic" ? 'selected="selected"' : '' ?>><?php _e("Single dynamic page", $sermon_domain) ?></option> 
     476                    </select> 
     477                </td> 
     478            </tr> 
     479            */ ?> 
     480            <tr> 
     481                <td align="right" style="vertical-align:middle"><?php _e('Sermons per page', $sermon_domain) ?>: </td> 
     482                <td><input type="text" name="perpage" value="<?php echo get_option('sb_sermons_per_page') ?>" /></td> 
    630483            </tr> 
    631484            <?php 
     
    645498                if ($max_post < 15360) echo sb_display_warning(__('The maximum file size you send through the browser is only ', $sermon_domain).$max_post.__('k. Please change post_max_size to at least 15M in php.ini.', $sermon_domain)); 
    646499                if ($max_execution < 600) echo sb_display_warning(__('The maximum time allowed for any script to run is only ', $sermon_domain).$max_execution.__(' seconds. Please change max_execution_time to at least 600 in php.ini.', $sermon_domain)); 
    647                 if ($max_input < 600) echo sb_display_warning(__('The maximum time allowed for an upload script to run is only ', $sermon_domain).$max_input.__(' seconds. Please change max_input_time to at least 600 in php.ini.', $sermon_domain)); 
     500                if ($max_input < 600 && $max_input != -1) echo sb_display_warning(__('The maximum time allowed for an upload script to run is only ', $sermon_domain).$max_input.__(' seconds. Please change max_input_time to at least 600 in php.ini.', $sermon_domain)); 
    648501                if ($max_memory < 16384) echo sb_display_warning(__('The maximum amount of memory allowed is only ', $sermon_domain).$max_memory.__('k. Please change memory_limit to at least 16M in php.ini.', $sermon_domain)); 
    649502            ?> 
     
    651504        <p class="submit"><input type="submit" name="resetdefault" value="<?php _e('Reset to defaults', $sermon_domain) ?>"  />&nbsp;<input type="submit" name="save" value="<?php _e('Save', $sermon_domain) ?> &raquo;" /></p>  
    652505    </div>   
     506    <div class="wrap"> 
     507        <h2><?php _e('Uninstall', $sermon_domain) ?></h2> 
     508        <br style="clear:both"/> 
     509        <table border="0" class="widefat">           
     510            <tr> 
     511                <td><input type="checkbox" name="wipe" value="1"> <?php _e('Remove all files', $sermon_domain) ?></td> 
     512            </tr> 
     513        </table> 
     514        <p class="submit"><input type="submit" name="uninstall" value="<?php _e('Uninstall', $sermon_domain) ?>" onclick="return confirm('Are you sure?')" /></p>  
     515    </div> 
     516    </form> 
     517    <script> 
     518        jQuery("form").submit(function() { 
     519            var yes = confirm("Are you sure ?"); 
     520            if(!yes) return false; 
     521        }); 
     522    </script> 
     523<?php  
     524} 
     525 
     526// Display the templates page and handle changes 
     527function sb_templates () { 
     528    global $wordpressRealPath, $mdict, $sdict, $sermon_domain; 
     529    //Security check 
     530    if (function_exists('current_user_can')&&!current_user_can('manage_options')) 
     531            wp_die(__("You do not have the correct permissions to edit the Sermon Browser templates", $sermon_domain)); 
     532    //Save templates or reset to default 
     533    if ($_POST['save'] || $_POST['resetdefault']) { 
     534        $multi = $_POST['multi']; 
     535        $single = $_POST['single']; 
     536        $style = $_POST['style']; 
     537        if($_POST['resetdefault']){ 
     538            $multi = sb_default_multi_template(); 
     539            $single = sb_default_single_template(); 
     540            $style = sb_default_css(); 
     541        } 
     542        update_option('sb_sermon_multi_form', base64_encode($multi)); 
     543        update_option('sb_sermon_single_form', base64_encode($single)); 
     544        update_option('sb_sermon_style', base64_encode($style)); 
     545        update_option('sb_sermon_multi_output', base64_encode(strtr(stripslashes($multi), $mdict))); 
     546        update_option('sb_sermon_single_output', base64_encode(strtr(stripslashes($single), $sdict))); 
     547        update_option('sb_sermon_style_output', base64_encode(stripslashes($style))); 
     548        update_option('sb_sermon_style_date_modified', strtotime('now')); 
     549        echo '<div id="message" class="updated fade"><p><b>'; 
     550        _e('Templates saved successfully.', $sermon_domain); 
     551        echo '</b></p></div>';       
     552    } 
     553    sb_check_sermon_tag(); 
     554    // HTML for templates page 
     555    ?> 
     556    <form method="post"> 
    653557    <div class="wrap"> 
    654558        <h2><?php _e('Templates', $sermon_domain) ?></h2> 
     
    673577            </tr>            
    674578        </table>                 
    675         <p class="submit"><input type="submit" name="resetdefault2" value="<?php _e('Reset to defaults', $sermon_domain) ?>"  />&nbsp;<input type="submit" name="save2" value="<?php _e('Save', $sermon_domain) ?> &raquo;" /></p>  
     579        <p class="submit"><input type="submit" name="resetdefault" value="<?php _e('Reset to defaults', $sermon_domain) ?>"  />&nbsp;<input type="submit" name="save" value="<?php _e('Save', $sermon_domain) ?> &raquo;" /></p>  
    676580    </div>       
    677     <div class="wrap"> 
    678         <h2><?php _e('Uninstall', $sermon_domain) ?></h2> 
    679         <table border="0" class="widefat">           
    680             <tr> 
    681                 <td><input type="checkbox" name="wipe" value="1"> <?php _e('Remove all files', $sermon_domain) ?></td> 
    682             </tr> 
    683         </table> 
    684         <p class="submit"><input type="submit" name="uninstall" value="<?php _e('Uninstall', $sermon_domain) ?>" onclick="return confirm('Are you sure?')" /></p>  
    685     </div> 
    686581    </form> 
    687582    <script> 
     
    694589} 
    695590 
     591// Display the preachers page and handle changes 
    696592function sb_manage_preachers() { 
    697593    global $wpdb, $sermon_domain; 
    698594    global $wordpressRealPath; 
    699      
     595    //Security check 
     596    if (function_exists('current_user_can')&&!current_user_can('manage_categories')) 
     597            wp_die(__("You do not have the correct permissions to manage the preachers' database", $sermon_domain)); 
    700598    $url = get_bloginfo('wpurl'); 
    701      
    702599    if ($_GET['saved']) { 
    703600        echo '<div id="message" class="updated fade"><p><b>'.__('Preacher saved to database.', $sermon_domain).'</b></div>'; 
    704601    } 
    705      
     602    //Save changes 
    706603    if ($_POST['save']) { 
    707604        $name = mysql_real_escape_string($_POST['name']); 
     
    716613            $filename = basename($_FILES['upload']['name']); 
    717614            $prefix = ''; 
    718             $dest = $wordpressRealPath.get_option('sb_sermon_upload_dir').'images/'.$filename; 
    719             if (move_uploaded_file($_FILES['upload']['tmp_name'], $dest)) { 
     615            $sermonUploadDir = get_option('sb_sermon_upload_dir'); 
     616            if(!is_dir($wordpressRealPath.$sermonUploadDir.'images') && @mkdir($wordpressRealPath.$sermonUploadDir.'images')){ 
     617                @chmod($wordpressRealPath.$sermonUploadDir.'images', 0777); 
     618            } 
     619            $dest = $wordpressRealPath.$sermonUploadDir.'images/'.$filename; 
     620            if (@move_uploaded_file($_FILES['upload']['tmp_name'], $dest)) { 
    720621                $filename = $prefix.mysql_real_escape_string($filename); 
    721622            }else { 
    722623                $error = true; 
    723                 echo '<div id="message" class="updated fade"><p><b>'.__('Upload failed.', $sermon_domain).'</b></div>'; 
     624                echo '<div id="message" class="updated fade"><p><b>'.__('Could not save uploaded file. Please try again.', $sermon_domain).'</b></div>'; 
     625                @chmod($wordpressRealPath.$sermonUploadDir.'images', 0777); 
    724626            } 
    725627        } else { 
    726628                $error = true; 
    727                 echo '<div id="message" class="updated fade"><p><b>'.__('Upload failed.', $sermon_domain).'</b></div>'; 
    728                              
     629                echo '<div id="message" class="updated fade"><p><b>'.__('Could not upload file. Please check the Options page for any errors or warnings.', $sermon_domain).'</b></div>'; 
    729630        } 
    730631         
     
    757658    if ($_GET['act'] == 'new' || $_GET['act'] == 'edit') { 
    758659        if ($_GET['act'] == 'edit') $preacher = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}sb_preachers WHERE id = ".(int) $_GET['pid']); 
     660    sb_check_sermon_tag(); 
     661    //Display HTML 
    759662?> 
    760663    <div class="wrap"> 
    761664        <h2><?php echo $_GET['act'] == 'new' ? __('Add', $sermon_domain) : __('Edit', $sermon_domain) ?> <?php _e('preacher', $sermon_domain) ?></h2> 
     665        <br style="clear:both"> 
     666        <?php 
     667            $checkSermonUpload = sb_checkSermonUploadable('images/'); 
     668            if ($checkSermonUpload == 'notexist') { 
     669                if(!is_dir($wordpressRealPath.$sermonUploadDir.'images') && @mkdir($wordpressRealPath.$sermonUploadDir.'images')){ 
     670                    @chmod($wordpressRealPath.$sermonUploadDir.'images', 0777); 
     671                } 
     672                $checkSermonUpload = sb_checkSermonUploadable('images/'); 
     673            } 
     674            if ($checkSermonUpload != 'writeable') { 
     675                echo '<div id="message" class="updated fade"><p><b>'.__("The images folder is not writeable. You won't be able to upload images.", $sermon_domain).'</b></div>'; 
     676            } 
     677        ?> 
    762678        <form method="post" enctype="multipart/form-data"> 
    763679        <input type="hidden" name="pid" value="<?php echo (int) $_GET['pid'] ?>"> 
     
    805721?> 
    806722    <div class="wrap"> 
    807         <h2><?php _e('Manage Preachers', $sermon_domain) ?> (<a href="<?php echo $url ?>/wp-admin/admin.php?page=sermon-browser/preachers.php&act=new"><?php _e('add new', $sermon_domain) ?></a>)</h2> 
     723        <h2><?php _e('Preachers', $sermon_domain) ?> (<a href="<?php echo $url ?>/wp-admin/admin.php?page=sermon-browser/preachers.php&act=new"><?php _e('add new', $sermon_domain) ?></a>)</h2> 
    808724        <table class="widefat"> 
    809725            <thead> 
     
    832748} 
    833749 
    834 // manage <strike>preachers</strike>, services & series 
    835 // lots of ajaxy stuff 
     750// Display services & series page and handle changes 
    836751function sb_manage_everything() { 
    837752    global $wpdb, $sermon_domain; 
     753    //Security check 
     754    if (function_exists('current_user_can')&&!current_user_can('manage_categories')) 
     755            wp_die(__("You do not have the correct permissions to manage the series and services database", $sermon_domain)); 
    838756     
    839757    $url = get_bloginfo('wpurl'); 
     
    846764        'Services' => array('data' => $services), 
    847765    ); 
     766    sb_check_sermon_tag(); 
    848767?> 
    849     <style> 
    850         #supersub { 
    851             border-bottom: 1px solid #ccc; 
    852             border-top: 1px solid #ccc; 
    853             background: #fffeeb; 
    854             line-height: 29px; 
    855             font-size: 12px; 
    856             color: #555; 
    857             text-align: center; 
    858         }    
    859         #supersub a { 
    860             font-size: 1.1em; 
    861         } 
    862         #supersub a:link { 
    863             color: #036; 
    864         } 
    865     </style> 
    866768    <script type="text/javascript" src="<?php echo $url ?>/wp-includes/js/jquery/jquery.js"></script> 
    867769    <script type="text/javascript" src="<?php echo $url ?>/wp-includes/js/fat.js"></script> 
     
    978880    </script> 
    979881    <a name="top"></a> 
    980     <div id="supersub"> 
    981         <a href="#manage-Series"><?php _e('Manage Series', $sermon_domain) ?></a> 
    982         <a href="#manage-Services"><?php _e('Manage Services', $sermon_domain) ?></a> 
    983     </div> 
    984882<?php 
    985883    foreach ($toManage as $k => $v) { 
     
    1035933} 
    1036934 
    1037 // upload page 
     935// Display upload page and handle changes 
    1038936function sb_uploads() { 
    1039     global $wpdb, $filetypes, $sermon_domain; 
     937    global $wpdb, $filetypes, $sermon_domain, $sermons_per_page; 
    1040938    global $wordpressRealPath; 
     939    //Security check 
     940    if (function_exists('current_user_can')&&!current_user_can('upload_files')) 
     941            wp_die(__("You do not have the correct permissions to upload sermons", $sermon_domain)); 
    1041942    // sync 
    1042943    sb_scan_dir(); 
     
    1057958                } 
    1058959            } else { 
    1059                 echo '<div id="message" class="updated fade"><p><b>'.__($filename. ' has already existed.', $sermon_domain).'</b></div>'; 
     960                echo '<div id="message" class="updated fade"><p><b>'.__($filename. ' already exists.', $sermon_domain).'</b></div>'; 
    1060961            } 
    1061962        } 
    1062963    }    
    1063964     
    1064     $unlinked = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.sermon_id = 0 AND f.type = 'file' ORDER BY f.name LIMIT 0, 15;"); 
    1065     $linked = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.sermon_id <> 0 AND f.type = 'file' ORDER BY f.name LIMIT 0, 15;"); 
     965    $unlinked = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.sermon_id = 0 AND f.type = 'file' ORDER BY f.name LIMIT 0, {$sermons_per_page};"); 
     966    $linked = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.sermon_id <> 0 AND f.type = 'file' ORDER BY f.name LIMIT 0, {$sermons_per_page};"); 
    1066967     
     968    //Removes missing attachments from the database 
    1067969    if($_POST['clean']) { 
    1068         // sync (but different from last time) 
    1069970        $unlinked = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.sermon_id = 0 AND f.type = 'file' ORDER BY f.name;"); 
    1070971        $linked = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.sermon_id <> 0 AND f.type = 'file' ORDER BY f.name;"); 
    1071972        $wanted = array(-1); 
    1072      
    1073973        foreach ((array) $unlinked as $k => $file) { 
    1074974            if (!file_exists($wordpressRealPath.get_option('sb_sermon_upload_dir').$file->name)) { 
     
    1077977            } 
    1078978        } 
    1079      
    1080979        foreach ((array) $linked as $k => $file) {       
    1081980            if (!file_exists($wordpressRealPath.get_option('sb_sermon_upload_dir').$file->name)) {           
     
    1084983            } 
    1085984        } 
    1086      
    1087985        $wpdb->query("DELETE FROM {$wpdb->prefix}sb_stuff WHERE id IN (".implode(', ', (array) $wanted).")"); 
    1088986    } 
     
    1092990    $cntl = $wpdb->get_row("SELECT COUNT(*) as cntl FROM {$wpdb->prefix}sb_stuff WHERE sermon_id <> 0 AND type = 'file' ", ARRAY_A); 
    1093991    $cntl = $cntl['cntl'];       
     992    sb_check_sermon_tag(); 
    1094993?> 
    1095     <style> 
    1096         #supersub { 
    1097             border-bottom: 1px solid #ccc; 
    1098             border-top: 1px solid #ccc; 
    1099             background: #fffeeb; 
    1100             line-height: 29px; 
    1101             font-size: 12px; 
    1102             color: #555; 
    1103             text-align: center; 
    1104         }    
    1105         #supersub a { 
    1106             font-size: 1.1em; 
    1107         } 
    1108         #supersub a:link { 
    1109             color: #036; 
    1110         } 
    1111     </style> 
    1112994    <script type="text/javascript" src="<?php echo $url ?>/wp-includes/js/jquery/jquery.js"></script> 
    1113995    <script type="text/javascript" src="<?php echo $url ?>/wp-includes/js/fat.js"></script> 
    1114996    <script> 
    1115997        function rename(id, old) { 
    1116             var f = prompt("New file name?", old); 
     998            var f = prompt("<?php _e('New file name?', $sermon_domain) ?>", old); 
    1117999            if (f != null) { 
    11181000                jQuery.post('<?php echo $url ?>/wp-admin/admin.php?page=sermon-browser/uploads.php', {fid: id, oname: old, fname: f, sermon: 1}, function(r) { 
     
    11261008                            Fat.fade_element('s' + id); 
    11271009                        } else { 
    1128                             alert('The script is unable to rename your file.'); 
     1010                            alert('<?php _e('The script is unable to rename your file.', $sermon_domain) ?>'); 
    11291011                        } 
    11301012                    }; 
     
    11531035                        }); 
    11541036                    } else { 
    1155                         alert('The script is unable to delete your file.'); 
     1037                        alert('<?php _e('The script is unable to delete your file.', $sermon_domain) ?>'); 
    11561038                    } 
    11571039                }; 
     
    11621044                if (r) { 
    11631045                    jQuery('#the-list-u').html(r);                   
    1164                     if (st >= 15) { 
    1165                         x = st - 15; 
    1166                         jQuery('#uleft').html('<a href="javascript:fetchU(' + x + ')">&laquo; Previous</a>'); 
     1046                    if (st >= <?php echo $sermons_per_page ?>) { 
     1047                        x = st - <?php echo $sermons_per_page ?>; 
     1048                        jQuery('#uleft').html('<a href="javascript:fetchU(' + x + ')">&laquo; <?php _e('Previous', $sermon_domain) ?></a>'); 
    11671049                    } else { 
    11681050                        jQuery('#uleft').html(''); 
    11691051                    } 
    1170                     if (st + 15 <= <?php echo $cntu ?>) { 
    1171                         y = st + 15; 
    1172                         jQuery('#uright').html('<a href="javascript:fetchU(' + y + ')">Next &raquo;</a>'); 
     1052                    if (st + <?php echo $sermons_per_page ?> <= <?php echo $cntu ?>) { 
     1053                        y = st + <?php echo $sermons_per_page ?>; 
     1054                        jQuery('#uright').html('<a href="javascript:fetchU(' + y + ')"><?php _e('Next', $sermon_domain) ?> &raquo;</a>'); 
    11731055                    } else { 
    11741056                        jQuery('#uright').html(''); 
     
    11811063                if (r) { 
    11821064                    jQuery('#the-list-l').html(r);                   
    1183                     if (st >= 15) { 
    1184                         x = st - 15; 
    1185                         jQuery('#left').html('<a href="javascript:fetchL(' + x + ')">&laquo; Previous</a>'); 
     1065                    if (st >= <?php echo $sermons_per_page ?>) { 
     1066                        x = st - <?php echo $sermons_per_page ?>; 
     1067                        jQuery('#left').html('<a href="javascript:fetchL(' + x + ')">&laquo; <?php _e('Previous', $sermon_domain) ?></a>'); 
    11861068                    } else { 
    11871069                        jQuery('#left').html(''); 
    11881070                    } 
    1189                     if (st + 15 <= <?php echo $cntl ?>) { 
    1190                         y = st + 15; 
    1191                         jQuery('#right').html('<a href="javascript:fetchL(' + y + ')">Next &raquo;</a>'); 
     1071                    if (st + <?php echo $sermons_per_page ?> <= <?php echo $cntl ?>) { 
     1072                        y = st + <?php echo $sermons_per_page ?>; 
     1073                        jQuery('#right').html('<a href="javascript:fetchL(' + y + ')"><?php _e('Next', $sermon_domain) ?> &raquo;</a>'); 
    11921074                    } else { 
    11931075                        jQuery('#right').html(''); 
     
    12051087    </script> 
    12061088    <a name="top"></a> 
    1207     <div id="supersub"> 
    1208         <a href="#unlinked"><?php _e('Unlinked files', $sermon_domain) ?></a> 
    1209         <a href="#linked"><?php _e('Linked files', $sermon_domain) ?></a> 
    1210         <a href="#search"><?php _e('Search for files', $sermon_domain) ?></a> 
    1211     </div> 
    1212     <a name="unlinked"></a> 
    12131089    <div class="wrap"> 
    1214         <h2>Unlinked files</h2> 
     1090        <h2><?php _e('Upload Files', $sermon_domain) ?></h2>         
     1091        <?php 
     1092        $checkSermonUpload = sb_checkSermonUploadable(); 
     1093        if ($checkSermonUpload == 'writeable') { 
     1094        ?>   
     1095        <br style="clear:both"> 
     1096        <form method="post" enctype="multipart/form-data"> 
     1097            <table width="100%" cellspacing="2" cellpadding="5" class="widefat"> 
     1098            <tbody> 
     1099            <tr> 
     1100                <th valign="top" scope="row"><?php _e('File to upload', $sermon_domain) ?>: </th> 
     1101                <td><input type="file" size="40" value="" name="upload"/></td> 
     1102            </tr>        
     1103            <tr> 
     1104                <th scope="row">&nbsp;</th> 
     1105                <td class="submit"><input type="submit" name="save" value="<?php _e('Upload', $sermon_domain) ?> &raquo;" /></td> 
     1106            </tr> 
     1107            </tbody> 
     1108            </table> 
     1109        </form> 
     1110        <?php 
     1111        } else { 
     1112        ?> 
     1113        <p style="color:#FF0000"><?php _e('Upload is disabled. Please check your folder setting in Options.', $sermon_domain);?></p> 
     1114        <?php 
     1115        } 
     1116        ?> 
     1117    </div>   
     1118    <div class="wrap"> 
     1119        <h2><?php _e('Unlinked files', $sermon_domain) ?></h2> 
    12151120        <br style="clear:both"> 
    12161121        <table class="widefat"> 
     
    12311136                            <td width="20%" style="text-align:center"><?php echo isset($filetypes[substr($file->name, strrpos($file->name, '.') + 1)]['name']) ? $filetypes[substr($file->name, strrpos($file->name, '.') + 1)]['name'] : strtoupper(substr($file->name, strrpos($file->name, '.') + 1)) ?></td> 
    12321137                            <td width="20%" style="text-align:center"> 
    1233                                 <?php //if (is_writable($wordpressRealPath.get_option('sb_sermon_upload_dir').$file->name)): ?> 
    12341138                                <a id="link<?php echo $file->id ?>" href="javascript:rename(<?php echo $file->id ?>, '<?php echo $file->name ?>')"><?php _e('Rename', $sermon_domain) ?></a> | <a onclick="return confirm('Do you really want to delete <?php echo str_replace("'", '', $file->name) ?>?');" href="javascript:kill(<?php echo $file->id ?>, '<?php echo $file->name ?>');"><?php _e('Delete', $sermon_domain) ?></a>  
    1235                                 <?php //endif ?> 
    12361139                            </td> 
    12371140                        </tr> 
     
    12481151    <a name="linked"></a> 
    12491152    <div class="wrap"> 
    1250         <h2>Linked files</h2> 
     1153        <h2><?php _e('Linked files', $sermon_domain) ?></h2> 
    12511154        <br style="clear:both"> 
    12521155        <table class="widefat"> 
     
    12771180                            } 
    12781181                            </script> 
    1279                                 <?php //if (is_writable($wordpressRealPath.get_option('sb_sermon_upload_dir').$file->name)): ?> 
    12801182                                <a id="link<?php echo $file->id ?>" href="javascript:rename(<?php echo $file->id ?>, '<?php echo $file->name ?>')"><?php _e('Rename', $sermon_domain) ?></a> | <a onclick="return deletelinked_<?php echo $file->id;?>('<?php echo str_replace("'", '', $file->name) ?>', '<?php echo str_replace("'", '', $file->title) ?>');" href="javascript:kill(<?php echo $file->id ?>, '<?php echo $file->name ?>');"><?php _e('Delete', $sermon_domain) ?></a>  
    1281                                 <?php //endif ?> 
    12821183                            </td> 
    12831184                        </tr> 
     
    12921193        </div> 
    12931194    </div>   
    1294     <div class="wrap"> 
    1295         <h2><?php _e('Upload Files', $sermon_domain) ?></h2>         
    1296         <?php 
    1297         $checkSermonUpload = sb_checkSermonUploadable(); 
    1298         if ($checkSermonUpload == 'writeable') { 
    1299         ?>   
    1300         <form method="post" enctype="multipart/form-data"> 
    1301             <table width="100%" cellspacing="2" cellpadding="5" class="editform"> 
    1302             <?php if ($fname): ?> 
    1303             <tr> 
    1304                 <th valign="top" scope="row"><?php _e('Current file', $sermon_domain) ?>: </th> 
    1305                 <td><?php echo $fname ?></td> 
    1306             </tr>                
    1307             <?php endif ?> 
    1308             <tr> 
    1309                 <th valign="top" scope="row"><?php _e('File to upload', $sermon_domain) ?>: </th> 
    1310                 <td><input type="file" size="40" value="" name="upload"/></td> 
    1311             </tr>        
    1312             <?php if ($fname): ?> 
    1313             <?php $sermons = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}sb_sermons") ?> 
    1314             <tr> 
    1315                 <th valign="top" scope="row"><?php _e('Sermon', $sermon_domain) ?>: </th> 
    1316                 <td> 
    1317                     <?php if (is_array($sermons)): ?>                        
    1318                         <select name="sermon"> 
    1319                             <?php foreach ($sermons as $sermon): ?>                              
    1320                                 <?php $selected = ($sermon->id == $result->sermon_id) ? 'selected="selected"' : ''; ?> 
    1321                                 <option value="<?php echo $sermon->id ?>" <?php echo $selected ?>><?php echo htmlspecialchars(stripslashes($sermon->title), ENT_QUOTES) ?></option> 
    1322                             <?php endforeach ?> 
    1323                         </select> 
    1324                     <?php endif ?> 
    1325                 </td> 
    1326             </tr>                
    1327             <?php endif ?> 
    1328             </table> 
    1329             <p class="submit"><input type="submit" name="save" value="<?php _e('Upload', $sermon_domain) ?> &raquo;" />&nbsp;<input type="submit" name="clean" value="<?php _e('Clean up', $sermon_domain) ?>" /></p>  
    1330         </form> 
    1331         <?php 
    1332         } else { 
    1333         ?> 
    1334         <p style="color:#FF0000"><?php _e('Upload is disabled. Please check your folder setting (Sermons / Options).', $sermon_domain);?></p> 
    1335         <?php 
    1336         } 
    1337         ?> 
    1338     </div>   
    13391195    <a name="search"></a> 
    13401196    <div class="wrap"> 
    13411197        <h2><?php _e('Search for files', $sermon_domain) ?></h2> 
    1342         <form id="searchform" name="searchform">             
    1343         <fieldset> 
    1344             <legend><?php _e('File name', $sermon_domain) ?></legend> 
    1345             <input type="text" size="17" value="" id="search" /> 
    1346         </fieldset>              
    1347         <input type="submit" class="button" value="<?php _e('Search', $sermon_domain) ?> &raquo;" style="float:left;margin:14px 0pt 1em; position:relative;top:0.35em;" onclick="javascript:findNow();return false;" /> 
     1198        <form id="searchform" name="searchform"> 
     1199            <p> 
     1200                <input type="text" size="30" value="" id="search" /> 
     1201                <input type="submit" class="button" value="<?php _e('Search', $sermon_domain) ?> &raquo;" onclick="javascript:findNow();return false;" /> 
     1202            </p> 
    13481203        </form> 
    1349         <br style="clear:both"> 
    13501204        <table class="widefat"> 
    13511205            <thead> 
     
    13671221    </div> 
    13681222    <script> 
    1369         <?php if ($cntu > 15): ?> 
    1370             jQuery('#uright').html('<a href="javascript:fetchU(15)">Next &raquo;</a>'); 
     1223        <?php if ($cntu > $sermons_per_page): ?> 
     1224            jQuery('#uright').html('<a href="javascript:fetchU(<?php echo $sermons_per_page ?>)">Next &raquo;</a>'); 
    13711225        <?php endif ?> 
    1372         <?php if ($cntl > 15): ?> 
    1373             jQuery('#right').html('<a href="javascript:fetchL(15)">Next &raquo;</a>'); 
     1226        <?php if ($cntl > $sermons_per_page): ?> 
     1227            jQuery('#right').html('<a href="javascript:fetchL(<?php echo $sermons_per_page ?>)">Next &raquo;</a>'); 
    13741228        <?php endif ?> 
    13751229    </script> 
    1376 <?php    
     1230    <?php 
     1231        if ($checkSermonUpload == 'writeable') { 
     1232        ?>   
     1233        <div class="wrap"> 
     1234            <h2><?php _e('Clean up', $sermon_domain) ?></h2> 
     1235            <form method="post" > 
     1236                <p><?php _e('Pressing the button below scans every sermon in the database, and removes missing attachments. Use with caution!', $sermon_domain) ?></p> 
     1237                <input type="submit" name="clean" value="<?php _e('Clean up missing files', $sermon_domain) ?>" /> 
     1238            </form> 
     1239        </div> 
     1240        <?php 
     1241    } 
    13771242} 
    13781243 
     
    13841249} 
    13851250 
    1386 // manage sermon of coz 
     1251// Displays Sermons page 
    13871252function sb_manage_sermons() { 
    1388     global $wpdb, $sermon_domain; 
    1389  
     1253    global $wpdb, $sermon_domain, $sermons_per_page; 
     1254    //Security check 
     1255    if (function_exists('current_user_can')&&!(current_user_can('edit_posts')|current_user_can('publish_posts'))) 
     1256        wp_die(__("You do not have the correct permissions to edit sermons", $sermon_domain)); 
    13901257    $url = get_bloginfo('wpurl'); 
    1391      
     1258    sb_check_sermon_tag(); 
    13921259    if ($_GET['saved']) { 
    13931260        echo '<div id="message" class="updated fade"><p><b>'.__('Sermon saved to database.', $sermon_domain).'</b></div>'; 
     
    13951262     
    13961263    if ($_GET['mid']) { 
     1264        //Security check 
     1265        if (function_exists('current_user_can')&&!current_user_can('edit_posts')) 
     1266            wp_die(__("You do not have the correct permissions to delete sermons", $sermon_domain)); 
    13971267        $mid = (int) $_GET['mid']; 
    13981268        $wpdb->query("DELETE FROM {$wpdb->prefix}sb_sermons WHERE id = $mid;"); 
     
    14071277    $cnt = $cnt['COUNT(*)'];         
    14081278             
    1409     $sermons = $wpdb->get_results("SELECT m.id, m.title, m.date, p.name as pname, s.name as sname, ss.name as ssname FROM {$wpdb->prefix}sb_sermons as m, {$wpdb->prefix}sb_preachers as p, {$wpdb->prefix}sb_services as s, {$wpdb->prefix}sb_series as ss where (m.preacher_id = p.id and m.service_id = s.id and m.series_id = ss.id) ORDER BY m.date desc, s.time desc LIMIT 0, 15;");   
     1279    $sermons = $wpdb->get_results("SELECT m.id, m.title, m.date, p.name as pname, s.name as sname, ss.name as ssname FROM {$wpdb->prefix}sb_sermons as m, {$wpdb->prefix}sb_preachers as p, {$wpdb->prefix}sb_services as s, {$wpdb->prefix}sb_series as ss where (m.preacher_id = p.id and m.service_id = s.id and m.series_id = ss.id) ORDER BY m.date desc, s.time desc LIMIT 0, {$sermons_per_page};");  
    14101280    $preachers = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}sb_preachers ORDER BY name;");     
    14111281    $series = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}sb_series ORDER BY name;"); 
     
    14171287                if (r) { 
    14181288                    jQuery('#the-list').html(r);                     
    1419                     if (st >= 15) { 
    1420                         x = st - 15; 
     1289                    if (st >= <?php echo $sermons_per_page ?>) { 
     1290                        x = st - <?php echo $sermons_per_page ?>; 
    14211291                        jQuery('#left').html('<a href="javascript:fetch(' + x + ')">&laquo; Previous</a>'); 
    14221292                    } else { 
    14231293                        jQuery('#left').html(''); 
    14241294                    } 
    1425                     if (st + 15 <= <?php echo $cnt ?>) { 
    1426                         y = st + 15; 
     1295                    if (st + <?php echo $sermons_per_page ?> <= <?php echo $cnt ?>) { 
     1296                        y = st + <?php echo $sermons_per_page ?>; 
    14271297                        jQuery('#right').html('<a href="javascript:fetch(' + y + ')">Next &raquo;</a>'); 
    14281298                    } else { 
     
    14881358                        <td><?php echo sb_sermon_stats($sermon->id) ?></td> 
    14891359                        <td style="text-align:center"> 
    1490                             <a href="<?php echo $url ?>/wp-admin/admin.php?page=sermon-browser/new_sermon.php&mid=<?php echo $sermon->id ?>"><?php _e('Edit', $sermon_domain) ?></a> | <a onclick="return confirm('Are you sure?')" href="<?php echo $url ?>/wp-admin/admin.php?page=sermon-browser/sermon.php&mid=<?php echo $sermon->id ?>"><?php _e('Delete', $sermon_domain) ?></a> 
     1360                            <?php //Security check 
     1361                                    if (function_exists('current_user_can')&&current_user_can('edit_posts')) { ?> 
     1362                                    <a href="<?php echo $url ?>/wp-admin/admin.php?page=sermon-browser/new_sermon.php&mid=<?php echo $sermon->id ?>"><?php _e('Edit', $sermon_domain) ?></a> | <a onclick="return confirm('Are you sure?')" href="<?php echo $url ?>/wp-admin/admin.php?page=sermon-browser/sermon.php&mid=<?php echo $sermon->id ?>"><?php _e('Delete', $sermon_domain); ?></a> 
     1363                            <?php } else { ?>&nbsp;<?php } ?> 
    14911364                        </td> 
    14921365                    </tr> 
     
    15011374    </div>   
    15021375    <script> 
    1503         <?php if ($cnt > 15): ?> 
    1504             jQuery('#right').html('<a href="javascript:fetch(15)">Next &raquo;</a>'); 
     1376        <?php if ($cnt > $sermons_per_page): ?> 
     1377            jQuery('#right').html('<a href="javascript:fetch(<?php echo $sermons_per_page ?>)">Next &raquo;</a>'); 
    15051378        <?php endif ?> 
    15061379    </script> 
     
    15081381} 
    15091382 
    1510 // new sermon 
    1511 // where everything is put together 
     1383// Displays new/edit sermon page 
    15121384function sb_new_sermon() { 
    15131385    global $wpdb, $books, $sermon_domain; 
    1514     global $wordpressRealPath; 
    1515     $error = false; 
     1386    global $wordpressRealPath, $allowedposttags; 
     1387    //Security check 
     1388    if (function_exists('current_user_can')&&!(current_user_can('edit_posts')|current_user_can('publish_posts'))) 
     1389        wp_die(__("You do not have the correct permissions to edit or create sermons", $sermon_domain)); 
     1390    include_once ($wordpressRealPath.'/wp-includes/kses.php'); 
    15161391    // sync 
    15171392    sb_scan_dir(); 
     
    15431418        $end = mysql_real_escape_string(serialize($endz)); 
    15441419        $date = date('Y-m-d', strtotime($_POST['date'])); 
    1545         $description = mysql_real_escape_string(strip_tags($_POST['description'])); 
     1420        $description = mysql_real_escape_string(wp_kses($_POST['description'], $allowedposttags)); 
    15461421        $override = $_POST['override'] == 'on' ? 1 : 0; 
    15471422        // edit or not edit 
    15481423        if (!$_GET['mid']) { // new 
    1549             $query1 = "INSERT INTO {$wpdb->prefix}sb_sermons VALUES (null, '$title', '$preacher_id', '$date', '$service_id', '$series_id', '$start', '$end', '$description', '$time', '$override')"; 
     1424            //Security check 
     1425            if (function_exists('current_user_can')&&!current_user_can('publish_posts')) 
     1426                wp_die(__("You do not have the correct permissions to create sermons", $sermon_domain)); 
     1427            $query1 = "INSERT INTO {$wpdb->prefix}sb_sermons VALUES (null, '$title', '$preacher_id', '$date', '$service_id', '$series_id', '$start', '$end', '$description', '$time', '$override', 0)"; 
    15501428            $wpdb->query($query1);               
    15511429            $id = $wpdb->insert_id;              
    15521430        } else { // edit 
     1431            //Security check 
     1432            if (function_exists('current_user_can')&&!current_user_can('edit_posts')) 
     1433                wp_die(__("You do not have the correct permissions to edit sermons", $sermon_domain)); 
    15531434            $mid = (int) $_GET['mid']; 
    15541435            $query1 = "UPDATE {$wpdb->prefix}sb_sermons SET title = '$title', preacher_id = '$preacher_id', date = '$date', series_id = '$series_id', start = '$start', end = '$end', description = '$description', time = '$time', service_id = '$service_id', override = '$override' WHERE id = $mid;"; 
     
    15761457                if ($wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}sb_stuff WHERE name = '$filename'") == 0 && move_uploaded_file($_FILES['upload']['tmp_name'][$uid], $dest)) { 
    15771458                    $filename = $prefix.mysql_real_escape_string($filename); 
    1578                     $queryz = "INSERT INTO {$wpdb->prefix}sb_stuff VALUES (null, 'file', '$filename', $id, 0, 0);"; 
     1459                    $queryz = "INSERT INTO {$wpdb->prefix}sb_stuff VALUES (null, 'file', '$filename', $id, 0);"; 
    15791460                    $wpdb->query($queryz);                   
    15801461                } else { 
    1581                     echo '<div id="message" class="updated fade"><p><b>'.__($filename. ' has already existed.', $sermon_domain).'</b></div>'; 
     1462                    echo '<div id="message" class="updated fade"><p><b>'.__($filename. ' already exists.', $sermon_domain).'</b></div>'; 
    15821463                    $error = true; 
    15831464                } 
     
    15901471            if (!empty($urlz)) { 
    15911472                $urlz = mysql_real_escape_string($urlz); 
    1592                 $wpdb->query("INSERT INTO {$wpdb->prefix}sb_stuff VALUES(null, 'url', '$urlz', $id, 0, 0);"); 
     1473                $wpdb->query("INSERT INTO {$wpdb->prefix}sb_stuff VALUES(null, 'url', '$urlz', $id, 0);"); 
    15931474            }            
    15941475        } 
     
    15971478            if (!empty($code)) { 
    15981479                $code = base64_encode(stripslashes($code)); 
    1599                 $wpdb->query("INSERT INTO {$wpdb->prefix}sb_stuff VALUES(null, 'code', '$code', $id, 0, 0)"); 
     1480                $wpdb->query("INSERT INTO {$wpdb->prefix}sb_stuff VALUES(null, 'code', '$code', $id, 0)"); 
    16001481            } 
    16011482        } 
     
    16271508        } 
    16281509    } 
    1629     //$wpdb->query("DELETE FROM {$wpdb->prefix}sb_stuff WHERE id IN (".implode(', ', (array) $wanted).")"); 
    16301510     
    16311511    // these following code is for js 
     
    17631643        } 
    17641644    </script> 
     1645    <?php sb_check_sermon_tag(); ?> 
    17651646    <div class="wrap"> 
    17661647        <h2><?php echo $_GET['mid'] ? 'Edit Sermon' : 'Add Sermon' ?></h2> 
     
    18931774                <tr> 
    18941775                    <td colspan="2"> 
    1895                         <strong><?php _e('Files', $sermon_domain) ?></strong> (<a href="javascript:addFile()"><?php _e('add more', $sermon_domain) ?></a>) 
     1776                        <strong><?php _e('Attachments', $sermon_domain) ?></strong> (<a href="javascript:addFile()"><?php _e('add more', $sermon_domain) ?></a>) 
    18961777                    </td> 
    18971778                </tr> 
     
    20381919} 
    20391920 
    2040 // looking for new files 
     1921// Find new files uploaded by FTP 
    20411922function sb_scan_dir() { 
    20421923    global $wpdb; 
     
    20601941} 
    20611942 
    2062 // no need to explain here 
    2063 function sb_checkSermonUploadable() { 
     1943// Check to see if upload folder is writeable 
     1944function sb_checkSermonUploadable($foldername = "") { 
    20641945    global $wordpressRealPath; 
    2065     $sermonUploadDir = $wordpressRealPath.get_option('sb_sermon_upload_dir');    
     1946    $sermonUploadDir = $wordpressRealPath.get_option('sb_sermon_upload_dir').$foldername; 
    20661947    if (is_dir($sermonUploadDir)) { 
    20671948        //Dir exist 
     
    20821963} 
    20831964 
    2084 // manual 
     1965// Displays the help page 
    20851966function sb_help() { 
     1967global $sermon_domain; 
     1968sb_check_sermon_tag(); 
    20861969?>   
    20871970    <style>div.wrap h3, div.wrap h4, div.wrap h5 {margin-bottom: 0; margin-top: 2em} div.wrap p {margin-left: 2em; margin-top: 0.5em} div.wrap h3 {border-top: 1px solid #555555; padding-top: 0.5em}</style> 
     
    21812064        <ul> 
    21822065            <li><b>[filters_form]</b> - The search form which allows filtering by preacher, series, date, etc. <i>multi-sermons page only</i></li> 
     2066            <li><b>[tag_cloud]</b> - A tag cloud of all sermon browser tags</i></li> 
    21832067            <li><b>[sermons_count]</b> - The number of sermons which match the current search critera. </li> 
    21842068            <li><b>[sermons_loop][/sermons_loop]</b> - These two tags should be placed around the output for one sermon. (That is all of the tags that return data about sermons should come between these two tags.)</li> 
     
    22302114} 
    22312115 
     2116// Returns data for ajax calls 
     2117function sb_return_ajax_data () { 
     2118    // Throughout this plugin, p stands for preacher, s stands for service and ss stands for series 
     2119    global $wpdb, $sermons_per_page; 
     2120    if ($_POST['pname']) { // preacher 
     2121        $pname = mysql_real_escape_string($_POST['pname']); 
     2122        if ($_POST['pid']) { 
     2123            $pid = (int) $_POST['pid']; 
     2124            if ($_POST['del']) { 
     2125                $wpdb->query("DELETE FROM {$wpdb->prefix}sb_preachers WHERE id = $pid;"); 
     2126            } else { 
     2127                $wpdb->query("UPDATE {$wpdb->prefix}sb_preachers SET name = '$pname' WHERE id = $pid;");                 
     2128            } 
     2129            echo 'done'; 
     2130        } else { 
     2131            $wpdb->query("INSERT INTO {$wpdb->prefix}sb_preachers VALUES (null, '$pname', '', '');"); 
     2132            echo $wpdb->insert_id; 
     2133        }        
     2134    } elseif ($_POST['sname']) { // service 
     2135        $sname = mysql_real_escape_string($_POST['sname']); 
     2136        list($sname, $stime) = split('@', $sname); 
     2137        $sname = trim($sname); 
     2138        $stime = trim($stime); 
     2139        if ($_POST['sid']) { 
     2140            $sid = (int) $_POST['sid']; 
     2141            if ($_POST['del']) { 
     2142                $wpdb->query("DELETE FROM {$wpdb->prefix}sb_services WHERE id = $sid;"); 
     2143            } else { 
     2144                $wpdb->query("UPDATE {$wpdb->prefix}sb_services SET name = '$sname', time = '$stime' WHERE id = $sid;"); 
     2145                $wpdb->query("UPDATE {$wpdb->prefix}sb_sermons SET time = '$stime' WHERE override = 0 AND service_id = $sid;"); 
     2146            }            
     2147            echo 'done'; 
     2148        } else { 
     2149            $wpdb->query("INSERT INTO {$wpdb->prefix}sb_services VALUES (null, '$sname', '$stime');"); 
     2150            echo $wpdb->insert_id; 
     2151        }        
     2152    } elseif ($_POST['ssname']) { // series 
     2153        $ssname = mysql_real_escape_string($_POST['ssname']); 
     2154        if ($_POST['ssid']) { 
     2155            $ssid = (int) $_POST['ssid']; 
     2156            if ($_POST['del']) { 
     2157                $wpdb->query("DELETE FROM {$wpdb->prefix}sb_series WHERE id = $ssid;"); 
     2158            } else { 
     2159                $wpdb->query("UPDATE {$wpdb->prefix}sb_series SET name = '$ssname' WHERE id = $ssid;"); 
     2160            }                
     2161            echo 'done'; 
     2162        } else { 
     2163            $wpdb->query("INSERT INTO {$wpdb->prefix}sb_series VALUES (null, '$ssname', 0);"); 
     2164            echo $wpdb->insert_id; 
     2165        } 
     2166    } elseif ($_POST['fname']) { // file         
     2167        $fname = mysql_real_escape_string($_POST['fname']); 
     2168        if ($_POST['fid']) { 
     2169            $fid = (int) $_POST['fid']; 
     2170            $oname = mysql_real_escape_string($_POST['oname']);          
     2171            if ($_POST['del']) { 
     2172                if (!file_exists($wordpressRealPath.get_option('sb_sermon_upload_dir').$fname) || unlink($wordpressRealPath.get_option('sb_sermon_upload_dir').$fname)) { 
     2173                    $wpdb->query("DELETE FROM {$wpdb->prefix}sb_stuff WHERE id = $fid;"); 
     2174                    echo 'deleted'; 
     2175                } else { 
     2176                    echo 'failed'; 
     2177                }                
     2178            } else {                 
     2179                $oname = mysql_real_escape_string($_POST['oname']);  
     2180                if ( !is_writable($wordpressRealPath.get_option('sb_sermon_upload_dir').$fname) && rename($wordpressRealPath.get_option('sb_sermon_upload_dir').$oname, $wordpressRealPath.get_option('sb_sermon_upload_dir').$fname)) { 
     2181                    $wpdb->query("UPDATE {$wpdb->prefix}sb_stuff SET name = '$fname' WHERE id = $fid;"); 
     2182                    echo 'renamed'; 
     2183                } else {         
     2184                    echo 'failed';               
     2185                } 
     2186            }                
     2187        } 
     2188    } elseif ($_POST['fetch']) { // ajax pagination (sermon browser)         
     2189        $st = (int) $_POST['fetch'] - 1; 
     2190        if (!empty($_POST['title'])) { 
     2191            $cond = "and m.title LIKE '%" . mysql_real_escape_string($_POST['title']) . "%' "; 
     2192        } 
     2193        if ($_POST['preacher'] != 0) { 
     2194            $cond .= 'and m.preacher_id = ' . (int) $_POST['preacher'] . ' '; 
     2195        } 
     2196        if ($_POST['series'] != 0) { 
     2197            $cond .= 'and m.series_id = ' . (int) $_POST['series'] . ' '; 
     2198        } 
     2199        $m = $wpdb->get_results("SELECT m.id, m.title, m.date, p.name as pname, s.name as sname, ss.name as ssname FROM {$wpdb->prefix}sb_sermons as m, {$wpdb->prefix}sb_preachers as p, {$wpdb->prefix}sb_services as s, {$wpdb->prefix}sb_series as ss where m.preacher_id = p.id and m.service_id = s.id and m.series_id = ss.id {$cond} ORDER BY m.date desc, s.time desc LIMIT {$st}, {$sermons_per_page};"); 
     2200        $cnt = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}sb_sermons as m, {$wpdb->prefix}sb_preachers as p, {$wpdb->prefix}sb_services as s, {$wpdb->prefix}sb_series as ss where m.preacher_id = p.id and m.service_id = s.id and m.series_id = ss.id $cond;"); 
     2201        ?> 
     2202        <?php foreach ($m as $sermon): ?>                    
     2203            <tr class="<?php echo ++$i % 2 == 0 ? 'alternate' : '' ?>"> 
     2204                <th style="text-align:center" scope="row"><?php echo $sermon->id ?></th> 
     2205                <td><?php echo stripslashes($sermon->title) ?></td> 
     2206                <td><?php echo stripslashes($sermon->pname) ?></td> 
     2207                <td><?php echo stripslashes($sermon->date) ?></td> 
     2208                <td><?php echo stripslashes($sermon->sname) ?></td> 
     2209                <td><?php echo stripslashes($sermon->ssname) ?></td> 
     2210                <td><?php echo sb_sermon_stats($sermon->id) ?></td> 
     2211                <td style="text-align:center"> 
     2212                    <a href="<?php echo $url ?>/wp-admin/admin.php?page=sermon-browser/new_sermon.php&mid=<?php echo $sermon->id ?>"><?php _e('Edit', $sermon_domain) ?></a> | <a onclick="return confirm('Are you sure?')" href="<?php echo $url ?>/wp-admin/admin.php?page=sermon-browser/sermon.php&mid=<?php echo $sermon->id ?>"><?php _e('Delete', $sermon_domain) ?></a> 
     2213                </td> 
     2214            </tr> 
     2215        <?php endforeach ?> 
     2216        <script type="text/javascript"> 
     2217        <?php if($cnt<$sermons_per_page || $cnt <= $st+$sermons_per_page): ?> 
     2218            jQuery('#right').css('display','none'); 
     2219        <?php elseif($cnt > $st+$sermons_per_page): ?> 
     2220            jQuery('#right').css('display',''); 
     2221        <?php endif ?> 
     2222        </script> 
     2223        <?php 
     2224    } elseif ($_POST['fetchU'] || $_POST['fetchL'] || $_POST['search']) { // ajax pagination (uploads) 
     2225        if ($_POST['fetchU']) { 
     2226            $st = (int) $_POST['fetchU'] - 1; 
     2227            $abc = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.sermon_id = 0 AND f.type = 'file' ORDER BY f.name LIMIT {$st}, {$sermons_per_page};"); 
     2228        } elseif ($_POST['fetchL']) { 
     2229            $st = (int) $_POST['fetchL'] - 1; 
     2230            $abc = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.sermon_id <> 0 AND f.type = 'file' ORDER BY f.name LIMIT {$st}, {$sermons_per_page}"); 
     2231        } else { 
     2232            $s = mysql_real_escape_string($_POST['search']); 
     2233            $abc = $wpdb->get_results("SELECT f.*, s.title FROM {$wpdb->prefix}sb_stuff AS f LEFT JOIN {$wpdb->prefix}sb_sermons AS s ON f.sermon_id = s.id WHERE f.name LIKE '%{$s}%' AND f.type = 'file' ORDER BY f.name;"); 
     2234        }        
     2235    ?> 
     2236    <?php if (count($abc) >= 1): ?> 
     2237        <?php foreach ($abc as $file): ?> 
     2238            <tr class="file <?php echo (++$i % 2 == 0) ? 'alternate' : '' ?>" id="<?php echo $_POST['fetchU'] ? '' : 's' ?>file<?php echo $file->id ?>"> 
     2239                <th style="text-align:center" scope="row"><?php echo $file->id ?></th> 
     2240                <td id="<?php echo $_POST['fetchU'] ? '' : 's' ?><?php echo $file->id ?>"><?php echo substr($file->name, 0, strrpos($file->name, '.')) ?></td> 
     2241                <td style="text-align:center"><?php echo isset($filetypes[substr($file->name, strrpos($file->name, '.') + 1)]['name']) ? $filetypes[substr($file->name, strrpos($file->name, '.') + 1)]['name'] : strtoupper(substr($file->name, strrpos($file->name, '.') + 1)) ?></td> 
     2242                <td><?php echo stripslashes($file->title) ?></td> 
     2243                <td style="text-align:center"> 
     2244                    <script type="text/javascript" language="javascript"> 
     2245                    function deletelinked_<?php echo $file->id;?>(filename, filesermon) { 
     2246                        if (confirm('Do you really want to delete '+filename+'?')) { 
     2247                            if (filesermon != '') { 
     2248                                return confirm('This file is linked to the sermon called ['+filesermon+']. Are you sure you want to delete it?'); 
     2249                            }    
     2250                            return true; 
     2251                        } 
     2252                        return false; 
     2253                    } 
     2254                    </script> 
     2255                    <a id="link<?php echo $file->id ?>" href="javascript:rename(<?php echo $file->id ?>, '<?php echo $file->name ?>')"><?php _e('Rename', $sermon_domain) ?></a> | <a onclick="return deletelinked_<?php echo $file->id;?>('<?php echo str_replace("'", '', $file->name) ?>', '<?php echo str_replace("'", '', $file->title) ?>');" href="javascript:kill(<?php echo $file->id ?>, '<?php echo $file->name ?>');"><?php _e('Delete', $sermon_domain) ?></a> 
     2256                </td> 
     2257            </tr> 
     2258        <?php endforeach ?>  
     2259    <?php else: ?> 
     2260        <tr> 
     2261            <td><?php _e('No results', $sermon_domain) ?></td> 
     2262        </tr> 
     2263    <?php endif ?> 
     2264    <?php        
     2265    } 
     2266    die(); 
     2267} 
     2268 
     2269function sb_check_sermon_tag() { 
     2270    if (sb_display_url() == "") echo '<div id="message" class="updated"><p><b>'.__('You must create a post or page that includes the code [sermons] in order for your sermons to be displayed on your site.', $sermon_domain).'</b></div>'; 
     2271} 
     2272 
     2273//Processing for php.ini values 
     2274function sb_return_kbytes($val) { 
     2275    $val = trim($val); 
     2276    $last = strtolower($val[strlen($val)-1]); 
     2277    switch($last) { 
     2278        case 'g': 
     2279            $val *= 1024; 
     2280        case 'm': 
     2281            $val *= 1024; 
     2282    } 
     2283   return intval($val); 
     2284} 
     2285 
     2286//Default template for search results 
    22322287function sb_default_multi_template () { 
    22332288$multi = <<<HERE 
     
    22352290    <h2>Filters</h2>         
    22362291    [filters_form] 
    2237     <div style="clear:both"><div class="podcastcustom"><a href="[podcast_for_search]">[podcasticon_for_search]</a><span><a href="[podcast_for_search]">Subscribe to custom podcast</a></span><br />(new sermons that match this <b>search</b>)</div><div class="podcastall"><a href="[podcast]">[podcasticon]</a><span><a href="[podcast]">Subscribe to full podcast</a></span><br />(<b>all</b> new sermons)</div> 
    2238 </div> 
     2292    <div style="clear:both"> 
     2293        <table class="podcastcustom"> 
     2294            <tr> 
     2295                <td class="podcasticon" rowspan="2"><a href="[podcast_for_search]">[podcasticon_for_search]</a></td> 
     2296            </tr> 
     2297            <tr> 
     2298                <td> 
     2299                    <p class="podcasttitle"><a href="[podcast_for_search]">Subscribe to custom podcast</a></p> 
     2300                    <p class="description">(new sermons that match <b>this search</b>)</p> 
     2301                </td> 
     2302            </tr> 
     2303        </table> 
     2304        <table class="podcastall"> 
     2305            <tr> 
     2306                <td class="podcasticon" rowspan="2"><a href="[podcast]">[podcasticon]</a></td> 
     2307            </tr> 
     2308            <tr> 
     2309                <td> 
     2310                    <p class="podcasttitle"><a href="[podcast]">Subscribe to full podcast</a></p> 
     2311                    <p class="description">(<b>all</b> new sermons)</p> 
     2312                </td> 
     2313            </tr> 
     2314        </table> 
     2315    </div> 
    22392316    <h2>Sermons ([sermons_count])</h2>       
    22402317    <div class="floatright">[next_page]</div> 
     
    22672344} 
    22682345 
     2346//Default template for single sermon page 
    22692347function sb_default_single_template () { 
    22702348$single = <<<HERE 
    22712349<div class="sermon-browser-results"> 
    2272     <h2>[sermon_title] <span class="scripture">([passages_loop][passage] [/passages_loop])</span> [editlink]</h2> 
     2350    <h2>[sermon_title] <span class="scripture">([passages_loop][passage][/passages_loop])</span> [editlink]</h2> 
    22732351    [preacher_image]<span class="preacher">[preacher_link], [date]</span><br /> 
    22742352    Part of the [series_link] series, preached at a [service_link] service<br /> 
    2275     <p class="sermon-description">[sermon_description]</p> 
     2353    <div class="sermon-description">[sermon_description]</div> 
    22762354    <p class="sermon-tags">Tags: [tags]</p> 
    22772355    [files_loop] 
     
    23012379} 
    23022380 
     2381//Default CSS 
    23032382function sb_default_css () { 
    23042383$css = <<<HERE 
     
    23682447} 
    23692448 
    2370 div.podcastall { 
     2449table.podcastall { 
    23712450    float:left; 
    23722451    border: 2px solid #FC9328; 
    23732452    background: #fff0c8 url(icons/podcast_background.png) repeat-x; 
    23742453    padding: 0.3em; 
    2375 } 
    2376  
    2377 div.podcastall img.podcasticon, div.podcastcustom img.podcasticon { 
     2454    font-size: 1em; 
     2455} 
     2456 
     2457table.podcastall img.podcasticon, table.podcastcustom img.podcasticon { 
    23782458    float:left; 
    23792459    margin-right: 1em; 
     
    23812461} 
    23822462 
    2383 div.podcastall span a{ 
     2463table.podcastall p.podcasttitle a{ 
    23842464    color: #FC9328; 
    23852465    font-weight: bold; 
     
    23872467} 
    23882468 
    2389 div.podcastcustom { 
     2469table.podcastall p, table.podcastcustom p { 
     2470    margin: 0 !important; 
     2471    padding: 0 !important; 
     2472} 
     2473 
     2474table.podcastcustom { 
    23902475    float:right; 
    23912476    border: 2px solid #b83ee5; 
    23922477    background: #fce4ff url(icons/podcast_custom_background.png) repeat-x; 
    23932478    padding: 0.3em; 
    2394 } 
    2395 div.podcastcustom span a{ 
     2479    font-size: 1em; 
     2480} 
     2481 
     2482table.podcastcustom p.podcasttitle  a{ 
    23962483    color: #b83ee5; 
    23972484    font-weight: bold; 
    23982485    font-size:125%; 
     2486} 
     2487 
     2488td.podcasticon { 
     2489    vertical-align: top; 
    23992490} 
    24002491 
     
    24362527} 
    24372528 
    2438  
    24392529div.sermon-browser #poweredbysermonbrowser { 
    24402530    text-align:center; 
     
    24872577    display:inline !important; 
    24882578} 
     2579 
    24892580div.sb_edit_link { 
    24902581    display:inline; 
     
    24972588} 
    24982589 
    2499 // Hooks  
    2500 add_action('admin_menu', 'sb_add_pages'); 
    2501 register_activation_hook(__FILE__,'sb_sermon_install'); 
     2590/* Code below reserved for version 0.40 
     2591 
     2592function sb_default_excerpt_template () { 
     2593$multi = <<<HERE 
     2594<div class="sermon-browser"> 
     2595    <table class="sermons"> 
     2596    [sermons_loop]   
     2597        <tr> 
     2598            <td class="sermon-title">[sermon_title]</td> 
     2599        </tr> 
     2600        <tr> 
     2601            <td class="sermon-passage">[first_passage] (Part of the [series_link] series).</td> 
     2602        </tr> 
     2603        <tr> 
     2604            <td class="files">[files_loop][file][/files_loop]</td> 
     2605        </tr> 
     2606        <tr> 
     2607            <td class="embed">[embed_loop][embed][/embed_loop]</td> 
     2608        </tr> 
     2609        <tr> 
     2610            <td class="preacher">Preached by [preacher_link] on [date] ([service_link]).</td> 
     2611        </tr> 
     2612    [/sermons_loop] 
     2613    </table> 
     2614</div> 
     2615HERE; 
     2616    return $multi; 
     2617} 
     2618 
     2619function sb_get_single_form () { 
     2620    global $single_form; 
     2621    if (!$single_form) $single_form = base64_decode(get_option('sb_sermon_single_form')); 
     2622    return $single_form; 
     2623} 
     2624 
     2625function sb_create_page($sermon_id, $mass_update = FALSE) { 
     2626    //Security check 
     2627    if (function_exists('current_user_can')&&!current_user_can('publish_posts')) 
     2628        wp_die(__("You do not have the correct permissions to create sermons", $sermon_domain)); 
     2629    global $wordpressRealPath, $wpdb, $display_method, $sermon_domain, $mdict, $sdict; 
     2630    //Create page content (extract) 
     2631    $sermons = sb_get_sermons(array('id'=>$sermon_id), array('by'=>'m.date', 'dir'=>'asc'),1, 99999); 
     2632    ob_start(); 
     2633    eval('?>'.strtr(sb_default_excerpt_template(), $mdict)); 
     2634    $post_excerpt = ob_get_contents(); 
     2635    //Create page content (post body) 
     2636    ob_end_clean(); 
     2637    $sermon = sb_get_single_sermon($sermon_id); 
     2638    ob_start(); 
     2639    $single_form = get_single_form(); 
     2640    eval('?>'.strtr(base64_decode(get_option('sb_sermon_single_form')), $sdict)); 
     2641    $post_content = ob_get_contents(); 
     2642    ob_end_clean(); 
     2643    //Check to see if page exists 
     2644    $sermon_page = $wpdb->get_results("SELECT sermons.page_id, sermons.series_id FROM {$wpdb->prefix}sb_sermons AS sermons WHERE sermons.id = '{$sermon_id}'"); 
     2645    $series_id = $sermon_page[0]->series_id; 
     2646    $sermon_page = $sermon_page[0]->page_id; 
     2647    //Add data to array 
     2648    if ($sermon_page!=0) $new_post->ID = $sermon_page; 
     2649    $tags = $sermon["Tags"]; 
     2650    $sermon = $sermon["Sermon"]; 
     2651    $tags[] = $sermon->series; 
     2652    $tags[] = $sermon->preacher; // Think about creating authors for preachers. 
     2653    $tags[] = $sermon->service; 
     2654    $start = $sermon->start; 
     2655    if ($start) foreach ($start as $passage) { 
     2656        $tags[] = $passage['book']; 
     2657    } 
     2658    $end = $sermon->end; 
     2659    if ($end) foreach ($end as $passage) { 
     2660        $tags[] = $passage['book']; 
     2661    } 
     2662    $tags = array_filter(array_unique($tags)); 
     2663    $new_post->post_title = stripslashes($sermon->title); 
     2664    $new_post->post_content = $post_content; 
     2665    $new_post->post_status = 'publish'; 
     2666    $new_post->post_page_template = '_wp_page_template'; 
     2667    $new_post->post_date =  $sermon->date; 
     2668    get_currentuserinfo(); 
     2669    $new_post->post_author = $userdata->ID; 
     2670    $new_post->post_type = $display_method; 
     2671    $new_post->tags_input = $tags; 
     2672    $new_post->post_excerpt = $post_excerpt; 
     2673    if ($display_method == "page") { 
     2674        //Check to see if series page exists, and create/re-write it 
     2675        $series_page=sb_create_series_page($series_id, !$mass_update); 
     2676        $new_post->post_parent = $series_page; 
     2677    } else { 
     2678        $category_id = wp_create_category (__("Sermons", $sermon_domain)); 
     2679        $new_post->post_category = array($category_id); 
     2680    } 
     2681    //Write page 
     2682    $page_id = wp_insert_post($new_post); 
     2683    //Update sermon table with page id 
     2684    $table_name = $wpdb->prefix . "sb_sermons"; 
     2685    $wpdb->query("UPDATE {$table_name} SET page_id = '{$page_id}' WHERE id={$sermon->id}"); 
     2686    return $page_id; 
     2687} 
     2688 
     2689function sb_create_series_page($series_id, $rewrite_series = TRUE) { 
     2690    global $wpdb, $wordpressRealPath; 
     2691    //Security check 
     2692    if (function_exists('current_user_can')&&!current_user_can('publish_posts')) 
     2693        wp_die(__("You do not have the correct permissions to create series pages", $sermon_domain)); 
     2694    //Check to see if page exists 
     2695    $table_name = $wpdb->prefix . "sb_series"; 
     2696    $series_page = intval($wpdb->get_var("SELECT page_id FROM {$table_name} WHERE id = '{$series_id}'")); 
     2697    //Decide what to do 
     2698    if ($series_page!=0 AND $rewrite_series) { 
     2699        $new_post->ID = $series_page; 
     2700    } 
     2701    elseif ($series_page!=0 AND !$rewrite_series) { 
     2702        return $series_page; 
     2703    } 
     2704    //Create page content 
     2705    $sermons = sb_get_sermons(array('series'=>$series_id), array('by'=>'m.date', 'dir'=>'asc'),1, 99999); 
     2706    ob_start(); 
     2707    eval('?><div class="sermon-browser-series"> 
     2708        <ul> 
     2709        <?php foreach ($sermons as $sermon): ?><?php $stuff = sb_get_stuff($sermon) ?>   
     2710            <li><a class="sermon-title" href="<?php sb_print_sermon_link($sermon) ?>"><?php echo stripslashes($sermon->title) ?></a>  
     2711            <span class="passage">(<?php $foo = unserialize($sermon->start); $bar = unserialize($sermon->end); echo sb_get_books($foo[0], $bar[0]) ?>)</span><br\> 
     2712            Preached by <a class="preacher" href="<?php sb_print_preacher_link($sermon) ?>"><?php echo stripslashes($sermon->preacher) ?></a> on <?php echo date("j F Y", strtotime($sermon->date)) ?> (<a href="<?php sb_print_service_link($sermon) ?>"><?php echo stripslashes($sermon->service) ?></a>).</li> 
     2713        <?php endforeach ?> 
     2714        </ul> 
     2715        <div id="poweredbysermonbrowser">Powered by <a href="http://www.4-14.org.uk/sermon-browser">Sermon Browser</a></div> 
     2716    </div>'); 
     2717    $result = ob_get_contents(); 
     2718    ob_end_clean(); 
     2719    //Add data to array 
     2720    $new_post->post_title = $sermon->series; 
     2721    $new_post->post_content = $result; 
     2722    $new_post->post_status = 'publish'; 
     2723    $new_post->post_type = 'page'; 
     2724    $new_post->post_parent = 5; 
     2725    $new_post->post_date =  $sermon->date; 
     2726    get_currentuserinfo(); 
     2727    $new_post->post_author = $userdata->ID; 
     2728    //Write page 
     2729    $page_id = wp_insert_post($new_post); 
     2730    //Update series table with page id 
     2731    $table_name = $wpdb->prefix . "sb_series"; 
     2732    $wpdb->query("UPDATE {$table_name} SET page_id = '{$page_id}' WHERE id={$series_id}"); 
     2733    sb_reorder_pages ($series_id); 
     2734    return $page_id; 
     2735} 
     2736 
     2737function sb_reorder_pages ($series_id) { 
     2738    global $wpdb; 
     2739    $page_ids = $wpdb->get_results("SELECT page_id FROM {$wpdb->prefix}sb_sermons WHERE series_id='{$series_id}' ORDER BY date ASC"); 
     2740    $page_order = 0; 
     2741    foreach ($page_ids as $page_id) { 
     2742        $wpdb->query("UPDATE {$wpdb->prefix}posts SET menu_order = '{$page_order}' WHERE id = {$page_id->page_id}"); 
     2743        $page_order++; 
     2744    } 
     2745} 
     2746 
     2747function sb_rewrite_all_pages ($start_page = 0, $limit = 20, $mode = "") { 
     2748    global $wpdb, $url, $display_method, $sermon_domain; 
     2749    //Security check 
     2750    if (function_exists('current_user_can')&&!current_user_can('manage_options')) 
     2751        wp_die(__("You do not have the correct permissions to rewrite the sermons pages", $sermon_domain)); 
     2752    define('WP_IMPORTING', true); //Server will get overwhelmed if pinging on every post. Setting WP_IMPORTING to true turns pinging off. 
     2753    if ($mode =="") $mode = $_REQUEST['mode']; 
     2754    if ($mode =="") $mode = "sermons"; 
     2755    $start_page = intval($start_page); 
     2756    if ($mode != "series") { 
     2757        // Create sermons pages 
     2758        $sermons = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS id, title FROM {$wpdb->prefix}sb_sermons ORDER BY id ASC LIMIT {$start_page}, {$limit}"); 
     2759        $record_count = $wpdb->get_var("SELECT FOUND_ROWS()"); 
     2760        $i = $start_page; 
     2761        foreach ($sermons as $sermon) { 
     2762            $i++; 
     2763            echo '<p style="margin: 0 0 0 17px">'.__('Writing', $sermon_domain).": ".stripslashes($sermon->title)." (".$i."/".$record_count.")</p>"; 
     2764            flush(); 
     2765            ob_flush(); 
     2766            sb_create_page ($sermon->id, TRUE); 
     2767        } 
     2768        if ($i < $record_count) echo "<script>document.location = '$url/wp-admin/admin.php?page=sermon-browser/options.php&rewrite=true&start={$i}&method={$display_method}';</script>"; 
     2769        $start_page = 0; 
     2770    } 
     2771    if ($display_method == "page") { 
     2772        // Create series pages 
     2773        $i = $start_page; 
     2774        $limit = round($limit/4); 
     2775        if ($limit < 3) $limit = 2; 
     2776        $series = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS ss.id, ss.name FROM {$wpdb->prefix}sb_series AS ss JOIN {$wpdb->prefix}sb_sermons AS sermons ON ss.id = sermons.series_id GROUP BY ss.id  LIMIT {$start_page}, {$limit}"); 
     2777        $record_count = $wpdb->get_var("SELECT FOUND_ROWS()"); 
     2778        foreach ($series as $one_series) { 
     2779            $i++; 
     2780            echo '<p style="margin: 0 0 0 17px">'.__('Writing', $sermon_domain).": ".stripslashes($one_series->name)." (".$i."/".$record_count.")</p>"; 
     2781            flush(); 
     2782            ob_flush(); 
     2783            sb_create_series_page ($one_series->id, TRUE); 
     2784        } 
     2785        if ($i < $record_count) echo "<script>document.location = '$url/wp-admin/admin.php?page=sermon-browser/options.php&rewrite=true&start={$i}&method={$display_method}&mode=series';</script>"; 
     2786    } 
     2787    echo "<script>document.location = '$url/wp-admin/admin.php?page=sermon-browser/options.php';</script>"; 
     2788} 
     2789 
     2790function sb_delete_all_pages() { 
     2791    global $wpdb, $sermon_domain; 
     2792    //Security check 
     2793    if (function_exists('current_user_can')&&!current_user_can('manage_options')) 
     2794        wp_die(__("You do not have the correct permissions to delete all the sermon pages", $sermon_domain)); 
     2795    //Delete all series pages 
     2796    $i=0; 
     2797    $series = $wpdb->get_results("SELECT ss.page_id FROM {$wpdb->prefix}sb_series AS ss JOIN {$wpdb->prefix}sb_sermons AS sermons ON ss.id = sermons.series_id GROUP BY ss.id"); 
     2798    echo '<p style="margin: 0 0 0 17px">'.__('Deleting series pages', $sermon_domain).' '; 
     2799    foreach ($series as $one_series) { 
     2800        wp_delete_post($one_series->page_id); 
     2801        $wpdb->query("UPDATE {$wpdb->prefix}sb_series SET page_id = 0 WHERE page_id = {$one_series->page_id}");              
     2802        $i++; 
     2803        if (($i % 10)==0) { 
     2804            echo "."; 
     2805            flush(); 
     2806            ob_flush(); 
     2807        } 
     2808    } 
     2809    echo '</p>'; 
     2810    //Delete all sermon pages 
     2811    $sermons = $wpdb->get_results("SELECT page_id FROM {$wpdb->prefix}sb_sermons"); 
     2812    echo '<p style="margin: 0 0 0 17px">'.__('Deleting sermon pages', $sermon_domain).' '; 
     2813    foreach ($sermons as $sermon) { 
     2814        wp_delete_post($sermon->page_id); 
     2815        $wpdb->query("UPDATE {$wpdb->prefix}sb_sermons SET page_id = 0 WHERE page_id = {$sermon->page_id}");                 
     2816        $i++; 
     2817        if (($i % 10)==0) { 
     2818            echo "."; 
     2819            flush(); 
     2820            ob_flush(); 
     2821        } 
     2822    } 
     2823    echo '</p>'; 
     2824    //Delete empty tags 
     2825    if (function_exists('get_terms')) { 
     2826        echo '<p style="margin: 0 0 0 17px">'.__('Deleting empty tags', $sermon_domain).' '; 
     2827        $tags = get_terms('post_tag', array('hide_empty' => false)); 
     2828        foreach ($tags as $tag) 
     2829            if ($tag->count == 0) wp_delete_term($tag->term_id, 'post_tag'); 
     2830        echo '</p>'; 
     2831    } 
     2832} 
     2833 
     2834*/ 
    25022835?> 
Note: See TracChangeset for help on using the changeset viewer.