sebschlicht / com_nuliga

Joomla! 3 component to manage NuLiga tables
MIT License
4 stars 0 forks source link

Beispiel ICAL-Datei für SIS Handball #6

Open wienni112 opened 4 years ago

wienni112 commented 4 years ago

Hallo,

im Anhang ein Beispiel wie es bei bim XML SIS Handball v2 gelöst wurde. Die Liga Daten wurden über eine XML-Schnittstelle vom Server abgerufen. Bei aufrufen der Spieltabelle wurden die Dateien automatisch erstellt. Diesen ICAL Kalender konnte ich z.B. beim Kalendemodul JEvent einbinden. Dadurch hat der Termin Kalender auf der Homepage immer aktuelle Termine. Des weiteren konnten die Dateien in Outlook oder ins Handy geladen werden.

Ich hoffe mit dem Beispiel kannst du dir ein Bild machen.

Gruß Wienni

`<?php /* XML SIS Handball v2 *

// Check to ensure this file is included in Joomla! defined('_JEXEC') or die( 'Restricted access' );

// import Joomla modelitem library jimport('joomla.application.component.modelitem');

if (!class_exists('xmlsishandballv2Modelxmlsishandballv2')) { require_once( JPATH_SITE.'/components/com_xmlsishandballv2/models/xmlsishandballv2.php'); }

class xmlsishandballv2Modelicsdata extends JModelItem {

//get ICSdaten
function getICSData() {
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    //$query->select('vereinsnummer','vereinspasswort','nationurl');
    $query->select('*');
    //$query->select($db->quoteName(array('clublogo')));
    $query->from($db->quoteName('#__xmlsishbv2_icsdata'));
    //$query->where($verein_id); 
    $db->setQuery($query);
    //$content = $db->loadResult();
    $icsdata = $db->loadObjectList();

    return $icsdata;
}

//get Vereinsdaten
function getVereinDataICS($verein_id) {
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    //$query->select('vereinsnummer','vereinspasswort','nationurl');
    $query->select('*');
    //$query->select($db->quoteName(array('clublogo')));
    $query->from($db->quoteName('#__xmlsishbv2_verein'));
    $query->where('id = '.$verein_id); 
    $db->setQuery($query);
    //$content = $db->loadResult();
    $vereindata = $db->loadObjectList();

    return $vereindata;
}

//get ICS Files
function WriteICS ($vereinobj, $liganummer, $sis_clubnummer, $sis_clubnummer1, $icsteamshort) {
//WriteICS ($verein_id->ligano, $icsdata->ligano, $icsdata->teamno, $icsdata->teamno1, $icsdata->icsteamshort)
foreach ($vereinobj as $i => $vereindata) : 
    $verein = $vereindata;
endforeach;

    //$verein = $this->getVereinData($verein_id);
    //date_default_timezone_set($spparams['sis_timezone']);
    date_default_timezone_set($verein->timezone);
    $heute = mktime(0, 0, 0, date("m")  , date("d"), date("Y"));
    //$futuredate = mktime(0, 0, 0, 1, 1, $spparams['sis_jahr']);
    $futuredate = mktime(0, 0, 0, 1, 1, (date("Y") + 2));

    //echo 'Daten: '.$verein->vereinsnummer;
    //echo 'Daten: <pre>'.var_dump($vereinobj).'</pre><br>';

    $wtag = array(
        "Mon" => "Mo.",
        "Tue" => "Di.",
        "Wed" => "Mi.",
        "Thu" => "Do.",
        "Fri" => "Fr.",
        "Sat" => "Sa.",
        "Sun" => "So."
    );

    $monat = array(
        "Jan" => "Jänner",
        "Feb" => "Februar",
        "Mar" => "März",
        "Apr" => "April",
        "May" => "Mai",
        "Jun" => "Juni",
        "Jul" => "Juli",
        "Aug" => "August",
        "Sep" => "September",
        "Oct" => "Oktober",
        "Nov" => "November",
        "Dec" => "Dezember"
    );

    /*$liganummer = $artauf[$t]['sis_liganr'];
$sis_clubnummer = $artauf[$t]['sis_clubnummer'];
$sis_clubnummer1 = $artauf[$t]['sis_clubnummer1'];*/
//$linkparameters = xmlsishandballv2Modelxmlsishandballv2::getParameter($spparams['sis_meinevereinsnummer'],$spparams['sis_meinvereinspasswort'],$liganummer,1);
$linkparameters = xmlsishandballv2Modelxmlsishandballv2::getParameter($verein->vereinsnummer,$verein->vereinspasswort,$liganummer,1);
//$linkresult = xmlsishandballv2Modelxmlsishandballv2::getLink(str_replace('\\', '', $spparams['sis_url']));
$linkresult = xmlsishandballv2Modelxmlsishandballv2::getLink(str_replace('\\', '', $verein->nationurl));
//New with SQL
$result = xmlsishandballv2Modelxmlsishandballv2::getXML($linkresult,$linkparameters,$liganummer,1);

//iCal start $string='BEGIN:VCALENDAR CALSCALE:GREGORIAN VERSION:2.0 PRODID:-//'.$verein->vereinsname.' Calendar V1.1//EN METHOD:PUBLISH X-WR-TIMEZONE:'.$verein->timezone.' '; //iCal end $spielcount = 0;

foreach ($result->Spiel as $spiel) {
    if((string) $spiel->Mannschaft1 === $sis_clubnummer || (string) $spiel->Mannschaft2 === $sis_clubnummer || (string) $spiel->Mannschaft1 === $sis_clubnummer1 || (string) $spiel->Mannschaft2 === $sis_clubnummer1) {
            //$spdatum_exp = explode('-', (string) $spiel->SpielDatum);
            //$spdatum_exp = preg_replace('/[^T0-9]+/', '',strrev(substr(strrev((string) $spiel->SpielDatum),5)));
            $spdatum_exp = preg_split('/[^T0-9]+/', (string) $spiel->SpielDatum);
            //print_r($spdatum_exp);
            $spdatumvon_exp = preg_split('/[^T0-9]+/', (string) $spiel->SpielVon);
            //Sun, 09. Oct. 2011 => date('D, d. M. Y', strtotime ($spiel->Datum))
            $wtagsp = $wtag[date('D', strtotime ($spiel->SpielDatum))];
            $monatsp = $monat[date('M', strtotime ($spiel->SpielDatum))];
            $sdatum = mktime(0, 0, 0, date('m', strtotime ($spiel->SpielDatum))  , date('d', strtotime ($spiel->SpielDatum)), date('Y', strtotime ($spiel->SpielDatum)));
            //echo 'Datum: '.$sdatum.' - heute: '.$heute;
            if($heute <= $sdatum && $sdatum < $futuredate) {

//iCal start $string.='BEGIN:VEVENT CREATED:'.date('Ymd').'T'.date('His').'Z LAST-MODIFIED:'.date('Ymd').'T'.date('His').'Z DTSTAMP:'.date('Ymd').'T'.date('His').'Z SUMMARY:'.strtoupper($verein->vereinsnameshort).' '.strtoupper($icsteamshort).' Spiel: '.$spiel->Heim.' - '.$spiel->Gast.' LOCATION:'.$spiel->HallenOrt.', '.$spiel->HallenStrasse.' DTSTART:'.preg_replace('/[^T0-9]+/', '',strrev(substr(strrev((string) $spiel->SpielVon),5))).' DTEND:'.preg_replace('/[^T0-9]+/', '',strrev(substr(strrev((string) $spiel->SpielBis),5))).' URL:'.$verein->vereinsurl.' DESCRIPTION:Termin: '.$wtagsp.', '.date('j.', strtotime ($spiel->SpielDatum)).' '.$monatsp.' '.date('Y', strtotime ($spiel->SpielDatum)).'\nZeit: '.substr($spdatumvon_exp[2],-2).':'.$spdatumvonexp[3].' Uhr\nMannschaften: '.$spiel->Heim.' - '.$spiel->Gast.'\nSpielort: '.$spiel->HallenName.'\n'.$spiel->HallenOrt.', '.$spiel->HallenStrasse.' TRANSP:TRANSPARENT UID:'.$verein->vereinsnameshort.''.strtoupper($icsteamshort).'_Spieltermin-'.$spdatumvon_exp[0].$spdatumvon_exp[1].substr($spdatumvon_exp[2],0,-3).':'.substr($spdatumvon_exp[2],-2).$spdatumvon_exp[3].$spdatumvon_exp[4].'@'.substr($verein->vereinsurl, 11).' END:VEVENT '; //iCal end $spielcount++;

            } //endif Datum
        } //endif Mannschaft
}

//iCal start $string.='END:VCALENDAR';

//Verzeichnis erstellen
//$path = $_SERVER['DOCUMENT_ROOT'].(substr($_SERVER['DOCUMENT_ROOT'], -1) == "/" ? '' : '/').$spparams['sis_icsurl'];
//$path = $_SERVER['DOCUMENT_ROOT'].(substr($_SERVER['DOCUMENT_ROOT'], -1) == "/" ? '' : '/').'com_xmlsishandballv2icsdb';
$path = $_SERVER['DOCUMENT_ROOT'].(substr($_SERVER['DOCUMENT_ROOT'], -1) == "/" ? '' : '/').substr(JURI::root( true ), 1).'/com_xmlsishandballv2icsdb';
/*if (!file_exists($path)){ 
    mkdir($path, 0755)or die("Ordner nicht erstellbar! Bitte per FTP erstellen");
}*/
//echo 'Pfad: '.$path;
$handle = @fopen($path."/".strtolower($verein->vereinsnameshort)."-spiele_".strtolower($icsteamshort).".ics", 'w');
fwrite($handle, $string);
fclose($handle);
//iCal end
//echo 'Done: '.$artauf[$t]['sis_team'].'; '.$spielcount.' Spiel(e); Link für Kalenderabo: <a href="'.$SERVER['SERVER_NAME'].'/'.$spparams['sis_icsurl'].'/'.$spparams['sis_deinvereinsnameshort'].'-spiele_'.$artauf[$t]['sis_team'].'.ics" title="Bitte den Link kopieren, und in iCal oder Outlook f&uuml;r Kalender abonnieren verwenden" target="_blank">Spielplan abonnieren</a><br>';

//$icsurl = $SERVER['SERVER_NAME'].'/com_xmlsishandballv2icsdb/'.strtolower($verein->vereinsnameshort).'-spiele_'.strtolower($icsteamshort).'.ics';
$icsurl = JURI::base().'com_xmlsishandballv2icsdb/'.strtolower($verein->vereinsnameshort).'-spiele_'.strtolower($icsteamshort).'.ics';

return $icsdataarr = array($spielcount, $icsurl);

}

}
`