+
\ No newline at end of file
diff --git a/admin/Views/report_by_registration_MF_Data.html b/admin/Views/report_by_registration_MF_Data.html
new file mode 100644
index 0000000..e8d6470
--- /dev/null
+++ b/admin/Views/report_by_registration_MF_Data.html
@@ -0,0 +1,204 @@
+
+
+
+
\ No newline at end of file
diff --git a/admin/Views/view_attendees.html b/admin/Views/view_attendees.html
new file mode 100644
index 0000000..f611ede
--- /dev/null
+++ b/admin/Views/view_attendees.html
@@ -0,0 +1,71 @@
+
+
+ {eventsTermCap} / {attendeesTermCap}
+
+
+
+
+
+
{eventTermCap}:
{regname}
+
+
+
Dates:
+
{start_date} through {end_date}
+
+
+
+
+
Desired Date:
+
{desired_date}
+
+
Selected:
{rate_class}
+
+
{attendeesTermCap}:
+
+
+
+
+
+ {name}
+
+
+
+
+
+
Date of Birth:
{dob}
+
Parent/Guardian:
{guardian}
+
+
+
+
Emergency Contact:
{emer_contact}
+
Emergency Phone:
{emer_phone}
+
+
+
Brief Medical History:
{med_history}
+
+
+
Alergies/Medications:
{allergy_med}
+
+
+
+
+
+
+
+
+
+
+
+
+ Original Submission Summary
+
+
+
Updates do not show in this summary. See above for current data.
Welcome to the Gaslight Media Event Registration System.
+
+ In an effort to provide our customers with the best possible service, Gaslight Media will from time to
+ time make improvements to this application and correct problems that we have noticed
+ or that have been reported to us.
+ We will post information regarding such updates here so that you can be aware of improvements
+ and learn how to use new features. As always, please let us know if you have any concerns,
+ need any assistance, or would like to suggest new features.
+
+
+ Some items below refer to a "configuration option". These options are not customer selectable. Please
+ let us know if you would like to consider a change with one of these options.
+
List of configurable options
+
+
These are the configurable options for this application. Please let us know if there are any you would like to consider having changed.
+
Most of these options can be applied quickly at any time. Others may require updates to your database or other work to properly implement.
+
+
+
General customer information
+
Your organization name, address, and phone numbers as they appear in this application
+
+
+
Integrate with member database
+
If your Web site has an integrated member database, this application may be able to refer to the member accounts
+ to permit members to log in when using this application. Their address and contact information will be inserted into
+ the checkout form and any registgrations they make will be associated with them. It is also possible to provide
+ special rates for members who log in that way.
+
+
+
Registered users
+
Maintains a list of all users who have completed registrations using this system and permits them to log back in
+ when making future registrations. The address and contact information they used previously will be inserted into the
+ checkout form for them and all registrations they make will be associated with them.
+
+
+
Additional medical and emergency contact information
+
Permits requiring additional medical and emergency contact information for selected types of {eventsTerm}.
+
+
+
Save contact information
+
Saves contact information for all users who have registered into your contact database. Requires an existing
+ contact database in your Web site.
+
+
+
Default {eventsTerm} selection
+
Determines if the default {eventsTerm} selection method is used. This is the standard two-step process of first
+ selecting a {categoryTerm} then selecting a {subcategoryTerm}. If this is not selected, one of the other selection methods
+ must be used.
+
+
+
Cascading picklist {eventsTerm} selection
+
Selects whether a cascading picklist method is displayed for {eventsTerm} selection. This method displays a picklist (pull-down list)
+ of {categoriesTerm} to select from. If {subcategoriesTerm} are being used, once a {categoryTerm} is selected a second
+ picklist will be populated with {subcategoriesTerm} from the selected {categoryTerm}. The user can then submit that to view
+ a list of {eventsTerm} in the selected {categoryTerm} or {subcategoryTerm}.
+ Note that it is possible in most cases to have this picklist selection method displayed in a small form on your Website
+ so that it is always available regardless of where the user is in your site. Please let us know if this is of interest to you.
+
+
+
Select by month
+
Displays a pick list of months in which {eventsTerm} are available for registration on the initial search page.
+ This permits user to find activities in a particular month of interest.
+
+
+
Select by {eventTerm} code
+
Permits users to find an {eventTerm} by {eventTerm} code. This is helpful if you publish a list of {eventsTerm}
+ that include those codes.
+
+
+
Show {eventTerm} codes
+
Displays the {eventTerm} code for an {eventTerm} along with other {eventTerm} information in lists of {eventsTerm}
+ and {eventTerm} detail pages.
+
+
+
Show past events
+
Displays past {eventsTerm} in lists and searches. If this is not selected, only current and future {eventsTerm} are
+ displayed.
+
+
+
Restricted Area
+
+ Defines a particular Toolbox page as a "restricted" area that will display additional
+ {categoriesTerm} that are not available when on a non-restricted Toolbox page. This would generally be
+ used when a particular Toolbox page has login or other restrictions associated with it.
+
+
+
+
Automatic inactive
+
Automatically marks past {eventsTerm} as inactive. This simplifies lists of {eventsTerm} in your admin area since
+ inactive {eventsTerm} are not displayed in lists by default.
+
+
+
{categoriesTermCap} on intro page
+
The initial page is normally used for introduction to the application and possibly for members and
+ registered users to log back into the system. With this option enabled, the initial page also includes a list of
+ available {eventsTerm} {categoriesTerm} from which they may select.
+
+
+
Use {categoriesTerm}
+
This option enables the use of {eventTerm} {categoriesTerm}. If this is not enabled, a list of {eventsTerm} will
+ be offered without the use of any {categoriesTerm}.
+
+
+
Show empty {categoriesTerm}
+
Displays {categoriesTerm} in lists and searches even if there are no available {eventsTerm} in the {categoryTerm}.
+
+
+
Use {subcategoriesTerm}
+
This option enables the use of {eventTerm} {subcategoriesTerm} in addition to main {categoriesTerm}. This may be helpful
+ to users in situations where there are a large number of {eventsTerm}.
+
+
+
Show empty {subcategoriesTerm}
+
Displays {subcategoriesTerm} in lists and searches even if there are no available {eventsTerm} in the {subcategoryTerm}.
+
+
+
Use {eventTerm} {attributesTerm}
+
This option enables a list of {eventTerm} {attributesTerm} and permits assigning an {attributeTerm} to each {eventTerm}.
+ Since {attributesTerm} may require changes to how your site works and is used, this capability is turned off by default.
+
+
+
Include events in {categoryTerm} lists
+
When enabled, lists of {categoriesTerm} and/or {subcategoriesTerm} also include any active {eventsTerm} associated with them.
+ This may be helpful if you would like a single page, organised by {categoriesTerm}, from which users may directly select
+ {eventsTerm}.
+
+
+
Show rates in {eventsTerm} lists.
+
Displays a rate summary for each {eventTerm} in lists of {eventsTerm}.
+
+
+
Show {registrationTerm} cutoff dates.
+
Determines if the cutoff dates specified under "Rate Options and Dates" when editing a {eventTerm} should
+ be displayed to users. This may be helpful if you want to permit {registrationTerm} after the {eventTerm} start
+ date but don't want the user to be told they can do that. For this to make sense, only one cutoff date should be used.
+
+
+
Show {instructorTerm} in {eventsTerm} lists.
+
Determines if the {instructorTerm} is displayed in lists of {eventsTerm}.
+
+
+
Show {instructorTerm} in {eventTerm} detail.
+
Determines if the {instructorTerm} is displayed in {eventTerm} detail pages.
+
+
+
Show {eventTerm} specific terms in {eventTerm} detail.
+
Determines if the {eventTerm} terms and conditions included in the detail for a specific {eventTerm}
+ is displayed in {eventTerm} detail pages.
+
+
+
+
Custom apperance
+
This application normally uses the styles that are applied to your Web site as a whole. Because of this and the way the content
+ of this application is designed, it tends to conform well to the overall Web site appearance of most sites. In some cases, it may be
+ necessary to override these styles, or if necessary to actually re-organize the way information is being displayed. This application
+ has been designed to enable a wide range of such customization. Please let us know if you would like to consider changes.
+
+
+
+
Payment options
+
This application supports a range of payment options on checkout.
+
+
Credit Cards - may include any combination of Visa, MasterCard, American Express, Discover, and Diners Club.
+
Pay by Check - Accepts checkout but places the {registrationTerm} in an unpaid status till the check is received.
+
Cash - Indicates that the user paid, or will pay, cash.
+
Comp Code - Permits the user to enter a special code rather than provide payment.
+
+ For each of these, it's possible to specify that they may be seleced by regular users or only selected by admin users who have entered
+ the application from a link in the Website admin area. For example, if the application may be used at an {eventTerm} to {registerTerm}
+ people and to accept cash or checks, those payment type may be made available only to staff and not show to normal users who
+ {registerTerm} on-line.
+
+
+
+
Credit Card payment methods
+
Several credit card payment methods are available through this application.
+
+
Processing by merchant - Merchant lists {eventsTerm} with pending credit card payments in the admin area and processes those
+ cards manually.
+
Authorize.net - Cards are processed automatically through Authorise.net when the user checks out. Requires an Authorize.net account.
+
Merchant Solutions - Cards are processed automatically through Merchant Solutions when the user checks out. Requires a Merchant Solutions account.
+
+
+
+
+
Billing/Contact fields to show when checkout has no charges
+
These options specify which billing contact fields are requested when there are no charges at checkout (free {eventsTerm}). For example,
+ you may not need to request address and phone numbers if there is a free {eventsTerm} and you're mostly interested in getting a count of how many
+ might attend.
+
+
+
+
Optional added checkout fields
+
Set of additional fields that may be enabled in the checkout form. The title for this area of the checkout page, the fields that are used, and the
+ names for these fields are all configuable. Typically these fields are configured to use for collecting contact information that may be the same or
+ different from the billing contact information. These fields can therefore be used for a wide range of purposes.
+
+
+
+
Terms used in this system
+
A wide range of terms that are used this system may be configured to suit your needs. Terms available for configuration are currently
+ singular, plural, capitalized, and plural capitilized versions of these terms (and our default tems).
+
+
{eventTerm} (event)
+
{registrationTerm} (registration)
+
{registerTerm} (register)
+
{registeringTerm} (registering)
+
{registeredTerm} (registered)
+
{categoryTerm} (category)
+
{categoriesTerm} (categories)
+
{subcategoryTerm} (sub-category)
+
{subcategoriesTerm} (sub-categories)
+
{instructorTerm} (instructor)
+
{instructorsTerm} (instructors)
+
{attendeeTerm} (attendee)
+
{attendingTerm} (attending)
+
{attendedTerm} (attended)
+
{memberTerm} (member)
+
{user_idTerm} (user ID)
+
{passwordTerm} (password)
+
{restricted_userTerm} (employee)
+
+
+ These are specific titles and phrases that may be changed.
+
+
{registrations_title}
+
{title_use_payment_comp_code}
+
{title_payment_comp_code}
+
{title_send_a_check}
+
{title_paid_cash}
+
{title_pay_by_credit_card}
+
+
+
+
+
Default [Submissions] list sorting
+
The [Submissions] in the admin area of this application may be configured to by default sort by a
+ particular column and in either an ascending or descending direction. Once the table is displayed, other columns may be used to sort the list by
+ clicking on the column header. This options simply sets which column is used for sorting when the
+ list is first displayed.
+
+
+
Default [Submissions] status selection
+
The [Submissions] list in the adming area of this application may be configured to initially display
+ submissions matching a specific set of status values. This makes it possible to have the list normally
+ come up with submissions that have the desired status value, such as all types of pending submissions.
+
+ The status options available include: UNPAID, CC_PEND, CC_PAID, CC_DECL, CHECK_PEND, CHECK_PAID, COMP, AT_EVENT, CASH_PAID, OTHER_ADMIN, FAILED, CANCELED
+
+
+
+
+
+
+
+
Recent Updates
+
+
February 14, 2014
+
+
Minor Output Changes
+
+ {eventTermCap} location is now included in registration confirmation E-Mail messages and stored summaries.
+
+ Due to customer requests, we have added the {eventTerm} location in all E-Mail messages and stored summaries for
+ any new {registrationTerm} requests. If no location is provided for the {eventTerm}, the location line will not
+ be included in these E-Mail messages or summaries.
+
+
+ Note that summaries stored before this change will not include the location information.
+
+
+
+
+
October 30, 2013
+
+
Update to Form Processing
+
+ {eventTermCap} forms now support simple to sophisticated numeric calculations.
+
+ We added a "Calculated Field" field option to the user configurable forms that may be included with each {eventTerm}. A
+ calculated field is one that includes a formula consisting of the values of other fields along with a range of mathematical
+ operators and functions.
+
+ Fields that may have numeric values and that may be used in these formulas include "Number" fields
+ and "Checkbox", "Picklist", and "Radio Buttons" that have values assigned to their options. Formulas may be as simple as
+ adding the values of certain fields to as complex as using a mix of mathematical functions to perform complex calculations.
+
+
+ The result of these calculations is reported as a value for the "Calculated Field" along with other field data.
+
+
+
+ Certain Edit and Update operations now display the updated information after being submitted.
+
+ We updated this application to redisplay the added or updated information after submitting with the "Add New" or "Update" button.
+ It used to be that after adding or updating certain information you were required to find the new or updated item in a list. This
+ should no longer be the case and should reduce work while performing these operations.
+
+
+
+
+
+
September 13, 2013
+
+
Minor Fixes and Feature Additions
+
+ {eventTermCap} specific terms and conditions now available in {eventTerm} detail pages.
+
+ We added the ability to have {eventTerm} specific terms and conditions included in the {eventTerm} detail pages. These
+ terms and conditions were previously only being displayed in the checkout pages. Please let us know if you would like
+ this to also be displayed in the {eventTerm} detail pages users see when selecting a specific {eventTerm}.
+
+
+
+ Fixed problem with loss of text formatting when adding {eventsTerm}.
+
+ In certain cases text formatting entered would be lost when adding an {eventTerm}. This problem may have affected other areas where text
+ is entered into one of the formatted text editors when using [Add] to create a new entry. This should now be corrected.
+
+
+
+ Added option for restricting specific {categoriesTerm} to a particular Toolbox page.
+
+ Added the ability to define a particular Toolbox page as a "restricted" area that will display additional
+ {categoriesTerm} that are not available when on a non-restricted Toolbox page. This would generally be
+ used when a particular Toolbox page has login or other restrictions associated with it. Contact Gaslight
+ Media if you might be interested in using this option.
+
+
+
+
+
+
September 9, 2013
+
+
Minor Fix and Feature Addition
+
+ Fixed problem with loss of text formatting when adding {eventsTerm}.
+
+ In certain cases text formatting entered would be lost when adding an {eventTerm}. This problem may have affected other areas where text
+ is entered into one of the formatted text editors when using [Add] to create a new entry. This should now be corrected.
+
+
+
+ Added option for restricting specific {categoriesTerm} to a particular Toolbox page.
+
+ Added the ability to define a particular Toolbox page as a "restricted" area that will display additional
+ {categoriesTerm} that are not available when on a non-restricted Toolbox page. This would generally be
+ used when a particular Toolbox page has login or other restrictions associated with it. Contact Gaslight
+ Media if you might be interested in using this option.
+
+
+
+
+
May 28, 2013
+
+
Additional Reporting Field - E-Mail Address
+
+ Added E-Mail address field to reports by "Activity"
+
+ The {registrationTerm} E-Mail address that was supplied at the time the {registrationTerm} was submitted is now included in both on-screen
+ and CSV (spreadsheet) reports when "Activity" is selected for "Report by:". Note that this is not the E-Mail address for the individual registrants
+ when multiple registrants are submitted, but rather the primary contact E-Mail address submitted with the request.
+
+
+
+
+
March 21, 2013
+
+
Additional configuration options
+
+ Added ability to limit the number of billing contact fields requested at checkout when there is no charge.
+
+ In situations where there are no charges at checkout, which can happen if they select only free {eventsTerm}, you
+ may not need or what the user to submit the full set of information that is normally requested for the Billing contact. It's
+ now possible for us to configure the fields you would like to exclude when checkout is free. All billing contact fields will still
+ be displayed and required when there are charges at checkout. Please let us know if you would like to have these settings adjusted.
+
+
+
+ Improved control over the body of various E-Mail messages sent by this application.
+
+ You may now specify the Subject line and content for several types of E-Mail messages sent by this system. The settings for these
+ can be found at the bottom of the [Misc] option page in your admin area for this application. These settings may also include certain
+ information from the current {registrationTerm} in the body of the messages using tags like "{recipient}".
+
+
+ You may edit these yourself. These changes will take effect immediately. Please let us know if you would like assistance with the use of the
+ the "{}" tags for including information from the {registrationTerm}.
+
+
+
+ More configurable options for checkout page.
+
+ We have added more configurable options to control checkout page behavior. These options make it possible to have different required
+ billing information fields for each type of payment, if desired. Previously, if there were any charges on checkout, the user was
+ required to fill out complete "billing information" including name, full address, and phone numbers. It's now possible to reduce the
+ required informatin for certain billing types. For example, if paying by cash or check, the complete address and phone numbers may
+ not be necessary. Please call us if you would like to discuss these options.
+
+
+ Note that an E-Mail address is still always required.
+
+
+
+ {registrationTermCap} level selection no longer required if only one level available.
+
+ If there is only one {registrationTerm} level for a particular {eventTerm}, users will no longer see a request to select a level and will
+ no longer be required to select that one level. This simplifies user interaction and reduces confusion. The level description and level
+ name will still be displayed to the user.
+
+
+
+ Improved "Wait" messages when certain buttons are clicked.
+
+ The "Wait" message displayed on certain steps when a button is clicked have been improved to make it more obvious what is taking place
+ and that the user needs to wait for the result to be displayed. This message replaces the button to prevent users from clicking the
+ button twice and causing duplicate submissions. Occasionally users became confused as to what to expect. This should help relieve that
+ confusion.
+
+
+
+
+
+
February 19, 2013
+
+
Major Version Upgrade: Version 3
+
+ Added ability to override payment options by {eventTerm}.
+
+ A new section and new fields have been added to the screen for editing a {eventTerm} in the admin area. These "Payment Options"
+ let you override checkout payment options for a specific {eventTerm}. Checking one of the options in this area will cause that
+ payment option to only be available to administrative users. Regular front-end users will not see that payment option at checkout
+ if that specific {eventTerm} has been selected.
+
+
+ Available payment options are configured for you when we install and configure this application for your site. These may include
+ payment by credit card, cash, check, or by entering a comp-code. For each type of payment, we can completely disable it, make it
+ only accessible to administrative users, or make it useable by all front-end users. These override fields can only affect those
+ payment options set to be available to all front-end users. Please let us know if you need any changes related to these options.
+
+
+ Please note that since this application lets users select multiple {eventsTerm} and then pay for them as a group, payment options
+ that have been overriden for any of the selected {eventsTerm} will not be available for payment for the other {eventsTerm}. If the
+ user were then to remove the one {eventTerm} from their cart that has the payment overide set, that payment type would again be available
+ to them on checkout.
+
+
+
+ Ability to limit number of {attendeesTerm} per {registrationTerm}.
+
+ It is now possible to limit the number of {attendeesTerm} who may be submitted for each {registrationTerm}. This feature is only used if
+ "Ask for {attendeesTerm}" is selected for the event. Note that this is not the maximum number of {attendeesTerm} for the entire {eventTerm},
+ but only the number who can be entered for an individual {eventTerm} submission.
+
+
+
+ Calendar of available dates for {registrationsTerm} that ask for a desired date.
+
+ {registrationsTermCap} that are set to ask for a desired date may now have specific dates that the user may select. A new [Dates Calendar] admin menu
+ option displays a set of calendars, one year at a time, in which specific dates may be selected when the {registrationTerm} is available. The
+ front-end user will only be able to select available dates from the pop-up calendar.
+
+
+
+ A problem with listing and editing {attendeesTerm} in sites that don't use {subcategoriesTerm} has been fixed.
+
+ A problem was reported where lists of {attendeesTerm} did not properly display when viewing a {registrationTerm} in the administration area.
+ It was also reported that it was not possible to edit the list of {attendeesTerm} for a submitted {registrationTerm}. Both of these
+ problems were only affecting sites that do not use {subcategoriesTerm} and both problems have now been fixed.
+
+
+
+ Support added for additional fields in checkout form.
+
+ Support has been added for a limited set of additional fields of requested data in the {registrationsTerm} checkout page.
+ This capability is turned off by default but may be enabled on request. The default for these fields, if enabled, is name,
+ address, and telephone numbers for a main contact that might be the same or different from the billing information. The title
+ of this area, the names of the various fields, and which fields to display is also configurable. Because of this, the additional
+ fields may be used for a variety of purposes. Please contact Gaslight Media if you would like to discuss enabling these fields.
+
+
+
+ The subject and notification messsage sent in E-Mail to {instructorsTerm} when a {eventTerm} {registrationTerm} is submitted is now editable.
+
+ You may now edit the subject line and the introduction message sent in E-Mail to {instructorsTerm} when a {registrationTerm} is
+ submitted. To edit these items, use the [Misc] menu item in the administration area. You'll find these fields near the bottom.
+
+
+
+ The subject and notification messsage sent in E-Mail to {attendeeTerm} when a {eventTerm} {registrationTerm} is submitted is now editable.
+
+ You may now edit the subject line and the introduction message sent in E-Mail to {attendeeTerm} when a {registrationTerm} is
+ submitted. To edit these items, use the [Misc] menu item in the administration area. You'll find these fields near the bottom.
+
+
+
+ Certain text fields in administration area now retain formatting and are more language compliant.
+
+ Certain text fields in the administration area will now retain some formatting and are more compliant with the characters used
+ in various languages. You are encouraged to keep formatting in these fields to a minimum, but line and paragraph breaks, bolding,
+ italics, tables, and (within reason) text sizes and colors may be used.
+
+
+ Please note that you use of the "Source" button, which permits editing the HTML codes directly, is discouraged as errors can cause
+ serious problems with the entire Web page. Please let us know if you would like this button completely dissabled.
+
+
+
+ Text area fields now more readable in administration area.
+
+ When viewing information in the administration area, text fields that accommodate more than one line of text now will be displayed with a light border around them.
+ This makes it easier to see what text is associated with which field. There will not be a border around text fields that only accept a single line. Text fields
+ that have no content will now be indicated as "( no text supplied )" when viewing the information in the administration area. No change has been made to how
+ this text is displayed to users on the front-end, this is simply to make use of the administration area a bit easier.
+
+
+
+ Cutoff dates no longer required for {eventsTerm} that are not date-specific.
+
+ {eventsTermCap} that are not date-specific no longer require a cutoff date. This permits creation of {eventsTerm} that can be used
+ indefinately. Also, when date-specific is not selected, only the first cutoff date settings and rates are displayed when editing
+ or viewing an {eventTerm}.
+
+
+
+ Added desired date request field for {eventsTerm} that are not date-specific.
+
+ You may now set an {eventTerm} to request a desired date from the user as they submit their {registrationTerm}. This will
+ only be requested when the {eventTerm} is set to NOT BE date-specific. This permits you to have {eventsTerm} that are
+ perpetual but where you would like to know when they may be {attendingTerm}.
+
+
+
+ More terms are now configurable.
+
+ It is now possible to have us configure the specific words you'd like to use for certain additional terms. These include terms
+ for {categoriesTerm}, {subcategoriesTerm}, and {instructorsTerm}. To see a complete list of configurable terms, click on the "Show"
+ button above for the "List of configurable options".
+
+
+
+ Certain information for each {eventTerm} in lists and detail pages can be dissabled.
+
+ We added more configuable options to determine if certain types of information is displayed in lists or detail pages of
+ {eventsTerm}. Please let us know if there's certain {eventTerm} information you would like to have displayed or not have displayed.
+
+
+
+ Improved display and management of {categoriesTerm} and {subcategoriesTerm}.
+
+ Some of our customers who are using {subcategoriesTerm} in this system found that having {subcategoryTerm} names that are the
+ same under different {categoriesTerm} caused confusion. To avoid this we added more information to the {eventTerm} view and edit
+ pages in the admin area. The selected {categoryTerm} is now displayed in most of these pages. Also, when selecting a
+ {subcategoryTerm} for a particular {eventTerm}, the pick-list now displays both the {categoryTerm} and the {subcategoryTerm}.
+
+
+
+ Duration field added to {eventsTerm}.
+
+ A "Duration" field has been added to {eventsTerm}. This is a new descriptive field in which you can place an explanation
+ of the duration or length of time for the {eventTerm}. If this field is empty, that field and the associated title for it are
+ not displayed to the user.
+
+
+
+ The [Enter New Registration] link in the admin area now takes you directly to an {eventTerm}.
+
+ The [Enter New Registration] link at the top of the page in the admin area normally takes you directly to the front-end
+ area for {registrationsTerm}. Now, if you are viewing a particular {eventTerm}, this link will take you directly to that
+ {eventTerm} in the front-end.
+
+
+
+ A "{attributeTerm}" field feature has been added to this system.
+
{attributeTerm}
+ You may now create a list of {eventTerm} {attributesTerm} and assign an {attributeTerm} to each {eventTerm}. This means
+ that you may now have another way to idetify and search {eventsTerm}. These {attributesTerm} are independant of {categoriesTerm}
+ and {subcategoriesTerm}.
+
+
+ Since {attributesTerm} may require changes to how your site works and is used, this capability is turned off by default. Please
+ let us know if you would like to have this capability enabled and integrated into your site.
+
+
+
+
+
+
2012 Updates
+
+
+
December 18, 2012
+
+
+ Fixed problem with {eventTerm} notification not being sent to listed {eventTerm} contacts.
+
+ A problem was reported in which {eventTerm} contacts were not reciving notification when a {registrationTerm} occured.
+
+
+ When editing an {eventTerm}, there is a set of fields listed as "E-Mail Notification To". These fields may hold one or more
+ E-Mail addresses of additional contacts you would like notified each time someone submits a {registrationTerm}. Adding a notification
+ address will result in an additional field being created for an additional address. It is, however, best to not list any
+ more than 4 addresses for each {eventTerm}.
+
+
+ This notification is separate from the notification you recieve for each {registrationTerm}. Those notifications were not
+ affected by this problem.
+
+
+
+
+
November 29, 2012
+
+
+ Added option to show or not show {registrationTerm} cutoff dates.
+
+ It is now possible to have the {registrationTerm} cutoff dates appear or not appear in lists and {eventsTerm} detail pages
+ to front-end users.
+
+
+
+
+
November 14, 2012
+
+
+ Added configuration option to display rates and prices in {eventTerm} lists
+
+ This application may now be configured to display rates and prices in lists of {eventsTerm}. If enabled, it will attempt to display a textual description of the
+ available rates and prices, associated cutoff dates, available rate options, per {attendeeTerm} charges, and the number of {attendeesTerm}
+ included in the base rates.
+
+
+
+
+
November 8, 2012
+
+
+ Fixed problem with formating being stripped from large text (description) fields in admin area.
+
+ A problem was introduced in the last major update that caused some text formatting in description fields to be lost when submitted
+ in the admin areas. This was a result of a global security feature used to protect the system from nefarious input, part of which
+ should not have been applied to these larger text fields. This has been corrected.
+
+
+
+
+
November 1, 2012
+
+
+ Updated to support new system software and PCI DSS compliance
+
+ This application has been updated to be compatible with new server system software. Technically, we updated the code to work with PHP 5.3 and later.
+ This update ensures that the application will continue to have a migration path to new servers as we deploy them. More importantly for our customers,
+ the new system software and the way we have it deployed is a much more restrictive security environment. This will be important for customers doing
+ credit card processing since banks and card clearing houses are more and more insisting on compliance with the "Payment Card Industry Data Security Standard"
+ (PCI DSS Compliance).
+
+
+ Your bank, credit card processor, or credit card clearing house may require PCI Compliance or may ask for that in the future. Please contact us if
+ this becomes the case so we can work with them and you to provide certification. This generally requires a third-party security scan of your Web site and the
+ applications associated with it along with the completion of a form specifying various aspects of your Web site, the systems behind it, and the
+ process by which you handle credit card information. Gaslight Media has specific systems that we maintain as PCI compliant for those requiring that.
+ Now with this application updated to the new system software, it too should be compatible with PCI compliance. Please contact us if you need
+ additional information.
+
+
+
+ Report processing enhanced to permit significantly larger reports
+
+ A problem came up earlier where a customer was attempting to produce reports with a large number of {eventsTerm} and attendees along with
+ considerable additional form data in which our systems were simply running out of memory. We have now made additional changes to report to
+ permit considerably larger reports without exhausting system memory.
+ You should now be able to produce reports in which there are many thousands of entries with a few form fields or as many as several thousand
+ entries with a large number of form fields (perhaps 50 or more).
+
+
+
+ CSV (spreadsheet) reports have been reworked to be more usable in spreadsheets
+
+ Previously, some of these reports included extra rows of headers to permit CSV output that could include the data from multiple forms.
+ This turned out to be unusable for further processing in spreadsheets or for import into other database programs. Now reports may only have
+ output of the additional form data selected when reporting on a single {eventsTerm}, but those reports now have the form data headers
+ at the top of the sheet rather than mixed in with each result. In addition, each line of the report includes all data relevant to that
+ result so data is not orphaned when sorting the spreadsheet.
+
+
+ It is also now possible to select the form field IDs for the headers instead of the field titles. In situations where customers were using
+ long form field titles, the reports because diffiult to read and manage. Note that if you click on the field IDs when editing a form, that
+ you can provide a custom ID that would better relate to the data. Also note that keeping field titles shorter is generally a good idea. Each
+ input field can include a more extensive description in addition to the title. Keeping the title short and using the description for additional
+ direction to the user will not only keep your forms better organized, but will help when reporting with field titles.
+
+
+
+
+
October 25, 2012
+
+
+ Admin usability issues with recent Internet Explorer browsers
+
+ A problem was reported with certain admin area pages that didn't function properly or look right
+ when viewed with certain current versions of Internet Explorer. These problems included alignment
+ of some input fields and difficulty submitting report requests. These problems have been corrected.
+
+
+
+ Server memory could be exhausted when producing reports
+
+ A problem was reported where an attempt to produce certain reports resulted in our servers running out
+ of memory available to the report. This would only happen if the conferences included a complex form and there were a large
+ number of submissions (hundreds). We have made changes to avoid this problem for now, but will be making
+ further changes to fully eliminate the problem in the future and to permit reports containing thousands
+ of submissions with large forms.
+
+
+
+
+
October 16, 2012
+
+
+ Checkout problems caused by form text pasted in from some word processing applications corrected
+
+ We noticed that it was possible to paste some types of text that was copied from some word processing programs into form fields
+ that would cause problems when the user attempted to submit the checkout form. Measures were added to exclude the character
+ codes that were causing this.
+
+
+ This change may mean that some formatting and odd characters copied from these word processing programs may not be included
+ in the stored user input. However, all actual user text will be preserved.
+
+
+
+ Additional tests have been added to detect problems on checkout
+
+ We added more tests to make sure that checkout problems are properly detected and reported, and added more explicit
+ messages so that users will better understand what happened. In doing so, we also added tests to make sure that a
+ user's credit card is never charged multiple times due to repeated attempts to resubmit the checkout page.
+
+
+ In the event that there is a problem storing a request but the user's credit card had already been charged,
+ an E-Mail will immediately be sent to your contact address notifying you of this problem. That E-Mail will
+ include as much user contact information as possible. This information will also help you identify any
+ related credit card transactions and permit you to contact the user as soon as possible.
+
+ Some {eventsTerm} have been displaying incorrect attendee counts while the Reports displayed the correct number of attendees. This has been
+ corrected and the processes for updating the attendee counts has been reverified. All attendee counts in {eventsTerm} were subsequently reconciled
+ and discrepancies corrected.
+
+
+ It was also noticed that the system was not maintaining proper counts for some {eventsTerm} that do not have attendee limits. This has also been corrected.
+
+
+ Note that only {eventsTerm} that ask for attendees report these counts. If you do not ask for attendees, you will see no changes.
+
+
+
+
+
October 5, 2012
+
+
+ Issues with Internet Explorer version 9 resolved
+
+ Users with certain versions of Internet Explorer who have certain setting configured were reporting problems with using a few of the
+ buttons in this system. Those problems have been corrected. Please report any additional problems that occur with specific Web
+ browsers.
+
+
+
+
+
September 18, 2012
+
+
+ Sub-Form problems with duplicated {eventsTerm} resolved
+
+ One customer reported problems with sub-forms after duplicating an {eventTerm}. When sub-forms in a duplicated form were edited,
+ it was possible that sub-forms of the original {eventTerm} were also modified. This problem only affected sub-forms.
+
+
+ This problem has now been resolved and a process has been run to correct all existing forms. However, if you do use
+ sub-forms, have used the {eventTerm} [Duplicate] feature, and then edited the duplicate, you should check your forms to make sure
+ they are correct.
+
+
+
+ Additional data from forms being added to reports
+
+ Reports, including CVS output of reports, may now include all form data that was submitted by the user. There is a
+ checkbox option for reports to indicate if you would like this data included in the report.
+
+
+
+
+
September 11, 2012
+
+
+ Output clean-up for cart and checkout completed - Style override now possible
+
+ Some sites were having problems with the layout and justification of information in the cart and checkout pages.
+ Most of these problems were traced to incompatibilities between the Event Registration application styles and the main
+ Web site styles. Those issues have now been resolved.
+
+
+ A side benefit of this work is that we can now easily override specific style attributes in the Event Registration application
+ for individual customer Web sites. For example, it's now easy for us to change the color of a border, background, or text
+ in the Event Registration application to better match the appearance of the Web site.
+
+
+ Please let us know if you have concerns about specific appearance issues.
+
+
+
+ Credit Card authorization codes now searchable
+
+ A new filter field has been added to the [Submissions] list in the admin area for the Event Registration application
+ to permit searching for submissions with specific credit card authorization codes.
+
+
+ Note that you may want to select "Paid by Credit Card" for Status or simply leave that blank to make sure you find
+ the desired submissions. Also note that, as it is with most of the other filter fields, you may enter any portion of
+ the authorization code and the system will locate any entries where that match anywhere in the Credit Card authorization code.
+
+
+
+
+
September 5, 2012
+
+
+ Enhanced ability to override the appearance of front-end content visible to users
+
+ Much of the appearance of the front-end content area for this Event Registration Application may be
+ customized to match the look of each customer's Web site appearance. Some changes were made to make
+ this customization easier to do when only minor style changes are desired.
+
+
+ Please contact us if you would like consider changes to the appearance of this Event Registration Application.
+
+
+
+ Fixed some chart and checkout layout issues
+
+ In some cases for certain customers the positioning of certain elements (generally dollar values) in the
+ Cart, Checkout, and summary pages was wrong. This has been fixed.
+
+
+
+
+
September 1, 2012
+
+
+ Ability to set default behavior for lists in the administration area of Event Registration System
+
+ Due to a customer request, it's now possible for us to set a default column and direction for ordering of
+ items in the [Submissions] list. You may still click on a column header in most of the administration lists to
+ have the list sorted by that column or to change the direction in which it's sorted.
+
+
+ It's also now possible to set a different default selection for the "Status" pick-list displayed at the top of the
+ [Submissions] list. You may of course override that selection by clicking on other items.
+
+
+ Please let us know if you would like us to set the defaults for this or other lists to something different than how
+ it is now.
+
+
+ Hint: Press the "Shift" or "Ctrl" key when clicking on the "Status" pick-list to select more than one option.
+
+
+
+
+
August 30, 2012
+
+
+ New Credit Card Payment Gateway Added
+
+ This Event Registration System is now capable of processing credit cards through Merchant Solutions.
+
+
+ http://www.merchantsolution.com/
+
+
+ In addition to Merchant Solutions, this system is capable of processing credit cards through Authorize.net
+ or can hold card data for manual processing. Please let us know if you would like to change how
+ cards are processed on your site.
+
+
+
+ Toolbox ID now intelegent
+
+ The Event Registration System is now more intelligent regarding the GLM Toolbox ID it uses.
+ Previously, if different menu options (Toolbox pages) were used to access this application, the currently selected menu would
+ change as the user progressed into this application. This no longer happens.
+
+
+ This permits any number of Toolbox pages to be associated with this application and to target specific {categoriesTerm} or
+ {eventsTerm} without confusion and without having to turn on the Toolbox page for this application.
+
+
+
+
+
August 24, 2012
+
+
+ {eventTermCap} Codes may now be displayed to users
+
+ {eventTermCap} Codes may now be displayed with {eventTerm} data in listings and detail pages.
+ A configuration option has been added to enable/dissable this feature. Please contact us if you would like the setting for your site changed.
+
+
+
+ Corrected {eventTermCap} Code field title in Admin
+
+ The "{eventTermCap} Code" field for listing, displaying, and editing {eventsTerm} was previously marked as for "Internal use only".
+ This is no longer true (see item above), so the field title was updated to remove that reference.
+
+
+
+ New "Filters" for {categoriesTermCap} and {subcategoriesTermCap} list in Admin area
+
+ A "Filter" has been added to help in searching the list of {categoriesTermCap} in the admin area. You may now enter a {categoryTerm} name or
+ any part of a {categoryTerm} name in the "Name" field below "Select items to list" to display only matching {categoriesTerm}.
+
+
+ "Filter" fields have been added to help in searching the list of {subcategoriesTermCap} in the admin area. You may now enter a {subcategoriesTerm} name or
+ any part of a {subcategoryTerm} name in the "Name" field or select a desired {categoryTermCap} below "Select items to list" to display only matching {categoriesTerm}.
+
+
+
+ Added sort order to {categoriesTermCap} and {subcategoriesTermCap}
+
+ There is now an "Order" field for {categoriesTermCap} and {subcategoriesTermCap} in the admin area.
+ This is a numeric field that is used to set the display order in listings for front-end users. Lower numbers cause the entry
+ to be higher in the list and larger numbers cause the entry to be farther down in the list. The order
+ of entries that have the same Order number is determined by alphabetical order of the Name field.
+
+
+ Note that your site may or may not be using {categoriesTermCap} or {subcategoriesTermCap}. Please let us know if you would like to add or remove that feature.
+
+
+
+
+
August 13, 2012
+
+
+ Added option to display {eventsTermCap} in {categoriesTerm}
+
+ A configuration option has been added to enable/disable the display of {eventsTerm} in
+ {categoryTerm} (or {subcategoryTerm}) lists. This would be appropriate when there are a short list of {eventsTerm}
+ under each {categoryTerm}.
+
+
+
+ Added option to only display {categoriesTerm} that have active {eventsTermCap}
+
+ A configuration option has been added to enable/disable the display of only {categoriesTerm} (and {subcategoriesTerm})
+ that have active {eventsTerm}.
+
+
+
+
+
August 9, 2012
+
+
+ Expired {eventsTermCap}
+
+ A configuration option has been added to enable/disable the display of past {eventsTerm}.
+ Please let us know if you would like expired {eventsTerm} that are marked as "Active" to
+ continue to appear in your lists of available {eventsTerm}.
+
+
+
+ Downloadable file per {eventTermCap}
+
+ {eventsTermCap} may now include a file and optional description that is listed along with descriptions of the {eventTerm}.
+ A link will to this file will be displayed in {eventTerm} listings and {eventTerm} detail pages. This file is provided
+ when creating or editing an {eventTerm}.
+
+
+
+ Print/E-Mail reports
+
+ Reports may now be printed or E-Mailed to someone using options at the top of report output.
+
+
+
+ Date Specific / Perpetual {eventsTermCap}
+
+ An {eventTerm} may now be either Date Specific or Perpetual. Perpetual {eventsTerm} are shown to user as long as they are
+ set to active and do not show start and end dates. The checkbox for this is located just above the start and
+ end dates when editing {eventsTerm}.
+
+
+
+ Terms removed
+
+ The terms used to refer to {eventsTerm} has been removed from the bottom of {eventTerm} configuration screens. These were
+ never actually used by customers and created consistency problems for output to users. Instead, there are
+ additional configuration options we can set for you to tailor the terms used for various purposes. (i.e.
+ instead of "{eventTermCap}", we can set "Class", "Activity", or some other desired term)
+
+
+
+ Additional filters for {eventTermCap} list
+
+ Additional filters have been added at the top of the list of {eventsTerm} in this administration area. These
+ include filters for Date Specific and {eventTerm} start and end dates. The filter for listing "Active" {eventsTerm}
+ has been changed to default to "Yes" (show only active {eventsTerm}).
+
+
+
+ Past {eventsTermCap} automatically change to Active "No"
+
+ By default, past {eventsTerm} will now be set to inactive each time the {eventTerm} list is displayed in the administration area.
+ This should simplify working with lists of current and future {eventsTerm} in the administration area since past {eventsTerm} now no longer show by default.
+ If this behavior is not desired, we do have a configuration option we can set to disable that.
+
+
+
+ Better administration list ordering
+
+ Lists in the administration area now have a more obvious "sort by column" feature. Simply click on the title of
+ a column to sort the list in order of that column. Clicking a second time will cause the sort to be in reverse order.
+ A up or down arrow will indicate which column and in which direction the list is sorted. Also note the prompt text
+ at the top of each list reminding you of this feature.
+
+
+
+ Better tracking of submissions by selected Rate Option
+
+ The system is now storing the rate option selected by the user and the "cutoff date" associated with each {eventTerm}
+ selected in a way that improves reporting. The reporting enhancements associated with this change are pending and
+ should be implemented shortly.
+
+
+
+ Internal changes
+
+ In addition to the items listed above, a number of minor fixes and output changes have been made to correct for
+ issues reported to us by customers.
+
+
+
+
+
+
+
+
+
+
+
+ Gaslight Media
+ 120 E. Lake Street
+ Petoskey, MI 49770
+ 231-487-0692
+ info@gaslightmedia.com
+
+
+
+
For some reason your last request could not be completed.
+
+ We\'re sorry for the inconvenience. If this continues to be a problem for you,
+ please call Gaslight Media at 231-487-0692 and tell us what is displayed below.
+
, , FALSE, b_4, ev',
+ 'regbulletin' => 'regbulletin, richtext.600.200.encoded, Text for top of first page, FALSE, regbulletin, euv',
+ 'cat_page_text' => 'cat_page_text, richtext.600.200.encoded, Text for top of Category page, FALSE, cat_page_text, euv',
+ 'sub_cat_page_text' => 'sub_cat_page_text, richtext.600.200.encoded, Text for top of Sub-Category page, FALSE, sub_cat_page_text, euv',
+ 'select_page_text' => 'select_page_text, richtext.600.200.encoded, Text for top of '.$v['eventTermCap'].' selection page, FALSE, select_page_text, euv',
+ 'event_page_text' => 'event_page_text, richtext.600.200.encoded, Text for top of '.$v['eventTermCap'].' detail page, FALSE, event_page_text, euv',
+ 'cart_page_text' => 'cart_page_text, richtext.600.200.encoded, Text for top of Shopping Cart page, FALSE, cart_page_text, euv',
+ 'checkout_page_text' => 'checkout_page_text, richtext.600.200.encoded, Text for top of Checkout page, FALSE, checkout_page_text, euv',
+ 'summary_page_text' => 'summary_page_text, richtext.600.200.encoded, Text for top of Summary page, FALSE, summary_page_text, euv',
+ 'b_3' => 'b_3, break.
No '.$v['categoriesTermCap'].'! Please add '.$v['categoriesTermCap'].' first.
';
+ break;
+ }
+
+ if( $Option == 'Add New' )
+ {
+ $sort = 9999;
+ }
+
+ $cat_fields = array
+ (
+ 'id' => 'id, int, ID, DISPLAY, id, euvl',
+ 'name' => 'name, text.50, Name, UNIQUE, name, naeuvlf',
+ 'todo' => 'todo, pointer.todo.name,Main Category, TRUE, todo, naeuvlf',
+ 'image' => 'image, image.t, Image, FALSE, image, naeuv',
+ 'descr' => 'descr, richtext.600.200.encoded, Description, FALSE, descr, naeuv',
+ 'sort' => 'sort, order, Order, TRUE, sort, naeuvl'
+ );
+
+ $r = admin_process_records_r
+ (
+ "category", // Table
+ '', // Where
+ 'name', // Order fields
+ CONN_STR, // Connect String
+ $id, // Current ID
+ $cat_fields, // Fields array
+ 'new,view,edit,delete,strong,filter,sortlinks', // Options
+ 20, // Rows
+ THIS_SCRIPT, // URL
+ 'Tod_Cat', // Action
+ "", // Passed parameter
+ $v['subcategoriesTermCap'], // Base Title
+ array(), // View string
+ $Option, // Option
+ $start, // Starting row for lists
+ '', // Other Options
+ '' // Title View
+ );
+
+ $v['body'] .= $r['text'];
+
+ break;
+
+ case "Att":
+
+ if( $Option == 'Add New' ) {
+ $sort = 9999;
+ }
+
+ $attr_fields = array
+ (
+ 'id' => 'id, int, ID, DISPLAY, id, euvl',
+ 'name' => 'name, text.50, Name, UNIQUE, name, naeuvlfd',
+ 'descr' => 'descr, richtext.600.200.encoded, Description, FALSE, descr, naeuvd',
+ 'sort' => 'sort, order, Order, TRUE, sort, naeuvl'
+ );
+
+ $r = admin_process_records_r
+ (
+ "attribute", // Table
+ '', // Where
+ 'name', // Order fields
+ CONN_STR, // Connect String
+ $id, // Current ID
+ $attr_fields, // Fields array
+ 'new,view,edit,delete,strong,sortlinks', // Options
+ 20, // Rows
+ THIS_SCRIPT, // URL
+ 'Att', // Action
+ "", // Passed parameter
+ $v['attributesTermCap'], // Base Title
+ array(), // View string
+ $Option, // Option
+ $start, // Starting row for lists
+ '', // Other Options
+ '' // Title View
+ );
+
+ $v['body'] .= $r['text'];
+
+ break;
+
+ case 'Eve':
+
+ // Check for a "Add" action and ask the user to select a main category (todo) first
+ if ($config->event_registration->sub_categories && $Option == 'Add' &&
+ (!isset($_REQUEST['todo']) || ($_REQUEST['todo']-0) <= 0) ) {
+
+ // Get list of main categories (todo)
+ $sql = "
+ SELECT id, name
+ FROM todo
+ WHERE id IN
+ (
+ SELECT DISTINCT todo FROM category
+ )
+ ORDER BY sort, name;
+ ";
+ $todos = reg_db_auto_get_data( $sql, SI_CONN_STR, FALSE );
+
+ $v['body'] .= '
+ New '.$v['eventTermCap'].'
+ (Required fields in red)
+
+
Note: Only '.$v['categoriesTermCap'].' that have '.$v['subcategoriesTermCap'].' are shown.
+ ';
+
+ break;
+ }
+
+ // Check for duplicate request
+ if( $Option == 'Duplicate')
+ {
+ // If we have a good id and good data
+ if(($src_id = ($id-0)) > 0 &&
+ ($src_data = db_auto_get_row( "SELECT * FROM reg WHERE id = $src_id;", 0, CONN_STR, FALSE )) )
+ {
+
+ // Copy the registration (event) data to a new ID adding --DUPLICATE-- to the name
+ $sql = "
+ INSERT INTO reg
+ (
+ category,
+ name,
+ descr,
+ notify_email,
+ active,
+ image,
+ start_date,
+ end_date,
+ dates,
+ times,
+ duration,
+ location,
+ cutoff_date,
+ cutoff_date2,
+ cutoff_date3,
+ cutoff_date4,
+ rates_descr,
+ rates_1,
+ rates_2,
+ rates_3,
+ rates_4,
+ attendee_limit,
+ attendee_max,
+ attendee_count,
+ form_revision,
+ sort,
+ terms,
+ notes,
+ need_attendees,
+ event_code,
+ short_descr
+ )
+ VALUES
+ (
+ ".$src_data['category'].",
+ '--DUPLICATE-- ".addslashes($src_data['name'])."',
+ '".addslashes($src_data['descr'])."',
+ '".addslashes($src_data['notify_email'])."',
+ '".$src_data['active']."',
+ '".addslashes($src_data['image'])."',
+ ".($src_data['start_date']==''?'null,':"'".addslashes($src_data['start_date'])."',")."
+ ".($src_data['end_date']==''?'null,':"'".addslashes($src_data['end_date'])."',")."
+ '".addslashes($src_data['dates'])."',
+ '".addslashes($src_data['times'])."',
+ '".addslashes($src_data['duration'])."',
+ '".addslashes($src_data['location'])."',
+ ".($src_data['cutoff_date']==''?'null,':"'".addslashes($src_data['cutoff_date'])."',")."
+ ".($src_data['cutoff_date2']==''?'null,':"'".addslashes($src_data['cutoff_date2'])."',")."
+ ".($src_data['cutoff_date3']==''?'null,':"'".addslashes($src_data['cutoff_date3'])."',")."
+ ".($src_data['cutoff_date4']==''?'null,':"'".addslashes($src_data['cutoff_date4'])."',")."
+ '".addslashes($src_data['rates_descr'])."',
+ '".addslashes($src_data['rates_1'])."',
+ '".addslashes($src_data['rates_2'])."',
+ '".addslashes($src_data['rates_3'])."',
+ '".addslashes($src_data['rates_4'])."',
+ '".$src_data['attendee_limit']."',
+ ".$src_data['attendee_max'].",
+ ".$src_data['attendee_count'].",
+ ".$src_data['form_revision'].",
+ ".$src_data['sort'].",
+ '".addslashes($src_data['terms'])."',
+ '".addslashes($src_data['notes'])."',
+ '".$src_data['need_attendees']."',
+ '".addslashes($src_data['event_code'])."',
+ '".addslashes($src_data['short_descr'])."'
+ )
+ RETURNING id;
+ ";
+
+ // Insert the new duplicate and get the new ID
+ $ret = db_auto_get_row( $sql, 0, CONN_STR, FALSE );
+ $dst_id = $ret['id'];
+
+ // Get any form data for the original
+ $sql = "
+ SELECT *
+ FROM magicform
+ WHERE form_id = '$src_id'
+ OR form_id LIKE '$id.%'
+ ORDER BY form_id;
+ ";
+
+ $src_form_fields = reg_db_auto_get_data( $sql, CONN_STR, FALSE );
+ if (is_array($src_form_fields) && count ($src_form_fields) > 0) {
+
+ // We have some form field information, so duplicate that also
+ $sql = '';
+ foreach ($src_form_fields as $s) {
+
+ // Translate form_id for this field entry
+ if ($s['form_id'] == $src_id) {
+ $new_id = $dst_id;
+ } else {
+ $new_id = "$dst_id.".substr($s['form_id'],strlen($src_id)+1);
+ }
+
+ // Check for IDs in data1 and translate them
+ $s['data1'] = str_replace('~'.$src_id.'.', '~'.$dst_id.'.', $s['data1']);
+
+ $sql .= "
+ INSERT INTO magicform
+ (
+ form_id,
+ custom_id,
+ title,
+ type,
+ descr,
+ active,
+ required,
+ data1,
+ sort,
+ expanded,
+ style,
+ file,
+ cols,
+ rows,
+ size,
+ format,
+ default_val
+ )
+ VALUES
+ (
+ '$new_id',
+ '".$s['custom_id']."',
+ '".addslashes($s['title'])."',
+ ".$s['type'].",
+ '".addslashes($s['descr'])."',
+ '".$s['active']."',
+ '".$s['required']."',
+ '".addslashes($s['data1'])."',
+ ".$s['sort'].",
+ '".$s['expanded']."',
+ '".addslashes($s['style'])."',
+ '".addslashes($s['file'])."',
+ ".$s['cols'].",
+ ".$s['rows'].",
+ '".addslashes($s['size'])."',
+ '".addslashes($s['format'])."',
+ '".addslashes($s['default_val'])."'
+ );
+ ";
+ }
+ reg_db_auto_exec( $sql, 0, CONN_STR, FALSE );
+
+ } // If have src_form data
+
+ } // Option Duplicate
+ $Option = 'View';
+ $id = $dst_id;
+ }
+
+ if( $Option == 'Add New' )
+ {
+ $attendee_count = 0;
+ $form_revision = 1;
+ }
+
+
+ $date_specific = filter_request('date_specific', FILTER_SANITIZE_STRING);
+ $start_date = filter_request('start_date', FILTER_SANITIZE_STRING);
+ $end_date = filter_request('end_date', FILTER_SANITIZE_STRING);
+ $cutoff_date = filter_request('cutoff_date', FILTER_SANITIZE_STRING);
+
+ if( ($Option == 'Add New' || $Option == 'Update') &&
+ $date_specific == 'on' &&
+ ($start_date == '' || $end_date == '' || $cutoff_date == '') ) {
+ $v['body'] .= '
Error:
Start, End, and First Cutoff dates are required for a Date Specific '.$v['eventTermCap'].'.
+ Click "Back" on your browser to make necessary corrections
';
+ break;
+ }
+
+ // Check if we're supposed to automatically mark past events as inactive
+ if ($Option == 'List' && $config->event_registration->auto_inactive) {
+ $sql = "UPDATE reg SET active = 'f' WHERE end_date < 'today'";
+ reg_db_auto_exec( $sql, CONN_STR, FALSE );
+ }
+
+ // Default to showing Active events only
+ if( $Option == 'List' && $active == '' ) {
+ $active = 2;
+ }
+
+ $date_specific_default = true;
+
+ $reg_fields = array
+ (
+ 'id' => 'id, int, ID, DISPLAY, id, euvl',
+ 'event_code' => 'event_code, text.15, '.$v['eventTermCap'].' Code - Short, TRUE, event_code, naeu',
+ 'event_code_l' => 'event_code, text.15, Code, TRUE, event_code, lvf',
+ 'category' => '(updated in conditionals below)',
+ 'subcategory' => '(updated in conditionals below)',
+ 'subcategory_l' => '(updated in conditionals below)',
+ 'attribute' => 'attribute, multipointer.attribute.name.....reg_attr.reg.attr, '.$v['attributeTermCap'].', FALSE, attribute, naeuv',
+
+ 'b_09' => ', break.To select multiple '.$v['attributesTerm'].' above, click and drag across multiple options.
+ To turn on or off an individual '.$v['attributeTerm'].' above, hold the CTRL key and click an option.,
+ , FALSE, , ne',
+ 'name' => 'name, text.50, Name, TRUE, name, naeuvlf',
+ 'active' => 'active, checkbox, Active, FALSE, active, naeuvlf',
+ 'b_05' => ', break.
'.$v['eventTermCap'].' dates,
+ , FALSE, , nev',
+ 'date_specific_n' => 'date_specific, checkbox, '.$v['eventTermCap'].' is Date Specific, SUPPLIED, date_specific_default, n',
+ 'date_specific_l' => 'date_specific, checkbox, Date Specific, FALSE, date_specific, l',
+ 'date_specific' => 'date_specific, checkbox, '.$v['eventTermCap'].' is Date Specific, FALSE, date_specific, aeuvf',
+ 'b_06' => ', break.If '.$v['eventTermCap'].' is Date Specific then the following dates are required.,
+ , FALSE, , ne',
+ 'start_date_f' => 'start_date, daterange.0.720, Date '.$v['eventTermCap'].' Starts, FALSE, start_date, f',
+ 'start_date_l' => 'start_date, date.0.720, Starts, FALSE, start_date, l',
+ 'start_date' => 'start_date, date.0.720, Date '.$v['eventTermCap'].' Starts, FALSE, start_date, naeuv',
+ 'end_date_f' => 'end_date, daterange.0.720..start_date, Date '.$v['eventTermCap'].' Ends, FALSE, end_date, f',
+ 'end_date_l' => 'end_date, date.0.720..start_date, Ends, FALSE, end_date, l',
+ 'end_date' => 'end_date, date.0.720..start_date, Date '.$v['eventTermCap'].' Ends, FALSE, end_date, naeuv',
+ 'b_07' => ', break.If '.$v['eventTermCap'].' is NOT Date Specific then do you want to ask user for a desired date?.,
+ , FALSE, , ne',
+ 'ask_date' => 'ask_date, checkbox, Ask for desired date, FALSE, ask_date, naeuvf',
+ 'use_calendar' => 'use_calendar, checkbox, Use [Dates Calendar], FALSE, use_calendar, naeuv',
+ 'b_08' => ', break.If you select the above option, use the [Dates Calendar] menu option at the top of the page to set available dates.,
+ , FALSE, , nev',
+ 'b_01' => ', break.
Rate options and dates,
+ , FALSE, , nev',
+ 'b_1' => ', break. Supply date/price ranges as required. Last supplied date is final reservation cut-off date.
+ If '.$v['eventTermCap'].' is NOT Date Specific, then the First Cutoff Date Settings are used.,
+ , FALSE, , nev'
+ );
+
+ // If we have sub-categories, update reg.todo field with correct data - it's used for reference to the category in admin only
+ if ($config->event_registration->sub_categories) {
+ // Also, forceably update all list_name fields for all category entries. *** NEED TO MAKE THIS MORE INTELEGENT ***
+ $sql = "
+ UPDATE reg R
+ SET todo =
+ (
+ SELECT C.todo
+ FROM category C
+ WHERE C.id = R.category
+ );
+ UPDATE category CC SET list_name =
+ (
+ SELECT T.name || ' - ' || C.name
+ FROM todo T, category C
+ WHERE C.id = CC.id
+ AND T.id = C.todo
+ );
+ ";
+ reg_db_auto_exec( $sql, CONN_STR, FALSE );
+
+ }
+
+ // If we're not using categories or sub-categories, drop them
+ if (!$config->event_registration->main_categories) {
+ unset($reg_fields['category']);
+ }
+ if (!$config->event_registration->sub_categories) {
+ unset($reg_fields['subcategory']);
+ }
+
+ // If we are, then setup to show category and list_name
+ if ($config->event_registration->main_categories && $config->event_registration->sub_categories) {
+ $reg_fields['category'] = 'todo, pointer.todo.name, '.$v['categoryTermCap'].', DISPLAY, todo, naeuvlf';
+ if ($Option == "Add") {
+ $reg_fields['subcategory'] = 'category, pointer.category.list_name.id.todo = '.$_REQUEST['todo'].', '.$v['subcategoryTermCap'].', TRUE, category, naeuf';
+ } else {
+ $reg_fields['subcategory'] = 'category, pointer.category.list_name, '.$v['subcategoryTermCap'].', TRUE, category, naeuf';
+ }
+ $reg_fields['subcategory_l'] = 'category, pointer.category.name, '.$v['subcategoryTermCap'].', TRUE, category, vl';
+ }
+
+ // If we're not using sub-categories, just look at the main cateogories
+ if ($config->event_registration->main_categories && !$config->event_registration->sub_categories) {
+ $reg_fields['category'] = 'category, pointer.todo.name, Category, TRUE, category, naeuvlf';
+ // Otherwise if this is an "n,a,e,u" then trash the category field.
+ } elseif (in_array($Option,array('Add','Add New','Edit','Update'))) {
+ unset($reg_fields['category']);
+ }
+
+ // If we're not using attributes, drop them
+ if (!$config->event_registration->attributes) {
+ unset($reg_fields['attribute']);
+ unset($reg_fields['b_09']);
+ }
+
+ // If we're doing member registration
+ if ($config->event_registration->have_members) {
+
+ $rf2 = array(
+ 'b_2' => ', break. First Cutoff Date Settings , , FALSE, , nev',
+ 'rates_1_memb' => 'rates_1_memb, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Members, FALSE, rates_1_memb, naeuv',
+ 'rates_1' => 'rates_1, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Non-Members, FALSE, rates_1, naeuv',
+ 'cutoff_date' => 'cutoff_date, date.0.720, First Cutoff Date, FALSE, cutoff_date, naeuv',
+ 'b_3' => ', break. Second Cutoff Date Settings , , FALSE, , nev',
+ 'rates_2_memb' => 'rates_2_memb, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Members, FALSE, rates_2_memb, naeuv',
+ 'rates_2' => 'rates_2, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Non-Members, FALSE, rates_2, naeuv',
+ 'cutoff_date2' => 'cutoff_date2, date.0.720, Second Cutoff Date, FALSE, cutoff_date2, naeuv',
+ 'b_4' => ', break. Third Cutoff Date Settings , , FALSE, , nev',
+ 'rates_3_memb' => 'rates_3_memb, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Members, FALSE, rates_3_memb, naeuv',
+ 'rates_3' => 'rates_3, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Non-Members, FALSE, rates_3, naeuv',
+ 'cutoff_date3' => 'cutoff_date3, date.0.720, Third Cutoff Date, FALSE, cutoff_date3, naeuv',
+ 'b_5' => ', break. Fourth Cutoff Date Settings , , FALSE, , nev',
+ 'rates_4_memb' => 'rates_4_memb, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Members, FALSE, rates_4_memb, naeuv',
+ 'rates_4' => 'rates_4, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Non-Members, FALSE, rates_4, naeuv',
+ 'cutoff_date4' => 'cutoff_date4, date.0.720, Final Cutoff Date, FALSE, cutoff_date4, naeuv'
+ );
+ $reg_fields = array_merge ( $reg_fields, $rf2 );
+
+ } else {
+
+ $rf2 = array(
+ 'b_2' => ', break. First Cutoff Date Settings , , FALSE, , nev',
+ 'rates_1' => 'rates_1, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Rate Options, FALSE, rates_1, naeuv',
+ 'cutoff_date' => 'cutoff_date, date.0.720, First Cutoff Date, FALSE, cutoff_date, naeuv',
+ 'b_3' => ', break. Second Cutoff Date Settings , , FALSE, , nev',
+ 'rates_2' => 'rates_2, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Rate Options, FALSE, rates_2, naeuv',
+ 'cutoff_date2' => 'cutoff_date2, date.0.720, Second Cutoff Date, FALSE, cutoff_date2, naeuv',
+ 'b_4' => ', break. Third Cutoff Date Settings , , FALSE, , nev',
+ 'rates_3' => 'rates_3, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Rate Options, FALSE, rates_3, naeuv',
+ 'cutoff_date3' => 'cutoff_date3, date.0.720, Third Cutoff Date, FALSE, cutoff_date3, naeuv',
+ 'b_5' => ', break. Fourth Cutoff Date Settings , , FALSE, , nev',
+ 'rates_4' => 'rates_4, multifield.4.#{line_numb}: Name {field_1} Base $ {field_2} Per '.$v['attendeeTermCap'].' $ {field_3} '.$v['attendeeTermCap'].' Credits {field_4} ,
+ Rate Options, FALSE, rates_4, naeuv',
+ 'cutoff_date4' => 'cutoff_date4, date.0.720, Final Cutoff Date, FALSE, cutoff_date4, naeuv'
+ );
+ $reg_fields = array_merge ( $reg_fields, $rf2 );
+
+ }
+ $rf3 = array(
+
+ 'b_payment' => ', break.
Payment Options
+ If these items are checked, front-end users will be blocked from using these methods
+ and payment by these methods will be restricted to admin users only.,
+ , FALSE, , nev',
+ 'restrict_comp_code' => 'restrict_comp_code, checkbox, Block payment type: Comp Code, FALSE, restrict_comp_code, naeuv',
+ 'restrict_check' => 'restrict_check, checkbox, Block payment type: Check, FALSE, restrict_check, naeuv',
+ 'restrict_call_from_merchant' => 'restrict_call_from_merchant, checkbox, Block payment type: Call from Merchant, FALSE, restrict_call_from_merchant, naeuv',
+ 'restrict_cash' => 'restrict_cash, checkbox, Block payment type: Cash, FALSE, restrict_cash, naeuv',
+ 'restrict_credit_card' => 'restrict_credit_card, checkbox, Block payment type: Credit Card, FALSE, restrict_credit_card, naeuv',
+ 'mf_charges_by_attendee' => 'mf_charges_by_attendee, checkbox, Mutliply MagicForm checkbox/picklist values by attendees, FALSE, mf_charges_by_attendee, naeuv',
+ 'b_attendees' => ', break.
'.$v['attendeeTermCap'].' Options,
+ , FALSE, , nev',
+ 'need_attendees' => 'need_attendees, checkbox, Ask for '.$v['attendeesTermCap'].', FALSE, need_attendees, naeuv',
+ 'attendee_limit' => 'attendee_limit, checkbox, Limited number of '.$v['attendeesTermCap'].' for this '.$v['eventTermCap'].', FALSE, attendee_limit, naeuv',
+ 'attendee_max' => 'attendee_max, int, Maximum number of '.$v['attendeesTermCap'].' for this '.$v['eventTermCap'].', FALSE, attendee_max, naeuv',
+ 'attendee_count' => 'attendee_count, int, Current No. of '.$v['attendeesTermCap'].' '.$v['registeredTermCap'].', FALSE, attendee_count, aeuv',
+ 'attendee_max_per_sub' => 'attendee_max_per_sub, int, Maximum number of '.$v['attendeesTermCap'].' per '.$v['registrationTermCap'].', FALSE, attendee_max_per_sub, naeuv',
+ 'b_per_sub_comment' => ', break.(Used if asking for '.$v['attendeesTermCap'].' - set to 0 for unlimited),
+ , FALSE, , nev',
+ 'require_registered_user' => 'require_registered_user, checkbox, '.$v['registrationTermCap'].' must be submitted by a '.$v['memberTermCap'].', FALSE, require_registered_user, naeuv',
+ 'b_misc' => ', break.
Terms and Conditions,
+ , FALSE, , nev',
+// 'pay_codes' => 'pay_codes, multifield.2.{line_numb}: {field_1} Description: {field_2} ,
+// Payment Codes, FALSE, pay_codes, aeuv',
+ 'terms' => 'terms, richtext.600.200.encoded, Terms and Conditions Specific to this '.$v['eventTermCap'].', FALSE, terms, aeuv',
+ 'sort' => 'sort, order, Order, TRUE, sort, naeuvl',
+ 'form_revision' => 'form_revision, int, Form Revision, TRUE, form_revision, av',
+ );
+ $reg_fields = array_merge ( $reg_fields, $rf3 );
+
+ // If members are not enabled remove member restriction option
+ if ($config->event_registration->have_members != 'Yes') {
+ unset($reg_fields['require_registered_user']);
+ }
+
+ // Check payment configuration and remove any methods that are turned off globally for this site
+ $remove_count = 0;
+ if ($config->event_registration->payment_methods->comp_code != 'Yes') {
+ unset($reg_fields['restrict_comp_code']);
+ $remove_count++;
+ }
+ if ($config->event_registration->payment_methods->check != 'Yes') {
+ unset($reg_fields['restrict_check']);
+ $remove_count++;
+ }
+ if ($config->event_registration->payment_methods->call_from_merchant != 'Yes') {
+ unset($reg_fields['restrict_call_from_merchant']);
+ $remove_count++;
+ }
+ if ($config->event_registration->payment_methods->cash != 'Yes') {
+ unset($reg_fields['restrict_cash']);
+ $remove_count++;
+ }
+ if ($config->event_registration->payment_methods->credit_card != 'Yes') {
+ unset($reg_fields['restrict_credit_card']);
+ $remove_count++;
+ }
+ // If there's none left then remove all traces of this section
+ if ($remove_count == 5) {
+ unset($reg_fields['b_payment']);
+ }
+
+
+ // If event is not date-specific, then drop the rates and cutoffs after the first set
+ if (in_array($Option,array('Edit','View','Update')) && ($id-0) > 0) {
+
+ $ds_data = db_auto_get_row( "SELECT date_specific FROM reg WHERE id = $id;", 0, CONN_STR, FALSE );
+
+ // If not date specific, drop all but the first;
+ if ($ds_data['date_specific'] == 'f') {
+ unset($reg_fields['b_3']);
+ unset($reg_fields['rates_2_memb']);
+ unset($reg_fields['rates_2']);
+ unset($reg_fields['cutoff_date2']);
+ unset($reg_fields['b_4']);
+ unset($reg_fields['rates_2_memb']);
+ unset($reg_fields['rates_3']);
+ unset($reg_fields['cutoff_date3']);
+ unset($reg_fields['b_5']);
+ unset($reg_fields['rates_4_memb']);
+ unset($reg_fields['rates_4']);
+ unset($reg_fields['cutoff_date4']);
+ }
+ }
+
+ $r = admin_process_records_r
+ (
+ "reg", // Table
+ '', // Where
+ 'sort', // Order fields
+ CONN_STR, // Connect String
+ $id, // Current ID
+ $reg_fields, // Fields array
+ 'view,edit,delete,duplicate,filter,strong,sortlinks', // Options
+ 20, // Rows
+ THIS_SCRIPT, // URL
+ 'Eve', // Action
+ "", // Passed parameter
+ $v['eventsTermCap'], // Base Title
+ array(), // View string
+ $Option, // Option
+ $start, // Starting row for lists
+ '', // Other Options
+ '' // Title View
+ );
+
+ // If successful delete, then delete all associated MagicForm fields
+
+ if( $Option == 'Confirm Delete' && $r['status'] = true )
+ reg_db_auto_exec( "DELETE FROM magicform WHERE form_id LIKE '$id.%'; DELETE FROM magicform WHERE form_id = '$id';", CONN_STR, FALSE );
+
+ // If a successful add, then reload page to display the newly added event.
+ if (($Option == 'Add New' || $Option == 'Update') && $r['status'] = true) {
+
+ if (isset($r['id'])) {
+ $id = $r['id'];
+ }
+
+ $url = THIS_SCRIPT.'?Action=Eve&Option=View&id='.$id;
+ echo '
+
+
+ Reloading to re-display page
+
+
+
+
+
Reloading to re-display page with updated information.
+
If you are not immediately redirected, please click below.
+ ';
+
+ // Check if there's leading days
+ if ($firstDay != 0) {
+ for ($w=0 ; $w<$firstDay ; $w++) {
+ $month .= dsDay(0,false);
+ }
+ }
+
+ // Display days in the month
+ foreach($days as $day) {
+ // Check for end of week
+ if ($w++ == 7) {
+ $month .= '
+
+ ';
+
+ return $month;
+ }
+
+
+ // Get data from the event
+ $event_data = db_auto_get_row( "SELECT date_specific, use_calendar, date_select FROM reg WHERE id = $id;", 0, CONN_STR, FALSE );
+
+ // Not a valid operation if the event is date_specific
+ if ($event_data['date_specific'] == 't') {
+
+ $v['body'] .= '
+
This '.ucfirst($config->event_registration->word->event).' is Date Specific.
+
No action required here.
+ ';
+
+ break;
+ }
+
+ // Not selected for this event
+ if ($event_data['use_calendar'] != 't') {
+
+ $v['body'] .= '
+
This '.ucfirst($config->event_registration->word->event).' is not set to use the Dates Calendar feature.
+
No action required here.
+ ';
+
+ break;
+ }
+
+ // See if a year is supplied, if not, get current year
+ if (isset($_REQUEST['ds_year'])) {
+ $ds_year = ($_REQUEST['ds_year']-0);
+ } else {
+ $ds_year = date('Y');
+ }
+
+ // Try to break out any stored data
+ $ds_data = array();
+ if ($event_data['date_select'] != '') {
+ $ds_data = unserialize($event_data['date_select']);
+ }
+
+ // Check to see if a year delete has been requested
+ if ($Option == 'Delete Year') {
+
+ if ($_REQUEST['deleteYear'] == 'Delete') {
+ unset($ds_data[$ds_year]);
+ reg_db_auto_exec( "UPDATE reg SET date_select = '".serialize($ds_data)."' WHERE id = $id;", 0, CONN_STR, FALSE );
+ $v['body'] .= '
+
All dates for '.$ds_year.' have been deleted.
+ ';
+ break;
+ }
+
+ $v['body'] .= '
+
Note: To delete a year you must enter exactly "Delete".
+ ';
+ }
+
+ // Check to see if a year has just been submitted
+ $ds_in = $_REQUEST['day'];
+ if (is_array($ds_in)) {
+ // For each day supplied
+ while (list($key, $val) = each($ds_in)) {
+ $t = strtotime("01/01/$ds_year +".($key)." days");
+ $m = date('n', $t);
+
+ // Add it to the data array
+ $ds_data[$ds_year][$m][$t] = array(
+ 'time' => $t,
+ 'date' => date('m/d/Y', $t),
+ 'sel' => ($ds_in[$key] == 1)
+ );
+ }
+
+ // Store the entire data array back to the event
+ reg_db_auto_exec( "UPDATE reg SET date_select = '".serialize($ds_data)."' WHERE id = $id;", 0, CONN_STR, FALSE );
+
+ // Check if a previous or next year was requested
+ if ($Option == 'Previous Year') {
+ $ds_year--;
+ } elseif ($Option == 'Next Year') {
+ $ds_year++;
+ } elseif ($Option != 'Delete Year') {
+
+ // This is just a submit, so say it's stored and be done with it.
+ $v['body'] .= '
+
+ ';
+ break;
+ }
+
+ }
+
+ // Check to see if we have the selected year yet - if not, then create a blank one.
+ if (!isset($ds_data[$ds_year])) {
+ $ds_data[$ds_year] = dsEmptyYear($ds_year);
+ }
+
+ $v['body'] .= '
+
+
+