Changeset 3391029
- Timestamp:
- 11/06/2025 10:49:00 AM (5 months ago)
- Location:
- fast-events/trunk
- Files:
-
- 9 edited
-
changelog.txt (modified) (1 diff)
-
fast-events.php (modified) (1 diff)
-
includes/class-fast-events.php (modified) (4 diffs)
-
includes/classes/class-fast-events-tickets.php (modified) (6 diffs)
-
includes/fevt-update-functions.php (modified) (1 diff)
-
includes/rest-api/class-fast-events-settings.php (modified) (2 diffs)
-
includes/rest-api/public-api/class-fast-events-admin-ticket-types.php (modified) (2 diffs)
-
readme.txt (modified) (10 diffs)
-
templates/settings.php (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
fast-events/trunk/changelog.txt
r3388376 r3391029 1 1 == Changelog == 2 3 = 2.4.1 = 4 5 * Change: Improved selection of personalization fields and layout fields. 6 * Change: Don't print the separator line in the qrcode block if there are no layout fields. 7 * Change: Amazon SES API extended with more regions. 8 * Change: Translation updates. 2 9 3 10 = 2.4.0 = -
fast-events/trunk/fast-events.php
r3388376 r3391029 4 4 * Plugin URI: https://fast-events.eu/ 5 5 * Description: Sell online etickets wit a variety of payment options, mobile scanning, admin app, seating plans, online tracking for sports events and much more. 6 * Version: 2.4. 06 * Version: 2.4.1 7 7 * Requires at least: 6.4 8 8 * Requires PHP: 8.0 -
fast-events/trunk/includes/class-fast-events.php
r3388376 r3391029 15 15 */ 16 16 class Fast_Events { 17 public const FAST_EVENTS_VERSION = '2.4. 0';17 public const FAST_EVENTS_VERSION = '2.4.1'; 18 18 public const FE_ADMIN_VERSION = 'v4.4'; 19 19 … … 42 42 'fevt_update_240_db_options', 43 43 'fevt_update_240_db_event_table', 44 'fevt_update_admin', 45 ), 46 '2.4.1' => array( 47 'fevt_update_241_db_event_table', 44 48 'fevt_update_admin', 45 49 ), … … 964 968 ',"x":40,"y":150,"rotate":0,"scale":100,"no_border":0,"types":{"Silver":' . $eticket_id . ',"Gold (Backstage)":' . $eticket_id . '}},"invoice":{"id":' . $invoice_id . 965 969 ',"vat":1,"name":{"x":27,"y":60},"invoiceno":{"x":127,"y":65},"line":{"x":25,"y":92,"w":158}}}', 966 'input_fields' => '{"fields":[{"id":"v36c12","name":"Attendee","type":"text","value":"","min":"","max":"","required":1,"personalise":1},{"id":"v6a7f8","name":"Preference","type":"select","value":"Rock,Jazz,Classic,Pop","min":"","max":"","required":1,"personalise":1},{"id":"v71ba9","name":"Beverage","type":"select","value":"Beer,Wine,Whiskey","min":"","max":"","required":1,"personalise":1},{"id":"v59f29","name":"Entrance","type":"select","value":"North,West,East,South","min":"","max":"","required":1,"personalise":0}],"tickets":[{"name":"Silver","id":"v023b9","stock":"","sold":2,"price":"25.00","volume_price":[{"4":20},{"10":18.75},{"15":18.25}],"min":0,"max":50,"vat":"21","cnt":1,"remain":0,"personalise":"Attendee,Preference","layout":" "},{"name":"Gold (Backstage)","id":"v1a311","stock":100,"sold":2,"price":"40.00","min":0,"max":50,"vat":"21","cnt":1,"remain":0,"personalise":"Attendee,Preference,Beverage","layout":"Entrance,Attendee,Preference,Beverage,Order-id"}],"submit":{"name":"' . __( 'Pay', 'fast-events' ) . '"},"unique_users":{"master_eventids":""},"user_group":{"id":0,"eventid":"","roles":"","rest_url":"","rest_header":""}}',970 'input_fields' => '{"fields":[{"id":"v36c12","name":"Attendee","type":"text","value":"","min":"","max":"","required":1,"personalise":1},{"id":"v6a7f8","name":"Preference","type":"select","value":"Rock,Jazz,Classic,Pop","min":"","max":"","required":1,"personalise":1},{"id":"v71ba9","name":"Beverage","type":"select","value":"Beer,Wine,Whiskey","min":"","max":"","required":1,"personalise":1},{"id":"v59f29","name":"Entrance","type":"select","value":"North,West,East,South","min":"","max":"","required":1,"personalise":0}],"tickets":[{"name":"Silver","id":"v023b9","stock":"","sold":2,"price":"25.00","volume_price":[{"4":20},{"10":18.75},{"15":18.25}],"min":0,"max":50,"vat":"21","cnt":1,"remain":0,"personalise":"Attendee,Preference","layout":"Order-id,Name,Email"},{"name":"Gold (Backstage)","id":"v1a311","stock":100,"sold":2,"price":"40.00","min":0,"max":50,"vat":"21","cnt":1,"remain":0,"personalise":"Attendee,Preference,Beverage","layout":"Entrance,Attendee,Preference,Beverage,Order-id"}],"submit":{"name":"' . __( 'Pay', 'fast-events' ) . '"},"unique_users":{"master_eventids":""},"user_group":{"id":0,"eventid":"","roles":"","rest_url":"","rest_header":""}}', 967 971 'scan_keys' => '{"' . fast_events_util_func()->uniq_id() . '":{"tickets":"","entry":0,"location":"' . __( 'Main entrance', 'fast-events' ) . '","date_format":"l, j F H:i:s"},"' . fast_events_util_func()->uniq_id() . '":{"tickets":"Gold (Backstage)","entry":1,"location":"' . __( 'Backstage entrance', 'fast-events' ) . '","date_format":"l, j F H:i:s"}}', 968 972 ) … … 1143 1147 ',"x":40,"y":150,"rotate":0,"scale":100,"no_border":0,"types":{"Junior":' . $f2f_id . ',"Senior":' . $f2f_id . '}},"invoice":{"id":""' . 1144 1148 ',"vat":1,"name":{"x":27,"y":60},"invoiceno":{"x":127,"y":65},"line":{"x":25,"y":92,"w":158}}}', 1145 'input_fields' => '{"fields":[],"tickets":[{"name":"Junior","id":"v023b8","stock":100,"sold":1,"price":"25.00","min":0,"max":1,"vat":"21","cnt":1,"remain":0 },' .1146 '{"name":"Senior","id":"v1a312","stock":"","sold":0,"price":"30.00","min":0,"max":1,"vat":"21","cnt":1,"remain":0 }],"submit":{"name":"' . __( 'Pay', 'fast-events' ) . '"},"unique_users":{"master_eventids":""},"user_group":{"id":0,"eventid":"","roles":"","rest_url":"","rest_header":""}}',1149 'input_fields' => '{"fields":[],"tickets":[{"name":"Junior","id":"v023b8","stock":100,"sold":1,"price":"25.00","min":0,"max":1,"vat":"21","cnt":1,"remain":0,"personalise":"","layout":"Order-id,Name,Email"},' . 1150 '{"name":"Senior","id":"v1a312","stock":"","sold":0,"price":"30.00","min":0,"max":1,"vat":"21","cnt":1,"remain":0,"personalise":"","layout":"Order-id,Name,Email"}],"submit":{"name":"' . __( 'Pay', 'fast-events' ) . '"},"unique_users":{"master_eventids":""},"user_group":{"id":0,"eventid":"","roles":"","rest_url":"","rest_header":""}}', 1147 1151 'scan_keys' => '{"F3rdp7H9MaBoFonQ":{"tickets":"","entry":0,"location":"' . __( 'Start', 'fast-events' ) . '","date_format":"l, j F H:i"},"gHNduTedoHqXgBHJ":{"tickets":"","entry":1,"location":"' . __( 'Checkpoint', 'fast-events' ) . ' 1",' . 1148 1152 '"date_format":"l, j F H:i"},"2MDzeidKn2AJtp24":{"tickets":"","entry":1,"location":"' . __( 'Checkpoint', 'fast-events' ) . ' 2","date_format":"l, j F H:i"},"VUtLaxncZtYxUV2J":' . -
fast-events/trunk/includes/classes/class-fast-events-tickets.php
r3176877 r3391029 86 86 * If it's not empty it contains a comma-separated list of field names (max 6) 87 87 * The field names can be: 88 * - Order Order is88 * - Order-id Order id 89 89 * - Name The name of the person who ordered the tickets 90 90 * - Email The emailaddress of the person who ordered the tickets … … 133 133 * @param string $author The name of the author (SMTP Sender Name). 134 134 * @param string $pdf_info JSON string of PDF page definition. 135 * @param array $layout Associative array with ticket names(key) and fields to use in the qrcode info block (comma-separated) 136 * If empty -> use the default qrcode info block. 135 * @param array $layout Associative array with ticket names(key) and fields to use in the qrcode info block (comma-separated). 137 136 * 138 137 * @since 1.0 … … 184 183 * 185 184 * @since 1.0 186 * @since 1.7 Added scaling.185 * @since 1.7 Added scaling. 187 186 * @since 2.2.2 Selection of passe-partout templates per ticket. 188 187 * … … 277 276 $this->pdf->Cell( 30, 4, $result->qrcode, 0, 0, '', false, '', 1 ); 278 277 279 // If the la out is empty -> printthe default info.280 if ( empty( $this->layout[ $result->ticket_type ] )) {278 // If the layout is the default info. 279 if ( 'Order-id,Name,Email' === $this->layout[ $result->ticket_type ] ) { 281 280 $this->default_block( $result ); 282 281 continue; … … 387 386 * 388 387 * @since 2.1.0 388 * @since 2.4.1 Don't print seperator line if there are no layout fields. 389 389 */ 390 390 private function personalised_block( stdClass $result, array $input ): void { … … 435 435 436 436 // Separator line. 437 $this->pdf->SetFont( self::FONTNAME, '', 9 ); 438 $this->pdf->SetTextColor( 64 ); 439 $this->pdf->SetXY( $this->x + 40, $this->y + $pos[3] ); 440 $this->pdf->Line( $this->x + 40, $this->y + $pos[3], $this->x + 80, $this->y + $pos[3] ); 437 if ( ! empty( $this->layout[ $result->ticket_type ] ) ) { 438 $this->pdf->SetFont( self::FONTNAME, '', 9 ); 439 $this->pdf->SetTextColor( 64 ); 440 $this->pdf->SetXY( $this->x + 40, $this->y + $pos[3] ); 441 $this->pdf->Line( $this->x + 40, $this->y + $pos[3], $this->x + 80, $this->y + $pos[3] ); 442 } 441 443 442 444 // Print the personalised data. -
fast-events/trunk/includes/fevt-update-functions.php
r3388376 r3391029 310 310 } 311 311 } 312 313 /** 314 * Update event table tickets (set the default layout fields if it's empty) 315 * 316 * @since 2.4.1 317 */ 318 function fevt_update_241_db_event_table(): void { 319 global $wpdb; 320 321 $results = $wpdb->get_results( "SELECT id, input_fields FROM {$wpdb->prefix}fe_events" ); 322 if ( ! empty( $results ) ) { 323 foreach ( $results as $result ) { 324 $inp = json_decode( $result->input_fields ); 325 326 // Convert tickets layout. 327 if ( ! empty( $inp->tickets ) ) { 328 foreach ( $inp->tickets as $index => $value ) { 329 if ( empty( $inp->tickets[ $index ]->layout ) ) { 330 $inp->tickets[ $index ]->layout = 'Order-id,Name,Email'; 331 } 332 } 333 } elseif ( ! isset( $inp->tickets ) ) { 334 $inp->tickets = array(); 335 } 336 337 $wpdb->update( 338 $wpdb->prefix . 'fe_events', 339 array( 'input_fields' => fast_events_util_func()->fast_events_json_encode( $inp ) ), 340 array( 'id' => $result->id ), 341 ); 342 } 343 } 344 } -
fast-events/trunk/includes/rest-api/class-fast-events-settings.php
r3388376 r3391029 44 44 * @since 2.3.0 Added 'captcha_provider' (0 = Google, 1 = Cloudflare) 45 45 * @since 2.4.0 Added SMTP2GO email provider. 46 * @since 2.4.1 AWS SES regions is now a string 46 47 */ 47 48 public function fast_events_settings_api_endpoints(): void { … … 248 249 ), 249 250 'amazon_region' => array( 250 'required' => true, 251 'type' => 'string', 252 'enum' => array( 253 'eu-central-1', 254 'eu-west-1', 255 'eu-west-2', 256 'eu-west-3', 257 'eu-south-1', 258 'eu-north-1', 259 'us-east-1', 260 'us-east-2', 261 'us-west-1', 262 'us-west-2', 263 ), 251 'required' => true, 252 'type' => 'string', 253 'sanitize_callback' => 'sanitize_text_field', 264 254 ), 265 255 'amazon_access_key' => array( -
fast-events/trunk/includes/rest-api/public-api/class-fast-events-admin-ticket-types.php
r3388376 r3391029 595 595 * 596 596 * @since 2.1.0 597 * @since 2.4.1 For layouts: handle empty fields 597 598 * 598 599 * @param string $fields Comma-separated list of input field names. … … 615 616 } 616 617 } else { 617 foreach ( $this->inp_fields as $inp ) { 618 if ( $inp->name === $item || 'Order-id' === $item || 'Name' === $item || 'Email' === $item ) { 619 continue 2; 618 if ( empty( $this->inp_fields ) ) { 619 if ( 'Order-id' === $item || 'Name' === $item || 'Email' === $item ) { 620 continue; 621 } 622 } else { 623 foreach ( $this->inp_fields as $inp ) { 624 if ( $inp->name === $item || 'Order-id' === $item || 'Name' === $item || 'Email' === $item ) { 625 continue 2; 626 } 620 627 } 621 628 } -
fast-events/trunk/readme.txt
r3388376 r3391029 5 5 * Requires PHP: 8.0 6 6 * Tested up to: 6.9 7 * Stable tag: 2.4. 07 * Stable tag: 2.4.1 8 8 * Donate link: https://docs.fast-events.eu/en/latest/misc/donate.html 9 9 * License: GPLv3 or later … … 16 16 = Any event type = 17 17 18 Use Fast Events for any typeof event (sport events, festivals, congresses, concerts, seminars, your local party, …)19 20 From selling 1 ticket type with a single entrance scan to an event with multiple tickets, multiple entrancesand multiple scans.21 22 If you wish, you can take advantage of volume pricing by ticket type or the many discount voucher options.23 24 Ideal for sporting events with multiple scan checkpoints along the route and a final check to ensure all checkpoints havebeen scanned.18 Use Fast Events for any kind of event (sport events, festivals, congresses, concerts, seminars, your local party, …) 19 20 From selling a single‑ticket type with one entrance scan to managing events with multiple ticket types, several entrances, and multiple scans. 21 22 If you wish, you can take advantage of volume pricing by ticket type or use the many discount voucher options. 23 24 Ideal for sporting events that have multiple scan checkpoints along the route and a final check to confirm every checkpoint has been scanned. 25 25 26 26 Take a look at the [examples](https://docs.fast-events.eu/en/latest/usage/examples.html) to get an idea. … … 28 28 = Ticket personalisation = 29 29 30 A unique ticket personalisation module t o personalise tickets, share tickets, display order information and generate invoices if required.31 32 Define order or ticket level input fields and assign them toticket types.33 34 Embed the ticket personalisation module intoa page using a WordPress shortcode.30 A unique ticket personalisation module that lets you personalise tickets, share them, display order information and generate invoices if required. 31 32 Define order-level or ticket-level input fields and assign them to specific ticket types. 33 34 Embed the ticket personalisation module on a page using a WordPress shortcode. 35 35 36 36 = Real-time scanning = … … 38 38 No need for expensive scanning equipment. Just use our free [Android](https://play.google.com/store/apps/details?id=nl.fe_data.scanner) and [IOS](https://apps.apple.com/app/fe-scan/id1496549803) app to scan the tickets in real-time at the entrance. 39 39 40 No limit on the number of scan applications runningsimultaneously.40 There’s no limit to the number of scanning applications that can run simultaneously. 41 41 42 42 Staged scans, temporarily leave and re-enter(e.g. to smoke) and exit scans are possible and error messages can be tailored to your own event. … … 44 44 = PDF e-tickets = 45 45 46 Simply define your own e-tickets in your favourite word processor (Word, LibreOffice, …). Upload the PDF file to WordPress via the plugin's admin interface and tell Fast Events where to print the QRcode block.47 48 Use the default layout or specify a custom layout withpersonalisation fields or order information.46 Simply define your own e-tickets in your favourite word processor (Word, LibreOffice, …). Then upload the PDF-file to WordPress through the plugin's admin interface and specify where Fast Events should place the QR‑code block. 47 48 Use the default layout or specify a custom layout that includes personalisation fields or order information. 49 49 50 50 = Tracking = … … 56 56 = Payouts next day = 57 57 58 No fees per ticket. The only costs are the transaction costs of an order. For iDEAL (Netherlands) it is EUR0.32 (ex VAT) per transaction.59 It does not matter how many tickets are ordered in the transaction, it’s always EUR 0.29 (in NL) for an iDEAL payment.58 There are no fees per ticket. The only cost is the transaction fee for each order. For iDEAL (Netherlands) the fee is € 0.32 (ex VAT) per transaction. 59 It does not matter how many tickets are included in the transaction, the iDEAL charge remains € 0.32 (in NL). 60 60 You can find [here](https://docs.fast-events.eu/en/latest/getting-started/introduction.html#payouts-next-day) more information. 61 61 … … 79 79 = Saas mode = 80 80 81 Host multiple organisations on your platform each with their own events. They can use your ticketing platform as sub-merchants.82 83 Add (sub)accounts in the FE Admin App and assign selected events to users and where necessary restrictfunctionality.84 85 Use flexible application fees , which will automatically betransferred to you.81 Host multiple organisations on your platform, each with their own events. They can operate as sub‑merchants using your ticketing system. 82 83 Add (sub)accounts in the FE Admin app, assign selected events to those users, and, where necessary, restrict their functionality. 84 85 Use flexible application fees that are automatically transferred to you. 86 86 87 87 = REST API = … … 90 90 This allows Fast Events data to be created, read, updated, and deleted using requests in JSON format and using WordPress REST API application passwords to grant access. 91 91 92 But you could also create you own scan app by using the scan endpoint93 94 Fine grained access control is possible for individual endpoints by using the Accounts tool of the FE Admin App.92 But you could also create you own scanning app by using the scan endpoint. 93 94 Fine‑grained access control is available for individual endpoints via the Accounts tool in the FE Admin app. 95 95 96 96 = Webhooks = … … 98 98 Fast Events offers [Webhooks](https://docs.fast-events.eu/en/latest/advanced/webhooks.html) to sent notifications to a URL of your choice. 99 99 100 You can configure it on a per-event basis and choose what type of notifications you allowto be sent.100 You can configure it per event and choose which types of notifications are allowed to be sent. 101 101 102 102 Webhooks make it easy for third-party applications to integrate with Fast Events. … … 190 190 == Changelog == 191 191 192 = 2.4.0 = 193 194 * New: Added a flag to ticket types showing the remaining tickets in the order form. 195 * New: Added SMTP2GO email provider. 196 * New: Added new scan-levels: you can temporarily leave the event (e.g. to smoke) and return a little later using levels 7 (temporarily leave) and 8 (re-enter). 197 * Change: This version requires Management Interface 4.4 or higher. 198 * Change: action-scheduler updated to the latest version (3.9.3). 199 * Change: Upgrade internal components. 200 * Change: Upgrade FE-Admin to the latest version (4.4.0: API level 8). 201 202 192 = 2.4.1 = 193 194 * Change: Improved selection of personalization fields and layout fields. 195 * Change: Don't print the separator line in the qrcode block if there are no layout fields. 196 * Change: Amazon SES API extended with more regions. 197 * Change: Translation updates. 203 198 204 199 [See changelog for all versions](https://plugins.trac.wordpress.org/browser/fast-events/trunk/changelog.txt). -
fast-events/trunk/templates/settings.php
r3388376 r3391029 14 14 * - Moved alert inside form. 15 15 * @since 2.4.0 - Added SMTP2GO email provider. 16 * @since 2.4.1 - Sorted the email providers. 17 * - 'amazon_region' is now a string. Regions are defined here: https://docs.aws.amazon.com/general/latest/gr/ses.html 16 18 */ 17 19 … … 53 55 <?php 54 56 esc_html_e( 55 'The "Fast Events" plugin is using the Dutch payment Provider Mollie for all payments. With Mollie there are no periodic recurring costs, you only pay for successful transaction and no feesper ticket.',57 'The "Fast Events" plugin uses the Dutch payment provider Mollie for all transactions. With Mollie there are no recurring fees — you only pay for successful transactions, and there is no fee per ticket.', 56 58 'fast-events' 57 59 ); 58 esc_html_e( ' Usethe button below to create your free Mollie account.', 'fast-events' );60 esc_html_e( 'Click the button below to create your free Mollie account.', 'fast-events' ); 59 61 ?> 60 62 </p> … … 291 293 </div> 292 294 295 <!-- Amazon SES API configuration --> 296 <div id="fe-settings-amazon" style="<?php echo 8 !== $options['email_type'] ? 'display:none' : ''; ?>"> 297 <div class="mb-3 row"> 298 <label for="amazon_region" class="col-sm-3 col-form-label text-right">Amazon region</label> 299 <div class="col-sm-9"> 300 <input type="text" name="amazon_region" id="amazon_region" maxlength="50" class="form-control" value='<?php echo esc_html( $options['amazon_region'] ); ?>'> 301 </div> 302 </div> 303 <div class="mb-3 row"> 304 <label for="amazon_access_key" class="col-sm-3 col-form-label text-right">Amazon access key</label> 305 <div class="col-sm-9"> 306 <input type="text" name="amazon_access_key" id="amazon_access_key" maxlength="100" class="form-control" value='<?php echo esc_html( $options['amazon_access_key'] ); ?>'> 307 </div> 308 </div> 309 <div class="mb-3 row"> 310 <label for="amazon_secret_key" class="col-sm-3 col-form-label text-right">Amazon secret key</label> 311 <div class="col-sm-9"> 312 <input type="text" name="amazon_secret_key" id="amazon_secret_key" maxlength="100" class="form-control" value='<?php echo esc_html( $options['amazon_secret_key'] ); ?>'> 313 </div> 314 </div> 315 </div> 316 317 <!-- Brevo API configuration --> 318 <div id="fe-settings-sendinblue" style="<?php echo 6 !== $options['email_type'] ? 'display:none' : ''; ?>"> 319 <div class="mb-3 row"> 320 <label for="sendinblue_server" class="col-sm-3 col-form-label text-right">Brevo server</label> 321 <div class="col-sm-9"> 322 <input type="text" name="sendinblue_server" id="sendinblue_server" maxlength="100" class="form-control" value='<?php echo esc_html( $options['sendinblue_server'] ); ?>'> 323 </div> 324 </div> 325 <div class="mb-3 row"> 326 <label for="sendinblue_api_key" class="col-sm-3 col-form-label text-right">Brevo API key</label> 327 <div class="col-sm-9"> 328 <input type="text" name="sendinblue_api_key" id="sendinblue_api_key" maxlength="100" class="form-control" value='<?php echo esc_html( $options['sendinblue_api_key'] ); ?>'> 329 </div> 330 </div> 331 </div> 332 293 333 <!-- Mailgun API configuration --> 294 334 <div id="fe-settings-mailgun" style="<?php echo 2 !== $options['email_type'] ? 'display:none' : ''; ?>"> … … 355 395 </div> 356 396 357 <!-- BrevoAPI configuration -->358 <div id="fe-settings-s endinblue" style="<?php echo 6!== $options['email_type'] ? 'display:none' : ''; ?>">359 <div class="mb-3 row"> 360 <label for="s endinblue_server" class="col-sm-3 col-form-label text-right">Brevoserver</label>361 <div class="col-sm-9"> 362 <input type="text" name="s endinblue_server" id="sendinblue_server" maxlength="100" class="form-control" value='<?php echo esc_html( $options['sendinblue_server'] ); ?>'>363 </div> 364 </div> 365 <div class="mb-3 row"> 366 <label for="s endinblue_api_key" class="col-sm-3 col-form-label text-right">BrevoAPI key</label>367 <div class="col-sm-9"> 368 <input type="text" name="s endinblue_api_key" id="sendinblue_api_key" maxlength="100" class="form-control" value='<?php echo esc_html( $options['sendinblue_api_key'] ); ?>'>397 <!-- SMTP2GO API configuration --> 398 <div id="fe-settings-smtp2go" style="<?php echo 9 !== $options['email_type'] ? 'display:none' : ''; ?>"> 399 <div class="mb-3 row"> 400 <label for="smtp2go_server" class="col-sm-3 col-form-label text-right">SMTP2GO server</label> 401 <div class="col-sm-9"> 402 <input type="text" name="smtp2go_server" id="smtp2go_server" maxlength="100" class="form-control" value='<?php echo esc_html( $options['smtp2go_server'] ); ?>'> 403 </div> 404 </div> 405 <div class="mb-3 row"> 406 <label for="smtp2go_api_key" class="col-sm-3 col-form-label text-right">SMTP2GO API key</label> 407 <div class="col-sm-9"> 408 <input type="text" name="smtp2go_api_key" id="smtp2go_api_key" maxlength="100" class="form-control" value='<?php echo esc_html( $options['smtp2go_api_key'] ); ?>'> 369 409 </div> 370 410 </div> … … 383 423 <div class="col-sm-9"> 384 424 <input type="text" name="sparkpost_api_key" id="sparkpost_api_key" maxlength="100" class="form-control" value='<?php echo esc_html( $options['sparkpost_api_key'] ); ?>'> 385 </div>386 </div>387 </div>388 389 <!-- SMTP2GO API configuration -->390 <div id="fe-settings-smtp2go" style="<?php echo 9 !== $options['email_type'] ? 'display:none' : ''; ?>">391 <div class="mb-3 row">392 <label for="smtp2go_server" class="col-sm-3 col-form-label text-right">SMTP2GO server</label>393 <div class="col-sm-9">394 <input type="text" name="smtp2go_server" id="smtp2go_server" maxlength="100" class="form-control" value='<?php echo esc_html( $options['smtp2go_server'] ); ?>'>395 </div>396 </div>397 <div class="mb-3 row">398 <label for="smtp2go_api_key" class="col-sm-3 col-form-label text-right">SMTP2GO API key</label>399 <div class="col-sm-9">400 <input type="text" name="smtp2go_api_key" id="smtp2go_api_key" maxlength="100" class="form-control" value='<?php echo esc_html( $options['smtp2go_api_key'] ); ?>'>401 </div>402 </div>403 </div>404 405 <!-- Amazon SES API configuration -->406 <div id="fe-settings-amazon" style="<?php echo 8 !== $options['email_type'] ? 'display:none' : ''; ?>">407 <div class="mb-3 row">408 <label for="amazon_region" class="col-sm-3 col-form-label text-right">Amazon region</label>409 <div class="col-sm-9">410 <select name="amazon_region" id="amazon_region" class="form-control">411 <option value="eu-central-1"<?php echo 'eu-central-1' === $options['amazon_region'] ? ' selected' : ''; ?>>Europe (Frankfurt)</option>412 <option value="eu-west-1"<?php echo 'eu-west-1' === $options['amazon_region'] ? ' selected' : ''; ?>>Europe (Ireland)</option>413 <option value="eu-west-2"<?php echo 'eu-west-2' === $options['amazon_region'] ? ' selected' : ''; ?>>Europe (London)</option>414 <option value="eu-south-1"<?php echo 'eu-south-1' === $options['amazon_region'] ? ' selected' : ''; ?>>Europe (Milan)</option>415 <option value="eu-west-3"<?php echo 'eu-west-3' === $options['amazon_region'] ? ' selected' : ''; ?>>Europe (Paris)</option>416 <option value="eu-north-1"<?php echo 'eu-north-1' === $options['amazon_region'] ? ' selected' : ''; ?>>Europe (Stockholm)</option>417 <option value="us-east-2"<?php echo 'us-east-2' === $options['amazon_region'] ? ' selected' : ''; ?>>US East (Ohio)</option>418 <option value="us-east-1"<?php echo 'us-east-1' === $options['amazon_region'] ? ' selected' : ''; ?>>US East (N. Virginia)</option>419 <option value="us-west-1"<?php echo 'us-west-1' === $options['amazon_region'] ? ' selected' : ''; ?>>US West (N. California)</option>420 <option value="us-west-2"<?php echo 'us-west-2' === $options['amazon_region'] ? ' selected' : ''; ?>>US West (Oregon)</option>421 </select>422 </div>423 </div>424 <div class="mb-3 row">425 <label for="amazon_access_key" class="col-sm-3 col-form-label text-right">Amazon access key</label>426 <div class="col-sm-9">427 <input type="text" name="amazon_access_key" id="amazon_access_key" maxlength="100" class="form-control" value='<?php echo esc_html( $options['amazon_access_key'] ); ?>'>428 </div>429 </div>430 <div class="mb-3 row">431 <label for="amazon_secret_key" class="col-sm-3 col-form-label text-right">Amazon secret key</label>432 <div class="col-sm-9">433 <input type="text" name="amazon_secret_key" id="amazon_secret_key" maxlength="100" class="form-control" value='<?php echo esc_html( $options['amazon_secret_key'] ); ?>'>434 425 </div> 435 426 </div>
Note: See TracChangeset
for help on using the changeset viewer.