Skip to content

Commit d5c19f7

Browse files
committed
Merge pull request #352 from Admidio/feature-download-upload-rigths
Improvements to download module
2 parents c6eb383 + e7ea167 commit d5c19f7

File tree

28 files changed

+805
-362
lines changed

28 files changed

+805
-362
lines changed

adm_program/installation/db_scripts/db.sql

Lines changed: 44 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ drop table if exists %PREFIX%_components cascade;
1515
drop table if exists %PREFIX%_date_role cascade;
1616
drop table if exists %PREFIX%_dates cascade;
1717
drop table if exists %PREFIX%_files cascade;
18-
drop table if exists %PREFIX%_folder_roles cascade;
1918
drop table if exists %PREFIX%_folders cascade;
2019
drop table if exists %PREFIX%_guestbook_comments cascade;
2120
drop table if exists %PREFIX%_guestbook cascade;
@@ -31,6 +30,8 @@ drop table if exists %PREFIX%_preferences cascade;
3130
drop table if exists %PREFIX%_registrations cascade;
3231
drop table if exists %PREFIX%_role_dependencies cascade;
3332
drop table if exists %PREFIX%_roles cascade;
33+
drop table if exists %PREFIX%_roles_rights cascade;
34+
drop table if exists %PREFIX%_roles_rights_data cascade;
3435
drop table if exists %PREFIX%_list_columns cascade;
3536
drop table if exists %PREFIX%_lists cascade;
3637
drop table if exists %PREFIX%_rooms cascade;
@@ -202,20 +203,6 @@ default character set = utf8
202203
collate = utf8_unicode_ci;
203204

204205

205-
/*==============================================================*/
206-
/* Table: adm_folder_roles */
207-
/*==============================================================*/
208-
create table %PREFIX%_folder_roles
209-
(
210-
flr_fol_id integer unsigned not null,
211-
flr_rol_id integer unsigned not null,
212-
primary key (flr_fol_id, flr_rol_id)
213-
)
214-
engine = InnoDB
215-
default character set = utf8
216-
collate = utf8_unicode_ci;
217-
218-
219206
/*==============================================================*/
220207
/* Table: adm_folders */
221208
/*==============================================================*/
@@ -658,6 +645,41 @@ default character set = utf8
658645
collate = utf8_unicode_ci;
659646

660647

