Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bugzilla
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
bugzilla
Commits
d2480ba7
Commit
d2480ba7
authored
Mar 26, 2004
by
bugreport%peshkin.net
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 181589: Add mass-remove to editgroups
r=justdave, a=justdave
parent
59fb407f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
178 additions
and
24 deletions
+178
-24
editgroups.cgi
editgroups.cgi
+178
-24
No files found.
editgroups.cgi
View file @
d2480ba7
...
...
@@ -28,6 +28,7 @@
use
strict
;
use
lib
"."
;
use
Bugzilla
;
use
Bugzilla::
Constants
;
require
"CGI.pl"
;
...
...
@@ -191,8 +192,8 @@ if ($action eq 'changeform') {
if
(
$isbuggroup
==
0
)
{
print
html_quote
(
$name
);
}
else
{
print
"<INPUT TYPE=HIDDEN NAME=\"oldname\" VALUE="
.
html_quote
(
$name
)
.
">
print
"<INPUT TYPE=HIDDEN NAME=\"oldname\" VALUE=
\"
"
.
html_quote
(
$name
)
.
"
\"
>
<INPUT SIZE=60 NAME=\"name\" VALUE=\""
.
html_quote
(
$name
)
.
"\">"
;
}
print
"</TD></TR><TR><TH>Description:</TH><TD>"
;
...
...
@@ -268,6 +269,26 @@ if ($action eq 'changeform') {
print
"</TABLE><BR>"
;
print
"<INPUT TYPE=SUBMIT VALUE=\"Submit\">\n"
;
print
<<EOF;
<table width="76%" border="1">
<tr>
<td><p><strong>Conversion of groups created with Bugzilla versions 2.16 and
prior:</strong></p>
<ul>
<li>Remove all explicit memberships from this group:
<input name="remove_explicit_members" type="submit" id="remove_explicit_members" value="Remove Memberships">
</li>
<li>Remove all explicit memberships that are included in the above
regular expression:
<input name="remove_explicit_members_regexp" type="submit" id="remove_explicit_members_regexp" value="Remove memberships included in regular expression">
</li>
</ul> <p><br>
</p>
</p></td>
</tr>
</table>
<BR>
EOF
print
"<INPUT TYPE=HIDDEN NAME=\"action\" VALUE=\"postchanges\">\n"
;
print
"<INPUT TYPE=HIDDEN NAME=\"group\" VALUE=$gid>\n"
;
print
"</FORM>"
;
...
...
@@ -544,7 +565,158 @@ if ($action eq 'delete') {
#
if
(
$action
eq
'postchanges'
)
{
# ZLL: Bug 181589: we need to have something to remove explictly listed users from
# groups in order for the conversion to 2.18 groups to work
if
(
$::FORM
{
remove_explicit_members
})
{
PutHeader
(
"Confirm: Remove All Explicit Members?"
);
my
(
$gid
,
$chgs
)
=
doGroupChanges
();
print
"<br><br>\n"
;
if
(
$chgs
)
{
print
"Group updated, please confirm removal:<p>\n"
;
}
confirmRemove
(
0
,
$gid
);
PutFooter
();
exit
;
}
elsif
(
$::FORM
{
remove_explicit_members_regexp
})
{
PutHeader
(
"Confirm: Remove Explicit Members in the Regular Expression?"
);
my
(
$gid
,
$chgs
,
$rexp
)
=
doGroupChanges
();
print
"<br><br>\n"
;
if
(
$chgs
)
{
print
"Group updated, please confirm removal:<p>\n"
;
}
confirmRemove
(
1
,
$gid
,
$rexp
);
PutFooter
();
exit
;
}
# if we got this far, the admin doesn't want to convert, so just save their changes
PutHeader
(
"Updating group hierarchy"
);
my
(
$gid
,
$chgs
)
=
doGroupChanges
();
if
(
!
$chgs
)
{
print
"You didn't change anything!<BR>\n"
;
print
"If you really meant it, hit the <B>Back</B> button and try again.<p>\n"
;
}
else
{
print
"Done.<p>\n"
;
}
PutTrailer
(
"back to the <a href=\"editgroups.cgi\">group list</a>"
);
exit
;
}
if
((
$action
eq
'remove_all_regexp'
)
||
(
$action
eq
'remove_all'
))
{
# remove all explicit users from the group with gid $::FORM{group}
# that match the regexp stored in the db for that group
# or all of them period
my
$dbh
=
Bugzilla
->
dbh
;
my
$gid
=
$::FORM
{
group
};
my
$sth
=
$dbh
->
prepare
(
"SELECT name, userregexp FROM groups
WHERE id = ?"
);
$sth
->
execute
(
$gid
);
my
(
$name
,
$regexp
)
=
$sth
->
fetchrow_array
();
if
(
$action
eq
'remove_all_regexp'
)
{
PutHeader
(
"Removing All Explicit Group Memberships Matching "
.
"Group RegExp from \'"
.
html_quote
(
$name
)
.
"\'"
);
}
else
{
PutHeader
(
"Removing All Explicit Group Memberships from \'"
.
html_quote
(
$name
)
.
"\'"
);
}
$dbh
->
do
(
"LOCK TABLES
groups WRITE,
profiles READ,
user_group_map WRITE"
);
$sth
=
$dbh
->
prepare
(
"SELECT user_group_map.user_id, profiles.login_name
FROM user_group_map, profiles
WHERE user_group_map.user_id = profiles.userid
AND user_group_map.group_id = ?
AND isderived = 0
AND isbless = 0"
);
$sth
->
execute
(
$gid
);
my
$sth2
=
$dbh
->
prepare
(
"DELETE FROM user_group_map
WHERE user_id = ?
AND isbless = 0
AND group_id = ?"
);
if
(
$action
eq
'remove_all_regexp'
)
{
print
"<br><b>Removing explicit memberships of users matching \'"
.
html_quote
(
$regexp
)
.
"\'...</b><br>\n"
;
}
else
{
print
"<br><b>Removing explicit membership</b><br>\n"
;
}
while
(
my
(
$userid
,
$userlogin
)
=
$sth
->
fetchrow_array
()
)
{
if
(((
$regexp
=~
/\S/
)
&&
(
$userlogin
=~
m/$regexp/i
))
||
(
$action
eq
'remove_all'
))
{
$sth2
->
execute
(
$userid
,
$gid
);
print
html_quote
(
$userlogin
)
.
" removed<br>\n"
;
}
}
print
"<br><b>Done</b><br>"
;
$sth
=
$dbh
->
prepare
(
"UPDATE groups
SET last_changed = NOW()
WHERE id = ?"
);
$sth
->
execute
(
$gid
);
$dbh
->
do
(
"UNLOCK TABLES"
);
PutTrailer
(
"back to the <a href=\"editgroups.cgi\">group list</a>"
);
exit
;
}
#
# No valid action found
#
PutHeader
(
"Error"
);
print
"I don't have a clue what you want.<BR>\n"
;
foreach
(
sort
keys
%::
FORM
)
{
print
"$_: $::FORM{$_}<BR>\n"
;
}
PutTrailer
(
"<a href=editgroups.cgi>Try the group list</a>"
);
# confirm if the user wants to remove the explicit users
sub
confirmRemove
{
my
(
$remove_regexp_only
,
$group
,
$regexp
)
=
@_
;
if
(
!
$remove_regexp_only
)
{
print
"This option will remove "
;
print
"all explicitly defined users "
;
}
elsif
(
$regexp
=~
/\S/
)
{
print
"This option will remove "
;
print
"all users included in the regular expression: "
.
html_quote
(
$regexp
)
.
" "
;
}
else
{
print
"<b>There is no regular expression defined.</b>\n"
;
print
"No users will be removed<p>\n"
;
print
"<a href=\"editgroups.cgi\">return to the Edit Groups page</a>\n"
;
return
;
}
print
"from group $::FORM{name}.<p>\n"
;
print
"Generally, you will only need to do this when upgrading groups "
;
print
"created with Bugzilla versions 2.16 and prior. Use this option "
;
print
"with <b>extreme care</b> and consult the Bugzilla Guide for "
;
print
"further information.<p>\n"
;
print
"<FORM METHOD=POST ACTION=editgroups.cgi>\n"
;
print
"<INPUT TYPE=HIDDEN NAME=\"group\" VALUE=$group>\n"
;
if
(
$remove_regexp_only
)
{
print
"<INPUT TYPE=HIDDEN NAME=\"action\" VALUE=\"remove_all_regexp\">\n"
;
}
else
{
print
"<INPUT TYPE=HIDDEN NAME=\"action\" VALUE=\"remove_all\">\n"
;
}
print
"<INPUT NAME=\"confirm\" TYPE=SUBMIT VALUE=\"Confirm\">\n"
;
print
"<p>Or <a href=\"editgroups.cgi\">return to the Edit Groups page</a>\n"
;
print
"</FORM>"
;
}
# Helper sub to handle the making of changes to a group
sub
doGroupChanges
{
my
$gid
=
trim
(
$::FORM
{
group
}
||
''
);
unless
(
$gid
)
{
ShowError
(
"No group specified.<BR>"
.
...
...
@@ -622,28 +794,10 @@ if ($action eq 'postchanges') {
}
}
if
(
!
$chgs
)
{
print
"You didn't change anything!<BR>\n"
;
print
"If you really meant it, hit the <B>Back</B> button and try again.<p>\n"
;
}
else
{
if
(
$chgs
)
{
# mark the changes
SendSQL
(
"UPDATE groups SET last_changed = NOW() WHERE id = $gid"
);
print
"Done.<p>\n"
;
}
PutTrailer
(
"back to the <a href=\"editgroups.cgi\">group list</a>"
);
exit
;
}
#
# No valid action found
#
PutHeader
(
"Error"
);
print
"I don't have a clue what you want.<BR>\n"
;
foreach
(
sort
keys
%::
FORM
)
{
print
"$_: $::FORM{$_}<BR>\n"
;
return
$gid
,
$chgs
,
$::FORM
{
"rexp"
};
}
PutTrailer
(
"<a href=editgroups.cgi>Try the group list</a>"
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment