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
Franco (nextime) Lanza
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