Zum Inhalt springen

iCals Export Extention

Erstellt am 6. September 2010 · 3 Antworten · letzte Antwort am 7. September 2010

Tags: Frage

trunidom ·

Hallo zusammen,
ich bin erst seit kurzer Zeit Typo3 entwickler und habe für ein bestehendes Projekt meine erste Extention entwickelt. Es geht darum Events und Kalender einträge einer bestehenden Extention auszulesen und daraus eine .ics Datei zu generieren.

Wie gesagt es ist meine aller erste Extention (mit dem Kickstarter) und desshalb habe ich einige Schwierigkeiten. (Die Extention funktioniert Lokal einwandfrei, allerdings auf dem Webserver nicht)

Mein Problem besteht in der SQL-Connecten. Ich habe in diversen Büchern und auch in verschiedenen Foren gelesen
dass im Backend wie im Frontent die Methoden $GLOBALS['TYPO3_DB'] bereits instanziert sind. Allerdings
funktioniert die Datenbankverbindung über $db_handle=$GLOBALS['TYPO3_DB']->sql_pconnect();
nicht.

Auch wenn ich keine Verbindung herstelle (weil ich glaube dass diese bereits vorhanden sein sollte) und direkt eine SQL Abfrage generiere, erscheint folgender Fehler in meiner generierten File:

Fatal error</b>: Call to a member function exec_SELECTquery() on a non-object in <b>/home/httpd/vhosts/.../ics-export.php

Was bedeutet das? ich habe auch bereits versucht mit

PHP:
global $TYPO3_DB;

$res = $TYPO3_DB->exec_SELECTquery(
'*',
'Filme',
'id < \'150\''
);

$query=$GLOBALS['TYPO3_DB']->exec_SELECTquery($select_fields, $from_table, $where_clause, $groupBy,$orderBy,$limit);

vielen Dank für eure Bemühungen
oder direkt über

jenses ·
trunidom schrieb

Fatal error</b>: Call to a member function exec_SELECTquery() on a non-object in <b>/home/httpd/vhosts/.../ics-export.php

Dieser Dateiname sieht auf jeden Fall nicht gerade aus wie vom Kickstarter erstellt.
Schwer zu helfen, wenn man den Inhalt dieses Skriptes nicht kennt...

igorshmigor ·

Ja, aber an sich ist folgendes schon korrekt:

$query=$GLOBALS['TYPO3_DB']->exec_SELECTquery($select_fields, $from_table, $where_clause, $groupBy,$orderBy,$limit);

Vorausgesetzt, dass das Script in der TYPO3-Umgebung läuft und nicht für sich alleine ausgeführt wird.

trunidom ·

Hallo zusammen,
danke für eure raschen Antworten. Ich habe das Problem gelöst. Und zwar habe ich in meiner Extention die normale File tx_ics_pi1 in welcher ich nur einen Link in den $content schreibe welcher auf meine eigendliche Exportfile verweist.

tx_ics_pi1:
------------
function main($content, $conf) {
$this->conf = $conf;
$this->pi_setPiVarDefaults();
$this->pi_loadLL();

$content=' <a href="/typo3conf/ext/ics/pi1/ics_ext.php"> Kalender downloaden </a>';

return $this->pi_wrapInBaseClass($content);
}

in meiner Datei ics_ext.php liegt allerdings die ganze Funktion, wie auch die Datenbankabfragen über Typo3.
Nachdem ich die Abfragen also die Main Methode geschrieben habe (und noch einen kleinen Syntaxfehler korriert habe)
lief das ganze einwandfrei.

Für diejenigen die noch wissen wollen wie ich eine ICS Datei
erzeuge:

ics_ext.php:
------------

header("Content-Type: text/Calendar");
header("Content-Disposition: inline; filename=calendar.ics");

danach alles was in die ICS Datei geschrieben werden soll mit Echo ausgeben. Also wie bei mir

echo "BEGIN:VCALENDAR";
echo "\n";
echo "VERSION:2.0";
echo "\n";
echo "PRODID:-//TYPO3 Event-Calendar-To-Ics //EN";
echo "\n";
echo "METHOD:pUBLISH";
...
...
...

Danke für eure Antworten
Have a nice day