PHP Classes

File: zf1_generator/index.php

Recommend this page to a friend!
  Classes of Giovanni Ramos   Zend Framework Models Generator   zf1_generator/index.php   Download  
File: zf1_generator/index.php
Role: Application script
Content type: text/plain
Description: Application script
Class: Zend Framework Models Generator
Generate model classes from MySQL databases
Author: By
Last change: Update of zf1_generator/index.php
Date: 2 months ago
Size: 10,177 bytes
 

Contents

Class file image Download
<?php

/* * **********************************************************************************
 *
 * ZEND FRAMEWORK - MODELS GENERATOR (https://github.com/giovanniramos/zf_generate_models)
 *
 * Copyright (c) 2013 Giovanni Ramos (https://github.com/giovanniramos)
 *
 * Licensed under the MIT License
 *
 * ********************************************************************************* */

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Zend Framework - Models Generator</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="assets/css/bootstrap.min.css" media="screen" rel="stylesheet" type="text/css" />
<link href="assets/css/bootstrap-responsive.min.css" media="screen" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="assets/css/jquery-ui.css" />
<script src="assets/js/jquery-1.8.0.min.js"></script>
<script src="assets/js/jquery-ui.min.js"></script>
<script type="text/javascript" src="assets/js/bootstrap.min.js"></script>
<script type="text/javascript" src="assets/js/jquery-scroll-pane.js"></script>
<script type="text/javascript">$().ready(function(){ $('form').submit(function() { $(this).find('.btn.active').each(function(){ $(this).closest('form').prepend($('<input type="hidden">').prop('name', this.name).val(this.value)); }); }); });</script>
<style type="text/css">
.btn-group { margin: 3px; }
.notice { display: block; color: red; clear: both; }
.scroll-pane { overflow: auto; width: 90%; float: left; }
.scroll-content { width: auto; float: left; }
.scroll-content-item { width: 100px; height: 100px; float: left; margin: 10px; font-size: 3em; line-height: 96px; text-align: center; }
.scroll-bar-wrap { clear: left; padding: 0 4px 0 2px; margin: 0 -1px -1px -1px; }
.scroll-bar-wrap .ui-slider { background: none; border:0; height: 1.55em; margin: 0 auto; }
.scroll-bar-wrap .ui-handle-helper-parent { position: relative; width: 100%; height: 100%; margin: 0 auto; }
.scroll-bar-wrap .ui-slider-handle { top: .2em; height: 1em; cursor: pointer; }
.scroll-bar-wrap .ui-slider-handle .ui-icon { position: relative; top: 50%; margin: -8px auto 0; }
</style>
</head>
<body>
<div class="navbar navbar-static-top">
<div class="navbar-inner"><a class="brand" href="">ZF1 - MODELS GENERATOR</a></div>
</div>
<div class="container" style="margin-top: 30px;">
<?php
// Defining the paths of application
define('ROOT', '../../');
define('DIR_APP', ROOT . 'application/');
define('DIR_MODELS', DIR_APP . 'models/');
define('DIR_DBTABLE', DIR_MODELS . 'DbTable/');

// Define path to application directory
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '../../../application'));

// Adding the library to the include_path
set_include_path(implode(PATH_SEPARATOR, array(
   
realpath(ROOT . 'library'),
   
get_include_path(),
)));
@require_once(
'Zend/Config/Ini.php');

// Setting up access to the database in the "development" environment
// When changing environment, be sure to set the same in .htaccess file
// The following settings are options and defined in application.ini:
// production, development, testing
$config = new Zend_Config_Ini(DIR_APP . 'configs/application.ini', 'development');

// Get resources database
$adapter = $config->resources->db->adapter;
$params = $config->resources->db->params->toArray();

$db_hostname = $params['host'];
$db_username = $params['username'];
$db_password = $params['password'];
$db_database = $params['dbname'];

// Generate class
require_once('Generator.class.php');

// Connecting to the database
Generator::connect($adapter, $db_hostname, $db_username, $db_password, $db_database);


// Stores the current step
$step = isset($_POST['step']) ? $_POST['step'] : 1;


//***************************************************
// STEP 1
//***************************************************
if ($step == 1):
   
// Selecting all databases
   
$databases = Generator::getDatabases();
   
?>

    <form class="form-horizontal" method="post">
        <input type="hidden" name="step" value="2" />
        <fildset>
            <legend>Choose a database to continue</legend>
           
            <?php
           
if (!$databases):
               
