diff --git a/____HISTORY.txt b/____HISTORY.txt index 907e3d2..f37140e 100644 --- a/____HISTORY.txt +++ b/____HISTORY.txt @@ -19,25 +19,117 @@ ===================================================================================== Donation Page: ===================================================================================== - http://www.deliciousdays.com/cforms-donation + http://www.deliciousdays.com/cforms-donation ===================================================================================== Version History: ===================================================================================== - v9.0 introduces a completely new method of storing its settings, - ***** please make a WP database backup first (!) ***** - and then migrate your settings (cforms will guide you!) -WHAT's NEW in cformsII - v10.2 +WHAT's NEW in cformsII - v10.5.1 + +****************************************** + IMPORTANT NOTE: PHP 5 is required ! +****************************************** + +*) feature: Email Priority can now be set under "Core Options" +*) bugfix: insert_cform('1') would cause minor issues if your default form was a TAF form +*) bugfix: Limit Text is now saved even if no #-limit is provided +*) bugfix: fixed =3D issue for some users (admin email layout) + +WHAT's NEW in cformsII - v10.5 + +*) feature: redirect options: "hide" & "redirect" haven been split, allowing both + find 'hide' under 'core options' now + make sure to check both options, they may have been reset! + +*) feature: email: supporting mail server that strictly require CRLF + new option under GlobalSettings > Mail Server Settings + +*) bugfix: field labels that would have an escaped character (e.g quotes) would not be + referenced correctly and required a slash until now (e.g. {Your friend\'s Name} ). +*) bugfix: fixed minor XSS cross site scripting vulnerability +*) bugfix: select boxes: fixes the "auto select" of the last drop down option +*) bugfix: email: fixes CR's in multi-line fields +*) bugfix: email: fixing SMTP / PHPMailer attachments +*) bugfix: email: MIME / boundary fix +*) bugfix: email: several cosmetic fixes +*) bugfix: WP comment: fixed Ajax submission of WP comments +*) bugfix: fixed get_cforms_entries() when using "form name" parameter +*) bugfix: fixed WP comment form 'comment id not found' error + +*) other: plugin update notice has become smaller / can be toggled +*) other: updated Help page (API section) +*) other: enhanced API function get_cforms_entries() + Parameters: + get_cforms_entries( $fname,$from,$to,$cfsort,$limit,$cfsortdir ) + $fname = [text] : form name (case sensitive!) + $from = [date] : e.g. 2008-09-17 15:00:00 + $to = [date] : e.g. 2008-09-17 17:00:00 + $cfsort = [text] : any input field label, e.g. 'Your Name' + or 'date', 'ip', 'id', 'form', 'email' + $limit = [numeric] : limits number of records retrieved + $cfsortdir = [text] : sort direction 'asc' or 'desc' + + (see updated Help page too!) + + +WHAT's NEW in cformsII - v10.4 + +*) feature: new my_cforms_logic() features: + "adminEmailTXT" & "adminEmailHTML", "autoConfTXT" & "autoConfHTML" + to support run-time changes in the email message part(s), + e.g. {user_variable} substitution supporting custom/one-off messages +*) feature: tracking / download: revised and fixed downloads that include field headers + in several areas +*) feature: tracking / download: added optional inclusion of attachment/file URLs +*) feature: tracking / download: added optional inclusion of IP address in report +*) feature: tracking / download: completely revised the tracking download function to + accommodate very large numbers of records, make sure that js/include/data.tmp + is writable! +*) bugfix: fixed access to $subID from within my-functions.php for Ajax post method +*) bugfix: file uploads/attachments: revised, better internal handling +*) bugfix: file uploads/attachments: fixed link/URL issue for MP forms +*) bugfix: file uploads/attachments: all files are now being attached to admin email for + MP forms +*) bugfix: WP comment form: fixed email to author in non Ajax mode +*) bugfix: Fixed "extra variables" (e.g. {Title}) to display again in admin email etc. +*) bugfix: success message: fixed buggy message display ('*$#..') in special cases +*) other: Javascript Date Picker updated to latest release +*) other: admin emails: turned upper case HTML tags to lower case +*) other: admin emails: swapped LF for CRLF (according to RFC822 Section 3) + +WHAT's NEW in cformsII - v10.3 + +*) feature: RSS feed: revised and enhanced feeds (all & indivudal form feeds) + supporting inclusion of form fields in the feed +*) feature: new API function: cf_extra_comment_data( $id ) + will retrieve all extra fields per given comment ID in a data [array] + see tutorial online (troubleshooting forum) +*) feature: enhanced option to keep input field data (no reset) after submission + (both ajax & nonajax) +*) feature: cforms allows now to optionally turn off the admin email (and only track via DB) +*) feature: "redirect on success" can now be used to jump to any location on your page after + form submission +*) feature: threaded comment support for cforms' WP comment feature + note: nonAjax will work as is, for the Ajax method you need to adjust your WP theme to + work nicely with cforms (dynamically set the parent container!) +*) bugfix: multi-part forms: no more session resets / jumping to first form +*) bugfix: multi-part forms: confusion of prev. entered field values when going to previous form +*) bugfix: escaped '<' & '>' in input fields, which allows to properly send code in a form as well +*) bugfix: a few admin CSS fixed (e.g. resizable text areas) +*) other: smaller cosmetic fixes +*) other: input field default values will now remain actual values and not be cleared! + +WHAT's NEW in cformsII - v10.2 GPL compliance! -*) other: buttonsnap has been removed *) bugfix: WP comment form : fixed issues when form #1 was enabled as WP comment form replacement *) bugfix: fixed Cross-site_scripting security hole (rarely to be exploited but anyway) *) bugfix: multi-part form: fixed issue, when first form is the default form (#1) *) bugfix: multi-part form: fixed escaped quotes when going back *) bugfix: textarea fields: fixed carriage returns in HTML part of admin email +*) other: buttonsnap has been removed WHAT's NEW in cformsII - v10.1 @@ -680,7 +772,7 @@ cforms II - v5.0 *) feature: full [additional] HTML formatting support for email messages *) bugfix: BACKUP & RESTORE fixed (not all fields were backed-up prev.) -*) bugfix: "spacing between labels & data" error when number < than length(field name) +*) bugfix: "spacing between labels & data" error when number smaller than length(field name) *) bugfix: more CSS corrections *) bugfix: the use of single & double quotes fixed in FIELDSETS *) bugfix: one more single quote bug remedied in form labels diff --git a/____INSTALL_UPDATE_NOTE.txt b/____INSTALL_UPDATE_NOTE.txt index cc61eb8..75f9ccc 100644 --- a/____INSTALL_UPDATE_NOTE.txt +++ b/____INSTALL_UPDATE_NOTE.txt @@ -1,40 +1,37 @@ -Installing the plugin ---------------------- -Please upload the complete plugin folder /cforms/, contained in -this zip file, to your WP plugin directory! + ====================================================================================== + Installing the plugin: + ====================================================================================== + Please upload the complete plugin folder /cforms/, contained in this zip file, to + your WP plugin directory! -If there is no /cforms/ root folder in this zip file, please create -one in your WordPress plugins/ folder. + If there is no /cforms/ root folder in this zip file, please create one in your + WordPress plugins/ folder. + ====================================================================================== + Upgrading the plugin: + ====================================================================================== + v9.0+ introduces a completely new method of storing its settings, + ***** please make a WP database backup first (!) ***** + and then migrate your settings (cforms will provide guidance!) -!!!!! Upgrading the plugin --------------------------- -cforms v9.0+ comes with a new and cleaner method of storing all settings. -Before you upgrade and migrate your existing settings, - **** make sure you've made a backup of your current WP database! **** + Then commence with a manual upgrade, including proper plugin deactivation and + reactivation, followed by the guided data migration. -Then commence with a manual upgrade, including proper plugin deactivation -and re-activation, followed by the guided data migration. + ====================================================================================== + Did you modify any cforms theme (CSS) files, images etc? + ====================================================================================== + Create a custom folder under /plugins/ & call it "/cforms-custom/". Move all your + custom files into it. This folder will protect your changes going forward. + Also note that it is always advisable to make or keep a backup of your + current plugin directory just in case you need to revert back to a + previous release! -Did you modify any cforms theme (CSS) files, images etc? --------------------------------------------------------- -Create a custom folder under /plugins/ & call it "cforms-custom". -Move all your custom files into it, this folder will protect your -changes going forward, WP's auto update can not overwrite these. -If you update maually, please deactivate the plugin before you install -the update (replacing the current cforms dir with the new one) - -Also note that it is always advisable to make or keep a backup of your -current plugin directory just in case you need to revert back to a -previous release! - - - -Localization: -------------- -Please read: 00_Plugin_Localization/Language-Support.txt \ No newline at end of file + ====================================================================================== + Localization: + ====================================================================================== + Please see: ____Plugin_Localization/____LANGUAGE-SUPPORT.txt \ No newline at end of file diff --git a/____Install_Patch_Readme.txt b/____Install_Patch_Readme.txt new file mode 100644 index 0000000..5d8b643 --- /dev/null +++ b/____Install_Patch_Readme.txt @@ -0,0 +1,14 @@ + +v10.5 Patch 1 Instructions +-------------------------- + +Simply extract/copy all files into your cforms folder. + + +Patch 1 includes: +~~~~~~~~~~~~~~~~~ +*) feature: Email Priority can now be set under "Core Options" +*) bugfix: insert_cform('1') would cause minor issues if your default form was a TAF form +*) bugfix: Limit Text is now saved even if no #-limit is provided +*) bugfix: fixed =3D issue for some users (admin email layout) + diff --git a/____LICENSE_CREDITS.txt b/____LICENSE_CREDITS.txt index 3111b42..ab3771a 100644 --- a/____LICENSE_CREDITS.txt +++ b/____LICENSE_CREDITS.txt @@ -1,8 +1,8 @@ - ===================================================================================== + ====================================================================================== License: - ===================================================================================== - Copyright 2007, 2008, 2009 OLIVER SEIDEL (email : oliver.seidel @ deliciousdays.com) + ====================================================================================== + Copyright 2007, 2008, 2009 OLIVER SEIDEL (email : oliver.seidel @ deliciousdays.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, @@ -16,14 +16,14 @@ program. If not, see . - ===================================================================================== + ====================================================================================== Donation Page: - ===================================================================================== - http://www.deliciousdays.com/cforms-donation + ====================================================================================== + http://www.deliciousdays.com/cforms-donation - ===================================================================================== + ====================================================================================== Link Love / Credits line under the form: - ===================================================================================== + ====================================================================================== I believe in good karma, so I leave it up to you to either leave the link love - active & in place or hide it. \ No newline at end of file + active / in place or hide it. Thanks for the consideration. \ No newline at end of file diff --git a/00_Plugin_Localization/LANGUAGE-SUPPORT.txt b/____Plugin_Localization/____LANGUAGE-SUPPORT.txt similarity index 100% rename from 00_Plugin_Localization/LANGUAGE-SUPPORT.txt rename to ____Plugin_Localization/____LANGUAGE-SUPPORT.txt diff --git a/00_Plugin_Localization/cforms.pot b/____Plugin_Localization/cforms.pot similarity index 71% rename from 00_Plugin_Localization/cforms.pot rename to ____Plugin_Localization/cforms.pot index 81034b1..6190ece 100644 --- a/00_Plugin_Localization/cforms.pot +++ b/____Plugin_Localization/cforms.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-01-26 20:06+0100\n" +"POT-Creation-Date: 2009-04-28 18:15+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,212 +16,212 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: cforms-corrupted.php:12 lib_functions.php:74 +#: cforms-corrupted.php:10 lib_functions.php:74 msgid "cforms error" msgstr "" -#: cforms-corrupted.php:16 cforms-corrupted.php:40 +#: cforms-corrupted.php:14 cforms-corrupted.php:37 msgid "Please deactivate and then re-activate the cforms plugin now." msgstr "" -#: cforms-corrupted.php:52 +#: cforms-corrupted.php:48 msgid "" "It appears that WP has corrupted your cforms settings, the settings array " "can not be read properly." msgstr "" -#: cforms-corrupted.php:62 +#: cforms-corrupted.php:58 msgid "Corrupted cforms settings detected" msgstr "" -#: cforms-corrupted.php:64 +#: cforms-corrupted.php:60 msgid "" "You can either try and fix the settings array or reset it and start from " "scratch." msgstr "" -#: cforms-corrupted.php:64 +#: cforms-corrupted.php:60 msgid "RESET" msgstr "" -#: cforms-corrupted.php:67 +#: cforms-corrupted.php:63 msgid "Corrupted cforms settings array (raw code)" msgstr "" -#: cforms-corrupted.php:70 +#: cforms-corrupted.php:66 msgid "" "Depending on your Wordpress/PHP skills you may want to try and fix the " "serialized data below, then hit the fix button or try just like that, cforms " "may magically fix it for you." msgstr "" -#: cforms-corrupted.php:76 +#: cforms-corrupted.php:72 msgid "FIX and save data" msgstr "" -#: cforms-css.php:33 cforms-css.php:96 cforms-help.php:37 +#: cforms-css.php:32 cforms-css.php:94 cforms-help.php:44 msgid "Styling your forms" msgstr "" -#: cforms-css.php:35 lib_functions.php:304 +#: cforms-css.php:34 lib_functions.php:310 msgid "All cforms data has been erased!" msgstr "" -#: cforms-css.php:36 lib_functions.php:305 +#: cforms-css.php:35 lib_functions.php:311 msgid "" "Please go to your Plugins tab and either disable the " "plugin, or toggle its status (disable/enable) to revive cforms!" msgstr "" -#: cforms-css.php:73 +#: cforms-css.php:72 msgid "The stylesheet has been updated." msgstr "" -#: cforms-css.php:77 +#: cforms-css.php:76 msgid "Write Error! Please verify write permissions on the style file." msgstr "" -#: cforms-css.php:86 +#: cforms-css.php:85 msgid "New theme selected." msgstr "" -#: cforms-css.php:98 +#: cforms-css.php:96 msgid "" "Please select a theme file that comes closest to what you're looking for and " "apply your own custom changes via the editor below." msgstr "" -#: cforms-css.php:99 +#: cforms-css.php:97 msgid "" "This is optional of course, if you're happy with the " "default look and feel, no need to do anything here." msgstr "" -#: cforms-css.php:104 cforms-css.php:221 cforms-global-settings.php:246 -#: cforms-global-settings.php:332 cforms-global-settings.php:348 -#: cforms-global-settings.php:408 cforms-global-settings.php:495 -#: cforms-global-settings.php:551 cforms-global-settings.php:572 -#: cforms-global-settings.php:698 cforms-global-settings.php:738 -#: cforms-global-settings.php:794 cforms-global-settings.php:811 -#: cforms-help.php:42 cforms-help.php:64 cforms-help.php:82 -#: cforms-help.php:113 cforms-help.php:143 cforms-help.php:178 -#: cforms-help.php:212 cforms-help.php:252 cforms-help.php:292 -#: cforms-help.php:328 cforms-help.php:369 cforms-help.php:400 -#: cforms-help.php:428 cforms-help.php:457 cforms-help.php:493 -#: cforms-help.php:528 cforms-help.php:554 cforms-help.php:675 -#: cforms-help.php:758 cforms-help.php:802 cforms-help.php:871 -#: cforms-help.php:909 cforms-help.php:990 cforms-help.php:1132 -#: cforms-help.php:1350 cforms-help.php:1415 cforms-help.php:1425 -#: cforms-options.php:429 cforms-options.php:477 cforms-options.php:555 -#: cforms-options.php:728 cforms-options.php:780 cforms-options.php:797 -#: cforms-options.php:848 cforms-options.php:917 cforms-options.php:960 -#: cforms-options.php:993 +#: cforms-css.php:101 cforms-css.php:214 cforms-global-settings.php:249 +#: cforms-global-settings.php:334 cforms-global-settings.php:350 +#: cforms-global-settings.php:410 cforms-global-settings.php:511 +#: cforms-global-settings.php:567 cforms-global-settings.php:588 +#: cforms-global-settings.php:714 cforms-global-settings.php:754 +#: cforms-global-settings.php:814 cforms-global-settings.php:831 +#: cforms-help.php:49 cforms-help.php:71 cforms-help.php:89 +#: cforms-help.php:120 cforms-help.php:150 cforms-help.php:185 +#: cforms-help.php:219 cforms-help.php:259 cforms-help.php:299 +#: cforms-help.php:335 cforms-help.php:376 cforms-help.php:407 +#: cforms-help.php:435 cforms-help.php:464 cforms-help.php:500 +#: cforms-help.php:535 cforms-help.php:561 cforms-help.php:682 +#: cforms-help.php:765 cforms-help.php:809 cforms-help.php:878 +#: cforms-help.php:916 cforms-help.php:1018 cforms-help.php:1160 +#: cforms-help.php:1378 cforms-help.php:1443 cforms-help.php:1453 +#: cforms-options.php:433 cforms-options.php:481 cforms-options.php:559 +#: cforms-options.php:775 cforms-options.php:827 cforms-options.php:844 +#: cforms-options.php:895 cforms-options.php:964 cforms-options.php:1007 +#: cforms-options.php:1040 msgid "top" msgstr "" -#: cforms-css.php:104 +#: cforms-css.php:101 msgid "Select a form style" msgstr "" -#: cforms-css.php:112 +#: cforms-css.php:108 msgid "Please choose a theme file
to style your forms" msgstr "" -#: cforms-css.php:120 +#: cforms-css.php:116 msgid "" "Please make sure that the /styling folder exists in the cforms " "plugin directory!" msgstr "" -#: cforms-css.php:128 +#: cforms-css.php:124 msgid "custom css files" msgstr "" -#: cforms-css.php:146 cforms-global-settings.php:848 +#: cforms-css.php:142 cforms-global-settings.php:868 msgid "cform css files" msgstr "" -#: cforms-css.php:169 +#: cforms-css.php:165 msgid "Select Style »" msgstr "" -#: cforms-css.php:174 +#: cforms-css.php:170 msgid "" "For comprehensive customization support you may choose to turn on " "label & list element ID's. This way each input field " "& label can be specifically addressed via CSS styles." msgstr "" -#: cforms-css.php:176 +#: cforms-css.php:172 msgid "Activate Label IDs" msgstr "" -#: cforms-css.php:176 +#: cforms-css.php:172 msgid "Deactivate Label IDs" msgstr "" -#: cforms-css.php:177 cforms-css.php:180 +#: cforms-css.php:173 cforms-css.php:176 msgid "Currently turned on " msgstr "" -#: cforms-css.php:179 +#: cforms-css.php:175 msgid "Activate List Element IDs" msgstr "" -#: cforms-css.php:179 +#: cforms-css.php:175 msgid "Deactivate List Element IDs" msgstr "" -#: cforms-css.php:183 +#: cforms-css.php:179 msgid "Deactivate CSS styling altogether!" msgstr "" -#: cforms-css.php:183 +#: cforms-css.php:179 msgid "Reactivate CSS styling!" msgstr "" -#: cforms-css.php:184 +#: cforms-css.php:180 msgid "Theme is disabled" msgstr "" -#: cforms-css.php:190 cforms-help.php:1421 +#: cforms-css.php:186 cforms-help.php:1449 #, php-format msgid "" "You might also want to study the PDF guide on cforms CSS " "& a web screencast I put together to give you a head start." msgstr "" -#: cforms-css.php:202 +#: cforms-css.php:198 msgid "PREVIEW:" msgstr "" -#: cforms-css.php:202 +#: cforms-css.php:198 msgid "Theme Preview" msgstr "" -#: cforms-css.php:221 +#: cforms-css.php:214 msgid "Update Changes »" msgstr "" -#: cforms-css.php:221 +#: cforms-css.php:214 msgid "Basic CSS editor: " msgstr "" -#: cforms-css.php:223 +#: cforms-css.php:216 msgid "" "Use this simple editor to further tailor your forms' style to meet your " "requirements. Currently you're editing: " msgstr "" -#: cforms-css.php:236 +#: cforms-css.php:229 msgid "Sorry. The file you are looking for doesn't exist." msgstr "" -#: cforms-database.php:34 +#: cforms-database.php:33 msgid "Tracking Form Data" msgstr "" -#: cforms-database.php:36 +#: cforms-database.php:35 msgid "" "All your recorded form submissions are listed below. View individual entries " "or a whole bunch and download as XML, TAB or CSV formatted file. Attachments " @@ -229,41 +229,45 @@ msgid "" "deleting entries, associated attachments will be removed, too! " msgstr "" -#: cforms-database.php:38 +#: cforms-database.php:37 msgid "" "If you want to select ALL entries, e.g. for download, " "simply don't select any particular row. When viewing records: Fields with a grey background can be clicked on and edited!" msgstr "" -#: cforms-database.php:51 cforms-database.php:63 cforms-options.php:214 +#: cforms-database.php:50 cforms-database.php:63 cforms-options.php:214 msgid "Form Name" msgstr "" -#: cforms-database.php:52 cforms-database.php:64 +#: cforms-database.php:51 cforms-database.php:64 msgid "e-mail Address" msgstr "" -#: cforms-database.php:53 cforms-database.php:65 +#: cforms-database.php:52 cforms-database.php:65 msgid "Date" msgstr "" -#: cforms-database.php:54 cforms-database.php:66 +#: cforms-database.php:53 cforms-database.php:66 msgid "IP" msgstr "" -#: cforms-database.php:57 +#: cforms-database.php:56 msgid "View records" msgstr "" -#: cforms-database.php:58 +#: cforms-database.php:57 msgid "Delete records" msgstr "" -#: cforms-database.php:59 +#: cforms-database.php:58 msgid "Download records" msgstr "" +#: cforms-database.php:62 +msgid "# Number(s)" +msgstr "" + #: cforms-database.php:71 msgid "Form Submissions" msgstr "" @@ -288,43 +292,62 @@ msgstr "" msgid "Page {%1} of" msgstr "" -#: cforms-database.php:103 cforms-database.php:112 +#: cforms-database.php:106 cforms-database.php:115 msgid "Please Confirm" msgstr "" -#: cforms-database.php:106 +#: cforms-database.php:109 msgid "Are you sure you want to delete the record(s)?" msgstr "" -#: cforms-database.php:107 cforms-database.php:124 cforms-options.php:1031 +#: cforms-database.php:110 cforms-database.php:134 cforms-options.php:1078 msgid "Install" msgstr "" -#: cforms-database.php:107 cforms-database.php:124 cforms-options.php:1023 -#: cforms-options.php:1031 +#: cforms-database.php:110 cforms-database.php:134 cforms-options.php:1070 +#: cforms-options.php:1078 msgid "OK" msgstr "" -#: cforms-database.php:107 cforms-database.php:124 cforms-options.php:1023 -#: cforms-options.php:1031 editor.php:165 js\insertdialog.php:78 -#: js\insertdialog25.php:80 +#: cforms-database.php:110 cforms-database.php:134 cforms-options.php:1070 +#: cforms-options.php:1078 lib_editor.php:172 js\insertdialog.php:80 +#: js\insertdialog25.php:82 msgid "Cancel" msgstr "" -#: cforms-database.php:120 +#: cforms-database.php:124 msgid "Please pick a format!" msgstr "" -#: cforms-database.php:122 -msgid "Include field names/header." +#: cforms-database.php:126 +msgid "Include field names / header" +msgstr "" + +#: cforms-database.php:127 +msgid "Include IP address of submitting user" +msgstr "" + +#: cforms-database.php:128 +msgid "Add URL for upload fields" +msgstr "" + +#: cforms-database.php:131 js\include\lib_database_dlentries.php:83 +#, php-format +msgid "" +"File (data.tmp) in %s not writable! %sPlease adjust its file permissions/" +"ownership!" +msgstr "" + +#: cforms-database.php:132 +msgid "...and reload this page afterwards." msgstr "" #: cforms-global-settings.php:39 msgid "All cforms related data has been deleted." msgstr "" -#: cforms-global-settings.php:42 cforms-global-settings.php:225 -#: lib_functions.php:99 +#: cforms-global-settings.php:42 cforms-global-settings.php:228 +#: lib_functions.php:101 msgid "Global Settings" msgstr "" @@ -353,172 +376,172 @@ msgstr "" msgid "(only of course, if your form includes a file upload field)" msgstr "" -#: cforms-global-settings.php:193 +#: cforms-global-settings.php:196 #, php-format msgid "ERROR: cforms tracking tables %s could not be created." msgstr "" -#: cforms-global-settings.php:201 +#: cforms-global-settings.php:204 #, php-format msgid "cforms tracking tables %s have been created." msgstr "" -#: cforms-global-settings.php:211 +#: cforms-global-settings.php:214 #, php-format msgid "Found existing cforms tracking tables with %s records!" msgstr "" -#: cforms-global-settings.php:231 +#: cforms-global-settings.php:234 msgid "Debug Info (all major setting groups)" msgstr "" -#: cforms-global-settings.php:233 +#: cforms-global-settings.php:236 msgid "Debug Info (all cforms settings)" msgstr "" -#: cforms-global-settings.php:240 +#: cforms-global-settings.php:243 msgid "All settings and configuration options on this page apply to all forms." msgstr "" -#: cforms-global-settings.php:246 cforms-global-settings.php:332 -#: cforms-global-settings.php:348 cforms-global-settings.php:408 -#: cforms-global-settings.php:496 cforms-global-settings.php:551 -#: cforms-global-settings.php:572 cforms-global-settings.php:698 -#: cforms-global-settings.php:738 cforms-options.php:220 -#: cforms-options.php:429 cforms-options.php:477 cforms-options.php:555 -#: cforms-options.php:728 cforms-options.php:797 cforms-options.php:848 -#: cforms-options.php:917 cforms-options.php:960 cforms-options.php:993 +#: cforms-global-settings.php:249 cforms-global-settings.php:334 +#: cforms-global-settings.php:350 cforms-global-settings.php:410 +#: cforms-global-settings.php:512 cforms-global-settings.php:567 +#: cforms-global-settings.php:588 cforms-global-settings.php:714 +#: cforms-global-settings.php:754 cforms-options.php:220 +#: cforms-options.php:433 cforms-options.php:481 cforms-options.php:559 +#: cforms-options.php:775 cforms-options.php:844 cforms-options.php:895 +#: cforms-options.php:964 cforms-options.php:1007 cforms-options.php:1040 msgid "Update Settings »" msgstr "" -#: cforms-global-settings.php:246 cforms-global-settings.php:332 -#: cforms-global-settings.php:348 cforms-global-settings.php:408 -#: cforms-global-settings.php:496 cforms-global-settings.php:551 -#: cforms-global-settings.php:572 cforms-global-settings.php:698 -#: cforms-global-settings.php:738 cforms-global-settings.php:794 -#: cforms-global-settings.php:811 cforms-help.php:42 cforms-help.php:64 -#: cforms-help.php:82 cforms-help.php:871 cforms-help.php:909 -#: cforms-help.php:990 cforms-help.php:1132 cforms-help.php:1350 -#: cforms-help.php:1415 cforms-help.php:1425 cforms-options.php:429 -#: cforms-options.php:477 cforms-options.php:555 cforms-options.php:728 -#: cforms-options.php:780 cforms-options.php:797 cforms-options.php:848 -#: cforms-options.php:917 cforms-options.php:960 cforms-options.php:993 +#: cforms-global-settings.php:249 cforms-global-settings.php:334 +#: cforms-global-settings.php:350 cforms-global-settings.php:410 +#: cforms-global-settings.php:512 cforms-global-settings.php:567 +#: cforms-global-settings.php:588 cforms-global-settings.php:714 +#: cforms-global-settings.php:754 cforms-global-settings.php:814 +#: cforms-global-settings.php:831 cforms-help.php:49 cforms-help.php:71 +#: cforms-help.php:89 cforms-help.php:878 cforms-help.php:916 +#: cforms-help.php:1018 cforms-help.php:1160 cforms-help.php:1378 +#: cforms-help.php:1443 cforms-help.php:1453 cforms-options.php:433 +#: cforms-options.php:481 cforms-options.php:559 cforms-options.php:775 +#: cforms-options.php:827 cforms-options.php:844 cforms-options.php:895 +#: cforms-options.php:964 cforms-options.php:1007 cforms-options.php:1040 msgid "Expand/Collapse" msgstr "" -#: cforms-global-settings.php:246 +#: cforms-global-settings.php:249 msgid "WP Comment Feature Settings" msgstr "" -#: cforms-global-settings.php:249 +#: cforms-global-settings.php:252 msgid "Find below the additional settings for cforms WP comment feature." msgstr "" -#: cforms-global-settings.php:253 +#: cforms-global-settings.php:256 msgid "Comment Success Message" msgstr "" -#: cforms-global-settings.php:260 +#: cforms-global-settings.php:263 msgid "Ajax Settings" msgstr "" -#: cforms-global-settings.php:264 +#: cforms-global-settings.php:267 msgid "Wait time for new comments (in seconds)" msgstr "" -#: cforms-global-settings.php:268 +#: cforms-global-settings.php:271 msgid "Parent Comment Container" msgstr "" -#: cforms-global-settings.php:269 cforms-global-settings.php:356 -#: cforms-global-settings.php:430 cforms-global-settings.php:711 -#: cforms-global-settings.php:746 +#: cforms-global-settings.php:272 cforms-global-settings.php:358 +#: cforms-global-settings.php:446 cforms-global-settings.php:727 +#: cforms-global-settings.php:762 msgid "Note »" msgstr "" -#: cforms-global-settings.php:271 +#: cforms-global-settings.php:274 msgid "" "The HTML element ID of the parent element containing
all comments, for example:" msgstr "" -#: cforms-global-settings.php:280 cforms-global-settings.php:293 +#: cforms-global-settings.php:283 cforms-global-settings.php:295 msgid "Comment in moderation" msgstr "" -#: cforms-global-settings.php:285 +#: cforms-global-settings.php:288 msgid "New comment HTML template" msgstr "" -#: cforms-global-settings.php:287 +#: cforms-global-settings.php:290 msgid "Supported Variables »" msgstr "" -#: cforms-global-settings.php:287 +#: cforms-global-settings.php:290 msgid "Default Template »" msgstr "" -#: cforms-global-settings.php:294 +#: cforms-global-settings.php:296 msgid "New comment ID" msgstr "" -#: cforms-global-settings.php:295 +#: cforms-global-settings.php:297 msgid "Comment Text" msgstr "" -#: cforms-global-settings.php:296 cforms-help.php:687 cforms-help.php:1031 -#: cforms-options.php:349 +#: cforms-global-settings.php:298 cforms-help.php:694 cforms-help.php:1059 +#: cforms-options.php:353 msgid "Comment Author" msgstr "" -#: cforms-global-settings.php:297 +#: cforms-global-settings.php:299 msgid "The author's website" msgstr "" -#: cforms-global-settings.php:298 +#: cforms-global-settings.php:300 msgid "Current date." msgstr "" -#: cforms-global-settings.php:299 +#: cforms-global-settings.php:301 msgid "Current time." msgstr "" -#: cforms-global-settings.php:300 +#: cforms-global-settings.php:302 msgid "User avatar." msgstr "" -#: cforms-global-settings.php:319 +#: cforms-global-settings.php:321 msgid "Avatar Settings" msgstr "" -#: cforms-global-settings.php:323 +#: cforms-global-settings.php:325 msgid "Size (in pixel)" msgstr "" -#: cforms-global-settings.php:332 +#: cforms-global-settings.php:334 msgid "Include cforms header data only on specific pages" msgstr "" -#: cforms-global-settings.php:335 +#: cforms-global-settings.php:337 msgid "" "Specify the ID(s) of pages or posts separated by comma on " "which you'd like to show cforms. The cforms header will only be included " "specifically on those pages, helping to maintain all other pages neat." msgstr "" -#: cforms-global-settings.php:339 +#: cforms-global-settings.php:341 msgid "Page/Post ID(s)" msgstr "" -#: cforms-global-settings.php:340 +#: cforms-global-settings.php:342 msgid "Leave empty to enable for your entire blog" msgstr "" -#: cforms-global-settings.php:348 +#: cforms-global-settings.php:350 msgid "Popup Date Picker" msgstr "" -#: cforms-global-settings.php:351 +#: cforms-global-settings.php:353 #, php-format msgid "" "If you'd like to offer a Javascript based date picker for more convenient " @@ -527,167 +550,184 @@ msgid "" "for more info and date formats." msgstr "" -#: cforms-global-settings.php:356 +#: cforms-global-settings.php:358 msgid "Enable Javascript date picker" msgstr "" -#: cforms-global-settings.php:358 +#: cforms-global-settings.php:360 msgid "" "Note that turning on this feature will result in loading an additional " "Javascript file to support the date picker." msgstr "" -#: cforms-global-settings.php:361 +#: cforms-global-settings.php:363 msgid "Date Format" msgstr "" -#: cforms-global-settings.php:365 +#: cforms-global-settings.php:367 msgid "Days (Columns)" msgstr "" -#: cforms-global-settings.php:369 +#: cforms-global-settings.php:371 msgid "Months" msgstr "" -#: cforms-global-settings.php:374 lib_activate.php:145 +#: cforms-global-settings.php:376 lib_activate.php:149 msgid "Previous Year" msgstr "" -#: cforms-global-settings.php:378 lib_activate.php:146 +#: cforms-global-settings.php:380 lib_activate.php:150 msgid "Previous Month" msgstr "" -#: cforms-global-settings.php:382 lib_activate.php:147 +#: cforms-global-settings.php:384 lib_activate.php:151 msgid "Next Year" msgstr "" -#: cforms-global-settings.php:386 lib_activate.php:148 +#: cforms-global-settings.php:388 lib_activate.php:152 msgid "Next Month" msgstr "" -#: cforms-global-settings.php:390 lib_activate.php:149 +#: cforms-global-settings.php:392 lib_activate.php:153 msgid "Close" msgstr "" -#: cforms-global-settings.php:394 lib_activate.php:150 +#: cforms-global-settings.php:396 lib_activate.php:154 msgid "Choose Date" msgstr "" -#: cforms-global-settings.php:398 +#: cforms-global-settings.php:400 msgid "Week start day" msgstr "" -#: cforms-global-settings.php:399 +#: cforms-global-settings.php:401 msgid "0=Sunday, 1=Monday, etc." msgstr "" -#: cforms-global-settings.php:408 -msgid "SMTP Server Settings" +#: cforms-global-settings.php:410 +msgid "Mail Server Settings" msgstr "" -#: cforms-global-settings.php:411 +#: cforms-global-settings.php:414 +msgid "" +"cforms produces RFC compliant emails with CRLF (carriage-return/line-feed) " +"as line separators. If your mail server adds additional line breaks to the " +"email, you way want to try and turn on the below option." +msgstr "" + +#: cforms-global-settings.php:418 +#, php-format +msgid "Separate lines in email %sheader%s with LF only (CR suppressed)" +msgstr "" + +#: cforms-global-settings.php:422 +#, php-format +msgid "Separate lines in email %sbody%s with LF only (CR suppressed)" +msgstr "" + +#: cforms-global-settings.php:427 msgid "In a normal WP environment you do not need to configure these settings!" msgstr "" -#: cforms-global-settings.php:412 +#: cforms-global-settings.php:428 msgid "" "In case your web hosting provider doesn't support the native PHP mail" "() command feel free to configure cforms to " "utilize an external SMTP mail server to deliver the emails." msgstr "" -#: cforms-global-settings.php:421 cforms-help.php:723 cforms-help.php:828 -#: cforms-help.php:1261 +#: cforms-global-settings.php:437 cforms-help.php:730 cforms-help.php:835 +#: cforms-help.php:1289 msgid "Important:" msgstr "" -#: cforms-global-settings.php:421 +#: cforms-global-settings.php:437 msgid "" "If you require SSL / TLS make sure your webserver/PHP environment permits " "it! If in doubt, check with your web hosting company regarding " "openssl support." msgstr "" -#: cforms-global-settings.php:422 lib_options_err.php:76 +#: cforms-global-settings.php:438 lib_options_err.php:76 msgid "Remove Message" msgstr "" -#: cforms-global-settings.php:430 +#: cforms-global-settings.php:446 msgid "Enable an external SMTP server" msgstr "" -#: cforms-global-settings.php:432 +#: cforms-global-settings.php:448 msgid "" "To avoid additional sources of error, cformsII v6.4 and beyond includes the " "PHPmailer 2.0 scripts, now supporting both SSL and TLS for authentication." msgstr "" -#: cforms-global-settings.php:435 +#: cforms-global-settings.php:451 msgid "SMTP server address" msgstr "" -#: cforms-global-settings.php:439 +#: cforms-global-settings.php:455 msgid "Secure Connection" msgstr "" -#: cforms-global-settings.php:441 +#: cforms-global-settings.php:457 msgid "No" msgstr "" -#: cforms-global-settings.php:442 +#: cforms-global-settings.php:458 msgid "SSL (e.g. gmail)" msgstr "" -#: cforms-global-settings.php:443 +#: cforms-global-settings.php:459 msgid "TLS" msgstr "" -#: cforms-global-settings.php:447 +#: cforms-global-settings.php:463 msgid "Port" msgstr "" -#: cforms-global-settings.php:448 +#: cforms-global-settings.php:464 msgid "Usually 465 (e.g. gmail) or 587" msgstr "" -#: cforms-global-settings.php:452 +#: cforms-global-settings.php:468 msgid "SMTP Authentication (leave blank if not needed!):" msgstr "" -#: cforms-global-settings.php:455 +#: cforms-global-settings.php:471 msgid "Username" msgstr "" -#: cforms-global-settings.php:459 +#: cforms-global-settings.php:475 msgid "Password" msgstr "" -#: cforms-global-settings.php:467 +#: cforms-global-settings.php:483 msgid "POP before SMTP" msgstr "" -#: cforms-global-settings.php:472 +#: cforms-global-settings.php:488 msgid "POP server address" msgstr "" -#: cforms-global-settings.php:476 +#: cforms-global-settings.php:492 msgid "POP Port" msgstr "" -#: cforms-global-settings.php:480 +#: cforms-global-settings.php:496 msgid "POP Login" msgstr "" -#: cforms-global-settings.php:484 +#: cforms-global-settings.php:500 msgid "POP Password" msgstr "" -#: cforms-global-settings.php:496 +#: cforms-global-settings.php:512 msgid "Global File Upload Settings" msgstr "" -#: cforms-global-settings.php:500 cforms-options.php:433 +#: cforms-global-settings.php:516 cforms-options.php:437 #, php-format msgid "" "Configure and double-check these settings in case you are adding a " @@ -695,76 +735,76 @@ msgid "" "s>Help! for further information)." msgstr "" -#: cforms-global-settings.php:501 +#: cforms-global-settings.php:517 #, php-format msgid "" "Form specific settings (directory path etc.) have been moved to here." msgstr "" -#: cforms-global-settings.php:505 +#: cforms-global-settings.php:521 msgid "" "Also, note that by adding a File Upload Box to your form, the Ajax " "(if enabled) submission method will (automatically) gracefully " "degrade to the standard method, due to general HTML limitations." msgstr "" -#: cforms-global-settings.php:506 +#: cforms-global-settings.php:522 msgid "Below, error messages shown in case something goes awry:" msgstr "" -#: cforms-global-settings.php:511 +#: cforms-global-settings.php:527 msgid "File type not allowed" msgstr "" -#: cforms-global-settings.php:518 +#: cforms-global-settings.php:534 msgid "Generic (unknown) error" msgstr "" -#: cforms-global-settings.php:525 +#: cforms-global-settings.php:541 msgid "File is empty" msgstr "" -#: cforms-global-settings.php:532 +#: cforms-global-settings.php:548 msgid "File size too big" msgstr "" -#: cforms-global-settings.php:539 +#: cforms-global-settings.php:555 msgid "Error during upload" msgstr "" -#: cforms-global-settings.php:551 +#: cforms-global-settings.php:567 msgid "WP Editor Button support" msgstr "" -#: cforms-global-settings.php:554 +#: cforms-global-settings.php:570 msgid "" "If you would like to use editor buttons to insert your cforms please enable " "them below." msgstr "" -#: cforms-global-settings.php:559 +#: cforms-global-settings.php:575 msgid "Enable TinyMCE" msgstr "" -#: cforms-global-settings.php:559 +#: cforms-global-settings.php:575 msgid "& Code editor buttons" msgstr "" -#: cforms-global-settings.php:563 +#: cforms-global-settings.php:579 msgid "Fix TinyMCE error" msgstr "" -#: cforms-global-settings.php:564 +#: cforms-global-settings.php:580 msgid "" "Select in case you experience a TinyMCE editor error caused by other plugins." msgstr "" -#: cforms-global-settings.php:572 +#: cforms-global-settings.php:588 msgid "CAPTCHA Image Settings" msgstr "" -#: cforms-global-settings.php:575 +#: cforms-global-settings.php:591 msgid "" "Below you can find a few switches and options to change the default look of " "the captcha image. Feel free to upload your own backgrounds and fonts to the " @@ -773,91 +813,91 @@ msgid "" "code> )." msgstr "" -#: cforms-global-settings.php:614 +#: cforms-global-settings.php:630 msgid "Preview Image" msgstr "" -#: cforms-global-settings.php:614 +#: cforms-global-settings.php:630 msgid "Don't forget to save your changes!" msgstr "" -#: cforms-global-settings.php:616 +#: cforms-global-settings.php:632 msgid "Reload Captcha Image" msgstr "" -#: cforms-global-settings.php:621 cforms-global-settings.php:705 +#: cforms-global-settings.php:637 cforms-global-settings.php:721 msgid "Force display" msgstr "" -#: cforms-global-settings.php:622 +#: cforms-global-settings.php:638 msgid "Force CAPTCHA display for logged in users" msgstr "" -#: cforms-global-settings.php:626 +#: cforms-global-settings.php:642 msgid "Width" msgstr "" -#: cforms-global-settings.php:629 +#: cforms-global-settings.php:645 msgid "Height" msgstr "" -#: cforms-global-settings.php:633 +#: cforms-global-settings.php:649 msgid "Border Color" msgstr "" -#: cforms-global-settings.php:639 +#: cforms-global-settings.php:655 msgid "Background Image" msgstr "" -#: cforms-global-settings.php:646 +#: cforms-global-settings.php:662 msgid "Font Type" msgstr "" -#: cforms-global-settings.php:652 +#: cforms-global-settings.php:668 msgid "Min Size" msgstr "" -#: cforms-global-settings.php:655 +#: cforms-global-settings.php:671 msgid "Max Size" msgstr "" -#: cforms-global-settings.php:659 +#: cforms-global-settings.php:675 msgid "Min Angle" msgstr "" -#: cforms-global-settings.php:662 +#: cforms-global-settings.php:678 msgid "Max Angle" msgstr "" -#: cforms-global-settings.php:666 +#: cforms-global-settings.php:682 msgid "Color" msgstr "" -#: cforms-global-settings.php:674 +#: cforms-global-settings.php:690 msgid "Number of shown characters" msgstr "" -#: cforms-global-settings.php:677 +#: cforms-global-settings.php:693 msgid "Minimum" msgstr "" -#: cforms-global-settings.php:680 +#: cforms-global-settings.php:696 msgid "Maximum" msgstr "" -#: cforms-global-settings.php:684 +#: cforms-global-settings.php:700 msgid "Allowed characters" msgstr "" -#: cforms-global-settings.php:689 +#: cforms-global-settings.php:705 msgid "User response is treated case insensitive" msgstr "" -#: cforms-global-settings.php:698 +#: cforms-global-settings.php:714 msgid "Visitor Verification Settings (Q&A)" msgstr "" -#: cforms-global-settings.php:701 +#: cforms-global-settings.php:717 msgid "" "Getting a lot of SPAM? Use these Q&A's to counteract " "spam and ensure it's a human submitting the form. To use in your form, add " @@ -865,17 +905,17 @@ msgid "" "preferably in its own FIELDSET!" msgstr "" -#: cforms-global-settings.php:706 +#: cforms-global-settings.php:722 msgid "Force Q&A display for logged in users" msgstr "" -#: cforms-global-settings.php:714 +#: cforms-global-settings.php:730 msgid "" "The below error/failure message is also used for captcha " "verification!" msgstr "" -#: cforms-global-settings.php:715 +#: cforms-global-settings.php:731 #, php-format msgid "" "Depending on your personal preferences and level of SPAM security you intend " @@ -883,26 +923,26 @@ msgid "" "a>!" msgstr "" -#: cforms-global-settings.php:719 +#: cforms-global-settings.php:735 msgid "Failure message
(for a wrong answer)" msgstr "" -#: cforms-global-settings.php:728 +#: cforms-global-settings.php:744 msgid "Questions & Answers
format: Q=A" msgstr "" -#: cforms-global-settings.php:738 +#: cforms-global-settings.php:754 msgid "Database Input Tracking" msgstr "" -#: cforms-global-settings.php:741 +#: cforms-global-settings.php:757 msgid "" "If you like to track your form submissions also via the database, please " "enable this feature below. If required, two new tables will be created and " "you'll see a new sub tab \"Tracking\" under the cforms menu." msgstr "" -#: cforms-global-settings.php:748 +#: cforms-global-settings.php:764 #, php-format msgid "" "If you've enabled the auto confirmation message " @@ -911,138 +951,138 @@ msgid "" "form tracking ID by using the variable {ID}." msgstr "" -#: cforms-global-settings.php:751 +#: cforms-global-settings.php:767 msgid "Enable Database Tracking" msgstr "" -#: cforms-global-settings.php:752 +#: cforms-global-settings.php:768 msgid "Will create two new tables in your WP database." msgstr "" -#: cforms-global-settings.php:756 +#: cforms-global-settings.php:772 msgid "Show on dashboard" msgstr "" -#: cforms-global-settings.php:757 +#: cforms-global-settings.php:773 msgid "Make sure to enable your forms individually as well!" msgstr "" -#: cforms-global-settings.php:761 +#: cforms-global-settings.php:777 msgid "Enable global RSS" msgstr "" -#: cforms-global-settings.php:762 +#: cforms-global-settings.php:778 msgid "Enables an RSS feed to track all new submissions across all forms." msgstr "" -#: cforms-global-settings.php:767 cforms-options.php:709 -msgid "RSS entries" +#: cforms-global-settings.php:787 cforms-options.php:736 +msgid "Number of shown RSS entries" msgstr "" -#: cforms-global-settings.php:771 cforms-options.php:713 +#: cforms-global-settings.php:791 cforms-options.php:757 msgid "RSS Feed Security Key" msgstr "" -#: cforms-global-settings.php:774 cforms-options.php:716 +#: cforms-global-settings.php:794 cforms-options.php:760 msgid "Reset RSS Key" msgstr "" -#: cforms-global-settings.php:775 cforms-options.php:717 +#: cforms-global-settings.php:795 cforms-options.php:765 msgid "The complete RSS URL »" msgstr "" -#: cforms-global-settings.php:783 +#: cforms-global-settings.php:803 msgid "Wipe out all collected data and drop tables." msgstr "" -#: cforms-global-settings.php:784 +#: cforms-global-settings.php:804 msgid "Be careful with this one!" msgstr "" -#: cforms-global-settings.php:784 +#: cforms-global-settings.php:804 msgid "Delete cforms Tracking Tables" msgstr "" -#: cforms-global-settings.php:784 +#: cforms-global-settings.php:804 msgid "Do you really want to erase all collected data?" msgstr "" -#: cforms-global-settings.php:794 +#: cforms-global-settings.php:814 msgid "Backup All cforms Settings" msgstr "" -#: cforms-global-settings.php:797 +#: cforms-global-settings.php:817 msgid "" "Individual form configurations can be backup up on the respective form admin " "page." msgstr "" -#: cforms-global-settings.php:798 +#: cforms-global-settings.php:818 msgid "" "Restoring all settings will overwrite all form settings & global " "settings!" msgstr "" -#: cforms-global-settings.php:800 +#: cforms-global-settings.php:820 msgid "Backup all settings now!" msgstr "" -#: cforms-global-settings.php:801 +#: cforms-global-settings.php:821 msgid "Restore all settings now!" msgstr "" -#: cforms-global-settings.php:801 +#: cforms-global-settings.php:821 msgid "" "With a broken backup file, this action may erase all your settings! Do you " "want to continue?" msgstr "" -#: cforms-global-settings.php:803 +#: cforms-global-settings.php:823 msgid "For debug purposes, you can view your cforms settings array here " msgstr "" -#: cforms-global-settings.php:804 +#: cforms-global-settings.php:824 msgid "View all cforms settings" msgstr "" -#: cforms-global-settings.php:804 +#: cforms-global-settings.php:824 msgid "Debug Output" msgstr "" -#: cforms-global-settings.php:811 +#: cforms-global-settings.php:831 msgid "Uninstalling / Removing cforms" msgstr "" -#: cforms-global-settings.php:814 +#: cforms-global-settings.php:834 msgid "" "Generally, deactivating this plugin does not erase any of " "its data, if you like to quit using cforms for good, please erase all data " "before deactivating the plugin." msgstr "" -#: cforms-global-settings.php:816 +#: cforms-global-settings.php:836 msgid "" "This erases all cforms data (form & plugin settings). " "This is irrevocable! Be careful." msgstr "" -#: cforms-global-settings.php:817 +#: cforms-global-settings.php:837 msgid "Are you sure you want to do this?!" msgstr "" -#: cforms-global-settings.php:817 +#: cforms-global-settings.php:837 msgid "DELETE *ALL* CFORMS DATA" msgstr "" -#: cforms-global-settings.php:817 +#: cforms-global-settings.php:837 msgid "Do you really want to erase all of the plugin config data?" msgstr "" -#: cforms-global-settings.php:838 +#: cforms-global-settings.php:858 msgid "custom files" msgstr "" -#: cforms-global-settings.php:860 js\include\installpreset.php:67 +#: cforms-global-settings.php:880 js\include\installpreset.php:67 msgid "Not available" msgstr "" @@ -1050,109 +1090,119 @@ msgstr "" msgid "Help" msgstr "" -#: cforms-help.php:16 +#: cforms-help.php:17 msgid "" "Here you'll find plenty of examples and documentation that should help you " "configure cforms." msgstr "" -#: cforms-help.php:17 +#: cforms-help.php:18 #, php-format msgid "" "This manual/help page is also available as a %shttp://www.deliciousdays.com/" "download/cforms-manual.pdf%sPDF document%s." msgstr "" -#: cforms-help.php:19 +#: cforms-help.php:21 +msgid "" +"If cforms provides great services to you and/or your business, please " +"consider making a donation to support future development." +msgstr "" + +#: cforms-help.php:22 cforms-help.php:23 +msgid "Thank you!" +msgstr "" + +#: cforms-help.php:26 msgid "Table of Contents" msgstr "" -#: cforms-help.php:21 cforms-help.php:42 +#: cforms-help.php:28 cforms-help.php:49 msgid "Basic steps, a small guide" msgstr "" -#: cforms-help.php:22 cforms-help.php:64 +#: cforms-help.php:29 cforms-help.php:71 msgid "Inserting a form" msgstr "" -#: cforms-help.php:23 cforms-help.php:82 +#: cforms-help.php:30 cforms-help.php:89 msgid "Configuring form input fields" msgstr "" -#: cforms-help.php:25 cforms-help.php:104 +#: cforms-help.php:32 cforms-help.php:111 msgid "Special Tell A Friend input fields" msgstr "" -#: cforms-help.php:26 cforms-help.php:105 +#: cforms-help.php:33 cforms-help.php:112 msgid "Special WP Comment Feature input fields" msgstr "" -#: cforms-help.php:27 +#: cforms-help.php:34 msgid "SPAM protection: Q & A" msgstr "" -#: cforms-help.php:28 +#: cforms-help.php:35 msgid "SPAM protection: Captcha" msgstr "" -#: cforms-help.php:29 cforms-help.php:759 +#: cforms-help.php:36 cforms-help.php:766 msgid "Fieldsets" msgstr "" -#: cforms-help.php:30 cforms-help.php:803 +#: cforms-help.php:37 cforms-help.php:810 msgid "Using regular expressions with form fields" msgstr "" -#: cforms-help.php:32 cforms-help.php:871 +#: cforms-help.php:39 cforms-help.php:878 msgid "Custom error messages & input field titles" msgstr "" -#: cforms-help.php:33 cforms-help.php:909 +#: cforms-help.php:40 cforms-help.php:916 msgid "Advanced: cforms APIs & (Post-)Processing of submitted data" msgstr "" -#: cforms-help.php:34 cforms-help.php:990 +#: cforms-help.php:41 cforms-help.php:1018 msgid "Advanced: Real-time creation of dynamic forms" msgstr "" -#: cforms-help.php:35 +#: cforms-help.php:42 msgid "Using variables in email subjects & messages" msgstr "" -#: cforms-help.php:36 cforms-help.php:1350 +#: cforms-help.php:43 cforms-help.php:1378 msgid "Multi page forms" msgstr "" -#: cforms-help.php:38 cforms-help.php:1425 +#: cforms-help.php:45 cforms-help.php:1453 msgid "Need more help?" msgstr "" -#: cforms-help.php:45 +#: cforms-help.php:52 msgid "" "Admittedly, cforms is not the easiest form mailer plugin " "but it may be the most flexible. The below outline should help you get " "started with the default form." msgstr "" -#: cforms-help.php:47 +#: cforms-help.php:54 #, php-format msgid "First take a look at the default form" msgstr "" -#: cforms-help.php:49 +#: cforms-help.php:56 msgid "" "Verify that it contains all the fields you need, are they in the right order" msgstr "" -#: cforms-help.php:50 +#: cforms-help.php:57 msgid "Check the field labels (field names), if needed make your adjustments" msgstr "" -#: cforms-help.php:51 +#: cforms-help.php:58 msgid "Check the flags for each field (check boxes to the right)." msgstr "" -#: cforms-help.php:52 +#: cforms-help.php:59 #, php-format msgid "" "Want to include SPAM protection? Choose between Q&Ahere." msgstr "" -#: cforms-help.php:55 +#: cforms-help.php:62 #, php-format msgid "" "Check if the email admin for your form is configured " "correctly." msgstr "" -#: cforms-help.php:56 +#: cforms-help.php:63 #, php-format msgid "" "Decide if you want the visitor to receive an auto " "confirmation message upon form submission." msgstr "" -#: cforms-help.php:57 +#: cforms-help.php:64 #, php-format msgid "" "Would you like to track form submission via the " "database?" msgstr "" -#: cforms-help.php:58 +#: cforms-help.php:65 #, php-format msgid "Add the default form to a post or page." msgstr "" -#: cforms-help.php:59 +#: cforms-help.php:66 msgid "Give it a whirl." msgstr "" -#: cforms-help.php:67 +#: cforms-help.php:74 msgid "Editing posts and pages:" msgstr "" -#: cforms-help.php:69 +#: cforms-help.php:76 msgid "TinyMCE Support" msgstr "" -#: cforms-help.php:70 +#: cforms-help.php:77 #, php-format msgid "" "If you like to do it the 'code' way, make sure to use %1s to include them in " "your Pages/Posts. With %2s being your form NAME." msgstr "" -#: cforms-help.php:71 +#: cforms-help.php:78 #, php-format msgid "" "A more elegant and safer way is to use the TinyMCE Button " "(double check if Button Support is enabled!)." msgstr "" -#: cforms-help.php:72 +#: cforms-help.php:79 #, php-format msgid "" "For backwards compatibility, the old-fashioned way is still supported: %1s " "for the first form and/or %2s for your other forms." msgstr "" -#: cforms-help.php:75 +#: cforms-help.php:82 msgid "Via PHP function call:" msgstr "" -#: cforms-help.php:76 +#: cforms-help.php:83 #, php-format msgid "" "Alternatively, you can specifically insert a form (into the sidebar for " @@ -1231,19 +1281,19 @@ msgid "" "default/first form and/or %2s for any other form." msgstr "" -#: cforms-help.php:78 cforms-help.php:402 cforms-help.php:609 -#: cforms-help.php:897 cforms-help.php:1293 cforms-help.php:1319 -#: cforms-options.php:611 cforms-options.php:772 +#: cforms-help.php:85 cforms-help.php:409 cforms-help.php:616 +#: cforms-help.php:904 cforms-help.php:1321 cforms-help.php:1347 +#: cforms-options.php:629 cforms-options.php:819 msgid "Note:" msgstr "" -#: cforms-help.php:78 +#: cforms-help.php:85 #, php-format msgid "" "\"%1s\" represents the number of the form, starting with %2s ..and so forth." msgstr "" -#: cforms-help.php:85 +#: cforms-help.php:92 #, php-format msgid "" "All supported input fields are listed below, highlighting the expected " @@ -1252,7 +1302,7 @@ msgid "" "see examples below." msgstr "" -#: cforms-help.php:87 +#: cforms-help.php:94 msgid "" "While the Field Names are usually just the label of a field (e.g. " "\"Your Name\"), they can contain additional information to support special " @@ -1260,155 +1310,155 @@ msgid "" "validation etc.)" msgstr "" -#: cforms-help.php:88 +#: cforms-help.php:95 msgid "" "A new wizard like mode allows you to configure more complex " "settings in case all the pipes \"|\" and pounds \"#\" are overwhelming." msgstr "" -#: cforms-help.php:91 +#: cforms-help.php:98 msgid "Text only elements" msgstr "" -#: cforms-help.php:92 +#: cforms-help.php:99 msgid "Javascript Date Picker input field" msgstr "" -#: cforms-help.php:93 +#: cforms-help.php:100 msgid "Single-, Password & Multi-line fields" msgstr "" -#: cforms-help.php:94 +#: cforms-help.php:101 msgid "Select / drop down box & radio buttons" msgstr "" -#: cforms-help.php:95 +#: cforms-help.php:102 msgid "Multi-select box" msgstr "" -#: cforms-help.php:96 cforms-help.php:293 cforms-help.php:1031 +#: cforms-help.php:103 cforms-help.php:300 cforms-help.php:1059 msgid "Check boxes" msgstr "" -#: cforms-help.php:97 cforms-help.php:329 +#: cforms-help.php:104 cforms-help.php:336 msgid "Check box groups" msgstr "" -#: cforms-help.php:98 +#: cforms-help.php:105 msgid "CC:me check box" msgstr "" -#: cforms-help.php:99 +#: cforms-help.php:106 msgid "Multiple recipients drop down box" msgstr "" -#: cforms-help.php:100 +#: cforms-help.php:107 msgid "Hidden fields" msgstr "" -#: cforms-help.php:101 +#: cforms-help.php:108 msgid "SPAM protection: Q&A input field" msgstr "" -#: cforms-help.php:102 +#: cforms-help.php:109 msgid "SPAM protection: Captcha input field" msgstr "" -#: cforms-help.php:103 +#: cforms-help.php:110 msgid "File attachments / upload" msgstr "" -#: cforms-help.php:112 cforms-help.php:142 cforms-help.php:177 -#: cforms-help.php:211 cforms-help.php:251 cforms-help.php:291 -#: cforms-help.php:327 cforms-help.php:368 cforms-help.php:399 -#: cforms-help.php:427 cforms-help.php:456 cforms-help.php:492 -#: cforms-help.php:527 cforms-help.php:553 cforms-help.php:674 -#: cforms-help.php:757 cforms-help.php:801 +#: cforms-help.php:119 cforms-help.php:149 cforms-help.php:184 +#: cforms-help.php:218 cforms-help.php:258 cforms-help.php:298 +#: cforms-help.php:334 cforms-help.php:375 cforms-help.php:406 +#: cforms-help.php:434 cforms-help.php:463 cforms-help.php:499 +#: cforms-help.php:534 cforms-help.php:560 cforms-help.php:681 +#: cforms-help.php:764 cforms-help.php:808 msgid "form
field" msgstr "" -#: cforms-help.php:114 +#: cforms-help.php:121 msgid "Text only elements (no input)" msgstr "" -#: cforms-help.php:119 cforms-help.php:149 cforms-help.php:184 -#: cforms-help.php:218 cforms-help.php:258 cforms-help.php:298 -#: cforms-help.php:334 cforms-help.php:375 cforms-help.php:409 -#: cforms-help.php:433 cforms-help.php:463 cforms-help.php:499 -#: cforms-help.php:534 cforms-help.php:560 cforms-help.php:696 -#: cforms-help.php:707 cforms-help.php:767 cforms-help.php:811 +#: cforms-help.php:126 cforms-help.php:156 cforms-help.php:191 +#: cforms-help.php:225 cforms-help.php:265 cforms-help.php:305 +#: cforms-help.php:341 cforms-help.php:382 cforms-help.php:416 +#: cforms-help.php:440 cforms-help.php:470 cforms-help.php:506 +#: cforms-help.php:541 cforms-help.php:567 cforms-help.php:703 +#: cforms-help.php:714 cforms-help.php:774 cforms-help.php:818 msgid "Entry format for Field Name" msgstr "" -#: cforms-help.php:119 cforms-help.php:149 cforms-help.php:184 -#: cforms-help.php:218 cforms-help.php:258 cforms-help.php:298 -#: cforms-help.php:334 cforms-help.php:375 cforms-help.php:409 -#: cforms-help.php:433 cforms-help.php:463 cforms-help.php:499 -#: cforms-help.php:534 cforms-help.php:707 cforms-help.php:767 -#: cforms-help.php:811 cforms-help.php:880 +#: cforms-help.php:126 cforms-help.php:156 cforms-help.php:191 +#: cforms-help.php:225 cforms-help.php:265 cforms-help.php:305 +#: cforms-help.php:341 cforms-help.php:382 cforms-help.php:416 +#: cforms-help.php:440 cforms-help.php:470 cforms-help.php:506 +#: cforms-help.php:541 cforms-help.php:714 cforms-help.php:774 +#: cforms-help.php:818 cforms-help.php:887 msgid "Format:" msgstr "" -#: cforms-help.php:120 +#: cforms-help.php:127 #, php-format msgid "text paragraph %1$s css class %1$s optional style" msgstr "" -#: cforms-help.php:123 cforms-help.php:126 cforms-help.php:153 -#: cforms-help.php:188 cforms-help.php:192 cforms-help.php:196 -#: cforms-help.php:222 cforms-help.php:262 cforms-help.php:266 -#: cforms-help.php:302 cforms-help.php:338 cforms-help.php:379 -#: cforms-help.php:413 cforms-help.php:437 cforms-help.php:441 -#: cforms-help.php:467 cforms-help.php:503 cforms-help.php:507 -#: cforms-help.php:538 cforms-help.php:711 cforms-help.php:771 -#: cforms-help.php:1251 +#: cforms-help.php:130 cforms-help.php:133 cforms-help.php:160 +#: cforms-help.php:195 cforms-help.php:199 cforms-help.php:203 +#: cforms-help.php:229 cforms-help.php:269 cforms-help.php:273 +#: cforms-help.php:309 cforms-help.php:345 cforms-help.php:386 +#: cforms-help.php:420 cforms-help.php:444 cforms-help.php:448 +#: cforms-help.php:474 cforms-help.php:510 cforms-help.php:514 +#: cforms-help.php:545 cforms-help.php:718 cforms-help.php:778 +#: cforms-help.php:1279 msgid "Example:" msgstr "" -#: cforms-help.php:123 +#: cforms-help.php:130 msgid "Please make sure..." msgstr "" -#: cforms-help.php:126 +#: cforms-help.php:133 #, php-format msgid "Check %s here %s for more info. %s" msgstr "" -#: cforms-help.php:129 +#: cforms-help.php:136 msgid "" "HTML: the text paragraph supports HTML. If you need actual " "<, > in your text please use the proper HTML entity." msgstr "" -#: cforms-help.php:132 +#: cforms-help.php:139 msgid "" "The above expression applies the custom class \"mytextclass\" " "AND the specific styles \"font-size:9x; font-weight:" "bold;\" to the paragraph." msgstr "" -#: cforms-help.php:135 +#: cforms-help.php:142 #, php-format msgid "" "If you specify a css class, you also need to define it in your " "current form theme file, here." msgstr "" -#: cforms-help.php:144 +#: cforms-help.php:151 msgid "Javascript Date Picker" msgstr "" -#: cforms-help.php:150 cforms-help.php:185 +#: cforms-help.php:157 cforms-help.php:192 #, php-format msgid "" "field name %1$s default value %1$s regular expression" msgstr "" -#: cforms-help.php:154 +#: cforms-help.php:161 msgid "Arrival Date" msgstr "" -#: cforms-help.php:158 +#: cforms-help.php:165 #, php-format msgid "" "The example above will set a default value of \"mm/dd/yyyy\" so " @@ -1418,108 +1468,108 @@ msgid "" "date format (\"mm/dd/yyyy\" !)" msgstr "" -#: cforms-help.php:164 +#: cforms-help.php:171 msgid "Supported Date Formats (see \"Plugin Settings\" tab)" msgstr "" -#: cforms-help.php:165 +#: cforms-help.php:172 msgid "Field" msgstr "" -#: cforms-help.php:165 +#: cforms-help.php:172 msgid "Full Form" msgstr "" -#: cforms-help.php:165 +#: cforms-help.php:172 msgid "Short Form" msgstr "" -#: cforms-help.php:166 +#: cforms-help.php:173 msgid "Year" msgstr "" -#: cforms-help.php:166 +#: cforms-help.php:173 msgid "yyyy (4 digits)" msgstr "" -#: cforms-help.php:166 +#: cforms-help.php:173 msgid "yy (2 digits)" msgstr "" -#: cforms-help.php:167 +#: cforms-help.php:174 msgid "Month" msgstr "" -#: cforms-help.php:167 +#: cforms-help.php:174 msgid "mmm (name)" msgstr "" -#: cforms-help.php:167 +#: cforms-help.php:174 msgid "mm (2 digits)" msgstr "" -#: cforms-help.php:168 +#: cforms-help.php:175 msgid "Day of Month" msgstr "" -#: cforms-help.php:168 +#: cforms-help.php:175 msgid "dd (2 digits)" msgstr "" -#: cforms-help.php:179 +#: cforms-help.php:186 msgid "Single, Password & Multi line input fields" msgstr "" -#: cforms-help.php:189 +#: cforms-help.php:196 msgid "Reference" msgstr "" -#: cforms-help.php:193 +#: cforms-help.php:200 msgid "Your <u>Full</u> Name" msgstr "" -#: cforms-help.php:197 +#: cforms-help.php:204 #, php-format msgid "We need your email address for confirmation.\"%sYour EMail" msgstr "" -#: cforms-help.php:201 +#: cforms-help.php:208 msgid "You can of course omit the default value as in Example 2." msgstr "" -#: cforms-help.php:213 +#: cforms-help.php:220 msgid "Select boxes & radio buttons" msgstr "" -#: cforms-help.php:219 cforms-help.php:259 +#: cforms-help.php:226 cforms-help.php:266 #, php-format msgid "" "field name %1$s option1 %2$s value1 %1$s option2 %2$s value2 %1$s option3..." msgstr "" -#: cforms-help.php:223 cforms-help.php:893 +#: cforms-help.php:230 cforms-help.php:900 msgid "Your age#12-18|kiddo#19 to 30|young#31 to 45#45+ |older" msgstr "" -#: cforms-help.php:227 +#: cforms-help.php:234 msgid "" "Omitting the field name will result in not showing a label to " "the left of the field." msgstr "" -#: cforms-help.php:232 +#: cforms-help.php:239 msgid "" "The option parameter determines the text displayed to the " "visitor, value what is being sent in the email." msgstr "" -#: cforms-help.php:237 +#: cforms-help.php:244 msgid "" "Is no value explicitly given, then the shown option text is " "the value sent in the email." msgstr "" -#: cforms-help.php:242 +#: cforms-help.php:249 #, php-format msgid "" "Select box marked \"Required\": Using a minus symbol %1$s " @@ -1529,83 +1579,83 @@ msgid "" "considered a valid value." msgstr "" -#: cforms-help.php:253 cforms-help.php:1034 +#: cforms-help.php:260 cforms-help.php:1062 msgid "Multi select boxes" msgstr "" -#: cforms-help.php:263 +#: cforms-help.php:270 msgid "Pick#red#blue#green#yellow#orange" msgstr "" -#: cforms-help.php:267 +#: cforms-help.php:274 msgid "" "<strong>Select</strong>#Today#Tomorrow#This Week#Next Month#Never" msgstr "" -#: cforms-help.php:271 +#: cforms-help.php:278 msgid "" "Multi select fields can be set to Required. If so and " "unless at least one option is selected the form won't validate." msgstr "" -#: cforms-help.php:276 +#: cforms-help.php:283 msgid "" "If value1,2,.. are not specified, the values delivered in the " "email default to option1,2,...." msgstr "" -#: cforms-help.php:281 +#: cforms-help.php:288 msgid "" "Examples for specific values could be the matching color codes: e.g. " "red|#ff0000" msgstr "" -#: cforms-help.php:299 cforms-help.php:376 +#: cforms-help.php:306 cforms-help.php:383 #, php-format msgid "field name left %s field name right" msgstr "" -#: cforms-help.php:303 +#: cforms-help.php:310 msgid "#please check if you'd like more information" msgstr "" -#: cforms-help.php:307 +#: cforms-help.php:314 msgid "" "You can freely choose on which side of the check box the label appears (e.g. " "#label-right-only)." msgstr "" -#: cforms-help.php:312 +#: cforms-help.php:319 msgid "" "If both left and right labels are provided, only the " "right one will be considered." msgstr "" -#: cforms-help.php:317 +#: cforms-help.php:324 msgid "" "Check boxes can be flagged \"Required\" to support special " "use cases, e.g.: when you require the visitor to confirm that he/she has " "read term & conditions, before submitting the form." msgstr "" -#: cforms-help.php:335 +#: cforms-help.php:342 #, php-format msgid "" "field name %1$s chk box1 label%2$schk box1 value %1$s chk box2 label %3$s " "chk box3..." msgstr "" -#: cforms-help.php:339 +#: cforms-help.php:346 msgid "Select Color#green|00ff00 #red|ff0000 #purple|8726ac #yellow|fff90f" msgstr "" -#: cforms-help.php:343 +#: cforms-help.php:350 msgid "" "Two # (##) in a row will force a new line! This helps to better " "structure your check box group." msgstr "" -#: cforms-help.php:348 +#: cforms-help.php:355 msgid "" "Similar to multi-select boxes (see above), Check " "box groups allow you to deploy several check boxes (with their " @@ -1613,56 +1663,56 @@ msgid "" "submitted via the form email is a single line including all checked options." msgstr "" -#: cforms-help.php:353 +#: cforms-help.php:360 #, php-format msgid "" "If no explicit value (text after the pipe symbol '%1$s') is " "specified, the provided check box label is both label & submitted value." msgstr "" -#: cforms-help.php:358 +#: cforms-help.php:365 msgid "None of the check boxes within a group can be made \"Required\"." msgstr "" -#: cforms-help.php:370 +#: cforms-help.php:377 msgid "CC: option for visitors" msgstr "" -#: cforms-help.php:380 +#: cforms-help.php:387 msgid "#please cc: me" msgstr "" -#: cforms-help.php:384 +#: cforms-help.php:391 #, php-format msgid "" "If the visitor chooses to be CC'ed, no additional auto " "confirmation email (if configured) is sent out!" msgstr "" -#: cforms-help.php:389 +#: cforms-help.php:396 msgid "Please also see check boxes above." msgstr "" -#: cforms-help.php:401 +#: cforms-help.php:408 msgid "Multiple form mail recipients" msgstr "" -#: cforms-help.php:402 +#: cforms-help.php:409 #, php-format msgid "" "This requires corresponding email addresses here!!" msgstr "" -#: cforms-help.php:410 +#: cforms-help.php:417 #, php-format msgid "field name %1$s Name1 %1$s Name2 %1$s Name3..." msgstr "" -#: cforms-help.php:414 +#: cforms-help.php:421 msgid "Send to#Joe#Pete#Hillary" msgstr "" -#: cforms-help.php:418 +#: cforms-help.php:425 #, php-format msgid "" "The order of the names (1,2,3...) provided in the input field " @@ -1670,38 +1720,38 @@ msgid "" "configured here." msgstr "" -#: cforms-help.php:429 +#: cforms-help.php:436 msgid "Hidden input fields" msgstr "" -#: cforms-help.php:434 +#: cforms-help.php:441 #, php-format msgid "field name %1$s default value" msgstr "" -#: cforms-help.php:438 +#: cforms-help.php:445 msgid "extra-data" msgstr "" -#: cforms-help.php:442 +#: cforms-help.php:449 msgid "post-data-meta" msgstr "" -#: cforms-help.php:446 +#: cforms-help.php:453 msgid "" "Hidden fields can contain fixed/preset values or {variables} which reference custom fields of posts or pages." msgstr "" -#: cforms-help.php:458 cforms-options.php:337 +#: cforms-help.php:465 cforms-options.php:341 msgid "Visitor verification (Q&A)" msgstr "" -#: cforms-help.php:464 cforms-help.php:468 +#: cforms-help.php:471 cforms-help.php:475 msgid "--" msgstr "" -#: cforms-help.php:472 +#: cforms-help.php:479 #, php-format msgid "" "No field name required, the field has no configurable label per " @@ -1709,56 +1759,56 @@ msgid "" "Answers provided here." msgstr "" -#: cforms-help.php:477 +#: cforms-help.php:484 msgid "" "It makes sense to encapsulate this field inside a FIELDSET, to do that " "simply add a New Fieldset field before this one." msgstr "" -#: cforms-help.php:482 cforms-help.php:517 +#: cforms-help.php:489 cforms-help.php:524 msgid "" "PLEASE NOTE that by default the captcha and visitor " "verification (Q&A) field are not shown for logged in " "users! This can be changed under global settings." msgstr "" -#: cforms-help.php:494 +#: cforms-help.php:501 msgid "Captcha" msgstr "" -#: cforms-help.php:500 cforms-help.php:1007 +#: cforms-help.php:507 cforms-help.php:1035 msgid "field name" msgstr "" -#: cforms-help.php:504 +#: cforms-help.php:511 msgid "Enter code" msgstr "" -#: cforms-help.php:508 +#: cforms-help.php:515 msgid "" "Spam Protection|title:We don't like spam bots|err:Please enter the CAPTCHA " "code correctly! If text is unreadable, try reloading." msgstr "" -#: cforms-help.php:512 +#: cforms-help.php:519 msgid "" "Alternatively or in addition to the above Visitor verification feature, you can have the visitor provide a captcha response." msgstr "" -#: cforms-help.php:529 +#: cforms-help.php:536 msgid "Attachments / File Upload Box" msgstr "" -#: cforms-help.php:535 +#: cforms-help.php:542 msgid "form label" msgstr "" -#: cforms-help.php:539 +#: cforms-help.php:546 msgid "Please select a file" msgstr "" -#: cforms-help.php:543 +#: cforms-help.php:550 #, php-format msgid "" "Please double-check the general settings for proper " @@ -1766,46 +1816,46 @@ msgid "" "extensions, file size etc.)." msgstr "" -#: cforms-help.php:555 +#: cforms-help.php:562 msgid "Tell a Friend input fields" msgstr "" -#: cforms-help.php:560 +#: cforms-help.php:567 msgid "Format:
of all 4 fields" msgstr "" -#: cforms-help.php:561 +#: cforms-help.php:568 #, php-format msgid "" "field name %1$s default value %1$s regular expression" msgstr "" -#: cforms-help.php:564 +#: cforms-help.php:571 msgid "Fields:" msgstr "" -#: cforms-help.php:565 cforms-help.php:1025 cforms-options.php:342 +#: cforms-help.php:572 cforms-help.php:1053 cforms-options.php:346 msgid "T-A-F * Your Name" msgstr "" -#: cforms-help.php:566 +#: cforms-help.php:573 msgid "T-A-F * Your Email (make sure it's checked 'Email')" msgstr "" -#: cforms-help.php:567 cforms-help.php:1027 cforms-help.php:1028 -#: cforms-options.php:344 +#: cforms-help.php:574 cforms-help.php:1055 cforms-help.php:1056 +#: cforms-options.php:348 msgid "T-A-F * Friend's Name" msgstr "" -#: cforms-help.php:568 +#: cforms-help.php:575 msgid "T-A-F * Friend's Email (make sure it's checked 'Email')" msgstr "" -#: cforms-help.php:573 cforms-help.php:717 +#: cforms-help.php:580 cforms-help.php:724 msgid "To get it working:" msgstr "" -#: cforms-help.php:575 +#: cforms-help.php:582 #, php-format msgid "" "The Tell A Friend feature needs to be enabled " @@ -1814,56 +1864,56 @@ msgid "" "select box." msgstr "" -#: cforms-help.php:576 +#: cforms-help.php:583 #, php-format msgid "" "The auto confirmation message will be used as a " "message template and needs to be defined. See example below." msgstr "" -#: cforms-help.php:577 +#: cforms-help.php:584 #, php-format msgid "" "There are three additional, predefined variables that can be used in the message template." msgstr "" -#: cforms-help.php:578 +#: cforms-help.php:585 msgid "" "Add the form to your post/page php templates (see " "deployment options further below)." msgstr "" -#: cforms-help.php:579 +#: cforms-help.php:586 msgid "" "Tell-A-Friend enable your posts/pages by checking the T-A-F " "field in the WP post (page) editor." msgstr "" -#: cforms-help.php:589 +#: cforms-help.php:596 #, php-format msgid "" "Here is an example of how to setup the TXT part of the auto confirmation message as a Tell-A-friend template:" msgstr "" -#: cforms-help.php:596 +#: cforms-help.php:603 msgid "Hello {Friend's Name}" msgstr "" -#: cforms-help.php:597 +#: cforms-help.php:604 msgid "{Your Name} left you this message:" msgstr "" -#: cforms-help.php:598 +#: cforms-help.php:605 msgid "{Optional Comment}" msgstr "" -#: cforms-help.php:599 +#: cforms-help.php:606 msgid "The message was sent in reference to" msgstr "" -#: cforms-help.php:603 +#: cforms-help.php:610 msgid "" "This email is sent, as a courtesy of website.com, located at http://website." "com. The person who sent this email to you, {Your Name}, gave an email " @@ -1871,23 +1921,23 @@ msgid "" "and sent the email at {Time}." msgstr "" -#: cforms-help.php:609 +#: cforms-help.php:616 msgid "" "In addition to the above TXT message you can, of course, add an HTML " "counterpart." msgstr "" -#: cforms-help.php:617 +#: cforms-help.php:624 msgid "Recommended Implementation Options:" msgstr "" -#: cforms-help.php:622 +#: cforms-help.php:629 msgid "" "Alternative 1: The actual form will not show on the WP front page, " "but in the individual post/page view." msgstr "" -#: cforms-help.php:624 +#: cforms-help.php:631 #, php-format msgid "" "Simply add a <?php insert_cform(#); ?> (# = page.php template, e.g:" msgstr "" -#: cforms-help.php:633 +#: cforms-help.php:640 msgid "" "Suggestion: For a less crowded layout, optionally add some Javascript code " "to show/hide the form." msgstr "" -#: cforms-help.php:639 +#: cforms-help.php:646 msgid "" "Alternative 2: A Tell-A-Friend link is shown under every eligible " "post/page, displayed both on the blog's front page & individual post " "& page view." msgstr "" -#: cforms-help.php:642 +#: cforms-help.php:649 msgid "" "This requires a new WP page created (make note of the page ID or permalink), " "with its own page template (a clone of page.php will do). Add the following " "code to the new page template:" msgstr "" -#: cforms-help.php:652 +#: cforms-help.php:659 msgid "" "In single.php & index.php and/or page.php add beneath " "the \"the_content()\" call the link to the new page created above, e.g.:" msgstr "" -#: cforms-help.php:664 +#: cforms-help.php:671 msgid "" "Replace [your-new-page] with the permalink " "of your newly created page." msgstr "" -#: cforms-help.php:676 +#: cforms-help.php:683 msgid "WP Comment Feature input fields" msgstr "" -#: cforms-help.php:678 +#: cforms-help.php:685 msgid "" "The beauty is, using one form, you can now offer your readers to either " "leave a comment behind or simply send a note to the post editor while being " "able to fully utilize all security aspects of cforms." msgstr "" -#: cforms-help.php:682 +#: cforms-help.php:689 msgid "Example Configuration" msgstr "" -#: cforms-help.php:686 +#: cforms-help.php:693 msgid "Special Fields:" msgstr "" -#: cforms-help.php:688 cforms-help.php:1032 cforms-options.php:350 +#: cforms-help.php:695 cforms-help.php:1060 cforms-options.php:354 msgid "Author's Email" msgstr "" -#: cforms-help.php:689 cforms-help.php:1033 cforms-options.php:351 +#: cforms-help.php:696 cforms-help.php:1061 cforms-options.php:355 msgid "Author's URL" msgstr "" -#: cforms-help.php:690 cforms-help.php:1034 cforms-options.php:352 +#: cforms-help.php:697 cforms-help.php:1062 cforms-options.php:356 msgid "Author's Comment" msgstr "" -#: cforms-help.php:691 cforms-help.php:692 +#: cforms-help.php:698 cforms-help.php:699 msgid "(if plugin installed)" msgstr "" -#: cforms-help.php:696 +#: cforms-help.php:703 msgid "Format:
for top 4 fields" msgstr "" -#: cforms-help.php:697 +#: cforms-help.php:704 #, php-format msgid "" "field name %1$s default value %1$s
regular " "expression" msgstr "" -#: cforms-help.php:702 +#: cforms-help.php:709 msgid "Special Field" msgstr "" -#: cforms-help.php:703 cforms-help.php:1035 cforms-options.php:353 +#: cforms-help.php:710 cforms-help.php:1063 cforms-options.php:357 msgid "Select: Email/Comment" msgstr "" -#: cforms-help.php:708 +#: cforms-help.php:715 #, php-format msgid "" "field name %1$s text comment %2$s 0 %1$s text to author %2" "$s 1" msgstr "" -#: cforms-help.php:712 +#: cforms-help.php:719 msgid "Send as#regular comment|0#email to post author|1" msgstr "" -#: cforms-help.php:719 +#: cforms-help.php:726 #, php-format msgid "" "Turn on the WP Comment feature for the given form. " @@ -2000,7 +2050,7 @@ msgid "" "input fields in the [Field Type] select box." msgstr "" -#: cforms-help.php:720 +#: cforms-help.php:727 msgid "" "Modify this form to include all the necessary (new) input fields, make them " "required or not, add regexp, anti SPAM fields or even custom err messages. " @@ -2008,7 +2058,7 @@ msgid "" "\"Advanced: WP comment...\" form." msgstr "" -#: cforms-help.php:721 +#: cforms-help.php:728 #, php-format msgid "" "Edit your WP Theme template for comments. Remove the current form " @@ -2020,31 +2070,31 @@ msgid "" "subsequent form #. %sSee example comments.php here!%s" msgstr "" -#: cforms-help.php:722 +#: cforms-help.php:729 #, php-format msgid "" "Double check the extended WP comment feature settings " "here (especially the Ajax specific ones!). " msgstr "" -#: cforms-help.php:723 +#: cforms-help.php:730 msgid "" "To make Ajax work in case there are no comments yet, make sure that the " "comment container is always being rendered." msgstr "" -#: cforms-help.php:733 +#: cforms-help.php:740 msgid "Suggestions:" msgstr "" -#: cforms-help.php:735 +#: cforms-help.php:742 #, php-format msgid "" "I recommend you choose the wide_form.css theme under the Styling menu. And adjust to your liking." msgstr "" -#: cforms-help.php:736 +#: cforms-help.php:743 msgid "" "If you intend to make certain fields \"required\", I further recommend you " "add the text \"required\" to the input field label and set this " @@ -2053,19 +2103,19 @@ msgid "" "the Styling page)" msgstr "" -#: cforms-help.php:742 +#: cforms-help.php:749 msgid "Other comment plugins?" msgstr "" -#: cforms-help.php:742 cforms-options.php:986 +#: cforms-help.php:749 cforms-options.php:1033 msgid "cforms' WP comment feature supports the following comment plugins:" msgstr "" -#: cforms-help.php:747 +#: cforms-help.php:754 msgid "Tutorial:" msgstr "" -#: cforms-help.php:747 +#: cforms-help.php:754 #, php-format msgid "" "Here you'll find a comprehensive write up by Erum Munir " @@ -2074,46 +2124,46 @@ msgid "" "for the default WP comment functionality." msgstr "" -#: cforms-help.php:762 +#: cforms-help.php:769 msgid "" "Fieldsets are definitely part of good form design, they are form elements " "that are used to create individual sections of content within a given form." msgstr "" -#: cforms-help.php:768 +#: cforms-help.php:775 msgid "fieldset name" msgstr "" -#: cforms-help.php:772 lib_activate.php:40 lib_options_add.php:22 +#: cforms-help.php:779 lib_activate.php:41 lib_options_add.php:22 msgid "My Fieldset" msgstr "" -#: cforms-help.php:776 +#: cforms-help.php:783 msgid "" "Fieldsets can begin anywhere, simply add a New Fieldset " "field between or before your form elements." msgstr "" -#: cforms-help.php:781 +#: cforms-help.php:788 msgid "" "Fieldsets do not need to explicitly be closed, a New Fieldset element will automatically close the existing (if there is one to " "close) and reopen a new one." msgstr "" -#: cforms-help.php:786 +#: cforms-help.php:793 msgid "" "End Fieldset can be used, but it works without just " "as well." msgstr "" -#: cforms-help.php:791 +#: cforms-help.php:798 msgid "" "If there is no closing End Fieldset element, the plugin " "assumes that it needs to close the set just before the submit button" msgstr "" -#: cforms-help.php:806 +#: cforms-help.php:813 msgid "" "A regular expression (regex or regexp for short) is a special text string " "for describing a search pattern, according to certain syntax rules. Many " @@ -2121,36 +2171,36 @@ msgid "" "you can use them here to validate user input. Single/Multi line input fields:" msgstr "" -#: cforms-help.php:812 +#: cforms-help.php:819 #, php-format msgid "field name %1$s default value %1$s regular expression" msgstr "" -#: cforms-help.php:815 +#: cforms-help.php:822 msgid "Example:
US zip code" msgstr "" -#: cforms-help.php:816 +#: cforms-help.php:823 msgid "zip code" msgstr "" -#: cforms-help.php:819 +#: cforms-help.php:826 msgid "Example:
US phone #" msgstr "" -#: cforms-help.php:820 +#: cforms-help.php:827 msgid "phone" msgstr "" -#: cforms-help.php:823 +#: cforms-help.php:830 msgid "Special Example:
comparing two input fields" msgstr "" -#: cforms-help.php:824 +#: cforms-help.php:831 msgid "please repeat email" msgstr "" -#: cforms-help.php:829 +#: cforms-help.php:836 msgid "" "If you need to compare two input fields (e.g. email verification): simply use the regexp field (see special example above, to point to " @@ -2159,53 +2209,53 @@ msgid "" "source code of the form (e.g." msgstr "" -#: cforms-help.php:834 +#: cforms-help.php:841 msgid "GENERAL:" msgstr "" -#: cforms-help.php:839 +#: cforms-help.php:846 msgid "" "Ensure that the input field in question is tagged 'Required'!" msgstr "" -#: cforms-help.php:844 +#: cforms-help.php:851 msgid "and" msgstr "" -#: cforms-help.php:844 +#: cforms-help.php:851 msgid "define the start and the end of the input" msgstr "" -#: cforms-help.php:849 +#: cforms-help.php:856 msgid "" "...matches a string that has an \"a\" followed by zero or more \"b's\" (\"a" "\", \"ab\", \"abbb\", etc.);" msgstr "" -#: cforms-help.php:854 +#: cforms-help.php:861 msgid "...same, but there's at least one b (\"ab\", \"abbb\", etc.);" msgstr "" -#: cforms-help.php:859 +#: cforms-help.php:866 msgid "...a string that has lowercase letters \"a\" through \"d\"" msgstr "" -#: cforms-help.php:864 +#: cforms-help.php:871 #, php-format msgid "" "More information can be found here, a great regexp " "repository here." msgstr "" -#: cforms-help.php:874 +#: cforms-help.php:881 #, php-format msgid "" "On top of their labels, input fields can have titles, too. Simply append a %" "s to a given field configuration string." msgstr "" -#: cforms-help.php:875 +#: cforms-help.php:882 #, php-format msgid "" "If you like to add custom error messages (next to your generic Custom error messages can be applied to any input field " "that can be flagged \"Required\", titles " "to any input field." msgstr "" -#: cforms-help.php:913 -msgid "" -"cforms currently supports one API call to retrieve stored form data from the " -"cforms database tables." +#: cforms-help.php:922 +msgid "API Function :: get_cforms_entries()" msgstr "" -#: cforms-help.php:916 +#: cforms-help.php:922 cforms-help.php:970 msgid "API Function" msgstr "" -#: cforms-help.php:920 +#: cforms-help.php:925 cforms-help.php:973 +msgid "Description" +msgstr "" + +#: cforms-help.php:925 msgid "" -"This function will return a set of stored form submissions in a multi-" -"dimensional array." +"This function allows to conveniently retrieve submitted data from the cforms " +"tracking tables." msgstr "" -#: cforms-help.php:924 -msgid "text string (regexp pattern) :: e.g. the form name" +#: cforms-help.php:928 cforms-help.php:976 +msgid "Parameters" msgstr "" -#: cforms-help.php:928 -msgid "" -"DATETIME string (format: Y-m-d H:i:s) :: date & time defining the target " -"period, e.g." +#: cforms-help.php:931 cforms-help.php:939 cforms-help.php:947 +msgid "[text]" msgstr "" #: cforms-help.php:932 -msgid "text ::" +msgid "text string (regexp pattern), e.g. the form name" msgstr "" -#: cforms-help.php:932 -msgid "or" +#: cforms-help.php:935 +msgid "[date]" msgstr "" #: cforms-help.php:936 -msgid "number :: limits the number of results, '' (empty) = no limits!" +msgid "" +"DATETIME string (format: Y-m-d H:i:s). Date & time defining the target " +"period, e.g." msgstr "" #: cforms-help.php:940 +msgid "or" +msgstr "" + +#: cforms-help.php:940 +msgid " or any other form input field, e.g. 'Your Name'" +msgstr "" + +#: cforms-help.php:943 cforms-help.php:979 +msgid "[number]" +msgstr "" + +#: cforms-help.php:944 +msgid "limiting the number of results, '' (empty or false) = no limits!" +msgstr "" + +#: cforms-help.php:950 cforms-help.php:982 +msgid "Output" +msgstr "" + +#: cforms-help.php:951 +msgid "" +"This function will return a set of stored form submissions in a multi-" +"dimensional array." +msgstr "" + +#: cforms-help.php:952 msgid "Examples" msgstr "" -#: cforms-help.php:961 +#: cforms-help.php:957 +msgid "Example: Table Output" +msgstr "" + +#: cforms-help.php:970 +msgid "API Function :: cf_extra_comment_data()" +msgstr "" + +#: cforms-help.php:973 +msgid "" +"This function retrieves all extra data submitted (besides the default " +"Author, Email, URL, Message fields) per a given comment context. This " +"function should be called from within the \"comment LOOP\"." +msgstr "" + +#: cforms-help.php:980 +msgid "The comment ID is expected." +msgstr "" + +#: cforms-help.php:983 +msgid "" +"This function will return a set of stored comment data in a multi-" +"dimensional array." +msgstr "" + +#: cforms-help.php:984 +msgid "Example" +msgstr "" + +#: cforms-help.php:984 +#, php-format +msgid "(see also the %sonline tutorial%s in the cforms forum)" +msgstr "" + +#: cforms-help.php:989 msgid "" "(Post-)Processing of submitted data is really for hard core deployments, " "where real-time manipulation of a form & fields are required." msgstr "" -#: cforms-help.php:962 +#: cforms-help.php:990 msgid "" "If you require the submitted data to be manipulated, and or sent to a 3rd " "party or would like to make use of the data otherwise, here is how:" msgstr "" -#: cforms-help.php:967 +#: cforms-help.php:995 msgid "Custom functions to (post-)process user input" msgstr "" -#: cforms-help.php:967 -msgid "Available Functions" +#: cforms-help.php:995 +msgid "Available User Functions" msgstr "" -#: cforms-help.php:967 +#: cforms-help.php:995 msgid "" "(see my-functions.php file (plugin root directory), " "including examples)" msgstr "" -#: cforms-help.php:971 +#: cforms-help.php:999 msgid "" "function gets triggered after user input validation and " "cforms processing" msgstr "" -#: cforms-help.php:975 +#: cforms-help.php:1003 msgid "" "function gets called after input validation, but " "before\t further processing" msgstr "" -#: cforms-help.php:975 +#: cforms-help.php:1003 msgid "(nonAjax)" msgstr "" -#: cforms-help.php:979 +#: cforms-help.php:1007 msgid "" "function gets called after input validation, but " "before further processing" msgstr "" -#: cforms-help.php:979 +#: cforms-help.php:1007 msgid "(Ajax)" msgstr "" -#: cforms-help.php:983 +#: cforms-help.php:1011 msgid "" "function gets called at various stages of input processing" msgstr "" -#: cforms-help.php:986 +#: cforms-help.php:1014 #, php-format msgid "" "%s can reside in your /plugins/cforms-custom folder to protect it from " "future (auto) upgrades." msgstr "" -#: cforms-help.php:993 +#: cforms-help.php:1021 msgid "" "Again, this is for the advanced user who requires ad-hoc creation of forms." msgstr "" -#: cforms-help.php:995 +#: cforms-help.php:1023 msgid "A few things to note on dynamic forms:" msgstr "" -#: cforms-help.php:997 +#: cforms-help.php:1025 msgid "Dynamic forms only work in non-Ajax mode." msgstr "" -#: cforms-help.php:998 +#: cforms-help.php:1026 msgid "" "Each dynamic form references and thus requires a base form defined in the cforms form settings. All its settings will be used, except " "the form (&field) definition." msgstr "" -#: cforms-help.php:999 +#: cforms-help.php:1027 msgid "" "Any of the form fields described in the plugins' HELP! " "section can be dynamically generated." msgstr "" -#: cforms-help.php:1000 +#: cforms-help.php:1028 #, php-format msgid "Function call to generate dynamic forms: %s with" msgstr "" -#: cforms-help.php:1003 +#: cforms-help.php:1031 msgid "" "empty string for the first (default) form and 2,3,4... for " "any subsequent form" msgstr "" -#: cforms-help.php:1007 +#: cforms-help.php:1035 msgid "field name format described above" msgstr "" -#: cforms-help.php:1020 +#: cforms-help.php:1048 msgid "Form input field types ('type'):" msgstr "" -#: cforms-help.php:1024 +#: cforms-help.php:1052 msgid "Basic fields" msgstr "" -#: cforms-help.php:1024 +#: cforms-help.php:1052 msgid "Special T-A-F fields" msgstr "" -#: cforms-help.php:1025 +#: cforms-help.php:1053 msgid "Text paragraph" msgstr "" -#: cforms-help.php:1026 +#: cforms-help.php:1054 msgid "Single input field" msgstr "" -#: cforms-help.php:1026 cforms-options.php:343 +#: cforms-help.php:1054 cforms-options.php:347 msgid "T-A-F * Your Email" msgstr "" -#: cforms-help.php:1027 +#: cforms-help.php:1055 msgid "Multi line field" msgstr "" -#: cforms-help.php:1028 +#: cforms-help.php:1056 msgid "Hidden field" msgstr "" -#: cforms-help.php:1029 +#: cforms-help.php:1057 msgid "Password field" msgstr "" -#: cforms-help.php:1030 +#: cforms-help.php:1058 msgid "Date picker field" msgstr "" -#: cforms-help.php:1030 cforms-options.php:960 +#: cforms-help.php:1058 cforms-options.php:1007 msgid "WP Comment Feature" msgstr "" -#: cforms-help.php:1032 +#: cforms-help.php:1060 msgid "Check boxes groups" msgstr "" -#: cforms-help.php:1033 +#: cforms-help.php:1061 msgid "Drop down fields" msgstr "" -#: cforms-help.php:1035 +#: cforms-help.php:1063 msgid "Radio buttons" msgstr "" -#: cforms-help.php:1036 +#: cforms-help.php:1064 msgid "'CC' check box" msgstr "" -#: cforms-help.php:1036 cforms-options.php:356 +#: cforms-help.php:1064 cforms-options.php:360 msgid "Subscribe To Comments" msgstr "" -#: cforms-help.php:1037 +#: cforms-help.php:1065 msgid "Multi-recipients field" msgstr "" -#: cforms-help.php:1037 cforms-options.php:359 +#: cforms-help.php:1065 cforms-options.php:363 msgid "Comment Luv" msgstr "" -#: cforms-help.php:1038 +#: cforms-help.php:1066 msgid "Spam/Q&A verification" msgstr "" -#: cforms-help.php:1039 +#: cforms-help.php:1067 msgid "Spam/captcha verification" msgstr "" -#: cforms-help.php:1040 +#: cforms-help.php:1068 msgid "File upload fields" msgstr "" -#: cforms-help.php:1041 +#: cforms-help.php:1069 msgid "Begin of a fieldset" msgstr "" -#: cforms-help.php:1042 +#: cforms-help.php:1070 msgid "End of a fieldset" msgstr "" -#: cforms-help.php:1045 +#: cforms-help.php:1073 msgid "Should only be used once per generated form!" msgstr "" -#: cforms-help.php:1051 +#: cforms-help.php:1079 msgid "Simple example:" msgstr "" -#: cforms-help.php:1058 cforms-help.php:1085 lib_activate.php:41 +#: cforms-help.php:1086 cforms-help.php:1113 lib_activate.php:42 #: lib_options_add.php:23 msgid "Your Name|Your Name" msgstr "" -#: cforms-help.php:1059 +#: cforms-help.php:1087 msgid "Your Email" msgstr "" -#: cforms-help.php:1060 +#: cforms-help.php:1088 msgid "Your Message" msgstr "" -#: cforms-help.php:1074 +#: cforms-help.php:1102 msgid "Call default form with two defined fields" msgstr "" -#: cforms-help.php:1081 +#: cforms-help.php:1109 msgid "More advanced example (file access)" msgstr "" -#: cforms-help.php:1090 lib_activate.php:42 lib_options_add.php:24 +#: cforms-help.php:1118 lib_activate.php:43 lib_options_add.php:24 msgid "Email" msgstr "" -#: cforms-help.php:1094 +#: cforms-help.php:1122 msgid "Please pick a month for delivery:" msgstr "" -#: cforms-help.php:1097 +#: cforms-help.php:1125 msgid "Deliver on#Please pick a month" msgstr "" -#: cforms-help.php:1099 +#: cforms-help.php:1127 msgid "Need to put this file into your themes dir!" msgstr "" -#: cforms-help.php:1106 +#: cforms-help.php:1134 msgid "Remove the last '#'" msgstr "" -#: cforms-help.php:1111 +#: cforms-help.php:1139 msgid "Call form #5 with new fields" msgstr "" -#: cforms-help.php:1115 +#: cforms-help.php:1143 msgid "With month.txt containing all 12 months of a year:" msgstr "" -#: cforms-help.php:1119 +#: cforms-help.php:1147 msgid "January" msgstr "" -#: cforms-help.php:1121 +#: cforms-help.php:1149 msgid "February" msgstr "" -#: cforms-help.php:1123 +#: cforms-help.php:1151 msgid "March" msgstr "" -#: cforms-help.php:1132 +#: cforms-help.php:1160 msgid "Using variables in email subject and messages" msgstr "" -#: cforms-help.php:1136 +#: cforms-help.php:1164 #, php-format msgid "" "Subjects and messages for emails both to the Nickname
)." msgstr "" -#: cforms-help.php:1215 +#: cforms-help.php:1243 msgid "Inserts the WP post or page title." msgstr "" -#: cforms-help.php:1219 +#: cforms-help.php:1247 msgid "Inserts the WP post or page excerpt." msgstr "" -#: cforms-help.php:1228 +#: cforms-help.php:1256 msgid "Custom variables (referencing input fields):" msgstr "" -#: cforms-help.php:1233 +#: cforms-help.php:1261 msgid "" "Alternatively to the cforms predefined variables, you can also reference " "data of any of your form's input fields by one of the 3 ways described below." msgstr "" -#: cforms-help.php:1237 +#: cforms-help.php:1265 msgid "field label" msgstr "" -#: cforms-help.php:1238 +#: cforms-help.php:1266 msgid "" "With field label being the exact field label as it is being " "tracked and sent in the admin email!" msgstr "" -#: cforms-help.php:1241 +#: cforms-help.php:1269 msgid "XYZ" msgstr "" -#: cforms-help.php:1242 +#: cforms-help.php:1270 msgid "" "In case you're using the custom input field NAMES & ID's, the " "reference is the id: of the field." msgstr "" -#: cforms-help.php:1246 +#: cforms-help.php:1274 msgid "" "With NN being the position of the field on the form configuration " "page." msgstr "" -#: cforms-help.php:1252 +#: cforms-help.php:1280 #, php-format msgid "Suppose this is the input field definition string: %sYour Website%s" msgstr "" -#: cforms-help.php:1253 +#: cforms-help.php:1281 msgid "The corresponding variables would be:" msgstr "" -#: cforms-help.php:1254 +#: cforms-help.php:1282 #, php-format msgid "" "%1$s{Your Website}%2$s , %1$s{homepage}%2$s, or %1$s%3$s%2$s (assuming it is " "on the 4th position) respectively." msgstr "" -#: cforms-help.php:1261 +#: cforms-help.php:1289 msgid "" "If you are using multiple input fields with the same " "recorded field label (you can always check the \"Tracking\" menu tab for how " "the fields are stored), e.g:" msgstr "" -#: cforms-help.php:1269 +#: cforms-help.php:1297 #, php-format msgid "" "Results in the first field labeled %1$s to be addressed with %2$s. The " "second instance of %1$s can be addressed by %3$s, and so on..." msgstr "" -#: cforms-help.php:1276 +#: cforms-help.php:1304 #, php-format msgid "" "Here is an example for a simple Admin HTML message " "(you can copy and paste the below code or change to your liking):" msgstr "" -#: cforms-help.php:1281 cforms-help.php:1305 cforms-help.php:1331 +#: cforms-help.php:1309 cforms-help.php:1333 cforms-help.php:1359 msgid "HTML code:" msgstr "" -#: cforms-help.php:1282 +#: cforms-help.php:1310 #, php-format msgid "a form has been submitted on %s, via: %s [IP %s]" msgstr "" -#: cforms-help.php:1287 cforms-help.php:1311 cforms-help.php:1340 +#: cforms-help.php:1315 cforms-help.php:1339 cforms-help.php:1368 msgid "Output:" msgstr "" -#: cforms-help.php:1288 +#: cforms-help.php:1316 msgid "" "a form has been submitted on June 13, 2007 @ 9:38 pm, via: / [IP " "184.153.91.231]" msgstr "" -#: cforms-help.php:1293 +#: cforms-help.php:1321 msgid "" "With this limited message you'd want to enable the option \"Include pre " "formatted form data table in HTML part\"" msgstr "" -#: cforms-help.php:1300 +#: cforms-help.php:1328 #, php-format msgid "" "Here is another example for a more detailed Admin HTML " "message:" msgstr "" -#: cforms-help.php:1306 +#: cforms-help.php:1334 msgid "" "{Your Name} just submitted {Form Name}. You can get in touch with him/her " "via <a href=\"mailto:{Email}\">{Email}</a> and might want to " "check out his/her web page at <a href=\"{Website}\">{Website}</a>" msgstr "" -#: cforms-help.php:1306 cforms-help.php:1313 +#: cforms-help.php:1334 cforms-help.php:1341 msgid "The message is:" msgstr "" -#: cforms-help.php:1306 +#: cforms-help.php:1334 msgid "{Message}" msgstr "" -#: cforms-help.php:1312 +#: cforms-help.php:1340 msgid "" "John Doe just submitted MY NEW FORM. You can get in touch with him/her via " "john.doe@doe.com and might want to check out his/" "her web page at http://website.com" msgstr "" -#: cforms-help.php:1314 +#: cforms-help.php:1342 msgid "Hey there! Just wanted to get in touch. Give me a ring at 555-..." msgstr "" -#: cforms-help.php:1319 +#: cforms-help.php:1347 msgid "" "With this more detailed message you can disable the option \"Include pre " "formatted form data table in HTML part\" since you already have all fields " "covered in the actual message/header." msgstr "" -#: cforms-help.php:1326 +#: cforms-help.php:1354 #, php-format msgid "" "And a final example for a HTML auto confirmation message:" msgstr "" -#: cforms-help.php:1332 cforms-help.php:1341 +#: cforms-help.php:1360 cforms-help.php:1369 msgid "auto confirmation message" msgstr "" -#: cforms-help.php:1333 lib_activate.php:53 lib_activate.php:55 +#: cforms-help.php:1361 lib_activate.php:55 lib_activate.php:57 #: lib_options_add.php:35 lib_options_add.php:37 msgid "Dear {Your Name}," msgstr "" -#: cforms-help.php:1334 cforms-help.php:1343 lib_activate.php:53 -#: lib_activate.php:55 lib_options_add.php:35 lib_options_add.php:37 +#: cforms-help.php:1362 cforms-help.php:1371 lib_activate.php:55 +#: lib_activate.php:57 lib_options_add.php:35 lib_options_add.php:37 msgid "Thank you for your note!" msgstr "" -#: cforms-help.php:1335 cforms-help.php:1344 lib_activate.php:53 -#: lib_activate.php:55 lib_options_add.php:35 lib_options_add.php:37 +#: cforms-help.php:1363 cforms-help.php:1372 lib_activate.php:55 +#: lib_activate.php:57 lib_options_add.php:35 lib_options_add.php:37 msgid "We will get back to you as soon as possible." msgstr "" -#: cforms-help.php:1342 +#: cforms-help.php:1370 msgid "Dear John Doe," msgstr "" -#: cforms-help.php:1353 +#: cforms-help.php:1381 #, php-format msgid "" "Multi-page-forms support chaining of several forms and gather user input " @@ -2851,93 +2963,93 @@ msgid "" "the %s first form %s of the series into your post or page." msgstr "" -#: cforms-help.php:1358 +#: cforms-help.php:1386 msgid "Multi-part/-page form features:" msgstr "" -#: cforms-help.php:1361 +#: cforms-help.php:1389 msgid "Defining first, next and last form via configuration" msgstr "" -#: cforms-help.php:1364 +#: cforms-help.php:1392 msgid "Overriding \"next form\" at run-time (dynamically) via my-functions.php" msgstr "" -#: cforms-help.php:1367 +#: cforms-help.php:1395 msgid "Optionally send/suppress partial admin emails on a per form basis" msgstr "" -#: cforms-help.php:1370 +#: cforms-help.php:1398 msgid "A form reset button" msgstr "" -#: cforms-help.php:1373 +#: cforms-help.php:1401 msgid "A form back button" msgstr "" -#: cforms-help.php:1379 +#: cforms-help.php:1407 msgid "Example (eg. using 3 forms):" msgstr "" -#: cforms-help.php:1382 +#: cforms-help.php:1410 msgid "form 1,2,3:" msgstr "" -#: cforms-help.php:1383 +#: cforms-help.php:1411 msgid "select main check box to enable as multi-part forms" msgstr "" -#: cforms-help.php:1386 +#: cforms-help.php:1414 msgid "form 1:" msgstr "" -#: cforms-help.php:1387 cforms-help.php:1391 +#: cforms-help.php:1415 cforms-help.php:1419 msgid "(a) check \"Suppress admin email..\"" msgstr "" -#: cforms-help.php:1387 +#: cforms-help.php:1415 msgid "(b) check \"This is the first form..\"" msgstr "" -#: cforms-help.php:1387 +#: cforms-help.php:1415 msgid "(c) select \"form 2\" as next form" msgstr "" -#: cforms-help.php:1390 +#: cforms-help.php:1418 msgid "form 2:" msgstr "" -#: cforms-help.php:1391 +#: cforms-help.php:1419 msgid "(b) select \"form 3\" as next form" msgstr "" -#: cforms-help.php:1394 +#: cforms-help.php:1422 msgid "form 3:" msgstr "" -#: cforms-help.php:1395 +#: cforms-help.php:1423 msgid "(a) make sure to not! have \"Suppress admin email..\" selected" msgstr "" -#: cforms-help.php:1395 +#: cforms-help.php:1423 msgid "(b) select \"last form\" to stop further routing" msgstr "" -#: cforms-help.php:1398 +#: cforms-help.php:1426 msgid "Optionally add Reset & Back buttons where appropriate." msgstr "" -#: cforms-help.php:1401 +#: cforms-help.php:1429 msgid "" "Further, it makes sense to change \"Submit Button\" text (to e.g. \"Continue" "\") & the \"success message\" to rather announce the next form." msgstr "" -#: cforms-help.php:1405 +#: cforms-help.php:1433 msgid "Important Notes:" msgstr "" -#: cforms-help.php:1407 +#: cforms-help.php:1435 #, php-format msgid "" "Accessing %1$s {custom variables} %2$s in the final form differs from how " @@ -2946,32 +3058,32 @@ msgid "" "2$s would become %1$s{cf_form_Email}%2$s (for the first form of the series)." msgstr "" -#: cforms-help.php:1408 +#: cforms-help.php:1436 #, php-format msgid "" "%1s File attachments %2s will not be included in the admin email unless the " "upload fields are on the last form. However, they will be stored and tracked." msgstr "" -#: cforms-help.php:1409 +#: cforms-help.php:1437 #, php-format msgid "" "Once the multi page form support is enabled, %1$sAjax is being disabled%2$s " "for this form." msgstr "" -#: cforms-help.php:1415 +#: cforms-help.php:1443 msgid "Styling Your Forms (CSS theme files)" msgstr "" -#: cforms-help.php:1418 +#: cforms-help.php:1446 #, php-format msgid "" "Please see the Styling page for theme selection and " "editing options." msgstr "" -#: cforms-help.php:1419 +#: cforms-help.php:1447 msgid "" "cforms comes with a few theme examples (some of them may require adjustments " "to work with your forms!) but you can of course create your " @@ -2979,7 +3091,7 @@ msgid "" "put it in the /styling directory." msgstr "" -#: cforms-help.php:1420 +#: cforms-help.php:1448 #, php-format msgid "" "With v8.5+ cforms supports a separate custom user folder to store your " @@ -2988,7 +3100,7 @@ msgid "" "image files (CAPTCHA) to it." msgstr "" -#: cforms-help.php:1422 +#: cforms-help.php:1450 msgid "" "Your form doesn't look like the preview image, or your " "individual changes don't take effect, check your global WP theme CSS! It may " @@ -2997,14 +3109,14 @@ msgid "" "excellent CSS troubleshooting tool!" msgstr "" -#: cforms-help.php:1428 +#: cforms-help.php:1456 #, php-format msgid "" "For up-to-date information first check the %sFAQs%s & %scforms forum%s " "and comment section on the plugin homepage." msgstr "" -#: cforms-options.php:171 lib_functions.php:98 +#: cforms-options.php:171 lib_functions.php:100 msgid "Form Settings" msgstr "" @@ -3155,7 +3267,7 @@ msgstr "" msgid "Grey's out a form field (field will be completely disabled)." msgstr "" -#: cforms-options.php:242 cforms-options.php:387 +#: cforms-options.php:242 cforms-options.php:391 msgid "disabled" msgstr "" @@ -3163,221 +3275,225 @@ msgstr "" msgid "Form field will be readonly!" msgstr "" -#: cforms-options.php:243 cforms-options.php:393 +#: cforms-options.php:243 cforms-options.php:397 msgid "read-only" msgstr "" -#: cforms-options.php:275 cforms-options.php:293 +#: cforms-options.php:279 cforms-options.php:297 msgid "New Field" msgstr "" -#: cforms-options.php:314 +#: cforms-options.php:318 msgid "Drag me" msgstr "" -#: cforms-options.php:317 +#: cforms-options.php:321 msgid "Please enter field definition" msgstr "" -#: cforms-options.php:317 +#: cforms-options.php:321 msgid "Edit" msgstr "" -#: cforms-options.php:317 +#: cforms-options.php:321 msgid "Pick a field type" msgstr "" -#: cforms-options.php:319 +#: cforms-options.php:323 msgid "New Fieldset" msgstr "" -#: cforms-options.php:320 +#: cforms-options.php:324 msgid "Text only (no input)" msgstr "" -#: cforms-options.php:321 +#: cforms-options.php:325 msgid "Single line of text" msgstr "" -#: cforms-options.php:322 +#: cforms-options.php:326 msgid "Multiple lines of text" msgstr "" -#: cforms-options.php:323 +#: cforms-options.php:327 msgid "Check Box" msgstr "" -#: cforms-options.php:324 +#: cforms-options.php:328 msgid "Check Box Group" msgstr "" -#: cforms-options.php:325 +#: cforms-options.php:329 msgid "Radio Buttons" msgstr "" -#: cforms-options.php:326 +#: cforms-options.php:330 msgid "Select Box" msgstr "" -#: cforms-options.php:327 +#: cforms-options.php:331 msgid "Multi Select Box" msgstr "" -#: cforms-options.php:328 +#: cforms-options.php:332 msgid "File Upload Box" msgstr "" -#: cforms-options.php:329 +#: cforms-options.php:333 msgid "Date Entry/Dialog" msgstr "" -#: cforms-options.php:330 +#: cforms-options.php:334 msgid "Password Field" msgstr "" -#: cforms-options.php:331 +#: cforms-options.php:335 msgid "Hidden Field" msgstr "" -#: cforms-options.php:332 +#: cforms-options.php:336 msgid "End Fieldset" msgstr "" -#: cforms-options.php:334 +#: cforms-options.php:338 msgid "--------- Special ------------" msgstr "" -#: cforms-options.php:335 +#: cforms-options.php:339 msgid "CC: option for user" msgstr "" -#: cforms-options.php:336 +#: cforms-options.php:340 msgid "Multiple Recipients" msgstr "" -#: cforms-options.php:338 +#: cforms-options.php:342 msgid "Captcha verification (image)" msgstr "" -#: cforms-options.php:341 +#: cforms-options.php:345 msgid "----- T-A-F form fields ------" msgstr "" -#: cforms-options.php:345 +#: cforms-options.php:349 msgid "T-A-F * Friend's Email" msgstr "" -#: cforms-options.php:348 +#: cforms-options.php:352 msgid "--- WP comment form fields ---" msgstr "" -#: cforms-options.php:364 +#: cforms-options.php:368 msgid "Remove input field" msgstr "" -#: cforms-options.php:367 cforms-options.php:373 cforms-options.php:379 -#: cforms-options.php:385 cforms-options.php:391 +#: cforms-options.php:371 cforms-options.php:377 cforms-options.php:383 +#: cforms-options.php:389 cforms-options.php:395 msgid "n/a" msgstr "" -#: cforms-options.php:367 cforms-options.php:373 cforms-options.php:379 -#: cforms-options.php:385 cforms-options.php:391 +#: cforms-options.php:371 cforms-options.php:377 cforms-options.php:383 +#: cforms-options.php:389 cforms-options.php:395 msgid "Not available." msgstr "" -#: cforms-options.php:369 +#: cforms-options.php:373 msgid "input required" msgstr "" -#: cforms-options.php:375 +#: cforms-options.php:379 msgid "email required" msgstr "" -#: cforms-options.php:381 +#: cforms-options.php:385 msgid "clear field" msgstr "" -#: cforms-options.php:406 +#: cforms-options.php:410 msgid "Add more input field(s)" msgstr "" -#: cforms-options.php:406 +#: cforms-options.php:410 msgid "Add" msgstr "" -#: cforms-options.php:407 +#: cforms-options.php:411 msgid "new field(s) @ position" msgstr "" -#: cforms-options.php:419 +#: cforms-options.php:423 msgid "Backup This Form" msgstr "" -#: cforms-options.php:420 +#: cforms-options.php:424 msgid " or restore previously saved settings:" msgstr "" -#: cforms-options.php:422 +#: cforms-options.php:426 msgid "Restore Settings" msgstr "" -#: cforms-options.php:429 +#: cforms-options.php:433 msgid "File Upload Settings" msgstr "" -#: cforms-options.php:434 +#: cforms-options.php:438 #, php-format msgid "" "You may also want to verify the global, file upload specific error messages." msgstr "" -#: cforms-options.php:442 +#: cforms-options.php:446 msgid "" "Can't find the specified Upload Directory ! Please verify " "that it exists!" msgstr "" -#: cforms-options.php:447 cforms-options.php:452 -msgid "Upload directory" +#: cforms-options.php:451 +msgid "Upload directory (absolute path)" msgstr "" -#: cforms-options.php:448 -msgid "[make sure the dir exists!]" +#: cforms-options.php:452 +msgid "e.g. /home/user/www/wp-content/my-upload-dir" msgstr "" -#: cforms-options.php:453 -msgid "[if outside of ../wp-content/..]" +#: cforms-options.php:456 +msgid "Upload directory URL (relative path/URL)" msgstr "" #: cforms-options.php:457 +msgid "e.g. /wp-content/my-upload-dir" +msgstr "" + +#: cforms-options.php:461 msgid "Allowed file extensions" msgstr "" -#: cforms-options.php:458 +#: cforms-options.php:462 msgid "[empty=all files are allowed]" msgstr "" -#: cforms-options.php:462 +#: cforms-options.php:466 msgid "Maximum file size
in kilobyte" msgstr "" -#: cforms-options.php:467 +#: cforms-options.php:471 msgid "Do not email attachments" msgstr "" -#: cforms-options.php:468 +#: cforms-options.php:472 #, php-format msgid "" "Note: Attachments are stored on the server & can be accessed via " "the cforms tracking tables." msgstr "" -#: cforms-options.php:477 +#: cforms-options.php:481 msgid "Messages, Text and Button Label" msgstr "" -#: cforms-options.php:480 +#: cforms-options.php:484 #, php-format msgid "" "These are the messages displayed to the user on successful (or failed) form " @@ -3386,77 +3502,77 @@ msgid "" "\" %s>here." msgstr "" -#: cforms-options.php:484 +#: cforms-options.php:488 msgid "Submit button text" msgstr "" -#: cforms-options.php:489 +#: cforms-options.php:493 msgid "Waiting message" msgstr "" -#: cforms-options.php:493 +#: cforms-options.php:497 msgid "\"required\" label" msgstr "" -#: cforms-options.php:497 +#: cforms-options.php:501 msgid "\"email required\" label" msgstr "" -#: cforms-options.php:502 +#: cforms-options.php:506 msgid "Success message
when form filled out correctly" msgstr "" -#: cforms-options.php:506 cforms-options.php:516 +#: cforms-options.php:510 cforms-options.php:520 msgid "Opt. Popup Msg" msgstr "" -#: cforms-options.php:512 +#: cforms-options.php:516 msgid "" "Failure message
when missing fields or wrong field
formats (regular expr.)" msgstr "" -#: cforms-options.php:521 +#: cforms-options.php:525 msgid "Show messages" msgstr "" -#: cforms-options.php:523 +#: cforms-options.php:527 msgid "Above form" msgstr "" -#: cforms-options.php:524 +#: cforms-options.php:528 msgid "Below form" msgstr "" -#: cforms-options.php:531 +#: cforms-options.php:535 msgid "Jump to Error" msgstr "" -#: cforms-options.php:533 +#: cforms-options.php:537 msgid "(Only Javascript)" msgstr "" -#: cforms-options.php:537 +#: cforms-options.php:541 msgid "Fancy Error messages" msgstr "" -#: cforms-options.php:539 +#: cforms-options.php:543 msgid "Enhanced display of errors (see also new theme CSS classes)" msgstr "" -#: cforms-options.php:543 +#: cforms-options.php:547 msgid "Embedded Custom Error
Messages" msgstr "" -#: cforms-options.php:545 +#: cforms-options.php:549 msgid "Field specific error messages will be shown above input field" msgstr "" -#: cforms-options.php:555 +#: cforms-options.php:559 msgid "Core Form Admin / Email Options" msgstr "" -#: cforms-options.php:558 +#: cforms-options.php:562 #, php-format msgid "" "These settings determine basic cforms behaviour and the form email recipient" @@ -3464,7 +3580,7 @@ msgid "" "accept the format of choice!" msgstr "" -#: cforms-options.php:559 +#: cforms-options.php:563 msgid "" "The default FROM: address is based on your blog's name and the WP default " "address. It can be changed, but I highly recommend you do not, as it may " @@ -3472,19 +3588,19 @@ msgid "" "if all admin emails are being sent/received! " msgstr "" -#: cforms-options.php:563 +#: cforms-options.php:567 msgid "FROM: email address" msgstr "" -#: cforms-options.php:568 +#: cforms-options.php:572 msgid "Admin email address(es)" msgstr "" -#: cforms-options.php:569 +#: cforms-options.php:573 msgid "More than one \"form admin\"? »" msgstr "" -#: cforms-options.php:572 +#: cforms-options.php:576 #, php-format msgid "" "Simply add additional email addresses separated by a every address listed!" msgstr "" -#: cforms-options.php:575 +#: cforms-options.php:579 msgid "BCC" msgstr "" -#: cforms-options.php:579 +#: cforms-options.php:583 msgid "Subject admin email" msgstr "" -#: cforms-options.php:580 cforms-options.php:740 cforms-options.php:763 -#: cforms-options.php:788 cforms-options.php:815 cforms-options.php:822 -#: cforms-options.php:835 +#: cforms-options.php:584 cforms-options.php:787 cforms-options.php:810 +#: cforms-options.php:835 cforms-options.php:862 cforms-options.php:869 +#: cforms-options.php:882 #, php-format msgid "Variables allowed." msgstr "" -#: cforms-options.php:586 -msgid "Include in last 5 entries shown on the dashboard." +#: cforms-options.php:590 +msgid "Core options" msgstr "" -#: cforms-options.php:593 -msgid "Exclude this form from tracking" +#: cforms-options.php:591 +#, php-format +msgid "%sTurn off%s admin email" msgstr "" -#: cforms-options.php:600 -msgid "Use custom input
field NAMES & ID's" +#: cforms-options.php:599 +#, php-format +msgid "Email %spriority%s (1 = High, 3 = Normal, 5 = Low)" msgstr "" -#: cforms-options.php:601 cforms-options.php:608 cforms-options.php:694 -#: cforms-options.php:807 cforms-options.php:947 -msgid "Please read note »" +#: cforms-options.php:606 +#, php-format +msgid "Show new entries on %sdashboard%s" +msgstr "" + +#: cforms-options.php:613 +#, php-format +msgid "%sExclude this form%s from database tracking" +msgstr "" + +#: cforms-options.php:619 +#, php-format +msgid "Use %scustom input field NAMES & ID's%s" +msgstr "" + +#: cforms-options.php:619 cforms-options.php:626 +msgid "Read note »" msgstr "" -#: cforms-options.php:604 +#: cforms-options.php:622 msgid "" "This feature replaces the default NAMEs/IDs (e.g. cf_field_12) with custom ones, either derived from the field label you " @@ -3539,103 +3671,99 @@ msgid "" "$_POST variable)." msgstr "" -#: cforms-options.php:607 -msgid "Extra variables
e.g. {Title}" +#: cforms-options.php:626 +#, php-format +msgid "%sExtra variables%s e.g. {Title}" msgstr "" -#: cforms-options.php:611 +#: cforms-options.php:629 #, php-format msgid "" -"There a three additional, predefined variablesthree additional, predefined variables that belong to the Tell-A-Friend feature but can be enabled here without " "actually turning on T-A-F." msgstr "" -#: cforms-options.php:611 +#: cforms-options.php:629 msgid "" "This will add two more hidden fields to your form to ensure that all data is " "available also in AJAX mode." msgstr "" -#: cforms-options.php:616 -msgid "Limit" +#: cforms-options.php:634 +#, php-format +msgid "%sDo not reset%s input fields after submission" +msgstr "" + +#: cforms-options.php:641 +#, php-format +msgid "%sHide form%s after successful submission" msgstr "" -#: cforms-options.php:617 +#: cforms-options.php:648 +msgid "Submission Limit" +msgstr "" + +#: cforms-options.php:649 msgid "" "total # of submissions accepted [empty or 0 (zero) = off] (tracking must be enabled!)" msgstr "" -#: cforms-options.php:621 +#: cforms-options.php:653 msgid "Start Date" msgstr "" -#: cforms-options.php:625 cforms-options.php:646 +#: cforms-options.php:657 cforms-options.php:678 msgid "Time entry." msgstr "" -#: cforms-options.php:631 +#: cforms-options.php:663 msgid "The form will be available in " msgstr "" -#: cforms-options.php:633 +#: cforms-options.php:665 msgid "The form is available now." msgstr "" -#: cforms-options.php:642 +#: cforms-options.php:674 msgid "End Date" msgstr "" -#: cforms-options.php:651 +#: cforms-options.php:683 msgid "The form will be available for another " msgstr "" -#: cforms-options.php:653 +#: cforms-options.php:685 msgid "The form is not available anymore." msgstr "" -#: cforms-options.php:662 +#: cforms-options.php:694 msgid "Limit text" msgstr "" -#: cforms-options.php:670 +#: cforms-options.php:702 msgid "Redirect
options:" msgstr "" -#: cforms-options.php:672 -msgid "Disabled (default setting)" -msgstr "" - -#: cforms-options.php:673 -msgid "Hide form after successful submission" -msgstr "" - -#: cforms-options.php:674 +#: cforms-options.php:704 msgid "Enable alternative success page (redirect)" msgstr "" -#: cforms-options.php:682 -msgid "Don't reset fields" -msgstr "" - -#: cforms-options.php:684 -msgid "Re-display user input after form submission." -msgstr "" - -#: cforms-options.php:684 -msgid "(currently not available for Ajax submissions)" -msgstr "" - -#: cforms-options.php:691 +#: cforms-options.php:712 msgid "Send form data
to an alternative page:" msgstr "" -#: cforms-options.php:693 +#: cforms-options.php:714 msgid "Enable alternative form action!" msgstr "" -#: cforms-options.php:698 +#: cforms-options.php:715 cforms-options.php:725 cforms-options.php:854 +#: cforms-options.php:994 +msgid "Please read note »" +msgstr "" + +#: cforms-options.php:719 msgid "" "If you enable an alternative form action you will loose " "any cforms application logic (spam security, field validation, DB " @@ -3644,26 +3772,38 @@ msgid "" "turn cforms into a front-end only, a \"form builder\" so to speak." msgstr "" -#: cforms-options.php:703 -msgid "Enable RSS" +#: cforms-options.php:724 +msgid "RSS feed" msgstr "" -#: cforms-options.php:704 -msgid "Enables an RSS feed to track new submissions." +#: cforms-options.php:725 +msgid "Enable RSS feed to track new submissions" msgstr "" #: cforms-options.php:728 +#, php-format +msgid "" +"For the RSS feed to work you must have %sDatabase Tracking%s turned on under " +"Global-Settings! In order to pick & include input fields in your " +"feed you must have at least on submission in the database for reference." +msgstr "" + +#: cforms-options.php:743 +msgid "Form fields included in feed:" +msgstr "" + +#: cforms-options.php:775 msgid "Admin Email Message Options" msgstr "" -#: cforms-options.php:731 +#: cforms-options.php:778 msgid "" "Generally, emails sent to the admin and the submitting user can be both in " "plain text and HTML. The TXT part is required, HTML is " "optional." msgstr "" -#: cforms-options.php:732 +#: cforms-options.php:779 #, php-format msgid "" "Below you'll find the settings for both the TXT part of the " @@ -3674,42 +3814,42 @@ msgid "" "message examples!)." msgstr "" -#: cforms-options.php:736 +#: cforms-options.php:783 msgid "Admin TEXT message
(Header)" msgstr "" -#: cforms-options.php:745 cforms-options.php:768 +#: cforms-options.php:792 cforms-options.php:815 msgid "(Footer)" msgstr "" -#: cforms-options.php:746 +#: cforms-options.php:793 msgid "Include user input at the bottom of the admin email" msgstr "" -#: cforms-options.php:750 +#: cforms-options.php:797 msgid "" "(# characters) : spacing between labels & data, for plain txt version " "only" msgstr "" -#: cforms-options.php:754 cforms-options.php:827 +#: cforms-options.php:801 cforms-options.php:874 msgid "Enable HTML" msgstr "" -#: cforms-options.php:759 +#: cforms-options.php:806 msgid "Admin HTML message
(Header)" msgstr "" -#: cforms-options.php:769 +#: cforms-options.php:816 msgid "Include user input at the bottom of the admin email" msgstr "" -#: cforms-options.php:771 +#: cforms-options.php:818 msgid "" "'Don't like the default (blue) form data block in your admin email? »" msgstr "" -#: cforms-options.php:772 +#: cforms-options.php:819 msgid "" "To avoid sending ALL of the submitted user data (especially for very long " "forms) to the form admin simply uncheck \"Include user " @@ -3717,26 +3857,26 @@ msgid "" "the use of custom variables." msgstr "" -#: cforms-options.php:780 +#: cforms-options.php:827 msgid "CC Settings" msgstr "" -#: cforms-options.php:783 +#: cforms-options.php:830 msgid "" "This is the subject of the CC email that goes out the user submitting the " "form and as such requires the CC: field in your form " "definition above." msgstr "" -#: cforms-options.php:787 +#: cforms-options.php:834 msgid "Subject CC" msgstr "" -#: cforms-options.php:797 +#: cforms-options.php:844 msgid "Auto Confirmation" msgstr "" -#: cforms-options.php:800 +#: cforms-options.php:847 msgid "" "These settings apply to an auto response/confirmation sent to the visitor. " "If enabled AND your form contains a \"CC me\" field " @@ -3744,11 +3884,11 @@ msgid "" "sent!" msgstr "" -#: cforms-options.php:806 +#: cforms-options.php:853 msgid "Activate auto confirmation" msgstr "" -#: cforms-options.php:810 +#: cforms-options.php:857 msgid "" "For the auto confirmation feature to work, make sure to mark at " "least one field Email, otherwise NO auto " @@ -3756,145 +3896,145 @@ msgid "" "\", only the first in the list will receive a notification." msgstr "" -#: cforms-options.php:814 +#: cforms-options.php:861 msgid "Subject auto confirmation" msgstr "" -#: cforms-options.php:818 +#: cforms-options.php:865 msgid "TEXT message" msgstr "" -#: cforms-options.php:831 +#: cforms-options.php:878 msgid "HTML message" msgstr "" -#: cforms-options.php:848 +#: cforms-options.php:895 msgid "Multi-Part / Multi-Page Forms" msgstr "" -#: cforms-options.php:851 +#: cforms-options.php:898 msgid "If enabled, new options will be shown below." msgstr "" -#: cforms-options.php:851 +#: cforms-options.php:898 msgid "Mark this form to belong to a series of forms:" msgstr "" -#: cforms-options.php:857 +#: cforms-options.php:904 msgid "Email & Tracking" msgstr "" -#: cforms-options.php:858 +#: cforms-options.php:905 msgid "Suppress admin email and DB tracking for *this* form" msgstr "" -#: cforms-options.php:862 +#: cforms-options.php:909 msgid "First Form" msgstr "" -#: cforms-options.php:863 +#: cforms-options.php:910 msgid "This is the *first* form of a series of forms" msgstr "" -#: cforms-options.php:869 +#: cforms-options.php:916 msgid "Reset Button" msgstr "" -#: cforms-options.php:870 +#: cforms-options.php:917 msgid "Add a reset button to this form (reset to the first form in a series)" msgstr "" -#: cforms-options.php:874 cforms-options.php:886 +#: cforms-options.php:921 cforms-options.php:933 msgid "Text" msgstr "" -#: cforms-options.php:875 +#: cforms-options.php:922 msgid "Text for reset button" msgstr "" -#: cforms-options.php:881 +#: cforms-options.php:928 msgid "Back Button" msgstr "" -#: cforms-options.php:882 +#: cforms-options.php:929 msgid "Add a back button to this form (back to the previous form)" msgstr "" -#: cforms-options.php:887 +#: cforms-options.php:934 msgid "Text for back button" msgstr "" -#: cforms-options.php:902 +#: cforms-options.php:949 msgid "* stop here (last form) *" msgstr "" -#: cforms-options.php:906 +#: cforms-options.php:953 msgid "Please choose the next form after this" msgstr "" -#: cforms-options.php:917 +#: cforms-options.php:964 msgid "Tell-A-Friend Form Support" msgstr "" -#: cforms-options.php:922 +#: cforms-options.php:969 msgid "posts and pages processed and tell-a-friend enabled." msgstr "" -#: cforms-options.php:924 +#: cforms-options.php:971 msgid "" "All posts & pages processed and tell-a-friend disabled." msgstr "" -#: cforms-options.php:927 +#: cforms-options.php:974 #, php-format msgid "" "BEFORE turning on this feature, please see the Help section for more details." msgstr "" -#: cforms-options.php:928 +#: cforms-options.php:975 msgid "" "If enabled, new field types will be made available to cover tell-a-friend " "requirements." msgstr "" -#: cforms-options.php:933 +#: cforms-options.php:980 msgid "Enable Tell-A-Friend" msgstr "" -#: cforms-options.php:939 +#: cforms-options.php:986 msgid "T-A-F enable new posts/pages by default" msgstr "" -#: cforms-options.php:943 +#: cforms-options.php:990 msgid "Batch T-A-F dis-/enable
all your previous posts." msgstr "" -#: cforms-options.php:945 +#: cforms-options.php:992 msgid "This will add a T-A-F custom field per post/page." msgstr "" -#: cforms-options.php:945 +#: cforms-options.php:992 msgid "Enable all" msgstr "" -#: cforms-options.php:945 +#: cforms-options.php:992 msgid "Do you really want to enable all previous posts and pages for T-A-F?" msgstr "" -#: cforms-options.php:946 +#: cforms-options.php:993 msgid "This will remove the T-A-F custom field on all posts/pages." msgstr "" -#: cforms-options.php:946 +#: cforms-options.php:993 msgid "Disable all" msgstr "" -#: cforms-options.php:946 +#: cforms-options.php:993 msgid "Do you really want to disable all previous posts and pages for T-A-F?" msgstr "" -#: cforms-options.php:950 +#: cforms-options.php:997 msgid "" "You will find a cforms Tell-A-Friend checkbox on your " "admin/edit page (typically under \"Post/Author\")!
default Wordpress comment form
" "(on posts & pages), allowing your readers to either comment on " @@ -3910,7 +4050,7 @@ msgid "" "strong>!" msgstr "" -#: cforms-options.php:965 +#: cforms-options.php:1012 #, php-format msgid "" "There will be additional, comment specific input field types " @@ -3918,28 +4058,28 @@ msgid "" "comment form preset
. Configuration details." msgstr "" -#: cforms-options.php:969 +#: cforms-options.php:1016 msgid "WP comment form" msgstr "" -#: cforms-options.php:970 +#: cforms-options.php:1017 msgid "" "Enable this form to optionally (user determined) act as a WP comment form" msgstr "" -#: cforms-options.php:973 +#: cforms-options.php:1020 msgid "Comment notification" msgstr "" -#: cforms-options.php:974 +#: cforms-options.php:1021 msgid "Extra comment notification (check your autoresponder setting, too!)" msgstr "" -#: cforms-options.php:978 +#: cforms-options.php:1025 msgid "Tell a friend or WP comment? »" msgstr "" -#: cforms-options.php:979 +#: cforms-options.php:1026 #, php-format msgid "" "This feature and T-A-F (above) are mutually exclusive. If you need both " @@ -3947,11 +4087,11 @@ msgid "" "s\" %s>help section on proper use." msgstr "" -#: cforms-options.php:980 +#: cforms-options.php:1027 msgid "Important additional configuration requirements »" msgstr "" -#: cforms-options.php:981 +#: cforms-options.php:1028 #, php-format msgid "" "Please see the extended WP comment options under " @@ -3961,319 +4101,343 @@ msgid "" "want to thank the user for his/her comment ;-) !" msgstr "" -#: cforms-options.php:993 +#: cforms-options.php:1040 msgid "3rd Party Read-Notification Support" msgstr "" -#: cforms-options.php:996 +#: cforms-options.php:1043 #, php-format msgid "" "If you'd like to utilize 3rd party email tracking such as %s or %s, add the " "respective suffix (e.g.: %s) here:" msgstr "" -#: cforms-options.php:1000 +#: cforms-options.php:1047 msgid "Suffix for email tracking" msgstr "" -#: cforms-options.php:1020 +#: cforms-options.php:1067 msgid "Input Field Settings" msgstr "" -#: cforms-options.php:1027 +#: cforms-options.php:1074 msgid "cforms out-of-the-box-form repository" msgstr "" -#: cforms.php:41 +#: cforms.php:49 #, php-format msgid "" "Please go to the cforms admin page and run the update " "process." msgstr "" -#: cforms.php:63 cforms.php:67 lib_functions.php:91 lib_functions.php:94 +#: cforms.php:73 cforms.php:77 lib_functions.php:93 lib_functions.php:96 msgid "cformsII" msgstr "" -#: cforms.php:64 +#: cforms.php:74 msgid "Corrupted Settings" msgstr "" -#: cforms.php:607 +#: cforms.php:670 msgid "reset captcha image" msgstr "" -#: cforms.php:937 +#: cforms.php:997 msgid "Note: This will reset all your input!" msgstr "" -#: cforms.php:1177 cforms.php:1178 cforms.php:1187 cforms.php:1194 +#: cforms.php:1241 cforms.php:1242 cforms.php:1252 cforms.php:1259 msgid "cforms Tell-A-Friend" msgstr "" -#: cforms.php:1248 +#: cforms.php:1315 msgid "Title" msgstr "" -#: cforms.php:1263 +#: cforms.php:1330 msgid "Add cforms default form" msgstr "" -#: cforms.php:1263 +#: cforms.php:1330 msgid "Add form" msgstr "" -#: cforms.php:1320 +#: cforms.php:1390 msgid "Latest version available:" msgstr "" -#: cforms.php:1378 -msgid "T-A-F enable this post/page" +#: cforms.php:1391 +msgid "New cformsII update available" msgstr "" -#: editor.php:48 editor.php:116 -msgid "placeholder for:" -msgstr "" - -#: editor.php:162 js\insertdialog.php:66 js\insertdialog25.php:68 -msgid "Your forms:" +#: cforms.php:1391 +msgid "(more info)" msgstr "" -#: editor.php:164 js\insertdialog.php:75 js\insertdialog25.php:77 -msgid "Insert" +#: cforms.php:1448 +msgid "T-A-F enable this post/page" msgstr "" -#: lib_activate.php:43 +#: lib_activate.php:44 msgid "Website" msgstr "" -#: lib_activate.php:44 lib_options_add.php:26 +#: lib_activate.php:45 lib_options_add.php:26 msgid "Message" msgstr "" -#: lib_activate.php:46 lib_options_add.php:28 +#: lib_activate.php:47 lib_options_add.php:28 msgid "(required)" msgstr "" -#: lib_activate.php:47 lib_options_add.php:29 +#: lib_activate.php:48 lib_options_add.php:29 msgid "(valid email required)" msgstr "" -#: lib_activate.php:51 +#: lib_activate.php:53 msgid "Your default form" msgstr "" -#: lib_activate.php:52 lib_options_add.php:34 +#: lib_activate.php:54 lib_options_add.php:34 msgid "Re: Your note" msgstr "" -#: lib_activate.php:52 lib_options_add.php:34 +#: lib_activate.php:54 lib_options_add.php:34 msgid "Re: Submitted form (copy)" msgstr "" -#: lib_activate.php:55 lib_options_add.php:37 +#: lib_activate.php:57 lib_options_add.php:37 msgid "This is an automatic confirmation message." msgstr "" -#: lib_activate.php:61 lib_options_add.php:42 +#: lib_activate.php:63 lib_options_add.php:42 msgid "A new submission (form: \"{Form Name}\")" msgstr "" -#: lib_activate.php:61 lib_options_add.php:42 +#: lib_activate.php:63 lib_options_add.php:42 msgid "Submitted on: {Date}" msgstr "" -#: lib_activate.php:61 lib_options_add.php:42 +#: lib_activate.php:63 lib_options_add.php:42 msgid "Via: {Page}" msgstr "" -#: lib_activate.php:61 lib_options_add.php:42 +#: lib_activate.php:63 lib_options_add.php:42 msgid "By {IP} (visitor IP)" msgstr "" -#: lib_activate.php:62 lib_options_add.php:43 +#: lib_activate.php:64 lib_options_add.php:43 msgid "a form has been submitted on {Date}, via: {Page} [IP {IP}]" msgstr "" -#: lib_activate.php:67 lib_options_add.php:48 +#: lib_activate.php:69 lib_options_add.php:48 msgid "A comment from {Your Name}" msgstr "" -#: lib_activate.php:68 lib_options_add.php:49 +#: lib_activate.php:70 lib_options_add.php:49 msgid "Submit" msgstr "" -#: lib_activate.php:69 lib_options_add.php:50 +#: lib_activate.php:71 lib_options_add.php:50 msgid "Thank you for your comment!" msgstr "" -#: lib_activate.php:70 lib_options_add.php:51 +#: lib_activate.php:72 lib_options_add.php:51 msgid "Please fill in all the required fields." msgstr "" -#: lib_activate.php:71 lib_options_add.php:52 +#: lib_activate.php:73 lib_options_add.php:52 msgid "No more submissions accepted at this time." msgstr "" -#: lib_activate.php:73 lib_options_add.php:53 +#: lib_activate.php:75 lib_options_add.php:53 msgid "One moment please..." msgstr "" -#: lib_activate.php:78 lib_options_add.php:58 -msgid "http://redirect.to.this.page" +#: lib_activate.php:81 +msgid "http:###redirect.to.this.page" msgstr "" -#: lib_activate.php:93 +#: lib_activate.php:97 msgid "Generic file upload error. Please try again" msgstr "" -#: lib_activate.php:94 lib_options_up.php:12 +#: lib_activate.php:98 lib_options_up.php:12 msgid "File is empty. Please upload something more substantial." msgstr "" -#: lib_activate.php:95 +#: lib_activate.php:99 msgid "Sorry, file is too large. You may try to zip your file." msgstr "" -#: lib_activate.php:96 +#: lib_activate.php:100 msgid "File upload failed. Please try again or contact the blog admin." msgstr "" -#: lib_activate.php:97 +#: lib_activate.php:101 msgid "File not accepted, file type not allowed." msgstr "" -#: lib_activate.php:119 +#: lib_activate.php:123 msgid "What color is snow?=white" msgstr "" -#: lib_activate.php:119 +#: lib_activate.php:123 msgid "The color of grass is=green" msgstr "" -#: lib_activate.php:119 +#: lib_activate.php:123 msgid "Ten minus five equals=five" msgstr "" -#: lib_activate.php:120 +#: lib_activate.php:124 msgid "Please double-check your verification code." msgstr "" -#: lib_activate.php:126 +#: lib_activate.php:130 msgid "Thank you for leaving a comment." msgstr "" -#: lib_activate.php:130 +#: lib_activate.php:134 msgid "Your comment is awaiting moderation." msgstr "" -#: lib_activate.php:142 +#: lib_activate.php:146 msgid "\"S\",\"M\",\"T\",\"W\",\"T\",\"F\",\"S\"" msgstr "" -#: lib_activate.php:143 +#: lib_activate.php:147 msgid "" "\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\"," "\"August\",\"September\",\"October\",\"November\",\"December\"" msgstr "" -#: lib_ajax.php:260 lib_nonajax.php:194 +#: lib_ajax.php:273 lib_nonajax.php:192 msgid "Q&A" msgstr "" -#: lib_ajax.php:549 lib_nonajax.php:535 +#: lib_ajax.php:478 lib_nonajax.php:511 msgid "Error occurred while sending the auto confirmation message: " msgstr "" -#: lib_ajax.php:580 lib_nonajax.php:554 +#: lib_ajax.php:515 lib_nonajax.php:530 msgid "Error occurred while sending the message: " msgstr "" -#: lib_aux.php:25 +#: lib_aux.php:41 msgid "hour(s)" msgstr "" -#: lib_aux.php:26 +#: lib_aux.php:42 msgid "minute(s)" msgstr "" -#: lib_aux.php:463 -msgid "Form submitted on" -msgstr "" - -#: lib_aux.php:463 +#: lib_aux.php:528 msgid "View details" msgstr "" -#: lib_aux.php:471 lib_dashboard.php:43 +#: lib_aux.php:541 lib_dashboard.php:42 msgid "No entries yet" msgstr "" -#: lib_aux.php:471 +#: lib_aux.php:541 msgid "You might want to check back in a little while..." msgstr "" -#: lib_aux.php:481 +#: lib_aux.php:551 msgid "New submissions for >>" msgstr "" -#: lib_aux.php:481 +#: lib_aux.php:551 msgid "All new form submissions" msgstr "" -#: lib_aux.php:484 +#: lib_aux.php:554 msgid "This RSS feed provides you with the most recent form submissions." msgstr "" -#: lib_dashboard.php:4 lib_dashboard.php:30 lib_dashboard.php:34 +#: lib_dashboard.php:4 lib_dashboard.php:29 lib_dashboard.php:33 msgid "Recent cforms entries" msgstr "" +#: lib_editor.php:52 lib_editor.php:123 +msgid "placeholder for:" +msgstr "" + +#: lib_editor.php:169 js\insertdialog.php:68 js\insertdialog25.php:70 +msgid "Your forms:" +msgstr "" + +#: lib_editor.php:171 js\insertdialog.php:77 js\insertdialog25.php:79 +msgid "Insert" +msgstr "" + +#: lib_email.php:381 +msgid "You must provide at least one recipient email address." +msgstr "" + +#: lib_email.php:432 +msgid "Could not instantiate mail function." +msgstr "" + +#: lib_email.php:441 +msgid "Could not access file: " +msgstr "" + +#: lib_email.php:500 +msgid "File Error: Could not open file: " +msgstr "" + +#: lib_email.php:528 +msgid "Unknown encoding: " +msgstr "" + #: lib_functions.php:74 msgid "You do not have the proper privileges to access this page." msgstr "" -#: lib_functions.php:101 +#: lib_functions.php:103 msgid "Tracking" msgstr "" -#: lib_functions.php:102 +#: lib_functions.php:104 msgid "Styling" msgstr "" -#: lib_functions.php:103 +#: lib_functions.php:105 msgid "Help!" msgstr "" -#: lib_functions.php:168 +#: lib_functions.php:166 msgid "" "It appears that cforms was not able to create abspath.php " "in your cforms plugin folder. Please check file/folder permissions (plugins/" "cforms), then re-activate cforms." msgstr "" -#: lib_functions.php:170 +#: lib_functions.php:168 msgid "" "If the problem persists, please create a file (using your preferred text " "editor) manually with the following content:" msgstr "" -#: lib_functions.php:172 +#: lib_functions.php:170 msgid "Save the file as abspath.php and ftp to your cforms folder." msgstr "" -#: lib_functions.php:289 +#: lib_functions.php:294 #, php-format msgid "For more information and support, visit the %s support forum %s. " msgstr "" -#: lib_functions.php:290 +#: lib_functions.php:295 msgid "" "Translation provided by Oliver Seidel, for updates check here." msgstr "" -#: lib_functions.php:306 +#: lib_functions.php:312 msgid "" "In case disabling/enabling doesn't seem to properly set the plugin defaults, " "try login out and back in and don't select the checkbox for " @@ -4288,7 +4452,11 @@ msgstr "" msgid "A new form" msgstr "" -#: lib_options_add.php:73 +#: lib_options_add.php:59 +msgid "http://redirect.to.this.page" +msgstr "" + +#: lib_options_add.php:75 msgid "A new form with default fields has been added." msgstr "" @@ -4380,37 +4548,37 @@ msgstr "" msgid "TAF feature" msgstr "" -#: lib_options_sub.php:28 +#: lib_options_sub.php:31 msgid "" "WP comment form fields only supported when WP comment feature " "turned on!" msgstr "" -#: lib_options_sub.php:33 +#: lib_options_sub.php:36 msgid "TAF fields only supported when TAF feature turned on!" msgstr "" -#: lib_options_sub.php:39 +#: lib_options_sub.php:42 msgid "Only one Visitor verification field is permitted!" msgstr "" -#: lib_options_sub.php:44 +#: lib_options_sub.php:47 msgid "Only one captcha field is permitted!" msgstr "" -#: lib_options_sub.php:49 +#: lib_options_sub.php:52 msgid "Only one CC: field is permitted!" msgstr "" -#: lib_options_sub.php:54 +#: lib_options_sub.php:57 msgid "Only one Multiple Recipients field is permitted!" msgstr "" -#: lib_options_sub.php:54 +#: lib_options_sub.php:57 msgid "" msgstr "" -#: lib_options_sub.php:219 +#: lib_options_sub.php:234 msgid "Form settings updated." msgstr "" @@ -4430,27 +4598,27 @@ msgstr "" msgid "All cforms settings have been restored from the backup file." msgstr "" -#: lib_WPcomment.php:56 +#: lib_WPcomment.php:55 msgid "Comment ID not found." msgstr "" -#: lib_WPcomment.php:59 lib_WPcomment.php:208 +#: lib_WPcomment.php:58 lib_WPcomment.php:212 msgid "Sorry, comments are closed for this item." msgstr "" -#: lib_WPcomment.php:62 +#: lib_WPcomment.php:61 msgid "Comment is on draft." msgstr "" -#: lib_WPcomment.php:93 lib_WPcomment.php:232 +#: lib_WPcomment.php:92 lib_WPcomment.php:236 msgid "Sorry, you must be logged in to post a comment." msgstr "" -#: lib_WPcomment.php:103 +#: lib_WPcomment.php:104 msgid "You've said that before. No need to repeat yourself." msgstr "" -#: lib_WPcomment.php:114 +#: lib_WPcomment.php:115 msgid "You are posting comments too quickly. Slow down." msgstr "" @@ -4498,7 +4666,7 @@ msgstr "" msgid "Migrate now!" msgstr "" -#: js\insertdialog.php:59 js\insertdialog25.php:61 +#: js\insertdialog.php:61 js\insertdialog25.php:63 msgid "Pick a form" msgstr "" @@ -4578,7 +4746,7 @@ msgstr "" msgid "Entry successfully removed" msgstr "" -#: js\include\lib_database_dlentries.php:148 +#: js\include\lib_database_dlentries.php:171 msgid "Form" msgstr "" @@ -4594,31 +4762,27 @@ msgstr "" msgid "close this entry" msgstr "" -#: js\include\lib_database_getentries.php:123 -msgid "Attached file:" -msgstr "" - -#: js\include\lib_database_getentries.php:125 +#: js\include\lib_database_getentries.php:124 msgid "-" msgstr "" -#: js\include\lib_database_getentries.php:133 +#: js\include\lib_database_getentries.php:132 msgid "Submitted via page" msgstr "" -#: js\include\lib_database_getentries.php:137 +#: js\include\lib_database_getentries.php:136 msgid "IP address" msgstr "" -#: js\include\lib_database_getentries.php:138 +#: js\include\lib_database_getentries.php:137 msgid "IP Lookup" msgstr "" -#: js\include\lib_database_getentries.php:149 +#: js\include\lib_database_getentries.php:148 msgid "edit this field" msgstr "" -#: js\include\lib_database_getentries.php:158 +#: js\include\lib_database_getentries.php:157 msgid "Sorry, data not found. Please refresh your data table." msgstr "" diff --git a/____REQUIREMENTS.txt b/____REQUIREMENTS.txt new file mode 100644 index 0000000..41ff4ef --- /dev/null +++ b/____REQUIREMENTS.txt @@ -0,0 +1,13 @@ + + ====================================================================================== + The following is required to properly run cforms + ====================================================================================== + + Wordpress version 2.1 or higher + + PHP version 5 or higher + + MySQL version 4.x or higher + + + Enough PHP memory allocation (24+ MByte) \ No newline at end of file diff --git a/cforms-admin.css b/cforms-admin.css index 0d0e9d2..cf29769 100644 --- a/cforms-admin.css +++ b/cforms-admin.css @@ -12,6 +12,10 @@ font-size:12px; font-family:"Lucida Grande",Arial,Verdana,"Bitstream Vera Sans",sans-serif; } +.corruptedsettings h3 { +margin:2em 0 0; +} + .wrap h2 { /*preWP2.7*/ clear:none; @@ -696,6 +700,7 @@ width:4em; text-align:center; } +input#cforms_rssfields, input#cforms_mp_backtext,input#cforms_mp_resettext { width:15em; } @@ -704,6 +709,20 @@ width:15em; width:auto; } +select#emailprio, +select#cforms_rsscount{ +width:5em; +text-align:center; +} + +select#cforms_rssfields{ +width:330px; +height:8em; +overflow:auto; +display:block; +} + + /**************************************************************** GLOBAL SETTINGS *****************************************************************/ @@ -867,10 +886,6 @@ font-weight:bold; margin:5px 0 2px 0; } -#header { -width:22px; -} - .dataheader, .showformfield { display:inline-block; @@ -988,10 +1003,19 @@ font-weight:700; text-align:right; } +.wrap table.hf td.apiH { +font-size:13px; +background:#d0f0ec; +} + .wrap table.hf td.bright { background:#DFE8FF; } +.wrap table.hf td span.abbr { +font-weight:bold; +} + .wrap table.hf td.ball { background:#F2DFFF; } @@ -1133,6 +1157,10 @@ padding:4px 3px 2px; width:16px; } +.jqmWindow input.chkBoxW { +width:22px; +} + .jqmWindow input:focus { background:#fff2ec; } diff --git a/cforms-captcha.php b/cforms-captcha.php index a49f29b..361c5db 100644 --- a/cforms-captcha.php +++ b/cforms-captcha.php @@ -33,23 +33,19 @@ $border_b = hexdec(substr($border,4,2)); $char_padding = 2; +$output_type = 'png'; -# $output_type='jpeg'; -$output_type='png'; - -// -// dont't change anything below this comment -// -$no = prep($_REQUEST['ts'],''); +$no = prep($_REQUEST['ts'],''); ### captcha random code $srclen = strlen($src)-1; $length = mt_rand($min,$max); + $turing = ''; for($i=0; $i<$length; $i++) $turing .= substr($src, mt_rand(0, $srclen), 1); -$tu = ($_REQUEST['i']=='i')?strtolower($turing):$turing; +$tu = ($_REQUEST['i']=='i')?strtolower($turing):$turing; setcookie('turing_string_'.$no, $_REQUEST['i'].'+'.md5($tu),(time()+60*60*5),"/"); @@ -59,7 +55,7 @@ } else $font = $font_url; -/* initialize variables */ +### initialize variables $length = strlen($turing); $data = array(); @@ -67,10 +63,9 @@ $codelen = 0; -/* build the data array of the characters, size, placement, etc. */ +### build the data array of the characters, size, placement, etc. for($i=0; $i<$length; $i++) { - $char = substr($turing, $i, 1); $size = mt_rand($min_font_size, $max_font_size); @@ -85,41 +80,30 @@ $image_width += $char_width + $char_padding; $image_height = max($image_height, $char_height); - - $data[] = array( - 'char' => $char, - 'size' => $size, - 'angle' => $angle, - 'height' => $char_height, - 'width' => $char_width, - ); + $data[] = array('char'=>$char,'size'=>$size,'angle'=>$angle,'height'=>$char_height,'width'=>$char_width); } -/* calculate the final image size, adding some padding */ +### calculate the final image size, adding some padding $x_padding = 12; - -if ( $img_sz_type == 1 ) - { +if ( $img_sz_type == 1 ) { $image_width += ($x_padding * 2); $image_height = ($image_height * 1.5) + 2; - } - else { +} else { $image_width = $img_sz_width; $image_height = $img_sz_height; - } +} -/* build the image, and allocte the colors */ +### build the image, and allocte the colors $im = ImageCreate($image_width, $image_height); $cs = mt_rand(1,3); $d1 = $d2 = $d3 = 0; -while ( ($d1<50) AND ($d2<50) AND ($d3<50) ) - { +while ( ($d1<50) AND ($d2<50) AND ($d3<50) ) { $r = mt_rand(200,255); $g = mt_rand(200,255); $b = mt_rand(200,255); $d1 = abs($r-$g); $d2 = abs($r-$b); $d3 = abs($g-$b); - } +} $color_bg = ImageColorAllocate($im, $r, $g, $b ); $color_border = ImageColorAllocate($im, $border_r, $border_g, $border_b); @@ -132,100 +116,47 @@ $color_line1 = ImageColorAllocate($im, $r-$d1, $g-$d2, $b-$d3 ); $d1 = $d2 = $d3 = 0; -while ( ($d1<100) AND ($d2<100) AND ($d3<100) ) - { +while ( ($d1<100) AND ($d2<100) AND ($d3<100) ) { $r = mt_rand(0,150); $g = mt_rand(0,150); $b = mt_rand(0,150); $d1 = abs($r-$g); $d2 = abs($r-$b); $d3 = abs($g-$b); - } +} -switch ( $col_txt_type ) - { +switch ( $col_txt_type ) { case 1 : $col_txt = ImageColorAllocate($im, $r, $g, $b ); break; case 2 : $col_txt = ImageColorAllocate($im, 0, 0, 0 ); break; case 3 : $col_txt = ImageColorAllocate($im, 255, 255, 255 ); break; case 4 : $col_txt = ImageColorAllocate($im, $col_txt_r, $col_txt_g, $col_txt_b ); break; - } - -$noiset = mt_rand(1,2); - -if ( $im_bg == 1 ) - { - switch ($noiset) { - case '1' : - /* make the random background elipses */ - for($l=0; $l<10; $l++) { - - $c = 'color_elipse' . ($l%2); - - $cx = mt_rand(0, $image_width); - $cy = mt_rand(0, $image_width); - $rx = mt_rand(10, $image_width); - $ry = mt_rand(10, $image_width); - - ImageFilledEllipse($im, $cx, $cy, $rx, $ry, $$c ); - }; break; - case '2' : - for($l=0; $l<10; $l++) { - - $c = 'color_line' . ($l%2); - - $lx = mt_rand(0, $image_width+$image_height); - $lw = mt_rand(0,3); - if ($lx > $image_width) { - $lx -= $image_width; - ImageFilledRectangle($im, 0, $lx, $image_width-1, $lx+$lw, $$c ); - } else ImageFilledRectangle($im, $lx, 0, $lx+$lw, $image_height-1, $$c ); - }; break; - } } -if ( $im_bg == 0 ){ - $image_data=getimagesize($im_bg_url); - $image_type=$image_data[2]; +$noiset = mt_rand(1,2); - if($image_type==1) $img_src=imagecreatefromgif($im_bg_url); - elseif($image_type==2) $img_src=imagecreatefromjpeg($im_bg_url); - elseif($image_type==3) $img_src=imagecreatefrompng($im_bg_url); +$image_data=getimagesize($im_bg_url); +$image_type=$image_data[2]; - if ( $im_bg_type == 1 ) { - imagesettile($im,$img_src); -// imagefill($im,0,0,IMG_COLOR_TILED); - imageFilledRectangle ($im, 0, 0, $image_width, $image_height, IMG_COLOR_TILED); - } - else imagecopyresampled($im,$img_src,0,0,0,0,$image_width,$image_height,$image_data[0],$image_data[1]); +if($image_type==1) $img_src=imagecreatefromgif($im_bg_url); +elseif($image_type==2) $img_src=imagecreatefromjpeg($im_bg_url); +elseif($image_type==3) $img_src=imagecreatefrompng($im_bg_url); -} +if ( $im_bg_type == 1 ) { + imagesettile($im,$img_src); + imageFilledRectangle ($im, 0, 0, $image_width, $image_height, IMG_COLOR_TILED); +} else + imagecopyresampled($im,$img_src,0,0,0,0,$image_width,$image_height,$image_data[0],$image_data[1]); $pos_x = ($image_width - $codelen) / 2; foreach($data as $d) { - $pos_y = ( ( $image_height + $d['height'] ) / 2 ); ImageTTFText($im, $d['size'], $d['angle'], $pos_x, $pos_y, $col_txt, $font, $d['char'] ); - $pos_x += $d['width'] + $char_padding; - } -/* a nice border */ +### a nice border ImageRectangle($im, 0, 0, $image_width-1, $image_height-1, $color_border); - - /* display it */ - switch ($output_type) { - case 'jpeg': -// Header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); -// Header('Cache-Control: no-cache, must-revalidate'); - Header('Content-type: image/jpeg'); - ImageJPEG($im,NULL,100); - break; - - case 'png': - default: -// Header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); -// Header('Cache-Control: no-cache, must-revalidate'); - Header('Content-type: image/png'); - ImagePNG($im); - break; - } +switch ($output_type) { + case 'jpeg': Header('Content-type: image/jpeg'); ImageJPEG($im,NULL,100); break; + case 'png': + default: Header('Content-type: image/png'); ImagePNG($im); break; +} ImageDestroy($im); @@ -233,5 +164,4 @@ function prep($v,$d) { return ($v<>'') ? stripslashes($v) : $d; } - ?> \ No newline at end of file diff --git a/cforms-corrupted.php b/cforms-corrupted.php index c67c5ce..386016b 100644 --- a/cforms-corrupted.php +++ b/cforms-corrupted.php @@ -1,13 +1,11 @@ -

@@ -31,7 +29,6 @@ } update_option('cforms_settings',$nc); - die(); ?> @@ -39,7 +36,6 @@

query("DELETE FROM `$wpdb->options` WHERE option_name='cforms_settings'"); delete_option('cforms_settings'); global $cformsSettings; $cformsSettings = array(); diff --git a/cforms-css.php b/cforms-css.php index 3e98baf..8e75169 100644 --- a/cforms-css.php +++ b/cforms-css.php @@ -1,14 +1,13 @@ cformssubmissions = $wpdb->prefix . 'cformssubmissions'; $wpdb->cformsdata = $wpdb->prefix . 'cformsdata'; -### new global settings container, will eventually be the only one! +### New global settings container, will eventually be the only one! $cformsSettings = get_option('cforms_settings'); $cformsSettings = get_option('cforms_settings'); @@ -62,28 +61,28 @@ if(!empty($_POST['save_css'])){ - $newcss = stripslashes($_POST['csseditor']); + $newcss = stripslashes($_POST['csseditor']); - if(is_writeable($stylefile)) { + if(is_writeable($stylefile)) { - $f = fopen($stylefile, 'w+'); - fwrite($f, $newcss); - fclose($f); + $f = fopen($stylefile, 'w+'); + fwrite($f, $newcss); + fclose($f); - echo '

'. __('The stylesheet has been updated.', 'cforms') .'

'."\n"; + echo '

'. __('The stylesheet has been updated.', 'cforms') .'

'."\n"; - } else + } else - echo '

'. __('Write Error! Please verify write permissions on the style file.', 'cforms') .'

'."\n"; + echo '

'. __('Write Error! Please verify write permissions on the style file.', 'cforms') .'

'."\n"; } else if ( !empty($_POST['chg_css']) ){ - $cformsSettings['global']['cforms_css'] = $_POST['style']; - update_option('cforms_settings',$cformsSettings); + $cformsSettings['global']['cforms_css'] = $_POST['style']; + update_option('cforms_settings',$cformsSettings); - $style = $cformsSettings['global']['cforms_css']; - $stylefile = $cformsSettings['global']['cforms_root_dir']."{$s}styling{$s}".$style; - echo '

'. __('New theme selected.', 'cforms') .'

'."\n"; + $style = $cformsSettings['global']['cforms_css']; + $stylefile = $cformsSettings['global']['cforms_root_dir']."{$s}styling{$s}".$style; + echo '

'. __('New theme selected.', 'cforms') .'

'."\n"; } @@ -91,7 +90,6 @@ abspath_check(); ?> -

@@ -99,10 +97,8 @@

optional of course, if you\'re happy with the default look and feel, no need to do anything here.', 'cforms') ?>

-

- @@ -206,9 +202,7 @@
-
-
-

'.$style.'' ?>

@@ -239,5 +232,4 @@
-
\ No newline at end of file diff --git a/cforms-database.php b/cforms-database.php index 7ba4818..192a446 100644 --- a/cforms-database.php +++ b/cforms-database.php @@ -1,10 +1,9 @@ cformssubmissions = $wpdb->prefix . 'cformssubmissions'; $wpdb->cformsdata = $wpdb->prefix . 'cformsdata'; @@ -12,7 +11,7 @@ ### Check Whether User Can Manage Database check_access_priv('track_cforms'); -### new global settings container, will eventually be the only one! +### New global settings container, will eventually be the only one! $cformsSettings = get_option('cforms_settings'); $plugindir = $cformsSettings['global']['plugindir']; @@ -60,6 +59,7 @@ {separator: true} ], searchitems : [ + {display: '', name : 'id'}, {display: '', name : 'form_id'}, {display: '', name : 'email', isdefault: true}, {display: '', name : 'sub_date'}, @@ -98,6 +98,9 @@ add_action('admin_footer', 'insert_cfmodal_tracking'); function insert_cfmodal_tracking(){ global $cforms_root,$noDISP; + + ### Temp storage for download data + $tempfile = dirname(__FILE__)."/js/include/data.tmp"; ?>
@@ -112,16 +115,23 @@ function insert_cfmodal_tracking(){
+
- -
- + +
+
+
+
-
<?php _e('Install', 'cforms') ?><?php _e('Cancel', 'cforms') ?>
+ '.sprintf( __('File (data.tmp) in %s not writable! %sPlease adjust its file permissions/ownership!','cforms'),'
   '.dirname(__FILE__).'/js/include
','
').'

'; + echo '

'.sprintf( __('...and reload this page afterwards.','cforms')).'

'; + endif; ?> +
<?php _e('Install', 'cforms') ?><?php _e('Cancel', 'cforms') ?>
diff --git a/cforms-global-settings.php b/cforms-global-settings.php index f000dbb..17bacaa 100644 --- a/cforms-global-settings.php +++ b/cforms-global-settings.php @@ -111,6 +111,9 @@ $cformsSettings['global']['cforms_commentInMod'] = $_REQUEST['cforms_commentInMod']; $cformsSettings['global']['cforms_avatar'] = $_REQUEST['cforms_avatar']; + $cformsSettings['global']['cforms_crlf']['h'] = $_REQUEST['cforms_crlfH']?'1':'0'; + $cformsSettings['global']['cforms_crlf']['b'] = $_REQUEST['cforms_crlf']?'1':'0'; + $smtpsettings[0] = $_REQUEST['cforms_smtp_onoff']?'1':'0'; $smtpsettings[1] = $_REQUEST['cforms_smtp_host']; $smtpsettings[2] = $_REQUEST['cforms_smtp_user']; @@ -251,7 +254,7 @@ - + @@ -284,8 +287,7 @@
-     -
+
   
  @@ -405,11 +407,25 @@
-

+

-

- phpmailerV2native PHP mail() command feel free to configure cforms to utilize an external SMTP mail server to deliver the emails.', 'cforms') ?>

+ +

+ + + + + + + + + + +
 />
 />
+ +

phpmailerV2 + native PHP mail() command feel free to configure cforms to utilize an external SMTP mail server to deliver the emails.', 'cforms') ?>

'' && ($userconfirm&32)==0 ){ @@ -510,35 +526,35 @@
- +
- +
- +
- +
- +
@@ -718,7 +734,7 @@

(for a wrong answer)', 'cforms'); ?> - +
@@ -726,7 +742,7 @@ - +
@@ -764,11 +780,15 @@ - - + + + 20 ? 20:(int)abs($j); ?> + + + - + diff --git a/cforms-help.php b/cforms-help.php index a53606f..85890f1 100644 --- a/cforms-help.php +++ b/cforms-help.php @@ -13,8 +13,15 @@

-

cforms.', 'cforms'); ?>

-

',' '); ?>

+

+ cforms.', 'cforms'); ?> + ',' '); ?> +

+

+ + <?php _e('Thank you!', 'cforms'); ?> + +

    @@ -909,52 +916,73 @@

    5.

    - -

    +
    - + - - + - - + - - + + - - + + - - + + - + + - + + + + + + + + + + +
        get_cforms_entries( $fname, $from, $to, $sort, $limit ,$sortdir )
     get_cforms_entries( $fname, $from, $to, $sort, $limit ) :    
    $fname:
    $from, $to 2008-09-17 15:00:00$fname :: 
    $sort form_id, id, sub_date, ip email$from, $to ::  2008-09-17 15:00:00
    $limit$sort :: 'form', 'id', 'date', 'ip' 'email'
    - - $limit :: 
    - $array = get_cforms_entries('','','','','') /* all data, no filters */ - $sortdir :: asc, desc
    :
    $array = get_cforms_entries(); /* all data, no filters */
    $array = get_cforms_entries('contact',false,false,'date',5,'desc'); /* last 5 submissions of "my contact form", order by date */
    $array = get_cforms_entries(false,date ("Y-m-d H:i:s", time()-(3600*2))); /* all submissions in the last 2 hours */
    +

    +
    $array = get_cforms_entries();   /* all data, no filters */
    +
    +echo '<table>';
    +echo '<tr><th>Name</th><th>Email</th><th>Website</th></tr>';
    +foreach( $array as $e ){
    +	echo '<tr><td>' . $e['data']['Your Name'] . '</td><td>' . $e['data']['Email'] . '</td><td>' . $e['data']['Website'] . '</td><tr>';
    +}
    +echo '</table>';
    +
    + + + - + - + + + + + + + + +
        cf_extra_comment_data( $commentID )
    - $array = get_cforms_entries('contact','','','sub_date',5) /* last 5 submissions of "my contact form", order by date */ - :    
    - $array = get_cforms_entries('',date ("Y-m-d H:i:s", time()-(3600*2)),'','','') /* all submissions in the last 2 hours */ - :
    $commentID :: 
    :
    ',''); ?>
    $xtra_comment_data = cf_extra_comment_data( get_comment_ID() ); /* all data, no filters */

    @@ -964,7 +992,7 @@ - + diff --git a/cforms-options.php b/cforms-options.php index be4bc92..b75efc3 100644 --- a/cforms-options.php +++ b/cforms-options.php @@ -248,6 +248,10 @@
    '')?' altmove':''; ?>" title="">  - name="field__name" id="field__name" size="30" value="" /> name="field__name" id="field__name" size="30" value="" />'; + echo ''; if( in_array($field_type,array('hidden','checkboxgroup', 'radiobuttons','fieldsetstart','fieldsetend','ccbox','captcha','verification','textonly')) ) echo ''.__('n/a', 'cforms').''; else - echo ''; + echo ''; if( ! in_array($field_type,array('textfield','youremail','friendsemail','email')) ) echo ''.__('n/a', 'cforms').''; else - echo ''; + echo ''; if( ! in_array($field_type,array('pwfield','textarea','textfield','datepicker','yourname','youremail','friendsname','friendsemail','email','author','url','comment')) ) echo ''.__('n/a', 'cforms').''; else - echo ''; + echo ''; if( ! in_array($field_type,array('pwfield','textarea','textfield','datepicker','checkbox','checkboxgroup','selectbox','multiselectbox','radiobuttons','upload')) ) echo ''.__('n/a', 'cforms').''; else - echo ''; + echo ''; if( ! in_array($field_type,array('pwfield','textarea','textfield','datepicker','checkbox','checkboxgroup','selectbox','multiselectbox','radiobuttons','upload')) ) echo ''.__('n/a', 'cforms').''; else - echo ''; + echo ''; ?>
    @@ -403,9 +407,9 @@

    - - - + +

    - + - - + +

    @@ -444,13 +448,13 @@ ?>
      my-functions.php file (plugin root directory), including examples)', 'cforms');?>  my-functions.php file (plugin root directory), including examples)', 'cforms');?>
    my_cforms_filter()
    - - + + - - + + @@ -580,40 +584,68 @@ + + + + + + + + + + + + - + - + - + - + - - - - + + - - - + + + - + + + + + + + + + + + - + @@ -660,7 +692,7 @@ '' || $cformsSettings['form'.$no]['cforms'.$no.'_startdate'] <> '' || $cformsSettings['form'.$no]['cforms'.$no.'_enddate'] <> '' ) : ?> - + @@ -669,24 +701,13 @@ - - - - - - - - - + + + + - - + + + + + + + + + + + + +
    Variables allowed.', 'cforms'),'?page='. $plugindir.'/cforms-help.php#variables','onclick="setshow(23)"'); ?>
    />
    + 0)?(int)$cformsSettings['form'.$no]['cforms'.$no.'_emailpriority']:3; ?> + + +
    />/>
    />/>
    /> />
     cf_field_12) with custom ones, either derived from the field label you have provided or by specifically declaring it via [id:XYZ],e.g. Your Name[id:the-name]. This will for instance help to feed data to third party systems (requiring certain input field names in the $_POST variable).', 'cforms') ?>
    />
    type="checkbox" id="cforms_taftrick" name="cforms_taftrick" />
     three additional, predefined variables that belong to the Tell-A-Friend feature but can be enabled here without actually turning on T-A-F.', 'cforms'),'?page='. $plugindir.'/cforms-help.php#tafvariables','onclick="setshow(23)"'); ?>
     three additional, predefined variables that belong to the Tell-A-Friend feature but can be enabled here without actually turning on T-A-F.', 'cforms'),'?page='. $plugindir.'/cforms-help.php#tafvariables','onclick="setshow(23)"'); ?>
    + /> +
    + /> +
    - />
    - />
    - />
    + />
    - /> -
    @@ -700,22 +721,48 @@
    /> />
     Global-Settings! In order to pick & include input fields in your feed you must have at least on submission in the database for reference.', 'cforms'),'',''); ?>
    + 20 ? 20:(int)abs($j); ?> + + +
    + + +
    -
    '.get_option('siteurl').'?cformsRSS='.$no.urlencode('$#$').$cformsSettings['form'.$no]['cforms'.$no.'_rsskey']; ?> -
    '.get_option('siteurl').'?cformsRSS='.$no.urlencode('$#$').$cformsSettings['form'.$no]['cforms'.$no.'_rsskey']; ?>
    @@ -930,10 +977,10 @@ - + - + @@ -967,14 +1014,14 @@
     />/>
      />
    - + - + diff --git a/cforms.chk b/cforms.chk index 50c0659..877b80e 100644 --- a/cforms.chk +++ b/cforms.chk @@ -1,6 +1,8 @@ -Version@10.2@ -Message@GPL Compliance / Maintenance Release
    (adding GPL compliance and a few bugfixes) +Version@10.5.1@ +Message@Bug Fix Release - + -
    MUST READ BEFORE UPDATING: BACKUP YOUR WP DATABASE! Do a manual upgrade with proper plugin deactivation and reactivation! Of course as usual, also backup *any* custom files you don't wan't to be overwritten (or leave them in your plugins/cforms-custom/ dir)!
    \ No newline at end of file + + +
    IMPORTANT: cforms v10.5 (and up) requires PHP 5!
    Please deactivate cforms before upgrading! Of course as usual, also backup *any* custom files you don't wan't to be overwritten (or leave them in your personal plugins/cforms-custom/ dir)!
    diff --git a/cforms.php b/cforms.php index ac3996f..8d70a02 100644 --- a/cforms.php +++ b/cforms.php @@ -1,61 +1,71 @@ VERSION HISTORY for what's new and current bugfixes. +Description: cformsII offers unparalleled flexibility in deploying contact forms across your blog. Features include: comprehensive SPAM protection, Ajax support, Backup & Restore, Multi-Recipients, Role Manager support, Database tracking and many more. Please see ____HISTORY.txt for what's new and current bugfixes. Author: Oliver Seidel -Version: 10.2 +Version: 10.5.1 Author URI: http://www.deliciousdays.com + + */ -$localversion = '10.2'; +global $localversion; +$localversion = '10.5.1'; +### debug messages +$cfdebug = false; +$cfdebugmsg = ''; ### db settings -global $wpdb, $wp_db_version; +global $wpdb, $wp_db_version, $cformsSettings; + +$cformsSettings = get_option('cforms_settings'); $wpdb->cformssubmissions = $wpdb->prefix . 'cformssubmissions'; $wpdb->cformsdata = $wpdb->prefix . 'cformsdata'; +### admin functions require_once(dirname(__FILE__) . '/lib_functions.php'); -### new global settings container, will eventually be the only one! -global $cformsSettings; -$cformsSettings = get_option('cforms_settings'); -### do a couple of things necessary as part of plugin activation +### update 9x notice? $dummy = __('Please go to the cforms admin page and run the update process.', 'cforms'); add_action('admin_notices', create_function('', 'global $plugindir, $cformsSettings; if (is_array($cformsSettings) && $cformsSettings[\'global\'][\'update\']) echo \'

    \' . sprintf( __(\'Please go to the cforms admin page and run the update process.\', \'cforms\') ,\'admin.php?page=\'.$plugindir.\'/cforms-global-settings.php\') . \'

    \';') ); + + +### activate cforms function cforms_activate() { + global $localversion; cforms_init(); require_once(dirname(__FILE__) . '/lib_activate.php'); } add_action('activate_' . plugin_basename(__FILE__), 'cforms_activate' ); + ### settings corrputed? if ( !is_array($cformsSettings) ){ add_action('admin_menu', 'settings_corrupted'); return; } - - -### if all data has been erased quit function settings_corrupted() { $tmp = basename(dirname(__FILE__)); @@ -73,14 +83,20 @@ function cforms_scripts_corrupted(){ } +### load add'l files +require_once (dirname(__FILE__) . '/lib_email.php'); require_once (dirname(__FILE__) . '/lib_aux.php'); -require_once (dirname(__FILE__) . '/editor.php'); +require_once (dirname(__FILE__) . '/lib_editor.php'); + + ### http://trac.wordpress.org/ticket/3002 $plugindir = $cformsSettings['global']['plugindir']; $cforms_root = $cformsSettings['global']['cforms_root']; -### multi-page forms + + +### session control for multi-page form add_action('template_redirect', 'start_cforms_session'); function start_cforms_session() { @session_cache_limiter('private, must-revalidate'); @@ -95,15 +111,23 @@ function start_cforms_session() { ### function cforms($args = '',$no = '') { - global $smtpsettings, $styles, $subID, $cforms_root, $wpdb, $track, $wp_db_version, $cformsSettings; + global $smtpsettings, $subID, $cforms_root, $wpdb, $track, $wp_db_version, $cformsSettings; parse_str($args, $r); $oldno = ($no=='1')?'':$no; ### remeber old val, to reset session when in new MP form + ##debug + db("Original form on page #$oldno"); + ### multi page form: overwrite $no $isWPcommentForm = (substr($cformsSettings['form'.$oldno]['cforms'.$oldno.'_tellafriend'],0,1)=='2'); $isMPform = $cformsSettings['form'.$oldno]['mp']['cforms'.$oldno.'_mp_form']; + $isTAF = substr($cformsSettings['form'.$oldno]['cforms'.$oldno.'_tellafriend'],0,1); + + ##debug + db("Comment form = $isWPcommentForm"); + db("Multi-page form = $isMPform"); if( $isMPform && is_array($_SESSION['cforms']) && $_SESSION['cforms']['current']>0 && !$isWPcommentForm ) $no = $_SESSION['cforms']['current']; @@ -111,41 +135,45 @@ function cforms($args = '',$no = '') { ### Safety, in case someone uses '1' for the default form $no = ($no=='1')?'':$no; + ##debug + db("Switch to form #$no"); + $moveBack=false; ### multi page form: reset button if( isset($_REQUEST['resetbutton'.$no]) && is_array($_SESSION['cforms']) ){ - $no = $_SESSION['cforms']['first']; + $no = $oldno; unset($_SESSION['cforms']); $_SESSION['cforms']['current']=0; - $_SESSION['cforms']['first']=$no; + $_SESSION['cforms']['first']=$oldno; $_SESSION['cforms']['pos']=1; + ##debug + db("Reset-Button pressed"); } - else - ### multi page form: back button + else ### multi page form: back button if( isset($_REQUEST['backbutton'.$no]) && isset($_SESSION['cforms']) && ($_SESSION['cforms']['pos']-1)>=0){ $no = $_SESSION['cforms']['list'][($_SESSION['cforms']['pos']--)-1]; $_SESSION['cforms']['current']=$no; $moveBack=true; + ##debug + db("Back-Button pressed"); } - else ### must be else otherwise back would also trigger reset! - ### multi page form: init, no session active - if( $isMPform && $cformsSettings['form'.$oldno]['mp']['cforms'.$oldno.'_mp_first'] ){ + else ### mp init: must be mp, first & not submitted! + if( $isMPform && $cformsSettings['form'.$oldno]['mp']['cforms'.$oldno.'_mp_first'] && !isset($_REQUEST['sendbutton'.$no]) ){ + ##debug + db("Current form is *first* MP-form"); + db("Session found, you're on the first form and session is reset!"); - if ( is_array($_SESSION['cforms']) && $_SESSION['cforms']['first']<>$oldno ){ - $no = ($oldno=='1')?'':$oldno; ### restore old val - unset($_SESSION['cforms']); - - $_SESSION['cforms']['current']=0; - $_SESSION['cforms']['first']=$no; - $_SESSION['cforms']['pos']=1; - } - $moveBack=true; + $no = ($oldno=='1')?'':$oldno; ### restore old val + unset($_SESSION['cforms']); + $_SESSION['cforms']['current']=0; + $_SESSION['cforms']['first']=$no; + $_SESSION['cforms']['pos']=1; } -##debug -##echo "
     request( current: $no) ".print_r($_REQUEST,1)."

    "; -##echo "
    ".print_r($_SESSION,1)."

    "; + ##debug + db(print_r($_SESSION,1)); + ### custom fields support if ( !(strpos($no,'+') === false) ) { @@ -158,10 +186,11 @@ function cforms($args = '',$no = '') { $field_count = $cformsSettings['form'.$no]['cforms'.$no.'_count_fields']; } + $content = ''; $err=0; - $filefield=0; ### for multiple file upload fields + $filefield=0; $validations = array(); $all_valid = 1; @@ -172,28 +201,34 @@ function cforms($args = '',$no = '') { $custom_error=''; $usermessage_class=''; - ### ??? check for WP2.0.2 - if ( $wp_db_version >= 3440 && function_exists('wp_get_current_user') ) + + ### get user credentials + if ( function_exists('wp_get_current_user') ) $user = wp_get_current_user(); - if( isset($_REQUEST['sendbutton'.$no]) ) { /* alternative sending: both events r ok! */ + ### non Ajax method + if( isset($_REQUEST['sendbutton'.$no]) ) { require_once (dirname(__FILE__) . '/lib_nonajax.php'); - $usermessage_class = $all_valid?' success':' failure'; - } - - if ( $isWPcommentForm && $send2author ) ### called from lib_WPcomments ? + ### called from lib_WPcomments ? + if ( $isWPcommentForm && $send2author ) return $all_valid; + + + ### ### ### paint form ### + ### $success=false; - if ( isset($_GET['cfemail']) && $isWPcommentForm ){ ### fix for WP Comment (loading after redirect) + + ### fix for WP Comment (loading after redirect) + if ( isset($_GET['cfemail']) && $isWPcommentForm ){ $usermessage_class = ' success'; $success=true; if ( $_GET['cfemail']=='sent' ) @@ -210,11 +245,15 @@ function cforms($args = '',$no = '') { $ntt="\n\t\t"; $nttt="\n\t\t\t"; - ### either show message above or below + ### either show info message above or below $usermessage_text = check_default_vars($usermessage_text,$no); $usermessage_text = check_cust_vars($usermessage_text,$track,$no); $umc = ($usermessage_class<>''&&$no>1)?' '.$usermessage_class.$no:''; + ##debug + db("User info for form #$no"); + + ### where to show message if( substr($cformsSettings['form'.$no]['cforms'.$no.'_showpos'],0,1)=='y' ) { $content .= $ntt . '
    ' . $usermessage_text . '
    '; $actiontarget = 'a'; @@ -222,14 +261,20 @@ function cforms($args = '',$no = '') { $actiontarget = 'b'; - ### multi page form: overwrite $no + ### multi page form: overwrite $no, move on to next form if( $all_valid && isset($_REQUEST['sendbutton'.$no]) ){ - $oldcurrent = $no; ### default - if( isset($_SESSION['cforms']) && $_SESSION['cforms']['current']>0 && $cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_next']<>-1 ){ + $isMPformNext=false; ### default + $oldcurrent = $no; + + if( $isMPform && isset($_SESSION['cforms']) && $_SESSION['cforms']['current']>0 && $cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_next']<>-1 ){ + $isMPformNext=true; $no = check_form_name( $cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_next'] ); + ##debug + db("Session active and now moving on to form #$no"); + ### logic: possibly change next form if ( function_exists('my_cforms_logic') ) $no = my_cforms_logic($trackf, $no,"nextForm"); ### use trackf! @@ -239,7 +284,10 @@ function cforms($args = '',$no = '') { $field_count = $cformsSettings['form'.$no]['cforms'.$no.'_count_fields']; - }elseif( $cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_next']==-1 ){ + }elseif( $isMPform && $cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_next']==-1 ){ + + ##debug + db("Session was active but is being reset now"); $oldcurrent = $no; @@ -256,13 +304,19 @@ function cforms($args = '',$no = '') { } -##debug -## echo "
    ".print_r($_SESSION,1)."

    "; -## echo "
    ".print_r($track,1)."

    "; + ##debug + db("All good, currently on form #$no"); + + ##debug: optional + ## db(print_r($_SESSION,1)); + ## db(print_r($track,1)); ### redirect == 2 : hide form? || or if max entries reached! w/ SESSION support if#2 - if ( ($cformsSettings['form'.$no]['cforms'.$no.'_redirect']==2 && isset($_REQUEST['sendbutton'.$no]) && $all_valid) || - ($cformsSettings['form'.$oldcurrent]['cforms'.$oldcurrent.'_redirect']==2 && isset($_REQUEST['sendbutton'.$oldcurrent]) && $all_valid) ) + if ( $all_valid && ( + ( $cformsSettings['form'.$no]['cforms'.$no.'_hide'] && isset($_REQUEST['sendbutton'.$no]) ) || + ( $cformsSettings['form'.$oldcurrent]['cforms'.$oldcurrent.'_hide'] && isset($_REQUEST['sendbutton'.$oldcurrent]) ) + ) + ) return $content; else if ( ($cformsSettings['form'.$no]['cforms'.$no.'_maxentries']<>'' && get_cforms_submission_left($no)<=0) || !cf_check_time($no) ){ @@ -273,6 +327,8 @@ function cforms($args = '',$no = '') { } + + ### alternative form action $alt_action=false; if( $cformsSettings['form'.$no]['cforms'.$no.'_action']=='1' ) { @@ -285,7 +341,9 @@ function cforms($args = '',$no = '') { $action = get_current_page(false) . '#usermessage'. $no . $actiontarget; - $content .= $ntt . '' . $nl; + + ### start with form tag + $content .= $ntt . '' . $nl; ### Session item counter (for default values) $sItem=1; @@ -325,9 +383,7 @@ function cforms($args = '',$no = '') { $fielderr = $obj[1]; if ( $fielderr <> '') { - switch ( $field_type ) { - case 'upload': $custom_error .= 'cf_uploadfile' . $no . '-'. $i . '$#$'.$fielderr.'|'; break; @@ -356,13 +412,14 @@ function cforms($args = '',$no = '') { $custom_error .= '$#$'.$fielderr.'|'; break; } - } + ### check for title attrib $obj = explode('|title:', $obj[0],2); $fieldTitle = ($obj[1]<>'')?' title="'.str_replace('"','"',stripslashes($obj[1])).'"':''; + ### special treatment for selectboxes if ( in_array($field_type,array('multiselectbox','selectbox','radiobuttons','send2author','luv','subscribe','checkbox','checkboxgroup','ccbox','emailtobox')) ){ @@ -413,7 +470,8 @@ function cforms($args = '',$no = '') { $field_name = $obj[0]; } - ### Label ID's + + ### label ID's $labelIDx = ''; $labelID = ($cformsSettings['global']['cforms_labelID']=='1')?' id="label-'.$no.'-'.$i.'"':''; @@ -438,7 +496,9 @@ function cforms($args = '',$no = '') { } else $input_id = $input_name = 'cf'.$no.'_field_'.$i; + $field_class = ''; + $field_value = ''; switch ($field_type){ case 'luv': @@ -488,6 +548,7 @@ function cforms($args = '',$no = '') { } + ### additional field classes if ( $field_disabled ) $field_class .= ' disabled'; if ( $field_readonly ) $field_class .= ' readonly'; @@ -495,17 +556,14 @@ function cforms($args = '',$no = '') { if ( $field_required ) $field_class .= ' fldrequired'; - $field_value = ''; - - ### an error ocurred: + ### error ? $liERR = $insertErr = ''; ### only for mp forms - if( $moveBack ){ - if( ! in_array($field_type,array('textonly')) ) + if( $moveBack || $isMPformNext ) $field_value = htmlspecialchars( stripslashes( $_SESSION['cforms']['cf_form'.$no][ $_SESSION['cforms']['cf_form'.$no]['$$$'.($sItem++)] ] ) ); - } + if( !$all_valid ){ ### errors... @@ -538,18 +596,23 @@ function cforms($args = '',$no = '') { } + ### print label only for non "textonly" fields! Skip some others too, and handle them below indiv. if( ! in_array($field_type,array('hidden','textonly','fieldsetstart','fieldsetend','ccbox','luv','subscribe','checkbox','checkboxgroup','send2author','radiobuttons')) ) $content .= $nttt . ''.$insertErr.'' . stripslashes(($field_name)) . ''; - if ( $field_value=='' && $defaultvalue<>'' ) ### if not reloaded (due to err) then use default values + ### if not reloaded (due to err) then use default values + if ( $field_value=='' && $defaultvalue<>'' ) $field_value=$defaultvalue; + ### field disabled or readonly, greyed out? $disabled = $field_disabled?' disabled="disabled"':''; $readonly = $field_readonly?' readonly="readonly"':''; + + ### add input field $dp = ''; $naming = false; $field = ''; @@ -622,6 +685,9 @@ function cforms($args = '',$no = '') { case "friendsemail": case "textfield": case "pwfield": + + $field_value = check_post_vars($field_value); + $type = ($field_type=='pwfield')?'password':'text'; $field_class = ($field_type=='datepicker')?$field_class.' cf_date':$field_class; @@ -636,15 +702,7 @@ function cforms($args = '',$no = '') { case "hidden": - preg_match_all('/\\{([^\\{]+)\\}/',$field_value,$findall); - if ( count($findall[1]) > 0 ) { - $allfields = get_post_custom( get_the_ID() ); - - foreach ( $findall[1] as $fvar ) { - if( $allfields[$fvar][0] <> '') - $field_value = str_replace('{'.$fvar.'}', $allfields[$fvar][0], $field_value); - } - } + $field_value = check_post_vars($field_value); if ( preg_match('/^<([a-zA-Z0-9]+)>$/',$field_value,$getkey) ) $field_value = $_GET[$getkey[1]]; @@ -653,15 +711,7 @@ function cforms($args = '',$no = '') { break; case "comment": - $onfocus = $field_clear?' onfocus="clearField(this)" onblur="setField(this)"' : ''; - - $field = '' . $field_value . ''; - if ( $reg_exp<>'' ) - $field .= ''; - break; - case "textarea": - $onfocus = $field_clear?' onfocus="clearField(this)" onblur="setField(this)"' : ''; $field = '' . $field_value . ''; @@ -730,7 +780,7 @@ function cforms($args = '',$no = '') { $id=1; $j=0; ### mp session support - if ( $moveBack ) + if ( $moveBack || $isMPformNext ) $field_value = explode(',',$field_value); foreach( $options as $option ) { @@ -741,7 +791,7 @@ function cforms($args = '',$no = '') { if ( $opt[1]=='' ) $opt[1] = $opt[0]; $checked = ''; - if( $moveBack ){ + if( $moveBack || $isMPformNext ){ if ( in_array($opt[1],array_values($field_value)) ) $checked = 'checked="checked"'; } elseif ( is_array($field_value) ){ @@ -774,7 +824,7 @@ function cforms($args = '',$no = '') { $j=0; ### mp session support - if ( $moveBack ) + if ( $moveBack || $isMPformNext ) $field_value = explode(',',$field_value); foreach( $options as $option ) { @@ -785,7 +835,7 @@ function cforms($args = '',$no = '') { if ( $opt[1]=='' ) $opt[1] = $opt[0]; $checked = ''; - if( $moveBack ){ + if( $moveBack || $isMPformNext ){ if ( in_array($opt[1],array_values($field_value)) ) $checked = 'selected="selected"'; } elseif ( is_array($field_value) ){ @@ -818,7 +868,7 @@ function cforms($args = '',$no = '') { ### email-to-box valid entry? if ( $field_type == 'emailtobox' && $opt[1]<>'-' ) - $jj = $j++; else $jj = '-'; + $jj = $j++; else $jj = '--'; $checked = ''; @@ -891,6 +941,7 @@ function cforms($args = '',$no = '') { } ### all fields + ### close any open tags if ( $ol ) $content .= $ntt . ''; if ( $fieldsetopen ) @@ -906,23 +957,31 @@ function cforms($args = '',$no = '') { $ajaxenabled = ''; - ### just to appease "strict" + ### just to appease html "strict" $content .= $ntt . '
    '.$nttt.' '; + ### if visitor verification turned on: if ( $verification ) $content .= $nttt .''; + ### custom error $custom_error=substr($cformsSettings['form'.$no]['cforms'.$no.'_showpos'],2,1).substr($cformsSettings['form'.$no]['cforms'.$no.'_showpos'],3,1).substr($cformsSettings['form'.$no]['cforms'.$no.'_showpos'],4,1).$custom_error; - if ( $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend']>0 ){ + + ### TAF or WP comment or Extra Fields + if ( (int)$isTAF > 0 ){ + + $nono = $isWPcommentForm?'':$no; + if ( $isWPcommentForm ) - $nono = ''; else $nono = $no; + $content .= $nttt . ''; $content .= $nttt . '' . $nttt . ''; } + $content .= $nttt . ''. $nttt . ''. $nttt . ''. @@ -931,36 +990,44 @@ function cforms($args = '',$no = '') { $content .= $ntt . '
    '; + ### multi page form: reset $reset=''; if( $cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_form'] && $cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_reset'] ) $reset = ''; + ### multi page form: back $back=''; if( $cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_form'] && $cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_back'] ) $back = ''; + $content .= $ntt . '

    '.$reset.$back.'

    '; $content .= $ntt . ''; - ### link love? you bet ;) - $content .= $ntt . '

    cforms contact form by delicious:days

    '; + + ### Thank you for leaving this in place + $content .= $ntt . '

    cforms contact form by delicious:days

    '; ### either show message above or below $usermessage_text = check_default_vars($usermessage_text,$no); $usermessage_text = check_cust_vars($usermessage_text,$track,$no); - if( substr($cformsSettings['form'.$no]['cforms'.$no.'_showpos'],1,1)=='y' && !($success&&$cformsSettings['form'.$no]['cforms'.$no.'_redirect']==2)) + if( substr($cformsSettings['form'.$no]['cforms'.$no.'_showpos'],1,1)=='y' && !($success&&$cformsSettings['form'.$no]['cforms'.$no.'_hide'])) $content .= $tt . '
    ' . $usermessage_text . '
    ' . $nl; + ### flush debug messages + dbflush(); + return $content; } + ### some css for positioning the form elements function cforms_style() { global $wp_query, $cforms_root, $localversion, $cformsSettings; @@ -997,18 +1064,21 @@ function cforms_style() { 'TEXT_CLOSE:"'.stripslashes($nav[4]).'",'. 'TEXT_CHOOSE_DATE:"'.stripslashes($nav[5]).'",'. 'ROOT:"'.$cforms_root.'"};'."\n". - "\t".'cforms(function() { Date.format = "dd/mm/yyyy"; cforms(".cf_date").datePicker( {startDate:"01/01/1899",verticalOffset:5,horizontalOffset:5} ); Date.format = "'.$dformat.'"; });'."\n". + "\t".'cforms(function() { Date.format = "dd/mm/yyyy"; cforms(".cf_date").datePicker( {startDate:"01/01/1899",verticalOffset:10,horizontalOffset:5,horizontalPosition:1 } ); Date.format = "'.$dformat.'"; });'."\n". ''."\n"; } echo ''."\n\n"; } } + +### custom routine to find last item function findlast( $haystack,$needle,$offset=NULL ){ if( ($pos = strpos( strrev($haystack) , strrev($needle) , $offset)) === false ) return false; return strlen($haystack) - $pos - strlen($needle); } + ### replace placeholder by generated code function cforms_insert( $content ) { global $post, $cformsSettings; $newcontent=''; @@ -1078,26 +1148,28 @@ function cforms_insert( $content ) { return $content; } + ### build field_stat string from array (for custom forms) -function build_fstat($fields) { +function build_fstat($f) { $cfarray = array(); - for($i=0; $iID; if ( !$pid ) - echo cforms('',$no); + echo cforms($custom,$no.$c); else - echo check_for_taf($no,$pid)?cforms('',$no):''; + echo check_for_taf($no,$pid)?cforms($custom,$no.$c):''; } + ### inserts a custom cform anywhere you want function insert_custom_cform($fields='',$no='') { - global $post; - - $no = ($no=='0')?'':$no; ### safety net - $no = check_form_name($no); - - if ( isset($_GET['pid']) ) - $pid = $_GET['pid']; - else if ($post->ID == 0) - $pid = false; - else - $pid = $post->ID; - - if ( !$pid ) - echo cforms($fields,$no.'+'); - else - echo check_for_taf($no,$pid)?cforms($fields,$no.'+'):''; + insert_cform($no, $fields, '+'); } + ### check form names/id's function check_form_name($no) { @@ -1151,6 +1210,7 @@ function check_form_name($no) { return ''; } + ### check if t-f-a is set function check_for_taf($no,$pid) { global $cformsSettings; @@ -1162,22 +1222,27 @@ function check_for_taf($no,$pid) { return ( $tmp["tell-a-friend"][0] == '1' )?true:false; } + ### public function: check if post is t-f-a enabled function is_tellafriend($pid) { $tmp = get_post_custom($pid); return ($tmp["tell-a-friend"][0]=='1')?true:false; } + ### WP 2.7 admin menu hook function cforms_post_box(){ global $tafstring; echo $tafstring; } + + function add_cforms_post_boxes(){ add_meta_box('cformspostbox', __('cforms Tell-A-Friend', 'cforms'), 'cforms_post_box', 'post', 'normal', 'high'); add_meta_box('cformspostbox', __('cforms Tell-A-Friend', 'cforms'), 'cforms_post_box', 'page', 'normal', 'high'); } + ### up to WP 2.7 and lower function taf_admin() { global $wp_db_version, $tafstring; @@ -1198,6 +1263,7 @@ function taf_admin() { } } + ### Add Tell A Friend processing function enable_tellafriend($post_ID) { global $wpdb; @@ -1213,6 +1279,7 @@ function enable_tellafriend($post_ID) { delete_post_meta($post_ID, 'tell-a-friend'); } + ### cforms widget function widget_cforms_init() { @@ -1265,6 +1332,7 @@ function widget_cforms_options($no) { } + ### get # of submission left (max subs) function get_cforms_submission_left($no='') { global $wpdb, $cformsSettings; @@ -1283,6 +1351,7 @@ function get_cforms_submission_left($no='') { return 0; } + ### get current page function get_request_uri() { $request_uri = $_SERVER['REQUEST_URI']; @@ -1295,6 +1364,7 @@ function get_request_uri() { return $request_uri; } + ### PLUGIN VERSION CHECK ON PLUGINS PAGE add_action( 'after_plugin_row', 'cf_check_plugin_version' ); function cf_check_plugin_version($plugin) @@ -1317,9 +1387,8 @@ function cf_check_plugin_version($plugin) if( (version_compare(strval($theVersion), strval($version), '>') == 1) ) { - $msg = __("Latest version available:", "sforum").' '.$theVersion.'
    '.$theMessage; - $msg.= '
    cforms by delicious:days'; - echo '
    '; + $msg = __("Latest version available:", "cforms").''.$theVersion.' - '.$theMessage; + echo ''; } else { return; } @@ -1327,6 +1396,7 @@ function cf_check_plugin_version($plugin) } } + ### add actions global $tafstring; if (function_exists('add_action')){ @@ -1395,6 +1465,8 @@ function cf_check_plugin_version($plugin) } + +### attaching to filters add_filter('wp_head', 'cforms_style'); add_filter('the_content', 'cforms_insert',10); ?> \ No newline at end of file diff --git a/formpresets/08_form_sign_up_4_class.txt b/formpresets/08_form_sign_up_4_class.txt index 1dee398..2ea960e 100644 --- a/formpresets/08_form_sign_up_4_class.txt +++ b/formpresets/08_form_sign_up_4_class.txt @@ -22,7 +22,7 @@ ff~~~Note|||title:Anything you\'d like to share with us...?$#$textarea$#$0$#$0$# ff~~~CC me please$#$ccbox$#$0$#$0$#$0$#$0$#$0 mx~~~30 li~~~Sorry, no more seats available at this point. -rd~~~2 +hd~~~1 ri~~~(required) re~~~(email required) tf~~~0 diff --git a/images/donate.png b/images/donate.png new file mode 100644 index 0000000..57093b2 Binary files /dev/null and b/images/donate.png differ diff --git a/js/cforms.js b/js/cforms.js index a8f7a88..1532bca 100644 --- a/js/cforms.js +++ b/js/cforms.js @@ -25,4 +25,4 @@ var sajax_request_type = 'POST'; var sajax_target_id = ''; var sajax_failure_redirect = ''; -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('B 1p(3L){f(7H)2i(3L)}B 3i(){1p("3i() 58..");h A;h 33=1c 1u(\'3x.2J.6.0\',\'3x.2J.3.0\',\'3x.2J\',\'59.2J\');L(h i=0;i<33.C;i++){2s{A=1c 5b(33[i])}2t(e){A=1Z}}f(!A&&2Y 3N!="4l")A=1c 3N();f(!A)1p("4U 3V 82 5d 3D.");v A}h 29=1c 1u();B 5e(){L(h i=0;i<29.C;i++)29[i].6V()}B 2x(1Q,1a){h i,x,n;h 1d;h 1l;h 2Q;1p("5g 2x().."+1o+"/"+2W);2Q=2W;f(2Y(1o)=="4l"||1o=="")1o="4h";1d=5h;f(1o=="4h"){f(1d.1M("?")==-1)1d+="?3c="+1J(1Q);u 1d+="&3c="+1J(1Q);1d+="&3Q="+1J(2W);1d+="&49="+1c 4c().43();L(i=0;i<1a.C-1;i++)1d+="&46[]="+1J(1a[i]);1l=1Z}u f(1o=="3j"){1l="3c="+1J(1Q);1l+="&3Q="+1J(2W);1l+="&49="+1c 4c().43();L(i=0;i<1a.C-1;i++)1l=1l+"&46[]="+1J(1a[i])}u{2i("5m 5n 2r: "+1o)}x=3i();f(x==1Z){f(40!=""){2H.2m=40;v J}u{1p("5o 5T 3D L 51 5p:\\n"+5r.5s);v J}}u{x.5t(1o,1d,1b);29[29.C]=x;f(1o=="3j"){x.3T("5u","3j "+1d+" 5j/1.1");x.3T("5x-83","5y/x-81-1w-5B")}x.5C=B(){f(x.5D!=4)v;1p("5E "+x.4Z);h 2T;h V;h 2S=x.4Z.K(/^\\s*|\\s*$/g,"");h 1H=(2S.3U(0)>5G)?1:0;2T=2S.1v(0+1H);V=2S.1m(2+1H);f(2T==""){}u f(2T=="-")2i("5J: "+V);u{f(2Q!="")k.o(2Q).25=3z(V);u{2s{h 2p;h 2v=J;f(2Y 1a[1a.C-1]=="3D"){2p=1a[1a.C-1].2p;2v=1a[1a.C-1].2v}u{2p=1a[1a.C-1]}2p(3z(V),2v)}2t(e){1p("7L 5O "+e+": 4U 3V 3z "+V)}}}}}1p(1Q+" 1d = "+1d+"*/5R = "+1l);x.5U(1l);1p(1Q+" 1L..");5W x;v 1b}B 3G(){2x("3w",3G.4N)}B 34(){2x("3X",34.4N)}B 3X(m){34(m,3Y)}B 3Y(4O){m=4O.1X(\'|\');k.o(\'5Y\'+m[1]).60=m[2]+\'&61=\'+4K.62(4K.7n()*65)}B 3k(m,U,M,4G){k.o(\'1C\'+m).1F.2U="3M";k.o(\'1C\'+m).3y=J;f(M!=\'\')M=\'<4H>\'+M+\'\';U=3o(41(U.E))+M;P=U.K(/(\\r\\n)/g,\'<4A />\');1e=\'1y\'+m;1O=(4V(m)>1)?\' 2C\'+m:\'\';f(k.o(1e+\'a\'))k.o(1e+\'a\').F="1W 2C"+1O;f(k.o(1e+\'b\'))k.o(1e+\'b\').F="1W 2C"+1O;2u(1e,P.K(/\\\\/g,""),\'\');U=U.K(/\\\\/g,"");f(k.o(\'66\'+m).E.1v(4G)==\'y\'){U=U.K(/<1i>/g,"\\r\\n");U=U.K(/<.?4a>/g,\'*\');U=U.K(/(<([^>]+)>)/38,\'\');U=U.K(/&4J;/38,\'\');2i(U)}}B 68(1x){f(1x.4I==1x.E)1x.E=\'\'};B 69(1x){f(1x.E==\'\')1x.E=1x.4I};B 6c(m,3h){f(!m)m=\'\';1e=\'1y\'+m;f(k.o(1e+\'a\')){k.o(1e+\'a\').F="1W 1L"}f(k.o(1e+\'b\')){k.o(1e+\'b\').F="1W 1L"}1L=3o(41(k.o(\'6d\'+m).E));1L=1L.K(/\\\\/g,"");B 47(2G,2g){h 1j="";2s{f(k.3n&&k.3n.4F){1j=k.3n.4F(2G,"").6e(2g)}u f(2G.44){2g=2g.K(/\\-(\\w)/g,B(6f,4E){v 4E.6i()});1j=2G.44[2g]}}2t(4P){1j=""}f(1j&&(1j.D(/6j/)||1j.D(/6k/)))v 1j.1m(0,1j.C-2);u v 1j}B 4b(37,1g){f(1g){h 48=47(1g,\'6m-6n\');f(48==37)v 1b;u f(1g.1B&&1g.1B.3S.1h()!="6o")v 4b(37,1g.1B)}v J}h 3t=1c 1u();h 1R=1c 1u();h 3q=0;h 2w=1c 1u();4u=k.o(\'2A\'+m).E.1V(3);4B=k.o(\'2A\'+m).E.1V(0,1);3m=k.o(\'2A\'+m).E.1V(1,1);4w=k.o(\'2A\'+m).E.1V(2,1);h 2e=6p(4u);2e=2e.1X(\'|\');L(i=0;i<2e.C;i++){3e=2e[i].1X(\'$#$\');2w[3e[0]]=3e[1]}M=\'\';h 6r=1c 2N(\'^.*6s([0-9]{1,3})$\');f(2u(1e,1L)){h 19=1b;h 2y=J;h 4q=1c 2N(\'^[\\\\w+-3b\\.]+@[\\\\w-3b]+[\\.][\\\\w-3b\\.]+$\');l=k.o(\'1K\'+m+\'1w\').2O(\'1i\');L(h i=0;i0)l[0].1B.6H(l[0]);l=k.o(\'1K\'+m+\'1w\').2O(\'*\');N=J;L(h i=0,j=l.C;i\'+2M+\' &4J;\';u v M+\'<1i>\'+2M+\'\'}u v M}B 4L(){L(n=0;n<1R.C;n++){f(k.o(1R[n]))k.o(1R[n]).7k(3t[n],k.o(1R[n]).7o)}}}B 4M(I){I=I.K(/\\\\\'/g,\'\\\'\');I=I.K(/\\\\"/g,\'"\');I=I.K(/\\\\\\\\/g,\'\\\\\');I=I.K(/\\\\0/g,\'\\0\');v I}B 2u(2j,P,7q){2s{f(k.o(2j+\'a\'))k.o(2j+\'a\').25=P;f(k.o(2j+\'b\'))k.o(2j+\'b\').25=P;v 1b}2t(4P){v J}}B 3w(m){h 1s=1c 2N(\'[$][#][$]\',[\'g\']);h 1r=\'$#$\';f(m==\'\')H=\'1\';u H=m;l=k.o(\'1K\'+m+\'1w\').2O(\'*\');L(h i=0,j=l.C;i1)H=H+1r+Y.1m(0,Y.C-1);u H=H+1r+"-"}u H=H+1r+(l[i].28?((l[i].E!="")?l[i].E:"X"):"-")}u f(18=="2R"){Y=l[i].28?((l[i].E!="")?l[i].E:"X"):\'\';2d(i=0;i--){h 2P=k.o(1S).1U[i];f(2P.5k!=\'3\'&&2P.3S.1h()==\'1i\'){f(2P.F.D(/1G/))1G=\'1G\';i=-1}}f(1G==\'1G\')2q=2q.K(\'3W="1G"\',\'\');k.o(1S).25=k.o(1S).25+2q;f(5v.45)45.5z()}h 27=2q.D(/5F-5H-(51|5K)-5M(s|-)[^" ]+/);f(27!=1Z&&27[0]!=\'\'&&k.o(27[0])){k.o(27[0]).1F.3F=\'5P\'}}36=J;1O=(4V(m)>1)?\' \'+1E+m:\'\';f(k.o(\'1y\'+m+\'a\')){k.o(\'1y\'+m+\'a\').F="1W "+1E+1O;36=1b}f(k.o(\'1y\'+m+\'b\')&&!(2L&&36))k.o(\'1y\'+m+\'b\').F="1W "+1E+1O;2u(\'1y\'+m,P,\'\');f(2L){k.o(\'1K\'+m+\'1w\').1F.3F=\'42\';k.o(\'6a\'+m).1F.3F=\'42\';2H.2m=\'#1y\'+m+\'a\'}f(4z==\'y\'){P=P.K(/<4A.?\\/>/g,\'\\r\\n\');P=P.K(/(<.?4a>|<.?b>)/g,\'*\');P=P.K(/(<([^>]+)>)/38,\'\');2i(P)}}h 4i=0;h 50="";h 1f=8;B 2B(s){v 3g(1I(26(s),s.C*1f))}B 6t(s){v 3l(1I(26(s),s.C*1f))}B 6v(s){v 3C(1I(26(s),s.C*1f))}B 6w(1n,V){v 3g(2I(1n,V))}B 6x(1n,V){v 3l(2I(1n,V))}B 6A(1n,V){v 3C(2I(1n,V))}B 6B(){v 2B("6D")=="6E"}B 1I(x,2h){x[2h>>5]|=6G<<((2h)%32);x[(((2h+64)>>>9)<<4)+14]=2h;h a=6J;h b=-6L;h c=-6N;h d=6O;L(h i=0;i16)24=1I(24,1n.C*1f);h 3v=1u(16),3B=1u(16);L(h i=0;i<16;i++){3v[i]=24[i]^7i;3B[i]=24[i]^7s}h 4W=1I(3v.4T(26(V)),4Y+V.C*1f);v 1I(3B.4T(4W),4Y+7R)}B 1q(x,y){h 3r=(x&2Z)+(y&2Z);h 3J=(x>>16)+(y>>16)+(3r>>16);v(3J<<16)|(3r&2Z)}B 3O(30,31){v(30<<31)|(30>>>(32-31))}B 26(I){h 1Y=1u();h 2z=(1<<1f)-1;L(h i=0;i>5]|=(I.3U(i/1f)&2z)<<(i%32);v 1Y}B 3C(1Y){h I="";h 2z=(1<<1f)-1;L(h i=0;i<1Y.C*32;i+=1f)I+=5Z.6b((1Y[i>>5]>>>(i%32))&2z);v I}B 3g(1k){h 3s=4i?"6C":"6I";h I="";L(h i=0;i<1k.C*4;i++){I+=3s.1v((1k[i>>2]>>((i%4)*8+4))&4y)+3s.1v((1k[i>>2]>>((i%4)*8))&4y)}v I}B 3l(1k){h 3R="7a+/";h I="";L(h i=0;i<1k.C*4;i+=3){h 3Z=(((1k[i>>2]>>8*(i%4))&3u)<<16)|(((1k[i+1>>2]>>8*((i+1)%4))&3u)<<8)|((1k[i+2>>2]>>8*((i+2)%4))&3u);L(h j=0;j<4;j++){f(i*8+j*6>1k.C*32)I+=50;u I+=3R.1v((3Z>>6*(3-j))&6h)}}v I}B 4s(m){h 3E="6U"+m+"=";h 35=k.7z.1X(\';\');L(h i=0;i<35.C;i++){h c=35[i];2d(c.1v(0)==\' \')c=c.1m(1,c.C);f(c.1M(3E)==0)v 3o(c.1m(3E.C,c.C))}v\'\'}',62,500,'|||||||||||||||if||var|||document|objColl|no||getElementById||||||else|return||||||function|length|match|value|className|newclass|params|str|false|replace|for|custom_error|last_one|md5_gg|stringXHTML|md5_hh|md5_ii|md5_ff|temp|err|data|message||group|id|||||||||typ|all_valid|args|true|new|uri|msgbox|chrsz|el|toLowerCase|li|strValue|binarray|post_data|substring|key|sajax_request_type|sajax_debug|safe_add|prefix|regexp|name|Array|charAt|form|thefield|usermessage|check_for_customerr|fld|parentNode|sendbutton|nodeName|result|style|alt|offset|core_md5|encodeURIComponent|cforms|waiting|indexOf|cf_error|ucm|cf_errortxt|func_name|insert_err_p|commentParent|obj_regexp|childNodes|substr|cf_info|split|bin|null|||||bkey|innerHTML|str2binl|dEl|checked|sajax_requests|parent_el|ul|cforms_captcha|while|error_container|cforms_q|strCssRule|len|alert|elementId|all_child_obj|md5_cmn|href|end|hidden|callback|newcommentText|type|try|catch|doInnerXHTML|extra_data|all_custom_error|sajax_do_call|code_err|mask|cf_customerr|hex_md5|failure|label|newcomment|secinput|oElm|location|core_hmac_md5|XMLHTTP|INPval|hide|gotone|RegExp|getElementsByTagName|elLi|target_id|radio|txt|status|cursor|cf|sajax_target_id|box|typeof|0xFFFF|num|cnt||msxmlhttp|x_reset_captcha|ca|isA|col|ig|cformselect|single|_|rs|fldrequired|keyvalue|cookie_part|binl2hex|upload|sajax_init_object|POST|call_err|binl2b64|show_err_ins|defaultView|unescape|cl|insert_err_count|lsw|hex_tab|insert_err|0xFF|ipad|cforms_submitcomment|Msxml2|disabled|eval|select|opad|binl2str|object|nameEQ|display|x_cforms_submitcomment|isParentChkBoxGroup|cforms_setsuccessmessage|msw|success|text|auto|XMLHttpRequest|bit_rol|allLi|rst|tab|tagName|setRequestHeader|charCodeAt|not|class|reset_captcha|reset_captcha_done|triplet|sajax_failure_redirect|decodeURI|none|getTime|currentStyle|AjaxEditComments|rsargs|getStyle|colStyle|rsrnd|strong|sameParentBG|Date|olda|errortxt|cf_date|oldc|GET|hexcase|oldd|area|undefined|search|cfselectmulti|email|required|regexp_e|_regexp|readcookie|oldb|rest|read_cookie|jump_to_err|progress|0xF|pop|br|show_err_li|cf_li_err|createElement|p1|getComputedStyle|popFlag|ol|defaultValue|raquo|Math|write_customerr|stripslashes|arguments|newimage|ee|input|textarea|checkbox|concat|Could|parseInt|hash|submit|512|responseText|b64pad|user|http|358537222|mailerr|722521979|reset|76029189|called|Microsoft|640364487|ActiveXObject|421815835|connection|sajax_cancel|530742520|in|sajax_uri|995338651|HTTP|nodeType|198630844|Illegal|request|NULL|agent|1126891415|navigator|userAgent|open|Method|window|1416354905|Content|application|init|57434055|urlencoded|onreadystatechange|readyState|received|edit|255|comment|1700485571|Error|admin|1894986606|link|1051523|error|block|2054922799|post|1873313359|sajax|send|30611744|delete|1560198380|cf_captcha_img|String|src|rnd|round|1309151649||999999|cf_popup|145523070|clearField|setField|ll|fromCharCode|cforms_validate|cf_working|getPropertyValue|strMatch|1120210379|0x3F|toUpperCase|px|em|718787259|background|color|html|decodeURIComponent|343485551|regexp_field_id|field_|b64_md5|cf_upload|str_md5|hex_hmac_md5|b64_hmac_md5|nextSibling|previousSibling|str_hmac_md5|md5_vm_test|0123456789ABCDEF|abc|900150983cd24fb0d6963f7d28e17f72|fldemail|0x80|removeChild|0123456789abcdef|1732584193|cforms_a|271733879|encodeURI|1732584194|271733878|680876936|389564586|focus|606105819|1044525330|turing_string_|abort|cf_failure|176418897|1200080426|cf_codeerr|1473231341|45705983|1770035416|UL|1958414417|LI|42063|createTextNode|createAttribute|1990404162|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|nodeValue|cf_li_text_err|1804603682|appendChild|setAttributeNode|40341101|1502002290|0x36363636|1236535329|insertBefore|165796510|1069501632|random|firstChild|643717713|stringDOM|373897302|0x5C5C5C5C|701558691|38016083|660478335|405537848|568446438|1019803690|cookie|187363961|multiple|1163531501|option|1444681467|selected|51403784|sajax_debug_mode|comment_post_ID|1735328473|cforms_pl|Caught|cfhidden|1926607734|378558|2022574463|1839030562|128|action|35309556|lib_WPcomment|php|1530992060|1272893353|155497632|1094730640|681279174|www|create|Type'.split('|'),0,{})) +eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('B 1p(4W){f(7G)2m(4W)}B 39(){1p("39() 58..");h A;h 33=1c 1r(\'2Y.2J.6.0\',\'2Y.2J.3.0\',\'2Y.2J\',\'59.2J\');K(h i=0;i<33.C;i++){2M{A=1c 5b(33[i])}2s(e){A=1U}}f(!A&&3G 4P!="4g")A=1c 4P();f(!A)1p("4R 4S 5c 6X 35.");v A}h 28=1c 1r();B 5f(){K(h i=0;i<28.C;i++)28[i].5g()}B 2O(24,1a){h i,x,n;h 1f;h 1q;h 2U;1p("5h 2O().."+1o+"/"+2X);2U=2X;f(3G(1o)=="4g"||1o=="")1o="4a";1f=5i;f(1o=="4a"){f(1f.2o("?")==-1)1f+="?3e="+1D(24);u 1f+="&3e="+1D(24);1f+="&3O="+1D(2X);1f+="&43="+1c 4y().42();K(i=0;i<1a.C-1;i++)1f+="&3Q[]="+1D(1a[i]);1q=1U}u f(1o=="31"){1q="3e="+1D(24);1q+="&3O="+1D(2X);1q+="&43="+1c 4y().42();K(i=0;i<1a.C-1;i++)1q=1q+"&3Q[]="+1D(1a[i])}u{2m("5m 5n 2p: "+1o)}x=39();f(x==1U){f(3R!=""){2P.2e=3R;v J}u{1p("61 5o 35 K 3T 5R:\\n"+5p.5r);v J}}u{x.5s(1o,1f,1b);28[28.C]=x;f(1o=="31"){x.3U("5G","31 "+1f+" 5u/1.1");x.3U("6n-84","5x/x-5y-1n-81")}x.80=B(){f(x.7Z!=4)v;1p("5B "+x.4Z);h 2T;h W;h 2S=x.4Z.L(/^\\s*|\\s*$/g,"");h 1K=(2S.4V(0)>5D)?1:0;2T=2S.1y(0+1K);W=2S.1i(2+1K);f(2T==""){}u f(2T=="-"){2m("7T: "+W)}u{f(2U!=""){k.o(2U).26=37(W)}u{2M{h 27;h 2R=J;f(3G 1a[1a.C-1]=="35"){27=1a[1a.C-1].27;2R=1a[1a.C-1].2R}u{27=1a[1a.C-1]}27(37(W),2R)}2s(e){1p("5J 5M "+e+": 4R 4S 37 "+W)}}}}}1p(24+" 1f = "+1f+"*/5O = "+1q);x.5P(1q);1p(24+" 1M..");5S x;v 1b}B 3D(){2O("3x",3D.3W)}B 3c(){2O("3X",3c.3W)}B 3X(m){3c(m,4K)}B 4K(3Y){m=3Y.1V(\'|\');k.o(\'7t\'+m[1]).5V=m[2]+\'&5X=\'+3Z.5Y(3Z.5Z()*62)}B 3m(m,U,N,4I){k.o(\'1H\'+m).1J.2Q="3L";k.o(\'1H\'+m).3F=J;f(N!=\'\')N=\'<4H>\'+N+\'\';U=3l(4E(U.E))+N;T=U.L(/(\\r\\n)/g,\'<4C />\');1d=\'1w\'+m;1Q=(3V(m)>1)?\' 2K\'+m:\'\';f(k.o(1d+\'a\'))k.o(1d+\'a\').F="1O 2K"+1Q;f(k.o(1d+\'b\'))k.o(1d+\'b\').F="1O 2K"+1Q;2u(1d,T.L(/\\\\/g,""),\'\');U=U.L(/\\\\/g,"");f(k.o(\'7l\'+m).E.1y(4I)==\'y\'){U=U.L(/<1k>/g,"\\r\\n");U=U.L(/<.?4u>/g,\'*\');U=U.L(/(<([^>]+)>)/3q,\'\');U=U.L(/&4F;/3q,\'\');2m(U)}}B 66(1B){f(1B.40==1B.E)1B.E=\'\'};B 67(1B){f(1B.E==\'\')1B.E=1B.40};B 69(m,3k){f(!m)m=\'\';1d=\'1w\'+m;f(k.o(1d+\'a\')){k.o(1d+\'a\').F="1O 1M"}f(k.o(1d+\'b\')){k.o(1d+\'b\').F="1O 1M"}1M=3l(4E(k.o(\'6a\'+m).E));1M=1M.L(/\\\\/g,"");B 44(2x,2l){h 1l="";2M{f(k.38&&k.38.51){1l=k.38.51(2x,"").6b(2l)}u f(2x.4A){2l=2l.L(/\\-(\\w)/g,B(6c,41){v 41.6f()});1l=2x.4A[2l]}}2s(4L){1l=""}f(1l&&(1l.D(/6g/)||1l.D(/6h/)))v 1l.1i(0,1l.C-2);u v 1l}B 46(3b,1g){f(1g){h 45=44(1g,\'6j-6k\');f(45==3b)v 1b;u f(1g.1A&&1g.1A.4w.1h()!="6l")v 46(3b,1g.1A)}v J}h 3u=1c 1r();h 1S=1c 1r();h 3t=0;h 2w=1c 1r();47=k.o(\'2E\'+m).E.25(3);4v=k.o(\'2E\'+m).E.25(0,1);3o=k.o(\'2E\'+m).E.25(1,1);4r=k.o(\'2E\'+m).E.25(2,1);h 2c=6m(47);2c=2c.1V(\'|\');K(i=0;i<2c.C;i++){3h=2c[i].1V(\'$#$\');2w[3h[0]]=3h[1]}N=\'\';h 6o=1c 2G(\'^.*6q([0-9]{1,3})$\');f(2u(1d,1M)){h 18=1b;h 2F=J;h 4l=1c 2G(\'^[\\\\w+-3p\\.]+@[\\\\w-3p]+[\\.][\\\\w-3p\\.]+$\');l=k.o(\'1C\'+m+\'1n\').2N(\'1k\');K(h i=0;i0)l[0].1A.6I(l[0]);l=k.o(\'1C\'+m+\'1n\').2N(\'*\');M=J;K(h i=0,j=l.C;i\'+2v+\' &4F;\';u v N+\'<1k>\'+2v+\'\'}u v N}B 4G(){K(n=0;n<1S.C;n++){f(k.o(1S[n]))k.o(1S[n]).7i(3u[n],k.o(1S[n]).7k)}}}B 4J(I){I=I.L(/\\\\\'/g,\'\\\'\');I=I.L(/\\\\"/g,\'"\');I=I.L(/\\\\\\\\/g,\'\\\\\');I=I.L(/\\\\0/g,\'\\0\');v I}B 2u(2f,T,7n){2M{f(k.o(2f+\'a\'))k.o(2f+\'a\').26=T;f(k.o(2f+\'b\'))k.o(2f+\'b\').26=T;v 1b}2s(4L){v J}}B 3x(m){h 1s=1c 2G(\'[$][#][$]\',[\'g\']);h 1u=\'$#$\';f(m==\'\')G=\'1\';u G=m;l=k.o(\'1C\'+m+\'1n\').2N(\'*\');K(h i=0,j=l.C;i1)G=G+1u+19.1i(0,19.C-1);u G=G+1u+"-"}u G=G+1u+(l[i].2k?((l[i].E!="")?l[i].E:"X"):"-")}u f(Y=="2y"){19=l[i].2k?((l[i].E!="")?l[i].E:"X"):\'\';2a(i=0;i--){h 2D=k.o(1Z).1P[i];f(2D.5j!=\'3\'&&2D.4w.1h()==\'1k\'){f(2D.F.D(/1L/))1L=\'1L\';i=-1}}f(1L==\'1L\')2r=2r.L(\'4Q="1L"\',\'\');k.o(1Z).26=k.o(1Z).26+2r;f(5t.3M)3M.5w()}h 29=2r.D(/5A-5C-(3T|5E)-5H(s|-)[^" ]+/);f(29!=1U&&29[0]!=\'\'&&k.o(29[0])){k.o(29[0]).1J.3r=\'5K\'}}3z=J;1Q=(3V(m)>1)?\' \'+1F+m:\'\';f(k.o(\'1w\'+m+\'a\')){k.o(\'1w\'+m+\'a\').F="1O "+1F+1Q;3z=1b}f(k.o(\'1w\'+m+\'b\')&&!(2t&&3z))k.o(\'1w\'+m+\'b\').F="1O "+1F+1Q;2u(\'1w\'+m,T,\'\');f(2t){k.o(\'1C\'+m+\'1n\').1J.3r=\'4D\';k.o(\'63\'+m).1J.3r=\'4D\';f(!P.D(/>>>/))2P.2e=\'#1w\'+m+\'a\'}f(4B==\'y\'){T=T.L(/<4C.?\\/>/g,\'\\r\\n\');T=T.L(/(<.?4u>|<.?b>)/g,\'*\');T=T.L(/(<([^>]+)>)/3q,\'\');2m(T)}f(P.D(/>>>/)){2P.2e=P.1i((P.2o(\'|>>>\')+4),P.C);v}}h 4b=0;h 50="";h 1e=8;B 2A(s){v 3d(1I(1X(s),s.C*1e))}B 6r(s){v 3n(1I(1X(s),s.C*1e))}B 6t(s){v 3B(1I(1X(s),s.C*1e))}B 6u(1v,W){v 3d(2C(1v,W))}B 6w(1v,W){v 3n(2C(1v,W))}B 6y(1v,W){v 3B(2C(1v,W))}B 6z(){v 2A("6B")=="6D"}B 1I(x,2g){x[2g>>5]|=6E<<((2g)%32);x[(((2g+64)>>>9)<<4)+14]=2g;h a=6G;h b=-6K;h c=-6L;h d=6M;K(h i=0;i16)1W=1I(1W,1v.C*1e);h 3y=1r(16),3A=1r(16);K(h i=0;i<16;i++){3y[i]=1W[i]^7g;3A[i]=1W[i]^7q}h 4U=1I(3y.4T(1X(W)),4Y+W.C*1e);v 1I(3A.4T(4U),4Y+7Q)}B 1t(x,y){h 3v=(x&30)+(y&30);h 3J=(x>>16)+(y>>16)+(3v>>16);v(3J<<16)|(3v&30)}B 3N(3s,3a){v(3s<<3a)|(3s>>>(32-3a))}B 1X(I){h 1T=1r();h 2z=(1<<1e)-1;K(h i=0;i>5]|=(I.4V(i/1e)&2z)<<(i%32);v 1T}B 3B(1T){h I="";h 2z=(1<<1e)-1;K(h i=0;i<1T.C*32;i+=1e)I+=5W.68((1T[i>>5]>>>(i%32))&2z);v I}B 3d(1m){h 3i=4b?"6A":"6F";h I="";K(h i=0;i<1m.C*4;i++){I+=3i.1y((1m[i>>2]>>((i%4)*8+4))&4t)+3i.1y((1m[i>>2]>>((i%4)*8))&4t)}v I}B 3n(1m){h 3P="79+/";h I="";K(h i=0;i<1m.C*4;i+=3){h 3S=(((1m[i>>2]>>8*(i%4))&3w)<<16)|(((1m[i+1>>2]>>8*((i+1)%4))&3w)<<8)|((1m[i+2>>2]>>8*((i+2)%4))&3w);K(h j=0;j<4;j++){f(i*8+j*6>1m.C*32)I+=50;u I+=3P.1y((3S>>6*(3-j))&6e)}}v I}B 4n(m){h 3C="6S"+m+"=";h 34=k.7y.1V(\';\');K(h i=0;i<34.C;i++){h c=34[i];2a(c.1y(0)==\' \')c=c.1i(1,c.C);f(c.2o(3C)==0)v 3l(c.1i(3C.C,c.C))}v\'\'}',62,501,'|||||||||||||||if||var|||document|objColl|no||getElementById||||||else|return||||||function|length|match|value|className|params|newclass|str|false|for|replace|last_one|custom_error|md5_gg|message|md5_hh|md5_ff|md5_ii|stringXHTML|err|temp|data||typ|id|||||||||all_valid|group|args|true|new|msgbox|chrsz|uri|el|toLowerCase|substring|name|li|strValue|binarray|form|sajax_request_type|sajax_debug|post_data|Array|regexp|safe_add|prefix|key|usermessage|check_for_customerr|charAt|fld|parentNode|thefield|cforms|encodeURIComponent|nodeName|result|cf_error|sendbutton|core_md5|style|offset|alt|waiting|obj_regexp|cf_info|childNodes|ucm|cf_errortxt|insert_err_p|bin|null|split|bkey|str2binl|hidden|commentParent|||||func_name|substr|innerHTML|callback|sajax_requests|dEl|while|cforms_q|error_container|parent_el|href|elementId|len|md5_cmn|cforms_captcha|end|checked|strCssRule|alert|ul|indexOf|type|all_child_obj|newcommentText|catch|hide|doInnerXHTML|gotone|all_custom_error|oElm|radio|mask|hex_md5|label|core_hmac_md5|elLi|cf_customerr|code_err|RegExp|secinput|newcomment|XMLHTTP|failure|INPval|try|getElementsByTagName|sajax_do_call|location|cursor|extra_data|txt|status|target_id|cf|box|sajax_target_id|Msxml2|select|0xFFFF|POST||msxmlhttp|ca|object|cl|eval|defaultView|sajax_init_object|cnt|col|x_reset_captcha|binl2hex|rs|single|cformselect|keyvalue|hex_tab|cookie_part|upload|unescape|call_err|binl2b64|show_err_ins|_|ig|display|num|insert_err_count|insert_err|lsw|0xFF|cforms_submitcomment|ipad|isA|opad|binl2str|nameEQ|x_cforms_submitcomment|isParentChkBoxGroup|disabled|typeof|fldrequired|cforms_setsuccessmessage|msw|success|auto|AjaxEditComments|bit_rol|rst|tab|rsargs|sajax_failure_redirect|triplet|user|setRequestHeader|parseInt|arguments|reset_captcha|newimage|Math|defaultValue|p1|getTime|rsrnd|getStyle|colStyle|sameParentBG|rest|email|olda|GET|hexcase|cfselectmulti|oldd|oldc|search|undefined|area|allLi|required|oldb|regexp_e|_regexp|readcookie|cf_date|errortxt|read_cookie|jump_to_err|progress|0xF|strong|show_err_li|tagName|cf_li_err|Date|createElement|currentStyle|pop|br|none|decodeURI|raquo|write_customerr|ol|popFlag|stripslashes|reset_captcha_done|ee|input|textarea|checkbox|XMLHttpRequest|class|Could|not|concat|hash|charCodeAt|text|submit|512|responseText|b64pad|getComputedStyle|358537222|mailerr|722521979|cfnoreset|reset|76029189|called|Microsoft|640364487|ActiveXObject|create|421815835|530742520|sajax_cancel|abort|in|sajax_uri|nodeType|995338651|198630844|Illegal|request|sajax|navigator|1126891415|userAgent|open|window|HTTP|1416354905|init|application|www|57434055|edit|received|comment|255|admin|1700485571|Method|link|1894986606|Caught|block|1051523|error|2054922799|post|send|1873313359|agent|delete|30611744|1560198380|src|String|rnd|round|random|1309151649|NULL|999999|ll||145523070|clearField|setField|fromCharCode|cforms_validate|cf_working|getPropertyValue|strMatch|1120210379|0x3F|toUpperCase|px|em|718787259|background|color|html|decodeURIComponent|Content|regexp_field_id|343485551|field_|b64_md5|cf_upload|str_md5|hex_hmac_md5|nextSibling|b64_hmac_md5|previousSibling|str_hmac_md5|md5_vm_test|0123456789ABCDEF|abc|fldemail|900150983cd24fb0d6963f7d28e17f72|0x80|0123456789abcdef|1732584193|cforms_a|removeChild|encodeURI|271733879|1732584194|271733878|680876936|389564586|focus|606105819|1044525330|turing_string_|cf_failure|176418897|cf_codeerr|1200080426|connection|1473231341|45705983|UL|1770035416|LI|1958414417|createTextNode|42063|createAttribute|nodeValue|1990404162|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|cf_li_text_err|appendChild|1804603682|setAttributeNode|40341101|1502002290|0x36363636|1236535329|insertBefore|165796510|firstChild|cf_popup|1069501632|stringDOM|643717713|373897302|0x5C5C5C5C|701558691|38016083|cf_captcha_img|660478335|405537848|568446438|1019803690|cookie|187363961|multiple|1163531501|option|selected|1444681467|51403784|sajax_debug_mode|comment_parent|comment_post_ID|1735328473|cforms_pl|cfhidden|1926607734|378558|2022574463|1839030562|128|action|35309556|Error|lib_WPcomment|php|1530992060|1272893353|155497632|readyState|onreadystatechange|urlencoded|1094730640|681279174|Type'.split('|'),0,{})) diff --git a/js/cformsadmin.js b/js/cformsadmin.js index be52c55..5987d36 100644 --- a/js/cformsadmin.js +++ b/js/cformsadmin.js @@ -1 +1 @@ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('N bD=5c 9m();N 66=5c 9m(bD.c9()+3*cd);N 11=4y();9(!11||!(11.1B==35)){T.6B="6A=ce;86="+66.87()+";"}N K=70.eP();K(T).8w(I(){K(\'.cg\').U({1S:\'2i\'});K(\'a.bs\').U({1S:\'ch\'});K(\'a.bs\').1m(I(){9(K(\'#\'+D.1h).U(\'1S\')==\'2i\')K(\'#\'+D.1h).U({1S:\'\'});Q K(\'#\'+D.1h).U({1S:\'2i\'});Z 18});N 5P,1c,2r;K(\'a#ag\').1m(I(){9((7e=K(\'#5t\').11())==1n)7e=\'\';9((8U=K(\'#8L\').11())==1n)8U=\'\';9((7f=K(\'#7n\').11())==1n)7f=\'\';9((91=K(\'#8Q\').11())==1n)91=\'\';1G=91+7e+8U+7f;9((5N=K(\'#7j\').11())==1n)5N=\'\';Q 5N=\'|\'+5N;9((5v=K(\'#9x\').11())==1n)5v=\'\';Q 5v=\'|\'+5v;1G+=5N+5v;9((5J=K(\'#9y\').11())==1n)5J=\'\';Q 5J=\'|\'+5J;9((5f=K(\'#8n\').11())==1n)5f=\'\';Q 5f=\'|\'+5f;1G+=5J+5f;9((5r=K(\'#9z\').11())==1n)5r=\'\';Q 5r=\'#\'+5r;1G+=5r;9((5D=K(\'#69\').17(\'1v\'))!=1l)5D=\'\';Q{9(5D)5D=\'|49:1l\'}9((4Q=K(\'#7i\').11())==1n)4Q=\'\';Q{9(4Q!=\'\')4Q=\'|2e:\'+4Q}9((54=K(\'#8z\').11())==1n)54=\'\';Q{9(54!=\'\')54=\'|9w:\'+54}cl=\'\';K(\'.3j\').1u(I(33,5q){9((5g=K(\'#3x\'+5q.1e.2K(10)).11())==1n)5g=\'\';Q 5g=\'#\'+5g;9((4Z=K(\'#3n\'+5q.1e.2K(10)).11())==1n)4Z=\'\';Q{9(4Z!=\'\')4Z=\'|\'+4Z}9((5h=K(\'#3k\'+5q.1e.2K(10)).17(\'1v\'))!=1l)5h=\'\';Q{9(5h)5h=\'|49:1l\'}9((5U=K(\'#5a\'+5q.1e.2K(10)).17(\'1v\'))!=1l)5U=\'\';Q{9(5U)5U=\'#\'}1G+=5g+4Z+5h+5U});5P.5K.9v.1k=1G+5D+4Q+54;Z 18});N 4o=I(){1G=5P.5K.9v.1k;9(T.1I(\'8z\')){1f=1G.2B(\'|9w:\');K(\'#8z\').11(1f[1]);1G=1f[0]}9(T.1I(\'7i\')){1f=1G.2B(\'|2e:\');K(\'#7i\').11(1f[1]);1G=1f[0]}9(T.1I(\'69\')){1f=1G.2B(\'|49:\');9(1f[1]!=6M&&1f[1].5u(/1l/))K(\'#69\').17(\'1v\',\'1v\');Q K(\'#69\').17(\'1v\',\'\');1G=1f[0]}9(T.1I(\'7j\')){1f=1G.2B(\'|\');K(\'#5t\').11(1f[0]);K(\'#7j\').11(1f[1]);K(\'#9x\').11(1f[2]);1G=\'\'}Q 9(T.1I(\'8n\')){N 7k;1f=1G.2B(\'|\');K(\'#5t\').11(1f[0]);K(\'#9y\').11(1f[1]);9(1f[1]==1n)1f[1]=\'\';7k=1G.2K(1f[0].1B+1f[1].1B+2);K(\'#8n\').11(7k);1G=\'\'}Q 9(T.1I(\'8Q\')){1f=1G.2B(\'#\');K(\'#8Q\').11(1f[0]);K(\'#9z\').11(1f[1]);1G=\'\'}Q 9(T.1I(\'8L\')){1f=1G.2B(\'#\');2r=1c=0;K(\'a#9B\').1m(I(){1c++;2r++;K(\'\'+\'\'+\'<12 1x="2h" 1e="3x\'+1c+\'" 1h="3x\'+1c+\'" 1k=""/>\'+\'<12 1x="2h" 1e="3n\'+1c+\'" 1h="3n\'+1c+\'" 1k="" 14="6d"/>\'+\'<12 14="4D 6p" 1x="2T" 1e="3k\'+1c+\'" 1h="3k\'+1c+\'"/>\'+\'<12 14="4D 9A" 1x="2T" 1e="5a\'+1c+\'" 1h="5a\'+1c+\'" 1k="46"/>\'+\'\'+\'\'+\'\').6a("#2G");K(\'a.42\',\'#3F\'+1c).2k("1m",6h);K(\'a.43\',\'#3F\'+1c).2k("1m",6i);K(\'#4K\'+1c).2k("1m",I(){K(D).2A().2f();2r--;9(2r<=5){K(\'#2G\').U({1a:""})}Z 18});9(2r>5)K(\'#2G\').U({1a:"6j",6y:"2b"});Z 18});K(\'#8L\').11(1f[0]);2w(i=1;i<1f.1B;i++){9(1f[i]!=\'\'&&1f[i].3P(\'|49:\')!=-1){2a=1f[i].2B(\'|49:\');3v=2a[1].5u(/1l/)?\' 1v="1v"\':\'\';2a=2a[0]}Q{2a=1f[i];3v=\'\'}9(2a!=\'\'&&2a.3P(\'|\')!=-1)2O=2a.2B(\'|\');Q{N 2O=5c 4S(2);2O[0]=2a;2O[1]=\'\'}46=\'\';9(1f[i+1]==\'\'){46=\' 1v="1v"\';i++}1c++;2r++;K(\'\'+\'\'+\'<12 1x="2h" 1e="3x\'+1c+\'" 1h="3x\'+1c+\'" 1k="\'+2O[0].3e(/"/g,\'&6r;\')+\'"/>\'+\'<12 1x="2h" 1e="3n\'+1c+\'" 1h="3n\'+1c+\'" 1k="\'+2O[1].3e(/"/g,\'&6r;\')+\'" 14="6d"/>\'+\'<12 14="4D 6p" 1x="2T" 1e="3k\'+1c+\'" 1h="3k\'+1c+\'" \'+3v+\'/>\'+\'<12 14="4D 9A" 1x="2T" 1e="5a\'+1c+\'" 1h="5a\'+1c+\'" 1k="46" \'+46+\'/>\'+\'\'+\'\'+\'\').6a("#2G")}9(1c>5)K(\'#2G\').U({1a:"6j",6y:"2b"});K(\'.3j > a.55\').2k("1m",I(){K(D).2A().2f();9(2r--<5)K(\'#2G\').U({1a:""});Z 18});1G=\'\'}Q 9(T.1I(\'7n\')){1f=1G.2B(\'#\');2r=1c=0;K(\'a#9B\').1m(I(){1c++;2r++;K(\'\'+\'\'+\'<12 1x="2h" 1e="3x\'+1c+\'" 1h="3x\'+1c+\'" 1k=""/>\'+\'<12 1x="2h" 1e="3n\'+1c+\'" 1h="3n\'+1c+\'" 1k="" 14="6d"/>\'+\'<12 14="4D 6p" 1x="2T" 1e="3k\'+1c+\'" 1h="3k\'+1c+\'"/>\'+\'\'+\'\'+\'\').6a("#2G");K(\'a.42\',\'#3F\'+1c).2k("1m",6h);K(\'a.43\',\'#3F\'+1c).2k("1m",6i);K(\'#4K\'+1c).2k("1m",I(){K(D).2A().2f();2r--;9(2r<=5){K(\'#2G\').U({1a:""})}Z 18});9(2r>5)K(\'#2G\').U({1a:"6j",6y:"2b"});Z 18});K(\'#7n\').11(1f[0]);2w(i=1;i<1f.1B;i++){9(1f[i]!=\'\'&&1f[i].3P(\'|49:\')!=-1){2a=1f[i].2B(\'|49:\');3v=2a[1].5u(/1l/)?\' 1v="1v"\':\'\';2a=2a[0]}Q{2a=1f[i];3v=\'\'}9(2a!=\'\'&&2a.3P(\'|\')!=-1)2O=2a.2B(\'|\');Q{N 2O=5c 4S(2);2O[0]=2a;2O[1]=\'\'}46=\'\';9(1f[i+1]==\'\'){46=\' 1v="1v"\';i++}Q{1c++;2r++}K(\'\'+\'\'+\'<12 1x="2h" 1e="3x\'+1c+\'" 1h="3x\'+1c+\'" 1k="\'+2O[0].3e(/"/g,\'&6r;\')+\'"/>\'+\'<12 1x="2h" 1e="3n\'+1c+\'" 1h="3n\'+1c+\'" 1k="\'+2O[1].3e(/"/g,\'&6r;\')+\'" 14="6d"/>\'+\'<12 14="4D 6p" 1x="2T" 1e="3k\'+1c+\'" 1h="3k\'+1c+\'" \'+3v+\'/>\'+\'\'+\'\'+\'\').6a("#2G")}9(1c>5)K(\'#2G\').U({1a:"6j",6y:"2b"});K(\'.3j > a.55\').2k("1m",I(){K(D).2A().2f();9(2r--<5)K(\'#2G\').U({1a:""});Z 18});1G=\'\'}Q 9(T.1I(\'5t\'))K(\'#5t\').11(1G);K(\'.3j > a.42\').2k("1m",6h);K(\'.3j > a.43\').2k("1m",6i);K(\'.5i\').1z(\'5F\')};N 9I=5c 4S(\'9H\',\'ct\',\'22\',\'22\',\'2T\',\'77\',\'77\',\'7W\',\'7W\',\'22\',\'22\',\'22\',\'22\',\'9H\',\'22\',\'2T\',\'7W\',\'22\',\'22\',\'22\',\'22\',\'22\',\'22\',\'22\',\'22\',\'22\',\'22\',\'22\',\'22\',\'77\',\'2T\',\'2T\');N 62=I(1N){1N.w.U(\'3w\',1).2x();5P=1N.t;K(\'#9J\').4o(1N.t.5K.2e+9I[1N.t.5K.cu.7B]+\'.3l\',{9N:25},I(){4o()})};N 6G=I(1N){K(\'.5i\').1U(\'5F\');1N.w.1y();K(\'#9J\').1j(\'\');1N.o.2f()};K(\'#cv\').2Q({4t:1l,4b:30,3X:62,4d:6G}).3z(\'.3z\');K(\'a#cw\').1m(I(){T.9M.23()});N 71;N bu=I(){71=0;K(\'1O#7h\').aI(7A);K(\'1O#7h\').bd(7A);K(\'.5i\').1z(\'5F\');K(\'1O#7h\').4P()};N 7A=I(){K(\'1r#bz\'+71).6m();K(\'1r#bz\'+D.7B).6m();71=D.7B};N 9R=I(1N){1N.w.U(\'3w\',1).2x();5P=1N.t;K(\'#9Q\').4o(1N.t.1h+\'9M.3l\',{9N:25},I(){bu()})};N 9S=I(1N){K(\'1r\',\'p#cx\').1y();K(\'.5i\').1U(\'5F\');1N.w.1y();K(\'#9Q\').1j(\'\');1N.o.2f()};K(\'#cy\').2Q({3d:\'.cA\',4t:1l,4b:30,3X:9R,4d:9S}).3z(\'.3z\');N 8B=I(1N){1N.w.U(\'3w\',1).2x();K(\'.5i\').1z(\'5F\')};N 8F=I(1N){1N.w.1y();1N.o.2f()};K(\'#cB\').2Q({4t:1l,4b:30,3X:8B,4d:8F}).3z(\'.3z\');K(\'a#cC\').1m(I(){N 29=\'\';K(\'.4H\',\'#6N\').1u(I(){29=29+K(\'1p:1X > O\',D).1j()+\',\'});9(29==\'\')29=\'7N\';N 2t=K(\'.72\',\'.1W\').17(\'1k\');N 1V=K(\'1O\',\'.1W\').17(\'1k\');K.8T(K(\'#3i\').17(\'2e\')+\'cD.3l\',{aS:29,2t:2t,1V:1V},I(aZ,3r){K(\'#8E\').2x();K(\'#8E\').1j(aZ);K(\'.4T\').3d(\'1m\');K(\'#8E\').7S(eD)})});K(\'#cE\').2Q({4t:1l,4b:30,3X:8B,4d:8F}).3z(\'.3z\');K(\'a#cI\').1m(I(){N 29=\'\';K(\'.4H\',\'#6N\').1u(I(){29=29+K(\'1p:1X > O\',D).1j()+\',\'});9(29==\'\')29=\'7N\';N 6n=K(\'.2W\',\'#6N\').17(\'2u\');N 6o=K(\'.2W > O:1X\',\'#6N\').17(\'14\');N 2t=K(\'.72\',\'.1W\').17(\'1k\');N 1V=K(\'1O\',\'.1W\').17(\'1k\');N 7E=K(\'#cJ\').17(\'1k\');N 6e=K(\'#6e\').17(\'1v\');3Z.1Q=K(\'#3i\').17(\'2e\')+\'cK.3l?6e=\'+6e+\'&7E=\'+7E+\'&aS=\'+29+\'&2W=\'+6n+\'&2n=\'+6o+\'&2t=\'+2t+\'&1V=\'+1V});9(K(\'.9U\')){K(\'.9U\').cL({cM:\'eo\',cN:\'cO\',cP:\'ej\',cR:\'cS\',cT:\'1r.cU\',cV:\'9l\',3w:0.5,4f:\'cX\',cY:I(){ay=K.eb(\'cZ\');T.1I(\'d0\').1K.1S=\'\';T.d1.d2.1k=ay.1N}})}K(\'31.5z:d3(.d4)\').d5();11=4y();2w(i=0;i<35;i++){9((T.1I(\'o\'+i))&&11.4k(i)==1){T.1I(\'o\'+i).1K.1S=\'2i\'}9(T.1I(\'b\'+i))T.1I(\'b\'+i).1F=(11.4k(i)==1)?\'at\':\'83\'}9(D.3Z.1Q.3P(\'#\')>0)D.3Z.1Q=D.3Z.1Q.5X(D.3Z.1Q.3P(\'#\'),D.3Z.1Q.1B)});I e1(9X){i=K(\'#d6\').11();w=K(\'#d8\').11();h=K(\'#d9\').11();c=K(\'#da\').11();l=K(\'#db\').11();bg=K(\'#dV\').11();f=K(\'#dU\').11();dd=K(\'#de\').11();dR=K(\'#df\').11();7J=K(\'#dg\').11();7K=K(\'#dh\').11();a1=K(\'#di\').11();a2=K(\'#dj\').11();c1=K(\'#dk\').11();c2=K(\'#dl\').11();ac=K(\'#dm\').11();1R=9X+"/K-a3.3l?do=0&c1="+c1+"&c2="+c2+"&ac="+ac+"&i="+i+"&w="+w+"&h="+h+"&c="+c+"&l="+l+"&f="+f+"&a1="+a1+"&a2="+a2+"&7J="+7J+"&7K="+7K+"&b="+bg+"&dt="+1q.34(1q.du()*dv);9(K(\'#7L\').1B>0)K(\'#7L\').17(\'4N\',1R);Q K(\'#dw\').2V(\'<6f 1e="7L" 14="a3" 4N="\'+1R+\'" dy=""/>\');K(\'#dz\').2x()}I 6h(){7H=K(D).2A().4M();9(7H.17(\'1e\')!=6M)7H.aF(K(D).2A());Z 18}I 6i(){7M=K(D).2A().6g();9(7M.17(\'1e\')!=6M)7M.dB(K(D).2A());Z 18}I dC(dE,32){N 29=\'\';K(\'.4H\',32).1u(I(){29=29+K(\'1p:1X > O\',D).1j()+\',\'});9(29==\'\')29=\'7N\';N 6n=K(\'.2W\',32).17(\'2u\');N 6o=K(\'.2W > O:1X\',32).17(\'14\');N 2t=K(\'.72\',\'.1W\').17(\'1k\');N 1V=K(\'1O\',\'.1W\').17(\'1k\');K(\'#6s\').4o(K(\'#3i\').17(\'2e\')+\'dF.3l\',{dG:29,2W:6n,2n:6o,2t:2t,1V:1V},I(){aa()})}I aa(){K(\'.dH\',\'#6s\').2k("1m",ak);K(\'.dI\',\'#6s\').2k("1m",ai);K(".2C").2C(K(\'#3i\').17(\'2e\')+\'dJ.3l\',{1x:\'31\',23:\'<6f 4N="\'+K(\'#3i\').17(\'2e\')+\'../U/7O/ag.ah">\',8N:\'<6f 4N="\'+K(\'#3i\').17(\'2e\')+\'../U/7O/8N.dL">\',3I:\'<6f 4N="\'+K(\'#3i\').17(\'2e\')+\'../U/7O/99.ah">\',1b:\'85%\',1a:60,80:K(\'#3i\').17(\'2e\')+\'dM.3l\',7F:\'bC\',6w:"dN"});3Z.1Q=\'#6s\'}I ai(){5k=D.1e.2K(7,D.1e.1B);K(\'#al\'+5k).7S(8j,I(){K(D).2f()});K.8T(K(\'#3i\').17(\'2e\')+\'dO.3l\',{1e:5k},I(){K(\'.4T\').3d(\'1m\')});Z 18}I ak(){5k=D.1e.2K(7,D.1e.1B);K(\'#al\'+5k).7S(8j,I(){K(D).2f()});Z 18}I dP(el){9(T.1I(el).1v==0)T.1I(el).1v=1;Q T.1I(el).1v=0};I dQ(2I,5j){9(T.3O[2I].7U.1k==0){T.3O[2I].7U.1k=1;T.3O[2I].an.1v=1;T.3O[2I].ao.1v=1;7V(2I,1,5j)}Q{T.3O[2I].7U.1k=0;T.3O[2I].an.1v=0;T.3O[2I].ao.1v=0;7V(2I,0,5j)}}I 7V(2I,11,5j){6v=T.3O[2I];ap=6v.7I.1B;N i=0;2w(i=0;i0)a=11.6c(0,el);Q a=\'\';9(el<11.1B)b=11.6c((el+1),11.1B);Q b=\'\';T.6B=c+a+x+b+";86="+66.87()+";"}I dY(el){N 11=4y();N c=\'6A=\';9(T.1I(\'b\'+el)&&T.1I(\'o\'+el)&&11.4k(el)==1){T.1I(\'b\'+el).1F=\'83\';T.1I(\'o\'+el).1K.1S=\'\'}9(el>0)a=11.6c(0,el);Q a=\'\';9(el<11.1B)b=11.6c((el+1),11.1B);Q b=\'\';T.6B=c+a+0+b+";86="+66.87()+";";Z 18}I e0(el){N 11=4y();9(11)Z 11.2K(el,1);Z 18}I 4y(){N 8a="6A=";N ca=T.6B.2B(\';\');2w(N i=0;i0)?z:e6,o=K(\'\').U({1a:\'1Z%\',1b:\'1Z%\',51:\'e8\',1M:0,1P:0,\'z-33\':z-1,3w:c.4b/1Z});9(h.a)Z F;h.t=t;h.a=1l;h.w.U(\'z-33\',z);9(c.4t){9(!A[0])L(\'2k\');A.bk(s)}Q 9(c.4b>0)h.w.63(o);Q o=F;h.o=(o)?o.1z(c.aA).e9(\'2l\'):F;9(6E){K(\'1j,2l\').U({1a:\'1Z%\',1b:\'1Z%\'});9(o){o=o.U({51:\'9a\'})[0];2w(N y 6X{ea:1,ec:1})o.1K.ed(y.68(),"(aH=(T.5x.5b"+y+" || T.2l.5b"+y+"))+\'2p\'")}}9(c.5V){N r=c.2Z||h.w,u=c.5V,r=(aT r==\'4u\')?K(r,h.w):K(r),u=(u.2K(0,1)==\'@\')?K(t).17(u.5X(1)):u;r.1j(c.aD).4o(u,I(){9(c.8h)c.8h.ef(D,h);9(cc)h.w.63(K(cc,h.w));e(h)})}Q 9(cc)h.w.63(K(cc,h.w));9(c.8k&&h.o)h.w.3W(\'<1r 1e="aG\'+h.w[0].3B+\'">\').aF(h.o);(c.3X)?c.3X(h):h.w.2x();e(h);Z F},6G:I(s){N h=H[s];9(!h.a)Z F;h.a=F;9(A[0]){A.eg();9(!A[0])L(\'4a\')}9(h.c.8k&&h.o)K(\'#aG\'+h.w[0].3B).3Y(h.w).2f();9(h.c.4d)h.c.4d(h);Q{h.w.1y();9(h.o)h.o.2f()}Z F},67:{}};N s=0,H=K.2Q.1N,A=[],6E=K.1C.2m&&(K.1C.3p=="6.0"),F=18,i=K(\'<8l 4N="3A:18;T.eh(\\\'\\\');" 14="2Q">\').U({3w:0}),e=I(h){9(6E)9(h.o)h.o.1j(\'

    \').2V(i);Q 9(!K(\'8l.2Q\',h.w)[0])h.w.2V(i);f(h)},f=I(h){aO{K(\':12:1T\',h.w)[0].4P()}aQ(aH){}},L=I(t){K()[t]("aI",m)[t]("65",m)[t]("3s",m)},m=I(e){N h=H[A[A.1B-1]],r=(!K(e.2Z).ek(\'.aK\'+h.s)[0]);9(r)f(h);Z!r},8o=I(w,t,c){Z w.1u(I(){N s=D.3B;K(t).1u(I(){9(!D[c]){D[c]=[];K(D).1m(I(){2w(N i 6X{8p:1,8q:1})2w(N s 6X D[i])9(H[D[i][s]])H[D[i][s]].w[i](D);Z F})}D[c].bk(s)})})}})(K);(I(K){K.2g.3z=I(h){Z i(D,h,\'d\')};K.2g.em=I(h){Z i(D,h,\'r\')};K.6L={aN:{},e:0,8v:I(v){9(M.k==\'d\')E.U({1M:M.X+v.2L-M.8t,1P:M.Y+v.3c-M.8u});Q E.U({1b:1q.3V(v.2L-M.8t+M.W,0),1a:1q.3V(v.3c-M.8u+M.H,0)});Z 18},3G:I(){E.U(\'3w\',M.o);K().4a(\'7R\',J.8v).4a(\'6u\',J.3G)}};N J=K.6L,M=J.aN,E=J.e,i=I(e,h,k){Z e.1u(I(){h=(h)?K(h,e):e;h.2k(\'3s\',{e:e,k:k},I(v){N d=v.1R,p={};E=d.e;9(E.U(\'51\')!=\'9r\'){aO{E.51(p)}aQ(e){}}M={X:p.1M||f(\'1M\')||0,Y:p.1P||f(\'1P\')||0,W:f(\'1b\')||E[0].en||0,H:f(\'1a\')||E[0].ep||0,8t:v.2L,8u:v.3c,k:d.k,o:E.U(\'3w\')};E.U({3w:0.8});K().7R(K.6L.8v).6u(K.6L.3G);Z 18})})},f=I(k){Z 1s(E.U(k))||18}})(70);I $cf(v){Z(T.1I(v))}I $2P(v){Z(T.1I(v).1K)}I 8R(e){N r={x:e.aC,y:e.3a};9(e.6D){N v=8R(e.6D);r.x+=v.x;r.y+=v.y}Z(r)}I 5B(v){Z(1q.3V(es.et.68().3P(v),0))}I ev(v){Z((aT(v)==\'6M\'||v.1B==0)?18:1l)}I 6m(i,t,2v){N v=$2P(i);v.1S=t?t:(v.1S==\'2i\'?\'3t\':\'2i\');9(2v){v.1M=2v[0];v.1P=2v[1]}}I 5M(e,v){9(5B(\'2m\')&&T.5x&&T.5x.8C){8G=T.5x.8C;8D=T.5x.2J}Q 9(5B(\'2m\')&&T.2l){8G=T.2l.8C;8D=T.2l.2J}9(5B(\'2m\')){N z=4S(3h.ex+8D-8,3h.ez+8G-15)}Q 9(5B(\'eA\')){N z=4S(e.2L+1,e.3c-4)}Q N z=4S(e.2L-13,e.3c-19);Z(v==3?z:z[aY(v)])}I aY(v){v=1s(v);Z(!2H(v)?v:0)}I bc(d){d.1K.9t=by++}N 3G=1;I 8O(W){N 3q=W/2,8J=(4m[0]/5Q)*(1q.b7*2), 8K=(4m[1]+(1Z-4m[2]))/1Z*(3q/2);$2P(\'6l\').1M=1q.34(1q.b0(1q.34(1q.eC(8J)*8K)+3q+3))+\'2p\';$2P(\'6l\').1P=1q.34(1q.b0(1q.34(1q.eE(8J)*8K)-3q-21))+\'2p\'}I eF(o,e,2v,z,8M){I 8W(a,b,e){4B=5M(e,3);b3([4B[0]+a,4B[1]+b])}I M(v,a,z){Z(1q.3V(!2H(z)?z:0,!2H(a)?1q.bp(a,v):v))}I b3(v){9(8M)8M(v);9(o==\'6l\'){N W=1s($2P(\'6R\').1b),3q=W/2,4F=3q/2;N x=v[0]-3q-3,y=W-v[1]-3q+15,5G=1q.eH(1q.b5(x,2)+1q.b5(y,2)),6O=1q.eI(x,y)/(1q.b7*2);4m=[6O>0?(6O*5Q):((6O*5Q)+5Q),5G<4F?(5G/4F)*1Z:1Z,5G>=4F?1q.3V(0,1-((5G-4F)/(3q-4F)))*1Z:1Z];$2P(\'eJ\'+92).eK=\'#\'+90(4m);8O(W);$cf(\'eL\'+92).1k=90(4m)}Q 9(o==\'bf\'){N b=1q.3V(1q.3V(v[0],v[1])+bi,75);8O(b);$2P(\'bb\').1a=(b+28)+\'2p\';$2P(\'bb\').1b=(b+20)+\'2p\';$2P(\'6R\').1a=b+\'2p\';$2P(\'6R\').1b=b+\'2p\'}Q{9(2v)v=[M(v[0],2v[0],2v[2]),M(v[1],2v[1],2v[3])];9(!2v||2v[0])d.1M=v[0]+\'2p\';9(!2v||2v[1])d.1P=v[1]+\'2p\'}}9(3G){3G=\'\';N d=$2P(o),4B=5M(e,3);9(!z)bc($cf(o));9(o==\'6l\'){N ab=8R($cf(o).5K);8W(-(ab[\'x\']-5),-(ab[\'y\']-28),e)}9(o==\'bf\'){N bi=1s($2P(\'6R\').1a),8X=-5M(e),8Y=-5M(e,1)}Q{N 8X=1s(d.1M)-4B[0],8Y=1s(d.1P)-4B[1]}T.bm=I(e){9(!3G)8W(8X,8Y-7,e)};T.bn=I(){3G=1;T.bm=\'\';T.bn=\'\'}}}I 6V(v){v=1q.34(1q.bp(1q.3V(0,v),58));Z("br".4k((v-v%16)/16)+"br".4k(v%16))}I bt(r){Z(6V(r[0])+6V(r[1])+6V(r[2]))}I 90(h){Z(bt(bv(h)))}I bv(r){N R,B,G,S=r[1]/1Z,V=r[2]/1Z,H=r[0]/5Q;9(S>0){9(H>=1)H=0;H=6*H;F=H-1q.5s(H);A=1q.34(58*V*(1.0-S));B=1q.34(58*V*(1.0-(S*F)));C=1q.34(58*V*(1.0-(S*(1.0-F))));V=1q.34(58*V);9O(1q.5s(H)){36 0:R=V;G=C;B=A;2S;36 1:R=B;G=V;B=A;2S;36 2:R=A;G=V;B=C;2S;36 3:R=A;G=B;B=V;2S;36 4:R=C;G=A;B=V;2S;36 5:R=V;G=A;B=B;2S}Z([R?R:0,G?G:0,B?B:0])}Q Z([(V=1q.34(V*58)),V,V])}N by=eT,4m=[0,0,1Z],92=1;(I($){$.8x=I(t,p){9(t.32)Z 18;p=$.3b({1a:eV,1b:\'2b\',6K:1l,7G:18,9d:30,7d:1Z,5z:1l,47:18,93:\'bC\',41:\'6J\',9s:\'eW eX\',8H:18,9T:1l,2o:1,2M:1,ba:1l,3C:15,5I:[10,15,20,25,40],2e:18,9E:\'bF {9F} 5W {5W} bG {2M} 95\',9G:\'bH, bI bK ...\',2t:\'\',1V:\'\',9u:\'bL 95\',6C:1,a8:1l,7w:1l,aJ:1l,bM:0.5,7g:18,7p:18,7m:18,7Z:18},p);$(t).2x().17({a5:0,a6:0,bN:0}).6Z(\'1b\');N g={2X:{},48:I(){N 4r=0-D.1g.2J;9(D.1g.2J>0)4r-=1q.5s(p.5L/2);$(g.2j).U({1P:g.1g.3a+1});N 2D=D.2D;$(\'O\',g.2j).1y();$(\'24 1i:1X 1t:1T\',D.1g).1u(I(){N n=$(\'24 1i:1X 1t:1T\',g.1g).33(D);N 4s=1s($(\'O\',D).1b());N bQ=4s;9(4r==0)4r-=1q.5s(p.5L/2);4s=4s+4r+2D;$(\'O:eq(\'+n+\')\',g.2j).U({\'1M\':4s+\'2p\'}).2x();4r=4s})},5o:I(2R){9(!2R)2R=$(g.1A).1a();N 96=$(D.1g).1a();$(\'O\',D.2j).1u(I(){$(D).1a(2R+96)});$(g.3t).U({1a:2R,7r:(2R*-1)});N 78=g.1A.3a+2R;9(p.1a!=\'2b\'&&p.5z)78=g.5y.3a;$(g.53).U({1a:78})},5w:I(5Y,e,1J){9(5Y==\'2c\'){$(g.1D).1y();$(g.2q).1y();N n=$(\'O\',D.2j).33(1J);N 61=$(\'1t:1T O:eq(\'+n+\')\',D.1g).1b();$(1J).1z(\'4W\').7o().1y();$(1J).4M().1z(\'4W\').2x();D.2c={9b:e.2L,9c:1s(1J.1K.1M),61:61,n:n};$(\'2l\').U(\'4z\',\'4p-79\')}Q 9(5Y==\'3Q\'){N 4v=18;$(\'2l\').U(\'4z\',\'3y-79\');9(1J){4v=1l;$(\'2l\').U(\'4z\',\'4p-79\')}D.3Q={h:p.1a,9f:e.3c,w:p.1b,9h:e.2L,4v:4v}}Q 9(5Y==\'aj\'){$(g.1D).1y();$(g.2q).1y();D.2X=$(D.1g).bR();D.2X.9j=D.2X.1M+$(\'4I\',D.1g).1b();D.2X.9k=D.2X.1P+$(\'4I\',D.1g).1a();D.5R=1J;D.4A=$(\'1t\',D.1g).33(1J);D.26=T.1w("O");D.26.1F="26";D.26.1Y=1J.1Y;9($.1C.2m){D.26.1F="26 aq"}$(D.26).U({51:\'9a\',bS:\'1M\',1S:\'2i\',7P:1J.37});$(\'2l\').1o(D.26);$(D.2j).1y()}$(\'2l\').4J()},am:I(e){9(D.2c){N n=D.2c.n;N 5e=e.2L-D.2c.9b;N 9e=D.2c.9c+5e;N 3f=D.2c.61+5e;9(3f>p.9d){$(\'O:eq(\'+n+\')\',D.2j).U(\'1M\',9e);D.2c.3f=3f}}Q 9(D.3Q){N v=D.3Q;N y=e.3c;N 5e=y-v.9f;9(!p.7c)p.7c=p.1b;9(p.1b!=\'2b\'&&!p.bY&&v.4v){N x=e.2L;N 9i=x-v.9h;N 64=v.w+9i;9(64>p.7c){D.1E.1K.1b=64+\'2p\';p.1b=64}}N 2R=v.h+5e;9((2R>p.7d||p.1aD.2X.9j||e.2LD.2X.9k||e.3cD.3U)$(\'1t:eq(\'+D.3U+\')\',D.1g).3W(D.5R);Q $(\'1t:eq(\'+D.3U+\')\',D.1g).3Y(D.5R);D.9q(D.4A,D.3U);$(D.4R).2f();$(D.4w).2f();D.48()}D.5R=1n;D.2X=1n;D.4A=1n;D.3U=1n;D.26=1n;$(\'.6t\',D.1g).1U(\'6t\');$(D.2j).2x()}$(\'2l\').U(\'4z\',\'ck\');$(\'2l\').4J(18)},8I:I(4V,1T){N 4g=$("1t[4f=\'4p"+4V+"\']",D.1g)[0];N n=$(\'24 1t\',g.1g).33(4g);N cb=$(\'12[1k=\'+4V+\']\',g.1D)[0];9(1T==1n){1T=4g.1y}9($(\'12:1v\',g.1D).1B3N)$(\'1p:eq(\'+3N+\')\',D).3W($(\'1p:eq(\'+44+\')\',D));Q $(\'1p:eq(\'+3N+\')\',D).3Y($(\'1p:eq(\'+44+\')\',D))});9(44>3N)$(\'1i:eq(\'+3N+\')\',D.1D).3W($(\'1i:eq(\'+44+\')\',D.1D));Q $(\'1i:eq(\'+3N+\')\',D.1D).3Y($(\'1i:eq(\'+44+\')\',D.1D));9($.1C.2m&&$.1C.3p<7.0)$(\'1i:eq(\'+3N+\') 12\',D.1D)[0].1v=1l;D.1g.2J=D.1A.2J},5b:I(){D.1g.2J=D.1A.2J;D.48()},9K:I(1R){$(\'.4T\',D.1L).1U(\'4n\');D.4n=18;9(!1R){$(\'.5E\',D.1L).1j(p.9s);Z 18}9(p.41==\'6J\')p.2M=+$(\'4h 2M\',1R).2h();Q p.2M=1R.2M;9(p.2M==0){$(\'1i\',t).4a();$(t).6T();p.3g=1;p.2o=1;D.7q();$(\'.5E\',D.1L).1j(p.9u);Z 18}p.3g=1q.co(p.2M/p.3C);9(p.41==\'6J\')p.2o=+$(\'4h 2o\',1R).2h();Q p.2o=1R.2o;D.7q();N 2s=T.1w(\'2s\');9(p.41==\'56\'){$.1u(1R.4h,I(i,3y){N 1i=T.1w(\'1i\');9(i%2&&p.6K)1i.1F=\'8y\';9(3y.1e)1i.1e=\'3y\'+3y.1e;$(\'24 1i:1X 1t\',g.1g).1u(I(){N 1p=T.1w(\'1p\');N 3J=$(D).17(\'4f\').2K(3);1p.37=D.37;1p.1Y=3y.5A[3J];$(1i).1o(1p);1p=1n});9($(\'24\',D.1E).1B<1){2w(3J=0;3J<5A.1B;3J++){N 1p=T.1w(\'1p\');1p.1Y=3y.5A[3J];$(1i).1o(1p);1p=1n}}$(2s).1o(1i);1i=1n})}Q 9(p.41==\'6J\'){i=1;$("4h 3y",1R).1u(I(){i++;N 1i=T.1w(\'1i\');9(i%2&&p.6K)1i.1F=\'8y\';N 6S=$(D).17(\'1e\');9(6S)1i.1e=\'3y\'+6S;6S=1n;N 7l=D;$(\'24 1i:1X 1t\',g.1g).1u(I(){N 1p=T.1w(\'1p\');N 3J=$(D).17(\'4f\').2K(3);1p.37=D.37;1p.1Y=$("5A:eq("+3J+")",7l).2h();$(1i).1o(1p);1p=1n});9($(\'24\',D.1E).1B<1){$(\'5A\',D).1u(I(){N 1p=T.1w(\'1p\');1p.1Y=$(D).2h();$(1i).1o(1p);1p=1n})}$(2s).1o(1i);1i=1n;7l=1n})}$(\'1i\',t).4a();$(t).6T();$(t).1o(2s);D.8f();D.8g();D.5o($(D.1A).1a());D.48();2s=1n;1R=1n;i=1n;9(p.7m)p.7m();9(p.7w)$(g.3t).2f();D.1g.2J=D.1A.2J;9($.1C.6U)$(t).U(\'6P\',\'1T\')},ad:I(1t){9(D.4n)Z 1l;$(g.1D).1y();$(g.2q).1y();9(p.2N==$(1t).17(\'2u\')){9(p.2n==\'4x\')p.2n=\'89\';Q p.2n=\'4x\'}$(1t).1z(\'2W\').7o().1U(\'2W\');$(\'.9C\',D.1g).1U(\'9C\');$(\'.9D\',D.1g).1U(\'9D\');$(\'O\',1t).1z(\'s\'+p.2n);p.2N=$(1t).17(\'2u\');9(p.7p)p.7p(p.2N,p.2n);Q D.3R()},7q:I(){$(\'.4X 12\').11(p.2o);$(\'.4X 1r\').1j(p.3g);N 7s=(p.2o-1)*p.3C+1;N 6b=7s+p.3C-1;9(p.2M<6b)6b=p.2M;N 3r=p.9E;3r=3r.3e(/{9F}/,7s);3r=3r.3e(/{5W}/,6b);3r=3r.3e(/{2M}/,p.2M);$(\'.5E\',D.1L).1j(3r)},3R:I(){9(D.4n)Z 1l;9(p.7Z){N 4q=p.7Z();9(!4q)Z 18}D.4n=1l;9(!p.47)Z 18;$(\'.5E\',D.1L).1j(p.9G);$(\'.4T\',D.1L).1z(\'4n\');$(g.3t).U({1P:g.1A.3a});9(p.7w)$(D.1E).2V(g.3t);9($.1C.6U)$(t).U(\'6P\',\'7b\');9(!p.2E)p.2E=1;9(p.2o>p.3g)p.2o=p.3g;N 7z={2o:p.2E,3C:p.3C,2N:p.2N,2n:p.2n,2t:p.2t,1V:p.1V};9(p.67){N 7x={};$.1u(p.67,I(){7x[D.1h]=D.1k});$.3b(7z,7x)}$.5V({1x:p.93,47:p.47,1R:7z,41:p.41,a0:I(1R){g.9K(1R)}})},76:I(){p.2t=$(\'12[1h=q]\',g.1W).11();p.1V=$(\'1O[1h=1V]\',g.1W).11();p.2E=1;D.3R()},4G:I(9P){9(D.4n)Z 1l;9O(9P){36\'1X\':p.2E=1;2S;36\'4M\':9(p.2o>1)p.2E=p.2o-1;2S;36\'6g\':9(p.2op.3g)2Y=p.3g;$(\'.4X 12\').11(2Y);p.2E=2Y;2S}9(p.2E==p.2o)Z 18;9(p.aX)p.aX(p.2E);Q D.3R()},8f:I(){$(\'2s 1i 1p\',g.1A).1u(I(){N 4Y=T.1w(\'O\');N n=$(\'1p\',$(D).2A()).33(D);N 3m=$(\'1t:eq(\'+n+\')\',g.1g).8i(0);9(3m!=1n){9(p.2N==$(3m).17(\'2u\')&&p.2N){D.1F=\'2W\'}$(4Y).U({7P:3m.37,1b:$(\'O:1X\',3m)[0].1K.1b});9(3m.1y)$(D).U(\'1S\',\'2i\')}9(p.9T==18)$(4Y).U(\'9o-cF\',\'cH\');9(D.1Y==\'\')D.1Y=\'&5T;\';4Y.1Y=D.1Y;N 7D=$(D).2A()[0];N 8A=18;9(7D.1e)8A=7D.1e.2K(3);9(3m!=1n){9(3m.5n)3m.5n(4Y,8A)}$(D).6T().1o(4Y).6Z(\'1b\')})},cQ:I(1J){N 8m=1s($(1J).1a());N 88=1s($(1J).2A().1a());N 8c=1s(1J.1K.1b);N 7X=1s($(1J).2A().1b());N 1P=1J.6D.3a;N 1M=1J.6D.aC;N 8e=1s($(1J).U(\'4L\'));N 8b=1s($(1J).U(\'cW\'));Z{8m:8m,8c:8c,1P:1P,1M:1M,8e:8e,8b:8b,88:88,7X:7X}},8g:I(){$(\'2s 1i\',g.1A).1u(I(){$(D).1m(I(e){N 1J=(e.2Z||e.a9);9(1J.1Q||1J.1x)Z 1l;$(D).5d(\'4H\')}).3s(I(e){9(e.d7){$(D).5d(\'4H\');g.52=1l;D.4P();$(g.1E).4J()}}).6u(I(){9(g.52){g.52=18;$(g.1E).4J(18)}}).2U(I(e){9(g.52){$(D).5d(\'4H\')}},I(){});9($.1C.2m&&$.1C.3p<7.0){$(D).2U(I(){$(D).1z(\'9W\')},I(){$(D).1U(\'9W\')})}})},dc:0};9(p.7Q){24=T.1w(\'24\');1i=T.1w(\'1i\');N z=p.7Q.1B;2w(j=0;j<1r>"+3L.1h+"";9(3L.9Z)$(\'1r\',3o).1z(3L.9Z).U({4L:20});3o.6k=3L.6k;3o.1h=3L.1h;9(3L.6k){$(3o).1m(I(){D.6k(D.1h,g.1E)})}$(4E).1o(3o);9($.1C.2m&&$.1C.3p<7.0){$(3o).2U(I(){$(D).1z(\'a4\')},I(){$(D).1U(\'a4\')})}}Q{$(4E).1o("")}}$(g.4c).1o(4E);$(g.4c).1o("");$(g.1E).2V(g.4c)}g.1g.1F=\'1g\';$(t).3W(g.1g);g.5m.a5=0;g.5m.a6=0;$(g.1g).1o(\'\');$(\'O\',g.1g).1o(g.5m);N 24=$("24:1X",t).8i(0);9(24)$(g.5m).1o(24);24=1n;9(!p.af)N ci=0;$(\'24 1i:1X 1t\',g.1g).1u(I(){N 5O=T.1w(\'O\');9($(D).17(\'2u\')){$(D).1m(I(e){9(!$(D).84(\'6z\'))Z 18;N 1J=(e.2Z||e.a9);9(1J.1Q||1J.1x)Z 1l;g.ad(D)});9($(D).17(\'2u\')==p.2N){D.1F=\'2W\';5O.1F=\'s\'+p.2n}}9(D.1y)$(D).1y();9(!p.af){$(D).17(\'4f\',\'4p\'+ci++)}$(5O).U({7P:D.37,1b:D.1b+\'2p\'});5O.1Y=D.1Y;$(D).6T().1o(5O).6Z(\'1b\').3s(I(e){g.5w(\'aj\',e,D)}).2U(I(){9(!g.2c&&!$(D).84(\'6t\')&&!g.26)$(D).1z(\'6z\');9($(D).17(\'2u\')!=p.2N&&!g.26&&!g.2c&&$(D).17(\'2u\'))$(\'O\',D).1z(\'s\'+p.2n);Q 9($(D).17(\'2u\')==p.2N&&!g.26&&!g.2c&&$(D).17(\'2u\')){N 3E=\'\';9(p.2n==\'4x\')3E=\'89\';Q 3E=\'4x\';$(\'O\',D).1U(\'s\'+p.2n).1z(\'s\'+3E)}9(g.26){N n=$(\'1t\',g.1g).33(D);9(n==g.4A)Z 18;9(n$(g.1E).1b())$(g.1D).U(\'1M\',81-82+1);Q $(g.1D).U(\'1M\',6x);9($(D).84(\'2W\'))$(g.2q).1z(\'au\');Q $(g.2q).1U(\'au\')}},I(){$(D).1U(\'6z\');9($(D).17(\'2u\')!=p.2N)$(\'O\',D).1U(\'s\'+p.2n);Q 9($(D).17(\'2u\')==p.2N){N 3E=\'\';9(p.2n==\'4x\')3E=\'89\';Q 3E=\'4x\';$(\'O\',D).1z(\'s\'+p.2n).1U(\'s\'+3E)}9(g.26){$(g.4R).2f();$(g.4w).2f();g.3U=1n}})});g.1A.1F=\'1A\';$(t).3W(g.1A);$(g.1A).U({1a:(p.1a==\'2b\')?\'2b\':p.1a+"2p"}).5b(I(e){g.5b()}).1o(t);9(p.1a==\'2b\'){$(\'4I\',g.1A).1z(\'ee\')}g.8f();g.8g();N 2d=$(\'24 1i:1X 1t:1X\',g.1g).8i(0);9(2d!=1n){g.2j.1F=\'2j\';g.2D=0;g.2D+=(2H(1s($(\'O\',2d).U(\'59\')))?0:1s($(\'O\',2d).U(\'59\')));g.2D+=(2H(1s($(\'O\',2d).U(\'6F\')))?0:1s($(\'O\',2d).U(\'6F\')));g.2D+=(2H(1s($(\'O\',2d).U(\'4L\')))?0:1s($(\'O\',2d).U(\'4L\')));g.2D+=(2H(1s($(\'O\',2d).U(\'6H\')))?0:1s($(\'O\',2d).U(\'6H\')));g.2D+=(2H(1s($(2d).U(\'59\')))?0:1s($(2d).U(\'59\')));g.2D+=(2H(1s($(2d).U(\'6F\')))?0:1s($(2d).U(\'6F\')));g.2D+=(2H(1s($(2d).U(\'4L\')))?0:1s($(2d).U(\'4L\')));g.2D+=(2H(1s($(2d).U(\'6H\')))?0:1s($(2d).U(\'6H\')));$(g.1A).3W(g.2j);N aM=$(g.1A).1a();N 8Z=$(g.1g).1a();$(g.2j).U({1P:-8Z+\'2p\'});$(\'24 1i:1X 1t\',g.1g).1u(I(){N 5H=T.1w(\'O\');$(g.2j).1o(5H);9(!p.5L)p.5L=$(5H).1b();$(5H).U({1a:aM+8Z}).3s(I(e){g.5w(\'2c\',e,D)});9($.1C.2m&&$.1C.3p<7.0){g.5o($(g.1E).1a());$(5H).2U(I(){g.5o();$(D).1z(\'4W\')},I(){9(!g.2c)$(D).1U(\'4W\')})}});g.48()}9(p.6K)$(\'2s 1i:er\',g.1A).1z(\'8y\');9(p.5z&&p.1a!=\'2b\'){g.5y.1F=\'az\';$(g.5y).3s(I(e){g.5w(\'3Q\',e)}).1j(\'<1r>\');$(g.1A).3Y(g.5y)}9(p.5z&&p.1b!=\'2b\'){g.53.1F=\'ew\';$(g.53).3s(I(e){g.5w(\'3Q\',e,1l)}).1j(\'<1r>\').U(\'1a\',$(g.1E).1a());9($.1C.2m&&$.1C.3p<7.0){$(g.53).2U(I(){$(D).1z(\'aV\')},I(){$(D).1U(\'aV\')})}$(g.1E).1o(g.53)}9(p.8H){g.1L.1F=\'1L\';g.1L.1Y=\'\';$(g.1A).3Y(g.1L);N 5C=p.5C;5C=5C.3e(/{%1}/,\'<12 1x="2h" bA="4" 1k="1" />\');N 1j=\' <1r><1r> <1r 14="4X">\'+5C+\' <1r> 1 <1r><1r> <1r> <1r 14="5E">\';$(\'O\',g.1L).1j(1j);$(\'.4T\',g.1L).1m(I(){g.3R()});$(\'.b1\',g.1L).1m(I(){g.4G(\'1X\')});$(\'.b2\',g.1L).1m(I(){g.4G(\'4M\')});$(\'.b4\',g.1L).1m(I(){g.4G(\'6g\')});$(\'.b6\',g.1L).1m(I(){g.4G(\'b8\')});$(\'.4X 12\',g.1L).65(I(e){9(e.8d==13)g.4G(\'12\')});9($.1C.2m&&$.1C.3p<7)$(\'.4i\',g.1L).2U(I(){$(D).1z(\'b9\')},I(){$(D).1U(\'b9\')});9(p.ba){N 8S="";N z=p.5I.1B;2w(j=0;j"+p.5I[6Q]+"&5T;&5T;"};$(\'.8V\',g.1L).2V("<1O 1h=\'3C\'>"+8S+" ");$(\'1O\',g.1L).bd(I(){9(p.be)p.be(+D.1k);Q{p.2E=1;p.3C=+D.1k;g.3R()}})}9(p.bw){$(\'.8V\',g.1L).2V(" <1r> ");$(\'.bq\',g.eM).1m(I(){$(g.1W).eN(\'eO\',I(){$(\'.1W:1T 12:1X\',g.1E).3d(\'4P\')})});g.1W.1F=\'1W\';4l=p.bw;N 73="";2w(N s=0;s<4l.1B;s++){9(p.1V==\'\'&&4l[s].eQ==1l){p.1V=4l[s].1h;57=\'3T="3T"\'}Q 57=\'\';73+="<4e 1k=\'"+4l[s].1h+"\' "+57+" >"+4l[s].1S+"&5T;&5T;"}9(p.1V==\'\')p.1V=4l[0].1h;$(g.1W).1o("eS eU <12 1x=\'2h\' bA=\'30\' 1h=\'q\' 14=\'72\' /> <1O 1h=\'1V\'>"+73+" <12 1x=\'7t\' 1k=\'94\' />");$(\'12[1h=q],1O[1h=1V]\',g.1W).65(I(e){9(e.8d==13)g.76()});$(\'12[1k=94]\',g.1W).1m(I(){$(\'12[1h=q]\',g.1W).11(\'\');p.2t=\'\';g.76()});$(g.1A).3Y(g.1W)}}$(g.1L,g.1W).1o("");9(p.2e){g.3S.1F=\'3S\';g.3S.1Y=\'\'+p.2e+\'\';$(g.1E).2V(g.3S);9(p.bU){$(g.3S).1o(\'<1r>\');$(\'O.9g\',g.3S).1m(I(){$(g.1E).5d(\'c0\');$(D).5d(\'c3\')})}}g.4R=T.1w(\'1r\');g.4R.1F=\'4R\';g.4w=T.1w(\'1r\');g.4w.1F=\'4w\';g.3t.1F=\'c7\';N 4q=$(g.1A).1a();N 7v=g.1A.3a;$(g.3t).U({1b:g.1A.1K.1b,1a:4q,cj:\'9o\',51:\'9r\',7r:(4q*-1),9t:cp,1P:7v,1M:\'cq\'});9($(\'1t\',g.1g).1B){g.1D.1F=\'1D\';g.1D.1Y="<4I cr=\'0\' cs=\'0\'><2s>";$(g.1D).U({7r:(4q*-1),1S:\'2i\',1P:7v}).4J();N cn=0;$(\'1t O\',g.1g).1u(I(){N 9L=$("1t[4f=\'4p"+cn+"\']",g.1g)[0];N 3v=\'1v="1v"\';9(9L.1K.1S==\'2i\')3v=\'\';$(\'2s\',g.1D).1o(\'<1i><1p 14="cz"><12 1x="2T" \'+3v+\' 14="9V" 1k="\'+cn+\'" /><1p 14="aB">\'+D.1Y+\'\');cn++});9($.1C.2m&&$.1C.3p<7.0)$(\'1i\',g.1D).2U(I(){$(D).1z(\'aR\')},I(){$(D).1U(\'aR\')});$(\'1p.aB\',g.1D).1m(I(){9($(\'12:1v\',g.1D).1B<=p.6C&&$(D).4M().av(\'12\')[0].1v)Z 18;Z g.8I($(D).4M().av(\'12\').11())});$(\'12.9V\',g.1D).1m(I(){9($(\'12:1v\',g.1D).1B\').17(\'2e\',\'dr/ds dx\').U(\'1P\',g.1g.3a).1m(I(){$(g.1D).6m();Z 1l});9(p.a8)$(g.1E).2V(g.2q)}$(g.6q).1z(\'6q\').U({1S:\'2i\'});$(g.1A).1o(g.6q);$(g.1A).2U(I(){$(g.1D).1y();$(g.2q).1y()},I(){9(g.52)g.52=18});$(g.1E).2U(I(){},I(){$(g.1D).1y();$(g.2q).1y()});$(T).7R(I(e){g.am(e)}).6u(I(e){g.7C()}).2U(I(){},I(){g.7C()});9($.1C.2m&&$.1C.3p<7.0){$(\'.1g,.1A,.3S,.1L,.az,.4c, .1W\',g.1E).U({1b:\'1Z%\'});$(g.1E).1z(\'6E\');9(p.1b!=\'2b\')$(g.1E).1z(\'ei\')}t.p=p;t.32=g;9(p.47&&p.aJ){g.3R()}Z t};N 8r=18;$(T).8w(I(){8r=1l});$.2g.aL=I(p){Z D.1u(I(){9(!8r){$(D).1y();N t=D;$(T).8w(I(){$.8x(t,p)})}Q{$.8x(D,p)}})};$.2g.eu=I(p){Z D.1u(I(){9(D.32&&D.p.47)D.32.3R()})};$.2g.ey=I(p){Z D.1u(I(){9(D.32)$.3b(D.p,p)})};$.2g.eB=I(4V,1T){Z D.1u(I(){9(D.32)D.32.8I(4V,1T)})};$.2g.4J=I(p){9(p==1n)8P=1l;Q 8P=p;9(8P){Z D.1u(I(){9($.1C.2m||$.1C.bh)$(D).2k(\'bj\',I(){Z 18});Q 9($.1C.bl){$(D).U(\'bo\',\'2i\');$(\'2l\').3d(\'4P\')}Q 9($.1C.6U)$(D).2k(\'3s\',I(){Z 18});Q $(D).17(\'bx\',\'bB\')})}Q{Z D.1u(I(){9($.1C.2m||$.1C.bh)$(D).4a(\'bj\');Q 9($.1C.bl)$(D).U(\'bo\',\'7u\');Q 9($.1C.6U)$(D).4a(\'3s\');Q $(D).6Z(\'bx\',\'bB\')})}}})(70);(I($){$.2g.2C=I(2Z,7a){N P={2Z:2Z,1h:\'1k\',1e:\'1e\',1x:\'2h\',1b:\'2b\',1a:\'2b\',3h:\'1m\',5S:\'2F\',7F:\'bE\',aU:\'bJ...\',3I:\'bO 5W 99\',3u:{},39:{}};9(7a){$.3b(P,7a)}N 7T=$.2C.38[P.1x].7T||I(){};N 23=$.2C.38[P.1x].23||I(){};N 3D=$.2C.38[P.1x].3D||$.2C.38[\'5Z\'].3D;N 1f=$.2C.38[P.1x].1f||$.2C.38[\'5Z\'].1f;N 3M=$.2C.38[P.1x].3M||$.2C.38[\'5Z\'].3M;N 6Y=P.6Y||I(){};9(!$.4U($(D)[P.3h])){$.2g[P.3h]=I(2g){Z 2g?D.2k(P.3h,2g):D.3d(P.3h)}}$(D).17(\'2e\',P.c4);P.9n=\'2b\'==P.1b;P.9p=\'2b\'==P.1a;Z D.1u(I(){9(!$.5p($(D).1j())){$(D).1j(P.3I)}$(D)[P.3h](I(e){N 1d=D;9(1d.4O){Z}$(1d).U(\'6P\',\'7b\');9(P.1b!=\'2i\'){P.1b=P.9n?$(1d).1b():P.1b}9(P.1a!=\'2i\'){P.1a=P.9p?$(1d).1a():P.1a}$(D).U(\'6P\',\'\');9($(D).1j().68().3e(/;/,\'\')==P.3I.68().3e(/;/,\'\')){$(D).1j(\'\')}1d.4O=1l;1d.3H=$(1d).1j();$(1d).1j(\'\');N 1H=$(\'<1H/>\');9(P.6w){9(\'7u\'==P.6w){1H.17(\'14\',$(1d).17(\'14\'))}Q{1H.17(\'14\',P.6w)}}9(P.1K){9(\'7u\'==P.1K){1H.17(\'1K\',$(1d).17(\'1K\'));1H.U(\'1S\',$(1d).U(\'1S\'))}Q{1H.17(\'1K\',P.1K)}}N 12=3M.2z(1H,[P,1d]);N 4C;9(P.80){N t=aE(I(){12.ae=1l;1f.2z(1H,[P.aU,P,1d])},1Z);N 3u={};3u[P.1e]=1d.1e;9($.4U(P.3u)){$.3b(3u,P.3u.2z(1d,[1d.3H,P]))}Q{$.3b(3u,P.3u)}$.5V({1x:P.7F,47:P.80,1R:3u,dn:18,a0:I(a7){dA.aP(t);4C=a7;12.ae=18}})}Q 9(P.1R){4C=P.1R;9($.4U(P.1R)){4C=P.1R.2z(1d,[1d.3H,P])}}Q{4C=1d.3H}1f.2z(1H,[4C,P,1d]);12.17(\'1h\',P.1h);3D.2z(1H,[P,1d]);7T.2z(1H,[P,1d]);$(1d).1o(1H);$(\':12:1T:dW:1X\',1H).4P();9(P.1O){12.1O()}12.65(I(e){9(e.8d==27){e.aW();74()}});N t;9(\'2F\'==P.5S){12.6I(I(e){t=aE(74,8j)})}Q 9(\'23\'==P.5S){12.6I(I(e){1H.23()})}Q 9($.4U(P.5S)){12.6I(I(e){P.5S.2z(1d,[12.11(),P])})}Q{12.6I(I(e){})}1H.23(I(e){9(t){aP(t)}e.aW();23.2z(1H,[P,1d]);9($.4U(P.2Z)){N 6W=P.2Z.2z(1d,[12.11(),P]);$(1d).1j(6W);1d.4O=18;6Y.2z(1d,[1d.1Y,P]);9(!$.5p($(1d).1j())){$(1d).1j(P.3I)}}Q{N 39={};39[P.1h]=12.11();39[P.1e]=1d.1e;9($.4U(P.39)){$.3b(39,P.39.2z(1d,[1d.3H,P]))}Q{$.3b(39,P.39)}$(1d).1j(P.8N);$.8T(P.2Z,39,I(6W){$(1d).1j(6W);1d.4O=18;6Y.2z(1d,[1d.1Y,P]);9(!$.5p($(1d).1j())){$(1d).1j(P.3I)}})}Z 18});I 74(){$(1d).1j(1d.3H);1d.4O=18;9(!$.5p($(1d).1j())){$(1d).1j(P.3I)}}})})};$.2C={38:{5Z:{3M:I(P,2y){N 12=$(\'<12 1x="7b">\');$(D).1o(12);Z(12)},1f:I(4u,P,2y){$(\':12:1X\',D).11(4u)},3D:I(P,2y){N 1H=D;9(P.23){9(P.23.5u(/>$/)){N 23=$(P.23).1m(I(){1H.23()})}Q{N 23=$(\'<7t 1x="23">\');23.1j(P.23)}$(D).1o(23)}9(P.2F){9(P.2F.5u(/>$/)){N 2F=$(P.2F)}Q{N 2F=$(\'<7t 1x="2F">\');2F.1j(P.2F)}$(D).1o(2F);$(2F).1m(I(3h){$(2y).1j(2y.3H);2y.4O=18;9(!$.5p($(2y).1j())){$(2y).1j(P.3I)}Z 18})}}},2h:{3M:I(P,2y){N 12=$(\'<12>\');9(P.1b!=\'2i\'){12.1b(P.1b)}9(P.1a!=\'2i\'){12.1a(P.1a)}12.17(\'dZ\',\'e7\');$(D).1o(12);Z(12)}},31:{3M:I(P,2y){N 31=$(\'<31>\');9(P.4h){31.17(\'4h\',P.4h)}Q{31.1a(P.1a)}9(P.8s){31.17(\'8s\',P.8s)}Q{31.1b(P.1b)}$(D).1o(31);Z(31)}},1O:{3M:I(P,2y){N 1O=$(\'<1O>\');$(D).1o(1O);Z(1O)},1f:I(4u,P,2y){9(bP==4u.bX){c5(\'N 56 = \'+4u);2w(N 5l 6X 56){9(!56.cG(5l)){9Y}9(\'3T\'==5l){9Y}N 4e=$(\'<4e>\').11(5l).1o(56[5l]);$(\'1O\',D).1o(4e)}}$(\'1O\',D).eG().1u(I(){9($(D).11()==56[\'3T\']||$(D).2h()==2y.3H){$(D).17(\'3T\',\'3T\')}})}}},c8:I(1h,12){$.2C.38[1h]=12}}})(70);',62,928,'|||||||||if||||||||||||||||||||||||||||||this|||||function||cforms|||var|div|settings|else|||document|css|||||return||val|input||class|||attr|false||height|width|groupcount|self|id|content|hDiv|name|tr|html|value|true|click|null|append|td|Math|span|parseInt|th|each|checked|createElement|type|hide|addClass|bDiv|length|browser|nDiv|gDiv|className|line|form|getElementById|obj|style|pDiv|left|hash|select|top|href|data|display|visible|removeClass|qtype|sDiv|first|innerHTML|100|||textfield|submit|thead||colCopy|||getString|tmp|auto|colresize|cdcol|title|remove|fn|text|none|cDrag|bind|body|msie|sortorder|page|px|nBtn|totalcount|tbody|query|abbr|xy|for|show|original|apply|parent|split|editable|cdpad|newp|cancel|cf_edit_groups|isNaN|formno|scrollLeft|substr|pageX|total|sortname|defval|cfS|jqm|newH|break|checkbox|hover|prepend|sorted|hset|nv|target||textarea|grid|index|round||case|align|types|submitdata|offsetTop|extend|pageY|trigger|replace|nw|pages|event|geturl|cf_edit_group_new|cf_edit_group_chked|php|pth|cf_edit_group_v|btnDiv|version|W2|stat|mousedown|block|loaddata|chk|opacity|cf_edit_group_o|row|jqDrag|javascript|_jqm|rp|buttons|no|edit_group|stop|revert|placeholder|idx|void|btn|element|cdrop|forms|indexOf|vresize|populate|mDiv|selected|dcolt|max|before|onShow|after|location||dataType|cf_edit_move_up|cf_edit_move_down|cdrag|pGroup|lbr|url|rePosDrag|set|unbind|overlay|tDiv|onHide|option|axis|ncol|rows|pButton|btnseparator|charAt|sitems|hsv|loading|load|col|gh|cdleft|cdpos|modal|string|hgo|cdropright|asc|readcookie|cursor|dcoln|eZ|input_content|allchk|tDiv2|W3|changePage|trSelected|table|noSelect|rgi_|paddingLeft|prev|src|editing|focus|l_title|cdropleft|Array|pReload|isFunction|cid|dragging|pcontrol|tdDiv|temp_v||position|multisel|rDiv|l_cerr|cf_edit_minus|json|sel|255|borderLeftWidth|cf_edit_group_br|scroll|new|toggleClass|diff|l_regexp|temp_o|temp_chk|cf_ed_main|chkName|eid|key|hTable|process|fixHeight|trim|domEle|l_right|floor|cf_edit_label|match|l_style|dragStart|documentElement|vDiv|resizable|cell|agent|pageof|l_chkstate|pPageStat|ajaxloaded|SV|cgDiv|rpOptions|l_default|parentNode|cgwidth|XY|l_css|thdiv|hasht|360|dcol|onblur|nbsp|temp_br|ajax|to|substring|dragtype|defaults||ow|open|jqmAddClose|newW|keydown|timeout|params|toLowerCase|cf_edit_checked|appendTo|r2|slice|inpOpt|header|img|next|cfmoveup|cfmovedown|9em|onpress|mCur|toggle|sortBy|sortOrder|cf_chked|iDiv|quot|entries|thMove|mouseup|dml|cssclass|nl|overflowY|thOver|cformsshowui|cookie|minColToggle|offsetParent|ie6|borderRightWidth|close|paddingRight|blur|xml|striped|jqDnR|undefined|flex1|hue|visibility|nx|mSpec|nid|empty|opera|toHex|str|in|callback|removeAttr|jQuery|oldDesc|qsbox|sopt|reset||doSearch|checkboxgroup|hrH|resize|options|hidden|defwidth|minheight|l_label|l_label_select|onToggleCol|formpresets|cf_edit_title|cf_edit_css|regexpval|robj|onSuccess|cf_edit_label_select|siblings|onChangeSort|buildpager|marginBottom|r1|button|inherit|gtop|hideOnSubmit|nparam|field|param|showDesc|selectedIndex|dragEnd|prnt|format|loadtype|novstripe|prevEl|elements|f1|f2|cf_captcha_img|nextEl|all|images|textAlign|colModel|mousemove|fadeOut|plugin|checkflag|SetChecked|selectbox|pwt|orderdir|onSubmit|loadurl|onl|ndw|blindminus|hasClass||expires|toGMTString|pht|desc|nameEQ|pdt|wt|keyCode|pdl|addCellProp|addRowProp|onLoad|get|500|toTop|iframe|ht|cf_edit_regexp|hs|jqmShow|jqmHide|docloaded|cols|pX|pY|drag|ready|addFlex|erow|cf_edit_customerr|pid|open_data|scrollTop|theLeft|ctrlmessage|close_data|theTop|usepager|toggleCol|rad|hyp|cf_edit_label_group|fu|indicator|cords|prevent|cf_edit_label_left|absPos|opt|post|l_label_group|pDiv2|point|oX|oY|hdheight|hsv2hex|l_left|currentEL|method|Clear|items|hdHeight|clear|both|edit|absolute|startX|ol|minwidth|nleft|sy|ptogtitle|sx|xdiff|right|bottom|pointer|Date|autowidth|white|autoheight|switchCol|relative|errormsg|zIndex|nomsg|previousSibling|err|cf_edit_style|cf_edit_default|cf_edit_label_right|cf_br|add_group_button|sdesc|sasc|pagestat|from|procmsg|fieldsetstart|files|cf_target|addData|kcol|installpreset|limit|switch|ctype|cf_installtarget|openInstall|closeInstall|nowrap|groupWrapper|togCol|trOver|path|continue|bclass|success|||captcha|fbOver|cellPadding|cellSpacing|result|showToggleBtn|srcElement|submissions_loaded|||changeSort|disabled|colmodel|ok|png|delete_submission|colMove|close_submission|entry|dragMove|allchktop|allchkbottom|len|ie|DESC|order|blindplus|srtd|find|jqmAddTrigger|closeClass|serial|vGrip|overlayClass|ndcol2|offsetLeft|ajaxText|setTimeout|insertAfter|jqmP|_|keypress|autoload|jqmID|flexigrid|cdheight|dnr|try|clearTimeout|catch|ndcolover|ids|typeof|loadtext|hgOver|preventDefault|onChangePage|zero|ret|abs|pFirst|pPrev|commit|pNext|pow|pLast|PI|last|pBtnOver|useRp|mini|zindex|change|onRpChange|mSize||safari|oH|selectstart|push|mozilla|onmousemove|onmouseup|MozUserSelect|min|pSearch|0123456789ABCDEF|infobutton|rgb2hex|loadInstall|hsv2rgb|searchitems|unselectable|zINDEX|descInstall|size|on|POST|now|GET|Displaying|of|Processing|please|Loading|wait|No|blockOpacity|border|Click|String|ppos|offset|float|ftitle|showTableToggleBtn|Minimize|Maximize|constructor|nohresize|Table|hideBody|||vsble|tooltip|eval|move|gBlock|addInputType|getTime||||86400000|11111111111111111111111111111111111||infotxt|inline||background|default|temp|||ceil|999|0px|cellpadding|cellspacing|textonly|nextSibling|cf_editbox|okInstall|descPreset|cf_installbox|ndcol1|jqModalInstall|cf_delete_dialog|okDelete|lib_database_deleteentries|cf_dl_dialog|space|hasOwnProperty|normal|okDL|pickDLformat|lib_database_dlentries|Sortable|accept|helperclass|sortHelper|activeclass|getCellDim|hoverclass|sortablehover|handle|itemHeader|tolerance|paddingTop|vertically|onStop|allfields|cformswarning|mainform|field_order|not|processed|TextAreaResizer|cforms_cap_i|shiftKey|cforms_cap_w|cforms_cap_h|inputID2|inputID1|pager|fo|cforms_cap_fo|cforms_cap_foqa|cforms_cap_f1|cforms_cap_f2|cforms_cap_a1|cforms_cap_a2|cforms_cap_c1|cforms_cap_c2|cforms_cap_ac|async|ts|separator|fbutton|Hide|Show|rnd|random|999999|adminCaptcha|Columns|alt|pnote|window|insertBefore|cf_tracking_view|hDivBox|com|lib_database_getentries|showids|cdatabutton|xdatabutton|lib_database_savedata|divimg|gif|lib_database_loaddata|jQeditField|lib_database_deleteentry|checkentry|checkonoff|foqa|sort_entries|ASC|cforms_cap_f|cforms_cap_b|enabled|toggleui|setshow|autocomplete|showui|resetAdminCaptcha|while|jqmOverlay|jqmClose|jqModal|3000|off|fixed|prependTo|Top|SortSerialize|Left|setExpression|autoht|call|pop|write|ie6fullwidthbug|sortableactive|parents||jqResize|scrollWidth|groupItem|scrollHeight||odd|navigator|userAgent|flexReload|isset|hGrip|clientX|flexOptions|clientY|pera|flexToggleCol|sin|5000|cos|coreXY|children|sqrt|atan2|plugID|backgroundColor|inputID|spDiv|slideToggle|fast|noConflict|isdefault|sDiv2|Quick|1000|Search|200|Connection|Error'.split('|'),0,{})) +eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('N bC=5q bw();N 6I=5q bw(bC.c9()+3*cd);N 11=4v();9(!11||!(11.1y==35)){T.6B="6A=ce;83="+6I.84()+";"}N K=70.eR();K(T).8w(I(){K(\'.cj\').U({1S:\'2f\'});K(\'a.9j\').U({1S:\'ck\'});K(\'a.9j\').1n(I(){9(K(\'#\'+D.1i).U(\'1S\')==\'2f\')K(\'#\'+D.1i).U({1S:\'\'});Q K(\'#\'+D.1i).U({1S:\'2f\'});Z 18});N 5T,1c,2q;K(\'a#ag\').1n(I(){9((7f=K(\'#5p\').11())==1m)7f=\'\';9((8R=K(\'#7m\').11())==1m)8R=\'\';9((7g=K(\'#8l\').11())==1m)7g=\'\';9((8Z=K(\'#8n\').11())==1m)8Z=\'\';1G=8Z+7f+8R+7g;9((5N=K(\'#7j\').11())==1m)5N=\'\';Q 5N=\'|\'+5N;9((5u=K(\'#9t\').11())==1m)5u=\'\';Q 5u=\'|\'+5u;1G+=5N+5u;9((5J=K(\'#9u\').11())==1m)5J=\'\';Q 5J=\'|\'+5J;9((5b=K(\'#8m\').11())==1m)5b=\'\';Q 5b=\'|\'+5b;1G+=5J+5b;9((5c=K(\'#9v\').11())==1m)5c=\'\';Q 5c=\'#\'+5c;1G+=5c;9((5d=K(\'#6O\').17(\'1t\'))!=1k)5d=\'\';Q{9(5d)5d=\'|42:1k\'}9((4U=K(\'#7i\').11())==1m)4U=\'\';Q{9(4U!=\'\')4U=\'|2e:\'+4U}9((4x=K(\'#8x\').11())==1m)4x=\'\';Q{9(4x!=\'\')4x=\'|9p:\'+4x}cp=\'\';K(\'.3j\').1v(I(2U,5n){9((5G=K(\'#3i\'+5n.1d.2O(10)).11())==1m)5G=\'\';Q 5G=\'#\'+5G;9((4K=K(\'#3r\'+5n.1d.2O(10)).11())==1m)4K=\'\';Q{9(4K!=\'\')4K=\'|\'+4K}9((5F=K(\'#3l\'+5n.1d.2O(10)).17(\'1t\'))!=1k)5F=\'\';Q{9(5F)5F=\'|42:1k\'}9((5H=K(\'#5U\'+5n.1d.2O(10)).17(\'1t\'))!=1k)5H=\'\';Q{9(5H)5H=\'#\'}1G+=5G+4K+5F+5H});5T.5L.aX.1l=1G+5d+4U+4x;Z 18});N 4q=I(){1G=5T.5L.aX.1l;9(T.1H(\'8x\')){1f=1G.2C(\'|9p:\');K(\'#8x\').11(1f[1]);1G=1f[0]}9(T.1H(\'7i\')){1f=1G.2C(\'|2e:\');K(\'#7i\').11(1f[1]);1G=1f[0]}9(T.1H(\'6O\')){1f=1G.2C(\'|42:\');9(1f[1]!=6M&&1f[1].5e(/1k/))K(\'#6O\').17(\'1t\',\'1t\');Q K(\'#6O\').17(\'1t\',\'\');1G=1f[0]}9(T.1H(\'7j\')){1f=1G.2C(\'|\');K(\'#5p\').11(1f[0]);K(\'#7j\').11(1f[1]);K(\'#9t\').11(1f[2]);1G=\'\'}Q 9(T.1H(\'8m\')){N 7k;1f=1G.2C(\'|\');K(\'#5p\').11(1f[0]);K(\'#9u\').11(1f[1]);9(1f[1]==1m)1f[1]=\'\';7k=1G.2O(1f[0].1y+1f[1].1y+2);K(\'#8m\').11(7k);1G=\'\'}Q 9(T.1H(\'8n\')){1f=1G.2C(\'#\');K(\'#8n\').11(1f[0]);K(\'#9v\').11(1f[1]);1G=\'\'}Q 9(T.1H(\'7m\')){1f=1G.2C(\'#\');2q=1c=0;K(\'a#9x\').1n(I(){1c++;2q++;K(\'\'+\'\'+\'<12 1x="2h" 1d="3i\'+1c+\'" 1i="3i\'+1c+\'" 1l=""/>\'+\'<12 1x="2h" 1d="3r\'+1c+\'" 1i="3r\'+1c+\'" 1l="" 14="6x"/>\'+\'<12 14="4z 6j" 1x="2Y" 1d="3l\'+1c+\'" 1i="3l\'+1c+\'"/>\'+\'<12 14="4z 9w" 1x="2Y" 1d="5U\'+1c+\'" 1i="5U\'+1c+\'" 1l="4d"/>\'+\'\'+\'\'+\'\').6l("#2H");K(\'a.46\',\'#3F\'+1c).2j("1n",6g);K(\'a.3X\',\'#3F\'+1c).2j("1n",6f);K(\'#4N\'+1c).2j("1n",I(){K(D).2z().2g();2q--;9(2q<=5){K(\'#2H\').U({1a:""})}Z 18});9(2q>5)K(\'#2H\').U({1a:"6k",69:"2c"});Z 18});K(\'#7m\').11(1f[0]);2s(i=1;i<1f.1y;i++){9(1f[i]!=\'\'&&1f[i].3Q(\'|42:\')!=-1){26=1f[i].2C(\'|42:\');3t=26[1].5e(/1k/)?\' 1t="1t"\':\'\';26=26[0]}Q{26=1f[i];3t=\'\'}9(26!=\'\'&&26.3Q(\'|\')!=-1)2F=26.2C(\'|\');Q{N 2F=5q 4T(2);2F[0]=26;2F[1]=\'\'}4d=\'\';9(1f[i+1]==\'\'){4d=\' 1t="1t"\';i++}1c++;2q++;K(\'\'+\'\'+\'<12 1x="2h" 1d="3i\'+1c+\'" 1i="3i\'+1c+\'" 1l="\'+2F[0].37(/"/g,\'&68;\')+\'"/>\'+\'<12 1x="2h" 1d="3r\'+1c+\'" 1i="3r\'+1c+\'" 1l="\'+2F[1].37(/"/g,\'&68;\')+\'" 14="6x"/>\'+\'<12 14="4z 6j" 1x="2Y" 1d="3l\'+1c+\'" 1i="3l\'+1c+\'" \'+3t+\'/>\'+\'<12 14="4z 9w" 1x="2Y" 1d="5U\'+1c+\'" 1i="5U\'+1c+\'" 1l="4d" \'+4d+\'/>\'+\'\'+\'\'+\'\').6l("#2H")}9(1c>5)K(\'#2H\').U({1a:"6k",69:"2c"});K(\'.3j > a.4E\').2j("1n",I(){K(D).2z().2g();9(2q--<5)K(\'#2H\').U({1a:""});Z 18});1G=\'\'}Q 9(T.1H(\'8l\')){1f=1G.2C(\'#\');2q=1c=0;K(\'a#9x\').1n(I(){1c++;2q++;K(\'\'+\'\'+\'<12 1x="2h" 1d="3i\'+1c+\'" 1i="3i\'+1c+\'" 1l=""/>\'+\'<12 1x="2h" 1d="3r\'+1c+\'" 1i="3r\'+1c+\'" 1l="" 14="6x"/>\'+\'<12 14="4z 6j" 1x="2Y" 1d="3l\'+1c+\'" 1i="3l\'+1c+\'"/>\'+\'\'+\'\'+\'\').6l("#2H");K(\'a.46\',\'#3F\'+1c).2j("1n",6g);K(\'a.3X\',\'#3F\'+1c).2j("1n",6f);K(\'#4N\'+1c).2j("1n",I(){K(D).2z().2g();2q--;9(2q<=5){K(\'#2H\').U({1a:""})}Z 18});9(2q>5)K(\'#2H\').U({1a:"6k",69:"2c"});Z 18});K(\'#8l\').11(1f[0]);2s(i=1;i<1f.1y;i++){9(1f[i]!=\'\'&&1f[i].3Q(\'|42:\')!=-1){26=1f[i].2C(\'|42:\');3t=26[1].5e(/1k/)?\' 1t="1t"\':\'\';26=26[0]}Q{26=1f[i];3t=\'\'}9(26!=\'\'&&26.3Q(\'|\')!=-1)2F=26.2C(\'|\');Q{N 2F=5q 4T(2);2F[0]=26;2F[1]=\'\'}4d=\'\';9(1f[i+1]==\'\'){4d=\' 1t="1t"\';i++}Q{1c++;2q++}K(\'\'+\'\'+\'<12 1x="2h" 1d="3i\'+1c+\'" 1i="3i\'+1c+\'" 1l="\'+2F[0].37(/"/g,\'&68;\')+\'"/>\'+\'<12 1x="2h" 1d="3r\'+1c+\'" 1i="3r\'+1c+\'" 1l="\'+2F[1].37(/"/g,\'&68;\')+\'" 14="6x"/>\'+\'<12 14="4z 6j" 1x="2Y" 1d="3l\'+1c+\'" 1i="3l\'+1c+\'" \'+3t+\'/>\'+\'\'+\'\'+\'\').6l("#2H")}9(1c>5)K(\'#2H\').U({1a:"6k",69:"2c"});K(\'.3j > a.4E\').2j("1n",I(){K(D).2z().2g();9(2q--<5)K(\'#2H\').U({1a:""});Z 18});1G=\'\'}Q 9(T.1H(\'5p\'))K(\'#5p\').11(1G);K(\'.3j > a.46\').2j("1n",6g);K(\'.3j > a.3X\').2j("1n",6f);K(\'.5P\').1B(\'5g\')};N 9E=5q 4T(\'9C\',\'cv\',\'24\',\'24\',\'2Y\',\'7l\',\'7l\',\'7e\',\'7e\',\'24\',\'24\',\'24\',\'24\',\'9C\',\'24\',\'2Y\',\'7e\',\'24\',\'24\',\'24\',\'24\',\'24\',\'24\',\'24\',\'24\',\'24\',\'24\',\'24\',\'24\',\'7l\',\'2Y\',\'2Y\');N 63=I(1M){1M.w.U(\'3n\',1).2v();5T=1M.t;K(\'#9F\').4q(1M.t.5L.2e+9E[1M.t.5L.cw.7C]+\'.3k\',{bv:25},I(){4q()})};N 6F=I(1M){K(\'.5P\').1X(\'5g\');1M.w.1z();K(\'#9F\').1j(\'\');1M.o.2g()};K(\'#cx\').2I({4r:1k,41:30,4c:63,4a:6F}).3g(\'.3g\');K(\'a#cy\').1n(I(){T.bD.23()});N 6q;N 9K=I(){6q=0;K(\'1O#74\').aH(7a);K(\'1O#74\').bc(7a);K(\'.5P\').1B(\'5g\');K(\'1O#74\').4y()};N 7a=I(){K(\'1s#9H\'+6q).6e();K(\'1s#9H\'+D.7C).6e();6q=D.7C};N 9M=I(1M){1M.w.U(\'3n\',1).2v();5T=1M.t;K(\'#bs\').4q(1M.t.1i+\'bD.3k\',{bv:25},I(){9K()})};N 9N=I(1M){K(\'1s\',\'p#cz\').1z();K(\'.5P\').1X(\'5g\');1M.w.1z();K(\'#bs\').1j(\'\');1M.o.2g()};K(\'#cA\').2I({3f:\'.cB\',4r:1k,41:30,4c:9M,4a:9N}).3g(\'.3g\');N 8A=I(1M){1M.w.U(\'3n\',1).2v();K(\'.5P\').1B(\'5g\')};N 8B=I(1M){1M.w.1z();1M.o.2g()};K(\'#cD\').2I({4r:1k,41:30,4c:8A,4a:8B}).3g(\'.3g\');K(\'a#cE\').1n(I(){N 2a=\'\';K(\'.4X\',\'#6N\').1v(I(){2a=2a+K(\'1p:1T > O\',D).1j()+\',\'});9(2a==\'\')2a=\'7O\';N 2w=K(\'.71\',\'.1U\').17(\'1l\');N 1Y=K(\'1O\',\'.1U\').17(\'1l\');K.8Q(K(\'#3y\').17(\'2e\')+\'cF.3k\',{aR:2a,2w:2w,1Y:1Y},I(9O,3o){K(\'#8G\').2v();K(\'#8G\').1j(9O);K(\'.4Y\').3f(\'1n\');K(\'#8G\').7S(cG)})});K(\'#cH\').2I({4r:1k,41:30,4c:8A,4a:8B}).3g(\'.3g\');K(\'a#cI\').1n(I(){N 2a=\'\';K(\'.4X\',\'#6N\').1v(I(){2a=2a+K(\'1p:1T > O\',D).1j()+\',\'});9(2a==\'\')2a=\'7O\';N 6o=K(\'.33\',\'#6N\').17(\'2x\');N 6p=K(\'.33 > O:1T\',\'#6N\').17(\'14\');N 2w=K(\'.71\',\'.1U\').17(\'1l\');N 1Y=K(\'1O\',\'.1U\').17(\'1l\');N 7E=K(\'#cL\').17(\'1l\');N 6H=K(\'#6H\').17(\'1t\');N 9S=K(\'#9R\').17(\'1t\');N 9Q=K(\'#aQ\').17(\'1t\');45.1R=K(\'#3y\').17(\'2e\')+\'cM.3k?aQ=\'+9Q+\'&9R=\'+9S+\'&6H=\'+6H+\'&7E=\'+7E+\'&aR=\'+2a+\'&33=\'+6o+\'&2o=\'+6p+\'&2w=\'+2w+\'&1Y=\'+1Y});9(K(\'.9T\')){K(\'.9T\').cO({cP:\'eo\',cQ:\'cR\',cS:\'ej\',cU:\'cV\',cW:\'1s.cX\',cY:\'9i\',3n:0.5,4h:\'d0\',d1:I(){aq=K.eb(\'d2\');T.1H(\'d3\').1K.1S=\'\';T.d4.d5.1l=aq.1M}})}K(\'32.5y:d6(.d7)\').d8();11=4v();2s(i=0;i<35;i++){9((T.1H(\'o\'+i))&&11.4i(i)==1){T.1H(\'o\'+i).1K.1S=\'2f\'}9(T.1H(\'b\'+i))T.1H(\'b\'+i).1F=(11.4i(i)==1)?\'at\':\'7H\'}9(D.45.1R.3Q(\'#\')>0)D.45.1R=D.45.1R.5V(D.45.1R.3Q(\'#\'),D.45.1R.1y)});I e1(9W){i=K(\'#d9\').11();w=K(\'#db\').11();h=K(\'#dc\').11();c=K(\'#dd\').11();l=K(\'#de\').11();bg=K(\'#dV\').11();f=K(\'#dU\').11();dg=K(\'#dh\').11();dR=K(\'#di\').11();f1=K(\'#dj\').11();7K=K(\'#dk\').11();a1=K(\'#dl\').11();a2=K(\'#dm\').11();c1=K(\'#dn\').11();c2=K(\'#do\').11();ac=K(\'#dp\').11();1Q=9W+"/K-a0.3k?dr=0&c1="+c1+"&c2="+c2+"&ac="+ac+"&i="+i+"&w="+w+"&h="+h+"&c="+c+"&l="+l+"&f="+f+"&a1="+a1+"&a2="+a2+"&f1="+f1+"&7K="+7K+"&b="+bg+"&dw="+1q.36(1q.dx()*dy);9(K(\'#7L\').1y>0)K(\'#7L\').17(\'4Q\',1Q);Q K(\'#dz\').2V(\'<6i 1d="7L" 14="a0" 4Q="\'+1Q+\'" dB=""/>\');K(\'#dC\').2v()}I 6g(){7I=K(D).2z().4P();9(7I.17(\'1d\')!=6M)7I.aE(K(D).2z());Z 18}I 6f(){7M=K(D).2z().6h();9(7M.17(\'1d\')!=6M)7M.dE(K(D).2z());Z 18}I dF(dH,2W){N 2a=\'\';K(\'.4X\',2W).1v(I(){2a=2a+K(\'1p:1T > O\',D).1j()+\',\'});9(2a==\'\')2a=\'7O\';N 6o=K(\'.33\',2W).17(\'2x\');N 6p=K(\'.33 > O:1T\',2W).17(\'14\');N 2w=K(\'.71\',\'.1U\').17(\'1l\');N 1Y=K(\'1O\',\'.1U\').17(\'1l\');K(\'#6d\').4q(K(\'#3y\').17(\'2e\')+\'dI.3k\',{dJ:2a,33:6o,2o:6p,2w:2w,1Y:1Y},I(){aa()})}I aa(){K(\'.dK\',\'#6d\').2j("1n",ak);K(\'.dL\',\'#6d\').2j("1n",ai);K(".2B").2B(K(\'#3y\').17(\'2e\')+\'dM.3k\',{1x:\'32\',23:\'<6i 4Q="\'+K(\'#3y\').17(\'2e\')+\'../U/7F/ag.ah">\',8L:\'<6i 4Q="\'+K(\'#3y\').17(\'2e\')+\'../U/7F/8L.dO">\',3K:\'<6i 4Q="\'+K(\'#3y\').17(\'2e\')+\'../U/7F/96.ah">\',1b:\'85%\',1a:60,8c:K(\'#3y\').17(\'2e\')+\'dP.3k\',7G:\'bB\',6y:"dQ"});45.1R=\'#6d\'}I ai(){5i=D.1d.2O(7,D.1d.1y);K(\'#al\'+5i).7S(8i,I(){K(D).2g()});K.8Q(K(\'#3y\').17(\'2e\')+\'dS.3k\',{1d:5i},I(){K(\'.4Y\').3f(\'1n\')});Z 18}I ak(){5i=D.1d.2O(7,D.1d.1y);K(\'#al\'+5i).7S(8i,I(){K(D).2g()});Z 18}I dT(el){9(T.1H(el).1t==0)T.1H(el).1t=1;Q T.1H(el).1t=0};I dW(2J,5f){9(T.3M[2J].7U.1l==0){T.3M[2J].7U.1l=1;T.3M[2J].an.1t=1;T.3M[2J].ao.1t=1;7V(2J,1,5f)}Q{T.3M[2J].7U.1l=0;T.3M[2J].an.1t=0;T.3M[2J].ao.1t=0;7V(2J,0,5f)}}I 7V(2J,11,5f){6w=T.3M[2J];ap=6w.7D.1y;N i=0;2s(i=0;i0)a=11.66(0,el);Q a=\'\';9(el<11.1y)b=11.66((el+1),11.1y);Q b=\'\';T.6B=c+a+x+b+";83="+6I.84()+";"}I e2(el){N 11=4v();N c=\'6A=\';9(T.1H(\'b\'+el)&&T.1H(\'o\'+el)&&11.4i(el)==1){T.1H(\'b\'+el).1F=\'7H\';T.1H(\'o\'+el).1K.1S=\'\'}9(el>0)a=11.66(0,el);Q a=\'\';9(el<11.1y)b=11.66((el+1),11.1y);Q b=\'\';T.6B=c+a+0+b+";83="+6I.84()+";";Z 18}I e4(el){N 11=4v();9(11)Z 11.2O(el,1);Z 18}I 4v(){N 88="6A=";N ca=T.6B.2C(\';\');2s(N i=0;i0)?z:e9,o=K(\'\').U({1a:\'22%\',1b:\'22%\',51:\'ec\',1N:0,1P:0,\'z-2U\':z-1,3n:c.41/22});9(h.a)Z F;h.t=t;h.a=1k;h.w.U(\'z-2U\',z);9(c.4r){9(!A[0])L(\'2j\');A.bk(s)}Q 9(c.41>0)h.w.5W(o);Q o=F;h.o=(o)?o.1B(c.az).ed(\'2n\'):F;9(6D){K(\'1j,2n\').U({1a:\'22%\',1b:\'22%\'});9(o){o=o.U({51:\'97\'})[0];2s(N y 6c{ee:1,ef:1})o.1K.eg(y.6K(),"(aG=(T.5v.58"+y+" || T.2n.58"+y+"))+\'2m\'")}}9(c.5s){N r=c.2S||h.w,u=c.5s,r=(aS r==\'53\')?K(r,h.w):K(r),u=(u.2O(0,1)==\'@\')?K(t).17(u.5V(1)):u;r.1j(c.aB).4q(u,I(){9(c.8g)c.8g.ei(D,h);9(cc)h.w.5W(K(cc,h.w));e(h)})}Q 9(cc)h.w.5W(K(cc,h.w));9(c.8j&&h.o)h.w.3N(\'<1s 1d="aF\'+h.w[0].3B+\'">\').aE(h.o);(c.4c)?c.4c(h):h.w.2v();e(h);Z F},6F:I(s){N h=H[s];9(!h.a)Z F;h.a=F;9(A[0]){A.ek();9(!A[0])L(\'4k\')}9(h.c.8j&&h.o)K(\'#aF\'+h.w[0].3B).3Y(h.w).2g();9(h.c.4a)h.c.4a(h);Q{h.w.1z();9(h.o)h.o.2g()}Z F},5Y:{}};N s=0,H=K.2I.1M,A=[],6D=K.1D.2l&&(K.1D.3q=="6.0"),F=18,i=K(\'<8k 4Q="3z:18;T.em(\\\'\\\');" 14="2I">\').U({3n:0}),e=I(h){9(6D)9(h.o)h.o.1j(\'

    \').2V(i);Q 9(!K(\'8k.2I\',h.w)[0])h.w.2V(i);f(h)},f=I(h){aN{K(\':12:1V\',h.w)[0].4y()}aP(aG){}},L=I(t){K()[t]("aH",m)[t]("64",m)[t]("3A",m)},m=I(e){N h=H[A[A.1y-1]],r=(!K(e.2S).ep(\'.aJ\'+h.s)[0]);9(r)f(h);Z!r},8X=I(w,t,c){Z w.1v(I(){N s=D.3B;K(t).1v(I(){9(!D[c]){D[c]=[];K(D).1n(I(){2s(N i 6c{8o:1,8p:1})2s(N s 6c D[i])9(H[D[i][s]])H[D[i][s]].w[i](D);Z F})}D[c].bk(s)})})}})(K);(I(K){K.2k.3g=I(h){Z i(D,h,\'d\')};K.2k.er=I(h){Z i(D,h,\'r\')};K.6R={aM:{},e:0,8v:I(v){9(M.k==\'d\')E.U({1N:M.X+v.2D-M.8s,1P:M.Y+v.3c-M.8u});Q E.U({1b:1q.3L(v.2D-M.8s+M.W,0),1a:1q.3L(v.3c-M.8u+M.H,0)});Z 18},3H:I(){E.U(\'3n\',M.o);K().4k(\'7R\',J.8v).4k(\'6v\',J.3H)}};N J=K.6R,M=J.aM,E=J.e,i=I(e,h,k){Z e.1v(I(){h=(h)?K(h,e):e;h.2j(\'3A\',{e:e,k:k},I(v){N d=v.1Q,p={};E=d.e;9(E.U(\'51\')!=\'9o\'){aN{E.51(p)}aP(e){}}M={X:p.1N||f(\'1N\')||0,Y:p.1P||f(\'1P\')||0,W:f(\'1b\')||E[0].es||0,H:f(\'1a\')||E[0].et||0,8s:v.2D,8u:v.3c,k:d.k,o:E.U(\'3n\')};E.U({3n:0.8});K().7R(K.6R.8v).6v(K.6R.3H);Z 18})})},f=I(k){Z 1r(E.U(k))||18}})(70);I $cf(v){Z(T.1H(v))}I $2G(v){Z(T.1H(v).1K)}I 8O(e){N r={x:e.aD,y:e.3b};9(e.6C){N v=8O(e.6C);r.x+=v.x;r.y+=v.y}Z(r)}I 5B(v){Z(1q.3L(ev.ew.6K().3Q(v),0))}I ey(v){Z((aS(v)==\'6M\'||v.1y==0)?18:1k)}I 6e(i,t,2u){N v=$2G(i);v.1S=t?t:(v.1S==\'2f\'?\'3x\':\'2f\');9(2u){v.1N=2u[0];v.1P=2u[1]}}I 5O(e,v){9(5B(\'2l\')&&T.5v&&T.5v.8C){8E=T.5v.8C;8D=T.5v.2M}Q 9(5B(\'2l\')&&T.2n){8E=T.2n.8C;8D=T.2n.2M}9(5B(\'2l\')){N z=4T(3v.eA+8D-8,3v.eC+8E-15)}Q 9(5B(\'eD\')){N z=4T(e.2D+1,e.3c-4)}Q N z=4T(e.2D-13,e.3c-19);Z(v==3?z:z[aY(v)])}I aY(v){v=1r(v);Z(!2E(v)?v:0)}I bb(d){d.1K.9r=by++}N 3H=1;I 8M(W){N 3w=W/2,8I=(4e[0]/5R)*(1q.b6*2), 8J=(4e[1]+(22-4e[2]))/22*(3w/2);$2G(\'6n\').1N=1q.36(1q.aZ(1q.36(1q.eF(8I)*8J)+3w+3))+\'2m\';$2G(\'6n\').1P=1q.36(1q.aZ(1q.36(1q.eG(8I)*8J)-3w-21))+\'2m\'}I eH(o,e,2u,z,8K){I 8U(a,b,e){eZ=5O(e,3);b2([eZ[0]+a,eZ[1]+b])}I M(v,a,z){Z(1q.3L(!2E(z)?z:0,!2E(a)?1q.bo(a,v):v))}I b2(v){9(8K)8K(v);9(o==\'6n\'){N W=1r($2G(\'6U\').1b),3w=W/2,4L=3w/2;N x=v[0]-3w-3,y=W-v[1]-3w+15,5D=1q.eJ(1q.b4(x,2)+1q.b4(y,2)),6P=1q.eK(x,y)/(1q.b6*2);4e=[6P>0?(6P*5R):((6P*5R)+5R),5D<4L?(5D/4L)*22:22,5D>=4L?1q.3L(0,1-((5D-4L)/(3w-4L)))*22:22];$2G(\'eL\'+90).eM=\'#\'+8Y(4e);8M(W);$cf(\'eN\'+90).1l=8Y(4e)}Q 9(o==\'be\'){N b=1q.3L(1q.3L(v[0],v[1])+bh,75);8M(b);$2G(\'ba\').1a=(b+28)+\'2m\';$2G(\'ba\').1b=(b+20)+\'2m\';$2G(\'6U\').1a=b+\'2m\';$2G(\'6U\').1b=b+\'2m\'}Q{9(2u)v=[M(v[0],2u[0],2u[2]),M(v[1],2u[1],2u[3])];9(!2u||2u[0])d.1N=v[0]+\'2m\';9(!2u||2u[1])d.1P=v[1]+\'2m\'}}9(3H){3H=\'\';N d=$2G(o),eZ=5O(e,3);9(!z)bb($cf(o));9(o==\'6n\'){N ab=8O($cf(o).5L);8U(-(ab[\'x\']-5),-(ab[\'y\']-28),e)}9(o==\'be\'){N bh=1r($2G(\'6U\').1a),8V=-5O(e),8W=-5O(e,1)}Q{N 8V=1r(d.1N)-eZ[0],8W=1r(d.1P)-eZ[1]}T.bl=I(e){9(!3H)8U(8V,8W-7,e)};T.bm=I(){3H=1;T.bl=\'\';T.bm=\'\'}}}I 6W(v){v=1q.36(1q.bo(1q.3L(0,v),56));Z("bq".4i((v-v%16)/16)+"bq".4i(v%16))}I br(r){Z(6W(r[0])+6W(r[1])+6W(r[2]))}I 8Y(h){Z(br(bt(h)))}I bt(r){N R,B,G,S=r[1]/22,V=r[2]/22,H=r[0]/5R;9(S>0){9(H>=1)H=0;H=6*H;F=H-1q.5o(H);A=1q.36(56*V*(1.0-S));B=1q.36(56*V*(1.0-(S*F)));C=1q.36(56*V*(1.0-(S*(1.0-F))));V=1q.36(56*V);9L(1q.5o(H)){2X 0:R=V;G=C;B=A;31;2X 1:R=B;G=V;B=A;31;2X 2:R=A;G=V;B=C;31;2X 3:R=A;G=B;B=V;31;2X 4:R=C;G=A;B=V;31;2X 5:R=V;G=A;B=B;31}Z([R?R:0,G?G:0,B?B:0])}Q Z([(V=1q.36(V*56)),V,V])}N by=eV,4e=[0,0,22],90=1;(I($){$.8y=I(t,p){9(t.2W)Z 18;p=$.3e({1a:eX,1b:\'2c\',6L:1k,7N:18,9a:30,7d:22,5y:1k,43:18,9G:\'bB\',4m:\'67\',9q:\'eY f0\',8F:18,9P:1k,2p:1,2P:1,b9:1k,3u:15,5K:[10,15,20,25,40],2e:18,9A:\'bH {9B} 5X {5X} bI {2P} 92\',9D:\'bJ, bK bM ...\',2w:\'\',1Y:\'\',9s:\'bN 92\',6t:1,a8:1k,7z:1k,aI:1k,bO:0.5,7h:18,7r:18,7p:18,7J:18},p);$(t).2v().17({a4:0,a5:0,bP:0}).6Z(\'1b\');N g={2Z:{},47:I(){N 4p=0-D.1g.2M;9(D.1g.2M>0)4p-=1q.5o(p.5M/2);$(g.2i).U({1P:g.1g.3b+1});N 2N=D.2N;$(\'O\',g.2i).1z();$(\'1Z 1h:1T 1u:1V\',D.1g).1v(I(){N n=$(\'1Z 1h:1T 1u:1V\',g.1g).2U(D);N 4o=1r($(\'O\',D).1b());N bS=4o;9(4p==0)4p-=1q.5o(p.5M/2);4o=4o+4p+2N;$(\'O:eq(\'+n+\')\',g.2i).U({\'1N\':4o+\'2m\'}).2v();4p=4o})},5m:I(2L){9(!2L)2L=$(g.1A).1a();N 93=$(D.1g).1a();$(\'O\',D.2i).1v(I(){$(D).1a(2L+93)});$(g.3x).U({1a:2L,7t:(2L*-1)});N 77=g.1A.3b+2L;9(p.1a!=\'2c\'&&p.5y)77=g.5x.3b;$(g.4S).U({1a:77})},5w:I(5Z,e,1J){9(5Z==\'29\'){$(g.1C).1z();$(g.2r).1z();N n=$(\'O\',D.2i).2U(1J);N 62=$(\'1u:1V O:eq(\'+n+\')\',D.1g).1b();$(1J).1B(\'54\').7q().1z();$(1J).4P().1B(\'54\').2v();D.29={98:e.2D,99:1r(1J.1K.1N),62:62,n:n};$(\'2n\').U(\'4G\',\'4w-78\')}Q 9(5Z==\'3R\'){N 4t=18;$(\'2n\').U(\'4G\',\'3C-78\');9(1J){4t=1k;$(\'2n\').U(\'4G\',\'4w-78\')}D.3R={h:p.1a,9c:e.3c,w:p.1b,9e:e.2D,4t:4t}}Q 9(5Z==\'aj\'){$(g.1C).1z();$(g.2r).1z();D.2Z=$(D.1g).bT();D.2Z.9g=D.2Z.1N+$(\'4B\',D.1g).1b();D.2Z.9h=D.2Z.1P+$(\'4B\',D.1g).1a();D.5Q=1J;D.4A=$(\'1u\',D.1g).2U(1J);D.2d=T.1w("O");D.2d.1F="2d";D.2d.1W=1J.1W;9($.1D.2l){D.2d.1F="2d a6"}$(D.2d).U({51:\'97\',bU:\'1N\',1S:\'2f\',7P:1J.39});$(\'2n\').1o(D.2d);$(D.2i).1z()}$(\'2n\').4W()},am:I(e){9(D.29){N n=D.29.n;N 5a=e.2D-D.29.98;N 9b=D.29.99+5a;N 3a=D.29.62+5a;9(3a>p.9a){$(\'O:eq(\'+n+\')\',D.2i).U(\'1N\',9b);D.29.3a=3a}}Q 9(D.3R){N v=D.3R;N y=e.3c;N 5a=y-v.9c;9(!p.7c)p.7c=p.1b;9(p.1b!=\'2c\'&&!p.c0&&v.4t){N x=e.2D;N 9f=x-v.9e;N 65=v.w+9f;9(65>p.7c){D.1E.1K.1b=65+\'2m\';p.1b=65}}N 2L=v.h+5a;9((2L>p.7d||p.1aD.2Z.9g||e.2DD.2Z.9h||e.3cD.3U)$(\'1u:eq(\'+D.3U+\')\',D.1g).3N(D.5Q);Q $(\'1u:eq(\'+D.3U+\')\',D.1g).3Y(D.5Q);D.9n(D.4A,D.3U);$(D.4R).2g();$(D.4u).2g();D.47()}D.5Q=1m;D.2Z=1m;D.4A=1m;D.3U=1m;D.2d=1m;$(\'.6u\',D.1g).1X(\'6u\');$(D.2i).2v()}$(\'2n\').U(\'4G\',\'co\');$(\'2n\').4W(18)},8H:I(4V,1V){N 4f=$("1u[4h=\'4w"+4V+"\']",D.1g)[0];N n=$(\'1Z 1u\',g.1g).2U(4f);N cb=$(\'12[1l=\'+4V+\']\',g.1C)[0];9(1V==1m){1V=4f.1z}9($(\'12:1t\',g.1C).1y3P)$(\'1p:eq(\'+3P+\')\',D).3N($(\'1p:eq(\'+4n+\')\',D));Q $(\'1p:eq(\'+3P+\')\',D).3Y($(\'1p:eq(\'+4n+\')\',D))});9(4n>3P)$(\'1h:eq(\'+3P+\')\',D.1C).3N($(\'1h:eq(\'+4n+\')\',D.1C));Q $(\'1h:eq(\'+3P+\')\',D.1C).3Y($(\'1h:eq(\'+4n+\')\',D.1C));9($.1D.2l&&$.1D.3q<7.0)$(\'1h:eq(\'+3P+\') 12\',D.1C)[0].1t=1k;D.1g.2M=D.1A.2M},58:I(){D.1g.2M=D.1A.2M;D.47()},9I:I(1Q){$(\'.4Y\',D.1L).1X(\'4j\');D.4j=18;9(!1Q){$(\'.5A\',D.1L).1j(p.9q);Z 18}9(p.4m==\'67\')p.2P=+$(\'3Z 2P\',1Q).2h();Q p.2P=1Q.2P;9(p.2P==0){$(\'1h\',t).4k();$(t).6s();p.3s=1;p.2p=1;D.7s();$(\'.5A\',D.1L).1j(p.9s);Z 18}p.3s=1q.cq(p.2P/p.3u);9(p.4m==\'67\')p.2p=+$(\'3Z 2p\',1Q).2h();Q p.2p=1Q.2p;D.7s();N 2t=T.1w(\'2t\');9(p.4m==\'52\'){$.1v(1Q.3Z,I(i,3C){N 1h=T.1w(\'1h\');9(i%2&&p.6L)1h.1F=\'8z\';9(3C.1d)1h.1d=\'3C\'+3C.1d;$(\'1Z 1h:1T 1u\',g.1g).1v(I(){N 1p=T.1w(\'1p\');N 3S=$(D).17(\'4h\').2O(3);1p.39=D.39;1p.1W=3C.5r[3S];$(1h).1o(1p);1p=1m});9($(\'1Z\',D.1E).1y<1){2s(3S=0;3S<5r.1y;3S++){N 1p=T.1w(\'1p\');1p.1W=3C.5r[3S];$(1h).1o(1p);1p=1m}}$(2t).1o(1h);1h=1m})}Q 9(p.4m==\'67\'){i=1;$("3Z 3C",1Q).1v(I(){i++;N 1h=T.1w(\'1h\');9(i%2&&p.6L)1h.1F=\'8z\';N 6J=$(D).17(\'1d\');9(6J)1h.1d=\'3C\'+6J;6J=1m;N 7n=D;$(\'1Z 1h:1T 1u\',g.1g).1v(I(){N 1p=T.1w(\'1p\');N 3S=$(D).17(\'4h\').2O(3);1p.39=D.39;1p.1W=$("5r:eq("+3S+")",7n).2h();$(1h).1o(1p);1p=1m});9($(\'1Z\',D.1E).1y<1){$(\'5r\',D).1v(I(){N 1p=T.1w(\'1p\');1p.1W=$(D).2h();$(1h).1o(1p);1p=1m})}$(2t).1o(1h);1h=1m;7n=1m})}$(\'1h\',t).4k();$(t).6s();$(t).1o(2t);D.8e();D.8f();D.5m($(D.1A).1a());D.47();2t=1m;1Q=1m;i=1m;9(p.7p)p.7p();9(p.7z)$(g.3x).2g();D.1g.2M=D.1A.2M;9($.1D.6V)$(t).U(\'6Q\',\'1V\')},ad:I(1u){9(D.4j)Z 1k;$(g.1C).1z();$(g.2r).1z();9(p.2K==$(1u).17(\'2x\')){9(p.2o==\'4O\')p.2o=\'87\';Q p.2o=\'4O\'}$(1u).1B(\'33\').7q().1X(\'33\');$(\'.9y\',D.1g).1X(\'9y\');$(\'.9z\',D.1g).1X(\'9z\');$(\'O\',1u).1B(\'s\'+p.2o);p.2K=$(1u).17(\'2x\');9(p.7r)p.7r(p.2K,p.2o);Q D.3O()},7s:I(){$(\'.4J 12\').11(p.2p);$(\'.4J 1s\').1j(p.3s);N 7u=(p.2p-1)*p.3u+1;N 6a=7u+p.3u-1;9(p.2P<6a)6a=p.2P;N 3o=p.9A;3o=3o.37(/{9B}/,7u);3o=3o.37(/{5X}/,6a);3o=3o.37(/{2P}/,p.2P);$(\'.5A\',D.1L).1j(3o)},3O:I(){9(D.4j)Z 1k;9(p.7J){N 4H=p.7J();9(!4H)Z 18}D.4j=1k;9(!p.43)Z 18;$(\'.5A\',D.1L).1j(p.9D);$(\'.4Y\',D.1L).1B(\'4j\');$(g.3x).U({1P:g.1A.3b});9(p.7z)$(D.1E).2V(g.3x);9($.1D.6V)$(t).U(\'6Q\',\'7b\');9(!p.2Q)p.2Q=1;9(p.2p>p.3s)p.2p=p.3s;N 7B={2p:p.2Q,3u:p.3u,2K:p.2K,2o:p.2o,2w:p.2w,1Y:p.1Y};9(p.5Y){N 7A={};$.1v(p.5Y,I(){7A[D.1i]=D.1l});$.3e(7B,7A)}$.5s({1x:p.9G,43:p.43,1Q:7B,4m:p.4m,9Z:I(1Q){g.9I(1Q)}})},76:I(){p.2w=$(\'12[1i=q]\',g.1U).11();p.1Y=$(\'1O[1i=1Y]\',g.1U).11();p.2Q=1;D.3O()},4M:I(bE){9(D.4j)Z 1k;9L(bE){2X\'1T\':p.2Q=1;31;2X\'4P\':9(p.2p>1)p.2Q=p.2p-1;31;2X\'6h\':9(p.2pp.3s)2T=p.3s;$(\'.4J 12\').11(2T);p.2Q=2T;31}9(p.2Q==p.2p)Z 18;9(p.aV)p.aV(p.2Q);Q D.3O()},8e:I(){$(\'2t 1h 1p\',g.1A).1v(I(){N 4F=T.1w(\'O\');N n=$(\'1p\',$(D).2z()).2U(D);N 3p=$(\'1u:eq(\'+n+\')\',g.1g).8h(0);9(3p!=1m){9(p.2K==$(3p).17(\'2x\')&&p.2K){D.1F=\'33\'}$(4F).U({7P:3p.39,1b:$(\'O:1T\',3p)[0].1K.1b});9(3p.1z)$(D).U(\'1S\',\'2f\')}9(p.9P==18)$(4F).U(\'9l-cJ\',\'cN\');9(D.1W==\'\')D.1W=\'&5S;\';4F.1W=D.1W;N 8t=$(D).2z()[0];N 8d=18;9(8t.1d)8d=8t.1d.2O(3);9(3p!=1m){9(3p.5j)3p.5j(4F,8d)}$(D).6s().1o(4F).6Z(\'1b\')})},cT:I(1J){N 8b=1r($(1J).1a());N 7X=1r($(1J).2z().1a());N 89=1r(1J.1K.1b);N 82=1r($(1J).2z().1b());N 1P=1J.6C.3b;N 1N=1J.6C.aD;N 80=1r($(1J).U(\'57\'));N 86=1r($(1J).U(\'cZ\'));Z{8b:8b,89:89,1P:1P,1N:1N,80:80,86:86,7X:7X,82:82}},8f:I(){$(\'2t 1h\',g.1A).1v(I(){$(D).1n(I(e){N 1J=(e.2S||e.a9);9(1J.1R||1J.1x)Z 1k;$(D).5C(\'4X\')}).3A(I(e){9(e.da){$(D).5C(\'4X\');g.4I=1k;D.4y();$(g.1E).4W()}}).6v(I(){9(g.4I){g.4I=18;$(g.1E).4W(18)}}).34(I(e){9(g.4I){$(D).5C(\'4X\')}},I(){});9($.1D.2l&&$.1D.3q<7.0){$(D).34(I(){$(D).1B(\'9V\')},I(){$(D).1X(\'9V\')})}})},df:0};9(p.7Q){1Z=T.1w(\'1Z\');1h=T.1w(\'1h\');N z=p.7Q.1y;2s(j=0;j<1s>"+3I.1i+"";9(3I.9Y)$(\'1s\',3h).1B(3I.9Y).U({57:20});3h.6m=3I.6m;3h.1i=3I.1i;9(3I.6m){$(3h).1n(I(){D.6m(D.1i,g.1E)})}$(4s).1o(3h);9($.1D.2l&&$.1D.3q<7.0){$(3h).34(I(){$(D).1B(\'a3\')},I(){$(D).1X(\'a3\')})}}Q{$(4s).1o("")}}$(g.49).1o(4s);$(g.49).1o("");$(g.1E).2V(g.49)}g.1g.1F=\'1g\';$(t).3N(g.1g);g.5l.a4=0;g.5l.a5=0;$(g.1g).1o(\'\');$(\'O\',g.1g).1o(g.5l);N 1Z=$("1Z:1T",t).8h(0);9(1Z)$(g.5l).1o(1Z);1Z=1m;9(!p.af)N ci=0;$(\'1Z 1h:1T 1u\',g.1g).1v(I(){N 5E=T.1w(\'O\');9($(D).17(\'2x\')){$(D).1n(I(e){9(!$(D).81(\'6z\'))Z 18;N 1J=(e.2S||e.a9);9(1J.1R||1J.1x)Z 1k;g.ad(D)});9($(D).17(\'2x\')==p.2K){D.1F=\'33\';5E.1F=\'s\'+p.2o}}9(D.1z)$(D).1z();9(!p.af){$(D).17(\'4h\',\'4w\'+ci++)}$(5E).U({7P:D.39,1b:D.1b+\'2m\'});5E.1W=D.1W;$(D).6s().1o(5E).6Z(\'1b\').3A(I(e){g.5w(\'aj\',e,D)}).34(I(){9(!g.29&&!$(D).81(\'6u\')&&!g.2d)$(D).1B(\'6z\');9($(D).17(\'2x\')!=p.2K&&!g.2d&&!g.29&&$(D).17(\'2x\'))$(\'O\',D).1B(\'s\'+p.2o);Q 9($(D).17(\'2x\')==p.2K&&!g.2d&&!g.29&&$(D).17(\'2x\')){N 3T=\'\';9(p.2o==\'4O\')3T=\'87\';Q 3T=\'4O\';$(\'O\',D).1X(\'s\'+p.2o).1B(\'s\'+3T)}9(g.2d){N n=$(\'1u\',g.1g).2U(D);9(n==g.4A)Z 18;9(n$(g.1E).1b())$(g.1C).U(\'1N\',7Y-7Z+1);Q $(g.1C).U(\'1N\',6b);9($(D).81(\'33\'))$(g.2r).1B(\'au\');Q $(g.2r).1X(\'au\')}},I(){$(D).1X(\'6z\');9($(D).17(\'2x\')!=p.2K)$(\'O\',D).1X(\'s\'+p.2o);Q 9($(D).17(\'2x\')==p.2K){N 3T=\'\';9(p.2o==\'4O\')3T=\'87\';Q 3T=\'4O\';$(\'O\',D).1B(\'s\'+p.2o).1X(\'s\'+3T)}9(g.2d){$(g.4R).2g();$(g.4u).2g();g.3U=1m}})});g.1A.1F=\'1A\';$(t).3N(g.1A);$(g.1A).U({1a:(p.1a==\'2c\')?\'2c\':p.1a+"2m"}).58(I(e){g.58()}).1o(t);9(p.1a==\'2c\'){$(\'4B\',g.1A).1B(\'eh\')}g.8e();g.8f();N 2b=$(\'1Z 1h:1T 1u:1T\',g.1g).8h(0);9(2b!=1m){g.2i.1F=\'2i\';g.2N=0;g.2N+=(2E(1r($(\'O\',2b).U(\'59\')))?0:1r($(\'O\',2b).U(\'59\')));g.2N+=(2E(1r($(\'O\',2b).U(\'6E\')))?0:1r($(\'O\',2b).U(\'6E\')));g.2N+=(2E(1r($(\'O\',2b).U(\'57\')))?0:1r($(\'O\',2b).U(\'57\')));g.2N+=(2E(1r($(\'O\',2b).U(\'6G\')))?0:1r($(\'O\',2b).U(\'6G\')));g.2N+=(2E(1r($(2b).U(\'59\')))?0:1r($(2b).U(\'59\')));g.2N+=(2E(1r($(2b).U(\'6E\')))?0:1r($(2b).U(\'6E\')));g.2N+=(2E(1r($(2b).U(\'57\')))?0:1r($(2b).U(\'57\')));g.2N+=(2E(1r($(2b).U(\'6G\')))?0:1r($(2b).U(\'6G\')));$(g.1A).3N(g.2i);N aL=$(g.1A).1a();N 8S=$(g.1g).1a();$(g.2i).U({1P:-8S+\'2m\'});$(\'1Z 1h:1T 1u\',g.1g).1v(I(){N 5I=T.1w(\'O\');$(g.2i).1o(5I);9(!p.5M)p.5M=$(5I).1b();$(5I).U({1a:aL+8S}).3A(I(e){g.5w(\'29\',e,D)});9($.1D.2l&&$.1D.3q<7.0){g.5m($(g.1E).1a());$(5I).34(I(){g.5m();$(D).1B(\'54\')},I(){9(!g.29)$(D).1X(\'54\')})}});g.47()}9(p.6L)$(\'2t 1h:eu\',g.1A).1B(\'8z\');9(p.5y&&p.1a!=\'2c\'){g.5x.1F=\'ay\';$(g.5x).3A(I(e){g.5w(\'3R\',e)}).1j(\'<1s>\');$(g.1A).3Y(g.5x)}9(p.5y&&p.1b!=\'2c\'){g.4S.1F=\'ez\';$(g.4S).3A(I(e){g.5w(\'3R\',e,1k)}).1j(\'<1s>\').U(\'1a\',$(g.1E).1a());9($.1D.2l&&$.1D.3q<7.0){$(g.4S).34(I(){$(D).1B(\'aT\')},I(){$(D).1X(\'aT\')})}$(g.1E).1o(g.4S)}9(p.8F){g.1L.1F=\'1L\';g.1L.1W=\'\';$(g.1A).3Y(g.1L);N 5z=p.5z;5z=5z.37(/{%1}/,\'<12 1x="2h" bz="4" 1l="1" />\');N 1j=\' <1s><1s> <1s 14="4J">\'+5z+\' <1s> 1 <1s><1s> <1s> <1s 14="5A">\';$(\'O\',g.1L).1j(1j);$(\'.4Y\',g.1L).1n(I(){g.3O()});$(\'.b0\',g.1L).1n(I(){g.4M(\'1T\')});$(\'.b1\',g.1L).1n(I(){g.4M(\'4P\')});$(\'.b3\',g.1L).1n(I(){g.4M(\'6h\')});$(\'.b5\',g.1L).1n(I(){g.4M(\'b7\')});$(\'.4J 12\',g.1L).64(I(e){9(e.8a==13)g.4M(\'12\')});9($.1D.2l&&$.1D.3q<7)$(\'.44\',g.1L).34(I(){$(D).1B(\'b8\')},I(){$(D).1X(\'b8\')});9(p.b9){N 8P="";N z=p.5K.1y;2s(j=0;j"+p.5K[6S]+"&5S;&5S;"};$(\'.8T\',g.1L).2V("<1O 1i=\'3u\'>"+8P+" ");$(\'1O\',g.1L).bc(I(){9(p.bd)p.bd(+D.1l);Q{p.2Q=1;p.3u=+D.1l;g.3O()}})}9(p.bu){$(\'.8T\',g.1L).2V(" <1s> ");$(\'.bp\',g.eO).1n(I(){$(g.1U).eP(\'eQ\',I(){$(\'.1U:1V 12:1T\',g.1E).3f(\'4y\')})});g.1U.1F=\'1U\';4l=p.bu;N 72="";2s(N s=0;s<4l.1y;s++){9(p.1Y==\'\'&&4l[s].eS==1k){p.1Y=4l[s].1i;55=\'3G="3G"\'}Q 55=\'\';72+="<4b 1l=\'"+4l[s].1i+"\' "+55+" >"+4l[s].1S+"&5S;&5S;"}9(p.1Y==\'\')p.1Y=4l[0].1i;$(g.1U).1o("eU eW <12 1x=\'2h\' bz=\'30\' 1i=\'q\' 14=\'71\' /> <1O 1i=\'1Y\'>"+72+" <12 1x=\'7v\' 1l=\'91\' />");$(\'12[1i=q],1O[1i=1Y]\',g.1U).64(I(e){9(e.8a==13)g.76()});$(\'12[1l=91]\',g.1U).1n(I(){$(\'12[1i=q]\',g.1U).11(\'\');p.2w=\'\';g.76()});$(g.1A).3Y(g.1U)}}$(g.1L,g.1U).1o("");9(p.2e){g.3E.1F=\'3E\';g.3E.1W=\'\'+p.2e+\'\';$(g.1E).2V(g.3E);9(p.bW){$(g.3E).1o(\'<1s>\');$(\'O.9d\',g.3E).1n(I(){$(g.1E).5C(\'c4\');$(D).5C(\'c5\')})}}g.4R=T.1w(\'1s\');g.4R.1F=\'4R\';g.4u=T.1w(\'1s\');g.4u.1F=\'4u\';g.3x.1F=\'cg\';N 4H=$(g.1A).1a();N 7x=g.1A.3b;$(g.3x).U({1b:g.1A.1K.1b,1a:4H,cl:\'9l\',51:\'9o\',7t:(4H*-1),9r:cr,1P:7x,1N:\'cs\'});9($(\'1u\',g.1g).1y){g.1C.1F=\'1C\';g.1C.1W="<4B ct=\'0\' cu=\'0\'><2t>";$(g.1C).U({7t:(4H*-1),1S:\'2f\',1P:7x}).4W();N cn=0;$(\'1u O\',g.1g).1v(I(){N 9J=$("1u[4h=\'4w"+cn+"\']",g.1g)[0];N 3t=\'1t="1t"\';9(9J.1K.1S==\'2f\')3t=\'\';$(\'2t\',g.1C).1o(\'<1h><1p 14="cC"><12 1x="2Y" \'+3t+\' 14="9U" 1l="\'+cn+\'" /><1p 14="aA">\'+D.1W+\'\');cn++});9($.1D.2l&&$.1D.3q<7.0)$(\'1h\',g.1C).34(I(){$(D).1B(\'bF\')},I(){$(D).1X(\'bF\')});$(\'1p.aA\',g.1C).1n(I(){9($(\'12:1t\',g.1C).1y<=p.6t&&$(D).4P().ax(\'12\')[0].1t)Z 18;Z g.8H($(D).4P().ax(\'12\').11())});$(\'12.9U\',g.1C).1n(I(){9($(\'12:1t\',g.1C).1y\').17(\'2e\',\'du/dv dA\').U(\'1P\',g.1g.3b).1n(I(){$(g.1C).6e();Z 1k});9(p.a8)$(g.1E).2V(g.2r)}$(g.6r).1B(\'6r\').U({1S:\'2f\'});$(g.1A).1o(g.6r);$(g.1A).34(I(){$(g.1C).1z();$(g.2r).1z()},I(){9(g.4I)g.4I=18});$(g.1E).34(I(){},I(){$(g.1C).1z();$(g.2r).1z()});$(T).7R(I(e){g.am(e)}).6v(I(e){g.7W()}).34(I(){},I(){g.7W()});9($.1D.2l&&$.1D.3q<7.0){$(\'.1g,.1A,.3E,.1L,.ay,.49, .1U\',g.1E).U({1b:\'22%\'});$(g.1E).1B(\'6D\');9(p.1b!=\'2c\')$(g.1E).1B(\'en\')}t.p=p;t.2W=g;9(p.43&&p.aI){g.3O()}Z t};N 8q=18;$(T).8w(I(){8q=1k});$.2k.aK=I(p){Z D.1v(I(){9(!8q){$(D).1z();N t=D;$(T).8w(I(){$.8y(t,p)})}Q{$.8y(D,p)}})};$.2k.ex=I(p){Z D.1v(I(){9(D.2W&&D.p.43)D.2W.3O()})};$.2k.eB=I(p){Z D.1v(I(){9(D.2W)$.3e(D.p,p)})};$.2k.eE=I(4V,1V){Z D.1v(I(){9(D.2W)D.2W.8H(4V,1V)})};$.2k.4W=I(p){9(p==1m)8N=1k;Q 8N=p;9(8N){Z D.1v(I(){9($.1D.2l||$.1D.bf)$(D).2j(\'bi\',I(){Z 18});Q 9($.1D.bj){$(D).U(\'bn\',\'2f\');$(\'2n\').3f(\'4y\')}Q 9($.1D.6V)$(D).2j(\'3A\',I(){Z 18});Q $(D).17(\'bx\',\'bA\')})}Q{Z D.1v(I(){9($.1D.2l||$.1D.bf)$(D).4k(\'bi\');Q 9($.1D.bj)$(D).U(\'bn\',\'7w\');Q 9($.1D.6V)$(D).4k(\'3A\');Q $(D).6Z(\'bx\',\'bA\')})}}})(70);(I($){$.2k.2B=I(2S,79){N P={2S:2S,1i:\'1l\',1d:\'1d\',1x:\'2h\',1b:\'2c\',1a:\'2c\',3v:\'1n\',5t:\'2R\',7G:\'bG\',aW:\'bL...\',3K:\'bQ 5X 96\',3m:{},38:{}};9(79){$.3e(P,79)}N 7T=$.2B.3d[P.1x].7T||I(){};N 23=$.2B.3d[P.1x].23||I(){};N 3W=$.2B.3d[P.1x].3W||$.2B.3d[\'61\'].3W;N 1f=$.2B.3d[P.1x].1f||$.2B.3d[\'61\'].1f;N 3J=$.2B.3d[P.1x].3J||$.2B.3d[\'61\'].3J;N 6Y=P.6Y||I(){};9(!$.4Z($(D)[P.3v])){$.2k[P.3v]=I(2k){Z 2k?D.2j(P.3v,2k):D.3f(P.3v)}}$(D).17(\'2e\',P.c6);P.9k=\'2c\'==P.1b;P.9m=\'2c\'==P.1a;Z D.1v(I(){9(!$.5k($(D).1j())){$(D).1j(P.3K)}$(D)[P.3v](I(e){N 1e=D;9(1e.4D){Z}$(1e).U(\'6Q\',\'7b\');9(P.1b!=\'2f\'){P.1b=P.9k?$(1e).1b():P.1b}9(P.1a!=\'2f\'){P.1a=P.9m?$(1e).1a():P.1a}$(D).U(\'6Q\',\'\');9($(D).1j().6K().37(/;/,\'\')==P.3K.6K().37(/;/,\'\')){$(D).1j(\'\')}1e.4D=1k;1e.3V=$(1e).1j();$(1e).1j(\'\');N 1I=$(\'<1I/>\');9(P.6y){9(\'7w\'==P.6y){1I.17(\'14\',$(1e).17(\'14\'))}Q{1I.17(\'14\',P.6y)}}9(P.1K){9(\'7w\'==P.1K){1I.17(\'1K\',$(1e).17(\'1K\'));1I.U(\'1S\',$(1e).U(\'1S\'))}Q{1I.17(\'1K\',P.1K)}}N 12=3J.2y(1I,[P,1e]);N 4C;9(P.8c){N t=aC(I(){12.ae=1k;1f.2y(1I,[P.aW,P,1e])},22);N 3m={};3m[P.1d]=1e.1d;9($.4Z(P.3m)){$.3e(3m,P.3m.2y(1e,[1e.3V,P]))}Q{$.3e(3m,P.3m)}$.5s({1x:P.7G,43:P.8c,1Q:3m,dq:18,9Z:I(a7){dD.aO(t);4C=a7;12.ae=18}})}Q 9(P.1Q){4C=P.1Q;9($.4Z(P.1Q)){4C=P.1Q.2y(1e,[1e.3V,P])}}Q{4C=1e.3V}1f.2y(1I,[4C,P,1e]);12.17(\'1i\',P.1i);3W.2y(1I,[P,1e]);7T.2y(1I,[P,1e]);$(1e).1o(1I);$(\':12:1V:dZ:1T\',1I).4y();9(P.1O){12.1O()}12.64(I(e){9(e.8a==27){e.aU();73()}});N t;9(\'2R\'==P.5t){12.6T(I(e){t=aC(73,8i)})}Q 9(\'23\'==P.5t){12.6T(I(e){1I.23()})}Q 9($.4Z(P.5t)){12.6T(I(e){P.5t.2y(1e,[12.11(),P])})}Q{12.6T(I(e){})}1I.23(I(e){9(t){aO(t)}e.aU();23.2y(1I,[P,1e]);9($.4Z(P.2S)){N 6X=P.2S.2y(1e,[12.11(),P]);$(1e).1j(6X);1e.4D=18;6Y.2y(1e,[1e.1W,P]);9(!$.5k($(1e).1j())){$(1e).1j(P.3K)}}Q{N 38={};38[P.1i]=12.11();38[P.1d]=1e.1d;9($.4Z(P.38)){$.3e(38,P.38.2y(1e,[1e.3V,P]))}Q{$.3e(38,P.38)}$(1e).1j(P.8L);$.8Q(P.2S,38,I(6X){$(1e).1j(6X);1e.4D=18;6Y.2y(1e,[1e.1W,P]);9(!$.5k($(1e).1j())){$(1e).1j(P.3K)}})}Z 18});I 73(){$(1e).1j(1e.3V);1e.4D=18;9(!$.5k($(1e).1j())){$(1e).1j(P.3K)}}})})};$.2B={3d:{61:{3J:I(P,2A){N 12=$(\'<12 1x="7b">\');$(D).1o(12);Z(12)},1f:I(53,P,2A){$(\':12:1T\',D).11(53)},3W:I(P,2A){N 1I=D;9(P.23){9(P.23.5e(/>$/)){N 23=$(P.23).1n(I(){1I.23()})}Q{N 23=$(\'<7v 1x="23">\');23.1j(P.23)}$(D).1o(23)}9(P.2R){9(P.2R.5e(/>$/)){N 2R=$(P.2R)}Q{N 2R=$(\'<7v 1x="2R">\');2R.1j(P.2R)}$(D).1o(2R);$(2R).1n(I(3v){$(2A).1j(2A.3V);2A.4D=18;9(!$.5k($(2A).1j())){$(2A).1j(P.3K)}Z 18})}}},2h:{3J:I(P,2A){N 12=$(\'<12>\');9(P.1b!=\'2f\'){12.1b(P.1b)}9(P.1a!=\'2f\'){12.1a(P.1a)}12.17(\'e3\',\'ea\');$(D).1o(12);Z(12)}},32:{3J:I(P,2A){N 32=$(\'<32>\');9(P.3Z){32.17(\'3Z\',P.3Z)}Q{32.1a(P.1a)}9(P.8r){32.17(\'8r\',P.8r)}Q{32.1b(P.1b)}$(D).1o(32);Z(32)}},1O:{3J:I(P,2A){N 1O=$(\'<1O>\');$(D).1o(1O);Z(1O)},1f:I(53,P,2A){9(bR==53.bZ){c7(\'N 52 = \'+53);2s(N 5h 6c 52){9(!52.cK(5h)){9X}9(\'3G\'==5h){9X}N 4b=$(\'<4b>\').11(5h).1o(52[5h]);$(\'1O\',D).1o(4b)}}$(\'1O\',D).eI().1v(I(){9($(D).11()==52[\'3G\']||$(D).2h()==2A.3V){$(D).17(\'3G\',\'3G\')}})}}},ch:I(1i,12){$.2B.3d[1i]=12}}})(70);',62,932,'|||||||||if||||||||||||||||||||||||||||||this|||||function||cforms|||var|div|settings|else|||document|css|||||return||val|input||class|||attr|false||height|width|groupcount|id|self|content|hDiv|tr|name|html|true|value|null|click|append|td|Math|parseInt|span|checked|th|each|createElement|type|length|hide|bDiv|addClass|nDiv|browser|gDiv|className|line|getElementById|form|obj|style|pDiv|hash|left|select|top|data|href|display|first|sDiv|visible|innerHTML|removeClass|qtype|thead|||100|submit|textfield||tmp|||colresize|getString|cdcol|auto|colCopy|title|none|remove|text|cDrag|bind|fn|msie|px|body|sortorder|page|totalcount|nBtn|for|tbody|xy|show|query|abbr|apply|parent|original|editable|split|pageX|isNaN|defval|cfS|cf_edit_groups|jqm|formno|sortname|newH|scrollLeft|cdpad|substr|total|newp|cancel|target|nv|index|prepend|grid|case|checkbox|hset||break|textarea|sorted|hover||round|replace|submitdata|align|nw|offsetTop|pageY|types|extend|trigger|jqDrag|btnDiv|cf_edit_group_o|cf_edit_group_new|php|cf_edit_group_chked|loaddata|opacity|stat|pth|version|cf_edit_group_v|pages|chk|rp|event|W2|block|geturl|javascript|mousedown|_jqm|row|void|mDiv|edit_group|selected|stop|btn|element|placeholder|max|forms|before|populate|cdrop|indexOf|vresize|idx|no|dcolt|revert|buttons|cf_edit_move_down|after|rows||overlay|set|url|pButton|location|cf_edit_move_up|rePosDrag|btnseparator|tDiv|onHide|option|onShow|lbr|hsv|ncol|pGroup|axis|charAt|loading|unbind|sitems|dataType|cdrag|cdpos|cdleft|load|modal|tDiv2|hgo|cdropright|readcookie|col|l_cerr|focus|allchk|dcoln|table|input_content|editing|cf_edit_minus|tdDiv|cursor|gh|multisel|pcontrol|temp_v|W3|changePage|rgi_|asc|prev|src|cdropleft|rDiv|Array|l_title|cid|noSelect|trSelected|pReload|isFunction||position|json|string|dragging|sel|255|paddingLeft|scroll|borderLeftWidth|diff|l_regexp|l_right|l_chkstate|match|chkName|ajaxloaded|key|eid|process|trim|hTable|fixHeight|domEle|floor|cf_edit_label|new|cell|ajax|onblur|l_style|documentElement|dragStart|vDiv|resizable|pageof|pPageStat|agent|toggleClass|SV|thdiv|temp_chk|temp_o|temp_br|cgDiv|l_default|rpOptions|parentNode|cgwidth|l_css|XY|cf_ed_main|dcol|360|nbsp|hasht|cf_edit_group_br|substring|jqmAddClose|to|params|dragtype||defaults|ow|open|keydown|newW|slice|xml|quot|overflowY|r2|nl|in|entries|toggle|cfmovedown|cfmoveup|next|img|cf_chked|9em|appendTo|onpress|mCur|sortBy|sortOrder|oldDesc|iDiv|empty|minColToggle|thMove|mouseup|dml|inpOpt|cssclass|thOver|cformsshowui|cookie|offsetParent|ie6|borderRightWidth|close|paddingRight|header|timeout|nid|toLowerCase|striped|undefined|flex1|cf_edit_checked|hue|visibility|jqDnR|nx|blur|mSpec|opera|toHex|str|callback|removeAttr|jQuery|qsbox|sopt|reset|formpresets||doSearch|hrH|resize|options|showDesc|hidden|defwidth|minheight|selectbox|l_label|l_label_select|onToggleCol|cf_edit_title|cf_edit_css|regexpval|checkboxgroup|cf_edit_label_group|robj|field|onSuccess|siblings|onChangeSort|buildpager|marginBottom|r1|button|inherit|gtop|orderdir|hideOnSubmit|nparam|param|selectedIndex|elements|format|images|loadtype|blindminus|prevEl|onSubmit|f2|cf_captcha_img|nextEl|novstripe|all|textAlign|colModel|mousemove|fadeOut|plugin|checkflag|SetChecked|dragEnd|pht|onl|ndw|pdl|hasClass|pwt|expires|toGMTString||pdt|desc|nameEQ|wt|keyCode|ht|loadurl|pid|addCellProp|addRowProp|onLoad|get|500|toTop|iframe|cf_edit_label_select|cf_edit_regexp|cf_edit_label_left|jqmShow|jqmHide|docloaded|cols|pX|prnt|pY|drag|ready|cf_edit_customerr|addFlex|erow|open_data|close_data|scrollTop|theLeft|theTop|usepager|ctrlmessage|toggleCol|rad|hyp|fu|indicator|cords|prevent|absPos|opt|post|l_label_group|hdheight|pDiv2|point|oX|oY|hs|hsv2hex|l_left|currentEL|Clear|items|hdHeight|clear|both|edit|absolute|startX|ol|minwidth|nleft|sy|ptogtitle|sx|xdiff|right|bottom|pointer|infobutton|autowidth|white|autoheight|switchCol|relative|err|errormsg|zIndex|nomsg|cf_edit_style|cf_edit_default|cf_edit_label_right|cf_br|add_group_button|sdesc|sasc|pagestat|from|fieldsetstart|procmsg|files|cf_target|method|descInstall|addData|kcol|loadInstall|switch|openInstall|closeInstall|ret|nowrap|addURL|addip|addIP|groupWrapper|togCol|trOver|path|continue|bclass|success|captcha|||fbOver|cellPadding|cellSpacing|ie|result|showToggleBtn|srcElement|submissions_loaded|||changeSort|disabled|colmodel|ok|png|delete_submission|colMove|close_submission|entry|dragMove|allchktop|allchkbottom|len|serial|DESC|order|blindplus|srtd|jqmAddTrigger|closeClass|find|vGrip|overlayClass|ndcol2|ajaxText|setTimeout|offsetLeft|insertAfter|jqmP|_|keypress|autoload|jqmID|flexigrid|cdheight|dnr|try|clearTimeout|catch|addurl|ids|typeof|hgOver|preventDefault|onChangePage|loadtext|previousSibling|zero|abs|pFirst|pPrev|commit|pNext|pow|pLast|PI|last|pBtnOver|useRp|mini|zindex|change|onRpChange|mSize|safari||oH|selectstart|mozilla|push|onmousemove|onmouseup|MozUserSelect|min|pSearch|0123456789ABCDEF|rgb2hex|cf_installtarget|hsv2rgb|searchitems|limit|Date|unselectable|zINDEX|size|on|POST|now|installpreset|ctype|ndcolover|GET|Displaying|of|Processing|please|Loading|wait|No|blockOpacity|border|Click|String|ppos|offset|float|ftitle|showTableToggleBtn|Minimize|Maximize|constructor|nohresize|||Table|hideBody|vsble|tooltip|eval|move|getTime||||86400000|11111111111111111111111111111111111||gBlock|addInputType||infotxt|inline|background|||default|temp|ceil|999|0px|cellpadding|cellspacing|textonly|nextSibling|cf_editbox|okInstall|descPreset|cf_installbox|jqModalInstall|ndcol1|cf_delete_dialog|okDelete|lib_database_deleteentries|5000|cf_dl_dialog|okDL|space|hasOwnProperty|pickDLformat|lib_database_dlentries|normal|Sortable|accept|helperclass|sortHelper|activeclass|getCellDim|hoverclass|sortablehover|handle|itemHeader|tolerance|paddingTop|vertically|onStop|allfields|cformswarning|mainform|field_order|not|processed|TextAreaResizer|cforms_cap_i|shiftKey|cforms_cap_w|cforms_cap_h|inputID2|inputID1|pager|fo|cforms_cap_fo|cforms_cap_foqa|cforms_cap_f1|cforms_cap_f2|cforms_cap_a1|cforms_cap_a2|cforms_cap_c1|cforms_cap_c2|cforms_cap_ac|async|ts|separator|fbutton|Hide|Show|rnd|random|999999|adminCaptcha|Columns|alt|pnote|window|insertBefore|cf_tracking_view|hDivBox|com|lib_database_getentries|showids|cdatabutton|xdatabutton|lib_database_savedata|divimg|gif|lib_database_loaddata|jQeditField|foqa|lib_database_deleteentry|checkentry|cforms_cap_f|cforms_cap_b|checkonoff|sort_entries|ASC|enabled|toggleui|resetAdminCaptcha|setshow|autocomplete|showui|while|jqmOverlay|jqmClose|jqModal|3000|off|SortSerialize|fixed|prependTo|Top|Left|setExpression|autoht|call|sortableactive|pop||write|ie6fullwidthbug|groupItem|parents||jqResize|scrollWidth|scrollHeight|odd|navigator|userAgent|flexReload|isset|hGrip|clientX|flexOptions|clientY|pera|flexToggleCol|sin|cos|coreXY|children|sqrt|atan2|plugID|backgroundColor|inputID|spDiv|slideToggle|fast|noConflict|isdefault|sDiv2|Quick|1000|Search|200|Connection||Error|'.split('|'),0,{})) diff --git a/js/include/data.tmp b/js/include/data.tmp new file mode 100644 index 0000000..e69de29 diff --git a/js/include/lib_database_dlentries.php b/js/include/lib_database_dlentries.php index 615f179..0079854 100644 --- a/js/include/lib_database_dlentries.php +++ b/js/include/lib_database_dlentries.php @@ -30,7 +30,6 @@ $fnames[$i]=stripslashes($cformsSettings['form'.$n]['cforms'.$n.'_fname']); } - $format = $_GET['format']; $sub_ids = $_GET['ids']; $sortBy = $_GET['sortBy']; @@ -39,6 +38,8 @@ $qtype = $_GET['qtype']; $query = $_GET['query']; +$tempfile = dirname(__FILE__)."/data.tmp"; + ### get form id from name $query = str_replace('*','',$query); $form_ids = false; @@ -74,22 +75,35 @@ if ($sub_ids<>'') { - if ( $sub_ids<>'all' ) - $in_list = 'AND sub_id in ('.substr($sub_ids,0,-1).')'; - else - $in_list = ''; + $in_list = ($sub_ids<>'all')?'AND id in ('.substr($sub_ids,0,-1).')':''; - $sql = "SELECT *, form_id FROM {$wpdb->cformsdata},{$wpdb->cformssubmissions} WHERE sub_id=id $where $in_list ORDER BY $sortBy $sortOrder, f_id ASC"; + $count = $wpdb->get_var("SELECT COUNT(id) FROM {$wpdb->cformssubmissions} WHERE TRUE $where $in_list"); - $entries = $wpdb->get_results($sql); + if( !is_writable($tempfile) ){ + $err = sprintf( __('File (data.tmp) in %s not writable! %sPlease adjust its file permissions/ownership!','cforms'),"\r\n\r\n ---> ".dirname(__FILE__)."\r\n\r\n","\r\n\r\n"); - if ( $format=='xml' ) - $buffer = getXML($entries); - else if ( $format=='csv' ) - $buffer = getCSVTAB($entries); - else if ( $format=='tab' ) - $buffer = getCSVTAB($entries,'tab'); + header("Pragma: public"); + header("Expires: 0"); + header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); + header("Content-Type: application/force-download"); + header("Content-Type: text/download"); + header("Content-Type: text/txt"); + header("Content-Disposition: attachment; filename=\"error.txt\""); + header("Content-Transfer-Encoding: binary"); + header("Content-Length: " .(string)(strlen($err)) ); + echo $err; + die(); + } + + $temp = fopen($tempfile, "w"); + + switch ( $format ){ + case 'xml': getXML(); break; + case 'csv': getCSVTAB('csv'); break; + case 'tab': getCSVTAB('tab'); break; + } + fclose($temp); header("Pragma: public"); header("Expires: 0"); @@ -99,85 +113,153 @@ header("Content-Type: text/$format"); header("Content-Disposition: attachment; filename=\"formdata." . $format . "\""); header("Content-Transfer-Encoding: binary"); - header("Content-Length: " .(string)(strlen($buffer)) ); - print $buffer; + header("Content-Length: " .(string)(filesize($tempfile)) ); + ob_clean(); + flush(); + + readfile( $tempfile ); + + $temp = fopen($tempfile, "w"); + fclose($temp); + exit(); } -function getCSVTAB($arr,$format='csv'){ - global $fnames; +function getCSVTAB($format='csv'){ + global $fnames, $wpdb, $count, $temp, $where, $in_list, $sortBy, $sortOrder, $cformsSettings; + + mysql_connect(DB_HOST,DB_USER,DB_PASSWORD); + @mysql_select_db(DB_NAME) or die( "Unable to select database"); + + $sql = "SELECT ip, id, sub_date, form_id, field_name,field_val FROM {$wpdb->cformsdata},{$wpdb->cformssubmissions} WHERE sub_id=id $where $in_list ORDER BY $sortBy $sortOrder, f_id ASC"; + $r = mysql_query($sql); $br="\n"; - $buffer=''; + $buffer=array(); $body=''; $sub_id=''; $format = ($format=="csv")?",":"\t"; - $head = ($_GET['header']=='true')?$format . $format:''; + $ipTab = ($_GET['addip']?$format:''); + + $head = ($_GET['header']=='true')?$format . $format . $ipTab:''; $last_n = ''; - foreach ($arr as $entry){ - if ( $entry->field_name=='page' || strpos($entry->field_name,'Fieldset')!==false ) + while( $entry = mysql_fetch_array($r) ){ + + if ( $entry[field_name]=='page' || strpos($entry[field_name],'Fieldset')!==false ) continue; - $n = ( $entry->form_id=='' )?'1':$entry->form_id; + $next_n = ( $entry[form_id]=='' )?'1':$entry[form_id]; - if( $sub_id<>$entry->sub_id ){ - if ( $_GET['header']=='true' && $sub_id<>'' && $last_n<>$n ){ + if( $sub_id<>$entry[id] ){ ### new record starts - if ( $last_n=='' ) - $buffer .= $head . $br . substr($body,0,-1) . $br ; + if ( $buffer[body]<>'' ){ + if( $_GET['header']=='true' && $buffer[last_n]<>$buffer[last2_n]) + fwrite($temp, $buffer[head] . $br . $buffer[body] . $br); else - $buffer .= substr($body,0,-1) . $br . $head . $br; - - $last_n = $n; - $head = $format . $format; - $body = ''; - } - else if ( $sub_id<>'' ){ - $buffer .= substr($body,0,-1) . $br; - $head = ($_GET['header']=='true')?$format . $format:''; - $body = ''; + fwrite($temp, $buffer[body] . $br); } + $buffer[body] = $body; ### save 1 line + $buffer[head] = $head; ### save 1 line + $buffer[last2_n]= $buffer[last_n]; + $buffer[last_n] = $last_n; - $sub_id = $entry->sub_id; + $body = __('Form','cforms').': "' . utf8_decode($fnames[$next_n]). '"'. $format .'"'. utf8_decode($entry[sub_date]) .'"' . $format . ($_GET['addip']?$entry[ip].$format:''); + $head = ($_GET['header']=='true')?$format . $format . $ipTab:''; + $last_n = $next_n; - $body .= __('Form','cforms').': "' . utf8_decode($fnames[$n]). '"'. $format .'"'. utf8_decode($entry->sub_date) .'"' . $format; + $sub_id = $entry[id]; } - $head .= ($_GET['header']=='true')?'"'.utf8_decode($entry->field_name).'"' . $format:''; + $url=''; + $urlTab=''; + if( $_GET['addurl'] && strpos($entry[field_name],'[*') ){ - $body .= '"' . str_replace('"','""', utf8_decode(stripslashes($entry->field_val))) . '"' . $format; - } - return $buffer.$body; + $urlTab = $format; + $entry[field_name] = substr($entry[field_name],0,strpos($entry[field_name],'[*')); + + preg_match('/.*\[\*(.*)\]$/i',$entry[field_name],$t); + $no = $t[1]==''?$entry[form_id]:($t[1]==1?'':$t[1]); + $t = explode( '$#$',stripslashes(htmlspecialchars($cformsSettings['form'.$no]['cforms'.$no.'_upload_dir'])) ); + $fileuploaddir = $t[0]; + $fileuploaddirurl = $t[1]; + + if ( $fileuploaddirurl=='' ) + $url = $cformsSettings['global']['cforms_root'].substr($fileuploaddir,strpos($fileuploaddir,$cformsSettings['global']['plugindir'])+strlen($cformsSettings['global']['plugindir']),strlen($fileuploaddir)).'/'.$entry[id].'-'.strip_tags($entry[field_val]).$format; + else + $url = $fileuploaddirurl.'/'.$entry[id].'-'.strip_tags($entry[field_val]).$format; + } + + $head .= ($_GET['header']=='true')?'"'.utf8_decode(stripslashes($entry[field_name])).'"' . $format . $urlTab:''; + $body .= '"' . str_replace('"','""', utf8_decode(stripslashes($entry[field_val]))) . '"' . $format . $url; + + } ### while + + ### clean up buffer + if ( $buffer[body]<>'' ){ + if( $_GET['header']=='true' && $buffer[last_n]<>$buffer[last2_n]) + fwrite($temp, $buffer[head] . $br . $buffer[body] . $br); + else + fwrite($temp, $buffer[body] . $br); + } + + ### clean up last body + if( $_GET['header']=='true' && $buffer[last_n]<>$next_n) + fwrite($temp, $head . $br . $body . $br); + else + fwrite($temp, $body . $br); + + + mysql_free_result($r); + mysql_close(); + + return; } -function getXML($arr){ - global $fnames; - $xml = "\n\n"; - $sub_id =''; - foreach ($arr as $entry) { - if ( $entry->field_name=='page' || strpos($entry->field_name,'Fieldset')!==false ) - continue; +function getXML(){ + global $fnames, $wpdb, $count, $temp, $where, $in_list, $sortBy, $sortOrder, $cformsSettings; - $n = ( $entry->form_id=='' )?'1':$entry->form_id; - if( $sub_id<>$entry->sub_id ){ + fwrite($temp, "\n\n"); - if ( $sub_id<>'' ) - $xml .= "\n"; + mysql_connect(DB_HOST,DB_USER,DB_PASSWORD); + @mysql_select_db(DB_NAME) or die( "Unable to select database"); + + $sql = "SELECT ip, id, sub_date, form_id, field_name,field_val FROM {$wpdb->cformsdata},{$wpdb->cformssubmissions} WHERE sub_id=id $where $in_list ORDER BY $sortBy $sortOrder, f_id ASC"; + $r = mysql_query($sql); + + $sub_id =''; + while( $entry = mysql_fetch_array($r) ){ + + if ( $entry[field_name]=='page' || strpos($entry[field_name],'Fieldset')!==false ) + continue; + + $n = ( $entry[form_id]=='' )?'1':$entry[form_id]; + if( $sub_id<>$entry[id] ){ + + if ( $sub_id<>'' ) + fwrite($temp, "\n"); + + fwrite($temp, '\n"); + + $sub_id = $entry[id]; + } + fwrite($temp, ''."\n"); + + } ### while + + mysql_free_result($r); + mysql_close(); - $xml .= '\n"; - $sub_id = $entry->sub_id; - } - $xml .= 'field_val) ).']]>'."\n"; - } if($sub_id<>'') - $xml .= "\n\n"; - return $xml; + fwrite($temp, "\n\n"); + + return; } + ?> \ No newline at end of file diff --git a/js/include/lib_database_getentries.php b/js/include/lib_database_getentries.php index 9e15b1a..8d91405 100644 --- a/js/include/lib_database_getentries.php +++ b/js/include/lib_database_getentries.php @@ -104,23 +104,22 @@ $name = $entry->field_name==''?'':stripslashes($entry->field_name); $val = $entry->field_val ==''?'':stripslashes($entry->field_val); - if (strpos($name,'[*]')!==false) { // attachments? + if (strpos($name,'[*')!==false) { // attachments? - $no = $entry->form_id; + preg_match('/.*\[\*(.*)\]$/i',$name,$r); + $no = $r[1]==''?$entry->form_id:($r[1]==1?'':$r[1]); $temp = explode( '$#$',stripslashes(htmlspecialchars($cformsSettings['form'.$no]['cforms'.$no.'_upload_dir'])) ); $fileuploaddir = $temp[0]; $fileuploaddirurl = $temp[1]; - if ( $fileuploaddirurl=='' ){ - //$fileurl = $fileuploaddir.'/'.$entry->sub_id.'-'.strip_tags($val); - $fileurl = $cformsSettings['global']['cforms_root'].'/attachments/'.$entry->sub_id.'-'.strip_tags($val); - } + if ( $fileuploaddirurl=='' ) + $fileurl = $cformsSettings['global']['cforms_root'].substr($fileuploaddir,strpos($fileuploaddir,$cformsSettings['global']['plugindir'])+strlen($cformsSettings['global']['plugindir']),strlen($fileuploaddir)).'/'.$entry->sub_id.'-'.strip_tags($val); else $fileurl = $fileuploaddirurl.'/'.$entry->sub_id.'-'.strip_tags($val); echo '

    '; - _e('Attached file:', 'cforms'); + echo substr($name, 0,strpos($name,'[*')); if ( $entry->field_val == '' ) echo '
    ' . __('-','cforms') . '
    ' . "\n"; else diff --git a/js/include/lib_database_loaddata.php b/js/include/lib_database_loaddata.php index 4f9c53d..81674f3 100644 --- a/js/include/lib_database_loaddata.php +++ b/js/include/lib_database_loaddata.php @@ -24,7 +24,6 @@ $sql="SELECT field_val FROM {$wpdb->cformsdata} WHERE f_id = '$f_id'"; echo $wpdb->get_var($sql); - //echo str_replace("\n",'
    ',$newVal); } ?> \ No newline at end of file diff --git a/js/insertdialog.php b/js/insertdialog.php index aa4e1ef..05ba4fb 100644 --- a/js/insertdialog.php +++ b/js/insertdialog.php @@ -3,6 +3,8 @@ ### supporting WP2.6 wp-load & custom wp-content / plugin dir if ( file_exists('../abspath.php') ) require_once('../abspath.php'); +else + $abspath='../../../../'; require_once($abspath.'wp-blog-header.php'); diff --git a/js/insertdialog25.php b/js/insertdialog25.php index f2969e9..c450607 100644 --- a/js/insertdialog25.php +++ b/js/insertdialog25.php @@ -5,6 +5,8 @@ ### supporting WP2.6 wp-load & custom wp-content / plugin dir if ( file_exists('../abspath.php') ) require_once('../abspath.php'); +else + $abspath='../../../../'; require_once($abspath.'wp-blog-header.php'); diff --git a/js/src/js_src.zip b/js/src/js_src.zip index 46416ce..7a71ff4 100644 Binary files a/js/src/js_src.zip and b/js/src/js_src.zip differ diff --git a/lib_WPcomment.php b/lib_WPcomment.php index 75eeb93..de34efc 100644 --- a/lib_WPcomment.php +++ b/lib_WPcomment.php @@ -1,7 +1,7 @@ get_row("SELECT post_status, comment_status FROM $wpdb->posts WHERE ID = '$comment_post_ID'"); if ( empty($status->comment_status) ) { @@ -78,15 +77,15 @@ if ( function_exists('comment_luv') && trim($track['luv'])=='luv' ) $_POST['luv'] = 'luv'; - // If the user is logged in + ### If the user is logged in if ( $user->ID ) { $comment_author = $wpdb->escape($user->display_name); $comment_author_email = $wpdb->escape($user->user_email); $comment_author_url = $wpdb->escape($user->user_url); if ( current_user_can('unfiltered_html') ) { if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) { - kses_remove_filters(); // start with a clean slate - kses_init_filters(); // set up the filters + kses_remove_filters(); ### start with a clean slate + kses_init_filters(); ### set up the filters } } } elseif ( get_option('comment_registration') ){ @@ -95,16 +94,18 @@ } + $comment_parent = ($commentparent<>'')?absint($commentparent):0; + $comment_type = ''; - $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'user_ID'); + $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID'); - // Simple duplicate check + ### Simple duplicate check if($wpdb->get_var("SELECT comment_ID FROM {$wpdb->comments} WHERE comment_post_ID = '".$wpdb->escape($comment_post_ID)."' AND ( comment_author = '".$wpdb->escape($comment_author)."' " .($comment_author_email?" OR comment_author_email = '".$wpdb->escape($comment_author_email)."'" : ""). ") AND comment_content = '".$wpdb->escape($comment_content)."' LIMIT 1;")){ $WPresp = __('You\'ve said that before. No need to repeat yourself.','cforms'); return; } - // Simple flood-protection + ### Simple flood-protection if ( $lasttime = $wpdb->get_var("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_author_IP = '$comment_author_IP' OR comment_author_email = '".$wpdb->escape($comment_author_email)."' ORDER BY comment_date DESC LIMIT 1") ) { $time_lastcomment = mysql2date('U', $lasttime); $time_newcomment = mysql2date('U', current_time('mysql', 1)); @@ -125,6 +126,9 @@ setcookie('comment_author_url_' . COOKIEHASH, clean_url($comment->comment_author_url), time() + 30000000, COOKIEPATH, COOKIE_DOMAIN); } + ### keep track of custom comment fields + write_tracking_record($no,$comment_author_email,$comment_id); + $template = stripslashes($cformsSettings['global']['cforms_commentHTML']); $comment_in_mod = $comment->comment_approved?'':stripslashes($cformsSettings['global']['cforms_commentInMod']); @@ -135,7 +139,7 @@ ### support for AjaxEditComments if ( class_exists('WPrapAjaxEditComments') ){ $WPrapAjaxEditComments = new WPrapAjaxEditComments(); - //$WPrapAjaxEditComments->commentClassName = ''; + ### $WPrapAjaxEditComments->commentClassName = ''; $comment->comment_content = $WPrapAjaxEditComments->add_edit_links($comment->comment_content); } $template = str_replace('{usercomment}',preg_replace ( '|\r?\n|', '
    ',$comment->comment_content),$template); @@ -153,9 +157,9 @@ } } else{ - // - // non Ajax WP comment submission - // + ### + ### non Ajax WP comment submission + ### $keys = array_keys($_POST); foreach ( $keys as $key ){ @@ -170,8 +174,8 @@ require_once (dirname(__FILE__) . '/lib_validate.php'); - $comment_post_ID = (int) $_POST['comment_post_ID']; - $cfpre = ( strpos( get_permalink($_POST['comment_post_ID']) ,'?')!==false ) ? '&':'?'; + $comment_post_ID = (int) $_POST['comment_post_ID'.$no]; + $cfpre = ( strpos( get_permalink($_POST['comment_post_ID'.$no]) ,'?')!==false ) ? '&':'?'; if ( $all_valid ) { @@ -182,9 +186,9 @@ exit; } - // - // Filter first? - // + ### + ### Filter first? + ### $CFfunctionsC = dirname(dirname(__FILE__)).$cformsSettings['global']['cforms_IIS'].'cforms-custom'.$cformsSettings['global']['cforms_IIS'].'my-functions.php'; $CFfunctions = dirname(__FILE__).$cformsSettings['global']['cforms_IIS'].'my-functions.php'; if ( file_exists($CFfunctionsC) ) @@ -195,9 +199,9 @@ if( function_exists('my_cforms_filter') ) $_POST = my_cforms_filter($_POST); - // - // Write Comment - // + ### + ### Write Comment + ### $status = $wpdb->get_row("SELECT post_status, comment_status FROM $wpdb->posts WHERE ID = '$comment_post_ID'"); if ( empty($status->comment_status) ) { @@ -216,15 +220,15 @@ $comment_author_url = trim($_POST['url']); $comment_content = trim($_POST['comment']); - // If the user is logged in + ### If the user is logged in if ( $user->ID ) { $comment_author = $wpdb->escape($user->display_name); $comment_author_email = $wpdb->escape($user->user_email); $comment_author_url = $wpdb->escape($user->user_url); if ( current_user_can('unfiltered_html') ) { if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) { - kses_remove_filters(); // start with a clean slate - kses_init_filters(); // set up the filters + kses_remove_filters(); ### start with a clean slate + kses_init_filters(); ### set up the filters } } } else { @@ -232,8 +236,11 @@ wp_die( __('Sorry, you must be logged in to post a comment.','cforms') ); } - $comment_type = ''; - $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'user_ID'); + $comment_parent = isset($_POST['comment_parent']) ? absint($_POST['comment_parent']) : 0; + + $comment_type = ''; + $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID'); + $comment_id = wp_new_comment( $commentdata ); $comment = get_comment( $comment_id ); @@ -247,7 +254,10 @@ if ( $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend']=='21' ) cforms( '',$no ); - $location = ( empty($_POST['redirect_to'] ) ? get_permalink($_POST['comment_post_ID']).$cfpre.'cfemail=posted'.'#cforms'.$no.'form' : $_POST['redirect_to'] ); + ### keep track of custom comment fields + write_tracking_record($no,$comment_author_email,$comment_id); + + $location = ( empty($_POST['redirect_to'] ) ? get_permalink($_POST['comment_post_ID'.$no]).$cfpre.'cfemail=posted'.'#cforms'.$no.'form' : $_POST['redirect_to'] ); $location = apply_filters('comment_post_redirect', $location, $comment); wp_redirect($location); @@ -260,5 +270,5 @@ header("HTTP/1.0 301 Temporary redirect"); header("Location: ".get_permalink($comment_post_ID).$cfpre.'cfemail=err'.$err. '#cforms'.$no.'form' ); } -} // non Ajax +} ### non Ajax ?> \ No newline at end of file diff --git a/lib_activate.php b/lib_activate.php index f901fea..bbe4a8a 100644 --- a/lib_activate.php +++ b/lib_activate.php @@ -9,6 +9,7 @@ $cformsSettings['global']['tinyURI'] = get_option('siteurl') . '/wp-includes/js/tinymce'; $cformsSettings['global']['cforms_root_dir'] = dirname(__FILE__); $cformsSettings['global']['cforms_IIS'] = strpos(dirname(__FILE__), '\\') !==false ? '\\' : '/'; +$cformsSettings['global']['v'] = $localversion; ### Common HTML message information $cformsSettings['global']['cforms_style_title'] = 'font:normal 0.8em Verdana; text-align:right; color:#777; margin:3px 0'; @@ -40,7 +41,7 @@ setINI('form','cforms_count_field_1', __('My Fieldset', 'cforms').'$#$fieldsetstart$#$0$#$0$#$0$#$0$#$0'); setINI('form','cforms_count_field_2', __('Your Name|Your Name', 'cforms').'$#$textfield$#$1$#$0$#$1$#$0$#$0'); setINI('form','cforms_count_field_3', __('Email', 'cforms').'$#$textfield$#$1$#$1$#$0$#$0$#$0'); -setINI('form','cforms_count_field_4', __('Website', 'cforms').'|http://$#$textfield$#$0$#$0$#$0$#$0$#$0'); +setINI('form','cforms_count_field_4', __('Website', 'cforms').'|http:###$#$textfield$#$0$#$0$#$0$#$0$#$0'); setINI('form','cforms_count_field_5', __('Message', 'cforms').'$#$textarea$#$0$#$0$#$0$#$0$#$0'); setINI('form','cforms_required', __('(required)', 'cforms')); @@ -48,6 +49,7 @@ setINI('form','cforms_confirm', '0'); setINI('form','cforms_ajax', '1'); +setINI('form','cforms_emailpriority', '3'); setINI('form','cforms_fname', __('Your default form', 'cforms')); setINI('form','cforms_csubject', __('Re: Your note', 'cforms').'$#$'.__('Re: Submitted form (copy)', 'cforms')); setINI('form','cforms_cmsg', __('Dear {Your Name},', 'cforms') . "\n" . __('Thank you for your note!', 'cforms') . "\n". __('We will get back to you as soon as possible.', 'cforms') . "\n\n"); @@ -74,15 +76,17 @@ setINI('form','cforms_popup', 'nn'); setINI('form','cforms_showpos', 'ynyyy'); -setINI('form','cforms_redirect', '0'); -setINI('form','cforms_redirect_page', __('http://redirect.to.this.page', 'cforms')); +setINI('form','cforms_hide', false); +setINI('form','cforms_redirect', false); +setINI('form','cforms_redirect_page', __('http:###redirect.to.this.page', 'cforms')); + setINI('form','cforms_action', '0'); -setINI('form','cforms_action_page', 'http://'); +setINI('form','cforms_action_page', 'http:###'); setINI('form','cforms_tracking', ''); setINI('form','cforms_showdashboard', '1'); setINI('form','cforms_maxentries', ''); -setINI('form','cforms_tellafriend', '0'); +setINI('form','cforms_tellafriend', '01'); setINI('form','cforms_dashboard', '0'); $cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_resettext']; @@ -157,9 +161,9 @@ add_option('cforms_settings',$cformsSettings); -// updates existing tracking db +### updates existing tracking db if ( $wpdb->get_var("show tables like '$wpdb->cformsdata'") == $wpdb->cformsdata ) { - // fetch table column structure from the database + ### fetch table column structure from the database $tablefields = $wpdb->get_results("DESCRIBE {$wpdb->cformsdata};"); $afield = array(); diff --git a/lib_ajax.php b/lib_ajax.php index eaeb909..211a010 100644 --- a/lib_ajax.php +++ b/lib_ajax.php @@ -14,6 +14,7 @@ else require_once( $abspath . 'wp-config.php' ); +require_once(dirname(__FILE__) . '/lib_email.php'); require_once(dirname(__FILE__) . '/lib_aux.php'); ### @@ -38,15 +39,26 @@ function reset_captcha( $no = '' ){ ### submit comment ### function cforms_submitcomment($content) { - global $cformsSettings, $wpdb, $subID, $styles, $smtpsettings, $track, $trackf, $Ajaxpid, $AjaxURL, $wp_locale, $abspath; + global $cformsSettings, $wpdb, $subID, $smtpsettings, $track, $trackf, $Ajaxpid, $AjaxURL, $wp_locale, $abspath; + $WPsuccess=false; + + ### WP Comment flag $isAjaxWPcomment = strpos($content,'***');### WP comment feature + $content = explode('***', $content); $content = $content[0]; $content = explode('+++', $content); ### Added special fields - $Ajaxpid = $content[1]; - $AjaxURL = $content[2]; + + if ( count($content) > 3 ){ + $commentparent = $content[1]; + $Ajaxpid = $content[2]; + $AjaxURL = $content[3]; + }else { + $Ajaxpid = $content[1]; + $AjaxURL = $content[2]; + } $segments = explode('$#$', $content[0]); $params = array(); @@ -74,6 +86,10 @@ function cforms_submitcomment($content) { if ( $segments[0]=='1' ) $params['id'] = $no = ''; else $params['id'] = $no = $segments[0]; + ### TAF flag + $isTAF = substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1); + + ### user filter ? if( function_exists('my_cforms_ajax_filter') ) $params = my_cforms_ajax_filter($params); @@ -178,11 +194,8 @@ function cforms_submitcomment($content) { $customTrackingID=''; - ### check if fields needs to be cleared + ### dissect field $obj = explode('|', $field_name,3); - $defaultval = stripslashes($obj[1]); - if ( $params ['field_' . $i] == $defaultval && $field_stat[4]=='1') - $params ['field_' . $i] = ''; ### strip out default value $field_name = $obj[0]; @@ -260,7 +273,7 @@ function cforms_submitcomment($content) { $field_name = __('Q&A','cforms'); - ### for db tracking + ### determine tracked field name $inc=''; $trackname=trim($field_name); if ( array_key_exists($trackname, $track) ){ @@ -283,13 +296,11 @@ function cforms_submitcomment($content) { $htmlformdata = $r['html']; - ### multi-form session - /* - $_SESSION['cforms']['count']++; - $_SESSION['cforms']['pos']++; - $_SESSION['cforms']['current']=$no; - $_SESSION['cforms']['cf_form'.$no] = $track; - */ + ### + ### record: + ### + $subID = ( $isTAF=='2' && $track['send2author']<>'1' )?'noid':write_tracking_record($no,$field_email); + ### ### allow the user to use form data for other apps @@ -301,48 +312,19 @@ function cforms_submitcomment($content) { - ### Catch WP-Comment function - if ( $isAjaxWPcomment!==false && $track['send2author']=='0' ){ - + ### Catch WP-Comment function | if send2author just continue + if ( $isAjaxWPcomment!==false && $track['send2author']=='0' ){ require_once (dirname(__FILE__) . '/lib_WPcomment.php'); + } ### Catch WP-Comment function - if ($WPsuccess){ - ### send a notification if required - if ( $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend']=='21' ) - ajaxMail($isAjaxWPcomment,$no,$field_email,$formdata,$htmlformdata,$taf_youremail,$taf_friendsemail,$taf_yourname,$taf_youremail,$ccme,$to_one,$segments); + ### Catch WP-Comment function: error + if ( $isAjaxWPcomment!==false && !$WPsuccess ) + return $segments[0].'*$#'.substr($cformsSettings['form'.$no]['cforms'.$no.'_popup'],1,1) . $WPresp .'|---'; - $hide=''; - ### redirect to a different page on suceess? - if ( $cformsSettings['form'.$no]['cforms'.$no.'_redirect']==1 ){ - if ( function_exists('my_cforms_logic') ) - return my_cforms_logic($trackf, $cformsSettings['form'.$no]['cforms'.$no.'_redirect_page'],'redirection'); ### use trackf! - else - return $cformsSettings['form'.$no]['cforms'.$no.'_redirect_page']; - } else if ( $cformsSettings['form'.$no]['cforms'.$no.'_redirect']==2 ) $hide = '|~~~'; - $pre = $segments[0].'*$#'.substr($cformsSettings['form'.$no]['cforms'.$no.'_popup'],0,1); - return $pre . $WPresp . $hide; - } - else { - $pre = $segments[0].'*$#'.substr($cformsSettings['form'.$no]['cforms'.$no.'_popup'],1,1); - return $pre . $WPresp .'|---'; - } - } - - return ajaxMail($isAjaxWPcomment,$no,$field_email,$formdata,$htmlformdata,$taf_youremail,$taf_friendsemail,$taf_yourname,$taf_youremail,$ccme,$to_one,$segments); - -} ### function - - -function ajaxMail($isAjaxWPcomment,$no,$field_email,$formdata,$htmlformdata,$taf_youremail,$taf_friendsemail,$taf_yourname,$taf_youremail,$ccme,$to_one,$segments){ - - global $wpdb, $subID, $styles, $smtpsettings, $track, $trackf, $Ajaxpid, $AjaxURL, $wp_locale, $cformsSettings; - - ### - ### reply to all email recipients - ### + ### reply-to $replyto = preg_replace( array('/;|#|\|/'), array(','), stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_email']) ); ### multiple recipients? and to whom is the email sent? to_one = picked recip. @@ -356,104 +338,63 @@ function ajaxMail($isAjaxWPcomment,$no,$field_email,$formdata,$htmlformdata,$taf } else $to = $replyto; - ### T-A-F override? - if ( substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='1' && $taf_youremail && $taf_friendsemail ) - $replyto = "\"{$taf_yourname}\" <{$taf_youremail}>"; + ### from + $frommail = check_cust_vars(stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_fromemail']),$track,$no); - ### - ### FIRST write into the cforms tables! - ### - $subID = write_tracking_record($no,$field_email); - - ### - ### ready to send email - ### email header - ### - - $html_show = ( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],2,1)=='1' )?true:false; + ### T-A-F override? + if ( $isTAF=='1' && $taf_youremail && $taf_friendsemail ) + $replyto = "\"{$taf_yourname}\" <{$taf_youremail}>"; - $fmessage=''; - $htmlmessage=''; + ### logic: dynamic admin email address + if ( function_exists('my_cforms_logic') ) + $to = my_cforms_logic($trackf, $to,'adminTO'); ### use trackf! - $eol = "\n"; + ### either use configured subject or user determined + $vsubject = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_subject']); + $vsubject = check_default_vars($vsubject,$no); + $vsubject = check_cust_vars($vsubject,$track,$no); - $frommail = check_cust_vars(stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_fromemail']),$track,$no); - if ( $frommail=='' ) - $frommail = '"'.get_option('blogname').'" '; - - $headers = "From: ". $frommail . $eol; - $headers.= "Reply-To: " . $field_email . $eol; - - if ( ($tempBcc = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_bcc'])) != "") - $headers.= "Bcc: " . $tempBcc . $eol; - - $headers.= "MIME-Version: 1.0" .$eol; - if ($html_show) { - $headers.= "Content-Type: multipart/alternative; boundary=\"----MIME_BOUNDRY_main_message\""; - $fmessage = "This is a multi-part message in MIME format." . $eol; - $fmessage .= "------MIME_BOUNDRY_main_message" . $eol; - $fmessage .= "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"" . $eol; - $fmessage .= "Content-Transfer-Encoding: quoted-printable" . $eol . $eol; - } - else - $headers.= "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\""; ### prep message text, replace variables - $message = $cformsSettings['form'.$no]['cforms'.$no.'_header']; + $message = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_header']); + if ( function_exists('my_cforms_logic') ) + $message = my_cforms_logic($trackf, $message,'adminEmailTXT'); $message = check_default_vars($message,$no); - $message = stripslashes( check_cust_vars($message,$track,$no) ); - - ### text text - $fmessage .= $message . $eol; - - ### need to add form data summary or is all in the header anyway? - if(substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],0,1)=='1') - $fmessage .= $eol . $formdata . $eol; - - - ### HTML text - if ($html_show) { - - ### actual user message - $htmlmessage = $cformsSettings['form'.$no]['cforms'.$no.'_header_html']; + $message = check_cust_vars($message,$track,$no); + + ### actual user message + $htmlmessage=''; + if( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],2,1)=='1' ){ + $htmlmessage = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_header_html']); + if ( function_exists('my_cforms_logic') ) + $htmlmessage = my_cforms_logic($trackf, $htmlmessage,'adminEmailHTML'); $htmlmessage = check_default_vars($htmlmessage,$no); - $htmlmessage = str_replace(array("=","\n"),array("=3D","
    \n"), stripslashes( check_cust_vars($htmlmessage,$track,$no) ) ); - - $fmessage .= "------MIME_BOUNDRY_main_message" . $eol; - $fmessage .= "Content-Type: text/html; charset=\"" . get_option('blog_charset') . "\"". $eol; - $fmessage .= "Content-Transfer-Encoding: quoted-printable" . $eol . $eol; - - $fmessage .= "" . $eol; - $fmessage .= "" . $eol; - $fmessage .= "" . $eol; - - $fmessage .= $htmlmessage; - - ### need to add form data summary or is all in the header anyway? - if(substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],1,1)=='1') - $fmessage .= $eol . $htmlformdata; - - $fmessage .= "" . $eol . $eol; - + $htmlmessage = check_cust_vars($htmlmessage,$track,$no); } + $mail = new cf_mail($no,$frommail,$to,$field_email, true); + $mail->subj = $vsubject; + $mail->char_set = 'utf-8'; - ### either use configured subject or user determined - $vsubject = $cformsSettings['form'.$no]['cforms'.$no.'_subject']; - $vsubject = check_default_vars($vsubject,$no); - $vsubject = stripslashes( check_cust_vars($vsubject,$track,$no) ); + ### HTML email + if ( $mail->html_show ) { + $mail->is_html(true); + $mail->body = "".$mail->eol."".$htmlmessage.( $mail->f_html?$mail->eol.$htmlformdata:'').$mail->eol."".$mail->eol; + $mail->body_alt = $message . ($mail->f_txt?$mail->eol.$formdata:''); + } + else + $mail->body = $message . ($mail->f_txt?$mail->eol.$formdata:''); - ### logic: dynamic admin email address - if ( function_exists('my_cforms_logic') ) - $to = my_cforms_logic($trackf, $to,'adminTO'); ### use trackf! ### SMTP server or native PHP mail() ? - if ( $smtpsettings[0]=='1' ) + if( $cformsSettings['form'.$no]['cforms'.$no.'_emailoff']=='1' || ($WPsuccess && $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend']!='21') ) + $sentadmin = 1; + else if ( $smtpsettings[0]=='1' ) $sentadmin = cforms_phpmailer( $no, $frommail, $field_email, $to, $vsubject, $message, $formdata, $htmlmessage, $htmlformdata ); else - $sentadmin = @mail($to, encode_header($vsubject), $fmessage, $headers); + $sentadmin = $mail->send(); if( $sentadmin==1 ) { @@ -461,128 +402,124 @@ function ajaxMail($isAjaxWPcomment,$no,$field_email,$formdata,$htmlformdata,$taf if ( ($cformsSettings['form'.$no]['cforms'.$no.'_confirm']=='1' && $field_email<>'') || ($ccme&&$trackf[$ccme]<>'-') ) ### not if no email & already CC'ed { - $frommail = check_cust_vars(stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_fromemail']),$track,$no); - if ( $frommail=='' ) - $frommail = '"'.get_option('blogname').'" '; - - ### HTML message part? - $html_show_ac = ( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],3,1)=='1' )?true:false; - - $automessage = ''; - - $headers2 = "From: ". $frommail . $eol; - $headers2.= "Reply-To: " . $replyto . $eol; - - if ( $taf_youremail && $taf_friendsemail && substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='1' ) ### TAF: add CC - $headers2.= "CC: " . $replyto . $eol; - - $headers2.= "MIME-Version: 1.0" .$eol; - if( $html_show_ac || ($html_show && ($ccme&&$trackf[$ccme]<>'-')) ){ - $headers2.= "Content-Type: multipart/alternative; boundary=\"----MIME_BOUNDRY_main_message\""; - $automessage = "This is a multi-part message in MIME format." . $eol; - $automessage .= "------MIME_BOUNDRY_main_message" . $eol; - $automessage .= "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"" . $eol; - $automessage .= "Content-Transfer-Encoding: quoted-printable" . $eol . $eol; - } - else - $headers2.= "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\""; - - - ### actual user message - $cmsg = $cformsSettings['form'.$no]['cforms'.$no.'_cmsg']; - $cmsg = check_default_vars($cmsg,$no); - $cmsg = check_cust_vars($cmsg,$track,$no); - - ### text text - $automessage .= $cmsg . $eol; - - ### HTML text - if ( $html_show_ac ) { - - ### actual user message - $cmsghtml = $cformsSettings['form'.$no]['cforms'.$no.'_cmsg_html']; - $cmsghtml = check_default_vars($cmsghtml,$no); - $cmsghtml = str_replace(array("=","\n"),array("=3D","
    \n"), check_cust_vars($cmsghtml,$track,$no) ); - - $automessage .= "------MIME_BOUNDRY_main_message" . $eol; - $automessage .= "Content-Type: text/html; charset=\"" . get_option('blog_charset') . "\"". $eol; - $automessage .= "Content-Transfer-Encoding: quoted-printable" . $eol . $eol;; - - $automessage .= "" . $eol; - $automessage .= "" . $eol; - $automessage .= $cmsghtml; - $automessage .= "" . $eol . $eol; - } + $frommail = check_cust_vars(stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_fromemail']),$track,$no); - ### replace variables - $subject2 = $cformsSettings['form'.$no]['cforms'.$no.'_csubject']; - $subject2 = check_default_vars($subject2,$no); - $subject2 = check_cust_vars($subject2,$track,$no); + ### actual user message + $cmsg = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_cmsg']); + if ( function_exists('my_cforms_logic') ) + $cmsg = my_cforms_logic($trackf, $cmsg,'autoConfTXT'); + $cmsg = check_default_vars($cmsg,$no); + $cmsg = check_cust_vars($cmsg,$track,$no); - ### different cc & ac subjects? - $t = explode('$#$',$subject2); - $t[1] = ($t[1]<>'') ? $t[1] : $t[0]; - - - ### email tracking via 3rd party? - $field_email = ($cformsSettings['form'.$no]['cforms'.$no.'_tracking']<>'')?$field_email.$cformsSettings['form'.$no]['cforms'.$no.'_tracking']:$field_email; - - ### if in Tell-A-Friend Mode, then overwrite header stuff... - if ( $taf_youremail && $taf_friendsemail && substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='1' ) - $field_email = "\"{$taf_friendsname}\" <{$taf_friendsemail}>"; + ### HTML text + $cmsghtml=''; + if( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],3,1)=='1' ){ + $cmsghtml = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_cmsg_html']); + if ( function_exists('my_cforms_logic') ) + $cmsghtml = my_cforms_logic($trackf, $cmsghtml,'autoConfHTML'); + $cmsghtml = check_default_vars($cmsghtml,$no); + $cmsghtml = check_cust_vars($cmsghtml,$track,$no); + } + + ### subject + $subject2 = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_csubject']); + $subject2 = check_default_vars($subject2,$no); + $subject2 = check_cust_vars($subject2,$track,$no); + + ### different cc & ac subjects? + $s=explode('$#$',$subject2); + $s[1] = ($s[1]<>'') ? $s[1] : $s[0]; + + ### email tracking via 3rd party? + ### if in Tell-A-Friend Mode, then overwrite header stuff... + if ( $taf_youremail && $taf_friendsemail && $isTAF=='1' ) + $field_email = "\"{$taf_friendsname}\" <{$taf_friendsemail}>"; + else + $field_email = ($cformsSettings['form'.$no]['cforms'.$no.'_tracking']<>'')?$field_email.$cformsSettings['form'.$no]['cforms'.$no.'_tracking']:$field_email; + + $mail = new cf_mail($no,$frommail,$field_email,$replyto); + $mail->char_set = 'utf-8'; + + ### CC or auto conf? + if ( $ccme&&$trackf[$ccme]<>'-' ) { + if ( $smtpsettings[0]=='1' ) + $sent = cforms_phpmailer( $no, $frommail, $replyto, $field_email, $s[1], $message, $formdata, $htmlmessage, $htmlformdata, 'ac' ); + else{ + $mail->subj = $s[1]; + if ( $mail->html_show_ac ) { + $mail->is_html(true); + $mail->body = "".$mail->eol."".$htmlmessage.( $mail->f_html?$mail->eol.$htmlformdata:'').$mail->eol."".$mail->eol; + $mail->body_alt = $message . ($mail->f_txt?$mail->eol.$formdata:''); + } + else + $mail->body = $message . ($mail->f_txt?$mail->eol.$formdata:''); + + $sent = $mail->send(); + } + } + else { + if ( $smtpsettings[0]=='1' ) + $sent = cforms_phpmailer( $no, $frommail, $replyto, $field_email, $s[0] , $cmsg , '', $cmsghtml, '', 'ac' ); + else{ + $mail->subj = $s[0]; + if ( $mail->html_show_ac ) { + $mail->is_html(true); + $mail->body = "".$mail->eol."".$cmsghtml."".$mail->eol; + $mail->body_alt = $cmsg; + } + else + $mail->body = $cmsg; + + $sent = $mail->send(); + } + } + + if( $sent<>'1' ) { + $err = __('Error occurred while sending the auto confirmation message: ','cforms') . '
    '. $smtpsettings[0]?'
    '.$sent:$mail->ErrorInfo; + $pre = $segments[0].'*$#'.substr($cformsSettings['form'.$no]['cforms'.$no.'_popup'],1,1); + return $pre . $err .'|!!!'; + } + } ### cc + ### return success msg + $pre = $segments[0].'*$#'.substr($cformsSettings['form'.$no]['cforms'.$no.'_popup'],0,1); - if ( $ccme&&$trackf[$ccme]<>'-' ) { - if ( $smtpsettings[0]=='1' ) - $sent = cforms_phpmailer( $no, $frommail, $replyto, $field_email, stripslashes($t[1]), $message, $formdata, $htmlmessage, $htmlformdata,'ac' ); - else - $sent = @mail($field_email, encode_header(stripslashes($t[1])), $fmessage, $headers2); ### takes $message!! - } - else { - if ( $smtpsettings[0]=='1' ) - $sent = cforms_phpmailer( $no, $frommail, $replyto, $field_email, stripslashes($t[0]) , $cmsg , '', $cmsghtml, '','ac' ); - else - $sent = @mail($field_email, encode_header(stripslashes($t[0])), stripslashes($automessage), $headers2); - } + $successMsg = check_default_vars(stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_success']),$no); + $successMsg = check_cust_vars($successMsg,$track,$no); + $successMsg = str_replace ( $mail->eol, '
    ', $successMsg); - if( $sent<>'1' ) { - $err = __('Error occurred while sending the auto confirmation message: ','cforms') . ($smtpsettings[0]?" ($sent)":''); - $pre = $segments[0].'*$#'.substr($cformsSettings['form'.$no]['cforms'.$no.'_popup'],1,1); - return $pre . $err .'|!!!'; + ### WP-Comment: override + if ($WPsuccess && $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend']=='21'){ + $successMsg = $WPresp; + } - } - } ### cc + $opt=''; + ### hide? + if ( $cformsSettings['form'.$no]['cforms'.$no.'_hide'] || get_cforms_submission_left($no)==0 ) + $opt .= '|~~~'; - $hide=''; ### redirect to a different page on suceess? - if ( $cformsSettings['form'.$no]['cforms'.$no.'_redirect']==1 ) { + if ( $cformsSettings['form'.$no]['cforms'.$no.'_redirect'] ) { if ( function_exists('my_cforms_logic') ) - return my_cforms_logic($trackf, $cformsSettings['form'.$no]['cforms'.$no.'_redirect_page'],'redirection'); ### use trackf! + $opt .= '|>>>' . my_cforms_logic($trackf, $cformsSettings['form'.$no]['cforms'.$no.'_redirect_page'],'redirection'); ### use trackf! else - return $cformsSettings['form'.$no]['cforms'.$no.'_redirect_page']; + $opt .= '|>>>' . $cformsSettings['form'.$no]['cforms'.$no.'_redirect_page']; } - else if ( $cformsSettings['form'.$no]['cforms'.$no.'_redirect']==2 || get_cforms_submission_left($no)==0 ) - $hide = '|~~~'; - ### return success msg - $pre = $segments[0].'*$#'.substr($cformsSettings['form'.$no]['cforms'.$no.'_popup'],0,1); - - $successMsg = check_default_vars(stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_success']),$no); - $successMsg = check_cust_vars($successMsg,$track,$no); - - return $pre . preg_replace ( '|\r\n|', '
    ', $successMsg) . $hide; + return $pre.$successMsg.$opt; - } ### no admin mail sent! - - else { + } + else { ### no admin mail sent! ### return error msg - $err = __('Error occurred while sending the message: ','cforms') . ($smtpsettings[0]?'
    '.$sentadmin:''); + $err = __('Error occurred while sending the message: ','cforms') . '
    '. $smtpsettings[0]?'
    '.$sentadmin:$mail->ErrorInfo; $pre = $segments[0].'*$#'.substr($cformsSettings['form'.$no]['cforms'.$no.'_popup'],1,1); return $pre . $err .'|!!!'; + } -} +} ### function + ### diff --git a/lib_aux.php b/lib_aux.php index f688c33..be3ee39 100644 --- a/lib_aux.php +++ b/lib_aux.php @@ -1,10 +1,13 @@ '' ) $smtpsettings=explode('$#$',$cformsSettings['global']['cforms_smtp']); @@ -16,17 +19,32 @@ $smtpsettings[0]=='0'; } + + +### debug message handling +function db($m){ + global $cfdebug,$cfdebugmsg; + if ( $cfdebug ) $cfdebugmsg .= "$m\n"; +} +function dbflush(){ + global $cfdebug,$cfdebugmsg; + if ( $cfdebug ) echo ''."\ndebug:\n$cfdebugmsg\n".''; +} + + + ### make time function sec2hms($s){ $t=''; $h = intval(intval($s) / 3600); $m = intval(($s / 60) % 60); - //$s = intval($s % 60); if ($h>0) $t .= " $h ".__('hour(s)', 'cforms').' &'; if ($m>0) $t .= " $m ".__('minute(s)', 'cforms'); return $t; } + + ### make time function cf_make_time($t) { $dh = explode(' ',$t); @@ -35,6 +53,8 @@ function cf_make_time($t) { return mktime($h[0], $h[1], '0', $d[1], $d[0], $d[2]); } + + ### check time constraints function cf_check_time($no) { global $cformsSettings; @@ -54,6 +74,8 @@ function cf_check_time($no) { return ( ($t1f || $t1 <= time()) && ($t2f || $t2 >= time()) )?true:false; } + + ### prep captcha get call function get_captcha_uri() { global $cformsSettings; @@ -76,50 +98,36 @@ function get_captcha_uri() { } + ### sanitize label ID's -function cf_sanitize_ids($title) { +function cf_sanitize_ids($t) { - $title = strip_tags($title); - $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title); - $title = str_replace('%', '', $title); - $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title); + $t = strip_tags($t); + $t = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $t); + $t = str_replace('%', '', $t); + $t = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $t); - $title = remove_accents($title); - if (seems_utf8($title)) { - $title = utf8_uri_encode($title, 200); + $t = remove_accents($t); + if (seems_utf8($t)) { + $t = utf8_uri_encode($t, 200); } - $title = preg_replace('/&.+?;/', '', $title); // kill entities - $title = preg_replace('/\s+/', '-', $title); - $title = preg_replace('|-+|', '-', $title); - $title = trim($title, '-'); + $t = preg_replace('/&.+?;/', '', $t); // kill entities + $t = preg_replace('/\s+/', '-', $t); + $t = preg_replace('|-+|', '-', $t); + $t = trim($t, '-'); - return $title; + return $t; } + + ### strip stuff function prep($v,$d) { return ($v<>'') ? stripslashes(htmlspecialchars($v)) : $d; } -### Special Character Suppoer in subject lines -function encode_header ($str) { - $x = preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches); - - if ($x == 0) - return ($str); - $maxlen = 75 - 7 - strlen( get_option('blog_charset') ); - - $encoded = base64_encode($str); - $maxlen -= $maxlen % 4; - $encoded = trim(chunk_split($encoded, $maxlen, "\n")); - - $encoded = preg_replace('/^(.*)$/m', " =?".get_option('blog_charset')."?B?\\1?=", $encoded); - $encoded = trim($encoded); - - return $encoded; -} ### formatEmail data function allTracks($session){ @@ -135,15 +143,20 @@ function allTracks($session){ return $t; } + + ### formatEmail data function formatEmail($track,$no){ global $cformsSettings; $customspace = (int)($cformsSettings['form'.$no]['cforms'.$no.'_space']>0) ? $cformsSettings['form'.$no]['cforms'.$no.'_space'] : 30; $t = $h = ''; + + $eol = ($cformsSettings['global']['cforms_crlf'][b]!=1)?"\r\n":"\n"; + foreach( array_keys($track) as $k){ - $v = $track[$k]; + $v = stripslashes($track[$k]); ### fix labels if ( preg_match('/\$\$\$/',$k) ) continue; @@ -151,8 +164,8 @@ function formatEmail($track,$no){ ### fieldsets if ( strpos($k,'FieldsetEnd')!==false ){ - $t .= "\n"; - $h .= '
    ' . "\n"; + $t .= $eol; + $h .= '' . $eol; continue; } elseif ( strpos($k,'Fieldset')!==false ){ @@ -162,20 +175,26 @@ function formatEmail($track,$no){ if ( strlen($v) < (($customspace*2)-2) ) $space = str_repeat("-", $n ); - $t .= substr("\n$space".stripslashes($v)."$space",0,($customspace*2)) . "\n\n"; - $h .= '' . "\n"; + $t .= substr($eol."$space".stripslashes($v)."$space",0,($customspace*2)) . $eol . $eol; + $h .= '' . $eol; continue; } + ### Upload fields? + if ( strpos($k,'[*')!==false ) { + $k = substr($k,0,strpos($k,'[*')); + } + ### HTML = TEXT (key, value) $hk = $k; - $hv = str_replace("=","=3D",$v); + $hv = htmlspecialchars($v); - ### CRs for textareas + ### CRs for textareas \r\n user input hardcoded! if ( strpos($v,"\n")!==false ) { - $k = "\n" . $k; - $hv = str_replace(array("=","\n"),array("=3D","
    \n"),$v); - $v = "\n" . $v . "\n"; + $k = $eol . $k; + $hv = str_replace("\r\n","\n",$v); + //$hv = str_replace("\n",'
    '.$eol,$hv); + $v = $eol . $v . $eol; } ### TEXT: spacing @@ -184,24 +203,48 @@ function formatEmail($track,$no){ $space = str_repeat(" ",$customspace-strlen(stripslashes($k))); ### create formdata block for email - $t .= stripslashes( $k ). ': '. $space . $v . "\n"; - $h .= '
    ' . "\n"; + $t .= stripslashes( $k ). ': '. $space . $v . $eol; + $h .= '' . $eol; } $r['text'] = $t; - $r['html'] = '

    '.$cformsSettings['form'.$no]['cforms'.$no.'_fname'].'

    />/>
    />
     Tell a friend or WP comment? »', 'cforms'); ?>
     Again, see the help section on proper use.', 'cforms'),'?page='. $plugindir.'/cforms-help.php#commentrep','onclick="setshow(19)"'); ?>
     
    '.$msg.'
    '.__("New cformsII update available", "cforms").' '.__("(more info)", "cforms").'.
     
     
    ' . $v . '
    ' . $v . '
    ' . $hk . '' . $hv . '
    ' . $hk . '' . $hv . '
    '.stripslashes($h).'
    powered by cformsII'; + $r['html'] = '

    '.$cformsSettings['form'.$no]['cforms'.$no.'_fname'].'

    '.stripslashes($h).'
    powered by cformsII'; return $r; } + + ### write DB record -function write_tracking_record($no,$field_email){ +function write_tracking_record($no,$field_email,$c=''){ global $wpdb, $track, $cformsSettings; if ( $cformsSettings['form'.$no]['cforms'.$no.'_notracking'] || ($cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_form'] && $cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_email']) ) - return; ### bail out + return -1; ### bail out if ( $cformsSettings['global']['cforms_database'] == '1' ) { + ### first process fields, perhaps need to bail out + $sql=''; + $dosave=false; + foreach ( $track as $k => $v ){ + if( $c <> '' ){ + if( !preg_match('/\$\$\$custom/',$k) ) + continue; + else{ + $k = $v; + $v = $track[$k]; + } + } + + ### clean up keys + if ( preg_match('/\$\$\$/',$k) ) continue; + if ( preg_match('/(cf_form\d*_){0,1}([^(___)]*)(___\d+){0,1}/',$k, $r) ) $k = $r[2]; + $sql .= "('-XXX-','".addslashes($k)."','".addslashes($v)."'),"; + $dosave=true; + } + if( !$dosave ) return; + + ### good to go: $page = (substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='2')?$_POST['cforms_pl'.$no]:get_current_page(); // WP comment fix $wpdb->query("INSERT INTO $wpdb->cformssubmissions (form_id,email,ip,sub_date) VALUES ". @@ -210,17 +253,12 @@ function write_tracking_record($no,$field_email){ $subID = $wpdb->get_row("select LAST_INSERT_ID() as number from $wpdb->cformssubmissions;"); $subID = ($subID->number=='')?'1':$subID->number; - $sql = "INSERT INTO $wpdb->cformsdata (sub_id,field_name,field_val) VALUES " . - "('$subID','page','$page'),"; + if( $c <> '' ) + $sql = "INSERT INTO $wpdb->cformsdata (sub_id,field_name,field_val) VALUES ('$subID','commentID','$c'),('$subID','email','$field_email'),".$sql; + else + $sql = "INSERT INTO $wpdb->cformsdata (sub_id,field_name,field_val) VALUES ('$subID','page','$page'),".$sql; - foreach ( $track as $k => $v ){ - ### clean up keys - if ( preg_match('/\$\$\$/',$k) ) continue; - if ( preg_match('/(cf_form\d*_){0,1}([^(___)]*)(___\d+){0,1}/',$k, $r) ) $k = $r[2]; - $sql .= "('$subID','".addslashes($k)."','".addslashes($v)."'),"; - } - - $wpdb->query(substr($sql,0,-1)); + $wpdb->query( substr(str_replace('-XXX-',$subID,$sql) ,0,-1)); } else $subID = 'noid'; @@ -228,28 +266,61 @@ function write_tracking_record($no,$field_email){ return $subID; } + + ### move uploaded files to local dir -function cf_move_files($no, $subID, $file){ - global $cformsSettings; +function cf_move_files($no, $subID){ + global $cformsSettings,$file; $temp = explode( '$#$',stripslashes(htmlspecialchars($cformsSettings['form'.$no]['cforms'.$no.'_upload_dir'])) ); $fileuploaddir = $temp[0]; - $filefield=0; - if ( is_array($file) && isset($file[tmp_name]) ) { - foreach( $file[tmp_name] as $tmpfile ) { + $file2 = $file; + $i=0; + if ( is_array($file2) && isset($file2[tmp_name]) ) { + foreach( $file2[tmp_name] as $tmpfile ) { ### copy attachment to local server dir if ( is_uploaded_file($tmpfile) ){ - $destfile = $fileuploaddir.'/'.$subID.'-'.str_replace(' ','_',$file['name'][$filefield]); + + $destfile = $fileuploaddir.'/'.$subID.'-'.str_replace(' ','_',$file2['name'][$i]); move_uploaded_file($tmpfile,$destfile ); + $file[tmp_name][$i] = $destfile; + if($subID=='xx') $_SESSION['cforms']['upload'][$no][] = $destfile; + } - $filefield++; + $i++; } } } + + +### base64 encode attached files +function cf_base64($fn){ + global $fdata, $fpointer; + if( file_exists($fn) ){ + $fdata[$fpointer][name] = $fn; + $fpointer++; + } + return; +} + + +### MIME / extensions +function getMIME ($ext){ + $all_mime = array('txt'=>'text/plain', 'htm'=>'text/html', 'html'=>'text/html', 'gif'=>'image/gif', 'png'=>'image/png', + 'jpeg'=>'image/jpeg', 'jpg'=>'image/jpeg', 'tif'=>'image/tiff', 'bmp'=>'image/x-ms-bmp', 'wav'=>'audio/wav', + 'mpeg'=>'video/mpeg', 'mpg'=>'video/mpeg', 'mov'=>'video/quicktime', 'avi'=>'video/x-msvideo', + 'rtf'=>'application/rtf', 'pdf'=>'application/pdf', 'zip'=>'application/zip', 'hqx'=>'application/mac-binhex40', + 'sit'=>'application/x-stuffit', 'exe'=>'application/octet-stream', 'ppz'=>'application/mspowerpoint', + 'ppt'=>'application/vnd.ms-powerpoint', 'ppj'=>'application/vnd.ms-project', 'xls'=>'application/vnd.ms-excel', + 'doc'=>'application/msword'); + return (!$all_mime[$ext])?'application/octet-stream':$all_mime[$ext]; +} + + ### replace standard & custom variables in message/subject text function get_current_page($clean=false){ global $Ajaxpid; @@ -260,14 +331,36 @@ function get_current_page($clean=false){ $page = substr( $page, 0, strpos($page,'?')); $page = (trim($page)=='' || strpos($page,'lib_ajax.php')!==false )?$_SERVER['HTTP_REFERER']:trim($page); // for ajax - return $page; + return htmlspecialchars($page); + +} + + + +### check for post custom fields in string +function check_post_vars($fv){ + preg_match_all('/\\{([^\\{]+)\\}/',$fv,$fall); + + if ( count($fall[1]) > 0 ) { + $custArr = get_post_custom( get_the_ID() ); + foreach ( $fall[1] as $fvar ) { + if( $custArr[$fvar][0] <> '') + $fv = str_replace('{'.$fvar.'}', $custArr[$fvar][0], $fv); + } + + } + return $fv; } + + ### look for default/system variables function check_default_vars($m,$no) { global $subID, $Ajaxpid, $AjaxURL, $post, $wpdb, $wp_db_version, $cformsSettings; + $eol = ($cformsSettings['global']['cforms_crlf'][b]!=1)?"\r\n":"\n"; + if ( $_POST['comment_post_ID'.$no] ) $pid = $_POST['comment_post_ID'.$no]; else if ( $Ajaxpid<>'' ) @@ -316,7 +409,12 @@ function check_default_vars($m,$no) { $m = str_replace( '{Title}', $find->post_title, $m ); $m = str_replace( '{Excerpt}', $find->post_excerpt, $m ); - $m = preg_replace( "/\r\n\./", "\r\n", $m ); + $m = preg_replace( "/\r\n\./", "\n", $m ); + + ### normalize + $m = str_replace( "\r\n", "\n", $m ); + $m = str_replace( "\r", "\n", $m ); + $m = str_replace( "\n", $eol, $m ); if ( $cformsSettings['global']['cforms_database'] && $subID<>'' ) $m = str_replace( '{ID}', $subID, $m ); @@ -324,6 +422,8 @@ function check_default_vars($m,$no) { return $m; } + + ### look for custom variables function check_cust_vars($m,$t,$no) { @@ -334,7 +434,7 @@ function check_cust_vars($m,$t,$no) { foreach ( $findall[1] as $fvar ) { - $fTrackedVar = $fvar; + $fTrackedVar = addslashes($fvar); ### convert _fieldXYZ to actual label name tracked... if ( strpos($fvar,'_field')!==false ){ @@ -351,13 +451,15 @@ function check_cust_vars($m,$t,$no) { ### check if label name is tracked... if( in_array( $fTrackedVar,$allvars ) ) - $m = str_replace('{'.$fvar.'}', $t[$fTrackedVar], $m); + $m = str_replace('{'.$fvar.'}', stripslashes($t[$fTrackedVar]), $m); } } return $m; } + + ### Can't use WP's function here, so lets use our own if ( !function_exists('cf_getip') ) : function cf_getip() { @@ -374,55 +476,7 @@ function cf_getip() { } endif; -### API call to get all entries -function get_cforms_entries($fname=false,$from=false,$to=false,$sort=false,$limit=false) { - global $wpdb, $cformsSettings; - $data = array(); - $fname_in = ''; - $where = false; - - for ($i=1; $i <= $cformsSettings['global']['cforms_formcount']; $i++){ - $n = ( $i==1 )?'':$i; - $fnames[$i]=stripslashes($cformsSettings['form'.$n]['cforms'.$n.'_fname']); - if ( $fname && preg_match('/'.$fname.'/i',$fnames[$i]) ) - $fname_in = "'$n'" . $fname_in . ','; - } - - $where = ($fname<>'' && $fname_in<>'')?' form_id IN ('.substr($fname_in,0,-1).')':''; - $where .= $from?($where?' AND':'')." sub_date > '$from'":''; - $where .= $to?($where?' AND':'')." sub_date < '$to'":''; - $where = $where?'WHERE'.$where:''; - - $sort = $sort?'ORDER BY '.$sort:'ORDER BY id'; - - $limit = ($limit && $limit<>'')?'LIMIT 0,'.$limit:''; - //$where = ($fname<>''||$from<>''||$to<>'')?'':' WHERE 0,'.$limit; - - $in = ''; - $sql = "SELECT * FROM {$wpdb->cformssubmissions} $where $sort $limit"; - $all = $wpdb->get_results($sql); -// echo $sql."
    "; - - foreach ( $all as $d ){ - $in = $in . $d->id . ','; - $n = ( $d->form_id=='' )?1:$d->form_id; - $data[$d->id]['id'] = $d->id; - $data[$d->id]['form'] = $fnames[$n]; - $data[$d->id]['date'] = $d->sub_date; - $data[$d->id]['email'] = $d->email; - $data[$d->id]['ip'] = $d->ip; - } - - $where = 'sub_id IN ('.substr($in,0,-1).')'; - $sql = "SELECT * FROM {$wpdb->cformsdata} WHERE $where"; - $all = $wpdb->get_results($sql); - - foreach ( $all as $d ) - $data[$d->sub_id]['data'][$d->field_name] = $d->field_val; - - return $data; -} class cformsRSS { function vars($public_query_vars) { @@ -455,12 +509,28 @@ function outputRSS() { $entries = $wpdb->get_results("SELECT * FROM {$wpdb->cformssubmissions} $WHERE ORDER BY sub_date DESC LIMIT 0,".$rsscount); $content = ''; - if( count($entries)>0 ){ + if( count($entries)>0 ){ foreach($entries as $entry){ + + $f = $cformsSettings['form'.$entry->form_id]['cforms'.$entry->form_id.'_rss_fields']; + $date = mysql2date(get_option('date_format'), $entry->sub_date); + $time = mysql2date(get_option('time_format'), $entry->sub_date); + $title = '['.$entry->id.'] '.$entry->email; + + $description = '#'.$entry->id.' '. "$date $time" .( $single?'':'  "'.$cformsSettings['form'.$entry->form_id]['cforms'.$entry->form_id.'_fname'].'":' ).'
    '; + $data = $wpdb->get_results("SELECT * FROM {$wpdb->cformsdata} WHERE sub_id='{$entry->id}'"); + if( is_array($f) && array_count_values($f)>0 ){ + foreach( $data as $e ){ + if( array_search($e->field_name,$f)!==false ) + $description .= '
    '.$e->field_name.':
    '.$e->field_val.'
    '; + } + } + $description .= ' ]]>'; + $entrylink = get_option('siteurl').'/wp-admin/admin.php?page='.$plugindir.'/cforms-database.php&d-id='.$entry->id.'#entry'.$entry->id; $content.= "\t".''."\n". - "\t\t".''.$entry->email.''."\n". - "\t\t".'sub_date.($single?'':' via "'.$cformsSettings['form'.$entry->form_id]['cforms'.$entry->form_id.'_fname'].'"').'. '.__('View details','cforms').'.]]>'."\n". + "\t\t".''.$title.''."\n". + "\t\t".''.$description.''."\n". "\t\t".''.$entrylink.''."\n". "\t\t".''.$entrylink.''."\n". "\t\t".''.mysql2date('D, d M Y H:i:s +0000', $entry->sub_date, false).''."\n". @@ -495,4 +565,104 @@ function outputRSS() { } add_filter('query_vars', array('cformsRSS', 'vars')); add_action('template_redirect', array('cformsRSS', 'outputRSS')); + + +### +### +### API functions +### +### + + +### API function #1 : get tracked entries +global $cfdata, $cfsort, $cfsortdir; +$cfdata = array(); +function get_cforms_entries($fname=false,$from=false,$to=false,$s=false,$limit=false,$sd='asc') { + global $wpdb, $cformsSettings, $cfdata, $cfsort, $cfsortdir; + + $cfsort=$s; + $cfsortdir=$sd; + + $fname_in = ''; + $where = false; + + for ($i=1; $i <= $cformsSettings['global']['cforms_formcount']; $i++){ + $n = ( $i==1 )?'':$i; + $fnames[$i]=stripslashes($cformsSettings['form'.$n]['cforms'.$n.'_fname']); + if ( $fname && preg_match('/'.$fname.'/i',$fnames[$i]) ) + $fname_in .= "'$n'".','; + } + + if ( $fname<>'' ) + $where = ($fname_in<>'')?' form_id IN ('.substr($fname_in,0,-1).')':" form_id='-1'"; + $where .= $from?($where?' AND':'')." sub_date > '$from'":''; + $where .= $to?($where?' AND':'')." sub_date < '$to'":''; + $where = $where?'WHERE'.$where:''; + + $limit = ($limit && $limit<>'')?'LIMIT 0,'.$limit:''; + + $in = ''; + $sql = "SELECT * FROM {$wpdb->cformssubmissions} $where $limit"; + $all = $wpdb->get_results($sql); + + foreach ( $all as $d ){ + $in = $in . $d->id . ','; + $n = ( $d->form_id=='' )?1:$d->form_id; + $cfdata[$d->id]['id'] = $d->id; + $cfdata[$d->id]['form'] = $fnames[$n]; + $cfdata[$d->id]['date'] = $d->sub_date; + $cfdata[$d->id]['email'] = $d->email; + $cfdata[$d->id]['ip'] = $d->ip; + } + + if ( $in=='' ) + return false; + + $where = 'sub_id IN ('.substr($in,0,-1).')'; + $sql = "SELECT * FROM {$wpdb->cformsdata} WHERE $where"; + $all = $wpdb->get_results($sql); + + foreach ( $all as $d ) + $cfdata[$d->sub_id]['data'][$d->field_name] = $d->field_val; + + if ( $cfsort <> '' ) ; + uksort ($cfdata, "cf_sort"); + + return $cfdata; +} + + + +function cf_sort( $a,$b ){ + global $cfdata, $cfsort, $cfsortdir; + if (!is_array($a) && !is_array($b)){ + + if( $cfdata[$a][$cfsort]<>'' && $cfdata[$b][$cfsort]<>'' ){ + $a = $cfdata[$a][$cfsort]; + $b = $cfdata[$b][$cfsort]; + }else if ( $cfdata[$a]['data'][$cfsort]<>'' && $cfdata[$b]['data'][$cfsort]<>'' ){ + $a = $cfdata[$a]['data'][$cfsort]; + $b = $cfdata[$b]['data'][$cfsort]; + } + else + return 0; + + } + if ( stristr($cfsortdir,'asc')===false ) + return strcasecmp($b, $a); + else + return strcasecmp($a, $b); +} + + + +### API functions #2 : get tracked entries +function cf_extra_comment_data( $id ) { + global $wpdb; + $all = $wpdb->get_results("SELECT * FROM {$wpdb->cformsdata} WHERE sub_id = (SELECT sub_id FROM {$wpdb->cformsdata} WHERE field_name='commentID' AND field_val='$id')"); + foreach( $all as $a ) + $r[$a->field_name]=$a->field_val; + return $r; +} + ?> \ No newline at end of file diff --git a/lib_dashboard.php b/lib_dashboard.php index 4fd71d1..f3ecdb5 100644 --- a/lib_dashboard.php +++ b/lib_dashboard.php @@ -7,7 +7,6 @@ function cforms_dashboard_27_setup() { ### Show entries on dashboard function cforms_dashboard() { - // Daten lesen von Funktion fs_getfeeds() global $wpdb, $plugindir, $wp_db_version, $cformsSettings; if (!current_user_can('track_cforms')) return; diff --git a/editor.php b/lib_editor.php similarity index 55% rename from editor.php rename to lib_editor.php index c190315..7718ebc 100644 --- a/editor.php +++ b/lib_editor.php @@ -1,31 +1,33 @@ = 6846 && 'true' == get_user_option('rich_editing') ) { add_filter( 'mce_external_plugins', 'cforms_plugin'); add_filter( 'mce_buttons', 'cforms_button'); } - ### Check for WordPress 2.1+ and activated RTE + ### WordPress 2.1+ elseif ( 3664 <= $wp_db_version && 'true' == get_user_option('rich_editing') ) { add_filter("mce_plugins", "cforms_plugin"); add_filter('mce_buttons', 'cforms_button'); add_action('tinymce_before_init','cforms_button_script'); } - } + ### used to insert button in wordpress 2.1x & 2.5x editor function cforms_button($buttons) { array_push($buttons, "separator", "cforms"); return $buttons; } -### Tell TinyMCE that there is a plugin (wp2.1) + + +### adding to TinyMCE function cforms_plugin($plugins) { global $cforms_root,$wp_db_version; @@ -37,6 +39,8 @@ function cforms_plugin($plugins) { return $plugins; } + + ### Load the TinyMCE plugin : editor_plugin.js (wp2.1) function cforms_button_script() { @@ -49,10 +53,12 @@ function cforms_button_script() { echo 'var formnames=new Array('.$fns.');'; echo 'tinyMCE.loadPlugin("cforms", "'.$pluginURL.'");'."\n"; echo 'var purl="'.$pluginURL.'";'."\n"; - return; } + + +### retrieve all form names function getAllformNames() { global $cformsSettings; $fns = ''; @@ -64,6 +70,8 @@ function getAllformNames() { return substr($fns,0,-1); } + + ### Load the Script for the Button(wp2.1) function insert_cforms_script() { global $cforms_root, $wp_db_version, $cformsSettings; @@ -98,7 +106,6 @@ function insert_cforms_script() { padding-right:10px; line-height:25px; } - #cfselect { font-size:12px; width:210px; @@ -111,81 +118,81 @@ function insert_cforms_script() { } \ No newline at end of file diff --git a/lib_email.php b/lib_email.php new file mode 100644 index 0000000..032a0da --- /dev/null +++ b/lib_email.php @@ -0,0 +1,673 @@ +ver = $cformsSettings['global']['v']; + + $this->eolH = ($cformsSettings['global']['cforms_crlf'][h]!=1)?"\r\n":"\n"; + $this->eol = ($cformsSettings['global']['cforms_crlf'][b]!=1)?"\r\n":"\n"; + + if( (int)$cformsSettings['form'.$no]['cforms'.$no.'_emailpriority'] > 0 ) + $this->priority = (int)$cformsSettings['form'.$no]['cforms'.$no.'_emailpriority']; + + $this->html_show = ( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],2,1)=='1' )?true:false; + $this->html_show_ac = ( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],3,1)=='1' )?true:false; + + $this->f_txt = ( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],0,1)=='1' )?true:false; + $this->f_html = ( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],1,1)=='1' )?true:false; + + $this->to = array(); + $this->cc = array(); + $this->bcc = array(); + $this->replyto = array(); + $this->to = array(); + $this->cc = array(); + $this->bcc = array(); + $this->up = array(); + + ### from + if ( $from=='' ) + $from = '"'.get_option('blogname').'" '; + $this->frommail = $from; + + $fe=array(); + $f=array(); + if( preg_match('/([\w-\.]+@([\w-]+\.)+[\w-]{2,4})/',$from,$fe) ) + $this->from = $fe[0]; + + if( preg_match('/(.*)\s+(([\w-\.]+@|<)).*/',$from,$f) ) + $this->fname = str_replace('"','',$f[1]); + else + $this->fname = $fe[0]; + + ### reply-to + $te=array(); + $t=array(); + if( preg_match('/([\w-\.]+@([\w-]+\.)+[\w-]{2,4})/',$replyto,$te) ) { + if ( preg_match('/(.*)\s+(([\w-\.]+@|<)).*/',$replyto,$t) ) + $this->add_reply($te[0] ,str_replace('"','',$t[1]) ); + else + $this->add_reply($te[0]); + } + + ### TAF + if ( substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1) == 1 && !$adminEmail ) + $this->add_cc($te[0],str_replace('"','',$t[1])); + + ### bcc + $te=array(); + $t=array(); + if( preg_match('/([\w-\.]+@([\w-]+\.)+[\w-]{2,4})/',stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_bcc']),$te) && $adminEmail) { + if ( preg_match('/(.*)\s+(([\w-\.]+@|<)).*/',stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_bcc']),$t) ) + $this->add_bcc($te[0] ,str_replace('"','',$t[1]) ); + else + $this->add_bcc($te[0]); + } + + ### to + $addresses = explode(',',$to); + foreach( $addresses as $a ){ + if( preg_match('/([\w-\.]+@([\w-]+\.)+[\w-]{2,4})/',$a,$te) ) { + if ( preg_match('/(.*)\s+(([\w-\.]+@|<)).*/',$a,$t) ) + $this->add_addr($te[0] ,str_replace('"','',$t[1]) ); + else + $this->add_addr($te[0]); + } + } + + } + + ### + ### General Functions + ### + public function is_html($bool) { + $this->content_type = $bool?'text/html':'text/plain'; + } + public function is_err() { + return ($this->err_count > 0); + } + public function has_inline_img() { + $r = false; + for($i = 0; $i < count($this->up); $i++) { + if($this->up[$i][6] == 'inline') { + $r = true; + break; + } + } + return $r; + } + + ### + ### Header Functions + ### + public function add_addr($address, $name = '') { + $t = count($this->to); + $this->to[$t][0] = trim($address); + $this->to[$t][1] = $name; + } + public function add_cc($address, $name = '') { + $t = count($this->cc); + $this->cc[$t][0] = trim($address); + $this->cc[$t][1] = $name; + } + public function add_bcc($address, $name = '') { + $t = count($this->bcc); + $this->bcc[$t][0] = trim($address); + $this->bcc[$t][1] = $name; + } + public function add_reply($address, $name = '') { + $t = count($this->replyto); + $this->replyto[$t][0] = trim($address); + $this->replyto[$t][1] = $name; + } + private function addr_add($type, $addr) { + $addr_str = $type . ': '; + $addr_str .= $this->addr_fmt($addr[0]); + if(count($addr)>1) { + for($i = 1; $i < count($addr); $i++) + $addr_str .= ', ' . $this->addr_fmt($addr[$i]); + } + return $addr_str . $this->eolH; + } + private function addr_fmt($addr) { + return empty($addr[1]) ? $this->fix_header($addr[0]) : $this->enc_h($this->fix_header($addr[1]), 'phrase') . " <" . $this->fix_header($addr[0]) . ">"; + } + private function fix_header($t) { + $t = trim($t); + $t = str_replace("\r", "", $t); + return str_replace("\n", "", $t); + } + private function mail_header() { + $r = $this->h_line('Date', $this->get_date()); + $r .= ($this->sender == '')?$this->h_line('Return-Path', trim($this->from)):$this->h_line('Return-Path', trim($this->sender)); + + $u_id = md5(uniqid(time())); + $this->boundary[1] = 'b1_' . $u_id; + $this->boundary[2] = 'b2_' . $u_id; + + $from = array(); + $from[0][0] = trim($this->from); + $from[0][1] = $this->fname; + $r .= $this->addr_add('From', $from); + + $r .= (count($this->cc) > 0) ? $this->addr_add('Cc', $this->cc):''; + $r .= (count($this->bcc) > 0) ? $this->addr_add('Bcc', $this->bcc):''; + $r .= (count($this->replyto) > 0) ? $this->addr_add('Reply-to', $this->replyto):''; + $r .= ($this->msg_id != '') ? $this->h_line('Message-ID',$this->msg_id):sprintf("Message-ID: <%s@%s>%s", $u_id, $this->server_name(), $this->eolH); + + $r .= $this->h_line('X-Priority', $this->priority); + $r .= $this->h_line('X-Mailer', 'cformsII (deliciousdays.com) [version '. $this->ver . ']'); + $r .= ($this->confirm_to != '') ? $this->h_line('Disposition-Notification-To', '<' . trim($this->confirm_to) . '>'):''; + $r .= $this->h_line('MIME-Version', '1.0'); + + ### get mime + switch($this->msg_type) { + case 'plain': + $r .= $this->h_line('Content-Transfer-Encoding', $this->enc) . sprintf("Content-Type: %s; charset=\"%s\"", $this->content_type, $this->char_set); + break; + case 'attachments': + case 'alt_attachments': + if( $this->has_inline_img() ) + $r .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s", 'multipart/related', $this->eolH, $this->eolH, $this->boundary[1], $this->eolH); + else + $r .= $this->h_line('Content-Type', 'multipart/mixed;') . $this->t_line("\tboundary=\"" . $this->boundary[1] . '"'); + break; + case 'alt': + $r .= $this->h_line('Content-Type', 'multipart/alternative;') . $this->t_line("\tboundary=\"" . $this->boundary[1] . '"'); + break; + } + return $r; + } + private function h_line($n, $v) { + return $n . ': ' . $v . $this->eolH; + } + + ### + ### Body Functions + ### + private function mail_body() { + switch($this->msg_type) { + case 'plain': + $r = $this->enc_str($this->body, $this->enc); + break; + case 'alt': + $r = $this->begin_b($this->boundary[1], '', 'text/plain', ''); + $r .= $this->enc_str($this->body_alt, $this->enc) . $this->eol.$this->eol; + $r .= $this->begin_b($this->boundary[1], '', 'text/html', ''); + $r .= $this->enc_str($this->body, $this->enc) . $this->eol.$this->eol; + $r .= $this->end_b($this->boundary[1]); + break; + case 'attachments': + $r = $this->begin_b($this->boundary[1], '', '', ''); + $r .= $this->enc_str($this->body, $this->enc) . $this->eol; + $r .= $this->attach_files(); + break; + case 'alt_attachments': + $r = sprintf("--%s%s", $this->boundary[1], $this->eol); + $r .= sprintf("Content-Type: %s;%s" . "\tboundary=\"%s\"%s", 'multipart/alternative', $this->eol, $this->boundary[2], $this->eol.$this->eol); + $r .= $this->begin_b($this->boundary[2], '', 'text/plain', '') . $this->eol; + $r .= $this->enc_str($this->body_alt, $this->enc) . $this->eol.$this->eol; + $r .= $this->begin_b($this->boundary[2], '', 'text/html', '') . $this->eol; + $r .= $this->enc_str($this->body, $this->enc) . $this->eol.$this->eol; + $r .= $this->end_b($this->boundary[2]); + $r .= $this->attach_files(); + break; + } + return $this->is_err() ? '' : $r; + } + private function begin_b($boundary, $char_set, $content_type, $encoding) { + if($char_set == '') + $char_set = $this->char_set; + if($content_type == '') + $content_type = $this->content_type; + if($encoding == '') + $encoding = $this->enc; + + $r = $this->t_line('--' . $boundary); + $r .= sprintf("Content-Type: %s; charset = \"%s\"", $content_type, $char_set) . $this->eol; + return $r . $this->h_line('Content-Transfer-Encoding', $encoding) . $this->eol; + } + private function end_b($b) { + return $this->eol . '--' . $b . '--' . $this->eol; + } + private function t_line($v) { + return $v . $this->eol; + } + private function wrap_t($message, $length, $qp_mode = false) { + + $message = $this->fix_eol($message); + if (substr($message, -1) == $this->eol) + $message = substr($message, 0, -1); + + $is_qp_crlf = ($qp_mode) ? sprintf(" =%s", $this->eol) : $this->eol; + $is_utf8 = (strtolower($this->char_set) == "utf-8"); + + $line = explode($this->eol, $message); + $message = ''; + for ($i=0 ;$i < count($line); $i++) { + $tmp_line = explode(' ', $line[$i]); + $buf = ''; + for ($e = 0; $e $length)) { + $spc_n = $length - strlen($buf) - 1; + if ($e != 0) { + + if ($spc_n > 20) { + $len = $spc_n; + if ($is_utf8) $len = $this->utf8_char_b($word, $len); + elseif (substr($word, $len - 1, 1) == "=") $len--; + elseif (substr($word, $len - 2, 1) == "=") $len -= 2; + + $part = substr($word, 0, $len); + $word = substr($word, $len); + $buf .= ' ' . $part; + $message .= $buf . sprintf("=%s", $this->eol); + + } else + $message .= $buf . $is_qp_crlf; + + $buf = ''; + } + while (strlen($word) > 0) { + $len = $length; + if ($is_utf8) + $len = $this->utf8_char_b($word, $len); + elseif (substr($word, $len - 1, 1) == "=") + $len--; + elseif (substr($word, $len - 2, 1) == "=") + $len -= 2; + + $part = substr($word, 0, $len); + $word = substr($word, $len); + + if (strlen($word) > 0) + $message .= $part . sprintf("=%s", $this->eol); + else + $buf = $part; + } + } else { + $buf_o = $buf; + $buf .= ($e == 0) ? $word : (' ' . $word); + + if (strlen($buf) > $length and $buf_o != '') { + $message .= $buf_o . $is_qp_crlf; + $buf = $word; + } + } + } + $message .= $buf . $this->eol; + } + return $message; + } + private function utf8_char_b($t, $max_len) { + $foundSplitPos = false; + $chk_back = 3; + + while (!$foundSplitPos) { + $lastChunk = substr($t, $max_len - $chk_back, $chk_back); + $enc_tCharPos = strpos($lastChunk, "="); + if ($enc_tCharPos !== false) { + $hex = substr($t, $max_len - $chk_back + $enc_tCharPos + 1, 2); + $dec = hexdec($hex); + if ($dec < 128) { + $max_len = ($enc_tCharPos == 0) ? $max_len : + $max_len - ($chk_back - $enc_tCharPos); + $foundSplitPos = true; + } elseif ($dec >= 192) { + $max_len = $max_len - ($chk_back - $enc_tCharPos); + $foundSplitPos = true; + } elseif ($dec < 192) + $chk_back += 3; + } else + $foundSplitPos = true; + + } + return $max_len; + } + + ### + ### Send Functions + ### + public function send() { + $this->err_count = 0; + + if((count($this->to) + count($this->cc) + count($this->bcc)) < 1) { + $this->set_err( __('You must provide at least one recipient email address.','cforms') ); + return false; + } + + if(!empty($this->body_alt)) + $this->content_type = 'multipart/alternative'; + + if(count($this->up) < 1 && strlen($this->body_alt) < 1) + $this->msg_type = 'plain'; + else { + if(count($this->up) > 0) + $this->msg_type = 'attachments'; + if(strlen($this->body_alt) > 0 && count($this->up) < 1) + $this->msg_type = 'alt'; + if(strlen($this->body_alt) > 0 && count($this->up) > 0) + $this->msg_type = 'alt_attachments'; + } + + $header = $this->mail_header(); + $body = $this->mail_body(); + + ### bail out + if ($body == '') return false; + + $to = ''; + for($i = 0; $i < count($this->to); $i++) + $to .= (($i != 0) ? ', ':'' ) . $this->addr_fmt($this->to[$i]); + + $to_all = split(',', $to); + $params = sprintf("-oi -f %s", $this->sender); + + if ($this->sender != '' && strlen(ini_get('safe_mode'))< 1) { + $old_from = ini_get('sendmail_from'); + ini_set('sendmail_from', $this->sender); + if ($this->split_to === true && count($to_all) > 1) { + foreach ($to_all as $key => $val) + $rt = @mail($val, $this->enc_h($this->fix_header($this->subj)), $body, $header, $params); + } else + $rt = @mail($to, $this->enc_h($this->fix_header($this->subj)), $body, $header, $params); + } else { + if ($this->split_to === true && count($to_all) > 1) { + foreach ($to_all as $key => $val) + $rt = @mail($val, $this->enc_h($this->fix_header($this->subj)), $body, $header, $params); + } else + $rt = @mail($to, $this->enc_h($this->fix_header($this->subj)), $body, $header); + } + + if (isset($old_from)) + ini_set('sendmail_from', $old_from); + + if(!$rt) { + $this->set_err(__('Could not instantiate mail function.','cforms')); + return false; + } + + return true; + } + + public function add_file($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') { + if(!@is_file($path)) { + $this->set_err(__('Could not access file: ','cforms')); + return false; + } + + $filename = basename($path); + $name = ($name == '') ? $filename : $name; + + $t = count($this->up); + $this->up[$t][0] = $path; + $this->up[$t][1] = $filename; + $this->up[$t][2] = $name; + $this->up[$t][3] = $encoding; + $this->up[$t][4] = $type; + $this->up[$t][6] = 'attachment'; + $this->up[$t][7] = 0; + return true; + } + + private function attach_files() { + $mime_arr = array(); + for($i = 0; $i < count($this->up); $i++) { + + $path = $this->up[$i][0]; + $filename = $this->up[$i][1]; + $name = $this->up[$i][2]; + $encoding = $this->up[$i][3]; + $type = $this->up[$i][4]; + $dispo = $this->up[$i][6]; + $cid = $this->up[$i][7]; + + $mime_arr[] = sprintf("--%s%s", $this->boundary[1], $this->eol); + $mime_arr[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->enc_h($this->fix_header($name)), $this->eol); + $mime_arr[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->eol); + + if($dispo == 'inline') + $mime_arr[] = sprintf("Content-ID: <%s>%s", $cid, $this->eol); + + $mime_arr[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $dispo, $this->enc_h($this->fix_header($name)), $this->eol.$this->eol); + + if($bString) { + + $mime_arr[] = $this->enc_str($string, $encoding); + if($this->is_err()) return ''; + $mime_arr[] = $this->eol.$this->eol; + + } else { + + $mime_arr[] = $this->enc_file($path, $encoding); + if($this->is_err()) return ''; + $mime_arr[] = $this->eol.$this->eol; + + } + } + $mime_arr[] = sprintf("--%s--%s", $this->boundary[1], $this->eol); + return join('', $mime_arr); + } + + private function enc_file ($path, $encoding = 'base64') { + if(!@$fd = fopen($path, 'rb')) { + $this->set_err(__('File Error: Could not open file: ','cforms')); + return ''; + } + if (function_exists('get_magic_quotes')) { + function get_magic_quotes() { + return false; + } + } + if (PHP_VERSION < 6) { + $magic_q = get_magic_quotes_runtime(); + set_magic_quotes_runtime(0); + } + $buffer = file_get_contents($path); + $buffer = $this->enc_str($buffer, $encoding); + fclose($fd); + + if (PHP_VERSION < 6) { set_magic_quotes_runtime($magic_q); } + return $buffer; + } + + private function enc_str ($str, $e = 'base64') { + $enc_t = ''; + switch(strtolower($e)) { + case 'base64': $enc_t = chunk_split(base64_encode($str), 76, $this->eol); break; + case '7bit': + case '8bit': $enc_t = $this->fix_eol($str) . ((substr($enc_t, -(strlen($this->eol))) != $this->eol) ? $this->eol : ''); break; + case 'binary': $enc_t = $str; break; + case 'quoted-printable': $enc_t = $this->enc_qp($str); break; + default: $this->set_err(__('Unknown encoding: ','cforms')); break; + } + return $enc_t; + } + + private function enc_h ($str, $position = 'text') { + $x = 0; + + switch (strtolower($position)) { + case 'phrase': + if (!preg_match('/[\200-\377]/', $str)) { + + $enc_t = addcslashes($str, "\0..\37\177\\\""); + return (($str == $enc_t) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) ? $enc_t :"\"$enc_t\""; + + } + $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches); + break; + case 'comment': + $x = preg_match_all('/[()"]/', $str, $matches); + + case 'text': + default: + $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches); + break; + } + + if ($x == 0) + return ($str); + + $maxlen = 75 - 7 - strlen($this->char_set); + + if (strlen($str)/3 < $x) { + $encoding = 'B'; + if (function_exists('mb_strlen') && (strlen($str) > mb_strlen($str, $this->char_set)) ) + $enc_t = $this->enc_special($str); + else { + $enc_t = base64_encode($str); + $maxlen -= $maxlen % 4; + $enc_t = trim(chunk_split($enc_t, $maxlen, "\n")); + } + } else { + $encoding = 'Q'; + $enc_t = $this->enc_q($str, $position); + $enc_t = $this->wrap_t($enc_t, $maxlen, true); + $enc_t = str_replace('='.$this->eol, "\n", trim($enc_t)); + } + + $enc_t = preg_replace('/^(.*)$/m', " =?".$this->char_set."?$encoding?\\1?=", $enc_t); + return trim(str_replace("\n", $this->eol, $enc_t)); + } + + private function enc_special($str) { + $start = "=?".$this->char_set."?B?"; + $end = "?="; + $enc_t = ""; + + $mb_length = mb_strlen($str, $this->char_set); + $length = 75 - strlen($start) - strlen($end); + $ratio = $mb_length / strlen($str); + $offset = $avgLength = floor($length * $ratio * .75); + + for ($i = 0; $i < $mb_length; $i += $offset) { + $chk_back = 0; + + do { + $offset = $avgLength - $chk_back; + $rest = mb_substr($str, $i, $offset, $this->char_set); + $rest = base64_encode($rest); + $chk_back++; + } + while (strlen($rest) > $length); + $enc_t .= $rest . $this->eol; + } + + return substr($enc_t, 0, -strlen($this->eol)); + } + + private function enc_qp( $input = '', $line_max = 76, $space_conv = false ) { + $hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'); + $lines = preg_split('/(?:\r\n|\r|\n)/', $input); + $escape = '='; + $output = ''; + while( list(, $line) = each($lines) ) { + $l_len = strlen($line); + $newline = ''; + for($i = 0; $i < $l_len; $i++) { + $c = substr( $line, $i, 1 ); + $dec = ord( $c ); + if ( ( $i == 0 ) && ( $dec == 46 ) ) $c = '=2E'; + if ( $dec == 32 ) { + + if ( $i == ( $l_len - 1 ) ) $c = '=20'; + else if ( $space_conv ) $c = '=20'; + + } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { + $h2 = floor($dec/16); + $h1 = floor($dec%16); + $c = $escape.$hex[$h2].$hex[$h1]; + } + if ( (strlen($newline) + strlen($c)) >= $line_max ) { + $output .= $newline.$escape.$this->eol; + $newline = ''; + if ( $dec == 46 ) $c = '=2E'; + } + $newline .= $c; + } + $output .= $newline.$this->eol; + } + return trim($output); + } + private function enc_q ($str, $position = 'text') { + $enc_t = preg_replace("[\r\n]", '', $str); + switch (strtolower($position)) { + case 'phrase': $enc_t = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $enc_t); break; + case 'comment': $enc_t = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $enc_t); + case 'text': + default: $enc_t = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e', "'='.sprintf('%02X', ord('\\1'))", $enc_t); break; + } + return str_replace(' ', '_', $enc_t); + } + private function set_err($m) { + $this->err = $m; + $this->err_count++; + } + private static function get_date() { + $d = date('Z'); + $ds = ($d < 0) ? '-' : '+'; + $d = abs($d); + $d = (int)($d/3600)*100 + ($d%3600)/60; + $r = sprintf("%s %s%04d", date('D, j M Y H:i:s'), $ds, $d); + return $r; + } + private function server_name() { + if (!empty($this->host)) return $this->host; + elseif (isset($_SERVER['SERVER_NAME'])) return $_SERVER['SERVER_NAME']; + else return "localhost.localdomain"; + } + private function fix_eol($s) { + $s = str_replace("\r\n", "\n", $s); + $s = str_replace("\r", "\n", $s); + $s = str_replace("\n", $this->eol, $s); + return $s; + } +} +?> \ No newline at end of file diff --git a/lib_functions.php b/lib_functions.php index 7de7809..471f4db 100644 --- a/lib_functions.php +++ b/lib_functions.php @@ -1,7 +1,9 @@

    '.__('cforms error','cforms').'

    '.__('You do not have the proper privileges to access this page.','cforms').'

'; @@ -77,33 +77,38 @@ function check_access_priv($r='manage_cforms'){ } -### Add cforms menu to admin + +### add cforms menu function cforms_menu() { global $wpdb, $submenu; $cformsSettings = get_option('cforms_settings'); + $p = $cformsSettings['global']['plugindir']; $tablesup = ($wpdb->get_var("show tables like '$wpdb->cformssubmissions'") == $wpdb->cformssubmissions)?true:false; - $optfile = $cformsSettings['global']['plugindir'].'/cforms-options.php'; + $o = $p.'/cforms-options.php'; if (function_exists('add_menu_page')) { - add_menu_page(__('cformsII', 'cforms'), __('cformsII', 'cforms'), 'manage_cforms', $optfile, '', $cformsSettings['global']['cforms_root'].'/images/cformsicon.gif'); + add_menu_page(__('cformsII', 'cforms'), __('cformsII', 'cforms'), 'manage_cforms', $o, '', $cformsSettings['global']['cforms_root'].'/images/cformsicon.gif'); } elseif (function_exists('add_management_page')) { - add_management_page(__('cformsII', 'cforms'), __('cformsII', 'cforms'), 'manage_cforms', $optfile); + add_management_page(__('cformsII', 'cforms'), __('cformsII', 'cforms'), 'manage_cforms', $o); } if (function_exists('add_submenu_page')) { - add_submenu_page($optfile, __('Form Settings', 'cforms'), __('Form Settings', 'cforms'), 'manage_cforms', $optfile); - add_submenu_page($optfile, __('Global Settings', 'cforms'), __('Global Settings', 'cforms'), 'manage_cforms', $cformsSettings['global']['plugindir'].'/cforms-global-settings.php'); + add_submenu_page($o, __('Form Settings', 'cforms'), __('Form Settings', 'cforms'), 'manage_cforms', $o); + add_submenu_page($o, __('Global Settings', 'cforms'), __('Global Settings', 'cforms'), 'manage_cforms', $p.'/cforms-global-settings.php'); if ( ($tablesup || isset($_REQUEST['cforms_database'])) && !isset($_REQUEST['deletetables']) ) - add_submenu_page($optfile, __('Tracking', 'cforms'), __('Tracking', 'cforms'), 'track_cforms', $cformsSettings['global']['plugindir'].'/cforms-database.php'); - add_submenu_page($optfile, __('Styling', 'cforms'), __('Styling', 'cforms'), 'manage_cforms', $cformsSettings['global']['plugindir'].'/cforms-css.php'); - add_submenu_page($optfile, __('Help!', 'cforms'), __('Help!', 'cforms'), 'manage_cforms', $cformsSettings['global']['plugindir'].'/cforms-help.php'); + add_submenu_page($o, __('Tracking', 'cforms'), __('Tracking', 'cforms'), 'track_cforms', $p.'/cforms-database.php'); + add_submenu_page($o, __('Styling', 'cforms'), __('Styling', 'cforms'), 'manage_cforms', $p.'/cforms-css.php'); + add_submenu_page($o, __('Help!', 'cforms'), __('Help!', 'cforms'), 'manage_cforms', $p.'/cforms-help.php'); } } + + +### cforms init function cforms_init() { global $wpdb; @@ -118,15 +123,6 @@ function cforms_init() { $role->add_cap('track_cforms'); } - ### alter tracking tables if needed - $tables = $wpdb->get_col("SHOW TABLES FROM `" . DB_NAME . "` LIKE '$wpdb->cformssubmissions'",0); - - if( $tables[0]==$wpdb->cformssubmissions ) { - $columns = $wpdb->get_results("SHOW COLUMNS FROM {$wpdb->cformssubmissions}"); - if ( $columns[2]->Field == 'date' ) - $result = $wpdb->query("ALTER TABLE `{$wpdb->cformssubmissions}` CHANGE `date` `sub_date` TIMESTAMP"); - } - ### try to adjust cforms.js automatically $jsContent = $jsContentNew = ''; if ( $fhandle = fopen(dirname(__FILE__).'/js/cforms.js', "r") ) { @@ -160,6 +156,8 @@ function cforms_init() { } + + ### check for abspath.php function abspath_check() { global $cformsSettings; @@ -173,6 +171,8 @@ function abspath_check() { } } + + ### get WP plugin dir function get_cf_plugindir(){ $cr = defined('PLUGINDIR') ? get_option('siteurl') .'/'. PLUGINDIR . '/' : get_option('siteurl') . '/wp-content/plugins/'; @@ -181,41 +181,44 @@ function get_cf_plugindir(){ return $cr; } + + ### cforms JS scripts function cforms_scripts() { - global $wp_scripts, $localversion; ### get options $cformsSettings = get_option('cforms_settings'); + $r=$cformsSettings['global']['cforms_root']; ### global settings $request_uri = get_request_uri(); if ( version_compare(strval($wp_scripts->registered['jquery']->ver), strval("1.2.6") ) === -1 ){ wp_deregister_script('jquery'); - wp_register_script('jquery',$cformsSettings['global']['cforms_root'].'/js/jquery.js',false,'1.2.6'); + wp_register_script('jquery',$r.'/js/jquery.js',false,'1.2.6'); wp_enqueue_script('jquery'); } - echo '' . "\n"; + echo '' . "\n"; if ( strpos($request_uri,'cforms-options')!==false ){ - echo '' . "\n"; - wp_register_script('cforms_admin_cal',$cformsSettings['global']['cforms_root'].'/js/cformsadmincal.js',false,$localversion); + echo '' . "\n"; + wp_register_script('cforms_admin_cal',$r.'/js/cformsadmincal.js',false,$localversion); wp_enqueue_script('cforms_admin_cal'); } wp_deregister_script('prototype'); - wp_register_script('cforms_interface',$cformsSettings['global']['cforms_root'].'/js/interface.js',false,$localversion); - wp_register_script('cforms_admin',$cformsSettings['global']['cforms_root'].'/js/cformsadmin.js',false,$localversion); + wp_register_script('cforms_interface',$r.'/js/interface.js',false,$localversion); + wp_register_script('cforms_admin',$r.'/js/cformsadmin.js',false,$localversion); wp_enqueue_script('cforms_interface'); wp_enqueue_script('cforms_admin'); } + ### some css for arranging the table fields in wp-admin function cforms_options_page_style() { @@ -223,65 +226,67 @@ function cforms_options_page_style() { $cformsSettings = get_option('cforms_settings'); $nav = $cformsSettings['global']['cforms_dp_nav']; - echo "\n\n"; + echo "\n\n"; echo ''."\n"; - echo ''."\n\n"; + echo "/* ]]> */\n".''."\n"; + echo ''."\n\n"; } -### footer unbder all options pages + + +### footer function cforms_footer() { global $localversion; ?>

@@ -290,20 +295,21 @@ function cforms_footer() { check here.', 'cforms') ?>

-

Version v

-
-

-

Plugins tab and either disable the plugin, or toggle its status (disable/enable) to revive cforms!', 'cforms') ?>

-

don\'t select the checkbox for activation on the plugin page.', 'cforms') ?>

+
+

+

Plugins tab and either disable the plugin, or toggle its status (disable/enable) to revive cforms!', 'cforms') ?>

+

don\'t select the checkbox for activation on the plugin page.', 'cforms') ?>

'' ) - $track['$$$'.$customTrackingID] = $trackname.$inc; + ### determine tracked field name + $inc=''; + $trackname = trim( ($field_type == "upload")?$field_name.'[*'.($no==''?1:$no).']':$field_name ); + if ( array_key_exists($trackname, $track) ){ + if ( $trackinstance[$trackname]=='' ) + $trackinstance[$trackname]=2; + $inc = '___'.($trackinstance[$trackname]++); + } + $track['$$$'.$i] = $trackname.$inc; + $track[$trackname.$inc] = $value; + if( $customTrackingID<>'' ) + $track['$$$'.$customTrackingID] = $trackname.$inc; } ### for all fields @@ -266,8 +263,8 @@ $inSession = '0'; } - $r = formatEmail($track,$no); + $r = formatEmail($track,$no); $formdata = $r['text']; $htmlformdata = $r['html']; @@ -275,7 +272,7 @@ ### ### FIRST into the database is required! ### - $subID = ( substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='2' && !$send2author )?'noid':write_tracking_record($no,$field_email); + $subID = ( $isTAF =='2' && !$send2author )?'noid':write_tracking_record($no,$field_email); ### @@ -287,256 +284,235 @@ my_cforms_action($trackf); + ### ### set reply-to & watch out for T-A-F ### $replyto = preg_replace( array('/;|#|\|/'), array(','), stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_email']) ); - ### multiple recipients? and to whom is the email sent? - if ( substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='2' && $track['send2author']=='1'){ - $to = $wpdb->get_results("SELECT U.user_email FROM $wpdb->users as U, $wpdb->posts as P WHERE P.ID = {$_POST['comment_post_ID']} AND U.ID=P.post_author"); + ### WP comment form > email to author + if ( $isTAF=='2' && $track['send2author']=='1'){ + $to = $wpdb->get_results("SELECT U.user_email FROM $wpdb->users as U, $wpdb->posts as P WHERE P.ID = ".($_POST['comment_post_ID'.$no])." AND U.ID=P.post_author"); $to = $replyto = ($to[0]->user_email<>'')?$to[0]->user_email:$replyto; } + ### multiple recipients? and to whom is the email sent? else if ( $to_one <> "-1" ) { $all_to_email = explode(',', $replyto); $replyto = $to = $all_to_email[ $to_one ]; } else $to = $replyto; - ### T-A-F? then overwrite - if ( $taf_youremail && $taf_friendsemail && substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='1' ) + ### T-A-F overwrite + if ( $taf_youremail && $taf_friendsemail && $isTAF=='1' ) $replyto = "\"{$taf_yourname}\" <{$taf_youremail}>"; + ### + ### Files attached?? + ### + if(is_array($file)){ + if( $subID<>-1 && $inSession!='0' ) + cf_move_files($no, $subID); + else + cf_move_files($no, 'xx'); + } + if( $inSession=='0' && is_array($_SESSION['cforms']['upload']) ){ + foreach ( array_keys($_SESSION['cforms']['upload']) as $n ) + foreach ( array_keys($_SESSION['cforms']['upload'][$n]) as $m ) + if( file_exists($_SESSION['cforms']['upload'][$n][$m]) ) + rename($_SESSION['cforms']['upload'][$n][$m],str_replace('xx',$subID,$_SESSION['cforms']['upload'][$n][$m])); + } + + + ### ### ready to send email - ### email header ### - $eol = "\n"; + ### $frommail = check_cust_vars(stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_fromemail']),$track,$no); - if ( $frommail=='' ) - $frommail = '"'.get_option('blogname').'" '; - - $headers = "From: ". $frommail . $eol; - $headers.= "Reply-To: " . $field_email . $eol; - if ( ($tempBcc=stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_bcc'])) != "") - $headers.= "Bcc: " . $tempBcc . $eol; + ### logic: dynamic admin email address + if ( function_exists('my_cforms_logic') ) + $to = my_cforms_logic($trackf, $to,'adminTO'); ### use trackf! - $headers.= "MIME-Version: 1.0" .$eol; - $headers.= "Content-Type: multipart/mixed; boundary=\"----MIME_BOUNDRY_main_message\""; + ### either use configured subject or user determined + ### now replace the left over {xyz} variables with the input data + $vsubject = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_subject']); + $vsubject = check_default_vars($vsubject,$no); + $vsubject = check_cust_vars($vsubject,$track,$no); ### prep message text, replace variables - $message = $cformsSettings['form'.$no]['cforms'.$no.'_header']; + $message = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_header']); + if ( function_exists('my_cforms_logic') ) + $message = my_cforms_logic($trackf, $message,'adminEmailTXT'); $message = check_default_vars($message,$no); $message = check_cust_vars($message,$track,$no); - ### text & html message - $fmessage = "This is a multi-part message in MIME format." . $eol; - $fmessage .= "------MIME_BOUNDRY_main_message" . $eol; - - - ### HTML message part? - $html_show = ( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],2,1)=='1' )?true:false; - $htmlmessage = ''; - - if ($html_show) { - $fmessage .= "Content-Type: multipart/alternative; boundary=\"----MIME_BOUNDRY_sub_message\"" . $eol . $eol; - $fmessage .= "------MIME_BOUNDRY_sub_message" . $eol; - $fmessage .= "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"" . $eol; - $fmessage .= "Content-Transfer-Encoding: quoted-printable" . $eol . $eol; + ### actual user message + $htmlmessage=''; + if( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],2,1)=='1' ){ + $htmlmessage = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_header_html']); + if ( function_exists('my_cforms_logic') ) + $htmlmessage = my_cforms_logic($trackf, $htmlmessage,'adminEmailHTML'); + $htmlmessage = check_default_vars($htmlmessage,$no); + $htmlmessage = check_cust_vars($htmlmessage,$track,$no); } - else - $fmessage .= "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"" . $eol . $eol; - - $fmessage .= $message . $eol; - - ### need to add form data summary or is all in the header anyway? - if(substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],0,1)=='1') - $fmessage .= $eol . $formdata . $eol; - - - ### HTML text - if ( $html_show ) { - - ### actual user message - $htmlmessage = $cformsSettings['form'.$no]['cforms'.$no.'_header_html']; - $htmlmessage = check_default_vars($htmlmessage,$no); - $htmlmessage = str_replace('=','=3D', stripslashes( check_cust_vars($htmlmessage,$track,$no) ) ); + $mail = new cf_mail($no,$frommail,$to,$field_email, true); + $mail->subj = $vsubject; + $mail->char_set = 'utf-8'; - $fmessage .= "------MIME_BOUNDRY_sub_message" . $eol; - $fmessage .= "Content-Type: text/html; charset=\"" . get_option('blog_charset') . "\"". $eol; - $fmessage .= "Content-Transfer-Encoding: quoted-printable" . $eol . $eol;; - - $fmessage .= "" . $eol; - - $fmessage .= "" . $eol; - $fmessage .= "" . $eol; - - $fmessage .= $htmlmessage; - - ### need to add form data summary or is all in the header anyway? - if(substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],1,1)=='1') - $fmessage .= $eol . $htmlformdata; - - $fmessage .= "" . $eol . $eol; + ### HTML email + if ( $mail->html_show ) { + $mail->is_html(true); + $mail->body = "".$mail->eol."".$htmlmessage.( $mail->f_html?$mail->eol.$htmlformdata:'').$mail->eol."".$mail->eol; + $mail->body_alt = $message . ($mail->f_txt?$mail->eol.$formdata:''); } + else + $mail->body = $message . ($mail->f_txt?$mail->eol.$formdata:''); - ### end of sub message - - $attached=''; - ### possibly add attachment - if ( isset($_FILES['cf_uploadfile'.$no]) && !$cformsSettings['form'.$no]['cforms'.$no.'_noattachments'] ) { - ### different header for attached files - ### - $all_mime = array("txt"=>"text/plain", "htm"=>"text/html", "html"=>"text/html", "gif"=>"image/gif", "png"=>"image/x-png", - "jpeg"=>"image/jpeg", "jpg"=>"image/jpeg", "tif"=>"image/tiff", "bmp"=>"image/x-ms-bmp", "wav"=>"audio/x-wav", - "mpeg"=>"video/mpeg", "mpg"=>"video/mpeg", "mov"=>"video/quicktime", "avi"=>"video/x-msvideo", - "rtf"=>"application/rtf", "pdf"=>"application/pdf", "zip"=>"application/zip", "hqx"=>"application/mac-binhex40", - "sit"=>"application/x-stuffit", "exe"=>"application/octet-stream", "ppz"=>"application/mspowerpoint", - "ppt"=>"application/vnd.ms-powerpoint", "ppj"=>"application/vnd.ms-project", "xls"=>"application/vnd.ms-excel", - "doc"=>"application/msword"); - if ( $html_show ) - $fmessage .= "------MIME_BOUNDRY_sub_message--" . $eol; - for ( $filefield=0; $filefield < count($_FILES['cf_uploadfile'.$no][name]); $filefield++) { + ### Skip admin email when MP form + $MPok = !$cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_form'] || ($cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_form'] && !$cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_email']); - if ( $filedata[$filefield] <> '' ){ - $mime = (!$all_mime[$fileext[$filefield]])?'application/octet-stream':$all_mime[$fileext[$filefield]]; + if ( $MPok ){ - $attached .= "------MIME_BOUNDRY_main_message" . $eol; - $attached .= "Content-Type: $mime;\n\tname=\"" . $file['name'][$filefield] . "\"" . $eol; - $attached .= "Content-Transfer-Encoding: base64" . $eol; - $attached .= "Content-Disposition: inline;\n\tfilename=\"" . $file['name'][$filefield] . "\"\n" . $eol; - $attached .= $eol . $filedata[$filefield]; ### The base64 encoded message + ### + ### adding attachments now + ### + $attached=''; + global $fdata,$fpointer; + $fdata = array(); + $fpointer = 0; + + ### attachments wanted? + if ( !$cformsSettings['form'.$no]['cforms'.$no.'_noattachments'] ) { + + ### no session, single form w/ files + if ( $inSession!='0' && is_array($file) ){ + foreach( $file[tmp_name] as $fn ){ + cf_base64($fn); + } + } + ### session w/ files + if( $inSession=='0' && is_array($_SESSION['cforms']['upload']) ){ + foreach ( array_keys($_SESSION['cforms']['upload']) as $n ) + foreach ( array_keys($_SESSION['cforms']['upload'][$n]) as $m ) + cf_base64(str_replace('xx',$subID,$_SESSION['cforms']['upload'][$n][$m])); + } + ### parse through all files + foreach ( $fdata as $file ) { + if ( $file[name] <> '' ){ + $n = substr( $file[name], strrpos($file[name],$cformsSettings['global']['cforms_IIS'])+1, strlen($file[name]) ); + $m = getMIME( strtolower( substr($n,strrpos($n, '.')+1,strlen($n)) ) ); + $mail->add_file($file[name], $n,'base64',$m); ### optional name } + } - } - - } - + } + ### end adding attachments - ### - ### finally send mails - ### - ### either use configured subject or user determined - ### now replace the left over {xyz} variables with the input data - $vsubject = $cformsSettings['form'.$no]['cforms'.$no.'_subject']; - $vsubject = check_default_vars($vsubject,$no); - $vsubject = stripslashes( check_cust_vars($vsubject,$track,$no) ); - ### logic: dynamic admin email address - if ( function_exists('my_cforms_logic') ) - $to = my_cforms_logic($trackf, $to,'adminTO'); ### use trackf! - - ### SMTP server or native PHP mail() ? - $MPok = !$cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_form'] || ($cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_form'] && !$cformsSettings['form'.$no]['mp']['cforms'.$no.'_mp_email']); - - if ( $MPok ){ - - if ( $smtpsettings[0]=='1' ) - $sentadmin = cforms_phpmailer( $no, $frommail, $field_email, $to, $vsubject, $message, $formdata, $htmlmessage, $htmlformdata, $fileext ); + ### + ### Shoot: + ### + ### + if( $cformsSettings['form'.$no]['cforms'.$no.'_emailoff']=='1' ) + $sentadmin = 1; + else if ( $smtpsettings[0]=='1' ) + $sentadmin = cforms_phpmailer( $no, $mail->frommail, $field_email, $to, $vsubject, $message, $formdata, $htmlmessage, $htmlformdata, '1' ); else - $sentadmin = @mail($to, encode_header($vsubject), $fmessage.$attached, $headers); + $sentadmin = $mail->send(); + + if( $sentadmin == 1 ) { - if( $sentadmin==1 ) { ### send copy or notification? - if ( ($cformsSettings['form'.$no]['cforms'.$no.'_confirm']=='1' && $field_email<>'') || ($ccme&&$trackf[$ccme]<>'-') ){ ### not if no email & already CC'ed + ### not if no email & already CC'ed + if ( ($cformsSettings['form'.$no]['cforms'.$no.'_confirm']=='1' && $field_email<>'') || ($ccme&&$trackf[$ccme]<>'-') ){ $frommail = check_cust_vars(stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_fromemail']),$track,$no); - if ( $frommail=='' ) - $frommail = '"'.get_option('blogname').'" '; - - ### HTML message part? - $html_show_ac = ( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],3,1)=='1' )?true:false; - $automsg = ''; - - $headers2 = "From: ". $frommail . $eol; - $headers2.= "Reply-To: " . $replyto . $eol; - - if ( $taf_youremail && $taf_friendsemail && substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='1' ) ### TAF: add CC - $headers2.= "CC: " . $replyto . $eol; - - $headers2.= "MIME-Version: 1.0" .$eol; - - if( $html_show_ac || ($html_show && ($ccme&&$trackf[$ccme]<>'-')) ){ - $headers2.= "Content-Type: multipart/alternative; boundary=\"----MIME_BOUNDRY_main_message\""; - $automsg .= "This is a multi-part message in MIME format." . $eol; - $automsg .= "------MIME_BOUNDRY_main_message" . $eol; - $automsg .= "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"; format=flowed" . $eol; - $automsg .= "Content-Transfer-Encoding: quoted-printable" . $eol . $eol; - } - else - $headers2.= "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"; format=flowed"; - ### actual user message - $cmsg = $cformsSettings['form'.$no]['cforms'.$no.'_cmsg']; + $cmsg = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_cmsg']); + if ( function_exists('my_cforms_logic') ) + $cmsg = my_cforms_logic($trackf, $cmsg,'autoConfTXT'); $cmsg = check_default_vars($cmsg,$no); $cmsg = check_cust_vars($cmsg,$track,$no); - - ### text text - $automsg .= $cmsg . $eol; - ### HTML text - if ( $html_show_ac ) { - - ### actual user message - $cmsghtml = $cformsSettings['form'.$no]['cforms'.$no.'_cmsg_html']; + $cmsghtml=''; + if( substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],3,1)=='1' ){ + $cmsghtml = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_cmsg_html']); + if ( function_exists('my_cforms_logic') ) + $cmsghtml = my_cforms_logic($trackf, $cmsghtml,'autoConfHTML'); $cmsghtml = check_default_vars($cmsghtml,$no); - $cmsghtml = str_replace(array("=","\n"),array("=3D","
\n"), check_cust_vars($cmsghtml,$track,$no) ); - - $automsg .= "------MIME_BOUNDRY_main_message" . $eol; - $automsg .= "Content-Type: text/html; charset=\"" . get_option('blog_charset') . "\"". $eol; - $automsg .= "Content-Transfer-Encoding: quoted-printable" . $eol . $eol;; - - $automsg .= "" . $eol; - $automsg .= "" . $eol; - $automsg .= $cmsghtml; - $automsg .= "" . $eol . $eol; - } + $cmsghtml = check_cust_vars($cmsghtml,$track,$no); + } - $subject2 = $cformsSettings['form'.$no]['cforms'.$no.'_csubject']; + ### subject + $subject2 = stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_csubject']); $subject2 = check_default_vars($subject2,$no); $subject2 = check_cust_vars($subject2,$track,$no); ### different cc & ac subjects? - $t=explode('$#$',$subject2); - $t[1] = ($t[1]<>'') ? $t[1] : $t[0]; + $s=explode('$#$',$subject2); + $s[1] = ($s[1]<>'') ? $s[1] : $s[0]; ### email tracking via 3rd party? - $field_email = ($cformsSettings['form'.$no]['cforms'.$no.'_tracking']<>'')?$field_email.$cformsSettings['form'.$no]['cforms'.$no.'_tracking']:$field_email; - ### if in Tell-A-Friend Mode, then overwrite header stuff... - if ( $taf_youremail && $taf_friendsemail && substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='1' ) + if ( $taf_youremail && $taf_friendsemail && $isTAF=='1' ) $field_email = "\"{$taf_friendsname}\" <{$taf_friendsemail}>"; + else + $field_email = ($cformsSettings['form'.$no]['cforms'.$no.'_tracking']<>'')?$field_email.$cformsSettings['form'.$no]['cforms'.$no.'_tracking']:$field_email; + + $mail = new cf_mail($no,$frommail,$field_email,$replyto); + $mail->char_set = 'utf-8'; + ### CC or auto conf? if ( $ccme&&$trackf[$ccme]<>'-' ) { if ( $smtpsettings[0]=='1' ) - $sent = cforms_phpmailer( $no, $frommail, $replyto, $field_email, stripslashes($t[1]), $message, $formdata, $htmlmessage, $htmlformdata, 'ac' ); - else - $sent = @mail($field_email, encode_header(stripslashes($t[1])), $fmessage, $headers2); ### the admin one + $sent = cforms_phpmailer( $no, $frommail, $replyto, $field_email, $s[1], $message, $formdata, $htmlmessage, $htmlformdata, 'ac' ); + else{ + $mail->subj = $s[1]; + if ( $mail->html_show_ac ) { + $mail->is_html(true); + $mail->body = "".$mail->eol."".$htmlmessage.( $mail->f_html?$mail->eol.$htmlformdata:'').$mail->eol."".$mail->eol; + $mail->body_alt = $message . ($mail->f_txt?$mail->eol.$formdata:''); + } + else + $mail->body = $message . ($mail->f_txt?$mail->eol.$formdata:''); + + $sent = $mail->send(); + } } else { if ( $smtpsettings[0]=='1' ) - $sent = cforms_phpmailer( $no, $frommail, $replyto, $field_email, stripslashes($t[0]) , $cmsg , '', $cmsghtml, '', 'ac' ); - else - $sent = @mail($field_email, encode_header(stripslashes($t[0])), stripslashes($automsg), $headers2); ### takes the above + $sent = cforms_phpmailer( $no, $frommail, $replyto, $field_email, $s[0] , $cmsg , '', $cmsghtml, '', 'ac' ); + else{ + $mail->subj = $s[0]; + if ( $mail->html_show_ac ) { + $mail->is_html(true); + $mail->body = "".$mail->eol."".$cmsghtml."".$mail->eol; + $mail->body_alt = $cmsg; + } + else + $mail->body = $cmsg; + + $sent = $mail->send(); + } } if( $sent<>'1' ) - $usermessage_text = __('Error occurred while sending the auto confirmation message: ','cforms')." ($sent)"; + $usermessage_text = __('Error occurred while sending the auto confirmation message: ','cforms') . '
'. $smtpsettings[0]?'
'.$sent:$mail->ErrorInfo; } ### redirect to a different page on suceess? - if ( $cformsSettings['form'.$no]['cforms'.$no.'_redirect']==1 ) { + if ( $cformsSettings['form'.$no]['cforms'.$no.'_redirect'] && !$isWPcommentForm ) { if ( function_exists('my_cforms_logic') ) $rp = my_cforms_logic($trackf, $cformsSettings['form'.$no]['cforms'.$no.'_redirect_page'],'redirection'); ### use trackf! else @@ -551,24 +527,8 @@ } ### if $sentadmin else - $usermessage_text = __('Error occurred while sending the message: ','cforms') . '
'. $smtpsettings[0]?'
'.$sentadmin:''; + $usermessage_text = __('Error occurred while sending the message: ','cforms') . '
'. $smtpsettings[0]?'
'.$sentadmin:$mail->ErrorInfo; } ### if $MPok - ### - ### Files attached?? - ### - if( $inSession=='noSess' ) - cf_move_files($no, $subID, $file); - else if( $inSession=='1' && is_array($_FILES['cf_uploadfile'.$no]) ) - cf_move_files($no, 'xx', $file); - else if( $inSession=='0' && is_array($_SESSION['cforms']['upload'] ) ){ - foreach ( array_keys($_SESSION['cforms']['upload']) as $n ) - foreach ( array_keys($_SESSION['cforms']['upload'][$n]) as $m ) - if( file_exists($_SESSION['cforms']['upload'][$n][$m]) ) - rename($_SESSION['cforms']['upload'][$n][$m],str_replace('xx',$subID,$_SESSION['cforms']['upload'][$n][$m])); - } - - } ### if isset & valid sendbutton - ?> \ No newline at end of file diff --git a/lib_options_add.php b/lib_options_add.php index 5061d10..0cb1451 100644 --- a/lib_options_add.php +++ b/lib_options_add.php @@ -54,8 +54,10 @@ $cformsSettings['form'.$no]['cforms'.$no.'_popup'] = 'nn'; $cformsSettings['form'.$no]['cforms'.$no.'_showpos'] = 'ynyyy'; - $cformsSettings['form'.$no]['cforms'.$no.'_redirect'] = '0'; + $cformsSettings['form'.$no]['cforms'.$no.'_hide'] = false; + $cformsSettings['form'.$no]['cforms'.$no.'_redirect'] = false; $cformsSettings['form'.$no]['cforms'.$no.'_redirect_page'] = __('http://redirect.to.this.page', 'cforms'); + $cformsSettings['form'.$no]['cforms'.$no.'_action'] = '0'; $cformsSettings['form'.$no]['cforms'.$no.'_action_page'] = 'http://'; @@ -72,10 +74,4 @@ update_option('cforms_settings',$cformsSettings); echo '

'.__('A new form with default fields has been added.', 'cforms').'

'; - ###sorry, but WP2.2 doesn quickly enough flush the cache! - ###if ( function_exists (wp_cache_init) ){ - ### wp_cache_init(); - ### wp_cache_flush(); - ###} - ?> \ No newline at end of file diff --git a/lib_options_presets.php b/lib_options_presets.php index 9d6eeed..828c74b 100644 --- a/lib_options_presets.php +++ b/lib_options_presets.php @@ -29,8 +29,8 @@ else if( $data[0]=='lt' ){ $cformsSettings['form'.$no]["cforms{$no}_limittxt"] = str_replace(array("\n","\r"),array('',''),$data[1]); } - else if( $data[0]=='rd' ){ - $cformsSettings['form'.$no]["cforms{$no}_redirect"] = str_replace(array("\n","\r"),array('',''),$data[1]); + else if( $data[0]=='hd' ){ + $cformsSettings['form'.$no]["cforms{$no}_hide"] = str_replace(array("\n","\r"),array('',''),$data[1]); } else if( $data[0]=='ri' ){ $cformsSettings['form'.$no]["cforms{$no}_required"] = str_replace(array("\n","\r"),array('',''),$data[1]); @@ -43,7 +43,7 @@ } else if( $data[0]=='tt' ){ $cformsSettings['form'.$no]["cforms{$no}_cmsg"] = str_replace('|nl|',"\r\n",$data[1]) ; - $cformsSettings['form'.$no]["cforms{$no}_cmsg_html"] = str_replace('|nl|',"\r\n",$data[1]) ; + $cformsSettings['form'.$no]["cforms{$no}_cmsg_html"] = str_replace('|nl|',"
\r\n",$data[1]) ; $cformsSettings['form'.$no]["cforms{$no}_confirm"] = '1'; $taf = str_replace(array("\n","\r"),array('',''),$data[1]); } diff --git a/lib_options_sub.php b/lib_options_sub.php index a13673b..b398085 100644 --- a/lib_options_sub.php +++ b/lib_options_sub.php @@ -23,12 +23,15 @@ $disabled = 0; $readonly = 0; - if( in_array($type, array('cauthor','email','url','comment','send2author')) && !(substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='2') ){ + $isTAF = (int)substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1); + + + if( in_array($type, array('cauthor','email','url','comment','send2author')) && !($isTAF==2) ){ $allgood = $WPc?false:true; $usermsg .= ''.__('WP comment form fields only supported when WP comment feature turned on!', 'cforms').''; $WPc=true; } - if( in_array($type, array('yourname','youremail','friendsname','friendsemail')) && !(substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='1') ){ + if( in_array($type, array('yourname','youremail','friendsname','friendsemail')) && !($isTAF==1) ){ $allgood = $taf?false:true; $usermsg .= ''.__('TAF fields only supported when TAF feature turned on!', 'cforms').''; $taf=true; @@ -103,6 +106,12 @@ $cformsSettings['form'.$no]['cforms'.$no.'_rss'] = $_REQUEST['cforms_rss']?true:false; $cformsSettings['form'.$no]['cforms'.$no.'_rss_count'] = $_REQUEST['cforms_rsscount']; + if( isset($_REQUEST['cforms_rssfields']) ){ + $i=1; + foreach($_REQUEST['cforms_rssfields'] as $e) + $cformsSettings['form'.$no]['cforms'.$no.'_rss_fields'][$i++] = $e; + } + $cformsSettings['form'.$no]['cforms'.$no.'_dontclear'] = $_REQUEST['cforms_dontclear']?true:false; $cformsSettings['form'.$no]['cforms'.$no.'_upload_dir'] = $_REQUEST['cforms_upload_dir'].'$#$'.$_REQUEST['cforms_upload_dir_url']; @@ -129,7 +138,7 @@ $cformsSettings['form'.$no]['cforms'.$no.'_emailrequired'] = $_REQUEST['cforms_emailrequired']; $cformsSettings['form'.$no]['cforms'.$no.'_success'] = $_REQUEST['cforms_success']; $cformsSettings['form'.$no]['cforms'.$no.'_failure'] = $_REQUEST['cforms_failure']; - if( $_REQUEST['cforms_maxentries']<>'' && isset($_REQUEST['cforms_limittxt']) ) + if( isset($_REQUEST['cforms_limittxt']) ) $cformsSettings['form'.$no]['cforms'.$no.'_limittxt'] = $_REQUEST['cforms_limittxt']; $cformsSettings['form'.$no]['cforms'.$no.'_working'] = $_REQUEST['cforms_working']; @@ -147,21 +156,27 @@ $cformsSettings['form'.$no]['cforms'.$no.'_space'] = $_REQUEST['cforms_space']; $cformsSettings['form'.$no]['cforms'.$no.'_noattachments'] = $_REQUEST['cforms_noattachments']?'1':'0'; - $cformsSettings['form'.$no]['cforms'.$no.'_redirect'] = $_REQUEST['cforms_redirect']; + $cformsSettings['form'.$no]['cforms'.$no.'_emailpriority'] = $_REQUEST['emailprio']; + $cformsSettings['form'.$no]['cforms'.$no.'_hide'] = $_REQUEST['cforms_hide']?true:false; + $cformsSettings['form'.$no]['cforms'.$no.'_redirect'] = $_REQUEST['cforms_redirect']?true:false; $cformsSettings['form'.$no]['cforms'.$no.'_redirect_page'] = preg_replace("/\\\+/", "\\",$_REQUEST['cforms_redirect_page']); + $cformsSettings['form'.$no]['cforms'.$no.'_action'] = $_REQUEST['cforms_action']?'1':'0'; $cformsSettings['form'.$no]['cforms'.$no.'_action_page'] = preg_replace("/\\\+/", "\\",$_REQUEST['cforms_action_page']); $cformsSettings['form'.$no]['cforms'.$no.'_tracking'] = preg_replace("/\\\+/", "\\",$_REQUEST['cforms_tracking']); - if ( isset($_REQUEST['cforms_taftrick']) && ($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend']==0 || $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend']==3) ) - $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'] = '3'; - else - $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'] = ($_REQUEST['cforms_tellafriend']?'1':'0').($_REQUEST['cforms_tafdefault']?'1':'0') ; + $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'] = '01'; ### default + if ( isset($_REQUEST['cforms_taftrick']) ) + $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'] = '31'; + + if ( isset($_REQUEST['cforms_tellafriend']) ) + $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'] = '1'.($_REQUEST['cforms_tafdefault']?'1':'0') ; if ( isset($_REQUEST['cforms_commentrep']) ) - $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'] = ($_REQUEST['cforms_commentrep']?'2':'0').($_REQUEST['cforms_commentXnote']?'1':'0') ; + $cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'] = '2'.($_REQUEST['cforms_commentXnote']?'1':'0') ; $cformsSettings['form'.$no]['cforms'.$no.'_dashboard'] = ($_REQUEST['cforms_dashboard']?'1':'0') ; + $cformsSettings['form'.$no]['cforms'.$no.'_emailoff'] = ($_REQUEST['cforms_emailoff']?'1':'0') ; $cformsSettings['form'.$no]['cforms'.$no.'_maxentries'] = ($_REQUEST['cforms_maxentries']==''?'':(int)$_REQUEST['cforms_maxentries']) ; $cformsSettings['form'.$no]['cforms'.$no.'_customnames'] = ($_REQUEST['cforms_customnames']?'1':'0') ; diff --git a/lib_validate.php b/lib_validate.php index 9afaf56..7718211 100644 --- a/lib_validate.php +++ b/lib_validate.php @@ -5,6 +5,7 @@ ### $cflimit = ''; +$filefield = 0; $captchaopt = $cformsSettings['global']['cforms_captcha_def']; @@ -216,7 +217,9 @@ ### have to upload a file? ### -$filefield=0; ### for multiple file upload fields +global $file; +$file=''; +$i=0; if( isset($_FILES['cf_uploadfile'.$no]) && $all_valid){ @@ -227,31 +230,31 @@ if(!empty($value)){ ### this will check if any blank field is entered if ( function_exists('my_cforms_logic') ) - $file[name][$filefield] = my_cforms_logic($_REQUEST,$_FILES['cf_uploadfile'.$no][name][$filefield],"filename"); + $file[name][$i] = my_cforms_logic($_REQUEST,$_FILES['cf_uploadfile'.$no][name][$i],"filename"); $fileerr = ''; ### A successful upload will pass this test. It makes no sense to override this one. - if ( $file['error'][$filefield] > 0 ) + if ( $file['error'][$i] > 0 ) $fileerr = $cformsSettings['global']['cforms_upload_err1']; ### A successful upload will pass this test. It makes no sense to override this one. - $fileext[$filefield] = strtolower( substr($value,strrpos($value, '.')+1,strlen($value)) ); + $fileext[$i] = strtolower( substr($value,strrpos($value, '.')+1,strlen($value)) ); $allextensions = explode(',' , preg_replace('/\s/', '', strtolower($cformsSettings['form'.$no]['cforms'.$no.'_upload_ext'])) ); - if ( $cformsSettings['form'.$no]['cforms'.$no.'_upload_ext']<>'' && !in_array($fileext[$filefield], $allextensions) ) + if ( $cformsSettings['form'.$no]['cforms'.$no.'_upload_ext']<>'' && !in_array($fileext[$i], $allextensions) ) $fileerr = $cformsSettings['global']['cforms_upload_err5']; ### A non-empty file will pass this test. - if ( !( $file['size'][$filefield] > 0 ) ) + if ( !( $file['size'][$i] > 0 ) ) $fileerr = $cformsSettings['global']['cforms_upload_err2']; ### A non-empty file will pass this test. - if ( $file['size'][$filefield] >= (int)$cformsSettings['form'.$no]['cforms'.$no.'_upload_size'] * 1024 ) + if ( $file['size'][$i] >= (int)$cformsSettings['form'.$no]['cforms'.$no.'_upload_size'] * 1024 ) $fileerr = $cformsSettings['global']['cforms_upload_err3']; ### A properly uploaded file will pass this test. There should be no reason to override this one. - if (! @ is_uploaded_file( $file['tmp_name'][$filefield] ) ) + if (! @ is_uploaded_file( $file['tmp_name'][$i] ) ) $fileerr = $cformsSettings['global']['cforms_upload_err4']; if ( $fileerr <> '' ){ @@ -259,22 +262,10 @@ $err = 3; $all_valid = false; - } else { - - ### cool, got the file! - if ( !$cformsSettings['form'.$no]['cforms'.$no.'_noattachments'] ) { - ### $uploadedfile = file($file['tmp_name'][$filefield]); ### what's that for?? - - $fp = fopen($file['tmp_name'][$filefield], "rb"); ### Open it - $fdata = fread($fp, filesize($file['tmp_name'][$filefield])); ### Read it - $filedata[$filefield] = chunk_split(base64_encode($fdata)); ### Chunk it up and encode it as base64 so it can emailed - fclose($fp); - } - } ### file uploaded } ### if !empty - $filefield++; + $i++; } ### while all file diff --git a/my-functions.php b/my-functions.php index d0038e4..98b3a88 100644 --- a/my-functions.php +++ b/my-functions.php @@ -1,34 +1,69 @@ >> uncomment the code below if you require custom processing and modify +### >>> the below examples to meet your requirements -### un-comment if you require custom processing and modify the below examples -### to meet your requirements +/* <--- move or remove this line to uncomment functions below! (and check the end as well) ! -/* ### -### Your custom application logic +### Your custom application logic features ### -### Settings supported for now: +### "redirection" $cformsdata = cforms datablock +### "filename" $cformsdata = $_REQUEST +### "adminTO" $cformsdata = cforms datablock +### "nextForm" $cformsdata = cforms datablock ### -### "redirection" $cformsdata = cforms datablock -### "filename" $cformsdata = $_REQUEST -### "adminTO" $cformsdata = cforms datablock -### "nextForm" $cformsdata = cforms datablock +### "adminEmailTXT" $cformsdata = cforms datablock +### "adminEmailHTML" $cformsdata = cforms datablock +### "autoConfTXT" $cformsdata = cforms datablock +### "autoConfHTML" $cformsdata = cforms datablock ### function my_cforms_logic($cformsdata,$oldvalue,$setting) { - ### example: changes the next form to be form ID 5 (which is multi form page enabled) + ### If you're unsure how to reference $cformsdata use the below @mail call to send you the data array + ### @mail('your@email.com', 'cforms my_action test', print_r($cformsdata,1), 'From: your@email.com'); + + + + ### example: the below code changes a user-variable in both the Text & HTML part of + ### the admin email & auto confirmation email + + if ( $setting == "adminEmailTXT" || $setting == "adminEmailHTML" || $setting == "autoConfTXT" || $setting == "autoConfHTML" ){ + + ### it's only changed though for form #2 + ### and requires "{CustomSalutation}" to be in the message(s) + if ( $cformsdata['id']==2 ){ + + ### Returned message depends on user choosing the radio option "Mrs" or "Mr" (field value!) + if( $cformsdata['data']['Salutation']=='Mrs' ) + return str_replace('{CustomSalutation}','Dear Mrs. ',$oldvalue); + else + return str_replace('{CustomSalutation}','Dear Mr. ',$oldvalue); + + } + + } + + + + ### example: changes the next form to be form ID 5 (which is multi form page enabled) + if ( $setting == "nextForm" ){ ### the below only triggers when the configured "next form" would have been 4 @@ -38,6 +73,8 @@ function my_cforms_logic($cformsdata,$oldvalue,$setting) { } + + ### example: changes the admin email address to "test123 \ No newline at end of file diff --git a/phpmailer/cforms_phpmailer.php b/phpmailer/cforms_phpmailer.php index 6201dad..d99a557 100644 --- a/phpmailer/cforms_phpmailer.php +++ b/phpmailer/cforms_phpmailer.php @@ -1,9 +1,14 @@ ClearAttachments(); $mail->CharSet = 'utf-8'; $mail->SetLanguage('en', dirname(__FILE__).'/'); - $mail->PluginDir = dirname(__FILE__).'/'; + $mail->IsSMTP(); + $mail->Host = $smtpsettings[1]; - $mail->IsSMTP(); // send via SMTP - - $mail->Host = $smtpsettings[1]; // SMTP servers - - //$mail->SMTPDebug = true; + ### $mail->SMTPDebug = true; if ( $smtpsettings[4]<>'' ){ - $mail->SMTPSecure = $smtpsettings[4]; // sets the prefix to the servier - $mail->Port = $smtpsettings[5]; // set the SMTP port + $mail->SMTPSecure = $smtpsettings[4]; ### sets the prefix to the servier + $mail->Port = $smtpsettings[5]; ### set the SMTP port } if ( $smtpsettings[2]<>'' ){ - $mail->SMTPAuth = true; // turn on SMTP authentication - $mail->Username = $smtpsettings[2]; // SMTP username - $mail->Password = $smtpsettings[3]; // SMTP password + $mail->SMTPAuth = true; ### turn on SMTP authentication + $mail->Username = $smtpsettings[2]; ### SMTP username + $mail->Password = $smtpsettings[3]; ### SMTP password } - $temp2=array(); - //from + ###from if( preg_match('/([\w-\.]+@([\w-]+\.)+[\w-]{2,4})/',$frommail,$temp) ) $mail->From = $temp[0]; @@ -58,25 +59,26 @@ function cforms_phpmailer( $no, $frommail, $field_email, $to, $vsubject, $messag $temp2=array(); - //reply-to + ### reply-to if( preg_match('/([\w-\.]+@([\w-]+\.)+[\w-]{2,4})/',$field_email,$temp) ) { if ( preg_match('/(.*)\s+(([\w-\.]+@|<)).*/',$field_email,$temp2) ) $mail->AddReplyTo($temp[0] ,str_replace('"','',$temp2[1]) ); else $mail->AddReplyTo($temp[0]); } - //TAF: add CC - if ( substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='1' && $fileext=='ac') + + ### TAF: add CC + if ( substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='1' && $file=='ac') $mail->AddCC($temp[0],str_replace('"','',$temp2[1])); - //bcc + ### bcc if( preg_match('/[\w-\.]+@([\w-]+\.)+[\w-]{2,4}/',stripslashes($cformsSettings['form'.$no]['cforms'.$no.'_bcc']),$temp) ) $mail->AddBCC($temp[0]); - //to - //if( preg_match('/[\w-\.]+@([\w-]+\.)+[\w-]{2,4}/',$to,$temp) ) - // $mail->AddAddress($temp[0]); + ###to + ###if( preg_match('/[\w-\.]+@([\w-]+\.)+[\w-]{2,4}/',$to,$temp) ) + ### $mail->AddAddress($temp[0]); $addresses = explode(',',$to); foreach( $addresses as $address ){ @@ -90,47 +92,46 @@ function cforms_phpmailer( $no, $frommail, $field_email, $to, $vsubject, $messag } - if ($htmlmessage<>'') { // send as HTML - $htmlmessage = str_replace('=3D','=',$htmlmessage); //remove 3D's - $htmlformdata = str_replace('=3D','=',$htmlformdata); //remove 3D's, + ### + ### HTML email ? + ### + if ($htmlmessage<>'') { + $htmlmessage = str_replace('=3D','=',$htmlmessage); ###remove 3D's + $htmlformdata = str_replace('=3D','=',$htmlformdata); ###remove 3D's, $mail->IsHTML(true); - $mail->Body = "\n".$styles."".stripslashes($htmlmessage). + $mail->Body = "".$eol."".stripslashes($htmlmessage). ( (substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],1,1)=='1' && $htmlformdata<>'') ? $eol.$htmlformdata : '' ). - "\n\n"; + $eol."".$eol; $mail->AltBody = stripslashes($message).((substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],0,1)=='1'&&$formdata<>'')?$eol.$formdata:''); } else $mail->Body = stripslashes($message).((substr($cformsSettings['form'.$no]['cforms'.$no.'_formdata'],0,1)=='1'&&$formdata<>'')?$eol.$formdata:''); - // possibly add attachment with indiv. mime types - if ( $fileext<>'ac' && $fileext<>'' && count($_FILES['cf_uploadfile'.$no]['tmp_name']) > 0 && isset($_FILES['cf_uploadfile'.$no]) && !$cformsSettings['form'.$no]['cforms'.$no.'_noattachments'] ) { - $all_mime = array("txt"=>"text/plain", "htm"=>"text/html", "html"=>"text/html", "gif"=>"image/gif", "png"=>"image/x-png", - "jpeg"=>"image/jpeg", "jpg"=>"image/jpeg", "tif"=>"image/tiff", "bmp"=>"image/x-ms-bmp", "wav"=>"audio/x-wav", - "mpeg"=>"video/mpeg", "mpg"=>"video/mpeg", "mov"=>"video/quicktime", "avi"=>"video/x-msvideo", - "rtf"=>"application/rtf", "pdf"=>"application/pdf", "zip"=>"application/zip", "hqx"=>"application/mac-binhex40", - "sit"=>"application/x-stuffit", "exe"=>"application/octet-stream", "ppz"=>"application/mspowerpoint", - "ppt"=>"application/vnd.ms-powerpoint", "ppj"=>"application/vnd.ms-project", "xls"=>"application/vnd.ms-excel", - "doc"=>"application/msword"); + ### + ### adding attachments + ### + global $fdata; - $temp = explode( '$#$',stripslashes(htmlspecialchars($cformsSettings['form'.$no]['cforms'.$no.'_upload_dir'])) ); - $fileuploaddir = $temp[0]; - - for ( $filefield=0; $filefield < count($_FILES['cf_uploadfile'.$no][name]); $filefield++) { - if ( $_FILES['cf_uploadfile'.$no]['size'][$filefield] > 0 ){ - $mime = (!$all_mime[$fileext[$filefield]])?'application/octet-stream':$all_mime[$fileext[$filefield]]; - $mail->AddAttachment($_FILES['cf_uploadfile'.$no]['tmp_name'][$filefield], $_FILES['cf_uploadfile'.$no]['name'][$filefield],'base64',$mime); // optional name - } + if ( $file=='1' && !$cformsSettings['form'.$no]['cforms'.$no.'_noattachments'] ) { + foreach ( $fdata as $file ) { + if ( $file[name] <> '' ){ + $n = substr( $file[name], strrpos($file[name],$cformsSettings['global']['cforms_IIS'])+1, strlen($file[name]) ); + $m = getMIME( strtolower( substr($n,strrpos($n, '.')+1,strlen($n)) ) ); + $mail->AddAttachment($file[name], $n,'base64',$m); ### optional name } + } ### for + } + ### end adding attachments $mail->Subject = $vsubject; $sentadmin = $mail->Send(); if ($sentadmin) - return true; + return 1; else return $mail->ErrorInfo; }