648+
/*==============================================================*/
649+
/* Table: adm_roles_rights */
650+
/*==============================================================*/
651+
create table %PREFIX%_roles_rights
652+
(
653+
ror_id integer unsigned not null AUTO_INCREMENT,
654+
ror_name_intern varchar(50) not null,
655+
ror_table varchar(50) not null,
656+
primary key (ror_id)
657+
)
658+
engine = InnoDB
659+
default character set = utf8
660+
collate = utf8_unicode_ci;
661+
662+
663+
/*==============================================================*/
664+
/* Table: adm_roles_rights_data */
665+
/*==============================================================*/
666+
create table %PREFIX%_roles_rights_data
667+
(
668+
rrd_id integer unsigned not null AUTO_INCREMENT,
669+
rrd_ror_id integer unsigned not null,
670+
rrd_rol_id integer unsigned not null,
671+
rrd_object_id integer unsigned not null,
672+
rrd_usr_id_create integer unsigned,
673+
rrd_timestamp_create timestamp not null default CURRENT_TIMESTAMP,
674+
primary key (rrd_id)
675+
)
676+
engine = InnoDB
677+
default character set = utf8
678+
collate = utf8_unicode_ci;
679+
680+
create unique index IDX_%PREFIX%_RRD_ROR_ROL_OBJECT_ID on %PREFIX%_roles_rights_data (rrd_ror_id, rrd_rol_id, rrd_object_id);
681+
682+
661683
/*==============================================================*/
662684
/* Table: adm_rooms */
663685
/*==============================================================*/
@@ -867,11 +889,6 @@ alter table %PREFIX%_files add constraint %PREFIX%_FK_FIL_FOL foreign key (fil_f
867889
alter table %PREFIX%_files add constraint %PREFIX%_FK_FIL_USR foreign key (fil_usr_id)
868890
references %PREFIX%_users (usr_id) on delete set null on update restrict;
869891

870-
alter table %PREFIX%_folder_roles add constraint %PREFIX%_FK_FLR_FOL foreign key (flr_fol_id)
871-
references %PREFIX%_folders (fol_id) on delete restrict on update restrict;
872-
alter table %PREFIX%_folder_roles add constraint %PREFIX%_FK_FLR_ROL foreign key (flr_rol_id)
873-
references %PREFIX%_roles (rol_id) on delete restrict on update restrict;
874-
875892
alter table %PREFIX%_folders add constraint %PREFIX%_FK_FOL_ORG foreign key (fol_org_id)
876893
references %PREFIX%_organizations (org_id) on delete restrict on update restrict;
877894
alter table %PREFIX%_folders add constraint %PREFIX%_FK_FOL_FOL_PARENT foreign key (fol_fol_id_parent)
@@ -966,6 +983,13 @@ alter table %PREFIX%_roles add constraint %PREFIX%_FK_ROL_USR_CREATE foreign key
966983
alter table %PREFIX%_roles add constraint %PREFIX%_FK_ROL_USR_CHANGE foreign key (rol_usr_id_change)
967984
references %PREFIX%_users (usr_id) on delete set null on update restrict;
968985

986+
alter table %PREFIX%_roles_rights_data add constraint %PREFIX%_FK_RRD_ROR foreign key (rrd_ror_id)
987+
references %PREFIX%_roles_rights (ror_id) on delete restrict on update restrict;
988+
alter table %PREFIX%_roles_rights_data add constraint %PREFIX%_FK_RRD_ROL foreign key (rrd_rol_id)
989+
references %PREFIX%_roles (rol_id) on delete restrict on update restrict;
990+
alter table %PREFIX%_roles_rights_data add constraint %PREFIX%_FK_RRD_USR_CREATE foreign key (rrd_usr_id_create)
991+
references %PREFIX%_users (usr_id) on delete set null on update restrict;
992+
969993
alter table %PREFIX%_rooms add constraint %PREFIX%_FK_ROOM_USR_CREATE foreign key (room_usr_id_create)
970994
references %PREFIX%_users (usr_id) on delete set null on update restrict;
971995
alter table %PREFIX%_rooms add constraint %PREFIX%_FK_ROOM_USR_CHANGE foreign key (room_usr_id_change)

adm_program/installation/db_scripts/upd_2_4_0_conv.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
$gDb->query($sql, false);
2222
$sql = 'ALTER TABLE '.TBL_MEMBERS.' DROP INDEX IDX_MEM_ROL_USR_ID';
2323
$gDb->query($sql, false);
24-
$sql = 'ALTER TABLE '.TBL_FOLDER_ROLES.' DROP INDEX FLR_FOL_FK';
24+
$sql = 'ALTER TABLE '.$g_tbl_praefix.'_folder_roles DROP INDEX FLR_FOL_FK';
2525
$gDb->query($sql, false);
26-
$sql = 'ALTER TABLE '.TBL_FOLDER_ROLES.' DROP INDEX FLR_ROL_FK';
26+
$sql = 'ALTER TABLE '.$g_tbl_praefix.'_folder_roles DROP INDEX FLR_ROL_FK';
2727
$gDb->query($sql, false);
2828
$sql = 'ALTER TABLE '.TBL_ROLE_DEPENDENCIES.' DROP INDEX RLD_ROL_PARENT_FK';
2929
$gDb->query($sql, false);

adm_program/installation/db_scripts/update_3_2.xml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,42 @@
55
<step id="30">UPDATE %PREFIX%_roles SET rol_administrator = rol_webmaster</step>
66
<step id="40">ALTER TABLE %PREFIX%_roles DROP COLUMN rol_webmaster</step>
77
<step id="50">UPDATE %PREFIX%_texts SET txt_text = REPLACE(txt_text, '#webmaster_email#', '#administrator_email#')</step>
8+
<step id="60">create table %PREFIX%_roles_rights
9+
(
10+
ror_id integer unsigned not null AUTO_INCREMENT,
11+
ror_name_intern varchar(50) not null,
12+
ror_table varchar(50) not null,
13+
primary key (ror_id)
14+
)
15+
engine = InnoDB
16+
default character set = utf8
17+
collate = utf8_unicode_ci</step>
18+
<step id="70">create table %PREFIX%_roles_rights_data
19+
(
20+
rrd_id integer unsigned not null AUTO_INCREMENT,
21+
rrd_ror_id integer unsigned not null,
22+
rrd_rol_id integer unsigned not null,
23+
rrd_object_id integer unsigned not null,
24+
rrd_usr_id_create integer unsigned,
25+
rrd_timestamp_create timestamp not null default CURRENT_TIMESTAMP,
26+
primary key (rrd_id)
27+
)
28+
engine = InnoDB
29+
default character set = utf8
30+
collate = utf8_unicode_ci</step>
31+
<step id="80">create unique index IDX_%PREFIX%_RRD_ROR_ROL_OBJECT_ID on %PREFIX%_roles_rights_data (rrd_ror_id, rrd_rol_id, rrd_object_id)</step>
32+
<step id="90">INSERT INTO %PREFIX%_roles_rights (ror_name_intern, ror_table)
33+
VALUES ('folder_view', 'adm_folders'),
34+
('folder_upload', 'adm_folders')
35+
</step>
36+
<step id="100">ComponentUpdate::updateStepMigrateToFolderRights</step>
37+
<step id="110">DROP TABLE %PREFIX%_folder_roles</step>
38+
<step id="120">alter table %PREFIX%_roles_rights_data add constraint %PREFIX%_FK_RRD_ROR foreign key (rrd_ror_id)
39+
references %PREFIX%_roles_rights (ror_id) on delete restrict on update restrict</step>
40+
<step id="130">alter table %PREFIX%_roles_rights_data add constraint %PREFIX%_FK_RRD_ROL foreign key (rrd_rol_id)
41+
references %PREFIX%_roles (rol_id) on delete restrict on update restrict</step>
42+
<step id="140">alter table %PREFIX%_roles_rights_data add constraint %PREFIX%_FK_RRD_USR_CREATE foreign key (rrd_usr_id_create)
43+
references %PREFIX%_users (usr_id) on delete set null on update restrict</step>
44+
<step id="150">ComponentUpdate::updateStepNewDownloadRootFolderName</step>
845
<step>stop</step>
946
</update>

adm_program/installation/update.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@
9494
header('Location: installation.php');
9595
}
9696

