Wednesday, June 24, 2015

Wie erhalte ich eine FAL Datei Referenz z.b. zur Verwendung mit TypoScript IMAGE cObject?









        $relationHandler = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Database\\RelationHandler');
        $configuration = $GLOBALS['TCA']['tt_content']['columns']['image']['config'];
        $relationHandler->start($imagedata['image'], $configuration['foreign_table'], $configuration['MM'], $imagedata['uid'], 'tt_content', $configuration);
        $relationHandler->processDeletePlaceholder();
        $referenceUids = $relationHandler->tableArray[$configuration['foreign_table']];
        foreach ($referenceUids as $referenceUid) {
            try {
                $fileReference = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->getFileReferenceObject($referenceUid, array(), ($wsid === 0));
                //$origFile = $fileReference->getOriginalFile();
                $filename = $fileReference->getName();
                // write back to our $imagedata element... (for compatibility)
                $imagedata['image'] = $filename;
                // ...and store fileReference identifier for later use:
                $imagedata['fileref_uid'] = $fileReference->getUid();
            } catch (\TYPO3\CMS\Core\Resource\Exception\FileDoesNotExistException $e) {
                /* just catch exception, because we can't do anything about it here */
            }
        }


       $confIMG = array(
            'file' => isset($imagedata['fileref_uid']) ? $imagedata['fileref_uid'] : 'uploads/pics/'.$imagedata['image'],
            'file.' => array (
                'width' => $width,
                'treatIdAsReference' => isset($imagedata['fileref_uid']) ? 1 : 0,
            ),
            'params' => 'align="left" style="margin:0 10px 5px 0;"',
            'titleText' => trim($imagedata['tx_team_position'].' '.$imagedata['header']),
        );

Saturday, June 13, 2015

Zeichensatz-Konvertierung / TYPO3-Datenbank Zeichensatz / ...



echo "ALTER DATABASE mydb CHARACTER SET utf8 COLLATE utf8_general_ci;" | mysql
mysqldump --default-character-set=latin1 --databases mydb > a.sql
cp a.sql b.sql
sed -i 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/g' b.sql
sed -i 's/CHARACTER SET latin1/CHARACTER SET utf8/g' b.sql
grep -v character_set_client <b.sql > c.sql
sed -i 's/SET NAMES latin1/SET NAMES utf8/g' c.sql
mysql --default-character-set=utf8 < c.sql


http://wiki.typo3.org/UTF-8_support#Convert_an_already_existing_database_to_UTF-8

http://www.i18nqa.com/debug/utf8-debug.html

http://www.utf8-chartable.de/unicode-utf8-table.pl

http://stackoverflow.com/questions/14980200/converting-special-charactes-such-as-%C3%83%C2%BC-and-%C3%83%C6%92-back-to-their-original-latin-alp

https://docs.typo3.org/typo3cms/InstallationGuide/UpgradeLTS/Index.html

http://php.net/manual/en/function.utf8-encode.php

http://php.net/manual/de/function.mb-convert-encoding.php

Sunday, May 31, 2015

Wie kann ich TYPO3 unter Windows mit cygwin nutzen?

(getestet mit TYPO3 6.2.12)

Grobgesagt muss man Cygwin mit apache, PHP und MySql-Server installieren, und - beim aktuellen Entwicklungsstand von TYPO3 - ein paar kl. Anpassungen im TYPO3-Core vornehmen. (Es existieren diverse Bugreports bzgl. TYPO3-Cygwin-Support, siehe unten "Quellen".)

Zur Installation von Cygwin mit apache, PHP und MySql-Server findet sich hier eine ziemlich vollstaendige Anleitung:

http://umusebo.com/installing-and-configuring-apache-php-mysql-on-cygwin/


Anpassungen im TYPO3-Core:

1.) Mit folgender Aenderung erkennt TYPO3 das Cygwin-System:

in /typo3_src/typo3/sysext/core/Classes/Core/SystemEnvironmentBuilder.php

/**
* Determine the operating system TYPO3 is running on.
*
* @return string Either 'WIN' if running on Windows, else empty string
*/
static protected function getTypo3Os() {
    $typoOs = '';
       //if (!stristr(PHP_OS, 'darwin') && stristr(PHP_OS, 'win')) {
       if (!stristr(PHP_OS, 'darwin') && !stristr(PHP_OS, 'cygwin') && stristr(PHP_OS, 'win')) {
          $typoOs = 'WIN';
       }
   return $typoOs;
}




