Google Maps Easy - Version 1.11.0

Version Description

Download this release

Release Info

Developer supsystic.com
Plugin Icon 128x128 Google Maps Easy
Version 1.11.0
Comparing to
See all releases

Code changes from version 1.10.1 to 1.11.0

classes/controller.php CHANGED
@@ -140,15 +140,15 @@ abstract class controllerGmp {
140
  $v = trim($v);
141
  if(empty($v)) continue;
142
  if($k == 'text_like') {
143
- $v = sanitize_text_field($v);
144
- $k = sanitize_text_field($k);
145
  $v = $this->_prepareTextLikeSearch( $v );
146
  if(!empty($v)) {
147
  $model->addWhere(array('additionalCondition' => $v));
148
  }
149
  } else {
150
- $v = sanitize_text_field($v);
151
- $k = sanitize_text_field($k);
152
  $model->addWhere(array($k => $v));
153
  }
154
  }
140
  $v = trim($v);
141
  if(empty($v)) continue;
142
  if($k == 'text_like') {
143
+ $v = wp_kses_post(sanitize_text_field($v));
144
+ $k = wp_kses_post(sanitize_text_field($k));
145
  $v = $this->_prepareTextLikeSearch( $v );
146
  if(!empty($v)) {
147
  $model->addWhere(array('additionalCondition' => $v));
148
  }
149
  } else {
150
+ $v = wp_kses_post(sanitize_text_field($v));
151
+ $k = wp_kses_post(sanitize_text_field($k));
152
  $model->addWhere(array($k => $v));
153
  }
154
  }
classes/frame.php CHANGED
@@ -91,7 +91,7 @@ class frameGmp {
91
  }
92
  protected function _initModules() {
93
  if(!empty($this->_modules)) {
94
- foreach($this->_modules as $mod) {
95
  $mod->init();
96
  }
97
  }
91
  }
