FundacionLQDVI_WebCongresos/www/administrator/components/com_seminar/admin.seminar.php

1343 lines
43 KiB
PHP

<?php
//*******************************************
//*** Seminar for joomla! ***
//*** Version 1.3.0 ***
//*******************************************
//*** Copyright (c) Dirk Vollmar ***
//*** 2004 / 2009 ***
//*** joomla@vollmar.ws ***
//*** All rights reserved ***
//*******************************************
//* Released under GNU/GPL License *
//* http://www.gnu.org/licenses/gpl.html *
//*******************************************
header("Content-type: text/html; charset=UTF-8");
defined('_JEXEC') or die('Restricted access');
require_once(JApplicationHelper::getPath('admin_html'));
require_once(JApplicationHelper::getPath('class'));
$document = &JFactory::getDocument();
$document->addCustomTag("<link rel=\"stylesheet\" href=\"components/".JRequest::getCmd('option')."/css/icon.css\" type=\"text/css\" />");
$mainframe = JFactory::getApplication();
$task = trim(JRequest::getVar('task','show'));
$cid = JRequest::getVar('cid', array(0));
$uid = JRequest::getVar('uid', array(0));
// ++++++++++++++++++++++++++++++++++
// +++ Auswahl der Aktion +++
// ++++++++++++++++++++++++++++++++++
switch ($task) {
case "10":
// Neue Veranstaltung erstellen
sem_g006(0,2);
break;
case "11":
// Neue Vorlage erstellen
sem_g006(0,3);
break;
case "12":
// Veranstaltung bearbeiten
sem_g006($cid[0],2);
break;
case "13":
// Vorlage bearbeiten
sem_g006($cid[0],3);
break;
case "14":
// Veranstaltung speichern
sem_g007(2);
break;
case "15":
// Vorlage speichern
sem_g007(3);
break;
case "16":
// Veranstaltung loeschen
sem_g023($cid,2);
break;
case "17":
// Vorlage loeschen
sem_g023($cid,3);
break;
case "18":
// Veranstaltung publishen
sem_g024($cid,1,2);
break;
case "19":
// Vorlage publishen
sem_g024($cid,1,3);
break;
case "20":
// Veranstaltung unpublishen
sem_g024($cid,0,2);
break;
case "21":
// Vorlage unpublishen
sem_g024($cid,0,3);
break;
case "22":
// Veranstaltung duplizieren
sem_g009($cid,2);
break;
case "23":
// Vorlage duplizieren
sem_g009($cid,3);
break;
case "24":
// Kurs absagen
sem_g025($cid,1);
break;
case "25":
// Absage zuruecknehmen
sem_g025($cid,0);
break;
case "26":
// Teilnehmer zertifizieren
sem_g013($cid,$uid);
break;
case "27":
// Bezahlung markieren
sem_g012($cid,$uid);
break;
case "2":
// Veranstaltungsuebersicht anzeigen
sem_g027();
break;
case "28":
// Buchung loeschen
sem_g028($cid,$uid);
break;
case "29":
// Teilnehmer anzeigen
sem_g029($uid);
break;
case "4":
// Gesamtstatistik anzeigen
sem_g030();
break;
case "30":
// Einzelstatistik anzeigen
sem_g031();
break;
case "36":
// Veranstaltungen drucken
sem_g018();
break;
case "35":
// Zertifikat drucken
sem_g019($uid);
break;
case "34":
// Teilnehmerliste drucken
sem_f052(4);
break;
case "33":
// Unterschriftenliste drucken
sem_f052(3);
break;
case "32":
// CSV-Datei herunterladen
sem_f048();
break;
case "1":
// Vorlagenuebersicht anzeigen
sem_g032();
break;
case "3":
// Einstellungen anzeigen
sem_g033();
break;
case "31":
// Eintellungen speichern
sem_g034();
break;
default:
// Veranstaltungsuebersicht anzeigen
sem_g027();
break;
}
echo sem_f062()."\n<br />".sem_f028();
// ++++++++++++++++++++++++++++++++++
// +++ Kurse editieren +++
// ++++++++++++++++++++++++++++++++++
function sem_g006($uid,$art) {
if($art==2) {
if($uid==0) {
TOOLBAR_seminar::_NEW();
} else {
TOOLBAR_seminar::_EDIT();
}
} else {
if($uid==0) {
TOOLBAR_seminar::_TNEW();
} else {
TOOLBAR_seminar::_TEDIT();
}
}
$database = &JFactory::getDBO();
$my = &JFactory::getuser();
$vorlage = JRequest::getInt('vorlage',0);
if($vorlage>0) {
$uid = $vorlage;
}
$args = func_get_args();
if(count($args)>2) {
$row = $args[2];
} else {
$row = new mosSeminar($database);
$row->load($uid);
}
if($vorlage>0) {
$row->id = "";
$row->pattern = "";
}
$row->vorlage = $vorlage;
// Zeit festlegen
if ($uid==0) {
$row->begin = date( "Y-m-d" )." 14:00:00";
$row->end = date( "Y-m-d" )." 17:00:00";
$row->booked = date( "Y-m-d" )." 12:00:00";
$row->publisher = $my->id;
$row->semnum = sem_f064(date('Y'));
}
$zeit = split(" ",$row->begin);
$row->begin_date = $zeit[0];
$zeit = split(":",$zeit[1]);
$row->begin_hour = $zeit[0];
$row->begin_minute = $zeit[1];
$zeit = split(" ",$row->end);
$row->end_date = $zeit[0];
$zeit = split(":",$zeit[1]);
$row->end_hour = $zeit[0];
$row->end_minute = $zeit[1];
$zeit = split(" ",$row->booked);
$row->booked_date = $zeit[0];
$zeit = split(":",$zeit[1]);
$row->booked_hour = $zeit[0];
$row->booked_minute = $zeit[1];
HTML_seminar::sem_g006($row,$art);
}
// ++++++++++++++++++++++++++++++++++
// +++ Kurs speichern +++
// ++++++++++++++++++++++++++++++++++
function sem_g007($art) {
$database = &JFactory::getDBO();
$config = &JComponentHelper::getParams('com_seminar');
$caid = JRequest::getInt('caid',0);
$cancel = JRequest::getInt('cancel',0);
$inform = JRequest::getInt('inform',0);
$infotext = sem_f018(JRequest::getVar('infotext',''));
$deldatei1 = JRequest::getVar('deldatei1',0);
$deldatei2 = JRequest::getVar('deldatei2',0);
$deldatei3 = JRequest::getVar('deldatei3',0);
$deldatei4 = JRequest::getVar('deldatei4',0);
$deldatei5 = JRequest::getVar('deldatei5',0);
$vorlage = JRequest::getInt('vorlage',0);
$id = JRequest::getInt('id',0);
$neudatum = sem_f046();
// Zeit formatieren
$_begin_date = JRequest::getVar('_begin_date','0000-00-00');
$_begin_hour= JRequest::getVar('_begin_hour','00');
$_begin_minute = JRequest::getVar('_begin_minute','00');
$_end_date = JRequest::getVar('_end_date','0000-00-00');
$_end_hour= JRequest::getVar('_end_hour','00');
$_end_minute = JRequest::getVar('_end_minute','00');
$_booked_date = JRequest::getVar('_booked_date','0000-00-00');
$_booked_hour= JRequest::getVar('_booked_hour','00');
$_booked_minute = JRequest::getVar('_booked_minute','00');
if($id>0) {
$kurs = new mosSeminar($database);
$kurs->load($id);
}
if($vorlage>0) {
$kurs = new mosSeminar($database);
$kurs->load($vorlage);
}
$post = JRequest::get('post');
$post['description'] = JRequest::getVar('description', '', 'post', 'string', JREQUEST_ALLOWHTML);
$row = new mosSeminar($database);
$row->load($cid);
if (!$row->bind($post)) {
return JError::raiseError( 500, $row->getError() );
exit();
}
// Zuweisung der aktuellen Zeit
if($id==0) {
$row->publishdate = $neudatum;
}
$row->updated = $neudatum;
if($cancel!=$row->cancelled) {
$tempmail = 9 + $cancel;
$database->setQuery( "SELECT * FROM #__sembookings WHERE semid='$row->id'" );
$rows = $database->loadObjectList();
for ($i=0, $n=count($rows); $i < $n; $i++) {
sem_f050($row->id, $rows[$i]->id, $tempmail);
}
}
$row->cancelled = $cancel;
$row->catid = $caid;
// Zuweisung der Startzeit
if (intval( $_begin_date )) {
$dt = "$_begin_date $_begin_hour:$_begin_minute:00";
} else {
$dt = date( "Y-m-d 14:00:00" );
}
$row->begin = strftime( "%Y-%m-%d %H:%M:%S", strtotime( $dt ) );
// Zuweisung der Endzeit
if (intval( $_end_date)) {
$dt = "$_end_date $_end_hour:$_end_minute:00";
} else {
$dt = date( "Y-m-d 17:00:00" );
}
$row->end = strftime( "%Y-%m-%d %H:%M:%S", strtotime( $dt ) );
// Zuweisung der Buchungszeit
if (intval( $_booked_date)) {
$dt = "$_booked_date $_booked_hour:$_booked_minute:00";
} else {
$dt = date( "Y-m-d 12:00:00" );
}
$row->booked = strftime( "%Y-%m-%d %H:%M:%S", strtotime( $dt ) );
// neue Daten eintragen
$row->description = str_replace('<br>','<br />',$row->description);
$row->description = str_replace('\"','"',$row->description);
$row->description = str_replace("\'","'",$row->description);
$row->semnum = sem_f018($row->semnum);
$row->title = sem_f018($row->title);
$row->target = sem_f018($row->target);
$row->shortdesc = sem_f018($row->shortdesc);
$row->place = sem_f018($row->place);
$row->fees = str_replace(",",".",sem_f018($row->fees));
$row->maxpupil = sem_f018($row->maxpupil);
$row->gmaploc = sem_f018($row->gmaploc);
$row->nrbooked = sem_f018($row->nrbooked);
$row->zusatz1 = sem_f018($row->zusatz1);
$row->zusatz2 = sem_f018($row->zusatz2);
$row->zusatz3 = sem_f018($row->zusatz3);
$row->zusatz4 = sem_f018($row->zusatz4);
$row->zusatz5 = sem_f018($row->zusatz5);
$row->zusatz6 = sem_f018($row->zusatz6);
$row->zusatz7 = sem_f018($row->zusatz7);
$row->zusatz8 = sem_f018($row->zusatz8);
$row->zusatz9 = sem_f018($row->zusatz9);
$row->zusatz10 = sem_f018($row->zusatz10);
$row->zusatz11 = sem_f018($row->zusatz11);
$row->zusatz12 = sem_f018($row->zusatz12);
$row->zusatz13 = sem_f018($row->zusatz13);
$row->zusatz14 = sem_f018($row->zusatz14);
$row->zusatz15 = sem_f018($row->zusatz15);
$row->zusatz16 = sem_f018($row->zusatz16);
$row->zusatz17 = sem_f018($row->zusatz17);
$row->zusatz18 = sem_f018($row->zusatz18);
$row->zusatz19 = sem_f018($row->zusatz19);
$row->zusatz20 = sem_f018($row->zusatz20);
$row->zusatz1hint = sem_f018($row->zusatz1hint);
$row->zusatz2hint = sem_f018($row->zusatz2hint);
$row->zusatz3hint = sem_f018($row->zusatz3hint);
$row->zusatz4hint = sem_f018($row->zusatz4hint);
$row->zusatz5hint = sem_f018($row->zusatz5hint);
$row->zusatz6hint = sem_f018($row->zusatz6hint);
$row->zusatz7hint = sem_f018($row->zusatz7hint);
$row->zusatz8hint = sem_f018($row->zusatz8hint);
$row->zusatz9hint = sem_f018($row->zusatz9hint);
$row->zusatz10hint = sem_f018($row->zusatz10hint);
$row->zusatz11hint = sem_f018($row->zusatz11hint);
$row->zusatz12hint = sem_f018($row->zusatz12hint);
$row->zusatz13hint = sem_f018($row->zusatz13hint);
$row->zusatz14hint = sem_f018($row->zusatz14hint);
$row->zusatz15hint = sem_f018($row->zusatz15hint);
$row->zusatz16hint = sem_f018($row->zusatz16hint);
$row->zusatz17hint = sem_f018($row->zusatz17hint);
$row->zusatz18hint = sem_f018($row->zusatz18hint);
$row->zusatz19hint = sem_f018($row->zusatz19hint);
$row->zusatz20hint = sem_f018($row->zusatz20hint);
$row->file1desc = sem_f018($row->file1desc);
$row->file2desc = sem_f018($row->file2desc);
$row->file3desc = sem_f018($row->file3desc);
$row->file4desc = sem_f018($row->file4desc);
$row->file5desc = sem_f018($row->file5desc);
if($row->id>0 OR $vorlage>0) {
if($deldatei1!=1) {
$row->file1 = $kurs->file1;
$row->file1code = $kurs->file1code;
}
if($deldatei2!=1) {
$row->file2 = $kurs->file2;
$row->file2code = $kurs->file2code;
}
if($deldatei3!=1) {
$row->file3 = $kurs->file3;
$row->file3code = $kurs->file3code;
}
if($deldatei4!=1) {
$row->file4 = $kurs->file4;
$row->file4code = $kurs->file4code;
}
if($deldatei5!=1) {
$row->file5 = $kurs->file5;
$row->file5code = $kurs->file5code;
}
}
if($row->id>0) {
$row->hits = $kurs->hits;
}
$fileext = explode(' ',strtolower($config->get('sem_p057','txt zip pdf')));
$filesize = $config->get('sem_p056',200)*1024;
$fehler = array('','','','','','','','','','');
if(is_file($_FILES['datei1']['tmp_name']) AND $_FILES['datei1']['size']>0) {
if($_FILES['datei1']['size']>$filesize) {
$fehler[0] = str_replace("SEM_FILE",$_FILES['datei1']['name'],JTEXT::_('SEM_0141'));
}
$datei1ext = array_pop(explode( ".",strtolower($_FILES['datei1']['name'])));
if(!in_array($datei1ext,$fileext)) {
$fehler[1] = str_replace("SEM_FILE",$_FILES['datei1']['name'],JTEXT::_('SEM_0142'));
}
if($fehler[0]=="" AND $fehler[1]=="") {
$row->file1 = $_FILES['datei1']['name'];
$row->file1code = base64_encode(file_get_contents($_FILES['datei1']['tmp_name']));
}
}
if(is_file($_FILES['datei2']['tmp_name']) AND $_FILES['datei2']['size']>0) {
if($_FILES['datei2']['size']>$filesize) {
$fehler[2] = str_replace("SEM_FILE",$_FILES['datei2']['name'],JTEXT::_('SEM_0141'));
}
$datei2ext = array_pop(explode( ".",strtolower($_FILES['datei2']['name'])));
if(!in_array($datei2ext,$fileext)) {
$fehler[3] = str_replace("SEM_FILE",$_FILES['datei2']['name'],JTEXT::_('SEM_0142'));
}
if($fehler[2]=="" AND $fehler[3]=="") {
$row->file2 = $_FILES['datei2']['name'];
$row->file2code = base64_encode(file_get_contents($_FILES['datei2']['tmp_name']));
}
}
if(is_file($_FILES['datei3']['tmp_name']) AND $_FILES['datei3']['size']>0) {
if($_FILES['datei3']['size']>$filesize) {
$fehler[4] = str_replace("SEM_FILE",$_FILES['datei3']['name'],JTEXT::_('SEM_0141'));
}
$datei3ext = array_pop(explode( ".",strtolower($_FILES['datei3']['name'])));
if(!in_array($datei3ext,$fileext)) {
$fehler[5] = str_replace("SEM_FILE",$_FILES['datei3']['name'],JTEXT::_('SEM_0142'));
}
if($fehler[4]=="" AND $fehler[5]=="") {
$row->file3 = $_FILES['datei3']['name'];
$row->file3code = base64_encode(file_get_contents($_FILES['datei3']['tmp_name']));
}
}
if(is_file($_FILES['datei4']['tmp_name']) AND $_FILES['datei4']['size']>0) {
if($_FILES['datei4']['size']>$filesize) {
$fehler[6] = str_replace("SEM_FILE",$_FILES['datei4']['name'],JTEXT::_('SEM_0141'));
}
$datei4ext = array_pop(explode( ".",strtolower($_FILES['datei4']['name'])));
if(!in_array($datei4ext,$fileext)) {
$fehler[7] = str_replace("SEM_FILE",$_FILES['datei4']['name'],JTEXT::_('SEM_0142'));
}
if($fehler[6]=="" AND $fehler[7]=="") {
$row->file4 = $_FILES['datei4']['name'];
$row->file4code = base64_encode(file_get_contents($_FILES['datei4']['tmp_name']));
}
}
if(is_file($_FILES['datei5']['tmp_name']) AND $_FILES['datei5']['size']>0) {
if($_FILES['datei5']['size']>$filesize) {
$fehler[8] = str_replace("SEM_FILE",$_FILES['datei5']['name'],JTEXT::_('SEM_0141'));
}
$datei5ext = array_pop(explode( ".",strtolower($_FILES['datei5']['name'])));
if(!in_array($datei5ext,$fileext)) {
$fehler[9] = str_replace("SEM_FILE",$_FILES['datei5']['name'],JTEXT::_('SEM_0142'));
}
if($fehler[8]=="" AND $fehler[9]=="") {
$row->file5 = $_FILES['datei5']['name'];
$row->file5code = base64_encode(file_get_contents($_FILES['datei5']['tmp_name']));
}
}
// Eingaben ueberpruefen
$speichern = TRUE;
if($art==3) {
if(!sem_f067($row->pattern,'leer')) {
$speichern = FALSE;
$fehler[] = JTEXT::_('SEM_2044');
}
} else {
if(!sem_f067($row->semnum,'leer') OR !sem_f067($row->title,'leer') OR $row->catid==0 OR !sem_f067($row->shortdesc,'leer') OR !sem_f067($row->place,'leer')) {
$speichern = FALSE;
$fehler[] = JTEXT::_('SEM_2044');
} elseif(!sem_f067($row->maxpupil,'nummer') OR !sem_f067($row->nrbooked,'nummer')) {
$speichern = FALSE;
$fehler[] = JTEXT::_('SEM_2045');
} else {
$database->setQuery("SELECT id FROM #__seminar WHERE semnum='$row->semnum' AND id!='$row->id'");
$rows = $database->loadObjectList();
if(count($rows)>0) {
$speichern = FALSE;
$htxt = JTEXT::_('SEM_0151');
if($id<1) {
$htxt .= " ".JTEXT::_('SEM_0152');
}
$fehler[] = $htxt;
}
}
}
// Kurs speichern
if($speichern==TRUE) {
if (!$row->check()) {
JError::raiseError( 500, $database->stderr() );
return false;
}
if (!$row->store()) {
JError::raiseError( 500, $database->stderr() );
return false;
}
$row->checkin();
$row->reorder( "catid='$row->catid'" );
}
// Ausgabe der Kurse
$fehlerzahl = array_unique($fehler);
if (count($fehlerzahl)>1) {
$fehler = array_unique($fehler);
if($fehler[0]=="") {
$fehler = array_slice($fehler,1);
}
$fehler = implode("<br />",$fehler);
JError::raiseWarning(1,$fehler);
}
// Ausgabe der Kurse
if(count($fehlerzahl)>1 AND $speichern == TRUE) {
sem_g006($row->id,$art);
} elseif (count($fehlerzahl)>1 AND $speichern == FALSE) {
sem_g006($row->id,$art,$row);
} else {
if($art==2) {
sem_g027();
} else {
sem_g032();
}
}
}
// ++++++++++++++++++++++++++++++++++
// +++ Seminar kopieren +++
// ++++++++++++++++++++++++++++++++++
function sem_g009($cid,$art) {
$database = &JFactory::getDBO();
if (count( $cid )) {
$cids = implode( ',', $cid );
$database->setQuery( "SELECT * FROM #__seminar WHERE id IN ($cids)" );
$rows = $database->loadObjectList();
if ($database->getErrorNum()) {
JError::raiseError(500,$database->stderr());
exit();
}
foreach ($rows as $item) {
$row = new mosseminar( $database );
if (!$row->bind( $item )) {
JError::raiseError( 500, $row->getError() );
exit();
}
$row->id = NULL;
$row->hits = 0;
$row->grade = 0;
$row->certificated = 0;
$row->sid = $item->id;
$unique = "";
if($art==2) {
$unique = sem_f064(date('Y'));
}
$row->semnum = $unique;
if (!$row->check()) {
JError::raiseError( 500, $row->getError() );
return false;
}
if (!$row->store()) {
JError::raiseError( 500, $row->getError() );
return false;
}
}
}
if($art==2) {
sem_g027();
} else {
sem_g032();
}
}
// ++++++++++++++++++++++++++++++++++
// +++ Kursuebersicht anzeigen +++
// ++++++++++++++++++++++++++++++++++
function sem_g027() {
TOOLBAR_seminar::_EVENTS();
$database = &JFactory::getDBO();
jimport('joomla.html.pagination');
$katid = JRequest::getInt('katid',0);
$ordid = JRequest::getInt('ordid',0);
$ricid = JRequest::getInt('ricid',0);
$einid = JRequest::getInt('einid',0);
$search = JRequest::getVar('search','');
$limit = JRequest::getInt('limit',5);
$limitstart = JRequest::getInt('limitstart',0);
$neudatum = sem_f046();
$where = array();
$where[] = "a.pattern = ''";
if ($katid > 0) {
$where[] = "a.catid='$katid'";
}
if ($search) {
$where[] = "LOWER(a.title) LIKE '%$search%' OR LOWER(a.shortdesc) LIKE '%$search%' OR LOWER(a.description) LIKE '%$search%'";
}
switch ($einid) {
case "1":
$where[] = "a.published = '1'";
break;
case "2":
$where[] = "a.published = '0'";
break;
case "3":
$where[] = "a.end > '$neudatum'";
break;
case "4":
$where[] = "a.end <= '$neudatum'";
break;
}
$sorte = array("a.semnum","a.id","a.title","category","a.begin","a.end","a.booked","a.certificated","a.grade","a.maxpupil","a.hits");
$richt = array(" ASC"," DESC");
// get the total number of records
$database->setQuery( "SELECT count(*) FROM #__seminar AS a"
. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
);
$total = $database->loadResult();
if( $total<=$limitstart ) {
$limitstart = $limitstart - $limit;
}
if( $limitstart < 0) {
$limitstart = 0;
}
$ttlimit = "";
if($limit > 0) {
$ttlimit = "\nLIMIT $limitstart, $limit";
}
$pageNav = new JPagination( $total, $limitstart, $limit );
$database->setQuery( "SELECT a.*, cc.title AS category, u.name AS editor"
. "\nFROM #__seminar AS a"
. "\nLEFT JOIN #__categories AS cc ON cc.id = a.catid"
. "\nLEFT JOIN #__users AS u ON u.id = a.checked_out"
. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
. "\nORDER BY " . $sorte[$ordid] . $richt[$ricid]
. $ttlimit
);
$rows = $database->loadObjectList();
// get list of categories
$kategorien[] = JHTML::_('select.option', '0', JTEXT::_('SEM_0027') );
$database->setQuery( "SELECT id AS value, title AS text FROM #__categories WHERE section='com_seminar' ORDER BY ordering" );
$kategorien = array_merge( $kategorien, $database->loadObjectList() );
$clist = JHTML::_('select.genericlist', $kategorien, 'katid', 'class="inputbox" size="1" onchange="document.adminForm.limitstart.value=0;document.adminForm.submit();"',
'value', 'text', $katid );
$sortierung[] = JHTML::_('select.option', '0', JTEXT::_('SEM_0003') );
$sortierung[] = JHTML::_('select.option', '1', JTEXT::_('SEM_0057') );
$sortierung[] = JHTML::_('select.option', '2', JTEXT::_('SEM_0007') );
$sortierung[] = JHTML::_('select.option', '3', JTEXT::_('SEM_0008') );
$sortierung[] = JHTML::_('select.option', '4', JTEXT::_('SEM_0009') );
$sortierung[] = JHTML::_('select.option', '5', JTEXT::_('SEM_0010') );
$sortierung[] = JHTML::_('select.option', '6', JTEXT::_('SEM_0011') );
$sortierung[] = JHTML::_('select.option', '7', JTEXT::_('SEM_0040') );
$sortierung[] = JHTML::_('select.option', '8', JTEXT::_('SEM_0055') );
$sortierung[] = JHTML::_('select.option', '9', JTEXT::_('SEM_0020') );
$sortierung[] = JHTML::_('select.option', '10', JTEXT::_('SEM_0058') );
$olist = JHTML::_('select.genericlist', $sortierung, 'ordid', 'class="inputbox" size="1" onchange="document.adminForm.limitstart.value=0;document.adminForm.submit();"',
'value', 'text', $ordid );
$richtung[] = JHTML::_('select.option', '0', JTEXT::_('SEM_2004') );
$richtung[] = JHTML::_('select.option', '1', JTEXT::_('SEM_2005') );
$rlist = JHTML::_('select.genericlist', $richtung, 'ricid', 'class="inputbox" size="1" onchange="document.adminForm.limitstart.value=0;document.adminForm.submit();"',
'value', 'text', $ricid );
$allekurse[] = JHTML::_('select.option', '0', JTEXT::_('SEM_0028') );
$allekurse[] = JHTML::_('select.option', '1', JTEXT::_('SEM_2014') );
$allekurse[] = JHTML::_('select.option', '2', JTEXT::_('SEM_2021') );
$allekurse[] = JHTML::_('select.option', '3', JTEXT::_('SEM_0039') );
$allekurse[] = JHTML::_('select.option', '4', JTEXT::_('SEM_0037') );
$elist = JHTML::_('select.genericlist', $allekurse, 'einid', 'class="inputbox" size="1" onchange="document.adminForm.limitstart.value=0;document.adminForm.submit();"',
'value', 'text', $einid );
$listen = array($clist, $olist, $rlist, $elist);
HTML_seminar::sem_g027($rows,$listen,$search,$pageNav,$limitstart,$limit);
}
// ++++++++++++++++++++++++++++++++++++
// +++ Kurse oder Vorlagen loeschen +++
// ++++++++++++++++++++++++++++++++++++
function sem_g023($cid,$art) {
$database = &JFactory::getDBO();
if (count( $cid )) {
$cids = implode( ',', $cid );
if($art==2) {
$database->setQuery( "SELECT * FROM #__sembookings WHERE semid IN ($cids)" );
$rows = $database->loadObjectList();
if ($database->getErrorNum()) {
JError::raiseError(500,$database->stderr());
exit();
}
foreach ($rows AS $row) {
sem_f050( $row->semid, $row->id, 4);
}
$database->setQuery( "DELETE FROM #__sembookings WHERE semid IN ($cids)" );
if (!$database->query()) {
JError::raiseError(500,$database->stderr());
exit();
}
}
$database->setQuery( "DELETE FROM #__seminar WHERE id IN ($cids)" );
if (!$database->query()) {
JError::raiseError(500,$database->stderr());
exit();
}
}
if($art==2) {
sem_g027();
} else {
sem_g032();
}
}
// ++++++++++++++++++++++++++++++++++
// +++ Kurse veroeffentlichen +++
// ++++++++++++++++++++++++++++++++++
function sem_g024($cid,$publish,$art) {
$database = &JFactory::getDBO();
$catid = JRequest::getVar('catid',array(0));
if (count( $cid )) {
$cids = implode( ',', $cid );
if($art==2) {
$database->setQuery( "SELECT * FROM #__sembookings WHERE semid IN ($cids)" );
$rows = $database->loadObjectList();
if ($database->getErrorNum()) {
JError::raiseError(500,$database->stderr());
exit();
}
foreach ($rows AS $row) {
If($publish==0) {
sem_f050( $row->semid, $row->id, 4);
} else {
sem_f050( $row->semid, $row->id, 5);
}
}
}
$database->setQuery( "UPDATE #__seminar SET published='$publish' WHERE id IN ($cids) ");
if (!$database->query()) {
JError::raiseError(500,$database->stderr());
exit();
}
}
if($art==2) {
sem_g027();
} else {
sem_g032();
}
}
// ++++++++++++++++++++++++++++++++++
// +++ Kurse absagen +++
// ++++++++++++++++++++++++++++++++++
function sem_g025($cid=null,$cancelled=1) {
$database = &JFactory::getDBO();
$catid = JRequest::getVar('catid',array(0));
if (count( $cid )) {
$cids = implode( ',', $cid );
$database->setQuery( "SELECT * FROM #__sembookings WHERE semid IN ($cids)" );
$rows = $database->loadObjectList();
if ($database->getErrorNum()) {
JError::raiseError(500,$database->stderr());
exit();
}
foreach ($rows AS $row) {
If($cancelled==0) {
sem_f050( $row->semid, $row->id, 9);
} else {
sem_f050( $row->semid, $row->id, 10);
}
}
$database->setQuery( "UPDATE #__seminar SET cancelled='$cancelled' WHERE id IN ($cids) ");
if (!$database->query()) {
JError::raiseError(500,$database->stderr());
exit();
}
}
sem_g027();
}
// +++++++++++++++++++++++++++++++++++
// +++ Teilnehmer am Kurs anzeigen +++
// +++++++++++++++++++++++++++++++++++
function sem_g029($uid) {
TOOLBAR_seminar::_VIEW_BOOK();
$database = &JFactory::getDBO();
$config = &JComponentHelper::getParams('com_seminar');
$kurs = new mosseminar( $database );
$kurs->load( $uid );
$database->setQuery( "SELECT a.*, cc.*, a.id AS sid, a.name AS aname, a.email AS aemail FROM #__sembookings AS a LEFT JOIN #__users AS cc ON cc.id = a.userid WHERE a.semid = '$kurs->id' ORDER BY a.id");
$rows = $database->loadObjectList();
HTML_seminar::sem_g029($kurs,$rows,$uid);
}
// ++++++++++++++++++++++++++++++++++
// +++ Buchungen loeschen +++
// ++++++++++++++++++++++++++++++++++
function sem_g028($cid,$uid) {
$mainframe = JFactory::getApplication();
$database = &JFactory::getDBO();
// Loeschvorgang
if (count( $cid )) {
$cids = implode( ',', $cid );
// Zaehler der gebuchten Kurse zuruecksetzen
$database->setQuery( "SELECT * FROM #__sembookings WHERE id IN ($cids)" );
$rows = $database->loadObjectList();
if ($database->getErrorNum()) {
JError::raiseError(500,$database->stderr());
exit();
}
foreach( $rows as $row) {
sem_f050( $row->semid, $row->id, 3);
}
// Buchung loeschen
$database->setQuery( "DELETE FROM #__sembookings WHERE id IN ($cids)" );
if (!$database->query()) {
JError::raiseError(500,$database->stderr());
exit();
}
}
$mainframe->redirect( JURI::base()."index2.php?option=".JRequest::getCmd('option')."&task=29&uid=".$uid);
}
// ++++++++++++++++++++++++++++++++++
// +++ Statistik anzeigen +++
// ++++++++++++++++++++++++++++++++++
function sem_g030() {
TOOLBAR_seminar::_STAT();
$database = &JFactory::getDBO();
$startjahr = 2007;
$stats = array();
$mstats = array();
$temp = array();
$Monate = array(JTEXT::_('JANUARY'),JTEXT::_('FEBRUARY'),JTEXT::_('MARCH'),JTEXT::_('APRIL'),JTEXT::_('MAY'),JTEXT::_('JUNE'),JTEXT::_('JULY'),JTEXT::_('AUGUST'),JTEXT::_('SEPTEMBER'),JTEXT::_('OCTOBER'),JTEXT::_('NOVEMBER'),JTEXT::_('DECEMBER'));
$stats[0]->courses = 0;
$stats[0]->bookings = 0;
$stats[0]->certificated = 0;
$stats[0]->hits = 0;
$stats[0]->maxpupil = 0;
$stats[0]->year = JTEXT::_('SEM_2001');
for ($i=0, $n=12; $i < $n; $i++) {
$month = $i + 1;
$database->setQuery( "SELECT * FROM #__seminar WHERE MONTH(begin)='$month' AND pattern = ''");
$rows = $database->loadObjectList();
$bookings = 0;
$certificated = 0;
$hits = 0;
$maxpupil = 0;
foreach($rows AS $row) {
$gebucht = sem_f020($row);
$bookings = $bookings + $gebucht->booked;
$certificated = $certificated + $gebucht->certificated;
$hits = $hits + $row->hits;
$maxpupil = $maxpupil + $row->maxpupil;
}
$temp[$i]->courses = count($rows);
$stats[0]->courses += $temp[$i]->courses;
$temp[$i]->bookings = $bookings;
$stats[0]->bookings += $temp[$i]->bookings;
$temp[$i]->certificated = $certificated;
$stats[0]->certificated += $temp[$i]->certificated;
$temp[$i]->hits = $hits;
$stats[0]->hits += $temp[$i]->hits;
$temp[$i]->maxpupil = $maxpupil;
$stats[0]->maxpupil += $temp[$i]->maxpupil;
$temp[$i]->year = $Monate[$i];
}
$mstats[0] = $temp;
$zaehler = 0;
for ($i=0, $n=25; $i < $n; $i++) {
$aktjahr = $startjahr + $i;
$database->setQuery( "SELECT COUNT(*) AS courses FROM #__seminar WHERE YEAR(begin)='$aktjahr' AND pattern = ''" );
$rows = $database->loadObjectList();
if ($rows[0]->courses==0) {
continue;
}
$temp = array();
$zaehler++;
$stats[$zaehler]->courses = 0;
$stats[$zaehler]->bookings = 0;
$stats[$zaehler]->certificated = 0;
$stats[$zaehler]->hits = 0;
$stats[$zaehler]->maxpupil = 0;
$stats[$zaehler]->year = $aktjahr;
for ($l=0, $m=12; $l < $m; $l++) {
$month = $l + 1;
$database->setQuery( "SELECT * FROM #__seminar WHERE MONTH(begin)='$month' AND YEAR(begin)='$aktjahr' AND pattern = ''");
$rows = $database->loadObjectList();
$bookings = 0;
$certificated = 0;
$hits = 0;
$maxpupil = 0;
foreach($rows AS $row) {
$gebucht = sem_f020($row);
$bookings = $bookings + $gebucht->booked;
$certificated = $certificated + $gebucht->certificated;
$hits = $hits + $row->hits;
$maxpupil = $maxpupil + $row->maxpupil;
}
$temp[$l]->courses = count($rows);
$stats[$zaehler]->courses += $temp[$l]->courses;
$temp[$l]->bookings = $bookings;
$stats[$zaehler]->bookings += $temp[$l]->bookings;
$temp[$l]->certificated = $certificated;
$stats[$zaehler]->certificated += $temp[$l]->certificated;
$temp[$l]->hits = $hits;
$stats[$zaehler]->hits += $temp[$l]->hits;
$temp[$l]->maxpupil = $maxpupil;
$stats[$zaehler]->maxpupil += $temp[$l]->maxpupil;
$temp[$l]->year = $Monate[$l];
}
$mstats[$zaehler] = $temp;
}
HTML_seminar::sem_g030($stats,$mstats);
}
// +++++++++++++++++++++++++++++++++++++++++++
// +++ Teilnehmer zertifizieren +++
// +++++++++++++++++++++++++++++++++++++++++++
function sem_g013($cid,$uid) {
$mainframe = JFactory::getApplication();
$database = &JFactory::getDBO();
if (count( $cid )) {
$cids = implode( ',', $cid );
$database->setQuery( "SELECT * FROM #__sembookings WHERE id IN ($cids)" );
$rows = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return false;
}
foreach( $rows as $row) {
if($row->certificated == 0) {
$cert = 1;
$certmail = 6;
} else {
$cert = 0;
$certmail = 7;
}
$database->setQuery( "UPDATE #__sembookings SET certificated='$cert' WHERE id='$row->id'");
if (!$database->query()) {
JError::raiseError(500,$database->stderr());
exit();
}
sem_f050($row->semid, $row->id, $certmail);
}
}
$mainframe->redirect( JURI::base()."index2.php?option=".JRequest::getCmd('option')."&task=29&uid=".$uid."&limit=".trim(JRequest::getVar('limit',0))."&limitstart=".trim(JRequest::getVar('limitstart',0))."&einid=".trim(JRequest::getVar('einid',0))."&katid=".trim(JRequest::getVar('katid',0))."&ordid=".trim(JRequest::getVar('ordid',0))."&ricid=".trim(JRequest::getVar('ricid',0))."&search=".trim(JRequest::getVar('search',0)));
}
// +++++++++++++++++++++++++++++++++++++++++++
// +++ Bezahlung markieren +++
// +++++++++++++++++++++++++++++++++++++++++++
function sem_g012($cid,$uid) {
$mainframe = JFactory::getApplication();
$database = &JFactory::getDBO();
if (count( $cid )) {
$cids = implode( ',', $cid );
$database->setQuery( "SELECT * FROM #__sembookings WHERE id IN ($cids)" );
$rows = $database->loadObjectList();
if ($database->getErrorNum()) {
JError::raiseError(500,$database->stderr());
exit();
}
foreach( $rows as $row) {
if($row->paid == 0) {
$paid = 1;
} else {
$paid = 0;
}
$database->setQuery( "UPDATE #__sembookings SET paid='$paid' WHERE id='$row->id'");
if (!$database->query()) {
JError::raiseError(500,$database->stderr());
exit();
}
}
}
$mainframe->redirect( JURI::base()."index2.php?option=".JRequest::getCmd('option')."&task=29&uid=".$uid."&limit=".trim(JRequest::getVar('limit',0))."&limitstart=".trim(JRequest::getVar('limitstart',0))."&einid=".trim(JRequest::getVar('einid',0))."&katid=".trim(JRequest::getVar('katid',0))."&ordid=".trim(JRequest::getVar('ordid',0))."&ricid=".trim(JRequest::getVar('ricid',0))."&search=".trim(JRequest::getVar('search',0)));
}
// +++++++++++++++++++++++++++++++++++++++++++++++
// +++ Statistik nach Monat - Jahr anzeigen +++
// +++++++++++++++++++++++++++++++++++++++++++++++
function sem_g031() {
TOOLBAR_seminar::_VIEW_STAT();
$database = &JFactory::getDBO();
$month = JRequest::getVar('month');
$year = JRequest::getVar('year');
$yea = $year;
$where = array();
$where[] = "a.pattern = ''";
if( $year != JTEXT::_('SEM_2001') ) {
$where[] = "YEAR(begin)='$year'";
}
if($month != "") {
$where[] = "MONTH(begin)='$month'";
}
$database->setQuery( "SELECT a.*, cc.title AS category FROM #__seminar AS a"
. "\nLEFT JOIN #__categories AS cc ON cc.id = a.catid"
. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
. "\nORDER BY a.begin"
);
$rows = $database->loadObjectList();
if ($database->getErrorNum()) {
JError::raiseError(500,$database->stderr());
exit();
}
$Monate = array(JTEXT::_('JANUARY'),JTEXT::_('FEBRUARY'),JTEXT::_('MARCH'),JTEXT::_('APRIL'),JTEXT::_('MAY'),JTEXT::_('JUNE'),JTEXT::_('JULY'),JTEXT::_('AUGUST'),JTEXT::_('SEPTEMBER'),JTEXT::_('OCTOBER'),JTEXT::_('NOVEMBER'),JTEXT::_('DECEMBER'));
if($month == "") {
$mon = "";
} else {
$mon = " - " . $Monate[($month-1)];
}
HTML_seminar::sem_g031($rows,$mon,$yea);
}
// ++++++++++++++++++++++++++++++++++
// +++ Seminaruebersicht drucken +++
// ++++++++++++++++++++++++++++++++++
function sem_g018() {
$database = &JFactory::getDBO();
$katid = JRequest::getInt('katid',0);
$ordid = JRequest::getInt('ordid',0);
$ricid = JRequest::getInt('ricid',0);
$einid = JRequest::getInt('einid',0);
$search = JRequest::getVar('search','');
$limit = JRequest::getInt('limit',5);
$limitstart = JRequest::getInt('limitstart',0);
$neudatum = sem_f046();
$where = array();
$where[] = "a.pattern=''";
if ($katid > 0) {
$where[] = "a.catid='$katid'";
}
if ($search) {
$where[] = "LOWER(a.title) LIKE '%$search%' OR LOWER(a.shortdesc) LIKE '%$search%' OR LOWER(a.description) LIKE '%$search%'";
}
switch ($einid) {
case "1":
$where[] = "a.published = '1'";
break;
case "2":
$where[] = "a.published = '0'";
break;
case "3":
$where[] = "a.end > '$neudatum'";
break;
case "4":
$where[] = "a.end <= '$neudatum'";
break;
}
$sorte = array("a.semnum","a.title","category","a.begin","a.end","a.booked","a.certificated","a.grade","a.maxpupil","a.hits");
$richt = array(" ASC"," DESC");
$ttlimit = "";
if($limit > 0) {
$ttlimit = "\nLIMIT $limitstart, $limit";
}
$database->setQuery( "SELECT a.*, cc.title AS category, u.name AS editor"
. "\nFROM #__seminar AS a"
. "\nLEFT JOIN #__categories AS cc ON cc.id = a.catid"
. "\nLEFT JOIN #__users AS u ON u.id = a.checked_out"
. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
. "\nORDER BY " . $sorte[$ordid] . $richt[$ricid]
. $ttlimit
);
$rows = $database->loadObjectList();
$status = array();
$headertext = JTEXT::_('SEM_0083');
for ($i=0, $n=count($rows); $i < $n; $i++) {
$row = &$rows[$i];
$gebucht = sem_f020($row);
$gebucht = $gebucht->booked;
if( sem_f046() > $row->booked ) {
$status[] = JTEXT::_('SEM_0088');
} else if($row->maxpupil - $gebucht < 1 && $row->stopbooking == 1) {
$status[] = JTEXT::_('SEM_0088');
} else if($row->maxpupil - $gebucht < 1 && $row->stopbooking == 0) {
$status[] = JTEXT::_('SEM_0036');
} else {
$status[] = JTEXT::_('SEM_0031');
}
$rows[$i]->codepic = "";
}
sem_f056($rows,$status);
}
// ++++++++++++++++++++++++++
// +++ Zertifikat drucken +++
// ++++++++++++++++++++++++++
function sem_g019() {
$cid = trim(JRequest::getVar('cid',0));
echo sem_f031();
sem_f051($cid);
}
// +++++++++++++++++++++++++++++++++++
// +++ Vorlagenuebersicht anzeigen +++
// +++++++++++++++++++++++++++++++++++
function sem_g032() {
TOOLBAR_seminar::_TMPL();
$database = &JFactory::getDBO();
jimport('joomla.html.pagination');
$katid = JRequest::getInt('katid',0);
$search = JRequest::getVar('search','');
$limit = JRequest::getInt('limit',5);
$limitstart = JRequest::getInt('limitstart',0);
$neudatum = sem_f046();
$where = array();
$where[] = "a.pattern != ''";
if ($katid > 0) {
$where[] = "a.catid='$katid'";
}
if ($search) {
$where[] = "LOWER(a.title) LIKE '%$search%' OR LOWER(a.shortdesc) LIKE '%$search%' OR LOWER(a.description) LIKE '%$search%'";
}
// get the total number of records
$database->setQuery( "SELECT count(*) FROM #__seminar AS a"
. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
);
$total = $database->loadResult();
if( $total<=$limitstart ) {
$limitstart = $limitstart - $limit;
}
if( $limitstart < 0) {
$limitstart = 0;
}
$ttlimit = "";
if($limit > 0) {
$ttlimit = "\nLIMIT $limitstart, $limit";
}
$pageNav = new JPagination( $total, $limitstart, $limit );
$database->setQuery( "SELECT a.*, cc.title AS category, u.name AS editor"
. "\nFROM #__seminar AS a"
. "\nLEFT JOIN #__categories AS cc ON cc.id = a.catid"
. "\nLEFT JOIN #__users AS u ON u.id = a.checked_out"
. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
. $ttlimit
);
$rows = $database->loadObjectList();
// get list of categories
$kategorien[] = JHTML::_('select.option', '0', JTEXT::_('SEM_0027') );
$database->setQuery( "SELECT id AS value, title AS text FROM #__categories WHERE section='com_seminar' ORDER BY ordering" );
$kategorien = array_merge( $kategorien, $database->loadObjectList() );
$clist = JHTML::_('select.genericlist', $kategorien, 'katid', 'class="inputbox" size="1" onchange="document.adminForm.submit();"',
'value', 'text', $katid );
HTML_seminar::sem_g032($rows,$clist,$search,$pageNav,$limitstart,$limit);
}
// +++++++++++++++++++++++++++++++++++
// +++ Konfiguration anzeigen +++
// +++++++++++++++++++++++++++++++++++
function sem_g033() {
TOOLBAR_seminar::_CONFIG();
$table =& JTable::getInstance('component');
$option = JRequest::getCmd('option');
if (!$table->loadByOption($option)) {
JError::raiseWarning( 500, 'Not a valid component' );
return false;
}
$path = JPATH_ADMINISTRATOR.DS.'components'.DS.$option.DS.'config.xml';
$params = new JParameter($table->params,$path);
HTML_seminar::sem_g033($params);
}
// +++++++++++++++++++++++++++++++++++
// +++ Konfiguration speichern +++
// +++++++++++++++++++++++++++++++++++
function sem_g034() {
$table =& JTable::getInstance('component');
$option = JRequest::getCmd('option');
if (!$table->loadByOption($option)) {
JError::raiseWarning( 500, 'Not a valid component' );
return false;
}
$post = JRequest::get('post');
$post['option'] = $option;
$table->bind($post);
if (!$table->check()) {
JError::raiseWarning(500, $table->getError());
return false;
}
if (!$table->store()) {
JError::raiseWarning(500, $table->getError());
return false;
}
JError::raiseNotice(1,JTEXT::_('SEM_2030'));
sem_g033();
}
// ++++++++++++++++++++++++++++++++++++++
// +++ Toolbar erzeugen +++
// ++++++++++++++++++++++++++++++++++++++
class TOOLBAR_seminar {
function _NEW() {
JToolBarHelper::title(JText::_('SEM_0060'),'sem_event');
JToolBarHelper::save('14');
JToolBarHelper::cancel('0');
}
function _EDIT() {
JToolBarHelper::title(JText::_('SEM_0051'),'sem_event');
JToolBarHelper::save('14');
JToolBarHelper::cancel('0');
}
function _STAT() {
JToolBarHelper::title(JText::_('SEM_2018'),'sem_statistic');
}
function _HELP() {
JToolBarHelper::title(JText::_('SEM_HELP'),'sem_help');
}
function _INFO() {
JToolBarHelper::title(JText::_('SEM_2006'),'sem_info');
}
function _VIEW_BOOK() {
JToolBarHelper::title(JText::_('SEM_0035'),'sem_event');
JToolBarHelper::deleteList('','28');
JToolBarHelper::custom("show","back.png","back_f2.png","Back",false);
}
function _VIEW_STAT() {
JToolBarHelper::title(JText::_('SEM_2018'),'sem_statistic');
JToolBarHelper::custom("4","back.png","back_f2.png","Back",false);
}
function _TMPL() {
JToolBarHelper::title(JText::_('SEM_2023'),'sem_pattern');
JToolBarHelper::publishList('19');
JToolBarHelper::unpublishList('21');
JToolBarHelper::deleteList('','17');
JToolBarHelper::editList('13');
JToolBarHelper::addNew('11');
JToolBarHelper::custom( '23', 'copy.png', 'copy_f2.png', JText::_('SEM_0044') );
}
function _TNEW() {
JToolBarHelper::title(JText::_('SEM_2026'),'sem_pattern');
JToolBarHelper::save('15');
JToolBarHelper::cancel('1');
}
function _TEDIT() {
JToolBarHelper::title(JText::_('SEM_2027'),'sem_pattern');
JToolBarHelper::save('15');
JToolBarHelper::cancel('1');
}
function _CONFIG() {
JToolBarHelper::title(JText::_('SEM_2029'),'sem_config');
JToolBarHelper::save('31');
}
function _EVENTS() {
JToolBarHelper::title(JText::_('SEM_0083'),'sem_event');
JToolBarHelper::publishList('18');
JToolBarHelper::unpublishList('20');
JToolBarHelper::deleteList('','16');
JToolBarHelper::editList('12');
JToolBarHelper::addNew('10');
JToolBarHelper::custom('22','copy.png','copy_f2.png',JText::_('SEM_0044') );
}
}
?>