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
1f361a67
Commit
1f361a67
authored
Aug 03, 2006
by
mkanat%bugzilla.org
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 289357: Move AddFDef from checksetup into Field.pm
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=bkor, a=myk
parent
b06a56e9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
29 deletions
+54
-29
Field.pm
Bugzilla/Field.pm
+52
-28
checksetup.pl
checksetup.pl
+0
-0
customfield.pl
customfield.pl
+2
-1
No files found.
Bugzilla/Field.pm
View file @
1f361a67
...
...
@@ -42,9 +42,9 @@ Bugzilla::Field - a particular piece of information about bugs
# so both methods take the same arguments.
print Dumper(Bugzilla::Field->match({ obsolete => 1, custom => 1 }));
# Create
a custom field
.
my $field = Bugzilla::Field::create
("hilarity", "Hilarity");
print $field->description . " is a custom field\n"
;
# Create
or update a custom field or field definition
.
my $field = Bugzilla::Field::create
_or_update(
{name => 'hilarity', desc => 'Hilarity', custom => 1})
;
# Instantiate a Field object for an existing field.
my $field = new Bugzilla::Field({name => 'qacontact_accessible'});
...
...
@@ -93,6 +93,13 @@ use constant DB_COLUMNS => (
'enter_bug'
,
);
# How various field types translate into SQL data definitions.
use
constant
SQL_DEFINITIONS
=>
{
# Using commas because these are constants and they shouldn't
# be auto-quoted by the "=>" operator.
FIELD_TYPE_FREETEXT
,
{
TYPE
=>
'varchar(255)'
},
};
=pod
=head2 Instance Properties
...
...
@@ -176,44 +183,61 @@ sub enter_bug { return $_[0]->{enter_bug} }
=over
=item C<create
($name, $desc
)>
=item C<create
_or_update({name => $name, desc => $desc, in_new_bugmail => 0, custom => 0}
)>
Description: creates a new custom field.
Description: Creates a new field, or updates one that
already exists with the same name.
Params: C<$name> - string - the name of the field;
C<$desc> - string - the field label to display in the UI.
Params: This function takes named parameters in a hashref:
C<name> - string - The name of the field.
C<desc> - string - The field label to display in the UI.
C<in_new_bugmail> - boolean - Whether this field appears at the
top of the bugmail for a newly-filed bug.
C<custom> - boolean - True if this is a Custom Field. The field
will be added to the C<bugs> table if it does not exist.
Returns: a
field
object.
Returns: a
C<Bugzilla::Field>
object.
=back
=cut
sub
create
{
my
(
$
name
,
$desc
,
$custom
)
=
@_
;
sub
create
_or_update
{
my
(
$
params
)
=
@_
;
# Convert the $custom argument into a DB-compatible value.
$custom
=
$custom
?
1
:
0
;
my
$dbh
=
Bugzilla
->
dbh
;
my
$custom
=
$params
->
{
custom
}
?
1
:
0
;
my
$name
=
$params
->
{
name
};
my
$in_new_bugmail
=
$params
->
{
in_new_bugmail
}
?
1
:
0
;
# Some day we'll allow invocants to specify the sort key.
my
(
$sortkey
)
=
$dbh
->
selectrow_array
(
"SELECT MAX(sortkey) + 1 FROM fielddefs"
);
# Some day we'll allow invocants to specify the field type.
my
$type
=
$custom
?
FIELD_TYPE_FREETEXT
:
FIELD_TYPE_UNKNOWN
;
# Some day we'll require invocants to specify the field type.
my
$type
=
FIELD_TYPE_FREETEXT
;
my
$field
=
new
Bugzilla::
Field
({
name
=>
$name
});
# Create the database column that stores the data for this field.
$dbh
->
bz_add_column
(
"bugs"
,
$name
,
{
TYPE
=>
'varchar(255)'
});
my
$dbh
=
Bugzilla
->
dbh
;
if
(
$field
)
{
# Update the already-existing definition.
$dbh
->
do
(
"UPDATE fielddefs SET description = ?, mailhead = ?
WHERE id = ?"
,
undef
,
$params
->
{
desc
},
$in_new_bugmail
,
$field
->
id
);
}
else
{
# Some day we'll allow invocants to specify the sort key.
my
(
$sortkey
)
=
$dbh
->
selectrow_array
(
"SELECT MAX(sortkey) + 100 FROM fielddefs"
)
||
100
;
# Add the field to the list of fields at this Bugzilla installation.
$dbh
->
do
(
"INSERT INTO fielddefs (name, description, sortkey, type,
custom, mailhead)
VALUES (?, ?, ?, ?, ?, ?)"
,
undef
,
$name
,
$params
->
{
desc
},
$sortkey
,
$type
,
$custom
,
$in_new_bugmail
);
}
# Add the field to the list of fields at this Bugzilla installation.
my
$sth
=
$dbh
->
prepare
(
"INSERT INTO fielddefs (name, description, sortkey, type,
custom, mailhead)
VALUES (?, ?, ?, ?, ?, 1)"
);
$sth
->
execute
(
$name
,
$desc
,
$sortkey
,
$type
,
$custom
);
if
(
!
$dbh
->
bz_column_info
(
'bugs'
,
$name
)
&&
$custom
)
{
# Create the database column that stores the data for this field.
$dbh
->
bz_add_column
(
'bugs'
,
$name
,
SQL_DEFINITIONS
->
{
$type
});
}
return
new
Bugzilla::
Field
({
name
=>
$name
});
}
...
...
checksetup.pl
View file @
1f361a67
This diff is collapsed.
Click to expand it.
customfield.pl
View file @
1f361a67
...
...
@@ -84,5 +84,6 @@ if ( new Bugzilla::Field({name => $name}) ) {
# Create the field.
print
"Creating custom field $name ...\n"
;
my
$field
=
Bugzilla::Field::
create
(
$name
,
$desc
,
1
);
Bugzilla::Field::
create_or_update
(
{
name
=>
$name
,
desc
=>
$desc
,
custom
=>
1
});
print
"Custom field $name created.\n"
;
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