WordPress.org

Make WordPress Core

Ticket #7086: general-template.diff.php

File general-template.diff.php, 39.7 KB (added by ThemeShaper, 7 years ago)
Line 
1<?php
2
3/* Note: these tags go anywhere in the template */
4
5function get_header() {
6        do_action( 'get_header' );
7        if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/header.php') )
8                load_template( STYLESHEETPATH . '/header.php');
9        elseif ( file_exists( TEMPLATEPATH . '/header.php') )
10                load_template( TEMPLATEPATH . '/header.php');
11        else
12                load_template( WP_CONTENT_DIR . '/themes/default/header.php');
13}
14
15
16function get_footer() {
17        do_action( 'get_footer' );
18        if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/footer.php') )
19                load_template( STYLESHEETPATH . '/footer.php');
20        elseif ( file_exists( TEMPLATEPATH . '/footer.php') )
21                load_template( TEMPLATEPATH . '/footer.php');
22        else
23                load_template( WP_CONTENT_DIR . '/themes/default/footer.php');
24}
25
26
27function get_sidebar( $name = null ) {
28        do_action( 'get_sidebar' );
29        if ( TEMPLATEPATH !== STYLESHEETPATH && ( isset($name) && file_exists( STYLESHEETPATH . "/sidebar-{$name}.php") ) )
30                load_template( STYLESHEETPATH . "/sidebar-{$name}.php");
31        elseif ( isset($name) && file_exists( TEMPLATEPATH . "/sidebar-{$name}.php") )
32                load_template( TEMPLATEPATH . "/sidebar-{$name}.php");
33
34        elseif ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/sidebar.php') )
35                load_template( STYLESHEETPATH . '/sidebar.php');
36        elseif ( file_exists( TEMPLATEPATH . '/sidebar.php') )
37                load_template( TEMPLATEPATH . '/sidebar.php');
38        else
39                load_template( WP_CONTENT_DIR . '/themes/default/sidebar.php');
40}
41
42
43function wp_loginout() {
44        if ( ! is_user_logged_in() )
45                $link = '<a href="' . get_option('siteurl') . '/wp-login.php">' . __('Log in') . '</a>';
46        else
47                $link = '<a href="' . get_option('siteurl') . '/wp-login.php?action=logout">' . __('Log out') . '</a>';
48
49        echo apply_filters('loginout', $link);
50}
51
52
53function wp_register( $before = '<li>', $after = '</li>' ) {
54
55        if ( ! is_user_logged_in() ) {
56                if ( get_option('users_can_register') )
57                        $link = $before . '<a href="' . get_option('siteurl') . '/wp-login.php?action=register">' . __('Register') . '</a>' . $after;
58                else
59                        $link = '';
60        } else {
61                $link = $before . '<a href="' . get_option('siteurl') . '/wp-admin/">' . __('Site Admin') . '</a>' . $after;
62        }
63
64        echo apply_filters('register', $link);
65}
66
67
68function wp_meta() {
69        do_action('wp_meta');
70}
71
72
73function bloginfo($show='') {
74        echo get_bloginfo($show, 'display');
75}
76
77/**
78 * Note: some of these values are DEPRECATED. Meaning they could be
79 * taken out at any time and shouldn't be relied upon. Options
80 * without "// DEPRECATED" are the preferred and recommended ways
81 * to get the information.
82 */
83function get_bloginfo($show = '', $filter = 'raw') {
84
85        switch($show) {
86                case 'url' :
87                case 'home' : // DEPRECATED
88                case 'siteurl' : // DEPRECATED
89                        $output = get_option('home');
90                        break;
91                case 'wpurl' :
92                        $output = get_option('siteurl');
93                        break;
94                case 'description':
95                        $output = get_option('blogdescription');
96                        break;
97                case 'rdf_url':
98                        $output = get_feed_link('rdf');
99                        break;
100                case 'rss_url':
101                        $output = get_feed_link('rss');
102                        break;
103                case 'rss2_url':
104                        $output = get_feed_link('rss2');
105                        break;
106                case 'atom_url':
107                        $output = get_feed_link('atom');
108                        break;
109                case 'comments_atom_url':
110                        $output = get_feed_link('comments_atom');
111                        break;
112                case 'comments_rss2_url':
113                        $output = get_feed_link('comments_rss2');
114                        break;
115                case 'pingback_url':
116                        $output = get_option('siteurl') .'/xmlrpc.php';
117                        break;
118                case 'stylesheet_url':
119                        $output = get_stylesheet_uri();
120                        break;
121                case 'stylesheet_directory':
122                        $output = get_stylesheet_directory_uri();
123                        break;
124                case 'template_directory':
125                case 'template_url':
126                        $output = get_template_directory_uri();
127                        break;
128                case 'admin_email':
129                        $output = get_option('admin_email');
130                        break;
131                case 'charset':
132                        $output = get_option('blog_charset');
133                        if ('' == $output) $output = 'UTF-8';
134                        break;
135                case 'html_type' :
136                        $output = get_option('html_type');
137                        break;
138                case 'version':
139                        global $wp_version;
140                        $output = $wp_version;
141                        break;
142                case 'language':
143                        $output = get_locale();
144                        $output = str_replace('_', '-', $output);
145                        break;
146                case 'text_direction':
147                        global $wp_locale;
148                        $output = $wp_locale->text_direction;
149                        break;
150                case 'name':
151                default:
152                        $output = get_option('blogname');
153                        break;
154        }
155
156        $url = true;
157        if (strpos($show, 'url') === false &&
158                strpos($show, 'directory') === false &&
159                strpos($show, 'home') === false)
160                $url = false;
161
162        if ( 'display' == $filter ) {
163                if ( $url )
164                        $output = apply_filters('bloginfo_url', $output, $show);
165                else
166                        $output = apply_filters('bloginfo', $output, $show);
167        }
168
169        return $output;
170}
171
172
173function wp_title($sep = '&raquo;', $display = true, $seplocation = '') {
174        global $wpdb, $wp_locale, $wp_query;
175
176        $cat = get_query_var('cat');
177        $tag = get_query_var('tag_id');
178        $category_name = get_query_var('category_name');
179        $author = get_query_var('author');
180        $author_name = get_query_var('author_name');
181        $m = get_query_var('m');
182        $year = get_query_var('year');
183        $monthnum = get_query_var('monthnum');
184        $day = get_query_var('day');
185        $title = '';
186
187        // If there's a category
188        if ( !empty($cat) ) {
189                        // category exclusion
190                        if ( !stristr($cat,'-') )
191                                $title = apply_filters('single_cat_title', get_the_category_by_ID($cat));
192        } elseif ( !empty($category_name) ) {
193                if ( stristr($category_name,'/') ) {
194                                $category_name = explode('/',$category_name);
195                                if ( $category_name[count($category_name)-1] )
196                                        $category_name = $category_name[count($category_name)-1]; // no trailing slash
197                                else
198                                        $category_name = $category_name[count($category_name)-2]; // there was a trailling slash
199                }
200                $cat = get_term_by('slug', $category_name, 'category', OBJECT, 'display');
201                if ( $cat )
202                        $title = apply_filters('single_cat_title', $cat->name);
203        }
204
205        if ( !empty($tag) ) {
206                $tag = get_term($tag, 'post_tag', OBJECT, 'display');
207                if ( is_wp_error( $tag ) )
208                        return $tag;
209                if ( ! empty($tag->name) )
210                        $title = apply_filters('single_tag_title', $tag->name);
211        }
212
213        // If there's an author
214        if ( !empty($author) ) {
215                $title = get_userdata($author);
216                $title = $title->display_name;
217        }
218        if ( !empty($author_name) ) {
219                // We do a direct query here because we don't cache by nicename.
220                $title = $wpdb->get_var($wpdb->prepare("SELECT display_name FROM $wpdb->users WHERE user_nicename = %s", $author_name));
221        }
222
223        // If there's a month
224        if ( !empty($m) ) {
225                $my_year = substr($m, 0, 4);
226                $my_month = $wp_locale->get_month(substr($m, 4, 2));
227                $my_day = intval(substr($m, 6, 2));
228                $title = "$my_year" . ($my_month ? "$sep $my_month" : "") . ($my_day ? "$sep $my_day" : "");
229        }
230
231        if ( !empty($year) ) {
232                $title = $year;
233                if ( !empty($monthnum) )
234                        $title .= " $sep " . $wp_locale->get_month($monthnum);
235                if ( !empty($day) )
236                        $title .= " $sep " . zeroise($day, 2);
237        }
238
239        // If there is a post
240        if ( is_single() || is_page() ) {
241                $post = $wp_query->get_queried_object();
242                $title = strip_tags( apply_filters( 'single_post_title', $post->post_title ) );
243        }
244
245        // If there's a taxonomy
246        if ( is_tax() ) {
247                $taxonomy = get_query_var( 'taxonomy' );
248                $tax = get_taxonomy( $taxonomy );
249                $tax = $tax->label;
250                $term = $wp_query->get_queried_object();
251                $term = $term->name;
252                if ( 'right' == $seplocation )
253                        $title = "$term $sep $tax";
254                else
255                        $title = "$tax $sep $term";
256        }
257
258        $prefix = '';
259        if ( !empty($title) )
260                $prefix = " $sep ";
261
262        // Determines position of the separator
263        if ( 'right' == $seplocation )
264                $title = $title . $prefix;
265        else
266                $title = $prefix . $title;
267
268        $title = apply_filters('wp_title', $title, $sep);
269
270        // Send it out
271        if ( $display )
272                echo $title;
273        else
274                return $title;
275
276}
277
278
279function single_post_title($prefix = '', $display = true) {
280        global $wpdb;
281        $p = get_query_var('p');
282        $name = get_query_var('name');
283
284        if ( intval($p) || '' != $name ) {
285                if ( !$p )
286                        $p = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_name = %s", $name));
287                $post = & get_post($p);
288                $title = $post->post_title;
289                $title = apply_filters('single_post_title', $title);
290                if ( $display )
291                        echo $prefix.strip_tags($title);
292                else
293                        return strip_tags($title);
294        }
295}
296
297
298function single_cat_title($prefix = '', $display = true ) {
299        $cat = intval( get_query_var('cat') );
300        if ( !empty($cat) && !(strtoupper($cat) == 'ALL') ) {
301                $my_cat_name = apply_filters('single_cat_title', get_the_category_by_ID($cat));
302                if ( !empty($my_cat_name) ) {
303                        if ( $display )
304                                echo $prefix.strip_tags($my_cat_name);
305                        else
306                                return strip_tags($my_cat_name);
307                }
308        } else if ( is_tag() ) {
309                return single_tag_title($prefix, $display);
310        }
311}
312
313
314function single_tag_title($prefix = '', $display = true ) {
315        if ( !is_tag() )
316                return;
317
318        $tag_id = intval( get_query_var('tag_id') );
319
320        if ( !empty($tag_id) ) {
321                $my_tag = &get_term($tag_id, 'post_tag', OBJECT, 'display');
322                if ( is_wp_error( $my_tag ) )
323                        return false;
324                $my_tag_name = apply_filters('single_tag_title', $my_tag->name);
325                if ( !empty($my_tag_name) ) {
326                        if ( $display )
327                                echo $prefix . $my_tag_name;
328                        else
329                                return $my_tag_name;
330                }
331        }
332}
333
334
335function single_month_title($prefix = '', $display = true ) {
336        global $wp_locale;
337
338        $m = get_query_var('m');
339        $year = get_query_var('year');
340        $monthnum = get_query_var('monthnum');
341
342        if ( !empty($monthnum) && !empty($year) ) {
343                $my_year = $year;
344                $my_month = $wp_locale->get_month($monthnum);
345        } elseif ( !empty($m) ) {
346                $my_year = substr($m, 0, 4);
347                $my_month = $wp_locale->get_month(substr($m, 4, 2));
348        }
349
350        if ( empty($my_month) )
351                return false;
352
353        $result = $prefix . $my_month . $prefix . $my_year;
354
355        if ( !$display )
356                return $result;
357        echo $result;
358}
359
360
361/* link navigation hack by Orien http://icecode.com/ */
362function get_archives_link($url, $text, $format = 'html', $before = '', $after = '') {
363        $text = wptexturize($text);
364        $title_text = attribute_escape($text);
365        $url = clean_url($url);
366
367        if ('link' == $format)
368                $link_html = "\t<link rel='archives' title='$title_text' href='$url' />\n";
369        elseif ('option' == $format)
370                $link_html = "\t<option value='$url'>$before $text $after</option>\n";
371        elseif ('html' == $format)
372                $link_html = "\t<li>$before<a href='$url' title='$title_text'>$text</a>$after</li>\n";
373        else // custom
374                $link_html = "\t$before<a href='$url' title='$title_text'>$text</a>$after\n";
375
376        $link_html = apply_filters( "get_archives_link", $link_html );
377               
378        return $link_html;
379}
380
381
382function wp_get_archives($args = '') {
383        global $wpdb, $wp_locale;
384
385        $defaults = array(
386                'type' => 'monthly', 'limit' => '',
387                'format' => 'html', 'before' => '',
388                'after' => '', 'show_post_count' => false
389        );
390
391        $r = wp_parse_args( $args, $defaults );
392        extract( $r, EXTR_SKIP );
393
394        if ( '' == $type )
395                $type = 'monthly';
396
397        if ( '' != $limit ) {
398                $limit = absint($limit);
399                $limit = ' LIMIT '.$limit;
400        }
401
402        // this is what will separate dates on weekly archive links
403        $archive_week_separator = '&#8211;';
404
405        // over-ride general date format ? 0 = no: use the date format set in Options, 1 = yes: over-ride
406        $archive_date_format_over_ride = 0;
407
408        // options for daily archive (only if you over-ride the general date format)
409        $archive_day_date_format = 'Y/m/d';
410
411        // options for weekly archive (only if you over-ride the general date format)
412        $archive_week_start_date_format = 'Y/m/d';
413        $archive_week_end_date_format   = 'Y/m/d';
414
415        if ( !$archive_date_format_over_ride ) {
416                $archive_day_date_format = get_option('date_format');
417                $archive_week_start_date_format = get_option('date_format');
418                $archive_week_end_date_format = get_option('date_format');
419        }
420
421        //filters
422        $where = apply_filters('getarchives_where', "WHERE post_type = 'post' AND post_status = 'publish'", $r );
423        $join = apply_filters('getarchives_join', "", $r);
424
425        if ( 'monthly' == $type ) {
426                $query = "SELECT DISTINCT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC $limit";
427                $key = md5($query);
428                $cache = wp_cache_get( 'wp_get_archives' , 'general');
429                if ( !isset( $cache[ $key ] ) ) {
430                        $arcresults = $wpdb->get_results($query);
431                        $cache[ $key ] = $arcresults;
432                        wp_cache_add( 'wp_get_archives', $cache, 'general' );
433                } else {
434                        $arcresults = $cache[ $key ];
435                }
436                if ( $arcresults ) {
437                        $afterafter = $after;
438                        foreach ( $arcresults as $arcresult ) {
439                                $url    = get_month_link($arcresult->year,      $arcresult->month);
440                                $text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);
441                                if ( $show_post_count )
442                                        $after = '&nbsp;('.$arcresult->posts.')' . $afterafter;
443                                echo get_archives_link($url, $text, $format, $before, $after);
444                        }
445                }
446        } elseif ('yearly' == $type) {
447                $query = "SELECT DISTINCT YEAR(post_date) AS `year`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date) ORDER BY post_date DESC $limit";
448                $key = md5($query);
449                $cache = wp_cache_get( 'wp_get_archives' , 'general');
450                if ( !isset( $cache[ $key ] ) ) {
451                        $arcresults = $wpdb->get_results($query);
452                        $cache[ $key ] = $arcresults;
453                        wp_cache_add( 'wp_get_archives', $cache, 'general' );
454                } else {
455                        $arcresults = $cache[ $key ];
456                }
457                if ($arcresults) {
458                        $afterafter = $after;
459                        foreach ($arcresults as $arcresult) {
460                                $url = get_year_link($arcresult->year);
461                                $text = sprintf('%d', $arcresult->year);
462                                if ($show_post_count)
463                                        $after = '&nbsp;('.$arcresult->posts.')' . $afterafter;
464                                echo get_archives_link($url, $text, $format, $before, $after);
465                        }
466                }
467        } elseif ( 'daily' == $type ) {
468                $query = "SELECT DISTINCT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, DAYOFMONTH(post_date) AS `dayofmonth`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date), DAYOFMONTH(post_date) ORDER BY post_date DESC $limit";
469                $key = md5($query);
470                $cache = wp_cache_get( 'wp_get_archives' , 'general');
471                if ( !isset( $cache[ $key ] ) ) {
472                        $arcresults = $wpdb->get_results($query);
473                        $cache[ $key ] = $arcresults;
474                        wp_cache_add( 'wp_get_archives', $cache, 'general' );
475                } else {
476                        $arcresults = $cache[ $key ];
477                }
478                if ( $arcresults ) {
479                        $afterafter = $after;
480                        foreach ( $arcresults as $arcresult ) {
481                                $url    = get_day_link($arcresult->year, $arcresult->month, $arcresult->dayofmonth);
482                                $date = sprintf('%1$d-%2$02d-%3$02d 00:00:00', $arcresult->year, $arcresult->month, $arcresult->dayofmonth);
483                                $text = mysql2date($archive_day_date_format, $date);
484                                if ($show_post_count)
485                                        $after = '&nbsp;('.$arcresult->posts.')'.$afterafter;
486                                echo get_archives_link($url, $text, $format, $before, $after);
487                        }
488                }
489        } elseif ( 'weekly' == $type ) {
490                $start_of_week = get_option('start_of_week');
491                $query = "SELECT DISTINCT WEEK(post_date, $start_of_week) AS `week`, YEAR(post_date) AS yr, DATE_FORMAT(post_date, '%Y-%m-%d') AS yyyymmdd, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY WEEK(post_date, $start_of_week), YEAR(post_date) ORDER BY post_date DESC $limit";
492                $key = md5($query);
493                $cache = wp_cache_get( 'wp_get_archives' , 'general');
494                if ( !isset( $cache[ $key ] ) ) {
495                        $arcresults = $wpdb->get_results($query);
496                        $cache[ $key ] = $arcresults;
497                        wp_cache_add( 'wp_get_archives', $cache, 'general' );
498                } else {
499                        $arcresults = $cache[ $key ];
500                }
501                $arc_w_last = '';
502                $afterafter = $after;
503                if ( $arcresults ) {
504                                foreach ( $arcresults as $arcresult ) {
505                                        if ( $arcresult->week != $arc_w_last ) {
506                                                $arc_year = $arcresult->yr;
507                                                $arc_w_last = $arcresult->week;
508                                                $arc_week = get_weekstartend($arcresult->yyyymmdd, get_option('start_of_week'));
509                                                $arc_week_start = date_i18n($archive_week_start_date_format, $arc_week['start']);
510                                                $arc_week_end = date_i18n($archive_week_end_date_format, $arc_week['end']);
511                                                $url  = sprintf('%1$s/%2$s%3$sm%4$s%5$s%6$sw%7$s%8$d', get_option('home'), '', '?', '=', $arc_year, '&amp;', '=', $arcresult->week);
512                                                $text = $arc_week_start . $archive_week_separator . $arc_week_end;
513                                                if ($show_post_count)
514                                                        $after = '&nbsp;('.$arcresult->posts.')'.$afterafter;
515                                                echo get_archives_link($url, $text, $format, $before, $after);
516                                        }
517                                }
518                }
519        } elseif ( ( 'postbypost' == $type ) || ('alpha' == $type) ) {
520                ('alpha' == $type) ? $orderby = "post_title ASC " : $orderby = "post_date DESC ";
521                $query = "SELECT * FROM $wpdb->posts $join $where ORDER BY $orderby $limit";
522                $key = md5($query);
523                $cache = wp_cache_get( 'wp_get_archives' , 'general');
524                if ( !isset( $cache[ $key ] ) ) {
525                        $arcresults = $wpdb->get_results($query);
526                        $cache[ $key ] = $arcresults;
527                        wp_cache_add( 'wp_get_archives', $cache, 'general' );
528                } else {
529                        $arcresults = $cache[ $key ];
530                }
531                if ( $arcresults ) {
532                        foreach ( $arcresults as $arcresult ) {
533                                if ( $arcresult->post_date != '0000-00-00 00:00:00' ) {
534                                        $url  = get_permalink($arcresult);
535                                        $arc_title = $arcresult->post_title;
536                                        if ( $arc_title )
537                                                $text = strip_tags(apply_filters('the_title', $arc_title));
538                                        else
539                                                $text = $arcresult->ID;
540                                        echo get_archives_link($url, $text, $format, $before, $after);
541                                }
542                        }
543                }
544        }
545}
546
547
548// Used in get_calendar
549function calendar_week_mod($num) {
550        $base = 7;
551        return ($num - $base*floor($num/$base));
552}
553
554
555function get_calendar($initial = true) {
556        global $wpdb, $m, $monthnum, $year, $wp_locale, $posts;
557
558        $key = md5( $m . $monthnum . $year );
559        if ( $cache = wp_cache_get( 'get_calendar', 'calendar' ) ) {
560                if ( isset( $cache[ $key ] ) ) {
561                        echo $cache[ $key ];
562                        return;
563                }
564        }
565
566        ob_start();
567        // Quick check. If we have no posts at all, abort!
568        if ( !$posts ) {
569                $gotsome = $wpdb->get_var("SELECT ID from $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC LIMIT 1");
570                if ( !$gotsome )
571                        return;
572        }
573
574        if ( isset($_GET['w']) )
575                $w = ''.intval($_GET['w']);
576
577        // week_begins = 0 stands for Sunday
578        $week_begins = intval(get_option('start_of_week'));
579
580        // Let's figure out when we are
581        if ( !empty($monthnum) && !empty($year) ) {
582                $thismonth = ''.zeroise(intval($monthnum), 2);
583                $thisyear = ''.intval($year);
584        } elseif ( !empty($w) ) {
585                // We need to get the month from MySQL
586                $thisyear = ''.intval(substr($m, 0, 4));
587                $d = (($w - 1) * 7) + 6; //it seems MySQL's weeks disagree with PHP's
588                $thismonth = $wpdb->get_var("SELECT DATE_FORMAT((DATE_ADD('${thisyear}0101', INTERVAL $d DAY) ), '%m')");
589        } elseif ( !empty($m) ) {
590                $thisyear = ''.intval(substr($m, 0, 4));
591                if ( strlen($m) < 6 )
592                                $thismonth = '01';
593                else
594                                $thismonth = ''.zeroise(intval(substr($m, 4, 2)), 2);
595        } else {
596                $thisyear = gmdate('Y', current_time('timestamp'));
597                $thismonth = gmdate('m', current_time('timestamp'));
598        }
599
600        $unixmonth = mktime(0, 0 , 0, $thismonth, 1, $thisyear);
601
602        // Get the next and previous month and year with at least one post
603        $previous = $wpdb->get_row("SELECT DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year
604                FROM $wpdb->posts
605                WHERE post_date < '$thisyear-$thismonth-01'
606                AND post_type = 'post' AND post_status = 'publish'
607                        ORDER BY post_date DESC
608                        LIMIT 1");
609        $next = $wpdb->get_row("SELECT  DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year
610                FROM $wpdb->posts
611                WHERE post_date >       '$thisyear-$thismonth-01'
612                AND MONTH( post_date ) != MONTH( '$thisyear-$thismonth-01' )
613                AND post_type = 'post' AND post_status = 'publish'
614                        ORDER   BY post_date ASC
615                        LIMIT 1");
616
617        echo '<table id="wp-calendar" summary="' . __('Calendar') . '">
618        <caption>' . sprintf(_c('%1$s %2$s|Used as a calendar caption'), $wp_locale->get_month($thismonth), date('Y', $unixmonth)) . '</caption>
619        <thead>
620        <tr>';
621
622        $myweek = array();
623
624        for ( $wdcount=0; $wdcount<=6; $wdcount++ ) {
625                $myweek[] = $wp_locale->get_weekday(($wdcount+$week_begins)%7);
626        }
627
628        foreach ( $myweek as $wd ) {
629                $day_name = (true == $initial) ? $wp_locale->get_weekday_initial($wd) : $wp_locale->get_weekday_abbrev($wd);
630                echo "\n\t\t<th abbr=\"$wd\" scope=\"col\" title=\"$wd\">$day_name</th>";
631        }
632
633        echo '
634        </tr>
635        </thead>
636
637        <tfoot>
638        <tr>';
639
640        if ( $previous ) {
641                echo "\n\t\t".'<td abbr="' . $wp_locale->get_month($previous->month) . '" colspan="3" id="prev"><a href="' .
642                get_month_link($previous->year, $previous->month) . '" title="' . sprintf(__('View posts for %1$s %2$s'), $wp_locale->get_month($previous->month),
643                        date('Y', mktime(0, 0 , 0, $previous->month, 1, $previous->year))) . '">&laquo; ' . $wp_locale->get_month_abbrev($wp_locale->get_month($previous->month)) . '</a></td>';
644        } else {
645                echo "\n\t\t".'<td colspan="3" id="prev" class="pad">&nbsp;</td>';
646        }
647
648        echo "\n\t\t".'<td class="pad">&nbsp;</td>';
649
650        if ( $next ) {
651                echo "\n\t\t".'<td abbr="' . $wp_locale->get_month($next->month) . '" colspan="3" id="next"><a href="' .
652                get_month_link($next->year, $next->month) . '" title="' . sprintf(__('View posts for %1$s %2$s'), $wp_locale->get_month($next->month),
653                        date('Y', mktime(0, 0 , 0, $next->month, 1, $next->year))) . '">' . $wp_locale->get_month_abbrev($wp_locale->get_month($next->month)) . ' &raquo;</a></td>';
654        } else {
655                echo "\n\t\t".'<td colspan="3" id="next" class="pad">&nbsp;</td>';
656        }
657
658        echo '
659        </tr>
660        </tfoot>
661
662        <tbody>
663        <tr>';
664
665        // Get days with posts
666        $dayswithposts = $wpdb->get_results("SELECT DISTINCT DAYOFMONTH(post_date)
667                FROM $wpdb->posts WHERE MONTH(post_date) = '$thismonth'
668                AND YEAR(post_date) = '$thisyear'
669                AND post_type = 'post' AND post_status = 'publish'
670                AND post_date < '" . current_time('mysql') . '\'', ARRAY_N);
671        if ( $dayswithposts ) {
672                foreach ( $dayswithposts as $daywith ) {
673                        $daywithpost[] = $daywith[0];
674                }
675        } else {
676                $daywithpost = array();
677        }
678
679        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false || strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'camino') !== false || strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'safari') !== false)
680                $ak_title_separator = "\n";
681        else
682                $ak_title_separator = ', ';
683
684        $ak_titles_for_day = array();
685        $ak_post_titles = $wpdb->get_results("SELECT post_title, DAYOFMONTH(post_date) as dom "
686                ."FROM $wpdb->posts "
687                ."WHERE YEAR(post_date) = '$thisyear' "
688                ."AND MONTH(post_date) = '$thismonth' "
689                ."AND post_date < '".current_time('mysql')."' "
690                ."AND post_type = 'post' AND post_status = 'publish'"
691        );
692        if ( $ak_post_titles ) {
693                foreach ( $ak_post_titles as $ak_post_title ) {
694
695                                $post_title = apply_filters( "the_title", $ak_post_title->post_title );
696                                $post_title = str_replace('"', '&quot;', wptexturize( $post_title ));
697
698                                if ( empty($ak_titles_for_day['day_'.$ak_post_title->dom]) )
699                                        $ak_titles_for_day['day_'.$ak_post_title->dom] = '';
700                                if ( empty($ak_titles_for_day["$ak_post_title->dom"]) ) // first one
701                                        $ak_titles_for_day["$ak_post_title->dom"] = $post_title;
702                                else
703                                        $ak_titles_for_day["$ak_post_title->dom"] .= $ak_title_separator . $post_title;
704                }
705        }
706
707
708        // See how much we should pad in the beginning
709        $pad = calendar_week_mod(date('w', $unixmonth)-$week_begins);
710        if ( 0 != $pad )
711                echo "\n\t\t".'<td colspan="'.$pad.'" class="pad">&nbsp;</td>';
712
713        $daysinmonth = intval(date('t', $unixmonth));
714        for ( $day = 1; $day <= $daysinmonth; ++$day ) {
715                if ( isset($newrow) && $newrow )
716                        echo "\n\t</tr>\n\t<tr>\n\t\t";
717                $newrow = false;
718
719                if ( $day == gmdate('j', (time() + (get_option('gmt_offset') * 3600))) && $thismonth == gmdate('m', time()+(get_option('gmt_offset') * 3600)) && $thisyear == gmdate('Y', time()+(get_option('gmt_offset') * 3600)) )
720                        echo '<td id="today">';
721                else
722                        echo '<td>';
723
724                if ( in_array($day, $daywithpost) ) // any posts today?
725                                echo '<a href="' . get_day_link($thisyear, $thismonth, $day) . "\" title=\"$ak_titles_for_day[$day]\">$day</a>";
726                else
727                        echo $day;
728                echo '</td>';
729
730                if ( 6 == calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins) )
731                        $newrow = true;
732        }
733
734        $pad = 7 - calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins);
735        if ( $pad != 0 && $pad != 7 )
736                echo "\n\t\t".'<td class="pad" colspan="'.$pad.'">&nbsp;</td>';
737
738        echo "\n\t</tr>\n\t</tbody>\n\t</table>";
739
740        $output = ob_get_contents();
741        ob_end_clean();
742        echo $output;
743        $cache[ $key ] = $output;
744        wp_cache_set( 'get_calendar', $cache, 'calendar' );
745}
746
747function delete_get_calendar_cache() {
748        wp_cache_delete( 'get_calendar', 'calendar' );
749}
750add_action( 'save_post', 'delete_get_calendar_cache' );
751add_action( 'delete_post', 'delete_get_calendar_cache' );
752add_action( 'update_option_start_of_week', 'delete_get_calendar_cache' );
753add_action( 'update_option_gmt_offset', 'delete_get_calendar_cache' );
754add_action( 'update_option_start_of_week', 'delete_get_calendar_cache' );
755
756
757function allowed_tags() {
758        global $allowedtags;
759        $allowed = '';
760        foreach ( $allowedtags as $tag => $attributes ) {
761                $allowed .= '<'.$tag;
762                if ( 0 < count($attributes) ) {
763                        foreach ( $attributes as $attribute => $limits ) {
764                                $allowed .= ' '.$attribute.'=""';
765                        }
766                }
767                $allowed .= '> ';
768        }
769        return htmlentities($allowed);
770}
771
772
773/***** Date/Time tags *****/
774
775
776function the_date_xml() {
777        global $post;
778        echo mysql2date('Y-m-d', $post->post_date);
779        //echo ""+$post->post_date;
780}
781
782
783function the_date($d='', $before='', $after='', $echo = true) {
784        global $post, $day, $previousday;
785        $the_date = '';
786        if ( $day != $previousday ) {
787                $the_date .= $before;
788                if ( $d=='' )
789                        $the_date .= mysql2date(get_option('date_format'), $post->post_date);
790                else
791                        $the_date .= mysql2date($d, $post->post_date);
792                $the_date .= $after;
793                $previousday = $day;
794        }
795        $the_date = apply_filters('the_date', $the_date, $d, $before, $after);
796        if ( $echo )
797                echo $the_date;
798        else
799                return $the_date;
800}
801
802
803function the_modified_date($d = '') {
804        echo apply_filters('the_modified_date', get_the_modified_date($d), $d);
805}
806
807
808function get_the_modified_date($d = '') {
809        if ( '' == $d )
810                $the_time = get_post_modified_time(get_option('date_format'));
811        else
812                $the_time = get_post_modified_time($d);
813        return apply_filters('get_the_modified_date', $the_time, $d);
814}
815
816
817function the_time( $d = '' ) {
818        echo apply_filters('the_time', get_the_time( $d ), $d);
819}
820
821
822function get_the_time( $d = '' ) {
823        if ( '' == $d )
824                $the_time = get_post_time(get_option('time_format'));
825        else
826                $the_time = get_post_time($d);
827        return apply_filters('get_the_time', $the_time, $d);
828}
829
830
831function get_post_time( $d = 'U', $gmt = false ) { // returns timestamp
832        global $post;
833        if ( $gmt )
834                $time = $post->post_date_gmt;
835        else
836                $time = $post->post_date;
837
838        $time = mysql2date($d, $time);
839        return apply_filters('get_post_time', $time, $d, $gmt);
840}
841
842
843function the_modified_time($d = '') {
844        echo apply_filters('the_modified_time', get_the_modified_time($d), $d);
845}
846
847
848function get_the_modified_time($d = '') {
849        if ( '' == $d )
850                $the_time = get_post_modified_time(get_option('time_format'));
851        else
852                $the_time = get_post_modified_time($d);
853        return apply_filters('get_the_modified_time', $the_time, $d);
854}
855
856
857function get_post_modified_time( $d = 'U', $gmt = false ) { // returns timestamp
858        global $post;
859
860        if ( $gmt )
861                $time = $post->post_modified_gmt;
862        else
863                $time = $post->post_modified;
864        $time = mysql2date($d, $time);
865
866        return apply_filters('get_the_modified_time', $time, $d, $gmt);
867}
868
869
870function the_weekday() {
871        global $wp_locale, $post;
872        $the_weekday = $wp_locale->get_weekday(mysql2date('w', $post->post_date));
873        $the_weekday = apply_filters('the_weekday', $the_weekday);
874        echo $the_weekday;
875}
876
877
878function the_weekday_date($before='',$after='') {
879        global $wp_locale, $post, $day, $previousweekday;
880        $the_weekday_date = '';
881        if ( $day != $previousweekday ) {
882                $the_weekday_date .= $before;
883                $the_weekday_date .= $wp_locale->get_weekday(mysql2date('w', $post->post_date));
884                $the_weekday_date .= $after;
885                $previousweekday = $day;
886        }
887        $the_weekday_date = apply_filters('the_weekday_date', $the_weekday_date, $before, $after);
888        echo $the_weekday_date;
889}
890
891function wp_head() {
892        do_action('wp_head');
893}
894
895function wp_footer() {
896        do_action('wp_footer');
897}
898
899function rsd_link() {
900        echo '<link rel="EditURI" type="application/rsd+xml" title="RSD" href="' . get_bloginfo('wpurl') . "/xmlrpc.php?rsd\" />\n";
901}
902
903function wlwmanifest_link() {
904        echo '<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="'
905                . get_bloginfo('wpurl') . '/wp-includes/wlwmanifest.xml" /> ' . "\n";
906}
907
908function noindex() {
909        // If the blog is not public, tell robots to go away.
910        if ( '0' == get_option('blog_public') )
911                echo "<meta name='robots' content='noindex,nofollow' />\n";
912}
913
914function rich_edit_exists() {
915        global $wp_rich_edit_exists;
916        if ( !isset($wp_rich_edit_exists) )
917                $wp_rich_edit_exists = file_exists(ABSPATH . WPINC . '/js/tinymce/tiny_mce.js');
918        return $wp_rich_edit_exists;
919}
920
921function user_can_richedit() {
922        global $wp_rich_edit, $pagenow;
923
924        if ( !isset( $wp_rich_edit) ) {
925                if ( get_user_option( 'rich_editing' ) == 'true' &&
926                        ( ( preg_match( '!AppleWebKit/(\d+)!', $_SERVER['HTTP_USER_AGENT'], $match ) && intval($match[1]) >= 420 ) ||
927                                !preg_match( '!opera[ /][2-8]|konqueror|safari!i', $_SERVER['HTTP_USER_AGENT'] ) )
928                                && 'comment.php' != $pagenow ) {
929                        $wp_rich_edit = true;
930                } else {
931                        $wp_rich_edit = false;
932                }
933        }
934
935        return apply_filters('user_can_richedit', $wp_rich_edit);
936}
937
938function wp_default_editor() {
939        $r = user_can_richedit() ? 'tinymce' : 'html'; // defaults
940        if ( $user = wp_get_current_user() ) { // look for cookie
941                if ( isset($_COOKIE['wordpress_editor_' . $user->ID]) && in_array($_COOKIE['wordpress_editor_' . $user->ID], array('tinymce', 'html', 'test') ) )
942                        $r = $_COOKIE['wordpress_editor_' . $user->ID];
943        }
944        return apply_filters( 'wp_default_editor', $r ); // filter
945}
946
947function the_editor($content, $id = 'content', $prev_id = 'title', $media_buttons = true, $tab_index = 2) {
948        $rows = get_option('default_post_edit_rows');
949        if (($rows < 3) || ($rows > 100))
950                $rows = 12;
951
952        $rows = "rows='$rows'"; ?>
953        <div id="editor-toolbar">
954        <?php if ( user_can_richedit() ) {
955                $wp_default_editor = wp_default_editor(); ?>
956                <div class="zerosize"><input accesskey="e" type="button" onclick="switchEditors.go('<?php echo $id; ?>')" /></div>
957                <?php if ( 'tinymce' == $wp_default_editor ) {
958                        add_filter('the_editor_content', 'wp_richedit_pre'); ?>
959                        <a id="edButtonHTML" onclick="switchEditors.go('<?php echo $id; ?>');"><?php _e('HTML'); ?></a>
960                        <a id="edButtonPreview" class="active"><?php _e('Visual'); ?></a>
961                <?php } elseif ( 'html' == $wp_default_editor ) {
962                        add_filter('the_editor_content', 'wp_htmledit_pre'); ?>
963                        <a id="edButtonHTML" class="active"><?php _e('HTML'); ?></a>
964                        <a id="edButtonPreview" onclick="switchEditors.go('<?php echo $id; ?>');"><?php _e('Visual'); ?></a>
965                <?php }
966        }
967
968        if ( $media_buttons ) { ?>
969                <div id="media-buttons" class="hide-if-no-js">
970                <?php do_action( 'media_buttons' ); ?>
971                </div>
972        <?php } ?>
973        </div>
974
975        <div id="quicktags">
976        <?php wp_print_scripts( 'quicktags' ); ?>
977        <script type="text/javascript">edToolbar()</script>
978        </div>
979
980    <?php if ( 'html' != $wp_default_editor ) : ?>
981    <script type="text/javascript">
982    // <![CDATA[
983        if ( typeof tinyMCE != "undefined" )
984            document.getElementById("quicktags").style.display="none";
985    // ]]>
986    </script>
987    <?php endif; // 'html' != $wp_default_editor
988
989        $the_editor = apply_filters('the_editor', "<div id='editorcontainer'><textarea class='' $rows cols='40' name='$id' tabindex='$tab_index' id='$id'>%s</textarea></div>\n");
990        $the_editor_content = apply_filters('the_editor_content', $content);
991
992        printf($the_editor, $the_editor_content);
993
994        ?>
995    <script type="text/javascript">
996    // <![CDATA[
997    edCanvas = document.getElementById('<?php echo $id; ?>');
998    <?php if ( $prev_id && user_can_richedit() ) : ?>
999    // If tinyMCE is defined.
1000    if ( typeof tinyMCE != 'undefined' ) {
1001    // This code is meant to allow tabbing from Title to Post (TinyMCE).
1002        document.getElementById('<?php echo $prev_id; ?>').onkeydown = function (e) {
1003            e = e || window.event;
1004            if (e.keyCode == 9 && !e.shiftKey && !e.controlKey && !e.altKey) {
1005                if ( tinyMCE.activeEditor ) {
1006                    if ( (jQuery("#post_ID").val() < 1) && (jQuery("#title").val().length > 0) ) { autosave(); }
1007                    e = null;
1008                    if ( tinyMCE.activeEditor.isHidden() ) return true;
1009                    tinyMCE.activeEditor.focus();
1010                    return false;
1011                }
1012                return true;
1013            }
1014        }
1015    }
1016    <?php endif; ?>
1017    // ]]>
1018    </script>
1019    <?php
1020}
1021
1022function get_search_query() {
1023        return apply_filters( 'get_search_query', stripslashes( get_query_var( 's' ) ) );
1024}
1025
1026function the_search_query() {
1027        echo attribute_escape( apply_filters( 'the_search_query', get_search_query() ) );
1028}
1029
1030function language_attributes($doctype = 'html') {
1031        $attributes = array();
1032        $output = '';
1033
1034        if ( $dir = get_bloginfo('text_direction') )
1035                $attributes[] = "dir=\"$dir\"";
1036
1037        if ( $lang = get_bloginfo('language') ) {
1038                if ( get_option('html_type') == 'text/html' || $doctype == 'xhtml' )
1039                        $attributes[] = "lang=\"$lang\"";
1040
1041                if ( get_option('html_type') != 'text/html' || $doctype == 'xhtml' )
1042                        $attributes[] = "xml:lang=\"$lang\"";
1043        }
1044
1045        $output = implode(' ', $attributes);
1046        $output = apply_filters('language_attributes', $output);
1047        echo $output;
1048}
1049
1050function paginate_links( $args = '' ) {
1051        $defaults = array(
1052                'base' => '%_%', // http://example.com/all_posts.php%_% : %_% is replaced by format (below)
1053                'format' => '?page=%#%', // ?page=%#% : %#% is replaced by the page number
1054                'total' => 1,
1055                'current' => 0,
1056                'show_all' => false,
1057                'prev_next' => true,
1058                'prev_text' => __('&laquo; Previous'),
1059                'next_text' => __('Next &raquo;'),
1060                'end_size' => 1, // How many numbers on either end including the end
1061                'mid_size' => 2, // How many numbers to either side of current not including current
1062                'type' => 'plain',
1063                'add_args' => false // array of query args to aadd
1064        );
1065
1066        $args = wp_parse_args( $args, $defaults );
1067        extract($args, EXTR_SKIP);
1068
1069        // Who knows what else people pass in $args
1070        $total    = (int) $total;
1071        if ( $total < 2 )
1072                return;
1073        $current  = (int) $current;
1074        $end_size = 0  < (int) $end_size ? (int) $end_size : 1; // Out of bounds?  Make it the default.
1075        $mid_size = 0 <= (int) $mid_size ? (int) $mid_size : 2;
1076        $add_args = is_array($add_args) ? $add_args : false;
1077        $r = '';
1078        $page_links = array();
1079        $n = 0;
1080        $dots = false;
1081
1082        if ( $prev_next && $current && 1 < $current ) :
1083                $link = str_replace('%_%', 2 == $current ? '' : $format, $base);
1084                $link = str_replace('%#%', $current - 1, $link);
1085                if ( $add_args )
1086                        $link = add_query_arg( $add_args, $link );
1087                $page_links[] = "<a class='prev page-numbers' href='" . clean_url($link) . "'>$prev_text</a>";
1088        endif;
1089        for ( $n = 1; $n <= $total; $n++ ) :
1090                if ( $n == $current ) :
1091                        $page_links[] = "<span class='page-numbers current'>$n</span>";
1092                        $dots = true;
1093                else :
1094                        if ( $show_all || ( $n <= $end_size || ( $current && $n >= $current - $mid_size && $n <= $current + $mid_size ) || $n > $total - $end_size ) ) :
1095                                $link = str_replace('%_%', 1 == $n ? '' : $format, $base);
1096                                $link = str_replace('%#%', $n, $link);
1097                                if ( $add_args )
1098                                        $link = add_query_arg( $add_args, $link );
1099                                $page_links[] = "<a class='page-numbers' href='" . clean_url($link) . "'>$n</a>";
1100                                $dots = true;
1101                        elseif ( $dots && !$show_all ) :
1102                                $page_links[] = "<span class='page-numbers dots'>...</span>";
1103                                $dots = false;
1104                        endif;
1105                endif;
1106        endfor;
1107        if ( $prev_next && $current && ( $current < $total || -1 == $total ) ) :
1108                $link = str_replace('%_%', $format, $base);
1109                $link = str_replace('%#%', $current + 1, $link);
1110                if ( $add_args )
1111                        $link = add_query_arg( $add_args, $link );
1112                $page_links[] = "<a class='next page-numbers' href='" . clean_url($link) . "'>$next_text</a>";
1113        endif;
1114        switch ( $type ) :
1115                case 'array' :
1116                        return $page_links;
1117                        break;
1118                case 'list' :
1119                        $r .= "<ul class='page-numbers'>\n\t<li>";
1120                        $r .= join("</li>\n\t<li>", $page_links);
1121                        $r .= "</li>\n</ul>\n";
1122                        break;
1123                default :
1124                        $r = join("\n", $page_links);
1125                        break;
1126        endswitch;
1127        return $r;
1128}
1129
1130function wp_admin_css_color($key, $name, $url, $colors = array()) {
1131        global $_wp_admin_css_colors;
1132
1133        if ( !isset($_wp_admin_css_colors) )
1134                $_wp_admin_css_colors = array();
1135
1136        $_wp_admin_css_colors[$key] = (object) array('name' => $name, 'url' => $url, 'colors' => $colors);
1137}
1138
1139/**
1140 * wp_admin_css_uri() - Outputs the URL of a WordPress admin CSS file
1141 *
1142 * @see WP_Styles::_css_href and its style_loader_src filter.
1143 *
1144 * @param string $file file relative to wp-admin/ without its ".css" extension.
1145 */
1146
1147function wp_admin_css_uri( $file = 'wp-admin' ) {
1148        if ( defined('WP_INSTALLING') ) {
1149                $_file = "./$file.css";
1150        } else {
1151                $_file = admin_url("$file.css");
1152        }
1153        $_file = add_query_arg( 'version', get_bloginfo( 'version' ),  $_file );
1154
1155        return apply_filters( 'wp_admin_css_uri', $_file, $file );
1156}
1157
1158/**
1159 * wp_admin_css() - Enqueues or directly prints a stylesheet link to the specified CSS file.
1160 *
1161 * "Intelligently" decides to enqueue or to print the CSS file.
1162 * If the wp_print_styles action has *not* yet been called, the CSS file will be enqueued.
1163 * If the wp_print_styles action *has* been called, the CSS link will be printed.
1164 * Printing may be forced by passing TRUE as the $force_echo (second) parameter.
1165 *
1166 * For backward compatibility with WordPress 2.3 calling method:
1167 * If the $file (first) parameter does not correspond to a registered CSS file, we assume $file is a
1168 * file relative to wp-admin/ without its ".css" extension.  A stylesheet link to that generated URL is printed.
1169 *
1170 * @package WordPress
1171 * @since 2.3
1172 *
1173 * @uses $wp_styles WordPress Styles Object
1174 *
1175 * @param string $file Style handle name or file name (without ".css" extension) relative to wp-admin/
1176 * @param bool $force_echo Optional.  Force the stylesheet link to be printed rather than enqueued.
1177 */
1178
1179function wp_admin_css( $file = 'wp-admin', $force_echo = false ) {
1180        global $wp_styles;
1181        if ( !is_a($wp_styles, 'WP_Styles') )
1182                $wp_styles = new WP_Styles();
1183
1184        // For backward compatibility
1185        $handle = 0 === strpos( $file, 'css/' ) ? substr( $file, 4 ) : $file;
1186
1187        if ( $wp_styles->query( $handle ) ) {
1188                if ( $force_echo || did_action( 'wp_print_styles' ) ) // we already printed the style queue.  Print this one immediately
1189                        wp_print_styles( $handle );
1190                else // Add to style queue
1191                        wp_enqueue_style( $handle );
1192                return;
1193        }
1194
1195        echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . clean_url( wp_admin_css_uri( $file ) ) . "' type='text/css' />\n", $file );
1196        if ( 'rtl' == get_bloginfo( 'text_direction' ) )
1197                echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . clean_url( wp_admin_css_uri( "$file-rtl" ) ) . "' type='text/css' />\n", "$file-rtl" );
1198}
1199
1200/**
1201 * Enqueues the default ThickBox js and css.
1202 * If any of the settings need to be changed, this can be done with another js file
1203 * similar to media-upload.js and theme-preview.js. That file should require array('thickbox')
1204 * to ensure it is loaded after.
1205 */
1206function add_thickbox() {
1207        wp_enqueue_script( 'thickbox' );
1208        wp_enqueue_style( 'thickbox' );
1209}
1210
1211/**
1212 * Outputs the XHTML generator that is generated on the wp_head hook.
1213 */
1214function wp_generator()
1215{
1216        the_generator( apply_filters( 'wp_generator_type', 'xhtml' ) );
1217}
1218
1219/**
1220 * Outputs the generator XML or Comment for RSS, ATOM, etc.
1221 * @param {String} $type The type of generator to return.
1222 */
1223function the_generator ( $type ) {
1224        echo apply_filters('the_generator',get_the_generator($type),$type) . "\n";
1225}
1226
1227/**
1228 * Creates the generator XML or Comment for RSS, ATOM, etc.
1229 * @param {String} $type The type of generator to return.
1230 */
1231function get_the_generator ( $type ) {
1232        switch ($type) {
1233                case 'html':
1234                        $gen = '<meta name="generator" content="WordPress ' . get_bloginfo( 'version' ) . '">' . "\n";
1235                        break;
1236                case 'xhtml':
1237                        $gen = '<meta name="generator" content="WordPress ' . get_bloginfo( 'version' ) . '" />' . "\n";
1238                        break;
1239                case 'atom':
1240                        $gen = '<generator uri="http://wordpress.org/" version="' . get_bloginfo_rss( 'version' ) . '">WordPress</generator>';
1241                        break;
1242                case 'rss2':
1243                        $gen = '<generator>http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '</generator>';
1244                        break;
1245                case 'rdf':
1246                        $gen = '<admin:generatorAgent rdf:resource="http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '" />';
1247                        break;
1248                case 'comment':
1249                        $gen = '<!-- generator="WordPress/' . get_bloginfo( 'version' ) . '" -->';
1250                        break;
1251                case 'export':
1252                        $gen = '<!-- generator="WordPress/' . get_bloginfo_rss('version') . '" created="'. date('Y-m-d H:i') . '"-->';
1253                        break;
1254        }
1255        return apply_filters( "get_the_generator_{$type}", $gen, $type );
1256}
1257?>