Selaa lähdekoodia

web: removed class.simple.mail
upgrade: fixed upgrade script for 2.7.0

root 1 vuosi sitten
vanhempi
sitoutus
b49c302
4 muutettua tiedostoa jossa 16 lisäystä ja 731 poistoa
  1. 0 714
      html/inc/class.simple.mail.php
  2. 12 14
      html/inc/common.php
  3. 2 0
      scripts/updates/2-7-0/options.sql
  4. 2 3
      scripts/updates/upgrade.pl

+ 0 - 714
html/inc/class.simple.mail.php

@@ -1,714 +0,0 @@
-<?php
-/**
- * Simple Mail
- *
- * A simple PHP wrapper class for sending email using the mail() method.
- *
- * PHP version > 5.2
- *
- * LICENSE: This source file is subject to the MIT license, which is
- * available through the world-wide-web at the following URI:
- * http://github.com/eoghanobrien/php-simple-mail/LICENCE.txt
- *
- * @category  SimpleMail
- * @package   SimpleMail
- * @author    Eoghan O'Brien <eoghan@eoghanobrien.com>
- * @copyright 2009 - 2017 Eoghan O'Brien
- * @license   http://github.com/eoghanobrien/php-simple-mail/LICENCE.txt MIT
- * @version   1.7.1
- * @link      http://github.com/eoghanobrien/php-simple-mail
- */
-
-/**
- * Simple Mail class.
- *
- * @category  SimpleMail
- * @package   SimpleMail
- * @author    Eoghan O'Brien <eoghan@eoghanobrien.com>
- * @copyright 2009 - 2017 Eoghan O'Brien
- * @license   http://github.com/eoghanobrien/php-simple-mail/LICENCE.txt MIT
- * @version   1.7.1
- * @link      http://github.com/eoghanobrien/php-simple-mail
- */
-class SimpleMail
-{
-    /**
-     * @var int $_wrap
-     */
-    protected $_wrap = 78;
-
-    /**
-     * @var array $_to
-     */
-    protected $_to = array();
-
-    /**
-     * @var string $_subject
-     */
-    protected $_subject;
-
-    /**
-     * @var string $_message
-     */
-    protected $_message;
-
-    /**
-     * @var array $_headers
-     */
-    protected $_headers = array();
-
-    /**
-     * @var string $_parameters
-     */
-    protected $_params;
-
-    /**
-     * @var array $_attachments
-     */
-    protected $_attachments = array();
-
-    /**
-     * @var string $_uid
-     */
-    protected $_uid;
-
-    /**
-     * Named constructor.
-     *
-     * @return static
-     */
-    public static function make()
-    {
-        return new SimpleMail();
-    }
-
-    /**
-     * __construct
-     *
-     * Resets the class properties.
-     */
-    public function __construct()
-    {
-        $this->reset();
-    }
-
-    /**
-     * reset
-     *
-     * Resets all properties to initial state.
-     *
-     * @return self
-     */
-    public function reset()
-    {
-        $this->_to = array();
-        $this->_headers = array();
-        $this->_subject = null;
-        $this->_message = null;
-        $this->_wrap = 78;
-        $this->_params = null;
-        $this->_attachments = array();
-        $this->_uid = $this->getUniqueId();
-        return $this;
-    }
-
-    /**
-     * setTo
-     *
-     * @param string $email The email address to send to.
-     * @param string $name  The name of the person to send to.
-     *
-     * @return self
-     */
-    public function setTo($email, $name)
-    {
-        $this->_to[] = $this->formatHeader((string) $email, (string) $name);
-        return $this;
-    }
-
-    /**
-     * getTo
-     *
-     * Return an array of formatted To addresses.
-     *
-     * @return array
-     */
-    public function getTo()
-    {
-        return $this->_to;
-    }
-
-    /**
-     * setFrom
-     *
-     * @param string $email The email to send as from.
-     * @param string $name  The name to send as from.
-     *
-     * @return self
-     */
-    public function setFrom($email, $name)
-    {
-        $this->addMailHeader('From', (string) $email, (string) $name);
-        return $this;
-    }
-
-    /**
-     * setCc
-     *
-     * @param array  $pairs  An array of name => email pairs.
-     *
-     * @return self
-     */
-    public function setCc(array $pairs)
-    {
-        return $this->addMailHeaders('Cc', $pairs);
-    }
-
-    /**
-     * setBcc
-     *
-     * @param array  $pairs  An array of name => email pairs.
-     *
-     * @return self
-     */
-    public function setBcc(array $pairs)
-    {
-        return $this->addMailHeaders('Bcc', $pairs);
-    }
-
-    /**
-     * setReplyTo
-     *
-     * @param string $email
-     * @param string $name
-     *
-     * @return self
-     */
-    public function setReplyTo($email, $name = null)
-    {
-        return $this->addMailHeader('Reply-To', $email, $name);
-    }
-
-    /**
-     * setHtml
-     *
-     * @return self
-     */
-    public function setHtml()
-    {
-        return $this->addGenericHeader(
-            'Content-Type', 'text/html; charset="utf-8"'
-        );
-    }
-
-    /**
-     * setSubject
-     *
-     * @param string $subject The email subject
-     *
-     * @return self
-     */
-    public function setSubject($subject)
-    {
-        $this->_subject = $this->encodeUtf8(
-            $this->filterOther((string) $subject)
-        );
-        return $this;
-    }
-
-    /**
-     * getSubject function.
-     *
-     * @return string
-     */
-    public function getSubject()
-    {
-        return $this->_subject;
-    }
-
-    /**
-     * setMessage
-     *
-     * @param string $message The message to send.
-     *
-     * @return self
-     */
-    public function setMessage($message)
-    {
-        $this->_message = str_replace("\n.", "\n..", (string) $message);
-        return $this;
-    }
-
-    /**
-     * getMessage
-     *
-     * @return string
-     */
-    public function getMessage()
-    {
-        return $this->_message;
-    }
-
-    /**
-     * addAttachment
-     *
-     * @param string $path The file path to the attachment.
-     * @param string $filename The filename of the attachment when emailed.
-     * @param null $data
-     * 
-     * @return self
-     */
-    public function addAttachment($path, $filename = null, $data = null)
-    {
-        $filename = empty($filename) ? basename($path) : $filename;
-        $filename = $this->encodeUtf8($this->filterOther((string) $filename));
-        $data = empty($data) ? $this->getAttachmentData($path) : $data;
-        $this->_attachments[] = array(
-            'path' => $path,
-            'file' => $filename,
-            'data' => chunk_split(base64_encode($data))
-        );
-        return $this;
-    }
-
-    /**
-     * getAttachmentData
-     *
-     * @param string $path The path to the attachment file.
-     *
-     * @return string
-     */
-    public function getAttachmentData($path)
-    {
-        $filesize = filesize($path);
-        $handle = fopen($path, "r");
-        $attachment = fread($handle, $filesize);
-        fclose($handle);
-        return $attachment;
-    }
-
-    /**
-     * addMailHeader
-     *
-     * @param string $header The header to add.
-     * @param string $email  The email to add.
-     * @param string $name   The name to add.
-     *
-     * @return self
-     */
-    public function addMailHeader($header, $email, $name = null)
-    {
-        $address = $this->formatHeader((string) $email, (string) $name);
-        $this->_headers[] = sprintf('%s: %s', (string) $header, $address);
-        return $this;
-    }
-
-    /**
-     * addMailHeaders
-     *
-     * @param string $header The header to add.
-     * @param array  $pairs  An array of name => email pairs.
-     *
-     * @return self
-     */
-    public function addMailHeaders($header, array $pairs)
-    {
-        if (count($pairs) === 0) {
-            throw new InvalidArgumentException(
-                'You must pass at least one name => email pair.'
-            );
-        }
-        $addresses = array();
-        foreach ($pairs as $name => $email) {
-            $name = is_numeric($name) ? null : $name;
-            $addresses[] = $this->formatHeader($email, $name);
-        }
-        $this->addGenericHeader($header, implode(',', $addresses));
-        return $this;
-    }
-
-    /**
-     * addGenericHeader
-     *
-     * @param string $header The generic header to add.
-     * @param mixed  $value  The value of the header.
-     *
-     * @return self
-     */
-    public function addGenericHeader($header, $value)
-    {
-        $this->_headers[] = sprintf(
-            '%s: %s',
-            (string) $header,
-            (string) $value
-        );
-        return $this;
-    }
-
-    /**
-     * getHeaders
-     *
-     * Return the headers registered so far as an array.
-     *
-     * @return array
-     */
-    public function getHeaders()
-    {
-        return $this->_headers;
-    }
-
-    /**
-     * setAdditionalParameters
-     *
-     * Such as "-fyouremail@yourserver.com
-     *
-     * @param string $additionalParameters The addition mail parameter.
-     *
-     * @return self
-     */
-    public function setParameters($additionalParameters)
-    {
-        $this->_params = (string) $additionalParameters;
-        return $this;
-    }
-
-    /**
-     * getAdditionalParameters
-     *
-     * @return string
-     */
-    public function getParameters()
-    {
-        return $this->_params;
-    }
-
-    /**
-     * setWrap
-     *
-     * @param int $wrap The number of characters at which the message will wrap.
-     *
-     * @return self
-     */
-    public function setWrap($wrap = 78)
-    {
-        $wrap = (int) $wrap;
-        if ($wrap < 1) {
-            $wrap = 78;
-        }
-        $this->_wrap = $wrap;
-        return $this;
-    }
-
-    /**
-     * getWrap
-     *
-     * @return int
-     */
-    public function getWrap()
-    {
-        return $this->_wrap;
-    }
-
-    /**
-     * hasAttachments
-     * 
-     * Checks if the email has any registered attachments.
-     *
-     * @return bool
-     */
-    public function hasAttachments()
-    {
-        return !empty($this->_attachments);
-    }
-
-    /**
-     * assembleAttachment
-     *
-     * @return string
-     */
-    public function assembleAttachmentHeaders()
-    {
-        $head = array();
-        $head[] = "MIME-Version: 1.0";
-        $head[] = "Content-Type: multipart/mixed; boundary=\"{$this->_uid}\"";
-
-        return join(PHP_EOL, $head);
-    }
-
-    /**
-     * assembleAttachmentBody
-     *
-     * @return string
-     */
-    public function assembleAttachmentBody()
-    {
-        $body = array();
-        $body[] = "This is a multi-part message in MIME format.";
-        $body[] = "--{$this->_uid}";
-        $body[] = "Content-Type: text/html; charset=\"utf-8\"";
-        $body[] = "Content-Transfer-Encoding: quoted-printable";
-        $body[] = "";
-        $body[] = quoted_printable_encode($this->_message);
-        $body[] = "";
-        $body[] = "--{$this->_uid}";
-
-        foreach ($this->_attachments as $attachment) {
-            $body[] = $this->getAttachmentMimeTemplate($attachment);
-        }
-
-        return implode(PHP_EOL, $body) . '--';
-    }
-
-    /**
-     * getAttachmentMimeTemplate
-     *
-     * @param array  $attachment An array containing 'file' and 'data' keys.
-     *
-     * @return string
-     */
-    public function getAttachmentMimeTemplate($attachment)
-    {
-        $file = $attachment['file'];
-        $data = $attachment['data'];
-
-        $head = array();
-        $head[] = "Content-Type: application/octet-stream; name=\"{$file}\"";
-        $head[] = "Content-Transfer-Encoding: base64";
-        $head[] = "Content-Disposition: attachment; filename=\"{$file}\"";
-        $head[] = "";
-        $head[] = $data;
-        $head[] = "";
-        $head[] = "--{$this->_uid}";
-
-        return implode(PHP_EOL, $head);
-    }
-
-    /**
-     * send
-     *
-     * @return boolean
-     * @throws \RuntimeException on no 'To: ' address to send to.
-     */
-    public function send()
-    {
-        $to = $this->getToForSend();
-        $headers = $this->getHeadersForSend();
-
-        if (empty($to)) {
-            throw new \RuntimeException(
-                'Unable to send, no To address has been set.'
-            );
-        }
-
-        if ($this->hasAttachments()) {
-            $message  = $this->assembleAttachmentBody();
-            $headers .= PHP_EOL . $this->assembleAttachmentHeaders();
-        } else {
-            $message = $this->getWrapMessage();
-        }
-
-        return mail($to, $this->_subject, $message, $headers, $this->_params);
-    }
-
-    /**
-     * debug
-     *
-     * @return string
-     */
-    public function debug()
-    {
-        return '<pre>' . print_r($this, true) . '</pre>';
-    }
-
-    /**
-     * magic __toString function
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return print_r($this, true);
-    }
-
-    /**
-     * formatHeader
-     *
-     * Formats a display address for emails according to RFC2822 e.g.
-     * Name <address@domain.tld>
-     *
-     * @param string $email The email address.
-     * @param string $name  The display name.
-     *
-     * @return string
-     */
-    public function formatHeader($email, $name = null)
-    {
-        $email = $this->filterEmail((string) $email);
-        if (empty($name)) {
-            return $email;
-        }
-        $name = $this->encodeUtf8($this->filterName((string) $name));
-        return sprintf('"%s" <%s>', $name, $email);
-    }
-
-    /**
-     * encodeUtf8
-     *
-     * @param string $value The value to encode.
-     *
-     * @return string
-     */
-    public function encodeUtf8($value)
-    {
-        $value = trim($value);
-        if (preg_match('/(\s)/', $value)) {
-            return $this->encodeUtf8Words($value);
-        }
-        return $this->encodeUtf8Word($value);
-    }
-
-    /**
-     * encodeUtf8Word
-     *
-     * @param string $value The word to encode.
-     *
-     * @return string
-     */
-    public function encodeUtf8Word($value)
-    {
-        return sprintf('=?UTF-8?B?%s?=', base64_encode($value));
-    }
-
-    /**
-     * encodeUtf8Words
-     *
-     * @param string $value The words to encode.
-     *
-     * @return string
-     */
-    public function encodeUtf8Words($value)
-    {
-        $words = explode(' ', $value);
-        $encoded = array();
-        foreach ($words as $word) {
-            $encoded[] = $this->encodeUtf8Word($word);
-        }
-        return join($this->encodeUtf8Word(' '), $encoded);
-    }
-
-    /**
-     * filterEmail
-     *
-     * Removes any carriage return, line feed, tab, double quote, comma
-     * and angle bracket characters before sanitizing the email address.
-     *
-     * @param string $email The email to filter.
-     *
-     * @return string
-     */
-    public function filterEmail($email)
-    {
-        $rule = array(
-            "\r" => '',
-            "\n" => '',
-            "\t" => '',
-            '"'  => '',
-            ','  => '',
-            '<'  => '',
-            '>'  => ''
-        );
-        $email = strtr($email, $rule);
-        $email = filter_var($email, FILTER_SANITIZE_EMAIL);
-        return $email;
-    }
-
-    /**
-     * filterName
-     *
-     * Removes any carriage return, line feed or tab characters. Replaces
-     * double quotes with single quotes and angle brackets with square
-     * brackets, before sanitizing the string and stripping out html tags.
-     *
-     * @param string $name The name to filter.
-     *
-     * @return string
-     */
-    public function filterName($name)
-    {
-        $rule = array(
-            "\r" => '',
-            "\n" => '',
-            "\t" => '',
-            '"'  => "'",
-            '<'  => '[',
-            '>'  => ']',
-        );
-        $filtered = filter_var(
-            $name,
-            FILTER_SANITIZE_STRING,
-            FILTER_FLAG_NO_ENCODE_QUOTES
-        );
-        return trim(strtr($filtered, $rule));
-    }
-
-    /**
-     * filterOther
-     *
-     * Removes ASCII control characters including any carriage return, line
-     * feed or tab characters.
-     *
-     * @param string $data The data to filter.
-     *
-     * @return string
-     */
-    public function filterOther($data)
-    {
-        return filter_var($data, FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_LOW);
-    }
-
-    /**
-     * getHeadersForSend
-     *
-     * @return string
-     */
-    public function getHeadersForSend()
-    {
-        if (empty($this->_headers)) {
-            return '';
-        }
-        return join(PHP_EOL, $this->_headers);
-    }
-
-    /**
-     * getToForSend
-     *
-     * @return string
-     */
-    public function getToForSend()
-    {
-        if (empty($this->_to)) {
-            return '';
-        }
-        return join(', ', $this->_to);
-    }
-
-    /**
-     * getUniqueId
-     *
-     * @return string
-     */
-    public function getUniqueId()
-    {
-        return md5(uniqid(time()));
-    }
-
-    /**
-     * getWrapMessage
-     *
-     * @return string
-     */
-    public function getWrapMessage()
-    {
-        return wordwrap($this->_message, $this->_wrap);
-    }
-}

