Attached Files |
category_view_permission_moved_core.patch [^] (7,215 bytes) 2010-03-30 12:21
[Show Content]
Index: install/install_data.sql
===================================================================
--- install/install_data.sql (revision 13311)
+++ install/install_data.sql (working copy)
@@ -641,10 +641,11 @@
INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configemail.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configemail.edit', 11, 1, 1, 0);
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 11, 1, 0, 0);
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.ADD', 11, 1, 0, 0);
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.DELETE', 11, 1, 0, 0);
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.MODIFY', 11, 1, 0, 0);
+INSERT INTO Permissions VALUES(DEFAULT, 'CATEGORY.VIEW', 15, 1, 0, 1);
+INSERT INTO Permissions VALUES(DEFAULT, 'CATEGORY.ADD', 11, 1, 0, 1);
+INSERT INTO Permissions VALUES(DEFAULT, 'CATEGORY.ADD.PENDING', 13, 1, 0, 1);
+INSERT INTO Permissions VALUES(DEFAULT, 'CATEGORY.DELETE', 11, 1, 0, 1);
+INSERT INTO Permissions VALUES(DEFAULT, 'CATEGORY.MODIFY', 11, 1, 0, 1);
INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:service.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:service.edit', 11, 1, 1, 0);
Index: install/upgrades.php
===================================================================
--- install/upgrades.php (revision 13311)
+++ install/upgrades.php (working copy)
@@ -1318,4 +1318,91 @@
}
}
}
+
+ /**
+ * Update to 5.0.3-B2; Moves CATEGORY.* permission from module root categories to Content category
+ *
+ * @param string $mode when called mode {before, after)
+ */
+ function Upgrade_5_0_3_B2($mode)
+ {
+ if ($mode == 'before') {
+ // get permissions
+ $sql = 'SELECT PermissionName
+ FROM ' . TABLE_PREFIX . 'PermissionConfig
+ WHERE PermissionName LIKE "CATEGORY.%"';
+ $permission_names = $this->Conn->GetCol($sql);
+
+ // get groups
+ $sql = 'SELECT GroupId
+ FROM ' . TABLE_PREFIX . 'PortalGroup';
+ $user_groups = $this->Conn->GetCol($sql);
+ $user_group_count = count($user_groups);
+
+ // get module root categories
+ $sql = 'SELECT RootCat
+ FROM ' . TABLE_PREFIX . 'Modules';
+ $module_categories = $this->Conn->GetCol($sql);
+
+ $module_categories[] = 0;
+ $module_categories = implode(',', array_unique($module_categories));
+
+ $permissions = $delete_permission_ids = Array ();
+
+ foreach ($permission_names as $permission_name) {
+ foreach ($user_groups as $group_id) {
+ $sql = 'SELECT PermissionId
+ FROM ' . TABLE_PREFIX . 'Permissions
+ WHERE (Permission = ' . $this->Conn->qstr($permission_name) . ') AND (PermissionValue = 1) AND (GroupId = ' . $group_id . ') AND (`Type` = 0) AND (CatId IN (' . $module_categories . '))';
+ $permission_ids = $this->Conn->GetCol($sql);
+
+ if ($permission_ids) {
+ if (!array_key_exists($permission_name, $permissions)) {
+ $permissions[$permission_name] = Array ();
+ }
+
+ $permissions[$permission_name][] = $group_id;
+ $delete_permission_ids = array_merge($delete_permission_ids, $permission_ids);
+ }
+ }
+ }
+
+ if ($delete_permission_ids) {
+ // here we can delete some of permissions that will be added later
+ $sql = 'DELETE FROM ' . TABLE_PREFIX . 'Permissions
+ WHERE PermissionId IN (' . implode(',', $delete_permission_ids) . ')';
+ $this->Conn->Query($sql);
+ }
+
+ $home_category = $this->Application->findModule('Name', 'Core', 'RootCat');
+
+ foreach ($permissions as $permission_name => $permission_groups) {
+ // optimize a bit
+ $has_everyone = in_array(15, $permission_groups);
+
+ if ($has_everyone || (!$has_everyone && count($permission_groups) == $user_group_count - 1)) {
+ // has permission for "Everyone" group OR allowed in all groups except "Everyone" group
+ // so remove all other explicitly allowed permissions
+ $permission_groups = Array (15);
+ }
+
+ foreach ($permission_groups as $group_id) {
+ $fields_hash = Array (
+ 'Permission' => $permission_name,
+ 'GroupId' => $group_id,
+ 'PermissionValue' => 1,
+ 'Type' => 0, // category-based permission,
+ 'CatId' => $home_category,
+ );
+
+ $this->Conn->doInsert($fields_hash, TABLE_PREFIX . 'Permissions');
+ }
+ }
+
+ $updater =& $this->Application->recallObject('kPermCacheUpdater');
+ /* @var $updater kPermCacheUpdater */
+
+ $updater->OneStepRun();
+ }
+ }
}
\ No newline at end of file
Index: install/upgrades.sql
===================================================================
--- install/upgrades.sql (revision 13311)
+++ install/upgrades.sql (working copy)
@@ -1630,4 +1630,6 @@
UPDATE Phrase
SET Module = 'Core'
-WHERE Phrase IN ('la_fld_Image', 'la_fld_Qty');
\ No newline at end of file
+WHERE Phrase IN ('la_fld_Image', 'la_fld_Qty');
+
+# ===== v 5.0.3-B2 =====
\ No newline at end of file
Index: units/categories/categories_event_handler.php
===================================================================
--- units/categories/categories_event_handler.php (revision 13311)
+++ units/categories/categories_event_handler.php (working copy)
@@ -783,12 +783,12 @@
}
$object =& $event->getObject();
- /* @var $object kDBItem */
+ /* @var $object CategoriesItem */
- if ($object->IsRoot()) {
+ /*if ($object->IsRoot()) {
$event->setEventParam('master_ids', Array(0));
$this->RemoveRequiredFields($object);
- }
+ }*/
parent::OnSave($event);
Index: units/permissions/permissions_tag_processor.php
===================================================================
--- units/permissions/permissions_tag_processor.php (revision 13311)
+++ units/permissions/permissions_tag_processor.php (working copy)
@@ -81,6 +81,7 @@
function PrintPermissions($params)
{
$category =& $this->Application->recallObject('c');
+ /* @var $category kDBItem */
$group_id = $this->Application->GetVar('group_id');
$prefix = $this->Application->GetVar('item_prefix');
@@ -103,20 +104,20 @@
$this_cat = array_pop($categories);
// get permission name + category position in parent path that has value set for that permission
- $case = 'MAX(CASE c.CategoryId';
+ $case = 'MAX(CASE p.CatId';
foreach ($categories as $pos => $cat_id) {
$case .= ' WHEN '.$cat_id.' THEN '.$pos;
}
$case .= ' END) AS InheritedPosition';
+
$sql = 'SELECT '.$case.', p.Permission AS Perm
- FROM '.TABLE_PREFIX.'Category c
- LEFT JOIN '.$perm_live_table.' p ON p.CatId = c.CategoryId
+ FROM '.$perm_live_table.' p
LEFT JOIN '.TABLE_PREFIX.'PermissionConfig pc ON pc.PermissionName = p.Permission
WHERE
- CategoryId IN ('.implode(',', $categories).') AND
- ModuleId = "'.$module.'" AND
+ p.CatId IN ('.implode(',', $categories).') AND
+ pc.ModuleId = ' . $this->Conn->qstr($module) . ' AND
(
- (p.GroupId = '.(int)$group_id.' AND p.Type = 0)
+ (p.GroupId = ' . (int)$group_id . ' AND p.Type = 0)
)
GROUP BY Perm';
$perm_positions = $this->Conn->GetCol($sql, 'Perm');
category_view_permission_moved_modules.patch [^] (9,767 bytes) 2010-03-30 12:21
[Show Content]
Index: in-bulletin/install/install_data.sql
===================================================================
--- in-bulletin/install/install_data.sql (revision 13311)
+++ in-bulletin/install/install_data.sql (working copy)
@@ -195,10 +195,8 @@
INSERT INTO SearchConfig VALUES ('Topic', 'OrgId', 0, 1, 'lu_fielddesc_topic_orgid', 'lu_field_orgid', 'In-Bulletin', 'la_text_topic', 21, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'LastPostId', 0, 1, 'lu_fielddesc_topic_lastpostid', 'lu_field_lastpostid', 'In-Bulletin', 'la_text_topic', 22, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 14, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 14, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 14, 1, 0, {TopicCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 12, 1, 0, {TopicCatId});
@@ -208,8 +206,6 @@
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.DELETE', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY.PENDING', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY', 12, 1, 0, {TopicCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 13, 1, 0, {TopicCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.ADD.PENDING', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.ADD', 13, 1, 0, {TopicCatId});
@@ -220,10 +216,6 @@
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.MODIFY', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.DELETE', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY', 13, 1, 0, {TopicCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 11, 1, 0, {TopicCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.ADD', 11, 1, 0, {TopicCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.DELETE', 11, 1, 0, {TopicCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.MODIFY', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.ADD', 11, 1, 0, {TopicCatId});
Index: in-commerce/install/install_data.sql
===================================================================
--- in-commerce/install/install_data.sql (revision 13311)
+++ in-commerce/install/install_data.sql (working copy)
@@ -399,17 +399,13 @@
INSERT INTO PermissionConfig VALUES (DEFAULT, 'PRODUCT.MODIFY', 'lu_PermName_Product.Modify_desc', 'lu_PermName_Product.Modify_desc', 'In-Commerce');
INSERT INTO PermissionConfig VALUES (DEFAULT, 'PRODUCT.VIEW', 'lu_PermName_Product.View_desc', 'lu_PermName_Product.View_error', 'In-Commerce');
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 14, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.VIEW', 14, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.RATE', 13, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.REVIEW', 13, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.REVIEW.PENDING', 13, 1, 0, {ProductCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 13, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 13, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.VIEW', 13, 1, 0, {ProductCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 12, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.VIEW', 12, 1, 0, {ProductCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 11, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.ADD', 11, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.DELETE', 11, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.MODIFY', 11, 1, 0, {ProductCatId});
Index: in-link/install/install_data.sql
===================================================================
--- in-link/install/install_data.sql (revision 13311)
+++ in-link/install/install_data.sql (working copy)
@@ -218,9 +218,7 @@
INSERT INTO StatItem VALUES (DEFAULT, 'In-Link', 'SELECT <%m:post_format field="MAX(Modified)" type="date"%> FROM <%prefix%>Link', NULL, 'la_prompt_LastLinkUpdate', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Link', 'SELECT COUNT(*) FROM <%prefix%>ItemReview WHERE Module = \'<%modules:get_current%>\'', NULL, 'la_prompt_LinkReviews', 0, 2);
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 14, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.VIEW', 14, 1, 0, {LinkCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 12, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 12, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.VIEW', 12, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.ADD.PENDING', 12, 1, 0, {LinkCatId});
@@ -228,7 +226,6 @@
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.REVIEW', 12, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.OWNER.MODIFY', 12, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.OWNER.MODIFY.PENDING', 12, 1, 0, {LinkCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 13, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 13, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.ADD', 13, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.VIEW', 13, 1, 0, {LinkCatId});
@@ -237,10 +234,6 @@
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.OWNER.MODIFY', 13, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.OWNER.MODIFY.PENDING', 13, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.OWNER.DELETE', 13, 1, 0, {LinkCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 11, 1, 0, {LinkCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.ADD', 11, 1, 0, {LinkCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.DELETE', 11, 1, 0, {LinkCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.MODIFY', 11, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 11, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.ADD', 11, 1, 0, {LinkCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'LINK.VIEW', 11, 1, 0, {LinkCatId});
Index: in-news/install/install_data.sql
===================================================================
--- in-news/install/install_data.sql (revision 13311)
+++ in-news/install/install_data.sql (working copy)
@@ -186,10 +186,7 @@
INSERT INTO StatItem VALUES (DEFAULT, 'In-News', 'SELECT <%m:post_format field="MAX(Modified)" type="date"%> FROM <%prefix%>News', NULL, 'la_prompt_LastArticleUpdate', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-News', 'SELECT COUNT(*) FROM <%prefix%>ItemReview WHERE Module = \'<%modules:get_current%>\'', NULL, 'la_prompt_ArticleReviews', 0, 2);
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 14, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.VIEW', 14, 1, 0, {NewsCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 13, 1, 0, {NewsCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.ADD.PENDING', 13, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 13, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.VIEW', 13, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.RATE', 13, 1, 0, {NewsCatId});
@@ -198,10 +195,6 @@
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.OWNER.MODIFY', 13, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.OWNER.MODIFY.PENDING', 13, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.OWNER.DELETE', 13, 1, 0, {NewsCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 11, 1, 0, {NewsCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.ADD', 11, 1, 0, {NewsCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.DELETE', 11, 1, 0, {NewsCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.MODIFY', 11, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 11, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.VIEW', 11, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.ADD', 11, 1, 0, {NewsCatId});
@@ -209,7 +202,6 @@
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.MODIFY', 11, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.RATE', 11, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.REVIEW', 11, 1, 0, {NewsCatId});
-INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 12, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 12, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.VIEW', 12, 1, 0, {NewsCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'NEWS.RATE', 12, 1, 0, {NewsCatId});
|