summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/dnxcf_helper.php156
-rw-r--r--include/dnxcf_mail_template_danixland.php890
-rw-r--r--include/dnxcf_options-display.php145
-rw-r--r--include/dnxcf_options-register.php87
-rw-r--r--include/dnxcf_settings.php41
-rw-r--r--include/index.php1
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