92
  protected function _initModules() {
93
  if(!empty($this->_modules)) {
94
+ foreach($this->_modules as $key => $mod) {
95
  $mod->init();
96
  }
97
  }
classes/installer.php CHANGED
@@ -255,7 +255,7 @@ class installerGmp {
255
  /**
256
  * Create table for markers
257
  */
258
- if(!dbGmp::exist("gmp_markers")){
259
  dbDelta("CREATE TABLE IF NOT EXISTS `".$wpPrefix."gmp_markers"."` (
260
  `id` int(11) NOT NULL AUTO_INCREMENT,
261
  `title` varchar(125) CHARACTER SET utf8 NOT NULL,
@@ -294,7 +294,22 @@ class installerGmp {
294
  `is_def` tinyint(1) NOT NULL DEFAULT '0',
295
  PRIMARY KEY (`id`)
296
  ) DEFAULT CHARSET=utf8");
297
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
298
 
299
  /**
300
  * Create table for marker groups
@@ -454,4 +469,14 @@ class installerGmp {
454
  update_option($wpPrefix. 'gmp_db_version', GMP_VERSION_PLUGIN);
455
  }
456
  }
 
 
 
 
 
 
 
 
 
 
457
  }
255
  /**
256
  * Create table for markers
257
  */
258
+ if(!dbGmp::exist("gmp_markers")) {
259
  dbDelta("CREATE TABLE IF NOT EXISTS `".$wpPrefix."gmp_markers"."` (
260
  `id` int(11) NOT NULL AUTO_INCREMENT,
261
  `title` varchar(125) CHARACTER SET utf8 NOT NULL,
294
  `is_def` tinyint(1) NOT NULL DEFAULT '0',
295
  PRIMARY KEY (`id`)
296
  ) DEFAULT CHARSET=utf8");
297
+ } else {
298
+ global $wpdb;
299
+ $result = $wpdb->get_row("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{$wpdb->prefix}gmp_icons' AND COLUMN_NAME = 'width'");
300
+ if(!$result) {
301
+ $wpdb->query("ALTER TABLE {$wpdb->prefix}gmp_icons ADD COLUMN `width` MEDIUMINT");
302
+ }
303
+ $result = $wpdb->get_row("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{$wpdb->prefix}gmp_icons' AND COLUMN_NAME = 'height'");
304
+ if(!$result) {
305
+ $wpdb->query("ALTER TABLE {$wpdb->prefix}gmp_icons ADD COLUMN `height` MEDIUMINT");
306
+ }
307
+ $result = $wpdb->get_row("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{$wpdb->prefix}gmp_icons' AND COLUMN_NAME = 'is_def'");
308
+ if(!$result) {
309
+ $wpdb->query("ALTER TABLE {$wpdb->prefix}gmp_icons ADD COLUMN `is_def` tinyint");
310
+ }
311
+ }
312
+
313
 
314
  /**
315
  * Create table for marker groups
469
  update_option($wpPrefix. 'gmp_db_version', GMP_VERSION_PLUGIN);
470
  }
471
  }
472
+ static public function updateIcon() {
473
+ global $wpdb;
474
+ if ($icons = $wpdb->get_results("SELECT id FROM {$wpdb->prefix}gmp_icons WHERE title IN ('marker', 'flag', 'pin', 'star')", ARRAY_A)) {
475
+ if (count($icons) < 45) {
476
+ frameGmp::_()->getModule('icons')->getModel()->setDefaultIcons();
477
+ }
478
+ } else {
479
+ frameGmp::_()->getModule('icons')->getModel()->setDefaultIcons();
480
+ }
481
+ }
482
  }
classes/req.php CHANGED
@@ -19,12 +19,6 @@ class reqGmp {
19
  */
20
 
21
  static public function sanitize_array( &$array, $parentKey = '' ) {
22
- $allowed = '<div><span><pre><p><br><hr><hgroup><h1><h2><h3><h4><h5><h6>
23
- <ul><ol><li><dl><dt><dd><strong><em><b><i><u>
24
- <img><a><abbr><address><blockquote><area><audio><video>
25
- <form><fieldset><label><input><textarea>
26
- <caption><table><tbody><td><tfoot><th><thead><tr>
27
- <iframe><select><option>';
28
  $keys = array('description');
29
  foreach ($array as $key => &$value) {
30
  if (in_array($key, $keys)) {
@@ -34,12 +28,12 @@ class reqGmp {
34
  $value = wp_kses_post($value);
35
  }
36
  } else {
37
- $value = strip_tags($value, $allowed);
38
  }
39
  }
40
  } else {
41
  if( !is_array($value) ) {
42
- $value = sanitize_text_field($value);
43
  } else {
44
  self::sanitize_array($value);
45
  }
19
  */
20
 
21
  static public function sanitize_array( &$array, $parentKey = '' ) {
 
 
 
 
 
 
22
  $keys = array('description');
23
  foreach ($array as $key => &$value) {
24
  if (in_array($key, $keys)) {
28
  $value = wp_kses_post($value);
29
  }
30
  } else {
31
+ $value = wp_kses_post($value, $allowed);
32
  }
33
  }
34
  } else {
35
  if( !is_array($value) ) {
36
+ $value = wp_kses_post(sanitize_text_field($value));
37
  } else {
38
  self::sanitize_array($value);
39
  }
config.php CHANGED
@@ -49,7 +49,7 @@
49
  define('GMP_EOL', "\n");
50
 
51
  define('GMP_PLUGIN_INSTALLED', true);
52
- define('GMP_VERSION_PLUGIN', '1.10.1'); //GMP_VERSION is pre-defined constant for PHP GMP module http://php.net/manual/en/book.gmp.php
53
  define('GMP_USER', 'user');
54
 
55
  define('GMP_CLASS_PREFIX', 'gmpc');
49
  define('GMP_EOL', "\n");
50
 
51
  define('GMP_PLUGIN_INSTALLED', true);
52
+ define('GMP_VERSION_PLUGIN', '1.11.0'); //GMP_VERSION is pre-defined constant for PHP GMP module http://php.net/manual/en/book.gmp.php
53
  define('GMP_USER', 'user');
54
 
55
  define('GMP_CLASS_PREFIX', 'gmpc');
gmp.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Easy Google Maps
4
  * Plugin URI: https://supsystic.com/plugins/google-maps-plugin/
5
  * Description: The easiest way to create Google Map with markers or locations. Display any data on the map: text, images, videos. Custom map marker icons
6
- * Version: 1.10.1
7
  * Author: supsystic.com
8
  * Author URI: https://supsystic.com
9
  * Text Domain: google-maps-easy
@@ -56,5 +56,6 @@
56
  frameGmp::_()->parseRoute();
57
  frameGmp::_()->init();
58
  frameGmp::_()->exec();
 
59
 
60
  //var_dump(frameGmp::_()->getActivationErrors()); exit();
3
  * Plugin Name: Easy Google Maps
4
  * Plugin URI: https://supsystic.com/plugins/google-maps-plugin/
5
  * Description: The easiest way to create Google Map with markers or locations. Display any data on the map: text, images, videos. Custom map marker icons
6
+ * Version: 1.11.0
7
  * Author: supsystic.com
8
  * Author URI: https://supsystic.com
9
  * Text Domain: google-maps-easy
56
  frameGmp::_()->parseRoute();
57
  frameGmp::_()->init();
58
  frameGmp::_()->exec();
59
+ installerGmp::updateIcon();
60
 
61
  //var_dump(frameGmp::_()->getActivationErrors()); exit();
js/common.js CHANGED
@@ -19,7 +19,7 @@ jQuery.fn.clearForm = function() {
19
  this.value = '';
20
  else if (type == 'checkbox' || type == 'radio')
21
  this.checked = false;
22
- else if (tag == 'select')
23
  this.selectedIndex = -1;
24
  });
25
  }
@@ -77,7 +77,7 @@ jQuery.fn.serializeAssoc = function() {
77
  };
78
  } else {
79
  data[subName][subKey] = obj.value;
80
- };
81
  } else {
82
  if( data[obj.name] ) {
83
  if( jQuery.isArray( data[obj.name] ) ) {
@@ -93,16 +93,16 @@ jQuery.fn.serializeAssoc = function() {
93
  });
94
  return data;
95
  };
96
- function str_replace(haystack, needle, replacement) {
97
- var temp = haystack.split(needle);
98
- return temp.join(replacement);
99
  }
100
  /**
101
  * @see php html::nameToClassId($name) method
102
  **/
103
  function nameToClassId(name) {
104
  return str_replace(
105
- str_replace(name, ']', ''),
106
  '[', ''
107
  );
108
  }
@@ -338,7 +338,7 @@ function toeListableGmp(params) {
338
  this.page = this.params.page;
339
  this.pagingCallback = this.params.pagingCallback;
340
  var self = this;
341
-
342
  this.draw = function(list, count) {
343
  this.table.find('tr').not('.gmpExample, .gmpTblHeader').remove();
344
  var exampleRow = this.table.find('.gmpExample');
@@ -557,13 +557,13 @@ function replaceWords(html, words) {
557
  function toeSelectText(element) {
558
  var doc = document
559
  , text = jQuery(element).get(0)
560
- , range, selection;
561
  if (doc.body.createTextRange) { //ms
562
  range = doc.body.createTextRange();
563
  range.moveToElementText(text);
564
  range.select();
565
  } else if (window.getSelection) { //all others
566
- selection = window.getSelection();
567
  range = doc.createRange();
568
  range.selectNodeContents(text);
569
  selection.removeAllRanges();
@@ -592,7 +592,7 @@ function gmpStrToMs(strDate) {
592
  if(dateHours.length == 2) {
593
  strDate = dateHours[0]+ ' ';
594
  var hms = dateHours[1].split(':');
595
-
596
  for(var i = 0; i < 3; i++) {
597
  strDate += hms[ i ] ? hms[ i ] : '00';
598
  if(i < 2)
@@ -612,4 +612,4 @@ function twoArraysContainSameValue (arr1, arr2) {
612
  });
613
  }
614
  // Simulates PHP's date function
615
- Date.prototype.format=function(e){var t="";var n=Date.replaceChars;for(var r=0;r<e.length;r++){var i=e.charAt(r);if(r-1>=0&&e.charAt(r-1)=="\\"){t+=i}else if(n[i]){t+=n[i].call(this)}else if(i!="\\"){t+=i}}return t};Date.replaceChars={shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longMonths:["January","February","March","April","May","June","July","August","September","October","November","December"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longDays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],d:function(){return(this.getDate()<10?"0":"")+this.getDate()},D:function(){return Date.replaceChars.shortDays[this.getDay()]},j:function(){return this.getDate()},l:function(){return Date.replaceChars.longDays[this.getDay()]},N:function(){return this.getDay()+1},S:function(){return this.getDate()%10==1&&this.getDate()!=11?"st":this.getDate()%10==2&&this.getDate()!=12?"nd":this.getDate()%10==3&&this.getDate()!=13?"rd":"th"},w:function(){return this.getDay()},z:function(){var e=new Date(this.getFullYear(),0,1);return Math.ceil((this-e)/864e5)},W:function(){var e=new Date(this.getFullYear(),0,1);return Math.ceil(((this-e)/864e5+e.getDay()+1)/7)},F:function(){return Date.replaceChars.longMonths[this.getMonth()]},m:function(){return(this.getMonth()<9?"0":"")+(this.getMonth()+1)},M:function(){return Date.replaceChars.shortMonths[this.getMonth()]},n:function(){return this.getMonth()+1},t:function(){var e=new Date;return(new Date(e.getFullYear(),e.getMonth(),0)).getDate()},L:function(){var e=this.getFullYear();return e%400==0||e%100!=0&&e%4==0},o:function(){var e=new Date(this.valueOf());e.setDate(e.getDate()-(this.getDay()+6)%7+3);return e.getFullYear()},Y:function(){return this.getFullYear()},y:function(){return(""+this.getFullYear()).substr(2)},a:function(){return this.getHours()<12?"am":"pm"},A:function(){return this.getHours()<12?"AM":"PM"},B:function(){return Math.floor(((this.getUTCHours()+1)%24+this.getUTCMinutes()/60+this.getUTCSeconds()/3600)*1e3/24)},g:function(){return this.getHours()%12||12},G:function(){return this.getHours()},h:function(){return((this.getHours()%12||12)<10?"0":"")+(this.getHours()%12||12)},H:function(){return(this.getHours()<10?"0":"")+this.getHours()},i:function(){return(this.getMinutes()<10?"0":"")+this.getMinutes()},s:function(){return(this.getSeconds()<10?"0":"")+this.getSeconds()},u:function(){var e=this.getMilliseconds();return(e<10?"00":e<100?"0":"")+e},e:function(){return"Not Yet Supported"},I:function(){var e=null;for(var t=0;t<12;++t){var n=new Date(this.getFullYear(),t,1);var r=n.getTimezoneOffset();if(e===null)e=r;else if(r<e){e=r;break}else if(r>e)break}return this.getTimezoneOffset()==e|0},O:function(){return(-this.getTimezoneOffset()<0?"-":"+")+(Math.abs(this.getTimezoneOffset()/60)<10?"0":"")+Math.abs(this.getTimezoneOffset()/60)+"00"},P:function(){return(-this.getTimezoneOffset()<0?"-":"+")+(Math.abs(this.getTimezoneOffset()/60)<10?"0":"")+Math.abs(this.getTimezoneOffset()/60)+":00"},T:function(){var e=this.getMonth();this.setMonth(0);var t=this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/,"$1");this.setMonth(e);return t},Z:function(){return-this.getTimezoneOffset()*60},c:function(){return this.format("Y-m-d\\TH:i:sP")},r:function(){return this.toString()},U:function(){return this.getTime()/1e3}}
19
  this.value = '';
20
  else if (type == 'checkbox' || type == 'radio')
21
  this.checked = false;
22
+ else if (tag == 'select')
23
  this.selectedIndex = -1;
24
  });
25
  }
77
  };
78
  } else {
79
  data[subName][subKey] = obj.value;
80
+ };
81
  } else {
82
  if( data[obj.name] ) {
83
  if( jQuery.isArray( data[obj.name] ) ) {
93
  });
94
  return data;
95
  };
96
+ function str_replace(haystack, needle, replacement) {
97
+ var temp = haystack.split(needle);
98
+ return temp.join(replacement);
99
  }
100
  /**
101
  * @see php html::nameToClassId($name) method
102
  **/
103
  function nameToClassId(name) {
104
  return str_replace(
105
+ str_replace(name, ']', ''),
106
  '[', ''
107
  );
108
  }
338
  this.page = this.params.page;
339
  this.pagingCallback = this.params.pagingCallback;
340
  var self = this;
341
+
342
  this.draw = function(list, count) {
343
  this.table.find('tr').not('.gmpExample, .gmpTblHeader').remove();
344
  var exampleRow = this.table.find('.gmpExample');
557
  function toeSelectText(element) {
558
  var doc = document
559
  , text = jQuery(element).get(0)
560
+ , range, selection;
561
  if (doc.body.createTextRange) { //ms
562
  range = doc.body.createTextRange();
563
  range.moveToElementText(text);
564
  range.select();
565
  } else if (window.getSelection) { //all others
566
+ selection = window.getSelection();
567
  range = doc.createRange();
568
  range.selectNodeContents(text);
569
  selection.removeAllRanges();
592
  if(dateHours.length == 2) {
593
  strDate = dateHours[0]+ ' ';
594
  var hms = dateHours[1].split(':');
595
+
596
  for(var i = 0; i < 3; i++) {
597
  strDate += hms[ i ] ? hms[ i ] : '00';
598
  if(i < 2)
612
  });
613
  }
614
  // Simulates PHP's date function
615
+ Date.prototype.format=function(e){var t="";var n=Date.replaceChars;for(var r=0;r<e.length;r++){var i=e.charAt(r);if(r-1>=0&&e.charAt(r-1)=="\\"){t+=i}else if(n[i]){t+=n[i].call(this)}else if(i!="\\"){t+=i}}return t};Date.replaceChars={shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longMonths:["January","February","March","April","May","June","July","August","September","October","November","December"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longDays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],d:function(){return(this.getDate()<10?"0":"")+this.getDate()},D:function(){return Date.replaceChars.shortDays[this.getDay()]},j:function(){return this.getDate()},l:function(){return Date.replaceChars.longDays[this.getDay()]},N:function(){return this.getDay()+1},S:function(){return this.getDate()%10==1&&this.getDate()!=11?"st":this.getDate()%10==2&&this.getDate()!=12?"nd":this.getDate()%10==3&&this.getDate()!=13?"rd":"th"},w:function(){return this.getDay()},z:function(){var e=new Date(this.getFullYear(),0,1);return Math.ceil((this-e)/864e5)},W:function(){var e=new Date(this.getFullYear(),0,1);return Math.ceil(((this-e)/864e5+e.getDay()+1)/7)},F:function(){return Date.replaceChars.longMonths[this.getMonth()]},m:function(){return(this.getMonth()<9?"0":"")+(this.getMonth()+1)},M:function(){return Date.replaceChars.shortMonths[this.getMonth()]},n:function(){return this.getMonth()+1},t:function(){var e=new Date;return(new Date(e.getFullYear(),e.getMonth(),0)).getDate()},L:function(){var e=this.getFullYear();return e%400==0||e%100!=0&&e%4==0},o:function(){var e=new Date(this.valueOf());e.setDate(e.getDate()-(this.getDay()+6)%7+3);return e.getFullYear()},Y:function(){return this.getFullYear()},y:function(){return(""+this.getFullYear()).substr(2)},a:function(){return this.getHours()<12?"am":"pm"},A:function(){return this.getHours()<12?"AM":"PM"},B:function(){return Math.floor(((this.getUTCHours()+1)%24+this.getUTCMinutes()/60+this.getUTCSeconds()/3600)*1e3/24)},g:function(){return this.getHours()%12||12},G:function(){return this.getHours()},h:function(){return((this.getHours()%12||12)<10?"0":"")+(this.getHours()%12||12)},H:function(){return(this.getHours()<10?"0":"")+this.getHours()},i:function(){return(this.getMinutes()<10?"0":"")+this.getMinutes()},s:function(){return(this.getSeconds()<10?"0":"")+this.getSeconds()},u:function(){var e=this.getMilliseconds();return(e<10?"00":e<100?"0":"")+e},e:function(){return"Not Yet Supported"},I:function(){var e=null;for(var t=0;t<12;++t){var n=new Date(this.getFullYear(),t,1);var r=n.getTimezoneOffset();if(e===null)e=r;else if(r<e){e=r;break}else if(r>e)break}return this.getTimezoneOffset()==e|0},O:function(){return(-this.getTimezoneOffset()<0?"-":"+")+(Math.abs(this.getTimezoneOffset()/60)<10?"0":"")+Math.abs(this.getTimezoneOffset()/60)+"00"},P:function(){return(-this.getTimezoneOffset()<0?"-":"+")+(Math.abs(this.getTimezoneOffset()/60)<10?"0":"")+Math.abs(this.getTimezoneOffset()/60)+":00"},T:function(){var e=this.getMonth();this.setMonth(0);var t=this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/,"$1");this.setMonth(e);return t},Z:function(){return-this.getTimezoneOffset()*60},c:function(){return this.format("Y-m-d\\TH:i:sP")},r:function(){return this.toString()},U:function(){return this.getTime()/1e3}}
modules/gmap/controller.php CHANGED
@@ -221,9 +221,10 @@ class gmapControllerGmp extends controllerGmp {
221
  $res->ignoreShellData();
222
  $model = $this->getModel();
223
  $page = (int)sanitize_text_field(reqGmp::getVar('page'));
 
224
  $rowsLimit = (int)sanitize_text_field(reqGmp::getVar('rows'));
225
  $search = reqGmp::getVar('search');
226
- $search = !empty($search['text_like']) ? sanitize_text_field($search['text_like']) : '';
227
  $totalCount = $model->getTotalCountBySearch($search);
228
  $totalPages = 0;
229
  if ($totalCount > 0) {
@@ -234,7 +235,7 @@ class gmapControllerGmp extends controllerGmp {
234
  }
235
  $limitStart = $rowsLimit * $page - $rowsLimit;
236
  if ($limitStart < 0) $limitStart = 0;
237
- $data = $model->getListForTblBySearch($search, $limitStart, $rowsLimit);
238
  $data = $this->_prepareListForTbl($data);
239
  $res->addData('page', $page);
240
  $res->addData('total', $totalPages);
221
  $res->ignoreShellData();
222
  $model = $this->getModel();
223
  $page = (int)sanitize_text_field(reqGmp::getVar('page'));
224
+ $sord = wp_kses_post(sanitize_text_field(reqGmp::getVar('sord')));
225
  $rowsLimit = (int)sanitize_text_field(reqGmp::getVar('rows'));
226
  $search = reqGmp::getVar('search');
227
+ $search = !empty($search['text_like']) ? wp_kses_post(sanitize_text_field($search['text_like'])) : '';
228
  $totalCount = $model->getTotalCountBySearch($search);
229
  $totalPages = 0;
230
  if ($totalCount > 0) {
235
  }
236
  $limitStart = $rowsLimit * $page - $rowsLimit;
237
  if ($limitStart < 0) $limitStart = 0;
238
+ $data = $model->getListForTblBySearch($search, $limitStart, $rowsLimit, $sord);
239
  $data = $this->_prepareListForTbl($data);
240
  $res->addData('page', $page);
241
  $res->addData('total', $totalPages);
modules/gmap/js/admin.gmap.edit.js CHANGED
@@ -178,6 +178,7 @@ jQuery(document).ready(function(){
178
  jQuery('#gmpMapForm input[name="map_opts[id]"]').val( res.data.map_id );
179
 
180
  // Update Markers table link
 
181
  var mrParams = URLToArray(gmpMarkersTblDataUrl)
182
  , newMarkersTblUrl = gmpMarkersTblDataUrl.substring(0, gmpMarkersTblDataUrl.indexOf('?') + 1);
183
 
@@ -816,7 +817,7 @@ function gmpToggleSubOptionsByDataParam(value) {
816
  subHeight.hide();
817
  } else {
818
  subHeight.show();
819
- }
820
  }
821
  function gmpWpColorpickerUpdateTitlesColor(color) {
822
  g_gmpMarkerTitleColorTimeoutSet = false;
@@ -878,4 +879,4 @@ function gm_authFailure() {
878
  }
879
  });
880
  g_gmpMapAuthorizationFailWnd.dialog('open');
881
- }
178
  jQuery('#gmpMapForm input[name="map_opts[id]"]').val( res.data.map_id );
179
 
180
  // Update Markers table link
181
+ gmpMarkersTblDataUrl = gmpMarkersTblDataUrl[0];
182
  var mrParams = URLToArray(gmpMarkersTblDataUrl)
183
  , newMarkersTblUrl = gmpMarkersTblDataUrl.substring(0, gmpMarkersTblDataUrl.indexOf('?') + 1);
184
 
817
  subHeight.hide();
818
  } else {
819
  subHeight.show();
820
+ }
821
  }
822
  function gmpWpColorpickerUpdateTitlesColor(color) {
823
  g_gmpMarkerTitleColorTimeoutSet = false;
879
  }
880
  });
