• File: AdminGrids.php
  • Full Path: /home/matthif/www/wp-content/plugins/uber-grid/src/AdminGrids.php
  • Date Modified: 03/16/2023 5:23 PM
  • File size: 16.12 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php


namespace PfhubPortfolio;


class 
AdminGrids
{
    public static function 
load_portfolio_page()
    {
        
$task = isset($_GET["task"]) ? sanitize_text_field($_GET["task"]) : '';
        
$id = isset($_GET["id"]) ? intval($_GET['id']) : 0;
        switch (
$task) {
            case 
'edit_cat':
                if (
$id) {
                    
self::edit_portfolio($id);
                }
                break;
            case 
'save':
                if (
$id) {
                    
self::save_portfolio_data($id);
                }
                break;
            case 
'apply':
                
$a = isset($_REQUEST['pfhub_portfolio_apply_portfolio_nonce']);
                
$b wp_verify_nonce($_REQUEST['pfhub_portfolio_apply_portfolio_nonce'], 'apply_portfolio_' $id);
                
$c wp_verify_nonce($_REQUEST['pfhub_portfolio_apply_portfolio_nonce'], 'remove_project_' . (isset($_GET['removeslide']) ? absint($_GET['removeslide']) : ''));

                if (!((
$b || $c) && $a)) {
                    
wp_die('Security check failure');
                }
                if (
$id) {
                    
self::save_portfolio_data($id);
                    
self::edit_portfolio($id);
                }
                break;
            default:
                
self::show_portfolios_page();
                break;
        }
    }

    public static function 
show_portfolios_page()
    {

        global 
$wpdb;
        if (isset(
$_COOKIE['deleted'])) {
            if (
$_COOKIE['deleted'] == 'success') {
                
?>
                <div class="updated"><p><strong><?php _e('Item Deleted.'); ?></strong></p></div>
                <?php
            
} elseif ($_COOKIE["deleted"] == 'fail') {
                
?>
                <div id="message" class="error"><p>Portfolio Not Deleted</p></div>
            <?php }
        }

        if (isset(
$_POST['search_events_by_title'])) {
            
$_POST['search_events_by_title'] = esc_html(stripslashes($_POST['search_events_by_title']));
        }
        if (isset(
$_POST['asc_or_desc'])) {
            
$_POST['asc_or_desc'] = sanitize_text_field($_POST['asc_or_desc']);
        }
        if (isset(
$_POST['order_by'])) {
            
$_POST['order_by'] = sanitize_text_field($_POST['order_by']);
        }
        
$where '';
        
$sort["custom_style"] = "manage-column column-autor sortable desc";
        
$sort["default_style"] = "manage-column column-autor sortable desc";
        
$sort["sortid_by"] = 'id';
        
$sort["1_or_2"] = 1;
        
$order '';

        if (isset(
$_POST['page_number'])) {

            if (
$_POST['asc_or_desc']) {
                
$sort["sortid_by"] = sanitize_text_field($_POST['order_by']);
                if (
$_POST['asc_or_desc'] == 1) {
                    
$sort["custom_style"] = "manage-column column-title sorted asc";
                    
$sort["1_or_2"] = "2";
                    
$order "ORDER BY " $sort["sortid_by"] . " ASC";
                } else {
                    
$sort["custom_style"] = "manage-column column-title sorted desc";
                    
$sort["1_or_2"] = "1";
                    
$order "ORDER BY " $sort["sortid_by"] . " DESC";
                }
            }
            if (
$_POST['page_number']) {
                
$limit = (floatval($_POST['page_number']) - 1) * 20;
            } else {
                
$limit 0;
            }
        } else {
            
$limit 0;
        }
        if (isset(
$_POST['search_events_by_title'])) {
            
$search_tag esc_html(stripslashes($_POST['search_events_by_title']));
        } else {
            
$search_tag "";
        }

        if (isset(
$_GET["catid"])) {
            
$cat_id absint($_GET["catid"]);
        } else {
            if (isset(
$_POST['cat_search'])) {
                
$cat_id absint($_POST['cat_search']);
            } else {

                
$cat_id 0;
            }
        }

        if (
$search_tag) {
            
$where " WHERE name LIKE '%" sanitize_text_field($search_tag) . "%' ";
        }
        if (
$where) {
            if (
$cat_id) {
                
$where .= " AND sl_width=" $cat_id;
            }

        } else {
            if (
$cat_id) {
                
$where .= " WHERE sl_width=" $cat_id;
            }

        }

        
$cat_row_query "SELECT id,name FROM " $wpdb->prefix "pfhub_portfolio_grids WHERE sl_width=0";

        
// get the total number of records
        
$query "SELECT COUNT(*) FROM " $wpdb->prefix "pfhub_portfolio_grids" $where;

        
$total $wpdb->get_var($query);
        
$pageNav['total'] = $total;
        
$pageNav['limit'] = $limit 20 1;

        if (
$cat_id) {
            
$query "SELECT  a.* ,  COUNT(b.id) AS count, g.par_name AS par_name FROM " $wpdb->prefix "pfhub_portfolio_grids  AS a LEFT JOIN " $wpdb->prefix "pfhub_portfolio_grids AS b ON a.id = b.sl_width LEFT JOIN (SELECT  " $wpdb->prefix "pfhub_portfolio_grids.ordering as ordering," $wpdb->prefix "pfhub_portfolio_grids.id AS id, COUNT( " $wpdb->prefix "pfhub_portfolio_images.grid_id ) AS prod_count
FROM " 
$wpdb->prefix "pfhub_portfolio_images, " $wpdb->prefix "pfhub_portfolio_grids
WHERE " 
$wpdb->prefix "pfhub_portfolio_images.grid_id = " $wpdb->prefix "pfhub_portfolio_grids.id
GROUP BY " 
$wpdb->prefix "pfhub_portfolio_images.grid_id) AS c ON c.id = a.id LEFT JOIN
(SELECT " 
$wpdb->prefix "pfhub_portfolio_grids.name AS par_name," $wpdb->prefix "pfhub_portfolio_grids.id FROM " $wpdb->prefix "pfhub_portfolio_grids) AS g
 ON a.sl_width=g.id WHERE  a.name LIKE '%" 
$search_tag "%' group by a.id " $order " LIMIT " $limit ",20";

        } else {
            
$query "SELECT  a.* ,  COUNT(b.id) AS count, g.par_name AS par_name FROM " $wpdb->prefix "pfhub_portfolio_grids  AS a LEFT JOIN " $wpdb->prefix "pfhub_portfolio_grids AS b ON a.id = b.sl_width LEFT JOIN (SELECT  " $wpdb->prefix "pfhub_portfolio_grids.ordering as ordering," $wpdb->prefix "pfhub_portfolio_grids.id AS id, COUNT( " $wpdb->prefix "pfhub_portfolio_images.grid_id ) AS prod_count
FROM " 
$wpdb->prefix "pfhub_portfolio_images, " $wpdb->prefix "pfhub_portfolio_grids
WHERE " 
$wpdb->prefix "pfhub_portfolio_images.grid_id = " $wpdb->prefix "pfhub_portfolio_grids.id
GROUP BY " 
$wpdb->prefix "pfhub_portfolio_images.grid_id) AS c ON c.id = a.id LEFT JOIN
(SELECT " 
$wpdb->prefix "pfhub_portfolio_grids.name AS par_name," $wpdb->prefix "pfhub_portfolio_grids.id FROM " $wpdb->prefix "pfhub_portfolio_grids) AS g
 ON a.sl_width=g.id WHERE a.name LIKE '%" 
$search_tag "%'  group by a.id " $order " LIMIT " $limit ",20";
        }

        
$rows $wpdb->get_results($query);
        global 
$glob_ordering_in_cat;
        if (isset(
$sort["sortid_by"])) {
            if (
$sort["sortid_by"] == 'ordering') {
                if (
$_POST['asc_or_desc'] == 1) {
                    
$glob_ordering_in_cat " ORDER BY ordering ASC";
                } else {
                    
$glob_ordering_in_cat " ORDER BY ordering DESC";
                }
            }
        }
        
$rows \PfhubPortfolio\Helpers\GridHelper::catTree($rows);
        
$query "SELECT  " $wpdb->prefix "pfhub_portfolio_grids.ordering," $wpdb->prefix "pfhub_portfolio_grids.id, COUNT( " $wpdb->prefix "pfhub_portfolio_images.grid_id ) AS prod_count
FROM " 
$wpdb->prefix "pfhub_portfolio_images, " $wpdb->prefix "pfhub_portfolio_grids
WHERE " 
$wpdb->prefix "pfhub_portfolio_images.grid_id = " $wpdb->prefix "pfhub_portfolio_grids.id
GROUP BY " 
$wpdb->prefix "pfhub_portfolio_images.grid_id ";
        
$prod_rows $wpdb->get_results($query);

        foreach (
$rows as $row) {
            foreach (
$prod_rows as $row_1) {
                if (
$row->id == $row_1->id) {
                    
$row->ordering $row_1->ordering;
                    
$row->prod_count $row_1->prod_count;
                }
            }
        }

        require_once(
PFHUB_PORTFOLIO_TEMPLATES_PATH DIRECTORY_SEPARATOR 'admin-grids.php');
    }

    public static function 
edit_portfolio($id)
    {
        global 
$wpdb;

        if (isset(
$_GET["removeslide"])) {
            if (
absint($_GET['removeslide']) != $_GET['removeslide'] || !absint($_GET['removeslide'])) {
                
wp_die(__('"removeslide" parameter is required to be not negative integer''pfhub_portfolio'));
            } else {
                
$project_id absint($_GET["removeslide"]);
                
$wpdb->query("DELETE FROM " $wpdb->prefix "pfhub_portfolio_images  WHERE id = " $project_id);
            }
        }

        
$query $wpdb->prepare("SELECT * FROM " $wpdb->prefix "pfhub_portfolio_grids WHERE id= %d"$id);
        
$row $wpdb->get_row($query);
        if (!isset(
$row->grid_view_type)) {
            return 
'id not found';
        }
        
$images explode(";;;"$row->grid_view_type);
        
$par explode('    '$row->param);
        
$count_ord count($images);
        
$cat_row $wpdb->get_results("SELECT * FROM " $wpdb->prefix "pfhub_portfolio_grids WHERE id!=" $id " and sl_width=0");
        
$cat_row \PfhubPortfolio\Helpers\GridHelper::catTree($cat_row);
        
$query $wpdb->prepare("SELECT name,ordering FROM " $wpdb->prefix "pfhub_portfolio_grids WHERE sl_width=%d  ORDER BY `ordering` "$row->sl_width);
        
$ord_elem $wpdb->get_results($query);

        
$query $wpdb->prepare("SELECT * FROM " $wpdb->prefix "pfhub_portfolio_images where grid_id = %d order by ordering ASC  "$row->id);
        
$rowim $wpdb->get_results($query);
        
$query "SELECT * FROM " $wpdb->prefix "pfhub_portfolio_grids order by id ASC";
        
$rowsld $wpdb->get_results($query);

        require_once(
PFHUB_PORTFOLIO_TEMPLATES_PATH DIRECTORY_SEPARATOR  'admin-grid-images.php');
    }

    public static function 
save_portfolio_data($id)
    {
        global 
$wpdb;
        if (!(isset(
$_POST['sl_width']) && isset($_POST["name"]))) {
            return;
        }
        
$id absint($id);
        
$name sanitize_text_field(wp_unslash($_POST["name"]));
        
$sl_width absint($_POST["sl_width"]);
        
$sl_height absint($_POST["sl_height"]);
        
$pause_on_hover in_array($_POST["pause_on_hover"], array(
            
'on',
            
'off'
        
)) ? $_POST["pause_on_hover"] : 'on';
        
$autoslide in_array($_POST["autoslide"], array('on''off')) ? $_POST["autoslide"] : 'on';
        
$portfolio_effects_list absint($_POST["portfolio_effects_list"]);
        
$description absint($_POST["sl_pausetime"]);
        
$sl_changespeed absint($_POST["sl_changespeed"]);
        
$all_categories wp_unslash(str_replace(' ''_'sanitize_text_field($_POST["allCategories"])));
        
$pfhub_portfolio_show_sorting in_array($_POST["pfhub_portfolio_show_sorting"], array(
            
'on',
            
'off'
        
)) ? $_POST["pfhub_portfolio_show_sorting"] : 'off';
        
$pfhub_portfolio_show_filtering in_array($_POST["pfhub_portfolio_show_filtering"], array(
            
'on',
            
'off'
        
)) ? $_POST["pfhub_portfolio_show_filtering"] : 'off';
        
$show_loading in_array($_POST["show_loading"], array(
            
'on',
            
'off'
        
)) ? $_POST["show_loading"] : 'on';
        
$loading_icon_type absint($_POST["loading_icon_type"]);

        
$wpdb->update(
            
$wpdb->prefix "pfhub_portfolio_grids",
            array(
                
'name' => $name,
                
'sl_width' => $sl_width,
                
'sl_height' => $sl_height,
                
'pause_on_hover' => $pause_on_hover,
                
'autoslide' => $autoslide,
                
'grid_view_type' => $portfolio_effects_list,
                
'description' => $description,
                
'param' => $sl_changespeed,
                
'ordering' => 1,
                
'categories' => $all_categories,
                
'pfhub_portfolio_show_sorting' => $pfhub_portfolio_show_sorting,
                
'pfhub_portfolio_show_filtering' => $pfhub_portfolio_show_filtering,
                
'show_loading' => $show_loading,
                
'loading_icon_type' => $loading_icon_type,
            ),
            array(
'id' => $id)
        );

        
update_option('pfhub_portfolio_disable_right_click'sanitize_text_field($_POST['disable_right_click']));

        
$query $wpdb->prepare("SELECT * FROM " $wpdb->prefix "pfhub_portfolio_grids WHERE id = %d"$id);
        
$row $wpdb->get_row($query);

        if (isset(
$_POST['pfhub_portfolio_admin_image_hover_preview'])) {
            
$img_preview sanitize_text_field($_POST['pfhub_portfolio_admin_image_hover_preview']);
            
update_option('pfhub_portfolio_admin_image_hover_preview'$img_preview);
        } else {
            
update_option('pfhub_portfolio_admin_image_hover_preview''off');
        }

        if (isset(
$_POST['changedvalues']) && $_POST['changedvalues'] != '') {
            
$changedValues preg_replace('#[^0-9,]+#'''$_POST['changedvalues']);
            
$query $wpdb->prepare("SELECT * FROM " $wpdb->prefix "pfhub_portfolio_images where grid_id = %d AND id in (" $changedValues ") order by id ASC"$row->id);
            
$rowim $wpdb->get_results($query);
            foreach (
$rowim as $key => $rowimages) {
                
$imgDescription wp_kses_post(wp_unslash($_POST["im_description" $rowimages->id ""]));
                
$imgTitle wp_kses_post(wp_unslash($_POST["titleimage" $rowimages->id ""]));
                
$orderBy absint($_POST["order_by_" $rowimages->id]);
                
$link_target sanitize_text_field($_POST["sl_link_target" $rowimages->id]);
                
$url sanitize_text_field($_POST["media_url" $rowimages->id]);
                
$image_url sanitize_text_field($_POST["imagess" $rowimages->id]);

                
$wpdb->update(
                    
$wpdb->prefix "pfhub_portfolio_images",
                    array(
                        
'ordering' => $orderBy,
                        
'link_target' => $link_target,
                        
'media_url' => $url,
                        
'name' => $imgTitle,
                        
'description' => $imgDescription,
                        
'image_url' => $image_url,
                    ),
                    array(
'id' => absint($rowimages->id))
                );
            }
        }

        if (
$_POST["imagess"] != '') {
            
$query $wpdb->prepare("SELECT * FROM " $wpdb->prefix "pfhub_portfolio_images where grid_id = %d order by id ASC"$row->id);
            
$rowim $wpdb->get_results($query);
            foreach (
$rowim as $key => $rowimages) {
                
$orderingplus $rowimages->ordering 1;
                
$wpdb->query($wpdb->prepare("UPDATE " $wpdb->prefix "pfhub_portfolio_images SET  ordering = %d  WHERE ID = %d "$orderingplus$rowimages->id));
            }

            
$table_name $wpdb->prefix "pfhub_portfolio_images";
            
$imagesnewuploader explode(";;;"sanitize_text_field($_POST["imagess"]));

            
array_pop($imagesnewuploader);

            foreach (
$imagesnewuploader as $imagesnewupload) {
                
$wpdb->insert(
                    
$table_name,
                    array(
                        
'name' => '',
                        
'grid_id' => $row->id,
                        
'description' => '',
                        
'image_url' => $imagesnewupload ';',
                        
'media_url' => '',
                        
'ordering' => '0',
                        
'published' => 2,
                        
'published_in_sl_width' => '1',
                    ),
                    array(
'%s''%d''%s''%s''%s''%s''%d''%s')
                );
            }

            
$query $wpdb->prepare("SELECT * FROM " $table_name " WHERE grid_id=%d ORDER BY ordering"$id);
            
$portfolio_images $wpdb->get_results($query);
            
$i 0;
            foreach (
$portfolio_images as $portfolio_image) {
                
$wpdb->update(
                    
$table_name,
                    array(
'ordering' => $i),
                    array(
'id' => $portfolio_image->id)
                );
                
$i++;
            }
        }

        
?>
        <div class="updated"><p><strong><?php _e('Item Saved''pfhub_portfolio'); ?></strong></p></div>
        <?php

        
return true;
    }
}