blog.bartlweb - a technologist's external brain

Alle Artikel

Postgres-Datenbank-Fehler beim Installieren von DAViCal

Um den folgenden Fehler bei der Installation von DAViCal in Verbindung mit einer Postgres-Datenbank zu verhindern, müssen die Zugriffsrechte korrekt gesetzt werden.

DBI connect('dbname=davical','davical_dba',...) failed: FATAL:  Ident authentication failed for user "davical_dba" at /usr/share/davical/dba/update-davical-database line 244
Can't connect to database davical at /usr/share/davical/dba/update-davical-database line 244.
* * * * ERROR * * * *
The database administration utility failed.  This may be due to database
permissions for the davical_dba user, or because the Perl DBD::Pg or YAML
libraries are not available.
 
Check that your pg_hba.conf allows the davical_dba user to connect to the
database (and make sure you've reloaded PostgreSQL since changing that).
 
Also see:  http://wiki.davical.org/w/Install_Errors/No_Perl_YAML

Unter OpenSuse finden Sie die entsprechende Datei unter /var/lib/pgsql/data/pg_hba.conf

RPM unter OpenSuse installieren

RPM-Dateien (.noarch.rpm) werden unter OpenSuse mit dem folgenden Befehl installiert:

rpm --install <dateiname>.noarch.rpm

tt_content Standardausgabe formatieren

Die Standardausgabe von Content-Elementen innerhalb von TYPO3 lässt sich mittels Typoscript beeinflussen. Dabei ist die Ausgabe immer nach dem folgenden Schema aufgebaut:

tt_content.<contentelement>.10 - Header
tt_content.<contentelement>.20 - Content

Um die Standardkonfiguration für die einzelnen Elemente herauszufinden ist es am Einfachsten in der Typoscript-Setup-Datei /typo3/sysext/css_styled_content/static/setup.txt der Systemextension css_styled_content nachzusehen.

Die folgenden Content-Elemente stehen zur Konfiguration zu Verfügung:

  • header
  • text
  • image
  • textpic
  • bullet
  • table
  • multimedia
  • swfobject
  • qtobject
  • media
  • mailform
  • search
  • login
  • menu
  • list

Die Reihenfolge der wichtigsten Wraps in TYPO3

Die Konfigurationssprache Typoscript bietet unter TYPO3 die Möglichkeit komplexe Ausgaben zu erzeugen. Eines der größten Misterien dabei sind die Wraps, representiert durch die Konfigurations-Option stdWrap. Im folgenden möchte ich die Verschachtelung hinter den einzelnen Optionen des stdWraps auflösen (Im Folgenden sind nicht alle verfügbaren Wraps dargestellt, sondern nur jende die ich des öfteren selbst nutze). Genaue Infos finden sich unter http://www.typo3.net/tsref/functions/stdwrap/ und http://www.typo3.net/tsref/menu_objects/tmenuitem/.

TEXT/HTML

Auf die Objekte TEXT und HTML lässt sich die Funktion stdWrap anwenden. Diese vereint neben den reinen Wraps auch weitere Möglichkeiten wie das Einbinden von Datenquellen oder Bedingungen.

Typoscript in einer Extension ausführen

Typoscript ist mehr als mächtig und erledigt viele Dinge schneller und komfortabler als selbstgeschriebender PHP-Code. Daher gibt es auch die Möglichkeit Typoscript in einer Extension auszuführen und das Ergebnis dann über diese auszugeben. Denkbar ist z.B.: eine Extension die per Flexform Typoscript entgegen nimmt und diesen dann ausführt und ausgibt. Damit lässt sich eine Extension für das Einfügen von Typoscript als Content-Element im Backend realisieren.

Typoscript direkt im Code

$typoscript['conf'] = 'TEXT';
$typoscript['conf.']['data'] = 'date:U';
$typoscript['conf.']['strftime'] = '%Y';
$typoscript['conf.']['noTrimWrap'] = '|(c) | www.domain.com|';
 
$content = $this->cObj->cObjGetSingle($typoscript['conf'], $typoscript['conf.']);

Typoscript aus Flexform oder Datei auslesen

/* get typoscript code */
$typescript = ...
 
/* parse typoscript code */
$tsParser = t3lib_div::makeInstance('t3lib_TSparser');
$tsParser->parse(trim($typoscript));      
$tsArray = $tsParser->setup;
 
/* generate content */
$time = time();
      
$code = array(
  'ts_' . $time => 'COA_INT',
  'ts_' . $time . '.' => $tsArray
);
 
$content = $this->cObj->cObjGetSingle($code['ts_' . $time], $code['ts_' . $time . '.']);

Extension in einer TYPO3-Extension einbinden

Der folgende Code ermöglicht es in TYPO3 die Ausgabe einer fremden Extension per Marker in einer Extension auszugeben.

require_once(t3lib_extMgm::extPath("myext", "pi1/class.tx_myext_pi1.php");
$tx_myext_pi1 =& new tx_myext_pi1();
$tx_myext_pi1->cObj = t3lib_div::makeInstance('tslib_cObj');
$tx_myext_pi1->conf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_myext_pi1.'] ;
$markerArray['###EXTMARKER###'] = $tx_myext_pi1->main (&$this->content, $tx_myext_pi1->conf);

SQL-Funktionen des TYPO3-PHP-Frameworks

Das PHP-Framework von TYPO3 bietet einfache Funktionen für das Ausführen von SQL-Kommandos, die den Zusammenbau der einzelnen SQL-Statements übernehmen. Nähere Informationen und weitere nützliche Funktionen, wie z.B.: searchQuery() finden sich in der offiziellen TYPO3-Klassen-Dokumentation api.typo3.org/typo3cms/47/html/classt3lib___d_b.html.

Funktionen

insert

$result = exec_INSERTquery(
  'table',
  array('field' => 'value')
);

update

$result = exec_UPDATEquery(
  'table',
  'where',
  array('field' => 'value')
);

delete

$result = exec_DELETEquery(
  'table',
  'where'
);

select

$result = exec_SELECTquery(
  'fields',
  'table',
  'where',
  'groupBy (optional)',
  'orderBy (optional)',
  'limit (optional)'
);

SELECTgetRows

Liefert anstelle eines Result-Pointers ein Array mit den angeforderten Werten zurück.

Cronjobs – wiederkehrende Aufgaben unter Linux managen

Cronjobs sind unter Linux das Mittel der Wahl wenn es um automatisierte wiederkehrende Aufgaben geht. Unter Windows nennt sich diese Prinzip "Geplante Aufgaben".

Cronjobs verwalten

Cronjobs werden unter Linux immer für den aktuellen Benutzer verwaltet. Alle als Benutzer angelegte Cronjobs werden auch mit dessen Nutzerrechten ausgeführt.

Der folgende Befehl listet alle für den aktuellen Benutzer angelegten Cronjobs auf:

crontab -l

Um Cronjobs zu verwalten, hilft der folgende Befehl. Dieser öffnet die Konfigurationsdatei im Texteditor vi.

crontab -e

Das Cronjob-Zeitsystem

* * * * * [command]
Minute [0-59] - Stunde [0-23] - Tag [1-31] - Monat [1-12] - Wochentag [0-7 - wobei Sonntag 0 und 7 ist]

Datei und Ordnerstruktur einer TYPO3-Extension

Auf den ersten Blick erscheint der Umfang der verschiedenen Dateien in einer TYPO3-Extension etwas verwirrend. Die folgende Auflistung erklärt kurz den Nutzen der einzelnen Dateien und Ordner. Beachten Sie, dass nicht jede Extension immer alle dieser Dateien und Ordner benötigt bzw. enthält.

Ordner

doc

Der Ordner doc enthält die Dokumentation der TYPO3-Extension. Üblich ist es dabei die von TYPO3 gelieferte OpenOffice-Vorlage manual.sxw zu nutzen. Wurde die Extension mit Hilfe des Kickstarters erstellt, speichert dieser hier seine Konfiguration in den Dateien wizard_form.dat und wizard_form.html.

pi* (z.B.: pi1, pi2, ...)

Alle für die Extension erstellten Plugins befinden sich in den pi1 bis piX - Ordnern, wobei die Nummerierung im Normalfall aber nicht zwingend fortlaufend ist.

Extension-Pfad ermitteln

Gelegentlich ist es von Nutzen den Pfad zu seiner eigenen TYPO3-Extension zu ermitteln, um z.B. Grafiken oder CSS-Dateien aus diesem Verzeichnis einzubinden. Die folgenden 3 Methoden liefern den für das jeweilige Einsatzgebiet passenden Pfad zurück.

t3lib_extMgm::extPath($extName)

Liefert den absoluten Pfad zum Extension-Verzeichnis zurück.

t3lib_extMgm::extRelPath($extName)

Liefert den relativen Pfad zum Extension-Verzeichnis für den Einsatz im TYPO3-Backend zurück.

t3lib_extMgm::siteRelPath($extName)

Liefert den relatien Pfad zum Extension-Verzeichnis für den Einsatz im Frontend zurück.