881
  g_gmpMapAuthorizationFailWnd.dialog('open');
882
+ }
modules/gmap/models/gmap.php CHANGED
@@ -39,7 +39,7 @@ class gmapModelGmp extends modelGmp {
39
  }
40
  if($map['params'] && isset($map['params']['center_on_cur_user_pos_icon'])) {
41
  $icon_data = frameGmp::_()->getModule('icons')->getModel()->getIconFromId($map['params']['center_on_cur_user_pos_icon']);
42
- $map['params']['center_on_cur_user_pos_icon_path'] = $icon_data['path'];
43
  }
44
  // This is for posibility to show multy maps with same ID on one page
45
  $map['original_id'] = $map['id'];
@@ -444,13 +444,39 @@ class gmapModelGmp extends modelGmp {
444
  }
445
  return $count;
446
  }
447
- public function getListForTblBySearch($search, $limitStart, $rowsLimit) {
448
  global $wpdb;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
449
  if (!empty($search)) {
450
- $data = $wpdb->get_results("SELECT id, title, create_date FROM {$wpdb->prefix}gmp_maps WHERE " . $wpdb->prepare(" (id = %s OR title = %s) ORDER BY id ASC LIMIT %1s,%1s", $search, $search, (int)$limitStart, (int)$rowsLimit) , ARRAY_A);
451
  }
452
  else {
453
- $data = $wpdb->get_results("SELECT id, title, create_date FROM {$wpdb->prefix}gmp_maps " . $wpdb->prepare(" ORDER BY id ASC LIMIT %1s,%1s", (int)$limitStart, (int)$rowsLimit) , ARRAY_A);
454
  }
455
  return $data;
456
  }
