Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
W
WordPress_SexHackMe_Plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
SexHackMe
WordPress_SexHackMe_Plugin
Commits
520e3bb5
Commit
520e3bb5
authored
Jul 11, 2022
by
Stefy Lanza (nextime / spora )
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Let all loggedin users to access members page, no matter from
when they register
parent
124a77f7
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
193 additions
and
20 deletions
+193
-20
README.md
README.md
+16
-1
TODO.txt
TODO.txt
+18
-0
add_unlock_login.php
classes/add_unlock_login.php
+33
-6
woocommerce_email_checkout.php
classes/woocommerce_email_checkout.php
+34
-1
genutils.php
helpers/genutils.php
+28
-0
pmsutils.php
helpers/pmsutils.php
+60
-8
video.php
template/video.php
+4
-4
No files found.
README.md
View file @
520e3bb5
# SexHackMe Wordpress Plugin
This plugin is developed for the website https://www.sexhack.me
\ No newline at end of file
This plugin is developed for the website https://www.sexhack.me
The plugin is in a very early developement stage therefore
continuosly evolving and possibly still very bugged, so
please contact me if you like to use it at franco@nexlab.it
plugin dependencies aren't really fully managed (yet),
this is a list of the actual dependencies:
*
WooCommerce (core dependency)
*
Paid Members Subscriptions (core dependency)
*
Unlock Protocol (only if enabled in the general options)
It is also assumed you are using storefront as a theme in couple with
WooCommerce, but should work with other themes too.
TODO.txt
0 → 100644
View file @
520e3bb5
This is NOT a proper TODO list.
It's just a quick dirty list of things i want to
remember to do, mostly little refinery.
---------------------------------------
* Look at exporters/importers of user data: https://rudrastyh.com/wordpress/personal-data-exporters-and-erasers.html
* reduce duplication of code, database queries.
-------------------------------------
SOON OR LATER this plugin will be re-written to make some order and re-group
action, filters and so on with a better organizations of classes, hooks etc,
and then the initialization will be re-done from scratch removing the "sub plugin selection"
while we will remove dependencies from woocommerce, pms and the rest.
classes/add_unlock_login.php
View file @
520e3bb5
...
...
@@ -29,17 +29,44 @@ if(!class_exists('SexhackAddUnlockLogin')) {
add_filter
(
"login_form_bottom"
,
array
(
$this
,
"add_to_login"
),
10
,
2
);
add_action
(
"woocommerce_after_order_notes"
,
array
(
$this
,
"add_to_checkout"
));
add_filter
(
"pms_register_shortcode_content"
,
array
(
$this
,
"add_to_register"
),
10
,
2
);
add_filter
(
"unlock_authenticate_user"
,
array
(
$this
,
"fix_unlock_user"
),
11
,
1
);
sexhack_log
(
'SexhackAddUnlockLogin() Instanced'
);
}
public
function
get_proto
(){
if
(
is_ssl
())
{
return
'https://'
;
}
else
{
return
'http://'
;
}
public
function
get_proto
(){
return
get_proto
();
}
public
function
fix_unlock_user
(
$user
)
{
global
$sexhack_pms
;
if
(
is_object
(
$user
)
&&
is_valid_eth_address
(
$user
->
user_login
))
{
if
(
!
(
$sexhack_pms
->
is_member
(
$user
->
ID
))
&&
!
(
$sexhack_pms
->
is_premium
(
$user
->
ID
)))
{
$subscription_plan
=
$sexhack_pms
->
get_default_plan
();
if
(
$subscription_plan
)
{
$data
=
array
(
'user_id'
=>
$user
->
ID
,
'subscription_plan_id'
=>
$subscription_plan
->
id
,
'start_date'
=>
date
(
'Y-m-d H:i:s'
),
'expiration_date'
=>
$subscription_plan
->
get_expiration_date
(),
'status'
=>
'active'
,
);
$member_subscription
=
new
\PMS_Member_Subscription
();
$inserted
=
$member_subscription
->
insert
(
$data
);
}
}
}
return
$user
;
}
public
function
unlock_get_login_url
(
$redirect_url
=
false
)
{
$UNLOCK_BASE_URL
=
'https://app.unlock-protocol.com/checkout'
;
$rurl
=
apply_filters
(
'unlock_protocol_get_redirect_uri'
,
wp_login_url
());
...
...
classes/woocommerce_email_checkout.php
View file @
520e3bb5
...
...
@@ -28,6 +28,8 @@ if(!class_exists('WoocommerceEmailCheckout')) {
{
sexhack_log
(
'WoocommerceEmailCheckout() Instanced'
);
add_filter
(
'woocommerce_checkout_fields'
,
array
(
$this
,
'simplify_checkout_virtual'
)
);
add_filter
(
'woocommerce_login_redirect'
,
array
(
$this
,
'fix_woocommerce_user'
),
99
,
2
);
}
public
function
simplify_checkout_virtual
(
$fields
)
{
...
...
@@ -54,7 +56,38 @@ if(!class_exists('WoocommerceEmailCheckout')) {
}
return
$fields
;
}
}
public
function
fix_woocommerce_user
(
$redirect
,
$user
)
{
global
$sexhack_pms
;
if
(
is_object
(
$user
)
&&
is_checkout
())
{
if
(
!
(
$sexhack_pms
->
is_member
(
$user
->
ID
))
&&
!
(
$sexhack_pms
->
is_premium
(
$user
->
ID
)))
{
$subscription_plan
=
$sexhack_pms
->
get_default_plan
();
if
(
$subscription_plan
)
{
$data
=
array
(
'user_id'
=>
$user
->
ID
,
'subscription_plan_id'
=>
$subscription_plan
->
id
,
'start_date'
=>
date
(
'Y-m-d H:i:s'
),
'expiration_date'
=>
$subscription_plan
->
get_expiration_date
(),
'status'
=>
'active'
,
);
$member_subscription
=
new
\PMS_Member_Subscription
();
$inserted
=
$member_subscription
->
insert
(
$data
);
}
}
}
return
$redirect
;
}
}
}
...
...
helpers/genutils.php
View file @
520e3bb5
...
...
@@ -78,4 +78,32 @@ function do_dump_rewrite() {
add_action
(
'parse_request'
,
'wp_SexHackMe\sarca'
);
}
function
get_proto
(){
if
(
is_ssl
())
{
return
'https://'
;
}
else
{
return
'http://'
;
}
}
function
user_has_premium_access
(
$uid
=
''
)
{
global
$sexhack_pms
;
return
$sexhack_pms
->
is_premium
(
$uid
)
AND
is_user_logged_in
();
}
function
user_has_member_access
(
$uid
=
''
)
{
global
$sexhack_pms
;
if
(
$uid
)
return
$sexhack_pms
->
is_member
(
$uid
)
OR
$sexhack_pms
->
is_premium
(
$uid
);
return
is_user_logged_in
();
}
?>
helpers/pmsutils.php
View file @
520e3bb5
...
...
@@ -27,32 +27,84 @@ class SexHackPMSHelper
public
function
__construct
()
{
$this
->
plans
=
$this
->
get_pms_plantype
()
;
$this
->
plans
=
false
;
}
p
ublic
function
get_pms_plantype
()
p
rivate
function
set_pms_plans
()
{
$plans
=
array
(
'member'
=>
array
(),
'premium'
=>
array
()
);
'premium'
=>
array
(),
'byid'
=>
array
()
);
$splans
=
pms_get_subscription_plans
(
true
);
foreach
(
$splans
as
$splan
)
{
if
(
intval
(
$splan
->
price
)
==
0
)
$plans
[
'member'
][]
=
$splan
->
id
;
else
$plans
[
'premium'
][]
=
$splan
->
id
;
}
else
$plans
[
'premium'
][]
=
$splan
->
id
;
$plans
[
'byid'
][
$splan
->
id
]
=
$splan
;
}
$this
->
plans
=
$plans
;
return
$plans
;
}
public
function
refresh_plans
()
{
$this
->
plans
=
set_pms_plans
();
return
$this
->
plans
;
}
// XXX Here we just return the first "member" (free) plan
// if any in our array.
//
// I should probably make it configurable with an option?
// And should not be limited to the free ones?
public
function
get_default_plan
()
{
if
(
!
$this
->
plans
)
$this
->
set_pms_plans
();
if
(
count
(
$this
->
plans
[
'member'
])
>
0
)
{
return
$this
->
plans
[
'byid'
][
$this
->
plans
[
'member'
][
0
]];
}
return
false
;
}
public
function
get_member_plans
()
{
if
(
!
$this
->
plans
)
$this
->
set_pms_plans
();
return
$this
->
plans
[
'member'
];
}
public
function
get_premium_plans
()
{
if
(
!
$this
->
plans
)
$this
->
set_pms_plans
();
return
$this
->
plans
[
'premium'
];
}
public
function
get_plans
(
$pid
=
false
)
{
if
(
!
$this
->
plans
)
$this
->
set_pms_plans
();
if
(
$pid
)
{
if
(
array_key_exists
(
$pid
,
$this
->
plans
[
'byid'
]))
return
$this
->
plans
[
'byid'
][
$pid
];
return
false
;
}
return
$this
->
plans
[
'byid'
];
}
public
function
is_member
(
$uid
=
''
)
{
return
pms_is_member
(
$uid
,
$this
->
plans
[
'member'
]
);
return
pms_is_member
(
$uid
,
$this
->
get_member_plans
()
);
}
public
function
is_premium
(
$uid
=
''
)
{
return
pms_is_member
(
$uid
,
$this
->
plans
[
'premium'
]
);
return
pms_is_member
(
$uid
,
$this
->
get_premium_plans
()
);
}
}
...
...
template/video.php
View file @
520e3bb5
...
...
@@ -100,7 +100,7 @@ get_header(); ?>
}
else
{
if
(
$sexhack_pms
->
is_premium
())
{
if
(
wp_SexHackMe\user_has_premium_access
())
{
if
(
$hls_premium
)
$tab
=
'subscribers'
;
elseif
(
$vr_premium
)
$tab
=
'vrsub'
;
elseif
(
$hls_members
)
$tab
=
'members'
;
...
...
@@ -108,7 +108,7 @@ get_header(); ?>
elseif
(
$vr_public
||
$vr_preview
)
$tab
=
'vrpub'
;
else
$tab
=
'public'
;
}
elseif
(
$sexhack_pms
->
is_member
())
// free membership
elseif
(
wp_SexHackMe\user_has_member_access
())
// free membership
{
if
(
$hls_members
)
$tab
=
'members'
;
elseif
(
$vr_members
)
$tab
=
'vrmem'
;
...
...
@@ -138,7 +138,7 @@ get_header(); ?>
case
"members"
:
case
"vrmem"
:
if
(
$sexhack_pms
->
is_premium
()
||
$sexhack_pms
->
is_member
())
if
(
wp_SexHackMe\user_has_member_access
())
{
if
(
$hls_members
)
echo
do_shortcode
(
"[sexhls url=
\"
"
.
$hls_members
.
"
\"
posters=
\"
"
.
$thumb
.
"
\"
]"
);
else
if
(
$vr_members
)
echo
do_shortcode
(
"[sexvideo url=
\"
"
.
$vr_members
.
"
\"
posters=
\"
"
.
$thumb
.
"
\"
]"
);
...
...
@@ -155,7 +155,7 @@ get_header(); ?>
case
"subscribers"
:
case
"vrsub"
:
if
(
$sexhack_pms
->
is_premium
())
if
(
wp_SexHackMe\user_has_premium_access
())
{
if
(
$hls_premium
)
echo
do_shortcode
(
"[sexhls url=
\"
"
.
$hls_premium
.
"
\"
posters=
\"
"
.
$thumb
.
"
\"
]"
);
else
if
(
$vr_premium
)
echo
do_shortcode
(
"[sexvideo url=
\"
"
.
$vr_premium
.
"
\"
posters=
\"
"
.
$thumb
.
"
\"
]"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment