Hallo zusammen

ik bin's mal wieder :)

Aufgrund der Tatsache, dass ich durch diese Version im typo3conf eine enorm große deprecation_xxx.log erhalte habe ich mich ein wenig mit den veralteten Funktionen auseinander gesetzt.

Hier die einfachen Lösungen:


fix t3lib_div::GParrayMerged();

Code:
file: class.tx_commerce_attributeeditor.php
line: 83

-   $getPostedit=t3lib_div::GParrayMerged('edit');
+   $getPostedit=t3lib_div::_GPmerged('edit');

file: lib/class.tx_commerce_navigation
line: 127

-   $this->gpVars = t3lib_div::GParrayMerged('tx_commerce_pi1');
+   $this->gpVars = t3lib_div::_GPmerged('tx_commerce_pi1');

file: lib/class.tx_commerce_navigation
line: 951

-   $this->gpVars = t3lib_div::GParrayMerged('tx_commerce_pi1');
+   $this->gpVars = t3lib_div::_GPmerged('tx_commerce_pi1');

fix t3lib_BEfunc::getSetUpdateSignal
Code:
file: hooks/class.tx_commerce_cmhooks.php
line: 152

- t3lib_BEfunc::getSetUpdateSignal('updatePageTree');
+ t3lib_BEfunc::setUpdateSignal('updatePageTree');

file: hooks/class.tx_commerce_dmhooks.php
line: 1162

- t3lib_BEfunc::getSetUpdateSignal('updatePageTree');
+ t3lib_BEfunc::setUpdateSignal('updatePageTree');

file: lib/class._tx_commerce_db_list.php
line: 454

- t3lib_BEfunc::getSetUpdateSignal('updatePageTree');
+ t3lib_BEfunc::setUpdateSignal('updatePageTree');

mod_cce/tx_commerce_cce_db.php
line: 411

-   t3lib_BEfunc::getSetUpdateSignal('updatePageTree');
+   t3lib_BEfunc::setUpdateSignal('updatePageTree');
fix tslib_cObj->checkEmail()
Code:
file: pi3/class.tx_commerce_pi3.php
line: 1966

- if ($userMail != '' && $this->cObj->checkEmail($userMail)) {
+ if ($userMail != '' && t3lib_div::validEmail($userMail)) {
Das ganze hab ich auch schon zum "forge" geschickt zur review.
http://forge.typo3.org/issues/14035


Allerdings tritt dann immer noch ein Fehler mit der veralteten Classe t3lib_div::makeInstance('t3lib_htmlmail'); auf.
Da diese in typo3 4.6 entfernt wird sollte diese umgeschrieben werden.

Diese Classe wird in commerce in der Datei lib/class.tx_commerce_div.php aufgerufen.
Dort wird das "Emailing" der Commerce Extension verarbeitet (Admin und User Mail).


So nun hab ich mich hingesetzt und die Funktion sendMail()
neu geschrieben um den Swiftmailer zu verwenden.
t3lib_div::makeInstance('t3lib_mail_Message');

Und hier kommt IHR ins spiel!
Da ich etwas unsicher bin ob ich da alles richtig gemacht habe, bzgl Sicherheit, sauberer Code etc., wünscht ich mir das mal jemand drüber schaut der davon Ahnung hat.

Also prinzipiell scheint alles ohne Probleme zu funktionieren - aber wir kennen das ja - funktionieren heißt noch lange nicht "richtig Funktionieren".

Wenn die Funktion so in Ordnung wäre und keiner Verbesserungsvorschläge oder ähnliches hat ,würde ich diese so auch im "t3 Forge" melden. In der Hoffnung auf eine neue gefixte SVN Version.


PHP-Code:
    function sendMail($mailconf) {
    
        
$mailconf['recipient'] = tx_commerce_div::validEmailList($mailconf['recipient']);
        if (
$mailconf['recipient']) {
            
            
$hookObjectsArr = array();
            if (
is_array ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/lib/class.tx_commerce_div.php']['sendMail']))    {
                foreach (
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/lib/class.tx_commerce_div.php']['sendMail'] as $classRef)    {
                    
$hookObjectsArr[] = &t3lib_div::getUserObj($classRef);
                }
            }
            
            if (
$mailconf['additionalData']) {
                
$additionalData $mailconf['additionalData'];
            }
            
            foreach(
$hookObjectsArr as $hookObj)    {
                
/**
                * @depricated: This Hook is depricated
                */
                
if (method_exists($hookObj'preProcessHtmlMail'))    {
                    
$mail=$hookObj->preProcessHtmlMail($mailconf);
                }

                
/**
                * this is the current hook
                */
                
if (method_exists($hookObj'preProcessMail'))    {
                    
$hookObj->preProcessMail($mailconf,$additionalData);
                }
            }
            
            foreach(
$hookObjectsArr as $hookObj)    {
                if (
method_exists($hookObj'ownMailRendering'))    {
                    
$this->hookObjectsArr $hookObjectsArr;
                        return 
$hookObj->ownMailRendering($mailconf,$additionalData,$this);
                    }
            }

            
$mail t3lib_div::makeInstance('t3lib_mail_Message');
            
            
$namefrom $mailconf['fromName'];
            
$namefrom $mailconf['fromName'];
            
$emailfrom tx_commerce_div::validEmailList($mailconf['fromEmail']);
            
            
$mail->setFrom(array($emailfrom => $namefrom));
            
            
            
$emailto tx_commerce_div::validEmailList($mailconf['recipient']);
            
            
$mail->setTo(array($emailto => $emailto));
            
            
            
$parts explode('<title>|</title>'$mailconf['html']['content'], 3);
            if (
trim($parts[1])) {
                
$subject strip_tags(trim($parts[1]));
            }elseif( 
$mailconf['plain']['subject']){
                
$subject $mailconf['plain']['subject'];
            }else{
                
$subject $mailconf['alternateSubject'];
            }
            
            
$mail->setSubject($subject);
            
            
$htmlcontent $mailconf['html']['content']:
            
$plaincontent $mailconf['plain']['content'];
            
            if(
$mailconf['html']['useHtml'] == '1'){
                
$mail->setBody($htmlcontent'text/html');
            }else{
                
$mail->addPart($plaincontent'text/plain');

            }
            
            if (
is_array($mailconf['attach'])) {
                foreach(
$mailconf['attach'] as $file) {    
                    if (
$file && file_exists($file)) {
                        
$mail->attach(Swift_Attachment::fromPath($file));
                    }
                }
            }
            
            foreach(
$hookObjectsArr as $hookObj)    {
                if (
method_exists($hookObj'postProcessMail'))    {
                    
$mail=$hookObj->postProcessMail($mail,$mailconf,$additionalData);
                }
            }
            
            
$mail->send();

            return 
true;
        }        
        return 
false;    
    } 

Ich hoffe jemand kann mir helfen.

Viele Grüße
Daniel