]> git.imager.perl.org - bse.git/blob - site/docs/config.pod
b7148b7cc6fc2ffa9f487b1980921cade513734a
[bse.git] / site / docs / config.pod
1 =head1 NAME
2
3 config.pod - documents BSE configuration file options
4
5 =head1 DESCRIPTION
6
7 BSE historically used Constants.pm to keep most configuration
8 information.  The plan is to make sure any new configuration is kept
9 in bse.cfg, and to slowly move most configuration information into
10 bse.cfg.
11
12 Keeping configuration information in Constants.pm makes it difficult
13 to perform upgrades and makes it impossible to use tools such as
14 mod_perl, at least if you want more than one site on the machine.
15
16 =head1 CONFIGURATION ENTRIES
17
18 =head2 [site]
19
20 Contains URL configuration for the site.
21
22 =over
23
24 =item url
25
26 The normal URL for the non-secure parts of the site.
27
28 =item secureurl
29
30 The secure URL for the shop, products and other portions of the site
31 that should use SSL.  This isn't checked to make sure it is https.
32
33 =item name
34
35 Used as the site "name" in a few places.
36
37 =item adminurl
38
39 If set, this is used as the base URL for accessing the administrative
40 functions of your site.
41
42 =item secureadmin
43
44 Ignored if C<adminurl> is set.
45
46 If this is true then C<secureurl> is used as the base URL for
47 accessing the administrative functions of your site, otherwise C<url>
48 is used as the base URL.  Default: false (C<url>'s value is used)
49
50 =item forward_from
51
52 Configure the IP address of one or more front-end proxies.  This can
53 be a regular expression except that C<.> is translated to C<\.> and
54 C<*> is tranlated to C<.*> to give more glob() like matching.
55
56 If the reqesting host matches then admin site URL matching is done
57 against HTTP_X_FORWARDED_SERVER instead of SERVER_NAME.
58
59 Default: no front-end server configured.
60
61 =back
62
63 =head2 [paths]
64
65 Contains various file system paths.
66
67 =over
68
69 =item downloads
70
71 This is where the files uploads with the file wizard are stored.  It
72 must be writable by the web server user.
73
74 =item admin_templates
75
76 Directory containing administrative templates.  Note: this is not
77 completely implemented for now, so assume the default.  Default: admin
78 directory under $TMPLDIR.
79
80 =item templates
81
82 Directory base for most templates.  This can contain references like
83 $(section/key) to other configuration entries.  Split on the systems
84 PATH separators (run: perl -V:path_sep)
85
86 =item local_templates
87
88 Local Directory base for templates.  This is searched before the
89 templates directory.  This can contain references like $(section/key)
90 to other configuration entries.  Split on the system's PATH separator.
91
92 =item public_html
93
94 Web server document root.  Static pages are generated under this
95 directory.  Default: $CONTENTBASE.
96
97 =item images
98
99 Where uploaded images are stored.  This is not yet completely
100 implemented.  Default: $IMAGEDIR.
101
102 =item libraries
103
104 Local search path for BSE::Custom, or the class configured by
105 C<custom_class> in [basic].
106
107 =item siteuser_images
108
109 Where uploaded siteuser images are stored.  This must be set in the
110 config file.  The default bse.cfg include an entry to use the current
111 values of [paths].downloads
112
113 =item dynamic_cache
114
115 Pregenerated dynamic article pages are stored here.  This must be
116 defined if you site contains any dynamicly generated pages.
117
118 =item scalecache
119
120 The directory where cached versions of scaled thumbnails are stored.
121 Defaults to image_dir/scaled.  This must be in the document tree.  If
122 you set this you should also set scalecacheurl.
123
124 =item scalecacheurl
125
126 The URL to the directory represented by scalecache.  Defaults to
127 /images/scaled.
128
129 =back
130
131 =head2 [extensions]
132
133 This section is used by the file wizard to map uploaded file
134 extensions to MIME content types.  This can be used to extend
135 BSE::FileEditor's internal extension map.  It cannot override that
136 map.
137
138 The key for each entry is the extension, without the leading '.'.
139
140 eg.
141
142   xls = application/msexcel
143
144 =head2 [templates]
145
146 Used for translating symbolic template names into full names under the
147 template directory.
148
149 In each case the default is the name with a C<.tmpl> extension.
150
151 =over
152
153 =item user/logon
154
155 user logon page
156
157 =item user/register
158
159 user registration page
160
161 =back
162
163 =head2 [admin templates]
164
165 Used for translating the names of administration templates into filenames.
166
167 In each case the default is the name with a C<.tmpl> extension.
168
169 =over
170
171 =item filelist
172
173 article file wizard
174
175 =item catalog
176
177 Catalog editor page.  Default admin/edit_catalog.tmpl
178
179 =item 1
180
181 =item 2
182
183 =item 3
184
185 =item 4
186
187 =item 5
188
189 Article edit pages.  Default admin/edit_<number>.tmpl
190
191 =item steps
192
193 Step child/parent management page.  Default admin/edit_steps.tmpl
194
195 =back
196
197 =head2 [html]
198
199 Minor html items.
200
201 =over
202
203 =item charset
204
205 The value of the charset keyword when outputting HTML from a script.
206 Set to the empty string to suppress the charset keyword.  Default:
207 iso-8859-1.
208
209 =item redirect_links
210
211 If this is a non-zero number, then all but mailto links are redirected
212 to C<nuser.pl/redirect> so you can display a diclaimer.  If this
213 contained alphabetics it's treated as a comma separated list of url
214 schemes that should be handled via C<nuser.pl/redirect>.  If 0 or not
215 present, no redirection is done.
216
217 The redirect URL includes a hash of the url, title and the redirect
218 salt to prevent using this mechanism by external sites for cookie
219 stealing attacks.
220
221 =item redirect_salt
222
223 The salt used in generating the has for redirect_links.  Default: an
224 empty string.
225
226 =back
227
228 =head2 [basic]
229
230 =over
231
232 =item cookie_lifetime
233
234 The expiry time for cookies.  This should be in the form supported by
235 CGI.pm for the -expires parameter.  Typically you want a plus ('+'), a
236 number, and a time character (s - seconds, m - minutes, h - hours, d -
237 days, M - months).  Default: +3h
238
239 =item cookie_domain
240
241 This overrides the domain value set for cookies.  This is useful if
242 you allow the site to run under both example.com and www.example.com,
243 if you set cookie_domain to example.com then a user visiting
244 www.example.com will still have their cookies when they visit
245 example.com.
246
247 =item cookie_name
248
249 This overrides the cookie name used to store the session id.  Default:
250 sessionid.  This is useful when you have 2 sites under the same
251 top-level domain, and helps disambiguate the cookie returned by the
252 browser.
253
254 =item minpassword
255
256 Minimum password length in characters.  Default: 4.
257
258 =item randomdata
259
260 Device to read random data from.  This device should not block when it
261 runs out of entropy.
262
263 =item sign
264
265 If this is true then the encrypted messages containing the customer's
266 credit card number are sent to the shop owner signed.  To avoid
267 keeping a passphrase and signing key on the server you can set this to
268 false (0).  This has the effect that anyone could send you an unsigned
269 message encrypted with your public key, though this may not be a
270 security threat.  Default: True.
271
272 =item link_titles
273
274 If this is true then the links to your articles within BSE will be
275 followed by a / and then by a simplified version of the article title.
276 The aim is to include at least some title information in the URL
277 without modifying the name of the HTML file.  Default: False.
278
279 =item access_control
280
281 If this is true then the user/group/permissions database is used to
282 control access to the system.  Default: False.
283
284 =item access_filter_steps
285
286 If this is true, then the drop-down lists of possible stepparents and
287 stepchildren on the article edit pages are filtered for access control.
288 Default: False.
289
290 =item access_filter_parents
291
292 If this is true, then the drop-down lists of possible parents on the
293 newsletter edit pages are filtered for access control.
294 Default: False.
295
296 =item server_auth
297
298 Set this to non-zero to enable authentication via server
299 authentication (usually Basic Authentication.)  You should normally
300 set this if you set htusers below.  Default: 0 (disabled)
301
302 =item htusers
303
304 This should be the path to a file to be updated with the list of users
305 and crypt() versions of their passwords.  If this is set then the
306 security system will check for a user set by the browser before
307 attempting a form based logon.  Default: None.
308
309 =item custom_class
310
311 The name of the custom class for your site.  This is currently only
312 used for article editing customizations.  This class should derive
313 from BSE::CustomBase.  Default: BSE::Custom.
314
315 =item jit_dynamic_pregen
316
317 If this is true, then pre-generation for dynamic pages will be delayed
318 until the page is displayed to a user.  Default: off.
319
320 =item staticajax
321
322 If true, the ifAjax and ajax tags will be active for static pages.
323
324 =item cache_thumbnails
325
326 If set to zero the results of the thumbimage/gthumbimage body/template
327 tags will not be cached.  Default: 1 (caching is enabled).
328
329 =item static_thumbnails
330
331 If true and cache_thumbnails is true then thumbnails for the thumbnail
332 cache will be generated when a static page is regenerated, and the
333 link from the page will link to the image in the cache rather than to
334 C<thumb.pl>.  Default: 1 (static thumbnails enabled).
335
336 =item alias_prefix
337
338 The prefix applied to articles that use a linkAlias url.  This should
339 start with a /.
340
341 =item use_alias
342
343 If this is non-zero then an article with linkAlias set will use an
344 alias url instead of the "real" url.  You will need to configure a
345 RewriteRule or ErrorDocument to page.pl to direct the user to the
346 correct URL.  Default: 1.
347
348 =item alias_suffix
349
350 If this is non-zero then the title is cleaned up (all but
351 alphanumerics removed) and appended to the alias URL generated.
352
353 =item default_popupimage
354
355 This is the default popup image class for the popimage[] and
356 gpopimage[] tags.  Default: popup.
357
358 =item warn_obsolete
359
360 Some obsolete tags will warn to stderr if this is non-zero.  Default:
361 don't warn.
362
363 =item no_cache_dynamic
364
365 If non-zero, the default, dynamic responses will include a
366 C<Cache-Control: no-cache> header.  This can be overridden for
367 articles via , article flags, C<[template >
368 I<templatename>C<].no_cache_dynamic> and [article].no_cache_dynamic.
369 Default: 1.
370
371 =item redir_to_alias
372
373 If true then page.pl will 301 redirect (Moved Permanently) requests
374 for an article by its id to the generated link if the article has a
375 link alias.  Default: false.  Must only be used with use_alias true.
376
377 =item track_uploads
378
379 If this is non-zero, and a cache is configured (see [cache]), file
380 uploads are tracked in entries in the cache.
381
382 The fileprogress.pl script can be called by Ajax to display file
383 upload progress information to the user.  The upload state is updated
384 a maximum of once a second.
385
386 =item http_only_session
387
388 If this is non-zero, the default, the session cookie sent to the
389 browser has the C<HttpOnly> attribute set.  This can prevent session
390 cookie hijacking.  Default: 1.
391
392 =item secure_session
393
394 If this is non-zero then the session cookie sent to the browser has
395 the C<Secure> attribute set.  This means that the cookie will only be
396 visible over https.  This is only useful when the only URL the site is
397 visited over is a https URL.  Default: 0.
398
399 =item make_userid_cookie
400
401 If this is non-zero, the default, then when the site member logs in, a
402 javascript visible cookie, C<userid> will be set that contains the
403 login name of the user.  BSE's back-end doesn't use this cookie, its
404 only use is for Javascript to enable/disable user interface elements.
405 Default: 1.
406
407 =back
408
409 =head2 [mail]
410
411 This section controls how BSE sends email.
412
413 =over
414
415 =item smtp_server
416
417 The host or IP address of your mail server.  If this is not set
418 C<sendmail> will be used instead.  If this is set you must also set
419 I<helo>.
420
421 =item helo
422
423 The name that BSE uses to identify itself when sending mail via SMTP.
424 Required if I<smtp_server> is set.
425
426 =item sendmail
427
428 The path to the C<sendmail> binary.  Default: /usr/lib/sendmail
429
430 =item sendmail_opts
431
432 The options supplied to sendmail.  Default: -t -oi
433
434 You may want to add the -odq option to this if you want mail queued
435 rather than sent immediately.
436
437 =item set_errors_to_from
438
439 If true, we add an Errors-To header set to the same as the From
440 header.  Default: true.
441
442 =item html_system_email
443
444 If non-zero then emails sent via the compose mail system that aren't
445 being sent to a member record, will be sent as HTML, if the HTML
446 template is available.
447
448 =back
449
450 =head2 [children of I<id>]
451
452 Where I<id> is the identifier for an article.
453
454 =over
455
456 =item template
457
458 the name of the default template for children of the given parent
459
460 =item template_dirs
461
462 a comma-separated list of extra directories under $TMPLDIR to search
463 for templates that can be used for children of the given parent article.
464
465 =back
466
467 =head2 [article I<id>]
468
469 Where I<id> is the identifier of an article.
470
471 =over
472
473 =item template_dirs
474
475 A comma-separated list of extra directories under $TMPLDIR to search
476 for templates that can be used for children of the given parent
477 article.
478
479 =item extra_templates
480
481 A comma-separated list of extra templates under $TMPLDIR that can be
482 used for the given article.
483
484 =back
485
486 =head2 [level I<level>]
487
488 =over
489
490 =item template
491
492 The default template for this level of article, assuming it hasn't
493 been set in the [children of I<article id>] section.
494
495 =item template_dirs
496
497 A comma-separated list of extra directories under $TMPLDIR to search
498 for templates that can be used for articles at the given I<level>.
499
500 =back
501
502 =head2 [catalogs]
503
504 =over
505
506 =item template
507
508 The default template for catalogs.
509
510 =back
511
512 =head2 [products]
513
514 =over
515
516 =item template
517
518 The default template for products.
519
520 =item extra_templates
521
522 A comma separated list of extra templates that can be used for
523 products.
524
525 =back
526
527 =head2 [messages]
528
529 This can be used to control translation of error messages.  Each key
530 has a prefix identifying the module that uses the error, followed by
531 '/' followed by a specific identifier for the message.
532
533 Message parameters, expressed as $I<digit>, are replaced with the
534 parameters passed to the message.  C<$$> is replaced with C<$>.
535
536 Each message identifier below is documented with the id, when it
537 occurs, the default message, and any parameters.
538
539 =over
540
541 =item user/needlogon
542
543 the user attempted to logon without entering a logon name.  Default:
544 "Please enter a logon name".  No parameters.
545
546 =item user/needpass
547
548 the user attempted to logon without entering a password.  Default:
549 "Please enter your password."  No parameters.
550
551 =item user/baduserpass
552
553 the user's logon name or password was not found or did not match.
554 Default: "Invalid user or password".  No parameters.
555
556 =item user/notloggedon
557
558 the user attempted to logoff while not logged on.  Default: "You
559 aren't logged on".  No parameters.
560
561 =item user/optsoldpass
562
563 the user entered a new password on the options page without entering
564 their old password.  Default: "You need to enter your old password to
565 change your password".  No parameters.
566
567 =item shop/logonrequired
568
569 Displayed if the user attempts to checkout when [shop].require_logon
570 is true.
571
572 =back
573
574 =head2 [downloads]
575
576 =over
577
578 =item must_be_paid
579
580 if non-zero, the order must be marked as paid for before the file can
581 be downloaded.
582
583 =item must_be_filled
584
585 if non-zero the order must be marked as filled before the files can be
586 downloaded.
587
588 =item require_logon
589
590 if non-zero the user must be registered/logged on to download I<any>
591 file.
592
593 =item log_downufile
594
595 if non-zero, downloads of userfiles will be logged.  Default: 0
596
597 =item log_downufile_maxage
598
599 the maximum age of entries in the user file download log, in days.
600 Default: 30.
601
602 =back
603
604 =head2 [confirmations]
605
606 Control over confirmation emails.
607
608 =over
609
610 =item subject
611
612 The subject of email confirmation emails.  Default: Subcription
613 Confirmation.
614
615 =item from
616
617 The from field for the email.  Default: $SHOP_FROM
618
619 =back
620
621 =head2 [subscriptions]
622
623 Control over subscription messages.
624
625 =over
626
627 =item from
628
629 The from field for the email.  Default: $SHOP_FROM.
630
631 =item testname
632
633 Default for the "Test Name" field for sending test subscription
634 messages.
635
636 =item testemail
637
638 Default for the "Test Email" field for sending test subscription
639 messages.
640
641 =item testtextonly
642
643 Set to 1 if you want the "Test Text Only" box checked by default for
644 sending test subscription messages.
645
646 =item testing
647
648 Set to 0 to disable display of the test subscription messages portions
649 of the subscriptions send form.
650
651 =item text_link_inline
652
653 Set to format links as they appear in the text version of emails.
654 C<$1> is replaced with the title, C<$2> with the URL and C<$3> with
655 the index. C<$$> is replaced with '$'. Default: C<$1 [$3]>
656
657 =item text_link_list
658
659 Set to format links as they appear at the footer of the body text.  If
660 this is set to the empty string then no list appears. C<$1>, C<$2>,
661 C<$3>, C<$$> are replaced as for I<text_link_inline> and $n is
662 replaced with newline.  Default: C<[$3] $2>
663
664 =item text_link_list_prefix
665
666 A line of text produced above the list of URLs if there is one.
667 Default: C<----->. $n in this is replaced with newlines.
668
669 =back
670
671 For example, if the configuration is:
672
673   text_link_inline="$1" ($3)
674   text_link_list_prefix=$n$n-------
675   text_link_list=($3) "$1"$n  => $2
676
677 and the body text is:
678
679   doclink[3]
680   link[http://www.example.com/|Example]
681
682 the result will be:
683
684   "The Shop" (1)
685   "Example" (2)
686   
687   
688   -------
689   (1) "The Shop"
690     => http://www.yoursite.com/shop/index.html
691   (2) "Example"
692     => http://www.example.com/
693
694 =head2 [search]
695
696 =over
697
698 =item highlight_partial
699
700 If this is true then partial matches will be highlight in search
701 result excerpts.  Default: True
702
703 =item keep_inaccessible
704
705 If this is true then resulting articles that can't be accessed by the
706 user are listed in the search results.  Default: false.
707
708 =item wordre
709
710 The default regular expression used to match words in text during
711 indexing.  Default: \w+
712
713 =item wordre_I<fieldname>
714
715 The field specific word match regular expression for the built-in
716 search indexer.  Default: the value of C<wordre>.
717
718 =item indexer
719
720 Module used to build the search index.  Default: BSE::Index::BSE.
721
722 =item index_priority
723
724 For C<BSE::Index::BSE>, the optimization priority.  The default of
725 C<speed> builds the index in memory and is very fast, but can consume
726 a lot of memory.  Otherwise, set this to C<memory> to reduce memory
727 usage.
728
729 C<memory> priority index building requires that the DBM::Deep module
730 be installed.
731
732 =back
733
734 =head2 [search highlight]
735
736 Sets the prefix and suffix used for highlighting matches for different
737 fields.
738
739 These are used by the highlight_result, excerpt, pageTitle, author,
740 keywords and matchFile tags.
741
742 Each field has a prefix and suffix entry.  The key is
743 I<fieldname>_prefix or I<fieldname>_suffix.  For file fields this is
744 file_I<fieldname>_prefix and file_I<fieldname>_suffix.
745
746 The default prefix is <b>.  The default suffix is </b>.
747
748 For example you can do:
749
750   [search highlight]
751   body_prefix=<span class="searchfound">
752   body_suffix=</span>
753
754 =head2 [shop]
755
756 =over
757
758 =item enabled
759
760 Used by some templates to check if the shop is enabled.  Set this to 1
761 to enable the shop, or 0 to disable it.
762
763 =item secureurl_articles
764
765 If this is false then shop articles will not use the secureurl as their 
766 baseurl.  Default: True
767
768 =item register_if_files
769
770 If true the customer is required to register before checkout if there
771 are any for sale files attached to products in the cart.  Default: True
772
773 =item require_logon
774
775 If true the customer is required to be logged on before checkout,
776 whether or not for sale files are attached to products in the cart.
777 Default: False.
778
779 =item payment_types
780
781 A comma-separated list of acceptable payment types.  Default: 0
782
783 The possible payment types are:
784
785 =over
786
787 =item *
788
789 0 - the user enters a credit card number, name and expiry date
790
791 =item *
792
793 1 - the customer will send a cheque
794
795 =item *
796
797 2 - contact customer for details
798
799 =item *
800
801 4 - paypal - see L<paypal.pod>
802
803 =back
804
805 Other types can be added by adding entries to the [payment type names]
806 and [payment type descs] sections.
807
808 =item address1
809
810 =item address2
811
812 =item address3
813
814 These are used by various shop templates to present an address that a
815 cheque payment should be sent to.
816
817 =item from
818
819 From email address for emails sent by the shop.  Overides $SHOP_FROM
820 in Constants.pm
821
822 =item to_name
823
824 To name for emailed orders sent by the shop.  Overrides $SHOP_TO_NAME
825 in Constants.pm
826
827 =item to_email
828
829 To email for emailed orders sent by the shop.  Overrides $SHOP_TO_EMAIL
830 in Constants.pm
831
832 =item bcc_email
833
834 BCC email address for order confirmation emails sent to the customer.
835 Default: No bcc.
836
837 =item noencrypt
838
839 If this is true then orders sent to you by the shop will not be
840 encrypted.  Enabling this disabled acceptance of credit card orders,
841 and the default for C<payment_types> will become C<1> instead or C<0>.
842
843 Please realize that other potentially commercially sensitive
844 information is being sent in the clear to a central location,
845 unencrypted.
846
847 =item email_order
848
849 If true, then the order is email to to_email, possibly with credit
850 card information included.  Default: $SHOP_EMAIL_ORDER.
851
852 =item display_I<field>
853
854 Used to translate the stored order field name into a presentation name
855 suitable for error messages.
856
857 =item cardprocessor
858
859 The name of a class to load to process credit card transactions online.
860
861 Currently this can be either DevHelp::Payments::Test or
862 DevHelp::Payments::Inpho.
863
864 =item crypt_module
865
866 Name of the encryption module to use.  Default: $SHOP_CRYPTO.
867
868 =item crypt_signing_id
869
870 Id of the key to sign the order email with.  If this is non-empty then
871 the email is signed even if [basic].sign is false.  Default:
872 $SHOP_SIGNING_ID.
873
874 =item crypt_gpg
875
876 Path to the GnuPG program.  Default: $SHOP_GPG
877
878 =item crypt_passphrase
879
880 Passphrase of the key used to sign the email.  Default:
881 $SHOP_PASSPHRASE.
882
883 =item show_card_type
884
885 If true, request the card type when requesting credit card
886 information.  Default: False.
887
888 =item cart_entry_limit
889
890 Maximum number of entries in the cart.  This limits the number of
891 distinct products (with options) in the cart, not the total
892 quantities.  Default: Unlimited.
893
894 =item currency_code
895
896 The shop currency as a 3-letter currency code.  Default: AUD.
897 Currencies other than "AUD" aren't supported by most of the system.
898
899 =item country_code
900
901 Set to non-zero if you're using country codes in the order country
902 field.  If this is set then the delivCountry is supplied as is to
903 various parts of the system, otherwise it is translated from a country
904 name to a country code.  Default: 0.
905
906 =back
907
908 =head2 [shipping]
909
910 =over
911
912 =item couriers
913
914 A space-separated list of modules under Courier::, e.g. "Fastway::Road
915 AustraliaPost::Air". These will be made available as shipping methods
916 on the checkout page.
917
918 =item sourcepostcode
919
920 The post code from which products are shipped.
921
922 =item fastwayfranchisee
923
924 The name of the Fastway franchisee used to ship products from the
925 sourcepostcode.
926
927 =item fastwayfranchiseecode
928
929 The Fastway franchisee code for the customer, if any.
930
931 =back
932
933 =head2 [Shop Order Validation]
934
935 This section can contain extra order validation information, including
936 specifying required fields, display names and extra validation rules.
937
938 =head2 [fields]
939
940 =over
941
942 =item title_size
943
944 The maximum length of the article title field.  Default: 255.  Should
945 not be set higher than this unless you change the database schema.
946
947 =back
948
949 =head2 [interest]
950
951 Controls the interest.pl script.
952
953 =over
954
955 =item notify
956
957 Email address that is notified of the interest.  Defaults to $SHOP_FROM.
958
959 =back
960
961 =head2 [debug]
962
963 Used for debugging.
964
965 =over
966
967 =item logon_cookies
968
969 When a user logs on, and the site url is different to the secure url
970 BSE attempts to refresh to the other "side" of the site to set the
971 same cookie.
972
973 BSE does some simple comparisons to attempt to determine whether the
974 logon form was triggered on the secure side of the site (possibly from
975 the shop) or on the insecure side.  Since CGI doesn't necessarily give
976 us all the information required, it's possible it will guess wrong.
977
978 Setting this option to 1 will enable debugging information sent to
979 standard error, which will be sent to the error log on Apache.  This
980 probably isn't useful on IIS.
981
982 =item file_unlink
983
984 Reports errors to STDERR (hence to the error log on Apache) if there
985 is a problem deleting the actual file when an attached file is
986 removed.
987
988 =item mail_encryption
989
990 Reports debugging information to standard error while encrypting your
991 mail.
992
993 =item cookies
994
995 Reports cookies received from the browser and sent to the browser to
996 STDERR (hence to the error log on Apache.)
997
998 =item dump_session
999
1000 If nonzero the session hash is dumped to STDERR after it is retrived
1001 from the database.
1002
1003 =item subscription_expiry
1004
1005 If non-zero then subscription expiry date calculations are dumped to
1006 STDERR.
1007
1008 =item jit_dynamic_regen
1009
1010 If non-zero then information about jit_dynamic_regen is sent to
1011 STDERR.
1012
1013 =item ifUserCan
1014
1015 If non-zero then the ifUserCan tag will output some trace information
1016 to STDERR.
1017
1018 =back
1019
1020 =head2 [uri]
1021
1022 Contains various URIs.
1023
1024 This is underused, so don't rely on it yet.
1025
1026 =over
1027
1028 =item cgi
1029
1030 The URI to the CGI directory.  Default: /cgi-bin
1031
1032 =item images
1033
1034 The URI where images are kept.  Default: /images
1035
1036 =item shop
1037
1038 =item articles
1039
1040 =back
1041
1042 =head2 [articles]
1043
1044 This will provide translations from symbolic names to article ids.
1045
1046 Currently this is used for converting article ids in the access
1047 control code, and for looking up the id of the shop.
1048
1049 =head2 [printable type]
1050
1051 If the user supplies a template name to printable.pl then you can use
1052 a different content type by adding an entry to this section.  The key
1053 is the template name, and the value is the full content type.
1054
1055 =head2 [search index scores]
1056
1057 This section is used when generating the search index to override the
1058 default scores for each field in the articles.
1059
1060 The default scores are:
1061
1062   Field           Score  Notes
1063   -----           -----  -----
1064   title             5
1065   body              3
1066   keyword           4
1067   pageTitle         5
1068   author            4
1069   summary           0
1070   description       0    Products only
1071   product_code      0    Products only
1072   file_displayName  2    displayName for files
1073   file_description  2    description for files
1074   file_notes        1    notes for files
1075
1076 =head2 [article flags]
1077
1078 =head2 [product flags]
1079
1080 =head2 [catalog flags]
1081
1082 Flags that can be set for articles, products and catalogs
1083 respectively.  Note that flags for articles are also visible in
1084 products and catalogs.
1085
1086 All flag Ids are single letters or digits.  Uppercase letters are
1087 reserved for use by BSE internally, leaving lower-case letters and
1088 digits for your own use.
1089
1090 Use the id of the flag as the key, and a description of the flag as
1091 it's value.
1092
1093 =head2 [article uris]
1094
1095 Each key is an article id, the values are base URIs to store the HTML
1096 form of those articles and their children under.
1097
1098 =head2 [protect link]
1099
1100 The keys are ids of articles that shouldn't have their link field
1101 overwritten.  The value should be a true value, but is otherwise
1102 ignored.
1103
1104 =head2 [datadump]
1105
1106 =over
1107
1108 =item to
1109
1110 The recipient for the data dump email sent by datadump.pl. Default:
1111 $DATA_EMAIL.
1112
1113 =item from
1114
1115 the From for the data dump email sent by datadump.pl.  Default:
1116 $SHOP_FROM.
1117
1118 =back
1119
1120 =head2 [site users]
1121
1122 Configuration for site users.
1123
1124 =over
1125
1126 =item nopassword
1127
1128 If this is set to true then no passwords are required during
1129 registration, a confirmation email is sent immediately upon
1130 registration and that confirmation email contains a link the user can
1131 use to manage their details.
1132
1133 This option has some security concerns since it can leave links to the
1134 user's information in the browser history.  This option is not
1135 recommended.
1136
1137 You cannot use this to control access to the shop.
1138
1139 =item require_name1
1140
1141 =item require_name2
1142
1143 =item require_address
1144
1145 =item require_city
1146
1147 =item require_state
1148
1149 =item require_postcode
1150
1151 =item require_telephone
1152
1153 =item require_facsimile
1154
1155 =item require_country
1156
1157 =item require_title
1158
1159 =item require_organization
1160
1161 Set these to true to require the corresponding field during
1162 registration, and to keep it required after modification.  Default:
1163 false.
1164
1165 If you enable any of these, you should enable C<info_on_register> as
1166 well, or modify the registration template to include the given fields.
1167
1168 =item display_I<field name>
1169
1170 Controls how the given field is displayed in error messages.  If you
1171 change the field names on the registration and/or options forms you
1172 should probably change them here too.  Default: internal field name
1173 with the first character converted to upper-case.
1174
1175 =item info_on_register
1176
1177 If this is set then the user info is prompted for during user
1178 registration.  The information still isn't required unless the
1179 appropriate require_I<field> option is set.  Default: false.
1180
1181 =item register_refresh
1182
1183 The default URL to refresh to on completing registration if no r
1184 parameter is supplied.
1185
1186 =item subscribe_all
1187
1188 If this is set then the subcription checkboxes are all checked on
1189 registration by default.  Default: false.
1190
1191 The user will only receive the subscriptions if they leave them checked
1192 and follow the link in the confirmation email.
1193
1194 =item subscribe_I<id>
1195
1196 Where I<id> is the number identifying a subscription.  If this is set
1197 then the subscription checkbox for that subscription will be checked
1198 by default on the registration form.  Default: false.
1199
1200 The user will only receive the subscriptions if they leave it checked
1201 and follow the link in the confirmation email.
1202
1203 You can get the I<id> of a subcription by looking at the Edit link on the
1204 subscriptions management page, the number after "id=" is the id.
1205
1206 =item billing_on_main_opts
1207
1208 If set to zero then user billing options will be managed on a separate
1209 page.  This is controlled by the user/options_base.tmpl template.
1210
1211 =item user_register
1212
1213 If set to zero then users cannot register themselves.  Default: true,
1214 allowing users to register themselves.
1215
1216 =item notify_register
1217
1218 If true then an email is sent when a new user registers on your site.
1219 The email address sent to is the first set of [site
1220 users].notify_register_email, [shop].from or $SHOP_FROM from
1221 Constants.pm
1222
1223 No email is sent if a new user is created from the administration user
1224 interface.
1225
1226 See also: notify_register_email, notify_register_subject.
1227
1228 =item notify_register_email
1229
1230 The email to sent the registration notification too.  See
1231 notify_register above.
1232
1233 =item notify_register_subject
1234
1235 The subject of the notification email sent when a new user registers.
1236 Any {I<field>} is replaced with the given field from the registered
1237 user.  See notify_register above.
1238
1239 Default: New user {userId} registered
1240
1241 =item notify_register_customer
1242
1243 If non-zero then email id C<notify_register_customer> will be sent to
1244 new user on registration.  By default this uses template
1245 user/email_register, subject "Thank you for registering" which can be
1246 overridden in [email notify_register_customer]
1247
1248 =back
1249
1250 =head2 [payment type names]
1251
1252 This section and [payment type descs] are used to configure new
1253 paymeny type ids.
1254
1255 The key is the integer representing the payment type.  The value is
1256 the name used in tags for checking the payment type.
1257
1258 You can also add a description (currently unused) to [payment type
1259 descs].
1260
1261 You should use numbers starting from 10 to avoid conflicts with future
1262 BSE payment types.
1263
1264 =head2 [payment type descs]
1265
1266 See [payment type names].
1267
1268 =head2 [payment type required]
1269
1270 Set the key given by the payment type id to a value of a
1271 comma-separated list of fields required for that payment type.
1272
1273 =head2 [help style I<style-name>]
1274
1275 This type of configuration section is used to set values for a style
1276 of help icon.  Only the C<template> and C<prefix> values are used
1277 directly by the code, the others are used by the default helpicon
1278 templates.
1279
1280 =over
1281
1282 =item prefix
1283
1284 The URI to the help files for this style.  Default: /help/ in style
1285 "user", /admin/help/ in style "admin".
1286
1287 =item template
1288
1289 The template used to produce the icon.  Default: helpicon in style
1290 user, admin/helpicon in style "admin".
1291
1292 =item icon
1293
1294 URI to the help icon image.   Default: /images/admin/help.gif
1295
1296 =item iconwidth
1297
1298 The width of the help icon image.  Default: 16
1299
1300 =item iconheight
1301
1302 The height of the help icon image.  Default: 16
1303
1304 =back
1305
1306 If you just want to change the help icon image for user help icons you
1307 might do:
1308
1309   [help style user]
1310   icon=/images/help.gif
1311
1312 =head2 [affiliate]
1313
1314 =over
1315
1316 =item allowed_referer
1317
1318 A semi-colon (;) separated list of referer domains that are allowed to
1319 link to the C<a_set> target of L<affiliate.pl>.
1320
1321 If the user's browser supplies a referer header then it will be
1322 checked against this list.
1323
1324 =item require_referer
1325
1326 If this is set then the C<a_set> target of L<affiliate.pl> will
1327 require that the user's browser supply a Referer header.
1328
1329 =item default_refresh
1330
1331 If no C<r> parameter is supplied to the C<a_set> target of
1332 L<affiliate.pl> then this is used as the default refresh.
1333
1334 Default: the site base url.
1335
1336 =item subscription_required
1337
1338 This is either the numeric or text of a subscription for which the
1339 affiliate must have an active subscription.
1340
1341 =item flag_required
1342
1343 A single letter flag which the site administrator must set for the
1344 affiliate page to be displayed for the given member.
1345
1346 =item set_cookie
1347
1348 If this is set then affiliate.pl will set the named cookie to the
1349 affiliate id.
1350
1351 =item other_cookies
1352
1353 This is a comma-separated list of other cookies that should be set by
1354 the a_set target.  The values for the cookies should be passed to the
1355 a_set target.  For example with:
1356
1357   [affiliate]
1358   other_cookies=alpha,beta
1359
1360 if the url:
1361
1362   http://your.site.com/cgi-bin/affiliate.pl?a_set=1&id=someid&alpha=1&beta=2&gamme=3
1363
1364 is accessed, then the cookie alpha is set to "1", beta is set to "2".
1365 The cookie gamma will not be set since it's not listed.
1366
1367 =item linkbaseurl
1368
1369 Used as the link base URL for the afflink.tmpl side bar template when
1370 an affiliate id is set.  Default: example.com
1371
1372 =item linkbasedesc
1373
1374 Used at the text of the link for the afflink.tmpl side bar template
1375 when an affiliate id is set.  Default: Your Site.
1376
1377 =item linkdefurl
1378
1379 Used as the link URL for the afflink.tmpl side bar template when an
1380 affiliate id is not set.  Default: example.com
1381
1382 =item linkdefdesc
1383
1384 Used as the text of the link for the afflink.tmpl side bar template
1385 when an affiliate id is not set.  Default: Our site
1386
1387 =back
1388
1389 =head2 [BSE Siteuser Images]
1390
1391 Each key is the id of a member image, with a corresponding [BSE
1392 Siteuser Image I<image_id>] section.  The values are ignored.
1393
1394 =head2 [BSE Siteuser Image I<image_id>]
1395
1396 Provides information about a single member image "template".
1397
1398 =over
1399
1400 =item description
1401
1402 Short description on the image, like "Logo".  Used in error messages.
1403
1404 =item help
1405
1406 Longer description of the image.  Accessible with the member_image tag.
1407
1408 =item minwidth
1409
1410 =item minheight
1411
1412 =item maxwidth
1413
1414 =item maxheight
1415
1416 The minimum and maximum dimensions of the image.
1417
1418 =item widthsmallerror
1419
1420 =item heightsmallerror
1421
1422 =item widthlargeerror
1423
1424 =item heightlargeerror
1425
1426 Error messages displayed in the when the image is outside the
1427 configured dimensions.
1428
1429 =item largeerror
1430
1431 =item smallerror
1432
1433 Default error messages for the above.
1434
1435 =item maxspace
1436
1437 Maximum storage the image can use in bytes.  Default: 1000000.
1438
1439 =item spaceerror
1440
1441 Error message displayed if the image uses too much storage.
1442
1443 =back
1444
1445 =head2 [editor]
1446
1447 Various editor settings.
1448
1449 =over
1450
1451 =item allow_thumb
1452
1453 If this is non-zero the system will attempt to load the configured
1454 thumbnail class, and put thumbnail images on the image manager page
1455 rather than full-size images.  Default: off
1456
1457 =item thumbs_class
1458
1459 The name of a perl class that implement's BSE's thumbnail API.  At
1460 this point the only class that implements that is BSE::Thumb::Imager,
1461 supplied with BSE.  Default: None
1462
1463 =item default_thumbnail
1464
1465 URI to the default thumbnail image.  This is presented when the
1466 runtime production of a thumbnail image fails.
1467
1468 =item default_thumbnail_width
1469
1470 =item default_thumbnail_height
1471
1472 Dimensions of the default thumbnail image.
1473
1474 =item default_thumbnail_alt
1475
1476 Alt text for the default thumbnail image.
1477
1478 =item check_modified
1479
1480 If this is true then BSE will check the value of the lastModified
1481 parameter passed against the value in the article.  If these don't
1482 match the article isn't saved and is redisplayed with an error
1483 message.  This provides simple protection against one user saving
1484 changes over those made by another.
1485
1486 =back
1487
1488 =head2 [thumbnails]
1489
1490 =over
1491
1492 =item max_width
1493
1494 =item max_height
1495
1496 =item max_pixels
1497
1498 Default values for the thumbimage tag.
1499
1500 =back
1501
1502 =head2 [includes]
1503
1504 Each value is used as the relative or absolute name of a file or
1505 directory to load more configuration data from.
1506
1507 The keywords must remain unique.
1508
1509 Only the [includes] section from bse.cfg itself is used to locate more
1510 configuration data.
1511
1512 If the value references a directory, all files with an extension of
1513 C<.cfg> are read for configuration data.
1514
1515 The order the files are read (which later files overriding older
1516 files) is:
1517
1518 =over
1519
1520 =item 1.
1521
1522 bse.cfg is read
1523
1524 =item 2.
1525
1526 the entries in [includes] are sorted alphabetically (or rather
1527 asciily), so an entry with key "A" is read before one with key "B",
1528 one with key "01" is read before "02", but key "10" would be read
1529 I<before> key "2".
1530
1531 =item 3.
1532
1533 if an entry is a file then that is read and the values merged.
1534
1535 =item 4.
1536
1537 if an entry is a directory, then that is scanned and the files found
1538 read alphabetically as above.
1539
1540 =back
1541
1542 =head2 [error_img]
1543
1544 This is used to configure the error icon displayed next to fields that
1545 fail validation.
1546
1547 =over
1548
1549 =item image
1550
1551 URI to the image file.
1552
1553 =item width
1554
1555 =item height
1556
1557 The width and height of the error icon image.
1558
1559 =back
1560
1561 =head2 [site user flags]
1562
1563 Flags that can be set for site users.
1564
1565 All flag Ids are single letters or digits.  Uppercase letters are
1566 reserved for use by BSE internally, leaving lower-case letters and
1567 digits for your own use.
1568
1569 Use the id of the flag as the key, and a description of the flag as
1570 it's value.
1571
1572 =head2 [article defaults]
1573
1574 =head2 [catalog defaults]
1575
1576 =head2 [product defaults]
1577
1578 These sections contain defaults values for the corresponding article
1579 types.
1580
1581 Each key is the name of a column for the article type.
1582
1583 If an entry is not found in [catalog defaults] then [article defaults]
1584 is also checked.
1585
1586 If an entry is not found in [product defaults] then [article defaults]
1587 is also checked.
1588
1589 These sections are checked B<after> the C<[children of >I<id>C<]> and
1590 C<[level >I<level>C<]> sections.
1591
1592 These defaults are used when creating an article where no value is
1593 supplied, they can also be accessed via the <:default I<name>:> tag.
1594
1595 =head2 [newsletter filters]
1596
1597 Contains C<criteria>I<index> entries starting from C<criteria1>, then
1598 C<criteria2>, etc.
1599
1600 Each entry consists of a filter class name, followed by a ; followed
1601 by data passed to that filter.
1602
1603   ; user the original SQL based filter, configured from 
1604   ; section [foo]
1605   criteria1=BSE::NLFilter::SQL;foo
1606
1607 See the documentation for each filter to configure the filters.
1608
1609 =head2 [Query Groups]
1610
1611 The key of each entry is the numeric identifier of a query group, the
1612 values are the name of the query group.  For example:
1613
1614   [query groups]
1615   1=some name
1616
1617   [query group some name]
1618   sql=select id from site_users where id = ? and name1 like '%some%'
1619
1620 Each entry also has a corresponding [Query Group I<name>] section.
1621
1622 =head2 [query group I<name>]
1623
1624 This section corresponds to an entry in [Query Groups].
1625
1626 =over
1627
1628 =item sql
1629
1630 This is an SQL statement.  One placeholder is required and is passed
1631 the siteuser id (primary key) of the user to be checked.  If this
1632 query returns I<any> rows then the user is considered part of the
1633 group.
1634
1635 =back
1636
1637 =head2 [template types]
1638
1639 Each key is a template name, the value is the content type to be used
1640 when displaying the template dynamically.
1641
1642 =head2 [template descriptions]
1643
1644 Each key is a template name, the value is a description used in the
1645 template dropdown for that template.
1646
1647 =head2 [body class]
1648
1649 This section defines CSS class names for BSE's body text link tags.
1650 The key is the tag name, the value is the CSS class to be used.
1651
1652 By default the class used is the same as the name of the tag, but you
1653 can switch this off by adding an entry setting the class to the empty
1654 string, for example:
1655
1656   ; no class attribute for any of the links
1657   [body class]
1658   link=
1659   poplink=
1660   doclink=
1661   popdoclink=
1662
1663 You can set p here too to set the class for paragraphs generated as
1664 body text.  By default no class is set.
1665
1666 =head2 [popimage]
1667
1668 Controls the behaviour of the window displayed by the popimage[] body
1669 text tag.  If the Javascript for this has been customized then this
1670 may not apply.
1671
1672 =over
1673
1674 =item extrawidth
1675
1676 =item extraheight
1677
1678 Extra width and height for the window beyond the size of the image.
1679 Default: no extra width or height.
1680
1681 =item popmiddle
1682
1683 If set to non-zero popimage[] will attempt to centre the popup within
1684 the current window.  Default: 0.
1685
1686 =back
1687
1688 =over
1689
1690 =back
1691
1692 =head2 [inpho]
1693
1694 This is used to configure the DevHelp::Payments::Inpho module.
1695
1696 =over
1697
1698 =item test
1699
1700 If this is set then the test parameters are used instead of the
1701 product values.
1702
1703 =item url
1704
1705 The URL to process requests through.  
1706
1707 Default: https://extranet.inpho.com.au/cc_ssl/process
1708
1709 =item user
1710
1711 Inpho supplied user name.
1712
1713 =item password
1714
1715 Inpho supplied password.
1716
1717 =item test_url
1718
1719 The URL to process test requests through.
1720
1721 =item test_user
1722
1723 The user to supply to test requests.
1724
1725 =item test_password
1726
1727 The password to supply to test requests.
1728
1729 =back
1730
1731 =head2 [custom]
1732
1733 This section controls whether some custom class methods are called:
1734
1735 =over
1736
1737 =item saveopts
1738
1739 If this is non-zero then siteuser_saveopts is called.
1740
1741 =back
1742
1743 =head2 [levelI<level> menus]
1744
1745 Where I<level> is the article level at which the defined menu options will be available.
1746 Configure each menu value and description as I<key> and I<value>.
1747
1748 =over
1749
1750 For example:
1751
1752   [level1 menus]
1753   0=Default
1754   1=Sidebar
1755   2=Footer
1756
1757 To create a menus using such values, use the "allkids_of" iterator "filter" option.
1758
1759 For example:
1760
1761   <:iterator begin allkids_of -1 filter: [menu] == 2 :>
1762
1763 =back
1764
1765 =head2 [title alias]
1766
1767 Enable the "titleAlias" article field and set which level it will be available.
1768
1769 =over
1770
1771 =item levelI<level>
1772
1773 Where I<level> is the article "level" for which the "titleAlias" field should be enabled.  To enable
1774 set the value to non-zero.
1775
1776 For example:
1777
1778   [title alias]
1779   level1=1
1780
1781 The "titleAlias" can be used as an alternate "short" title for the given article, especially useful
1782 for space critical iterated menus.  A template conditional can be used to display the "titleAlias" 
1783 in place of the article "title" when appropriate.
1784
1785 =back
1786
1787 =head2 [thumb geometries]
1788
1789 Each key represents a geometry identifier for use by the thumbimage[],
1790 gthumbimage[] body text tags and the <:thumbimage ...:>, <:gthumbimage
1791 ...:>, <:dthumbimage ...:> template tags.
1792
1793 The key is the geometry identifier, the value is the geometry string
1794 as follows.
1795
1796 The geometry string consists of:
1797
1798 =over
1799
1800 =item *
1801
1802 dimensions
1803
1804 =item *
1805
1806 crop flag - if present
1807
1808 =item *
1809
1810 optional fill
1811
1812 =back
1813
1814 The dimensions can be in any of the following forms:
1815
1816 =over
1817
1818 =item *
1819
1820 <width>x<height> - the desired maximum width and height. eg 200x150
1821
1822 =item *
1823
1824 <width>x - the desired width, with the height calculated
1825 proportionally based on the source image size
1826
1827 =item *
1828
1829 x<height> - the designed height, with the width calculated
1830 proportionally based on the source image size.
1831
1832 =item *
1833
1834 <size> - the desired maximum size in both directions. so "200" is
1835 equivalent to "200x200"
1836
1837 =back
1838
1839 The crop flag is a single letter "c", if present then the image should
1840 be scaled so the smaller dimension matches the requested size, and the
1841 longer dimension will be cropped to fit.
1842
1843 The fill if present is: fill(color) where color is a color recognized
1844 by the underlying graphics implementation.  This should be at least
1845 hex web colors without the #, eg fill(FF0000) will fill with red.
1846
1847 =head2 [thumb classes]
1848
1849 Each key represents a geometry identifier for use by the thumbimage[],
1850 gthumbimage[] body text tags and the <:thumbimage ...:>, <:gthumbimage
1851 ...:>, <:dthumbimage ...:> template tags.
1852
1853 The value is used as the class for the generated img tag.
1854
1855 =head2 [targets]
1856
1857 Each value represents a handler or script name for the <:dyntarget
1858 I<script> I<target> ...:> tag.
1859
1860 Each key has a TARGET version and a no-TARGET version, with the key
1861 suffixed with C<_n>.
1862
1863 The default C<nuser> target is C</cgi-bin/nuser.pl/user/TARGET>.  The
1864 default no-target C<nuser> is C</cgi-bin/nuser.pl/user>.
1865
1866 For other targets the default is
1867 C</cgi-bin/>I<script>C<.pl?a_TARGET=1> and
1868 C</cgi-bin/>I<script>C<.pl>.
1869
1870 The string C<TARGET> is replaced with the target specified in the
1871 dyntarget tag.
1872
1873 This, along with dyntarget is intended to allow a more "Web 2.0" type
1874 of access to BSE.  eg. you might set:
1875
1876   [targets]
1877   shop=/xshop/TARGET
1878   shop_x=/xshop/
1879
1880 and have a rewrite rule:
1881
1882   RewriteRule ^/xshop/(.*)$ /cgi-bin/nuser.pl/shop/$1 [PT]
1883
1884 =head2 [popimage class I<classname>]
1885
1886 This defines the settings for a class of images generated by the
1887 popimage[] and gpopimage[] body text markup tags.  For example, the
1888 settings for C<popimage[imageid|foo]> can be found in section
1889 C<[popimage class foo]>.
1890
1891 =over
1892
1893 =item html
1894
1895 The html generated for this class.  Tags of the form
1896 C<{>I<identifier>C<}> are replaced, where I<identifier> can be
1897 C<inline_> or C<outline_> followed by an image field name, for example
1898 C<inline_src> is the URL to the inline image.
1899
1900 Default: <a href="{outline_src}" rel="lightbox[id]" target="_blank"><img src="{inline_src}" alt="{inline_alt}" width="{inline_width}" height="{inline_height}" border="0" /></a>
1901
1902 The default may be tuned as needed.
1903
1904 =item inline
1905
1906 The inline image geometry.  Default: editor (the value used for
1907 thumbnails on the admin side)
1908
1909 =item outline
1910
1911 The outline image geometry.  If no value is supplied then the original
1912 image values are used.
1913
1914 =back
1915
1916 =head2 [mail resources]
1917
1918 Each key is the identifier of a file that can be attached to
1919 BSE::ComposeMail emails.  The value is comma separated filename,
1920 content type, inline status.
1921
1922 The files are searched for through the template search mechanism, so
1923 the filename can be relative to either the master or local templates
1924 directories.
1925
1926 If the content type is not supplied, if the filename end in gif, png
1927 or jpg the appropriate content type is used, otherwise
1928 application/octet-stream.
1929
1930 If the inline status is not supplied then images are considered
1931 inline, and other files arent.
1932
1933 =head2 [shop registration]
1934
1935 Each key represents a message id from attempts to checkout.  Except
1936 the all key which covers all cases.
1937
1938 If the C<all> key or the message id key is non-zero then the checkout
1939 page will redirect to registration instead of login if the cart or
1940 configuration requires that the user be logged in.
1941
1942 =head2 [template I<template-name>]
1943
1944 Settings for articles based on a particular template.
1945
1946 =over
1947
1948 =item no_cache_dynamic
1949
1950 Controls whether a cache-control: no-cache header will be produced.
1951 Can be overridden with the A and B article flags.  If not set the
1952 value of [article].no_cache_dynamic is used.
1953
1954 =back
1955
1956 =head2 [article]
1957
1958 Global settings for articles.
1959
1960 =over
1961
1962 =item no_cache_dynamic
1963
1964 Controls whether a cache-control: no-cache header will be produced.
1965 Can be overridden with the A and B article flags or [template
1966 I<template-name>].no_cache_dynamic.  If not set the value of
1967 [basic].no_cache_dynamic is used.
1968
1969 =back
1970
1971 =head2 [recaptcha]
1972
1973 For the <:recaptcha:> tag currently only used for fmail.pl.
1974
1975 =over
1976
1977 =item api_public_key
1978
1979 =item api_private_key
1980
1981 The public and private key you receive when you register with reCAPTCHA.
1982
1983 =item error_I<error_code>
1984
1985 Replace the error message for the given I<error_code> where
1986 I<error_code> is the reCAPTCHA error code
1987 (eg. "incorrect-captcha-sol") with dash replaced by underscore.
1988
1989 eg.
1990
1991   error_incorrect_captch_sol=VERY BAD INPUT
1992
1993 =back
1994
1995 =head2 [global file metadata]
1996
1997 Each key represents an item of metadata for files attached to
1998 articles.
1999
2000 The values are ignored.
2001
2002 For each key, extra information is defined in the [file metadata
2003 I<name>] section.
2004
2005 =head2 [file metadata I<name>]
2006
2007 Definition for the file metadata item I<name>.
2008
2009 =over
2010
2011 =item *
2012
2013 title - descriptive name of the metadata.  Defaults to I<name>.
2014
2015 =item *
2016
2017 rules - validation rules, separated by ;.  Custom rules can be defined
2018 in [file metadata validation].
2019
2020 =item *
2021
2022 ro - if non-zero the metadata cannot be modified directly by the admin
2023 (applications can still generate it). Default: writable.
2024
2025 =item *
2026
2027 type - the data type of the metadata, any of string, text, enum,
2028 integer, real, image.  If this is enum values must be defined and
2029 labels should be.  Default: string.
2030
2031 The types are:
2032
2033 =over
2034
2035 =item *
2036
2037 string - single line of text
2038
2039 =item *
2040
2041 text - one or more lines of text
2042
2043 =item *
2044
2045 integer - whole number
2046
2047 =item *
2048
2049 real - number with decimal points
2050
2051 =item *
2052
2053 enum - select from a list of possible values.
2054
2055 =item *
2056
2057 image - image file.
2058
2059 =back
2060
2061 =item *
2062
2063 values - semi-colon separated list of values for this metadata.
2064
2065 =item *
2066
2067 labels - semi-colon separated list of labels for the values
2068
2069 =item *
2070
2071 help - help html to display for the metadata
2072
2073 =item *
2074
2075 data_name - (images only) the key to use to store the image data.
2076 Default: I<name>_data.
2077
2078 =item *
2079
2080 width_name - (images only) the key to use to store the image width.
2081 Default: I<name>_width.
2082
2083 =item *
2084
2085 height_name - (images only) the key to use to store the image height.
2086 Default: I<name>_height.
2087
2088 =item *
2089
2090 cond - a perl expression indicating whether the metadata should be
2091 prompted for, for this file.  $file is the file object.  Default: 1.
2092
2093 =item *
2094
2095 unit - text displayed after the entry box for the metadata.  Default:
2096 empty.  Useful for including a unit ("pixels") or format help
2097 ("hh:mm").
2098
2099 =back
2100
2101 =head2 [session cleanup]
2102
2103 Controls the processing of the bse_session_clean.pl script.
2104
2105 =over
2106
2107 =item *
2108
2109 days - the minimum age in days of sessions to be removed.  Default: 30.
2110
2111 =item *
2112
2113 per - the number of records to remove per SQL delete request.
2114 Default: 1000.
2115
2116 =item *
2117
2118 count - the number of SQL delete requests to perform, maximum.
2119 Default: 1000.
2120
2121 =item *
2122
2123 optimize - whether to perform a table optimization after deleting
2124 records.  Default: 1 (set to 0 to skip optimization)
2125
2126 =back
2127
2128 =head2 [nightly work]
2129
2130 Controls the bse_nightly.pl script.
2131
2132 =over
2133
2134 =item *
2135
2136 jobs - a comma separated list of BSE background processes to run when
2137 bse_nightly.pl is run.  Default: bse_session_clean
2138
2139 =item *
2140
2141 I<other keys> - each key is a sort key, and the value is a single
2142 background task name.  This allows add-ons to setup extra tasks
2143 without overwriting each other.  The sugessted key format is:
2144
2145   99 - two digit priority - 00 is executed first, 99 last
2146   package-name - name of package the task is for
2147   unique - extra text to make the key unique, if necessary
2148
2149 =back
2150
2151 =head2 [cache]
2152
2153 Parameters controlling where cached information - eg. file upload
2154 progress is stored.
2155
2156 =over
2157
2158 =item *
2159
2160 class - the BSE::Cache compatible cache class.  See the documentation
2161 of BSE::Cache::Cache, BSE::Cache::CHI or BSE::Cache::Memcached.
2162
2163 =back
2164
2165 =head2 [db]
2166
2167 Database connection parameters.  These override the settings in
2168 Constants.pm which are deprecated.
2169
2170 =over
2171
2172 =item *
2173
2174 dsn - the DBI dsn used to connect to the database. Default:
2175 $Constants::DSN.
2176
2177 =item *
2178
2179 user - the logon to the database.  Default: $Constants::UN
2180
2181 =item *
2182
2183 password - the password for the user.  Default: $Constants::PW.
2184
2185 =item *
2186
2187 dbopts - a perl expression that should evaluate to a hash reference.
2188 Default: $Constants::DBOPTs, or an empty hashref.
2189
2190 =item *
2191
2192 class - the database wrapper class to use.  Default: BSE::DB::Mysql.
2193 No other values are currently supported.
2194
2195 =back
2196
2197 =head2 [extra a_config]
2198
2199 Defines extra configuration to be returned from the BSE system
2200 configuration.
2201
2202 Each key is the keyword in the returned JSON object.  If the key
2203 already exists it is not overwritten.
2204
2205 Each value is the name of a section in the BSE configuration.  The
2206 strings "{level}", "{generator}", "{parentid}", "{template}" are
2207 replaced with their values from the article that config is being
2208 requested for.
2209
2210 So:
2211
2212   [extra a_config]
2213   menu=level{level} menu
2214
2215   [level1 menu]
2216   alpha=One
2217   beta=Two
2218
2219 will include:
2220
2221   menu: { alpha: "One", beta: "Two" }
2222
2223 in the returned configuration
2224
2225 =head2 [cookie names]
2226
2227 This section maps BSE's default cookie names to alternate names.  This
2228 can be useful if you have two BSE sites under the same domain and need
2229 to ensure they use different cookies.
2230
2231 eg.
2232
2233   [cookie names]
2234   userid=altuserid
2235
2236 =head2 [siteuser updates]
2237
2238 Each key identifies an update specification for userupdate.pl, the
2239 value is a description of the specification.
2240
2241 See L<<[siteuser update I<specid>]>> for the rest of the import
2242 specification.
2243
2244
2245 =head2 [siteuser update I<specid>]
2246
2247 Currently contains only a single key:
2248
2249 =over
2250
2251 =item *
2252
2253 fields - a semi-colon separated list of fields to import.  Must
2254 contain one of C<id> or C<userId> which is used as a key to identify
2255 the user to update.  An C<x> entry is a field to ignore.  Some fields,
2256 such as C<confirmed> may not appear in this list.
2257
2258 =back
2259
2260 =head2 [paypal]
2261
2262 Configuration for BSE's PayPal integration.
2263
2264 It shouldn't be necessary to change any of the URLs.
2265
2266 =over
2267
2268 =item *
2269
2270 test - if true, then the PayPal sandbox is used, and the configuration
2271 entries starting in C<test_> are used.  If false, PayPal is live, and
2272 configuration entries starting in C<live_> are used.  Default: 1.
2273
2274 =item *
2275
2276 test_api_username, test_api_password, test_api_signature - API
2277 credentials for test mode.  Required in test mode.
2278
2279 =item *
2280
2281 live_api_username, live_api_password, live_api_signature - API
2282 credentials for live mode.  Required for live mode.
2283
2284 =item *
2285
2286 test_ws_url - URL to make NVP requests through in test mode.  Default:
2287 https://api-3t.sandbox.paypal.com/nvp
2288
2289 =item *
2290
2291 test_refresh_url - PayPal URL to refresh to in test mode.  Default:
2292 https://www.sandbox.paypal.com/webscr
2293
2294 =item *
2295
2296 live_ws_url - URL to make NVP requests through in live mode.  Default:
2297 https://api-3t.paypal.com/nvp
2298
2299 =item *
2300
2301 live_refresh_url - PayPal URL to refresh to in live mode.  Default:
2302 https://www.paypal.com/cgibin/webscr
2303
2304 =back
2305
2306 =head2 [paypal custom]
2307
2308 Extra parameters supplied to the SetExpressCheckout API.  See the
2309 Express Checkout Advanced Features Guide (from PayPal) for details.
2310
2311 Some settings that may be useful:
2312
2313 =over
2314
2315 =item *
2316
2317 PAGESTYLE - the style of payment page to use from those listed in your
2318 account profile.
2319
2320 =item *
2321
2322 HDRIMG - https URL to an image to use in the payment page header.
2323
2324 =item *
2325
2326 HDRBACKCOLOR - a 6 hex digit color to use as the background of the
2327 payment page header.
2328
2329 =item *
2330
2331 HDRBORDERCOLOR - a 6 hex digit color to use as the border of the
2332 payment page header.
2333
2334 =back
2335
2336 =head2 [audit log]
2337
2338 =over
2339
2340 =item *
2341
2342 mail - if non-zero any emails sent through BSE::ComposeMail are logged
2343 in the audit log.  Default: 0.
2344
2345 =item *
2346
2347 mail_max_dump - if non-zero this is the size limit of the dump stored
2348 in the audit log when [audit log].mail is enabled.
2349
2350 =back
2351
2352 =head1 AUTHOR
2353
2354 Tony Cook <tony@develop-help.com>
2355
2356 =cut