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
5dade490
Commit
5dade490
authored
Jul 24, 2022
by
Franco (nextime) Lanza
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Released version 0.0.2
parent
bf0f01e3
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
409 additions
and
146 deletions
+409
-146
CHANGELOG.txt
CHANGELOG.txt
+8
-0
TODO.txt
TODO.txt
+4
-7
class-admin.php
includes/class-admin.php
+33
-1
class-gdrive.php
includes/class-gdrive.php
+89
-0
class-integrate-google-drive.php
includes/class-integrate-google-drive.php
+20
-1
class-post_types.php
includes/class-post_types.php
+44
-12
class-query.php
includes/class-query.php
+18
-3
class-shortcodes.php
includes/class-shortcodes.php
+9
-4
class-video.php
includes/class-video.php
+15
-3
class-videogallery.php
includes/class-videogallery.php
+54
-46
class-woocommerce-support.php
includes/class-woocommerce-support.php
+1
-1
functions-utils.php
includes/functions-utils.php
+1
-0
functions-video.php
includes/functions-video.php
+5
-0
sexhackme.php
sexhackme.php
+10
-7
gallery.php
templates/admin/gallery.php
+42
-2
video.php
templates/video.php
+56
-59
No files found.
CHANGELOG.txt
View file @
5dade490
== Sat 16 July 2022, 11:35am ==
- Released version 0.0.1
== Mon 25 July 2022, 00:26am ==
- Released version 0.0.2
* Proper functioning Video post type page for Videos (with initial rough admin editing interface).
* use WC products only for downloads and memberships.
* Database table dedicated for Video pages.
* Support Gdrive download links through the plugin "Integrate Google Drive"
TODO.txt
View file @
5dade490
This is a very rough plan for this plugin
based on the ideas I planned for www.sexhack.me:
- Version 0.0.2:
* Proper functioning Video post type page for Videos (with initial rough admin editing interface).
* use WC products only for downloads and memberships.
* Database table dedicated for Video pages.
- Version 0.0.3:
* Integration of Ultimate Members plugin for user and model profiles
* Show thumbnail in video post list in admin
* 404 Not Found page with gallery instead of WC products
* Fix caching problems with "integrate google drive"
- Version 0.0.4:
* Upload Videos page for models
...
...
@@ -21,6 +14,10 @@ based on the ideas I planned for www.sexhack.me:
- Version 0.0.5:
* Better Video Page
* Tag filtering/support
* Proper installation dependencies management,
- Version 0.0.9:
* Remove integrate google drive plugin support and implement internal gdrive api
- Version 0.1.0:
* Fixes of all the features on the previous versions
...
...
includes/class-admin.php
View file @
5dade490
...
...
@@ -72,10 +72,42 @@ if(!class_exists('SH_Admin')) {
{
include_once
SH_PLUGIN_DIR_PATH
.
'includes/admin/functions-gallery.php'
;
add_settings_section
(
'sexhackme-gallery-settings'
,
' '
,
'wp_SexHackMe\gallery_settings_section'
,
'sexhackme-gallery-settings'
);
register_setting
(
'sexhackme-gallery-settings'
,
'sexhack_gallery_slug'
);
register_setting
(
'sexhackme-gallery-settings'
,
'sexhack_video_page'
);
register_setting
(
'sexhackme-gallery-settings'
,
'sexhack_gallery_page'
);
register_setting
(
'sexhackme-gallery-settings'
,
'sexhack_video404_page'
);
add_action
(
'update_option'
,
'\wp_SexHackMe\SH_Admin::update_gallery_slug'
,
10
,
3
);
//register_setting('sexhackme-gallery-settings', 'sexhack_gallery_slug');
}
}
public
static
function
update_gallery_slug
(
$option
,
$old
,
$new
)
{
switch
(
$option
)
{
case
'sexhack_video_page'
:
if
(
!
is_int
(
$new
))
break
;
$page
=
get_post
(
$new
);
set_option
(
'sexhack_gallery_slug'
,
$page
->
post_name
);
update_option
(
'need_rewrite_flush'
,
1
);
break
;
case
'sexhack_gallery_page'
:
update_option
(
'need_rewrite_flush'
,
1
);
break
;
case
'sexhack_video404_page'
:
update_option
(
'need_rewrite_flush'
,
1
);
break
;
default
:
break
;
}
sexhack_log
(
"UPDATE OPTIONS: "
.
$option
.
" OLD
$old
NEW
$new
"
);
sexhack_log
(
get_option
(
'neew_rewrite_flush'
,
'NOT SET'
));
}
public
static
function
menu
()
{
...
...
includes/class-gdrive.php
0 → 100644
View file @
5dade490
<?php
/**
*
* This Google Drive API handler class is a custom PHP library to handle the Google Drive API calls.
*
* @class GoogleDriveApi
* @author CodexWorld
* @link http://www.codexworld.com
* @version 1.0
*/
class
GoogleDriveApi
{
const
OAUTH2_TOKEN_URI
=
'https://oauth2.googleapis.com/token'
;
const
DRIVE_FILE_UPLOAD_URI
=
'https://www.googleapis.com/upload/drive/v3/files'
;
const
DRIVE_FILES_URI
=
'https://www.googleapis.com/drive/v3/files/'
;
function
__construct
(
$params
=
array
())
{
if
(
count
(
$params
)
>
0
){
$this
->
initialize
(
$params
);
}
}
function
initialize
(
$params
=
array
())
{
if
(
count
(
$params
)
>
0
){
foreach
(
$params
as
$key
=>
$val
){
if
(
isset
(
$this
->
$key
)){
$this
->
$key
=
$val
;
}
}
}
}
public
function
GetAccessToken
(
$client_id
,
$redirect_uri
,
$client_secret
,
$code
)
{
$curlPost
=
'client_id='
.
$client_id
.
'&redirect_uri='
.
$redirect_uri
.
'&client_secret='
.
$client_secret
.
'&code='
.
$code
.
'&grant_type=authorization_code'
;
$ch
=
curl_init
();
curl_setopt
(
$ch
,
CURLOPT_URL
,
self
::
OAUTH2_TOKEN_URI
);
curl_setopt
(
$ch
,
CURLOPT_RETURNTRANSFER
,
1
);
curl_setopt
(
$ch
,
CURLOPT_POST
,
1
);
curl_setopt
(
$ch
,
CURLOPT_SSL_VERIFYPEER
,
FALSE
);
curl_setopt
(
$ch
,
CURLOPT_POSTFIELDS
,
$curlPost
);
$data
=
json_decode
(
curl_exec
(
$ch
),
true
);
$http_code
=
curl_getinfo
(
$ch
,
CURLINFO_HTTP_CODE
);
if
(
$http_code
!=
200
)
{
$error_msg
=
'Failed to receieve access token'
;
if
(
curl_errno
(
$ch
))
{
$error_msg
=
curl_error
(
$ch
);
}
else
{
$error_msg
=
!
empty
(
$data
[
'error'
][
'message'
])
?
$data
[
'error'
][
'message'
]
:
''
;
}
throw
new
Exception
(
'Error '
.
$http_code
.
': '
.
$error_msg
);
}
return
$data
;
}
public
function
DeleteFile
(
$access_token
,
$file_id
,
$googleOauthURL
=
''
)
{
$apiURL
=
self
::
DRIVE_FILES_URI
.
$file_id
;
$ch
=
curl_init
();
curl_setopt
(
$ch
,
CURLOPT_URL
,
$apiURL
);
curl_setopt
(
$ch
,
CURLOPT_RETURNTRANSFER
,
1
);
curl_setopt
(
$ch
,
CURLOPT_SSL_VERIFYPEER
,
FALSE
);
curl_setopt
(
$ch
,
CURLOPT_HTTPHEADER
,
array
(
'Content-Type: application/json'
,
'Authorization: Bearer '
.
$access_token
));
curl_setopt
(
$ch
,
CURLOPT_CUSTOMREQUEST
,
'DELETE'
);
$data
=
json_decode
(
curl_exec
(
$ch
),
true
);
$http_code
=
curl_getinfo
(
$ch
,
CURLINFO_HTTP_CODE
);
if
(
$http_code
!=
200
&&
$http_code
!=
204
){
$error_msg
=
'Failed to delete file.'
;
if
(
curl_errno
(
$ch
))
{
$error_msg
=
curl_error
(
$ch
);
}
else
{
$error_msg
=
!
empty
(
$data
[
'error'
][
'message'
])
?
$data
[
'error'
][
'message'
]
:
''
;
}
if
(
$http_code
==
401
&&
!
empty
(
$googleOauthURL
)){
unset
(
$_SESSION
[
'google_access_token'
]);
$error_msg
.=
'<br/>Click to <a href="'
.
$googleOauthURL
.
'">authenticate with Google Drive</a>'
;
}
throw
new
Exception
(
'Error '
.
$http_code
.
': '
.
$error_msg
);
}
else
{
return
true
;
}
}
}
?>
includes/class-integrate-google-drive.php
View file @
5dade490
...
...
@@ -21,6 +21,10 @@
namespace
wp_SexHackMe
;
use
\IGD\Account
;
use
\IGD\App
;
// Exit if accessed directly
if
(
!
defined
(
'ABSPATH'
)
)
exit
;
...
...
@@ -36,6 +40,11 @@ if(!class_exists('SH_GDrive')) {
function
get_download_url
(
$file
)
{
$active
=
Account
::
get_active_account
();
if
(
!
$active
)
return
$file
;
$account_id
=
$active
[
'id'
];
if
(
!
(
$file
&&
is_string
(
$file
)
&&
strlen
(
$file
)
>
3
))
return
$file
;
if
(
function_exists
(
'igd_fs'
)
)
{
...
...
@@ -52,7 +61,7 @@ if(!class_exists('SH_GDrive')) {
$parent
=
false
;
$gfile
=
false
;
$success
=
false
;
$igd
=
\IGD\App
::
instance
(
);
$igd
=
App
::
instance
(
$account_id
);
// Try root first
foreach
(
$gparts
as
$k
=>
$part
)
{
...
...
@@ -92,6 +101,16 @@ if(!class_exists('SH_GDrive')) {
}
else
{
$gdo
=
$igd
->
get_files
(
array
(
'q'
=>
"name='
{
$part
}
"
),
$parent
,
false
);
}
if
(
!
is_array
(
$gdo
)
||
(
count
(
$gdo
)
<
1
)
||
array_key_exists
(
'error'
,
$gdo
))
{
if
(
$k
==
0
)
{
$gdo
=
$igd
->
get_files
(
array
(
'q'
=>
"parents='' and sharedWithMe=true and '
{
$part
}
' in name"
),
'shared'
,
true
);
}
else
{
$gdo
=
$igd
->
get_files
(
array
(
'q'
=>
"name='
{
$part
}
"
),
$parent
,
true
);
}
}
if
(
!
is_array
(
$gdo
)
||
(
count
(
$gdo
)
<
1
)
||
array_key_exists
(
'error'
,
$gdo
))
break
;
$parent
=
false
;
...
...
includes/class-post_types.php
View file @
5dade490
...
...
@@ -94,25 +94,57 @@ if(!class_exists('SH_PostTypes')) {
'supports'
=>
array
(
'title'
,
'thumbnail'
),
//'editor','excerpt','trackbacks','custom-fields','comments','revisions','author','page-attributes'),
'taxonomies'
=>
array
(),
//'category','post_tag'), // TODO Shouldn't we have a "video_type" taxonomy for VR or flat?
));
$DEFAULTSLUG
=
get_option
(
'sexhack_gallery_slug'
,
'v'
);
$projects_structure
=
'/'
.
$DEFAULTSLUG
.
'/%wooprod%/'
;
$rules
=
$wp_rewrite
->
wp_rewrite_rules
();
$DEFAULTSLUG
=
get_option
(
'sexhack_gallery_slug'
,
'v'
);
//sexhack_log($rules);
if
(
!
array_key_exists
(
$DEFAULTSLUG
.
'/([^/]+)/?$'
,
$rules
))
{
// sexhack_log("REWRITE: rules OK: ".$DEFAULTSLUG.'/([^/]+)/?$ => '.$rules[$DEFAULTSLUG.'/([^/]+)/?$']);
//} else {
sexhack_log
(
"REWRITE: Need to add and flush our rules!"
);
$wp_rewrite
->
add_rewrite_tag
(
"%wooprod%"
,
'([^/]+)'
,
"post_type=sexhack_video&wooprod="
);
$wp_rewrite
->
add_rewrite_tag
(
"%videoaccess%"
,
'([^/]+)'
,
"videoaccess="
);
$wp_rewrite
->
add_permastruct
(
$DEFAULTSLUG
,
$projects_structure
,
false
);
$wp_rewrite
->
add_permastruct
(
$DEFAULTSLUG
,
$projects_structure
.
"%videoaccess%/"
,
false
);
update_option
(
'need_rewrite_flush'
,
1
);
update_option
(
'need_rewrite_flush'
,
1
);
sexhack_log
(
"REWRITE: Need to add and flush our rules!"
);
}
}
}
public
static
function
add_rewrites
()
{
global
$wp_rewrite
;
}
$DEFAULTSLUG
=
get_option
(
'sexhack_gallery_slug'
,
'v'
);
sexhack_log
(
"REWRITE: ADDING RULES"
);
//flush_rewrite_rules();
$pid
=
get_option
(
'sexhack_video_page'
,
false
);
if
(
$pid
)
$redir
=
"page_id=
$pid
"
;
else
$redir
=
"pagename=
$DEFAULTSLUG
"
;
add_rewrite_rule
(
$DEFAULTSLUG
.
'/([^/]+)/([^/]+)/page/?([0-9]{1,})/?$'
,
'index.php?'
.
$redir
.
'&sh_video=$matches[1]&videoaccess=$matches[2]&paged=$matches[3]'
,
'top'
);
add_rewrite_rule
(
$DEFAULTSLUG
.
'/([^/]+)/([^/]+)/?$'
,
'index.php?'
.
$redir
.
'&sh_video=$matches[1]&videoaccess=$matches[2]'
,
'top'
);
add_rewrite_rule
(
$DEFAULTSLUG
.
'/([^/]+)/page/?([0-9]{1,})/?$'
,
'index.php?'
.
$redir
.
'&sh_video=$matches[1]&paged=$matches[2]'
,
'top'
);
add_rewrite_rule
(
$DEFAULTSLUG
.
'/([^/]+)/?$'
,
'index.php?'
.
$redir
.
'&sh_video=$matches[1]'
,
'top'
);
$vg_id
=
get_option
(
'sexhack_video404_page'
,
false
);
//if(is_int($vg_id) && $vg_id>0)
add_rewrite_rule
(
$DEFAULTSLUG
.
'/?$'
,
'index.php?page_id='
.
strval
(
$vg_id
),
'top'
);
//update_option('need_rewrite_flush', 1);
sexhack_log
(
$wp_rewrite
->
wp_rewrite_rules
());
}
}
}
...
...
includes/class-query.php
View file @
5dade490
...
...
@@ -198,6 +198,21 @@ if(!class_exists('SH_Query')) {
}
public
static
function
get_VideoFromSlug
(
$slug
)
{
global
$wpdb
;
$slug
=
$wpdb
->
_real_escape
(
$slug
);
$sql
=
"SELECT * FROM
{
$wpdb
->
prefix
}
"
.
SH_PREFIX
.
"videos WHERE slug='"
.
$slug
.
"'"
;
$dbres
=
$wpdb
->
get_results
(
$sql
);
if
(
is_array
(
$dbres
)
&&
count
(
$dbres
)
>
0
)
{
return
new
SH_Video
((
array
)
$dbres
[
0
]);
}
return
false
;
}
public
static
function
get_Video
(
$id
,
$idtype
=
''
)
{
global
$wpdb
;
...
...
@@ -247,13 +262,13 @@ if(!class_exists('SH_Query')) {
$results
=
array
();
//$sql = $wpdb->prepare("SELECT * from {$wpdb->prefix}{$prefix}videos");
$sql
=
"SELECT * FROM
{
$wpdb
->
prefix
}
"
.
SH_PREFIX
.
"videos"
;
$dbres
=
$wpdb
->
get_results
(
$sql
);
$dbres
=
$wpdb
->
get_results
(
$sql
,
ARRAY_A
);
sexhack_log
(
$dbres
);
foreach
(
$dbres
as
$row
)
{
$results
[]
=
new
SH_Video
(
$row
);
}
sexhack_log
(
$results
);
return
$results
;
...
...
includes/class-shortcodes.php
View file @
5dade490
...
...
@@ -125,10 +125,15 @@ if(!class_exists('SH_Shortcodes')) {
$html
=
"<div class='sexhack_gallery'>"
;
//<h3>SexHack VideoGallery</h3>";
if
(
isset
(
$_GET
[
'SHDEV'
]))
$html
.=
'<h3>DEVELOPEMENT MODE</h3>'
;
$html
.=
'<ul class="products columns-4">'
;
$products
=
$sh_videogallery
->
getProducts
();
while
(
$products
->
have_posts
()
)
{
$products
->
the_post
();
$html
.=
$sh_videogallery
->
get_video_thumb
();
$videos
=
$sh_videogallery
->
get_videos
();
foreach
(
$videos
as
$video
)
{
if
(
$video
->
status
==
'published'
)
{
$post
=
$video
->
get_post
();
if
(
$post
)
setup_postdata
(
$post
);
$html
.=
$sh_videogallery
->
get_video_thumb
(
$video
);
}
}
wp_reset_postdata
();
$html
.=
"</ul></div>"
;
...
...
includes/class-video.php
View file @
5dade490
...
...
@@ -66,9 +66,9 @@ if(!class_exists('SH_Video')) {
'codec_public'
=>
'h264'
,
'codec_members'
=>
'h264'
,
'codec_premium'
=>
'h264'
,
'acodec_public'
=>
'
h264
'
,
'acodec_members'
=>
'
h264
'
,
'acodec_premium'
=>
'
h264
'
,
'acodec_public'
=>
'
AAC
'
,
'acodec_members'
=>
'
AAC
'
,
'acodec_premium'
=>
'
AAC
'
,
'duration_public'
=>
false
,
'duration_members'
=>
false
,
'duration_premium'
=>
false
,
...
...
@@ -87,6 +87,18 @@ if(!class_exists('SH_Video')) {
}
public
function
get_title
()
{
return
$this
->
attributes
[
'title'
];
}
public
function
has_downloads
()
{
if
(
$this
->
download_public
OR
$this
->
download_members
OR
$this
->
download_premium
)
return
true
;
return
false
;
}
function
setAttributes
(
$attr
,
$post
=
false
,
$wcprod
=
false
)
{
...
...
includes/class-videogallery.php
View file @
5dade490
...
...
@@ -37,11 +37,11 @@ if(!class_exists('SH_VideoGallery')) {
// TODO What an horrible and inefficient way to cache the query result.
// Think about moving it in session and with a better data structure.
$this
->
product
list
=
false
;
$this
->
video
list
=
false
;
// Register Query Vars
add_filter
(
"query_vars"
,
array
(
$this
,
"query_vars"
));
//
add_filter('page_template', array($this, 'sexhack_video_template'));
add_filter
(
'page_template'
,
array
(
$this
,
'sexhack_video_template'
));
add_filter
(
'archive_template'
,
array
(
$this
,
'sexhack_video_template'
));
add_action
(
'pre_get_posts'
,
array
(
$this
,
'fix_video_query'
),
1
,
1
);
...
...
@@ -51,31 +51,32 @@ if(!class_exists('SH_VideoGallery')) {
public
function
query_vars
(
$vars
)
{
$vars
[]
=
'
wooprod
'
;
$vars
[]
=
'
sh_video
'
;
$vars
[]
=
'videoaccess'
;
return
$vars
;
}
public
function
sexhack_video_template
(
$template
)
{
$template
=
'video.php'
;
if
(
isset
(
$_GET
[
'SHDEV'
]))
$template
=
'newvideo.php'
;
$is_sexhack_video
=
get_query_var
(
'wooprod'
,
false
);
if
(
isset
(
$_GET
[
'SHDEV'
]))
$templ
=
'newvideo.php'
;
$is_sexhack_video
=
get_query_var
(
'sh_video'
,
false
);
if
(
$is_sexhack_video
)
{
$templ
=
'video.php'
;
set_query_var
(
'post_type'
,
'sexhack_video'
);
if
(
file_exists
(
plugin_dir_path
(
__DIR__
)
.
'/templates/'
.
$templ
ate
))
{
return
plugin_dir_path
(
__DIR__
)
.
'/templates/'
.
$templ
ate
;
if
(
file_exists
(
plugin_dir_path
(
__DIR__
)
.
'/templates/'
.
$templ
))
{
return
plugin_dir_path
(
__DIR__
)
.
'/templates/'
.
$templ
;
}
}
return
$template
;
}
return
$template
;
}
public
function
fix_video_query
(
$query
)
{
if
(
$query
->
get
(
'post_type'
)
==
'sexhack_video'
)
{
$
wooprod
=
$query
->
get
(
'wooprod
'
,
false
);
if
(
$
wooprod
)
{
$
sh_video
=
$query
->
get
(
'sh_video
'
,
false
);
if
(
$
sh_video
)
{
$query
->
query
[
'post_type'
]
=
'sexhack_video'
;
$query
->
set
(
'name'
,
esc_sql
(
$wooprod
));
$query
->
set
(
'post_type'
,
'any'
);
...
...
@@ -84,58 +85,65 @@ if(!class_exists('SH_VideoGallery')) {
}
}
public
function
getProducts
(
$vcat
=
false
)
{
if
(
!
$this
->
productlist
&&
!
$vcat
)
$this
->
productlist
=
SH_Query
::
get_Products
(
$vcat
);
//$this->_getProducts($vcat);
else
if
(
$vcat
)
return
SH_Query
::
get_Products
(
$vcat
);
//$this->_getProducts($vcat);
public
function
get_videos
(
$vcat
=
false
)
{
// XXX TODO Only published videos!
if
(
!
$this
->
videolist
&&
!
$vcat
)
$this
->
videolist
=
sh_get_videos
(
$vcat
);
//SH_Query::get_Videos($vcat); //$this->_getProducts($vcat);
else
if
(
$vcat
)
return
sh_get_videos
(
$vcat
);
//SH_Query::get_Videos($vcat); //$this->_getProducts($vcat);
return
$this
->
product
list
;
return
$this
->
video
list
;
}
public
function
get_video_thumb
()
public
function
get_video_thumb
(
$video
=
false
)
{
$DEFAULTSLUG
=
get_option
(
'sexhack_gallery_slug'
,
'v'
);
$id
=
get_the_ID
();
$prod
=
wc_get_product
(
$id
);
$image
=
get_the_post_thumbnail
(
$id
,
"medium"
,
array
(
"class"
=>
"sexhack_thumbnail"
));
//array("class" => "alignleft sexhack_thumbnail"));
$post_id
=
get_the_ID
();
if
(
!
$video
)
$video
=
sh_get_video_from_post
(
$post_id
);
if
(
is_numeric
(
$video
->
thumbnail
))
{
//$image = get_post_thumbnail_id($video->thumbnail);
//$image = wp_get_attachment_link($video->thumbnail);
$image
=
wp_get_attachment_image
(
$video
->
thumbnail
,
"320x160"
);
// XXX Seriously fixed size?
}
else
$image
=
$video
->
thumbnail
;
$hls_public
=
$video
->
hls_public
;
$hls_member
=
$video
->
hls_members
;
$hls_premium
=
$video
->
hls_premium
;
$video_preview
=
$video
->
video_preview
;
$gif_preview
=
$video
->
gif_small
;
sexhack_log
(
$video
);
$hls
=
$prod
->
get_attribute
(
"hls_public"
);
$hls_member
=
$prod
->
get_attribute
(
"hls_members"
);
$hls_premium
=
$prod
->
get_attribute
(
"hls_premium"
);
$video_preview
=
$prod
->
get_attribute
(
"video_preview"
);
$gif_preview
=
$prod
->
get_attribute
(
"gif_preview"
);
$vr_premium
=
$prod
->
get_attribute
(
"vr_premium"
);
$vr_member
=
$prod
->
get_attribute
(
"vr_members"
);
$vr_public
=
$prod
->
get_attribute
(
"vr_public"
);
$vr_preview
=
$prod
->
get_attribute
(
"vr_preview"
);
$categories
=
explode
(
", "
,
html2text
(
wc_get_product_category_list
(
$id
)));
$categories
=
$video
->
get_categories
(
true
);
//print_r($categories);
$gif
=
$prod
->
get_attribute
(
"gif_thumbnail"
);
if
(
!
$gif
)
$gif
=
$gif_preview
;
if
(
$gif
)
$image
.=
"<img src='
$gif
' class='alignleft sexhack_thumb_hover' loading='lazy' />"
;
$gif
=
$video
->
gif
;
if
(
!
$gif_preview
)
$gif_preview
=
$gif
;
if
(
$gif_preview
)
$image
.=
"<img src='
$gif_preview
' class='alignleft sexhack_thumb_hover' loading='lazy' />"
;
$html
=
'<li class="product type-product sexhack_thumbli">'
;
$vurl
=
str_replace
(
"/product/"
,
"/"
.
$DEFAULTSLUG
.
"/"
,
esc_url
(
get_the_permalink
()
));
$vtitle
=
esc_html
(
get_the_title
()
);
$vurl
=
site_url
()
.
esc_url
(
"/"
.
$DEFAULTSLUG
.
"/"
.
$video
->
slug
)
.
"/"
;
if
(
isset
(
$_GET
[
'SHDEV'
]))
$vurl
.=
"?SHDEV=true"
;
$vtitle
=
$video
->
get_title
();
$vtags
=
array
();
$downtag
=
''
;
if
((
!
$hls
)
AND
(
!
$hls_member
)
AND
(
!
$hls_premium
)
AND
((
$video_preview
)
OR
(
$vr_preview
)))
$vtags
[]
=
'<label class="sexhack_vtag sexhack_preview" style="*LEFT*">preview</label>'
;
if
((
$hls
)
OR
(
$vr_public
))
$vtags
[]
=
'<label class="sexhack_vtag sexhack_public" style="*LEFT*">public</label>'
;
if
((
$hls_member
)
OR
(
$vr_member
))
$vtags
[]
=
'<label class="sexhack_vtag sexhack_members" style="*LEFT*">members</label>'
;
if
((
$hls_premium
)
OR
(
$vr_premium
))
$vtags
[]
=
'<label class="sexhack_vtag sexhack_premium" style="*LEFT*">premium</label>'
;
if
(
count
(
$prod
->
get_downloads
())
>
0
)
$html
.=
'<label class="sexhack_vtag sexhack_download"">download</label>'
;
if
((
$vr_premium
)
OR
(
$vr_member
)
OR
(
$vr_public
)
OR
(
$vr_preview
)
OR
((
count
(
$prod
->
get_downloads
())
>
0
)
AND
(
in_array
(
"VR180"
,
$categories
)
OR
in_array
(
"VR360"
,
$categories
))))
$html
.=
'<label class="sexhack_vtag sexhack_VR"">VR/3D</label>'
;
if
((
!
$hls_public
)
AND
(
!
$hls_member
)
AND
(
!
$hls_premium
)
AND
(
$video_preview
)
)
$vtags
[]
=
'<label class="sexhack_vtag sexhack_preview" style="*LEFT*">preview</label>'
;
if
(
$hls_public
)
$vtags
[]
=
'<label class="sexhack_vtag sexhack_public" style="*LEFT*">public</label>'
;
if
(
$hls_member
)
$vtags
[]
=
'<label class="sexhack_vtag sexhack_members" style="*LEFT*">members</label>'
;
if
(
$hls_premium
)
$vtags
[]
=
'<label class="sexhack_vtag sexhack_premium" style="*LEFT*">premium</label>'
;
if
(
$video
->
has_downloads
())
$html
.=
'<label class="sexhack_vtag sexhack_download"">download</label>'
;
if
(
$video
->
video_type
==
'VR'
)
$html
.=
'<label class="sexhack_vtag sexhack_VR"">VR/3D</label>'
;
$html
.=
"<a href=
\"
$vurl
\"
class=
\"
woocommerce-LoopProduct-link woocommerce-loop-product__link
\"
>"
;
$html
.=
"<div class='sexhack_thumb_cont'>"
.
$image
.
"</div>"
;
...
...
includes/class-woocommerce-support.php
View file @
5dade490
...
...
@@ -34,7 +34,7 @@ if(!class_exists("SH_VideoProducts")) {
//add_action('sh_save_video_after_query', array($this, 'sync_product_from_video'), 1, 10);
add_filter
(
'video_before_save'
,
array
(
$this
,
'sync_product_from_video'
));
add_action
(
'sh_delete_video'
,
array
(
$this
,
'delete_video_product'
),
1
,
10
);
add_action
(
'sh_delete_video'
,
array
(
$this
,
'delete_video_product'
),
9
,
1
);
}
public
function
delete_video_product
(
$video
)
...
...
includes/functions-utils.php
View file @
5dade490
...
...
@@ -54,6 +54,7 @@ function sanitize_idtype($idt=false)
return
$idt
.
"_id"
;
break
;
case
'id'
:
case
'slug'
:
return
$idt
;
break
;
default
:
...
...
includes/functions-video.php
View file @
5dade490
...
...
@@ -83,6 +83,11 @@ function sh_get_video_from_product($p)
return
false
;
}
function
sh_get_video_from_slug
(
$slug
)
{
return
SH_Query
::
get_VideoFromSlug
(
$slug
);
}
function
sh_get_categories
(
$id
=
false
)
{
return
SH_Query
::
get_Categories
(
$id
);
...
...
sexhackme.php
View file @
5dade490
...
...
@@ -463,8 +463,8 @@ if(!class_exists('SexHackMe_Plugin')) {
// Check if we need to flush rewrite rules
add_action
(
'init'
,
array
(
$this
,
'register_flush'
),
10
);
add_action
(
'init'
,
array
(
$this
,
'flush_rewrite'
),
900
);
add_action
(
'init'
,
array
(
$this
,
'register_flush'
),
10
);
add_action
(
'init'
,
array
(
$this
,
'flush_rewrite'
),
11
);
// Enqueue scripts on the front end side. Priority 200 because of WooCommerce.
add_action
(
'wp_enqueue_scripts'
,
array
(
$this
,
'enqueue_front_end_scripts'
),
200
);
...
...
@@ -477,6 +477,7 @@ if(!class_exists('SexHackMe_Plugin')) {
// Initialize Custom post_types
add_action
(
'init'
,
array
(
'wp_SexHackMe\SH_PostTypes'
,
'init'
));
add_action
(
'sh_rewrite_flushed'
,
array
(
'wp_SexHackMe\SH_PostTypes'
,
'add_rewrites'
)
);
// Initialize shortcodes
add_action
(
'init'
,
array
(
'wp_SexHackMe\SH_Shortcodes'
,
'init'
)
);
...
...
@@ -531,6 +532,7 @@ if(!class_exists('SexHackMe_Plugin')) {
public
function
register_flush
()
{
register_setting
(
'sexhackme-settings'
,
'need_rewrite_flush'
);
register_setting
(
'sexhackme-settings'
,
'rewrite_flush_done'
);
}
public
function
flush_rewrite
()
...
...
@@ -538,8 +540,10 @@ if(!class_exists('SexHackMe_Plugin')) {
if
(
get_option
(
'need_rewrite_flush'
))
{
sexhack_log
(
"FLUSHING REWRITE RULES"
);
flush_rewrite_rules
(
false
);
//flush_rewrite_rules(false);
flush_rewrite_rules
();
update_option
(
'need_rewrite_flush'
,
0
);
do_action
(
'sh_rewrite_flushed'
);
}
}
...
...
@@ -644,13 +648,12 @@ if(!class_exists('SexHackMe_Plugin')) {
}
// DEBUG REWRITE RULES
//if(isset($_GET['SHDEV'])) {
if
(
WP_DEBUG
===
true
){
// only matched?
//add_action("the_post", 'wp_SexHackMe\debug_rewrite_rules');
//
sexhack_log("REQUEST: ".$_SERVER['REQUEST_URI']." QUERY: ".$_SERVER['QUERY_STRING']. "POST:");
//
sexhack_log($_POST);
sexhack_log
(
"REQUEST: "
.
$_SERVER
[
'REQUEST_URI'
]
.
" QUERY: "
.
$_SERVER
[
'QUERY_STRING'
]
.
"POST:"
);
sexhack_log
(
$_POST
);
}
...
...
templates/admin/gallery.php
View file @
5dade490
...
...
@@ -29,10 +29,50 @@ if ( ! defined( 'ABSPATH' ) ) exit;
<table
class=
"form-table"
>
<tr
align=
"top"
>
<td>
<label>
Slug for gallery
</label>
<input
type=
"text"
name=
"sexhack_gallery_slug"
value=
"
<?php
echo
get_option
(
'sexhack_gallery_slug'
,
"v"
)
?>
"
/>
<select
id=
"sexhack_video_page"
name=
"sexhack_video_page"
class=
"widefat"
>
<option
value=
"-1"
>
Choose...
</option>
<?php
$opt
=
get_option
(
"sexhack_video_page"
);
foreach
(
get_pages
()
as
$page
)
{
echo
'<option value="'
.
esc_attr
(
$page
->
ID
)
.
'"'
;
if
(
$opt
==
$page
->
ID
)
{
echo
"selected"
;}
echo
'>'
.
esc_html
(
$page
->
post_title
)
.
' ( ID: '
.
esc_attr
(
$page
->
ID
)
.
')'
.
'</option>'
;
}
?>
</select>
<p
class=
"description"
>
Select Video page
</p>
</td>
</tr>
<tr
align=
"top"
>
<td>
<select
id=
"sexhack_gallery_page"
name=
"sexhack_gallery_page"
class=
"widefat"
>
<option
value=
"-1"
>
Choose...
</option>
<?php
$opt
=
get_option
(
"sexhack_gallery_page"
);
foreach
(
get_pages
()
as
$page
)
{
echo
'<option value="'
.
esc_attr
(
$page
->
ID
)
.
'"'
;
if
(
$opt
==
$page
->
ID
)
{
echo
"selected"
;}
echo
'>'
.
esc_html
(
$page
->
post_title
)
.
' ( ID: '
.
esc_attr
(
$page
->
ID
)
.
')'
.
'</option>'
;
}
?>
</select>
<p
class=
"description"
>
Select Gallery page
</p>
</td>
</tr>
<tr
align=
"top"
>
<td>
<select
id=
"sexhack_video404_page"
name=
"sexhack_video404_page"
class=
"widefat"
>
<option
value=
"-1"
>
Choose...
</option>
<?php
$opt
=
get_option
(
"sexhack_video404_page"
);
foreach
(
get_pages
()
as
$page
)
{
echo
'<option value="'
.
esc_attr
(
$page
->
ID
)
.
'"'
;
if
(
$opt
==
$page
->
ID
)
{
echo
"selected"
;}
echo
'>'
.
esc_html
(
$page
->
post_title
)
.
' ( ID: '
.
esc_attr
(
$page
->
ID
)
.
')'
.
'</option>'
;
}
?>
</select>
<p
class=
"description"
>
Select Gallery page
</p>
</td>
</tr>
</table>
<?php
submit_button
();
?>
</form>
...
...
templates/video.php
View file @
5dade490
This diff is collapsed.
Click to expand it.
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