| Current Path : /var/www/html/school/backend/controllers/ |
| Current File : /var/www/html/school/backend/controllers/ReportTableController.php |
<?php
namespace backend\controllers;
use Yii;
use backend\models\ReportTable;
use backend\models\ReportTableSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\data\SqlDataProvider;
/**
* ReportTableController implements the CRUD actions for ReportTable model.
*/
class ReportTableController extends Controller
{
/**
* @inheritdoc
*/
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['POST'],
],
],
];
}
/**
* Lists all ReportTable models.
* @return mixed
*/
public function actionIndex()
{
$searchModel = new ReportTableSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
/**
* Displays a single ReportTable model.
* @param integer $id
* @return mixed
*/
public function actionView($id)
{
$model = ReportTable::find()->where( [ 'id_report_table' => $id] )->one();
if($model->sql_statement==""){
$getDb=Yii::$app->db->schema->getTableNames();
$dbSelect = $getDb[$model->table_name];
$getTable=Yii::$app->db->getTableSchema($dbSelect)->getColumnNames();
$model->column_id = explode(',',$model->column_id);
}
//print_r($model->column_id);
//echo $dbTable = $getTable[$model->column_id];
//print_r($dbSelect);
if($model->sql_statement==""){
foreach ($model->column_id as $key => $value) {
$dbTable[] = $getTable[$value];
}
}else{
// $data =strrchr($model->sql_statement,"FROM");
// $data0 =str_replace('FROM',"",$data);
// echo $data1=str_replace('WHERE',"",$data0);
function getBetween($content,$start,$end){
$r = explode($start, $content);
if (isset($r[1])){
$r = explode($end, $r[1]);
return $r[0];
}
return '';
}
function getBetween1($content,$start1,$end1){
$r = explode($start1, $content);
if (isset($r[1])){
$r = explode($end1, $r[1]);
return $r[0];
}
return '';
}
$start="SELECT";
$end ="FROM";
$getColumn=getBetween($model->sql_statement,$start,$end);
$start1="FROM";
$end1 ="WHERE";
$getTbl=getBetween1($model->sql_statement,$start1,$end1);
// echo $getTbl;
$dbTable=Yii::$app->db->createCommand("SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE column_name IN ('".$getColumn."') AND table_name = '".$getTbl."'")->queryColumn();
//$dbTable=Yii::$app->db->getTableSchema("SELECT username FROM databank_1011")->getColumnNames();
}
//echo $model->sql_statement;
//$totalCount = Yii::$app->db->createCommand('SELECT COUNT(*) FROM '.$dbSelect)->queryScalar();
if($model->sql_statement==""){
$dataProvider1 = new SqlDataProvider([
'sql' => 'SELECT '.$model->column_name.' FROM '.$dbSelect,
// 'totalCount' => $totalCount,
// 'pagination' => [
// 'pageSize' => 8,
// ],
]);
}else{
$dataProvider1 = new SqlDataProvider([
'sql' => $model->sql_statement,
// 'totalCount' => $totalCount,
// 'pagination' => [
// 'pageSize' => 8,
// ],
]);
//echo '<pre>';print_r($dataProvider1);echo '</pre>';exit;
}
//echo '<pre>';print_r($dbTable);echo '</pre>';exit;
return $this->render('view', [
'model' => $this->findModel($id),
'dataProvider' => $dataProvider1,
'dbTable' => $dbTable,
]);
}
//echo $dataProvider1->getModels();
//echo '<pre>';print_r($dataProvider1->getTableSchema($dbSelect));echo '</pre>';exit;
/**
* Creates a new ReportTable model.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/
public function actionCreate()
{
$model = new ReportTable();
$model->id_report_meta=Yii::$app->request->get('id_report_meta');
$model->title_report_table=Yii::$app->request->get('title_report_table');
$model->table_name=Yii::$app->request->get('table_name');
$model->sql_statement=Yii::$app->request->get('sql_statement');
$test=str_replace('"',"",$model->sql_statement);
// $data =strrchr($model->sql_statement,"=");
// $data0 =str_replace('=',"",$data);
// $data1=str_replace('"',"",$data0);
// $table=str_replace("'","",$data1);
if ($model->load(Yii::$app->request->post()) ) {
if($model->sql_statement==""){
$getDb=Yii::$app->db->schema->getTableNames();
$dbSelect = $getDb[$model->table_name];
$getTable=Yii::$app->db->getTableSchema($dbSelect)->getColumnNames();
//$dbTable = $getTable[$model->column_name];
}
//print_r($model->column_name);]
foreach ($model->column_id as $key => $value) {
$dbTable[] = $getTable[$value];
}
$model->column_id = implode(',',$model->column_id);
$model->column_name = implode(',',$dbTable);
date_default_timezone_set("Asia/Kuala_Lumpur");
$model->created_by = Yii::$app->user->identity->username;
$model->created_at = date("Y-m-d H:i:s");
$model->save();
return $this->redirect(['view', 'id' => $model->id_report_table]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
/**
* Updates an existing ReportTable model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id
* @return mixed
*/
public function actionUpdate($id)
{
$model = $this->findModel($id);
$model->column_id = explode(',',$model->column_id);
if ($model->load(Yii::$app->request->post()) ) {
if($model->sql_statement==""){
$getDb=Yii::$app->db->schema->getTableNames();
$dbSelect = $getDb[$model->table_name];
$getTable=Yii::$app->db->getTableSchema($dbSelect)->getColumnNames();
//$dbTable = $getTable[$model->column_name];
}
//print_r($model->column_name);
foreach ($model->column_id as $key => $value) {
$dbTable[] = $getTable[$value];
}
$model->column_id = implode(',',$model->column_id);
$model->column_name = implode(',',$dbTable);
date_default_timezone_set("Asia/Kuala_Lumpur");
$model->updated_by=Yii::$app->user->identity->username;
$model->updated_at=date("Y-m-d H:i:s");
$model->save();
return $this->redirect(['view', 'id' => $model->id_report_table]);
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
/**
* Deletes an existing ReportTable model.
* If deletion is successful, the browser will be redirected to the 'index' page.
* @param integer $id
* @return mixed
*/
public function actionDelete($id)
{
$this->findModel($id)->delete();
return $this->redirect(['index']);
}
/**
* Finds the ReportTable model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.
* @param integer $id
* @return ReportTable the loaded model
* @throws NotFoundHttpException if the model cannot be found
*/
protected function findModel($id)
{
if (($model = ReportTable::findOne($id)) !== null) {
return $model;
} else {
throw new NotFoundHttpException('The requested page does not exist.');
}
}
public function actionView1($id)
{
$this->layout = 'empty';
$model = ReportTable::find()->where( [ 'id_report_table' => $id] )->one();
if($model->sql_statement==""){
$getDb=Yii::$app->db->schema->getTableNames();
$dbSelect = $getDb[$model->table_name];
$getTable=Yii::$app->db->getTableSchema($dbSelect)->getColumnNames();
$model->column_id = explode(',',$model->column_id);
}
//print_r($model->column_id);
//echo $dbTable = $getTable[$model->column_id];
//print_r($dbSelect);
if($model->sql_statement==""){
foreach ($model->column_id as $key => $value) {
$dbTable[] = $getTable[$value];
}
}else{
// $data =strrchr($model->sql_statement,"FROM");
// $data0 =str_replace('FROM',"",$data);
// echo $data1=str_replace('WHERE',"",$data0);
function getBetween($content,$start,$end){
$r = explode($start, $content);
if (isset($r[1])){
$r = explode($end, $r[1]);
return $r[0];
}
return '';
}
function getBetween1($content,$start1,$end1){
$r = explode($start1, $content);
if (isset($r[1])){
$r = explode($end1, $r[1]);
return $r[0];
}
return '';
}
$start="SELECT";
$end ="FROM";
$getColumn=getBetween($model->sql_statement,$start,$end);
$start1="FROM";
$end1 ="WHERE";
$getTbl=getBetween1($model->sql_statement,$start1,$end1);
// echo $getTbl;
$dbTable=Yii::$app->db->createCommand("SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE column_name IN ('".$getColumn."') AND table_name = '".$getTbl."'")->queryColumn();
//$dbTable=Yii::$app->db->getTableSchema("SELECT username FROM databank_1011")->getColumnNames();
}
//echo $model->sql_statement;
//$totalCount = Yii::$app->db->createCommand('SELECT COUNT(*) FROM '.$dbSelect)->queryScalar();
if($model->sql_statement==""){
$dataProvider1 = new SqlDataProvider([
'sql' => 'SELECT '.$model->column_name.' FROM '.$dbSelect,
// 'totalCount' => $totalCount,
// 'pagination' => [
// 'pageSize' => 8,
// ],
]);
}else{
$dataProvider1 = new SqlDataProvider([
'sql' => $model->sql_statement,
// 'totalCount' => $totalCount,
// 'pagination' => [
// 'pageSize' => 8,
// ],
]);
//echo '<pre>';print_r($dataProvider1);echo '</pre>';exit;
}
//echo '<pre>';print_r($dbTable);echo '</pre>';exit;
return $this->render('view1', [
'model' => $this->findModel($id),
'dataProvider' => $dataProvider1,
'dbTable' => $dbTable,
]);
}}