<?php

class SendEmail {

    private $_base_testes;
    private $_versao;
    private $_headers = array(
        'From' => 'CRM - Delvale Informatica <crm@delvale.com.br>',
        'To' => 'testes@delvale.com.br',
        'Reply-To' => 'marcio@delvale.com.br',
        'Return-Path' => 'marcio@delval.com.br',
        'Content-Type' => 'text/html; charset=iso-8859-1',
        'MIME-Version' => '1.0',
        'X-Mailer' => 'CRM Delvale',
        'CC' => array(),
        'BCC' => array()
    );

    public function __construct($base_testes, $versao) {
        $this->_base_testes = $base_testes;
        $this->_versao = $versao;

        ini_set('sendmail_from', 'crm@delvale.com.br');
        if($this->_base_testes) {
            ini_set('sendmail_from', 'testes@delvale.com.br');
        }
    }

    public function setOptions($options = array()) {
        foreach($options as $option => $value) {
            $this->_headers[$option] = $value;
        }
        $to = array($this->_headers['To']);
        if(isset($this->_headers['CC'])) {
            $this->_headers['CC'] = array_unique($this->_headers['CC']);
            $this->_headers['CC'] = array_diff($this->_headers['CC'], $to);
        }
        if(isset($this->_headers['BCC'])) {
            $this->_headers['BCC'] = array_unique($this->_headers['BCC']);
            $this->_headers['BCC'] = array_diff($this->_headers['BCC'], $to);
        }
        if($this->_base_testes) {
            $this->_headers['X-Mailer'] = 'Testes CRM Delvale ' . $this->_versao;
        } else {
            $this->_headers['X-Mailer'] = 'CRM Delvale ' . $this->_versao;
        }
    }
    private function verifyBaseTestes() {
        if($this->_base_testes) {
            unset($this->_headers['Cc']);
            unset($this->_headers['Bcc']);
            unset($this->_headers['CC']);
            unset($this->_headers['BCC']);
            $this->_headers['Reply-To'] = 'testes@delvale.com.br';
            $this->_headers['Return-Path'] = 'testes@delvale.com.br';
            $this->_headers['From'] = "Testes CRM Delvale <testes@delvale.com.br>";
            $this->_headers['To'] = "testes@delvale.com.br";
        }
    }
    private function getToAsText() {
        $return = '<small style="line-height:10px;color:blue;font-size:10px">Email estava sendo enviado para: ' . $this->_headers['To'] . '<br />';
        if(isset($this->_headers['CC']) && !empty($this->_headers['CC'])) {
            if(is_array($this->_headers['CC'])) {
                $return .= 'Com cópia para: ' . implode(', ', $this->_headers['CC']) . '<br>';
            } else {
                $return .= 'Com cópia para: ' . $this->_headers['CC'] . '<br>';
            }
        }
        if(isset($this->_headers['BCC']) && !empty($this->_headers['BCC'])) {
            if(is_array($this->_headers['BCC'])) {
                $return .= 'Com cópia oculta para: ' . implode(', ', $this->_headers['BCC']) . '<br>';
            } else {
                $return .= 'Com cópia oculta para: ' . $this->_headers['BCC'] . '<br>';
            }
        }
        $return .= '</small>';
        return $return;
    }
    private function getHeadersAsText() {
        if(isset($this->_headers['To'])) {
            unset($this->_headers['To']);
        }
        if(isset($this->_headers['Subject'])) {
            unset($this->_headers['Subject']);
        }
        $headers = array();
        foreach($this->_headers as $header => $value) {
            if(is_array($value)) {
                foreach($value as $copy) {
                    $headers[] = $header . ': ' . $copy;
                }
            } else {
                $headers[] = $header . ': ' . $value;
            }
        }
        return implode("\r\n", $headers);
    }

    public function send($to, $subject, $text, $extra = array(), $noReply = false) {
        if(empty($this->_versao)) {
            $this->_versao = '3.1';
        }
        $this->_headers['To'] = $to;
        $this->_headers['Subject'] = $subject;
        if ($noReply) {
            $this->_headers['Reply-To'] = 'nao-responder@delvale.com.br';
        }
        $this->setOptions($extra);
        $body = '
        <html>
        <head>
            <meta content="text/html; charset=UTF-8" http-equiv="content-type">
        </head>
        <body>
        <table cellspacing="0" cellpadding="10" style="color:#666;font:13px;width:100%;line-height: 200%;">
            <tbody>
                <tr>
                    <td style="font-family: \'Open Sans\';color:#4D90FE;font-size:22px;border-bottom: 2px solid #4D90FE;padding-left:0;padding-right:0;padding-bottom:10px;">
                        <p>Prezado(a), </p>
                    </td>
                </tr>
                <tr>
                <td></td>
                </tr>
                <tr>
                    <td style="color:#333;font-size:14px;margin-top: 10px;padding-top:15px;padding-left: 20px; background: #f5f5f5">
                        ' . $text.'
                    </td>
                </tr>
                <tr>
                    <td style="font-size:14px;padding-top:30px;">
                        Favor não responder este e-mail, pois a caixa de e-mail de resposta não é verificada.
                    </td>
                </tr>
                <tr>
                    <td style="font-size:16px;padding-top:20px;">
                            <b>Atenciosamente,<br />
                            Delvale Informática</b>
                    </td>
                </tr>
                <tr>
                    <td>
                    <table cellspacing="0" cellpadding="10" style="font-size:11px;line-height:120%;width:100%;padding-top:5px;border-top:solid 1px #dfdfdf;color:#666">
                        <tbody>
                            <tr>
                                <td>
                                    Delvale Informática<br />
                                    Rua Osvaldo Cruz, 46, Bairro: Americano, Lajeado - RS, CEP: 95900-528<br />
                                    Fone: (51) 3707-0777 | E-mail: delvale@delvale.com.br<br />
                                </td>
                                <td style="padding:15px 20px;text-align:right;>
                                    <a href="'.($this->_base_testes ? 'devel.' : '').'delvale.com.br">
                                        <img width="150" height="38" src="http://crm.delvale.com.br/assets_custom/email/logo.jpg" />
                                    </a>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                    </td>
                </tr>
                <tr>
                    <td style="padding:15px 20px;text-align:left;padding-top:5px;border-top:solid 1px #F1F1F1">
                        E-mail enviado atrav&eacute;s do CRM Delvale '.$this->_versao.' '.($this->_base_testes ? '(Vers&atilde;o de testes)<br />' . $this->getToAsText() : '') .'
                    </td>
                </tr>
            </tbody>
        </table>
        </body>
        </html>';

        $this->verifyBaseTestes();
        return mail($this->_headers['To'], $this->_headers['Subject'], $body, $this->getHeadersAsText());
    }
}
