MINI
C:
/
xampp
/
htdocs
/
hnj
/
htdocs
/
htdocs
/
.library
/
Upload File:
files >> C:/xampp/htdocs/hnj/htdocs/htdocs/.library/datatables.php
<?php defined( '_LANGSUNG' ) or die(''); //DATA TABEL GENERATOR class SSP { static function data_output ( $columns, $data, $isJoin = false ) { $out = array(); for ( $i=0, $ien=count($data) ; $i<$ien ; $i++ ) { $row = array(); for ( $j=0, $jen=count($columns) ; $j<$jen ; $j++ ) { $column = $columns[$j]; if ( isset( $column['formatter'] ) ) { $row[ $column['dt'] ] = ($isJoin) ? $column['formatter']( $data[$i][ $column['field'] ], $data[$i] ) : $column['formatter']( $data[$i][ $column['db'] ], $data[$i] ); } else { $row[ $column['dt'] ] = ($isJoin) ? $data[$i][ $columns[$j]['field'] ] : $data[$i][ $columns[$j]['db'] ]; } } $out[] = $row; } return $out; } static function limit ( $request, $columns ) { $limit = ''; if ( isset($request['start']) && $request['length'] != -1 ) { $limit = "LIMIT ".intval($request['start']).", ".intval($request['length']); } return $limit; } static function order ( $request, $columns, $isJoin = false ) { $order = ''; if ( isset($request['order']) && count($request['order']) ) { $orderBy = array(); $dtColumns = SSP::pluck( $columns, 'dt' ); for ( $i=0, $ien=count($request['order']) ; $i<$ien ; $i++ ) { $columnIdx = intval($request['order'][$i]['column']); $requestColumn = $request['columns'][$columnIdx]; $columnIdx = array_search( $requestColumn['data'], $dtColumns ); $column = $columns[ $columnIdx ]; if ( $requestColumn['orderable'] == 'true' ) { $dir = $request['order'][$i]['dir'] === 'asc' ? 'ASC' : 'DESC'; $orderBy[] = ($isJoin) ? $column['db'].' '.$dir : ''.$column['db'].' '.$dir; } } $order = 'ORDER BY '.implode(', ', $orderBy); } return $order; } static function filter ( $request, $columns, &$bindings, $isJoin = false ) { $globalSearch = array(); $columnSearch = array(); $dtColumns = SSP::pluck( $columns, 'dt' ); if ( isset($request['search']) && $request['search']['value'] != '' ) { $str = $request['search']['value']; for ( $i=0, $ien=count($request['columns']) ; $i<$ien ; $i++ ) { $requestColumn = $request['columns'][$i]; $columnIdx = array_search( $requestColumn['data'], $dtColumns ); $column = $columns[ $columnIdx ]; if ( $requestColumn['searchable'] == 'true' ) { $binding = SSP::bind( $bindings, '%'.$str.'%', PDO::PARAM_STR ); $globalSearch[] = ($isJoin) ? $column['db']." LIKE ".$binding : "".$column['db']." LIKE ".$binding; } } } for ( $i=0, $ien=count($request['columns']) ; $i<$ien ; $i++ ) { $requestColumn = $request['columns'][$i]; $columnIdx = array_search( $requestColumn['data'], $dtColumns ); $column = $columns[ $columnIdx ]; $str = $requestColumn['search']['value']; if ( $requestColumn['searchable'] == 'true' && $str != '' && $requestColumn['search']['regex'] == 'false') { $binding = CRUD::bind( $bindings, '%'.$str.'%', PDO::PARAM_STR ); $columnSearch[] = ($isJoin) ? $column['db']." LIKE ".$binding : "".$column['db']." LIKE ".$binding; } if ( $requestColumn['searchable'] == 'true' && $str != '' && $requestColumn['search']['regex'] == 'true') { $binding = CRUD::bind( $bindings, str_replace(",","|",$str), PDO::PARAM_STR ); $columnSearch[] = ($isJoin) ? $column['db']." REGEXP ".$binding : "".$column['db']." REGEXP ".$binding; } } $where = ''; if ( count( $globalSearch ) ) { $where = '('.implode(' OR ', $globalSearch).')'; } if ( count( $columnSearch ) ) { $where = $where === '' ? implode(' AND ', $columnSearch) : $where .' AND '. implode(' AND ', $columnSearch); } if ( $where !== '' ) { $where = 'WHERE '.$where; } return $where; } static function simple ( $request, $sql_details, $table, $primaryKey, $columns, $joinQuery = NULL, $extraWhere = '', $groupBy = '') { $bindings = array(); $db = SSP::sql_connect( $sql_details ); $limit = SSP::limit( $request, $columns ); $order = SSP::order( $request, $columns, $joinQuery ); $where = SSP::filter( $request, $columns, $bindings, $joinQuery ); if($extraWhere) $extraWhere = ($where) ? ' AND '.$extraWhere : ' WHERE '.$extraWhere; $groupBy = ($groupBy) ? ' GROUP BY '.$groupBy .' ' : ''; if($joinQuery){ $col = SSP::pluck($columns, 'db', $joinQuery); $query = "SELECT SQL_CALC_FOUND_ROWS ".implode(", ", $col)." $joinQuery $where $extraWhere $groupBy $order $limit"; }else{ $query = "SELECT SQL_CALC_FOUND_ROWS ".implode(", ", SSP::pluck($columns, 'db'))." FROM $table $where $extraWhere $groupBy $order $limit"; } $data = SSP::sql_exec( $db, $bindings,$query); $resFilterLength = SSP::sql_exec( $db, "SELECT FOUND_ROWS()" ); $recordsFiltered = $resFilterLength[0][0]; $resTotalLength = SSP::sql_exec( $db, "SELECT COUNT({$primaryKey}) FROM $table" ); $recordsTotal = $resTotalLength[0][0]; return array( "draw" => intval( $request['draw'] ), "recordsTotal" => intval( $recordsTotal ), "recordsFiltered" => intval( $recordsFiltered ), "data" => SSP::data_output( $columns, $data, $joinQuery ) ); } static function sql_connect ( $sql_details ) { try { $db = @new PDO( "mysql:host={$sql_details['host']};dbname={$sql_details['db']}", $sql_details['user'], $sql_details['pass'], array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ) ); $db->query("SET NAMES 'utf8'"); } catch (PDOException $e) { SSP::fatal( "An error occurred while connecting to the database. ". "The error reported by the server was: ".$e->getMessage() ); } return $db; } static function sql_exec ( $db, $bindings, $sql=null ) { if ( $sql === null ) { $sql = $bindings; } $stmt = $db->prepare( $sql ); if ( is_array( $bindings ) ) { for ( $i=0, $ien=count($bindings) ; $i<$ien ; $i++ ) { $binding = $bindings[$i]; $stmt->bindValue( $binding['key'], $binding['val'], $binding['type'] ); } } try { $stmt->execute(); } catch (PDOException $e) { SSP::fatal( "An SQL error occurred: ".$e->getMessage() ); } return $stmt->fetchAll(); } static function fatal ( $msg ) { echo json_encode( array( "error" => $msg ) ); exit(0); } static function bind ( &$a, $val, $type ) { $key = ':binding_'.count( $a ); $a[] = array( 'key' => $key, 'val' => $val, 'type' => $type ); return $key; } static function pluck ( $a, $prop, $isJoin = false ) { $out = array(); for ( $i=0, $len=count($a) ; $i<$len ; $i++ ) { $out[] = ($isJoin && isset($a[$i]['as'])) ? $a[$i][$prop]. ' AS '.$a[$i]['as'] : $a[$i][$prop]; } return $out; } } function DTPage($tableid,$buttons){ $bresult = ' <script type="text/javascript" language="javascript" class="init" > var base_ajax = "'.APP_URI.'/adminx/master/modules.html"; $(document).ready(function() { $.fn.dataTable.ext.errMode = "none"; $("#'.$tableid.' tfoot th").each(function() { var title = $(this).text(); $(this).html("<input type=\"text\" class=\"col-lg-12\" placeholder=\"" + title + "\" />"); }); var oTable = $("#'.$tableid.'") .on("error.dt", function(e, settings, techNote, message) { DtNotif("error", message, ""); }) .DataTable({ "paging": true, "pagingType": "full_numbers", stateSave: true, "processing": true, select: { style: "single" }, "serverSide": true, "ajax": { "url": base_ajax, "type": "POST", "data": { "act": "read-data" } }, "scrollX": "100%", "scrollXInner": "110%", "columnDefs": [{ className: "dt-hide", "targets": [0] }, { className: "dt-body-center", "targets": [2, 3, 7, 8] }, { className: "dt-body-nowrap", "targets": [1, 2, 3, 4, 5, 6, 7, 8] }], lengthMenu: [ [5, 10, 25, 50, -1], ["5 rows", "10 rows", "25 rows", "50 rows", "Show all"] ], dom: "<\"pull-left\"B><\"pull-right\"l>tr<\"pull-left\"i><\"pull-right\"p>", buttons: [ '; foreach ($buttons as $btnname => $btn_options) { if($btn_options['btype'] == 'modal'){ if($btn_options['bacttype'] == 'add'){ //modal button $bresult .= '{ text: "<i class=\"fa '.$btn_options['bicon'].'\"></i> <span class=\"hidden-sm hidden-xs\">'.$btn_options['bname'].'</span>", className: "btn '.$btn_options['bclass'].'", action: function ( e, dt, node, config ){'; $bresult .= '$.ajax({ type:"POST", url :base_ajax,'; $bresult .= 'data: "act='.$btn_options['bact'].'-cek",'; $bresult .= 'success: function(data){ if(data == "sukses"){ $.ajax({ type:"POST", url:base_ajax, data: "act='.$btn_options['bact'].'", success: function(data){ $("#maction").html(data); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#add").validationEngine("validate")){ var datasave = $("#'.$btn_options['bact'].'").serializeArray(); datasave.push({name: "act", value: "'.$btn_options['bact'].'-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ if (data==="sukses"){ $("#maction").modal("hide"); DtNotif("success","'.$btn_options['bscmsg'].'",""); oTable.draw(false); } else{ DtNotif("error",data,""); } } }); } }); $("#'.$btn_options['bact'].'").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#'.$btn_options['bact'].'").attr("autocomplete","off"); } }); } else{ DtNotif("error",data,""); } }, }); }, enabled: true },'; } elseif($btn_options['bacttype'] == 'update'){ $bresult .= '{ text: "<i class=\"fa '.$btn_options['bicon'].'\"></i> <span class=\"hidden-sm hidden-xs\">'.$btn_options['bname'].'</span>", className: "btn '.$btn_options['bclass'].'", action: function ( e, dt, node, config ){'; $bresult .= 'var yData = $.map(oTable.rows(".selected").data(), function (item) { return item[0] });'; $bresult .= '$.ajax({ type:"POST", url :base_ajax,'; $bresult .= 'data: "act='.$btn_options['bact'].'-cek&id="+yData,'; $bresult .= 'success: function(data){ if(data == "sukses"){ $.ajax({ type:"POST", url:base_ajax, data: "act='.$btn_options['bact'].'", success: function(data){ $("#maction").html(data); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#add").validationEngine("validate")){ var datasave = $("#'.$btn_options['bact'].'").serializeArray(); datasave.push({name: "act", value: "'.$btn_options['bact'].'-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ if (data==="sukses"){ $("#maction").modal("hide"); DtNotif("success","'.$btn_options['bscmsg'].'",""); oTable.draw(false); } else{ DtNotif("error",data,""); } } }); } }); $("#'.$btn_options['bact'].'").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#'.$btn_options['bact'].'").attr("autocomplete","off"); } }); } else{ DtNotif("error",data,""); } }, }); }, enabled: false },'; } elseif($btn_options['bacttype'] == 'delete'){ $bresult .= '{ text: "<i class=\"fa '.$btn_options['bicon'].'\"></i> <span class=\"hidden-sm hidden-xs\">'.$btn_options['bname'].'</span>", className: "btn '.$btn_options['bclass'].'", action: function ( e, dt, node, config ){'; $bresult .= ' if(oTable.rows(".selected").data().length==1){ var yData = $.map(oTable.rows(".selected").data(), function (item) { return item[0] }); $.ajax({ type:"POST", url :base_ajax,'; $bresult .= 'data: "act='.$btn_options['bact'].'m-cek&id="+yData,'; $bresult .= 'success: function(data){ if(data == "sukses"){ $.ajax({ type:"POST", url:base_ajax, data: "act='.$btn_options['bact'].'m", success: function(data){ $("#maction").html(data); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#add").validationEngine("validate")){ var datasave = $("#'.$btn_options['bact'].'").serializeArray(); datasave.push({name: "act", value: "'.$btn_options['bact'].'m-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ if (data==="sukses"){ $("#maction").modal("hide"); DtNotif("success","'.$btn_options['bscmsg'].'",""); oTable.draw(false); } else{ DtNotif("error",data,""); } } }); } }); $("#'.$btn_options['bact'].'").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#'.$btn_options['bact'].'").attr("autocomplete","off"); } }); } else{ DtNotif("error",data,""); } }, }); } else { var yData = $.map(oTable.rows(".selected").data(), function (item) { return item[0] }); $.ajax({ type:"POST", url :base_ajax,'; $bresult .= 'data: "act='.$btn_options['bact'].'-cek&id="+yData,'; $bresult .= 'success: function(data){ if(data == "sukses"){ $.ajax({ type:"POST", url:base_ajax, data: "act='.$btn_options['bact'].'", success: function(data){ $("#maction").html(data); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#add").validationEngine("validate")){ var datasave = $("#'.$btn_options['bact'].'").serializeArray(); datasave.push({name: "act", value: "'.$btn_options['bact'].'-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ if (data==="sukses"){ $("#maction").modal("hide"); DtNotif("success","'.$btn_options['bscmsg'].'",""); oTable.draw(false); } else{ DtNotif("error",data,""); } } }); } }); $("#'.$btn_options['bact'].'").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#'.$btn_options['bact'].'").attr("autocomplete","off"); } }); } else{ DtNotif("error",data,""); } }, }); } }, enabled: false },'; } } else if($btn_options['btype'] == 'default'){ if($btn_options['bact'] == 'pdf'){ $bresult .= '{ text: "<i class=\"fa fa-file-pdf-o\"></i><span class=\"hidden-sm hidden-xs\"> '.$btn_options['bname'].'</span>", extend: "pdfHtml5", className: "btn '.$btn_options['bclass'].'", orientation: "'.$btn_options['bporientation'].'", pageSize: "'.$btn_options['bpsize'].'", },'; // echo trim(preg_replace('/\s\s+/', '', $java)); } elseif($btn_options['bact']=='excel'){ $bresult .= '{ text: "<i class=\"fa fa-file-excel-o\"></i><span class=\"hidden-sm hidden-xs\"> '.$btn_options['bname'].'</span>", extend: "excelHtml5", className: "btn '.$btn_options['bclass'].'", },'; // echo trim(preg_replace('/\s\s+/', '', $java)); } elseif($btn_options['bact']=='refresh'){ $bresult .= '{ text: "<i class=\"fa fa-refresh\"><span class=\"hidden-sm hidden-xs\"> '.$btn_options['bname'].'</span</i>", className: "btn '.$btn_options['bclass'].'", action: function (e,dt,node,config){ function fnResetAllFilters(){ oTable.columns().eq(0).each(function(colIdx){ $("input", oTable.column(colIdx).footer()).val(""); oTable.columns(colIdx).search("", true ); }); oTable.search("", true ).draw(); } fnResetAllFilters(); } },'; // echo trim(preg_replace('/\s\s+/', '', $java)); } elseif($btn_options['bact']=='colvis'){ $bresult .= '{ text: "<i class=\"fa fa-table\"><span class=\"hidden-sm hidden-xs\"> '.$btn_options['bname'].'</span></i>", extend: "colvis", className: "btn '.$btn_options['bclass'].'", collectionLayout: "fixed two-column" },'; // echo trim(preg_replace('/\s\s+/', '', $java)); } } else if($btn_options['btype'] == 'page'){ } } $bresult .= ' ], language: { "emptyTable": "No data available in table", "info": "Showing page _PAGE_ of _PAGES_", "infoEmpty": "No entries to show", "infoFiltered": " - filtering from _MAX_ records", "decimal": ",", "thousands": ".", "lengthMenu": "Display _MENU_ records", "loadingRecords": "Please wait - loading...", "processing": "Please wait, processing....", "search": "Filter records:", "search": "Apply filter _INPUT_ to table", "zeroRecords": "No records to display", buttons: { colvis: "Atur Kolom" }, paginate: { "first": "<i class=\"fa fa-angle-double-left\"></i><span class=\"hidden-xs hidden-sm\"> First page</span>", "last": "<i class=\"fa fa-angle-double-right\"></i><span class=\"hidden-xs hidden-sm\"> Last page</span>", "next": "<i class=\"fa fa-angle-right\"></i><span class=\"hidden-xs hidden-sm\"> Next page</span>", "previous": "<i class=\"fa fa-angle-left\"></i><span class=\"hidden-xs hidden-sm\"> Previous page</span>" } } }); oTable.on( "click", "tr", function () { $(this).toggleClass("selected"); }); oTable.on( "click", "tr", function () { if(oTable.rows(".selected").data().length>1){ oTable.button( 2 ).enable(true); //add oTable.button( 3 ).enable(false); //detail oTable.button( 4 ).enable(false); //edit oTable.button( 5 ).enable(true); //delete } else if(oTable.rows(".selected").data().length==1){ oTable.button( 2 ).enable(true); //add oTable.button( 3 ).enable(true); //detail oTable.button( 4 ).enable(true); //edit oTable.button( 5 ).enable(true); //delete } else{ oTable.button( 2 ).enable(false); //add oTable.button( 3 ).enable(false); //detail oTable.button( 4 ).enable(false); //edit oTable.button( 5 ).enable(false); //delete } }); oTable.columns().every(function() { var that = this; $("input", this.footer()).on("keyup change", function(e) { if (that.search() !== this.value && e.keyCode == 13) { that .search(this.value) .draw(); } }); }); }); </script> '; return $bresult; }
Copyright ©2021 || Defacer Indonesia