Contact Form & SMTP Plugin for WordPress by PirateForms - Version 1.2.1

Version Description

Download this release

Release Info

Developer themeisle
Plugin Icon 128x128 Contact Form & SMTP Plugin for WordPress by PirateForms
Version 1.2.1
Comparing to
See all releases

Code changes from version 1.2.0 to 1.2.1

CHANGELOG.md CHANGED
@@ -1,4 +1,8 @@
1
 
 
 
 
 
2
 
3
 
4
 
5
- Update readme.txt
1
 
2
+ ### v1.2.0 - 2017-05-08
3
+ **Changes:**
4
+ - Changed sent email format to a HTML type
5
+
6
 
7
 
8
 
 
bin/deploy.sh ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # We run this just one time, for a first job from the buid and just at once after_deploy hook.
4
+ if ! [ $AFTER_DEPLOY_RUN ] && [ "$TRAVIS_PHP_VERSION" == "7.0" ]; then
5
+
6
+ # Flag the run in order to not be trigged again on the next after_deploy.
7
+ export AFTER_DEPLOY_RUN=1;
8
+ echo " Started deploy script. ";
9
+
10
+ # Setup git username and email.
11
+
12
+ git config user.name "selul"
13
+ git config user.email ${GITHUB_EMAIL}
14
+ git fetch
15
+
16
+ # Check if we already have a tag with this version.
17
+ if ! git rev-parse "v$THEMEISLE_VERSION" >/dev/null 2>&1
18
+ then
19
+
20
+ # Send changelog changes to git.
21
+ git checkout $MASTER_BRANCH
22
+ git add -v .
23
+
24
+ # We use [skip ci] in message to prevent this commit to trigger the build.
25
+ git commit -a -m "[AUTO][skip ci] Updating changelog for v"$THEMEISLE_VERSION
26
+ git push --quiet "https://${GITHUB_TOKEN}@github.com/$UPSTREAM_REPO.git" HEAD:$MASTER_BRANCH
27
+
28
+ # Tag the new release.
29
+ git tag -a "v$THEMEISLE_VERSION" -m "[AUTO] Release of $THEMEISLE_VERSION ";
30
+ git push --quiet "https://${GITHUB_TOKEN}@github.com/$UPSTREAM_REPO.git" --tags ;
31
+ sleep 5;
32
+
33
+ # Sends the api call for creating the release.
34
+ # We use this as the travis release provider does not offer any way
35
+ # to set the body of the release.
36
+ API_JSON='{"tag_name": "v'$THEMEISLE_VERSION'","target_commitish": "'$MASTER_BRANCH'","name": "v'$THEMEISLE_VERSION'","body": "'$CHANGES'","draft": false,"prerelease": false}';
37
+ curl -s --data "$API_JSON" "https://api.github.com/repos/$UPSTREAM_REPO/releases?access_token="$GITHUB_TOKEN > /dev/null;
38
+ fi
39
+ # Send update to the store
40
+ STORE_JSON='{"version": "'$THEMEISLE_VERSION'","id": "'$THEMEISLE_ID'","body": "'$CHANGES'"}';
41
+ curl -s -H "Content-Type: application/json" -H "x-themeisle-auth: $THEMEISLE_AUTH" --data "$STORE_JSON" "$STORE_URL/wp-json/ti-endpoint/v1/update_changelog_new/" > /dev/null
42
+
43
+ # Send data to demo server.
44
+ grunt sftp
45
+
46
+ # Upload to Wordpress SVN
47
+ if [ ! -z "$WPORG_PASS" ]; then
48
+
49
+ svn co -q "http://svn.wp-plugins.org/$THEMEISLE_REPO" svn
50
+
51
+ # Copy new content to svn trunk.
52
+ rsync -r -p --delete --exclude=".*" dist/* svn/trunk
53
+
54
+ # Create new SVN tag.
55
+ mkdir -p svn/tags/$THEMEISLE_VERSION
56
+ rsync -r -p dist/* svn/tags/$THEMEISLE_VERSION
57
+ # Add new files to SVN
58
+ svn stat svn | grep '^?' | awk '{print $2}' | xargs -I x svn add x@
59
+ # Remove deleted files from SVN
60
+ svn stat svn | grep '^!' | awk '{print $2}' | xargs -I x svn rm --force x@
61
+
62
+ svn stat svn
63
+
64
+ # Commit to SVN
65
+ svn commit svn --no-auth-cache -m "Release v$THEMEISLE_VERSION" --username $WPORG_USER --password $WPORG_PASS
66
+ # Remove svn dir.
67
+ rm -fR svn
68
+
69
+ fi
70
+
71
+ fi;
bin/install-dependencies.sh ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # We run this on PR or on push to MASTER_BRANCH.
4
+ if [ "$TRAVIS_PULL_REQUEST" != "false" ] || ( [ "$TRAVIS_EVENT_TYPE" == "push" ] && [ "$TRAVIS_REPO_SLUG" == "$UPSTREAM_REPO" ] && [ "$TRAVIS_BRANCH" == "$MASTER_BRANCH" ] && [ "$TRAVIS_PHP_VERSION" == "7.0" ] ) ; then
5
+
6
+ . $HOME/.nvm/nvm.sh
7
+ nvm install stable
8
+ nvm use stable
9
+
10
+ npm install
11
+ npm install grunt-cli -g
12
+
13
+ phpenv local 5.6
14
+
15
+ composer selfupdate 1.0.0 --no-interaction
16
+ composer install --no-interaction
17
+ phpenv local --unset
18
+
19
+ fi;
20
+ # We dont install PHPCS if is not a PR.
21
+ if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
22
+
23
+ # Install PHPCS.
24
+ pear install pear/PHP_CodeSniffer-2.8.1
25
+
26
+ # Install WPCS standards.
27
+ git clone -b master --depth 1 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git $HOME/wordpress-coding-standards
28
+ phpenv rehash
29
+ phpcs --config-set installed_paths $HOME/wordpress-coding-standards
30
+ phpenv rehash
31
+
32
+ # Install wordpress for testing.
33
+ bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION
34
+ export PATH="$HOME/.composer/vendor/bin:$PATH"
35
+
36
+ # Use phpunit 5.7 as WP dont support 6.
37
+ if [[ ${TRAVIS_PHP_VERSION:0:2} == "7." ]]; then
38
+ composer global require "phpunit/phpunit=5.7.*" ;
39
+ fi;
40
+ fi;
bin/install-wp-tests.sh ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+
3
+
4
+ if [ $# -lt 3 ]; then
5
+ echo "usage: $0 <db-name> <db-user> <db-pass> [db-host] [wp-version] [force download]"
6
+ exit 1
7
+ fi
8
+
9
+ DB_NAME=$1
10
+ DB_USER=$2
11
+ DB_PASS=$3
12
+ DB_HOST=${4-localhost}
13
+ WP_VERSION=${5-latest}
14
+ FORCE=${6-false}
15
+
16
+ WP_TESTS_DIR=${WP_TESTS_DIR-/tmp/wordpress-tests-lib}
17
+ WP_CORE_DIR=${WP_CORE_DIR-/tmp/wordpress/}
18
+
19
+ download() {
20
+ if [ `which curl` ]; then
21
+ curl -s "$1" > "$2";
22
+ elif [ `which wget` ]; then
23
+ wget -nv -O "$2" "$1"
24
+ fi
25
+ }
26
+
27
+ if [[ $WP_VERSION =~ [0-9]+\.[0-9]+(\.[0-9]+)? ]]; then
28
+ WP_TESTS_TAG="tags/$WP_VERSION"
29
+ else
30
+ # http serves a single offer, whereas https serves multiple. we only want one
31
+ download http://api.wordpress.org/core/version-check/1.7/ /tmp/wp-latest.json
32
+ grep '[0-9]+\.[0-9]+(\.[0-9]+)?' /tmp/wp-latest.json
33
+ LATEST_VERSION=$(grep -o '"version":"[^"]*' /tmp/wp-latest.json | sed 's/"version":"//')
34
+ if [[ -z "$LATEST_VERSION" ]]; then
35
+ echo "Latest WordPress version could not be found"
36
+ exit 1
37
+ fi
38
+ WP_TESTS_TAG="tags/$LATEST_VERSION"
39
+ fi
40
+
41
+ if [[ $WP_TESTS_TAG == *"beta"* ]]
42
+ then
43
+ WP_TESTS_TAG="trunk"
44
+ fi
45
+
46
+ set -ex
47
+
48
+ install_wp() {
49
+ if [ $FORCE == 'true' ]; then
50
+ rm -Rf $WP_CORE_DIR
51
+ fi
52
+
53
+ if [ -d $WP_CORE_DIR ]; then
54
+ return;
55
+ fi
56
+
57
+ mkdir -p $WP_CORE_DIR
58
+
59
+ if [ $WP_VERSION == 'latest' ]; then
60
+ local ARCHIVE_NAME='latest'
61
+ else
62
+ local ARCHIVE_NAME="wordpress-$WP_VERSION"
63
+ fi
64
+
65
+ download https://wordpress.org/${ARCHIVE_NAME}.tar.gz /tmp/wordpress.tar.gz
66
+ tar --strip-components=1 -zxmf /tmp/wordpress.tar.gz -C $WP_CORE_DIR
67
+
68
+ download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php
69
+ }
70
+
71
+ install_test_suite() {
72
+ if [ $FORCE == 'true' ]; then
73
+ rm -Rf $WP_TESTS_DIR
74
+ fi
75
+
76
+ # portable in-place argument for both GNU sed and Mac OSX sed
77
+ if [[ $(uname -s) == 'Darwin' ]]; then
78
+ local ioption='-i .bak'
79
+ else
80
+ local ioption='-i'
81
+ fi
82
+
83
+ # set up testing suite if it doesn't yet exist
84
+ if [ ! -d $WP_TESTS_DIR ]; then
85
+ # set up testing suite
86
+ mkdir -p $WP_TESTS_DIR
87
+ svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes
88
+ svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data
89
+ fi
90
+
91
+ cd $WP_TESTS_DIR
92
+
93
+ if [ ! -f wp-tests-config.php ]; then
94
+ download https://develop.svn.wordpress.org/${WP_TESTS_TAG}/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php
95
+ sed $ioption "s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR':" "$WP_TESTS_DIR"/wp-tests-config.php
96
+ sed $ioption "s/youremptytestdbnamehere/$DB_NAME/" "$WP_TESTS_DIR"/wp-tests-config.php
97
+ sed $ioption "s/yourusernamehere/$DB_USER/" "$WP_TESTS_DIR"/wp-tests-config.php
98
+ sed $ioption "s/yourpasswordhere/$DB_PASS/" "$WP_TESTS_DIR"/wp-tests-config.php
99
+ sed $ioption "s|localhost|${DB_HOST}|" "$WP_TESTS_DIR"/wp-tests-config.php
100
+ fi
101
+
102
+ }
103
+
104
+ install_db() {
105
+ # parse DB_HOST for port or socket references
106
+ local PARTS=(${DB_HOST//\:/ })
107
+ local DB_HOSTNAME=${PARTS[0]};
108
+ local DB_SOCK_OR_PORT=${PARTS[1]};
109
+ local EXTRA=""
110
+
111
+ if ! [ -z $DB_HOSTNAME ] ; then
112
+ if [ $(echo $DB_SOCK_OR_PORT | grep -e '^[0-9]\{1,\}$') ]; then
113
+ EXTRA=" --host=$DB_HOSTNAME --port=$DB_SOCK_OR_PORT --protocol=tcp"
114
+ elif ! [ -z $DB_SOCK_OR_PORT ] ; then
115
+ EXTRA=" --socket=$DB_SOCK_OR_PORT"
116
+ elif ! [ -z $DB_HOSTNAME ] ; then
117
+ EXTRA=" --host=$DB_HOSTNAME --protocol=tcp"
118
+ fi
119
+ fi
120
+
121
+ # create database
122
+ mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA
123
+ }
124
+
125
+ install_wp
126
+ install_test_suite
127
+ install_db
bin/prepare-deploy.sh ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ #We make sure we run this just at one before_deploy hook.
4
+ if ! [ $BEFORE_DEPLOY_RUN ] && [ "$TRAVIS_PHP_VERSION" == "7.0" ]; then
5
+
6
+ echo " Preparing deploy. ";
7
+
8
+ # Flag the run.
9
+ export BEFORE_DEPLOY_RUN=1;
10
+
11
+ # Parse the name of the repo.
12
+ export THEMEISLE_REPO=$(node -pe "require('./package.json').name")
13
+
14
+ # Parse the version of the product.
15
+
16
+ export THEMEISLE_VERSION=$(node -pe "require('./package.json').version")
17
+
18
+ # Parse product category.
19
+ export THEMEISLE_CATEGORY=$(node -pe "require('./package.json').category")
20
+
21
+ export DEMO_THEMEISLE_PATH="/sites/demo.themeisle.com/wp-content/$THEMEISLE_CATEGORY/$THEMEISLE_REPO";
22
+
23
+ # Build changelog based on commit message description.
24
+ CHANGELOG="\n ### v$THEMEISLE_VERSION - "$(date +'%Y-%m-%d')" \n **Changes:** \n";
25
+
26
+ # Remove first line from the commit as is it used as commit title.
27
+ NORMALIZED_MESSAGE=$(sed "1d" <<< "$TRAVIS_COMMIT_MESSAGE");
28
+
29
+ # Save changes list in a sepparately variable as we use it in the release body.
30
+ export CHANGES="";
31
+ while read -r line; do
32
+ if ! [ -z $line ]; then
33
+ line=$(echo "${line//[$'\r\n']}");
34
+ export CHANGES=$CHANGES'- '$line'\n';
35
+ fi;
36
+ done <<< "$NORMALIZED_MESSAGE"
37
+
38
+ # Concat changes and changelog title and prepend to the changelog file.
39
+
40
+ CHANGELOG="$CHANGELOG $CHANGES";
41
+ echo -e "$CHANGELOG $(cat CHANGELOG.md)" > CHANGELOG.md
42
+
43
+ # Run the prepare deployment action
44
+
45
+ grunt deploy
46
+ fi;
css/front.css CHANGED
@@ -1,5 +1,5 @@
1
  /*
2
- Version: 1.2.0
3
  */
4
  .pirate_forms_wrap .form_field_wrap {
5
  margin-bottom: 20px;
1
  /*
2
+ Version: 1.2.1
3
  */
4
  .pirate_forms_wrap .form_field_wrap {
5
  margin-bottom: 20px;
inc/settings.php CHANGED
@@ -490,7 +490,12 @@ function pirate_forms_admin() {
490
 
491
  <h4><?php esc_html_e( 'Are you enjoying Pirate Forms?', 'pirate-forms' ); ?></h4>
492
 
493
- <p class="review-link"><?php echo sprintf( esc_html__( 'Rate our plugin on %1$s WordPress.org %2$s. We\'d really appreciate it!', 'pirate-forms' ), '<a href="https://wordpress.org/support/view/plugin-reviews/pirate-forms" target="_blank" rel="nofollow"> ', '</a>' ); ?></p>
 
 
 
 
 
494
 
495
  <p><span class="dashicons dashicons-star-filled"></span><span
496
  class="dashicons dashicons-star-filled"></span><span
@@ -499,7 +504,12 @@ function pirate_forms_admin() {
499
  class="dashicons dashicons-star-filled"></span></p>
500
 
501
  <p>
502
- <small><?php echo sprintf( esc_html__( 'If you want a more complex Contact Form Plugin please check %1$s this link %2$s.', 'pirate-forms' ), '<a href="http://www.codeinwp.com/blog/best-contact-form-plugins-wordpress/" target="_blank" >', '</a>' ); ?></small>
 
 
 
 
 
503
  </p>
504
  </div>
505
 
490
 
491
  <h4><?php esc_html_e( 'Are you enjoying Pirate Forms?', 'pirate-forms' ); ?></h4>
492
 
493
+ <p class="review-link">
494
+ <?php
495
+ /* translators: link to WordPress.org repo for PirateForms */
496
+ echo sprintf( esc_html__( 'Rate our plugin on %1$s WordPress.org %2$s. We\'d really appreciate it!', 'pirate-forms' ), '<a href="https://wordpress.org/support/view/plugin-reviews/pirate-forms" target="_blank" rel="nofollow"> ', '</a>' );
497
+ ?>
498
+ </p>
499
 
500
  <p><span class="dashicons dashicons-star-filled"></span><span
501
  class="dashicons dashicons-star-filled"></span><span
504
  class="dashicons dashicons-star-filled"></span></p>
505
 
506
  <p>
507
+ <small>
508
+ <?php
509
+ /* translators: link to blog article about contact form plugins */
510
+ echo sprintf( esc_html__( 'If you want a more complex Contact Form Plugin please check %1$s this link %2$s.', 'pirate-forms' ), '<a href="http://www.codeinwp.com/blog/best-contact-form-plugins-wordpress/" target="_blank" >', '</a>' );
511
+ ?>
512
+ </small>
513
  </p>
514
  </div>
515
 
inc/widget.php CHANGED
@@ -16,7 +16,10 @@ class pirate_forms_contact_widget extends WP_Widget {
16
  parent::__construct(
17
  'pirate_forms_contact_widget',
18
  __( 'Pirate Forms', 'pirate-forms' ),
19
- array( 'classname' => __FUNCTION__, 'description' => __( 'Pirate Forms', 'pirate-forms' ) )
 
 
 
20
  );
21
  }
22
 
16
  parent::__construct(
17
  'pirate_forms_contact_widget',
18
  __( 'Pirate Forms', 'pirate-forms' ),
19
+ array(
20
+ 'classname' => __FUNCTION__,
21
+ 'description' => __( 'Pirate Forms', 'pirate-forms' ),
22
+ )
23
  );
24
  }
25
 
pirate-forms.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Free & Simple Contact Form Plugin - PirateForms
4
  Plugin URI: http://themeisle.com/plugins/pirate-forms/
5
  Description: Easily creates a nice looking, simple contact form on your WP site.
6
- Version: 1.2.0
7
  Author: Themeisle
8
  Author URI: http://themeisle.com
9
  Text Domain: pirate-forms
@@ -15,7 +15,7 @@ if ( ! function_exists( 'add_action' ) ) {
15
  die( 'Nothing to do...' );
16
  }
17
  /* Important constants */
18
- define( 'PIRATE_FORMS_VERSION', '1.2.0' );
19
  define( 'PIRATE_FORMS_URL', plugin_dir_url( __FILE__ ) );
20
  define( 'PIRATE_FORMS_PATH', plugin_dir_path( __FILE__ ) );
21
  /* Required helper functions */
@@ -345,10 +345,11 @@ function pirate_forms_init_uploads() {
345
  return;
346
  }
347
  try {
348
- if ( $handle = fopen( $htaccess_file, 'w' ) ) {
349
- if ( ! $handle ) {
350
- throw new Exception( 'File open failed.' );
351
- }
 
352
  fwrite( $handle, "Deny from all\n" );
353
  fclose( $handle );
354
  }
@@ -370,6 +371,10 @@ function pirate_forms_maybe_add_random_dir( $dir ) {
370
  return $dir;
371
  }
372
 
 
 
 
 
373
  /**
374
  * Process the incoming contact form data, if any
375
  */
@@ -396,8 +401,10 @@ function pirate_forms_process_contact() {
396
  return false;
397
  }
398
  // Start the body of the contact email
399
- $body = '*** ' . __( 'Contact form submission from', 'pirate-forms' ) . ' ' .
400
- get_bloginfo( 'name' ) . ' (' . site_url() . ") *** \n\n";
 
 
401
  /**
402
  ******* Sanitize and validate name */
403
  $pirate_forms_contact_name = isset( $_POST['pirate-forms-contact-name'] ) ? sanitize_text_field( trim( $_POST['pirate-forms-contact-name'] ) ) : '';
@@ -406,7 +413,7 @@ function pirate_forms_process_contact() {
406
  $_SESSION['pirate_forms_contact_errors']['pirate-forms-contact-name'] = pirate_forms_get_key( 'pirateformsopt_label_err_name' );
407
  } // If not required and empty, leave it out
408
  elseif ( ! empty( $pirate_forms_contact_name ) ) {
409
- $body .= stripslashes( pirate_forms_get_key( 'pirateformsopt_label_name' ) ) . ": $pirate_forms_contact_name \r";
410
  }
411
  /**
412
  ***** Sanitize and validate email */
@@ -416,8 +423,7 @@ function pirate_forms_process_contact() {
416
  $_SESSION['pirate_forms_contact_errors']['pirate-forms-contact-email'] = pirate_forms_get_key( 'pirateformsopt_label_err_email' );
417
  } // If not required and empty, leave it out
418
  elseif ( ! empty( $pirate_forms_contact_email ) ) {
419
- $body .= stripslashes( pirate_forms_get_key( 'pirateformsopt_label_email' ) )
420
- . ": $pirate_forms_contact_email \r";
421
  }
422
  /**
423
  ******* Sanitize and validate subject */
@@ -427,7 +433,7 @@ function pirate_forms_process_contact() {
427
  $_SESSION['pirate_forms_contact_errors']['pirate-forms-contact-subject'] = pirate_forms_get_key( 'pirateformsopt_label_err_subject' );
428
  } // If not required and empty, leave it out
429
  elseif ( ! empty( $pirate_forms_contact_subject ) ) {
430
- $body .= stripslashes( pirate_forms_get_key( 'pirateformsopt_label_subject' ) ) . ": $pirate_forms_contact_subject \r";
431
  }
432
  /**
433
  ******* Sanitize and validate message */
@@ -437,7 +443,7 @@ function pirate_forms_process_contact() {
437
  $_SESSION['pirate_forms_contact_errors']['pirate-forms-contact-message'] = pirate_forms_get_key( 'pirateformsopt_label_err_message' );
438
  } // If not required and empty, leave it out
439
  elseif ( ! empty( $pirate_forms_contact_message ) ) {
440
- $body .= stripslashes( pirate_forms_get_key( 'pirateformsopt_label_message' ) ) . ": $pirate_forms_contact_message \r";
441
  }
442
  /**
443
  *********** Validate reCAPTCHA */
@@ -480,14 +486,15 @@ function pirate_forms_process_contact() {
480
  }
481
  // If valid and present, create a link to an IP search
482
  if ( ! empty( $contact_ip ) ) {
483
- $body .= __( 'IP address: ', 'pirate-forms' ) . $contact_ip . "\r " . __( 'IP search:', 'pirate-forms' ) . " http://whatismyipaddress.com/ip/$contact_ip \n\n";
 
484
  }
485
  // Sanitize and prepare referrer;
486
  if ( ! empty( $_POST['pirate-forms-contact-referrer'] ) ) {
487
- $body .= __( 'Came from: ', 'pirate-forms' ) . sanitize_text_field( $_POST['pirate-forms-contact-referrer'] ) . " \r";
488
  }
489
  // Show the page this contact form was submitted on
490
- $body .= __( 'Sent from page: ', 'pirate-forms' ) . get_permalink( get_the_id() );
491
  // Check the blacklist
492
  $blocked = pirate_forms_get_blacklist();
493
  if ( ! empty( $blocked ) ) {
@@ -500,6 +507,8 @@ function pirate_forms_process_contact() {
500
  return false;
501
  }
502
  }
 
 
503
  // No errors? Go ahead and process the contact
504
  if ( empty( $_SESSION['pirate_forms_contact_errors'] ) ) {
505
  $pirate_forms_options_tmp = get_option( 'pirate_forms_settings_array' );
@@ -537,7 +546,7 @@ function pirate_forms_process_contact() {
537
  }
538
  $send_from_name = $site_name;
539
  // Sent an email notification to the correct address
540
- $headers = "From: $send_from_name <$send_from>\r\nReply-To: $pirate_forms_contact_name <$pirate_forms_contact_email>";
541
  add_action( 'phpmailer_init', 'pirate_forms_phpmailer' );
542
  /**
543
  ******* Validate Attachment */
@@ -575,7 +584,6 @@ function pirate_forms_process_contact() {
575
  if ( false === move_uploaded_file( $pirate_forms_attach_file['tmp_name'], $new_file ) ) {
576
  throw new Exception( __( 'There was an unknown error uploading the file.', 'pirate-forms' ) );
577
  }
578
- // Make sure the uploaded file is only readable for the owner process
579
  } catch ( Exception $ex ) {
580
  $_SESSION['pirate_forms_contact_errors']['pirate-forms-upload-failed-general'] = $ex->getMessage();
581
  }
@@ -584,6 +592,7 @@ function pirate_forms_process_contact() {
584
  }
585
  }
586
  }
 
587
  wp_mail( $site_recipients, 'Contact on ' . htmlspecialchars_decode( get_bloginfo( 'name' ) ), $body, $headers, $attachments );
588
  require_once( ABSPATH . 'wp-admin/includes/file.php' );
589
  WP_Filesystem();
@@ -709,7 +718,9 @@ function pirate_forms_admin_css() {
709
  ) {
710
  wp_enqueue_style( 'pirate_forms_admin_styles', PIRATE_FORMS_URL . 'css/wp-admin.css' );
711
  wp_enqueue_script( 'pirate_forms_scripts_admin', plugins_url( 'js/scripts-admin.js', __FILE__ ), array( 'jquery' ) );
712
- wp_localize_script( 'pirate_forms_scripts_admin', 'cwp_top_ajaxload', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
 
 
713
  }
714
  }
715
 
3
  Plugin Name: Free & Simple Contact Form Plugin - PirateForms
4
  Plugin URI: http://themeisle.com/plugins/pirate-forms/
5
  Description: Easily creates a nice looking, simple contact form on your WP site.
6
+ Version: 1.2.1
7
  Author: Themeisle
8
  Author URI: http://themeisle.com
9
  Text Domain: pirate-forms
15
  die( 'Nothing to do...' );
16
  }
17
  /* Important constants */
18
+ define( 'PIRATE_FORMS_VERSION', '1.2.1' );
19
  define( 'PIRATE_FORMS_URL', plugin_dir_url( __FILE__ ) );
20
  define( 'PIRATE_FORMS_PATH', plugin_dir_path( __FILE__ ) );
21
  /* Required helper functions */
345
  return;
346
  }
347
  try {
348
+ $handle = fopen( $htaccess_file, 'w' );
349
+
350
+ if ( ! $handle ) {
351
+ throw new Exception( 'File open failed.' );
352
+ } else {
353
  fwrite( $handle, "Deny from all\n" );
354
  fclose( $handle );
355
  }
371
  return $dir;
372
  }
373
 
374
+ function pirate_forms_table_row( $key, $value ) {
375
+ return '<tr><th>' . $key . '</th><td>' . $value . '</td></tr>';
376
+ }
377
+
378
  /**
379
  * Process the incoming contact form data, if any
380
  */
401
  return false;
402
  }