39
  }
40
  if($map['params'] && isset($map['params']['center_on_cur_user_pos_icon'])) {
41
  $icon_data = frameGmp::_()->getModule('icons')->getModel()->getIconFromId($map['params']['center_on_cur_user_pos_icon']);
42
+ $map['params']['center_on_cur_user_pos_icon_path'] = !empty($icon_data['path']) ? $icon_data['path'] : '';
43
  }
44
  // This is for posibility to show multy maps with same ID on one page
45
  $map['original_id'] = $map['id'];
444
  }
445
  return $count;
446
  }
447
+ public function getListForTblBySearch($search, $limitStart, $rowsLimit, $sort = 'desc', $sidx = 'id') {
448
  global $wpdb;
449
+ $sort = strtolower($sort);
450
+ $sortF = '';
451
+ switch ($sort) {
452
+ case 'desc':
453
+ $sortF = 'DESC';
454
+ break;
455
+ case 'asc':
456
+ $sortF = 'ASC';
457
+ break;
458
+ }
459
+ $sidx = strtolower($sidx);
460
+ $sidxF = '';
461
+ switch ($sidx) {
462
+ case 'id':
463
+ $sidxF = 'id';
464
+ break;
465
+ case 'title':
466
+ $sidxF = 'title';
467
+ break;
468
+ case 'create_date':
469
+ $sidxF = 'create_date';
470
+ break;
471
+ }
472
+ $order = $wpdb->prepare(" ORDER BY %1s %1s", $sidxF, $sortF);
473
+ $limit = $wpdb->prepare(" LIMIT %1s,%1s", (int)$limitStart, (int)$rowsLimit);
474
+
475
  if (!empty($search)) {
476
+ $data = $wpdb->get_results("SELECT id, title, create_date FROM {$wpdb->prefix}gmp_maps WHERE " . $wpdb->prepare(" (id = %s OR title = %s) ", $search, $search) . $order . $limit , ARRAY_A);
477
  }
478
  else {
479
+ $data = $wpdb->get_results("SELECT id, title, create_date FROM {$wpdb->prefix}gmp_maps " . $order . $limit , ARRAY_A);
480
  }
481
  return $data;
482
  }
