X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mailstream%2Fmailstream.php;h=6c057b21b9bfa15aa1d65605242c350854b1f923;hb=3ce1c8cf2e65581af5fe94c1273f9381987f9f89;hp=e450910d2a44ece3c95288d6206bdc8c2eef9396;hpb=3a976595d595b7b56ef3cf28e3520b27ae5da5f8;p=friendica-addons.git diff --git a/mailstream/mailstream.php b/mailstream/mailstream.php index e450910d..6c057b21 100644 --- a/mailstream/mailstream.php +++ b/mailstream/mailstream.php @@ -2,81 +2,89 @@ /** * Name: Mail Stream * Description: Mail all items coming into your network feed to an email address - * Version: 1.0 + * Version: 1.1 * Author: Matthew Exon */ +use Friendica\Content\Text\BBCode; +use Friendica\Core\Addon; +use Friendica\Core\Config; +use Friendica\Core\L10n; +use Friendica\Core\PConfig; +use Friendica\Database\DBM; +use Friendica\Util\Network; + function mailstream_install() { - register_hook('plugin_settings', 'addon/mailstream/mailstream.php', 'mailstream_plugin_settings'); - register_hook('plugin_settings_post', 'addon/mailstream/mailstream.php', 'mailstream_plugin_settings_post'); - register_hook('post_local_end', 'addon/mailstream/mailstream.php', 'mailstream_post_hook'); - register_hook('post_remote_end', 'addon/mailstream/mailstream.php', 'mailstream_post_hook'); - register_hook('cron', 'addon/mailstream/mailstream.php', 'mailstream_cron'); + Addon::registerHook('addon_settings', 'addon/mailstream/mailstream.php', 'mailstream_addon_settings'); + Addon::registerHook('addon_settings_post', 'addon/mailstream/mailstream.php', 'mailstream_addon_settings_post'); + Addon::registerHook('post_local_end', 'addon/mailstream/mailstream.php', 'mailstream_post_hook'); + Addon::registerHook('post_remote_end', 'addon/mailstream/mailstream.php', 'mailstream_post_hook'); + Addon::registerHook('cron', 'addon/mailstream/mailstream.php', 'mailstream_cron'); - if (get_config('mailstream', 'dbversion') == '0.1') { + if (Config::get('mailstream', 'dbversion') == '0.1') { q('ALTER TABLE `mailstream_item` DROP INDEX `uid`'); q('ALTER TABLE `mailstream_item` DROP INDEX `contact-id`'); q('ALTER TABLE `mailstream_item` DROP INDEX `plink`'); q('ALTER TABLE `mailstream_item` CHANGE `plink` `uri` char(255) NOT NULL'); - set_config('mailstream', 'dbversion', '0.2'); + Config::set('mailstream', 'dbversion', '0.2'); } - if (get_config('mailstream', 'dbversion') == '0.2') { + if (Config::get('mailstream', 'dbversion') == '0.2') { q('DELETE FROM `pconfig` WHERE `cat` = "mailstream" AND `k` = "delay"'); - set_config('mailstream', 'dbversion', '0.3'); + Config::set('mailstream', 'dbversion', '0.3'); } - if (get_config('mailstream', 'dbversion') == '0.3') { + if (Config::get('mailstream', 'dbversion') == '0.3') { q('ALTER TABLE `mailstream_item` CHANGE `created` `created` timestamp NOT NULL DEFAULT now()'); q('ALTER TABLE `mailstream_item` CHANGE `completed` `completed` timestamp NULL DEFAULT NULL'); - set_config('mailstream', 'dbversion', '0.4'); + Config::set('mailstream', 'dbversion', '0.4'); } - if (get_config('mailstream', 'dbversion') == '0.4') { + if (Config::get('mailstream', 'dbversion') == '0.4') { q('ALTER TABLE `mailstream_item` CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'); - set_config('mailstream', 'dbversion', '0.5'); + Config::set('mailstream', 'dbversion', '0.5'); } - if (get_config('mailstream', 'dbversion') == '0.5') { - set_config('mailstream', 'dbversion', '1.0'); + if (Config::get('mailstream', 'dbversion') == '0.5') { + Config::set('mailstream', 'dbversion', '1.0'); } - if (get_config('retriever', 'dbversion') != '1.0') { + if (Config::get('retriever', 'dbversion') != '1.0') { $schema = file_get_contents(dirname(__file__).'/database.sql'); $arr = explode(';', $schema); foreach ($arr as $a) { $r = q($a); } - set_config('mailstream', 'dbversion', '1.0'); + Config::set('mailstream', 'dbversion', '1.0'); } } function mailstream_uninstall() { - unregister_hook('plugin_settings', 'addon/mailstream/mailstream.php', 'mailstream_plugin_settings'); - unregister_hook('plugin_settings_post', 'addon/mailstream/mailstream.php', 'mailstream_plugin_settings_post'); - unregister_hook('post_local', 'addon/mailstream/mailstream.php', 'mailstream_post_local_hook'); - unregister_hook('post_remote', 'addon/mailstream/mailstream.php', 'mailstream_post_remote_hook'); - unregister_hook('post_local_end', 'addon/mailstream/mailstream.php', 'mailstream_post_local_hook'); - unregister_hook('post_remote_end', 'addon/mailstream/mailstream.php', 'mailstream_post_remote_hook'); - unregister_hook('post_local_end', 'addon/mailstream/mailstream.php', 'mailstream_post_hook'); - unregister_hook('post_remote_end', 'addon/mailstream/mailstream.php', 'mailstream_post_hook'); - unregister_hook('cron', 'addon/mailstream/mailstream.php', 'mailstream_cron'); - unregister_hook('incoming_mail', 'addon/mailstream/mailstream.php', 'mailstream_incoming_mail'); + Addon::unregisterHook('addon_settings', 'addon/mailstream/mailstream.php', 'mailstream_addon_settings'); + Addon::unregisterHook('addon_settings_post', 'addon/mailstream/mailstream.php', 'mailstream_addon_settings_post'); + Addon::unregisterHook('post_local', 'addon/mailstream/mailstream.php', 'mailstream_post_local_hook'); + Addon::unregisterHook('post_remote', 'addon/mailstream/mailstream.php', 'mailstream_post_remote_hook'); + Addon::unregisterHook('post_local_end', 'addon/mailstream/mailstream.php', 'mailstream_post_local_hook'); + Addon::unregisterHook('post_remote_end', 'addon/mailstream/mailstream.php', 'mailstream_post_remote_hook'); + Addon::unregisterHook('post_local_end', 'addon/mailstream/mailstream.php', 'mailstream_post_hook'); + Addon::unregisterHook('post_remote_end', 'addon/mailstream/mailstream.php', 'mailstream_post_hook'); + Addon::unregisterHook('cron', 'addon/mailstream/mailstream.php', 'mailstream_cron'); + Addon::unregisterHook('incoming_mail', 'addon/mailstream/mailstream.php', 'mailstream_incoming_mail'); } function mailstream_module() {} -function mailstream_plugin_admin(&$a,&$o) { - $frommail = get_config('mailstream', 'frommail'); +function mailstream_addon_admin(&$a,&$o) { + $frommail = Config::get('mailstream', 'frommail'); $template = get_markup_template('admin.tpl', 'addon/mailstream/'); - $config = array('frommail', - t('From Address'), + $config = ['frommail', + L10n::t('From Address'), $frommail, - t('Email address that stream items will appear to be from.')); - $o .= replace_macros($template, array( + L10n::t('Email address that stream items will appear to be from.')]; + $o .= replace_macros($template, [ '$frommail' => $config, - '$submit' => t('Save Settings'))); + '$submit' => L10n::t('Save Settings')]); } -function mailstream_plugin_admin_post ($a) { +function mailstream_addon_admin_post ($a) { if (x($_POST, 'frommail')) { - set_config('mailstream', 'frommail', $_POST['frommail']); + Config::set('mailstream', 'frommail', $_POST['frommail']); } } @@ -90,7 +98,7 @@ function mailstream_generate_id($a, $uri) { } function mailstream_post_hook(&$a, &$item) { - if (!get_pconfig($item['uid'], 'mailstream', 'enabled')) { + if (!PConfig::get($item['uid'], 'mailstream', 'enabled')) { return; } if (!$item['uid']) { @@ -102,7 +110,7 @@ function mailstream_post_hook(&$a, &$item) { if (!$item['uri']) { return; } - if (get_pconfig($item['uid'], 'mailstream', 'nolikes')) { + if (PConfig::get($item['uid'], 'mailstream', 'nolikes')) { if ($item['verb'] == ACTIVITY_LIKE) { return; } @@ -139,21 +147,21 @@ function mailstream_get_user($uid) { } function mailstream_do_images($a, &$item, &$attachments) { - if (!get_pconfig($item['uid'], 'mailstream', 'attachimg')) { + if (!PConfig::get($item['uid'], 'mailstream', 'attachimg')) { return; } - $attachments = array(); + $attachments = []; $baseurl = $a->get_baseurl(); preg_match_all("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", $item["body"], $matches1); preg_match_all("/\[img\](.*?)\[\/img\]/ism", $item["body"], $matches2); foreach (array_merge($matches1[3], $matches2[1]) as $url) { $redirects; $cookiejar = tempnam(get_temppath(), 'cookiejar-mailstream-'); - $attachments[$url] = array( - 'data' => fetch_url($url, true, $redirects, 0, Null, $cookiejar), + $attachments[$url] = [ + 'data' => Network::fetchUrl($url, true, $redirects, 0, null, $cookiejar), 'guid' => hash("crc32", $url), 'filename' => basename($url), - 'type' => $a->get_curl_content_type()); + 'type' => $a->get_curl_content_type()]; if (strlen($attachments[$url]['data'])) { $item['body'] = str_replace($url, 'cid:' . $attachments[$url]['guid'], $item['body']); continue; @@ -164,7 +172,7 @@ function mailstream_do_images($a, &$item, &$attachments) { function mailstream_sender($item) { $r = q('SELECT * FROM `contact` WHERE `id` = %d', $item['contact-id']); - if (dbm::is_result($r)) { + if (DBM::is_result($r)) { $contact = $r[0]; if ($contact['name'] != $item['author-name']) { return $contact['name'] . ' - ' . $item['author-name']; @@ -174,7 +182,7 @@ function mailstream_sender($item) { } function mailstream_decode_subject($subject) { - $html = bbcode($subject); + $html = BBCode::convert($subject); if (!$html) { return $subject; } @@ -205,14 +213,14 @@ function mailstream_subject($item) { // Don't look more than 100 levels deep for a subject, in case of loops for ($i = 0; ($i < 100) && $parent; $i++) { $r = q("SELECT `thr-parent`, `title` FROM `item` WHERE `uri` = '%s'", dbesc($parent)); - if (!dbm::is_result($r)) { + if (!DBM::is_result($r)) { break; } if ($r[0]['thr-parent'] === $parent) { break; } if ($r[0]['title']) { - return t('Re:') . ' ' . mailstream_decode_subject($r[0]['title']); + return L10n::t('Re:') . ' ' . mailstream_decode_subject($r[0]['title']); } $parent = $r[0]['thr-parent']; } @@ -220,10 +228,10 @@ function mailstream_subject($item) { intval($item['contact-id']), intval($item['uid'])); $contact = $r[0]; if ($contact['network'] === 'dfrn') { - return t("Friendica post"); + return L10n::t("Friendica post"); } if ($contact['network'] === 'dspr') { - return t("Diaspora post"); + return L10n::t("Diaspora post"); } if ($contact['network'] === 'face') { $text = mailstream_decode_subject($item['body']); @@ -233,12 +241,12 @@ function mailstream_subject($item) { return preg_replace('/\\s+/', ' ', $subject); } if ($contact['network'] === 'feed') { - return t("Feed item"); + return L10n::t("Feed item"); } if ($contact['network'] === 'mail') { - return t("Email"); + return L10n::t("Email"); } - return t("Friendica Item"); + return L10n::t("Friendica Item"); } function mailstream_send($a, $message_id, $item, $user) { @@ -249,20 +257,20 @@ function mailstream_send($a, $message_id, $item, $user) { return; } require_once(dirname(__file__).'/phpmailer/class.phpmailer.php'); - require_once('include/bbcode.php'); - $attachments = array(); + + $attachments = []; mailstream_do_images($a, $item, $attachments); - $frommail = get_config('mailstream', 'frommail'); + $frommail = Config::get('mailstream', 'frommail'); if ($frommail == "") { $frommail = 'friendica@localhost.local'; } - $address = get_pconfig($item['uid'], 'mailstream', 'address'); + $address = PConfig::get($item['uid'], 'mailstream', 'address'); if (!$address) { $address = $user['email']; } $mail = new PHPmailer; try { - $mail->XMailer = 'Friendica Mailstream Plugin'; + $mail->XMailer = 'Friendica Mailstream Addon'; $mail->SetFrom($frommail, mailstream_sender($item)); $mail->AddAddress($address, $user['username']); $mail->MessageID = $message_id; @@ -279,12 +287,12 @@ function mailstream_send($a, $message_id, $item, $user) { $mail->IsHTML(true); $mail->CharSet = 'utf-8'; $template = get_markup_template('mail.tpl', 'addon/mailstream/'); - $item['body'] = bbcode($item['body']); + $item['body'] = BBCode::convert($item['body']); $item['url'] = $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $item['id']; - $mail->Body = replace_macros($template, array( - '$upstream' => t('Upstream'), - '$local' => t('Local'), - '$item' => $item)); + $mail->Body = replace_macros($template, [ + '$upstream' => L10n::t('Upstream'), + '$local' => L10n::t('Local'), + '$item' => $item]); mailstream_html_wrap($mail->Body); if (!$mail->Send()) { throw new Exception($mail->ErrorInfo); @@ -342,60 +350,60 @@ function mailstream_cron($a, $b) { mailstream_tidy(); } -function mailstream_plugin_settings(&$a,&$s) { - $enabled = get_pconfig(local_user(), 'mailstream', 'enabled'); - $address = get_pconfig(local_user(), 'mailstream', 'address'); - $nolikes = get_pconfig(local_user(), 'mailstream', 'nolikes'); - $attachimg= get_pconfig(local_user(), 'mailstream', 'attachimg'); +function mailstream_addon_settings(&$a,&$s) { + $enabled = PConfig::get(local_user(), 'mailstream', 'enabled'); + $address = PConfig::get(local_user(), 'mailstream', 'address'); + $nolikes = PConfig::get(local_user(), 'mailstream', 'nolikes'); + $attachimg= PConfig::get(local_user(), 'mailstream', 'attachimg'); $template = get_markup_template('settings.tpl', 'addon/mailstream/'); - $s .= replace_macros($template, array( - '$enabled' => array( + $s .= replace_macros($template, [ + '$enabled' => [ 'mailstream_enabled', - t('Enabled'), - $enabled), - '$address' => array( + L10n::t('Enabled'), + $enabled], + '$address' => [ 'mailstream_address', - t('Email Address'), + L10n::t('Email Address'), $address, - t("Leave blank to use your account email address")), - '$nolikes' => array( + L10n::t("Leave blank to use your account email address")], + '$nolikes' => [ 'mailstream_nolikes', - t('Exclude Likes'), + L10n::t('Exclude Likes'), $nolikes, - t("Check this to omit mailing \"Like\" notifications")), - '$attachimg' => array( + L10n::t("Check this to omit mailing \"Like\" notifications")], + '$attachimg' => [ 'mailstream_attachimg', - t('Attach Images'), + L10n::t('Attach Images'), $attachimg, - t("Download images in posts and attach them to the email. Useful for reading email while offline.")), - '$title' => t('Mail Stream Settings'), - '$submit' => t('Save Settings'))); + L10n::t("Download images in posts and attach them to the email. Useful for reading email while offline.")], + '$title' => L10n::t('Mail Stream Settings'), + '$submit' => L10n::t('Save Settings')]); } -function mailstream_plugin_settings_post($a,$post) { +function mailstream_addon_settings_post($a,$post) { if ($_POST['mailstream_address'] != "") { - set_pconfig(local_user(), 'mailstream', 'address', $_POST['mailstream_address']); + PConfig::set(local_user(), 'mailstream', 'address', $_POST['mailstream_address']); } else { - del_pconfig(local_user(), 'mailstream', 'address'); + PConfig::delete(local_user(), 'mailstream', 'address'); } if ($_POST['mailstream_nolikes']) { - set_pconfig(local_user(), 'mailstream', 'nolikes', $_POST['mailstream_enabled']); + PConfig::set(local_user(), 'mailstream', 'nolikes', $_POST['mailstream_enabled']); } else { - del_pconfig(local_user(), 'mailstream', 'nolikes'); + PConfig::delete(local_user(), 'mailstream', 'nolikes'); } if ($_POST['mailstream_enabled']) { - set_pconfig(local_user(), 'mailstream', 'enabled', $_POST['mailstream_enabled']); + PConfig::set(local_user(), 'mailstream', 'enabled', $_POST['mailstream_enabled']); } else { - del_pconfig(local_user(), 'mailstream', 'enabled'); + PConfig::delete(local_user(), 'mailstream', 'enabled'); } if ($_POST['mailstream_attachimg']) { - set_pconfig(local_user(), 'mailstream', 'attachimg', $_POST['mailstream_attachimg']); + PConfig::set(local_user(), 'mailstream', 'attachimg', $_POST['mailstream_attachimg']); } else { - del_pconfig(local_user(), 'mailstream', 'attachimg'); + PConfig::delete(local_user(), 'mailstream', 'attachimg'); } }