From f12df531ddc7607659abfd1bffba1e483341057c Mon Sep 17 00:00:00 2001
From: Sayan Datta
Date: Thu, 13 Aug 2020 08:40:44 +0530
Subject: [PATCH] Updated to v1.7.1
---
CHANGELOG.md | 9 ++
assets/js/admin.js | 72 ++++++++-
assets/js/admin.min.js | 2 +-
composer.json | 2 +-
inc/Api/Callbacks/ManagerCallbacks.php | 15 +-
inc/Base/AdminNotice.php | 2 +-
inc/Base/BaseController.php | 2 +-
inc/Base/Enqueue.php | 5 +-
inc/Base/PluginTools.php | 81 ++++++++--
inc/Core/Elementor/Modules/ModifiedDate.php | 2 +-
inc/Core/Elementor/Modules/ModifiedTime.php | 2 +-
inc/Core/Frontend/PostView.php | 8 +-
inc/Core/Frontend/Shortcode.php | 30 +++-
inc/Core/ThemeCompat.php | 16 +-
inc/Pages/Dashboard.php | 2 +-
languages/wp-last-modified-info.pot | 166 ++++++++++++--------
readme.txt | 11 +-
templates/admin.php | 14 +-
wp-last-modified-info.php | 2 +-
19 files changed, 322 insertions(+), 121 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 300c731..e0546d2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,15 @@
# Changelog
All notable changes to this project will be documented in this file.
+## 1.7.1
+Release Date: August 12, 2020
+
+* Added: Some PostView template tags.
+* Added: An option to Copy and Paste plugin settings to Export and Import respectively.
+* Fixed: Astra & GeneratePress Schema Output.
+* Fixed: Elemetor Schema Output.
+* Other minor improvements.
+
## 1.7.0
Release Date: August 11, 2020
diff --git a/assets/js/admin.js b/assets/js/admin.js
index bb4a10f..0232bca 100644
--- a/assets/js/admin.js
+++ b/assets/js/admin.js
@@ -129,7 +129,7 @@ jQuery(document).ready(function ($) {
mdc.close();
var cd = $.dialog({
title: wplmi_admin_L10n.deleting,
- content: wplmi_admin_L10n.process_delete,
+ content: wplmi_admin_L10n.processing,
useBootstrap: false,
draggable: false,
theme: 'material',
@@ -192,6 +192,76 @@ jQuery(document).ready(function ($) {
})
}));
+ $("input.wplmi-copy").on('click',(function(e) {
+ e.preventDefault();
+ var el = $(this);
+ var value = el.val();
+ var action = el.data('action');
+ el.addClass("disabled").val(wplmi_admin_L10n.please_wait);
+ $.post( wplmi_admin_L10n.ajaxurl, { action: action, security: wplmi_admin_L10n.security }, function( response, status ) {
+ if( response.success === true ) {
+ var $temp = $("");
+ $("body").append($temp);
+ $temp.val(response.data.elements).select();
+ document.execCommand("copy");
+ $temp.remove();
+ el.removeClass("disabled").val(value);
+ $(".wplmi-copied").show().delay(1000).fadeOut();
+ }
+ });
+ }));
+
+ $("input.wplmi-paste").on('click',(function(e) {
+ e.preventDefault();
+ var el = $(this);
+ var mdc = $.confirm({
+ title: wplmi_admin_L10n.paste_data,
+ content: '',
+ useBootstrap: false,
+ theme: 'material',
+ animation: 'scale',
+ type: 'green',
+ boxWidth: '40%',
+ draggable: false,
+ scrollToPreviousElement: false,
+ buttons: {
+ confirm: {
+ text: wplmi_admin_L10n.import_btn,
+ action: function () {
+ var settings_data = this.$content.find('#wplmi-settings-data-import').val();
+ if ( ! settings_data ) {
+ alert( 'Please enter valid settings data!' );
+ return false;
+ }
+ console.log( settings_data );
+ mdc.close();
+ $.dialog({
+ title: wplmi_admin_L10n.importing,
+ content: wplmi_admin_L10n.processing,
+ useBootstrap: false,
+ draggable: false,
+ theme: 'material',
+ type: 'orange',
+ closeIcon: false,
+ boxWidth: '25%',
+ scrollToPreviousElement: false,
+ });
+ $.post( wplmi_admin_L10n.ajaxurl, { action: 'wplmi_process_import_plugin_data', settings_data: settings_data, security: wplmi_admin_L10n.security }, function( response, status ) {
+ if( response.success === true ) {
+ window.location.reload();
+ $.cookie('wplmi_active_tab', 'post', { expires: 30 });
+ }
+ });
+ }
+ },
+ close: {
+ text: wplmi_admin_L10n.close_btn,
+ action: function () {}
+ }
+ }
+ })
+ }));
+
$('#wplmi-form .wplmi_row_custom_css').find('.CodeMirror').on('mousedown.codemirror', function() {
var $this = $(this);
$this.addClass( 'large' );
diff --git a/assets/js/admin.min.js b/assets/js/admin.min.js
index a94f1b3..d00c88c 100644
--- a/assets/js/admin.min.js
+++ b/assets/js/admin.min.js
@@ -1 +1 @@
-jQuery(document).ready(function(e){if("undefined"==typeof wplmi_admin_L10n)return!1;for(var t=wp.codeEditor.initialize(e("#wplmi_display_info"),wplmi_admin_L10n.html_editor),i=wp.codeEditor.initialize(e("#wplmi_custom_css"),wplmi_admin_L10n.css_editor),a=wp.codeEditor.initialize(e("#wplmi_template_display_info"),wplmi_admin_L10n.html_editor),o=e("#nav-container").find("a.nav-tab"),n=0;n()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return t.test(String(e).toLowerCase())}}),e("#wplmi_enable_schema").change(function(){"enable"==e(this).val()?(e(".wplmi_row_schema_post_types").show(),e(".wplmi_row_enhanced_schema, .schema-text").hide(),e("#wplmi_enhanced_schema").prop("checked",!1)):"inline"==e(this).val()?(e(".wplmi_row_enhanced_schema").show(),e(".wplmi_row_schema_post_types, .schema-text").hide()):"comp_mode"==e(this).val()?(e(".wplmi_row_schema_post_types, .wplmi_row_enhanced_schema").hide(),e(".schema-text").show()):"disable"==e(this).val()&&(e(".wplmi_row_schema_post_types, .wplmi_row_enhanced_schema, .schema-text").hide(),e("#wplmi_enhanced_schema").prop("checked",!1))}).change(),e("#wplmi_display_method").change(function(){"replace_original"==e(this).val()?(e(".wplmi_row_selectors, .wplmi_row_post_types").show(),e(".wplmi_row_archives").hide()):"manual"==e(this).val()?e(".wplmi_row_selectors, .wplmi_row_post_types, .wplmi_row_archives").hide():"before_content"!=e(this).val()&&"after_content"!=e(this).val()||(e(".wplmi_row_selectors").hide(),e(".wplmi_row_post_types, .wplmi_row_archives").show())}).change(),e(".coffee-amt").change(function(){var t=e(".buy-coffee-btn");t.attr("href",t.data("link")+e(this).val())}),e(window).keydown(function(t){if(t.ctrlKey||t.metaKey)switch(String.fromCharCode(t.which).toLowerCase()){case"s":t.preventDefault(),e("#form-container").submit()}})});
\ No newline at end of file
+jQuery(document).ready(function(e){if("undefined"==typeof wplmi_admin_L10n)return!1;for(var t=wp.codeEditor.initialize(e("#wplmi_display_info"),wplmi_admin_L10n.html_editor),i=wp.codeEditor.initialize(e("#wplmi_custom_css"),wplmi_admin_L10n.css_editor),a=wp.codeEditor.initialize(e("#wplmi_template_display_info"),wplmi_admin_L10n.html_editor),o=e("#nav-container").find("a.nav-tab"),n=0;n");e("body").append(n),n.val(t.data.elements).select(),document.execCommand("copy"),n.remove(),i.removeClass("disabled").val(a),e(".wplmi-copied").show().delay(1e3).fadeOut()}})}),e("input.wplmi-paste").on("click",function(t){t.preventDefault();e(this);var i=e.confirm({title:wplmi_admin_L10n.paste_data,content:'',useBootstrap:!1,theme:"material",animation:"scale",type:"green",boxWidth:"40%",draggable:!1,scrollToPreviousElement:!1,buttons:{confirm:{text:wplmi_admin_L10n.import_btn,action:function(){var t=this.$content.find("#wplmi-settings-data-import").val();if(!t)return alert("Please enter valid settings data!"),!1;console.log(t),i.close(),e.dialog({title:wplmi_admin_L10n.importing,content:wplmi_admin_L10n.processing,useBootstrap:!1,draggable:!1,theme:"material",type:"orange",closeIcon:!1,boxWidth:"25%",scrollToPreviousElement:!1}),e.post(wplmi_admin_L10n.ajaxurl,{action:"wplmi_process_import_plugin_data",settings_data:t,security:wplmi_admin_L10n.security},function(t,i){!0===t.success&&(window.location.reload(),e.cookie("wplmi_active_tab","post",{expires:30}))})}},close:{text:wplmi_admin_L10n.close_btn,action:function(){}}}})}),e("#wplmi-form .wplmi_row_custom_css").find(".CodeMirror").on("mousedown.codemirror",function(){var t=e(this);t.addClass("large"),i.codemirror.refresh(),t.off("mousedown.codemirror")}),e("#wplmi_enable_plugin").on("change",function(){var i=e(this).prop("checked");t.codemirror.setOption("readOnly",!i),e("#wplmi-form .wplmi_row_display_info").find(".CodeMirror").toggleClass("disabled",!i)}).change(),e("#wplmi_date_type").change(function(){"default"==e(this).val()?e(".wplmi_row_date_format").show():"human_readable"==e(this).val()&&e(".wplmi_row_date_format").hide()}).change(),e("#wplmi_author_display").change(function(){"custom"==e(this).val()?e(".wplmi_row_author_list").show():e(".wplmi_row_author_list").hide()}).change(),e("#wplmi_template_date_type").change(function(){"default"==e(this).val()?e(".wplmi_row_template_date_format").show():"human_readable"==e(this).val()&&e(".wplmi_row_template_date_format").hide()}).change(),e("#wplmi_template_author_display").change(function(){"custom"==e(this).val()?e(".wplmi_row_template_author_list").show():e(".wplmi_row_template_author_list").hide()}).change(),e("#wplmi_astra_support, #wplmi_generatepress_support").change(function(){"replace"==e(this).val()?(e(".wplmi_row_theme_template_type").show(),e("a#post").hide(),e("#wplmi_enable_plugin").prop("checked",!1)):"none"==e(this).val()&&(e(".wplmi_row_theme_template_type").hide(),e("a#post").show())}).change(),e("#wplmi_theme_template_type").on("change",function(){var t;"default"==e(this).val()?t=!0:"custom"==e(this).val()&&(t=!1),a.codemirror.setOption("readOnly",t),e("#wplmi-form .wplmi_row_template_display_info").find(".CodeMirror").toggleClass("disabled",t)}).change(),e("#wplmi_post_types, #wplmi_schema_post_types, #wplmi_notification_post_types, #wplmi_archives").selectize({plugins:["remove_button"],delimiter:",",placeholder:e(this).data("placeholder"),persist:!1,create:!1}),e("#wplmi_recipients_list").selectize({plugins:["remove_button","restore_on_backspace"],persist:!1,create:!0,createOnBlur:!0,delimiter:",",placeholder:e(this).data("placeholder"),createFilter:function(e){var t=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return t.test(String(e).toLowerCase())}}),e("#wplmi_enable_schema").change(function(){"enable"==e(this).val()?(e(".wplmi_row_schema_post_types").show(),e(".wplmi_row_enhanced_schema, .schema-text").hide(),e("#wplmi_enhanced_schema").prop("checked",!1)):"inline"==e(this).val()?(e(".wplmi_row_enhanced_schema").show(),e(".wplmi_row_schema_post_types, .schema-text").hide()):"comp_mode"==e(this).val()?(e(".wplmi_row_schema_post_types, .wplmi_row_enhanced_schema").hide(),e(".schema-text").show()):"disable"==e(this).val()&&(e(".wplmi_row_schema_post_types, .wplmi_row_enhanced_schema, .schema-text").hide(),e("#wplmi_enhanced_schema").prop("checked",!1))}).change(),e("#wplmi_display_method").change(function(){"replace_original"==e(this).val()?(e(".wplmi_row_selectors, .wplmi_row_post_types").show(),e(".wplmi_row_archives").hide()):"manual"==e(this).val()?e(".wplmi_row_selectors, .wplmi_row_post_types, .wplmi_row_archives").hide():"before_content"!=e(this).val()&&"after_content"!=e(this).val()||(e(".wplmi_row_selectors").hide(),e(".wplmi_row_post_types, .wplmi_row_archives").show())}).change(),e(".coffee-amt").change(function(){var t=e(".buy-coffee-btn");t.attr("href",t.data("link")+e(this).val())}),e(window).keydown(function(t){if(t.ctrlKey||t.metaKey)switch(String.fromCharCode(t.which).toLowerCase()){case"s":t.preventDefault(),e("#form-container").submit()}})});
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 8999fac..717ef15 100644
--- a/composer.json
+++ b/composer.json
@@ -1,6 +1,6 @@
{
"name": "sayan/wp-last-modified-info",
- "description": "The WP Auto Republish plugin helps revive old posts by resetting the publish date to the current date. This will push old posts to your front page, the top of archive pages, and back into RSS feeds. Ideal for sites with a large repository of evergreen content.",
+ "description": "Adds last modified date and time automatically on pages and posts very easily. It is possible to use shortcodes to display last modified info anywhere on a WordPress site running 4.6 and beyond.",
"type": "wordpress-plugin",
"license": "GPL-3.0",
"authors": [
diff --git a/inc/Api/Callbacks/ManagerCallbacks.php b/inc/Api/Callbacks/ManagerCallbacks.php
index 1bc43a7..b296d1b 100644
--- a/inc/Api/Callbacks/ManagerCallbacks.php
+++ b/inc/Api/Callbacks/ManagerCallbacks.php
@@ -149,14 +149,15 @@ public function archives( $args )
public function selectors( $args )
{
?>
-
- ">
+
+
Last Updated on %post_modified% by %author_name%
';
- ?>
+ $default = 'Last Updated on %post_modified% by %author_name%
';
+ ?>
-
%author_name%
%author_url%
%author_email%
%author_archive%
%post_published%
%post_link%
%post_modified%
@@ -282,8 +283,8 @@ public function template_author_list( $args )
public function template_display_info( $args )
{
- $default = '
Last Updated on %post_modified% by %author_name%
';
- ?>
+ $default = 'Last Updated on %post_modified% by %author_name%
';
+ ?>
-
%author_name%
%author_url%
%author_email%
%author_archive%
%post_published%
%post_link%
%post_modified%
@@ -467,7 +468,7 @@ public function sort_order( $args )
public function custom_css( $args )
{
- ?>
+ ?>
<style> </style>' ); ?>
=' ) ) { ?>
-
here to configure plugin settings.', 'wp-last-modified-info' ), 'WP Last Modified Info', '1.6.0', admin_url( 'options-general.php?page=wp-last-modified-info' ) ); ?>
+
here to configure plugin settings.', 'wp-last-modified-info' ), 'WP Last Modified Info', $this->version, admin_url( 'options-general.php?page=wp-last-modified-info' ) ); ?>
plugin_path = plugin_dir_path( $this->dirname_r( __FILE__, 2 ) );
$this->plugin_url = plugin_dir_url( $this->dirname_r( __FILE__, 2 ) );
$this->plugin = plugin_basename( $this->dirname_r( __FILE__, 3 ) ) . '/wp-last-modified-info.php';
- $this->version = '1.7.0';
+ $this->version = '1.7.1';
$this->debug = false;
$this->name = 'WP Last Modified Info';
}
diff --git a/inc/Base/Enqueue.php b/inc/Base/Enqueue.php
index 01417ca..0ca62d1 100644
--- a/inc/Base/Enqueue.php
+++ b/inc/Base/Enqueue.php
@@ -69,7 +69,7 @@ public function assets( $hook )
'error' => __( 'Error!', 'wp-last-modified-info' ),
'deleting' => __( 'Deleting...', 'wp-last-modified-info' ),
'warning' => __( 'Warning!', 'wp-last-modified-info' ),
- 'process_delete' => __( 'Please wait while we are processing your request...', 'wp-last-modified-info' ),
+ 'processing' => __( 'Please wait while we are processing your request...', 'wp-last-modified-info' ),
'save_button' => __( 'Save Settings', 'wp-last-modified-info' ),
'save_success' => __( 'Settings Saved Successfully!', 'wp-last-modified-info' ),
'process_failed' => __( 'Invalid Nonce! We could not process your request.', 'wp-last-modified-info' ),
@@ -78,6 +78,9 @@ public function assets( $hook )
'cancel_button' => __( 'Cancel', 'wp-last-modified-info' ),
'please_wait' => __( 'Please wait...', 'wp-last-modified-info' ),
'close_btn' => __( 'Close', 'wp-last-modified-info' ),
+ 'paste_data' => __( 'Paste Here', 'wp-last-modified-info' ),
+ 'import_btn' => __( 'Import', 'wp-last-modified-info' ),
+ 'importing' => __( 'Importing...', 'wp-last-modified-info' ),
'security' => wp_create_nonce( 'wplmi_admin_nonce' ),
] );
}
diff --git a/inc/Base/PluginTools.php b/inc/Base/PluginTools.php
index e621c0f..ef662b3 100644
--- a/inc/Base/PluginTools.php
+++ b/inc/Base/PluginTools.php
@@ -31,7 +31,9 @@ public function register()
$this->action( 'admin_init', 'export_settings' );
$this->action( 'admin_init', 'import_settings' );
$this->action( 'admin_notices', 'admin_notice' );
- $this->ajax( 'process_set_meta', 'set_meta' );
+ $this->ajax( 'process_set_meta', 'set_meta' );
+ $this->ajax( 'process_copy_data', 'copy_data' );
+ $this->ajax( 'process_import_plugin_data', 'import_data' );
$this->ajax( 'process_delete_plugin_data', 'remove_settings' );
}
@@ -92,6 +94,9 @@ public function import_settings()
exit;
}
+ /**
+ * Process post meta data update
+ */
public function set_meta()
{
// security check
@@ -110,19 +115,63 @@ public function set_meta()
];
$posts = get_posts( $args );
- foreach( $posts as $post ) {
- if ( $action == 'check' ) {
- $this->update_meta( $post->ID, '_lmt_disableupdate', 'yes' );
- } else if ( $action == 'uncheck' ) {
- $this->update_meta( $post->ID, '_lmt_disableupdate', 'no' );
- }
- }
+ if ( ! empty( $posts ) ) {
+ foreach( $posts as $post ) {
+ if ( $action == 'check' ) {
+ $this->update_meta( $post->ID, '_lmt_disableupdate', 'yes' );
+ } else if ( $action == 'uncheck' ) {
+ $this->update_meta( $post->ID, '_lmt_disableupdate', 'no' );
+ }
+ }
+ }
$this->success( [
'reload' => false,
] );
}
+ /**
+ * Process a settings export from ajax request
+ */
+ public function copy_data()
+ {
+ // security check
+ $this->verify_nonce();
+
+ $option = get_option( 'lmt_plugin_global_settings' );
+
+ //error_log( json_encode( $option ) );
+
+ $this->success( [
+ 'elements' => json_encode( $option ),
+ ] );
+ }
+
+ /**
+ * Process a settings import from ajax request
+ */
+ public function import_data()
+ {
+ // security check
+ $this->verify_nonce();
+
+ if ( ! isset( $_REQUEST['settings_data'] ) ) {
+ $this->error();
+ }
+
+ $data = stripslashes( $_REQUEST['settings_data'] );
+ $settings = (array) json_decode( $data );
+
+ if ( is_array( $settings ) && ! empty( $settings ) ) {
+ update_option( 'lmt_plugin_global_settings', $settings );
+
+ // set temporary transient for admin notice
+ set_transient( 'wplmi_import_db_done', true );
+ }
+
+ $this->success();
+ }
+
/**
* Process reset plugin settings
*/
@@ -142,13 +191,15 @@ public function remove_settings()
];
$posts = get_posts( $args );
- foreach( $posts as $post ) {
- $this->delete_meta( $post->ID, '_lmt_disable' );
- $this->delete_meta( $post->ID, '_lmt_disableupdate' );
- $this->delete_meta( $post->ID, '_wplmi_last_modified' );
- $this->delete_meta( $post->ID, 'wp_last_modified_info' );
- $this->delete_meta( $post->ID, 'wplmi_shortcode' );
- }
+ if ( ! empty( $posts ) ) {
+ foreach( $posts as $post ) {
+ $this->delete_meta( $post->ID, '_lmt_disable' );
+ $this->delete_meta( $post->ID, '_lmt_disableupdate' );
+ $this->delete_meta( $post->ID, '_wplmi_last_modified' );
+ $this->delete_meta( $post->ID, 'wp_last_modified_info' );
+ $this->delete_meta( $post->ID, 'wplmi_shortcode' );
+ }
+ }
$this->success( [
'reload' => true,
diff --git a/inc/Core/Elementor/Modules/ModifiedDate.php b/inc/Core/Elementor/Modules/ModifiedDate.php
index fcf6b0a..b958b29 100644
--- a/inc/Core/Elementor/Modules/ModifiedDate.php
+++ b/inc/Core/Elementor/Modules/ModifiedDate.php
@@ -106,7 +106,7 @@ public function render()
$value = get_the_modified_date( $date_format );
if ( 'yes' === $schema ) {
- $output = '%schema_start%' . $value . '%schema_end%';
+ $output = '%wplmi_schema_start%' . $value . '%wplmi_schema_end%';
} else {
$output = $value;
}
diff --git a/inc/Core/Elementor/Modules/ModifiedTime.php b/inc/Core/Elementor/Modules/ModifiedTime.php
index 65d111e..b5d02db 100644
--- a/inc/Core/Elementor/Modules/ModifiedTime.php
+++ b/inc/Core/Elementor/Modules/ModifiedTime.php
@@ -110,7 +110,7 @@ public function render()
}
if ( 'yes' === $schema ) {
- $output = '%schema_start%' . $value . '%wplmi_schema_end%';
+ $output = '%wplmi_schema_start%' . $value . '%wplmi_schema_end%';
} else {
$output = $value;
}
diff --git a/inc/Core/Frontend/PostView.php b/inc/Core/Frontend/PostView.php
index 7ea6e19..191506b 100644
--- a/inc/Core/Frontend/PostView.php
+++ b/inc/Core/Frontend/PostView.php
@@ -81,7 +81,7 @@ public function show_info( $content )
$modified_timestamp = get_post_modified_time( 'U' );
$gap = $this->get_data( 'lmt_gap_on_post', 0 );
- if ( $modified_timestamp <= ( $published_timestamp + $gap ) ) {
+ if ( $modified_timestamp < ( $published_timestamp + $gap ) ) {
return $content;
}
@@ -153,7 +153,7 @@ public function run_replace()
$modified_timestamp = get_post_modified_time( 'U' );
$gap = $this->get_data( 'lmt_gap_on_post', 0 );
- if ( $modified_timestamp <= ( $published_timestamp + $gap ) ) {
+ if ( $modified_timestamp < ( $published_timestamp + $gap ) ) {
return;
}
@@ -220,9 +220,11 @@ protected function generate( $html, $post_id, $timestamp, $author_id )
$html = str_replace( [ '%author_archive%', '%author_posts_url%' ], $author_archive, $html );
$html = str_replace( [ '%post_published%', '%published_date%' ], esc_attr( get_post_time( $date_format, false, $post->ID ) ), $html );
$html = str_replace( '%post_link%', esc_url( get_the_permalink( $post->ID ) ), $html );
+ $html = str_replace( '%post_categories%', get_the_category_list( $this->do_filter( 'post_categories_separator', ', ', $post->ID ), '', $post->ID ), $html );
+ $html = str_replace( '%comment_count%', get_comments_number( $post->ID ), $html );
$html = $this->do_filter( 'post_tags', $html, $post->ID );
- $html = str_replace( [ '%post_modified%', '%modified_date%' ], esc_attr( $timestamp ), wp_kses_post( $html ) );
+ $html = str_replace( [ '%post_modified%', '%modified_date%' ], $timestamp, wp_kses_post( $html ) );
return preg_replace( "/\r|\n/", '', $html );
}
diff --git a/inc/Core/Frontend/Shortcode.php b/inc/Core/Frontend/Shortcode.php
index 786e4bb..326e7f3 100644
--- a/inc/Core/Frontend/Shortcode.php
+++ b/inc/Core/Frontend/Shortcode.php
@@ -26,6 +26,7 @@ public function register()
{
add_shortcode( 'lmt-post-modified-info', [ $this, 'render' ] );
add_shortcode( 'lmt-page-modified-info', [ $this, 'render' ] );
+ add_shortcode( 'lmt-template-tags', [ $this, 'render_template_tags' ] );
add_shortcode( 'lmt-site-modified-info', [ $this, 'render_global' ] );
}
@@ -44,10 +45,6 @@ public function render( $atts )
return;
}
- if ( ! $this->is_equal( 'show_last_modified_time_date_post', 'manual' ) ) {
- return;
- }
-
$format = $this->get_data( 'lmt_date_time_format', get_option( 'date_format' ) );
$format = ( ! empty( $format ) ) ? $format : get_option( 'date_format' );
@@ -63,8 +60,8 @@ public function render( $atts )
'date_type' => $this->get_data( 'lmt_last_modified_format_post', 'default' ),
'schema' => $this->get_data( 'lmt_enable_jsonld_markup_cb', 'disable' ),
'author_id' => $author_id,
- 'hide_archive' => [],
- 'filter_ids' => [],
+ 'hide_archive' => '',
+ 'filter_ids' => '',
'gap' => $this->get_data( 'lmt_gap_on_post', 0 ),
], $atts, 'lmt-post-modified-info' );
@@ -99,7 +96,7 @@ public function render( $atts )
$published_timestamp = get_the_time( 'U' );
$modified_timestamp = get_the_modified_time( 'U' );
- if ( $modified_timestamp <= ( $published_timestamp + $atts['gap'] ) ) {
+ if ( $modified_timestamp < ( $published_timestamp + $atts['gap'] ) ) {
return;
}
@@ -116,6 +113,25 @@ public function render( $atts )
return $template;
}
+ /**
+ * Callback to register template tags shortcodes.
+ *
+ * @since v1.7.1
+ *
+ * @param array $atts Shortcode attributes.
+ *
+ * @return string Shortcode output.
+ */
+ public function render_template_tags( $atts )
+ {
+ $atts = shortcode_atts( [
+ 'escape' => false,
+ 'only_date' => false,
+ ], $atts, 'lmt-template-tags' );
+
+ return get_the_last_modified_info( $atts['escape'], $atts['only_date'] );
+ }
+
/**
* Callback to register shortcodes.
*
diff --git a/inc/Core/ThemeCompat.php b/inc/Core/ThemeCompat.php
index 4199233..87526d1 100644
--- a/inc/Core/ThemeCompat.php
+++ b/inc/Core/ThemeCompat.php
@@ -51,10 +51,14 @@ public function astra_post_meta( $html )
$output = '';
$format = $this->do_filter( 'astra_post_date_format', '' );
- $output .= '';
- $output .= ' ' . esc_attr( get_the_modified_date( $format ) ) . '';
+ $output .= '' . $this->do_filter( 'astra_post_date_prepend', '' );
+ $output .= '' . esc_attr( get_the_modified_date( $format ) ) . '' . $this->do_filter( 'astra_post_date_append', '' );
$output .= '';
+ if ( ! is_singular() && $this->do_filter( 'astra_filter_archive_output', true ) ) {
+ return $output;
+ }
+
if ( $this->is_equal( 'tt_theme_template_type', 'custom' ) ) {
$output = $this->do_filter( 'astra_post_template', get_the_last_modified_info(), $html );
}
@@ -81,7 +85,7 @@ public function astra_post_author_meta( $html )
$author_id = $this->get_meta( get_the_ID(), '_edit_last' );
$output = '';
- if ( $this->do_filter( 'astra_enable_author_output', true ) ) {
+ if ( $this->do_filter( 'astra_enable_author_output', false ) ) {
$output .= '';
$output .= '';
$output .= '' . esc_attr( get_the_author_meta( 'display_name', $author_id ) ) . '';
@@ -121,6 +125,10 @@ public function gp_post_meta( $html )
$output .= '';
$output .= ' ';
+ if ( ! is_singular() && $this->do_filter( 'gp_filter_archive_output', true ) ) {
+ return $output;
+ }
+
if ( $this->is_equal( 'tt_theme_template_type', 'custom' ) ) {
$output = $this->do_filter( 'gp_post_template', get_the_last_modified_info(), $html );
}
@@ -147,7 +155,7 @@ public function gp_post_author_meta( $html )
$author_id = $this->get_meta( get_the_ID(), '_edit_last' );
$output = '';
- if ( $this->is_equal( 'tt_theme_template_type', 'default' ) && $this->do_filter( 'gp_enable_author_output', true ) ) {
+ if ( $this->is_equal( 'tt_theme_template_type', 'default' ) && $this->do_filter( 'gp_enable_author_output', false ) ) {
$output .= '' . apply_filters( 'generate_inside_post_meta_item_output', '', 'author' );
$output .= '';
$output .= '';
diff --git a/inc/Pages/Dashboard.php b/inc/Pages/Dashboard.php
index 3e837d1..7c97428 100644
--- a/inc/Pages/Dashboard.php
+++ b/inc/Pages/Dashboard.php
@@ -181,7 +181,7 @@ private function build_settings_fields()
'template_date_format' => __( 'Last Modified Info Date Time Format:', 'wp-last-modified-info' ),
'template_author_display' => __( 'Display Last Modified Author Name:', 'wp-last-modified-info' ),
'template_author_list' => __( 'Custom Post Author for All Posts:', 'wp-last-modified-info' ),
- 'template_display_info' => __( 'Custom Message to Display on Posts:', 'wp-last-modified-info' )
+ 'template_display_info' => __( 'HTML Template for Template Tags:', 'wp-last-modified-info' )
],
'schema' => [
'enable_schema' => __( 'JSON-LD Schema Markup Mode:', 'wp-last-modified-info' ),
diff --git a/languages/wp-last-modified-info.pot b/languages/wp-last-modified-info.pot
index cd2a91e..e56afe9 100644
--- a/languages/wp-last-modified-info.pot
+++ b/languages/wp-last-modified-info.pot
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
"Project-Id-Version: WP Last Modified Info\n"
-"POT-Creation-Date: 2020-08-11 22:05+0530\n"
+"POT-Creation-Date: 2020-08-12 23:47+0530\n"
"PO-Revision-Date: 2019-03-29 15:38+0530\n"
"Last-Translator: \n"
"Language-Team: hello@sayandatta.in\n"
@@ -50,27 +50,27 @@ msgid ""
msgstr ""
#: inc/Api/Callbacks/ManagerCallbacks.php:55
-#: inc/Api/Callbacks/ManagerCallbacks.php:234
+#: inc/Api/Callbacks/ManagerCallbacks.php:235
msgid "Traditional Format"
msgstr ""
#: inc/Api/Callbacks/ManagerCallbacks.php:56
-#: inc/Api/Callbacks/ManagerCallbacks.php:235
+#: inc/Api/Callbacks/ManagerCallbacks.php:236
msgid "Human Readable Format"
msgstr ""
#: inc/Api/Callbacks/ManagerCallbacks.php:64
-#: inc/Api/Callbacks/ManagerCallbacks.php:243
+#: inc/Api/Callbacks/ManagerCallbacks.php:244
msgid "Select last modified date time format from here."
msgstr ""
#: inc/Api/Callbacks/ManagerCallbacks.php:70
-#: inc/Api/Callbacks/ManagerCallbacks.php:249
+#: inc/Api/Callbacks/ManagerCallbacks.php:250
msgid "Default:"
msgstr ""
#: inc/Api/Callbacks/ManagerCallbacks.php:71
-#: inc/Api/Callbacks/ManagerCallbacks.php:250
+#: inc/Api/Callbacks/ManagerCallbacks.php:251
msgid "Set post last modified date time format from here."
msgstr ""
@@ -114,23 +114,23 @@ msgid ""
msgstr ""
#: inc/Api/Callbacks/ManagerCallbacks.php:101
-#: inc/Api/Callbacks/ManagerCallbacks.php:257
+#: inc/Api/Callbacks/ManagerCallbacks.php:258
#: inc/Core/Elementor/Modules/AuthorName.php:31
msgid "Last Modified Author"
msgstr ""
#: inc/Api/Callbacks/ManagerCallbacks.php:102
-#: inc/Api/Callbacks/ManagerCallbacks.php:258
+#: inc/Api/Callbacks/ManagerCallbacks.php:259
msgid "Custom Author"
msgstr ""
#: inc/Api/Callbacks/ManagerCallbacks.php:110
-#: inc/Api/Callbacks/ManagerCallbacks.php:266
+#: inc/Api/Callbacks/ManagerCallbacks.php:267
msgid "Select how you want to display last modified author name on posts."
msgstr ""
#: inc/Api/Callbacks/ManagerCallbacks.php:123
-#: inc/Api/Callbacks/ManagerCallbacks.php:279
+#: inc/Api/Callbacks/ManagerCallbacks.php:280
msgid "Select the author name which you want to display for all posts."
msgstr ""
@@ -178,82 +178,88 @@ msgstr ""
#: inc/Api/Callbacks/ManagerCallbacks.php:152
msgid ""
"Add the CSS selector to replace the post meta. It may not work for all "
-"themes. Please check before using it. If you n eed any help, please open a "
+"themes. Please check before using it. If you need any help, please open a "
"support ticket with your website URL."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:161
-#: inc/Api/Callbacks/ManagerCallbacks.php:288
+#: inc/Api/Callbacks/ManagerCallbacks.php:153
+msgid ""
+"If you are using any caching plugin, please clear/remove your cache after any "
+"changes made to this field."
+msgstr ""
+
+#: inc/Api/Callbacks/ManagerCallbacks.php:162
+#: inc/Api/Callbacks/ManagerCallbacks.php:289
msgid "Use these tags"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:170
-#: inc/Api/Callbacks/ManagerCallbacks.php:320
-#: inc/Api/Callbacks/ManagerCallbacks.php:375
+#: inc/Api/Callbacks/ManagerCallbacks.php:171
+#: inc/Api/Callbacks/ManagerCallbacks.php:321
+#: inc/Api/Callbacks/ManagerCallbacks.php:376
msgid "Select post types"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:176
+#: inc/Api/Callbacks/ManagerCallbacks.php:177
msgid "Select post types on which you want to show last modified info."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:186
-#: inc/Api/Callbacks/ManagerCallbacks.php:202
+#: inc/Api/Callbacks/ManagerCallbacks.php:187
+#: inc/Api/Callbacks/ManagerCallbacks.php:203
msgid "Use Default Post Date"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:187
-#: inc/Api/Callbacks/ManagerCallbacks.php:203
+#: inc/Api/Callbacks/ManagerCallbacks.php:188
+#: inc/Api/Callbacks/ManagerCallbacks.php:204
msgid "Replace Post Meta Data"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:195
+#: inc/Api/Callbacks/ManagerCallbacks.php:196
msgid ""
"Enable the Astra Theme Support form here. It will replace the post meta "
"published date with post modified date."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:211
+#: inc/Api/Callbacks/ManagerCallbacks.php:212
msgid ""
"Enable the GeneratePress Theme Support form here. It will replace the post "
"meta published date with post modified date."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:218
+#: inc/Api/Callbacks/ManagerCallbacks.php:219
msgid "Show Modified Date"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:219
+#: inc/Api/Callbacks/ManagerCallbacks.php:220
msgid "Custom Template"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:227
+#: inc/Api/Callbacks/ManagerCallbacks.php:228
msgid "Set the template type from here to diaplay on post meta."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:301
+#: inc/Api/Callbacks/ManagerCallbacks.php:302
msgid "Default Mode (CreativeWork)"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:302
+#: inc/Api/Callbacks/ManagerCallbacks.php:303
msgid "Inline Mode (MicroData)"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:303
+#: inc/Api/Callbacks/ManagerCallbacks.php:304
msgid "Compatibilty Mode (Advanced)"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:304
+#: inc/Api/Callbacks/ManagerCallbacks.php:305
msgid "Disable Schema Markup"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:312
+#: inc/Api/Callbacks/ManagerCallbacks.php:313
msgid ""
"Set the JSON-LD Markup mode if you want to show last modified info to search "
"engines."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:313
+#: inc/Api/Callbacks/ManagerCallbacks.php:314
msgid ""
"If you already have a SEO plugin or a Schema Plugin on your site, then you "
"can use this option. In this mode, this plugin will try to convert the post "
@@ -263,11 +269,11 @@ msgid ""
"Pack, SEOPress, Schema and many other plugins."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:326
+#: inc/Api/Callbacks/ManagerCallbacks.php:327
msgid "Select on which post types you want to enable JSON-LD Markup."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:334
+#: inc/Api/Callbacks/ManagerCallbacks.php:335
msgid ""
"Enable this if your theme does not support schema markup. This will add "
"WebPage type schema support to the html tag. Please check Schema Markup "
@@ -275,75 +281,75 @@ msgid ""
"already detects schema markup, you don't need to enable it anymore."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:346
+#: inc/Api/Callbacks/ManagerCallbacks.php:347
msgid ""
"Enable this if you want to receive email notification if anyone makes changes "
"to any post of your blog."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:354
+#: inc/Api/Callbacks/ManagerCallbacks.php:355
msgid "Enable this if you want to send notification to the post author."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:362
+#: inc/Api/Callbacks/ManagerCallbacks.php:363
msgid ""
"Enable this if you want to enable notification when anyone makes changes to "
"any draft post."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:388
+#: inc/Api/Callbacks/ManagerCallbacks.php:389
msgid "Use these tags into email subject"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:407
+#: inc/Api/Callbacks/ManagerCallbacks.php:408
msgid "Use these tags into email body"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:409
+#: inc/Api/Callbacks/ManagerCallbacks.php:410
msgid "Email body supports HTML."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:422
+#: inc/Api/Callbacks/ManagerCallbacks.php:423
msgid ""
"Enable this if you want to show last modified info on wordpress admin bar."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:430
+#: inc/Api/Callbacks/ManagerCallbacks.php:431
msgid ""
"Enable this if you want to show replace original post published date with "
"post modified date. Your theme may not be able to support this feature. "
"Please check it on frontend after activating this option."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:437
-#: inc/Api/Callbacks/ManagerCallbacks.php:454
-msgid "Default Order"
-msgstr ""
-
#: inc/Api/Callbacks/ManagerCallbacks.php:438
#: inc/Api/Callbacks/ManagerCallbacks.php:455
-msgid "Modified Post First"
+msgid "Default Order"
msgstr ""
#: inc/Api/Callbacks/ManagerCallbacks.php:439
#: inc/Api/Callbacks/ManagerCallbacks.php:456
+msgid "Modified Post First"
+msgstr ""
+
+#: inc/Api/Callbacks/ManagerCallbacks.php:440
+#: inc/Api/Callbacks/ManagerCallbacks.php:457
msgid "Modified Post Last"
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:447
+#: inc/Api/Callbacks/ManagerCallbacks.php:448
msgid "Select the post sorting order in Admin Edit page in Backend."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:464
+#: inc/Api/Callbacks/ManagerCallbacks.php:465
msgid "Select the post sorting order in Admin Edit page in Frontend."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:471
+#: inc/Api/Callbacks/ManagerCallbacks.php:472
#, php-format
msgid "Do not add %s tag. This tag is not required, as it is already added."
msgstr ""
-#: inc/Api/Callbacks/ManagerCallbacks.php:479
+#: inc/Api/Callbacks/ManagerCallbacks.php:480
msgid ""
"Enable this if you want to delete plugin data at the time of uninstallation."
msgstr ""
@@ -450,6 +456,18 @@ msgstr ""
msgid "Close"
msgstr ""
+#: inc/Base/Enqueue.php:81
+msgid "Paste Here"
+msgstr ""
+
+#: inc/Base/Enqueue.php:82
+msgid "Import"
+msgstr ""
+
+#: inc/Base/Enqueue.php:83
+msgid "Importing..."
+msgstr ""
+
#: inc/Base/MiscActions.php:41
msgid "Settings"
msgstr ""
@@ -462,17 +480,17 @@ msgstr ""
msgid "Donate"
msgstr ""
-#: inc/Base/PluginTools.php:77
+#: inc/Base/PluginTools.php:79
msgid ""
"Settings import failed: Please upload a valid .json file to "
"import settings in this website."
msgstr ""
-#: inc/Base/PluginTools.php:81
+#: inc/Base/PluginTools.php:83
msgid "Settings import failed: Please upload a file to import."
msgstr ""
-#: inc/Base/PluginTools.php:164
+#: inc/Base/PluginTools.php:215
msgid "Success! Plugin Settings has been imported successfully."
msgstr ""
@@ -703,7 +721,7 @@ msgid "Default"
msgstr ""
#: inc/Core/Elementor/Modules/ModifiedDate.php:70
-#: inc/Core/Elementor/Modules/ModifiedTime.php:70 templates/admin.php:153
+#: inc/Core/Elementor/Modules/ModifiedTime.php:70 templates/admin.php:155
msgid "Custom"
msgstr ""
@@ -791,7 +809,7 @@ msgstr ""
msgid "New Ping Status:"
msgstr ""
-#: inc/Core/ThemeCompat.php:86 inc/Core/ThemeCompat.php:153
+#: inc/Core/ThemeCompat.php:90 inc/Core/ThemeCompat.php:161
#, php-format
msgid "View all posts by %s"
msgstr ""
@@ -866,7 +884,7 @@ msgid "Posts Types to Show Modified Info:"
msgstr ""
#: inc/Pages/Dashboard.php:184
-msgid "Custom Message to Display on Posts:"
+msgid "HTML Template for Template Tags:"
msgstr ""
#: inc/Pages/Dashboard.php:187
@@ -1164,7 +1182,7 @@ msgstr ""
msgid "Un-Check All"
msgstr ""
-#: templates/admin.php:109 templates/admin.php:115
+#: templates/admin.php:109 templates/admin.php:114
msgid "Export Settings"
msgstr ""
@@ -1174,45 +1192,57 @@ msgid ""
"easily import the configuration into another site."
msgstr ""
-#: templates/admin.php:120 templates/admin.php:127
+#: templates/admin.php:115
+msgid "Copy"
+msgstr ""
+
+#: templates/admin.php:116
+msgid "Copied!"
+msgstr ""
+
+#: templates/admin.php:121 templates/admin.php:128
msgid "Import Settings"
msgstr ""
-#: templates/admin.php:121
+#: templates/admin.php:122
msgid ""
"Import the plugin settings from a .json file. This file can be obtained by "
"exporting the settings on another site using the form above."
msgstr ""
-#: templates/admin.php:132 templates/admin.php:134
+#: templates/admin.php:129
+msgid "Paste"
+msgstr ""
+
+#: templates/admin.php:134 templates/admin.php:136
msgid "Reset Settings"
msgstr ""
-#: templates/admin.php:133
+#: templates/admin.php:135
msgid "WARNING:"
msgstr ""
-#: templates/admin.php:133
+#: templates/admin.php:135
msgid ""
"Resetting will delete all custom options to the default settings of the "
"plugin in your database."
msgstr ""
-#: templates/admin.php:134
+#: templates/admin.php:136
msgid ""
"It will delete all the data relating to this plugin settings. Do you want to "
"continue?"
msgstr ""
-#: templates/admin.php:134
+#: templates/admin.php:136
msgid "Success! Plugin Settings reset successfully."
msgstr ""
-#: templates/admin.php:155 templates/admin.php:157
+#: templates/admin.php:157 templates/admin.php:159
msgid "Buy me a coffee!"
msgstr ""
-#: templates/admin.php:158
+#: templates/admin.php:160
#, php-format
msgid ""
"Thank you for using %s. If you found the plugin useful buy me a coffee! Your "
diff --git a/readme.txt b/readme.txt
index 2fc4c14..0eb6799 100644
--- a/readme.txt
+++ b/readme.txt
@@ -3,7 +3,7 @@ Contributors: infosatech
Tags: last modified, timestamp, modified time, post modified, sort by modified, time, date
Requires at least: 4.6
Tested up to: 5.5
-Stable tag: 1.7.0
+Stable tag: 1.7.1
Requires PHP: 5.6
Donate link: https://www.paypal.me/iamsayan/
License: GPLv3
@@ -163,6 +163,15 @@ Post detailed information about the issue in the [support forum](https://wordpre
If you like WP Last Modified Info, please take a moment to [give a 5-star rating](https://wordpress.org/support/plugin/wp-last-modified-info/reviews/?rate=5#new-post). It helps to keep development and support going strong. Thank you!
+= 1.7.1 =
+Release Date: August 12, 2020
+
+* Added: Some PostView template tags.
+* Added: An option to Copy and Paste plugin settings to Export and Import respectively.
+* Fixed: Astra & GeneratePress Schema Output.
+* Fixed: Elemetor Schema Output.
+* Other minor improvements.
+
= 1.7.0 =
Release Date: August 11, 2020
diff --git a/templates/admin.php b/templates/admin.php
index 95ccd6b..59dba11 100644
--- a/templates/admin.php
+++ b/templates/admin.php
@@ -109,11 +109,12 @@
@@ -125,8 +126,9 @@
-
-
+
+
+
diff --git a/wp-last-modified-info.php b/wp-last-modified-info.php
index 6d35bf6..e7b65ad 100644
--- a/wp-last-modified-info.php
+++ b/wp-last-modified-info.php
@@ -3,7 +3,7 @@
* Plugin Name: WP Last Modified Info
* Plugin URI: https://wordpress.org/plugins/wp-last-modified-info/
* Description: 🔥 Ultimate Last Modified Solution for WordPress. Adds last modified date and time automatically on pages and posts very easily. It is possible to use shortcodes to display last modified info anywhere on a WordPress site running 4.6 and beyond.
- * Version: 1.7.0
+ * Version: 1.7.1
* Author: Sayan Datta
* Author URI: https://www.sayandatta.in
* License: GPLv3