mirror of
https://github.com/e107inc/e107.git
synced 2025-07-31 03:40:37 +02:00
fix(#5131): Accurate resource open check when using log file handle
Fixes: https://github.com/e107inc/e107/issues/5131
This commit is contained in:
@@ -130,14 +130,10 @@ if (!defined('e107_INIT')) { exit; }
|
|||||||
//define('MAIL_DEBUG',true);
|
//define('MAIL_DEBUG',true);
|
||||||
//define('LOG_CALLER', true);
|
//define('LOG_CALLER', true);
|
||||||
|
|
||||||
//require_once(e_HANDLER.'phpmailer/class.phpmailer.php');
|
|
||||||
//require_once(e_HANDLER.'phpmailer/class.smtp.php');
|
|
||||||
//require_once(e_HANDLER.'phpmailer/PHPMailerAutoload.php');
|
|
||||||
|
|
||||||
use PHPMailer\PHPMailer\PHPMailer;
|
|
||||||
// use PHPMailer\PHPMailer\SMTP;
|
|
||||||
use PHPMailer\PHPMailer\POP3;
|
|
||||||
use PHPMailer\PHPMailer\Exception;
|
use PHPMailer\PHPMailer\Exception;
|
||||||
|
use PHPMailer\PHPMailer\PHPMailer;
|
||||||
|
use PHPMailer\PHPMailer\POP3;
|
||||||
|
|
||||||
require_once(e_HANDLER.'vendor/autoload.php');
|
require_once(e_HANDLER.'vendor/autoload.php');
|
||||||
|
|
||||||
|
|
||||||
@@ -438,7 +434,7 @@ class e107Email extends PHPMailer
|
|||||||
*/
|
*/
|
||||||
protected function openLog($logInfo = true)
|
protected function openLog($logInfo = true)
|
||||||
{
|
{
|
||||||
if ($this->logEnable && ($this->logHandle === false))
|
if ($this->logEnable && !is_resource($this->logHandle))
|
||||||
{
|
{
|
||||||
$logFileName = MAIL_LOG_PATH.'mailoutlog.log';
|
$logFileName = MAIL_LOG_PATH.'mailoutlog.log';
|
||||||
$this->logHandle = fopen($logFileName, 'a'); // Always append to file
|
$this->logHandle = fopen($logFileName, 'a'); // Always append to file
|
||||||
@@ -487,7 +483,7 @@ class e107Email extends PHPMailer
|
|||||||
*/
|
*/
|
||||||
protected function logLine($text)
|
protected function logLine($text)
|
||||||
{
|
{
|
||||||
if ($this->logEnable && ($this->logHandle > 0))
|
if ($this->logEnable && is_resource($this->logHandle))
|
||||||
{
|
{
|
||||||
fwrite($this->logHandle,date('H:i:s y.m.d').' - '.$text."\r\n");
|
fwrite($this->logHandle,date('H:i:s y.m.d').' - '.$text."\r\n");
|
||||||
}
|
}
|
||||||
@@ -496,11 +492,12 @@ class e107Email extends PHPMailer
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close log
|
* Close log
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function closeLog()
|
protected function closeLog()
|
||||||
{
|
{
|
||||||
if ($this->logEnable && ($this->logHandle > 0))
|
if ($this->logEnable && is_resource($this->logHandle))
|
||||||
{
|
{
|
||||||
fclose($this->logHandle);
|
fclose($this->logHandle);
|
||||||
}
|
}
|
||||||
|
@@ -276,4 +276,50 @@ Admin<br />
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see https://github.com/e107inc/e107/issues/5131
|
||||||
|
* @throws Exception if the {@link e107Email} object cannot be created.
|
||||||
|
*/
|
||||||
|
function testLogFileHandle()
|
||||||
|
{
|
||||||
|
$logFilePath = e_ROOT . MAIL_LOG_PATH . 'mailoutlog.log';
|
||||||
|
|
||||||
|
$randomString1 = uniqid();
|
||||||
|
$randomString2 = uniqid();
|
||||||
|
|
||||||
|
$this->assertFalse($this->fileContainsString($logFilePath, $randomString1));
|
||||||
|
$this->assertFalse($this->fileContainsString($logFilePath, $randomString2));
|
||||||
|
|
||||||
|
$eml = $this->make('e107Email', ['send' => function() { return true; }]);
|
||||||
|
$eml->logEnable(2);
|
||||||
|
$eml->sendEmail(
|
||||||
|
'nobody@example.com',
|
||||||
|
"$randomString1 Example",
|
||||||
|
['body' => 'Message body'],
|
||||||
|
);
|
||||||
|
$this->assertTrue($this->fileContainsString($logFilePath, $randomString1));
|
||||||
|
$eml->sendEmail(
|
||||||
|
'nobody2@example.com',
|
||||||
|
"$randomString2 Example",
|
||||||
|
['body' => 'Message body'],
|
||||||
|
);
|
||||||
|
$this->assertTrue($this->fileContainsString($logFilePath, $randomString2));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $filePath
|
||||||
|
* @param $string
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private function fileContainsString($filePath, $string)
|
||||||
|
{
|
||||||
|
if (!file_exists($filePath)) return false;
|
||||||
|
$handle = fopen($filePath, 'r');
|
||||||
|
while (($buffer = fgets($handle)) !== false) {
|
||||||
|
if (strpos($buffer, $string) !== false) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user