#!/usr/bin/perl -w
my
$o_pb
= Perlbug::Base->new;
my
$o_test
= Perlbug::Test->new(
$o_pb
);
Hide Show 72 lines of Pod
my
%arg
= (
'd'
=> 0,
'f'
=>
'^\w+$'
,
'F'
=> 0,
'h'
=> 0,
'm'
=> 101,
'o'
=>
'^\w+$'
,
'q'
=> 0,
't'
=> 0,
'u'
=>
'perlbug'
,
'x'
=>
'^\w+$'
,
);
getopts(
'd:f:Fhi:m:o:qtu:x:'
, \
%arg
);
use
vars (
qw($d $h $f $F $m $o $q $t $u $x)
);
foreach
my
$switch
(
keys
%arg
) {
no
strict
'refs'
;
$$switch
=
$arg
{
$switch
};
}
if
(
$h
) {
exec
"perldoc $0"
;
}
Hide Show 50 lines of Pod
my
%TEMPLATES
= (
'A'
=> {
'default'
=> {
'flag'
=> {
'description'
=>
'ASCII flag template'
,
'wrap'
=>
'75'
,
'repeat'
=> 1,
'header'
=>
"\n"
,
'body'
=>
q#
<{name}>
<{key}>id: <{id4key}> Created: <{created}> Modified: <{created}>
Bug ids: <{bug_count}> <{bug_ids}>
#
,
},
'mail'
=> {
'description'
=>
'ASCII mail template'
,
'wrap'
=>
'75'
,
'repeat'
=> 1,
'header'
=>
"\n"
,
'body'
=>
q#
<{key}>id: <{id4key}> Created: <{created}> Modified: <{created}>
Subject: <{subject}>
Source: <{sourceaddr}>
Bug ids: <{bug_count}> <{bug_ids}>
Header:
<{header}>
Body:
<{body}>
#
,
},
},
'object'
=> {
'address'
=> {
'description'
=>
'ASCII address template'
,
'repeat'
=> 1,
'header'
=>
"\n"
,
'body'
=>
q#
Address: <{name}>
Addressid: <{addressid}5> Bug count: <{bug_count}> ids: <{bug_ids}>
Created: <{created}> Modified: <{created}>
#
,
},
'bug'
=> {
'description'
=>
'ASCII bug template'
,
'repeat'
=> 1,
'header'
=>
"\n"
,
'body'
=>
q#
Bug: <{bugid}15>
Subject: <{subject}>
From: <{sourceaddr}>
Created: <{created}> Modified: <{created}>
Status: <{status_names}15 > Severity: <{severity_names}>
OS names: <{osname_names}>
Group: <{group_names}>
Version: <{version_names}15> Fixed in: <{fixed_names}>
Message ids: <{message_count}5> <{message_ids}>
Patch ids: <{patch_count} 5> <{patch_ids}>
Test ids: <{test_count} 5> <{test_ids}>
Note ids: <{note_count} 5> <{note_ids}>
Change ids: <{change_count} 5> <{change_names}>
Parent ids: <{parent_count} 5> <{parent_ids}>
Child ids: <{child_count} 5> <{child_ids}>
Address ids: <{address_count}5> <{address_names}>
Header:
<{header}>
Body:
<{body}>
#
,
},
'group'
=> {
'description'
=>
'ascii group template'
,
'repeat'
=> 1,
'header'
=>
"\n"
,
'body'
=>
q#
Group: <{name}>
Groupid: <{groupid}> Created: <{created}> Modified: <{created}>
Description: <{description}>
Address ids: <{address_count}5> <{address_ids}>
User ids: <{user_count}5 > <{user_ids}>
Bug ids: <{bug_count} 5 > <{bug_ids}>
#
,
},
'user'
=> {
'description'
=>
'ascii user template'
,
'repeat'
=> 1,
'header'
=>
"\n"
,
'body'
=>
q#
Userid: <{userid}15> Name: <{name}> Active: <{active}>
Created: <{created}> Modified: <{created}>
Address: <{address}>
Match address: <{match_address}>
Password: <{password}>
Groups: <{group_count} 5> <{group_ids}>
Bug ids: <{bug_count} 5> <{bug_ids}>
#
,
},
},
},
'a'
=> {
'default'
=> {
'flag'
=> {
'repeat'
=> 1,
'header'
=>
"\n"
,
'body'
=>
q#
<{key}>id <{id4key}>
Created: <{created}> Modified: <{created}>
Bug ids: <{bug_count}>
#
,
},
'mail'
=> {
'repeat'
=> 1,
'header'
=>
"\n"
,
'body'
=>
q#
<{key}>id <{id4key}>
Created: <{created}> Modified: <{created}>
Subject: <{subject}>
Source: <{sourceaddr}>
Bug ids: <{bug_count}>
#
,
},
},
'object'
=> {
'address'
=> {
'repeat'
=> 1,
'header'
=>
"\n"
,
'body'
=>
q#
Address: <{name}>
Addressid: <{addressid}5> Bug count: <{bug_count}>
Created: <{created}> Modified: <{created}>
#
,
},
'bug'
=> {
'header'
=>
"\n"
,
'repeat'
=> 1,
'body'
=>
q#
Bug: <{bugid}15>
Subject: <{subject}>
From: <{sourceaddr}>
Created: <{created}> Modified: <{created}>
Status: <{status_names}15 > Severity: <{severity_names}>
OS names: <{osname_names}>
Group: <{group_names}>
Version: <{version_names}15> Fixed in: <{fixed_names}>
Message ids: <{message_count}5>
Patch ids: <{patch_count} 5>
Test ids: <{test_count} 5>
Note ids: <{note_count} 5>
Change ids: <{change_count} 5>
Parent ids: <{parent_count} 5>
Child ids: <{child_count} 5>
Address ids: <{address_count}5>
#
,
},
'group'
=> {
'description'
=>
'ascii group template'
,
'repeat'
=> 1,
'header'
=>
"\n"
,
'body'
=>
q#
Groupid: <{groupid}5 > Name: <{name}>
Created: <{created}> Modified: <{created}>
Description: <{description}>
Address ids: <{address_count}5> User ids: <{user_count}5 >
Bug ids: <{bug_count} 5 >
#
,
},
'user'
=> {
'description'
=>
'ascii user template'
,
'repeat'
=> 1,
'header'
=>
"\n"
,
'body'
=>
q#
Userid: <{userid}15> Name: <{name}> Active: <{active}>
Created: <{created}> Modified: <{created}>
Address: <{address}>
Groups: <{group_count} 5> <{group_names}>
Bug ids: <{bug_count} 5>
#
,
},
},
},
'H'
=> {
'default'
=> {
'flag'
=> {
'repeat'
=> 1,
'header'
=>
q#
<tr>
<td> :</td><td><b><{key}> id</b></td><td><b>Bug ids</b></td>
<td><b>Created</b></td><td><b>Modified</b></td>
</tr>
#
,
'body'
=>
q#
<tr>
<td> <{ifadmin}> <{select}> </{ifadmin}> </td>,
<td><{id4key}>: <{name}></td>
<td>Bug ids(<{bug_count}>) <{bug_names}></td>
<td>Created: <{created}></td>
<td>Modified: <{created}></td>
</tr>
<tr>
<{bug_ids}>
</tr>
<{ifadmin}>
<tr><td colspan=4><{options}></td></tr>
</{ifadmin}>
#
,
},
'mail'
=> {
'description'
=>
'HTML mail template'
,
'repeat'
=> 1,
'header'
=>
q#
#
,
'footer'
=>
q#
#
,
'body'
=>
q#
<table border=1 width=100%>
<tr><td><b> <{ifadmin}> <{select}> </{ifadmin}> <{key}> id</b></td><td><{id4key}></td>
<td><b>Created</b></td><td><{created}></td></tr>
<tr><td><b>Bugids</b>(<{bug_count}>)</td><td><{bug_ids}></td>
<td><b>Modified</b></td><td><{modified}></td></tr>
<tr><td><b>Subject</b></td><td colspan=3><{subject}></td></tr>
<tr><td><b>Source</b></td><td colspan=3><{sourceaddr}></td></tr>
<tr><td colspan=4><{body}></td></tr>
<{ifadmin}>
<tr><td colspan=4><{options}></td></tr>
</{ifadmin}>
</table>
#
,
},
},
'object'
=> {
'bug'
=> {
'description'
=>
'HTML mail template'
,
'repeat'
=> 1,
'header'
=>
q#
<table border=1 width=100%>
#
,
'footer'
=>
q#
</table>
#
,
'body'
=>
q#
<table border=1 width=100%>
<tr><td colspan=2><b> <{ifadmin}> <{select}> </{ifadmin}>
Bug id</b>: <{bugid}></td>
<td><b>Change ids</b></td><td><{change_names}></td></tr>
<tr><td><b>Status</b></td><td><{status_names}></td>
<td><b>Severity</b></td><td><{severity_names}></td></tr>
<tr><td><b>Created</b></td><td><{created}></td>
<td><b>Modified</b></td><td><{modified}></td></tr>
<tr><td><b>Groups</b></td><td><{group_names}></td>
<td><b>Osname</b></td><td><{osname_names}></td></tr>
<tr><td><b>Version</b></td><td><{version_names}></td>
<td><b>Fixed in</b></td><td><{fixed_names}></td></tr>
<tr><td><b>Subject</b></td><td colspan=3><{subject}></td></tr>
<tr><td><b>Source</b></td><td colspan=3><{sourceaddr}></td></tr>
<tr><td><b>Admins</b>:</td><td colspan=3><{user_names}></td></tr>
<tr><td><b>Message ids</b>:</td><td><{message_ids}></td>
<td><b>Note ids</b></td><td><{note_ids}></td></tr>
<tr><td><b>Patch ids</b>:</td><td><{patch_ids}></td>
<td><b>Test ids</b></td><td><{test_ids}></td></tr>
<tr><td><b>Parent ids</b>:</td><td><{parent_ids}></td>
<td><b>Child ids</b></td><td><{child_ids}></td></tr>
<{ifadmin}>
<tr><td colspan=4>
<table><tr>
<td><b>Note </b>:<br><{new_note}></td>
<td><b>Patch</b>:<br><{new_patch}></td>
<td><b>Test </b>:<br><{new_test}></td>
</tr></table>
</td></tr>
</{ifadmin}>
</table>
<table border=1>
<tr><td><{body}></td></tr>
<tr><td> </td></tr>
<{ifadmin}>
<tr><td colspan=4><{options}></td></tr>
</{ifadmin}>
</table>
#
,
},
'group'
=> {
'description'
=>
'HTML group template'
,
'repeat'
=> 1,
'header'
=>
q#
<table border=1 width=100%>
#
,
'footer'
=>
q#
<tr><td colspan=4> </td></tr>
</table>
#
,
'body'
=>
q#
<tr><td><b> <{ifadmin}> <{select}> </{ifadmin}>
Group id</b></td><td><{groupid}></td>
<td><b>Created</b></td><td><{created}></td></tr>
<tr><td><b>Name</b></td><td><{name}></td>
<td><b>Modified</b></td><td><{modified}></td></tr>
<tr><td><b>Description</b></td><td colspan=3><{description}></td></tr>
<tr><td><b>Bugids</b>(<{bug_count}>)</td><td><{bug_ids}></td>
<td><b>Userids</b>(<{user_count}>)</td><td><{user_names}></td></tr>
<{ifadmin}>
<tr><td colspan=4><{options}></td></tr>
</{ifadmin}>
#
,
},
'user'
=> {
'description'
=>
'HTML user template'
,
'repeat'
=> 1,
'header'
=>
qq#<table border=1 width=100%>\n#
,
'footer'
=>
q#
<tr><td colspan=4> </td></tr>
</table>
#
,
'body'
=>
q#
<tr><td><b>
<{ifadmin}> <{select}> </{ifadmin}>
User id</b></td><td><{userid}></td>
<td><b>Created</b></td><td><{created}></td></tr>
<tr><td><b>Name</b></td><td><{name}></td>
<td><b>Modified</b></td><td><{modified}></td></tr>
<tr><td><b>Address</b></td><td><{address}></td>
<td><b>Match addresss</b></td><td><{match_address}></td></tr>
<tr><td><b>Bug ids</b>(<{bug_count}>)</td><td><{bug_ids}></td>
<td><b>Groups</b>(<{group_count}>)</td><td><{group_names}></td></tr>
<{ifadmin}>
<tr><td><b>Password</b></td><td><{password}></td>
<td><b>Active</b></td><td><{active}></td></tr>
<tr><td colspan=4><{options}></td></tr>
</{ifadmin}>
#
,
},
},
},
'h'
=> {
'default'
=> {
'mail'
=> {
'description'
=>
'html mail template'
,
'header'
=>
'<tr><td>'
.
join
(
'</td><td>'
, (
'<b> </b>'
,
'<b><{key}>id</b>'
,
'<b>Bugids</b>'
,
'<b>Subject</b>'
,
'<b>Source</b>'
,
'<b>Created</b>'
,
'<b>Modified</b>'
,
)).
"</td></tr>\n"
,
'repeat'
=> 10,
'footer'
=>
''
,
'body'
=>
'<tr valign="top"><td>'
.
join
(
'</td><td>'
, (
'<{ifadmin}><{select}></{ifadmin}> '
,
'<{id4key}> '
,
'<{bug_ids}> '
,
'<{subject}> '
,
'<{source}> '
,
'<{created}> '
,
'<{modified}> '
,
)).
"</td></tr>\n"
,
},
'flag'
=> {
'description'
=>
'html flag template'
,
'repeat'
=> 10,
'header'
=>
q#
<tr>
<td><b><{key}></b></td><td><b>Bug ids</b></td><td><b>Created</b></td><td><b>Modified</b></td>
</tr>
#
,
'body'
=>
q#
<tr valign="top">
<td><{id4key}>: <{name}></td>
<td>Bug ids: <{bug_count}></td>
<td>Created: <{created}></td><td>Modified: <{created}></td>
</tr>
#
,
},
},
'object'
=> {
'bug'
=> {
'description'
=>
'html bug template'
,
'repeat'
=> 10,
'footer'
=>
''
,
'header'
=>
'<tr><td>'
.
join
(
'</td><td>'
, (
'<b> </b>'
,
'<b>Bugid</b>'
,
'<b>Status</b>'
,
'<b>version</b>'
,
'<b>Group</b>'
,
'<b>Severity</b>'
,
'<b>Change ids</b>'
,
'<b>Note ids</b>'
,
'<b>Patch ids</b>'
,
'<b>Test ids</b>'
,
'<b>User ids</b>'
,
'<b>Subject</b>'
,
'<b>Osname</b>'
,
'<b>Fixed in</b>'
,
)).
"</td></tr>\n"
,
'body'
=>
'<tr valign="top"><td>'
.
join
(
'</td><td>'
, (
'<{ifadmin}><{select}></{ifadmin}> '
,
'<{bugid}> '
,
'<{status_names}> '
,
'<{version_names}> '
,
'<{group_names}> '
,
'<{severity_names}> '
,
'<{change_count}> '
,
'<{note_count}> '
,
'<{patch_count}> '
,
'<{test_count}> '
,
'<{user_count}> '
,
'<{subject}> '
,
'<{osname_names}> '
,
'<{fixed_names}> '
,
)).
"</td></tr>\n"
,
},
'group'
=> {
'description'
=>
'html group template'
,
'repeat'
=> 10,
'header'
=>
q#
<tr>
<td><b> </b></td>
<td><b>groupid</b></td>
<td><b>name</b></td>
<td><b>userids</b></td>
<td><b>bugids</b></td>
<td><b>description</b></td>
<td><b>created</b></td>
<td><b>modified</b></td>
</tr>
#
,
'body'
=>
q#
<tr>
<td> <{ifadmin}> <{select}> </{ifadmin}> </td>
<td><{groupid}> </td>
<td><{name}> </td>
<td><{user_count}> </td>
<td><{bug_count}> </td>
<td><{description}> </td>
<td><{created}> </td>
<td><{modified}> </td>
</tr>
#
,
},
'user'
=> {
'description'
=>
'html user template'
,
'repeat'
=> 10,
'header'
=>
q#
<tr>
<td><b> </b></td>
<td><b>Userid</b></td>
<td><b>Name</b></td>
<td><b>Bugids</b></td>
<td><b>Groups</b></td>
<td><b>Address</b></td>
<td><b>Created</b></td>
<td><b>Modified</b></td>
</tr>
#
,
'body'
=>
q#
<tr>
<td> <{ifadmin}> <{select}> </{ifadmin}> </td>
<td><{userid}> </td>
<td><{name}> </td>
<td><{bug_count}> </td>
<td><{group_names}> </td>
<td><{address}> </td>
<td><{created}> </td>
<td><{modified}> </td>
</tr>
<tr><td colspan=7> </td></tr>
#
,
},
},
},
'I'
=> {
'default'
=> {
'flag'
=> {
'description'
=>
'INDEX flag template'
,
'repeat'
=> 25,
'header'
=>
qq#<b><{key}></b> ids:<br>\n#
,
'body'
=>
qq#<{id4key}><br>\n#
,
},
'item'
=> {
'description'
=>
'INDEX item template'
,
'repeat'
=> 25,
'header'
=>
qq#<b><{key}></b> ids:<br>\n#
,
'body'
=>
qq#<{id4key}><br>\n#
,
},
'mail'
=> {
'description'
=>
'INDEX mail template'
,
'repeat'
=> 25,
'header'
=>
qq#<b><{key}></b> ids:<br>\n#
,
'body'
=>
qq#<{id4key}><br>\n#
,
},
},
},
'i'
=> {
'default'
=> {
'flag'
=> {
'description'
=>
'index flag template'
,
'repeat'
=> 25,
'header'
=>
qq#<{key}> ids:\n#
,
'body'
=>
qq#<{id4key}>\n#
,
},
'item'
=> {
'description'
=>
'index item template'
,
'repeat'
=> 25,
'header'
=>
qq#<{key}> ids:\n#
,
'body'
=>
qq#<{id4key}>\n#
,
},
'mail'
=> {
'description'
=>
'index mail template'
,
'repeat'
=> 25,
'header'
=>
qq#<{key}> ids:\n#
,
'body'
=>
qq#<{id4key}>\n#
,
},
},
},
'L'
=> {
'default'
=> {
'flag'
=> {
'description'
=>
'LIST flag template'
,
'repeat'
=> 10,
'header'
=>
'<tr><td>'
.
join
(
'</td><td>'
, (
'<b> </b>'
,
'<b><{key}> ids</b>'
,
'<b>Bug ids</b>'
,
'<b>Created</b>'
,
'<b>modified</b>'
,
)).
"</td></tr>\n"
,
'body'
=>
'<tr><td>'
.
join
(
'</td><td>'
, (
'<{ifadmin}><{select}></{ifadmin}>'
,
'<{id4key}>'
,
'<{bug_count}>'
,
'<{created}>'
,
'<{modified}>'
,
)).
"</td></tr>\n"
,
},
'item'
=> {
'description'
=>
'LIST item template'
,
'repeat'
=> 10,
'header'
=>
'<tr><td>'
.
join
(
'</td><td>'
, (
'<b> </b>'
,
'<b><{key}> ids</b>'
,
'<b>Bug ids</b>'
,
'<b>created</b>'
,
'<b>modified</b>'
,
)).
"</td></tr>\n"
,
'body'
=>
'<tr><td>'
.
join
(
'</td><td>'
, (
'<{ifadmin}><{select}></{ifadmin}>'
,
'<{id4key}>'
,
'<{bug_count}>'
,
'<{created}>'
,
'<{modified}>'
,
)).
"</td></tr>\n"
,
},
'mail'
=> {
'description'
=>
'LIST mail template'
,
'repeat'
=> 10,
'header'
=>
'<tr><td>'
.
join
(
'</td><td>'
, (
'<b> </b>'
,
'<b><{key}> ids</b>'
,
'<b>Bug ids</b>'
,
'<b>Subject</b>'
,
)).
"</td></tr>\n"
,
'body'
=>
'<tr><td>'
.
join
(
'</td><td>'
, (
'<{ifadmin}><{select}></{ifadmin}>'
,
'<{id4key}>'
,
'<{bug_count}>'
,
'<{subject}>'
,
)).
"</td></tr>\n"
,
},
},
'object'
=> {
'bug'
=> {
'description'
=>
'LIST bug template'
,
'header'
=>
'<tr><td>'
.
join
(
'</td><td>'
, (
'<b> </b>'
,
'<b>bugid</b>'
,
'<b>status</b>'
,
'<b>version</b>'
,
'<b>group</b>'
,
'<b>severity</b>'
,
'<b>note ids</b>'
,
'<b>patch ids</b>'
,
'<b>test ids</b>'
,
'<b>user ids</b>'
,
'<b>subject</b>'
,
'<b>osname</b>'
,
)).
"</td></tr>\n"
,
'repeat'
=> 10,
'body'
=>
'<tr><td>'
.
join
(
'</td><td>'
, (
'<{ifadmin}><{select}></{ifadmin}>'
,
'<{bugid}> '
,
'<{status_names}> '
,
'<{version_names}> '
,
'<{group_names}> '
,
'<{severity_names}> '
,
'<{note_count}> '
,
'<{patch_count}> '
,
'<{test_count}> '
,
'<{user_count}> '
,
'<{subject}> '
,
'<{osname_names}> '
,
)).
"</td></tr>\n"
,
},
},
},
'l'
=> {
'default'
=> {
'flag'
=> {
'description'
=>
'list flag template'
,
'repeat'
=> 10,
'header'
=>
qq#<{key}>:\n#
,
'body'
=>
q#<{id4key}3> <{name}> bugids: <{bug_count}5> - Created: <{created}>
#
,
},
'item'
=> {
'description'
=>
'list item template'
,
'repeat'
=> 10,
'header'
=>
qq#<{key}>:\n#
,
'body'
=>
q#<{id4key}3> <{name}> bugids: <{bug_count}5> - Created: <{created}>
#
,
},
'mail'
=> {
'description'
=>
'list mail template'
,
'repeat'
=> 10,
'header'
=>
qq#<{key}>:\n#
,
'body'
=>
q#<{id4key}3> bugids: <{bug_count}5> - Subject: <{subject}>
#
,
},
},
'object'
=> {
'bug'
=> {
'description'
=>
'list bug template'
,
'repeat'
=> 10,
'header'
=>
q#bugid messageids subject
#
,
'body'
=>
q#<{bugid}13> <{message_count}10> <{subject}>
#
,
},
'group'
=> {
'description'
=>
'list group template'
,
'repeat'
=> 10,
'header'
=>
q#groupid name bugs description
#
,
'body'
=>
q#<{groupid}10> <{name}15> <{bug_count}7> <{description}>
#
,
},
'user'
=> {
'description'
=>
'list user template'
,
'repeat'
=> 10,
'header'
=>
q#userid name bugs address
#
,
'body'
=>
q#<{userid}10> <{name}25> <{bug_count}7> <{address}>
#
,
},
},
},
);
my
$err
= 0;
my
$test
= 0;
my
$i_inst
= 0;
my
@oids
= ();
my
$i_wanted
=
scalar
(
keys
%TEMPLATES
);
plan(
'tests'
=>
$i_wanted
);
FORMAT:
foreach
my
$format
(
sort
keys
%TEMPLATES
) {
my
$h_format
=
$TEMPLATES
{
$format
};
next
FORMAT
unless
ref
(
$h_format
) eq
'HASH'
;
$test
++;
next
FORMAT
unless
$format
=~ /
$f
/;
output(
"[$f] -> format($format)"
);
DEFOBJ:
foreach
my
$defobj
(
sort
keys
%{
$h_format
}) {
my
$h_defobj
=
$$h_format
{
$defobj
};
next
DEFOBJ
unless
ref
(
$h_defobj
) eq
'HASH'
;
next
DEFOBJ
unless
$defobj
=~ /
$x
/;
output(
"[$x] --> defobj($defobj)"
);
OBJECTTYPE:
foreach
my
$objtype
(
sort
keys
%{
$h_defobj
}) {
my
$h_temp
=
$$h_defobj
{
$objtype
};
next
OBJECTTYPE
unless
ref
(
$h_temp
) eq
'HASH'
;
next
OBJECTTYPE
unless
$objtype
=~ /
$o
/;
next
OBJECTTYPE
unless
$$h_temp
{
'body'
} =~ /\w+/;
output(
"[$o] ---> objtype($objtype)"
);
my
$i_ok
= 1;
my
$o_tmp
=
$o_pb
->object(
'template'
);
my
$pri
=
$o_tmp
->attr(
'primary_key'
);
my
$oid
=
$o_tmp
->new_id;
my
(
$object
,
$type
) = ((
$defobj
eq
'default'
) ? (
''
,
$objtype
) : (
$objtype
,
''
));
my
%data
= (
'body'
=>
"no template body\n"
,
'description'
=>
"$format $objtype template ($defobj)"
,
'format'
=>
$format
,
'header'
=>
''
,
'repeat'
=>
'0'
,
'footer'
=>
''
,
'wrap'
=>
''
,
'object'
=>
$object
,
'type'
=>
$type
,
%{
$h_temp
},
$pri
=>
$oid
,
);
my
$cond
=
"object = '$object' AND type = '$type' AND "
.
$o_pb
->db->case_sensitive(
'format'
,
$format
);
my
@exists
=
$o_tmp
->col(
'templateid'
,
$cond
);
my
@userids
= ();
if
(
@exists
) {
output(
"existing($cond) records(@exists)!"
);
if
(
$F
) {
my
$exists
=
join
(
"', '"
,
@exists
);
@userids
=
$o_tmp
->rel(
'user'
)->ids(
"templateid IN('$exists')"
);
$i_ok
=
$o_tmp
->
delete
(\
@exists
)->DELETED;
output(
"repeating insert deleted($i_ok)"
);
}
else
{
output(
"not repeating insert! -F ?"
);
$i_ok
= 0;
}
}
$i_ok
=
$o_tmp
->create(\
%data
)->CREATED
if
$i_ok
;
if
(
$i_ok
!= 1) {
output(
"\tfailed to insert $o_tmp($i_ok)!"
);
$err
++;
}
else
{
my
$oid
=
$o_tmp
->oid;
push
(
@oids
,
$oid
);
$i_ok
= 0
unless
$oid
=~ /^\d+$/;
$o_tmp
->
delete
([
$oid
])
if
$t
;
output(
"\tinstalled => oid($oid)"
);
if
(
$i_ok
== 1) {
$i_inst
++;
my
@users
= (
split
(
':'
,
$u
),
@userids
);
my
$i_del
=
$o_tmp
->rel(
'user'
)->
delete
(\
@exists
)->DELETED;
my
$i_rel
=
$o_tmp
->relate({
'user'
=> {
'ids'
=> \
@users
}, });
output(
"\trelated to user(@users)"
);
}
}
ok((
$i_ok
== 1) ?
$test
: 0);
}
}
}
if
(
$err
== 0) {
output(
"...installed $i_inst templates(@oids)"
);
}
else
{
output(
"...failed($err) of $i_wanted types("
.
join
(
', '
,
keys
%TEMPLATES
).
") of template installations ok($i_inst)"
);
}