+ 12 - 14
html/inc/common.php

@@ -3,7 +3,6 @@ if (!defined("CONFIG")) {
     die("Not defined");
 }
 
-require_once($_SERVER['DOCUMENT_ROOT'] . "/inc/class.simple.mail.php");
 require_once($_SERVER['DOCUMENT_ROOT'] . "/inc/consts.php");
 
 #ValidIpAddressRegex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";
@@ -2225,7 +2224,6 @@ function get_first_line($msg)
 
 function email($level, $msg)
 {
-
     if (!get_const('send_email')) {
         return;
     }
@@ -2233,28 +2231,28 @@ function email($level, $msg)
         return;
     }
 
+    $message = '<html>';
     $subject = get_first_line($msg);
 
     if ($level === L_WARNING) {
         $subject = "WARN: " . $subject . "...";
-        $message = 'WARNING! Manager: ' . $_SESSION['login'] . ' </br>';
+        $message .= 'WARNING! Manager: ' . $_SESSION['login'] . ' </br>';
     }
     if ($level === L_ERROR) {
         $subject = "ERROR: " . $subject . "...";
-        $message = 'ERROR! Manager: ' . $_SESSION['login'] . ' </br>';
+        $message .= 'ERROR! Manager: ' . $_SESSION['login'] . ' </br>';
     }
 
     $msg_lines = preg_replace("/\r\n/", "</br>", $msg);
