فهرست منبع

Merge branch 'master' of github.com:unaio/una

Alex Trofimov 9 سال پیش
والد
کامیت
0bc2b219bb
43فایلهای تغییر یافته به همراه403 افزوده شده و 39 حذف شده
  1. 0 1
      README.md
  2. 1 1
      modules/boonex/accounts/install/config.php
  3. 1 1
      modules/boonex/acl/install/config.php
  4. 1 1
      modules/boonex/albums/install/config.php
  5. 1 1
      modules/boonex/antispam/install/config.php
  6. 1 1
      modules/boonex/contact/install/config.php
  7. 1 1
      modules/boonex/convos/install/config.php
  8. 1 1
      modules/boonex/decorous/install/config.php
  9. 1 1
      modules/boonex/developer/install/config.php
  10. 1 1
      modules/boonex/dolphin_connect/install/config.php
  11. 1 1
      modules/boonex/elasticsearch/install/config.php
  12. 1 1
      modules/boonex/english/install/config.php
  13. 1 1
      modules/boonex/events/install/config.php
  14. 1 1
      modules/boonex/facebook_connect/install/config.php
  15. 1 1
      modules/boonex/files/install/config.php
  16. 1 1
      modules/boonex/forum/install/config.php
  17. 1 1
      modules/boonex/google_connect/install/config.php
  18. 1 1
      modules/boonex/groups/install/config.php
  19. 1 1
      modules/boonex/invites/install/config.php
  20. 1 1
      modules/boonex/linkedin_connect/install/config.php
  21. 1 1
      modules/boonex/market/install/config.php
  22. 1 1
      modules/boonex/notifications/install/config.php
  23. 1 1
      modules/boonex/ocean/install/config.php
  24. 1 1
      modules/boonex/organizations/install/config.php
  25. 1 1
      modules/boonex/payment/install/config.php
  26. 1 1
      modules/boonex/persons/install/config.php
  27. 1 1
      modules/boonex/polls/install/config.php
  28. 1 1
      modules/boonex/posts/install/config.php
  29. 1 1
      modules/boonex/profiler/install/config.php
  30. 1 1
      modules/boonex/protean/install/config.php
  31. 1 1
      modules/boonex/russian/install/config.php
  32. 1 1
      modules/boonex/shopify/install/config.php
  33. 1 1
      modules/boonex/smtpmailer/install/config.php
  34. 51 0
      modules/boonex/smtpmailer/updates/9.0.1_9.0.2/install/config.php
  35. 13 0
      modules/boonex/smtpmailer/updates/9.0.1_9.0.2/install/installer.php
  36. 27 0
      modules/boonex/smtpmailer/updates/9.0.1_9.0.2/source/classes/BxSMTPAlertsResponse.php
  37. 203 0
      modules/boonex/smtpmailer/updates/9.0.1_9.0.2/source/classes/BxSMTPModule.php
  38. 68 0
      modules/boonex/smtpmailer/updates/9.0.1_9.0.2/source/install/config.php
  39. 1 1
      modules/boonex/snipcart/install/config.php
  40. 1 1
      modules/boonex/timeline/install/config.php
  41. 2 2
      modules/boonex/timeline/updates/9.0.3_9.0.4/install/sql/enable.sql
  42. 1 1
      modules/boonex/twitter_connect/install/config.php
  43. 4 1
      template/scripts/BxBaseMenuFooter.php

+ 0 - 1
README.md

