From dbddadfb94b273c45ba62179c5bef4a0b57d89e4 Mon Sep 17 00:00:00 2001 From: Matt Mullenweg Date: Mon, 3 Nov 2003 17:22:01 +0000 Subject: [PATCH] New calendar code. git-svn-id: https://develop.svn.wordpress.org/trunk@510 602fd350-edb4-49c9-b593-d223f7449a82 --- b2-include/b2template.functions.php | 60 +++--- b2calendar.php | 310 ---------------------------- index.php | 6 +- wp-layout.css | 86 +++++--- 4 files changed, 87 insertions(+), 375 deletions(-) delete mode 100644 b2calendar.php diff --git a/b2-include/b2template.functions.php b/b2-include/b2template.functions.php index c2a49511e7..6d387cd50d 100644 --- a/b2-include/b2template.functions.php +++ b/b2-include/b2template.functions.php @@ -228,8 +228,8 @@ function get_archives($type='', $limit='', $format='html', $before = "", $after } } -function get_calendar() { - global $wpdb, $HTTP_GET_VARS, $m, $monthnum, $year, $timedifference, $month, $tableposts; +function get_calendar($daylength = 1) { + global $wpdb, $HTTP_GET_VARS, $m, $monthnum, $year, $timedifference, $month, $weekday, $tableposts; // Quick check. If we have no posts at all, abort! if (!$posts) { $gotsome = $wpdb->get_var("SELECT ID from $tableposts WHERE post_status = 'publish' AND post_category > 0 ORDER BY post_date DESC LIMIT 1"); @@ -268,50 +268,51 @@ $unixmonth = mktime(0, 0 , 0, $thismonth, 1, $thisyear); $previous = $wpdb->get_row("SELECT DISTINCT MONTH( post_date ) AS month, YEAR( post_date ) AS year FROM $tableposts WHERE post_date < '$thisyear-$thismonth-01' + AND post_status = 'publish' ORDER BY post_date DESC LIMIT 1"); $next = $wpdb->get_row("SELECT DISTINCT MONTH( post_date ) AS month, YEAR( post_date ) AS year FROM $tableposts - WHERE post_date > '$thisyear-$thismonth-01' AND MONTH( post_date ) != MONTH( '$thisyear-$thismonth-01' ) + WHERE post_date > '$thisyear-$thismonth-01' + AND MONTH( post_date ) != MONTH( '$thisyear-$thismonth-01' ) + AND post_status = 'publish' ORDER BY post_date ASC - LIMIT 1 "); + LIMIT 1"); echo ' - - - - - - - - - + '; + foreach ($weekday as $wd) { + echo "\n\t'; + } + +echo ' '; if ($previous) { - echo ''; + echo "\n\t".''; } -echo ''; +echo "\n\t".''; if ($next) { - echo ''; + echo "\n\t".''; } -echo ' +echo ' + @@ -323,19 +324,26 @@ $dayswithposts = $wpdb->get_results("SELECT DISTINCT DAYOFMONTH(post_date) AND YEAR(post_date) = $thisyear AND post_status = 'publish' AND post_date < '" . date("Y-m-d H:i:s", (time() + ($time_difference * 3600)))."'", ARRAY_N); -foreach ($dayswithposts as $daywith) { - $daywithpost[] = $daywith[0]; + +if ($dayswithposts) { + foreach ($dayswithposts as $daywith) { + $daywithpost[] = $daywith[0]; + } +} else { + $daywithpost = array(); } // See how much we should pad in the beginning $pad = intval(date('w', $unixmonth)); -if (0 != $pad) echo "\n\t"; +if (0 != $pad) echo "\n\t"; $daysinmonth = intval(date('t', $unixmonth)); for ($day = 1; $day <= $daysinmonth; ++$day) { - if ($newrow) echo "\n\n "; + if ($newrow) echo "\n \n \n\t"; $newrow = false; - echo "\n\t'; -$calendarrowend = ''; - -$calendarheaderdisplay = 1; // set this to 0 if you don't want to display the "Mon Tue Wed..." header -$calendarheadercellstart = ''; -$calendarheaderabbrlength = 1; // length of the shortened weekday - -$calendarcellstart = ''; - -$calendaremptycellstart = ''; - -$calendaremptycellcontent = ' '; - -/* stop customizing (unless you really know what you're doing) */ - - -require_once('wp-config.php'); -require_once($abspath.$b2inc.'/b2template.functions.php'); -require_once($abspath.$b2inc.'/b2functions.php'); -require_once($abspath.$b2inc.'/b2vars.php'); - -// Quick check. If we have no posts at all, abort! -if (!$posts) { - $gotsome = $wpdb->get_var("SELECT ID from $tableposts WHERE post_status = 'publish' AND post_category > 0 ORDER BY post_date DESC LIMIT 1"); - if (!$gotsome) - return; -} - -$w = $HTTP_GET_VARS['w']; -if (isset($HTTP_GET_VARS['w'])) { - $w = $HTTP_GET_VARS['w']; -} - -if (isset($calendar) && ($calendar != '')) { - $thisyear = substr($calendar,0,4); - $thismonth = substr($calendar,4,2); -} else { - if (isset($w) && ($w != '')) { - $thisyear = substr($m,0,4); - $w = ''.intval($w); - $d = (($w - 1) * 7) + 6; //it seems mysqls weeks disagree with php's - $thismonth = $wpdb->get_var("SELECT DATE_FORMAT((DATE_ADD('${thisyear}0101', INTERVAL $d DAY) ), '%m')"); - } else if (isset($m) && ($m != '')) { - $calendar = substr($m,0,6); - $thisyear = substr($m,0,4); - if (strlen($m) < 6) { - $thismonth = '01'; - } else { - $thismonth = substr($m,4,2); - } - } else { - $thisyear = date('Y', time()+($time_difference * 3600)); - $thismonth = date('m', time()+($time_difference * 3600)); - } -} - -$archive_link_m = $siteurl.'/'.$blogfilename.$querystring_start.'m'.$querystring_equal; - -// original arrow hack by Alex King -$ak_previous_year = $thisyear; -$ak_next_year = $thisyear; -$ak_previous_month = $thismonth - 1; -$ak_next_month = $thismonth + 1; -if ($ak_previous_month == 0) { - $ak_previous_month = 12; - --$ak_previous_year; -} -if ($ak_next_month == 13) { - $ak_next_month = 1; - ++$ak_next_year; -} - -$ak_first_post = $wpdb->get_row("SELECT MONTH(MIN(post_date)) AS min_month, YEAR(MIN(post_date)) AS min_year FROM $tableposts"); -// using text links by default -$ak_previous_month_dim = '«  '; -$ak_previous_month_active = '«  '; -$ak_next_month_dim = '  »'; -$ak_next_month_active = '  »'; -if ($ak_use_arrows == 1) { - if (mktime(0,0,0,$ak_previous_month,1,$ak_previous_year) < mktime(0,0,0,$ak_first_post->min_month,1,$ak_first_post->min_year)) { - $ak_previous_month_link = $ak_previous_month_dim; - } else { - $ak_previous_month_link = $ak_previous_month_active; - } - - if (mktime(0,0,0,$ak_next_month,1,$ak_next_year) > mktime()) { - $ak_next_month_link = $ak_next_month_dim; - } else { - $ak_next_month_link = $ak_next_month_active; - } -} else { - $ak_previous_month_link = ""; - $ak_next_month_link = ""; -} - -$end_of_week = (($start_of_week + 7) % 7); - -$calendarmonthwithpost = 0; -while($calendarmonthwithpost == 0) { - $arc_sql="SELECT DISTINCT YEAR(post_date), MONTH(post_date), DAYOFMONTH(post_date) AS dom " - ."FROM $tableposts " - ."WHERE MONTH(post_date) = '$thismonth' " - ."AND YEAR(post_date) = '$thisyear' " - ."AND post_date < '".date("Y-m-d H:i:s", (time() + ($time_difference * 3600)))."' " - ."AND post_status = 'publish' " - ."ORDER BY post_date DESC"; - $querycount++; - $arc_results = $wpdb->get_results($arc_sql); - if ($wpdb->num_rows > 0) { - $daysinmonthwithposts = '-'; - foreach ($arc_results as $arc_row) { - $daysinmonthwithposts .= $arc_row->dom.'-'; - } - $calendarmonthwithpost = 1; - } elseif ($calendar != '') { - $daysinmonthwithposts = ''; - $calendarmonthwithpost = 1; - } else { - $thismonth = zeroise(intval($thismonth)-1,2); - if ($thismonth == '00') { - $thismonth = '12'; - $thisyear = ''.(intval($thisyear)-1); - } - } -} - -$daysinmonth = intval(date('t', mktime(0,0,0,$thismonth,1,$thisyear))); -$datestartofmonth = $thisyear.'-'.$thismonth.'-01'; -$dateendofmonth = $thisyear.'-'.$thismonth.'-'.$daysinmonth; - -// caution: offset bug inside -$calendarblah = get_weekstartend($datestartofmonth, $start_of_week); -if (mysql2date('w', $datestartofmonth) == $start_of_week) { - $calendarfirst = $calendarblah['start']+1+3600; // adjust for daylight savings time -} else { - $calendarfirst = $calendarblah['end']-604799+3600; // adjust for daylight savings time -} - -$calendarblah = get_weekstartend($dateendofmonth, $end_of_week); -if (mysql2date('w', $dateendofmonth) == $end_of_week) { - $calendarlast = $calendarblah['start']+1; -} else { - $calendarlast = $calendarblah['end']+10000; -} - -$beforethismonth = zeroise(intval($thismonth)-1,2); -$afterthismonth = zeroise(intval($thismonth)-1,2); - -// here the offset bug is corrected -if ((intval(date('d', $calendarfirst)) > 1) && (intval(date('m', $calendarfirst)) == intval($thismonth))) { - $calendarfirst = $calendarfirst - 604800; -} - - -// displays everything - -echo $calendartablestart."\n"; - -if ($calendarmonthdisplay) { - echo $calendarmonthstart; - echo $ak_previous_month_link; - echo date_i18n($calendarmonthformat, mktime(0, 0, 0, $thismonth, 1, $thisyear)); - echo $ak_next_month_link; - echo $calendarmonthend."\n"; -} - -if ($calendarheaderdisplay) { - echo $calendarrowstart."\n"; - - for ($i = $start_of_week; $i<($start_of_week+7); $i = $i + 1) { - echo str_replace('$abbr', $weekday[($i % 7)], $calendarheadercellstart); - echo ucwords(substr($weekday[($i % 7)], 0, $calendarheaderabbrlength)); - echo $calendarheadercellend; - } - - echo $calendarrowend."\n"; -} - -echo $calendarrowstart."\n"; - -$newrow = 0; -$j = 0; -$k = 1; - -// original tooltip hack by Alex King -if ($ak_use_tooltip_titles == 1) { - $ak_days_result = $wpdb->get_results("SELECT post_title, post_date " - ."FROM $tableposts " - ."WHERE YEAR(post_date) = '$thisyear' " - ."AND MONTH(post_date) = '$thismonth' " - ."AND post_date < '".date("Y-m-d H:i:s", (time() + ($time_difference * 3600)))."' " - ."AND post_status = 'publish'" - ); - - $ak_day_title_array = array(); - if ($ak_days_result) { - foreach($ak_days_result as $ak_temp) { - $ak_day_title_array[] = $ak_temp; - } - } - if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE") || - strstr(strtolower($_SERVER["HTTP_USER_AGENT"]), "camino")) { - $ak_title_separator = "\n"; - $ak_trim = 1; - } - else { - $ak_title_separator = ", "; - $ak_trim = 2; - } -} - - -for($i = $calendarfirst; $i<($calendarlast+86400); $i = $i + 86400) { - if ($newrow == 1) { - if ($k > $daysinmonth) { - break; - } - echo $calendarrowend."\n"; - //if (($i+86400) < ($calendarlast+86400)) { - echo $calendarrowstart."\n"; - //} - $newrow = 0; - } - if (date('m',$i) != $thismonth) { - echo $calendaremptycellstart; - echo $calendaremptycellcontent; - echo $calendaremptycellend; - } else { - $k = $k + 1; - echo $calendarcellstart; - $calendarblah = '-'.date('j',$i).'-'; - $calendarthereisapost = ereg($calendarblah, $daysinmonthwithposts); - $calendartoday = (date('Ymd',$i) == date('Ymd', (time() + ($time_difference * 3600)))); - - if ($calendarthereisapost) { - // original tooltip hack by Alex King - if ($ak_use_tooltip_titles == 1) { // check to see if we want to show the tooltip titles - $ak_day_titles = ""; - foreach($ak_day_title_array as $post) { - if (substr($post->post_date, 8, 2) == date('d',$i)) { - $ak_day_titles = $ak_day_titles.htmlspecialchars(stripslashes($post->post_title)).$ak_title_separator; - } - } - $ak_day_titles = substr($ak_day_titles, 0, strlen($ak_day_titles) - $ak_trim); - echo ''; - } - else { - echo ''; - } - } - if ($calendartoday) { - echo ''; - } - echo date('j',$i); - if ($calendartoday) { - echo ''; - } - if ($calendarthereisapost) { - echo ''; - } - echo $calendarcellend."\n"; - } - $j = $j + 1; - if ($j == 7) { - $j = 0; - $newrow = 1; - } -} - -echo $calendarrowend."\n"; -echo $calendartableend; - -?> diff --git a/index.php b/index.php index 73f0817a9b..215f2d36f6 100644 --- a/index.php +++ b/index.php @@ -89,11 +89,7 @@ require_once($abspath.'wp-links/links.php');
  • Calendar: - +
  • Other:
  • ' . $month[zeroise($thismonth, 2)] . ' ' . date('Y', $unixmonth) . '
    SunMonTueWedThuFriSat
    " . substr($wd, 0, $daylength) . '
    « ' . substr($month[zeroise($previous->month, 2)], 0, 3) . ''; + date('Y', mktime(0, 0 , 0, $previous->month, 1, $previous->year)) . '">« ' . substr($month[zeroise($previous->month, 2)], 0, 3) . ''; } else { - echo '««  ' . substr($month[zeroise($next->month, 2)], 0, 3) . ' »'; + date('Y', mktime(0, 0 , 0, $next->month, 1, $next->year)) . '">' . substr($month[zeroise($next->month, 2)], 0, 3) . ' »'; } else { - echo '»»
      
    "; + + if ($day == date('j', (time() + ($time_difference * 3600)))) echo ''; + else echo ""; if (in_array($day, $daywithpost)) { echo '$day"; diff --git a/b2calendar.php b/b2calendar.php deleted file mode 100644 index 53d7f36c7d..0000000000 --- a/b2calendar.php +++ /dev/null @@ -1,310 +0,0 @@ -'; -$calendarmonthend = ''; - -$calendartablestart = ''; -$calendartableend = '
    '; - -$calendarrowstart = '
    '; // please leave $abbr there ! -$calendarheadercellend = ''; -$calendarcellend = ''; -$calendaremptycellend = '