/** ---------------- katb_testimonial_basics_edit_page -----------------------------
 * called from the add_submenu_page
 * This is the edit testimonials section that displays all the testimonials and 
 * allows the user to add, edit,delete, and approve testimonials
 * 
 * @uses katb_get_options() found in /includes/katb_functions.php
 * @uses katb_intro_html(); found in this file
 * @uses katb_offset_setup found in /includes/katb_functions.php
 * @uses katb_setup_pagination() found in /includes/katb_functions.php
 * @uses katb_display_pagination() found in /includes/katb_functions.php
 * 
 * 
 */
function katb_testimonial_basics_edit_page()
{
    global $wpdb, $tablename;
    $tablename = $wpdb->prefix . 'testimonial_basics';
    //get user options
    $katb_options = katb_get_options();
    $use_ratings = $katb_options['katb_use_ratings'];
    //setup pagination
    $katb_admin_offset_name = home_url() . 'katb_admin_offset';
    $katb_items_per_page = 10;
    //submit testimonial
    if (isset($_POST['submitted']) && check_admin_referer('katb_nonce_3', 'katb_admin_form_nonce')) {
        //Validate Input
        $error = "";
        $katb_id = $_POST['tb_id'];
        // Order must be an integer
        $katb_order = trim($_POST['tb_order']);
        if ($katb_order != "") {
            if (is_numeric($katb_order) == FALSE) {
                $katb_order = "";
                $error .= '*' . esc_html__('Order must be a integer', 'testimonial-basics') . '*';
            }
        }
        //Approved is either checked (1) or not checked (0)
        if (!isset($_POST['tb_approved'])) {
            $katb_approved = 0;
        } else {
            $katb_approved = 1;
        }
        //group validation
        $katb_group = sanitize_text_field(trim($_POST['tb_group']));
        //author validation
        $katb_author = sanitize_text_field(trim($_POST['tb_author']));
        if ($katb_author == "") {
            $error .= '*' . esc_html__('Author is required', 'testimonial-basics') . '*';
        }
        //website validation
        $katb_website = trim($_POST['tb_website']);
        if ($katb_website != '') {
            $katb_website = esc_url($_POST['tb_website']);
        }
        if ($katb_website == 'http://') {
            $katb_website = '';
        }
        //location validation
        $katb_location = sanitize_text_field(trim($_POST['tb_location']));
        //email validation
        $katb_email = sanitize_email(trim($_POST['tb_email']));
        if (!is_email($katb_email) && $katb_email != '') {
            $error .= '*' . esc_html__('Valid email is required', 'testimonial-basics') . '*';
        }
        //Date Validation
        $katb_date = trim($_POST['tb_date']);
        if ($katb_date != "") {
            $year = intval(substr($katb_date, 0, 4));
            $month = intval(substr($katb_date, 5, 2));
            $day = intval(substr($katb_date, 8, 2));
            if (!checkdate($month, $day, $year)) {
                $error .= '*' . esc_html__('Date must be', 'testimonial-basics') . ' YYYY-MM-DD*';
            }
        }
        //time validation
        $katb_time = trim($_POST['tb_time']);
        if ($katb_time != "") {
            $hour = intval(substr($katb_time, 0, 2));
            $min = intval(substr($katb_time, 3, 2));
            $sec = intval(substr($katb_time, 6, 2));
            if ($hour < 0 || $hour > 23 || $min < 0 || $min > 59 || $sec < 0 || $sec > 59 || substr($katb_time, 2, 1) != ":" || substr($katb_time, 5, 1) != ":") {
                $error .= '*' . esc_html__('Time must be', 'testimonial-basics') . ' HH:MM:SS*';
            }
        }
        if ($katb_date == "" && $katb_time == "") {
            $katb_datetime = current_time('mysql');
        } elseif ($katb_date != "" && $katb_time == "") {
            $katb_datetime = $katb_date . ' 00:00:00';
        } elseif ($katb_date == "" && $katb_time != "") {
            $katb_datetime = current_time('mysql');
        } else {
            $katb_datetime = $katb_date . ' ' . $katb_time;
        }
        $katb_date = substr($katb_datetime, 0, 10);
        $katb_time = substr($katb_datetime, 11, 8);
        //Rating Validation
        $katb_rating = sanitize_text_field(trim($_POST['tb_rating']));
        //photo validation
        $katb_picture_url = trim($_POST['tb_upload_image']);
        if ($katb_picture_url != '') {
            $katb_picture_url = esc_url($katb_picture_url);
        }
        if ($katb_picture_url == 'http://') {
            $katb_picture_url = '';
        }
        //Sanitize testimonial - same html allowed as allowed in posts
        //$katb_testimonial = wp_kses_post(stripslashes($_POST['tb_testimonial']));
        $katb_testimonial = wp_kses_post(stripslashes($_POST['tb_testimonial']));
        if ($katb_testimonial == "") {
            $error .= '*' . esc_html__('Testimonial is required', 'testimonial-basics') . '*';
        }
        //Validation complete
        if ($error == "") {
            //OK $error is empty so let's update the database
            $values = array('tb_date' => $katb_datetime, 'tb_order' => $katb_order, 'tb_approved' => $katb_approved, 'tb_group' => $katb_group, 'tb_name' => $katb_author, 'tb_email' => $katb_email, 'tb_location' => $katb_location, 'tb_url' => $katb_website, 'tb_pic_url' => $katb_picture_url, 'tb_rating' => $katb_rating, 'tb_testimonial' => $katb_testimonial);
            $formats_values = array('%s', '%d', '%d', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');
            if ($katb_id == "") {
                // get previous entry to pervent reload duplication
                $prev_entry = $wpdb->get_row("SELECT * FROM `{$tablename}` ORDER BY `tb_id` DESC ", ARRAY_A);
                if ($prev_entry['tb_testimonial'] != $katb_testimonial) {
                    $wpdb->insert($tablename, $values, $formats_values);
                    $katb_id = $wpdb->insert_id;
                    echo '<div id="message" class="updated">' . esc_html__('Testimonial added successfuly.', 'testimonial-basics') . '</div>';
                } else {
                    $katb_id = $prev_entry['tb_id'];
                }
            } else {
                $where = array('tb_id' => $katb_id);
                $wpdb->update($tablename, $values, $where, $formats_values);
                echo '<div id="message" class="updated">' . esc_html__('Testimonial updated.', 'testimonial-basics') . '</div>';
            }
        } else {
            echo '<div id="message" class="error">' . esc_html__('Error,testimonial was not added', 'testimonial-basics') . ': ' . $error . '</div>';
        }
    } else {
        $katb_id = "";
        $katb_order = "";
        $katb_approved = "";
        $katb_group = "";
        $katb_date = "";
        $katb_time = "";
        $katb_author = "";
        $katb_email = "";
        $katb_website = "";
        $katb_location = "";
        $katb_rating = "";
        $katb_picture_url = "";
        $katb_testimonial = "";
    }
    /* ---------- Reset button is clicked ---------------- */
    if (isset($_POST['reset']) && check_admin_referer('katb_nonce_3', 'katb_admin_form_nonce')) {
        $katb_id = "";
        $katb_order = "";
        $katb_approved = "";
        $katb_group = "";
        $katb_date = "";
        $katb_time = "";
        $katb_author = "";
        $katb_email = "";
        $katb_website = "";
        $katb_location = "";
        $katb_rating = "";
        $katb_picture_url = "";
        $katb_testimonial = "";
    }
    /* ---------------- Delete Button is clicked ------------- */
    if (isset($_POST['delete']) && check_admin_referer('katb_nonce_3', 'katb_admin_form_nonce')) {
        $katb_id = $_POST['tb_id'];
        if ($katb_id == "") {
            echo '<div id="message" class="error">' . esc_html__('Error, no ID', 'testimonial-basics') . '</div>';
        } else {
        }
        $wpdb->query(" DELETE FROM `{$tablename}` WHERE `tb_id`={$katb_id} ");
        $katb_id = "";
        $katb_order = "";
        $katb_approved = "";
        $katb_group = "";
        $katb_date = "";
        $katb_time = "";
        $katb_author = "";
        $katb_email = "";
        $katb_website = "";
        $katb_location = "";
        $katb_rating = "";
        $katb_picture_url = "";
        $katb_testimonial = "";
        echo '<div id="message" class="updated">' . esc_html__('Testimonial was deleted.', 'testimonial-basics') . '</div>';
    }
    /* ----------- select an id to edit ----------------- */
    if (isset($_POST['edit']) && check_admin_referer('katb_nonce_4', 'katb_admin_form_nonce_2')) {
        $katb_id = $_POST['edit'];
        $edit_data = $wpdb->get_row("SELECT * FROM `{$tablename}` WHERE `tb_id` = {$katb_id} ", ARRAY_A);
        $katb_order = $edit_data['tb_order'];
        $katb_group = $edit_data['tb_group'];
        $katb_author = $edit_data['tb_name'];
        $katb_email = $edit_data['tb_email'];
        $katb_website = $edit_data['tb_url'];
        $katb_location = $edit_data['tb_location'];
        $katb_testimonial = $edit_data['tb_testimonial'];
        $katb_approved = $edit_data['tb_approved'];
        $katb_date = substr($edit_data['tb_date'], 0, 10);
        $katb_time = substr($edit_data['tb_date'], 11, 8);
        $katb_rating = $edit_data['tb_rating'];
        $katb_picture_url = $edit_data['tb_pic_url'];
    }
    /* ------- set up pagination ----------- */
    if (isset($_POST['ka_paginate_post'])) {
        //Get total entries
        $results = $wpdb->get_results(" SELECT COUNT(1) FROM `{$tablename}` ", ARRAY_A);
        $total_entries = $results[0]['COUNT(1)'];
        $ka_paginate_action = $_POST['ka_paginate_post'];
        katb_offset_setup($katb_admin_offset_name, $katb_items_per_page, $ka_paginate_action, $total_entries);
    }
    ?>
	<div class="wrap katb_admin_edit_wrap">
		
		<h2>Testimonial Basics Edit and Approve Testimonials</h2>
		<?php 
    katb_intro_html();
    ?>
		
		<p><?php 
    esc_html_e('Click the Help button for instructions or see the testimonial_basics_docs.html file included in the plugin docs folder.', 'testimonial-basics');
    ?>
</p>
		<h3><?php 
    esc_html_e('Enter or update a testimonial (*Required)', 'testimonial-basics');
    ?>
</h3>
		<form class="katb_admin_form" method="POST" action="#">
			
			<?php 
    wp_nonce_field("katb_nonce_3", "katb_admin_form_nonce");
    ?>
			
			<span class="ka_edit_column_1">
				
				<label class="katb_edit_id_label"><?php 
    esc_html_e('ID : ', 'testimonial-basics');
    ?>
</label>
				<input class="katb_edit_id_input" type="text" size="5" maxlength="5" readonly="readonly" name="tb_id" value="<?php 
    echo $katb_id;
    ?>
" />
				
				<label class="katb_edit_approved_label"><?php 
    esc_html_e('Approved : ', 'testimonial-basics');
    ?>
</label>
				<input class="katb_edit_approved_input" type="checkbox" name="tb_approved" value="1"<?php 
    if ($katb_approved == 1) {
        echo ' checked="checked"';
    }
    ?>
 />
				
				<label class="katb_edit_date_label"><?php 
    esc_html_e('Date (YYYY-MM-DD): ', 'testimonial-basics');
    ?>
</label>
				<input class="katb_edit_date_input" type="text" maxlength="12" size="30" name="tb_date" value="<?php 
    echo $katb_date;
    ?>
" />
				
				<label class="katb_edit_time_label"><?php 
    esc_html_e('Time (HH:MM:SS): ', 'testimonial-basics');
    ?>
</label>
				<input class="katb_edit_time_input" type="text" maxlength="10" size="30" name="tb_time" value="<?php 
    echo $katb_time;
    ?>
" />
				
				<label class="katb_edit_group_label"><?php 
    esc_html_e('Group : ', 'testimonial-basics');
    ?>
</label>
				<input class="katb_edit_group_input" type="text" maxlength="100" size="24" name="tb_group" value="<?php 
    echo stripcslashes($katb_group);
    ?>
" />
	
				<label class="katb_edit_order_label"><?php 
    esc_html_e('Order : ', 'testimonial-basics');
    ?>
</label>
				<input class="katb_edit_order_input" type="text" size="5" maxlength="5" name="tb_order" value="<?php 
    echo $katb_order;
    ?>
" />
				
				<label class="katb_edit_rating_label"><?php 
    esc_html_e('Review Rating : ', 'testimonial-basics');
    ?>
</label>
				<select class="katb_edit_rating_input" name="tb_rating">
					<option <?php 
    selected($katb_rating);
    ?>
 value="<?php 
    echo $katb_rating;
    ?>
"><?php 
    echo $katb_rating;
    ?>
</option>
					<option value="0.0">0.0</option>
					<option value="0.5">0.5</option>
					<option value="1.0">1.0</option>
					<option value="1.5">1.5</option>
					<option value="2.0">2.0</option>
					<option value="2.5">2.5</option>
					<option value="3.0">3.0</option>
					<option value="3.5">3.5</option>
					<option value="4.0">4.0</option>
					<option value="4.5">4.5</option>
					<option value="5.0">5.0</option>
				</select>
			
			</span>
			
			<span class="ka_edit_column_2">
				
				<label class="katb_edit_pic_label"><?php 
    esc_html_e('Gravatar/Photo : ', 'testimonial-basics');
    ?>
</label>
				<?php 
    if ($katb_picture_url == '') {
        ?>
					<span class="katb_edit_avatar"><?php 
        echo get_avatar($katb_email, $size = '60');
        ?>
</span>
				<?php 
    } else {
        ?>
					<span class="katb_edit_pic"><img src="<?php 
        echo $katb_picture_url;
        ?>
" title="Uploaded_Author_Image" alt="Uploaded_Author_Image" /></span>
				<?php 
    }
    ?>
				
				<input id="katb_upload_image" class="katb_picture_url" type="text" name="tb_upload_image" maxlength="100" value="<?php 
    echo stripcslashes($katb_picture_url);
    ?>
" />
				<br/><br/><br/>
				<input id="katb_upload_button" class="katb_upload_button" type="button" name="tb_photo_add" value="Upload Image" />		

				<label class="katb_edit_author_label"><?php 
    esc_html_e('Author *: ', 'testimonial-basics');
    ?>
</label>
				<input class="katb_edit_author_input" type="text" maxlength="100" name="tb_author" value="<?php 
    echo stripcslashes($katb_author);
    ?>
" />
				
				<label class="katb_edit_email_label"><?php 
    esc_html_e('Email : ', 'testimonial-basics');
    ?>
</label>
				<input class="katb_edit_email_input" type="text" maxlength="100" name="tb_email" value="<?php 
    echo stripcslashes($katb_email);
    ?>
" />
				
	
				<label class="katb_edit_url_label"><?php 
    esc_html_e('Website : ', 'testimonial-basics');
    ?>
</label>
				<input class="katb_edit_url_input" type="text" maxlength="100" name="tb_website" value="<?php 
    echo $katb_website;
    ?>
" />
				
				<label class="katb_edit_location_label"><?php 
    esc_html_e('Location : ', 'testimonial-basics');
    ?>
</label>
				<input class="katb_edit_location_input" type="text" maxlength="100" name="tb_location" value="<?php 
    echo stripcslashes($katb_location);
    ?>
" />
			
			</span>
			
			<label class="katb_edit_testimonial_label"><?php 
    esc_html_e('Testimonial *: ', 'testimonial-basics');
    ?>
</label>
			
			<textarea class="katb_edit_testimonial_input"  name="tb_testimonial" ><?php 
    echo htmlspecialchars(stripslashes($katb_testimonial));
    ?>
</textarea>
						
			<input type="submit" name="submitted" value="<?php 
    esc_html_e('Save Testimonial', 'testimonial-basics');
    ?>
" class="katb-primary button-primary" />
			<input type="submit" name="reset" value="<?php 
    esc_html_e('Reset', 'testimonial-basics');
    ?>
" class="katb-secondary button-secondary" />
			<input type="submit" name="delete" value="<?php 
    esc_html_e('Delete', 'testimonial-basics');
    ?>
" class="katb-highlighted button-highlighted" />
		</form>
		
		<div class="katb_admin_display_testimonials">
			
			<h3 class="katb_admin_title">Testimonials</h3>
			<div style="clear:both;"></div>
			<?php 
    //Get total entries
    $results = $wpdb->get_results(" SELECT COUNT(1) FROM `{$tablename}` ", ARRAY_A);
    $total_entries = $results[0]['COUNT(1)'];
    //Pagination
    $katb_paginate_setup = katb_setup_pagination($katb_admin_offset_name, $katb_items_per_page, $total_entries);
    $katb_admin_offset = $katb_paginate_setup['offset'];
    if ($katb_admin_offset < 0) {
        $katb_admin_offset = 0;
    }
    $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` ORDER BY `tb_date` DESC LIMIT {$katb_items_per_page} OFFSET {$katb_admin_offset} ", ARRAY_A);
    $katb_tnumber = $wpdb->num_rows;
    // --------- Bulk Delete ----------
    if (isset($_POST['bulk_delete']) && check_admin_referer('katb_nonce_4', 'katb_admin_form_nonce_2')) {
        for ($i = 0; $i < $katb_tnumber; $i++) {
            if (isset($_POST['bulk_delete-' . $katb_tdata[$i]['tb_id']]) && $_POST['bulk_delete-' . $katb_tdata[$i]['tb_id']] == 1) {
                if ($katb_tdata[$i]['tb_id'] == "") {
                    echo '<div id="message" class="updated">' . esc_html__('Error, no ID', 'testimonial-basics') . '</div>';
                } else {
                    $delete_id = $katb_tdata[$i]['tb_id'];
                    $wpdb->query(" DELETE FROM `{$tablename}` WHERE `tb_id`={$delete_id} ");
                }
            }
        }
        //reset the testimonials for display
        //Get total entries
        $results = $wpdb->get_results(" SELECT COUNT(1) FROM `{$tablename}` ", ARRAY_A);
        $total_entries = $results[0]['COUNT(1)'];
        //Pagination
        $katb_paginate_setup = katb_setup_pagination($katb_admin_offset_name, $katb_items_per_page, $total_entries);
        $katb_admin_offset = $katb_paginate_setup['offset'];
        if ($katb_admin_offset < 0) {
            $katb_admin_offset = 0;
        }
        $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` ORDER BY `tb_date` DESC LIMIT {$katb_items_per_page} OFFSET {$katb_admin_offset} ", ARRAY_A);
        $katb_tnumber = $wpdb->num_rows;
    }
    katb_display_pagination($katb_paginate_setup);
    ?>
			<form class="katb_admin_display_form" method="POST" action="#">
				
				<?php 
    wp_nonce_field("katb_nonce_4", "katb_admin_form_nonce_2");
    ?>
				
				<input type="submit" name="bulk_delete" value="Bulk Delete" class="katb-highlighted button-highlighted" title="<?php 
    esc_html_e('WARNING - NO SECOND CHANCE - checked items will be deleted', 'testimonial-basics');
    ?>
"/>
				<div class="katb_admin_display">

					<?php 
    for ($i = 0; $i < $katb_tnumber; $i++) {
        ?>
						<div class="katb_admin_display_element_row">
							
							<div class="katb_admin_row_top">
								
								<div class="ka_table_id">
									<input type="submit" name="edit" value="<?php 
        echo $katb_tdata[$i]['tb_id'];
        ?>
" class="katb button-secondary" />
									<input class="katb_bulk_delete_input" type="checkbox" name="bulk_delete-<?php 
        echo $katb_tdata[$i]['tb_id'];
        ?>
" value="1" />
									<span class="katb_bulk_delete_label"><img src="../wp-content/plugins/testimonial-basics/includes/delete.png" title="Bulk Delete" alt="del" /></span>
								</div>
								
								<div class="ka_table_admin_column">
									<span class="ka_table_date"><strong><?php 
        esc_html_e('Date: ', 'testimonial-basics');
        ?>
</strong><?php 
        echo substr($katb_tdata[$i]['tb_date'], 0, 10);
        ?>
</span><br/>
									<span class="ka_table_time"><strong><?php 
        esc_html_e('Time: ', 'testimonial-basics');
        ?>
</strong><?php 
        echo substr($katb_tdata[$i]['tb_date'], 11, 8);
        ?>
</span><br/>
									<span class="ka_table_approved">
										<strong><?php 
        esc_html_e('Approved: ', 'testimonial-basics');
        ?>
										<?php 
        if ($katb_tdata[$i]['tb_approved'] == 1) {
            ?>
<span style="color: green;">Y</span><?php 
        } else {
            ?>
<span style="color: red;">N</span><?php 
        }
        ?>
									</strong></span><br/>
									<span class="ka_table_group"><strong><?php 
        esc_html_e('Group: ', 'testimonial-basics');
        ?>
</strong><?php 
        echo stripcslashes($katb_tdata[$i]['tb_group']);
        ?>
</span><br/>
									<span class="ka_table_order"><strong><?php 
        esc_html_e('Order: ', 'testimonial-basics');
        ?>
</strong><?php 
        if ($katb_tdata[$i]['tb_order'] == 0) {
            echo "";
        } else {
            echo $katb_tdata[$i]['tb_order'];
        }
        ?>
</span><br/>
									<span class="ka_table_rating"><strong><?php 
        esc_html_e('Rating: ', 'testimonial-basics');
        ?>
</strong><?php 
        echo stripcslashes($katb_tdata[$i]['tb_rating']);
        ?>
</span>
								</div>

								<div class="ka_table_author_column">
									<span class="ka_table_name"><strong><?php 
        esc_html_e('Name: ', 'testimonial-basics');
        ?>
</strong><?php 
        echo stripcslashes($katb_tdata[$i]['tb_name']);
        ?>
</span><br/>
									<span class="ka_table_email"><strong><?php 
        esc_html_e('E-mail: ', 'testimonial-basics');
        ?>
</strong><?php 
        echo $katb_tdata[$i]['tb_email'];
        ?>
</span><br/>
									<span class="ka_table_location"><strong><?php 
        esc_html_e('Location: ', 'testimonial-basics');
        ?>
</strong><?php 
        echo stripcslashes($katb_tdata[$i]['tb_location']);
        ?>
</span><br/>
									<span class="ka_table_website"><strong><?php 
        esc_html_e('Website: ', 'testimonial-basics');
        ?>
</strong><?php 
        echo $katb_tdata[$i]['tb_url'];
        ?>
</span><br/>	
									<?php 
        if ($katb_tdata[$i]['tb_pic_url'] == '') {
            ?>
<span class="ka_table_pic"><?php 
            echo get_avatar($katb_tdata[$i]['tb_email'], $size = '60');
            ?>
</span><?php 
        } else {
            ?>
<span class="ka_table_pic"><img src="<?php 
            echo $katb_tdata[$i]['tb_pic_url'];
            ?>
" title="Uploaded_Author_Image" alt="Uploaded_Author_Image" /></span><?php 
        }
        ?>
								</div>
								
							</div>
							
							<div class="ka_table_testimonial"><?php 
        echo wpautop(stripcslashes($katb_tdata[$i]['tb_testimonial']));
        ?>
</div>
							
						</div>
					<?php 
    }
    ?>

				</div>
			</form>
			<?php 
    katb_display_pagination($katb_paginate_setup);
    ?>
		</div>
		
	</div>
<?php 
}
Example #2
0
/** ------------------ display testimonials shortcode ---------------------------------
 * useage : [katb_testimonial group="all" number="all" by="date" id="" rotate="no" layout="0" schema="default"] 
 * group : "all" or "group" where group is the identifier in the testimonial
 * by : "date" or "order" or "random"
 * number : "all" or input the number you want to display
 * id : "" or ids of testimonials
 * rotate : "no" do not rotate, "yes" rotate testimonials
 * layout : 0-default,1-no format top meta, 2-no format bottom meta, 3-no format side meta,
 *          4-format top meta, 5-format bottom meta, 6-format side meta
 * schema : default-whatever is set up in the General Options Panel, yes-override to yes, no-override to no
 * 
 * @param array $atts contains the shortcode parameters
 * @uses katb_get_options() function to get plugin options found in katb_functions.php
 * @uses katb_offset_setup() for pagination found in katb_functions.php
 * @uses katb_setup_pagination for pagination  found in katb_functions.php
 * @uses katb_content_display sets up the testimonial display found in katb_functions.php
 * @uses katb_get_display_pagination_string displays pagination  found in katb_functions.php
 * 
 * @return string $katb_html containging the html of the testimonial display request
 * ------------------------------------------------------------------------- */