2.) Da sich die PHP-Funktion uniqid() unter Windows anders verhaelt als auf anderen Plattformen - ein Punkt wird in die generierte ID eingefuegt - muss eine kl. Anpassung bzgl. Cache-Identifiers vorgenommen werden:

in /typo3_src/typo3/sysext/core/Classes/Cache/Frontend/FrontendInterface.php

//const PATTERN_ENTRYIDENTIFIER = '/^[a-zA-Z0-9_%\\-&]{1,250}$/';
const PATTERN_ENTRYIDENTIFIER = '/^[a-zA-Z0-9_%\\-&\.]{1,250}$/';




Quellen:
http://umusebo.com/installing-and-configuring-apache-php-mysql-on-cygwin/

https://forge.typo3.org/issues/65744
https://forge.typo3.org/issues/14523
http://php.net/uniqid

(Frage: wie startet man mysqld automatisch als Service?)

Wie kann ich die Extension Quixplorer mit TYPO3 6.2 nutzen?

In der aktuellen Version 1.7.2 laeuft der Quixplorer nicht unter TYPO3 6.2, sondern zeigt eine Fehlermeldung:

Die Extension laesst sich aber leicht patchen:

in t3quixplorer/mod1/index.php
die zwei require()-Zeilen auskommentieren:

//require ($BACK_PATH.'template.php');
$LANG->includeLLFile('EXT:t3quixplorer/mod1/locallang.xml');
//require_once (PATH_t3lib.'class.t3lib_scbase.php');




Es gibt auch eine angepasste ExtBase-Version des Quixplorers, diese ist aber zum jetzigen Zeitpunkt noch nicht lauffaehig:
https://github.com/madsbrunn/t3quixplorer/tree/extbaseVersion



Quellen:

http://www.typo3forum.net/forum/typo3-extensions/74337-quixplorer-fuer-typo3-6-2-alternativen.html

https://github.com/madsbrunn/t3quixplorer/tree/extbaseVersion

Sunday, April 19, 2015

Wie kann ich die Extension mm_forum unter TYPO3 6.2 nutzen/updaten?

Zwei Versionen der Extension mm_forum, angepasst fuer TYPO3 6.2:


1. version 1.11-dev (12.11.2014 ?)

gefunden auf:
http://die-netzmacher.de/titel/mm-forum-fuer-typo3-62/


2. version 1.10-dev (letzte aenderung: 2015-03-06)

(UPDATE 2015-06-08: seit dem 2015-03-06 sind weitere Aenderungen vorgenommen worden, evtl. untenstehende Bugs gefixed worde. Noch nicht ueberprueft.)

gefunden auf:
https://github.com/TYPO3-extensions/mm_forum

...sieht etwas besser aus: namespaces eingefuehrt, offenbar Abhaengigkeiten zu lib/div entfernt.

Ansonsten haben beide Versionen der Extension offenbar etwa den gleichen Entwicklungsstand.

Es finden sich aber in beiden Versionen auch diverse Fehler:



Fehler nur in 1.10-dev:

Forum-Suche:
PHP-Fehler: Fatal error: Call to a member function exec_SELECTquery() on a non-object in .../typo3conf/ext/mm_forum/pi1/class.tx_mmforum_pi1.php on line 5133

...Loesung: in pi1/class.... (?) get_topic_id() $this->databaseHandle ergaenzen:
if (!$this->databaseHandle) {
    $this->databaseHandle = $GLOBALS['TYPO3_DB'];
}

Gemeldete Beitraege bearbeiten:
funktioniert nicht, Status wird nicht gespeichert, keine Fehlermeldung

...Loesung: im Programmcode wird "fullQuoteString" (?) verwendet, muss ersetzt werden durch intval() o.Ae., damit die SQL-Query korrekt ist (kein string, sondern integer).


Umfragen:
Umfrageergebnis wird nicht gespeichert

...Loesung: (noch unbekannt)


Fehler in beiden Versionen:

Frontend:

Icons tw. veraendert/skaliert, Icon Positionen stimmen nicht

Offenbar ein TYPO3 (6.2?) Fehler, hier wird ein GIFBUILDER-Objekt mit einem IMAGE verwendet. Ueberschreibt man das GIFBUILDER-Objekt, und verwendet nur ein IMAGE, dann wird korrekt skaliert.
(buttons < .buttons_text und buttons.small und buttons.large beachten :-) siehe im TypoScript der Extension)

