diff options
Diffstat (limited to 'install')
-rw-r--r-- | install/perm_upgrade.php | 63 | ||||
-rw-r--r-- | install/schema_mysql.sql | 13 | ||||
-rw-r--r-- | install/schema_postgres.sql | 11 | ||||
-rw-r--r-- | install/update.php | 56 |
4 files changed, 143 insertions, 0 deletions
diff --git a/install/perm_upgrade.php b/install/perm_upgrade.php new file mode 100644 index 000000000..b5412b942 --- /dev/null +++ b/install/perm_upgrade.php @@ -0,0 +1,63 @@ +<?php + +function perm_limits_upgrade($channel) { + perm_limits_upgrade_create($channel['channel_id'],'view_stream',$channel['channel_r_stream']); + perm_limits_upgrade_create($channel['channel_id'],'view_profile',$channel['channel_r_profile']); + perm_limits_upgrade_create($channel['channel_id'],'view_contacts',$channel['channel_r_abook']); + perm_limits_upgrade_create($channel['channel_id'],'view_storage',$channel['channel_r_storage']); + perm_limits_upgrade_create($channel['channel_id'],'view_pages',$channel['channel_r_pages']); + perm_limits_upgrade_create($channel['channel_id'],'send_stream',$channel['channel_w_stream']); + perm_limits_upgrade_create($channel['channel_id'],'post_wall',$channel['channel_w_wall']); + perm_limits_upgrade_create($channel['channel_id'],'post_comments',$channel['channel_w_comment']); + perm_limits_upgrade_create($channel['channel_id'],'post_mail',$channel['channel_w_mail']); + perm_limits_upgrade_create($channel['channel_id'],'post_like',$channel['channel_w_like']); + perm_limits_upgrade_create($channel['channel_id'],'tag_deliver',$channel['channel_w_tagwall']); + perm_limits_upgrade_create($channel['channel_id'],'chat',$channel['channel_w_chat']); + perm_limits_upgrade_create($channel['channel_id'],'write_storage',$channel['channel_w_storage']); + perm_limits_upgrade_create($channel['channel_id'],'write_pages',$channel['channel_w_pages']); + perm_limits_upgrade_create($channel['channel_id'],'republish',$channel['channel_a_republish']); + perm_limits_upgrade_create($channel['channel_id'],'delegate',$channel['channel_a_delegate']); +} + + + + +function perm_abook_upgrade($abook) { + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','view_stream',intval(($abook['abook_their_perms'] & PERMS_R_STREAM)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','view_profile',intval(($abook['abook_their_perms'] & PERMS_R_PROFILE)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','view_contacts',intval(($abook['abook_their_perms'] & PERMS_R_ABOOK)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','view_storage',intval(($abook['abook_their_perms'] & PERMS_R_STORAGE)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','view_pages',intval(($abook['abook_their_perms'] & PERMS_R_PAGES)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','send_stream',intval(($abook['abook_their_perms'] & PERMS_W_STREAM)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','post_wall',intval(($abook['abook_their_perms'] & PERMS_W_WALL)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','post_comments',intval(($abook['abook_their_perms'] & PERMS_W_COMMENT)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','post_mail',intval(($abook['abook_their_perms'] & PERMS_W_MAIL)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','post_like',intval(($abook['abook_their_perms'] & PERMS_W_LIKE)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','tag_deliver',intval(($abook['abook_their_perms'] & PERMS_W_TAGWALL)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','chat',intval(($abook['abook_their_perms'] & PERMS_W_CHAT)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','write_storage',intval(($abook['abook_their_perms'] & PERMS_W_STORAGE)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','write_pages',intval(($abook['abook_their_perms'] & PERMS_W_PAGES)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','republish',intval(($abook['abook_their_perms'] & PERMS_A_REPUBLISH)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'their_perms','delegate',intval(($abook['abook_their_perms'] & PERMS_A_DELEGATE)? 1 : 0)); + + + + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','view_stream',intval(($abook['abook_my_perms'] & PERMS_R_STREAM)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','view_profile',intval(($abook['abook_my_perms'] & PERMS_R_PROFILE)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','view_contacts',intval(($abook['abook_my_perms'] & PERMS_R_ABOOK)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','view_storage',intval(($abook['abook_my_perms'] & PERMS_R_STORAGE)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','view_pages',intval(($abook['abook_my_perms'] & PERMS_R_PAGES)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','send_stream',intval(($abook['abook_my_perms'] & PERMS_W_STREAM)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','post_wall',intval(($abook['abook_my_perms'] & PERMS_W_WALL)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','post_comments',intval(($abook['abook_my_perms'] & PERMS_W_COMMENT)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','post_mail',intval(($abook['abook_my_perms'] & PERMS_W_MAIL)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','post_like',intval(($abook['abook_my_perms'] & PERMS_W_LIKE)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','tag_deliver',intval(($abook['abook_my_perms'] & PERMS_W_TAGWALL)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','chat',intval(($abook['abook_my_perms'] & PERMS_W_CHAT)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','write_storage',intval(($abook['abook_my_perms'] & PERMS_W_STORAGE)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','write_pages',intval(($abook['abook_my_perms'] & PERMS_W_PAGES)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','republish',intval(($abook['abook_my_perms'] & PERMS_A_REPUBLISH)? 1 : 0)); + set_abconfig($abook['abook_channel'],$abook['abook_hash'],'my_perms','delegate',intval(($abook['abook_my_perms'] & PERMS_A_DELEGATE)? 1 : 0)); + + +}
\ No newline at end of file diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql index d2a5ac85e..223f94162 100644 --- a/install/schema_mysql.sql +++ b/install/schema_mysql.sql @@ -903,6 +903,19 @@ CREATE TABLE IF NOT EXISTS `pconfig` ( UNIQUE KEY `access` (`uid`,`cat`,`k`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +create table if not exists perm_limits { + id int(10) not null AUTO_INCREMENT, + perm varchar(64) not null default '', + channel_id int(10) unsigned not null default 0, + perm_limit int(10) unsigned not null default 0, + PRIMARY KEY (`id`), + KEY `perm` (`perm`), + KEY `channel_id` (`channel_id`), + KEY `perm_limit` (`perm_limit`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + CREATE TABLE IF NOT EXISTS `photo` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `aid` int(10) unsigned NOT NULL DEFAULT '0', diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql index 378308233..36018de3e 100644 --- a/install/schema_postgres.sql +++ b/install/schema_postgres.sql @@ -888,6 +888,17 @@ CREATE TABLE "pconfig" ( PRIMARY KEY ("id"), UNIQUE ("uid","cat","k") ); +create table perm_limits ( + id serial NOT NULL, + perm varchar(64) not null default '', + channel_id int(10) unsigned not null default 0, + perm_limit int(10) unsigned not null default 0, + primary key id +); +create index "idx_perm" on perm_limits ("perm"); +create index "idx_channel_id" on perm_limits ("channel_id"); +create index "idx_perm_limit" on perm_limits ("perm_limit"); + CREATE TABLE "photo" ( "id" serial NOT NULL, "aid" bigint NOT NULL DEFAULT '0', diff --git a/install/update.php b/install/update.php index 3cb5010eb..c87971913 100644 --- a/install/update.php +++ b/install/update.php @@ -2360,4 +2360,60 @@ function update_r1178() { if($r1) return UPDATE_SUCCESS; return UPDATE_FAILED; +} + +function update_r1179() { + + require_once('install/perm_upgrade.php'); + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("create table perm_limits ( + id serial NOT NULL, + perm varchar(64) not null default '', + channel_id int(10) unsigned not null default 0, + perm_limit int(10) unsigned not null default 0 + primary_key id )"); + $r2 = q("create index \"idx_perm\" on perm_limits (\"perm\") "); + $r3 = q("create index \"idx_channel_id\" on perm_limits (\"channel_id\") "); + $r4 = q("create index \"idx_perm_limit\" on perm_limits (\"perm_limit\") "); + + + $r = $r1 && $r2 && $r3 && $r4; + } + + else { + $r1 = q("create table if not exists perm_limits { + id int(10) not null AUTO_INCREMENT, + perm varchar(64) not null default '', + channel_id int(10) unsigned not null default 0, + perm_limit int(10) unsigned not null default 0, + PRIMARY KEY (`id`), + KEY `perm` (`perm`), + KEY `channel_id` (`channel_id`), + KEY `perm_limit` (`perm_limit`) + ) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + $r = $r1; + } + + $r1 = q("select * from channel where true"); + if($r1) { + foreach($r1 as $rr) { + perm_limits_upgrade($rr); + } + } + + $r2 = q("select * from abook where true"); + if($r2) { + foreach($r2 as $rr) { + perm_abook_upgrade($rr); + } + } + + $r = $r && $r1 && $r2; + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + + }
\ No newline at end of file |