WordPress.org

Plugin Directory


Ignore:
Timestamp:
04/10/09 10:30:55 (5 years ago)
Author:
mark8barnes
Message:
 
Location:
sermon-browser/trunk
Files:
5 edited

Legend:

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

    r109047 r109328  
    66        '[tag_cloud]' => '<?php sb_print_tag_clouds() ?>', 
    77        '[sermons_count]' => '<?php echo $record_count ?>', 
    8         '[sermons_loop]' => '<?php foreach ($sermons as $sermon): ?><?php $stuff = sb_get_stuff($sermon) ?>', 
    9         '[/sermons_loop]' => '<?php endforeach ?>', 
     8        '[sermons_loop]' => '<?php foreach ($sermons as $sermon){ $media = sb_get_stuff($sermon); ?>', 
     9        '[/sermons_loop]' => '<?php } ?>', 
    1010        '[sermon_title]' => '<a href="<?php sb_print_sermon_link($sermon) ?>"><?php echo stripslashes($sermon->title) ?></a>', 
    1111        '[preacher_link]' => '<a href="<?php sb_print_preacher_link($sermon) ?>"><?php echo stripslashes($sermon->preacher) ?></a>', 
     
    1414        '[date]' => '<?php echo sb_formatted_date ($sermon) ?>', 
    1515        '[first_passage]' => '<?php $foo = unserialize($sermon->start); $bar = unserialize($sermon->end); echo sb_get_books($foo[0], $bar[0]) ?>', 
    16         '[files_loop]' => '<?php foreach ((array) $stuff["Files"] as $file): ?>', 
    17         '[/files_loop]' => '<?php endforeach ?>', 
    18         '[file]' => '<?php sb_print_url($file) ?>', 
    19         '[file_with_download]' => '<?php sb_print_url_link($file) ?>', 
    20         '[embed_loop]' => '<?php foreach ((array) $stuff["Code"] as $code): ?>', 
    21         '[/embed_loop]' => '<?php endforeach ?>', 
    22         '[embed]' => '<?php sb_print_code($code) ?>', 
     16        '[files_loop]' => '<?php foreach ((array) $media as $media_type => $media_names) { if (is_array($media_names) && $media_type != "Code") { foreach ((array)$media_names as $media_name) { ?>', 
     17        '[/files_loop]' => '<?php } } } ?>', 
     18        '[file]' => '<?php sb_print_url($media_name) ?>', 
     19        '[file_with_download]' => '<?php sb_print_url_link($media_name) ?>', 
     20        '[embed_loop]' => '<?php foreach ((array) $media as $media_type => $media_names) { if (is_array($media_names) && $media_type == "Code") { foreach ((array)$media_names as $media_name) { ?>', 
     21        '[/embed_loop]' => '<?php } } } ?>', 
     22        '[embed]' => '<?php sb_print_code($media_name) ?>', 
    2323        '[next_page]' => '<?php sb_print_next_page_link() ?>', 
    2424        '[previous_page]' => '<?php sb_print_prev_page_link() ?>',   
     
    4747        '[/passages_loop]' => '<?php endfor ?>', 
    4848        '[passage]' => '<?php echo sb_get_books($sermon["Sermon"]->start[$i], $sermon["Sermon"]->end[$i]) ?>', 
    49         '[files_loop]' => '<?php foreach ((array) $sermon["Files"] as $file): ?>', 
    50         '[/files_loop]' => '<?php endforeach ?>', 
    51         '[file]' => '<?php sb_print_url($file) ?>', 
    52         '[file_with_download]' => '<?php sb_print_url_link($file) ?>', 
    53         '[embed_loop]' => '<?php foreach ((array) $sermon["Code"] as $code): ?>', 
    54         '[/embed_loop]' => '<?php endforeach ?>', 
    55         '[embed]' => '<?php sb_print_code($code) ?>', 
     49        '[files_loop]' => '<?php $media = sb_get_stuff($sermon["Sermon"]); foreach ((array) $media as $media_type => $media_names) { if (is_array($media_names) && $media_type != "Code") { foreach ((array)$media_names as $media_name) { ?>', 
     50        '[/files_loop]' => '<?php } } } ?>', 
     51        '[file]' => '<?php sb_print_url($media_name) ?>', 
     52        '[file_with_download]' => '<?php sb_print_url_link($media_name) ?>', 
     53        '[embed_loop]' => '<?php $media = sb_get_stuff($sermon); foreach ((array) $media as $media_type => $media_names) { if (is_array($media_names) && $media_type == "Code") { foreach ((array)$media_names as $media_name) { ?>', 
     54        '[/embed_loop]' => '<?php } } } ?>', 
     55        '[embed]' => '<?php sb_print_code($media_name) ?>', 
    5656        '[next_sermon]' => '<?php sb_print_next_sermon_link($sermon["Sermon"]) ?>', 
    5757        '[prev_sermon]' => '<?php sb_print_prev_sermon_link($sermon["Sermon"]) ?>', 
  • sermon-browser/trunk/sb-includes/frontend.php

    r109047 r109328  
    22// Create the shortcode handler 
    33function sb_shortcode($atts, $content=null) { 
    4     global $wpdb, $clr, $record_count; 
     4    global $wpdb, $record_count; 
    55    ob_start(); 
    66    $atts = shortcode_atts(array( 
    7         'filter' => 'one-click', 
     7        'filter' => get_option('sb_filtertype'), 
     8        'filterhide' => get_option('sb_filterhide'), 
    89        'id' => $_REQUEST['sermon_id'], 
    910        'preacher' => $_REQUEST['preacher'], 
     
    1617        'title' => $_REQUEST['title'], 
    1718    ), $atts); 
    18     if ($atts['id'] != 0) { 
    19         $clr = true; 
     19    if ($atts['id'] != '') { 
     20        if (strtolower($atts['id']) == 'latest') { 
     21            $atts['id'] = ''; 
     22            $query = $wpdb->get_results(sb_create_multi_sermon_query($atts, array(), 1, 1)); 
     23            $atts['id'] = $query[0]->id; 
     24        } 
    2025        $sermon = sb_get_single_sermon((int) $atts['id']); 
    2126        eval('?>'.base64_decode(get_option('sb_sermon_single_output'))); 
    2227    } else { 
    23         $clr = false; 
    24         $sermons = sb_get_sermons($atts, 
    25         array( 
    26             'by' => $_REQUEST['sortby'] ? $_REQUEST['sortby'] : 'm.date', 
    27             'dir' => $_REQUEST['dir'], 
    28         ), 
    29         $_REQUEST['page'] ? $_REQUEST['page'] : 1            
    30         ); 
     28        if ($_REQUEST['sortby']) 
     29            $sort_criteria = $_REQUEST['sortby']; 
     30        else 
     31            $sort_criteria = 'm.date'; 
     32        $sort_order = array('by' => $sort_criteria, 'dir' => $_REQUEST['dir']); 
     33        if ($_REQUEST['page']) 
     34            $page = $_REQUEST['page']; 
     35        else 
     36            $page = 1; 
     37        $sermons = sb_get_sermons($atts, $sort_order, $page); 
    3138        $output = '?>'.base64_decode(get_option('sb_sermon_multi_output')); 
    3239        eval($output); 
     
    4148    global $wpdb, $post, $sb_display_url; 
    4249    if ($sb_display_url == '') { 
    43         $pageid = null; 
     50        /* $pageid = null; 
    4451        if ($post->ID != '') 
    4552            $pageid = $wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE post_content LIKE '%[sermons%' AND (post_status = 'publish' OR post_status = 'private') AND ID={$post->ID} AND post_date < NOW();"); 
    46         if ($pageid === null) 
     53        if ($pageid === null) */ 
    4754            $pageid = $wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE post_content LIKE '%[sermons]%' AND (post_status = 'publish' OR post_status = 'private') AND post_date < NOW();"); 
    4855        $sb_display_url = get_permalink($pageid); 
     
    439446function sb_add_headers() { 
    440447    global $sermon_domain, $post, $wpdb; 
    441     echo "<!-- Added by SermonBrowser (version ".SB_CURRENT_VERSION.") - http://www.4-14.org.uk/sermon-browser -->\r"; 
    442     echo "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"".__('Sermon podcast', $sermon_domain)."\" href=\"".get_option('sb_podcast')."\" />\r"; 
    443     $pageid = $wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE post_content LIKE '%[sermons%' AND (post_status = 'publish' OR post_status = 'private') AND ID={$post->ID} AND post_date < NOW();"); 
    444     if ($pageid !== NULL) { 
    445         wp_enqueue_script('sb_datepicker'); 
    446         wp_enqueue_style ('sb_datepicker'); 
    447         wp_enqueue_style ('sb_style'); 
    448         if ($_REQUEST['title'] OR $_REQUEST['preacher'] OR $_REQUEST['date'] OR $_REQUEST['enddate'] OR $_REQUEST['series'] OR $_REQUEST['service'] OR $_REQUEST['book'] OR $_REQUEST['stag']) 
    449             echo "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"".__('Custom sermon podcast', $sermon_domain)."\" href=\"".sb_podcast_url()."\" />\r"; 
     448    if ($post->ID != '') { 
     449        echo "<!-- Added by SermonBrowser (version ".SB_CURRENT_VERSION.") - http://www.4-14.org.uk/sermon-browser -->\r"; 
     450        echo "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"".__('Sermon podcast', $sermon_domain)."\" href=\"".get_option('sb_podcast')."\" />\r"; 
     451        $pageid = $wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE post_content LIKE '%[sermons%' AND (post_status = 'publish' OR post_status = 'private') AND ID={$post->ID} AND post_date < NOW();"); 
     452        if ($pageid !== NULL) { 
     453            wp_enqueue_script('sb_datepicker'); 
     454            wp_enqueue_style ('sb_datepicker'); 
     455            wp_enqueue_style ('sb_style'); 
     456            if ($_REQUEST['title'] OR $_REQUEST['preacher'] OR $_REQUEST['date'] OR $_REQUEST['enddate'] OR $_REQUEST['series'] OR $_REQUEST['service'] OR $_REQUEST['book'] OR $_REQUEST['stag']) 
     457                echo "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"".__('Custom sermon podcast', $sermon_domain)."\" href=\"".sb_podcast_url()."\" />\r"; 
     458        } 
    450459    } 
    451460} 
     
    482491// Prints preacher search URL 
    483492function sb_print_preacher_link($sermon) { 
    484     global $clr; 
    485     echo sb_build_url(array('preacher' => $sermon->pid), $clr); 
     493    echo sb_build_url(array('preacher' => $sermon->pid)); 
    486494} 
    487495 
    488496// Prints series search URL 
    489497function sb_print_series_link($sermon) { 
    490     global $clr;     
    491     echo sb_build_url(array('series' => $sermon->ssid), $clr); 
     498    echo sb_build_url(array('series' => $sermon->ssid)); 
    492499} 
    493500 
    494501// Prints service search URL 
    495502function sb_print_service_link($sermon) { 
    496     global $clr; 
    497     echo sb_build_url(array('service' => $sermon->sid), $clr); 
     503    echo sb_build_url(array('service' => $sermon->sid)); 
    498504} 
    499505 
    500506// Prints bible book search URL 
    501507function sb_get_book_link($book_name) { 
    502     global $clr; 
    503     return sb_build_url(array('book' => $book_name), $clr); 
     508    return sb_build_url(array('book' => $book_name)); 
    504509} 
    505510 
    506511// Prints tag search URL 
    507512function sb_get_tag_link($tag) { 
    508     global $clr; 
    509     return sb_build_url(array('stag' => $tag), $clr); 
     513    return sb_build_url(array('stag' => $tag)); 
    510514} 
    511515 
    512516// Prints tags 
    513517function sb_print_tags($tags) { 
    514     foreach ((array) $tags as $tag) { 
     518    foreach ((array) $tags as $tag) 
    515519        $out[] = '<a href="'.sb_get_tag_link($tag).'">'.$tag.'</a>'; 
    516     } 
    517520    $tags = implode(', ', (array) $out); 
    518521    echo $tags; 
     
    553556        $url = sb_build_url(array('page' => ++$current)); 
    554557        echo '<a href="'.$url.'">'.__('Next page', $sermon_domain).' &raquo;</a>'; 
    555     }    
     558    } 
    556559} 
    557560 
     
    564567        $url = sb_build_url(array('page' => --$current)); 
    565568        echo '<a href="'.$url.'">&laquo; '.__('Previous page', $sermon_domain).'</a>'; 
    566     }    
     569    } 
    567570} 
    568571 
     
    684687        $tags[] = $tag->name; 
    685688    } 
    686     foreach ($stuff as $cur) { 
    687         switch ($cur->type) { 
    688             case "file": 
    689             case "url": 
    690                 $file[] = $cur->name; 
    691                 break; 
    692             default: 
    693                 ${$cur->type}[] = $cur->name; 
    694         } 
    695     } 
     689    foreach ($stuff as $cur) 
     690        ${$cur->type}[] = $cur->name; 
    696691    $sermon->start = unserialize($sermon->start); 
    697692    $sermon->end = unserialize($sermon->end); 
    698     print_r ($url); 
    699693    return array(        
    700694        'Sermon' => $sermon, 
     
    705699} 
    706700 
    707 //Get multiple sermons from the database 
    708 function sb_get_sermons($filter, $order, $page = 1, $limit = 0) { 
    709     global $wpdb, $record_count; 
    710     if ($limit == 0) $limit = sb_get_value('sermons_per_page'); 
     701//Create query for returning multiple sermons 
     702function sb_create_multi_sermon_query ($filter, $order, $page = 1, $limit = 0) { 
     703    global $wpdb; 
    711704    $default_filter = array( 
    712705        'title' => '', 
     
    725718    ); 
    726719    $bs = ''; 
    727     $filter = array_merge($default_filter, $filter); 
    728     $order = array_merge($default_order, $order); 
     720    $filter = array_merge($default_filter, (array)$filter); 
     721    $order = array_merge($default_order, (array)$order); 
    729722    $page = (int) $page; 
    730723    if ($filter['title'] != '') { 
     
    765758        $order['by'] = 'b.id '.$order['dir'].', bs.chapter '.$order['dir'].', bs.verse'; 
    766759    } 
    767     $query = "SELECT SQL_CALC_FOUND_ROWS DISTINCT m.id, m.title, m.description, m.date, m.time, m.start, m.end, p.id as pid, p.name as preacher, p.description as preacher_description, p.image, s.id as sid, s.name as service, ss.id as ssid, ss.name as series  
     760    return "SELECT SQL_CALC_FOUND_ROWS DISTINCT m.id, m.title, m.description, m.date, m.time, m.start, m.end, p.id as pid, p.name as preacher, p.description as preacher_description, p.image, s.id as sid, s.name as service, ss.id as ssid, ss.name as series  
    768761        FROM {$wpdb->prefix}sb_sermons as m  
    769762        LEFT JOIN {$wpdb->prefix}sb_preachers as p ON m.preacher_id = p.id  
     
    775768        LEFT JOIN {$wpdb->prefix}sb_tags as t ON t.id = st.tag_id  
    776769        WHERE 1 = 1 $cond ORDER BY ". $order['by'] . " " . $order['dir'] . " LIMIT " . $offset . ", " . $limit; 
    777     $query = $wpdb->get_results($query); 
     770} 
     771 
     772//Get multiple sermons from the database 
     773function sb_get_sermons($filter, $order, $page = 1, $limit = 0) { 
     774    global $wpdb, $record_count; 
     775    if ($limit == 0) 
     776        $limit = sb_get_value('sermons_per_page'); 
     777    $query = $wpdb->get_results(sb_create_multi_sermon_query($filter, $order, $page, $limit)); 
    778778    $record_count = $wpdb->get_var("SELECT FOUND_ROWS()"); 
    779779    return $query; 
     
    788788        $stuff = $wpdb->get_results("SELECT f.type, f.name FROM {$wpdb->prefix}sb_stuff as f WHERE sermon_id = $sermon->id ORDER BY id desc"); 
    789789    } 
    790     foreach ($stuff as $cur) { 
     790    foreach ($stuff as $cur) 
    791791        ${$cur->type}[] = $cur->name; 
    792     } 
    793792    return array(        
    794793        'Files' => $file, 
     
    879878function sb_print_filters($filter) { 
    880879    global $wpdb, $sermon_domain, $more_applied, $filter_options; 
    881     if (get_option('sb_filterhide') == 'hide') { 
     880    if ($filter['filterhide'] == 'hide') { 
    882881        $hide_filter = TRUE; 
    883882    $js_hide = <<<HERE 
     
    901900    $js_hide = str_replace ('SHOW', __('Show filter', $sermon_domain), $js_hide); 
    902901    $js_hide = str_replace ('HIDE', __('Hide filter', $sermon_domain), $js_hide); 
    903     if (get_option('sb_filtertype') == 'oneclick') { 
     902    if ($filter['filter'] == 'oneclick') { 
    904903        // One click filter 
    905904        $hide_custom_podcast = true; 
    906         if ($filter['filter'] !== 'none') { 
    907             $filter_options = array ('preacher', 'book', 'service', 'series', 'date', 'enddate', 'title'); 
    908             $output = ''; 
    909             foreach ($filter_options AS $filter_option) 
    910                 if ($_REQUEST[$filter_option]) { 
    911                     if ($filter_option != 'enddate') { 
    912                         if ($output != '') 
    913                             $output .= "\r, "; 
    914                         if ($filter_option == 'date') { 
    915                             $output .= '<strong>Date</strong>:&nbsp;'; 
    916                             if (substr($_REQUEST['date'],0,4) == substr($_REQUEST['enddate'],0,4)) 
    917                                 $output .= substr($_REQUEST['date'],0,4).'&nbsp;(<a href="'.sb_url_minus_parameter('date', 'enddate').'">x</a>)'; 
    918                             if (substr($_REQUEST['date'],5,2) == substr($_REQUEST['enddate'],5,2)) 
    919                                 $output .= ', '.strftime('%B', strtotime($_REQUEST['date'])).' (<a href="'.sb_build_url(Array ('date' => substr($_REQUEST['date'],0,4).'-01-01', 'enddate' => substr($_REQUEST['date'],0,4).'-12-31')).'">x</a>)'; 
    920                         } else { 
    921                             $output .= '<strong>'.ucwords($filter_option).'</strong>:&nbsp;*'.$filter_option.'*'; 
    922                             $output .= '&nbsp;(<a href="'.sb_url_minus_parameter($filter_option).'">x</a>)'; 
    923                         } 
     905        $filter_options = array ('preacher', 'book', 'service', 'series', 'date', 'enddate', 'title'); 
     906        $output = ''; 
     907        foreach ($filter_options AS $filter_option) 
     908            if ($_REQUEST[$filter_option]) { 
     909                if ($filter_option != 'enddate') { 
     910                    if ($output != '') 
     911                        $output .= "\r, "; 
     912                    if ($filter_option == 'date') { 
     913                        $output .= '<strong>Date</strong>:&nbsp;'; 
     914                        if (substr($_REQUEST['date'],0,4) == substr($_REQUEST['enddate'],0,4)) 
     915                            $output .= substr($_REQUEST['date'],0,4).'&nbsp;(<a href="'.sb_url_minus_parameter('date', 'enddate').'">x</a>)'; 
     916                        if (substr($_REQUEST['date'],5,2) == substr($_REQUEST['enddate'],5,2)) 
     917                            $output .= ', '.strftime('%B', strtotime($_REQUEST['date'])).' (<a href="'.sb_build_url(Array ('date' => substr($_REQUEST['date'],0,4).'-01-01', 'enddate' => substr($_REQUEST['date'],0,4).'-12-31')).'">x</a>)'; 
     918                    } else { 
     919                        $output .= '<strong>'.ucwords($filter_option).'</strong>:&nbsp;*'.$filter_option.'*'; 
     920                        $output .= '&nbsp;(<a href="'.sb_url_minus_parameter($filter_option).'">x</a>)'; 
    924921                    } 
    925                     $hide_custom_podcast = FALSE; 
    926922                } 
    927             $sermons=sb_get_sermons($filter, array(), 1, 99999); 
    928             $ids = array(); 
    929             foreach ($sermons as $sermon) 
    930                 $ids[] = $sermon->id; 
    931             $ids = "('".implode ("', '", $ids)."')"; 
    932  
    933             $preachers = $wpdb->get_results("SELECT p.*, count(p.id) AS count FROM {$wpdb->prefix}sb_preachers AS p JOIN {$wpdb->prefix}sb_sermons AS sermons ON p.id = sermons.preacher_id WHERE sermons.id IN {$ids} GROUP BY p.id ORDER BY count DESC, sermons.date DESC");   
    934             $series = $wpdb->get_results("SELECT ss.*, count(ss.id) AS count FROM {$wpdb->prefix}sb_series AS ss JOIN {$wpdb->prefix}sb_sermons AS sermons ON ss.id = sermons.series_id  WHERE sermons.id IN {$ids} GROUP BY ss.id ORDER BY sermons.date DESC"); 
    935             $services = $wpdb->get_results("SELECT s.*, count(s.id) AS count FROM {$wpdb->prefix}sb_services AS s JOIN {$wpdb->prefix}sb_sermons AS sermons ON s.id = sermons.service_id  WHERE sermons.id IN {$ids} GROUP BY s.id ORDER BY count DESC"); 
    936             $book_count = $wpdb->get_results("SELECT bs.book_name AS name, count(b.id) AS count FROM {$wpdb->prefix}sb_books_sermons AS bs JOIN {$wpdb->prefix}sb_books as b ON bs.book_name=b.name WHERE bs.type = 'start' AND bs.sermon_id IN {$ids} GROUP BY b.id");  
    937             $dates = $wpdb->get_results("SELECT substr(date,1,4) as year, substr(date,6,2) as month, substr(date,9,2) as day FROM {$wpdb->prefix}sb_sermons WHERE id IN {$ids} ORDER BY date ASC"); 
    938  
    939             $more_applied = array(); 
    940             $output = str_replace ('*preacher*', $preachers[0]->name, $output); 
    941             $output = str_replace ('*book*', $book_count[0]->name, $output); 
    942             $output = str_replace ('*service*', $services[0]->name, $output); 
    943             $output = str_replace ('*series*', $series[0]->name, $output); 
    944          
    945             echo "<span class=\"inline_controls\"><a href=\"#\" id=\"show_hide_filter\"></a></span>"; 
    946             if ($output != '') 
    947                 echo '<div class="filtered">'.__('Active filter', $sermon_domain).': '.$output."</div>\r"; 
    948             echo '<div id="mainfilter">'; 
    949             if (count($preachers) > 1) 
    950                 sb_print_filter_line ('preacher', $preachers, 'id', 'name', 7); 
    951             if (count($book_count) > 1) 
    952                 sb_print_filter_line ('book', $book_count, 'name', 'name', 10); 
    953             if (count($series) > 1) 
    954                 sb_print_filter_line ('series', $series, 'id', 'name', 10); 
    955             if (count($services) > 1) 
    956                 sb_print_filter_line ('service', $services, 'id', 'name', 10); 
    957             sb_print_date_filter_line ($dates); 
    958             echo "</div>\r"; 
    959         } 
     923                $hide_custom_podcast = FALSE; 
     924            } 
     925        $sermons=sb_get_sermons($filter, array(), 1, 99999); 
     926        $ids = array(); 
     927        foreach ($sermons as $sermon) 
     928            $ids[] = $sermon->id; 
     929        $ids = "('".implode ("', '", $ids)."')"; 
     930 
     931        $preachers = $wpdb->get_results("SELECT p.*, count(p.id) AS count FROM {$wpdb->prefix}sb_preachers AS p JOIN {$wpdb->prefix}sb_sermons AS sermons ON p.id = sermons.preacher_id WHERE sermons.id IN {$ids} GROUP BY p.id ORDER BY count DESC, sermons.date DESC");   
     932        $series = $wpdb->get_results("SELECT ss.*, count(ss.id) AS count FROM {$wpdb->prefix}sb_series AS ss JOIN {$wpdb->prefix}sb_sermons AS sermons ON ss.id = sermons.series_id  WHERE sermons.id IN {$ids} GROUP BY ss.id ORDER BY sermons.date DESC"); 
     933        $services = $wpdb->get_results("SELECT s.*, count(s.id) AS count FROM {$wpdb->prefix}sb_services AS s JOIN {$wpdb->prefix}sb_sermons AS sermons ON s.id = sermons.service_id  WHERE sermons.id IN {$ids} GROUP BY s.id ORDER BY count DESC"); 
     934        $book_count = $wpdb->get_results("SELECT bs.book_name AS name, count(b.id) AS count FROM {$wpdb->prefix}sb_books_sermons AS bs JOIN {$wpdb->prefix}sb_books as b ON bs.book_name=b.name WHERE bs.type = 'start' AND bs.sermon_id IN {$ids} GROUP BY b.id");  
     935        $dates = $wpdb->get_results("SELECT substr(date,1,4) as year, substr(date,6,2) as month, substr(date,9,2) as day FROM {$wpdb->prefix}sb_sermons WHERE id IN {$ids} ORDER BY date ASC"); 
     936 
     937        $more_applied = array(); 
     938        $output = str_replace ('*preacher*', $preachers[0]->name, $output); 
     939        $output = str_replace ('*book*', $book_count[0]->name, $output); 
     940        $output = str_replace ('*service*', $services[0]->name, $output); 
     941        $output = str_replace ('*series*', $series[0]->name, $output); 
     942     
     943        echo "<span class=\"inline_controls\"><a href=\"#\" id=\"show_hide_filter\"></a></span>"; 
     944        if ($output != '') 
     945            echo '<div class="filtered">'.__('Active filter', $sermon_domain).': '.$output."</div>\r"; 
     946        echo '<div id="mainfilter">'; 
     947        if (count($preachers) > 1) 
     948            sb_print_filter_line ('preacher', $preachers, 'id', 'name', 7); 
     949        if (count($book_count) > 1) 
     950            sb_print_filter_line ('book', $book_count, 'name', 'name', 10); 
     951        if (count($series) > 1) 
     952            sb_print_filter_line ('series', $series, 'id', 'name', 10); 
     953        if (count($services) > 1) 
     954            sb_print_filter_line ('service', $services, 'id', 'name', 10); 
     955        sb_print_date_filter_line ($dates); 
     956        echo "</div>\r"; 
    960957        if (count($more_applied) > 0 | $output != '' | $hide_custom_podcast === TRUE | $hide_filter === TRUE) { 
    961958            echo "<script type=\"text/javascript\">\r"; 
     
    979976            echo "</script>\r"; 
    980977        } 
    981     } elseif (get_option('sb_filtertype') == 'dropdown') { 
     978    } elseif ($filter['filter'] == 'dropdown') { 
    982979        // Drop-down filter 
    983980        $preachers = $wpdb->get_results("SELECT p.*, count(p.id) AS count FROM {$wpdb->prefix}sb_preachers AS p JOIN {$wpdb->prefix}sb_sermons AS s ON p.id = s.preacher_id GROUP BY p.id ORDER BY count DESC, s.date DESC");    
  • sermon-browser/trunk/sb-includes/podcast.php

    r109047 r109328  
    9494                foreach ($media as $media_type => $media_names) 
    9595                    if (is_array($media_names) && $media_type != 'Code') 
    96                         foreach ($media_names as $media_name) 
     96                        foreach ((array)$media_names as $media_name) 
    9797                            if (in_array(strtolower(substr($media_name, -3)), $accepted_extensions)) { 
    9898                                $mp3count++; 
  • sermon-browser/trunk/sb-includes/readme.txt

    r108590 r109328  
    22Contributors: mark8barnes 
    33Donate link: http://www.4-14.org.uk/sermon-browser#support 
    4 Tags: sermons, podcast, mp3, church, bible, audio, widget, embed, video, esv, wpmu, church, iTunes, preacher 
     4Tags: sermons, podcast, mp3, church, bible, audio, widget, embed, video, esv, wpmu, preach, iTunes, preacher, listen 
    55Requires at least: 2.5 
    66Tested up to: 2.7.1 
     
    15151. Sermons can be **searched** by topic, preacher, bible passage or date. 
    16162. Full **podcasting** capabilities, including custom podcasts for individual users. 
    17 3. Sermons uploaded in mp3 format can be **played directly** on your website using the 1PixelOut Audio Player. 
     173. Sermons uploaded in mp3 format can be **played directly** on your website using the [1PixelOut Audio Player](http://wpaudioplayer.com/). 
    18184. An optional **sidebar widget** displays sermons on all of your posts or pages. 
    19 5. **Embed videos** and other flash files from sites such as YouTube or Google Video. 
     195. **Embed videos** and other flash files from sites such as [YouTube](http://www.youtube.com/) or [Vimeo](http://www.vimeo.com/). 
    20206. **Other file types** can also be uploaded, including PDF, Powerpoint, Word, text and RTF. Multiple files can be attached to single sermons. 
    21217. The **full Bible text** of the passage being preached on can be included on each sermon page (nine different versions, including ESV). 
    22 8. Files can be uploaded to your own site **through the browser or via FTP**. Alternatively you can use other free audio hosting sites such as Odeo. 
     228. Files can be uploaded to your own site **through the browser or via FTP**. Alternatively you can use other free audio hosting sites. 
    23239. Powerful **templating function** allows complete customisation to complement the look of your site. 
    242410. Simple statistics show how often each sermon has been listened to. 
    25 11. Support for Wordpress MU (WPMU) 
    26 12. Extensive **help and tutorial** screencasts. 
     2511. Support for [Wordpress MU](http://www.4-14.org.uk/wordpress-plugins/sermon-browser/template-tags) (WPMU). 
     2612. Extensive **help** and [tutorial screencasts](http://www.4-14.org.uk/wordpress-plugins/sermon-browser#tutorial). 
    272713. English and Spanish translations included. 
    2828 
     
    32322. Place the sermon-browser folder in your wp-content/plugins folder and upload it to your website. 
    33333. Activate the plugin from the plugins tab of your Wordpress admin. 
    34 4. You may have to change the permissions the upload folder (by default wp-content/uploads/sermons). 
     344. You may have to [change the permissions](http://www.4-14.org.uk/wordpress-plugins/sermon-browser/faq#chmod) the upload folder (by default wp-content/uploads/sermons). 
    35355. Create a Wordpress page with the text [sermons]. The plugin will display your sermons on this page. 
     366. You can also display sermons (filtered according to your criteria) on additional pages or posts by using [shortcodes](http://www.4-14.org.uk/wordpress-plugins/sermon-browser/shortcodes).  
    3637 
    3738#### Installation in Wordpress MU 
     
    4243== Frequently Asked Questions == 
    4344 
    44 #### I've activated the plugin, and entered in a few sermons, but they are not showing up to my website users. Where are they? 
    45  
    46 SermonBrowser only displays your sermons where you choose. You need to create the page/post where you want the sermons to appear (or edit an existing one), and add [sermons] to the page/post. You can also add some explantory text if you wish. If you do so, the text will appear on all your sermons pages. If you want your text to only appear on the list of sermons, not on individual sermon pages, you need to edit the SermonBrowser templates (see below). 
    47  
    48 #### What does the error message "Error: The upload folder is not writeable. You need to CHMOD the folder to 666 or 777." mean? 
    49  
    50 SermonBrowser tries to set the correct permissions on your folders for you, but sometimes restrictions mean that you have to do it yourself. You need to make sure that SermonBrowser is able to write to your sermons upload folder (usually /wp-content/uploads/sermons/). Your FTP software should be able to do this for you - consult the help files that came with that program. 
    51  
    52 #### SermonBrowser spends a long time attempting to upload files, but the file is never uploaded. What's happening? 
    53  
    54 The most likely cause is that you're reaching either the maximum filesize that can be uploaded, or the maximum time a PHP script can run for. Editing your php.ini may help overcome these problems - but if you're on shared hosting, it's possible your host has set maximum limits you cannot change. If that's the case, you should upload your files via FTP, which is generally a better option than using your browser, particularly if you have several files to upload. If you do edit your php.ini file, these settings should be adequate: 
    55  
    56     file_uploads = On 
    57     upload_max_filesize = 15M 
    58     post_max_size = 15M 
    59     max_execution_time = 600 
    60     max_input_time = 600 
    61     memory_limit = 16M 
    62  
    63 #### Why are my MP3 files are appearing as an icon, rather than as a player, as I've seen on other SermonBrowser sites? 
    64  
    65 You need to install and activate the 1pixelout audio player plugin. You can also customise the plugin so that its colours match your site. 
    66  
    67 #### How do I change the Bible version from the ESV? 
    68  
    69 Six Bible versions are supported by Sermon Browser: the English Standard Version, American Standard Version, King James Version, Young's Literal Translation, the World English Bible and the Spanish-language Reina Valera. To change to one of these other versions, go to Options, and edit the single template. Replace [esvtext] with [asvtext], [kjvtext], [ylttext], [webtext] or [lbrvtext]. Thanks go to Crossway for providing access to the ESV, and Living Stones Ministries for the other versions. 
    70  
    71 If you're desperate to use other versions not currently supported, you can manage it using other Wordpress plugins (albeit with reduced functionality). However, if you're desperate to use other versions, you can manage it using other Wordpress plugins (albeit with reduced functionality). The eBibleicious plugin allows for NASB, MSG, KJV, NKJV, ESV, HCSB, and NCV (use it in 'snippet' mode). However, there are three disadvantages. (1) To use it, you'll need to register for an API key (although it is free). (2) It uses Javascript so search engines won't see the Bible text, and nor will users with javascript turned off. (3) Most importantly, it only shows a maximum of four verses (the ESV shows up to 500 verses!). 
    72  
    73 You can also use the RefTagger plugin, though this shows even fewer verses. Even worse (for our purposes) the bible passage only shows when you hover over a special link with your mouse. It does, however, provide an even longer list of translations. Please be aware that both RefTagger and eBibleicious will add bible text to bible references across your whole website, not just your sermons pages. 
    74  
    75 To use either of these alternatives, just download, install and activate them as you would for any other plugin. Check their settings (make sure you enter get an API key if you're using eBiblicious). You then need to make one change to your SermonBrowser options. In the *Single Sermon form*, look for **[esvtext]** and replace it with **[biblepassage]**. (By default it's right at the end of the code.) 
    76  
    77 #### When using the 1pixelout audio player, my pastor sounds like a chipmunk! What's going on? 
    78  
    79 This 'feature' is caused by a well-known bug in Adobe flash. In order for the files to play correctly, when they are saved, the sample rate needs to be set at a multiple of 11.025kHz (i.e. 11.025, 22.05 or 44.1). 
    80 How do I get recent sermons to display in my sidebar? 
    81  
    82 If your WordPress theme supports widgets, just go to Design and choose Widgets. There you easily can add the Sermons widget to your sidebar. If your theme doesn't support widgets, you'll need to edit your theme manually. Usually, you'll be editing a file called sidebar.php, but your theme may give it a different name. Add the following code: 
    83  
    84     <?php if (function_exists('sb_display_sermons')) sb_display_sermons(array('display_preacher' => 0, 'display_passage' => 1, 'display_date' => 1, 'display_player' => 1, 'preacher' => 0, 'service' => 0, 'series' => 0, 'limit' => 5)) ?> 
    85  
    86 Each of the numbers in that line can be changed. display\_preacher, display\_passage, display\_date, and display\_player affect what is displayed (0 is off, 1 is on). preacher, service and series allow you to limit the output to a particular preacher, service or series. Simply change the number of the ID of the preacher/services/series you want to display. You can get the ID from the Preachers page, or the Series & Services page. 0 shows all preachers/services/series. limit is simply the maximum number of sermons you want displayed. 
    87  
    88 #### My host only allows me a certain amount of disk space, and I have so many sermons uploaded, I've run out of space! What can I do? 
    89  
    90 You could, of course, change your host to someone a little more generous! I use VortechHosting for low traffic sites (5Gb of disk space for less than $10 a month), and LiquidWeb VPS for higher traffic sites (20Gb disk space for $60 a month). You should also make sure you encode your sermons at a medium to high compression. Usually, 22.05kHz, 48kbps mono is more than adequate (you could probably go down to 32kbps for even higher compression). 48kbps means every minute of recording takes up 360kb of disk space, so a thirty minute sermon will just over 10Mb. At this setting, 5Gb would be enough for over 450 sermons. 
    91  
    92 If you can't change your host, you can still use SermonBrowser. You'll just have to upload your sermon files to another site - preferably a free one! We recommend Odeo. If you want to use Odeo's audio player on your website, copy the embed code they give you, and when you add your sermon to SermonBrowser, select "Enter embed code:" and paste it in. If you want to use the standard 1pixelout audio player, copy the "Download MP3? link Odeo give you, and when you add your sermon to SermonBrowser, select "Enter an URL" and paste it in. 
    93  
    94 #### How do I upload videos to SermonBrowser? 
    95  
    96 You can't - but you can upload videos to other sites, then embed them in your sermons. You can use any site that allows you to embed your video in other websites, including YouTube, but we recommend GoogleVideo as the most suitable for sermons. That's because most video-sharing sites are designed for relatively short clips of 10 minutes or so, but GoogleVideo will accept videos of any length - and there are no quotas for the maximum size of a video, nor the number of videos you can store. Once your video is uploaded and available on Google Video, you can copy the embed code it gives you, edit your sermon, select "Enter embed code" and paste it in. 
    97  
    98 #### Can I turn off the "Powered by Sermonbrowser" link? 
    99  
    100 The link is there so that people from other churches who listen to your sermons can find out about SermonBrowser themselves. But if you'd like to remove the link, just remove [creditlink] from the templates in SermonBrowser Options. 
    101  
    102 #### What is the difference between the public and private podcast feeds? 
    103  
    104 In SermonBrowser options, you are able to change the address of the public podcast feed. This is the feed that is shown on your sermons page, and is usually the same as your private feed. However, if you use a service such as FeedBurner, you can use your public feed to send data to feedburner, and change your private feed to your Feedburner address. If you do not use a service like Feedburner, just make sure your public and private feeds are the same. 
    105  
    106 #### On the sermons page, what is the difference between subscribing to a full podcast, and subscribing to a custom podcast? 
    107  
    108 The link called **subscribe to full podcast** gives a podcast of *all* sermons that you add to your site through SermonBrowser. But it may be that some people may just want to subscribe to a feed for certain speakers, or for a certain service. If they wish to do this, they should set the search filters and perform their search, then click on the **Subscribe to custom podcast** link. This will give them a podcast according to the filter they selected. You could also copy this link, and display it elsewhere on the site - for example to provide separate feeds for morning and evening services. 
    109  
    110 #### Can I change the default sort order of the sermons? 
    111  
    112 Unfortunately not. Unless the viewer specified otherwise, Sermonbrowser always displays the most recent sermons at the top. 
    113  
    114 #### Why do I get a page not found error when I click on my podcast feed? 
    115  
    116 You've probably changed the address of your public feed. Try changing it back to the same value as your private feed in Sermon Options. 
    117  
    118 #### Can I change the way sermons are displayed? 
    119  
    120 Yes, definately, although you need to know a little HTML and/or CSS. SermonBrowser has a powerful templating function, so you can exclude certain parts of the output (e.g. if you don't want the links to other sermons preached on the same day to be displayed). To edit the templates, go to SermonBrowser Options. Below is a reference for all the template tags you need. If you just want to change the way the output looks, without changing what is displayed, you need to edit the CSS stylesheet, also in SermonBrowser Options. (See one example, below). 
    121  
    122 #### The search form is too big/too small for my layout. How do I make it narrower/wider? 
    123  
    124 The search form is set to roughly 500 pixels, which should be about right for most WordPress templates. To change it, look for a line in the CSS stylesheet that begins table.sermonbrowser td.field input, and change the width specified after it. To make the form narrower, reduce the width. To make it bigger, increase the width. You'll also need to change the width of the date fields on the line below, which should be 20 pixels smaller. 
    125  
    126 #### Why is sometimes the Bible text missing? 
    127  
    128 This usually happens for one of three reasons: (1) If the website providing the service is down. They're rarely down for long. (2) If you specify an invalid bible passage (e.g. Romans 22). If this is the case your sermon page will display <em>ERROR: No results were found for your search.</em> (3) If you never get the bible passages for any bible version, it's probably your webhost has disabled <strong>allow\_url\_fopen</strong> and cURL. Some cheaper webhosts have these essential features switched off. If they have, you won't be able to use this facility. 
    129  
    130 #### Why does my sermon page say I have exceeded my quota for ESV lookups? 
    131  
    132 The ESV website only allows 5,000 lookups per day from each IP address. That should be enough for most users of SermonBrowser. However, if you are using a shared host, there will be hundreds (perhaps thousands) of other websites on the same IP address as you. If any are also using the ESV API, they also get counted towards that total. If you are using less than 5,000 lookups per day (i.e. you are having less than 5,000 pageviews of your sermon pages), and you receive the error message you'll need to do two things in order to continue to display the text. (1) Sign up for an ESV API key. (2) Edit frontend.php (one of the SermonBrowser files). Look for line 66, and replace 
    133 `...passageQuery?key=**IP**&passage=...` 
    134 with 
    135 `...passageQuery?key=**YOURAPIKEY**&passage=...`. 
    136  
    137 If you are having more than 5,000 page views per day, then this won't help. Instead, leave a message in the SermonBrowser comments explaining your problem. SermonBrowser could probably be modified to provide a caching mechanism to reduce the likelihood of this error occurring, if there is demand. 
    138  
    139 #### How can I change the file icons that Sermon Browser uses, or add new icons? 
    140  
    141 You'll need to edit the filetypes.php file that comes with Sermon Browser. The icon is chosen on the basis of the file extension (or in the case of URLs the file extension then the site address). If you do create new icons for other filetypes, consider sending them to the author so they can be included in future versions of the plugin. 
     45A [comprehensive FAQ](http://www.4-14.org.uk/wordpress-plugins/sermon-browser/faq) is available on the plugin's home page. 
    14246 
    14347== Screenshots == 
     
    146502. **The single sermon page (with Bible text):** This next screenshot shows the detail for one sermon. You can see additional links to other sermons preached around that time, plus the complete ESV text of the passage being preached on. 
    147513. **Editing a sermon:** The third screenshot shows the main editing window. You can see a wide variety of information can be entered, including the bible passage being preached on, and any files linked to the sermon. Any number of Bible passages can be included, and any number of files (e.g. you could attach an mp3 file for the audio recording, a powerpoint file, and a word document of PDF of the sermon text). 
    148 4. **Using the template facility:** The final screenshot shows the options screen with its powerful templating facility. With a little knowledge of HTML and CSS and the Sermon Browser template tags, you can easily adapt Sermon Browser's output to suit your own requirements. SermonBrowser produces valid XHTML code, using semantically correct markup and is fully standards compliant. 
     524. **Using the template facility:** The final screenshot shows the options screen with its powerful templating facility. With a little knowledge of HTML and CSS and the Sermon Browser [template tags](http://www.4-14.org.uk/wordpress-plugins/sermon-browser/template-tags), you can easily adapt Sermon Browser's output to suit your own requirements. SermonBrowser produces valid XHTML code, using semantically correct markup and is fully standards compliant. 
    14953 
    150 == Template tags == 
     54== Customising SermonBrowser == 
    15155 
    152 If you want to change the output of Sermon Browser, you'll need to edit the templates. You'll need to understand the basics of HTML and CSS, and to know the special SermonBrowser template tags. There are two templates, one (called "results page") is used to produce the search results on the main sermons page. The other template (called sermon page) is used to produce the page for single sermon. Most tags can be used in both templates, but some are specific. 
     56You can customise Sermon Browser to fit in with your own theme, and to display or hide whatever information you choose. If you want to create an extra page on your site that just shows a few sermons (for example, just the sermons preached at a recent conference), use [shortcodes](http://www.4-14.org.uk/wordpress-plugins/sermon-browser/shortcodes). 
    15357 
    154 #### Results page only 
    155  
    156 * **[filters\_form]** - The search form which allows filtering by preacher, series, date, etc. multi-sermons page only 
    157 * **[sermons\_count]** - The number of sermons which match the current search critera. 
    158 * **[sermons\_loop][/sermons\_loop]** - 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.) 
    159 * **[first\_passage]** - The main bible passage for this sermon 
    160 * **[previous\_page]** - Displays the link to the previous page of search results (if needed) 
    161 * **[next\_page]** - Displays the link to the next page of search results (if needed) 
    162 * **[podcast]** - Link to the podcast of all sermons 
    163 * **[podcast\_for\_search]** - Link to the podcast of sermons that match the current search 
    164 * **[itunes\_podcast]** - iTunes (itpc://) link to the podcast of all sermons 
    165 * **[itunes\_podcast\_for\_search]** - iTunes (itpc://) link to the podcast of sermons that match the current search 
    166 * **[podcasticon]** - Displays the icon used for the main podcast 
    167 * **[podcasticon\_for\_search]** - Displays the icon used for the custom podcast 
    168  
    169 #### Both results page and sermon page 
    170  
    171 * **[sermon\_title]** - The title of the sermon 
    172 * **[preacher\_link]** - The name of the preacher (hyperlinked to his search results) 
    173 * **[series\_link]** - The name of the series (hyperlinked to search results) 
    174 * **[service\_link]** - The name of the service (hyperlinked to search results) 
    175 * **[date]** - The date of the sermon 
    176 * **[files\_loop][/files\_loop]** - These two tags should be placed around the [file] tag if you want to display all the files linked with to sermon. They are not needed if you only want to display the first file. 
    177 * **[file]** - Displays the files and external URLs 
    178 * **[file_with_download]** - As above, but also adds a download link if the AudioPlayer is displayed 
    179 * **[embed\_loop][/embed\_loop]** - These two tags should be placed around the [embed] tag if you want to display all the embedded objects linked to this sermon. They are not needed if you only want to display the first embedded object. 
    180 * **[embed]** - Displays an embedded object (e.g. video) 
    181 * **[editlink]** - displays an "Edit Sermon" link if currently logged-in user has edit rights. 
    182 * **[creditlink]** - displays a "Powered by Sermon Browser" link. 
    183  
    184 #### Sermon page only 
    185  
    186 * **[preacher\_description]** - The description of the preacher. 
    187 * **[preacher\_image]** - The photo of the preacher. 
    188 * **[sermon\_description]** - The description of the sermon. 
    189 * **[passages\_loop][/passages\_loop]** - These two tags should be placed around the [passage] tag if you want to display all the passages linked with to sermon. 
    190 * **[passage]** - Displays the reference of the bible passage with the book name hyperlinked to search results. 
    191 * **[next\_sermon]** - Displays a link to the next sermon preached (excluding ones preached on the same day) 
    192 * **[prev\_sermon]** - Displays a link to the previous sermon preached 
    193 * **[sameday\_sermon]** - Displays a link to other sermons preached on that day 
    194 * **[tags]** - Displays the tags for that sermons 
    195 * **[esvtext]** - Displays the full text of the ESV Bible for all passages linked to that sermon. 
    196 * **[asvtext]** - Displays the full text of the ASV Bible for all passages linked to that sermon. 
    197 * **[kjvtext]** - Displays the full text of the KJV Bible for all passages linked to that sermon. 
    198 * **[nettext]** - Displays the full text of the NET Bible for all passages linked to that sermon. 
    199 * **[ylttext]** - Displays the full text of the YLT Bible for all passages linked to that sermon. 
    200 * **[webtext]** - Displays the full text of the WEB Bible for all passages linked to that sermon. 
    201 * **[akjvtext]** - Displays the full text of the AKJV Bible for all passages linked to that sermon. 
    202 * **[hnvtext]** - Displays the full text of the HNV Bible for all passages linked to that sermon. 
    203 * **[lbrvtext]** - Displays the full text of the Reina Valera Bible (Spanish) for all passages linked to that sermon. 
    204 * **[biblepassage]** - Displays the reference of the bible passages for that sermon. Useful for utilising other bible plugins (see FAQ). 
     58If you want to customise how Sermon Browser appears throughout your site, use [Template tags](http://www.4-14.org.uk/wordpress-plugins/sermon-browser/template-tags) 
  • sermon-browser/trunk/sermon.php

    r109047 r109328  
    55Description: Add sermons to your Wordpress blog. Coding by <a href="http://codeandmore.com/">Tien Do Xuan</a> and  
    66Author: Mark Barnes 
    7 Version: 0.41.2 
     7Version: 0.42 
    88Author URI: http://www.4-14.org.uk/ 
    99 
     
    3030 
    3131//Set global constants 
    32 define('SB_CURRENT_VERSION', '0.41.2'); 
     32define('SB_CURRENT_VERSION', '0.42'); 
    3333define('SB_DATABASE_VERSION', '1.5'); 
    3434 
     
    21582158sb_do_alerts(); 
    21592159?>   
    2160     <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> 
    21612160    <div class="wrap"> 
    21622161        <a href="http://www.4-14.org.uk/sermon-browser"><img src="<?php echo sb_get_value('plugin_url')?>/sb-includes/logo-small.png" width="191" height ="35" style="margin: 1em 2em; float: right; background: #f9f9f9;" /></a> 
    21632162        <h2><?php _e('Help page', $sermon_domain) ?></h2> 
    21642163        <h3>Screencasts</h3> 
    2165         <p>If you need help with using Sermon Browser for the first time, these five minute screencast tutorials should be your first port of call:</p> 
     2164        <p>If you need help with using Sermon Browser for the first time, these five minute screencast tutorials should be your first port of call (the tutorials were created with an older version of SermonBrowser, and an older version of Wordpress, but things haven't changed a great deal):</p> 
    21662165        <ul> 
    21672166            <li><a href="http://www.4-14.org.uk/sermonbrowser-tutorial/tutorial-1.html" target="_blank">Installation and Overview</a></li> 
     
    21722171        </ul> 
    21732172        <h3>Template tags</h3> 
    2174         <p>If you want to change the way SermonBrowser displays on your website, you'll need to edit the templates and/or CSS file. Check out <a href="#templatetags">this guide to the template tags</a>.</p> 
     2173        <p>If you want to change the way SermonBrowser displays on your website, you'll need to edit the templates and/or CSS file. Check out this guide to <a href="http://www.4-14.org.uk/sermon-browser/template-tags" target="_blank">template tags</a>.</p> 
     2174        <h3>Shortcode</h3> 
     2175        <p>You can put individual sermons or lists of sermons on any page of your website. You do this by adding a <a href="http://www.4-14.org.uk/wordpress-plugins/sermon-browser/shortcodes" target="_blank">shortcode</a> into a Wordpress post or page.</p> 
    21752176        <h3>Frequently asked questions</h3> 
    2176         <ul> 
    2177             <li><a href="#nosermons">I've activated the plugin, and entered in a few sermons, but they are not showing up to my website users. Where are they?</a></li> 
    2178             <li><a href="#chmod">What does the error message "Error: The upload folder is not writeable. You need to CHMOD the folder to 666 or 777." mean?</a></li> 
    2179             <li><a href="#uploaderrors">SermonBrowser spends a long time attempting to upload files, but the file is never uploaded. What's happening?</a></li> 
    2180             <li><a href="#audioplayer">Why are my MP3 files are appearing as an icon, rather than as a player, as I've seen on other SermonBrowser sites?</a></li> 
    2181             <li><a href="#differentversions">How do I change the Bible version from the ESV?</a></li> 
    2182             <li><a href="#chipmunk">When using the 1pixelout audio player, my pastor sounds like a chipmunk! What's going on?</a> 
    2183             <li><a href="#sidebar">How do I get recent sermons to display in my sidebar?</a></li> 
    2184             <li><a href="#diskspace">My host only allows me a certain amount of disk space, and I have so many sermons uploaded, I've run out of space! What can I do?</a></li> 
    2185             <li><a href="#videos">How do I upload videos to SermonBrowser?</a></li> 
    2186             <li><a href="#poweredby">Can I turn off the "Powered by Sermonbrowser" link?</a></li> 
    2187             <li><a href="#publicprivate">What is the difference between the public and private podcast feeds?</a></li> 
    2188             <li><a href="#differentpodcasts">On the sermons page, what is the difference between subscribing to <b>full</b> podcast, and subscribing to a <b>custom</b> podcast?</a></li> 
    2189             <li><a href="#itunes">Why doesn't iTunes recognise the podcast links?</a></li> 
    2190             <li><a href="#sortorder">Can I change the default sort order of the sermons?</a></li> 
    2191             <li><a href="#pagenotfound">Why do I get a page not found error when I click on my podcast feed?</a></li> 
    2192             <li><a href="#changedisplay">Can I change the way sermons are displayed?</a></li> 
    2193             <li><a href="#changesearchform">The search form is too big/too small for my layout. How do I make it narrower/wider?</a></li> 
    2194             <li><a href="#bibletextmissing">Why is sometimes the Bible text missing?</a></li> 
    2195             <li><a href="#exceededquota">Why does my sermon page say I have exceeded my quota for ESV lookups?</a></li> 
    2196             <li><a href="#icons">How can I change the icons that Sermon Browser uses, or add new icons?</a></li> 
    2197         </ul> 
    2198         <hr style="width: 50%"> 
    2199         <h4 id="nosermons">I've activated the plugin, and entered in a few sermons, but they are not showing up to my website users. Where are they?</h4> 
    2200         <p>SermonBrowser only displays your sermons where you choose. You need to create the page/post where you want the sermons to appear (or edit an existing one), and add <b>[sermons]</b> to the page/post. You can also add some explantory text if you wish. If you do so, the text will appear on <i>all</i> your sermons pages. If you want your text to only appear on the list of sermons, not on individual sermon pages, you need to edit the SermonBrowser templates (see below).</p> 
    2201         <h4 id="chmod">What does the error message "Error: The upload folder is not writeable. You need to CHMOD the folder to 666 or 777." mean?</h4> 
    2202         <p>SermonBrowser tries to set the correct permissions on your folders for you, but sometimes restrictions mean that you have to do it yourself. You need to make sure that SermonBrowser is able to write to your sermons upload folder (usually /wp-content/uploads/sermons/). <a href="http://samdevol.com/wordpress-troubleshooting-permissions-chmod-and-paths-oh-my/" target="_blank">This tutorial</a> explains how to use the free FileZilla FTP software to do this.</p> 
    2203         <h4 id="uploaderrors">SermonBrowser spends a long time attempting to upload files, but the file is never uploaded. What's happening?</h4> 
    2204         <p>The most likely cause is that you're reaching either the maximum filesize that can be uploaded, or the maximum time a PHP script can run for. <a href="http://articles.techrepublic.com.com/5100-10878_11-5272345.html" target="_blank">Editing your php.ini</a> may help overcome these problems - but if you're on shared hosting, it's possible your host has set maximum limits you cannot change. If that's the case, you should upload your files via FTP. This is generally a better option than using your browser, particularly if you have several files to upload. If you do edit your php.ini file, these settings should be adequate:</p> 
    2205         <p style="font-family:monospace">file_uploads = On<br /> 
    2206         upload_max_filesize = 15M<br /> 
    2207         post_max_size = 15M<br /> 
    2208         max_execution_time = 600<br/> 
    2209         max_input_time = 600<br /> 
    2210         memory_limit = 16M<br /></p> 
    2211         <h4 id="audioplayer">Why are my MP3 files are appearing as an icon, rather than as a player, as I've seen on other SermonBrowser sites?</h4> 
    2212         <p>You need to install and activate the <a href="http://www.1pixelout.net/code/audio-player-wordpress-plugin/">1pixelout audio player</a> plugin. You can also customise the plugin so that its colours match your site.</p> 
    2213         <h4 id="differentversions">How do I change the Bible version from the ESV?</h4> 
    2214         <p>Nine Bible versions in two languages are supported by Sermon Browser: the English Standard Version, American Standard Version, King James Version (and the American King James Version), NET Bible, Young's Literal Transaltion, the World English Bible (including the Hebrew Names Version) and the Spanish Reina Valera. To change to one of these other versions, go to Options, and edit the single template. Replace [esvtext] with [asvtext], [kjvtext], [akjvtext], [nettext], [ylttext], [webtext], [hnvtext] or [lbrvtext]. Thanks go to <a href="http://www.crosswaybibles.org/" target="_blank">Crossway</a> for providing access to the ESV, <a href="http://www.bible.org/" target="_blank">bible.org</a> for the NET Bible and <a href="http://www.lstones.com/" target="_blank">Living Stones Ministries</a> for the other versions.</p> 
    2215         <p>If you're desperate to use other versions not currently supported, you can manage it using other Wordpress plugins (albeit with reduced functionality).  However, if you're desperate to use other versions, you can manage it using other Wordpress plugins (albeit with reduced functionality). The <a href="http://wordpress.org/extend/plugins/ebibleicious/">eBibleicious</a> plugin allows for NASB, MSG, KJV, NKJV, ESV, HCSB, and NCV (use it in 'snippet' mode). However, there are three disadvantages. (1) To use it, you'll need to register for an API key (although it is free). (2) It uses Javascript so search engines won't see the Bible text, and nor will users with javascript turned off. (3) Most importantly, it only shows a maximum of four verses (the ESV shows up to 500 verses!). 
    2216         <p>You can also use the <a href="http://www.logos.com/reftagger">RefTagger</a> plugin, though this shows even fewer verses. Even worse (for our purposes) the bible passage only shows when you hover over a special link with your mouse. It does, however, provide an even longer list of translations. Please be aware that both RefTagger and eBibleicious will add bible text to bible references across your whole website, not just your sermons pages.</p> 
    2217         <p>To use either of these alternatives, just download, install and activate them as you would for any other plugin. Check their settings (make sure you enter get an API key if you're using eBiblicious). You then need to make one change to your SermonBrowser options. In the <i>Single Sermon form</i>, look for <b>[esvtext]</b> and replace it with <b>[biblepassage]</b>. (By default it's right at the end of the code.)</p> 
    2218         <h4 id="chipmunk">When using the 1pixelout audio player, my pastor sounds like a chipmunk! What's going on?</h4> 
    2219         <p>This 'feature' is caused by a well-known bug in Adobe flash. In order for the files to play correctly, when they are saved, the sample rate needs to be set at a multiple of 11.025kHz (i.e. 11.025, 22.05 or 44.1).</p> 
    2220         <h4 id="sidebar">How do I get recent sermons to display in my sidebar?</h4> 
    2221         <p>If your WordPress theme supports widgets, just go to Design and choose <a href="widgets.php">Widgets</a>. There you easily can add the Sermons widget to your sidebar. If your theme doesn't support widgets, you'll need to edit your theme manually. Usually, you'll be editing a file called <b>sidebar.php</b>, but your theme may give it a different name. Add the following code:</p> 
    2222         <p style="font-family:monospace">&lt;?php if (function_exists('sb_display_sermons')) sb_display_sermons(array('display_preacher' => 0, 'display_passage' => 1, 'display_date' => 1, 'display_player' => 1, 'preacher' => 0, 'service' => 0, 'series' => 0, 'limit' => 5)) ?&rt;</code> 
    2223         <p>Each of the numbers in that line can be changed. <b>display_preacher</b>, <b>display_passage</b>, <b>display_date</b>, and <b>display_player</b> affect what is displayed (0 is off, 1 is on). <b>preacher</b>, <b>service</b> and <b>series</b> allow you to limit the output to a particular preacher, service or series. Simply change the number of the ID of the preacher/services/series you want to display. You can get the ID from the Preachers page, or the Series & Services page. 0 shows all preachers/services/series. <b>limit</b> is simply the maximum number of sermons you want displayed.</p> 
    2224         <h4 id="diskspace">My host only allows me a certain amount of disk space, and I have so many sermons uploaded, I've run out of space! What can I do?</h4> 
    2225         <p>You could, of course, change your host to someone a little more generous! I use <a href="http://www.vortechhosting.com/shared/windows.php">VortechHosting</a> for low traffic sites (5Gb of disk space for less than $10 a month), and <a href="https://www.liquidweb.com/cart/content/vps/">LiquidWeb VPS</a> for higher traffic sites (20Gb disk space for $60 a month). You should also make sure you encode your sermons at a medium to high compression. Usually, 22.05kHz, 48kbps mono is more than adequate (you could probably go down to 32kbps for even higher compression). 48kbps means every minute of recording takes up 360kb of disk space, so a thirty minute sermon will just over 10Mb. At this setting, 5Gb would be enough for over 450 sermons.</p> 
    2226         <p>If you can't change your host, you can still use SermonBrowser. You'll just have to upload your sermon files to another site - preferably a free one! We recommend <a href="http://www.odeo.com/" target="blank">Odeo</a>. If you want to use Odeo's audio player on your website, copy the embed code they give you, and when you add your sermon to SermonBrowser, select "Enter embed code:" and paste it in. If you want to use the standard 1pixelout audio player, copy the "Download MP3" link Odeo give you, and when you add your sermon to SermonBrowser, select "Enter an URL" and paste it in.</p> 
    2227         <h4 id="videos">How do I upload videos to SermonBrowser?</h4> 
    2228         <p>You can't - but you can upload videos to other sites, then embed them in your sermons. You can use any site that allows you to embed your video in other websites, including <a href="http://www.youtube.com/">YouTube</a>, but we recommend <a href="http://video.google.com/videouploadform">GoogleVideo</a> as the most suitable for sermons. That's because most video-sharing sites are designed for relatively short clips of 10 minutes or so, but GoogleVideo will accept videos of any length - and there are no quotas for the maximum size of a video, nor the number of videos you can store. Once your video is uploaded and available on Google Video, you can copy the embed code it gives you, edit your sermon, select "Enter embed code" and paste it in.</p> 
    2229         <h4 id="poweredby">Can I turn off the "Powered by Sermonbrowser" link?</h4> 
    2230         <p>The link is there so that people from other churches who listen to your sermons can find out about SermonBrowser themselves. But if you'd like to remove the link, just remove <b>[creditlink]</b> from the templates in SermonBrowser Options</a>.</p> 
    2231         <h4 id="publicprivate">What is the difference between the public and private podcast feeds?</h4> 
    2232         <p>In SermonBrowser options, you are able to change the address of the public podcast feed. This is the feed that is shown on your sermons page, and is usually the same as your private feed. However, if you use a service such as <a href="http://www.feedburner.com/" target="_blank">FeedBurner</a>, you can use your public feed to send data to feedburner, and change your private feed to your Feedburner address. If you do not use a service like Feedburner, just make sure your public and private feeds are the same.</p>  
    2233         <h4 id="differentpodcasts">On the sermons page, what is the difference between subscribing to our podcast, and subscribing to a podcast for this search?</h4> 
    2234         <p>The link called <strong>subscribe to full podcast</strong> gives a podcast of <em>all</em> sermons that you add to your site through SermonBrowser. But it may be that some people may just want to subscribe to a feed for certain speakers, or for a certain service. If they wish to do this, they should set the search filters and perform their search, then click on the <strong>Subscribe to custom podcast </strong>link. This will give them a podcast according to the filter they selected. You could also copy this link, and display it elsewhere on the site - for example to provide separate feeds for morning and evening services.</p> 
    2235         <h4 id="iTunes">Why doesn't iTunes recognise the podcast links?</h4> 
    2236         <p>iTunes requires its own special links that are slightly different from other podcasting software. If you would like to display these links, you need to edit your template and add the tags [itunes_podcast] and [itunes_podcast_for_search].</p> 
    2237         <h4 id="sortorder">Can I change the default sort order of the sermons?</h4> 
    2238         <p>Unfortunately not. Unless the viewer specified otherwise, Sermonbrowser always displays the most recent sermons at the top.</p> 
    2239         <h4 id="pagenotfound">Why do I get a page not found error when I click on my podcast feed?</h4> 
    2240         <p>You've probably changed the address of your public feed. Try changing it back to the same value as your private feed in Sermon Options.</p> 
    2241         <h4 id="changedisplay">Can I change the way sermons are displayed?</h4> 
    2242         <p>Yes, definately, although you need to know a little HTML and/or CSS. SermonBrowser has a powerful templating function, so you can exclude certain parts of the output (e.g. if you don't want the links to other sermons preached on the same day to be displayed). To edit the templates, go to SermonBrowser Options. Below is a reference for all the <a href="templatetags">template tags</a> you need. If you just want to change the way the output looks, without changing what is displayed, you need to edit the CSS stylesheet, also in SermonBrowser Options. (See one example, below).</p> 
    2243         <h4 id="changesearchform">The search form is too big/too small for my layout. How do I make it narrower/wider?</h4> 
    2244         <p>The search form is set to roughly 500 pixels, which should be about right for most WordPress templates. To change it, look for a line in the CSS stylesheet that begins <b>table.sermonbrowser td.field input</b>, and change the width specified after it. To make the form narrower, reduce the width. To make it bigger, increase the width. You'll also need to change the width of the date fields on the line below, which should be 20 pixels smaller.</p> 
    2245         <h4 id="bibletextmissing">Why is sometimes the Bible text missing?</h4> 
    2246         <p>This usually happens for one of three reasons: (1) If the website providing the service is down. If you can't see Genesis 1 in the <a href="http://www.esvapi.org/v2/rest/passageQuery?key=IP&amp;passage=Gen+1&amp;include-headings=false">ESV</a> or <a href="http://api.seek-first.com/v1/BibleSearch.php?type=lookup&appid=seekfirst&startbooknum=1&startchapter=1&startverse=1&endbooknum=1&endchapter=1&endverse=30&version=KJV">the other versions</a>then the problem is with those websites. They're rarely down for long. (2) If you specify an invalid bible passage (e.g. Romans 22). If this is the case your sermon page will display <em>ERROR: No results were found for your search.</em> (3) If your webhost has disabled <strong>allow_url_fopen</strong> and cURL. Some cheaper webhosts have these essential features switched off. If they have, you won't be able to use this facility.</p> 
    2247         <h4 id="exceededquota">Why does my sermon page say I have exceeded my quota for ESV lookups?</h4> 
    2248         <p>The ESV website only allows 5,000 lookups per day from each IP address. That should be enough for most users of SermonBrowser. However, if you are using a shared host, there will be hundreds (perhaps thousands) of other websites on the same IP address as you. If any are also using the ESV API, they also get counted towards that total. If you are using less than 5,000 lookups per day (i.e. you are having less than 5,000 pageviews of your sermon pages), and you receive the error message you'll need to do two things in order to continue to display the text. (1) Sign up for an <a href="http://www.esvapi.org/signup">ESV API key</a>. (2) Edit frontend.php (one of the SermonBrowser files). Look for line 66, and replace <i>&hellip;passageQuery?key=<b>IP</b>&passage=&hellip;</i> with <i>&hellip;passageQuery?key=<b>YOURAPIKEY</b>&passage=&hellip;</i>.</p> 
    2249         <p>If you <i>are</i> having more than 5,000 page views per day, then this won't help. Instead, leave a message in the <a href="http://www.4-14.org.uk/sermon-browser#comments">SermonBrowser comments</a> explaining your problem. SermonBrowser could probably be modified to provide a caching mechanism to reduce the likelihood of this error occurring, if there is demand.</p> 
    2250         <h4 id="icons">How can I change the file icons that Sermon Browser uses, or add new icons?</h4> 
    2251         <p>You'll need to edit the <b>filetypes.php</b> file that comes with Sermon Browser. The icon is chosen on the basis of the file extension (or in the case of URLs the file extension then the site address). If you do create new icons for other filetypes, consider sending them to the author so they can be included in future versions of the plugin.</p> 
    2252         <h3 id="templatetags">Template tags</h3> 
    2253         <p>If you want to change the output of Sermon Browser, you'll need to edit the templates. You'll need to understand the basics of HTML and CSS, and to know the special SermonBrowser template tags. There are two templates, one (called "results page") is used to produce the search results on the main sermons page. The other template (called sermon page) is used to produce the page for single sermon. Most tags can be used in both templates, but some are specific.</p> 
    2254         <h4>Results page only</h4> 
    2255         <ul> 
    2256             <li><b>[filters_form]</b> - The search form which allows filtering by preacher, series, date, etc. <i>multi-sermons page only</i></li> 
    2257             <li><b>[tag_cloud]</b> - A tag cloud of all sermon browser tags</i></li> 
    2258             <li><b>[sermons_count]</b> - The number of sermons which match the current search critera. </li> 
    2259             <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> 
    2260             <li><b>[first_passage]</b> - The main bible passage for this sermon</li> 
    2261             <li><b>[previous_page]</b> - Displays the link to the previous page of search results (if needed)</li> 
    2262             <li><b>[next_page]</b> - Displays the link to the next page of search results (if needed)</li> 
    2263             <li><b>[podcast]</b> - Link to the podcast of all sermons</li> 
    2264             <li><b>[podcast_for_search]</b> - Link to the podcast of sermons that match the current search</li> 
    2265             <li><b>[itunes_podcast]</b> - iTunes (itpc://) link to the podcast of all sermons</li> 
    2266             <li><b>[itunes_podcast_for_search]</b> - iTunes (itpc://) link to the podcast of sermons that match the current search</li> 
    2267             <li><b>[podcasticon]</b> - Displays the icon used for the main podcast</li> 
    2268             <li><b>[podcasticon_for_search]</b> - Displays the icon used for the custom podcast</li> 
    2269         </ul> 
    2270         <h4>Both results page and sermon page</h4> 
    2271         <ul> 
    2272             <li><b>[sermon_title]</b> - The title of the sermon</li> 
    2273             <li><b>[preacher_link]</b> - The name of the preacher (hyperlinked to his search results)</li> 
    2274             <li><b>[series_link]</b> - The name of the series (hyperlinked to search results)</li> 
    2275             <li><b>[service_link]</b> - The name of the service (hyperlinked to search results)</li> 
    2276             <li><b>[date]</b> - The date of the sermon</li> 
    2277             <li><b>[files_loop][/files_loop]</b> - These two tags should be placed around the [file] tag if you want to display all the files linked with to sermon. They are not needed if you only want to display the first file.</li> 
    2278             <li><b>[file]</b> - Displays the files and external URLs</li> 
    2279             <li><b>[file_with_download]</b> - As above, but also adds a download link if the AudioPlayer is displayed</li> 
    2280             <li><b>[embed_loop][/embed_loop]</b> - These two tags should be placed around the [embed] tag if you want to display all the embedded objects linked to this sermon. They are not needed if you only want to display the first embedded object.</li> 
    2281             <li><b>[embed]</b> - Displays an embedded object (e.g. video)</li> 
    2282             <li><b>[editlink]</b> - displays an "Edit Sermon" link if currently logged-in user has edit rights.</li> 
    2283             <li><b>[creditlink]</b> - displays a "Powered by Sermon Browser" link.</li> 
    2284         </ul> 
    2285         <h4>Sermon page only</h4> 
    2286         <ul> 
    2287             <li><b>[preacher_description]</b> - The description of the preacher.</li> 
    2288             <li><b>[preacher_image]</b> - The photo of the preacher.</li> 
    2289             <li><b>[sermon_description]</b> - The description of the sermon</li> 
    2290             <li><b>[passages_loop][/passages_loop]</b> - These two tags should be placed around the [passage] tag if you want to display all the passages linked with to sermon.</li> 
    2291             <li><b>[passage]</b> - Displays the reference of the bible passage with the book name hyperlinked to search results.</li> 
    2292             <li><b>[next_sermon]</b> - Displays a link to the next sermon preached (excluding ones preached on the same day)</li> 
    2293             <li><b>[prev_sermon]</b> - Displays a link to the previous sermon preached</li> 
    2294             <li><b>[sameday_sermon]</b> - Displays a link to other sermons preached on that day</li> 
    2295             <li><b>[tags]</b> - Displays the tags for that sermons</li> 
    2296             <li><b>[esvtext]</b> - Displays the full text of the <a href="http://www.gnpcb.org/esv/">ESV Bible</a> for all passages linked to that sermon.</li> 
    2297             <li><b>[asvtext]</b> - Displays the full text of the <a href="http://en.wikipedia.org/wiki/American_Standard_Version">ASV Bible</a> for all passages linked to that sermon.</li> 
    2298             <li><b>[kjvtext]</b> - Displays the full text of the <a href="http://en.wikipedia.org/wiki/Authorized_King_James_Version">KJV</a> Bible for all passages linked to that sermon.</li> 
    2299             <li><b>[nettext]</b> - Displays the full text of the <a href="http://net.bible.org/bible.php">NET Bible</a> Bible for all passages linked to that sermon.</li> 
    2300             <li><b>[ylttext]</b> - Displays the full text of the <a href="http://en.wikipedia.org/wiki/Young%27s_Literal_Translation">YLT</a> Bible for all passages linked to that sermon.</li> 
    2301             <li><b>[webtext]</b> - Displays the full text of the <a href="http://ebible.org/bible/web/">WEB</a> Bible for all passages linked to that sermon.</li> 
    2302             <li><b>[akjvtext]</b> - Displays the full text of the <a href="http://www.angelfire.com/al4/allenkc/akjv/">AKJV</a> Bible for all passages linked to that sermon.</li> 
    2303             <li><b>[hnvtext]</b> - Displays the full text of the <a href="http://ebible.org/bible/hnv/">HNV</a> Bible for all passages linked to that sermon.</li> 
    2304             <li><b>[lbrvtext]</b> - Displays the full text of the <a href="http://en.wikipedia.org/wiki/Reina-Valera">Reina Valera</a> Bible (Spanish) for all passages linked to that sermon.</li> 
    2305             <li><b>[biblepassage]</b> - Displays the reference of the bible passages for that sermon. Useful for utilising other bible plugins (see <a href="#otherversions">FAQ</a>).</li> 
     2177        <p>A <a href="http://www.4-14.org.uk/wordpress-plugins/sermon-browser/faq" target="_blank">comprehensive FAQ</a> is available on the plugin's home page.</p> 
     2178        <h3>Further help</h3> 
     2179        <p>If you have a problem that the FAQ doesn't answer, or you have a feature suggestion, please use the <a href="http://www.4-14.org.uk/forum/sermon-browser-support" target="_blank">Sermon Browser forum</a>.</p> 
     2180 
    23062181    </div> 
    23072182    </form> 
Note: See TracChangeset for help on using the changeset viewer.