diff options
| author | danix <danix@danix.xyz> | 2018-07-04 17:44:08 +0200 |
|---|---|---|
| committer | danix <danix@danix.xyz> | 2018-07-04 17:44:08 +0200 |
| commit | b96bc7586a5d69d408041a66d40a483f837e5e39 (patch) | |
| tree | 3fc5aff4ffd0ebd4dc84e6eb3a06ede55ca19d1a /include | |
| download | danixland-contact-form-b96bc7586a5d69d408041a66d40a483f837e5e39.tar.gz danixland-contact-form-b96bc7586a5d69d408041a66d40a483f837e5e39.zip | |
initial commit
Diffstat (limited to 'include')
| -rw-r--r-- | include/dnxcf_helper.php | 156 | ||||
| -rw-r--r-- | include/dnxcf_mail_template_danixland.php | 890 | ||||
| -rw-r--r-- | include/dnxcf_options-display.php | 145 | ||||
| -rw-r--r-- | include/dnxcf_options-register.php | 87 | ||||
| -rw-r--r-- | include/dnxcf_settings.php | 41 | ||||
| -rw-r--r-- | include/index.php | 1 |
6 files changed, 1320 insertions, 0 deletions
diff --git a/include/dnxcf_helper.php b/include/dnxcf_helper.php new file mode 100644 index 0000000..ce1f230 --- /dev/null +++ b/include/dnxcf_helper.php @@ -0,0 +1,156 @@ +<?php +defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); + +// generate a unique code, allows for lenght parameter +if ( ! function_exists('dnxcf_get_unique_code') ) { + + function dnxcf_get_unique_code( $length = "" ) { + $code = md5( uniqid( rand(), true ) ); + + if ($length != "") { + return substr($code, 0, $length); + } else { + return $code; + } + } + +} + +// add button in edit pages to help include our form +function dnxcf_show_form_button() { + $currentScreen = get_current_screen(); + if ( $currentScreen->parent_base == "edit" ) { + echo '<button type="button" id="dnxcf-contact-form" class="button" onclick="dnxcf_send_code()"><span class="dashicons dashicons-testimonial"></span> ' . __('Add Contact Form', 'dnxcf' ) . '</button>'; + } +} +add_action( 'media_buttons', 'dnxcf_show_form_button', 11 ); + +// the actual function that outputs our shortcode once the button is pressed +function dnxcf_insert_shortcode() { + $currentScreen = get_current_screen(); + if ( $currentScreen->parent_base != "edit" ) { + return; + } ?> +<script> + function dnxcf_send_code() { + //Send the shortcode to the editor + window.send_to_editor("[dnx_contactform]"); + } +</script> +<?php +} +add_action( 'admin_footer', 'dnxcf_insert_shortcode' ); + + +// set default options for the plugin +function dnxcf_set_options() { + $defaults = array( + 'dnxcf_pid_key' => dnxcf_get_unique_code(12), + 'dnxcf_recv_name' => 'admin', + 'dnxcf_recv_email' => get_bloginfo('admin_email'), + 'dnxcf_from_email' => 'info@some.url', + 'dnxcf_from_name' => 'webmaster', + 'dnxcf_subject' => array( + __('I want to make a comment.', 'dnxcf'), + __('I want to ask a question.', 'dnxcf'), + __('I am interested in a product.', 'dnxcf'), + __('I have to report a problem.', 'dnxcf'), + __('Other (explain below)', 'dnxcf') + ), + // 1 = text/plain + // 2 = text/html + 'dnxcf_content_type' => '1', + 'dnxcf_privacy' => '', + 'dnxcf_latitude' => '38.2704', + 'dnxcf_longitude' => '16.2971', + 'dnxcf_apikey' => '', + 'dnxcf_gmap_message' => '', + 'dnxcf_DB_VERSION' => '2' + ); + return $defaults; +} + +// helper function that starts up the DB +function dnxcf_db_init() { + global $dnxcf_options; + $dnxcf_options = get_option('dnxcf_options'); + if( false === $dnxcf_options ) { + $dnxcf_options = dnxcf_set_options(); + } + update_option('dnxcf_options', $dnxcf_options); +} + +// helper function that performs a DB version update when needed +function dnxcf_db_update($db_version) { + global $dnxcf_options; + $db_defaults = dnxcf_set_options(); + $merge = wp_parse_args( $dnxcf_options, $db_defaults ); + // update DB version + $merge['dnxcf_DB_VERSION'] = $db_version; + update_option('dnxcf_options', $merge); +} + +// helper function that performs a DB check and then an init/update action +function dnxcf_db_check() { + global $dnxcf_options; + if(false === $dnxcf_options) { + dnxcf_db_init(); + } + $old_db_version = $dnxcf_options['dnxcf_DB_VERSION']; + $new_db_version = DNXCF_CURRENT_DB_VERSION; + if(empty($old_db_version)) { + dnxcf_db_init(); + } + if( intval($old_db_version) < intval($new_db_version) ) { + dnxcf_db_update( $new_db_version ); + } +} + +// helper function that sets the current DB Version for comparison +function dnxcf_set_db_version() { + // Define plugin database version. This should only change when new settings are added. + if ( ! defined( 'DNXCF_CURRENT_DB_VERSION' ) ) { + define( 'DNXCF_CURRENT_DB_VERSION', 4 ); + } +} + +// set the "from" email name to a custom option specified by the user +function dnxcf_update_from_name() { + global $dnxcf_options; + $dnxcf_options = get_option('dnxcf_options'); + $dnxcf_defaults = dnxcf_set_options(); + $from_name = $dnxcf_options['dnxcf_from_name']; + $orig_name = 'WordPress'; + + $name = ( $orig_name != $from_name ) ? $from_name : false; + return $name; +} +if (dnxcf_update_from_name()) + add_filter( 'wp_mail_from_name', 'dnxcf_update_from_name' ); + + +// set the "from" email address to a custom option specified by the user +function dnxcf_update_from_email() { + global $dnxcf_options; + $dnxcf_options = get_option('dnxcf_options'); + $dnxcf_defaults = dnxcf_set_options(); + $from_mail = $dnxcf_options['dnxcf_from_email']; + $orig_mail = $dnxcf_defaults['dnxcf_from_email']; + + $mail = ( $orig_mail != $from_mail ) ? $from_mail : false; + return $mail; +} +if (dnxcf_update_from_email()) + add_filter( 'wp_mail_from', 'dnxcf_update_from_email' ); + +function dnxcf_update_content_type() { + global $dnxcf_options; + $dnxcf_options = get_option('dnxcf_options'); + + // 1 = text/plain + // 2 = text/html + $content_type = ( "1" == $dnxcf_options['dnxcf_content_type'] ) ? 'text/plain' : 'text/html'; + + return $content_type; +} +add_filter( 'wp_mail_content_type', 'dnxcf_update_content_type' ); diff --git a/include/dnxcf_mail_template_danixland.php b/include/dnxcf_mail_template_danixland.php new file mode 100644 index 0000000..69766ac --- /dev/null +++ b/include/dnxcf_mail_template_danixland.php @@ -0,0 +1,890 @@ +<?php +defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); +/** + * danixland-contact-form standard Template + * Template Name = danixland + * Template Author = danilo 'danix' macri + * Template URI = http://danixland.net + */ + +/* +This templating system is really simple, it makes use of a filter inside the +main file that allows template developers to create and use different templates +for their emails simply by hooking to the filter without the need to modify the +original files. It's perfect for customers who want a consistent look between +the website and the emails. + +The template file itself consist of a function that receives arrays as +arguments and returns some formatted html as output. + +The data received by the template consists of 2 different arrays containing the +info that will be reported inside the email sent by the contact form. +the 2 arrays example structure is the following: + +// this is data gathered via various php variables and WordPress functions +$data = array( + 'ownname' = '', // name of the person receiving the message aka US! + 'site' = get_bloginfo('name'), // the site name + 'time' = '', // string generated by current_time() + 'host' = '', // string generated by getenv("REMOTE_ADDR") + 'ua' = '' // string corresponding to $_SERVER['HTTP_USER_AGENT'] +); + +// this is data sent via $_POST by the form itself +$posted = array( + 'dnxcf_name' = '', // the name of the user sending the message + 'dnxcf_email' = '', // the user's email + 'dnxcf_website' = '', // the user's website + 'dnxcf_subject' = '', // the subject of the message + 'dnxcf_message' = '' // the message body +); + +*/ + +// this is the main function, it returns the email content and needs to have +// always the same name or the main plugin won't be able to send emails +// NOTE TO SELF: "I need to fix this ASAP" +function dnxcf_email_content( $data = array(), $posted = array() ) { + extract($data); + extract($posted); + + $ownurl = get_bloginfo('url'); +// heredoc to return the email content + $output = <<<DNX44665312EOT + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<meta name="viewport" content="width=device-width"/> +<style> + #outlook a { + padding: 0; + } + body { + background-color: #f5f5f5; + width: 100%!important; + min-width: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + margin: 0; + padding: 0; + } + .ExternalClass { + width: 100%; + } + .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div { + line-height: 100%; + } + #backgroundTable { + margin: 0; + padding: 0; + width: 100%!important; + line-height: 100%!important; + } + img { + outline: none; + text-decoration: none; + -ms-interpolation-mode: bicubic; + width: auto; + max-width: 100%; + float: left; + clear: both; + display: block; + } + center { + width: 100%; + min-width: 580px; + } + a img { + border: none; + } + p { + margin: 0 0 0 10px; + } + table { + border-spacing: 0; + border-collapse: collapse; + } + td { + word-break: break-word; + -webkit-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; + border-collapse: collapse!important; + } + table, tr, td { + padding: 0; + vertical-align: top; + text-align: left; + } + hr { + color: #d9d9d9; + background-color: #d9d9d9; + height: 1px; + border: none; + } + table.body { + height: 100%; + width: 100%; + } + table.container { + width: 580px; + margin: 0 auto; + text-align: inherit; + } + table.row { + padding: 0px; + width: 100%; + position: relative; + } + table.container table.row { + display: block; + } + td.wrapper { + padding: 10px 20px 0px 0px; + position: relative; + } + table.columns, table.column { + margin: 0 auto; + } + table.columns td, table.column td { + padding: 0px 0px 10px; + } + table.columns td.sub-columns, table.column td.sub-columns, table.columns td.sub-column, table.column td.sub-column { + padding-right: 10px; + } + td.sub-column, td.sub-columns { + min-width: 0px; + } + table.row td.last, table.container td.last { + padding-right: 0px; + } + table.one { + width: 30px; + } + table.two { + width: 80px; + } + table.three { + width: 130px; + } + table.four { + width: 180px; + } + table.five { + width: 230px; + } + table.six { + width: 280px; + } + table.seven { + width: 330px; + } + table.eight { + width: 380px; + } + table.nine { + width: 430px; + } + table.ten { + width: 480px; + } + table.eleven { + width: 530px; + } + table.twelve { + width: 580px; + } + table.one center { + min-width: 30px; + } + table.two center { + min-width: 80px; + } + table.three center { + min-width: 130px; + } + table.four center { + min-width: 180px; + } + table.five center { + min-width: 230px; + } + table.six center { + min-width: 280px; + } + table.seven center { + min-width: 330px; + } + table.eight center { + min-width: 380px; + } + table.nine center { + min-width: 430px; + } + table.ten center { + min-width: 480px; + } + table.eleven center { + min-width: 530px; + } + table.twelve center { + min-width: 580px; + } + table.one .panel center { + min-width: 10px; + } + table.two .panel center { + min-width: 60px; + } + table.three .panel center { + min-width: 110px; + } + table.four .panel center { + min-width: 160px; + } + table.five .panel center { + min-width: 210px; + } + table.six .panel center { + min-width: 260px; + } + table.seven .panel center { + min-width: 310px; + } + table.eight .panel center { + min-width: 360px; + } + table.nine .panel center { + min-width: 410px; + } + table.ten .panel center { + min-width: 460px; + } + table.eleven .panel center { + min-width: 510px; + } + table.twelve .panel center { + min-width: 560px; + } + .body .columns td.one, .body .column td.one { + width: 8.333333%; + } + .body .columns td.two, .body .column td.two { + width: 16.666666%; + } + .body .columns td.three, .body .column td.three { + width: 25%; + } + .body .columns td.four, .body .column td.four { + width: 33.333333%; + } + .body .columns td.five, .body .column td.five { + width: 41.666666%; + } + .body .columns td.six, .body .column td.six { + width: 50%; + } + .body .columns td.seven, .body .column td.seven { + width: 58.333333%; + } + .body .columns td.eight, .body .column td.eight { + width: 66.666666%; + } + .body .columns td.nine, .body .column td.nine { + width: 75%; + } + .body .columns td.ten, .body .column td.ten { + width: 83.333333%; + } + .body .columns td.eleven, .body .column td.eleven { + width: 91.666666%; + } + .body .columns td.twelve, .body .column td.twelve { + width: 100%; + } + td.offset-by-one { + padding-left: 50px; + } + td.offset-by-two { + padding-left: 100px; + } + td.offset-by-three { + padding-left: 150px; + } + td.offset-by-four { + padding-left: 200px; + } + td.offset-by-five { + padding-left: 250px; + } + td.offset-by-six { + padding-left: 300px; + } + td.offset-by-seven { + padding-left: 350px; + } + td.offset-by-eight { + padding-left: 400px; + } + td.offset-by-nine { + padding-left: 450px; + } + td.offset-by-ten { + padding-left: 500px; + } + td.offset-by-eleven { + padding-left: 550px; + } + td.expander { + visibility: hidden; + width: 0px; + padding: 0!important; + } + table.columns .text-pad, table.column .text-pad { + padding-left: 10px; + padding-right: 10px; + } + table.columns .left-text-pad, table.columns .text-pad-left, table.column .left-text-pad, table.column .text-pad-left { + padding-left: 10px; + } + table.columns .right-text-pad, table.columns .text-pad-right, table.column .right-text-pad, table.column .text-pad-right { + padding-right: 10px; + } + .block-grid { + width: 100%; + max-width: 580px; + } + .block-grid td { + display: inline-block; + padding: 10px; + } + .two-up td { + width: 270px; + } + .three-up td { + width: 173px; + } + .four-up td { + width: 125px; + } + .five-up td { + width: 96px; + } + .six-up td { + width: 76px; + } + .seven-up td { + width: 62px; + } + .eight-up td { + width: 52px; + } + table.center, td.center { + text-align: center; + } + h1.center, h2.center, h3.center, h4.center, h5.center, h6.center { + text-align: center; + } + span.center { + display: block; + width: 100%; + text-align: center; + } + img.center { + margin: 0 auto; + float: none; + } + .show-for-small, .hide-for-desktop { + display: none; + } + body, table.body, h1, h2, h3, h4, h5, h6, p, td { + color: #616161; + font-family: "Helvetica", "Arial", sans-serif; + font-weight: normal; + padding: 0; + margin: 0 0 8px; + text-align: left; + line-height: 1.5; + } + h1, h2, h3, h4, h5, h6 { + word-break: normal; + } + h1 { + font-size: 40px; + } + h2 { + font-size: 36px; + } + h3 { + font-size: 32px; + } + h4 { + font-size: 28px; + } + h5 { + font-size: 24px; + } + h6 { + font-size: 20px; + } + body, table.body, p, td { + font-size: 14px; + line-height: 19px; + } + p.lead, p.lede, p.leed { + font-size: 18px; + line-height: 21px; + } + p { + margin-bottom: 10px; + text-align: justify; + } + small { + font-size: 10px; + } + a { + color: #387c2b; + text-decoration: none; + } + a:hover { + color: #faa634!important; + } + a:active { + color: #faa634!important; + } + a:visited { + color: #387c2b!important; + } + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + color: #387c2b; + } + h1 a:active, h2 a:active, h3 a:active, h4 a:active, h5 a:active, h6 a:active { + color: #387c2b!important; + } + h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited { + color: #387c2b!important; + } + .panel { /* PANNELLO AZZURRINO */ + background: #616161; + color: #f5f5f5 + border: 1px solid #ffeb3b; + padding: 15px!important; + box-shadow: 1px 3px 12px rgba(120,120,120,0.6); + } + .sub-grid table { + width: 100%; + } + .sub-grid td.sub-columns { + padding-bottom: 0; + } + table.button, table.tiny-button, table.small-button, table.medium-button, table.large-button { + width: 100%; + overflow: hidden; + } + table.button td, table.tiny-button td, table.small-button td, table.medium-button td, table.large-button td { + display: block; + width: auto!important; + text-align: center; + background: #387c2b; + border: 1px solid #2284a1; + color: #ffffff; + padding: 8px 0; + } + table.tiny-button td { + padding: 5px 0 4px; + } + table.small-button td { + padding: 8px 0 7px; + } + table.medium-button td { + padding: 12px 0 10px; + } + table.large-button td { + padding: 21px 0 18px; + } + table.button td a, table.tiny-button td a, table.small-button td a, table.medium-button td a, table.large-button td a { + font-weight: bold; + text-decoration: none; + font-family: Helvetica, Arial, sans-serif; + color: #ffffff; + font-size: 16px; + } + table.tiny-button td a { + font-size: 12px; + font-weight: normal; + } + table.small-button td a { + font-size: 16px; + } + table.medium-button td a { + font-size: 20px; + } + table.large-button td a { + font-size: 24px; + } + table.button:hover td, table.button:visited td, table.button:active td { + background: #faa634!important; + } + table.button:hover td a, table.button:visited td a, table.button:active td a { + color: #fff!important; + } + table.button:hover td, table.tiny-button:hover td, table.small-button:hover td, table.medium-button:hover td, table.large-button:hover td { + background: #faa634!important; + } + table.button:hover td a, table.button:active td a, table.button td a:visited, table.tiny-button:hover td a, table.tiny-button:active td a, table.tiny-button td a:visited, table.small-button:hover td a, table.small-button:active td a, table.small-button td a:visited, table.medium-button:hover td a, table.medium-button:active td a, table.medium-button td a:visited, table.large-button:hover td a, table.large-button:active td a, table.large-button td a:visited { + color: #ffffff!important; + } + table.secondary td { + background: #e9e9e9; + border-color: #d0d0d0; + color: #555; + } + table.secondary td a { + color: #555; + } + table.secondary:hover td { + background: #d0d0d0!important; + color: #555; + } + table.secondary:hover td a, table.secondary td a:visited, table.secondary:active td a { + color: #555!important; + } + table.success td { + background: #5da423; + border-color: #457a1a; + } + table.success:hover td { + background: #457a1a!important; + } + table.alert td { + background: #c60f13; + border-color: #970b0e; + } + table.alert:hover td { + background: #970b0e!important; + } + table.radius td { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + table.round td { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; + } + body.outlook p { + display: inline!important; + } + @media only screen and (max-width: 600px) { + table[class="body"] img { + width: auto!important; + height: auto!important; + } + table[class="body"] center { + min-width: 0!important; + } + table[class="body"] .container { + width: 95%!important; + } + table[class="body"] .row { + width: 100%!important; + display: block!important; + } + table[class="body"] .wrapper { + display: block!important; + padding-right: 0!important; + } + table[class="body"] .columns, table[class="body"] .column { + table-layout: fixed!important; + float: none!important; + width: 100%!important; + padding-right: 0px!important; + padding-left: 0px!important; + display: block!important; + } + table[class="body"] .wrapper.first .columns, table[class="body"] .wrapper.first .column { + display: table!important; + } + table[class="body"] table.columns td, table[class="body"] table.column td { + width: 100%!important; + } + table[class="body"] .columns td.one, table[class="body"] .column td.one { + width: 8.333333%!important; + } + table[class="body"] .columns td.two, table[class="body"] .column td.two { + width: 16.666666%!important; + } + table[class="body"] .columns td.three, table[class="body"] .column td.three { + width: 25%!important; + } + table[class="body"] .columns td.four, table[class="body"] .column td.four { + width: 33.333333%!important; + } + table[class="body"] .columns td.five, table[class="body"] .column td.five { + width: 41.666666%!important; + } + table[class="body"] .columns td.six, table[class="body"] .column td.six { + width: 50%!important; + } + table[class="body"] .columns td.seven, table[class="body"] .column td.seven { + width: 58.333333%!important; + } + table[class="body"] .columns td.eight, table[class="body"] .column td.eight { + width: 66.666666%!important; + } + table[class="body"] .columns td.nine, table[class="body"] .column td.nine { + width: 75%!important; + } + table[class="body"] .columns td.ten, table[class="body"] .column td.ten { + width: 83.333333%!important; + } + table[class="body"] .columns td.eleven, table[class="body"] .column td.eleven { + width: 91.666666%!important; + } + table[class="body"] .columns td.twelve, table[class="body"] .column td.twelve { + width: 100%!important; + } + table[class="body"] td.offset-by-one, table[class="body"] td.offset-by-two, table[class="body"] td.offset-by-three, table[class="body"] td.offset-by-four, table[class="body"] td.offset-by-five, table[class="body"] td.offset-by-six, table[class="body"] td.offset-by-seven, table[class="body"] td.offset-by-eight, table[class="body"] td.offset-by-nine, table[class="body"] td.offset-by-ten, table[class="body"] td.offset-by-eleven { + padding-left: 0!important; + } + table[class="body"] table.columns td.expander { + width: 1px!important; + } + table[class="body"] .right-text-pad, table[class="body"] .text-pad-right { + padding-left: 10px!important; + } + table[class="body"] .left-text-pad, table[class="body"] .text-pad-left { + padding-right: 10px!important; + } + table[class="body"] .hide-for-small, table[class="body"] .show-for-desktop { + display: none!important; + } + table[class="body"] .show-for-small, table[class="body"] .hide-for-desktop { + display: inherit!important; + } + } +</style> +<style> + .template-label { + color: #ffffff; + font-weight: bold; + font-size: 11px; + } + .callout .panel { + background: #ECF8FF; + border-color: #b9e5ff; + } + .header { + background: #8a8a8a; + box-shadow: 0 2px 12px rgba(120,120,120,0.6) + } + .footer .wrapper { + background: #ebebeb; + } + .footer h5 { + padding-bottom: 10px; + } + table.columns .text-pad { + padding-left: 10px; + padding-right: 10px; + } + table.columns .left-text-pad { + padding-left: 10px; + } + table.columns .right-text-pad { + padding-right: 10px; + } + @media only screen and (max-width: 600px) { + table[class="body"] .right-text-pad { + padding-left: 10px!important; + } + table[class="body"] .left-text-pad { + padding-right: 10px!important; + } + } +</style> +<style> + .template-label { + color: #ffffff; + font-weight: bold; + font-size: 11px; + } + .callout .panel { + background: #cbcbcb; + border-color: #b9e5ff; + } + .header { + background: #8a8a8a; + box-shadow: 0 2px 5px rgba(120,120,120,0.6) + } + .footer .wrapper { + background: #ebebeb; + } + .footer h5 { + padding-bottom: 10px; + } + .reply-notice { + background-color: #ffeb3b; + font-weight: 900; + } + .plugin-support a { + color: #ffeb3b; + font-weight: bold; + } + table.columns .text-pad { + padding-left: 10px; + padding-right: 10px; + } + table.columns .left-text-pad { + padding-left: 10px; + } + table.columns .right-text-pad { + padding-right: 10px; + } + @media only screen and (max-width: 600px) { + table[class="body"] .right-text-pad { + padding-left: 10px!important; + } + table[class="body"] .left-text-pad { + padding-right: 10px!important; + } + } +</style> +</head> +<body> + <table class="body"> + <tr> + <td class="center" align="center" valign="top"> + <center> + <table class="row header"> + <tr> + <td class="center" align="center"> + <center> + <table class="container"> + <tr> + <td class="wrapper last"> + <table class="twelve columns"> + <tr> + <td class="six sub-columns"> + <a href="$ownurl"><img src="data:image/png;base64,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"></a> + </td> + <td class="six sub-columns last" align="right" style="text-align:right; vertical-align:middle;"> + <a href="$ownurl"><span class="template-label">$site</span></a> + </td> + <td class="expander"></td> + </tr> + </table> + </td> + </tr> + </table> + </center> + </td> + </tr> + </table> + <br> + <table class="container"> + <tr> + <td> + <table class="row"> + <tr> + <td class="wrapper last"> + <table class="twelve columns"> + <tr> + <td> + <h1>Hello, $ownname</h1> + <p class="lead">you have been contacted by <strong>$dnxcf_name</strong> on <strong>$site</strong></p> + </td> + <td class="expander"></td> + </tr> + </table> + </td> + </tr> + </table> + <table class="row"> + <tr> + <td class="wrapper last"> + <table class="twelve columns"> + <tr> + <td> + <h3>message about <strong>"$dnxcf_subject"</strong></h3> + <div><p>$dnxcf_message</p></div> + </td> + <td class="expander"></td> + </tr> + </table> + </td> + </tr> + </table> + <table class="row callout"> + <tr> + <td class="wrapper last"> + <table class="twelve columns"> + <tr> + <td class="panel"> + <p>Some details about $dnxcf_name: + <ul> + <li>Browser: $ua</li> + <li>Time: $time</li> + <li>IP Address: $host</li> + </ul> + </p> + </td> + <td class="expander"></td> + </tr> + </table> + </td> + </tr> + </table> + <table class="row"> + <tr> + <td class="wrapper last"> + <table class="twelve columns"> + <tr> + <td align="center"> + <center> + <p class="reply-notice" style="text-align:center;"><small>you can reply directly to this email</small></p> + </center> + </td> + <td class="expander"></td> + </tr> + </table> + </td> + </tr> + </table> + <table class="row"> + <tr> + <td class="wrapper last"> + <table class="twelve columns"> + <tr> + <td align="center"> + <center> + <p class="plugin-support"><a href="https://danix.xyz/?p=3577">plugin author support</a> | <a href="https://wordpress.org/support/">WordPress Support Forum</a></p> + </center> + </td> + <td class="expander"></td> + </tr> + </table> + </td> + </tr> + </table> + </td> + </tr> + </table> + </center> + </td> + </tr> + </table> +</body> +</html> + +DNX44665312EOT; + + return $output; + +} + +?> + diff --git a/include/dnxcf_options-display.php b/include/dnxcf_options-display.php new file mode 100644 index 0000000..28618e5 --- /dev/null +++ b/include/dnxcf_options-display.php @@ -0,0 +1,145 @@ +<?php +defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); +// usage: $id, $title, $callback, $page +add_settings_section('dnxcf_mailfrom_options', __('Sender email address', 'dnxcf'), 'dnxcf_settings_mailfrom_section_text', 'dnxcf_options_sections'); +add_settings_section('dnxcf_email_address', __('Recipient email address', 'dnxcf'), 'dnxcf_settings_email_address_section_text', 'dnxcf_options_sections'); +add_settings_section('dnxcf_content_type', __('Content type', 'dnxcf'), 'dnxcf_settings_content_type_section_text', 'dnxcf_options_sections'); +add_settings_section('dnxcf_subject_options', __('Subject', 'dnxcf'), 'dnxcf_settings_subject_section_text', 'dnxcf_options_sections'); +add_settings_section('dnxcf_privacy_policy', __('Privacy policy', 'dnxcf'), 'dnxcf_settings_privacy_section_text', 'dnxcf_options_sections'); +add_settings_section('dnxcf_googlemap', __('Google Map', 'dnxcf'), 'dnxcf_settings_googlemap_section_text', 'dnxcf_options_sections'); + + +// usage: $id, $title, $callback, $page, $section, $args +add_settings_field('dnxcf_setting_content_type_display', __('content type?', 'dnxcf'), 'dnxcf_setting_content_type_display', 'dnxcf_options_sections', 'dnxcf_content_type'); +add_settings_field('dnxcf_setting_email_name_display', __('name?', 'dnxcf'), 'dnxcf_setting_email_name_display', 'dnxcf_options_sections', 'dnxcf_email_address'); +add_settings_field('dnxcf_setting_email_address_display', __('email address?', 'dnxcf'), 'dnxcf_setting_email_address_display', 'dnxcf_options_sections', 'dnxcf_email_address'); +add_settings_field('dnxcf_setting_subject_display', __('subject options?', 'dnxcf'), 'dnxcf_setting_subject_display', 'dnxcf_options_sections', 'dnxcf_subject_options'); +add_settings_field('dnxcf_setting_mailfrom_name_display', __('name?', 'dnxcf'), 'dnxcf_setting_mailfrom_name_display', 'dnxcf_options_sections', 'dnxcf_mailfrom_options'); +add_settings_field('dnxcf_setting_mailfrom_mail_display', __('email address?', 'dnxcf'), 'dnxcf_setting_mailfrom_mail_display', 'dnxcf_options_sections', 'dnxcf_mailfrom_options'); +add_settings_field('dnxcf_setting_privacy_display', __('policy text?', 'dnxcf'), 'dnxcf_setting_privacy_display', 'dnxcf_options_sections', 'dnxcf_privacy_policy'); +add_settings_field('dnxcf_setting_googlemap_apikey', __('GMaps API Key?', 'dnxcf'), 'dnxcf_setting_googlemap_apikey_display', 'dnxcf_options_sections', 'dnxcf_googlemap'); +add_settings_field('dnxcf_setting_googlemap_latitude', __('Latitude?', 'dnxcf'), 'dnxcf_setting_googlemap_lat_display', 'dnxcf_options_sections', 'dnxcf_googlemap'); +add_settings_field('dnxcf_setting_googlemap_longitude', __('Longitude?', 'dnxcf'), 'dnxcf_setting_googlemap_long_display', 'dnxcf_options_sections', 'dnxcf_googlemap'); +add_settings_field('dnxcf_setting_googlemap_message', __('Address?', 'dnxcf'), 'dnxcf_setting_googlemap_message_display', 'dnxcf_options_sections', 'dnxcf_googlemap'); + +function dnxcf_settings_content_type_section_text() { ?> +<p><?php _e( 'Here you can change the content type of your emails, either html or plain text.', 'dnxcf' ); ?></p> +<?php } + +function dnxcf_settings_email_address_section_text() { ?> +<p><?php _e( 'This is the email address where you will receive all email from the contact form.', 'dnxcf' ); ?></p> +<?php } + +function dnxcf_settings_subject_section_text() { ?> +<p><?php _e( 'These are the options that you are giving as a dropdown list to your users.', 'dnxcf' ); ?></p> +<?php } + +function dnxcf_settings_mailfrom_section_text() { ?> +<p> +<?php _e( 'Here you can set the sender email address for the contact form.', 'dnxcf' ); ?><br /> +<?php + global $dnxcf_options; + $dnxcf_options = get_option( 'dnxcf_options' ); + echo sprintf( + __( 'The emails you will receive will be from: <code>%s < %s ></code>', 'dnxcf' ), + $dnxcf_options['dnxcf_from_name'], + $dnxcf_options['dnxcf_from_email'] + ); +?><br /> +<?php _e( 'so just make sure you whitelist this address in your mail client to avoid losing important messages.', 'dnxcf' ); ?> +</p> +<?php } + +function dnxcf_settings_privacy_section_text() { ?> +<p><?php _e( 'Enter here the content of your privacy policy relative to the contact form.', 'dnxcf' ); ?></p> +<?php } + +function dnxcf_settings_googlemap_section_text() { ?> +<p><?php _e( 'Here you can change various settings for the map that will be displayed on the form page. <strong>Note:</strong> if the API Key value is missing the map will be disabled.', 'dnxcf' ); ?></p> +<?php } + +// Content type for email sent via this form +function dnxcf_setting_content_type_display() { +$dnxcf_options = get_option( 'dnxcf_options' ); +// 1 = text/plain +// 2 = text/html +?> +<input type="radio" name="dnxcf_options[dnxcf_content_type]" <?php checked( $dnxcf_options['dnxcf_content_type'], '1' ); ?> value='1' /> <?php _e('text/plain', 'dnxcf'); ?><br /> +<input type="radio" name="dnxcf_options[dnxcf_content_type]" <?php checked( $dnxcf_options['dnxcf_content_type'], '2' ); ?> value='2' /> <?php _e('text/html', 'dnxcf'); ?><br /> +<span class="description"><?php _e('Send plain (text) or rich (html) messages.', 'dnxcf'); ?></span> +<?php } + +// Receiving email name +function dnxcf_setting_email_name_display() { +$dnxcf_options = get_option( 'dnxcf_options' ); ?> +<input type="text" name="dnxcf_options[dnxcf_recv_name]" value="<?php echo $dnxcf_options['dnxcf_recv_name']; ?>" /><br /> +<span class="description"><?php _e('This is how you will be called in every email you will receive from this contact form.', 'dnxcf'); ?></span> +<?php } + +// Receiving email address +function dnxcf_setting_email_address_display() { +$dnxcf_options = get_option( 'dnxcf_options' ); ?> +<input type="email" name="dnxcf_options[dnxcf_recv_email]" value="<?php echo $dnxcf_options['dnxcf_recv_email']; ?>" /><br /> +<span class="description"><?php _e('If you leave this field empty the admin email address will be used.', 'dnxcf'); ?></span> +<?php } + +// Custom subject options +function dnxcf_setting_subject_display() { +$dnxcf_options = get_option( 'dnxcf_options' ); ?> +<textarea name="dnxcf_options[dnxcf_subject]" rows="10" cols="80" /><?php echo implode("\n", $dnxcf_options['dnxcf_subject']); ?></textarea><br /> +<span class="description"><?php _e('Insert one option per line. If you leave this area empty the default options will be used.', 'dnxcf'); ?></span> +<?php } + +// Sender email address +function dnxcf_setting_mailfrom_mail_display() { +$dnxcf_options = get_option( 'dnxcf_options' ); ?> +<input type="email" name="dnxcf_options[dnxcf_from_email]" value="<?php echo $dnxcf_options['dnxcf_from_email']; ?>" /><br /> +<span class="description"><?php _e('This is the email address from which you will receive communications.', 'dnxcf'); ?></span> +<?php } + +// Sender name +function dnxcf_setting_mailfrom_name_display() { +$dnxcf_options = get_option( 'dnxcf_options' ); ?> +<input type="text" name="dnxcf_options[dnxcf_from_name]" value="<?php echo $dnxcf_options['dnxcf_from_name']; ?>" /><br /> +<span class="description"><?php _e('This is the name associated to the above email address.', 'dnxcf'); ?></span> +<?php } + +// Privacy Policy +function dnxcf_setting_privacy_display() { +$dnxcf_options = get_option( 'dnxcf_options' ); ?> +<textarea name="dnxcf_options[dnxcf_privacy]" rows="10" cols="80" /><?php echo wptexturize($dnxcf_options['dnxcf_privacy']); ?></textarea><br /> +<span class="description"><?php _e('The text of the privacy policy, Leave empty to disable the policy area in the form.', 'dnxcf'); ?></span> +<?php } + +// api key +function dnxcf_setting_googlemap_apikey_display() { +$dnxcf_options = get_option( 'dnxcf_options' ); +$dev_links = 'https://developers.google.com/maps/documentation/javascript/get-api-key'; ?> +<input type="text" name="dnxcf_options[dnxcf_apikey]" value="<?php echo $dnxcf_options['dnxcf_apikey']; ?>" /><br /> +<span class="description"><?php _e('You need an API Key from the developers console in order to use Google Maps', 'dnxcf'); ?></span><br /> +<span class="description"><?php echo sprintf(__('check the <a href="%s">documentation</a> on the google developers platform.', 'dnxcf'), $dev_links ); ?></span><br /> +<span class="description"><?php _e('Leave empty to disable the display of a Google Map on the form.', 'dnxcf'); ?></span> +<?php } + +// map message +function dnxcf_setting_googlemap_message_display() { +$dnxcf_options = get_option( 'dnxcf_options' ); ?> +<input type="text" name="dnxcf_options[dnxcf_gmap_message]" value="<?php echo $dnxcf_options['dnxcf_gmap_message']; ?>" /><br /> +<span class="description"><?php _e('Address to be displayed as a popup inside the map. Leave empty to disable.', 'dnxcf'); ?></span> +<?php } + +// Longitude +function dnxcf_setting_googlemap_long_display() { +$dnxcf_options = get_option( 'dnxcf_options' ); ?> +<input type="number" name="dnxcf_options[dnxcf_longitude]" value="<?php echo $dnxcf_options['dnxcf_longitude']; ?>" step="0.000001" /><br /> +<span class="description"><?php _e('Longitude value, eg. 16.290340', 'dnxcf'); ?></span><br /> +<span class="description"><?php _e('+/- 180 degrees value accepted', 'dnxcf'); ?></span> +<?php } + +// Latitude +function dnxcf_setting_googlemap_lat_display() { +$dnxcf_options = get_option( 'dnxcf_options' ); ?> +<input type="number" name="dnxcf_options[dnxcf_latitude]" value="<?php echo $dnxcf_options['dnxcf_latitude']; ?>" step="0.000001" /><br /> +<span class="description"><?php _e('Latitude value, eg. 38.269625.', 'dnxcf'); ?></span><br /> +<span class="description"><?php _e('+/- 90 degrees value accepted', 'dnxcf'); ?></span> +<?php } diff --git a/include/dnxcf_options-register.php b/include/dnxcf_options-register.php new file mode 100644 index 0000000..6445209 --- /dev/null +++ b/include/dnxcf_options-register.php @@ -0,0 +1,87 @@ +<?php +defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); + +// include the file with the actual markup for the options to display +require( dirname( __FILE__ ) . '/dnxcf_options-display.php' ); + +/** + * Register the set of options required for the plugin to work + * @since 1.1.1 + */ +register_setting( 'dnxcf_options', 'dnxcf_options', 'dnxcf_setup_validate' ); + +// our validation function +function dnxcf_setup_validate( $input ) { + + $dnxcf_options = get_option('dnxcf_options'); + $valid_input = $dnxcf_options; + + $submit = ( ! empty( $input['submit'] ) ? true : false ); + $reset = ( ! empty( $input['reset'] ) ? true : false ); + + if($submit) { + $default_options = dnxcf_set_options(); + // content type + $valid_input['dnxcf_content_type'] = ( '1' == $input['dnxcf_content_type'] ? $default_options['dnxcf_content_type'] : "2" ); + // email address + $valid_input['dnxcf_recv_name'] = ( '' == $input['dnxcf_recv_name'] ? $default_options['dnxcf_recv_name'] : sanitize_text_field($input['dnxcf_recv_name']) ); + $valid_input['dnxcf_recv_email'] = ( '' == $input['dnxcf_recv_email'] ? $default_options['dnxcf_recv_email'] : sanitize_email($input['dnxcf_recv_email']) ); + // subject options + if ( '' == $input['dnxcf_subject'] ) { + $valid_input['dnxcf_subject'] = $default_options['dnxcf_subject']; + } else { + $valid_input['dnxcf_subject'] = rtrim(esc_textarea( $input['dnxcf_subject'] )); + $valid_input['dnxcf_subject'] = explode("\n", $valid_input['dnxcf_subject']); + } + // from email address and name + $valid_input['dnxcf_from_email'] = ( '' == $input['dnxcf_from_email'] ? $default_options['dnxcf_from_email'] : sanitize_email($input['dnxcf_from_email']) ); + $valid_input['dnxcf_from_name'] = ( '' == $input['dnxcf_from_name'] ? $default_options['dnxcf_from_name'] : sanitize_text_field($input['dnxcf_from_name']) ); + // privacy policy + $valid_html = array( + 'a' => array( + 'href' => array(), + 'title' => array() + ), + 'br' => array(), + 'em' => array(), + 'strong' => array(), + 'p' => array() + ); + $valid_input['dnxcf_privacy'] = ( '' == $input['dnxcf_privacy'] ? false : wp_kses($input['dnxcf_privacy'], $valid_html) ); + // latitude and longitude + $valid_input['dnxcf_gmap_message'] = ( '' == $input['dnxcf_gmap_message'] ? $default_options['dnxcf_gmap_message'] : sanitize_text_field($input['dnxcf_gmap_message']) ); + if ( '' != $input['dnxcf_latitude'] ) { + $valid_input['dnxcf_latitude'] = ( preg_match("/^[-]?[0-8]?[0-9]\.\d+|[-]?90\.0+?/A", $input['dnxcf_latitude']) ? $input['dnxcf_latitude'] : '' ); + } else { + $valid_input['dnxcf_latitude'] = ''; + } + $valid_input['dnxcf_apikey'] = ( '' == $input['dnxcf_apikey'] ? $default_options['dnxcf_apikey'] : sanitize_html_class($input['dnxcf_apikey']) ); + + if ( '' != $input['dnxcf_longitude'] ) { + $valid_input['dnxcf_longitude'] = ( preg_match("/[-]?1[0-7][0-9]\.\d+|[-]?[0-9]?[0-9]\.\d+|[-]?180\.0+?/A", $input['dnxcf_longitude']) ? $input['dnxcf_longitude'] : '' ); + } else { + $valid_input['dnxcf_longitude'] = ''; + } + } elseif ($reset) { + $default_options = dnxcf_set_options(); + // content type + $valid_input['dnxcf_content_type'] = $default_options['dnxcf_content_type']; + // email address + $valid_input['dnxcf_recv_name'] = $default_options['dnxcf_recv_name']; + $valid_input['dnxcf_recv_email'] = $default_options['dnxcf_recv_email']; + // subject options + $valid_input['dnxcf_subject'] = $default_options['dnxcf_subject']; + // from email address and name + $valid_input['dnxcf_from_email'] = $default_options['dnxcf_from_email']; + $valid_input['dnxcf_from_name'] = $default_options['dnxcf_from_name']; + // subject options + $valid_input['dnxcf_privacy'] = $default_options['dnxcf_privacy']; + // latitude and longitude + $valid_input['dnxcf_gmap_message'] = $default_options['dnxcf_gmap_message']; + $valid_input['dnxcf_apikey'] = $default_options['dnxcf_apikey']; + $valid_input['dnxcf_latitude'] = $default_options['dnxcf_latitude']; + $valid_input['dnxcf_longitude'] = $default_options['dnxcf_longitude']; + } + return $valid_input; +} + diff --git a/include/dnxcf_settings.php b/include/dnxcf_settings.php new file mode 100644 index 0000000..b7c29e4 --- /dev/null +++ b/include/dnxcf_settings.php @@ -0,0 +1,41 @@ +<?php +defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); +/** + * Include settings options for our plugin + * @since 0.2 + */ +add_action('admin_menu', 'dnxcf_settings' ); +function dnxcf_settings() { + add_menu_page('danixland Contact Form Settings', __('Contact Form', 'dnxcf'), 'manage_options', 'dnxcf_options', 'dnxcf_settings_display', 'dashicons-testimonial'); +} + +/** + * The function that outputs our admin page + * @since 0.2 + */ +function dnxcf_settings_display() { +?> + <div class="wrap"> + <h2><?php _e('danixland Contact Form Set up', 'dnxcf') ?></h2> + <form method="post" action="options.php"> + <?php + settings_fields('dnxcf_options'); + do_settings_sections('dnxcf_options_sections'); + ?> + <p class="submit"> + <input name="dnxcf_options[submit]" type="submit" class="button-primary" value="<?php esc_attr_e('Save Changes', 'dnxcf') ?>" /> + <input name="dnxcf_options[reset]" type="submit" class="button-secondary" value="<?php esc_attr_e('Reset Defaults', 'dnxcf'); ?>" /> + </p> + </form> + </div> +<?php +} + +/** + * Settings API options initilization and validation + * @since 0.2 + */ +function dnxcf_register_options() { + require( dirname( __FILE__ ) . '/dnxcf_options-register.php' ); +} +add_action('admin_init', 'dnxcf_register_options'); diff --git a/include/index.php b/include/index.php new file mode 100644 index 0000000..cb66473 --- /dev/null +++ b/include/index.php @@ -0,0 +1 @@ +<?php exit('<h2>Directory Access Prohibited</h2>'); ?>
\ No newline at end of file |
