FundacionLQDVI_WebCongresos/www/modules/mod_seminar/mod_seminar.php

1 line
16 KiB
PHP

<?php
//********************************************
//**** Seminar for joomla! - Modul ***
//**** Version 1.2.2 ***
//********************************************
//**** Copyright (c) Dirk Vollmar ***
//**** 2009 ***
//**** joomla@vollmar.ws ***
//**** All rights reserved ***
//********************************************
//** Released under GNU/GPL License *
//** http://www.gnu.org/licenses/gpl.html *
//********************************************
defined('_JEXEC') or die('Restricted access');
$app = JFactory::getApplication();
$database = &JFactory::getDBO();
$my = &JFactory::getuser();
$config = &JComponentHelper::getParams('com_seminar');
$offset = $app->getCfg('offset');
if($config->get('sem_p065',0)>0) {
$jahr = date("Y");
$sombeginn = mktime(2,0,0,3,31-date('w',mktime(2,0,0,3,31,$jahr)),$jahr);
$somende = mktime(2,0,0,10,31-date('w',mktime(2,0,0,10,31,$jahr)),$jahr);
$aktuell = time();
if($aktuell>$sombeginn AND $aktuell<$somende) {
$offset++;
}
}
$date = JFactory::getDate();
$date->setOffset($offset);
$neudatum = $date->toformat();
$html = "";
$anzahl = $params->get('sem_m066',5);
if(!function_exists('sem_m003')) {
function sem_m003($row,$params) {
$html = "";
if($params->get('sem_m067',0)>0 AND $row->showbegin>0) {
$html .= "<i>".JText::_('SEM_M053')."</i>: ";
$htxt = JHTML::_('date',$row->begin,$params->get('sem_m043','%d.%m.%Y, %H:%M'),0);
if($row->cancelled>0) {
$htxt = "<del>".$htxt."</del>";
}
$html .= $htxt."<br />";
}
if($params->get('sem_m068',0)>0 AND $row->showend>0) {
$html .= "<i>".JText::_('SEM_M054')."</i>: ";
$htxt = JHTML::_('date',$row->end,$params->get('sem_m043','%d.%m.%Y, %H:%M'),0);
if($row->cancelled>0) {
$htxt = "<del>".$htxt."</del>";
}
$html .= $htxt."<br />";
}
if($params->get('sem_m069',0)>0 AND $row->showbooked>0) {
$html .= "<i>".JText::_('SEM_M055')."</i>: ";
$htxt = JHTML::_('date',$row->booked,$params->get('sem_m043','%d.%m.%Y, %H:%M'),0);
if($row->cancelled>0) {
$htxt = "<del>".$htxt."</del>";
}
$html .= $htxt."<br />";
}
if($params->get('sem_m070',0) > 0) {
$html .= "<i>".JText::_('SEM_M057')."</i>: ".JHTML::_('date',$row->publishdate,$params->get('sem_m043','%d.%m.%Y, %H:%M'),0)."<br />";
}
if($params->get('sem_m079',0) > 0) {
$htxt = str_replace(array("\r\n", "\n", "\r"),', ',trim($row->place));
$html .= "<i>".JText::_('SEM_M080')."</i>: ".htmlspecialchars($htxt)."<br />";
}
if($params->get('sem_m071',0) > 0) {
$html .= "<i>".htmlspecialchars($row->shortdesc)."</i><br />";
}
return $html;
}
}
if(!function_exists('sem_m001')) {
function sem_m001($database,$my,$art,$params,$neudatum) {
$where = array();
$utype = strtolower($my);
switch( $utype ) {
case "registered":
$reglevel = 2;
break;
case "author":
$reglevel = 2;
break;
case "editor":
$reglevel = 2;
break;
case "publisher":
$reglevel = 2;
break;
case "manager":
$reglevel = 3;
break;
case "administrator":
$reglevel = 3;
break;
case "super administrator":
$reglevel = 3;
break;
default:
$reglevel = 1;
break;
}
$database->setQuery("SELECT id, access FROM #__categories WHERE section='com_seminar'");
$cats = $database->loadObjectList();
$allowedcat = array();
foreach($cats AS $cat) {
if($cat->access<$reglevel) {
$allowedcat[] = $cat->id;
}
}
if(count($allowedcat)>0) {
$allowedcat = implode(',',$allowedcat);
$where[] = "catid IN ($allowedcat)";
}
$where[] = "published = '1'";
$where[] = "pattern = ''";
if($params->get('sem_m050','') != "") {
$temp = explode(" ",$params->get('sem_m050',''));
$temq = array();
foreach($temp AS $el) {
$temq[] .= "catid='".$el."'";
}
$where[] = implode(" OR ",$temq);
}
if($params->get('sem_m082','') != "") {
$temp = explode(" ",$params->get('sem_m082',''));
$temq = array();
foreach($temp AS $el) {
$temq[] .= "publisher='".$el."'";
}
$where[] = implode(" OR ",$temq);
}
switch ($art) {
case "0":
$showend = "begin";
break;
case "1":
$showend = "booked";
break;
default:
$showend = "end";
break;
}
switch ($params->get('sem_m046',0)) {
case 0:
$where[] = "$showend > '$neudatum'";
break;
case 1:
$where[] = "$showend <= '$neudatum'";
break;
}
return $where;
}
}
if(!function_exists('sem_m002')) {
function sem_m002($id) {
$database = &JFactory::getDBO();
$database->setQuery( "SELECT * FROM #__sembookings WHERE semid='".$id."'" );
$temps = $database->loadObjectList();
$gebucht = 0;
$zertifiziert = 0;
$bezahlt = 0;
foreach($temps as $el) {
$gebucht = $gebucht + $el->nrbooked;
$zertifiziert = $zertifiziert + $el->certificated;
$bezahlt = $bezahlt + $el->paid;
}
$zurueck->booked = $gebucht;
$zurueck->certificated = $zertifiziert;
$zurueck->paid = $bezahlt;
$zurueck->number = count($temps);
return $zurueck;
}
}
$html = "";
$index = "";
if($params->get('sem_m074',0) > 0) {
$html .= "<marquee height=\"".$params->get('sem_m023', 150)."px\" align=\"left\" behavior=\"".$params->get('sem_m017', 'scroll')."\" direction=\"".$params->get('sem_m021', 'up')."\" scrollamount=\"".$params->get('sem_m015', 1)."\" scrolldelay=\"".$params->get('sem_m019', 50)."\" truespeed onmouseover=\"this.stop();\" onmouseout=\"this.start();\">";
}
switch($params->get('sem_m039',0)) {
case "0";
$werte = array();
if($params->get('sem_m035',0) > 0) {
$database->setQuery( "SELECT * FROM #__seminar WHERE published = '1' AND pattern = ''" );
$rows = $database->loadObjectList();
$rows[0]->header = JTEXT::_('SEM_M003');
$werte[] = $rows;
}
if($params->get('sem_m037',0) > 0) {
$database->setQuery( "SELECT * FROM #__seminar WHERE published = '1' AND pattern = '' AND end > '$neudatum'" );
$rows = $database->loadObjectList();
$rows[0]->header = JTEXT::_('SEM_M026');
$werte[] = $rows;
}
if($params->get('sem_m036',0) > 0) {
$database->setQuery( "SELECT * FROM #__seminar WHERE published = '1' AND pattern = '' AND end <= '$neudatum'" );
$rows = $database->loadObjectList();
$rows[0]->header = JTEXT::_('SEM_M025');
$werte[] = $rows;
}
foreach($werte AS $wert) {
$hits = 0;
$bookings = 0;
$certificated = 0;
$courses = 0;
$paid = 0;
$number = 0;
$free = 0;
$html .= "<b>".$wert[0]->header."</b><br />";
foreach($wert as $row) {
$gebucht = sem_m002($row->id);
$hits += $row->hits;
$bookings += $gebucht->booked;
$freetemp = $row->maxpupil - $gebucht->booked;
if($freetemp>0) {
$free += $freetemp;
}
$certificated += $gebucht->certificated;
$paid += $gebucht->paid;
$number += $gebucht->number;
$courses += 1;
}
$html .= JTEXT::_('SEM_M010').": ".$courses."<br />";
if($params->get('sem_m034',0) > 0) {
$html .= JTEXT::_('SEM_M004').": ".$hits."<br />";
}
if($params->get('sem_m028',0) > 0) {
$html .= JTEXT::_('SEM_M005').": ".$bookings."<br />";
}
if($params->get('sem_m033',0) > 0) {
$html .= JTEXT::_('SEM_M001').": ".$free."<br />";
}
if($params->get('sem_m029',0) > 0) {
$html .= JTEXT::_('SEM_M006').": ".$number."<br />";
}
if($params->get('sem_m030',0) > 0) {
$html .= JTEXT::_('SEM_M007').": ".$paid."<br />";
}
if($params->get('sem_m031',0) > 0) {
$html .= JTEXT::_('SEM_M008').": ".$certificated."<br />";
}
$html .= "<br />";
}
break;
case "1":
$where = sem_m001($database,$my->usertype,$config->get('sem_p064',2),$params,$neudatum);
$limit = "";
if($params->get('sem_m081',0)<1) {
$limit = "\nLIMIT ".$params->get('sem_m066',5);
}
$sortierung = array("begin","end","booked","publishdate","hits","bookedpupil","certificated","grade","maxpupil");
$richtung = array(" ASC"," DESC");
$database->setQuery( "SELECT * FROM #__seminar"
. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
. "\nORDER BY " . $sortierung[$params->get('sem_m052',0)] . $richtung[$params->get('sem_m063',1)]
. $limit
);
$rows = $database->loadObjectList();
if($params->get('sem_m081',0)==1) {
$neu = array();
$rox = array();
$max = $params->get('sem_m066',5);
if(count($rows)<$max) {
$max=count($rows);
}
while(count($neu)<$max) {
srand(microtime()*1000000);
$zufall = rand(0,count($rows)-1);
if(!in_array($zufall,$neu)) {
$neu[] = $zufall;
}
}
sort($neu);
foreach($neu AS $el) {
$rox[] = $rows[$el];
}
$rows = $rox;
}
foreach($rows AS $row) {
$buchdate = "";
if($my->id>0) {
$database->setQuery("SELECT * FROM #__sembookings WHERE semid='$row->id' AND userid='$my->id'");
$temp = $database->loadObjectList();
if(count($temp)>0) {
$buchdate = $temp[0]->bookingdate;
}
}
$gebucht = sem_m002($row->id);
if($params->get('sem_m078',0)>0) {
$html .= "<a href='".JROUTE::_('index.php?option=com_seminar&task=3&cid='.$row->id,1,0)."'>";
}
$html .= "<strong>".$row->title;
if($row->cancelled>0) {
$html .= " - ".JText::_('SEM_M009');
} else if($buchdate!="") {
$html .= " - ".JText::_('SEM_M002');
}
$html .= "</strong>";
if($params->get('sem_m078',0)>0) {
$html .= "</a>";
}
$html .= "<br />";
$html .= sem_m003($row,$params);
if($params->get('sem_m034',0) > 0) {
$html .= "<i>".JText::_('SEM_M004')."</i>: ".$row->hits."<br />";
}
if($params->get('sem_m028',0) > 0) {
$html .= "<i>".JText::_('SEM_M005')."</i>: ".$gebucht->booked."<br />";
}
if($params->get('sem_m033',0) > 0) {
$free = $row->maxpupil - $gebucht->booked;
if($free<0) {
$free = 0;
}
$html .= "<i>".JText::_('SEM_M001')."</i>: ".$free."<br />";
}
if($params->get('sem_m029',0) > 0) {
$html .= "<i>".JText::_('SEM_M006')."</i>: ".$gebucht->number."<br />";
}
if($params->get('sem_m030',0) > 0) {
$html .= "<i>".JText::_('SEM_M007')."</i>: ".$gebucht->paid."<br />";
}
if($params->get('sem_m031',0) > 0) {
$html .= "<i>".JText::_('SEM_M008')."</i>: ".$gebucht->certificated."<br />";
}
$html .= "<br />";
}
break;
case "2":
// Kalender
JHTML::_('behavior.tooltip');
$monatidx = JRequest::getInt('sem_midx',0);
$jahridx = JRequest::getInt('sem_jidx',0);
$startdatum = mktime(0,0,0,date('m')+$monatidx, 1, date('Y')+$jahridx);
$monatkal = date('m',$startdatum);
$jahrkal = date('Y',$startdatum);
$monatstage = $monatkal==2 ? ($jahrkal % 4 ? 28 : ($jahrkal % 100 ? 29 : ($jahrkal % 400 ? 28:29))) : (($monatkal-1) % 7 % 2 ? 30 : 31);
$where = sem_m001($database,$my->usertype,$config->get('sem_p064',2),$params,$neudatum);
$where[] = "begin >= '".$jahrkal."-".$monatkal."-01 00:00:00'";
$where[] = "begin <= '".$jahrkal."-".$monatkal."-".$monatstage." 23:59:59'";
$database->setQuery( "SELECT * FROM #__seminar"
. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
. "\nORDER BY begin"
);
$rows = $database->loadObjectList();
$database->setQuery("SELECT semid AS id FROM #__sembookings WHERE (userid='$my->id' AND userid>0)");
$gebucht = $database->loadObjectList();
$html = "<center><table style=\"".$params->get('sem_m084','')."\">";
$url_query = array_diff_key(JRequest::get('get'),array('sem_midx'=>0,'sem_jidx'=>0));
$url_query = http_build_query($url_query,"","&amp;");
if($url_query!="") {
$url_query .= "&amp;";
}
$vmonat = "sem_midx=".($monatidx-1)."&amp;sem_jidx=".$jahridx;
$nmonat = "sem_midx=".($monatidx+1)."&amp;sem_jidx=".$jahridx;
$vjahr = "sem_midx=".$monatidx."&amp;sem_jidx=".($jahridx-1);
$njahr = "sem_midx=".$monatidx."&amp;sem_jidx=".($jahridx+1);
$monat = gmmktime(0,0,0,$monatkal,1,$jahrkal);
$monatsname = date('F',$monat);
$html .= "<tr><td colspan=\"7\" style=\"".$params->get('sem_m089','')."\"><a href=\"".JROUTE::_('index.php?'.$url_query.$vjahr,1,0)."\" style=\"".$params->get('sem_m091','')."\">&laquo;</a>&nbsp;<a href=\"".JROUTE::_('index.php?'.$url_query.$vmonat,1,0)."\" style=\"".$params->get('sem_m091','')."\">&lsaquo;</a>&nbsp;&nbsp;".JTEXT::_($monatsname)." ".$jahrkal."&nbsp;&nbsp;<a href=\"".JROUTE::_('index.php?'.$url_query.$nmonat,1,0)."\" style=\"".$params->get('sem_m091','')."\">&rsaquo;</a>&nbsp;<a href=\"".JROUTE::_('index.php?'.$url_query.$njahr,1,0)."\" style=\"".$params->get('sem_m091','')."\">&raquo;</a></td></tr>";
$html .= "<tr>";
for($i = 0; $i < 7; $i++) {
$tag = ($i + $params->get('sem_m088',1) + 3) * 86400;
$html .= "<td style=\"".$params->get('sem_m090','')."\">".substr(gmstrftime('%A',$tag),0,2)."</td>";
}
$html .= "</tr>";
$html .= "<tr>";
$tag = strftime("%w",$monat);
$leertage = ($tag + 7 - $params->get('sem_m088',1)) % 7;
if($leertage>0) {
for($i=1;$i<=$leertage;$i++) {
$html .= "<td style=\"".$params->get('sem_m085','')."\">&nbsp;</td>";
}
}
$spalten = $leertage;
$index = "&sem_midx=".$monatidx."&sem_jidx=".$jahridx;
for($i=1;$i<=$monatstage;$i++) {
if($spalten==7) {
$html .= "</tr><tr>";
$spalten = 0;
}
$temp = $where;
$events = "";
$heutestil = "";
if($jahrkal==date('Y') AND $monatkal==date('m') AND $i==date('d')) {
$heutestil = $params->get('sem_m087','');
}
$tag = $i;
if($tag<10) {
$tag = "0".$tag;
}
$beginn = $jahrkal."-".$monatkal."-".$tag." 00:00:00";
$ende = $jahrkal."-".$monatkal."-".$tag." 23:59:59";
$stil = "style=\"".$params->get('sem_m085','').$heutestil."\"";
foreach($rows AS $row) {
if($row->begin>=$beginn AND $row->begin<=$ende) {
$grafik = "2608";
foreach($gebucht AS $gebid) {
if($gebid->id==$row->id) {
$grafik = "2609";
break;
}
}
$events .= "<a class=\"editlinktip hasTip\" title=\"".htmlspecialchars($row->title)."::".sem_m003($row,$params)."\" style=\"text-decoration: none;\" href='".JROUTE::_('index.php?option=com_seminar&task=3&cid='.$row->id.$index,1,0)."'><img src=\"modules/mod_seminar/images/".$grafik.".png\" border=\"0\"></a>";
}
}
if($events!="") {
$stil = "style=\"".$params->get('sem_m086','').$heutestil."\"";
}
$html .= "<td ".$stil.">".$i."<br />".$events."</td>";
$spalten ++;
}
if($spalten<7) {
$leertage = (7 - $spalten);
for($i=1;$i<=$leertage;$i++) {
$html .= "<td style=\"".$params->get('sem_m085','')."\">&nbsp;</td>";
}
}
$html .= "</tr></table></center>";
break;
}
if($params->get('sem_m074',0)>0) {
$html .= "</marquee>";
}
if($params->get('sem_m075',0)>0 AND $params->get('sem_m039',0)>0) {
$html .= "<hr style='height:1px;color:#808080;background-color:#808080;border:0px;'><a href='".JROUTE::_('index.php?option=com_seminar'.$index,1,0)."'><b>".JText::_('SEM_M076')."</b></a>";
}
echo $html;
?>