Gallery – Photo Gallery – Image Gallery - Version 1.3.4

Version Description

  • wp.org review
Download this release

Release Info

Developer machothemes
Plugin Icon wp plugin Gallery – Photo Gallery – Image Gallery
Version 1.3.4
Comparing to
See all releases

Code changes from version 1.3.3 to 1.3.4

Modula.php CHANGED
@@ -5,20 +5,20 @@
5
  * Description: Modula is one of the best & most creative WordPress gallery plugins. Use it to create a great grid or
6
  * masonry image gallery.
7
  * Author: Macho Themes
8
- * Version: 1.3.3
9
  * Author URI: https://www.machothemes.com/
10
  */
11
 
12
  define( 'MODULA_PLUGIN_DIR_PATH', plugin_dir_path( __FILE__ ) );
13
  define( 'MODULA_PLUGIN_DIR_URL', plugin_dir_url( __FILE__ ) );
14
 
15
- define( 'MODULA_VERSION', '1.3.3' );
16
  define( 'MODULA_PLUGIN_BASE', plugin_basename( __FILE__ ) );
17
- define( 'MODULA_PREVIOUS_PLUGIN_VERSION', '1.3.2' );
18
  define( 'MODULA_FILE_', __FILE__ );
19
 
20
  function modula_lite_create_db_tables() {
21
- include_once( WP_PLUGIN_DIR . '/modula-best-grid-gallery/lib/install-db.php' );
22
  modula_lite_install_db();
23
  }
24
 
@@ -28,7 +28,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
28
  private $loadedData;
29
  private $fields = array();
30
 
31
- private $version = "1.3.3";
32
 
