]> git.imager.perl.org - bse.git/blob - site/util/initial.pl
save the product tier on ordering
[bse.git] / site / util / initial.pl
1 #!/usr/bin/perl -w
2 # Builds an initial database
3 # make sure you set the appropriate values in cgi-bin/modules/Constants.pm
4
5 use strict;
6 use lib '../cgi-bin/modules';
7 use DBI;
8 use BSE::TB::Article;
9 use Constants qw($DSN $UN $PW $CGI_URI $SHOP_URI $ROOT_URI);
10 use BSE::API qw(bse_init bse_cfg);
11 use BSE::Util::SQL qw(now_sqldate now_sqldatetime);
12
13 bse_init("../cgi-bin");
14 my $cfg = bse_cfg();
15 my $securlbase = $cfg->entryVar('site', 'secureurl');
16 my $nowDate = now_sqldate();
17 my $nowDatetime = now_sqldatetime();
18
19 my @prebuilt =
20   (
21    # the section that represent's the index page
22    {
23     id=>1,
24     parentid=>-1,
25     displayOrder=>100, # doesn't matter
26     title=>"My site's title",
27     titleImage=>'',
28     body=>'',
29     imagePos=>'tr',
30     release=>"$nowDate 00:00:00",
31     expire=>'9999-12-31 23:59:59',
32     lastModified=>"$nowDatetime",
33     keyword=>'',
34     template=>'index.tmpl',
35     link=>$ROOT_URI . '',
36     admin=>$CGI_URI.'/admin/admin.pl?id=1',
37     threshold=>10000, # needs to be high
38     summaryLength => 1000, # should be ignored
39     generator=>'BSE::Generate::Article',
40     thumbImage=>'',
41     thumbWidth=>0,
42     thumbHeight=>0,
43     level=>1,
44     listed=>1,
45     flags=>'',
46     lastModifiedBy=>'system',
47     created=>"$nowDatetime",
48     createdBy=>'system',
49     author=>'',
50     pageTitle=>'',
51     force_dynamic => 0,
52     cached_dynamic => 0,
53     inherit_siteuser_rights => 1,
54     metaDescription=>'',
55     metaKeywords=>'',
56     summary => '',
57     menu => 0,
58     titleAlias => '',
59     category => '',
60    },
61    {
62     # the invisible subsection for what's hot
63     id=>2,
64     parentid=>1,
65     displayOrder=>100, # doesn't matter
66     title=>"[index subsection]",
67     titleImage=>'',
68     body=>'',
69     imagePos=>'tr',
70     release=>"$nowDate 00:00:00",
71     expire=>'9999-12-31 23:59:59',
72     lastModified=>"$nowDatetime",
73     keyword=>'',
74     template=>'index2.tmpl',
75     link=>'',
76     admin=>$CGI_URI.'/admin/admin.pl?id=1',
77     threshold=>10000, # needs to be high
78     summaryLength => 1000, # should be ignored
79     generator=>'BSE::Generate::Article',
80     thumbImage=>'',
81     thumbWidth=>0,
82     thumbHeight=>0,
83     level=>2,
84     listed=>2,
85     flags=>'',
86     lastModifiedBy=>'system',
87     created=>"$nowDatetime",
88     createdBy=>'system',
89     author=>'',
90     pageTitle=>'',
91     force_dynamic => 0,
92     cached_dynamic => 0,
93     inherit_siteuser_rights => 1,
94     metaDescription=>'',
95     metaKeywords=>'',
96     summary => '',
97     menu => 0,
98     titleAlias => '',
99     category => '',
100    },
101    {
102     id=>3,
103     parentid=>-1,
104     displayOrder=>10000,
105     title=>'The Shop',
106     titleImage=>'',
107     body=>'You can buy things here',
108     imagePos=>'tr',
109     release=>"$nowDate 00:00:00",
110     expire=>'9999-12-31 23:59:59',
111     lastModified=>"$nowDatetime",
112     keyword=>'shop',
113     template=>'shop_sect.tmpl',
114     link=>$securlbase.$SHOP_URI.'/',
115     admin=>$CGI_URI.'/admin/admin.pl?id=3',
116     threshold=>1000, # ignored
117     summaryLength=>1000, # ignored
118     generator=>'BSE::Generate::Article',
119     thumbImage=>'',
120     thumbWidth=>0,
121     thumbHeight=>0,
122     level=>1,
123     listed=>1,
124     flags=>'',
125     lastModifiedBy=>'system',
126     created=>"$nowDatetime",
127     createdBy=>'system',
128     author=>'',
129     pageTitle=>'',
130     force_dynamic => 0,
131     cached_dynamic => 0,
132     inherit_siteuser_rights => 1,
133     metaDescription=>'',
134     metaKeywords=>'',
135     summary => '',
136     menu => 0,
137     titleAlias => '',
138     category => '',
139    },
140    {
141     id=>4,
142     parentid=>3,
143     displayOrder=>10000,
144     title=>'[shop subsection]',
145     titleImage=>'',
146     body=>'', # don't set this - set the shop body instead
147     imagePos=>'tr',
148     release=>"$nowDate 00:00:00",
149     expire=>'9999-12-31 23:59:59',
150     lastModified=>"$nowDatetime",
151     keyword=>'',
152     template=>'catalog.tmpl',
153     link=>'',
154     admin=>$CGI_URI.'/admin/shopadmin.pl',
155     threshold=>1000, # ignored
156     summaryLength=>1000, #ignored
157     generator=>'BSE::Generate::Catalog',
158     thumbImage=>'',
159     thumbWidth=>0,
160     thumbHeight=>0,
161     level=>2,
162     listed=>2,
163     flags=>'',
164     lastModifiedBy=>'system',
165     created=>"$nowDatetime",
166     createdBy=>'system',
167     author=>'',
168     pageTitle=>'',
169     force_dynamic => 0,
170     cached_dynamic => 0,
171     inherit_siteuser_rights => 1,
172     metaDescription=>'',
173     metaKeywords=>'',
174     summary => '',
175     menu => 0,
176     titleAlias => '',
177     category => '',
178    },
179    {
180     id=>5,
181     parentid=>1,
182     displayOrder=>10000,
183     title=>'[sidebar subsection]',
184     titleImage=>'',
185     body=>'', # don't set this
186     imagePos=>'tr',
187     release=>"$nowDate 00:00:00",
188     expire=>'9999-12-31 23:59:59',
189     lastModified=>"$nowDatetime",
190     keyword=>'',
191     template=>'common/sidebar_section.tmpl',
192     link=>'',
193     admin=>$CGI_URI.'/admin/admin.pl?id=5',
194     threshold=>1000, # ignored
195     summaryLength=>1000, #ignored
196     generator=>'BSE::Generate::Article',
197     thumbImage=>'',
198     thumbWidth=>0,
199     thumbHeight=>0,
200     level=>2,
201     listed=>0,
202     flags=>'',
203     lastModifiedBy=>'system',
204     created=>"$nowDatetime",
205     createdBy=>'system',
206     author=>'',
207     pageTitle=>'',
208     force_dynamic => 0,
209     cached_dynamic => 0,
210     inherit_siteuser_rights => 1,
211     metaDescription=>'',
212     metaKeywords=>'',
213     summary => '',
214     menu => 0,
215     titleAlias => '',
216     category => '',
217    },
218    {
219     id=>6,
220     parentid=>2,
221     displayOrder=>10000,
222     title=>'[formatting guide]',
223     titleImage=>'',
224     body=><<'EOS',
225 anchor[basic] b[Sample basic formatting:]
226 indent[link[/a/1.html|regular link text]
227
228 b[link[/a/1.html|bold link text]]
229
230 i[link[/a/1.html|italic link text]]
231
232 i[b[link[/a/1.html|bold italic link text]]]
233
234 link[http://www.google.com|link to external web site]
235 ]
236
237 align[center|Align center text (NB: American spelling)]
238
239 align[right|Align right text]
240
241 This is how you can make an email link: link[mailto:adriann@devbox.org|email us here!]
242
243 hrcolor[100%|1|#CCCCFF] anchor[font]
244 b[Sample font sizing:] (use numbers 1 - 7 only)
245 indent[fontcolor[7|#FFCC33|This is font size 7 and colour]
246
247 font[6|This is font size 6]
248
249 font[5|This is font size 5]
250
251 font[4|This is font size 4]
252
253 font[3|This is font size 3]
254
255 font[2|This is font size 2]
256
257 font[1|This is font size 1]
258
259 (but they can be plus or minus numbers too)
260
261 font[+2|This is font size +2]
262
263 font[+3|This is font size +3]
264
265 font[-2|This is font size -2]
266
267 font[-3|This is font size -3]
268 ]
269
270 b[HINT:] The default font size for your body text is size 2 and the headings are size 4 Bold.
271
272 hrcolor[100%|1|#CCCCFF] anchor[indent]
273 b[Sample indenting and bullet points:]
274 indent[This is a simple indent and bullet list
275 ** Add a bullet point to this line
276 ** Hit enter and type another
277 ** And now one final bullet
278
279 ## And this is a numbered list
280 ## It's very easy to format lists now
281 ## Now we can count to three]
282
283 hrcolor[100%|1|#CCCCFF]
284 b[The BSE colours:]
285 indent[
286 table[bgcolor=#999999 width=170 cellpadding=1 cellspacing=0 |table[bgcolor=#FFFFCC width=100% cellspacing=0 cellpadding=5
287 |fontcolor[2|#000000|Background - #FFFFCC]
288 ]]
289 table[bgcolor=#FFFF99 width=170 cellpadding=5
290 |fontcolor[2|#000000|Navbar - #FFFF99]
291 ]
292 table[bgcolor=#FFCC33 width=170 cellpadding=5
293 |fontcolor[2|#000000|Sidebar Title - #FFCC33]
294 ]
295 table[bgcolor=#CCCCFF width=170 cellpadding=5
296 |fontcolor[2|#000000|Title Panel - #CCCCFF]
297 ]
298 table[bgcolor=#333399 width=170 cellpadding=5
299 |fontcolor[2|#ffffff|Crumb Panel - #333399]
300 ]
301 table[bgcolor=#999999 width=170 cellpadding=5
302 |fontcolor[2|#000000|Outlines - #999999]
303 ]
304 table[bgcolor=#FFFFFF width=170 cellpadding=5
305 |fontcolor[2|#000000|Item Panel - #FFFFFF]
306 ]
307 ]
308 hrcolor[100%|1|#CCCCFF]
309 b[Sample links to an anchor:]
310 indent[link[#basic|Jump to "Sample basic formatting"]
311 link[#font|Jump to "Sample font sizing"]
312 link[#indent|Jump to "Sample indenting and bullet points"]
313 link[#table|Jump to "Making a table"]]
314
315
316 hrcolor[100%|1|#CCCCFF] anchor[table]
317 b[Making a table:]
318 indent[
319 BSE has special tags to create simple tables, but if you wish to do anything more complicated, we recommend you develop the table in HTML and insert the raw HTML into the body text field.
320
321 table[
322 |a very|simple
323 |table|with 4 cells
324 ]
325
326 table[bgcolor=#CCCCFF width=90% cellpadding=5
327 |align[center|link[/a/1.html|this one]]|is
328 |not so|simple
329 ]
330
331
332 table[width=100% cellpadding=5
333 |b[font[2|Project Management]]|font[2|Project management services for buildings, infrastructure, technology and environment, relocations.]
334 |b[font[2|Events]]|font[2|Event marketing and management, overlay works, venue management.]
335 |b[font[2|Property]]|font[2|Property development management and advisory.] 
336 |b[font[2|Management Consulting]]|font[2|Business improvement, change management, market testing, outsourcing, contracts and relationships, industrial relations, safety, asset management.]
337 |b[font[2|Quality Assurance]]|font[2|Independent 3rd party audits, quality systems, certification, OHS&R programmes.]
338 ]
339 ]
340
341 hrcolor[100%|1|#CCCCFF]
342
343 b[Inserting a plain HTML table:]
344
345 Use an HTML editor to create table like this, then paste the generated HTML code into the text body area as you would any normal text.
346
347 html[ 
348 <table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#999999">
349   <tr>
350     <td>
351       <table width="100%" border="0" cellpadding="5" cellspacing="1">
352         <tr bgcolor="#FFCC33"> 
353           <td width="25%" height="18"> <b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">PROJECT 
354             MANAGEMENT</font></b></td>
355           <td width="25%" height="18"> <b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">MANAGEMENT 
356             CONSULTING</font></b></td>
357           <td width="25%" height="18"> <b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">PROPERTY</font></b></td>
358           <td width="25%" height="18"> <b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">EVENTS</font></b></td>
359         </tr>
360         <tr valign="top" bgcolor="#FFFFCC"> 
361           <td width="25%"> 
362             <ul>
363               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2"> 
364                 Project assessment and initiation</font></li>
365               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Project 
366                 audit</font></li>
367               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Distressed 
368                 project recovery</font></li>
369               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Construction 
370                 advisory</font></li>
371               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Relocation 
372                 management </font></li>
373             </ul>
374           </td>
375           <td width="25%"> 
376             <ul>
377               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Business 
378                 improvement </font></li>
379               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Change 
380                 management</font></li>
381               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Market 
382                 testing and Outsourcing</font></li>
383               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Information 
384                 management</font></li>
385               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Employee 
386                 relations</font></li>
387             </ul>
388           </td>
389           <td width="25%"> 
390             <ul>
391               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Development 
392                 management and packaging</font></li>
393               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Property 
394                 asset strategy</font></li>
395               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Property 
396                 advisory</font></li>
397               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Property 
398                 workout</font></li>
399             </ul>
400           </td>
401           <td width="25%"> 
402             <ul>
403               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Event 
404                 management</font></li>
405               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Sponsorship 
406                 and marketing</font></li>
407               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Event 
408                 overlay works</font></li>
409               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Venue 
410                 management</font></li>
411               <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Special 
412                 event consulting </font></li>
413             </ul>
414           </td>
415         </tr>
416         <tr valign="top" bgcolor="#003366 "> 
417           <td colspan="4" bgcolor="#CCCCFF"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">This 
418             could be a subtitle</font></b> </td>
419         </tr>
420         <tr valign="top" bgcolor="#FFFFCC"> 
421           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Contract 
422             and commercial </font></td>
423           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Asset 
424             management </font></td>
425           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Project 
426             Marketing</font><font face="Verdana, Arial, Helvetica, sans-serif" size="-2"> 
427             Contract </font></td>
428           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Sponsorship</font></td>
429         </tr>
430         <tr valign="top" bgcolor="#FFFFCC"> 
431           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Project 
432             information systems</font></td>
433           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Risk 
434             management</font></td>
435           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Project 
436             Marketing</font></td>
437           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Event 
438             management</font></td>
439         </tr>
440         <tr valign="top" bgcolor="#FFFFCC"> 
441           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Independent 
442             certification</font></td>
443           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Business 
444             advisory</font></td>
445           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Feasibility 
446             financial modelling</font></td>
447           <td width="25%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="-2">Event 
448             overlay works</font></td>
449         </tr>
450       </table>
451     </td>
452   </tr>
453 </table>]
454 EOS
455     imagePos=>'tr',
456     release=>"$nowDate 00:00:00",
457     expire=>'9999-12-31 23:59:59',
458     lastModified=>"$nowDatetime",
459     keyword=>'',
460     template=>'common/default.tmpl',
461     link=>'/a/format_guide.html',
462     admin=>$CGI_URI.'/admin/admin.pl?id=6',
463     threshold=>1000, # ignored
464     summaryLength=>1000, #ignored
465     generator=>'BSE::Generate::Article',
466     thumbImage=>'',
467     thumbWidth=>0,
468     thumbHeight=>0,
469     level=>3,
470     listed=>0,
471     flags=>'',
472     lastModifiedBy=>'system',
473     created=>"$nowDatetime",
474     createdBy=>'system',
475     author=>'',
476     pageTitle=>'',
477     force_dynamic => 0,
478     cached_dynamic => 0,
479     inherit_siteuser_rights => 1,
480     metaDescription=>'',
481     metaKeywords=>'',
482     summary => '',
483     menu => 0,
484     titleAlias => '',
485     category => '',
486    },
487    {
488     id=>7,
489     parentid=>2,
490     displayOrder=>20000,
491     title=>'[rss generation]',
492     titleImage=>'',
493     body=><<'EOS',
494 This body text is not used.
495
496 This article generates RSS as used by some sites.
497 EOS
498     imagePos=>'tr',
499     release=>"$nowDate 00:00:00",
500     expire=>'9999-12-31 23:59:59',
501     lastModified=>"$nowDatetime",
502     keyword=>'',
503     template=>'common/rssbase.tmpl',
504     link=>'/a/site.rdf',
505     admin=>$CGI_URI.'/admin/admin.pl?id=7',
506     threshold=>1000, # ignored
507     summaryLength=>1000, #ignored
508     generator=>'BSE::Generate::Article',
509     thumbImage=>'',
510     thumbWidth=>0,
511     thumbHeight=>0,
512     level=>3,
513     listed=>0,
514     flags=>'',
515     lastModifiedBy=>'system',
516     created=>"$nowDatetime",
517     createdBy=>'system',
518     author=>'',
519     pageTitle=>'',
520     force_dynamic => 0,
521     cached_dynamic => 0,
522     inherit_siteuser_rights => 1,
523     metaDescription=>'',
524     metaKeywords=>'',
525     summary => '',
526     menu => 0,
527     titleAlias => '',
528     category => '',
529    },
530    {
531     id=>8,
532     parentid=>5,
533     displayOrder=>20000,
534     title=>'[sidebar logon]',
535     titleImage=>'',
536     body=><<'EOS',
537 This body text is not used.
538
539 This article puts a registration/login bar in the sidebar
540 EOS
541     imagePos=>'tr',
542     release=>"$nowDate 00:00:00",
543     expire=>'9999-12-31 23:59:59',
544     lastModified=>"$nowDatetime",
545     keyword=>'',
546     template=>'sidebar/logon.tmpl',
547     link=>'',
548     admin=>$CGI_URI.'/admin/admin.pl?id=8',
549     threshold=>1000, # ignored
550     summaryLength=>1000, #ignored
551     generator=>'BSE::Generate::Article',
552     thumbImage=>'',
553     thumbWidth=>0,
554     thumbHeight=>0,
555     level=>3,
556     listed=>1,
557     flags=>'',
558     lastModifiedBy=>'system',
559     created=>"$nowDatetime",
560     createdBy=>'system',
561     author=>'',
562     pageTitle=>'',
563     force_dynamic => 0,
564     cached_dynamic => 0,
565     inherit_siteuser_rights => 1,
566     metaDescription=>'',
567     metaKeywords=>'',
568     summary => '',
569     menu => 0,
570     titleAlias => '',
571     category => '',
572    },
573   );
574
575 my $dbh = BSE::DB->single->dbh
576   or die "Cannot connect to database: ",DBI->errstr;
577 my @columns = BSE::TB::Article->columns;
578 $dbh->do('delete from article')
579   or die "Cannot delete articles: ",$dbh->errstr;
580 $dbh->do('delete from product')
581   or die "Cannot delete from product: ", $dbh->errstr;
582 $dbh->do('delete from image')
583   or die "delete from image: ",$dbh->errstr;
584 my $sql = 'insert into article values('.join(',', ('?') x @columns).')';
585 my $sth = $dbh->prepare($sql)
586   or die "Cannot prepare $sql: ",$dbh->errstr;
587 for my $art (@prebuilt) {
588   defined $art->{linkAlias} or $art->{linkAlias} = '';
589   $sth->execute(@$art{@columns})
590     or die "Cannot insert row into article: ",$sth->errstr;
591 }
592 $dbh->disconnect();