PHP Classes

File: vendor/jackbooted/db/DBManager.php

Recommend this page to a friend!
  Classes of Brett Dutton   JackBooted PHP Framework   vendor/jackbooted/db/DBManager.php   Download  
File: vendor/jackbooted/db/DBManager.php
Role: Class source
Content type: text/plain
Description: Class source
Class: JackBooted PHP Framework
Web application framework using simplified MVC
Author: By
Last change:
Date: 8 years ago
Size: 4,206 bytes
 

Contents

Class file image Download
<?php
namespace Jackbooted\DB;

use \
Jackbooted\Admin\Admin;
use \
Jackbooted\Config\Cfg;
use \
Jackbooted\Forms\CRUD;
use \
Jackbooted\Forms\Request;
use \
Jackbooted\Forms\Response;
use \
Jackbooted\G;
use \
Jackbooted\Html\Lists;
use \
Jackbooted\Html\Tag;
use \
Jackbooted\Html\WebPage;
use \
Jackbooted\Security\Privileges;
use \
Jackbooted\Util\CSV;
use \
Jackbooted\Util\Module;
use \
Jackbooted\Util\XLS;
/**
 * @copyright Confidential and copyright (c) 2016 Jackbooted Software. All rights reserved.
 *
 * Written by Brett Dutton of Jackbooted Software
 * brett at brettdutton dot com
 *
 * This software is written and distributed under the GNU General Public
 * License which means that its source code is freely-distributed and
 * available to the general public.
 */

class DBManager extends WebPage {
    const
TABLES_SQL = 'SELECT fldTable FROM tblNextNumber ORDER BY fldTable';

    public static function
menu () {
        if (
Privileges::access ( __METHOD__ ) !== true || ! G::isLoggedIn () ) return '';

       
$html = Tag::hTag ( 'b' ) . 'Database Menu' . Tag::_hTag ( 'b' ) .
               
Tag::form ( [ 'method' => 'get' ] ) .
                 
Response::factory()->action ( __CLASS__ . '->index()' )->toHidden ( false ) .
                 
Lists::select ( 'tblName', self::TABLES_SQL, [ 'size' => '10',
                                                                 
'onClick' => 'submit();' ] ) .
               
Tag::_form ();

        return
$html;
    }

    public function
index ( $tName='' ) {
        if ( (
$tableName = Request::get ( 'tblName', $tName ) ) == '' ) return '';

       
$crud = CRUD::factory ( $tableName, [ 'topPager' => false ] )
                    ->
copyVarsFromRequest ( 'tblName' );

        if (
preg_match ( '/^tblMod([A-Z]+[a-z]+)/', $tableName, $matches ) ) {
            foreach (
Cfg::get( 'modules', [] ) as $moduleClass ) {
                eval (
$moduleClass . '::' . Module::CRUD_MOD . '($crud);' );
            }
        }
        else {
            switch (
$tableName ) {
            case
'tblNextNumber':
               
$crud->setColDisplay ( 'fldTable', [ CRUD::SELECT, DBMaintenance::getTableList(), true ] );
                break;

            case
'tblSecPrivUserMap':
               
$userSql = ( DB::driver() == DB::MYSQL ) ? Admin::USER_SQL_MYSQL: Admin::USER_SQL_MYSQL;
               
$crud->setColDisplay ( 'fldUserID', [ CRUD::SELECT, $userSql, true ] );
               
$crud->setColDisplay ( 'fldGroupID', [ CRUD::SELECT, Admin::GROUP_SQL, true ] );
               
$crud->setColDisplay ( 'fldPrivilegeID', [ CRUD::SELECT, Admin::PRIV_SQL, true ] );
               
$crud->setColDisplay ( 'fldLevelID', [ CRUD::SELECT, Admin::LEVEL_SQL ] );
                break;

            case
'tblUserGroupMap':
               
$userSql = ( DB::driver() == DB::MYSQL ) ? Admin::USER_SQL_MYSQL : Admin::USER_SQL_SQLITE;
               
$crud->setColDisplay ( 'fldUserID', [ CRUD::SELECT, $userSql, true ] );
               
$crud->setColDisplay ( 'fldGroupID', [ CRUD::SELECT, Admin::GROUP_SQL, true ] );
                break;

            case
'tblUser':
               
$crud->setColDisplay ( 'fldLevel', [ CRUD::SELECT, Admin::LEVEL_SQL ] );
               
$crud->setColDisplay ( 'fldTimeZone', [ CRUD::SELECT, Admin::TZ_SQL ] );
                break;
            }
        }

       
$resp = Response::factory()->set ( 'tblName', $tableName );

        return
Tag::hTag ( 'b' ) . 'Editing Table: ' . $tableName . Tag::_hTag ( 'b' ) . ' ' .
              
Tag::hRef ( 'ajax.php?' . $resp->action ( __CLASS__ . '->csv()' ), 'CSV' ) . ' ' .
              
Tag::hRef ( 'ajax.php?' . $resp->action ( __CLASS__ . '->xls()' ), 'XLS' ) .
              
$crud->index ();
    }
    public function
csv ( $tName='' ) {
        if ( (
$tableName = Request::get ( 'tblName', $tName ) ) == '' ) exit;
       
CSV::output ( DB::query ( DB::DEF, 'SELECT * FROM ' . $tableName ), $tableName );
    }

    public function
xls ( $tName='' ) {
        if ( (
$tableName = Request::get ( 'tblName', $tName ) ) == '' ) exit;
       
XLS::output ( DB::query ( DB::DEF, 'SELECT * FROM ' . $tableName ), $tableName );
    }
}