forked from typecho-fans/plugins
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix:CommentPush支持php8 typecho-fans#115
- Loading branch information
1 parent
136fae2
commit bd29a6b
Showing
10 changed files
with
239 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
167 changes: 167 additions & 0 deletions
167
CommentPush/lib/SmtpService.sync-conflict-20210201-052039-BKQBY4R.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,167 @@ | ||
<?php | ||
/** | ||
* @author gaobinzhan <gaobinzhan@gmail.com> | ||
*/ | ||
|
||
require_once 'Service.php'; | ||
require_once 'Extend/SMTP.php'; | ||
require_once 'Extend/PHPMailer.php'; | ||
|
||
class SmtpService extends Service | ||
{ | ||
public function __handler($active, $comment, $plugin) | ||
{ | ||
try { | ||
$isPushBlogger = $plugin->isPushBlogger; | ||
if ($comment['authorId'] == 1 && $isPushBlogger == 1 && !$comment['parent']) return false; | ||
|
||
$isPushCommentReply = $plugin->isPushCommentReply; | ||
|
||
$options = Helper::options(); | ||
|
||
$smtpHost = $plugin->smtpHost; | ||
$smtpPort = $plugin->smtpPort; | ||
$smtpUser = $plugin->smtpUser; | ||
$smtpPass = $plugin->smtpPass; | ||
$smtpAuth = $plugin->smtpAuth; | ||
$smtpSecure = $plugin->smtpSecure; | ||
|
||
$authorTemplate = $plugin->authorTemplate; | ||
$replyTemplate = $plugin->replyTemplate; | ||
|
||
$smtpFromAlias = empty($plugin->smtpFromAlias) ? $options->title : $plugin->smtpFromAlias; | ||
$toAddress = $comment['mail']; | ||
|
||
|
||
if (empty($smtpHost) || empty($smtpPort) || empty($smtpUser) || empty($smtpPass) || empty($smtpSecure)) throw new \Exception('缺少SMTP邮件推送配置'); | ||
|
||
|
||
$parentComment = NULL; | ||
|
||
if ($comment['authorId'] != $comment['ownerId']) { | ||
$author = self::getWidget('Users', 'uid', $comment['ownerId']); | ||
$toAddress = $author->mail; | ||
$parentComment = NULL; | ||
} | ||
|
||
|
||
if ($comment['parent'] && $comment['parent'] > 0) { | ||
$parentComment = self::getWidget('Comments', 'coid', $comment['parent']); | ||
if (isset($parentComment->coid) && $comment['mail'] != $parentComment->mail) { | ||
$toAddress = $parentComment->mail; | ||
} | ||
} | ||
|
||
if (!is_null($parentComment) && $isPushCommentReply != 1) return false; | ||
|
||
list($subject, $body) = self::getSubjectAndBody($parentComment, $options, $comment, $active, $authorTemplate, $replyTemplate); | ||
|
||
|
||
$mail = new PHPMailer(true); | ||
$mail->CharSet = "UTF-8"; | ||
$mail->SMTPDebug = 0; | ||
$mail->isSMTP(); | ||
$mail->Host = $smtpHost; | ||
$mail->SMTPAuth = empty($smtpAuth) ? false : $smtpAuth; | ||
$mail->Username = $smtpUser; | ||
$mail->Password = $smtpPass; | ||
$mail->SMTPSecure = $smtpSecure; | ||
$mail->Port = $smtpPort; | ||
$mail->setFrom($smtpUser, $smtpFromAlias); | ||
$mail->addAddress($toAddress); | ||
$mail->addReplyTo($smtpUser, $smtpFromAlias); | ||
$mail->isHTML(true); | ||
$mail->Subject = $subject; | ||
$mail->Body = $body; | ||
$mail->AltBody = '如果邮件客户端不支持HTML则显示此内容'; | ||
$result = $mail->send(); | ||
self::logger(__CLASS__, $toAddress, json_encode($mail), $result); | ||
} catch (\Exception $exception) { | ||
self::logger(__CLASS__, '', '', '', $exception->getMessage()); | ||
} | ||
} | ||
|
||
private function getSubjectAndBody($parentComment, $options, $comment, $active, $authorTemplate, $replyTemplate) | ||
{ | ||
|
||
if (!is_null($parentComment)) { | ||
if (is_null($replyTemplate) || empty($replyTemplate)) { | ||
$html = file_get_contents(dirname(__DIR__) . '/theme/reply.html'); | ||
} else { | ||
$html = $replyTemplate; | ||
} | ||
} else { | ||
if (is_null($authorTemplate) || empty($authorTemplate)) { | ||
$html = file_get_contents(dirname(__DIR__) . '/theme/author.html'); | ||
} else { | ||
$html = $authorTemplate; | ||
} | ||
} | ||
|
||
|
||
/*$html = !is_null($parentComment) ? | ||
file_get_contents(dirname(__DIR__) . '/theme/reply.html') : | ||
file_get_contents(dirname(__DIR__) . '/theme/author.html');*/ | ||
|
||
|
||
$subject = !is_null($parentComment) ? | ||
_t('您在 [' . trim($options->title) . '] 的评论有了新的回复!') : | ||
_t('您在 [' . trim($options->title) . '] 发表的文章有新评论!'); | ||
|
||
|
||
$body = !is_null($parentComment) ? str_replace( | ||
[ | ||
'{blogUrl}', | ||
'{blogName}', | ||
'{author}', | ||
'{permalink}', | ||
'{title}', | ||
'{text}', | ||
'{replyAuthor}', | ||
'{replyText}', | ||
'{commentUrl}' | ||
], | ||
[ | ||
trim($options->siteUrl), | ||
trim($options->title), | ||
trim($parentComment->author), | ||
trim($active->permalink . '#comment-' . $comment['coid']), | ||
trim($active->title), | ||
trim($parentComment->text), | ||
trim($comment['author']), | ||
trim($comment['text']), | ||
trim($active->permalink . '#comment-' . $comment['coid']) | ||
], $html) : str_replace( | ||
[ | ||
'{blogUrl}', | ||
'{blogName}', | ||
'{author}', | ||
'{permalink}', | ||
'{title}', | ||
'{text}', | ||
'{ip}' | ||
], | ||
[ | ||
trim($options->siteUrl), | ||
trim($options->title), | ||
trim($comment['author']), | ||
trim($active->permalink . '#comment-' . $comment['coid']), | ||
trim($active->title), | ||
trim($comment['text']), | ||
trim($comment['ip']) | ||
], $html | ||
); | ||
|
||
return [$subject, $body]; | ||
} | ||
|
||
private function getWidget($table, $key, $val) | ||
{ | ||
$className = 'Widget_Abstract_' . $table; | ||
$db = Typecho_Db::get(); | ||
$widget = new $className(Typecho_Request::getInstance(), Typecho_Widget_Helper_Empty::getInstance()); | ||
$db->fetchRow($widget->select()->where($key . ' = ?', $val)->limit(1), array($widget, 'push')); | ||
|
||
return $widget; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters