Version Description
- October 18, 2021 =
- Fix: Prevented login errors with WooCommerce integration when manual username entry is enabled on the WooCommerce registration form
- Fix: Corrected theme incompatibilities with WooCommerce integration
Download this release
Release Info
Developer | wfalexk |
Plugin | Wordfence Security – Firewall & Malware Scan |
Version | 7.5.6 |
Comparing to | |
See all releases |
Code changes from version 7.5.5 to 7.5.6
- css/{activity-report-widget.1629122067.css → activity-report-widget.1634562195.css} +0 -0
- css/{diff.1629122067.css → diff.1634562195.css} +0 -0
- css/{dt_table.1629122067.css → dt_table.1634562195.css} +0 -0
- css/{fullLog.1629122067.css → fullLog.1634562195.css} +0 -0
- css/{iptraf.1629122067.css → iptraf.1634562195.css} +0 -0
- css/{jquery-ui-timepicker-addon.1629122067.css → jquery-ui-timepicker-addon.1634562195.css} +0 -0
- css/{jquery-ui.min.1629122067.css → jquery-ui.min.1634562195.css} +0 -0
- css/{jquery-ui.structure.min.1629122067.css → jquery-ui.structure.min.1634562195.css} +0 -0
- css/{jquery-ui.theme.min.1629122067.css → jquery-ui.theme.min.1634562195.css} +0 -0
- css/{main.1629122067.css → main.1634562195.css} +0 -0
- css/{phpinfo.1629122067.css → phpinfo.1634562195.css} +0 -0
- css/{wf-adminbar.1629122067.css → wf-adminbar.1634562195.css} +0 -0
- css/{wf-colorbox.1629122067.css → wf-colorbox.1634562195.css} +0 -0
- css/{wf-font-awesome.1629122067.css → wf-font-awesome.1634562195.css} +0 -0
- css/{wf-global.1629122067.css → wf-global.1634562195.css} +0 -0
- css/{wf-ionicons.1629122067.css → wf-ionicons.1634562195.css} +0 -0
- css/{wf-onboarding.1629122067.css → wf-onboarding.1634562195.css} +0 -0
- css/{wf-roboto-font.1629122067.css → wf-roboto-font.1634562195.css} +0 -0
- css/{wfselect2.min.1629122067.css → wfselect2.min.1634562195.css} +0 -0
- css/{wordfenceBox.1629122067.css → wordfenceBox.1634562195.css} +0 -0
- js/{Chart.bundle.min.1629122067.js → Chart.bundle.min.1634562195.js} +0 -0
- js/{admin.1629122067.js → admin.1634562195.js} +0 -0
- js/{admin.ajaxWatcher.1629122067.js → admin.ajaxWatcher.1634562195.js} +0 -0
- js/{admin.liveTraffic.1629122067.js → admin.liveTraffic.1634562195.js} +0 -0
- js/{date.1629122067.js → date.1634562195.js} +0 -0
- js/{jquery-ui-timepicker-addon.1629122067.js → jquery-ui-timepicker-addon.1634562195.js} +0 -0
- js/{jquery.colorbox-min.1629122067.js → jquery.colorbox-min.1634562195.js} +0 -0
- js/{jquery.colorbox.1629122067.js → jquery.colorbox.1634562195.js} +0 -0
- js/{jquery.dataTables.min.1629122067.js → jquery.dataTables.min.1634562195.js} +0 -0
- js/{jquery.qrcode.min.1629122067.js → jquery.qrcode.min.1634562195.js} +0 -0
- js/{jquery.tmpl.min.1629122067.js → jquery.tmpl.min.1634562195.js} +0 -0
- js/{jquery.tools.min.1629122067.js → jquery.tools.min.1634562195.js} +0 -0
- js/{knockout-3.5.1.1629122067.js → knockout-3.5.1.1634562195.js} +0 -0
- js/{wfdashboard.1629122067.js → wfdashboard.1634562195.js} +0 -0
- js/{wfdropdown.1629122067.js → wfdropdown.1634562195.js} +0 -0
- js/{wfglobal.1629122067.js → wfglobal.1634562195.js} +0 -0
- js/{wfi18n.1629122067.js → wfi18n.1634562195.js} +0 -0
- js/{wfpopover.1629122067.js → wfpopover.1634562195.js} +0 -0
- js/{wfselect2.min.1629122067.js → wfselect2.min.1634562195.js} +0 -0
- languages/wordfence.po +2 -2
- modules/login-security/css/{admin-global.1629122067.css → admin-global.1634562195.css} +0 -0
- modules/login-security/css/{admin.1629122067.css → admin.1634562195.css} +0 -0
- modules/login-security/css/{colorbox.1629122067.css → colorbox.1634562195.css} +0 -0
- modules/login-security/css/{font-awesome.1629122067.css → font-awesome.1634562195.css} +0 -0
- modules/login-security/css/{ionicons.1629122067.css → ionicons.1634562195.css} +0 -0
- modules/login-security/css/{jquery-ui.min.1629122067.css → jquery-ui.min.1634562195.css} +0 -0
- modules/login-security/css/{jquery-ui.structure.min.1629122067.css → jquery-ui.structure.min.1634562195.css} +0 -0
- modules/login-security/css/{jquery-ui.theme.min.1629122067.css → jquery-ui.theme.min.1634562195.css} +0 -0
- modules/login-security/css/{login.1629122067.css → login.1634562195.css} +0 -0
- modules/login-security/js/{admin-global.1629122067.js → admin-global.1634562195.js} +0 -0
- modules/login-security/js/{admin.1629122067.js → admin.1634562195.js} +0 -0
- modules/login-security/js/{jquery.colorbox.1629122067.js → jquery.colorbox.1634562195.js} +0 -0
- modules/login-security/js/{jquery.colorbox.min.1629122067.js → jquery.colorbox.min.1634562195.js} +0 -0
- modules/login-security/js/{jquery.qrcode.min.1629122067.js → jquery.qrcode.min.1634562195.js} +0 -0
- modules/login-security/js/{jquery.tmpl.min.1629122067.js → jquery.tmpl.min.1634562195.js} +0 -0
- modules/login-security/js/{login.1629122067.js → login.1634562195.js} +159 -29
- modules/login-security/wordfence-login-security.php +2 -2
- readme.txt +5 -1
- wordfence.php +3 -3
css/{activity-report-widget.1629122067.css → activity-report-widget.1634562195.css}
RENAMED
File without changes
|
css/{diff.1629122067.css → diff.1634562195.css}
RENAMED
File without changes
|
css/{dt_table.1629122067.css → dt_table.1634562195.css}
RENAMED
File without changes
|
css/{fullLog.1629122067.css → fullLog.1634562195.css}
RENAMED
File without changes
|
css/{iptraf.1629122067.css → iptraf.1634562195.css}
RENAMED
File without changes
|
css/{jquery-ui-timepicker-addon.1629122067.css → jquery-ui-timepicker-addon.1634562195.css}
RENAMED
File without changes
|
css/{jquery-ui.min.1629122067.css → jquery-ui.min.1634562195.css}
RENAMED
File without changes
|
css/{jquery-ui.structure.min.1629122067.css → jquery-ui.structure.min.1634562195.css}
RENAMED
File without changes
|
css/{jquery-ui.theme.min.1629122067.css → jquery-ui.theme.min.1634562195.css}
RENAMED
File without changes
|
css/{main.1629122067.css → main.1634562195.css}
RENAMED
File without changes
|
css/{phpinfo.1629122067.css → phpinfo.1634562195.css}
RENAMED
File without changes
|
css/{wf-adminbar.1629122067.css → wf-adminbar.1634562195.css}
RENAMED
File without changes
|
css/{wf-colorbox.1629122067.css → wf-colorbox.1634562195.css}
RENAMED
File without changes
|
css/{wf-font-awesome.1629122067.css → wf-font-awesome.1634562195.css}
RENAMED
File without changes
|
css/{wf-global.1629122067.css → wf-global.1634562195.css}
RENAMED
File without changes
|
css/{wf-ionicons.1629122067.css → wf-ionicons.1634562195.css}
RENAMED
File without changes
|
css/{wf-onboarding.1629122067.css → wf-onboarding.1634562195.css}
RENAMED
File without changes
|
css/{wf-roboto-font.1629122067.css → wf-roboto-font.1634562195.css}
RENAMED
File without changes
|
css/{wfselect2.min.1629122067.css → wfselect2.min.1634562195.css}
RENAMED
File without changes
|
css/{wordfenceBox.1629122067.css → wordfenceBox.1634562195.css}
RENAMED
File without changes
|
js/{Chart.bundle.min.1629122067.js → Chart.bundle.min.1634562195.js}
RENAMED
File without changes
|
js/{admin.1629122067.js → admin.1634562195.js}
RENAMED
File without changes
|
js/{admin.ajaxWatcher.1629122067.js → admin.ajaxWatcher.1634562195.js}
RENAMED
File without changes
|
js/{admin.liveTraffic.1629122067.js → admin.liveTraffic.1634562195.js}
RENAMED
File without changes
|
js/{date.1629122067.js → date.1634562195.js}
RENAMED
File without changes
|
js/{jquery-ui-timepicker-addon.1629122067.js → jquery-ui-timepicker-addon.1634562195.js}
RENAMED
File without changes
|
js/{jquery.colorbox-min.1629122067.js → jquery.colorbox-min.1634562195.js}
RENAMED
File without changes
|
js/{jquery.colorbox.1629122067.js → jquery.colorbox.1634562195.js}
RENAMED
File without changes
|
js/{jquery.dataTables.min.1629122067.js → jquery.dataTables.min.1634562195.js}
RENAMED
File without changes
|
js/{jquery.qrcode.min.1629122067.js → jquery.qrcode.min.1634562195.js}
RENAMED
File without changes
|
js/{jquery.tmpl.min.1629122067.js → jquery.tmpl.min.1634562195.js}
RENAMED
File without changes
|
js/{jquery.tools.min.1629122067.js → jquery.tools.min.1634562195.js}
RENAMED
File without changes
|
js/{knockout-3.5.1.1629122067.js → knockout-3.5.1.1634562195.js}
RENAMED
File without changes
|
js/{wfdashboard.1629122067.js → wfdashboard.1634562195.js}
RENAMED
File without changes
|
js/{wfdropdown.1629122067.js → wfdropdown.1634562195.js}
RENAMED
File without changes
|
js/{wfglobal.1629122067.js → wfglobal.1634562195.js}
RENAMED
File without changes
|
js/{wfi18n.1629122067.js → wfi18n.1634562195.js}
RENAMED
File without changes
|
js/{wfpopover.1629122067.js → wfpopover.1634562195.js}
RENAMED
File without changes
|
js/{wfselect2.min.1629122067.js → wfselect2.min.1634562195.js}
RENAMED
File without changes
|
languages/wordfence.po
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the same license as the Wordfence Security plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Wordfence Security 7.5.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2021-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: wordfence\n"
|
2 |
# This file is distributed under the same license as the Wordfence Security plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Wordfence Security 7.5.6\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2021-10-18T08:53:50-04:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: wordfence\n"
|
modules/login-security/css/{admin-global.1629122067.css → admin-global.1634562195.css}
RENAMED
File without changes
|
modules/login-security/css/{admin.1629122067.css → admin.1634562195.css}
RENAMED
File without changes
|
modules/login-security/css/{colorbox.1629122067.css → colorbox.1634562195.css}
RENAMED
File without changes
|
modules/login-security/css/{font-awesome.1629122067.css → font-awesome.1634562195.css}
RENAMED
File without changes
|
modules/login-security/css/{ionicons.1629122067.css → ionicons.1634562195.css}
RENAMED
File without changes
|
modules/login-security/css/{jquery-ui.min.1629122067.css → jquery-ui.min.1634562195.css}
RENAMED
File without changes
|
modules/login-security/css/{jquery-ui.structure.min.1629122067.css → jquery-ui.structure.min.1634562195.css}
RENAMED
File without changes
|
modules/login-security/css/{jquery-ui.theme.min.1629122067.css → jquery-ui.theme.min.1634562195.css}
RENAMED
File without changes
|
modules/login-security/css/{login.1629122067.css → login.1634562195.css}
RENAMED
File without changes
|
modules/login-security/js/{admin-global.1629122067.js → admin-global.1634562195.js}
RENAMED
File without changes
|
modules/login-security/js/{admin.1629122067.js → admin.1634562195.js}
RENAMED
File without changes
|
modules/login-security/js/{jquery.colorbox.1629122067.js → jquery.colorbox.1634562195.js}
RENAMED
File without changes
|
modules/login-security/js/{jquery.colorbox.min.1629122067.js → jquery.colorbox.min.1634562195.js}
RENAMED
File without changes
|
modules/login-security/js/{jquery.qrcode.min.1629122067.js → jquery.qrcode.min.1634562195.js}
RENAMED
File without changes
|
modules/login-security/js/{jquery.tmpl.min.1629122067.js → jquery.tmpl.min.1634562195.js}
RENAMED
File without changes
|
modules/login-security/js/{login.1629122067.js → login.1634562195.js}
RENAMED
@@ -1,9 +1,101 @@
|
|
1 |
(function($) {
|
2 |
!function(Z){"use strict";Z.Zebra_Tooltips=function(t,l){var u,T,b,v,n={animation_speed:250,animation_offset:20,close_on_click:!0,content:!(this.version="2.1.0"),hide_delay:100,keep_visible:!0,max_width:250,opacity:".95",position:"center",prerender:!1,show_delay:100,vertical_alignment:"above",vertical_offset:0,onBeforeHide:null,onHide:null,onBeforeShow:null,onShow:null},r=this,_=function(e){var t,o,i,a,l,n,r,_,s,p,d,h,c,f,w=e.data("Zebra_Tooltip"),m=Z(window);return w.tooltip||(t=Z("<div>",{"class":"Zebra_Tooltip",css:{opacity:0,display:"block"}}),o=Z("<div>",{"class":"Zebra_Tooltip_Message",css:{maxWidth:w.max_width}}).html(w.content).appendTo(t),i=Z("<div>",{"class":"Zebra_Tooltip_Arrow"}).appendTo(t),a=Z("<div>").addClass("Zebra_Tooltip_Arrow_Border").appendTo(i),Z("<div>").appendTo(i),w.keep_visible&&(t.on("mouseleave"+(w.close_on_click?" click":""),function(){y(e)}),t.on("mouseenter",function(){g(e)})),t.appendTo("body"),w.sticky&&o.addClass("Zebra_Tooltip_Has_Close"),l=t.outerWidth(),n=t.outerHeight(),r=a.outerWidth(),_=a.outerHeight(),s=o.outerWidth(),p=o.outerHeight(),w={tooltip:t,tooltip_width:l,tooltip_height:n+_/2,message:o,arrow_container:i,arrow_width:r,arrow_height:_,arrow:a},t.css({width:w.tooltip_width,height:w.tooltip_height}),w.tooltip_width=w.tooltip_width+(o.outerWidth()-s),w.tooltip_height=w.tooltip_height+(o.outerHeight()-p),t.css({width:w.tooltip_width,height:w.tooltip_height,display:"none"}),w=Z.extend(e.data("Zebra_Tooltip"),w),e.data("Zebra_Tooltip",w)),w.sticky&&!w.close&&(Z("<a>",{"class":"Zebra_Tooltip_Close",href:"javascript:void(0)"}).html("×").on("click",function(t){t.preventDefault();var o=e.data("Zebra_Tooltip");o.sticky=!1,e.data("Zebra_Tooltip",o),y(e)}).appendTo(w.message),w.close=!0,w=Z.extend(e.data("Zebra_Tooltip"),w),e.data("Zebra_Tooltip",w)),u=m.width(),T=m.height(),d=e.offset(),Z.extend(w,{element_left:d.left,element_top:d.top,element_width:e.outerWidth(),element_height:e.outerHeight()}),v=m.scrollTop(),b=m.scrollLeft(),h="left"===w.position?w.element_left-w.tooltip_width+w.arrow_width:"right"===w.position?w.element_left+w.element_width-w.arrow_width:w.element_left+(w.element_width-w.tooltip_width)/2,c=w.element_top-w.tooltip_height,f="left"===w.position?w.tooltip_width-w.arrow_width-w.arrow_width/2:"right"===w.position?w.arrow_width/2:(w.tooltip_width-w.arrow_width)/2,h+w.tooltip_width>u+b&&(f-=u+b-(h+w.tooltip_width)-6,h=u+b-w.tooltip_width-6,f+w.arrow_width>w.tooltip_width-6&&(f=w.tooltip_width-6-w.arrow_width),h+f+w.arrow_width/2<w.element_left&&(f=-1e4)),h<b&&(f-=b-h,h=b+2,f<0&&(f=w.arrow_width/2),h+f+w.arrow_width/2>w.element_left+w.element_width&&(f=-1e4)),w.message.css("margin-top",""),w.arrow_container.removeClass("Zebra_Tooltip_Arrow_Top").addClass("Zebra_Tooltip_Arrow_Bottom"),c<v||"below"===w.vertical_alignment&&w.element_top+w.element_height+w.vertical_offset+w.tooltip_height+w.animation_offset<T+v?(c=w.element_top+w.element_height-w.vertical_offset,w.animation_offset=Math.abs(w.animation_offset),w.message.css("margin-top",w.arrow_height/2),w.arrow_container.removeClass("Zebra_Tooltip_Arrow_Bottom").addClass("Zebra_Tooltip_Arrow_Top")):(w.animation_offset=-Math.abs(w.animation_offset),c+=w.vertical_offset),w.arrow_container.css("left",f),w.tooltip.css({left:h,top:c}),Z.extend(w,{tooltip_left:h,tooltip_top:c,arrow_left:f}),w=Z.extend(e.data("Zebra_Tooltip"),w),e.data("Zebra_Tooltip",w),w},g=function(t){var o=t.data("Zebra_Tooltip");clearTimeout(o.show_timeout),o.muted||(clearTimeout(o.hide_timeout),o.show_timeout=setTimeout(function(){(o=_(t)).onBeforeShow&&"function"==typeof o.onBeforeShow&&!1===o.onBeforeShow(t,o.tooltip)||("block"!==o.tooltip.css("display")&&o.tooltip.css({top:o.tooltip_top+o.animation_offset}),o.tooltip.css("display","block"),o.tooltip.stop(),o.tooltip.animate({top:o.tooltip_top,opacity:o.opacity},o.animation_speed,function(){o.onShow&&"function"==typeof o.onShow&&o.onShow(t,o.tooltip)}))},o.show_delay))},y=function(t){var o=t.data("Zebra_Tooltip");clearTimeout(o.hide_timeout),o.sticky||(clearTimeout(o.show_timeout),o.hide_timeout=setTimeout(function(){if(o.tooltip){if(o.onBeforeHide&&"function"==typeof o.onBeforeHide&&!1===o.onBeforeHide(t,o.tooltip))return;o.close=!1,o.destroy&&(o.muted=!0),t.data("Zebra_Tooltip",o),Z("a.Zebra_Tooltip_Close",o.tooltip).remove(),o.tooltip.stop(),o.tooltip.animate({opacity:0,top:o.tooltip_top+o.animation_offset},o.animation_speed,function(){Z(this).css("display","none"),o.onHide&&"function"==typeof o.onHide&&o.onHide(t,o.tooltip)})}},o.hide_delay))};r.hide=function(t,e){t.each(function(){var t=Z(this),o=t.data("Zebra_Tooltip");o&&(o.sticky=!1,e&&(o.destroy=!0),t.data("Zebra_Tooltip",o),y(t))})},r.show=function(t,e){t.each(function(){var t=Z(this),o=t.data("Zebra_Tooltip");o&&(o.sticky=!0,o.muted=!1,e&&(o.destroy=!0),t.data("Zebra_Tooltip",o),g(t))})},t.each(function(){var t,o=Z(this),e=o.attr("title"),i=o.data(),a={};for(t in i)0===t.indexOf("ztt_")&&(t=t.replace(/^ztt\_/,""),void 0!==n[t]&&(a[t]=i["ztt_"+t]));a=Z.extend(n,r.settings,l,a),e&&(a.content=o.attr("title")),void 0!==a.content&&""!==a.content.trim()&&(o.on({mouseenter:function(){e&&Z(this).attr("title",""),g(o)},mouseleave:function(){y(o),e&&Z(this).attr("title",e)}}),o.data("Zebra_Tooltip",Z.extend({tooltip:null,show_timeout:null,hide_timeout:null,sticky:!1,destroy:!1,muted:!1},a)),a.prerender&&_(o))})}}($);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
var wfls_init_captcha = function(actionCallback, log) {
|
5 |
if (typeof log === 'undefined')
|
6 |
-
log =
|
7 |
if (typeof grecaptcha === 'object') {
|
8 |
grecaptcha.ready(function() {
|
9 |
grecaptcha.execute(WFLSVars.recaptchasitekey, {action: 'login'}).then(function(token) {
|
@@ -48,6 +140,7 @@
|
|
48 |
dom.html(messageHtml);
|
49 |
heading.after(dom);
|
50 |
dom.get(0).scrollIntoView();
|
|
|
51 |
}
|
52 |
else if ($('.woocommerce').length > 0){
|
53 |
var content = $('<div class="woocommerce wfls-login-message">');
|
@@ -55,12 +148,57 @@
|
|
55 |
.addClass(type === 'error' ? 'woocommerce-error' : 'woocommerce-info');
|
56 |
content.append(errorList);
|
57 |
errorList.append($('<li>').html(messageHtml));
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
}
|
65 |
|
66 |
|
@@ -69,8 +207,7 @@
|
|
69 |
e.preventDefault();
|
70 |
e.stopPropagation();
|
71 |
|
72 |
-
|
73 |
-
if (log.length) {
|
74 |
$('#wfls-prompt-overlay').remove();
|
75 |
var overlay = $('<div id="wfls-prompt-overlay"></div>');
|
76 |
var wrapper = $('<div id="wfls-prompt-wrapper"></div>');
|
@@ -79,7 +216,7 @@
|
|
79 |
var button = $('<p class="submit"><input type="submit" name="wfls-support-submit" id="wfls-support-submit" class="button button-primary button-large" value="Send"/></p>');
|
80 |
wrapper.append(field).append(nonce).append(button);
|
81 |
overlay.append(wrapper);
|
82 |
-
|
83 |
|
84 |
$('#wfls-message-nonce').val($(this).data('token'));
|
85 |
|
@@ -89,7 +226,7 @@
|
|
89 |
|
90 |
$('#login_error, p.message').remove();
|
91 |
|
92 |
-
var data =
|
93 |
data += '&action=wordfence_ls_register_support';
|
94 |
|
95 |
$.ajax({
|
@@ -125,18 +262,14 @@
|
|
125 |
|
126 |
var wfls_query_ajax = function() {
|
127 |
$('.wfls-login-message').remove();
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
var form = null;
|
132 |
-
if (log.length && pwd.length) {
|
133 |
-
form = log.closest('form');
|
134 |
-
}
|
135 |
-
|
136 |
-
if (form === null) {
|
137 |
-
console.log('Expected fields not found, try reloading page.');
|
138 |
return;
|
139 |
}
|
|
|
|
|
|
|
140 |
|
141 |
var data = $(form).serialize();
|
142 |
data += '&action=wordfence_ls_authenticate';
|
@@ -249,10 +382,8 @@
|
|
249 |
|
250 |
$(function() {
|
251 |
//Login
|
252 |
-
|
253 |
-
|
254 |
-
if (log.length && pwd.length) {
|
255 |
-
log.closest('form').on('submit', function(e) {
|
256 |
var loggingIn = !!parseInt($(this).data('wflsLoggingIn'));
|
257 |
$(this).data('wflsLoggingIn', 0);
|
258 |
if (loggingIn) { return; }
|
@@ -270,9 +401,8 @@
|
|
270 |
}
|
271 |
|
272 |
//Registration
|
273 |
-
|
274 |
-
|
275 |
-
log.closest('form').on('submit', function(e) {
|
276 |
var form = $(this);
|
277 |
var registering = !!parseInt(form.data('wflsRegistering'));
|
278 |
form.data('wflsRegistering', 0);
|
@@ -281,7 +411,7 @@
|
|
281 |
e.stopPropagation();
|
282 |
|
283 |
form.data('wflsRegistering', 1);
|
284 |
-
wfls_init_captcha(function() { form.find('[type=submit]').first().trigger('click'); },
|
285 |
}
|
286 |
});
|
287 |
}
|
@@ -291,7 +421,7 @@
|
|
291 |
verificationField.val(WFLSVars.verification);
|
292 |
}
|
293 |
else {
|
294 |
-
var log =
|
295 |
if (log.length) {
|
296 |
verificationField = $('<input type="hidden" name="wfls-email-verification" id="wfls-email-verification" />');
|
297 |
verificationField.val(WFLSVars.verification);
|
1 |
(function($) {
|
2 |
!function(Z){"use strict";Z.Zebra_Tooltips=function(t,l){var u,T,b,v,n={animation_speed:250,animation_offset:20,close_on_click:!0,content:!(this.version="2.1.0"),hide_delay:100,keep_visible:!0,max_width:250,opacity:".95",position:"center",prerender:!1,show_delay:100,vertical_alignment:"above",vertical_offset:0,onBeforeHide:null,onHide:null,onBeforeShow:null,onShow:null},r=this,_=function(e){var t,o,i,a,l,n,r,_,s,p,d,h,c,f,w=e.data("Zebra_Tooltip"),m=Z(window);return w.tooltip||(t=Z("<div>",{"class":"Zebra_Tooltip",css:{opacity:0,display:"block"}}),o=Z("<div>",{"class":"Zebra_Tooltip_Message",css:{maxWidth:w.max_width}}).html(w.content).appendTo(t),i=Z("<div>",{"class":"Zebra_Tooltip_Arrow"}).appendTo(t),a=Z("<div>").addClass("Zebra_Tooltip_Arrow_Border").appendTo(i),Z("<div>").appendTo(i),w.keep_visible&&(t.on("mouseleave"+(w.close_on_click?" click":""),function(){y(e)}),t.on("mouseenter",function(){g(e)})),t.appendTo("body"),w.sticky&&o.addClass("Zebra_Tooltip_Has_Close"),l=t.outerWidth(),n=t.outerHeight(),r=a.outerWidth(),_=a.outerHeight(),s=o.outerWidth(),p=o.outerHeight(),w={tooltip:t,tooltip_width:l,tooltip_height:n+_/2,message:o,arrow_container:i,arrow_width:r,arrow_height:_,arrow:a},t.css({width:w.tooltip_width,height:w.tooltip_height}),w.tooltip_width=w.tooltip_width+(o.outerWidth()-s),w.tooltip_height=w.tooltip_height+(o.outerHeight()-p),t.css({width:w.tooltip_width,height:w.tooltip_height,display:"none"}),w=Z.extend(e.data("Zebra_Tooltip"),w),e.data("Zebra_Tooltip",w)),w.sticky&&!w.close&&(Z("<a>",{"class":"Zebra_Tooltip_Close",href:"javascript:void(0)"}).html("×").on("click",function(t){t.preventDefault();var o=e.data("Zebra_Tooltip");o.sticky=!1,e.data("Zebra_Tooltip",o),y(e)}).appendTo(w.message),w.close=!0,w=Z.extend(e.data("Zebra_Tooltip"),w),e.data("Zebra_Tooltip",w)),u=m.width(),T=m.height(),d=e.offset(),Z.extend(w,{element_left:d.left,element_top:d.top,element_width:e.outerWidth(),element_height:e.outerHeight()}),v=m.scrollTop(),b=m.scrollLeft(),h="left"===w.position?w.element_left-w.tooltip_width+w.arrow_width:"right"===w.position?w.element_left+w.element_width-w.arrow_width:w.element_left+(w.element_width-w.tooltip_width)/2,c=w.element_top-w.tooltip_height,f="left"===w.position?w.tooltip_width-w.arrow_width-w.arrow_width/2:"right"===w.position?w.arrow_width/2:(w.tooltip_width-w.arrow_width)/2,h+w.tooltip_width>u+b&&(f-=u+b-(h+w.tooltip_width)-6,h=u+b-w.tooltip_width-6,f+w.arrow_width>w.tooltip_width-6&&(f=w.tooltip_width-6-w.arrow_width),h+f+w.arrow_width/2<w.element_left&&(f=-1e4)),h<b&&(f-=b-h,h=b+2,f<0&&(f=w.arrow_width/2),h+f+w.arrow_width/2>w.element_left+w.element_width&&(f=-1e4)),w.message.css("margin-top",""),w.arrow_container.removeClass("Zebra_Tooltip_Arrow_Top").addClass("Zebra_Tooltip_Arrow_Bottom"),c<v||"below"===w.vertical_alignment&&w.element_top+w.element_height+w.vertical_offset+w.tooltip_height+w.animation_offset<T+v?(c=w.element_top+w.element_height-w.vertical_offset,w.animation_offset=Math.abs(w.animation_offset),w.message.css("margin-top",w.arrow_height/2),w.arrow_container.removeClass("Zebra_Tooltip_Arrow_Bottom").addClass("Zebra_Tooltip_Arrow_Top")):(w.animation_offset=-Math.abs(w.animation_offset),c+=w.vertical_offset),w.arrow_container.css("left",f),w.tooltip.css({left:h,top:c}),Z.extend(w,{tooltip_left:h,tooltip_top:c,arrow_left:f}),w=Z.extend(e.data("Zebra_Tooltip"),w),e.data("Zebra_Tooltip",w),w},g=function(t){var o=t.data("Zebra_Tooltip");clearTimeout(o.show_timeout),o.muted||(clearTimeout(o.hide_timeout),o.show_timeout=setTimeout(function(){(o=_(t)).onBeforeShow&&"function"==typeof o.onBeforeShow&&!1===o.onBeforeShow(t,o.tooltip)||("block"!==o.tooltip.css("display")&&o.tooltip.css({top:o.tooltip_top+o.animation_offset}),o.tooltip.css("display","block"),o.tooltip.stop(),o.tooltip.animate({top:o.tooltip_top,opacity:o.opacity},o.animation_speed,function(){o.onShow&&"function"==typeof o.onShow&&o.onShow(t,o.tooltip)}))},o.show_delay))},y=function(t){var o=t.data("Zebra_Tooltip");clearTimeout(o.hide_timeout),o.sticky||(clearTimeout(o.show_timeout),o.hide_timeout=setTimeout(function(){if(o.tooltip){if(o.onBeforeHide&&"function"==typeof o.onBeforeHide&&!1===o.onBeforeHide(t,o.tooltip))return;o.close=!1,o.destroy&&(o.muted=!0),t.data("Zebra_Tooltip",o),Z("a.Zebra_Tooltip_Close",o.tooltip).remove(),o.tooltip.stop(),o.tooltip.animate({opacity:0,top:o.tooltip_top+o.animation_offset},o.animation_speed,function(){Z(this).css("display","none"),o.onHide&&"function"==typeof o.onHide&&o.onHide(t,o.tooltip)})}},o.hide_delay))};r.hide=function(t,e){t.each(function(){var t=Z(this),o=t.data("Zebra_Tooltip");o&&(o.sticky=!1,e&&(o.destroy=!0),t.data("Zebra_Tooltip",o),y(t))})},r.show=function(t,e){t.each(function(){var t=Z(this),o=t.data("Zebra_Tooltip");o&&(o.sticky=!0,o.muted=!1,e&&(o.destroy=!0),t.data("Zebra_Tooltip",o),g(t))})},t.each(function(){var t,o=Z(this),e=o.attr("title"),i=o.data(),a={};for(t in i)0===t.indexOf("ztt_")&&(t=t.replace(/^ztt\_/,""),void 0!==n[t]&&(a[t]=i["ztt_"+t]));a=Z.extend(n,r.settings,l,a),e&&(a.content=o.attr("title")),void 0!==a.content&&""!==a.content.trim()&&(o.on({mouseenter:function(){e&&Z(this).attr("title",""),g(o)},mouseleave:function(){y(o),e&&Z(this).attr("title",e)}}),o.data("Zebra_Tooltip",Z.extend({tooltip:null,show_timeout:null,hide_timeout:null,sticky:!1,destroy:!1,muted:!1},a)),a.prerender&&_(o))})}}($);
|
3 |
+
|
4 |
+
function selectorSearch(selectors) {
|
5 |
+
var input = null;
|
6 |
+
return function() {
|
7 |
+
if (input !== null)
|
8 |
+
return input;
|
9 |
+
for (var i = 0; i < selectors.length; i++) {
|
10 |
+
input = $(selectors[i]);
|
11 |
+
if (input.length === 1)
|
12 |
+
return input;
|
13 |
+
}
|
14 |
+
input = null;
|
15 |
+
return input;
|
16 |
+
}
|
17 |
+
};
|
18 |
+
function FormElementLocator(inputSelectors, extraSelectors) {
|
19 |
+
var self = this;
|
20 |
+
|
21 |
+
if (typeof extraSelectors == 'undefined')
|
22 |
+
extraSelectors = {};
|
23 |
+
|
24 |
+
var found = false;
|
25 |
+
var input = null, form = null, extra = {};
|
26 |
+
|
27 |
+
var findInput = selectorSearch(inputSelectors);
|
28 |
+
var search = function() {
|
29 |
+
input = findInput();
|
30 |
+
if (input === null)
|
31 |
+
return false;
|
32 |
+
form = input.closest('form');
|
33 |
+
if (form.length !== 1) {
|
34 |
+
form = null;
|
35 |
+
return false;
|
36 |
+
}
|
37 |
+
for (var key in extraSelectors) {
|
38 |
+
var match = form.find(extraSelectors[key]);
|
39 |
+
if (match.length === 1) {
|
40 |
+
extra[key] = match;
|
41 |
+
}
|
42 |
+
else {
|
43 |
+
return false;
|
44 |
+
}
|
45 |
+
}
|
46 |
+
return true;
|
47 |
+
};
|
48 |
+
this.locate = function() {
|
49 |
+
if (!found)
|
50 |
+
found = search();
|
51 |
+
return found;
|
52 |
+
};
|
53 |
+
this.getInput = function() {
|
54 |
+
return found ? input : null;
|
55 |
+
};
|
56 |
+
this.getForm = function() {
|
57 |
+
return found ? form : null;
|
58 |
+
};
|
59 |
+
this.getExtra = function(key) {
|
60 |
+
if (key in extra)
|
61 |
+
return extra[key];
|
62 |
+
return null;
|
63 |
+
}
|
64 |
+
}
|
65 |
+
var loginLocator = new FormElementLocator(
|
66 |
+
[
|
67 |
+
'input[name=log]',
|
68 |
+
'input[name=username]',
|
69 |
+
'input#username[name=username]',
|
70 |
+
'.woocommerce-form-login input[name=username]',
|
71 |
+
'.login input[name=username]'
|
72 |
+
],
|
73 |
+
{
|
74 |
+
password: 'input[name="pwd"],input[name=password]'
|
75 |
+
}
|
76 |
+
);
|
77 |
+
var registrationLocator = new FormElementLocator([
|
78 |
+
'input[name=user_login]',
|
79 |
+
'#reg_email',
|
80 |
+
'.woocommerce-form-register input[name=email]',
|
81 |
+
'.register input[name=email]'
|
82 |
+
]);
|
83 |
+
var locators = [
|
84 |
+
loginLocator,
|
85 |
+
registrationLocator
|
86 |
+
];
|
87 |
+
function getRelevantInputs() {
|
88 |
+
var inputs = $();
|
89 |
+
for (var i = 0; i < locators.length; i++) {
|
90 |
+
if (locators[i].locate())
|
91 |
+
inputs = inputs.add(locators[i].getInput());
|
92 |
+
}
|
93 |
+
return inputs;
|
94 |
+
}
|
95 |
|
96 |
var wfls_init_captcha = function(actionCallback, log) {
|
97 |
if (typeof log === 'undefined')
|
98 |
+
log = getRelevantInputs();
|
99 |
if (typeof grecaptcha === 'object') {
|
100 |
grecaptcha.ready(function() {
|
101 |
grecaptcha.execute(WFLSVars.recaptchasitekey, {action: 'login'}).then(function(token) {
|
140 |
dom.html(messageHtml);
|
141 |
heading.after(dom);
|
142 |
dom.get(0).scrollIntoView();
|
143 |
+
return;
|
144 |
}
|
145 |
else if ($('.woocommerce').length > 0){
|
146 |
var content = $('<div class="woocommerce wfls-login-message">');
|
148 |
.addClass(type === 'error' ? 'woocommerce-error' : 'woocommerce-info');
|
149 |
content.append(errorList);
|
150 |
errorList.append($('<li>').html(messageHtml));
|
151 |
+
var containerSearch = selectorSearch([
|
152 |
+
'#primary',
|
153 |
+
'.content-area',
|
154 |
+
'#main',
|
155 |
+
'.site-main',
|
156 |
+
'main'
|
157 |
+
]);
|
158 |
+
var container = containerSearch();
|
159 |
+
if (container === null) {
|
160 |
+
container = loginLocator.getForm();
|
161 |
+
}
|
162 |
+
if (container !== null) {
|
163 |
+
container.before(content);
|
164 |
+
content.get(0).scrollIntoView();
|
165 |
+
return;
|
166 |
+
}
|
167 |
}
|
168 |
+
var messageModal = $('<div>')
|
169 |
+
.attr('id', 'wfls-login-modal')
|
170 |
+
.css({
|
171 |
+
position: 'fixed',
|
172 |
+
top: 0,
|
173 |
+
right: 0,
|
174 |
+
bottom: 0,
|
175 |
+
left: 0,
|
176 |
+
'background-color': 'rgba(0,0,0,0.5)',
|
177 |
+
'z-index': 9999,
|
178 |
+
display: 'flex',
|
179 |
+
'align-items': 'center',
|
180 |
+
'justify-content': 'center',
|
181 |
+
padding: '16px'
|
182 |
+
})
|
183 |
+
.appendTo($('body'));
|
184 |
+
messageModal.append(
|
185 |
+
$('<div>')
|
186 |
+
.css({
|
187 |
+
'background-color': '#FFF',
|
188 |
+
'border-radius': '4px',
|
189 |
+
padding: '16px',
|
190 |
+
'text-align': 'center'
|
191 |
+
})
|
192 |
+
.append(
|
193 |
+
$('<p>').html(messageHtml)
|
194 |
+
)
|
195 |
+
.append(
|
196 |
+
$('<button>').text('Dismiss')
|
197 |
+
.on('click', function() {
|
198 |
+
messageModal.remove();
|
199 |
+
})
|
200 |
+
)
|
201 |
+
);
|
202 |
}
|
203 |
|
204 |
|
207 |
e.preventDefault();
|
208 |
e.stopPropagation();
|
209 |
|
210 |
+
if (registrationLocator.locate()) {
|
|
|
211 |
$('#wfls-prompt-overlay').remove();
|
212 |
var overlay = $('<div id="wfls-prompt-overlay"></div>');
|
213 |
var wrapper = $('<div id="wfls-prompt-wrapper"></div>');
|
216 |
var button = $('<p class="submit"><input type="submit" name="wfls-support-submit" id="wfls-support-submit" class="button button-primary button-large" value="Send"/></p>');
|
217 |
wrapper.append(field).append(nonce).append(button);
|
218 |
overlay.append(wrapper);
|
219 |
+
registrationLocator.getForm().css('position', 'relative').append(overlay);
|
220 |
|
221 |
$('#wfls-message-nonce').val($(this).data('token'));
|
222 |
|
226 |
|
227 |
$('#login_error, p.message').remove();
|
228 |
|
229 |
+
var data = registrationLocator.getForm().serialize();
|
230 |
data += '&action=wordfence_ls_register_support';
|
231 |
|
232 |
$.ajax({
|
262 |
|
263 |
var wfls_query_ajax = function() {
|
264 |
$('.wfls-login-message').remove();
|
265 |
+
|
266 |
+
if (!loginLocator.locate()) {
|
267 |
+
console.error('Required login elements not found');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
return;
|
269 |
}
|
270 |
+
var form = loginLocator.getForm();
|
271 |
+
var log = loginLocator.getInput();
|
272 |
+
var pwd = loginLocator.getExtra('password');
|
273 |
|
274 |
var data = $(form).serialize();
|
275 |
data += '&action=wordfence_ls_authenticate';
|
382 |
|
383 |
$(function() {
|
384 |
//Login
|
385 |
+
if (loginLocator.locate()) {
|
386 |
+
loginLocator.getForm().on('submit', function(e) {
|
|
|
|
|
387 |
var loggingIn = !!parseInt($(this).data('wflsLoggingIn'));
|
388 |
$(this).data('wflsLoggingIn', 0);
|
389 |
if (loggingIn) { return; }
|
401 |
}
|
402 |
|
403 |
//Registration
|
404 |
+
if (registrationLocator.locate()) {
|
405 |
+
registrationLocator.getForm().on('submit', function(e) {
|
|
|
406 |
var form = $(this);
|
407 |
var registering = !!parseInt(form.data('wflsRegistering'));
|
408 |
form.data('wflsRegistering', 0);
|
411 |
e.stopPropagation();
|
412 |
|
413 |
form.data('wflsRegistering', 1);
|
414 |
+
wfls_init_captcha(function() { form.find('[type=submit]').first().trigger('click'); }, registrationLocator.getInput());
|
415 |
}
|
416 |
});
|
417 |
}
|
421 |
verificationField.val(WFLSVars.verification);
|
422 |
}
|
423 |
else {
|
424 |
+
var log = getRelevantInputs();
|
425 |
if (log.length) {
|
426 |
verificationField = $('<input type="hidden" name="wfls-email-verification" id="wfls-email-verification" />');
|
427 |
verificationField.val(WFLSVars.verification);
|
modules/login-security/wordfence-login-security.php
CHANGED
@@ -26,8 +26,8 @@ if ($wfCoreActive && !(isset($wfCoreLoading) && $wfCoreLoading)) {
|
|
26 |
else {
|
27 |
define('WORDFENCE_LS_FROM_CORE', ($wfCoreActive && isset($wfCoreLoading) && $wfCoreLoading));
|
28 |
|
29 |
-
define('WORDFENCE_LS_VERSION', '1.0.
|
30 |
-
define('WORDFENCE_LS_BUILD_NUMBER', '
|
31 |
|
32 |
define('WORDFENCE_LS_PLUGIN_BASENAME', plugin_basename(__FILE__));
|
33 |
|
26 |
else {
|
27 |
define('WORDFENCE_LS_FROM_CORE', ($wfCoreActive && isset($wfCoreLoading) && $wfCoreLoading));
|
28 |
|
29 |
+
define('WORDFENCE_LS_VERSION', '1.0.9');
|
30 |
+
define('WORDFENCE_LS_BUILD_NUMBER', '1634562195');
|
31 |
|
32 |
define('WORDFENCE_LS_PLUGIN_BASENAME', plugin_basename(__FILE__));
|
33 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: security, firewall, malware scanner, web application firewall, two factor
|
|
4 |
Requires at least: 3.9
|
5 |
Requires PHP: 5.3
|
6 |
Tested up to: 5.8
|
7 |
-
Stable tag: 7.5.
|
8 |
|
9 |
Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more.
|
10 |
|
@@ -183,6 +183,10 @@ Secure your website with Wordfence.
|
|
183 |
|
184 |
== Changelog ==
|
185 |
|
|
|
|
|
|
|
|
|
186 |
= 7.5.5 - August 16, 2021 =
|
187 |
* Improvement: Enhanced accessibility
|
188 |
* Improvement: Replaced regex in scan log with signature ID
|
4 |
Requires at least: 3.9
|
5 |
Requires PHP: 5.3
|
6 |
Tested up to: 5.8
|
7 |
+
Stable tag: 7.5.6
|
8 |
|
9 |
Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more.
|
10 |
|
183 |
|
184 |
== Changelog ==
|
185 |
|
186 |
+
= 7.5.6 - October 18, 2021 =
|
187 |
+
* Fix: Prevented login errors with WooCommerce integration when manual username entry is enabled on the WooCommerce registration form
|
188 |
+
* Fix: Corrected theme incompatibilities with WooCommerce integration
|
189 |
+
|
190 |
= 7.5.5 - August 16, 2021 =
|
191 |
* Improvement: Enhanced accessibility
|
192 |
* Improvement: Replaced regex in scan log with signature ID
|
wordfence.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Wordfence Security
|
|
4 |
Plugin URI: http://www.wordfence.com/
|
5 |
Description: Wordfence Security - Anti-virus, Firewall and Malware Scan
|
6 |
Author: Wordfence
|
7 |
-
Version: 7.5.
|
8 |
Author URI: http://www.wordfence.com/
|
9 |
Text Domain: wordfence
|
10 |
Domain Path: /languages
|
@@ -19,8 +19,8 @@ if(defined('WP_INSTALLING') && WP_INSTALLING){
|
|
19 |
if (!defined('ABSPATH')) {
|
20 |
exit;
|
21 |
}
|
22 |
-
define('WORDFENCE_VERSION', '7.5.
|
23 |
-
define('WORDFENCE_BUILD_NUMBER', '
|
24 |
define('WORDFENCE_BASENAME', function_exists('plugin_basename') ? plugin_basename(__FILE__) :
|
25 |
basename(dirname(__FILE__)) . '/' . basename(__FILE__));
|
26 |
|
4 |
Plugin URI: http://www.wordfence.com/
|
5 |
Description: Wordfence Security - Anti-virus, Firewall and Malware Scan
|
6 |
Author: Wordfence
|
7 |
+
Version: 7.5.6
|
8 |
Author URI: http://www.wordfence.com/
|
9 |
Text Domain: wordfence
|
10 |
Domain Path: /languages
|
19 |
if (!defined('ABSPATH')) {
|
20 |
exit;
|
21 |
}
|
22 |
+
define('WORDFENCE_VERSION', '7.5.6');
|
23 |
+
define('WORDFENCE_BUILD_NUMBER', '1634562195');
|
24 |
define('WORDFENCE_BASENAME', function_exists('plugin_basename') ? plugin_basename(__FILE__) :
|
25 |
basename(dirname(__FILE__)) . '/' . basename(__FILE__));
|
26 |
|