File: /var/www/html/shootinschool/wp-content/plugins/shootin-school-plugin/add_group.php
<?php
if (!class_exists('WP_List_Table')) {
require_once(ABSPATH . 'wp-admin/includes/class-wp-list-table.php');
}
global $postNumber;
$postNumber = 1;
function add_package_group(){
//if(isset($_GET['action'])){
//if($_GET['action'] == 'edit'){
// $id = $_GET['id'];
// global $wpdb;
// $data =$wpdb->get_row("select * from " . $wpdb->prefix . "siab_package_groups where id ='$id'");
//
// <!--div class="wrap">
// <div id="Saveress" class="Saveress below-h2"></div>
// <div class="alert alert-info" role="alert">
// <h3> Package Group </h3>
// </div>
// <h4>
// Edit Package
// </h4>
// <form method="post" id="AddGroups">
// <input type="hidden" name="action" value="save_group">
// <input type="hidden" name="id" value="<?php echo $data->id;
// <div>
// <input type="text" required="" name="group" value="<?php echo $data->name;">
// </div>
// <div class="new_list">
// </div>
// <input type="button" value="Save" onclick="SaveGroupData()">
// </form>
// </div-->
// }else{
// global $wpdb;
// $table_name = $wpdb->prefix."siab_package_groups";
// $id = $_GET['id'];
// $wpdb->query("Delete from ".$table_name." where id='".$id."'");
// echo '<div class="updated"><p>Package Group Deleted <strong>Successfully...!</strong></p></div>';
// Package_add_html();
// }
// }else{
// Package_add_html();
// }
Package_add_html();
class Packages_Group_Table extends WP_List_Table
{
/**
* Prepare the items for the table to process
*
* @return Void
*/
public function prepare_items()
{
$columns = $this->get_columns();
$sortable = $this->get_sortable_columns();
$data = $this->table_data();
function usort_reorder($a,$b){
$orderby = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby'] : 'id'; //If no sort, default to title
$order = (!empty($_REQUEST['order'])) ? $_REQUEST['order'] : 'asc'; //If no order, default to asc
$result = strnatcmp($a[$orderby], $b[$orderby]); //Determine sort order
return ($order==='asc') ? $result : -$result; //Send final sort direction to usort
}
usort($data, 'usort_reorder');
$perPage = 50;
$currentPage = $this->get_pagenum();
$totalItems = count($data);
$this->set_pagination_args(array(
'total_items' => $totalItems,
'per_page' => $perPage
));
$data = array_slice($data, (($currentPage - 1) * $perPage), $perPage);
$this->_column_headers = array($columns, $hidden, $sortable);
$this->items = $data;
}
/**
* Override the parent columns method. Defines the columns to use in your listing table
*
* @return Array
*/
public function get_columns()
{
$columns = array(
'id' => 'Sl No',
'name' => 'Group Name',
'actions' => 'Actions',
);
return $columns;
}
/**
* Define which columns are hidden
*
* @return Array
*/
public function get_hidden_columns()
{
return array();
}
/**
* Define the sortable columns
*
* @return Array
*/
public function get_sortable_columns()
{
return array('name' => array('name', false));
}
/**
* Get the table data
*
* @return Array
*/
private function table_data()
{
global $wpdb;
$data = $wpdb->get_results("SELECT * FROM " .DB_PACKAGE_GROUP, ARRAY_A);
return $data;
}
/**
* Define what data to show on each column of the table
*
* @param Array $item Data
* @param String $column_name - Current column name
*
* @return Mixed
*/
public function column_default($item, $column_name)
{
switch ($column_name) {
case 'id':
echo $postNumber;
case 'name':
return $item[$column_name];
default:
return print_r($item, true);
}
$postNumber++;
}
function column_actions($item){
$actions = array(
'edit' => sprintf('<a href="#" onclick="EditGroup(this)" data-id="'.$item['id'].'">Edit</a>', $_REQUEST['page'],'edit',$item['id']),
// 'delete' => sprintf('<a href="?page=add_package_group&action=delete&id='.$item['id'].'">Delete</a>', $_REQUEST['page'],'delete',$item['id']),
);
// return sprintf('%1$s %2$s',
// urlencode(base64_encode($item['id'])),
// $this->row_actions($actions)
// );
return sprintf('%1$s <span style="color:silver">(id:%2$s)</span>%3$s',
/*$1%s*/ $item['title'],
/*$2%s*/ $item['id'],
/*$3%s*/ $this->row_actions($actions)
);
}
/**
* Allows you to sort the data by the variables set in the $_GET
*
* @return Mixed
*/
private function sort_data($a, $b)
{
// Set defaults
$orderby = 'id';
$order = 'asc';
// If orderby is set, use this as the sort column
if (!empty($_GET['orderby'])) {
$orderby = $_GET['orderby'];
}
// If order is set use this as the order
if (!empty($_GET['order'])) {
$order = $_GET['order'];
}
$result = strcmp($a[$orderby], $b[$orderby]);
if ($order === 'asc') {
return $result;
}
return -$result;
}
}
$importedListTables = new Packages_Group_Table();
$importedListTables->prepare_items();
?>
<div class="wrap">
<?php $importedListTables->display(); ?>
</div>
<?php
}
add_action( 'wp_ajax_nopriv_save_group', 'save_group' );
add_action( 'wp_ajax_save_group', 'save_group' );
add_action( 'wp_ajax_nopriv_get_group_modal', 'get_group_modal' );
add_action( 'wp_ajax_get_group_modal', 'get_group_modal' );
function get_group_modal() {
$id = $_POST['id'];
global $wpdb;
$data =$wpdb->get_row("select * from " . DB_PACKAGE_GROUPS . " where id ='$id'");
$html='<div class="modal-dialog">
<div class="modal-content">
<div class="EditGroups"></div>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Edit Package Group </h4>
</div>
<div class="modal-body edit_modal">
<form method="post" id="EditGroups">
<input type="hidden" name="action" value="save_group">
<label>Name</label>
<input type="hidden" name="id" value="'.$data->id.'">
<div class="form-group">
<input type="text" required="" name="group[]" form-control" value="'.$data->name.'">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" onclick="EditGroupData()">Save</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>';
$statusArr = array("status" => TRUE,"html" =>$html , "message" => "You have successfully Added");
die( json_encode($statusArr));
}
function save_group() {
global $wpdb;
if($_POST['id']){
$args=array(
"name" =>$_POST['group'],
);
$where=array("id" => $_POST['id']);
$sql = $wpdb->update(DB_PACKAGE_GROUPS, $args, $where);
$statusArr = array("status" => TRUE,"type" =>1 ,"message" => "You have successfully Updated");
die( json_encode($statusArr));
}else{
$qty = $_POST['group'];
foreach($qty as $value) {
$args=array(
"name" =>$value,
);
$sql = $wpdb->insert($table_name, $args);
}
$statusArr = array("status" => TRUE,"type" =>0 , "message" => "You have successfully Added");
die( json_encode($statusArr));
}
}
function Package_add_html(){?>
<div class="wrap">
<div id="Saveress" class="Saveress below-h2"></div>
<div class="alert alert-info" role="alert" style="border: 1px solid green;border-radius: 5px;">
<h3> Package Group </h3><br><br><br>
<a class="add-new-h2 btn btn-success" href="admin.php?page=siab-packages">Instructor Packages</a>
</div>
<label>
Add Package
</label>
<form method="post" id="AddGroups">
<input type="hidden" name="action" value="save_group">
<input type="hidden" name="id" value="">
<div class="primary-block">
<div class="form-group">
<input type="text" value="" required="" name="group[]" class="form-control">
</div>
<div class="new_list">
</div>
<input type="button" onclick="AddNew()" value="Add more" class="add-more btn-sm button-secondary button">
</div>
<div class="text-right">
<input type="button" value="Save" onclick="SaveGroupData()" class="button-primary button">
</div>
</form>
</div>
<div class="modal fade" id="edit_modal" role="dialog">
</div>
</div>
<?php }
?>