Преглед на файлове

#281 Groups: join confirmation

Alex Trofimov преди 10 години
родител
ревизия
6090c216d9

+ 24 - 0
modules/boonex/groups/classes/BxGroupsAlertsResponse.php

@@ -0,0 +1,24 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Groups Groups
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+/**
+ * alerts handler
+ */
+class BxGroupsAlertsResponse extends BxDolAlertsResponse
+{
+    public function response($oAlert)
+    {
+        if ('bx_groups_fans' == $oAlert->sUnit && 'connection_added' == $oAlert->sAction && !$oAlert->aExtras['mutual'])
+            BxDolService::call('bx_groups', 'add_mutual_connection', array($oAlert->aExtras['content'], $oAlert->aExtras['initiator']));
+    }
+}
+
+/** @} */

+ 10 - 0
modules/boonex/groups/classes/BxGroupsModule.php

@@ -33,6 +33,16 @@ class BxGroupsModule extends BxBaseModProfileModule
         return $aFieldsProfile;
     }
 
+    public function serviceAddMutualConnection ($iContentId, $iInitiatorId)
+    {
+        $aContentInfo = $this->_oDb->getContentInfoById((int)$iContentId);
+        if (!$aContentInfo || $aContentInfo['join_confirmation'])
+            return false;
+
+        $oConnection = BxDolConnection::getObjectInstance('bx_groups_fans');
+        return $oConnection->addConnection((int)$iContentId, (int)$iInitiatorId);
+    }
+
     public function serviceFansTable ()
     {
         $oGrid = BxDolGrid::getObjectInstance('bx_groups_fans');

+ 2 - 0
modules/boonex/groups/install/langs/en.xml

@@ -13,6 +13,8 @@
 	<string name="_bx_groups_form_profile_display_delete"><![CDATA[Delete Group]]></string>
 	<string name="_bx_groups_form_profile_display_view"><![CDATA[View Group]]></string>
 	<string name="_bx_groups_form_profile_input_sys_do_submit"><![CDATA[Submit]]></string>
+    <string name="_bx_groups_form_profile_input_sys_join_confirm"><![CDATA[Join confirmation]]></string>
+    <string name="_bx_groups_form_profile_input_join_confirm"><![CDATA[Join confirmation]]></string>
     <string name="_bx_groups_form_profile_input_sys_group_name"><![CDATA[Group Name]]></string>
     <string name="_bx_groups_form_profile_input_group_name"><![CDATA[Group Name]]></string>
     <string name="_bx_groups_form_profile_input_group_name_err"><![CDATA[This information is essential. Please, fill in this field.]]></string>

+ 2 - 0
modules/boonex/groups/install/langs/ru.xml

@@ -13,6 +13,8 @@
 	<string name="_bx_groups_form_profile_display_delete"><![CDATA[Удалить группу]]></string>
 	<string name="_bx_groups_form_profile_display_view"><![CDATA[Просмотреть группу]]></string>
 	<string name="_bx_groups_form_profile_input_sys_do_submit"><![CDATA[Выполнить]]></string>
+    <string name="_bx_groups_form_profile_input_sys_join_confirm"><![CDATA[Подтверждение регистрации]]></string>
+    <string name="_bx_groups_form_profile_input_join_confirm"><![CDATA[Подтверждение регистрации]]></string>
     <string name="_bx_groups_form_profile_input_sys_group_name"><![CDATA[Название группы]]></string>
     <string name="_bx_groups_form_profile_input_group_name"><![CDATA[Название группы]]></string>
     <string name="_bx_groups_form_profile_input_group_name_err"><![CDATA[Эта информация необходима. Пожалуйста, заполните это поле.]]></string>

+ 7 - 0
modules/boonex/groups/install/sql/disable.sql

@@ -41,3 +41,10 @@ DELETE FROM `sys_objects_connection` WHERE `object` = 'bx_groups_fans';
 DELETE FROM `sys_objects_grid` WHERE `object` IN ('bx_groups_administration', 'bx_groups_moderation', 'bx_groups_common', 'bx_groups_fans');
 DELETE FROM `sys_grid_fields` WHERE `object` IN ('bx_groups_administration', 'bx_groups_moderation', 'bx_groups_common', 'bx_groups_fans');
 DELETE FROM `sys_grid_actions` WHERE `object` IN ('bx_groups_administration', 'bx_groups_moderation', 'bx_groups_common', 'bx_groups_fans');
+
+-- ALERTS
+
+SET @iHandler := (SELECT `id` FROM `sys_alerts_handlers` WHERE `name` = 'bx_groups' LIMIT 1);
+DELETE FROM `sys_alerts` WHERE `handler_id` = @iHandler;
+DELETE FROM `sys_alerts_handlers` WHERE `id` = @iHandler;
+

+ 11 - 0
modules/boonex/groups/install/sql/enable.sql

@@ -334,3 +334,14 @@ INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon
 ('bx_groups_common', 'bulk', 'delete', '_bx_groups_grid_action_title_adm_delete', '', 0, 1, 1),
 ('bx_groups_common', 'bulk', 'delete_with_content', '_bx_groups_grid_action_title_adm_delete_with_content', '', 0, 1, 2),
 ('bx_groups_common', 'single', 'settings', '_bx_groups_grid_action_title_adm_more_actions', 'cog', 1, 0, 1);
+
+
+-- ALERTS
+
+INSERT INTO `sys_alerts_handlers` (`name`, `class`, `file`, `service_call`) VALUES 
+('bx_groups', 'BxGroupsAlertsResponse', 'modules/boonex/groups/classes/BxGroupsAlertsResponse.php', '');
+SET @iHandler := LAST_INSERT_ID();
+
+INSERT INTO `sys_alerts` (`unit`, `action`, `handler_id`) VALUES
+('bx_groups_fans', 'connection_added', @iHandler);
+

+ 9 - 3
modules/boonex/groups/install/sql/install.sql

@@ -11,6 +11,7 @@ CREATE TABLE IF NOT EXISTS `bx_groups_data` (
   `group_cat` int(11) NOT NULL,
   `group_desc` text NOT NULL,
   `views` int(11) NOT NULL default '0',
+  `join_confirmation` tinyint(4) NOT NULL DEFAULT '1',
   PRIMARY KEY (`id`),
   FULLTEXT KEY `group_name` (`group_name`)
 );
@@ -128,6 +129,7 @@ INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `ch
 ('bx_group', 'bx_groups', 'group_desc', '', '', 0, 'textarea', '_bx_groups_form_profile_input_sys_group_desc', '_bx_groups_form_profile_input_group_desc', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 1),
 ('bx_group', 'bx_groups', 'group_cat', '', '#!bx_groups_cats', 0, 'select', '_bx_groups_form_profile_input_sys_group_cat', '_bx_groups_form_profile_input_group_cat', '', 1, 0, 0, '', '', '', 'avail', '', '_bx_groups_form_profile_input_group_cat_err', 'Xss', '', 1, 1),
 ('bx_group', 'bx_groups', 'group_name', '', '', 0, 'text', '_bx_groups_form_profile_input_sys_group_name', '_bx_groups_form_profile_input_group_name', '', 1, 0, 0, '', '', '', 'avail', '', '_bx_groups_form_profile_input_group_name_err', 'Xss', '', 1, 0),
+('bx_group', 'bx_groups', 'join_confirmation', 1, '', 1, 'switcher', '_bx_groups_form_profile_input_sys_join_confirm', '_bx_groups_form_profile_input_join_confirm', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
 ('bx_group', 'bx_groups', 'picture', '', '', 0, 'file', '_bx_groups_form_profile_input_sys_picture', '_bx_groups_form_profile_input_picture', '', 1, 0, 0, '', '', '', 'avail', '', '_bx_groups_form_profile_input_picture_err', 'Int', '', 1, 0),
 ('bx_group', 'bx_groups', 'picture_preview', '', '', 0, 'custom', '_bx_groups_form_profile_input_sys_picture_preview', '_bx_groups_form_profile_input_picture_preview', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
 
@@ -140,12 +142,13 @@ INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for
 ('bx_group_add', 'group_name', 2147483647, 1, 6),
 ('bx_group_add', 'group_cat', 2147483647, 1, 7),
 ('bx_group_add', 'group_desc', 2147483647, 1, 8),
-('bx_group_add', 'do_submit', 2147483647, 1, 9),
+('bx_group_add', 'join_confirmation', 2147483647, 1, 9),
+('bx_group_add', 'do_submit', 2147483647, 1, 10),
+('bx_group_delete', 'cover', 2147483647, 0, 0),
 ('bx_group_delete', 'cover_preview', 2147483647, 0, 0),
 ('bx_group_delete', 'picture', 2147483647, 0, 0),
 ('bx_group_delete', 'delete_confirm', 2147483647, 1, 0),
 ('bx_group_delete', 'picture_preview', 2147483647, 0, 0),
-('bx_group_delete', 'cover', 2147483647, 0, 0),
 ('bx_group_delete', 'do_submit', 2147483647, 1, 1),
 ('bx_group_delete', 'group_name', 2147483647, 0, 2),
 ('bx_group_delete', 'group_cat', 2147483647, 0, 3),
@@ -157,7 +160,10 @@ INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for
 ('bx_group_edit', 'group_name', 2147483647, 1, 6),
 ('bx_group_edit', 'group_cat', 2147483647, 1, 7),
 ('bx_group_edit', 'group_desc', 2147483647, 1, 8),
-('bx_group_edit', 'do_submit', 2147483647, 1, 9),
+('bx_group_edit', 'join_confirmation', 2147483647, 1, 9),
+('bx_group_edit', 'do_submit', 2147483647, 1, 10),
+('bx_group_edit_cover', 'join_confirmation', 2147483647, 0, 0),
+('bx_group_edit_cover', 'group_desc', 2147483647, 0, 0),
 ('bx_group_edit_cover', 'delete_confirm', 2147483647, 0, 1),
 ('bx_group_edit_cover', 'group_name', 2147483647, 0, 2),
 ('bx_group_edit_cover', 'picture', 2147483647, 0, 3),