-    $message .= $msg_lines;
-
-    $send = SimpleMail::make()
-        ->setTo(get_const('admin_email'), 'Administrator')
-        ->setFrom(get_const('sender_email'), 'Stat')
-        ->setSubject($subject)
-        ->setMessage($message)
-        ->setHtml()
-        ->setWrap(80)
-        ->send();
+    $msg_lines = preg_replace("/\n/", "</br>", $msg_lines);
+    $message  .= $msg_lines.'</html>';
+
+    $to        = get_const('admin_email');
+    $headers = 'From: '. get_const('sender_email') . "\r\n" .
+               'X-Mailer: PHP'."\r\n".
+               'Content-Type: text/html; charset="utf-8"'."\r\n";
+
+    mail($to, $subject, $message, $headers);
 }
 
 function write_log($db, $msg, $level, $auth_id = 0)

+ 2 - 0
scripts/updates/2-7-0/options.sql

@@ -0,0 +1,2 @@
+UPDATE `config_options` SET `default_value` = '1', `max_value` = '10' WHERE `config_options`.`id` = 55;
+UPDATE `config` SET `value` = '1' WHERE `config`.`option_id` = 55;

+ 2 - 3
scripts/updates/upgrade.pl

@@ -7,7 +7,6 @@
 use utf8;
 use FindBin '$Bin';
 use lib "/opt/Eye/scripts";
-use Data::Dumper;
 use eyelib::config;
 use eyelib::main;
 use eyelib::mysql;
@@ -40,8 +39,7 @@ my @old_releases = (
 
 my $r_index = 0;
 my %old_releases_h = map {$_ => $r_index++ } @old_releases;
-
-my $eye_release = pop @old_releases;
+my $eye_release = $old_releases[@old_releases - 1];
 
 if (!$config_ref{version}) { $config_ref{version}='2.4.12'; }
 
@@ -57,6 +55,7 @@ print 'Current version: '.$config_ref{version}.' upgrade to: '.$eye_release."\n"
 
 my $old_version_index = $old_releases_h{$config_ref{version}} + 1;
 my $stage = 1;
+
 for (my $i=$old_version_index; $i < scalar @old_releases; $i++) {
     print "Stage $stage. Upgrade to $old_releases[$i]\n";
     $stage++;