403
  // Start the body of the contact email
404
+ $body = '<h2>' . __( 'Contact form submission from', 'pirate-forms' ) . ' ' .
405
+ get_bloginfo( 'name' ) . ' (' . site_url() . ') </h2>';
406
+
407
+ $body .= '<table>';
408
  /**
409
  ******* Sanitize and validate name */
410
  $pirate_forms_contact_name = isset( $_POST['pirate-forms-contact-name'] ) ? sanitize_text_field( trim( $_POST['pirate-forms-contact-name'] ) ) : '';
413
  $_SESSION['pirate_forms_contact_errors']['pirate-forms-contact-name'] = pirate_forms_get_key( 'pirateformsopt_label_err_name' );
414
  } // If not required and empty, leave it out
415
  elseif ( ! empty( $pirate_forms_contact_name ) ) {
416
+ $body .= pirate_forms_table_row( stripslashes( pirate_forms_get_key( 'pirateformsopt_label_name' ) ), $pirate_forms_contact_name );
417
  }
418
  /**
419
  ***** Sanitize and validate email */
423
  $_SESSION['pirate_forms_contact_errors']['pirate-forms-contact-email'] = pirate_forms_get_key( 'pirateformsopt_label_err_email' );
424
  } // If not required and empty, leave it out
425
  elseif ( ! empty( $pirate_forms_contact_email ) ) {
426
+ $body .= pirate_forms_table_row( stripslashes( pirate_forms_get_key( 'pirateformsopt_label_email' ) ), $pirate_forms_contact_email );
 
427
  }