97-
// Daten der aktuellen Organisation einlesen
97+
// create an organization object of the current organization
9898
$gCurrentOrganization = new Organization($gDb, $g_organization);
9999

100100
if($gCurrentOrganization->getValue('org_id') == 0)
@@ -106,6 +106,8 @@
106106
// organisationsspezifische Einstellungen aus adm_preferences auslesen
107107
$gPreferences = $gCurrentOrganization->getPreferences();
108108

109+
$gProfileFields = new ProfileFields($gDb, $gCurrentOrganization->getValue('org_id'));
110+
109111
// create language and language data object to handle translations
110112
if(!isset($gPreferences['system_language']))
111113
{
@@ -274,7 +276,6 @@
274276
$userRow = $userStatement->fetch();
275277

276278
// create object with current user field structure und user object
277-
$gProfileFields = new ProfileFields($gDb, $gCurrentOrganization->getValue('org_id'));
278279
$gCurrentUser = new User($gDb, $gProfileFields, $userRow['usr_id']);
279280

280281
// check login data. If login failed an exception will be thrown.
@@ -422,6 +423,13 @@
422423
// since version 3 we do the update with xml files and a new class model
423424
if($mainVersion >= 3)
424425
{
426+
// set system user as current user, but this user only exists since version 3
427+
$sql = 'SELECT usr_id FROM '.TBL_USERS.' WHERE usr_login_name = \''.$gL10n->get('SYS_SYSTEM').'\' ';
428+
$systemUserStatement = $gDb->query($sql);
429+
$row = $systemUserStatement->fetch();
430+
431+
$gCurrentUser = new User($gDb, $gProfileFields, $row['usr_id']);
432+
425433
// reread component because in version 3.0 the component will be created within the update
426434
$componentUpdateHandle = new ComponentUpdate($gDb);
427435
$componentUpdateHandle->readDataByColumns(array('com_type' => 'SYSTEM', 'com_name_intern' => 'CORE'));
@@ -452,6 +460,7 @@
452460

453461
// show notice that update was successful
454462
$form = new HtmlFormInstallation('installation-form', 'http://www.admidio.org/index.php?page=donate');
463+
$form->setUpdateModus();
455464
$form->setFormDescription($gL10n->get('INS_UPDATE_TO_VERSION_SUCCESSFUL', ADMIDIO_VERSION_TEXT).'<br /><br />'.$gL10n->get('INS_SUPPORT_FURTHER_DEVELOPMENT'), '<div class="alert alert-success form-alert"><span class="glyphicon glyphicon-ok"></span><strong>'.$gL10n->get('INS_UPDATING_WAS_SUCCESSFUL').'</strong></div>');
456465
$form->openButtonGroup();
457466
$form->addSubmitButton('next_page', $gL10n->get('SYS_DONATE'), array('icon' => 'layout/money.png'));

adm_program/languages/de.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@
137137
<string name="DOW_NEW_FILE_NAME">Neuer Dateiname</string>
138138
<string name="DOW_NEW_NAME">Neuer Name</string>
139139
<string name="DOW_PREVIOUS_NAME">Bisheriger Name</string>
140-
<string name="DOW_ROLE_ACCESS_PERMISSIONS_DESC">Auf dieser Seite kannst du einstellen, wer den Ordner #VAR1_BOLD# sehen und die Dateien herunterladen darf. Die gesetzten Berechtigungen werden an alle Unterordner vererbt und bereits vorhandene Berechtigungen in Unterordnern werden überschrieben. Es stehen dir nur Rollen zur Verfügung, die auf den übergeordneten Ordner Zugriff haben.</string>
140+
<string name="DOW_ROLE_ACCESS_PERMISSIONS_DESC">Auf dieser Seite kannst du einstellen, wer den Ordner #VAR1_BOLD# sehen, Dateien herunterladen oder Dateien hochladen darf. Die gesetzten Berechtigungen werden an alle Unterordner vererbt und bereits vorhandene Berechtigungen in Unterordnern werden überschrieben. Es stehen dir nur Rollen zur Verfügung, die auf den übergeordneten Ordner Zugriff haben. Benutzer von Rollen mit der Berechtigung #VAR2_BOLD# haben immer alle Rechte für den Ordner.</string>
141141
<string name="DOW_SELECT_FILES">Dateien auswählen</string>
142142
<string name="DOW_SET_FOLDER_PERMISSIONS">Ordnerberechtigungen setzen</string>
143143
<string name="DOW_UNMANAGED_FILES">Nicht verwaltete Dateien</string>
@@ -894,9 +894,10 @@
894894
<string name="ROL_RIGHT_ASSIGN_ROLES">Rollen verwalten und zuordnen</string>
895895
<string name="ROL_RIGHT_ASSIGN_ROLES_DESC">Benutzer dieser Rolle haben Zugriff auf die Rollenverwaltung und können neue Rollen erstellen, verwalten und anderen Benutzern Rollen zuordnen.</string>
896896
<string name="ROL_RIGHT_DATES">Termine anlegen und bearbeiten</string>
897-
<string name="ROL_RIGHT_DOWNLOAD">Downloads hochladen und bearbeiten</string>
897+
<string name="ROL_RIGHT_DOWNLOAD">Downloads verwalten</string>
898+
<string name="ROL_RIGHT_DOWNLOAD_DESC">Rollen mit dieser Berechtigung können im Downloadmodul die Rechte vergeben, welche Rollen welche Ordner sehen oder Dateien hochladen dürfen.</string>
898899
<string name="ROL_RIGHT_EDIT_USER">Profildaten aller Benutzer bearbeiten</string>
899-
<string name="ROL_RIGHT_EDIT_USER_DESC">Rollen, die diese Option aktiviert haben, haben die Berechtigung alle Benutzerdaten (außer Passwörter) anderer Mitglieder zu bearbeiten.\nAußerdem haben sie Zugriff auf die Benutzerverwaltung und können dort neue Benutzer anlegen oder alte Benutzer löschen.</string>
900+
<string name="ROL_RIGHT_EDIT_USER_DESC">Rollen mit dieser Berechtigung können alle Benutzerdaten (außer Passwörter) anderer Mitglieder bearbeiten.\nAußerdem haben sie Zugriff auf die Benutzerverwaltung und können dort neue Benutzer anlegen oder alte Benutzer löschen.</string>
900901
<string name="ROL_RIGHT_GUESTBOOK">Gästebucheinträge bearbeiten und löschen</string>
901902
<string name="ROL_RIGHT_GUESTBOOK_COMMENTS">Kommentare zu Gästebucheinträgen anlegen</string>
902903
<string name="ROL_RIGHT_MAIL_THIS_ROLE_DESC">Diese Einstellung steuert, wer das Recht hat über das Mailmodul E-Mails an diese Rolle zu schicken. Das Rollenrecht #VAR1_BOLD# steht allerdings noch über dieser Einstellung.</string>
@@ -1145,7 +1146,6 @@
11451146
<string name="SYS_MESSAGES">Nachrichten</string>
11461147
<string name="SYS_MINUTES">Minuten</string>
11471148
<string name="SYS_MOBILE">Handy</string>
1148-
<string name="SYS_MODULE_ACCESS_FROM_HOMEPAGE_ONLY" translation="edited">Dieses Modul kann nur von der Organisation genutzt werden, die in der config.php hinterlegt ist. Dies ist die Organisation #VAR1#.</string>
11491149
<string name="SYS_MODULE_DISABLED">Dieses Modul ist nicht freigegeben.</string>
11501150
<string name="SYS_MODULE_PREFERENCES">Moduleinstellungen</string>
11511151
<string name="SYS_MODULES">Module</string>

0 commit comments

Comments
 (0)