Backend:

In beiden Versionen sind im Backend neue Felder/Eintraege zu sehen:
Private Nachrichten: User search fields, User search order by (in der Vorversion hier nicht vorhanden)


Ein Thread zum Thema, mit evtl. weiteren Informationen:

http://www.typo3.net/forum/thematik/zeige/thema/118297



Nach dem TYPO3 6.2 Update:


Falls Benutzer-Eingabefelder via Backend-Modul definiert sind, kann es sein dass diese nach dem Update im Frontend bei „Benutzerdaten bearbeiten“ fehlen. Hintergrund ist, dass diese Felder als TypoScript-Setup-Schnipsel in der Datenbank gespeichert werden, und das teilweise als Content-Objekt vom Typ „HTML“ – das gibt’s bekanntlich nicht mehr unter TYPO3 6.2.

So kann man das fixen:

schauen was da ist:
mysql> select config from tx_mmforum_userfields;

testlauf, so kann man’s noch rueckgaengig machen:
mysql> update tx_mmforum_userfields set config = replace(config, 'HTML', 'THIS_SHOULD_BE_TEXT');

hat’s die richtigen erwischt?
mysql> select config from tx_mmforum_userfields;

dann diese durch TEXT ersetzen:
mysql> update tx_mmforum_userfields set config = replace(config, 'THIS_SHOULD_BE_TEXT', 'TEXT');
 

Wie kann ich TYPO3 Datenbank-Abfragen debuggen? (TYPO3 6.x)

Zwei Techniken zum debuggen von TYPO3 6.x DB queries:

1. Constraints "sammeln" und ausgeben:

Beim zusammenstellen der Query die Constraints folgendermassen festhalten:

$constraints[] = $query->logicalAnd($searchConstraints);
...


Und abschliessend ausgeben:

\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($constraints);

2. SQL Query ausgeben:

/**
* Debugs a SQL query from a QueryResult
*
* @param \TYPO3\CMS\Extbase\Persistence\Generic\QueryResult $queryResult
* @param boolean $explainOutput
* @return void
*/
public function debugQuery(\TYPO3\CMS\Extbase\Persistence\Generic\QueryResult $queryResult, $explainOutput = FALSE) {
   $GLOBALS['TYPO3_DB']->debugOuput = 2;
   if ($explainOutput) {
      $GLOBALS['TYPO3_DB']->explainOutput = true;
   }
   $GLOBALS['TYPO3_DB']->store_lastBuiltQuery = true;
   $queryResult->toArray();
   DebuggerUtility::var_dump($GLOBALS['TYPO3_DB']->debug_lastBuiltQuery); 
   $GLOBALS['TYPO3_DB']->store_lastBuiltQuery = false;
   $GLOBALS['TYPO3_DB']->explainOutput = false;
   $GLOBALS['TYPO3_DB']->debugOuput = false;
}

...und dann zur Ausgabe z.B.:

$events = $this->eventRepository->findDemanded($demand, $limit); $this->debugQuery($events);


Quelle:
http://blog.undkonsorten.com/sql-queries-debuggen-in-typo3

Monday, April 6, 2015

Wie kann ich die Extension "linkhandler" unter TYPO3 6.x nutzen? Gibt es ein Update fuer "linkhandler" fuer TYPO3 6.x?

Cobweb's linkhandler befindet sich hier:

https://github.com/cobwebch/linkhandler/

In der momentan aktuellen Version 1.1.0 scheint dieser zu funktionieren und ist kompatibel mit der letzten TER version von aoe's linkhandler (0.3.1)


Daneben finden sich (mindestens) noch folgende linkhandler auf github:

https://github.com/Intera/typo3-extension-linkhandler

...mit geaenderter TypoScript-Konfiguration, offenbar nicht kompatibel zum aoe linkhandler 0.3.1

https://github.com/AOEpeople/linkhandler/

...(nicht getestet)

https://github.com/jacrasmussen/linkhandler

...(nicht getestet)

https://github.com/typo3-ter/linkhandler

...ist offenbar die veraltete TER-version 0.3.1

(
inspire-to-share gone horribly wrong.... ;-)
)



Ein Thread zum Thema, mit evtl. weiteren Informationen:

http://www.latita.de/2014/09/typo3-6-2-x-und-der-aoe-linkhandler/