428
  /**
429
  ******* Sanitize and validate subject */
433
  $_SESSION['pirate_forms_contact_errors']['pirate-forms-contact-subject'] = pirate_forms_get_key( 'pirateformsopt_label_err_subject' );
434
  } // If not required and empty, leave it out
435
  elseif ( ! empty( $pirate_forms_contact_subject ) ) {
436
+ $body .= pirate_forms_table_row( stripslashes( pirate_forms_get_key( 'pirateformsopt_label_subject' ) ), $pirate_forms_contact_subject );
437
  }
438
  /**
439
  ******* Sanitize and validate message */
443
  $_SESSION['pirate_forms_contact_errors']['pirate-forms-contact-message'] = pirate_forms_get_key( 'pirateformsopt_label_err_message' );
444
  } // If not required and empty, leave it out
445
  elseif ( ! empty( $pirate_forms_contact_message ) ) {
446
+ $body .= pirate_forms_table_row( stripslashes( pirate_forms_get_key( 'pirateformsopt_label_message' ) ), $pirate_forms_contact_message );
447
  }
448
  /**
449
  *********** Validate reCAPTCHA */
486
  }
487
  // If valid and present, create a link to an IP search
488
  if ( ! empty( $contact_ip ) ) {
489
+ $body .= pirate_forms_table_row( __( 'IP address: ', 'pirate-forms' ), $contact_ip );
490
+ $body .= pirate_forms_table_row( __( 'IP search:', 'pirate-forms' ), "http://whatismyipaddress.com/ip/$contact_ip" );
491
  }
