| Server IP : 180.180.241.3 / Your IP : 216.73.216.35 Web Server : Microsoft-IIS/7.5 System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/AppServ/www/news/components/com_spidercalendar/models/ |
Upload File : |
<?php
/**
* @package Spider Calendar
* @author Web-Dorado
* @copyright (C) 2011 Web-Dorado. All rights reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
**/
Defined ('_JEXEC') or die();
jimport( 'joomla.application.component.model' );
class spidercalendarModelspidercalendar extends JModel
{
function Month_num($month_name)
{
for( $month_num=1; $month_num<=12; $month_num++ )
{
if (date( "F", mktime(0, 0, 0, $month_num, 1, 0 ) ) == $month_name)
{
return $month_num;
}
}
}
function GetNextDate($beginDate,$repeat)
{
//explode the date by "-" and storing to array
$date_parts1=explode("-", $beginDate);
//gregoriantojd() Converts a Gregorian date to Julian Day Count
$start_date=gregoriantojd($date_parts1[1], $date_parts1[2], $date_parts1[0]);
return jdtogregorian($start_date+$repeat);
}
function daysDifference($beginDate,$endDate)
{
//explode the date by "-" and storing to array
$date_parts1=explode("-", $beginDate);
$date_parts2=explode("-", $endDate);
//gregoriantojd() Converts a Gregorian date to Julian Day Count
$start_date=gregoriantojd($date_parts1[1], $date_parts1[2], $date_parts1[0]);
$end_date=gregoriantojd($date_parts2[1], $date_parts2[2], $date_parts2[0]);
return $end_date-$start_date;
}
function showcalendar()
{
$module = JRequest::getVar( "module_id");
$date=JRequest::getVar( "date".$module."",date("Y").'-'.$this->Month_num(date("F")).'-'.date("d"));
$calendar =JRequest::getVar('calendar_id',0);
$session =& JFactory::getSession();
$date=JRequest::getVar( "date".$module."",date("Y").'-'.$this->Month_num(date("F")).'-'.date("d"));
$year=substr( $date,0,4);
$month=substr( $date,5,2);
$date_format=$session->get( 'date_format'.$module);
$option=JRequest::getVar('option');
$id=JRequest::getVar('id');
$db =& JFactory::getDBO();
$query="SELECT * FROM #__spidercalendar_event WHERE published=1 and ((date<='".$db->getEscaped($date)."') or ( date_end is Null and date='".$db->getEscaped($date)."' ) ) " ;
if($calendar!=0)
{
$query.=" AND calendar=$calendar ";
}
$query.=" ORDER BY time ASC ";
$db->setQuery($query );
$rows = $db->loadAssocList();
$id_array=array();
$s = count($rows);
$array_days=array();
$array_days1=array();
$title=array();
$title1=array();
$eventIDs=array();
///mec FOR
for($i=1; $i<=$s; $i++)
{
if($rows[$i-1]['repeat_method']!='no_repeat' and $rows[$i-1]['date_end']=='0000-00-00' )
$d_end=((int)substr( $rows[$i-1]['date'],0,4)+40).substr( $rows[$i-1]['date'],4,6);
else
$d_end=$rows[$i-1]['date_end'];
$date_month=(int)substr( $rows[$i-1]['date'],5,2);
$date_end_month=(int)substr( $d_end,5,2);
$date_day=(int)substr( $rows[$i-1]['date'],8,2);
$date_end_day=(int)substr( $d_end,8,2);
//echo $date_day;
$date_year_month=(int)(substr( $rows[$i-1]['date'],0,4).substr( $rows[$i-1]['date'],5,2));
$date_end_year_month=(int)(substr( $d_end,0,4).substr( $d_end,5,2));
$year_month=(int)($year.$month);
$repeat=$rows[$i-1]['repeat'];
if ($repeat=="")
$repeat=1;
$start_date = $rows[$i-1]['date'];
//echo $date_month.'<br>' ;
//echo (int)$month.'<br>';
$weekly=$rows[$i-1]['week'];
$weekly_array=explode(',',$weekly);
$date_days=array();
$weekdays_start=array();
$weekdays=array();
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////// NO Repeat /////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if($rows[$i-1]['repeat_method']=='no_repeat')
{
$date_days[]=$date_day;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////// Repeat Daily /////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if($rows[$i-1]['repeat_method']=='daily')
{
$t = $this->daysDifference($rows[$i-1]['date'],$d_end);
for($k=1;$k<=$t/$repeat;$k++){
$next_date=$this->GetNextDate($start_date,$repeat);
$next_date_array=explode('/',$next_date);
if((int)$month==$date_month && (int)substr($date_year_month,0,4)==(int)$year)
$date_days[0]=$date_day;
if((int)$month==$next_date_array[0] && (int)$year==$next_date_array[2])
$date_days[]=$next_date_array[1];
$start_date = date("Y-m-d",mktime(0, 0, 0, $next_date_array[0], $next_date_array[1],$next_date_array[2]));
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////// Repeat Weekly ///////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if($rows[$i-1]['repeat_method']=='weekly')
{
for($j=0; $j<=6;$j++)
{
if( in_array(date("D", mktime(0, 0, 0, $date_month, $date_day+$j, substr($rows[$i-1]['date'],0,4))),$weekly_array))
{ $weekdays_start[]=$date_day+$j;}
}
for($p=0;$p<count($weekly_array)-1;$p++)
{
$start_date = substr($rows[$i-1]['date'],0,8).$weekdays_start[$p];
$t = $this->daysDifference($rows[$i-1]['date'],$d_end);
$r=0;
for($k=1;$k<$t/$repeat;$k++){
$start_date_array[]=$start_date;
$next_date=$this->GetNextDate($start_date,$repeat* 7);
$next_date_array=explode('/',$next_date);
if((int)$month==$date_month && (int)substr($date_year_month,0,4)==(int)$year)
$date_days[0]=$weekdays_start[$p];
if((int)$month==$next_date_array[0] && (int)$year==$next_date_array[2])
if((int)$year>(int)substr($date_year_month,0,4)){
$weekdays[]=$next_date_array[1];
}
else
{
$weekdays[]=$next_date_array[1];
}
$start_date = date("Y-m-d",mktime(0, 0, 0, $next_date_array[0], $next_date_array[1],$next_date_array[2]));
if($next_date_array[2]>(int)substr($d_end,0,4))
break;
}
$date_days=array_merge($weekdays,$date_days);
}
$repeat= $repeat * 7;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////// Repeat Monthly ///////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if($rows[$i-1]['repeat_method']=='monthly')
{
$month_days = date('t',mktime(0, 0, 0, $month, $date_day, $year));
if($date_month<(int)$month || (int)substr($date_year_month,0,4)<$year)
$date_day=1;
if($year>(int)substr($date_year_month,0,4))
$date_year_month = $year.'00';
$p=(int)substr($date_year_month,4,2);
if((int)substr($date_year_month,0,4)!=(int)substr($date_end_year_month,0,4) )
$end = (int)substr($date_end_year_month,4,2)+12;
else
$end = (int)substr($date_end_year_month,4,2);
for($k=1; $k<=$end;$k++)
{
if((int)$month==$p and $rows[$i-1]['month_type']==1)
{
$date_days[0]=$rows[$i-1]['month'];
}
if($p==(int)$month and $rows[$i-1]['month_type']==2)
{
if($rows[$i-1]['monthly_list']!='last'){
for($j=$rows[$i-1]['monthly_list']; $j<$rows[$i-1]['monthly_list']+7;$j++)
{
if(date("D", mktime(0, 0, 0, $month, $j, $year)) == $rows[$i-1]['month_week'])
{
if($j>=$date_day)
$date_days[0]=$j;
}
}
}
else
{
for($j=1; $j<$month_days;$j++)
{
if(date("D", mktime(0, 0, 0, $month, $j, $year)) == $rows[$i-1]['month_week'])
{
if($j>=$date_day)
$date_days[0]=$j;
}
}
}
}
if($year>(int)substr($date_year_month,0,4))
$p=1;
$p=$p+$repeat;
}
$repeat=32;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////// Repeat Yearly ///////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if($rows[$i-1]['repeat_method']=='yearly')
{
$month_days = date('t',mktime(0, 0, 0, $month, $date_day, $year));
$end = substr($date_end_year_month,0,4)-substr($date_year_month,0,4)+1;
if(substr($date_year_month,0,4)<$year)
$date_day=1;
for($k=0; $k<=$end; $k+=$repeat) {
if((int)$month==$rows[$i-1]['year_month'] and $rows[$i-1]['month_type']==1 and $year==substr($date_year_month,0,4)+$k)
{
$date_days[0]=$rows[$i-1]['month'];
}
}
for($k=0; $k<=$end; $k+=$repeat) {
if((int)$month==$rows[$i-1]['year_month'] and $rows[$i-1]['month_type']==2 and $year==substr($date_year_month,0,4)+$k)
{
if($rows[$i-1]['monthly_list']!='last'){
for($j=$rows[$i-1]['monthly_list']; $j<$rows[$i-1]['monthly_list']+7;$j++)
{
if(date("D", mktime(0, 0, 0, $month, $j, $year)) == $rows[$i-1]['month_week'])
{
$date_days[0]=$j;
}
}
}
else
{
for($j=1; $j<=$month_days;$j++)
{
if(date("D", mktime(0, 0, 0, $month, $j, $year)) == $rows[$i-1]['month_week'])
{
$date_days[0]=$j;
}
}
}
}
}
$repeat=32;
}
$used=array();
foreach($date_days as $date_day)
{
if($date_month==$month)
{
if(in_array($date_day, $used))
continue;
else
array_push($used, $date_day);
if(in_array($date_day, $array_days))
{
$key = array_search($date_day, $array_days);
$title_num[$date_day]++;
if($rows[$i-1]['text_for_date']!="")
$array_days1[$key] = $date_day;
$eventIDs[$date_day] = $eventIDs[$date_day].$rows[$i-1]['id'].'<br>';
}
else
{
$array_days[] = $date_day;
$key = array_search($date_day, $array_days);
if($rows[$i-1]['text_for_date']!="")
$array_days1[$key] = $date_day;
$title_num[$date_day]=1;
$eventIDs[$date_day] = $rows[$i-1]['id'].'<br>';
}
//$date_day=$date_day+$repeat;
}
if($date_end_month>0 and $date_year_month==$date_end_year_month and $date_end_year_month==$year_month )
for($j=$date_day;$j<=$date_end_day;$j=$j+$repeat)
{
if(in_array($j, $used))
continue;
else
array_push($used, $j);
if(in_array($j, $array_days))
{
$key = array_search($j, $array_days);
$title_num[$j]++;
if($rows[$i-1]['text_for_date']!="")
$array_days1[$key] = $j;
$eventIDs[$j] = $eventIDs[$j].$rows[$i-1]['id'].'<br>';
}
else
{
$array_days[] = $j;
$key = array_search($j, $array_days);
if($rows[$i-1]['text_for_date']!="")
$array_days1[$key] = $j;
$title_num[$j]=1;
$eventIDs[$j] = $rows[$i-1]['id'].'<br>';
}
}
if($date_end_month>0 and $date_year_month<$date_end_year_month and $date_year_month==$year_month)
for($j=$date_day;$j<=31;$j=$j+$repeat)
{
if(in_array($j, $used))
continue;
else
array_push($used, $j);
if(in_array($j, $array_days))
{
$key = array_search($j, $array_days);
$title_num[$j]++;
if($rows[$i-1]['text_for_date']!="")
$array_days1[$key] = $j;
$eventIDs[$j] = $eventIDs[$j].$rows[$i-1]['id'].'<br>';
}
else
{
$array_days[] = $j;
$key = array_search($j, $array_days);
if($rows[$i-1]['text_for_date']!="")
$array_days1[$key] = $j;
$title_num[$j]=1;
$eventIDs[$j] = $rows[$i-1]['id'].'<br>';
}
}
if($date_end_month>0 and $date_year_month<$date_end_year_month and $date_end_year_month==$year_month)
for($j=$date_day;$j<=$date_end_day;$j=$j+$repeat)
{
if(in_array($j, $used))
continue;
else
array_push($used, $j);
if(in_array($j, $array_days))
{
$key = array_search($j, $array_days);
$title_num[$j]++;
if($rows[$i-1]['text_for_date']!="")
$array_days1[$key] = $j;
$eventIDs[$j] = $eventIDs[$j].$rows[$i-1]['id'].'<br>';
}
else
{
$array_days[] = $j;
$key = array_search($j, $array_days);
if($rows[$i-1]['text_for_date']!="")
$array_days1[$key] = $j;
$title_num[$j]=1;
$eventIDs[$j] = $rows[$i-1]['id'].'<br>';
}
}
if($date_end_month>0 and $date_year_month<$date_end_year_month and $date_end_year_month>$year_month and $date_year_month<$year_month )
for($j=$date_day;$j<=31;$j=$j+$repeat)
{
if(in_array($j, $used))
continue;
else
array_push($used, $j);
if(in_array($j, $array_days))
{
$key = array_search($j, $array_days);
$title_num[$j]++;
if($rows[$i-1]['text_for_date']!="")
$array_days1[$key] = $j;
$eventIDs[$j] = $eventIDs[$j].$rows[$i-1]['id'].'<br>';
}
else
{
$array_days[] = $j;
$key = array_search($j, $array_days);
if($rows[$i-1]['text_for_date']!="")
$array_days1[$key] = $j;
$title_num[$j]=1;
$eventIDs[$j] = $rows[$i-1]['id'].'<br>';
}
}
}
}
if ($db->getErrorNum())
{
echo $db->stderr();
return false;
}
$meta_content="";
foreach($rows as $row)
$meta_content.=$row['title'].",";
$document=& JFactory::getDocument();
$document->setMetadata("keywords", $meta_content.$document->getMetadata("keywords"));
return array($rows,$option,$eventIDs);
}
}
?>