1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>
Bugzilla::Product</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" title="style" type="text/css" href=".././../../../style.css" media="all" >
</head>
<body id="pod">
<p class="backlinktop"><b><a name="___top" href="../index.html" accesskey="1" title="All Documents"><<</a></b></p>
<h1>Bugzilla::Product</h1>
<div class='indexgroup'>
<ul class='indexList indexList1'>
<li class='indexItem indexItem1'><a href='#NAME'>NAME</a>
<li class='indexItem indexItem1'><a href='#SYNOPSIS'>SYNOPSIS</a>
<li class='indexItem indexItem1'><a href='#DESCRIPTION'>DESCRIPTION</a>
<li class='indexItem indexItem1'><a href='#METHODS'>METHODS</a>
<li class='indexItem indexItem1'><a href='#SUBROUTINES'>SUBROUTINES</a>
<li class='indexItem indexItem1'><a href='#SEE_ALSO'>SEE ALSO</a>
</ul>
</div>
<h1><a class='u' href='#___top' title='click to go to top of document'
name="NAME"
>NAME</a></h1>
<p>Bugzilla::Product - Bugzilla product class.</p>
<h1><a class='u' href='#___top' title='click to go to top of document'
name="SYNOPSIS"
>SYNOPSIS</a></h1>
<pre class="code"> use Bugzilla::Product;
my $product = new Bugzilla::Product(1);
my $product = new Bugzilla::Product({ name => 'AcmeProduct' });
my @components = $product->components();
my $groups_controls = $product->group_controls();
my @milestones = $product->milestones();
my @versions = $product->versions();
my $bugcount = $product->bug_count();
my $bug_ids = $product->bug_ids();
my $has_access = $product->user_has_access($user);
my $flag_types = $product->flag_types();
my $classification = $product->classification();
my $id = $product->id;
my $name = $product->name;
my $description = $product->description;
my isactive = $product->is_active;
my $defaultmilestone = $product->default_milestone;
my $classificationid = $product->classification_id;
my $allows_unconfirmed = $product->allows_unconfirmed;</pre>
<h1><a class='u' href='#___top' title='click to go to top of document'
name="DESCRIPTION"
>DESCRIPTION</a></h1>
<p>Product.pm represents a product object. It is an implementation of <a href="../Bugzilla/Object.html" class="podlinkpod"
>Bugzilla::Object</a>, and thus provides all methods that <a href="../Bugzilla/Object.html" class="podlinkpod"
>Bugzilla::Object</a> provides.</p>
<p>The methods that are specific to <code class="code">Bugzilla::Product</code> are listed below.</p>
<h1><a class='u' href='#___top' title='click to go to top of document'
name="METHODS"
>METHODS</a></h1>
<dl>
<dt><a name="components"
><code class="code">components</code></a></dt>
<dd>
<pre class="code"> Description: Returns an array of component objects belonging to
the product.
Params: none.
Returns: An array of Bugzilla::Component object.</pre>
<dt><a name="group_controls()"
><code class="code">group_controls()</code></a></dt>
<dd>
<pre class="code"> Description: Returns a hash (group id as key) with all product
group controls.
Params: $full_data (optional, false by default) - when true,
the number of bugs per group applicable to the product
is also returned. Moreover, bug groups which have no
special settings for the product are also returned.
Returns: A hash with group id as key and hash containing
a Bugzilla::Group object and the properties of group
relative to the product.</pre>
<dt><a name="groups_available"
><code class="code">groups_available</code></a></dt>
<dd>
<p>Tells you what groups are set to Default or Shown for the currently-logged-in user (taking into account both OtherControl and MemberControl). Returns an arrayref of <a href="../Bugzilla/Group.html" class="podlinkpod"
>Bugzilla::Group</a> objects with an extra hash keys set, <code class="code">is_default</code>, which is true if the group is set to Default for the currently-logged-in user.</p>
<dt><a name="groups_mandatory"
><code class="code">groups_mandatory</code></a></dt>
<dd>
<p>Tells you what groups are mandatory for bugs in this product, for the currently-logged-in user. Returns an arrayref of <code class="code">Bugzilla::Group</code> objects.</p>
<dt><a name="group_is_settable"
><code class="code">group_is_settable</code></a></dt>
<dd>
<dl>
<dt><a name="Description"
><b>Description</b></a></dt>
<dd>
<p>Tells you whether or not the currently-logged-in user can set a group on a bug (whether or not they match the MemberControl/OtherControl settings for a group in this product). Groups that are <code class="code">Mandatory</code> for the currently-loggeed-in user are also acceptable since from Bugzilla's perspective, there's no problem with "setting" a Mandatory group on a bug. (In fact, the user <i>must</i> set the Mandatory group on the bug.)</p>
<dt><a name="Params"
><b>Params</b></a></dt>
<dd>
<dl>
<dt><a name="$group_-_Either_a_numeric_group_id_or_a_Bugzilla::Group_object."
><code class="code">$group</code> - Either a numeric group id or a <a href="../Bugzilla/Group.html" class="podlinkpod"
>Bugzilla::Group</a> object.</a></dt>
</dl>
<dt><a name="Returns"
><b>Returns</b></a></dt>
<dd>
<p><code class="code">1</code> if the group is valid in this product, <code class="code">0</code> otherwise.</p>
</dd>
</dl>
<dt><a name="groups_valid"
><code class="code">groups_valid</code></a></dt>
<dd>
<dl>
<dt><a name="Description"
><b>Description</b></a></dt>
<dd>
<p>Returns an arrayref of <a href="../Bugzilla/Group.html" class="podlinkpod"
>Bugzilla::Group</a> objects, representing groups that bugs could validly be restricted to within this product. Used mostly when you need the list of all possible groups that could be set in a product by anybody, disregarding whether or not the groups are active or who the currently logged-in user is.</p>
<p><b>Note</b>: This doesn't check whether or not the current user can add/remove bugs to/from these groups. It just tells you that bugs <i>could be in</i> these groups, in this product.</p>
<dt><a name="Params_(none)"
><b>Params</b> (none)</a></dt>
<dd>
<dt><a name="Returns_An_arrayref_of_Bugzilla::Group_objects."
><b>Returns</b> An arrayref of <a href="../Bugzilla/Group.html" class="podlinkpod"
>Bugzilla::Group</a> objects.</a></dt>
</dl>
<dt><a name="group_is_valid"
><code class="code">group_is_valid</code></a></dt>
<dd>
<p>Returns <code class="code">1</code> if the passed-in <a href="../Bugzilla/Group.html" class="podlinkpod"
>Bugzilla::Group</a> or group id could be set on a bug by <i>anybody</i>, in this product. Even inactive groups are considered valid. (This is a shortcut for searching <a href="#groups_valid" class="podlinkpod"
>"groups_valid"</a> to find out if a group is valid in a particular product.)</p>
<dt><a name="versions"
><code class="code">versions</code></a></dt>
<dd>
<pre class="code"> Description: Returns all valid versions for that product.
Params: none.
Returns: An array of Bugzilla::Version objects.</pre>
<dt><a name="milestones"
><code class="code">milestones</code></a></dt>
<dd>
<pre class="code"> Description: Returns all valid milestones for that product.
Params: none.
Returns: An array of Bugzilla::Milestone objects.</pre>
<dt><a name="bug_count()"
><code class="code">bug_count()</code></a></dt>
<dd>
<pre class="code"> Description: Returns the total of bugs that belong to the product.
Params: none.
Returns: Integer with the number of bugs.</pre>
<dt><a name="bug_ids()"
><code class="code">bug_ids()</code></a></dt>
<dd>
<pre class="code"> Description: Returns the IDs of bugs that belong to the product.
Params: none.
Returns: An array of integer.</pre>
<dt><a name="user_has_access()"
><code class="code">user_has_access()</code></a></dt>
<dd>
<pre class="code"> Description: Tells you whether or not the user is allowed to enter
bugs into this product, based on the C<entry> group
control. To see whether or not a user can actually
enter a bug into a product, use C<$user-&gt;can_enter_product>.
Params: C<$user> - A Bugzilla::User object.
Returns C<1> If this user's groups allow him C<entry> access to
this Product, C<0> otherwise.</pre>
<dt><a name="flag_types()"
><code class="code">flag_types()</code></a></dt>
<dd>
<pre class="code"> Description: Returns flag types available for at least one of
its components.
Params: none.
Returns: Two references to an array of flagtype objects.</pre>
<dt><a name="classification()"
><code class="code">classification()</code></a></dt>
<dd>
<pre class="code"> Description: Returns the classification the product belongs to.
Params: none.
Returns: A Bugzilla::Classification object.</pre>
</dd>
</dl>
<h1><a class='u' href='#___top' title='click to go to top of document'
name="SUBROUTINES"
>SUBROUTINES</a></h1>
<dl>
<dt><a name="preload"
><code class="code">preload</code></a></dt>
<dd>
<p>When passed an arrayref of <code class="code">Bugzilla::Product</code> objects, preloads their <a href="#milestones" class="podlinkpod"
>"milestones"</a>, <a href="#components" class="podlinkpod"
>"components"</a>, and <a href="#versions" class="podlinkpod"
>"versions"</a>, which is much faster than calling those accessors on every item in the array individually.</p>
<p>If the 2nd argument passed to <code class="code">preload</code> is true, flag types for these products and their components are also preloaded.</p>
<p>This function is not exported, so must be called like <code class="code">Bugzilla::Product::preload($products)</code>.</p>
</dd>
</dl>
<h1><a class='u' href='#___top' title='click to go to top of document'
name="SEE_ALSO"
>SEE ALSO</a></h1>
<p><a href="../Bugzilla/Object.html" class="podlinkpod"
>Bugzilla::Object</a></p>
<p class="backlinkbottom"><b><a name="___bottom" href="../index.html" title="All Documents"><<</a></b></p>
<!-- end doc -->
</body></html>
|