@@ -2,7 +2,6 @@
 [![UNA Official Website](https://img.shields.io/badge/website-una.io-blue.svg)](https://una.io)
 [![license](https://img.shields.io/github/license/unaio/una.svg)](https://github.com/unaio/una/blob/master/license.txt)
 [![UNA All Releases](https://img.shields.io/github/downloads/unaio/una/total.svg)](https://github.com/unaio/una)
-[![UNA Build Status](http://ci.boonex.com:8080/buildStatus/icon?job=Trident)](http://ci.boonex.com:8080/job/Trident/)
 [![Follow UNA Team](https://img.shields.io/twitter/follow/unateam.svg?style=social&label=Follow)](https://twitter.com/unateam)
 
 

+ 1 - 1
modules/boonex/accounts/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_accounts',
     'title' => 'Accounts Manager',
     'note' => 'Accounts Manager module.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
     

+ 1 - 1
modules/boonex/acl/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_acl',
     'title' => 'Paid Levels',
     'note' => 'Paid Levels module.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/albums/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_albums',
     'title' => 'Albums',
     'note' => 'Photos & videos',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/antispam/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_antispam',
     'title' => 'Antispam',
     'note' => 'Antispam tools',
-    'version' => '9.0.2.DEV',
+    'version' => '9.0.3.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/contact/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_contact',
     'title' => 'Contact',
     'note' => 'Contact module.',
-    'version' => '9.0.3.DEV',
+    'version' => '9.0.4.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
     

+ 1 - 1
modules/boonex/convos/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_convos',
     'title' => 'Conversations',
     'note' => 'Conversations module.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/decorous/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_decorous',
     'title' => 'Decorous',
     'note' => 'Design template',
-    'version' => '9.0.0.DEV',
+    'version' => '9.0.1.DEV',
     'vendor' => 'Boonex',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/developer/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_developer',
     'title' => 'Developer',
     'note' => 'Developer tools...',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/dolphin_connect/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_dolcon',
     'title' => 'Dolphin connect',
     'note' => 'Join the site using Dolphin site account credentials.',
-    'version' => '9.0.0.DEV',
+    'version' => '9.0.1.DEV',
     'vendor' => 'Boonex',
     'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/elasticsearch/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_elasticsearch',
     'title' => 'ElasticSearch',
     'note' => 'Allows to translate content of the site on different languages',
-    'version' => '9.0.0',
+    'version' => '9.0.1.DEV',
     'vendor' => 'BoonEx',
     'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/english/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_en',
     'title' => 'English',
     'note' => 'Language file',
-    'version' => '9.0.5.DEV',
+    'version' => '9.0.6.DEV',
     'vendor' => 'Boonex',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/events/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_events',
     'title' => 'Events',
     'note' => 'Events functionality.',
-    'version' => '9.0.3.DEV',
+    'version' => '9.0.4.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/facebook_connect/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_facebook',
     'title' => 'Facebook connect',
     'note' => 'Join the site using Facebook account.',
-    'version' => '9.0.3.DEV',
+    'version' => '9.0.4.DEV',
     'vendor' => 'BoonEx',
     'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/files/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_files',
     'title' => 'Files',
     'note' => 'Basic blogging module.',
-    'version' => '9.0.1.DEV',
+    'version' => '9.0.2.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/forum/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_forum',
     'title' => 'Discussions',
     'note' => 'Discussions module.',
-    'version' => '9.0.3.DEV',
+    'version' => '9.0.4.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/google_connect/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_googlecon',
     'title' => 'Google connect',
     'note' => 'Join the site using LinkedIn account.',
-    'version' => '9.0.2.DEV',
+    'version' => '9.0.3.DEV',
     'vendor' => 'Boonex',
     'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/groups/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_groups',
     'title' => 'Groups',
     'note' => 'Basic group profiles functionality.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/invites/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_invites',
     'title' => 'Invitations',
     'note' => 'Invitations module.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/linkedin_connect/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_linkedin',
     'title' => 'LinkedIn connect',
     'note' => 'Join the site using LinkedIn account.',
-    'version' => '9.0.2.DEV',
+    'version' => '9.0.3.DEV',
     'vendor' => 'Boonex',
     'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/market/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_market',
     'title' => 'Market',
     'note' => 'Market module.',
-    'version' => '9.0.5.DEV',
+    'version' => '9.0.6.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/notifications/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_notifications',
     'title' => 'Notifications',
     'note' => 'Notifications module.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/ocean/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_ocean',
     'title' => 'Ocean',
     'note' => 'Design template',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/organizations/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_organizations',
     'title' => 'Organizations',
     'note' => 'Basic organization profiles functionality.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/payment/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_payment',
     'title' => 'Payment',
     'note' => 'Payment module.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'Boonex',
     'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/persons/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_persons',
     'title' => 'Persons',
     'note' => 'Basic person profiles functionality.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/polls/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_polls',
     'title' => 'Polls',
     'note' => 'Basic poll module.',
-    'version' => '9.0.1.DEV',
+    'version' => '9.0.2.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/posts/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_posts',
     'title' => 'Posts',
     'note' => 'Basic blogging module.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/profiler/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_profiler',
     'title' => 'Profiler',
     'note' => 'Measure different site timings.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'Boonex',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/protean/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_protean',
     'title' => 'Protean',
     'note' => 'Design template',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'Boonex',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/russian/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_ru',
     'title' => 'Russian',
     'note' => 'Language file',
-    'version' => '9.0.6.DEV',
+    'version' => '9.0.7.DEV',
     'vendor' => 'Boonex',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/shopify/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_shopify',
     'title' => 'Shopify',
     'note' => 'Shopify shopping module.',
-    'version' => '9.0.0.DEV',
+    'version' => '9.0.1.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/smtpmailer/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_smtp',
     'title' => 'SMTP Mailer',
     'note' => 'Use remote SMTP server for sending mails.',
-    'version' => '9.0.2.DEV',
+    'version' => '9.0.3.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 51 - 0
modules/boonex/smtpmailer/updates/9.0.1_9.0.2/install/config.php

@@ -0,0 +1,51 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'title' => 'SMTP Mailer',
+    'version_from' => '9.0.1',
+	'version_to' => '9.0.2',
+    'vendor' => 'BoonEx',
+
+	'compatible_with' => array(
+        '9.0.0-RC1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/smtpmailer/updates/update_9.0.1_9.0.2/',
+	'home_uri' => 'smtpmailer_update_901_902',
+
+	'module_dir' => 'boonex/smtpmailer/',
+	'module_uri' => 'smtpmailer',
+
+    'db_prefix' => 'bx_smtp_',
+    'class_prefix' => 'BxSMTP',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+		'execute_sql' => 0,
+        'update_files' => 1,
+        'update_languages' => 0,
+		'clear_db_cache' => 0,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'SMTP Mailer',
+
+	/**
+     * Files Section
+     */
+    'delete_files' => array(),
+);

+ 13 - 0
modules/boonex/smtpmailer/updates/9.0.1_9.0.2/install/installer.php

@@ -0,0 +1,13 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ */
+
+class BxSMTPUpdater extends BxDolStudioUpdater
+{
+    function __construct($aConfig)
+	{
+        parent::__construct($aConfig);
+    }
+}

+ 27 - 0
modules/boonex/smtpmailer/updates/9.0.1_9.0.2/source/classes/BxSMTPAlertsResponse.php

@@ -0,0 +1,27 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    SMTPMailer SMTP Mailer
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * alerts handler
+ */
+class BxSMTPAlertsResponse extends BxDolAlertsResponse
+{
+    public function response($oAlert)
+    {
+        if ('system' != $oAlert->sUnit || 'before_send_mail' != $oAlert->sAction || 'on' != getParam('bx_smtp_on'))
+            return;
+
+        $a = $oAlert->aExtras;
+        $a['override_result'] = BxDolService::call('bx_smtp', 'send', array($a['email'], $a['subject'], $a['body'], $a['header'], $a['params'], $a['html'], $a['recipient'], $a['custom_headers'] ));
+    }
+}
+
+/** @} */

+ 203 - 0
modules/boonex/smtpmailer/updates/9.0.1_9.0.2/source/classes/BxSMTPModule.php

@@ -0,0 +1,203 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    SMTPMailer SMTP Mailer
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+require_once (BX_DIRECTORY_PATH_PLUGINS . "phpmailer/class.phpmailer.php");
+require_once (BX_DIRECTORY_PATH_PLUGINS . "phpmailer/class.smtp.php");
+
+class BxSMTPModule extends BxDolModule
+{
+    function __construct(&$aModule)
+    {
+        parent::__construct($aModule);
+    }
+
+    function serviceSend ($sRecipientEmail, $sMailSubject, $sMailBody, $sMailHeader, $sMailParameters, $isHtml, $aRecipientInfo = array(), $aCustomHeaders = array())
+    {
+        $iRet = true;
+
+        if ($sRecipientEmail) {
+
+            $mail = new PHPMailer(true);
+
+            if ('on' == getParam('bx_smtp_on'))
+                $mail->IsSMTP();
+            // $mail->SMTPDebug = 2;
+
+            $mail->CharSet = 'utf8';
+
+            // smtp server auth or not
+            $mail->SMTPAuth = 'on' == getParam('bx_smtp_auth') ? true : false;
+
+            // from settings, smtp server secure ssl/tls
+            $sParamSecure = getParam('bx_smtp_secure');
+            if ('SSL' == $sParamSecure || 'TLS' == $sParamSecure) {
+
+                $mail->SMTPSecure = strtolower($sParamSecure);
+
+                if ('on' == getParam('bx_smtp_allow_selfsigned')) {
+                    $mail->SMTPOptions = array(
+                        'ssl' => array(
+                            'verify_peer' => false,
+                            'verify_peer_name' => false,
+                            'allow_self_signed' => true
+                        )
+                    );
+                }
+            }
+
+            // from settings, smtp server
+            $sParamHost = getParam('bx_smtp_host');
+            if ($sParamHost)
+                $mail->Host = $sParamHost;
+
+            // smtp port 25, 465
+            $sParamPort = getParam('bx_smtp_port');
+            if ((int)$sParamPort > 0)
+                $mail->Port = $sParamPort;
+
+            // from settings, username and passord of smtp server
+            $mail->Username = getParam ('bx_smtp_username');
+            $mail->Password = getParam ('bx_smtp_password');
+
+            if (!isset($aCustomHeaders['From'])) {
+                $sParamSender = trim(getParam('bx_smtp_from_email'));
+                if ($sParamSender)
+                    $mail->From = $sParamSender;
+                else
+                    $mail->From = getParam('site_email_notify');
+
+                // get site name or some other name as sender's name
+                $mail->FromName = getParam ('bx_smtp_from_name');
+            } 
+
+            if (!isset($aCustomHeaders['Subject']))
+                $mail->Subject = $sMailSubject;
+
+            if ($isHtml) {
+                $mail->Body = $sMailBody;
+                $mail->AltBody = $isHtml ? strip_tags($sMailBody) : $sMailBody;
+            } else {
+                $mail->Body = $sMailBody;
+            }
+
+            $mail->WordWrap = 50; // set word wrap
+
+            $mail->AddAddress($sRecipientEmail);
+
+            $mail->IsHTML($isHtml ? true : false);
+
+            foreach ($aCustomHeaders as $sHeaderName => $sHeaderValue) {
+                if ('From' == $sHeaderName) {
+                    if (preg_match('/(.+)<(.+)>/', $sHeaderValue, $m)) {
+                        $mail->setFrom($m[2], trim($m[1]), false);
+                    }
+                    else {
+                        $mail->setFrom($sHeaderValue, '', false);
+                    }
+                } 
+                else {
+                    $mail->addCustomHeader($sHeaderName, $sHeaderValue);
+                }
+            }
+
+            try {
+                $mail->Send();
+            } catch (phpmailerException $e) {
+                $iRet = false;
+                $this->log("Mailer Error ($sRecipientEmail): " . $e->getMessage());
+            }
+        }
+
+        //--- create system event [begin]
+        $aAlertData = array(
+            'email'     => $sRecipientEmail,
+            'subject'   => $sMailSubject,
+            'body'      => $sMailBody,
+            'header'    => $sMailHeader,
+            'params'    => $sMailParameters,
+            'recipient' => $aRecipientInfo,
+            'html'      => $isHtml,
+        );
+        bx_alert('profile', 'send_mail', $aRecipientInfo && isset($aRecipientInfo['ID']) ? $aRecipientInfo['ID'] : 0, '', $aAlertData);
+        //--- create system event [ end ]
+
+        return $iRet;
+    }
+
+    function formTester()
+    {
+        $sMsg  = '';
+        if (isset($_POST['tester_submit']) && $_POST['tester_submit']) {
+
+            $isHTML = bx_get('html') == 'on' ? true : false;
+            $sRecipient = bx_process_pass(bx_get('recipient'));
+            $sSubj = bx_process_pass(bx_get('subject'));
+            $sBody = bx_process_pass(bx_get('body'), $isHTML ? BX_DATA_HTML : BX_DATA_TEXT);
+
+            if (sendMail($sRecipient, $sSubj, $sBody, 0, array(), BX_EMAIL_SYSTEM, $isHTML ? 'html' : ''))
+                $sMsg = MsgBox(_t('_bx_smtp_send_ok'));
+            else
+                $sMsg = MsgBox(_t('_bx_smtp_send_fail'));
+        }
+
+        $aForm = array(
+            'form_attrs' => array(
+                'method'   => 'post',
+            ),
+            'inputs' => array (
+                'recipient' => array(
+                    'type' => 'text',
+                    'name' => 'recipient',
+                    'caption' => _t('_bx_smtp_recipient'),
+                    'value' => '',
+                ),
+                'subject' => array(
+                    'type' => 'text',
+                    'name' => 'subject',
+                    'caption' => _t('_bx_smtp_subject'),
+                    'value' => '',
+                ),
+                'body' => array(
+                    'type' => 'textarea',
+                    'name' => 'body',
+                    'caption' => _t('_bx_smtp_body'),
+                    'value' => '',
+                ),
+                'html' => array(
+                    'type' => 'checkbox',
+                    'name' => 'html',
+                    'caption' => _t('_bx_smtp_is_html'),
+                    'checked' => false,
+                ),
+                'Submit' => array(
+                    'type' => 'submit',
+                    'name' => 'tester_submit',
+                    'value' => _t("_Submit"),
+                ),
+            )
+        );
+
+        $oForm = new BxTemplFormView($aForm);
+        return $sMsg . $oForm->getCode();
+    }
+
+    function log ($s)
+    {
+        $fn = BX_DIRECTORY_PATH_ROOT . "logs/smtp_mailer.log";
+        $f = @fopen ($fn, 'a');
+        if (!$f)
+            return;
+        fwrite ($f, date(DATE_RFC822) . "\t" . $s . "\n");
+        fclose ($f);
+    }
+}
+
+/** @} */

+ 68 - 0
modules/boonex/smtpmailer/updates/9.0.1_9.0.2/source/install/config.php

@@ -0,0 +1,68 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    SMTPMailer SMTP Mailer
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_smtp',
+    'title' => 'SMTP Mailer',
+    'note' => 'Use remote SMTP server for sending mails.',
+    'version' => '9.0.2',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '9.0.0-RC1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/smtpmailer/',
+    'home_uri' => 'smtpmailer',
+
+    'db_prefix' => 'bx_smtp_',
+    'class_prefix' => 'BxSMTP',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'SMTP Mailer',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+    ),
+    'uninstall' => array (
+        'execute_sql' => 1,
+        'update_languages' => 1,
+    ),
+    'enable' => array(
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array(
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+);
+
+/** @} */

+ 1 - 1
modules/boonex/snipcart/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_snipcart',
     'title' => 'Snipcart',
     'note' => 'Snipcart shopping module.',
-    'version' => '9.0.0.DEV',
+    'version' => '9.0.1.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 1 - 1
modules/boonex/timeline/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_timeline',
     'title' => 'Timeline',
     'note' => 'Timeline module.',
-    'version' => '9.0.4.DEV',
+    'version' => '9.0.5.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 2 - 2
modules/boonex/timeline/updates/9.0.3_9.0.4/install/sql/enable.sql

@@ -16,8 +16,8 @@ DELETE FROM `sys_pages_blocks` WHERE `object`='sys_dashboard' AND `title`='_bx_t
 INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
 ('sys_dashboard', @iPBCellDashboard, @sName, '_bx_timeline_page_block_title_system_post_account', '_bx_timeline_page_block_title_post_account', 11, 2147483646, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_post_account";}', 0, 1, 1, @iPBOrderDashboard);
 
-UPDATE `sys_pages_blocks` SET `title_system`='_bx_timeline_page_block_title_system_view_account', `title`='_bx_timeline_page_block_title_view_account', `visible_for_levels`='2147483646', `active`='1', `order`=@iPBOrderDashboard + 1 WHERE `object`='bx_timeline_view_home' AND `title`='_bx_timeline_page_block_title_view';
-UPDATE `sys_pages_blocks` SET `title_system`='_bx_timeline_page_block_title_system_view_account_outline', `title`='_bx_timeline_page_block_title_view_account_outline', `visible_for_levels`='2147483646', `active`='0', `order`=@iPBOrderDashboard + 1 WHERE `object`='bx_timeline_view_home' AND `title`='_bx_timeline_page_block_title_view_outline';
+UPDATE `sys_pages_blocks` SET `cell_id`=@iPBCellDashboard, `title_system`='_bx_timeline_page_block_title_system_view_account', `title`='_bx_timeline_page_block_title_view_account', `visible_for_levels`='2147483646', `active`='1', `order`=@iPBOrderDashboard + 1 WHERE `object`='sys_dashboard' AND `title`='_bx_timeline_page_block_title_view_account';
+UPDATE `sys_pages_blocks` SET `cell_id`=@iPBCellDashboard, `title_system`='_bx_timeline_page_block_title_system_view_account_outline', `title`='_bx_timeline_page_block_title_view_account_outline', `visible_for_levels`='2147483646', `active`='0', `order`=@iPBOrderDashboard + 1 WHERE `object`='sys_dashboard' AND `title`='_bx_timeline_page_block_title_view_account_outline';
 
 UPDATE `sys_pages_blocks` SET `title_system`='_bx_timeline_page_block_title_system_post_home', `title`='_bx_timeline_page_block_title_post_home' WHERE `object`='sys_home' AND `title`='_bx_timeline_page_block_title_post_home';
 UPDATE `sys_pages_blocks` SET `title_system`='_bx_timeline_page_block_title_system_view_home', `title`='_bx_timeline_page_block_title_view_home' WHERE `object`='sys_home' AND `title`='_bx_timeline_page_block_title_view_home';

+ 1 - 1
modules/boonex/twitter_connect/install/config.php

@@ -17,7 +17,7 @@ $aConfig = array(
     'name' => 'bx_twitter',
     'title' => 'Twitter connect',
     'note' => 'Join the site using Twitter account.',
-    'version' => '9.0.2.DEV',
+    'version' => '9.0.3.DEV',
     'vendor' => 'Boonex',
     'help_url' => 'http://feed.boonex.com/?section={module_name}',
 

+ 4 - 1
template/scripts/BxBaseMenuFooter.php

@@ -36,10 +36,13 @@ class BxBaseMenuFooter extends BxTemplMenu
                     break;
                 case 'powered_by':
                     $aItems[$iKey]['alt'] = _t('_sys_txt_powered_by');
+                    $aItems[$iKey]['bx_if:image']['content']['alt'] = _t('_sys_txt_powered_by');
                     break;
             }
-            if (!isset($aItems[$iKey]['alt']))
+            if (!isset($aItems[$iKey]['alt'])) {
                 $aItems[$iKey]['alt'] = $aItems[$iKey]['title'];
+                $aItems[$iKey]['bx_if:image']['content']['alt'] = $aItems[$iKey]['title'];
+            }
         }
 
         return $aItems;