492
  // Sanitize and prepare referrer;
493
  if ( ! empty( $_POST['pirate-forms-contact-referrer'] ) ) {
494
+ $body .= pirate_forms_table_row( __( 'Came from: ', 'pirate-forms' ), sanitize_text_field( $_POST['pirate-forms-contact-referrer'] ) );
495
  }
496
  // Show the page this contact form was submitted on
497
+ $body .= pirate_forms_table_row( __( 'Sent from page: ', 'pirate-forms' ), get_permalink( get_the_id() ) );
498
  // Check the blacklist
499
  $blocked = pirate_forms_get_blacklist();
500
  if ( ! empty( $blocked ) ) {
507
  return false;
508
  }
509
  }
510
+ $body .= '</table>';
511
+
512
  // No errors? Go ahead and process the contact
513
  if ( empty( $_SESSION['pirate_forms_contact_errors'] ) ) {
514
  $pirate_forms_options_tmp = get_option( 'pirate_forms_settings_array' );
546
  }
547
  $send_from_name = $site_name;
548
  // Sent an email notification to the correct address
549
+ $headers = "From: $send_from_name <$send_from>\r\nReply-To: $pirate_forms_contact_name <$pirate_forms_contact_email>\r\nContent-type: text/html";
550
  add_action( 'phpmailer_init', 'pirate_forms_phpmailer' );
