add_button = ''; $this->edit_button = ''; $this->delete_button = ''; } public function view() { $args = func_get_args(); if(array_key_exists(0, $args)) { $view_file = $args[0]; } else { return false; } $this->render_html = $this->render($view_file, $args[1]); if($args[2] == true) { return $this->render_html; } else { echo $this->render_html; } } private function render() { $args = func_get_args(); if(count($args) > 0) { $template = explode("/", $args[0]); $file_name = end($template); array_pop($template); $folder = implode("/", $template); $loader = new \Twig\Loader\FilesystemLoader(_DOCROOT_.$folder); $twig = new \Twig\Environment($loader, [ 'cache' => _DOCROOT_.'logs/cache', ]); // $escaper = new \Twig\Extension\EscaperExtension('html'); // $twig->addExtension($escaper); return $twig->render($file_name, $args[1]); } } function add() { if($this->table != '') { $table = $this->table; $args = func_get_args(); if(count($args) > 0) { if(is_array($args[0])) { $is_returning = (array_key_exists(1, $args)) ? $args[1] : false; $returning_col = ($is_returning) ? $args[2] : false; $query_returning = ""; if($returning_col != false) { $query_returning = " RETURNING ".$returning_col; } $query = "INSERT INTO $table ".bind_sql($args[0]).$query_returning; return execute($query); } else { throw new Exception("Error Parameter Not Found", 1); } } else { throw new Exception("Error Parameter Not Found", 1); } } else { throw new Exception("Error Table Not Found", 1); } } function edit() { if($this->table != '') { $table = $this->table; $args = func_get_args(); if(count($args) > 0) { if(is_array($args[0])) { $update_condition = (array_key_exists(1, $args)) ? $args[1] : false; if($update_condition != ''){ $query = "UPDATE $table ".bind_sql($args[0],1).' WHERE '.$update_condition; return execute($query); } else { throw new Exception("Error Where Condition Not Found", 1); } } else { throw new Exception("Error Parameter Not Found", 1); } } else { throw new Exception("Error Parameter Not Found", 1); } } else { throw new Exception("Error Table Not Found", 1); } } function delete() { if($this->table != '') { $table = $this->table; $args = func_get_args(); if(count($args) > 0) { if(is_array($args[0])) { $delete_condition = implode("\r\n",$args[0]); if($delete_condition != ''){ $query = "DELETE FROM $table WHERE ".$delete_condition; return execute($query); } else { throw new Exception("Error Where Condition Not Found", 1); } } else { throw new Exception("Error Parameter Not Found", 1); } } else { throw new Exception("Error Parameter Not Found", 1); } } else { throw new Exception("Error Table Not Found", 1); } } function check() { global $db; if($this->table != '') { $table = $this->table; $args = func_get_args(); if(count($args) > 0) { if(is_array($args[0])) { $check_condition = implode("\r\n",$args[0]); if($check_condition != ''){ $query = "SELECT * FROM $table WHERE ".$check_condition; $row_result = $db->query($query); if($row_result->numRows() > 0) { return FALSE; } return TRUE; } else { throw new Exception("Error Where Condition Not Found", 1); } } else { throw new Exception("Error Parameter Not Found", 1); } } else { throw new Exception("Error Parameter Not Found", 1); } } else { throw new Exception("Error Table Not Found", 1); } } function soft_delete() { if($this->table != '') { $table = $this->table; $args = func_get_args(); if(count($args) > 0) { if(is_array($args[0])) { $delete_condition = implode("\r\n",$args[0]); if($delete_condition != ''){ $timestamp = date('Y-m-d H:i:s'); $query = "UPDATE $table SET deleted_at = '$timestamp' WHERE ".$delete_condition; return execute($query); } else { throw new Exception("Error Where Condition Not Found", 1); } } else { throw new Exception("Error Parameter Not Found", 1); } } else { throw new Exception("Error Parameter Not Found", 1); } } else { throw new Exception("Error Table Not Found", 1); } } function datasource() { global $db; $args = func_get_args(); // get table if($this->table != '') { $table = $this->table; } else { throw new Exception("Error Table Not Found", 1); } // get selected column $columns = []; if(is_array($this->select)) { // $select = implode(", ",$this->select); $column_inx = 0; foreach($this->select as $field => $item) { $arr_field = []; if(is_array($item)) { $arr_field = ['db'=>$field,'dt'=>$column_inx]; if(array_key_exists('format',$item)) { $arr_field['formatter'] = $item['format']; } $columns[] = $arr_field; } else { $columns[] = ['db'=>$field,'dt'=>$column_inx]; } $column_inx++; } } else { // $select = $this->select; // if($select == '') { // $select = '*'; // } } // get join table if(is_array($this->join)) { $join = ''; foreach($this->join as $rel => $item) { if(is_array($item)) { $val = array_values($item); $table_name = $rel; if(count($val) > 1) { $join_type = "\r\n".$val[1]; $join_condition = $val[0]; } else { $join_type = "\r\nJOIN "; $join_condition = $val[0]; } $join .= $join_type.' '.$table_name.' ON '.$join_condition; } else { $join .= $item; } } } if($this->where != '') { if(is_array($this->where)) { $where = implode("\r\n", $this->where); } else { $where = 'WHERE '.$this->where; } } if($this->groupBy != '') { if(is_array($this->groupBy)) { $groupBy = 'GROUP BY '.implode("\r\n", $this->groupBy); } else { $groupBy = 'GROUP BY '.$this->groupBy; } } if($this->orderBy != '') { if(is_array($this->orderBy)) { $orderBy = 'ORDER BY '.implode("\r\n", $this->orderBy); } else { $orderBy = 'ORDER BY '.$this->orderBy; } } // Table's primary key $primaryKey = $this->primaryKey; // Array of database columns which should be read and sent back to DataTables. // The `db` parameter represents the column name in the database, while the `dt` // parameter represents the DataTables column identifier. In this case simple // indexes // SQL server connection information $dbhost = $_ENV['POSTGRE_DB_HOST']; $dbuser = $_ENV['POSTGRE_DB_USER']; $dbpass = $_ENV['POSTGRE_DB_PASS']; $dbname = $_ENV['POSTGRE_DB_NAME']; $port = $_ENV['POSTGRE_DB_PORT']; $sql_details = array( 'user' => $dbuser, 'pass' => $dbpass, 'db' => $dbname, 'host' => $dbhost, 'port' => $port ); /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * If you just want to use the basic configuration for DataTables with PHP * server-side, there is no need to edit below this line. */ return json_encode( SSP::complex( $args, $sql_details, $table, $join, $primaryKey, $columns , $where) ); // $tmp_query = $db->query("SELECT $select FROM $table $join $where $groupBy $orderBy"); // $result['data'] = []; // if($tmp_query->numRows() > 0) { // foreach($tmp_query->fetchAll() as $row) { // $result['data'][] = $row; // } // } // return json_encode($result); // exit; } private function strip_slash(&$value) { if(is_array($value)) { strip($value); } else { $value = $value; } } private function strip(&$request) { if(!is_array($request)) { die("Inputan Bukan Array"); } array_walk($request, "strip_slash"); return $request; } public function request() { $wrap_request = []; if(!empty($_REQUEST)) { $getVar = $this->strip($_REQUEST); if(!empty($getVar)) { foreach($getVar as $k => $v) { if(!array_key_exists($k, $wrap_request)) { $wrap_request[$k] = $v; } } } } if(!empty($_POST)) { $getVar = $this->strip($_POST); if(!empty($getVar)) { foreach($getVar as $k => $v) { if(!array_key_exists($k, $wrap_request)) { $wrap_request[$k] = $v; } } } } if(!empty($_GET)) { $getVar = $this->strip($_GET); if(!empty($getVar)) { foreach($getVar as $k => $v) { if(!array_key_exists($k, $wrap_request)) { $wrap_request[$k] = $v; } } } } return $wrap_request; } public function load_form(){ global $db; } public function file_save($file,$config){ global $path; $base_upload_dir = './storage/'; // handle upload $handle = new Upload($file); $handle->file_max_size = (array_key_exists('file_max_size',$config)) ? $config['file_max_size'] : '8M'; $handle->allowed = (array_key_exists('allowed',$config)) ? $config['allowed'] : array('image/jpg','image/jpeg','image/png'); if($config['resize']) { $handle->image_resize = $config['resize']; $handle->image_x = $config['image_x']; $handle->image_y = $config['image_y']; if(array_key_exists('image_ratio_y',$config) && $config['image_ratio_y']) { $handle->image_ratio_y = $config['image_ratio_y']; } if(array_key_exists('image_ratio_x',$config) && $config['image_ratio_x']) { $handle->image_ratio_x = $config['image_ratio_x']; } } if ($handle->uploaded) { $sub = (array_key_exists('storage_dir',$config)) ? $config['storage_dir'].'/' : ''; $sub_dir = makeDir($base_upload_dir.$sub,0777); $handle->process($base_upload_dir.$sub); if ($handle->processed) { $handle->clean(); return $handle->file_dst_pathname; } else { log_message('error','Upload error '.$handle->error.". Dir ".$base_upload_dir.$sub); throw new Exception("Error Upload : ".$handle->error.". Dir ".$base_upload_dir.$sub, 1); return $handle->error; } } else { log_message('error','Upload error '.$handle->error.". Dir ".$base_upload_dir.$sub); throw new Exception("Error Upload : ".$handle->error.". Dir ".$base_upload_dir.$sub, 1); return false; } } }