function katb_list_testimonials($atts)
{
    //setup database table
    global $wpdb, $tablename;
    $tablename = $wpdb->prefix . 'testimonial_basics';
    //initialize main testimonial arrays
    $katb_tdata = array();
    $katb_tdata = '';
    $katb_tnumber = '';
    //get user options
    global $katb_options;
    $katb_options = katb_get_options();
    $use_formatted_display = intval($katb_options['katb_use_formatted_display']);
    $content_layout = sanitize_text_field($katb_options['katb_layout_option']);
    $use_schema = intval($katb_options['katb_use_schema']);
    $display_reviews = intval($katb_options['katb_schema_display_reviews']);
    //set up pagination
    $katb_offset_name = home_url() . 'katb_offset';
    //$katb_items_per_page = 10;
    $katb_items_per_page = intval($katb_options['katb_paginate_number']);
    //get shortcode variables
    extract(shortcode_atts(array('group' => 'all', 'number' => 'all', 'by' => 'random', 'id' => '', 'rotate' => 'no', 'layout' => '0', 'schema' => 'default'), $atts));
    //Sanitize data
    $group = sanitize_text_field($group);
    $number = strtolower(sanitize_text_field($number));
    $by = strtolower(sanitize_text_field($by));
    $id = sanitize_text_field($id);
    $rotate = strtolower(sanitize_text_field($rotate));
    $layout_override = sanitize_text_field($layout);
    $use_schema_override = sanitize_text_field($schema);
    //white list rotate
    if ($rotate != 'yes') {
        $rotate = 'no';
    }
    //white list group
    if ($group == '') {
        $group = 'all';
    }
    //number validation/whitelist
    if ($number == '') {
        $number = 'all';
    }
    if ($number != 'all') {
        if (intval($number) < 1) {
            $number = 1;
        } else {
            $number = intval($number);
        }
    }
    //white list $by
    if ($by != 'date' && $by != 'order') {
        $by = 'random';
    }
    //white list layout
    if ($layout_override == '0' || $layout_override == '1' || $layout_override == '2' || $layout_override == '3' || $layout_override == '4' || $layout_override == '5' || $layout_override == '6') {
        /*do nothing*/
    } else {
        $layout_override = '0';
    }
    //white list schema
    if ($use_schema_override == 'yes' || $use_schema_override == 'no') {
        /*do nothing*/
    } else {
        $use_schema_override = 'default';
    }
    //check use schema override
    if ($use_schema_override == 'yes') {
        $use_schema = 1;
    } elseif ($use_schema_override == 'no') {
        $use_schema = 0;
    }
    //OK let's start by getting the testimonial data from the database
    if ($id != '') {
        $id_picks = array();
        $id_picks_processed = array();
        $id_picks = '';
        $id_picks_processed = '';
        $id_picks = explode(',', $id);
        $counter = 0;
        foreach ($id_picks as $pick) {
            $id_picks_processed[$counter] = intval($id_picks[$counter]);
            if ($id_picks_processed[$counter] < 1) {
                $id_picks_processed[$counter] = 1;
            }
            $counter++;
        }
        $count = 0;
        $count2 = 0;
        foreach ($id_picks_processed as $pick) {
            $pick_id = $id_picks_processed[$count];
            $tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_id` = '{$pick_id}' ", ARRAY_A);
            $tnumber = $wpdb->num_rows;
            if ($tnumber == 1) {
                $katb_tdata[$count2] = $tdata[0];
                $count2++;
            }
            $count++;
        }
        $katb_tnumber = $count2;
    } else {
        if ($group == 'all' && $number == 'all' && $by == 'date') {
            if (isset($katb_options['katb_use_pagination']) && $katb_options['katb_use_pagination'] == 1 && $rotate == 'no') {
                //Get total entries
                $results = $wpdb->get_results(" SELECT COUNT(1) FROM `{$tablename}` WHERE `tb_approved` = '1' ", ARRAY_A);
                $total_entries = $results[0]['COUNT(1)'];
                //check for offset
                if (isset($_POST['ka_paginate_post'])) {
                    $ka_paginate_action = $_POST['ka_paginate_post'];
                    katb_offset_setup($katb_offset_name, $katb_items_per_page, $ka_paginate_action, $total_entries);
                }
                //Pagination
                $katb_paginate_setup = katb_setup_pagination($katb_offset_name, $katb_items_per_page, $total_entries);
                $katb_offset = $katb_paginate_setup['offset'];
                if ($katb_offset < 0) {
                    $katb_offset = 0;
                }
                //get results
                $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' ORDER BY `tb_date` DESC LIMIT {$katb_items_per_page} OFFSET {$katb_offset} ", ARRAY_A);
            } else {
                $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' ORDER BY `tb_date` DESC ", ARRAY_A);
            }
            $katb_tnumber = $wpdb->num_rows;
        } elseif ($group == 'all' && $number == 'all' && $by == 'order') {
            if (isset($katb_options['katb_use_pagination']) && $katb_options['katb_use_pagination'] == 1 && $rotate == 'no') {
                //Get total entries
                $results = $wpdb->get_results(" SELECT COUNT(1) FROM `{$tablename}` WHERE `tb_approved` = '1' ", ARRAY_A);
                $total_entries = $results[0]['COUNT(1)'];
                //check for offset
                if (isset($_POST['ka_paginate_post'])) {
                    $ka_paginate_action = $_POST['ka_paginate_post'];
                    katb_offset_setup($katb_offset_name, $katb_items_per_page, $ka_paginate_action, $total_entries);
                }
                //Pagination
                $katb_paginate_setup = katb_setup_pagination($katb_offset_name, $katb_items_per_page, $total_entries);
                $katb_offset = $katb_paginate_setup['offset'];
                if ($katb_offset < 0) {
                    $katb_offset = 0;
                }
                //get results
                $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' ORDER BY `tb_order` = '0', `tb_order` ASC,`tb_date` DESC LIMIT {$katb_items_per_page} OFFSET {$katb_offset} ", ARRAY_A);
            } else {
                $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' ORDER BY `tb_order` = '0', `tb_order` ASC,`tb_date` DESC ", ARRAY_A);
            }
            $katb_tnumber = $wpdb->num_rows;
        } elseif ($group == 'all' && $number == 'all' && $by == 'random') {
            $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' ORDER BY RAND() ", ARRAY_A);
            $katb_tnumber = $wpdb->num_rows;
        } elseif ($group == 'all' && $number != 'all' && $by == 'date') {
            $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' ORDER BY `tb_date` DESC LIMIT 0,{$number} ", ARRAY_A);
            $katb_tnumber = $wpdb->num_rows;
        } elseif ($group == 'all' && $number != 'all' && $by == 'order') {
            $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' ORDER BY `tb_order` = '0',`tb_order` ASC LIMIT 0,{$number} ", ARRAY_A);
            $katb_tnumber = $wpdb->num_rows;
        } elseif ($group == 'all' && $number != 'all' && $by == 'random') {
            $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' ORDER BY RAND() LIMIT 0,{$number} ", ARRAY_A);
            $katb_tnumber = $wpdb->num_rows;
        } elseif ($group != 'all' && $number == 'all' && $by == 'date') {
            if (isset($katb_options['katb_use_pagination']) && $katb_options['katb_use_pagination'] == 1 && $rotate == 'no') {
                //Get total entries
                $results = $wpdb->get_results(" SELECT COUNT(1) FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_group` = '{$group}' ", ARRAY_A);
                $total_entries = $results[0]['COUNT(1)'];
                //check for offset
                if (isset($_POST['ka_paginate_post'])) {
                    $ka_paginate_action = $_POST['ka_paginate_post'];
                    katb_offset_setup($katb_offset_name, $katb_items_per_page, $ka_paginate_action, $total_entries);
                }
                //Pagination
                $katb_paginate_setup = katb_setup_pagination($katb_offset_name, $katb_items_per_page, $total_entries);
                $katb_offset = $katb_paginate_setup['offset'];
                if ($katb_offset < 0) {
                    $katb_offset = 0;
                }
                //get results
                $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_group` = '{$group}' ORDER BY `tb_date` DESC LIMIT {$katb_items_per_page} OFFSET {$katb_offset} ", ARRAY_A);
            } else {
                $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_group` = '{$group}' ORDER BY `tb_date` DESC ", ARRAY_A);
            }
            $katb_tnumber = $wpdb->num_rows;
        } elseif ($group != 'all' && $number == 'all' && $by == 'order') {
            if (isset($katb_options['katb_use_pagination']) && $katb_options['katb_use_pagination'] == 1 && $rotate == 'no') {
                //Get total entries
                $results = $wpdb->get_results(" SELECT COUNT(1) FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_group` = '{$group}' ", ARRAY_A);
                $total_entries = $results[0]['COUNT(1)'];
                //check for offset
                if (isset($_POST['ka_paginate_post'])) {
                    $ka_paginate_action = $_POST['ka_paginate_post'];
                    katb_offset_setup($katb_offset_name, $katb_items_per_page, $ka_paginate_action, $total_entries);
                }
                //Pagination
                $katb_paginate_setup = katb_setup_pagination($katb_offset_name, $katb_items_per_page, $total_entries);
                $katb_offset = $katb_paginate_setup['offset'];
                if ($katb_offset < 0) {
                    $katb_offset = 0;
                }
                //get results
                $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_group` = '{$group}' ORDER BY `tb_order` = '0',`tb_order` ASC,`tb_date` DESC LIMIT {$katb_items_per_page} OFFSET {$katb_offset} ", ARRAY_A);
            } else {
                $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_group` = '{$group}' ORDER BY `tb_order` = '0',`tb_order` ASC,`tb_date` DESC ", ARRAY_A);
            }
            $katb_tnumber = $wpdb->num_rows;
        } elseif ($group != 'all' && $number == 'all' && $by == 'random') {
            $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_group` = '{$group}' ORDER BY RAND() ", ARRAY_A);
            $katb_tnumber = $wpdb->num_rows;
        } elseif ($group != 'all' && $number != 'all' && $by == 'date') {
            $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_group` = '{$group}' ORDER BY `tb_date` DESC LIMIT 0,{$number} ", ARRAY_A);
            $katb_tnumber = $wpdb->num_rows;
        } elseif ($group != 'all' && $number != 'all' && $by == 'order') {
            $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_group` = '{$group}' ORDER BY `tb_order` = '0',`tb_order` ASC LIMIT 0,{$number} ", ARRAY_A);
            $katb_tnumber = $wpdb->num_rows;
        } elseif ($group != 'all' && $number != 'all' && $by == 'random') {
            $katb_tdata = $wpdb->get_results(" SELECT * FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_group` = '{$group}' ORDER BY RAND() LIMIT 0,{$number} ", ARRAY_A);
            $katb_tnumber = $wpdb->num_rows;
        }
    }
    $katb_error = '';
    if ($katb_tnumber < 2 && $rotate == 'yes') {
        $katb_error = esc_html__('You must have 2 approved testimonials to use a rotated display!', 'testimonial-basics');
    } elseif ($katb_tnumber == 0) {
        $katb_error = esc_html__('There are no approved testimonials to display!', 'testimonial-basics');
    }
    $rotate == 'yes' ? $katb_rotate = 1 : ($katb_rotate = 0);
    // Database queried - Lets prepare the return string
    $katb_html = '';
    if ($katb_error != '') {
        $katb_html .= '<div class="katb_error">' . $katb_error . '</div>';
    } else {
        $katb_html .= katb_content_display($use_formatted_display, $use_schema, $katb_tnumber, $katb_tdata, $katb_rotate, $content_layout, $group, $layout_override);
    }
    $katb_html .= '<div class="katb_clear_fix"></div>';
    //Pagination
    if ($use_schema == 1 && $display_reviews == 0) {
        //don't display pagination
    } else {
        if (isset($katb_options['katb_use_pagination']) && $katb_options['katb_use_pagination'] == 1 && isset($katb_paginate_setup)) {
            $katb_html .= katb_get_display_pagination_string($katb_paginate_setup);
        }
    }
    return $katb_html;
}