modules/gmap/views/tpl/gmapEditMap.php CHANGED
@@ -2208,7 +2208,7 @@
2208
  <div id="gmpIconsWnd" style="display: none;">
2209
  <ul class="iconsList">
2210
  <?php foreach($this->icons as $icon) { ?>
2211
- <?php if( intval($icon['id']) > 47):?>
2212
  <li class="previewIcon" data-id="<?php echo esc_attr($icon['id'])?>" title="<?php echo esc_attr($icon['title'])?>">
2213
  <img src="<?php echo esc_attr($icon['path'])?>" ><i class="fa fa-times" aria-hidden="true"></i>
2214
  </li>
2208
  <div id="gmpIconsWnd" style="display: none;">
2209
  <ul class="iconsList">
2210
  <?php foreach($this->icons as $icon) { ?>
2211
+ <?php if ( !in_array($icon['title'], array('marker','flag','pin','star'), true) ) :?>
2212
  <li class="previewIcon" data-id="<?php echo esc_attr($icon['id'])?>" title="<?php echo esc_attr($icon['title'])?>">
2213
  <img src="<?php echo esc_attr($icon['path'])?>" ><i class="fa fa-times" aria-hidden="true"></i>
2214
  </li>
modules/icons/mod.php CHANGED
@@ -1,17 +1,17 @@
1
  <?php
2
- class iconsGmp extends moduleGmp {
3
  public function init(){
4
  parent::init();
5
  add_filter('upload_mimes', array($this, 'addMimeTypes'));
6
- $this->getModel()->checkDefIcons();
7
  /*if(frameGmp::_()->isAdminPlugPage()){
8
  $gmpExistsIcons = $this->getModel()->getIcons();
9
  frameGmp::_()->addJSVar('iconOpts', 'gmpExistsIcons', $gmpExistsIcons);
10
- frameGmp::_()->addScript('iconOpts', $this->getModPath() .'js/iconOpts.js');
11
  }*/
12
  }
13
  function addMimeTypes($mimes) {
14
  $mimes['svg'] = 'image/svg+xml';
15
  return $mimes;
16
  }
17
- }
1
  <?php
2
+ class iconsGmp extends moduleGmp {
3
  public function init(){
4
  parent::init();
5
  add_filter('upload_mimes', array($this, 'addMimeTypes'));
6
+ //$this->getModel()->checkDefIcons();
7
  /*if(frameGmp::_()->isAdminPlugPage()){
8
  $gmpExistsIcons = $this->getModel()->getIcons();
9
  frameGmp::_()->addJSVar('iconOpts', 'gmpExistsIcons', $gmpExistsIcons);
10
+ frameGmp::_()->addScript('iconOpts', $this->getModPath() .'js/iconOpts.js');
11
  }*/
12
  }
13
  function addMimeTypes($mimes) {
14
  $mimes['svg'] = 'image/svg+xml';
15
  return $mimes;
16
  }
17
+ }
modules/icons/models/icons.php CHANGED
@@ -6,12 +6,7 @@ class iconsModelGmp extends modelGmp {
6
  self::$tableObj= frameGmp::_()->getTable("icons");
7
  }
8
  }*/
9
- public function checkDefIcons() {
10
- //delete_option(GMP_CODE. '_def_icons_installed');
11
- if(!get_option(GMP_CODE. '_def_icons_installed') ){
12
- $this->setDefaultIcons();
13
- }
14
- }
15
  public function getIconsByIds($ids) {
16
  //$icons = frameGmp::_()->getTable('icons')->get('*', array('additionalCondition' => 'id IN ('. implode(',', $ids). ')'));
17
  global $wpdb;
@@ -56,13 +51,18 @@ class iconsModelGmp extends modelGmp {
56
  }
57
  $size = $this->_getIconSize($url);
58
  $tableName = $wpdb->prefix . "gmp_icons";
59
- return $wpdb->insert($tableName, array(
60
  'path' => $url,
61
  'title' => $params['title'],
62
  'description' => $params['description'],
63
  'width' => (int)$size[0],
64
  'height' => (int)$size[1],
65
  ));
 
 
 
 
 
66
  // return frameGmp::_()->getTable('icons')->insert(array(
67
  // 'path' => $url,
68
  // 'title' => $params['title'],
6
  self::$tableObj= frameGmp::_()->getTable("icons");
7
  }
8
  }*/
9
+
 
 
 
 
 
10
  public function getIconsByIds($ids) {
11
  //$icons = frameGmp::_()->getTable('icons')->get('*', array('additionalCondition' => 'id IN ('. implode(',', $ids). ')'));
12
  global $wpdb;
51
  }
52
  $size = $this->_getIconSize($url);
53
  $tableName = $wpdb->prefix . "gmp_icons";
54
+ $res = $wpdb->insert($tableName, array(
55
  'path' => $url,
56
  'title' => $params['title'],
57
  'description' => $params['description'],
58
  'width' => (int)$size[0],
59
  'height' => (int)$size[1],
60
  ));
61
+ if ($res) {
62
+ return $dbResId = $wpdb->insert_id;
63
+ } else {
64
+ return $res;
65
+ }
66
  // return frameGmp::_()->getTable('icons')->insert(array(
67
  // 'path' => $url,
68
  // 'title' => $params['title'],
modules/marker/controller.php CHANGED
@@ -159,7 +159,8 @@ class markerControllerGmp extends controllerGmp {
159
  $markersIds['markers_list'][] = $data[$i]['id'];
160
 
161
  // Marker Icon Image
162
- $icon = '<div class="egm-marker-icon"><img src="'. $data[$i]['icon_data']['path'] .'" /></div>';
 
163
  $data[$i]['icon_img'] = preg_replace('/\s\s+/', ' ', trim($icon));
164
 
165
  // Marker Coordinates
159
  $markersIds['markers_list'][] = $data[$i]['id'];
160
 
161
  // Marker Icon Image
162
+ $path = !empty($data[$i]['icon_data']['path']) ? $data[$i]['icon_data']['path'] : '';
163
+ $icon = '<div class="egm-marker-icon"><img src="'. $path .'" /></div>';
164
  $data[$i]['icon_img'] = preg_replace('/\s\s+/', ' ', trim($icon));
165
 
166
  // Marker Coordinates
modules/marker/models/marker.php CHANGED
@@ -167,7 +167,7 @@ class markerModelGmp extends modelGmp {
167
 
168
  if($dbRes) {
169
  if(!$update) {
170
- $id = $dbRes;
171
  }
172
  do_action('gmp_save_lang_data', array(
173
  'type' => 'markers',
167
 
168
  if($dbRes) {
169
  if(!$update) {
170
+ $id = $dbResId;
171
  }
172
  do_action('gmp_save_lang_data', array(
173
  'type' => 'markers',
modules/supsystic_promo/css/admin.featured-plugins.css CHANGED
@@ -3,7 +3,7 @@
3
  -moz-box-sizing: border-box;
4
  box-sizing: border-box;
5
  }
6
- #supsystic-featured-plugins {
7
  font-family: Montserrat, Hind-Regular, sans-serif;
8
  font-style: normal;
9
  font-weight: 400;
@@ -272,6 +272,9 @@
272
  font-size: 15px !important;
273
  padding: 5px 38px !important;
274
  }
 
 
 
275
  @media only screen and (max-width:991px) {
276
  .supsysticPageBundleContainer .bundle-btn {
277
  margin-top: 20px;
3
  -moz-box-sizing: border-box;
4
  box-sizing: border-box;
5
  }
6
+ #supsystic-featured-plugins {
7
  font-family: Montserrat, Hind-Regular, sans-serif;
8
  font-style: normal;
9
  font-weight: 400;
272
  font-size: 15px !important;
273
  padding: 5px 38px !important;
274
  }
275
+ .text-center {
276
+ text-align:center !important;
277
+ }
278
  @media only screen and (max-width:991px) {
279
  .supsysticPageBundleContainer .bundle-btn {
280
  margin-top: 20px;
modules/supsystic_promo/views/supsystic_promo.php CHANGED
@@ -104,15 +104,12 @@ class supsystic_promoViewGmp extends viewGmp {
104
  array('label' => __('Popup Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'popup-plugin/', 'img' => $imgUrl . 'Popup_256.png', 'desc' => __('The Best WordPress PopUp option plugin to help you gain more subscribers, social followers or advertisement. Responsive pop-ups with friendly options.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'popup-by-supsystic.zip'),
105
  array('label' => __('Photo Gallery Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'photo-gallery/', 'img' => $imgUrl . 'Gallery_256.png', 'desc' => __('Photo Gallery Plugin with a great number of layouts will help you to create quality respectable portfolios and image galleries.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'gallery-by-supsystic.zip'),
106
  array('label' => __('Contact Form Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'contact-form-plugin/', 'img' => $imgUrl . 'Contact_Form_256.png', 'desc' => __('One of the best plugin for creating Contact Forms on your WordPress site. Changeable fonts, backgrounds, an option for adding fields etc.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'contact-form-by-supsystic.zip'),
107
- array('label' => __('Newsletter Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'newsletter-plugin/', 'img' => $uploadsUrl. '2016/08/icon-256x256.png', 'desc' => __('Supsystic Newsletter plugin for automatic mailing of your letters. You will have no need to control it or send them manually. No coding, hard skills or long hours of customizing are required.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'newsletter-by-supsystic.zip'),
108
- array('label' => __('Membership by Supsystic', GMP_LANG_CODE), 'url' => $pluginsUrl. 'membership-plugin/', 'img' => $uploadsUrl. '2016/09/256.png', 'desc' => __('Create online membership community with custom user profiles, roles, FrontEnd registration and login. Members Directory, activity, groups, messages.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'membership-by-supsystic.zip'),
109
  array('label' => __('Data Tables Generator', GMP_LANG_CODE), 'url' => $pluginsUrl. 'data-tables-generator-plugin/', 'img' => $imgUrl . 'Data_Tables_256.png', 'desc' => __('Create and manage beautiful data tables with custom design. No HTML knowledge is required.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'data-tables-generator-by-supsystic.zip'),
110
  array('label' => __('Slider Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'slider/', 'img' => $imgUrl . 'Slider_256.png', 'desc' => __('Creating slideshows with Slider plugin is fast and easy. Simply select images from your WordPress Media Library, Flickr, Instagram or Facebook, set slide captions, links and SEO fields all from one page.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'slider-by-supsystic.zip'),
111
  array('label' => __('Social Share Buttons', GMP_LANG_CODE), 'url' => $pluginsUrl. 'social-share-plugin/', 'img' => $imgUrl . 'Social_Buttons_256.png', 'desc' => __('Social share buttons to increase social traffic and popularity. Social sharing to Facebook, Twitter and other social networks.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'social-share-buttons-by-supsystic.zip'),
112
  array('label' => __('Live Chat Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'live-chat/', 'img' => $imgUrl . 'Live_Chat_256.png', 'desc' => __('Be closer to your visitors and customers with Live Chat Support by Supsystic. Help you visitors, support them in real-time with exceptional Live Chat WordPress plugin by Supsystic.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'live-chat-by-supsystic.zip'),
113
  array('label' => __('Pricing Table', GMP_LANG_CODE), 'url' => $pluginsUrl. 'pricing-table/', 'img' => $imgUrl . 'Pricing_Table_256.png', 'desc' => __('It\'s never been so easy to create and manage pricing and comparison tables with table builder. Any element of the table can be customise with mouse click.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'pricing-table-by-supsystic.zip'),
114
  array('label' => __('Coming Soon Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'coming-soon-plugin/', 'img' => $imgUrl . 'Coming_Soon_256.png', 'desc' => __('Coming soon page with drag-and-drop builder or under construction | maintenance mode to notify visitors and collects emails.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'coming-soon-by-supsystic.zip'),
115
- array('label' => __('Backup Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'backup-plugin/', 'img' => $imgUrl . 'Backup_256.png', 'desc' => __('Backup and Restore WordPress Plugin by Supsystic provides quick and unhitched DropBox, FTP, Amazon S3, Google Drive backup for your WordPress website.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'backup-by-supsystic.zip'),
116
  array('label' => __('Easy Google Maps', GMP_LANG_CODE), 'url' => $pluginsUrl. 'google-maps-plugin/', 'img' => $imgUrl . 'Google_Maps_256.png', 'desc' => __('Display custom Google Maps. Set markers and locations with text, images, categories and links. Customize google map in a simple and intuitive way.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'google-maps-easy.zip'),
117
  array('label' => __('Digital Publication Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'digital-publication-plugin/', 'img' => $imgUrl . 'Digital_Publication_256.png', 'desc' => __('Digital Publication WordPress Plugin by Supsystic for Magazines, Catalogs, Portfolios. Convert images, posts, PDF to the page flip book.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'digital-publications-by-supsystic.zip'),
118
  ));
@@ -121,7 +118,7 @@ class supsystic_promoViewGmp extends viewGmp {
121
  $this->pluginsList[ $i ]['url'] = $this->pluginsList[ $i ]['url']. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign;
122
  }
123
  }
124
- $this->assign('bundleUrl', $siteUrl. 'product/plugins-bundle/'. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign);
125
  return parent::getContent('featuredPlugins');
126
  }
127
  public function getDiscountMsg($buyLink = '#') {
104
  array('label' => __('Popup Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'popup-plugin/', 'img' => $imgUrl . 'Popup_256.png', 'desc' => __('The Best WordPress PopUp option plugin to help you gain more subscribers, social followers or advertisement. Responsive pop-ups with friendly options.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'popup-by-supsystic.zip'),
105
  array('label' => __('Photo Gallery Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'photo-gallery/', 'img' => $imgUrl . 'Gallery_256.png', 'desc' => __('Photo Gallery Plugin with a great number of layouts will help you to create quality respectable portfolios and image galleries.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'gallery-by-supsystic.zip'),
106
  array('label' => __('Contact Form Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'contact-form-plugin/', 'img' => $imgUrl . 'Contact_Form_256.png', 'desc' => __('One of the best plugin for creating Contact Forms on your WordPress site. Changeable fonts, backgrounds, an option for adding fields etc.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'contact-form-by-supsystic.zip'),
 
 
107
  array('label' => __('Data Tables Generator', GMP_LANG_CODE), 'url' => $pluginsUrl. 'data-tables-generator-plugin/', 'img' => $imgUrl . 'Data_Tables_256.png', 'desc' => __('Create and manage beautiful data tables with custom design. No HTML knowledge is required.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'data-tables-generator-by-supsystic.zip'),
108
  array('label' => __('Slider Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'slider/', 'img' => $imgUrl . 'Slider_256.png', 'desc' => __('Creating slideshows with Slider plugin is fast and easy. Simply select images from your WordPress Media Library, Flickr, Instagram or Facebook, set slide captions, links and SEO fields all from one page.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'slider-by-supsystic.zip'),
109
  array('label' => __('Social Share Buttons', GMP_LANG_CODE), 'url' => $pluginsUrl. 'social-share-plugin/', 'img' => $imgUrl . 'Social_Buttons_256.png', 'desc' => __('Social share buttons to increase social traffic and popularity. Social sharing to Facebook, Twitter and other social networks.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'social-share-buttons-by-supsystic.zip'),
110
  array('label' => __('Live Chat Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'live-chat/', 'img' => $imgUrl . 'Live_Chat_256.png', 'desc' => __('Be closer to your visitors and customers with Live Chat Support by Supsystic. Help you visitors, support them in real-time with exceptional Live Chat WordPress plugin by Supsystic.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'live-chat-by-supsystic.zip'),
111
  array('label' => __('Pricing Table', GMP_LANG_CODE), 'url' => $pluginsUrl. 'pricing-table/', 'img' => $imgUrl . 'Pricing_Table_256.png', 'desc' => __('It\'s never been so easy to create and manage pricing and comparison tables with table builder. Any element of the table can be customise with mouse click.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'pricing-table-by-supsystic.zip'),
112
  array('label' => __('Coming Soon Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'coming-soon-plugin/', 'img' => $imgUrl . 'Coming_Soon_256.png', 'desc' => __('Coming soon page with drag-and-drop builder or under construction | maintenance mode to notify visitors and collects emails.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'coming-soon-by-supsystic.zip'),
 
113
  array('label' => __('Easy Google Maps', GMP_LANG_CODE), 'url' => $pluginsUrl. 'google-maps-plugin/', 'img' => $imgUrl . 'Google_Maps_256.png', 'desc' => __('Display custom Google Maps. Set markers and locations with text, images, categories and links. Customize google map in a simple and intuitive way.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'google-maps-easy.zip'),
114
  array('label' => __('Digital Publication Plugin', GMP_LANG_CODE), 'url' => $pluginsUrl. 'digital-publication-plugin/', 'img' => $imgUrl . 'Digital_Publication_256.png', 'desc' => __('Digital Publication WordPress Plugin by Supsystic for Magazines, Catalogs, Portfolios. Convert images, posts, PDF to the page flip book.', GMP_LANG_CODE), 'download' => $downloadsUrl. 'digital-publications-by-supsystic.zip'),
115
  ));
118
  $this->pluginsList[ $i ]['url'] = $this->pluginsList[ $i ]['url']. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign;
119
  }
120
  }
121
+ $this->assign('bundleUrl', $siteUrl. 'pricing/'. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign);
122
  return parent::getContent('featuredPlugins');
123
  }
124
  public function getDiscountMsg($buyLink = '#') {
readme.txt CHANGED
@@ -5,7 +5,7 @@ Plugin URI: https://supsystic.com/plugins/google-maps-plugin
5
  Donate link: https://supsystic.com/plugins/google-maps-plugin
6
  Tags: google map, map, Google Maps, map markers, location
7
  Tested up to: 5.8
8
- Stable tag: 1.10.1
9
 
10
  Google Maps with markers, locations and clusterization, KML layers and filters. Custom Google map markers with text, images, videos, links.
11
 
@@ -289,6 +289,12 @@ Easy Google Maps Plugin admin area. Add a marker to the google map.
289
 
290
 
291
  == Changelog ==
 
 
 
 
 
 
292
  = Easy Google Map Plugin v1.10.1 / 27.10.2021 =
293
  * Add wp_kses()
294
  * Security fixes
5
  Donate link: https://supsystic.com/plugins/google-maps-plugin
6
  Tags: google map, map, Google Maps, map markers, location
7
  Tested up to: 5.8
8
+ Stable tag: 1.11.0
9
 
10
  Google Maps with markers, locations and clusterization, KML layers and filters. Custom Google map markers with text, images, videos, links.
11
 
289
 
290
 
291
  == Changelog ==
292
+ = Easy Google Map Plugin v1.11.0 / 05.11.2021 =
293
+ * Add fix for wp_kses_post()
294
+ * Add fixes for markers
295
+ * Add fixes for custom icons
296
+ * Any fixes for stability
297
+
298
  = Easy Google Map Plugin v1.10.1 / 27.10.2021 =
299
  * Add wp_kses()
300
  * Security fixes