?>
<div class="alert">
                    <strong>Notice!</strong> No database found.
                </div>
                <?php
           
endif;
           
?>

            <div class="control-group">
                <label class="control-label" for="inputServername"><strong>Server name</strong></label>
                <div class="controls">
                    <input type="text" id="inputServername" placeholder="Server undefined" value="<?php echo $db_hostname; ?>" readonly="readonly" />
                </div>
            </div>
           
            <div class="control-group">
                <label class="control-label"><strong>Databases available</strong></label>
                <div class="controls">
                    <div class="scroll-pane ui-widget ui-widget-header ui-corner-all" data-toggle="buttons-checkbox">
                        <div class="scroll-content">
                            <div class="btn-group" data-toggle="buttons-radio">
                                <?php
                               
if ($databases):
                                    foreach (
$databases as $database):
                                        echo
'<button type="button" class="btn" name="database" value="' . $database . '">' . $database . '</button>';
                                    endforeach;
                                endif;
                               
?>
</div>
                        </div>
                        <div class="scroll-bar-wrap ui-widget-content ui-corner-bottom">
                            <div class="scroll-bar"></div>
                        </div>
                    </div>
                </div>
            </div>
           
            <br />
            <input type="submit" value="NEXT" class="btn btn-primary" />
        </fildset>
    </form>

    <?php
   
exit();
endif;


//***************************************************
// STEP 2
//***************************************************
if ($step == 2):
   
// Selecting all tables
   
$database = isset($_POST['database']) ? $_POST['database'] : null;
   
$tables = Generator::getTablesFromDatabase($database);
   
?>

    <form class="form-horizontal" method="post">
        <input type="hidden" name="step" value="3" />
        <input type="hidden" name="database" value="<?php echo $database; ?>" />
        <fildset>
            <legend>Choose the tables to continue</legend>
           
            <?php
           
if (!$tables):
               
?>
<div class="alert">
                    <button type="button" class="close" data-dismiss="alert">&times;</button>
                    <strong>Notice!</strong> Go back and choose a database.
                </div>
                <?php
           
endif;
           
?>

            <div class="control-group">
                <label class="control-label" for="inputDatabase"><strong>Database</strong></label>
                <div class="controls">
                    <input type="text" id="inputDatabase" placeholder="None" value="<?php echo $database; ?>" readonly="readonly" />
                </div>
            </div>
           
            <div class="control-group">
                <label class="control-label"><strong>Tables available</strong></label>
                <div class="controls">
                    <div class="scroll-pane ui-widget ui-widget-header ui-corner-all" data-toggle="buttons-checkbox">
                        <div class="scroll-content">
                            <div class="btn-group">
                            <?php
                           
if ($tables):
                                foreach (
$tables as $table):
                                   
$table_name = implode(array_map('ucwords', preg_split('~_~', $table)));
                                   
$has_file = file_exists(DIR_MODELS . $table_name . '.php') ? 'red' : 'black';

                                    echo
'<button type="button" class="btn" name="tables[]" value="' . $table . '" style="color: ' . $has_file . '">' . $table . '</button>';
                                endforeach;
                            else:
                                echo
'&nbsp;';
                            endif;
                           
?>
</div>
                        </div>
                        <div class="scroll-bar-wrap ui-widget-content ui-corner-bottom">
                            <div class="scroll-bar"></div>
                        </div>
                    </div>
                   
                    <small class="notice">Tables in red have been previously created</small>
                   
                    <label class="checkbox inline">
                        <input type="checkbox" id="inputBackup" name="backup" value="1" checked /> Enable automatic backup of models
                    </label>
                </div>
            </div>
           
            <br />
            <input type="button" value="BACK" class="btn btn-primary" onclick="javascript:history.back()" />
            <input type="submit" value="NEXT" class="btn btn-primary" />
        </fildset>
    </form>

    <?php
   
exit();
endif;


//***************************************************
// STEP 3
//***************************************************

// Enable automatic backup of models
$backup = isset($_POST['backup']) ? (boolean) $_POST['backup'] : null;
$database = isset($_POST['database']) ? $_POST['database'] : null;
$tables = isset($_POST['tables']) ? (array) $_POST['tables'] : null;
Generator::setBackup($backup);
Generator::generate($database, $tables);

echo
'<br /><input type="button" value="FINISH" class="btn btn-primary" onclick="javascript:history.go(-2);" /><br /><br /><br /><br />';

?>
</div>
</body>
</html>