-
Notifications
You must be signed in to change notification settings - Fork 7.6k
cigenerator
Derek Jones edited this page Jul 5, 2012
·
5 revisions
CI generator for crud (bash and php) 0.1
cicrud.sh
#!/bin/bash
# CICRUD 0.1 By Vladimir Grubor ([email protected])
# 2008.12.08
# Usage: cicrud.sh [CodeIgniter folder] [table name] [fields (field1 field2 field3...)]
# ./cicrud.sh /home/vlado/web/ci test username email password status
# or if your application folder is in system ./cicrud.sh /home/vlado/web/ci/system test username email password status
# Script will generate in this case modtest.php model
# If modtest.php existing this script will overwrite it. So...
# cat file | xargs ./cicrud.sh /home/vlado/web/CodeIgniter test
#Configuration
AUTHOR="Vladimir Grubor ([email protected])"
DATE=$(date '+%d.%m.%Y %R')
#
FOLDER=$1
if [ ! -x $FOLDER ]; then
echo 'Error: wrong directory name. Use ./cicrud dirname table field1 field2...'; exit 1
fi
TABLE=$2
MODELNAME="mod$TABLE"
MODEL="$FOLDER/application/models/$MODELNAME.php"
echo "Starting CI-Bash CRUD $DATE"
echo "Table: $TABLE CI Folder: $FOLDER"
#Creating model
echo "<?php if (!defined('BASEPATH')) exit('No direct script access allowed');" > $MODEL
echo "/**
* $TABLE model
*
* @author $AUTHOR
* @date $DATE
*/" >> $MODEL
echo "class mod$TABLE extends Model {" >> $MODEL
echo '' >> $MODEL
echo ' var $id;' >> $MODEL
for thing in "$@"
do
if [ ${thing} != $FOLDER ] && [ ${thing} != $TABLE ] ; then
echo " var $"${thing}";" >> $MODEL
fi
done
echo '' >> $MODEL
echo ' var $select;' >> $MODEL
echo ' var $limit;' >> $MODEL
echo ' var $limit2;' >> $MODEL
echo ' var $order;' >> $MODEL
#GET Function
echo '' >> $MODEL
echo " function $MODELNAME(){
parent::Model();
}">>$MODEL
echo '' >> $MODEL
echo " /**
* Return filtered $TABLE
*
* @access public
* @param void
* @return $TABLE
*/" >> $MODEL
echo ' function get(){' >> $MODEL
for thing in "$@"
do
if [ ${thing} != $FOLDER ] && [ ${thing} != $TABLE ]; then
echo " if (\$this->"${thing}") \$this->db->where('${thing}',\$this->${thing});" >> $MODEL
fi
done
echo ' if ($this->select) $this->db->select($this->select);' >> $MODEL
echo ' if ($this->limit) $this->db->limit($this->limit);' >> $MODEL
echo ' if ($this->limit2) $this->db->limit($this->limit,$this->limit2);' >> $MODEL
echo ' if ($this->order) $this->db->order_by($this->order);' >> $MODEL
echo " \$kveri = \$this->db->get('$TABLE');" >> $MODEL
echo ' if ($this->id) return $kveri->row();' >> $MODEL
echo ' else return $kveri->result();' >> $MODEL
echo ' }' >> $MODEL
echo '' >> $MODEL
echo ' // --------------------------------------------------------------------' >> $MODEL
echo '' >> $MODEL
#SAVE Function
echo " /**
* Save $TABLE
*
* @access public
* @param void
* @return integer
*/" >> $MODEL
echo ' function save(){' >> $MODEL
for thing in "$@"
do
if [ ${thing} != $FOLDER ] && [ ${thing} != $TABLE ]; then
echo " if (\$this->"${thing}") \$this->db->set('${thing}',\$this->${thing});" >> $MODEL
fi
done
echo ' if ($this->id) {' >> $MODEL
echo " \$this->db->where('id',\$this->id);" >> $MODEL
echo " \$this->db->update('$TABLE');" >> $MODEL
echo " return \$this->id;" >> $MODEL
echo ' }' >> $MODEL
echo ' else {' >> $MODEL
echo " \$this->db->update('$TABLE');" >> $MODEL
echo ' return $this->db->insert_id();' >> $MODEL
echo ' }' >> $MODEL
echo ' }' >> $MODEL
echo '' >> $MODEL
echo ' // --------------------------------------------------------------------' >> $MODEL
echo '' >> $MODEL
#DELETE
echo " /**
* Delete row from $TABLE
*
* @access public
* @param integer
* @return void
*/" >> $MODEL
echo ' function del($id){' >> $MODEL
echo ' $this->db->where('id',$id);' >> $MODEL
echo ' $this->db->limit(1);' >> $MODEL
echo " \$this->db->delete('$TABLE')" >> $MODEL
echo ' }' >> $MODEL
echo '' >> $MODEL
#Finishing model
echo '}' >> $MODEL
#echo '?>' >> $MODEL
echo "/* End of file $MODELNAME.php */" >> $MODEL
echo "/* Location: ./application/models/$MODELNAME.php */" >> $MODEL
cicrud.php
#!/usr/bin/php -q
<?
# CICrud 0.1
# Author Vladimir Grubor ([email protected])
# Use ./cicrud.php [(m)odel|(c)ontroller|(v)iew|(a)ll] [CI project folder] [table] [fields]
# or php cicrud.php [(m)odel|(c)ontroller|(v)iew|(a)ll] [CI project folder] [table] [fields]
# cat textfile | xargs ./cicrud.php [(m)odel|(c)ontroller|(v)iew|(a)ll] [CI project folder] [table]
# Script will overwrite existing file....
#Configuration
$author = 'Vladimir Grubor ([email protected])';
$cifolder = 'application/'; // or 'system/application/'
$date = date('d.m.Y H:i'); // Date time format
#Parms
$mvc = $_SERVER['argv'][1];
$folder = $_SERVER['argv'][2];
$folder = $folder.$cifolder;
$table = $_SERVER['argv'][3];
function model()
{
global $folder,$table,$author,$date;
$modelname = 'mod'.$table.'.php';
$model = $folder.'/models/'.$modelname;
echo "Generating model...\n";
$fp = fopen($model, 'w');
fwrite($fp, "<?php if (!defined('BASEPATH')) exit('No direct script access allowed');\n");
fwrite($fp, "/**\n");
fwrite($fp, "* $table model\n");
fwrite($fp, "*\n");
fwrite($fp, "* @author $author\n");
fwrite($fp, "* @date $date\n");
fwrite($fp, "*/\n");
fwrite($fp, "class mod$table extends Model {\n");
fwrite($fp, ' var $id'.";\n");
for($i=4;$i<count($_SERVER['argv']);$i++)
{
fwrite($fp, ' var $'.$_SERVER['argv'][$i].";\n");
}
fwrite($fp, "\n");
fwrite($fp, ' var $select'.";\n");
fwrite($fp, ' var $order'.";\n");
fwrite($fp, ' var $limit'.";\n");
fwrite($fp, ' var $limit2'.";\n");
fwrite($fp, "\n");
fwrite($fp, " function mod$table(){\n");
fwrite($fp, " parent::Model();\n");
fwrite($fp, " }\n\n");
fwrite($fp, " // --------------------------------------------------------------------\n\n");
fwrite($fp," /**
* Get rows from $table
*
* @access public
* @param none
* @return object
*/\n" );
fwrite($fp, " function get(){\n");
fwrite($fp, " if (\$this->id) \$this->db->where('id',\$this->id);\n");
for($i=4;$i<count($_SERVER['argv']);$i++)
{
$var = $_SERVER['argv'][$i];
fwrite($fp, " if (\$this->$var) \$this->db->where('$var',\$this->$var);\n");
}
fwrite($fp, " if (\$this->select) \$this->db->select(\$this->select);\n");
fwrite($fp, " if (\$this->order) \$this->db->order_by(\$this->order);\n");
fwrite($fp, " if (\$this->limit) \$this->db->limit(\$this->limit);\n");
fwrite($fp, " if (\$this->limit2) \$this->db->limit(\$this->limit,\$this->limit2);\n");
fwrite($fp, " \$query = \$this->db->get('$table');\n");
fwrite($fp, " if (\$this->id) return \$query->row();\n");
fwrite($fp, " else return \$query->result();\n");
fwrite($fp, " }\n\n");
fwrite($fp, " // --------------------------------------------------------------------\n\n");
fwrite($fp," /**
* Update or insert to $table
*
* @access public
* @param none
* @return integer
*/\n" );
fwrite($fp, " function save(){\n");
for($i=4;$i<count($_SERVER['argv']);$i++)
{
$var = $_SERVER['argv'][$i];
fwrite($fp, " if (\$this->$var) \$this->db->set('$var',\$this->$var);\n");
}
fwrite($fp, " if (\$this->id)\n {\n");
fwrite($fp, " \$this->db->where('id',\$this->id);\n");
fwrite($fp, " \$this->db->update('$table');\n");
fwrite($fp, " return \$this->id;\n");
fwrite($fp, " }\n");
fwrite($fp, " else\n {\n");
fwrite($fp, " \$this->db->insert('$table');\n");
fwrite($fp, " return \$this->db->insert_id();\n");
fwrite($fp, " }\n");
fwrite($fp, " }\n\n");
fwrite($fp, " // --------------------------------------------------------------------\n\n");
fwrite($fp," /**
* Delete row from $table
*
* @access public
* @param integer
* @return void
*/\n" );
fwrite($fp, " function del(\$id){\n");
fwrite($fp, " \$this->db->where('id',\$id);\n");
fwrite($fp, " \$this->db->limit(1);\n");
fwrite($fp, " \$this->db->delete('$table');\n");
fwrite($fp, " }\n");
fwrite($fp, "}\n");
fwrite($fp, "/* End of file $modelname */\n");
fwrite($fp, "/* Location: ./application/models/$modelname */\n");
fclose($fp);
}
function controller()
{
global $folder,$table,$author,$date;
$controllername = $table;
$controller = $folder.'/controllers/'.$controllername.'.php';
$model = 'mod'.$table;
echo "Generating controller...\n";
$fp = fopen($controller, 'w');
fwrite($fp,"<?php if (!defined('BASEPATH')) exit('No direct script access allowed');\n");
fwrite($fp, "/**\n");
fwrite($fp, "* $table controller\n");
fwrite($fp, "*\n");
fwrite($fp, "* @author $author\n");
fwrite($fp, "* @date $date\n");
fwrite($fp, "*/\n");
fwrite($fp,"class $controllername extends Controller {\n\n");
fwrite($fp," function $controllername(){\n");
fwrite($fp," parent::Controller();\n");
fwrite($fp," \$this->load->model('mod$table');\n");
fwrite($fp," }\n\n");
fwrite($fp," function index(){\n");
fwrite($fp," \$data['$table'] = \$this->".$model."->get()\n");
fwrite($fp," }\n\n");
fwrite($fp," function add(){\n");
fwrite($fp," }\n\n");
fwrite($fp," function edit(\$id){\n");
fwrite($fp," \$editable = \$this->".$model."->id = \$id;\n");
fwrite($fp," \$editable = \$this->".$model."->get();\n");
fwrite($fp," }\n\n");
fwrite($fp," function del(\$id){\n");
fwrite($fp,' $this->mod'.$table."->del(\$id);\n");
fwrite($fp," redirect('$controllername');\n");
fwrite($fp," }\n\n");
fwrite($fp,"}\n");
fwrite($fp, "/* End of file $controllername */\n");
fwrite($fp, "/* Location: ./application/controllers/$controllername.php */\n");
fclose($fp);
}
function view()
{
}
if ($mvc && $folder && $table)
{
if (!is_dir($folder)) die("Error: Wrong CI Project folder. Use php cicrud.php [(m)odel|(c)ontroller|(v)iew|(a)ll] [CI project folder] [table] [fields]\n");
if ($mvc == 'm' or $mvc == 'model') model();
else if ($mvc == 'c' or $mvc == 'controller') controller();
else if ($mvc == 'v' or $mvc == 'view') view();
else if ($mvc == 'a' or $mvc == 'all')
{
model();
controller();
view();
}
else die("Error: wrong argument (m) (v) (c) or (a)ll. Use php cicrud.php [(m)odel|(c)ontroller|(v)iew|(a)ll] [CI project folder] [table] [fields]\n");
}
else die("Error: no arguments. Use php cicrud.php [(m)odel|(c)ontroller|(v)iew|(a)ll] [CI project folder] [table] [fields]\n");
?>