1
0
mirror of https://github.com/e107inc/e107.git synced 2025-01-17 20:58:30 +01:00
php-e107/e107_plugins/blogcalendar_menu/blogcalendar_menu.php
2021-12-03 14:58:33 -08:00

224 lines
8.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;