AntonLV 7 yıl önce
ebeveyn
işleme
c2bd2a23bb

+ 23 - 2
inc/classes/BxDolPrivacy.php

@@ -134,7 +134,9 @@ class BxDolPrivacy extends BxDolFactory implements iBxDolFactoryObject
         $aValues = $oPrivacy->getGroups();
 
         $aValues = $oPrivacy->addDynamicGroups($aValues, $iOwnerId, $aParams);
-        
+
+        $aValues = $oPrivacy->addAclGroups($aValues, $iOwnerId, $aParams);
+
         $aValues = $oPrivacy->addSpaces($aValues, $iOwnerId, $aParams);
 
         $sName = $oPrivacy->convertActionToField($sAction);
@@ -169,6 +171,20 @@ class BxDolPrivacy extends BxDolFactory implements iBxDolFactoryObject
         return $aValues;
     }
 
+    public function addAclGroups($aValues, $iOwnerId, $aParams)
+    {
+        $aLevels = BxDolAcl::getInstance()->getMemberships(false, true, true, true);
+        if(empty($aLevels) || !is_array($aLevels))
+            return $aValues;
+
+        $aValues[] = array('type' => 'group_header', 'value' => mb_strtoupper(_t('_sys_privacy_groups_acl')));
+        foreach($aLevels as $iId => $sTitle)
+            $aValues[] = array('key' => 'ml' . $iId, 'value' => $sTitle);
+        $aValues[] = array('type' => 'group_end');
+
+        return $aValues;
+    }
+
     public function addSpaces($aValues, $iOwnerId, $aParams)
     {
         if (!$this->_aObject['spaces'])
@@ -323,7 +339,12 @@ class BxDolPrivacy extends BxDolFactory implements iBxDolFactoryObject
         if(isAdmin() || $iViewerId == $aObject['owner_id'])
             return true;
 
-        if ($aObject['group_id'] < 0)
+        if(strncmp($aObject['group_id'], 'ml', 2) === 0) {
+            $iLevel = (int)substr($aObject['group_id'], 2);
+            return (bool)BxDolAcl::getInstance()->isMemberLevelInSet(array($iLevel), $iViewerId);
+        }
+
+        if($aObject['group_id'] < 0)
             return $this->checkSpace($aObject, $iViewerId);
 
         $aGroup = $this->_oDb->getGroupsBy(array('type' => 'id', 'id' => $aObject['group_id']));

+ 7 - 0
install/sql/system.sql

@@ -696,6 +696,10 @@ INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`,
 ('system', 'set acl level', NULL, '_sys_acl_action_set_acl_level', '_sys_acl_action_set_acl_level_desc', 0, 3);
 SET @iIdActionSetAclLevel = LAST_INSERT_ID();
 
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('system', 'set acl as privacy', NULL, '_sys_acl_action_set_acl_as_privacy', '_sys_acl_action_set_acl_as_privacy_desc', 0, 3);
+SET @iIdActionSetAclAsPrivacy = LAST_INSERT_ID();
+
 INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
 ('system', 'chart view', NULL, '_sys_acl_action_chart_view', '_sys_acl_action_chart_view_desc', 0, 3);
 SET @iIdActionChartView = LAST_INSERT_ID();
@@ -834,6 +838,9 @@ INSERT INTO `sys_acl_matrix` (`IDLevel`, `IDAction`) VALUES
 -- set acl level
 (@iAdministrator, @iIdActionSetAclLevel),
 
+-- set acl as privacy
+(@iAdministrator, @iIdActionSetAclAsPrivacy),
+
 -- view charts
 (@iAdministrator, @iIdActionChartView),
 

+ 1 - 1
modules/boonex/albums/install/sql/install.sql

@@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS `bx_albums_albums` (
   `comments` int(11) NOT NULL default '0',
   `reports` int(11) NOT NULL default '0',
   `featured` int(11) NOT NULL default '0',
-  `allow_view_to` int(11) NOT NULL DEFAULT '3',
+  `allow_view_to` varchar(16) NOT NULL DEFAULT '3',
   `status` enum('active','hidden') NOT NULL DEFAULT 'active',
   `status_admin` enum('active','hidden') NOT NULL DEFAULT 'active',
   PRIMARY KEY (`id`),

+ 1 - 1
modules/boonex/directory/install/sql/install.sql

@@ -22,7 +22,7 @@ CREATE TABLE IF NOT EXISTS `bx_directory_entries` (
   `comments` int(11) NOT NULL default '0',
   `reports` int(11) NOT NULL default '0',
   `featured` int(11) NOT NULL default '0',
-  `allow_view_to` int(11) NOT NULL DEFAULT '3',
+  `allow_view_to` varchar(16) NOT NULL DEFAULT '3',
   `status` enum('active','awaiting','hidden') NOT NULL DEFAULT 'active',
   `status_admin` enum('active','hidden') NOT NULL DEFAULT 'active',
   PRIMARY KEY (`id`),

+ 3 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -1637,6 +1637,8 @@
 	<string name="_sys_acl_action_post_links_desc"><![CDATA[Post links in text and textarea form fields]]></string>    
 	<string name="_sys_acl_action_set_acl_level"><![CDATA[Set membership level]]></string>
 	<string name="_sys_acl_action_set_acl_level_desc"><![CDATA[Set membership level for profiles]]></string>
+        <string name="_sys_acl_action_set_acl_as_privacy"><![CDATA[Choose membership level as privacy]]></string>
+	<string name="_sys_acl_action_set_acl_as_privacy_desc"><![CDATA[Choose membership level as privacy in add content forms]]></string>
 	<string name="_sys_acl_action_suspended"><![CDATA[You can't '{1}' because your profile was suspended, if you don't know why - try to send message to <a href="mailto:{7}">administrator</a>.]]></string>
 	<string name="_sys_acl_action_unauthenticated"><![CDATA[Not logged in users can't '{1}'.]]></string>
 	<string name="_sys_acl_action_unconfirmed"><![CDATA[You didn't confirm your profile. Please check your email with profile activation link. Unconfirmed members can't <b>{1}</b>.]]></string>
@@ -2556,6 +2558,7 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_profile_status_pending"><![CDATA[Pending]]></string>
 	<string name="_sys_profile_status_suspended"><![CDATA[Suspended]]></string>
 	<string name="_sys_private"><![CDATA[Private]]></string>
+        <string name="_sys_privacy_groups_acl"><![CDATA[Membership Levels]]></string>
     <string name="_sys_pruning_db"><![CDATA[<h3>Database pruning:</h3>
         <ul>
             <li><b>{0}</b> deleted expired membership levels</li>

+ 1 - 1
modules/boonex/forum/install/sql/install.sql

@@ -27,7 +27,7 @@ CREATE TABLE IF NOT EXISTS `bx_forum_discussions` (
   `featured` int(11) NOT NULL default '0',
   `stick` tinyint(4) NOT NULL DEFAULT '0',
   `lock` tinyint(4) NOT NULL DEFAULT '0',
-  `allow_view_to` int(11) NOT NULL DEFAULT '3',
+  `allow_view_to` varchar(16) NOT NULL DEFAULT '3',
   `status` enum('active','draft','hidden') NOT NULL DEFAULT 'active',
   `status_admin` enum('active','hidden') NOT NULL DEFAULT 'active',
   PRIMARY KEY (`id`),

+ 1 - 1
modules/boonex/glossary/install/sql/install.sql

@@ -21,7 +21,7 @@ CREATE TABLE IF NOT EXISTS `bx_glossary_terms` (
   `comments` int(11) NOT NULL default '0',
   `reports` int(11) NOT NULL default '0',
   `featured` int(11) NOT NULL default '0',
-  `allow_view_to` int(11) NOT NULL DEFAULT '3',
+  `allow_view_to` varchar(16) NOT NULL DEFAULT '3',
   `status` enum('active','hidden') NOT NULL DEFAULT 'active',
   `status_admin` enum('active','hidden','pending') NOT NULL DEFAULT 'active',
   PRIMARY KEY (`id`),

+ 2 - 2
modules/boonex/persons/install/sql/install.sql

@@ -23,8 +23,8 @@ CREATE TABLE IF NOT EXISTS `bx_persons_data` (
   `comments` int(11) NOT NULL default '0',
   `reports` int(11) NOT NULL default '0',
   `featured` int(11) NOT NULL default '0',
-  `allow_view_to` int(11) NOT NULL DEFAULT '3',
-  `allow_post_to` int(11) NOT NULL DEFAULT '3',
+  `allow_view_to` varchar(16) NOT NULL DEFAULT '3',
+  `allow_post_to` varchar(16) NOT NULL DEFAULT '3',
   PRIMARY KEY (`id`),
   FULLTEXT KEY `search_fields` (`fullname`,`description`)
 );

+ 1 - 1
modules/boonex/photos/install/sql/install.sql

@@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS `bx_photos_entries` (
   `comments` int(11) NOT NULL default '0',
   `reports` int(11) NOT NULL default '0',
   `featured` int(11) NOT NULL default '0',
-  `allow_view_to` int(11) NOT NULL DEFAULT '3',
+  `allow_view_to` varchar(16) NOT NULL DEFAULT '3',
   `status` enum('active','hidden') NOT NULL DEFAULT 'active',
   `status_admin` enum('active','hidden') NOT NULL DEFAULT 'active',
   PRIMARY KEY (`id`),

+ 1 - 1
modules/boonex/polls/install/sql/install.sql

@@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS `bx_polls_entries` (
   `comments` int(11) NOT NULL default '0',
   `reports` int(11) NOT NULL default '0',
   `featured` int(11) NOT NULL default '0',
-  `allow_view_to` int(11) NOT NULL DEFAULT '3',
+  `allow_view_to` varchar(16) NOT NULL DEFAULT '3',
   `anonymous` tinyint(4) NOT NULL DEFAULT '0',
   `hidden_results` tinyint(4) NOT NULL DEFAULT '0',
   `status` enum('active','hidden') NOT NULL DEFAULT 'active',

+ 1 - 1
modules/boonex/posts/install/sql/install.sql

@@ -21,7 +21,7 @@ CREATE TABLE IF NOT EXISTS `bx_posts_posts` (
   `comments` int(11) NOT NULL default '0',
   `reports` int(11) NOT NULL default '0',
   `featured` int(11) NOT NULL default '0',
-  `allow_view_to` int(11) NOT NULL DEFAULT '3',
+  `allow_view_to` varchar(16) NOT NULL DEFAULT '3',
   `disable_comments` tinyint(4) NOT NULL DEFAULT '0',
   `status` enum('active','awaiting','hidden') NOT NULL DEFAULT 'active',
   `status_admin` enum('active','hidden') NOT NULL DEFAULT 'active',

+ 1 - 1
modules/boonex/russian/data/langs/bx_timeline/ru.xml

@@ -34,7 +34,7 @@
 	<string name="_bx_timeline_form_post_display_edit"><![CDATA[Изменить сообщение]]></string>
 	<string name="_bx_timeline_form_post_input_sys_owner_id"><![CDATA[ID владельца]]></string>
 	<string name="_bx_timeline_form_post_input_owner_id_own"><![CDATA[Собственный профиль]]></string>
-    <string name="_bx_timeline_form_post_input_owner_id_following_group"><![CDATA[Отслеживаемые {0}]]></string>
+    <string name="_bx_timeline_form_post_input_owner_id_following_group"><![CDATA[{0}]]></string>
 	<string name="_bx_timeline_form_post_input_sys_action"><![CDATA[Действие]]></string>
 	<string name="_bx_timeline_form_post_input_sys_type"><![CDATA[Тип]]></string>
 	<string name="_bx_timeline_form_post_input_sys_text"><![CDATA[Содержимое]]></string>

+ 3 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -1637,6 +1637,8 @@
     <string name="_sys_acl_action_post_links_desc"><![CDATA[Публикация ссылок в формах]]></string>
 	<string name="_sys_acl_action_set_acl_level"><![CDATA[Назначить членство]]></string>
 	<string name="_sys_acl_action_set_acl_level_desc"><![CDATA[Назначить членство для профилей]]></string>
+        <string name="_sys_acl_action_set_acl_as_privacy"><![CDATA[Использовать уровень членства в настройках приватности]]></string>
+	<string name="_sys_acl_action_set_acl_as_privacy_desc"><![CDATA[Использовать уровень членства в настройках приватности в формах добавления контента]]></string>
 	<string name="_sys_acl_action_suspended"><![CDATA[Вы не можете '{1}', потому что Ваш профайл заблокирован. Если Вы не знаете, почему, постарайтесь связаться с <a href="mailto:{7}">администратором</a>.]]></string>
 	<string name="_sys_acl_action_unauthenticated"><![CDATA[Не вошедшие пользователи не могут '{1}'.]]></string>
 	<string name="_sys_acl_action_unconfirmed"><![CDATA[Вы не подтвердили свой профиль. Пожалуйста, проверьте эл. сообщение со ссылкой на активацию профиля. Неподтверждённые пользователи не могут <b>{1}</b>.]]></string>
@@ -2555,6 +2557,7 @@
     <string name="_sys_profile_status_pending"><![CDATA[В ожидании]]></string>
     <string name="_sys_profile_status_suspended"><![CDATA[Заблокированный]]></string>
 	<string name="_sys_private"><![CDATA[Приватные]]></string>
+        <string name="_sys_privacy_groups_acl"><![CDATA[Членство]]></string>
     <string name="_sys_pruning_db"><![CDATA[<h3>Очистка базы данных:</h3>
         <ul>
             <li><b>{0}</b> удалено просроченных членств</li>

+ 1 - 1
modules/boonex/shopify/install/sql/install.sql

@@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS `bx_shopify_entries` (
   `comments` int(11) NOT NULL default '0',
   `reports` int(11) NOT NULL default '0',
   `featured` int(11) NOT NULL default '0',
-  `allow_view_to` int(11) NOT NULL DEFAULT '3',
+  `allow_view_to` varchar(16) NOT NULL DEFAULT '3',
   `status` enum('active','hidden') NOT NULL DEFAULT 'active',
   `status_admin` enum('active','hidden') NOT NULL DEFAULT 'active',
   PRIMARY KEY (`id`),

+ 1 - 1
modules/boonex/snipcart/install/sql/install.sql

@@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS `bx_snipcart_entries` (
   `comments` int(11) NOT NULL default '0',
   `reports` int(11) NOT NULL default '0',
   `featured` int(11) NOT NULL default '0',
-  `allow_view_to` int(11) NOT NULL DEFAULT '3',
+  `allow_view_to` varchar(16) NOT NULL DEFAULT '3',
   `status` enum('active','hidden') NOT NULL DEFAULT 'active',
   `status_admin` enum('active','hidden') NOT NULL DEFAULT 'active',
   PRIMARY KEY (`id`),

+ 1 - 1
modules/boonex/timeline/classes/BxTimelinePrivacy.php

@@ -47,7 +47,7 @@ class BxTimelinePrivacy extends BxBaseModNotificationsPrivacy
 
         $oProfile = BxDolProfile::getInstance();
         foreach($aCnnGroups as $sCnnGroup => $aCnnGroup) {
-            $aValues[] = array('type' => 'group_header', 'value' => _t('_bx_timeline_form_post_input_owner_id_following_group', _t('_' . $sCnnGroup)));
+            $aValues[] = array('type' => 'group_header', 'value' => mb_strtoupper(_t('_bx_timeline_form_post_input_owner_id_following_group', _t('_' . $sCnnGroup))));
             foreach($aCnnGroup as $iId)
                 $aValues[] = array('key' => -$iId, 'value' => $oProfile->getDisplayName($iId));
             $aValues[] = array('type' => 'group_end');

+ 1 - 1
modules/boonex/timeline/install/langs/en.xml

@@ -34,7 +34,7 @@
 	<string name="_bx_timeline_form_post_display_edit"><![CDATA[Edit Post]]></string>
 	<string name="_bx_timeline_form_post_input_sys_owner_id"><![CDATA[Owner ID]]></string>
 	<string name="_bx_timeline_form_post_input_owner_id_own"><![CDATA[Your profile]]></string>
-	<string name="_bx_timeline_form_post_input_owner_id_following_group"><![CDATA[Following {0}]]></string>
+	<string name="_bx_timeline_form_post_input_owner_id_following_group"><![CDATA[{0}]]></string>
 	<string name="_bx_timeline_form_post_input_sys_action"><![CDATA[Action]]></string>
 	<string name="_bx_timeline_form_post_input_sys_type"><![CDATA[Type]]></string>
 	<string name="_bx_timeline_form_post_input_sys_text"><![CDATA[Content]]></string>

+ 1 - 1
modules/boonex/timeline/install/sql/install.sql

@@ -7,7 +7,7 @@ CREATE TABLE IF NOT EXISTS `bx_timeline_events` (
   `type` varchar(255) NOT NULL,
   `action` varchar(255) NOT NULL,
   `object_id` text NOT NULL,
-  `object_privacy_view` int(11) NOT NULL default '3',
+  `object_privacy_view` varchar(16) NOT NULL default '3',
   `content` text NOT NULL,
   `title` varchar(255) NOT NULL,
   `description` text NOT NULL,

+ 1 - 1
modules/boonex/videos/install/sql/install.sql

@@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS `bx_videos_entries` (
   `comments` int(11) NOT NULL default '0',
   `reports` int(11) NOT NULL default '0',
   `featured` int(11) NOT NULL default '0',
-  `allow_view_to` int(11) NOT NULL DEFAULT '3',
+  `allow_view_to` varchar(16) NOT NULL DEFAULT '3',
   `status` enum('active','hidden') NOT NULL DEFAULT 'active',
   `status_admin` enum('active','hidden') NOT NULL DEFAULT 'active',
   PRIMARY KEY (`id`),