/system/application/controllers/welcome.php

https://github.com/tediscript/generator · PHP · 350 lines · 272 code · 67 blank · 11 comment · 34 complexity · 8dd0d801968895229fe08aee75d943be MD5 · raw file

  1. <?php
  2. class Welcome extends Controller {
  3. function Welcome() {
  4. parent::Controller();
  5. $this->load->library('Mydb');
  6. }
  7. function index() {
  8. $this->load->view('welcome');
  9. }
  10. function remove_handler() {
  11. exec('rm -rvf output/controllers/*');
  12. exec('rm -rvf output/models/*');
  13. exec('rm -rvf output/views/*');
  14. echo '<a href="'.site_url().'/welcome/">Back to main menu</a><br/><br/>';
  15. }
  16. function generate() {
  17. echo '<a href="'.site_url().'/welcome/">Back to main menu</a><br/><br/>';
  18. echo 'generating new <strong>Edit Views</strong><br/>';
  19. $this->generate_edit_views();
  20. echo 'generating new <strong>Add Views</strong><br/>';
  21. $this->generate_add_views();
  22. echo 'generating new <strong>Grid Views</strong><br/>';
  23. $this->generate_grid_views();
  24. echo 'generating new <strong>Controllers</strong><br/>';
  25. $this->generate_controllers();
  26. echo 'generating new <strong>Models</strong><br/>';
  27. $this->generate_models();
  28. echo 'generating new <strong>Dashboard Controllers</strong><br/>';
  29. $this->generate_dashboard_controller();
  30. echo 'generating new <strong>Dashboard View</strong><br/>';
  31. $this->generate_dashboard_view();
  32. exec('chmod 777 output/ -R');
  33. }
  34. function generate_dashboard_view() {
  35. $tables = $this->db->list_tables();
  36. $modules = array();
  37. foreach ($tables as $table) {
  38. $modules[] = array(
  39. 'module' => '<a href="<?php echo site_url();?>/'.$table.'/">'.humanize($table).'</a><br/>',
  40. );
  41. }
  42. $data = array(
  43. 'modules' => $modules,
  44. );
  45. $string = $this->parser->parse('template/views/view_dashboard_template', $data, TRUE);
  46. $path = 'output/views/dashboard.php';
  47. write_file($path, $string);
  48. echo 'generating <strong>Dashboard</strong> view...<br/>';
  49. }
  50. function generate_dashboard_controller() {
  51. $data = array(
  52. 'php_open' => '<?php',
  53. 'php_close' => '?>',
  54. );
  55. $string = $this->parser->parse('template/controllers/dashboard_controller_template', $data, TRUE);
  56. $path = 'output/controllers/dashboard.php';
  57. write_file($path, $string);
  58. echo 'generating <strong>Dashboard</strong> controller...<br/>';
  59. }
  60. function generate_edit_views() {
  61. $tables = $this->db->list_tables();
  62. foreach ($tables as $table) {
  63. $table_name = $table;
  64. $view_name = humanize($table_name);
  65. $primary_key = '';
  66. $fields_data = array();
  67. $foreign_num = 1;
  68. $fields = $this->mydb->field_data($table_name);
  69. foreach ($fields as $field) {
  70. if($field->auto_increment != 1 && $field->foreign_key != 1 && $field->type != 'date') {
  71. $fields_data[] = array(
  72. 'field_name' => humanize($field->name),
  73. 'field_input' => '<input type="text" name="'.$field->name.'" value="<?php echo $result[0]->'.$field->name.';?>" />',
  74. );
  75. }else if($field->foreign_key == 1) {
  76. $fields_data[] = array(
  77. 'field_name' => humanize($field->name),
  78. 'field_input' => '<select name="'.$field->name.'">
  79. <?php foreach($foreign'.$foreign_num.' as $item): ?>
  80. <option value="<?php echo $item->'.$field->name.';?>" <?php if($result[0]->'.$field->name.' == $foreign'.$foreign_num++.'->'.$field->name.') echo \'selected\';?>><?php echo $item->'.$field->name.';?></option>
  81. <?php endforeach; ?>
  82. </select>',
  83. );
  84. }else if($field->type == 'date') {
  85. $fields_data[] = array(
  86. 'field_name' => humanize($field->name),
  87. 'field_input' => '<input type="text" name="'.$field->name.'" onclick="displayDatePicker(\''.$field->name.'\');" class="text" value="<?php echo date(\'d-m-Y\', strtotime($result[0]->'.$field->name.'));?>" readonly="readonly" />
  88. <a href="javascript:void(0);" onclick="displayDatePicker(\''.$field->name.'\');">
  89. <img src="<?php echo base_url();?>images/calendar.png" alt="calendar" border="0"></a>',
  90. );
  91. }
  92. if($field->primary_key == 1) {
  93. $primary_key = $field->name;
  94. }
  95. }
  96. $data = array(
  97. 'php_open' => '<?php',
  98. 'php_close' => '?>',
  99. 'table_name' => $table_name,
  100. 'view_name' => $view_name,
  101. 'fields_data' => $fields_data,
  102. 'primary_key' => $primary_key,
  103. );
  104. $string = $this->parser->parse('template/views/view_edit_template', $data, TRUE);
  105. $path = 'output/views/'.$table_name.'_edit.php';
  106. write_file($path, $string);
  107. echo 'generating <strong>'.$table_name.'</strong> add...<br/>';
  108. }
  109. }
  110. function generate_add_views() {
  111. $tables = $this->db->list_tables();
  112. foreach ($tables as $table) {
  113. $table_name = $table;
  114. $view_name = humanize($table_name);
  115. $primary_key = '';
  116. $fields_data = array();
  117. $foreign_num = 1;
  118. $fields = $this->mydb->field_data($table_name);
  119. foreach ($fields as $field) {
  120. if($field->auto_increment != 1 && $field->foreign_key != 1 && $field->type != 'date') {
  121. // if($field->max_length == 0){
  122. $fields_data[] = array(
  123. 'field_name' => humanize($field->name),
  124. 'field_input' => '<input type="text" name="'.$field->name.'" value=""/>',
  125. );
  126. // }else if(max_length > 0){
  127. // $fields_data[] = array(
  128. // 'field_name' => humanize($field->name),
  129. // 'field_input' => '<input type="text" name="'.$field->name.'" value="" size="'.$field->max_length.'"/>',
  130. // );
  131. // }else if(true){
  132. //
  133. // }
  134. }else if($field->foreign_key == 1) {
  135. $fields_data[] = array(
  136. 'field_name' => humanize($field->name),
  137. 'field_input' => '<select name="'.$field->name.'">
  138. <?php foreach($foreign'.$foreign_num++.' as $item): ?>
  139. <option value="<?php echo $item->'.$field->name.';?>"><?php echo $item->'.$field->name.';?></option>
  140. <?php endforeach; ?>
  141. </select>',
  142. );
  143. }else if($field->type == 'date') {
  144. $fields_data[] = array(
  145. 'field_name' => humanize($field->name),
  146. 'field_input' => '<input type="text" name="'.$field->name.'" onclick="displayDatePicker(\''.$field->name.'\');" class="text" value="" readonly="readonly" />
  147. <a href="javascript:void(0);" onclick="displayDatePicker(\''.$field->name.'\');">
  148. <img src="<?php echo base_url();?>images/calendar.png" alt="calendar" border="0"></a>',
  149. );
  150. }
  151. }
  152. $data = array(
  153. 'php_open' => '<?php',
  154. 'php_close' => '?>',
  155. 'table_name' => $table_name,
  156. 'view_name' => $view_name,
  157. 'fields_data' => $fields_data,
  158. );
  159. $string = $this->parser->parse('template/views/view_add_template', $data, TRUE);
  160. $path = 'output/views/'.$table_name.'_add.php';
  161. write_file($path, $string);
  162. echo 'generating <strong>'.$table_name.'</strong> add...<br/>';
  163. }
  164. }
  165. function generate_grid_views() {
  166. $tables = $this->db->list_tables();
  167. foreach ($tables as $table) {
  168. $table_name = $table;
  169. $view_name = humanize($table_name);
  170. $primary_key = '';
  171. $fields = $this->mydb->field_data($table_name);
  172. foreach ($fields as $field) {
  173. if($field->primary_key == 1) {
  174. $primary_key = $field->name;
  175. }
  176. }
  177. $data = array(
  178. 'php_open' => '<?php',
  179. 'php_close' => '?>',
  180. 'table_name' => $table_name,
  181. 'view_name' => $view_name,
  182. 'primary_key' => $primary_key,
  183. );
  184. $string = $this->parser->parse('template/views/view_grid_template', $data, TRUE);
  185. $path = 'output/views/'.$table_name.'_grid.php';
  186. write_file($path, $string);
  187. echo 'generating <strong>'.$table_name.'</strong> view...<br/>';
  188. }
  189. }
  190. function generate_controllers() {
  191. $tables = $this->db->list_tables();
  192. foreach ($tables as $table) {
  193. $table_name = $table;
  194. $first_string = substr($table_name, 0, 1);
  195. $first_string_up = strtoupper($first_string);
  196. $controller_name = substr_replace($table_name, $first_string_up, 0, 1);
  197. $model_name = $controller_name.'_model';
  198. $fields_data_add = array();
  199. $fields_data_add_array = array();
  200. $foreigns_add = array();
  201. $foreigns_edit = array();
  202. $foreign_num = 1;
  203. $fields = $this->mydb->field_data($table_name);
  204. foreach ($fields as $field) {
  205. if($field->auto_increment != 1 && $field->type != 'date') {
  206. $fields_data_add[] = array(
  207. 'field_data' => '$'.$field->name.' = $this->input->post(\''.$field->name.'\');',
  208. );
  209. $fields_data_add_array[] = array(
  210. 'field_data' => '\''.$field->name.'\' => $'.$field->name.',',
  211. );
  212. }else if($field->type == 'date') {
  213. $fields_data_add[] = array(
  214. 'field_data' => '$'.$field->name.' = date(\'Y-m-d\', strtotime($this->input->post(\''.$field->name.'\')));',
  215. );
  216. $fields_data_add_array[] = array(
  217. 'field_data' => '\''.$field->name.'\' => $'.$field->name.',',
  218. );
  219. }
  220. if($field->foreign_key == 1) {
  221. $references_table = $field->references_table;
  222. $first_string = substr($references_table, 0, 1);
  223. $first_string_up = strtoupper($first_string);
  224. $foreign_controller_name = substr_replace($references_table, $first_string_up, 0, 1);
  225. $foreign_model_name = $foreign_controller_name.'_model';
  226. $foreigns_add[] = array(
  227. 'foreign_num' => $foreign_num,
  228. 'foreign_model_name'=> $foreign_model_name,
  229. );
  230. $foreigns_edit[] = array(
  231. 'foreign_num' => $foreign_num,
  232. 'foreign_model_name'=> $foreign_model_name,
  233. );
  234. $foreign_num++;
  235. }
  236. }
  237. $data = array(
  238. 'php_open' => '<?php',
  239. 'php_close' => '?>',
  240. 'table_name' => $table_name,
  241. 'controller_name' => $controller_name,
  242. 'model_name' => $model_name,
  243. 'fields_data_add' => $fields_data_add,
  244. 'fields_data_add_array' => $fields_data_add_array,
  245. 'foreigns_add' => $foreigns_add,
  246. 'foreigns_edit' => $foreigns_edit,
  247. );
  248. $string = $this->parser->parse('template/controllers/controller_template', $data, TRUE);
  249. $path = 'output/controllers/'.$table_name.'.php';
  250. write_file($path, $string);
  251. echo 'generating <strong>'.$table_name.'</strong> controller...<br/>';
  252. }
  253. }
  254. function generate_models() {
  255. $tables = $this->db->list_tables();
  256. foreach ($tables as $table) {
  257. $table_name = $table;
  258. $first_string = substr($table_name, 0, 1);
  259. $first_string_up = strtoupper($first_string);
  260. $model_name = substr_replace($table_name, $first_string_up, 0, 1);
  261. $primary_key = '';
  262. $fields = $this->mydb->field_data($table_name);
  263. foreach ($fields as $field) {
  264. if($field->primary_key == 1) {
  265. $primary_key = $field->name;
  266. }
  267. }
  268. $data = array(
  269. 'php_open' => '<?php',
  270. 'php_close' => '?>',
  271. 'table_name' => $table_name,
  272. 'model_name' => $model_name,
  273. 'primary_key' => $primary_key,
  274. );
  275. $string = $this->parser->parse('template/models/model_template', $data, TRUE);
  276. $path = 'output/models/'.$table_name.'_model.php';
  277. write_file($path, $string);
  278. echo 'generating <strong>'.$table_name.'</strong> model...<br/>';
  279. }
  280. }
  281. }
  282. /* End of file welcome.php */
  283. /* Location: ./system/application/controllers/welcome.php */