551
  /**
552
  ******* Validate Attachment */
584
  if ( false === move_uploaded_file( $pirate_forms_attach_file['tmp_name'], $new_file ) ) {
585
  throw new Exception( __( 'There was an unknown error uploading the file.', 'pirate-forms' ) );
586
  }
 
587
  } catch ( Exception $ex ) {
588
  $_SESSION['pirate_forms_contact_errors']['pirate-forms-upload-failed-general'] = $ex->getMessage();
589
  }
592
  }
593
  }
594
  }
595
+
596
  wp_mail( $site_recipients, 'Contact on ' . htmlspecialchars_decode( get_bloginfo( 'name' ) ), $body, $headers, $attachments );
597
  require_once( ABSPATH . 'wp-admin/includes/file.php' );
598
  WP_Filesystem();
718
  ) {
719
  wp_enqueue_style( 'pirate_forms_admin_styles', PIRATE_FORMS_URL . 'css/wp-admin.css' );
720
  wp_enqueue_script( 'pirate_forms_scripts_admin', plugins_url( 'js/scripts-admin.js', __FILE__ ), array( 'jquery' ) );
721
+ wp_localize_script( 'pirate_forms_scripts_admin', 'cwp_top_ajaxload', array(
722
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
723
+ ) );
724
  }
