mirror of
https://github.com/e107inc/e107.git
synced 2025-01-17 20:58:30 +01:00
224 lines
8.4 KiB
PHP
224 lines
8.4 KiB
PHP
<?php
|
||
/*
|
||
+ ----------------------------------------------------------------------------+
|
||
| e107 website system
|
||
|
|
||
| Copyright (C) 2008-2009 e107 Inc (e107.org)
|
||
| http://e107.org
|
||
|
|
||
|
|
||
| Released under the terms and conditions of the
|
||
| GNU General Public License (http://gnu.org).
|
||
|
|
||
| $Source: /cvs_backup/e107_0.8/e107_plugins/blogcalendar_menu/blogcalendar_menu.php,v $
|
||
| $Revision$
|
||
| $Date$
|
||
| $Author$
|
||
+----------------------------------------------------------------------------+
|
||
| Based on code by: Thomas Bouve (crahan@gmx.net)
|
||
*/
|
||
if (!defined('e107_INIT')) { exit; }
|
||
|
||
$parm = isset($parm) && is_string($parm) ? $parm : '';
|
||
$cString = 'nq_news_blogacalendar_menu_'.preg_replace('#[^\w]#', '', $parm);
|
||
$cached = e107::getCache()->retrieve($cString);
|
||
|
||
|
||
if(false === $cached)
|
||
{
|
||
$sql = e107::getDb();
|
||
require_once(e_PLUGIN."blogcalendar_menu/calendar.php");
|
||
require_once(e_PLUGIN."blogcalendar_menu/functions.php");
|
||
|
||
// ------------------------------
|
||
// initialization + fetch options
|
||
// ------------------------------
|
||
$prefix = e_PLUGIN_ABS."blogcalendar_menu";
|
||
$marray = e107::getDate()->terms('month');
|
||
|
||
|
||
|
||
|
||
$pref['blogcal_ws'] = "monday";
|
||
|
||
// ----------------------------------------------
|
||
// get the requested and current date information
|
||
// ----------------------------------------------
|
||
list($cur_year, $cur_month, $cur_day) = explode(" ", date("Y n j"));
|
||
if (e_PAGE == 'news.php' && strpos(e_QUERY, "day") !== false)
|
||
{
|
||
$tmp = explode(".", e_QUERY);
|
||
// Core now support legacy queries - use just the old way
|
||
//$tmp = e107::getUrl()->parseRequest('core:news', 'main', urldecode(e_QUERY));
|
||
$item = $tmp[1];
|
||
$req_year = intval(substr($item, 0, 4));
|
||
$req_month = intval(substr($item, 4, 2));
|
||
// decide on the behaviour here, do we highlight
|
||
// the day being viewed? or only 'today'?
|
||
//$req_day = substr($item, 6, 2);
|
||
// if the requested year and month are the current, then add
|
||
// the current day to the mix so the calendar highlights it
|
||
if (($req_year == $cur_year) && ($req_month == $cur_month))
|
||
{
|
||
$req_day = $cur_day;
|
||
}
|
||
else
|
||
{
|
||
$req_day = "";
|
||
}
|
||
}
|
||
elseif(e_PAGE == 'news.php' && strpos(e_QUERY, "month") !== false)
|
||
{
|
||
$tmp = explode(".", e_QUERY);
|
||
// Core now support legacy queries - use just the old way
|
||
//$tmp = e107::getUrl()->parseRequest('core:news', 'main', urldecode(e_QUERY));
|
||
$item = $tmp[1];
|
||
$req_year = intval(substr($item, 0, 4));
|
||
$req_month = intval(substr($item, 4, 2));
|
||
// if the requested year and month are the current, then add
|
||
// the current day to the mix so the calendar highlights it
|
||
if (($req_year == $cur_year) && ($req_month == $cur_month))
|
||
{
|
||
$req_day = $cur_day;
|
||
}
|
||
else
|
||
{
|
||
$req_day = "";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
$req_year = $cur_year;
|
||
$req_month = $cur_month;
|
||
$req_day = $cur_day;
|
||
}
|
||
|
||
// -------------------------------
|
||
// create the month selection item
|
||
// -------------------------------
|
||
|
||
|
||
// get all newsposts since the beginning of the year till now
|
||
// -------------------------------------------
|
||
// get links to all newsitems in current month
|
||
// -------------------------------------------
|
||
$month_start = mktime(0, 0, 0, $req_month, 1, $req_year);
|
||
$lastday = date("t", $month_start);
|
||
$month_end = mktime(23, 59, 59, $req_month, $lastday, $req_year);
|
||
$start = mktime(0, 0, 0, 1, 1, 1980);
|
||
$end = time();
|
||
|
||
$year_start = mktime(0, 0, 0, 1, 1, $req_year);
|
||
$year_end = mktime(23, 59, 59, 12, 31, $req_year);
|
||
|
||
$sql->select("news", "news_id, news_datestamp", "news_class IN (".USERCLASS_LIST.") AND (FIND_IN_SET('0', news_render_type) OR FIND_IN_SET(1, news_render_type)) AND news_datestamp > ".intval($start)." AND news_datestamp < ".intval($end));
|
||
|
||
$links = array();
|
||
$months = array();
|
||
|
||
while ($news = $sql->fetch())
|
||
{
|
||
$xmonth = date("n", $news['news_datestamp']);
|
||
$xyear = date("Y", $news['news_datestamp']);
|
||
if (empty($month_links[$xmonth]))
|
||
{
|
||
$month_links[$xmonth] = e107::getUrl()->create('news/list/month', 'id='.formatDate($xyear, $xmonth));//e_BASE."news.php?month.".formatDate($req_year, $xmonth);
|
||
}
|
||
// if(($news['news_datestamp'] >= $month_start && $news['news_datestamp'] <= $month_end) || (deftrue('BOOTSTRAP') && $news['news_datestamp'] >= $year_start && $news['news_datestamp'] <= $year_end))
|
||
{
|
||
$xday = date("j", $news['news_datestamp']);
|
||
if (!isset($links[$xyear][$xmonth][$xday]))
|
||
{
|
||
$links[$xyear][$xmonth][$xday] = e107::getUrl()->create('news/list/day', 'id='.formatDate($xyear, $xmonth, $xday));//e_BASE."news.php?day.".formatDate($req_year, $req_month, $xday);
|
||
|
||
$day_links[$xday] = e107::getUrl()->create('news/list/day', 'id='.formatDate($xyear, $xmonth, $xday));//e_BASE."news.php?day.".formatDate($req_year, $req_month, $xday);
|
||
}
|
||
}
|
||
|
||
$months[$xyear][$xmonth] = 1;
|
||
}
|
||
|
||
// if we're listing the current year, add the current month to the list regardless of posts
|
||
if ($req_year == $cur_year)
|
||
{
|
||
$month_links[$cur_month] = e107::getUrl()->create('news/list/month', 'id='.formatDate($cur_year, $cur_month));//e_BASE."news.php?month.".formatDate($cur_year, $cur_month);
|
||
}
|
||
|
||
// go over the link array and create the option fields
|
||
|
||
if(!isset($months[$cur_year][$cur_month])) // display current month even if no links available.
|
||
{
|
||
$months[$cur_year][$cur_month] = 1;
|
||
}
|
||
|
||
|
||
// ------------------------
|
||
// create and show calendar
|
||
// ------------------------
|
||
/*
|
||
$menu = "<div style='text-align: center;'><table border='0' cellspacing='7'>";
|
||
$menu .= "<tr><td>$month_selector";
|
||
$menu .= "<div style='text-align:center'>".calendar($req_day, $req_month, $req_year, $day_links, $pref['blogcal_ws'])."</div>";
|
||
$menu .= "<div class='forumheader' style='text-align: center; margin-top:2px;'><span class='smalltext'><a href='$prefix/archive.php'>".BLOGCAL_L2."</a></span></div></td></tr>";
|
||
$menu .= "</table></div>";
|
||
*/
|
||
|
||
|
||
if(deftrue('BOOTSTRAP')) // v2.x
|
||
{
|
||
$month_selector = '<span class="btn-group pull-right float-right float-end"><a class="btn btn-mini btn-default btn-secondary btn-sm btn-xs " href="#blogCalendar" data-slide="prev" data-bs-slide="prev">‹</a>
|
||
<a class="btn btn-mini btn-default btn-secondary btn-sm btn-xs" href="#blogCalendar" data-slide="next" data-bs-slide="next">›</a></span>';
|
||
|
||
$caption = "<span class='inline-text'>".defset('BLOGCAL_L1')." ".$month_selector."</span>";
|
||
|
||
$menu = "<div id='blogCalendar' data-interval='false' class='carousel slide blogcalendar-block text-center'>";
|
||
$menu .= "<div class='blogcalendar-day-selector carousel-inner'>";
|
||
|
||
foreach($months as $year=>$val)
|
||
{
|
||
foreach($val as $month=>$v)
|
||
{
|
||
$menu .= calendar($req_day, $month, $year, varset($links[$year][$month],array()), $pref['blogcal_ws']);
|
||
}
|
||
}
|
||
|
||
$menu .= "</div>";
|
||
$menu .= "<div class='blogcalendar-archive-link' >
|
||
<a class='blogcalendar-archive-link btn btn-small btn-sm btn-primary' href='$prefix/archive.php'>".BLOGCAL_L2."</a>
|
||
</div>
|
||
</div>";
|
||
|
||
}
|
||
else // BC
|
||
{
|
||
|
||
$month_selector = "<div class='forumheader' style='text-align: center; margin-bottom: 2px;'>";
|
||
$month_selector .= "<select name='activate' onchange='urljump(this.options[selectedIndex].value)' class='tbox'>";
|
||
|
||
foreach($month_links as $index => $val)
|
||
{
|
||
$month_selector .= "<option value='".$val."'";
|
||
$month_selector .= ($index == $req_month)?" selected='selected'": "";
|
||
$month_selector .= ">".$marray[$index]."</option>";
|
||
}
|
||
|
||
$month_selector .= "</select></div>";
|
||
|
||
$menu = "<div class='blogcalendar-block' style='text-align: center; max-width: 100%; overflow: hidden;'>
|
||
<table class='blogcalendar-table' border='0' cellspacing='7' cellpadding='0'>";
|
||
$menu .= "<tr><td class='blogcalendar-month-selector'>".$month_selector;
|
||
$menu .= "<div class='blogcalendar-day-selector' style='text-align:center'>".calendar($req_day, $req_month, $req_year, $day_links, $pref['blogcal_ws'])."</div>";
|
||
$menu .= "<div class='forumheader blogcalendar-archive-link' style='text-align: center; margin-top:2px;'><span class='smalltext'><a class='blogcalendar-archive-link' href='$prefix/archive.php'>".BLOGCAL_L2."</a></span></div></td></tr>";
|
||
$menu .= "</table></div>";
|
||
|
||
$caption = "<span class='form-inline'>".BLOGCAL_L1." ".$req_year."</span>";
|
||
}
|
||
|
||
$cached = $ns->tablerender($caption, $menu, 'blog_calendar', true);
|
||
// echo "day= ".$req_day. " month=".$req_month." year=".$req_year." links=".print_a($day_links)." ws=".$pref['blogcal_ws'];
|
||
e107::getCache()->set($cString, $menu);
|
||
|
||
}
|
||
|
||
echo $cached;
|