33
  private $defaultValues = array(
34
  'width' => 100,
@@ -79,9 +79,6 @@ if ( ! class_exists( "ModulaLite" ) ) {
79
  $this->define_hover_effects();
80
  $this->ModulaDB = $this->create_db_conn();
81
 
82
- require_once 'lib/class-modula-feedback.php';
83
- new Modula_Feedback( __FILE__ );
84
-
85
  add_filter( 'widget_text', 'do_shortcode' );
86
  add_filter( 'mce_buttons', array( $this, 'editor_button' ) );
87
  add_filter( 'mce_external_plugins', array( $this, 'register_editor_plugin' ) );
@@ -468,8 +465,8 @@ if ( ! class_exists( "ModulaLite" ) ) {
468
  return;
469
  }
470
 
471
- wp_enqueue_script( 'modula-fancybox', plugins_url() . '/modula-best-grid-gallery/admin/fancybox/jquery.fancybox.min.js', array( 'jquery' ) );
472
- wp_enqueue_style( 'modula-fancybox', plugins_url() . '/modula-best-grid-gallery/admin/fancybox/jquery.fancybox.min.css' );
473
 
474
  }
475
 
@@ -648,7 +645,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
648
  //delete gallery
649
  function delete_gallery() {
650
  if ( check_admin_referer( "Modula", "Modula" ) ) {
651
- $id = intval( $_POST['gid'] );
652
  $this->ModulaDB->deleteGallery( $id );
653
  }
654
 
@@ -657,7 +654,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
657
 
658
  public function update_config() {
659
  if ( check_admin_referer( "Modula", "Modula" ) ) {
660
- $id = $_POST['id'];
661
  $config = stripslashes( $_POST['config'] );
662
 
663
  $this->ModulaDB->update_config( $id, $config );
@@ -668,7 +665,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
668
 
669
  public function get_config() {
670
  if ( check_admin_referer( "Modula", "Modula" ) ) {
671
- $id = $_POST['id'];
672
 
673
  $data = $this->ModulaDB->getConfig( $id );
674
 
@@ -684,11 +681,11 @@ if ( ! class_exists( "ModulaLite" ) ) {
684
  function create_gallery() {
685
  if ( check_admin_referer( "Modula", "Modula" ) ) {
686
  $data = $this->defaultValues;
687
- $data["name"] = $_POST['name'];
688
- $data["description"] = $_POST['description'];
689
- $data["width"] = $_POST['width'];
690
- $data["height"] = $_POST['height'];
691
- $data["img_size"] = intval( $_POST['img_size'] );
692
  $data["hasResizedImages"] = true;
693
 
694
  $this->ModulaDB->addGallery( $data );
@@ -708,7 +705,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
708
  //clone gallery
709
  function clone_gallery() {
710
  if ( check_admin_referer( 'Modula', 'Modula' ) ) {
711
- $sourceId = intval( $_POST['gid'] );
712
  $g = $this->ModulaDB->getGalleryById( $sourceId, $this->defaultValues );
713
  $g->name .= "(copy)";
714
  $this->ModulaDB->addGallery( $g );
@@ -787,17 +784,17 @@ if ( ! class_exists( "ModulaLite" ) ) {
787
  public function add_gallery_scripts() {
788
  wp_enqueue_script( 'jquery' );
789
 
790
- wp_register_script( 'modula', plugins_url() . '/modula-best-grid-gallery/scripts/jquery.modula.js', array( 'jquery' ) );
791
  wp_enqueue_script( 'modula' );
792
 
793
- wp_register_style( 'modula_stylesheet', plugins_url() . '/modula-best-grid-gallery/scripts/modula.css', null, $this->version );
794
  wp_enqueue_style( 'modula_stylesheet' );
795
 
796
- wp_register_style( 'effects_stylesheet', plugins_url() . '/modula-best-grid-gallery/scripts/effects.css', null, $this->version );
797
  wp_enqueue_style( 'effects_stylesheet' );
798
 
799
- wp_register_script( 'lightbox2_script', plugins_url() . '/modula-best-grid-gallery/lightbox/lightbox2/js/lightbox.min.js', array( 'jquery' ), $this->version, true );
800
- wp_register_style( 'lightbox2_stylesheet', plugins_url() . '/modula-best-grid-gallery/lightbox/lightbox2/css/lightbox.min.css' );
801
  }
802
 
803
  //Admin Section - register scripts and styles
@@ -814,18 +811,18 @@ if ( ! class_exists( "ModulaLite" ) ) {
814
  wp_enqueue_script( 'media-upload' );
815
  wp_enqueue_script( 'thickbox' );
816
 
817
- wp_register_style( 'materialize', plugins_url() . '/modula-best-grid-gallery/admin/css/materialize.css' );
818
  wp_enqueue_style( 'materialize' );
819
 
820
- wp_register_style( 'styles', plugins_url() . '/modula-best-grid-gallery/admin/css/style.css' );
821
  wp_enqueue_style( 'styles' );
822
 
823
- wp_register_style( 'effects', plugins_url() . '/modula-best-grid-gallery/scripts/effects.css' );
824
  wp_enqueue_style( 'effects' );
825
 
826
- wp_register_script( 'materialize', plugins_url() . '/modula-best-grid-gallery/admin/scripts/materialize.js', array( 'jquery' ) );
827
 
828
- wp_register_script( 'modula', plugins_url() . '/modula-best-grid-gallery/admin/scripts/modula-admin.js', array(
829
  'materialize',
830
  'jquery',
831
  'media-upload',
@@ -834,7 +831,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
834
 
835
  wp_enqueue_script( 'modula' );
836
 
837
- wp_register_style( 'materialdesign-icons', plugins_url() . '/modula-best-grid-gallery/admin/css/materialdesignicons.css' );
838
  wp_enqueue_style( 'materialdesign-icons' );
839
 
840
  wp_enqueue_style( 'thickbox' );
@@ -854,7 +851,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
854
  $overview = add_menu_page( esc_html__( 'Manage Galleries', 'modula-gallery' ), esc_html__( 'Modula', 'modula-gallery' ), 'edit_posts', 'modula-lite-admin', array(
855
  $this,
856
  'add_overview',
857
- ), plugins_url() . '/modula-best-grid-gallery/admin/icon.png' );
858
 
859
 
860
  if ( ! get_option( "Modula_skip_fix" ) && get_option( "Modula_db_version" ) && count( $this->ModulaDB->getGalleries() ) > 0 ) {
@@ -932,7 +929,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
932
  public function delete_image() {
933
  if ( check_admin_referer( 'Modula', 'Modula' ) ) {
934
  foreach ( explode( ",", $_POST["id"] ) as $id ) {
935
- $this->ModulaDB->deleteImage( intval( $id ) );
936
  }
937
  }
938
  die();
@@ -980,15 +977,35 @@ if ( ! class_exists( "ModulaLite" ) ) {
980
  if ( check_admin_referer( 'Modula', 'Modula' ) ) {
981
  $result = false;
982
  // $type = $_POST['type'];
 
 
 
 
 
983
  $imageUrl = esc_url( $_POST['img_url'] );
984
  $imageCaption = stripslashes( $_POST['description'] );
985
  $title = stripslashes( $_POST['title'] );
986
- $target = $_POST['target'];
987
- $link = isset( $_POST['link'] ) ? stripslashes( $_POST['link'] ) : null;
 
 
 
 
 
988
  $imageId = intval( $_POST['img_id'] );
989
  $sortOrder = intval( $_POST['sortOrder'] );
990
- $halign = $_POST['halign'];
991
- $valign = $_POST['valign'];
 
 
 
 
 
 
 
 
 
 
992
 
993
  $data = array(
994
  "target" => $target,
@@ -1137,6 +1154,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
1137
  $id = $this->ModulaDB->getNewGalleryId();
1138
  }
1139
 
 
1140
  if ( $result ) {
1141
  print "{\"success\":true,\"id\":" . $id . "}";
1142
  } else {
@@ -1148,7 +1166,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
1148
 
1149
  public function edit_gallery() {
1150
  if ( isset( $_GET['galleryId'] ) ) {
1151
- $this->loadedData = $this->ModulaDB->getGalleryById( intval( $_GET['galleryId'] ), $this->defaultValues );
1152
  $modula_fields = $this->fields;
1153
  $modula_parent_page = "dashboard";
1154
 
5
  * Description: Modula is one of the best & most creative WordPress gallery plugins. Use it to create a great grid or
6
  * masonry image gallery.
7
  * Author: Macho Themes
8
+ * Version: 1.3.4
9
  * Author URI: https://www.machothemes.com/
10
  */
11
 
12
  define( 'MODULA_PLUGIN_DIR_PATH', plugin_dir_path( __FILE__ ) );
13
  define( 'MODULA_PLUGIN_DIR_URL', plugin_dir_url( __FILE__ ) );
14
 
15
+ define( 'MODULA_VERSION', '1.3.4' );
16
  define( 'MODULA_PLUGIN_BASE', plugin_basename( __FILE__ ) );
17
+ define( 'MODULA_PREVIOUS_PLUGIN_VERSION', '1.3.3' );
18
  define( 'MODULA_FILE_', __FILE__ );
19
 
20
  function modula_lite_create_db_tables() {
21
+ include_once( MODULA_PLUGIN_DIR_PATH . '/lib/install-db.php' );
22
  modula_lite_install_db();
23
  }
24
 
28
  private $loadedData;
29
  private $fields = array();
30
 
31
+ private $version = "1.3.4";
32
 
33
  private $defaultValues = array(
34
  'width' => 100,
79
  $this->define_hover_effects();
80
  $this->ModulaDB = $this->create_db_conn();
81
 
 
 
 
82
  add_filter( 'widget_text', 'do_shortcode' );
83
  add_filter( 'mce_buttons', array( $this, 'editor_button' ) );
84
  add_filter( 'mce_external_plugins', array( $this, 'register_editor_plugin' ) );
465
  return;
466
  }
467
 
468
+ wp_enqueue_script( 'modula-fancybox', plugins_url( 'admin/fancybox/jquery.fancybox.min.js', __FILE__), array( 'jquery' ) );
469
+ wp_enqueue_style( 'modula-fancybox', plugins_url( 'admin/fancybox/jquery.fancybox.min.css', __FILE__) );
470
 
471
  }
472
 
645
  //delete gallery
646
  function delete_gallery() {
647
  if ( check_admin_referer( "Modula", "Modula" ) ) {
648
+ $id = absint( $_POST['gid'] );
649
  $this->ModulaDB->deleteGallery( $id );
650
  }
651
 
654
 
655
  public function update_config() {
656
  if ( check_admin_referer( "Modula", "Modula" ) ) {
657
+ $id = absint($_POST['id']);
658
  $config = stripslashes( $_POST['config'] );
659
 
660
  $this->ModulaDB->update_config( $id, $config );
665
 
666
  public function get_config() {
667
  if ( check_admin_referer( "Modula", "Modula" ) ) {
668
+ $id = absint($_POST['id']);
669
 
670
  $data = $this->ModulaDB->getConfig( $id );
671
 
681
  function create_gallery() {
682
  if ( check_admin_referer( "Modula", "Modula" ) ) {
683
  $data = $this->defaultValues;
684
+ $data["name"] = sanitize_text_field($_POST['name']);
685
+ $data["description"] = wp_filter_post_kses($_POST['description']);
686
+ $data["width"] = sanitize_text_field($_POST['width']);
687
+ $data["height"] = absint($_POST['height']);
688
+ $data["img_size"] = absint( $_POST['img_size'] );
689
  $data["hasResizedImages"] = true;
690
 
691
  $this->ModulaDB->addGallery( $data );
705
  //clone gallery
706
  function clone_gallery() {
707
  if ( check_admin_referer( 'Modula', 'Modula' ) ) {
708
+ $sourceId = absint( $_POST['gid'] );
709
  $g = $this->ModulaDB->getGalleryById( $sourceId, $this->defaultValues );
710
  $g->name .= "(copy)";
711
  $this->ModulaDB->addGallery( $g );
784
  public function add_gallery_scripts() {
785
  wp_enqueue_script( 'jquery' );
786
 
787
+ wp_register_script( 'modula', plugins_url( 'scripts/jquery.modula.js', __FILE__ ) , array( 'jquery' ) );
788
  wp_enqueue_script( 'modula' );
789
 
790
+ wp_register_style( 'modula_stylesheet', plugins_url( 'scripts/modula.css', __FILE__ ), null, $this->version );
791
  wp_enqueue_style( 'modula_stylesheet' );
792
 
793
+ wp_register_style( 'effects_stylesheet', plugins_url( 'scripts/effects.css', __FILE__ ), null, $this->version );
794
  wp_enqueue_style( 'effects_stylesheet' );
795
 
796
+ wp_register_script( 'lightbox2_script', plugins_url( 'lightbox/lightbox2/js/lightbox.min.js', __FILE__ ), array( 'jquery' ), $this->version, true );
797
+ wp_register_style( 'lightbox2_stylesheet', plugins_url( 'lightbox/lightbox2/css/lightbox.min.css', __FILE__ ) );
798
  }
799
 
800
  //Admin Section - register scripts and styles
811
  wp_enqueue_script( 'media-upload' );
812
  wp_enqueue_script( 'thickbox' );
813
 
814
+ wp_register_style( 'materialize', plugins_url( 'admin/css/materialize.css', __FILE__ ) );
815
  wp_enqueue_style( 'materialize' );
816
 
817
+ wp_register_style( 'styles', plugins_url( 'admin/css/style.css', __FILE__ ) );
818
  wp_enqueue_style( 'styles' );
819
 
820
+ wp_register_style( 'effects', plugins_url( 'scripts/effects.css', __FILE__ ) );
821
  wp_enqueue_style( 'effects' );
822
 
823
+ wp_register_script( 'materialize', plugins_url( 'admin/scripts/materialize.js', __FILE__ ), array( 'jquery' ) );
824
 
825
+ wp_register_script( 'modula', plugins_url( 'admin/scripts/modula-admin.js', __FILE__ ), array(
826
  'materialize',
827
  'jquery',
828
  'media-upload',
831
 
832
  wp_enqueue_script( 'modula' );
833
 
834
+ wp_register_style( 'materialdesign-icons', plugins_url( 'admin/css/materialdesignicons.css', __FILE__ ) );
835
  wp_enqueue_style( 'materialdesign-icons' );
836
 
837
  wp_enqueue_style( 'thickbox' );
851
  $overview = add_menu_page( esc_html__( 'Manage Galleries', 'modula-gallery' ), esc_html__( 'Modula', 'modula-gallery' ), 'edit_posts', 'modula-lite-admin', array(
852
  $this,
853
  'add_overview',
854
+ ), plugins_url( 'admin/icon.png', __FILE__ ) );
855
 
856
 
857
  if ( ! get_option( "Modula_skip_fix" ) && get_option( "Modula_db_version" ) && count( $this->ModulaDB->getGalleries() ) > 0 ) {
929
  public function delete_image() {
930
  if ( check_admin_referer( 'Modula', 'Modula' ) ) {
931
  foreach ( explode( ",", $_POST["id"] ) as $id ) {
932
+ $this->ModulaDB->deleteImage( absint( $id ) );
933
  }
934
  }
935
  die();
977
  if ( check_admin_referer( 'Modula', 'Modula' ) ) {
978
  $result = false;
979
  // $type = $_POST['type'];
980
+
981
+ $target_values = array( '', '_self', '_blank' );
982
+ $halign_values = array( 'left', 'right', 'center' );
983
+ $valign_values = array( 'top', 'bottom', 'middle' );
984
+
985
  $imageUrl = esc_url( $_POST['img_url'] );
986
  $imageCaption = stripslashes( $_POST['description'] );
987
  $title = stripslashes( $_POST['title'] );
988
+ if ( in_array( $_POST['target'], $target_values ) ) {
989
+ $target = sanitize_text_field($_POST['target']);
990
+ }else{
991
+ $target = '';
992
+ }
993
+
994
+ $link = isset( $_POST['link'] ) ? esc_url_raw( $_POST['link'] ) : null;
995
  $imageId = intval( $_POST['img_id'] );
996
  $sortOrder = intval( $_POST['sortOrder'] );
997
+
998
+ if ( in_array( $_POST['halign'], $halign_values ) ) {
999
+ $halign = sanitize_text_field($_POST['halign']);
1000
+ }else{
1001
+ $halign = 'center';
1002
+ }
1003
+
1004
+ if ( in_array( $_POST['valign'], $valign_values ) ) {
1005
+ $valign = sanitize_text_field($_POST['valign']);
1006
+ }else{
1007
+ $valign = 'middle';
1008
+ }
1009
 
1010
  $data = array(
1011
  "target" => $target,
1154
  $id = $this->ModulaDB->getNewGalleryId();
1155
  }
1156
 
1157
+
1158
  if ( $result ) {
1159
  print "{\"success\":true,\"id\":" . $id . "}";
1160
  } else {
1166
 
1167
  public function edit_gallery() {
1168
  if ( isset( $_GET['galleryId'] ) ) {
1169
+ $this->loadedData = $this->ModulaDB->getGalleryById( absint( $_GET['galleryId'] ), $this->defaultValues );
1170
  $modula_fields = $this->fields;
1171
  $modula_parent_page = "dashboard";
1172
 
README.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: machothemes, silkalns
3
  Tags: best gallery plugin, image gallery, photo gallery, responsive gallery, wordpress gallery plugin, wordpress portfolio plugin, masonry gallery, fancy gallery, media gallery, mosaic gallery, polaroid gallery, portfolio gallery
4
  Requires at least: 3.8
5
  Tested up to: 4.9
6
- Stable tag: 1.3.3
7
  License: GPLv3 or later
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
@@ -173,6 +173,9 @@ Free support is included only with a PRO license: [Buy Modula PRO](https://wp-mo
173
 
174
  == Changelog ==
175
 
 
 
 
176
  = 1.3.3 =
177
  * Added notification for Modula 2.0
178
  * Added Compatibility with AO
3
  Tags: best gallery plugin, image gallery, photo gallery, responsive gallery, wordpress gallery plugin, wordpress portfolio plugin, masonry gallery, fancy gallery, media gallery, mosaic gallery, polaroid gallery, portfolio gallery
4
  Requires at least: 3.8
5
  Tested up to: 4.9
6
+ Stable tag: 1.3.4
7
  License: GPLv3 or later
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
173
 
174
  == Changelog ==
175
 
176
+ = 1.3.4 =
177
+ * wp.org review
178
+
179
  = 1.3.3 =
180
  * Added notification for Modula 2.0
181
  * Added Compatibility with AO
admin/edit-gallery.php CHANGED
@@ -164,7 +164,7 @@ include( "header.php" );
164
  <!-- show preview -->
165
 
166
  <div class="item effect-pufrobo">
167
- <img src="<?php print plugins_url() ?>/modula-best-grid-gallery/admin/images/effect.jpg" class="pic">
168
  <div class="figc">
169
  <div class="figc-inner">
170
 
164
  <!-- show preview -->
165
 
166
  <div class="item effect-pufrobo">
167
+ <img src="<?php echo plugins_url( 'admin/images/effect.jpg', dirname(__FILE__) ) ?>" class="pic">
168
  <div class="figc">
169
  <div class="figc-inner">
170
 
admin/include/image-list.php CHANGED
@@ -4,27 +4,27 @@
4
  $sizes = ModulaLiteTools::get_image_size_links($image->imageId);
5
  $thumb = array_key_exists("150x150", $sizes) ? $sizes["150x150"] : $image->imagePath;
6
  ?>
7
- <div class='item card' data-image-id="<?php _e($image->imageId) ?>" data-id="<?php _e($image->Id) ?>">
8
- <input type="hidden" name="filter-list" value="<?php print $image->imageId ?>">
9
- <div class="figure card-image" style="background-image: url('<?php _e($thumb) ?>');">
10
  <img class="thumb" src="<?php echo plugins_url('../images/square.gif', __FILE__) ?>" />
11
 
12
  <?php
13
  if(!empty($image->filters))
14
  {
15
- print "<ul class='filters'>";
16
 
17
  foreach(explode('|', $image->filters) as $f)
18
  {
19
  if(in_array($f, $active_filters))
20
  {
21
- print "<li> $f </li>";
22
  }
23
  }
24
 
25
- print "</ul>";
26
 
27
- print "<input type='hidden' class ='current_image_filter' value=$image->filters>";
28
 
29
  }
30
 
@@ -34,24 +34,24 @@
34
  </div>
35
  <div class="card-content">
36
  <p class="truncate">
37
- <?php print (isset($image->title) && !empty($image->title)) ? $image->title : $image->description ?>
38
  </p>
39
  <div class="data">
40
- <input class="copy" type="hidden" name="id" value="<?php _e($image->Id); ?>" />
41
- <input class="copy" type="hidden" name="img_id" value="<?php _e($image->imageId); ?>" />
42
- <input class="copy" type="hidden" name="sortOrder" value="<?php _e($image->sortOrder); ?>" />
43
- <input class="copy" type="hidden" name="filters" value="<?php _e($image->filters); ?>" />
44
  <select name="img_url" class="select">
45
  <?php foreach($sizes as $k => $v) : ?>
46
- <option <?php print $v == $image->imagePath ? "selected" : "" ?> value="<?php print $v ?>"><?php print $k ?></option>
47
  <?php endforeach ?>
48
  </select>
49
- <input type="hidden" name="link" value="<?php _e($image->link) ?>" />
50
- <input type="hidden" name="target" value="<?php _e($image->target) ?>" />
51
- <input type="hidden" name="valign" value="<?php _e($image->valign) ?>" />
52
- <input type="hidden" name="halign" value="<?php _e($image->halign) ?>" />
53
- <input type="hidden" name="sortOrder" value="<?php _e($image->sortOrder) ?>" />
54
- <pre><?php _e($image->description) ?></pre>
55
  <input id="img-title" value="<?php echo htmlentities($image->title) ?>">
56
  </div>
57
  </div>
4
  $sizes = ModulaLiteTools::get_image_size_links($image->imageId);
5
  $thumb = array_key_exists("150x150", $sizes) ? $sizes["150x150"] : $image->imagePath;
6
  ?>
7
+ <div class='item card' data-image-id="<?php echo absint($image->imageId) ?>" data-id="<?php echo absint($image->Id) ?>">
8
+ <input type="hidden" name="filter-list" value="<?php echo absint($image->imageId) ?>">
9
+ <div class="figure card-image" style="background-image: url('<?php echo esc_url($thumb) ?>');">
10
  <img class="thumb" src="<?php echo plugins_url('../images/square.gif', __FILE__) ?>" />
11
 
12
  <?php
13
  if(!empty($image->filters))
14
  {
15
+ echo "<ul class='filters'>";
16
 
17
  foreach(explode('|', $image->filters) as $f)
18
  {
19
  if(in_array($f, $active_filters))
20
  {
21
+ echo '<li>' . esc_html( $f ) . '</li>';
22
  }
23
  }
24
 
25
+ echo "</ul>";
26
 
27
+ echo '<input type="hidden" class ="current_image_filter" value=' . esc_attr($image->filters) . '>';
28
 
29
  }
30
 
34
  </div>
35
  <div class="card-content">
36
  <p class="truncate">
37
+ <?php echo (isset($image->title) && !empty($image->title)) ? esc_html($image->title) : esc_html($image->description) ?>
38
  </p>
39
  <div class="data">
40
+ <input class="copy" type="hidden" name="id" value="<?php echo absint($image->Id); ?>" />
41
+ <input class="copy" type="hidden" name="img_id" value="<?php echo absint($image->imageId); ?>" />
42
+ <input class="copy" type="hidden" name="sortOrder" value="<?php echo absint($image->sortOrder); ?>" />
43
+ <input class="copy" type="hidden" name="filters" value="<?php echo esc_attr($image->filters); ?>" />
44
  <select name="img_url" class="select">
45
  <?php foreach($sizes as $k => $v) : ?>
46
+ <option <?php echo $v == $image->imagePath ? "selected" : "" ?> value="<?php echo esc_attr($v) ?>"><?php echo esc_html($k) ?></option>
47
  <?php endforeach ?>
48
  </select>
49
+ <input type="hidden" name="link" value="<?php echo esc_attr($image->link) ?>" />
50
+ <input type="hidden" name="target" value="<?php echo esc_attr($image->target) ?>" />
51
+ <input type="hidden" name="valign" value="<?php echo esc_attr($image->valign) ?>" />
52
+ <input type="hidden" name="halign" value="<?php echo esc_attr($image->halign) ?>" />
53
+ <input type="hidden" name="sortOrder" value="<?php echo absint($image->sortOrder) ?>" />
54
+ <pre><?php echo wp_kses_post($image->description) ?></pre>
55
  <input id="img-title" value="<?php echo htmlentities($image->title) ?>">
56
  </div>
57
  </div>
admin/include/tinymce-galleries.php CHANGED
@@ -7,9 +7,9 @@
7
  <script>
8
  var wpColorPickerL10n = {"clear":"Clear","defaultString":"Default","pick":"Select Color","current":"Current Color"};
9
  </script>
10
- <script type="text/javascript" src="<?php print $admin_url ?>/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,utils,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-draggable,jquery-ui-slider,jquery-tou&load%5B%5D=ch-punch,iris,wp-color-picker"></script>
11
- <link rel="stylesheet" href="<?php print admin_url( 'load-styles.php?c=1&dir=ltr&load=buttons,wp-admin,iris,wp-color-picker'); ?>" type="text/css" media="all">
12
- <link rel="stylesheet" href="<?php print $css_path ?>">
13
  <script language="javascript" type="text/javascript" src="<?php echo includes_url( 'js/tinymce/tiny_mce_popup.js' ).'?ver='.$wp_version; ?>"></script>
14
  <style type="text/css">
15
  h1
@@ -63,10 +63,10 @@
63
  <?php $gid = $gallery->Id; $gallery = json_decode($gallery->configuration); ?>
64
  <tr>
65
  <td>
66
- <?php print $gid ?>
67
  </td>
68
  <td>
69
- <label id="<?php print 'gall_' . $gid ?>"> <?php print $gallery->name ?> </label>
70
  </td>
71
  </tr>
72
  <?php endforeach ?>
7
  <script>
8
  var wpColorPickerL10n = {"clear":"Clear","defaultString":"Default","pick":"Select Color","current":"Current Color"};
9
  </script>
10
+ <script type="text/javascript" src="<?php echo $admin_url ?>/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,utils,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-draggable,jquery-ui-slider,jquery-tou&load%5B%5D=ch-punch,iris,wp-color-picker"></script>
11
+ <link rel="stylesheet" href="<?php echo admin_url( 'load-styles.php?c=1&dir=ltr&load=buttons,wp-admin,iris,wp-color-picker'); ?>" type="text/css" media="all">
12
+ <link rel="stylesheet" href="<?php echo $css_path ?>">
13
  <script language="javascript" type="text/javascript" src="<?php echo includes_url( 'js/tinymce/tiny_mce_popup.js' ).'?ver='.$wp_version; ?>"></script>
14
  <style type="text/css">
15
  h1
63
  <?php $gid = $gallery->Id; $gallery = json_decode($gallery->configuration); ?>
64
  <tr>
65
  <td>
66
+ <?php echo absint($gid) ?>
67
  </td>
68
  <td>
69
+ <label id="<?php echo 'gall_' . absint($gid) ?>"> <?php echo esc_html($gallery->name) ?> </label>
70
  </td>
71
  </tr>
72
  <?php endforeach ?>
admin/welcome-screen/sections/comparison-table.php CHANGED
@@ -8,47 +8,47 @@ if ( ! defined( 'WPINC' ) ) {
8
 
9
  $features = array(
10
  'post-formats' => array(
11
- 'label' => __( 'Images per gallery', 'modula-gallery' ),
12
  'modula' => '20',
13
- 'modula-pro' => __( 'Unlimited', 'modula-gallery' ),
14
  ),
15
  'slider-layouts' => array(
16
- 'label' => __( 'Filters', 'modula-gallery' ),
17
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
18
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
19
  ),
20
  'news-ticker' => array(
21
- 'label' => __( 'Reload page on filter click', 'modula-gallery' ),
22
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
23
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
24
  ),
25
  'banner-ads' => array(
26
- 'label' => __( 'Change Filter Text', 'modula-gallery' ),
27
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
28
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
29
  ),
30
  'video-widgets' => array(
31
- 'label' => __( 'Multiple Included LightBox Scripts', 'modula-gallery' ),
32
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
33
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
34
  ),
35
  'color-schemes' => array(
36
- 'label' => __( 'Image Loaded Effects', 'modula-gallery' ),
37
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
38
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
39
  ),
40
  'typography' => array(
41
- 'label' => __( 'Image Hoever Effects', 'modula-gallery' ),
42
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
43
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
44
  ),
45
  'updates' => array(
46
- 'label' => __( 'Feature & Security Updates', 'modula-gallery' ),
47
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
48
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
49
  ),
50
  'suppoprt' => array(
51
- 'label' => __( 'Priority Support', 'modula-gallery' ),
52
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
53
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
54
  ),
@@ -68,14 +68,14 @@ $features = array(
68
  <tr>
69
  <td class="feature">
70
  <h3>
71
- <?php echo $feature['label']; ?>
72
  </h3>
73
  </td>
74
  <td class="modula-feature">
75
- <?php echo $feature['modula']; ?>
76
  </td>
77
  <td class="modula-pro-feature">
78
- <?php echo $feature['modula-pro']; ?>
79
  </td>
80
  </tr>
81
  <?php endforeach; ?>
8
 
9
  $features = array(
10
  'post-formats' => array(
11
+ 'label' => esc_html__( 'Images per gallery', 'modula-gallery' ),
12
  'modula' => '20',
13
+ 'modula-pro' => esc_html__( 'Unlimited', 'modula-gallery' ),
14
  ),
15
  'slider-layouts' => array(
16
+ 'label' => esc_html__( 'Filters', 'modula-gallery' ),
17
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
18
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
19
  ),
20
  'news-ticker' => array(
21
+ 'label' => esc_html__( 'Reload page on filter click', 'modula-gallery' ),
22
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
23
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
24
  ),
25
  'banner-ads' => array(
26
+ 'label' => esc_html__( 'Change Filter Text', 'modula-gallery' ),
27
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
28
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
29
  ),
30
  'video-widgets' => array(
31
+ 'label' => esc_html__( 'Multiple Included LightBox Scripts', 'modula-gallery' ),
32
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
33
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
34
  ),
35
  'color-schemes' => array(
36
+ 'label' => esc_html__( 'Image Loaded Effects', 'modula-gallery' ),
37
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
38
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
39
  ),
40
  'typography' => array(
41
+ 'label' => esc_html__( 'Image Hoever Effects', 'modula-gallery' ),
42
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
43
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
44
  ),
45
  'updates' => array(
46
+ 'label' => esc_html__( 'Feature & Security Updates', 'modula-gallery' ),
47
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
48
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
49
  ),
50
  'suppoprt' => array(
51
+ 'label' => esc_html__( 'Priority Support', 'modula-gallery' ),
52
  'modula' => '<span class="dashicons dashicons-no-alt"></span>',
53
  'modula-pro' => '<span class="dashicons dashicons-yes"></span>',
54
  ),
68
  <tr>
69
  <td class="feature">
70
  <h3>
71
+ <?php echo esc_html($feature['label']); ?>
72
  </h3>
73
  </td>
74
  <td class="modula-feature">
75
+ <?php echo wp_kses_post($feature['modula']); ?>
76
  </td>
77
  <td class="modula-pro-feature">
78
+ <?php echo wp_kses_post($feature['modula-pro']); ?>
79
  </td>
80
  </tr>
81
  <?php endforeach; ?>
admin/welcome-screen/sections/getting-started.php CHANGED
@@ -1,11 +1,11 @@
1
  <div class="feature-section one-col">
2
  <div class="col">
3
- <h2 style="font-size: 2.5em;"><?php echo __( 'Powerful, Yet Simple, Image Gallery Plugin', 'modula-gallery' ); ?></h2>
4
- <p class="lead-description"><?php echo __( 'Modula helps <u>casual users</u> create an image gallery in 30s or less.', 'modula-gallery' ); ?></p>
5
- <p><?php echo __( 'Modula is a WordPress photo and image gallery plugin that makes it easy for users of all levels to build beautiful grid galleries. Modula’s <u>unique grid system</u> ensures your gallery avoids the boring square look found in many other plugins. Just give Modula a size and a list of images and it does all the work for you. If you’re a casual WordPress user, you can create a stylish gallery in seconds without digging into detailed settings pages. ', 'modula-gallery' ); ?></p>
6
  <div class="center">
7
  <a href="https://www.wp-modula.com/?utm_source=worg&utm_medium=about-page&utm_campaign=upsell" target="_blank" class="button button-primary button-hero"><span class="dashicons dashicons-cart"></span>
8
- <?php echo __( 'Get Modula Pro', 'modula-gallery' ); ?>
9
  </a>
10
  </div>
11
  </div>
@@ -17,38 +17,38 @@
17
 
18
  <div class="feature-section three-col">
19
  <div class="col">
20
- <h3><?php echo __( 'Stylish & Complex Layouts', 'modula-gallery' ); ?></h3>
21
- <p><?php echo __( 'Stylish grids that go beyond the boring squares. With Modula, creating a stylish and good looking image gallery this is no longer the case. ', 'modula-gallery' ); ?></p>
22
  </div>
23
 
24
  <div class="col">
25
- <h3><?php echo __( 'Gallery Filters', 'modula-gallery' ); ?></h3>
26
- <p><?php echo __( 'Let visitors filter your gallery items with a single click. Create as many gallery filters as you want. These filters also <u>work in real-time</u> ⭐', 'modula-gallery' ); ?></p>
27
  </div>
28
  <div class="col">
29
- <h3><?php echo __( 'Multiple Gallery Support', 'modula-gallery' ); ?></h3>
30
- <p><?php echo __( 'Modula allows you to add as many galleries as you want to the same page. Modula is very versatile & flexible. You should take it our for a spin. ', 'modula-gallery' ); ?></p>
31
  </div>
32
 
33
  <div class="col">
34
- <h3><?php echo __( 'Widget Support', 'modula-gallery' ); ?></h3>
35
- <p><?php echo __( 'Display your galleries inside WordPress widgets. This makes Modula really powerful. Display your image galleries where your heart desires.', 'modula-gallery' ); ?></p>
36
  </div>
37
 
38
  <div class="col">
39
- <h3><?php echo __( 'Responsive & Retina-ready', 'modula-gallery' ); ?></h3>
40
- <p><?php echo __( 'Every gallery created with Modula is responsive, mobile ready & retina ready. <b>Your galleries will look beautiful on any device</b>, and any display.', 'modula-gallery' ); ?></p>
41
  </div>
42
 
43
  <div class="col">
44
- <h3><?php echo __( 'Custom Caption Support', 'modula-gallery' ); ?></h3>
45
- <p><?php echo __( 'This feature deserves a parade down the center of town! Spruce up your image galleries with custom captions, animations & colors.', 'modula-gallery' ); ?></p>
46
  </div>
47
  </div>
48
 
49
  <div class="center">
50
  <a href="https://www.wp-modula.com/?utm_source=worg&utm_medium=about-page&utm_campaign=upsell" target="_blank" class="button button-primary button-hero"><span class="dashicons dashicons-cart"></span>
51
- <?php echo __( 'Get Modula Pro!', 'modula-gallery' ); ?></a>
52
  </div>
53
 
54
  <br/>
@@ -57,33 +57,33 @@
57
  <div class="feature-section three-col">
58
 
59
  <div class="col">
60
- <h3><?php echo __( 'Multiple LightBox Support', 'modula-gallery' ); ?></h3>
61
- <p><?php echo __( 'Modula <b>supports 6 different lightbox scripts</b>: <em>Lightgallery, Lightbox2, PrettyPhoto, Magnific Gallery, SwipeBox and FancyBox</em>. Showcase your image galleries with style.', 'modula-gallery' ); ?></p>
62
  </div>
63
 
64
  <div class="col">
65
- <h3><?php echo __( 'Social Sharing Friendly', 'modula-gallery' ); ?></h3>
66
- <p><?php echo __( 'Built-in social sharing buttons that will help you boost your page views. <b>Reach your audience faster and easier</b> with social tools built-in.', 'modula-gallery' ); ?></p>
67
  </div>
68
 
69
  <div class="col">
70
- <h3><?php echo __( 'Multiple Image Hover Effects', 'modula-gallery' ); ?></h3>
71
- <p><?php echo __( 'Choose from 12 different hover effects. Pick the ones that best represent your personality. Easily <u>showcase your images in style</u>.', 'modula-gallery' ); ?></p>
72
  </div>
73
 
74
  <div class="col">
75
- <h3><?php echo __( 'Make It Your Own', 'modula-gallery' ); ?></h3>
76
- <p><?php echo __( 'Build your own effects for even more control. Complex, built-in, styles will help you personalize Modula to your own liking.', 'modula-gallery' ); ?></p>
77
  </div>
78
 
79
  <div class="col">
80
- <h3><?php echo __( 'Security Updates', 'modula-gallery' ); ?></h3>
81
- <p><?php echo __( 'Modula is constantly evolving. New features & security updates are first released for PRO users.', 'modula-gallery' ); ?></p>
82
  </div>
83
 
84
  <div class="col">
85
- <h3><?php echo __( 'Premium & Priority Support', 'modula-gallery' ); ?></h3>
86
- <p><?php echo __( 'If you need help just post a ticket and our tech guys will get back to you asap. We have a stellar support team ready to help you in no time.', 'modula-gallery' ); ?></p>
87
  </div>
88
 
89
  </div>
@@ -92,8 +92,8 @@
92
 
93
  <div class="feature-section two-col">
94
  <div class="col">
95
- <h3><?php echo __( 'Built on Material Design', 'modula-gallery' ); ?></h3>
96
- <p><?php echo __( 'Modula is built entirely on Material Design principles. Starting with the code layout and finishing up with the smallest animation, Modula screams Material Design from it\'s every pore. <br \/><br \/> Based on the most popular front-end design framework of the century, we\'ve striven to create a modern, flexible and beautiful implementation of Material Design in Modula. <br \/><br \/> We believe you\'ll <b>enjoy it</b>!', 'modula-gallery' ); ?></p>
97
  </div>
98
  <div class="col">
99
  <img src="<?php echo esc_url( MODULA_PLUGIN_DIR_URL ); ?>admin/images/material-design.gif" alt="Material Design GIF">
@@ -107,21 +107,21 @@
107
  <div class="changelog">
108
  <h2><?php
109
  printf( /* translators: %s: smiling face with smiling eyes emoji */
110
- __( 'Even More Plugin Flexibility %s', 'modula-gallery' ), '&#x1F60A' );
111
  ?></h2>
112
 
113
  <div class="under-the-hood three-col">
114
  <div class="col">
115
- <h3><?php echo __( 'Drag & Drop Images', 'modula-gallery' ); ?></h3>
116
- <p><?php echo __( 'Re-ordering couldn\'t be easier. Just drag & drop your images around until you find the perfect positioning. Be done in 30s or less.', 'modula-gallery' ); ?></p>
117
  </div>
118
  <div class="col">
119
- <h3><?php echo __( 'Custom Scripts & CSS Support', 'modula-gallery' ); ?></h3></h3>
120
- <p><?php echo __( 'Modula comes with built-in custom CSS support. Want to style one of your galleries in a particular way? Add some CSS. Want to include a custom tracking script in just one of your galleries? Add away. Simplicity, at it\'s best.', 'modula-gallery' ); ?></p>
121
  </div>
122
  <div class="col">
123
- <h3><?php echo __( 'Developer Friendly' ); ?></h3>
124
- <p><?php echo __( 'Modula\'s been built with both the user & the developer in mind. Friendly code, well documented so you can easily add your changes. Filters & Hooks, included with every purchase.', 'modula-gallery' ); ?></p>
125
  </div>
126
 
127
  </div>
@@ -129,5 +129,5 @@
129
 
130
  <div class="center">
131
  <a href="https://www.wp-modula.com/?utm_source=worg&utm_medium=about-page&utm_campaign=upsell" target="_blank" class="button button-primary button-hero"><span class="dashicons dashicons-cart"></span>
132
- <?php echo __( 'Get Modula Pro!', 'modula-gallery' ); ?></a>
133
  </div><br/>
1
  <div class="feature-section one-col">
2
  <div class="col">
3
+ <h2 style="font-size: 2.5em;"><?php echo esc_html__( 'Powerful, Yet Simple, Image Gallery Plugin', 'modula-gallery' ); ?></h2>
4
+ <p class="lead-description"><?php echo wp_kses_post(__( 'Modula helps <u>casual users</u> create an image gallery in 30s or less.', 'modula-gallery' )); ?></p>
5
+ <p><?php echo esc_html__( 'Modula is a WordPress photo and image gallery plugin that makes it easy for users of all levels to build beautiful grid galleries. Modula’s <u>unique grid system</u> ensures your gallery avoids the boring square look found in many other plugins. Just give Modula a size and a list of images and it does all the work for you. If you’re a casual WordPress user, you can create a stylish gallery in seconds without digging into detailed settings pages. ', 'modula-gallery' ); ?></p>
6
  <div class="center">
7
  <a href="https://www.wp-modula.com/?utm_source=worg&utm_medium=about-page&utm_campaign=upsell" target="_blank" class="button button-primary button-hero"><span class="dashicons dashicons-cart"></span>
8
+ <?php echo esc_html__( 'Get Modula Pro', 'modula-gallery' ); ?>
9
  </a>
10
  </div>
11
  </div>
17
 
18
  <div class="feature-section three-col">
19
  <div class="col">
20
+ <h3><?php echo esc_html__( 'Stylish & Complex Layouts', 'modula-gallery' ); ?></h3>
21
+ <p><?php echo esc_html__( 'Stylish grids that go beyond the boring squares. With Modula, creating a stylish and good looking image gallery this is no longer the case. ', 'modula-gallery' ); ?></p>
22
  </div>
23
 
24
  <div class="col">
25
+ <h3><?php echo esc_html__( 'Gallery Filters', 'modula-gallery' ); ?></h3>
26
+ <p><?php echo wp_kses_post(__( 'Let visitors filter your gallery items with a single click. Create as many gallery filters as you want. These filters also <u>work in real-time</u> ⭐', 'modula-gallery' )); ?></p>
27
  </div>
28
  <div class="col">
29
+ <h3><?php echo esc_html__( 'Multiple Gallery Support', 'modula-gallery' ); ?></h3>
30
+ <p><?php echo esc_html__( 'Modula allows you to add as many galleries as you want to the same page. Modula is very versatile & flexible. You should take it our for a spin. ', 'modula-gallery' ); ?></p>
31
  </div>
32
 
33
  <div class="col">
34
+ <h3><?php echo esc_html__( 'Widget Support', 'modula-gallery' ); ?></h3>
35
+ <p><?php echo esc_html__( 'Display your galleries inside WordPress widgets. This makes Modula really powerful. Display your image galleries where your heart desires.', 'modula-gallery' ); ?></p>
36
  </div>
37
 
38
  <div class="col">
39
+ <h3><?php echo esc_html__( 'Responsive & Retina-ready', 'modula-gallery' ); ?></h3>
40
+ <p><?php echo wp_kses_post( __( 'Every gallery created with Modula is responsive, mobile ready & retina ready. <b>Your galleries will look beautiful on any device</b>, and any display.', 'modula-gallery' ) ); ?></p>
41
  </div>
42
 
43
  <div class="col">
44
+ <h3><?php echo esc_html__( 'Custom Caption Support', 'modula-gallery' ); ?></h3>
45
+ <p><?php echo esc_html__( 'This feature deserves a parade down the center of town! Spruce up your image galleries with custom captions, animations & colors.', 'modula-gallery' ); ?></p>
46
  </div>
47
  </div>
48
 
49
  <div class="center">
50
  <a href="https://www.wp-modula.com/?utm_source=worg&utm_medium=about-page&utm_campaign=upsell" target="_blank" class="button button-primary button-hero"><span class="dashicons dashicons-cart"></span>
51
+ <?php echo esc_html__( 'Get Modula Pro!', 'modula-gallery' ); ?></a>
52
  </div>
53
 
54
  <br/>
57
  <div class="feature-section three-col">
58
 
59
  <div class="col">
60
+ <h3><?php echo esc_html__( 'Multiple LightBox Support', 'modula-gallery' ); ?></h3>
61
+ <p><?php echo wp_kses_post(__( 'Modula <b>supports 6 different lightbox scripts</b>: <em>Lightgallery, Lightbox2, PrettyPhoto, Magnific Gallery, SwipeBox and FancyBox</em>. Showcase your image galleries with style.', 'modula-gallery' )); ?></p>
62
  </div>
63
 
64
  <div class="col">
65
+ <h3><?php echo esc_html__( 'Social Sharing Friendly', 'modula-gallery' ); ?></h3>
66
+ <p><?php echo wp_kses_post(__( 'Built-in social sharing buttons that will help you boost your page views. <b>Reach your audience faster and easier</b> with social tools built-in.', 'modula-gallery' )); ?></p>
67
  </div>
68
 
69
  <div class="col">
70
+ <h3><?php echo esc_html__( 'Multiple Image Hover Effects', 'modula-gallery' ); ?></h3>
71
+ <p><?php echo wp_kses_post(__( 'Choose from 12 different hover effects. Pick the ones that best represent your personality. Easily <u>showcase your images in style</u>.', 'modula-gallery' )); ?></p>
72
  </div>
73
 
74
  <div class="col">
75
+ <h3><?php echo esc_html__( 'Make It Your Own', 'modula-gallery' ); ?></h3>
76
+ <p><?php echo esc_html__( 'Build your own effects for even more control. Complex, built-in, styles will help you personalize Modula to your own liking.', 'modula-gallery' ); ?></p>
77
  </div>
78
 
79
  <div class="col">
80
+ <h3><?php echo esc_html__( 'Security Updates', 'modula-gallery' ); ?></h3>
81
+ <p><?php echo esc_html__( 'Modula is constantly evolving. New features & security updates are first released for PRO users.', 'modula-gallery' ); ?></p>
82
  </div>
83
 
84
  <div class="col">
85
+ <h3><?php echo esc_html__( 'Premium & Priority Support', 'modula-gallery' ); ?></h3>
86
+ <p><?php echo esc_html__( 'If you need help just post a ticket and our tech guys will get back to you asap. We have a stellar support team ready to help you in no time.', 'modula-gallery' ); ?></p>
87
  </div>
88
 
89
  </div>
92
 
93
  <div class="feature-section two-col">
94
  <div class="col">
95
+ <h3><?php echo esc_html__( 'Built on Material Design', 'modula-gallery' ); ?></h3>
96
+ <p><?php echo wp_kses_post(__( 'Modula is built entirely on Material Design principles. Starting with the code layout and finishing up with the smallest animation, Modula screams Material Design from it\'s every pore. <br \/><br \/> Based on the most popular front-end design framework of the century, we\'ve striven to create a modern, flexible and beautiful implementation of Material Design in Modula. <br \/><br \/> We believe you\'ll <b>enjoy it</b>!', 'modula-gallery' )); ?></p>
97
  </div>
98
  <div class="col">
99
  <img src="<?php echo esc_url( MODULA_PLUGIN_DIR_URL ); ?>admin/images/material-design.gif" alt="Material Design GIF">
107
  <div class="changelog">
108
  <h2><?php
109
  printf( /* translators: %s: smiling face with smiling eyes emoji */
110
+ esc_html__( 'Even More Plugin Flexibility %s', 'modula-gallery' ), '&#x1F60A' );
111
  ?></h2>
112
 
113
  <div class="under-the-hood three-col">
114
  <div class="col">
115
+ <h3><?php echo esc_html__( 'Drag & Drop Images', 'modula-gallery' ); ?></h3>
116
+ <p><?php echo esc_html__( 'Re-ordering couldn\'t be easier. Just drag & drop your images around until you find the perfect positioning. Be done in 30s or less.', 'modula-gallery' ); ?></p>
117
  </div>
118
  <div class="col">
119
+ <h3><?php echo esc_html__( 'Custom Scripts & CSS Support', 'modula-gallery' ); ?></h3></h3>
120
+ <p><?php echo esc_html__( 'Modula comes with built-in custom CSS support. Want to style one of your galleries in a particular way? Add some CSS. Want to include a custom tracking script in just one of your galleries? Add away. Simplicity, at it\'s best.', 'modula-gallery' ); ?></p>
121
  </div>
122
  <div class="col">
123
+ <h3><?php echo esc_html__( 'Developer Friendly' ); ?></h3>
124
+ <p><?php echo esc_html__( 'Modula\'s been built with both the user & the developer in mind. Friendly code, well documented so you can easily add your changes. Filters & Hooks, included with every purchase.', 'modula-gallery' ); ?></p>
125
  </div>
126
 
127
  </div>
129
 
130
  <div class="center">
131
  <a href="https://www.wp-modula.com/?utm_source=worg&utm_medium=about-page&utm_campaign=upsell" target="_blank" class="button button-primary button-hero"><span class="dashicons dashicons-cart"></span>
132
+ <?php echo esc_html__( 'Get Modula Pro!', 'modula-gallery' ); ?></a>
133
  </div><br/>
admin/welcome-screen/sections/modula-v2.php CHANGED
@@ -1,10 +1,10 @@
1
  <div class="feature-section one-col">
2
  <div class="col">
3
- <h2 style="font-size: 2.5em;"><?php echo __( 'New Admin Interface, Custom Grid!', 'modula-gallery' ); ?></h2>
4
- <p class="lead-description"><?php echo __( 'Modula 2.0 bring new things like a new admin interface & a new type of gallery.', 'modula-gallery' ); ?></p>
5
  <div class="center">
6
  <a href="https://www.wp-modula.com/?utm_source=worg&utm_medium=about-page&utm_campaign=upsell" target="_blank" class="button button-primary button-hero"><span class="dashicons dashicons-cart"></span>
7
- <?php echo __( 'Get Modula Pro', 'modula-gallery' ); ?>
8
  </a>
9
  </div>
10
  </div>
1
  <div class="feature-section one-col">
2
  <div class="col">
3
+ <h2 style="font-size: 2.5em;"><?php echo esc_html__( 'New Admin Interface, Custom Grid!', 'modula-gallery' ); ?></h2>
4
+ <p class="lead-description"><?php echo esc_html__( 'Modula 2.0 bring new things like a new admin interface & a new type of gallery.', 'modula-gallery' ); ?></p>
5
  <div class="center">
6
  <a href="https://www.wp-modula.com/?utm_source=worg&utm_medium=about-page&utm_campaign=upsell" target="_blank" class="button button-primary button-hero"><span class="dashicons dashicons-cart"></span>
7
+ <?php echo esc_html__( 'Get Modula Pro', 'modula-gallery' ); ?>
8
  </a>
9
  </div>
10
  </div>
lib/class-epsilon-plugin-request.php DELETED
@@ -1,225 +0,0 @@
1
- <?php
2
-
3
- class Epsilon_Plugin_Request {
4
-
5
- /**
6
- * Url for the request
7
- *
8
- * @var string
9
- */
10
- private $url = 'https://tamewp.com/';
11
- /**
12
- * Api endpoint
13
- *
14
- * @var string
15
- */
16
- private $endpoint = 'wp-json/epsilon/v1/add-tracking-data';
17
- /**
18
- * Private data
19
- *
20
- * @var array
21
- */
22
- private $data = array(
23
- 'server' => array(),
24
- 'user' => array(),
25
- 'wordpress' => array(
26
- 'deactivated_plugin' => array(),
27
- ),
28
- );
29
- /**
30
- * Plugin file
31
- *
32
- * @var string
33
- */
34
- private $plugin_file = '';
35
-
36
- private $allow_tracking = 0;
37
-
38
- public $request_successful = false;
39
-
40
- function __construct( $_plugin_file, $args ) {
41
-
42
- // Set variables
43
- $this->allow_tracking = $args['tracking'];
44
- $this->plugin_file = $_plugin_file;
45
- $this->data['unique'] = md5( home_url() . get_bloginfo( 'admin_email' ) );
46
- $this->data['wordpress']['deactivated_plugin']['uninstall_reason'] = $args['reason'];
47
- $this->data['wordpress']['deactivated_plugin']['uninstall_details'] = $args['details'];
48
-
49
- // Start collecting data
50
- $this->_collect_data();
51
- $this->_generate_url();
52
- $this->request_successful = $this->_send_request();
53
- }
54
-
55
- /**
56
- * Collect all data for the request.
57
- *
58
- */
59
- private function _collect_data() {
60
-
61
- $current_plugin = get_plugin_data( $this->plugin_file );
62
-
63
- // Plugin data
64
- $this->data['wordpress']['deactivated_plugin']['slug'] = $current_plugin['TextDomain'];
65
- $this->data['wordpress']['deactivated_plugin']['name'] = $current_plugin['Name'];
66
- $this->data['wordpress']['deactivated_plugin']['version'] = $current_plugin['Version'];
67
- $this->data['wordpress']['deactivated_plugin']['author'] = $current_plugin['AuthorName'];
68
-
69
- if ( $this->allow_tracking ) {
70
- $this->_collect_wordpress_data();
71
- $this->_collect_server_data();
72
- $this->_collect_user_data();
73
- }
74
-
75
- }
76
-
77
- /**
78
- * Collect WordPress data.
79
- *
80
- */
81
- private function _collect_wordpress_data() {
82
- $this->data['wordpress']['locale'] = ( get_bloginfo( 'version' ) >= 4.7 ) ? get_user_locale() : get_locale();
83
- $this->data['wordpress']['wp_version'] = get_bloginfo( 'version' );
84
- $this->data['wordpress']['multisite'] = is_multisite();
85
-
86
- $this->data['wordpress']['themes'] = $this->get_themes();
87
- $this->data['wordpress']['plugins'] = $this->get_plugins();
88
- }
89
-
90
- /**
91
- * Collect server data.
92
- *
93
- */
94
- private function _collect_server_data() {
95
- $this->data['server']['server'] = isset( $_SERVER['SERVER_SOFTWARE'] ) ? $_SERVER['SERVER_SOFTWARE'] : '';
96
- $this->data['server']['php_version'] = phpversion();
97
- $this->data['server']['url'] = home_url();
98
- }
99
-
100
- /**
101
- * Collect user data.
102
- *
103
- */
104
- private function _collect_user_data() {
105
- $admin = get_user_by( 'email', get_bloginfo( 'admin_email' ) );
106
- if ( ! $admin ) {
107
- $this->data['user']['email'] = '';
108
- $this->data['user']['first_name'] = '';
109
- $this->data['user']['last_name'] = '';
110
- }else{
111
- $this->data['user']['email'] = get_bloginfo( 'admin_email' );
112
- $this->data['user']['first_name'] = $admin->first_name;
113
- $this->data['user']['last_name'] = $admin->last_name;
114
- }
115
- }
116
-
117
- /**
118
- * Get current themes
119
- *
120
- * @return array
121
- */
122
- private function get_themes() {
123
- $theme = wp_get_theme();
124
-
125
- return array(
126
- 'installed' => $this->_get_installed_themes(),
127
- 'active' => array(
128
- 'slug' => get_stylesheet(),
129
- 'name' => $theme->get( 'Name' ),
130
- 'version' => $theme->get( 'Version' ),
131
- 'author' => $theme->get( 'Author' ),
132
- ),
133
- );
134
- }
135
-
136
- /**
137
- * Get an array of installed themes
138
- */
139
- private function _get_installed_themes() {
140
- $installed = wp_get_themes();
141
- $theme = get_stylesheet();
142
- $arr = array();
143
-
144
- foreach ( $installed as $slug => $info ) {
145
- if ( $slug === $theme ) {
146
- continue;
147
- }
148
- $arr[ $slug ] = array(
149
- 'slug' => $slug,
150
- 'name' => $info->get( 'Name' ),
151
- 'version' => $info->get( 'Version' ),
152
- 'author' => $info->get( 'Author' )
153
- );
154
- };
155
-
156
- return $arr;
157
- }
158
-
159
- /**
160
- * Get a list of installed plugins
161
- */
162
- private function get_plugins() {
163
- if ( ! function_exists( 'get_plugins' ) ) {
164
- include ABSPATH . '/wp-admin/includes/plugin.php';
165
- }
166
-
167
- $plugins = get_plugins();
168
- $option = get_option( 'active_plugins', array() );
169
- $active = array();
170
- $installed = array();
171
- foreach ( $plugins as $id => $info ) {
172
- if ( in_array( $id, $active ) ) {
173
- continue;
174
- }
175
-
176
- $id = explode( '/', $id );
177
- $id = ucwords( str_replace( '-', ' ', $id[0] ) );
178
-
179
- $installed[] = $id;
180
- }
181
-
182
- foreach ( $option as $id ) {
183
- $id = explode( '/', $id );
184
- $id = ucwords( str_replace( '-', ' ', $id[0] ) );
185
-
186
- $active[] = $id;
187
- }
188
-
189
- return array(
190
- 'installed' => $installed,
191
- 'active' => $active,
192
- );
193
- }
194
-
195
- /**
196
- * Generate the url
197
- */
198
- protected function _generate_url() {
199
- $this->url = $this->url . $this->endpoint;
200
- }
201
-
202
- /**
203
- * Send dat to server.
204
- *
205
- */
206
- private function _send_request() {
207
-
208
- $request = wp_remote_post( $this->url, array(
209
- 'method' => 'POST',
210
- 'timeout' => 20,
211
- 'redirection' => 5,
212
- 'httpversion' => '1.1',
213
- 'blocking' => true,
214
- 'body' => $this->data,
215
- 'user-agent' => 'MT/EPSILON-CUSTOMER-TRACKING/' . esc_url( home_url() )
216
- ) );
217
-
218
- if ( is_wp_error( $request ) ) {
219
- return false;
220
- }
221
-
222
- return true;
223
-
224
- }
225
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/class-modula-feedback.php DELETED
@@ -1,252 +0,0 @@
1
- <?php
2
-
3
- class Modula_Feedback {
4
-
5
- private $plugin_file = '';
6
- private $plugin_name = '';
7
-
8
- function __construct( $_plugin_file ) {
9
-
10
- $this->plugin_file = $_plugin_file;
11
- $this->plugin_name = basename( $this->plugin_file, '.php' );
12
-
13
- // Deactivation
14
- add_filter( 'plugin_action_links_' . plugin_basename( $this->plugin_file ), array( $this, 'filter_action_links' ) );
15
- add_action( 'admin_footer-plugins.php', array( $this, 'goodbye_ajax' ) );
16
- add_action( 'wp_ajax_epsilon_deactivate_plugin', array( $this, 'epsilon_deactivate_plugin_callback' ) );
17
-
18
- }
19
-
20
- /**
21
- * Filter the deactivation link to allow us to present a form when the user deactivates the plugin
22
- * @since 1.0.0
23
- */
24
- public function filter_action_links( $links ) {
25
-
26
- if( isset( $links['deactivate'] ) ) {
27
- $deactivation_link = $links['deactivate'];
28
- // Insert an onClick action to allow form before deactivating
29
- $deactivation_link = str_replace( '<a ', '<div class="epsilon-deactivate-form-wrapper"><span class="epsilon-deactivate-form" id="epsilon-deactivate-form-' . esc_attr( $this->plugin_name ) . '"></span></div><a onclick="javascript:event.preventDefault();" id="epsilon-deactivate-link-' . esc_attr( $this->plugin_name ) . '" ', $deactivation_link );
30
- $links['deactivate'] = $deactivation_link;
31
- }
32
- return $links;
33
- }
34
-
35
- /**
36
- * Form text strings
37
- * These can be filtered
38
- * @since 1.0.0
39
- */
40
- public function goodbye_ajax() {
41
- // Get our strings for the form
42
- $form = $this->get_form_info();
43
-
44
- // Build the HTML to go in the form
45
- $html = '<div class="epsilon-deactivate-form-head"><strong>' . esc_html( $form['heading'] ) . '</strong></div>';
46
- $html .= '<div class="epsilon-deactivate-form-body"><p>' . esc_html( $form['body'] ) . '</p>';
47
- if( is_array( $form['options'] ) ) {
48
- $html .= '<div class="epsilon-deactivate-options"><p>';
49
- foreach( $form['options'] as $key => $option ) {
50
- if ( 'features' == $key ) {
51
- $html .= '<input type="radio" name="epsilon-deactivate-reason" checked="checked" id="' . esc_attr( $key ) . '" value="' . esc_attr( $key ) . '"> <label for="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</label><br>';
52
- }else{
53
- $html .= '<input type="radio" name="epsilon-deactivate-reason" id="' . esc_attr( $key ) . '" value="' . esc_attr( $key ) . '"> <label for="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</label><br>';
54
- }
55
- }
56
- $html .= '</p><label id="epsilon-deactivate-details-label" for="epsilon-deactivate-reasons"><strong>' . esc_html( $form['details'] ) .'</strong></label><textarea name="epsilon-deactivate-details" id="epsilon-deactivate-details" rows="2" style="width:100%"></textarea>';
57
- $html .= '<input type="checkbox" name="epsilon-deactivate-tracking" checked="" id="allow-tracking" value="yes"> <label for="allow-tracking">' . esc_html__( 'Allow us to get more information in order to improve our plugin', 'modula-gallery' ) . '</label><br>';
58
- $html .= '</div><!-- .epsilon-deactivate-options -->';
59
- }
60
- $html .= '</div><!-- .epsilon-deactivate-form-body -->';
61
- $html .= '<p class="deactivating-spinner"><span class="spinner"></span> ' . __( 'Submitting form', 'modula-gallery' ) . '</p>';
62
- $html .= '<div class="epsilon-deactivate-form-footer"><p><a id="epsilon-deactivate-plugin" href="#">' . __( 'Just Deactivate', 'modula-gallery' ) . '</a><a id="epsilon-deactivate-submit-form" class="button button-primary" href="#">' . __( 'Submit and Deactivate', 'modula-gallery' ) . '</a></p></div>'
63
- ?>
64
- <div class="epsilon-deactivate-form-bg"></div>
65
- <style type="text/css">
66
- .epsilon-deactivate-form-active .epsilon-deactivate-form-bg {
67
- background: rgba( 0, 0, 0, .5 );
68
- position: fixed;
69
- top: 0;
70
- left: 0;
71
- width: 100%;
72
- height: 100%;
73
- }
74
- .epsilon-deactivate-form-wrapper {
75
- position: relative;
76
- z-index: 999;
77
- display: none;
78
- }
79
- .epsilon-deactivate-form-active .epsilon-deactivate-form-wrapper {
80
- display: block;
81
- }
82
- .epsilon-deactivate-form {
83
- display: none;
84
- }
85
- .epsilon-deactivate-form-active .epsilon-deactivate-form {
86
- position: absolute;
87
- bottom: 30px;
88
- left: 0;
89
- max-width: 400px;
90
- background: #fff;
91
- white-space: normal;
92
- }
93
- .epsilon-deactivate-form-head {
94
- background: #51AD31;
95
- color: #fff;
96
- padding: 8px 18px;
97
- }
98
- .epsilon-deactivate-form-body {
99
- padding: 8px 18px;
100
- color: #444;
101
- }
102
- .deactivating-spinner {
103
- display: none;
104
- }
105
- .deactivating-spinner .spinner {
106
- float: none;
107
- margin: 4px 4px 0 18px;
108
- vertical-align: bottom;
109
- visibility: visible;
110
- }
111
- .epsilon-deactivate-form-footer {
112
- padding: 8px 18px;
113
- }
114
- .epsilon-deactivate-form-footer p {
115
- display: flex;
116
- align-items: center;
117
- justify-content: space-between;
118
- }
119
- .epsilon-deactivate-form.process-response .epsilon-deactivate-form-body,
120
- .epsilon-deactivate-form.process-response .epsilon-deactivate-form-footer {
121
- position: relative;
122
- }
123
- .epsilon-deactivate-form.process-response .epsilon-deactivate-form-body:after,
124
- .epsilon-deactivate-form.process-response .epsilon-deactivate-form-footer:after {
125
- content: "";
126
- display: block;
127
- position: absolute;
128
- top: 0;
129
- left: 0;
130
- width: 100%;
131
- height: 100%;
132
- background-color: rgba( 255, 255, 255, .5 );
133
- }
134
- </style>
135
- <script>
136
- jQuery(document).ready(function($){
137
- var deactivateURL = $("#epsilon-deactivate-link-<?php echo esc_attr( $this->plugin_name ); ?>"),
138
- formContainer = $('#epsilon-deactivate-form-<?php echo esc_attr( $this->plugin_name ); ?>'),
139
- detailsStrings = {
140
- 'setup' : '<?php echo __( 'What was the dificult part ?', 'modula-gallery' ) ?>',
141
- 'documentation' : '<?php echo __( 'What can we describe more ?', 'modula-gallery' ) ?>',
142
- 'features' : '<?php echo __( 'How could we improve ?', 'modula-gallery' ) ?>',
143
- 'better-plugin' : '<?php echo __( 'Can you mention it ?', 'modula-gallery' ) ?>',
144
- 'incompatibility' : '<?php echo __( 'With what plugin or theme is incompatible ?', 'modula-gallery' ) ?>',
145
- };
146
-
147
- $( deactivateURL ).on("click",function(){
148
- // We'll send the user to this deactivation link when they've completed or dismissed the form
149
- var url = deactivateURL.attr( 'href' );
150
- $('body').toggleClass('epsilon-deactivate-form-active');
151
- formContainer.fadeIn();
152
- formContainer.html( '<?php echo $html; ?>');
153
-
154
- formContainer.on( 'change', 'input[name="epsilon-deactivate-reason"]', function(){
155
- var detailsLabel = formContainer.find( '#epsilon-deactivate-details-label strong' );
156
- var value = formContainer.find( 'input[name="epsilon-deactivate-reason"]:checked' ).val();
157
- detailsLabel.text( detailsStrings[ value ] );
158
- });
159
-
160
- formContainer.on('click', '#epsilon-deactivate-submit-form', function(e){
161
- var data = {
162
- 'action': 'epsilon_deactivate_plugin',
163
- 'security': "<?php echo wp_create_nonce ( 'epsilon_deactivate_plugin' ); ?>",
164
- 'dataType': "json"
165
- };
166
- e.preventDefault();
167
- // As soon as we click, the body of the form should disappear
168
- formContainer.addClass( 'process-response' );
169
- // Fade in spinner
170
- formContainer.find(".deactivating-spinner").fadeIn();
171
-
172
- data['reason'] = formContainer.find( 'input[name="epsilon-deactivate-reason"]:checked' ).val();
173
- data['details'] = formContainer.find('#epsilon-deactivate-details').val();
174
- data['tracking'] = formContainer.find( '#allow-tracking:checked' ).length;
175
-
176
- $.post(
177
- ajaxurl,
178
- data,
179
- function(response){
180
- // Redirect to original deactivation URL
181
- window.location.href = url;
182
- }
183
- );
184
- });
185
-
186
- formContainer.on('click', '#epsilon-deactivate-plugin', function(e){
187
- e.preventDefault();
188
- window.location.href = url;
189
- });
190
-
191
- // If we click outside the form, the form will close
192
- $('.epsilon-deactivate-form-bg').on('click',function(){
193
- formContainer.fadeOut();
194
- $('body').removeClass('epsilon-deactivate-form-active');
195
- });
196
- });
197
- });
198
- </script>
199
- <?php }
200
-
201
- /*
202
- * Form text strings
203
- * These are non-filterable and used as fallback in case filtered strings aren't set correctly
204
- * @since 1.0.0
205
- */
206
- public function get_form_info() {
207
- $form = array();
208
- $form['heading'] = __( 'Sorry to see you go', 'modula-gallery' );
209
- $form['body'] = __( 'Before you deactivate the plugin, would you quickly give us your reason for doing so?', 'modula-gallery' );
210
- $form['options'] = array(
211
- 'setup' => __( 'Set up is too difficult', 'modula-gallery' ),
212
- 'documentation' => __( 'Lack of documentation', 'modula-gallery' ),
213
- 'features' => __( 'Not the features I wanted', 'modula-gallery' ),
214
- 'better-plugin' => __( 'Found a better plugin', 'modula-gallery' ),
215
- 'incompatibility' => __( 'Incompatible with theme or plugin', 'modula-gallery' ),
216
- );
217
- $form['details'] = __( 'How could we improve ?', 'modula-gallery' );
218
- return $form;
219
- }
220
-
221
- public function epsilon_deactivate_plugin_callback() {
222
-
223
- check_ajax_referer( 'epsilon_deactivate_plugin', 'security' );
224
-
225
- if ( isset($_POST['reason']) && isset($_POST['details']) && isset($_POST['tracking']) ) {
226
- require_once 'class-epsilon-plugin-request.php';
227
- $args = array(
228
- 'reason' => $_POST['reason'],
229
- 'details' => $_POST['details'],
230
- 'tracking' => $_POST['tracking'],
231
- );
232
- $request = new Epsilon_Plugin_Request( $this->plugin_file, $args );
233
- if ( $request->request_successful ) {
234
- echo json_encode( array(
235
- 'status' => 'ok',
236
- ) );
237
- }else{
238
- echo json_encode( array(
239
- 'status' => 'nok',
240
- ) );
241
- }
242
- }else{
243
- echo json_encode( array(
244
- 'status' => 'ok',
245
- ) );
246
- }
247
-
248
- die();
249
-
250
- }
251
-
252
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/class-modula-review.php CHANGED
@@ -19,10 +19,10 @@ class Modula_Review {
19
  $this->value = $this->value();
20
 
21
  $this->messages = array(
22
- 'notice' => __( "Hey, I noticed you have installed our plugin for %s day - that's awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress? Just to help us spread the word and boost our motivation.", 'modula-gallery' ),
23
- 'rate' => __( 'Ok, you deserve it', 'modula-gallery' ),
24
- 'rated' => __( 'I already did', 'modula-gallery' ),
25
- 'no_rate' => __( 'No, not good enough', 'modula-gallery' ),
26
  );
27
 
28
  if ( isset( $args['messages'] ) ) {
@@ -88,7 +88,7 @@ class Modula_Review {
88
  global $wpdb;
89
  $galleries = $wpdb->get_var( 'SELECT count(Id) FROM ' . $wpdb->ModulaGalleries );
90
 
91
- set_transient( 'modula-galleries-review', $galleries, 6 * HOUR_IN_SECONDS );
92
 
93
  return $galleries;
94
 
@@ -99,7 +99,7 @@ class Modula_Review {
99
  $url = sprintf( $this->link, $this->slug );
100
 
101
  ?>
102
- <div id="<?php echo $this->slug ?>-epsilon-review-notice" class="notice notice-success is-dismissible">
103
  <p><?php echo sprintf( wp_kses_post( $this->messages['notice'] ), $this->value ) ; ?></p>
104
  <p class="actions">
105
  <a id="epsilon-rate" href="<?php echo esc_url( $url ) ?>" class="button button-primary epsilon-review-button"><?php echo esc_html( $this->messages['rate'] ); ?></a>
@@ -119,7 +119,7 @@ class Modula_Review {
119
  if ( isset( $_POST['epsilon-review'] ) ) {
120
  $options['givemereview'] = 'already-rated';
121
  }else{
122
- $options['givemereview'] = $this->value;
123
  }
124
 
125
  update_option( 'modula-checks', $options );
19
  $this->value = $this->value();
20
 
21
  $this->messages = array(
22
+ 'notice' => esc_html__( "Hey, I noticed you have installed our plugin for %s day - that's awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress? Just to help us spread the word and boost our motivation.", 'modula-gallery' ),
23
+ 'rate' => esc_html__( 'Ok, you deserve it', 'modula-gallery' ),
24
+ 'rated' => esc_html__( 'I already did', 'modula-gallery' ),
25
+ 'no_rate' => esc_html__( 'No, not good enough', 'modula-gallery' ),
26
  );
27
 
28
  if ( isset( $args['messages'] ) ) {
88
  global $wpdb;
89
  $galleries = $wpdb->get_var( 'SELECT count(Id) FROM ' . $wpdb->ModulaGalleries );
90
 
91
+ set_transient( 'modula-galleries-review', absint($galleries), 6 * HOUR_IN_SECONDS );
92
 
93
  return $galleries;
94
 
99
  $url = sprintf( $this->link, $this->slug );
100
 
101
  ?>
102
+ <div id="<?php echo esc_attr($this->slug) ?>-epsilon-review-notice" class="notice notice-success is-dismissible">
103
  <p><?php echo sprintf( wp_kses_post( $this->messages['notice'] ), $this->value ) ; ?></p>
104
  <p class="actions">
105
  <a id="epsilon-rate" href="<?php echo esc_url( $url ) ?>" class="button button-primary epsilon-review-button"><?php echo esc_html( $this->messages['rate'] ); ?></a>
119
  if ( isset( $_POST['epsilon-review'] ) ) {
120
  $options['givemereview'] = 'already-rated';
121
  }else{
122
+ $options['givemereview'] = absint($this->value);
123
  }
124
 
125
  update_option( 'modula-checks', $options );
lib/db-class.php CHANGED
@@ -19,12 +19,131 @@ class ModulaLiteDB {
19
  return "Test";
20
  }
21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  public function update_config( $id, $config ) {
23
  global $wpdb;
24
 
25
  unset( $config->Id );
26
 
27
- $wpdb->update( $wpdb->ModulaGalleries, array( 'configuration' => $config ), array( 'Id' => $id ) );
 
28
 
29
  }
30
 
@@ -41,7 +160,8 @@ class ModulaLiteDB {
41
 
42
  unset( $data['Id'] );
43
 
44
- $configuration = array( 'Id' => '', 'configuration' => json_encode( $data ) );
 
45
 
46
  $galleryAdded = $wpdb->insert( $wpdb->ModulaGalleries, $configuration );
47
 
@@ -57,16 +177,16 @@ class ModulaLiteDB {
57
  public function deleteGallery( $gid ) {
58
  global $wpdb;
59
 
60
- $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->ModulaImages WHERE gid = %d", $gid ) );
61
- $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->ModulaGalleries WHERE Id = %d", $gid ) );
62
  }
63
 
64
  public function editGallery( $gid, $data ) {
65
  global $wpdb;
66
 
67
- $data = json_encode( $data );
68
- $imageEdited = $wpdb->update( $wpdb->ModulaGalleries, array( 'configuration' => $data ), array( 'Id' => $gid ) );
69
- print_r( $wpdb->last_error );
70
 
71
  return $imageEdited;
72
  }
@@ -74,7 +194,7 @@ class ModulaLiteDB {
74
  public function getIDbyGUID( $guid ) {
75
  global $wpdb;
76
 
77
- return $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid=%s", $guid ) );
78
  }
79
 
80
  public function getGalleryById( $id, $default = null ) {
@@ -111,8 +231,8 @@ class ModulaLiteDB {
111
  public function addImage( $gid, $image ) {
112
  global $wpdb;
113
  $imageAdded = $wpdb->insert( $wpdb->ModulaImages, array(
114
- 'gid' => $gid,
115
- 'imagePath' => $image,
116
  'title' => "",
117
  'description' => "",
118
  'sortOrder' => 0,
@@ -125,15 +245,15 @@ class ModulaLiteDB {
125
  global $wpdb;
126
  foreach ( $images as $image ) {
127
  $imageAdded = $wpdb->insert( $wpdb->ModulaImages, array(
128
- 'gid' => $gid,
129
- 'imagePath' => $image->imagePath,
130
- 'description' => isset( $image->description ) ? $image->description : '',
131
- 'title' => isset( $image->title ) ? $image->title : '',
132
- 'imageId' => $image->imageId,
133
  'sortOrder' => 0,
134
  ) );
135
  $id = $wpdb->insert_id;
136
- $wpdb->update( $wpdb->ModulaImages, array( 'sortOrder' => $id ), array( 'Id' => $id ) );
137
  }
138
 
139
  return true;
@@ -148,7 +268,7 @@ class ModulaLiteDB {
148
 
149
  public function deleteImage( $id ) {
150
  global $wpdb;
151
- if ( $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->ModulaImages WHERE Id = %d", $id ) ) === false ) {
152
  return false;
153
  } else {
154
  return true;
@@ -157,7 +277,7 @@ class ModulaLiteDB {
157
 
158
  public function editImage( $id, $data ) {
159
  global $wpdb;
160
- $imageEdited = $wpdb->update( $wpdb->ModulaImages, $data, array( 'Id' => $id ) );
161
 
162
  //print $wpdb->last_query;
163
  return $imageEdited;
@@ -168,7 +288,7 @@ class ModulaLiteDB {
168
  $index = 1;
169
  foreach ( $ids as $id ) {
170
  $data = array( 'sortOrder' => $index++ );
171
- $wpdb->update( $wpdb->ModulaImages, $data, array( 'Id' => $id ) );
172
  }
173
 
174
  return true;
@@ -176,15 +296,15 @@ class ModulaLiteDB {
176
 
177
  public function getImagesByGalleryId( $gid ) {
178
  global $wpdb;
179
- $e = 22 - 1 - 1;
180
- $imageResults = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->ModulaImages WHERE gid = %d ORDER BY sortOrder ASC LIMIT $e", $gid ) );
181
 
182
  return $imageResults;
183
  }
184
 
185
  public function getGalleryByGalleryId( $gid ) {
186
  global $wpdb;
187
- $gallery = $wpdb->get_results( $wpdb->prepare( "SELECT $wpdb->ModulaGalleries.*, $wpdb->ModulaImages.* FROM $wpdb->ModulaGalleries INNER JOIN $wpdb->ModulaImages ON ($wpdb->ModulaGalleries.Id = $wpdb->ModulaImages.gid) WHERE $wpdb->ModulaGalleries.Id = %d ORDER BY sortOrder ASC", $gid ) );
188
 
189
  return $gallery;
190
  }
19
  return "Test";
20
  }
21
 
22
+ public function sanitize_config( $config ) {
23
+
24
+ if ( ! is_array( $config ) ) {
25
+ $config = json_decode( $config );
26
+ }
27
+
28
+ $fields = array(
29
+ 'name',
30
+ 'description',
31
+ 'width',
32
+ 'height',
33
+ 'img_size',
34
+ 'margin',
35
+ 'randomFactor',
36
+ 'lightbox',
37
+ 'shuffle',
38
+ 'captionColor',
39
+ 'wp_field_caption',
40
+ 'wp_field_title',
41
+ 'hide_title',
42
+ 'hide_description',
43
+ 'captionFontSize',
44
+ 'titleFontSize',
45
+ 'enableTwitter',
46
+ 'enableFacebook',
47
+ 'enableGplus',
48
+ 'enablePinterest',
49
+ 'socialIconColor',
50
+ 'loadedScale',
51
+ 'Effect',
52
+ 'borderSize',
53
+ 'borderRadius',
54
+ 'borderColor',
55
+ 'shadowSize',
56
+ 'shadowColor',
57
+ 'script',
58
+ 'style'
59
+ );
60
+
61
+ $new_config = array();
62
+ $lightbox_values = array( '', 'direct', 'lightbox2' );
63
+ $checkboxes_values = array( 'T', 'F' );
64
+ $effect_values = array( 'none', 'pufrobo' );
65
+ foreach ( $fields as $field ) {
66
+ if ( isset( $config[ $field ] ) ) {
67
+
68
+ switch ( $field ) {
69
+ case 'description':
70
+ $new_config[ $field ] = wp_filter_post_kses( $config[ $field ] );
71
+ break;
72
+
73
+ case 'height':
74
+ case 'img_size':
75
+ case 'margin':
76
+ case 'randomFactor':
77
+ case 'captionFontSize':
78
+ case 'titleFontSize':
79
+ case 'loadedScale':
80
+ case 'borderSize':
81
+ case 'borderRadius':
82
+ case 'shadowSize':
83
+ $new_config[ $field ] = absint( $config[ $field ] );
84
+ break;
85
+
86
+ case 'lightbox' :
87
+ if ( in_array( $config[ $field ], $lightbox_values ) ) {
88
+ $new_config[ $field ] = $config[ $field ];
89
+ }else{
90
+ $new_config[ $field ] = 'lightbox2';
91
+ }
92
+ break;
93
+
94
+ case 'shuffle' :
95
+ if ( in_array( $config[ $field ], $checkboxes_values ) ) {
96
+ $new_config[ $field ] = $config[ $field ];
97
+ }else{
98
+ $new_config[ $field ] = 'F';
99
+ }
100
+ break;
101
+
102
+ case 'enableTwitter' :
103
+ case 'enableFacebook' :
104
+ case 'enableGplus' :
105
+ case 'enablePinterest' :
106
+ if ( in_array( $config[ $field ], $checkboxes_values) ) {
107
+ $new_config[ $field ] = $config[ $field ];
108
+ }else{
109
+ $new_config[ $field ] = 'T';
110
+ }
111
+ break;
112
+
113
+ case 'captionColor':
114
+ case 'socialIconColor':
115
+ case 'borderColor':
116
+ case 'shadowColor':
117
+ $new_config[ $field ] = sanitize_hex_color( $config[ $field ] );
118
+ break;
119
+
120
+ case 'Effect' :
121
+ if ( in_array( $config[ $field ], $effect_values ) ) {
122
+ $new_config[ $field ] = $config[ $field ];
123
+ }else{
124
+ $new_config[ $field ] = 'pufrobo';
125
+ }
126
+ break;
127
+
128
+ default:
129
+ $new_config[ $field ] = sanitize_text_field( $config[ $field ] );
130
+ break;
131
+ }
132
+
133
+ }
134
+
135
+ }
136
+
137
+ return $new_config;
138
+ }
139
+
140
  public function update_config( $id, $config ) {
141
  global $wpdb;
142
 
143
  unset( $config->Id );
144
 
145
+ $config = $this->sanitize_config( $config );
146
+ $wpdb->update( $wpdb->ModulaGalleries, array( 'configuration' => $config ), array( 'Id' => absint($id) ) );
147
 
148
  }
149
 
160
 
161
  unset( $data['Id'] );
162
 
163
+ $config = $this->sanitize_config( $data );
164
+ $configuration = array( 'Id' => '', 'configuration' => json_encode( $config ) );
165
 
166
  $galleryAdded = $wpdb->insert( $wpdb->ModulaGalleries, $configuration );
167
 
177
  public function deleteGallery( $gid ) {
178
  global $wpdb;
179
 
180
+ $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->ModulaImages WHERE gid = %d", absint($gid) ) );
181
+ $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->ModulaGalleries WHERE Id = %d", absint($gid) ) );
182
  }
183
 
184
  public function editGallery( $gid, $data ) {
185
  global $wpdb;
186
 
187
+ $config = $this->sanitize_config( $data );
188
+ $config = json_encode( $config );
189
+ $imageEdited = $wpdb->update( $wpdb->ModulaGalleries, array( 'configuration' => $config ), array( 'Id' => absint($gid) ) );
190
 
191
  return $imageEdited;
192
  }
194
  public function getIDbyGUID( $guid ) {
195
  global $wpdb;
196
 
197
+ return $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid=%s", ($guid) ) );
198
  }
199
 
200
  public function getGalleryById( $id, $default = null ) {
231
  public function addImage( $gid, $image ) {
232
  global $wpdb;
233
  $imageAdded = $wpdb->insert( $wpdb->ModulaImages, array(
234
+ 'gid' => absint($gid),
235
+ 'imagePath' => esc_url_raw($image),
236
  'title' => "",
237
  'description' => "",
238
  'sortOrder' => 0,
245
  global $wpdb;
246
  foreach ( $images as $image ) {
247
  $imageAdded = $wpdb->insert( $wpdb->ModulaImages, array(
248
+ 'gid' => absint( $gid ),
249
+ 'imagePath' => esc_url_raw( $image->imagePath ),
250
+ 'description' => isset( $image->description ) ? wp_filter_post_kses( $image->description ) : '',
251
+ 'title' => isset( $image->title ) ? sanitize_text_field( $image->title ) : '',
252
+ 'imageId' => absint( $image->imageId ),
253
  'sortOrder' => 0,
254
  ) );
255
  $id = $wpdb->insert_id;
256
+ $wpdb->update( $wpdb->ModulaImages, array( 'sortOrder' => absint( $id ) ), array( 'Id' => absint( $id ) ) );
257
  }
258
 
259
  return true;
268
 
269
  public function deleteImage( $id ) {
270
  global $wpdb;
271
+ if ( $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->ModulaImages WHERE Id = %d", absint($id) ) ) === false ) {
272
  return false;
273
  } else {
274
  return true;
277
 
278
  public function editImage( $id, $data ) {
279
  global $wpdb;
280
+ $imageEdited = $wpdb->update( $wpdb->ModulaImages, $data, array( 'Id' => absint($id) ) );
281
 
282
  //print $wpdb->last_query;
283
  return $imageEdited;
288
  $index = 1;
289
  foreach ( $ids as $id ) {
290
  $data = array( 'sortOrder' => $index++ );
291
+ $wpdb->update( $wpdb->ModulaImages, $data, array( 'Id' => absint($id) ) );
292
  }
293
 
294
  return true;
296
 
297
  public function getImagesByGalleryId( $gid ) {
298
  global $wpdb;
299
+ $e = 20;
300
+ $imageResults = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->ModulaImages WHERE gid = %d ORDER BY sortOrder ASC LIMIT $e", absint($gid) ) );
301
 
302
  return $imageResults;
303
  }
304
 
305
  public function getGalleryByGalleryId( $gid ) {
306
  global $wpdb;
307
+ $gallery = $wpdb->get_results( $wpdb->prepare( "SELECT $wpdb->ModulaGalleries.*, $wpdb->ModulaImages.* FROM $wpdb->ModulaGalleries INNER JOIN $wpdb->ModulaImages ON ($wpdb->ModulaGalleries.Id = $wpdb->ModulaImages.gid) WHERE $wpdb->ModulaGalleries.Id = %d ORDER BY sortOrder ASC", absint($id) ) );
308
 
309
  return $gallery;
310
  }
lib/gallery-class.php CHANGED
@@ -136,7 +136,7 @@ if ( ! class_exists( "ModulaLiteFE" ) ) {
136
 
137
  private function getLink( $image ) {
138
  if ( ! empty( $image->link ) ) {
139
- return "href='" . $image->link . "'";
140
  }
141
 
142
  if ( empty( $this->gallery->lightbox ) ) {
@@ -144,7 +144,7 @@ if ( ! class_exists( "ModulaLiteFE" ) ) {
144
  }
145
 
146
  if ( $this->gallery->lightbox == 'attachment-page' ) {
147
- return "href='" . $image->url . "'";
148
  }
149
 
150
  return "href='" . wp_get_attachment_url( $image->imageId ) . "'";
@@ -152,7 +152,7 @@ if ( ! class_exists( "ModulaLiteFE" ) ) {
152
 
153
  private function getTarget( $image ) {
154
  if ( ! empty( $image->target ) ) {
155
- return "target='" . $image->target . "'";
156
  }
157
 
158
  // if($this->gallery->blank == 'T')
@@ -234,43 +234,43 @@ if ( ! class_exists( "ModulaLiteFE" ) ) {
234
  $html .= "<style>";
235
 
236
  if ( $this->gallery->borderSize ) {
237
- $html .= "#jtg-$this->id$rid .item { border: " . $this->gallery->borderSize . "px solid " . $this->gallery->borderColor . "; }";
238
  }
239
 
240
  if ( $this->gallery->borderRadius ) {
241
- $html .= "#jtg-$this->id$rid .item { border-radius: " . $this->gallery->borderRadius . "px; }";
242
  }
243
 
244
  if ( $this->gallery->shadowSize ) {
245
- $html .= "#jtg-$this->id$rid .item { box-shadow: " . $this->gallery->shadowColor . " 0px 0px " . $this->gallery->shadowSize . "px; }";
246
  }
247
 
248
  if ( $this->gallery->socialIconColor ) {
249
- $html .= "#jtg-$this->id$rid .item .jtg-social a { color: " . $this->gallery->socialIconColor . " }";
250
  }
251
 
252
- $html .= "#jtg-$this->id$rid .item .caption { background-color: " . $this->gallery->captionColor . "; }";
253
 
254
- $html .= "#jtg-$this->id$rid .item .figc { color: " . $this->gallery->captionColor . "; font-size: " . $this->gallery->captionFontSize . "px; }";
255
 
256
- $html .= "#jtg-$this->id$rid .item .figc h2.jtg-title { font-size: " . $this->gallery->titleFontSize . "px; }";
257
 
258
- $html .= "#jtg-$this->id$rid .item { transform: scale(" . $gallery->loadedScale / 100 . ") translate(" . $gallery->loadedHSlide . 'px,' . $gallery->loadedVSlide . "px) rotate(" . $gallery->loadedRotate . "deg); }";
259
 
260
- $html .= "#jtg-$this->id$rid .items { width:" . $this->gallery->width . "; height:" . $this->gallery->height . "px; }";
261
 
262
- $html .= "#jtg-$this->id$rid .items .figc p.description { color:" . $this->gallery->captionColor . "; }";
263
 
264
 
265
  if ( strlen( $this->gallery->style ) ) {
266
- $html .= $this->gallery->style;
267
  }
268
 
269
  $html .= "</style>\n";
270
 
271
  $id = $this->id;
272
  $html .= "<a name='$id'> </a>";
273
- $html .= "<div class='modula' id='jtg-$this->id$rid'>";
274
 
275
  $html .= "<div class='items'>";
276
 
@@ -282,7 +282,7 @@ if ( ! class_exists( "ModulaLiteFE" ) ) {
282
  'swipebox',
283
  'lightbox2'
284
  ) ) ? "title" : "data-title";
285
- $rel = $this->gallery->lightbox == "prettyphoto" ? "prettyPhoto[jtg-$this->id$rid]" : "jtg-$this->id$rid";
286
 
287
  $hoverEffect = $this->getHoverEffect( $this->gallery->hoverEffect );
288
 
@@ -298,18 +298,18 @@ if ( ! class_exists( "ModulaLiteFE" ) ) {
298
  $imgUrl = $image->imagePath;
299
  $image->alt = isset( $image->alt ) ? $image->alt : '';
300
 
301
- $html .= "<div class=\"item " . $hasTitle . " effect-" . $hoverEffect->code . "\">";
302
- $html .= "<a $title='$image->description' " . ( $this->gallery->lightbox == "lightbox2" && empty( $image->link ) ? "data-lightbox='$rel'" : "" ) . " rel='$rel' " . $this->getTarget( $image ) . " class='tile-inner " . ( $this->getLightboxClass( $image ) ) . "' " . $this->getLink( $image ) . "></a>";
303
  $html .= "<img data-valign='$image->valign' alt='$image->alt' data-halign='$image->halign' class='pic' src='$imgUrl' data-src='$imgUrl' />";
304
  $html .= "<div class=\"figc\">";
305
  $html .= "<div class=\"figc-inner\">";
306
  if ( $this->gallery->hoverEffect != 'none' && ! empty( $image->title ) && 'T' != $this->gallery->hide_title ) {
307
- $html .= "<h2 class='jtg-title'>" . $image->title . "</h2>";
308
  }
309
 
310
  if ( ( $this->gallery->hoverEffect != 'none' && ! empty( $image->description ) ) && 'T' != $this->gallery->hide_description ) {
311
  $html .= "<p class=\"description\">";
312
- $html .= $image->description;
313
  $html .= "</p>";
314
  }
315
  $html .= "</div>";
@@ -328,8 +328,8 @@ if ( ! class_exists( "ModulaLiteFE" ) ) {
328
  $html .= "onComplete: function () { " . stripslashes( $this->gallery->script ) . "},";
329
  }
330
 
331
- $html .= "resizer: '" . plugins_url( 'modula-best-grid-gallery/image.php', '' ) . "',";
332
- $html .= "margin: " . $this->gallery->margin . ",";
333
  // $html .= "\t\tkeepArea: " . ($this->gallery->keepArea == "T" ? "true" : "false") . ",\n";
334
  $html .= "enableTwitter: " . ( $this->gallery->enableTwitter == "T" ? "true" : "false" ) . ",";
335
  $html .= "enableFacebook: " . ( $this->gallery->enableFacebook == "T" ? "true" : "false" ) . ",";
136
 
137
  private function getLink( $image ) {
138
  if ( ! empty( $image->link ) ) {
139
+ return "href='" . esc_url($image->link) . "'";
140
  }
141
 
142
  if ( empty( $this->gallery->lightbox ) ) {
144
  }
145
 
146
  if ( $this->gallery->lightbox == 'attachment-page' ) {
147
+ return "href='" . esc_url($image->url) . "'";
148
  }
149
 
150
  return "href='" . wp_get_attachment_url( $image->imageId ) . "'";
152
 
153
  private function getTarget( $image ) {
154
  if ( ! empty( $image->target ) ) {
155
+ return "target='" . esc_attr($image->target) . "'";
156
  }
157
 
158
  // if($this->gallery->blank == 'T')
234
  $html .= "<style>";
235
 
236
  if ( $this->gallery->borderSize ) {
237
+ $html .= "#jtg-$this->id$rid .item { border: " . absint($this->gallery->borderSize) . "px solid " . sanitize_hex_color($this->gallery->borderColor) . "; }";
238
  }
239
 
240
  if ( $this->gallery->borderRadius ) {
241
+ $html .= "#jtg-$this->id$rid .item { border-radius: " . absint($this->gallery->borderRadius) . "px; }";
242
  }
243
 
244
  if ( $this->gallery->shadowSize ) {
245
+ $html .= "#jtg-$this->id$rid .item { box-shadow: " . absint($this->gallery->shadowColor) . " 0px 0px " . sanitize_hex_color($this->gallery->shadowSize) . "px; }";
246
  }
247
 
248
  if ( $this->gallery->socialIconColor ) {
249
+ $html .= "#jtg-$this->id$rid .item .jtg-social a { color: " . sanitize_hex_color($this->gallery->socialIconColor) . " }";
250
  }
251
 
252
+ $html .= "#jtg-$this->id$rid .item .caption { background-color: " . sanitize_hex_color($this->gallery->captionColor) . "; }";
253
 
254
+ $html .= "#jtg-$this->id$rid .item .figc { color: " . sanitize_hex_color($this->gallery->captionColor) . "; font-size: " . $this->gallery->captionFontSize . "px; }";
255
 
256
+ $html .= "#jtg-$this->id$rid .item .figc h2.jtg-title { font-size: " . absint($this->gallery->titleFontSize) . "px; }";
257
 
258
+ $html .= "#jtg-$this->id$rid .item { transform: scale(" . absint($gallery->loadedScale) / 100 . ") translate(" . absint($gallery->loadedHSlide) . 'px,' . absint($gallery->loadedVSlide) . "px) rotate(" . absint($gallery->loadedRotate) . "deg); }";
259
 
260
+ $html .= "#jtg-$this->id$rid .items { width:" . esc_html($this->gallery->width) . "; height:" . absint($this->gallery->height) . "px; }";
261
 
262
+ $html .= "#jtg-$this->id$rid .items .figc p.description { color:" . sanitize_hex_color($this->gallery->captionColor) . "; }";
263
 
264
 
265
  if ( strlen( $this->gallery->style ) ) {
266
+ $html .= esc_html($this->gallery->style);
267
  }
268
 
269
  $html .= "</style>\n";
270
 
271
  $id = $this->id;
272
  $html .= "<a name='$id'> </a>";
273
+ $html .= '<div class="modula" id="jtg-' . absint($this->id) . absint($rid) . '">';
274
 
275
  $html .= "<div class='items'>";
276
 
282
  'swipebox',
283
  'lightbox2'
284
  ) ) ? "title" : "data-title";
285
+ $rel = $this->gallery->lightbox == "prettyphoto" ? 'prettyPhoto[jtg-' . esc_attr($this->id) . esc_attr($rid) . ']' : 'jtg-' . esc_attr($this->id) . esc_attr($rid);
286
 
287
  $hoverEffect = $this->getHoverEffect( $this->gallery->hoverEffect );
288
 
298
  $imgUrl = $image->imagePath;
299
  $image->alt = isset( $image->alt ) ? $image->alt : '';
300
 
301
+ $html .= "<div class=\"item " . esc_attr($hasTitle) . " effect-" . esc_attr($hoverEffect->code) . "\">";
302
+ $html .= "<a $title='$image->description' " . ( $this->gallery->lightbox == "lightbox2" && empty( $image->link ) ? "data-lightbox='$rel'" : "" ) . " rel='$rel' " . $this->getTarget( $image ) . " class='tile-inner " . esc_attr( $this->getLightboxClass( $image ) ) . "' " . $this->getLink( $image ) . "></a>";
303
  $html .= "<img data-valign='$image->valign' alt='$image->alt' data-halign='$image->halign' class='pic' src='$imgUrl' data-src='$imgUrl' />";
304
  $html .= "<div class=\"figc\">";
305
  $html .= "<div class=\"figc-inner\">";
306
  if ( $this->gallery->hoverEffect != 'none' && ! empty( $image->title ) && 'T' != $this->gallery->hide_title ) {
307
+ $html .= "<h2 class='jtg-title'>" . esc_html($image->title) . "</h2>";
308
  }
309
 
310
  if ( ( $this->gallery->hoverEffect != 'none' && ! empty( $image->description ) ) && 'T' != $this->gallery->hide_description ) {
311
  $html .= "<p class=\"description\">";
312
+ $html .= wp_kses_post($image->description);
313
  $html .= "</p>";
314
  }
315
  $html .= "</div>";
328
  $html .= "onComplete: function () { " . stripslashes( $this->gallery->script ) . "},";
329
  }
330
 
331
+ $html .= "resizer: '" . plugins_url( 'image.php', dirname(__FILE__) ) . "',";
332
+ $html .= "margin: " . absint($this->gallery->margin) . ",";
333
  // $html .= "\t\tkeepArea: " . ($this->gallery->keepArea == "T" ? "true" : "false") . ",\n";
334
  $html .= "enableTwitter: " . ( $this->gallery->enableTwitter == "T" ? "true" : "false" ) . ",";
335
  $html .= "enableFacebook: " . ( $this->gallery->enableFacebook == "T" ? "true" : "false" ) . ",";