Альтернативный способ динамического хранения значений в массиве с помощью устаревшего кода, чтобы сделать то же самое - PullRequest
0 голосов
/ 26 сентября 2018

Я работаю над обновлением версии проекта, в результате чего электронные письма извлекаются из Gmail и сохраняются в базе данных.

Я ищу альтернативу для строки №.

"$ this -> _ walk ($ obj, & $ msg [], $ main_content_type);"

, поскольку это не работает в новых версиях PHP.

Есть ли способ обойти такой же результат, который представляет собой единый массив всех почтовых значений?

    function _walk( $object, $msg, $main_content_type = "" )
    {
        if ( !isset( $object->parts ) )
        {
            $ctype = "";
            $ctype = trim( $object->ctype_primary ) . "/" . trim( $object->ctype_secondary );

            if ( isset( $object->disposition ) && ( !strcasecmp( trim( $object->disposition ), "attachment" ) || ( !strcasecmp( trim( $object->disposition ), "inline" ) && ( ( strcasecmp( $ctype, "text/plain" ) && strcasecmp( $ctype, "text/html" ) ) ) ) ) )
            {
                $ctype .= trim( $object->disposition );
            }

            switch ( strtolower( $ctype ) )
            {
                case "text/html":
                    $msg .= $object->body;
                    break;

                case "text/plain":
                    $enc = $object->headers[ 'content-transfer-encoding' ];
                    if ( $enc != "quoted-printable" ) {
                        $msg .= nl2br( $object->body );
                    } else {
                        $msg .= html_entity_decode( $object->body );
                    }
                    break;

                case "image/jpeg":
                case "image/gif":
                case "image/jpg":
                case "image/bmp":
                    $name = trim( $object->headers[ 'name' ] );
                    $cid  = trim( $object->headers[ 'content-id' ] );
                    $cid  = str_ireplace( "<", "", $cid );
                    $cid  = str_ireplace( ">", "", $cid );

                    if ( empty( $name ) )
                        trim( strtok( $object->headers[ 'content-type' ], "=" ) );
                    $name = trim( strtok( "=\"" ) );

                    if ( empty( $name ) ) {
                        $name = $cid . "." . substr( $object->headers[ 'content-type' ], strrpos( $object->headers[ 'content-type' ], "/" ) + 1 );
                    }

                    $temp = $this->mailFolder . "/tmp/";
                    $name = mt_rand( 100, 999999 ) . "_" . $name;
                    @mkdir( $temp, 777 );
                    $tmpfile = $temp . $name;
                    $fp      = fopen( $tmpfile, "w" );
                    fwrite( $fp, $object->body );
                    fclose( $fp );
                    $msg .= $name;
                    break;

                default:
                    $name = trim( $object->headers[ 'name' ] );
                    if ( isset( $object->headers[ 'content-id' ] ) ) {
                        $cid       = trim( $object->headers[ 'content-id' ] );
                        $cid       = str_ireplace( "<", "", $cid );
                        $cid       = str_ireplace( ">", "", $cid );
                        $extension = substr( $object->headers[ 'content-type' ], strpos( $object->headers[ 'content-type' ], "/" ) + 1, strpos( $object->headers[ 'content-type' ], ";" ) - strpos( $object->headers[ 'content-type' ], "/" ) - 1 );
                        $name      = $cid . "." . $extension;
                    }

                    if ( isset( $object->ctype_parameters[ 'name' ] ) ) {
                        $name = trim( $object->ctype_parameters[ 'name' ] );
                    }

                    if ( empty( $name ) && isset( $object->d_parameters[ 'filename' ] ) ) {
                        $name = trim( $object->d_parameters[ 'filename' ] );
                    }

                    if ( empty( $name ) && strrpos( trim( $object->headers[ 'content-type' ] ), "=" ) !== FALSE ) {
                        $name = substr( trim( $object->headers[ 'content-type' ] ), strrpos( trim( $object->headers[ 'content-type' ] ), "=" ) + 2, -1 );
                    }

                    if ( empty( $name ) ) {
                        $name = 'ForwardedMessage.eml';
                    }

                    $temp = $this->mailFolder . "/tmp/";
                    $name = mt_rand( 100, 999999 ) . "_" . $name;
                    @mkdir( $temp, 777 );
                    $tmpfile = $temp . $name;
                    $fp      = fopen( $tmpfile, "w" );
                    fwrite( $fp, $object->body );
                    fclose( $fp );
                    $msg .= $name;
                    break;
            }
        } else {

            foreach ( $object->parts as $obj ) {
                $this->_walk( $obj, &$msg[], $main_content_type );
            }
        }
        return $msg;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...