725
  }
726
 
tests/bootstrap.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * PHPUnit bootstrap file
4
+ *
5
+ * @package Revive_Network
6
+ */
7
+ $_tests_dir = getenv( 'WP_TESTS_DIR' );
8
+ if ( ! $_tests_dir ) {
9
+ $_tests_dir = '/tmp/wordpress-tests-lib';
10
+ }
11
+ /**
12
+ * The path to the main file of the plugin to test.
13
+ */
14
+ define( 'WP_USE_THEMES', false );
15
+ define( 'WP_TESTS_FORCE_KNOWN_BUGS', true );
16
+ // Give access to tests_add_filter() function.
17
+ require_once $_tests_dir . '/includes/functions.php';
18
+ /**
19
+ * Manually load the plugin being tested.
20
+ */
21
+ function _manually_load_plugin() {
22
+ require dirname( dirname( __FILE__ ) ) . '/pirate-forms.php';
23
+ }
24
+
25
+ tests_add_filter( 'muplugins_loaded', '_manually_load_plugin' );
26
+ define( 'REVIVE_NETWORK_ENABLE_LOG', false );
27
+ define( 'REVIVE_NETWORK_PREVENT_SHARING', true );
28
+ // Start up the WP testing environment.
29
+ require $_tests_dir . '/includes/bootstrap.php';
30
+ activate_plugin( 'revive-network/pirate-forms.php' );
31
+ global $current_user;
32
+ $current_user = new WP_User( 1 );
33
+ $current_user->set_role( 'administrator' );
34
+ wp_update_user( array( 'ID' => 1, 'first_name' => 'Admin', 'last_name' => 'User' ) );
tests/test-pirate-forms.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sample class for PHPUnit.
4
+ *
5
+ * @package nivo-slider
6
+ * @subpackage Tests
7
+ * @copyright Copyright (c) 2017, Marius Cristea
8
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
9
+ * @since 3.0.0
10
+ */
11
+
12
+ /**
13
+ * Sample test class.
14
+ */
15
+ class Test_Pirate_Forms extends WP_UnitTestCase {
16
+
17
+ public function test_generic() {
18
+ $this->assertTrue(true);
19
+ }
20
+
21
+ }