<?php
/**
 * Copyright: 2022 (c)Franco (nextime) Lanza <franco@nexlab.it>
 * License: GNU/GPL version 3.0
 *
 * This file is part of SexHackMe Wordpress Plugin.
 *
 * SexHackMe Wordpress Plugin is free software: you can redistribute it and/or modify it 
 * under the terms of the GNU General Public License as published 
 * by the Free Software Foundation, either version 3 of the License, 
 * or (at your option) any later version.
 *
 * SexHackMe Wordpress Plugin is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License 
 * along with SexHackMe Wordpress Plugin. If not, see <https://www.gnu.org/licenses/>.
 */


namespace wp_SexHackMe;

// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) exit;

if(!class_exists('SH_VideoGallery')) {


   class SH_VideoGallery
   {


      public function __construct()
      {

         // 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->videolist = false;

         // Register Query Vars
         add_filter("query_vars", array($this, "query_vars"));
         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);

      }


      public function query_vars($vars)
      {
         $vars[] = 'sh_video';
         $vars[] = 'videoaccess';
         return $vars;
      }

      public function sexhack_video_template($template) 
      {
         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)) {
               return plugin_dir_path(__DIR__) . '/templates/'.$templ;
            }
         }

         return $template;
      }


      public function fix_video_query($query)
      {  
         if($query->get('post_type')=='sexhack_video') {
            $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');
               //$query->set('post_type', '');
            }
         }
      }

      public function get_videos_by_cat($vcat=false, $filtering=false) {
         // XXX TODO Only published videos!

         if(!$this->videolist && !$vcat) $this->videolist = sh_get_videos_by_cat(filtering:$filtering); 
         else if($vcat) return sh_get_videos_by_cat($vcat, filtering:$filtering);  

         return $this->videolist;

      }
      
      public function get_video_thumb($video=false)
      {

         $DEFAULTSLUG = get_option('sexhack_gallery_slug', 'v');

         $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->preview;
         $gif_preview = $video->gif_small;
         $premium_is_ppv = $video->premium_is_ppv;

         //sexhack_log($video);

         $categories = $video->get_categories(true);


         //print_r($categories);

         $gif = $video->gif;

         if(!$gif_preview) $gif_preview = $gif;
         if($gif_preview) $image .= "<img src='".plugin_dir_url(__DIR__)."/img/loading.gif' onmouseover='shmChangeGif(this)' data-gsrc='$gif_preview' class='alignleft sexhack_thumb_hover' loading='lazy' />";

         $html = '<li class="product type-product sexhack_thumbli">';
         
         $vurl = site_url().esc_url( "/".$DEFAULTSLUG."/".$video->slug )."/";
         if(isset($_GET['SHDEV'])) $vurl.="?SHDEV=true";
         $vtitle = $video->get_title();
         $vtags=array();

         $downtag ='';
         if($hls_public) $vtags[] = '<label class="sexhack_vtag sexhack_public" style="*LEFT*">public</label>';
         elseif($video_preview) $vtags[] = '<label class="sexhack_vtag sexhack_preview" style="*LEFT*">preview</label>';
         if($hls_member)$vtags[] = '<label class="sexhack_vtag sexhack_members" style="*LEFT*">members</label>';
         if($hls_premium) {
            if($premium_is_ppv=='Y') $vtags[] = '<label class="sexhack_vtag sexhack_premium" style="*LEFT*">PPV</label>';
            else $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>";
         
         foreach($vtags as $vid => $vtag)
         {
            $left = intval($vid)*12;
            $vtag = str_replace("*LEFT*", "left:-".$left."px", $vtag);
            $html .= $vtag;
         }

         $html .= "<h3 class=\"sexhack_gallery_title woocommerce-loop-product__title\" alt='".$vtitle."'>".trim_text_preview($vtitle, 60, false)."</h3>";
         $html .= "</a></li>";

         return $html;
      }
   }

   $GLOBALS['sh_videogallery'] = new SH_VideoGAllery();
   do_action('sh_videogallery_ready');
}

?>
