PageRenderTime 27ms CodeModel.GetById 34ms RepoModel.GetById 0ms app.codeStats 1ms

/www/mk_tools/sqlClassGeneratorMkEdition/generator.php

https://github.com/russenreaktor/mkPhpSurvey
PHP | 589 lines | 314 code | 143 blank | 132 comment | 15 complexity | 69a04c8c2c5d5ff677c1d7ef0c22f576 MD5 | raw file
  1. <?php
  2. include("resources/class.database.php");
  3. $database = new Database();
  4. $generatorName = "mkPhpDbClassGenerator";
  5. $generatorVer = "0.3";
  6. function getNameCapitalized($variableName){
  7. $varKeyCapitalized = str_replace("_", " ", $variableName);
  8. $varKeyCapitalized = ucwords($varKeyCapitalized);
  9. $varKeyCapitalized = str_replace(" ", "", $varKeyCapitalized);
  10. return $varKeyCapitalized;
  11. }
  12. function getVariableJavaLike($varValue){
  13. if ($varValue=="") return false;
  14. $varTemp = getNameCapitalized($varValue);
  15. $varTemp = strtolower(substr($varTemp,0,1)).substr($varTemp,1,strlen($varTemp));
  16. return $varTemp;
  17. }
  18. if($_REQUEST["f"]=="")
  19. {
  20. ?>
  21. <font face="Arial" size="3"><b>PHP MYSQL Class Generator</b></font>
  22. <font face="Arial" size="2"><b>
  23. <form action="generator.php" method="POST" name="FORMGEN">
  24. 1) Select Table Name:
  25. <br>
  26. <select name="tablename">
  27. <?php
  28. $database->OpenLink();
  29. $tablelist = mysql_list_tables($database->database, $database->link);
  30. while ($row = mysql_fetch_row($tablelist)) {
  31. print "<option value=\"$row[0]\">$row[0]</option>";
  32. }
  33. ?>
  34. </select>
  35. <p>
  36. 2) Type Class Name (ex. "test"): <br>
  37. <input type="text" name="classname" size="50" value="">
  38. <p>
  39. 3) Type Name of Key Field:
  40. <br>
  41. <input type="text" name="keyname" value="" size="50">
  42. <br>
  43. <font size=1>
  44. (Name of key-field with type number with autoincrement!)
  45. </font>
  46. <table border=0 width=800 cellpadding=2 cellspacing=0>
  47. <tr>
  48. <td colspan=2>
  49. <label class="lbl">Class Author:</label><INPUT style="width:300px;" type="text" id="saveas" name="input[CLASS_AUTHOR_NAME]" value="<?=$_SESSION['CLASS_AUTHOR_NAME']?>"> <label class="lbl">E-Mail:</label><INPUT style="width:200px;" type="text" id="saveas" name="input[CLASS_AUTHOR_EMAIL]" value="<?=$_SESSION['CLASS_AUTHOR_EMAIL']?>"><BR>
  50. </td>
  51. </tr>
  52. <tr>
  53. <td colspan=2>
  54. <!--<label class="lbl">Add class header:<label><input type="checkbox" name="input[addHeaderClass]" value="1"><br>
  55. <label class="lbl">make javaLikeVariables:</label><input type="checkbox" name="input[varJavaLike]" value="1"><br>-->
  56. <!--<label class="lbl">Add inputValidator:</label><input type="checkbox" name="input[addValidation]" value="1"><br>-->
  57. <label class="lbl">Add FunctionPrefix:</label><INPUT type="text" id="saveas" name="input[functionPrefix]"><BR>
  58. </td>
  59. </tr>
  60. </table>
  61. <INPUT type="reset">
  62. <input type="submit" name="s1" value="Generate Class">
  63. <input type="hidden" name="f" value="formshowed">
  64. </form>
  65. </b>
  66. </font>
  67. <?php
  68. } else {
  69. // fill parameters from form
  70. $table = $_REQUEST["tablename"];
  71. $ftk_table_constant = "TABLE_".strtoupper($table);
  72. $ftk_table_definition = "define('$ftk_table_constant','$table');";
  73. $class = $_REQUEST["classname"];
  74. #$key = $_REQUEST["keyname"];
  75. $key[0] = $_REQUEST["keyname"];
  76. $key['getNameCapitalized'] = getVariableJavaLike($key[0]);
  77. $key['getVariableJavaLike'] = getVariableJavaLike($key[0]);
  78. $dir = dirname(__FILE__);
  79. $filename = $dir . "/generated_classes/" . "class." . $class . ".php";
  80. // if file exists, then delete it
  81. if(file_exists($filename)){
  82. unlink($filename);
  83. }
  84. // open file in insert mode
  85. $file = fopen($filename, "w+");
  86. $filedate = date("d.m.Y");
  87. $c = "";
  88. $c = "<?php
  89. //error_reporting(E_ALL);
  90. /**
  91. * de.mksurvey - classes\class.$class.php
  92. *
  93. * @version \$Id:\$
  94. *
  95. *
  96. * Copyright (c) ".date("Y")." M.Kupriyanov
  97. * @author ".$_POST['input']['CLASS_AUTHOR_NAME'].", <".$_POST['input']['CLASS_AUTHOR_EMAIL'].">
  98. * @date ".date("d.m.Y H:i:s")."
  99. * @generator $generatorName v.$generatorVer
  100. * @package classes
  101. * @mailto ".$input['CLASS_AUTHOR_EMAIL']."
  102. *
  103. */
  104. $ftk_table_definition
  105. class $class{
  106. var $".$key['getVariableJavaLike']."; // KEY ATTR. WITH AUTOINCREMENT
  107. var \$_lastError; // Last Error in the Class
  108. ";
  109. $sql = "SHOW COLUMNS FROM $table;";
  110. $database->query($sql);
  111. $result = $database->result;
  112. while ($row = mysql_fetch_row($result)) {
  113. // echo "<pre>";
  114. // print_r($row);
  115. // echo "</pre>";
  116. $col = $row[0];
  117. $colProperties[$col] = $row;
  118. $colProperties[$col] = array(
  119. $row[0],
  120. $row[1],
  121. $row[2],
  122. $row[3],
  123. $row[4],
  124. $row[5],
  125. 'getNameCapitalized' => getNameCapitalized($col),
  126. 'getVariableJavaLike' => getVariableJavaLike($col)
  127. );
  128. if($col!=$key[0]){
  129. $c.= "
  130. var $".$colProperties[$col]['getVariableJavaLike']."; //".$colProperties[$col][1];
  131. } // endif
  132. //"print "$col";
  133. } // endwhile
  134. //echo "<pre>";
  135. //print_r($colProperties);
  136. //echo "</pre>";
  137. #$cdb = "$" . "database";
  138. #$cdb2 = "database";
  139. $c.="
  140. ";
  141. $cthis = "$" . "this->";
  142. #$thisdb = $cthis . $cdb2 . " = " . "new Database();";
  143. $c.= "
  144. function $class(\$".$key['getVariableJavaLike']." = null){
  145. if (\$".$key['getVariableJavaLike']."==null){
  146. }else{
  147. \$this->_loadDataById(\$".$key['getVariableJavaLike'].");
  148. }
  149. }
  150. ";
  151. #######################################################################
  152. # GETTER
  153. $c.="
  154. #######################################################################
  155. # GETTER
  156. ";
  157. //$database->query($sql);
  158. //$result = $database->result;
  159. #while ($row = mysql_fetch_row($result)) {
  160. foreach($colProperties as $col => $colData){
  161. #$col=$row[0];
  162. $mname = "get" . $input['functionPrefix'].$colProperties[$col]['getNameCapitalized'] . "()";
  163. $mthis = "$" . "this->" . $colProperties[$col]['getVariableJavaLike'];
  164. $c.="
  165. function $mname{
  166. return $mthis;
  167. }
  168. ";
  169. }
  170. #######################################################################
  171. # SETTER
  172. $c.="
  173. #######################################################################
  174. # SETTER
  175. ";
  176. // SETTER
  177. //$database->query($sql);
  178. //$result = $database->result;
  179. #while ($row = mysql_fetch_row($result)) {
  180. # $col=$row[0];
  181. foreach($colProperties as $col => $colData){
  182. #$val = "$" . "val";
  183. #$val = getVariableJavaLike($col);
  184. $val = $colProperties[$col]['getVariableJavaLike'];
  185. #$mname = "set" . $input['functionPrefix'].getNameCapitalized($col) . "($" . "val)";
  186. #$mname = "set" . $input['functionPrefix'].getNameCapitalized($col) . "($".$val.")";
  187. $mname = "set" . $input['functionPrefix'].$colProperties[$col]['getNameCapitalized'] . "($".$val.")";
  188. #$mthis = "$" . "this->" . $col . " = ";
  189. $mthis = "$" . "this->" . $val . " =";
  190. $c.="
  191. function $mname{
  192. \$this->_lastError = null;
  193. /*
  194. //add your validation here
  195. if(\$$val == \"\") {
  196. \$this->_lastError = ERROR_REQUIRED_SETPARAMETER_IS_NULL;
  197. return false;
  198. }*/
  199. $mthis $$val;
  200. return true;
  201. }
  202. ";
  203. }
  204. #######################################################################
  205. # SELECT
  206. $sql = "$" . "sql = ";
  207. $id = "$" . "id";
  208. #$thisdb = "$" . "this->" . "database";
  209. #$thisdbquery = "$" . "this->" . "database->query($" . "sql" . ")";
  210. $result = "$" . "result = ";
  211. $row = "$" . "row";
  212. $result1 = "$" . "result";
  213. $res = "$" . "result = $" . "this->database->result;";
  214. $c.="
  215. #######################################################################
  216. # SELECT
  217. /**
  218. * Load data from DB by ID
  219. *
  220. * @param string $id
  221. * @return bool
  222. */
  223. function _loadDataById($id){
  224. global \$database;
  225. \$this->_lastError = null;
  226. if(\$id == \"\") {
  227. \$this->_lastError = ERROR_REQUIRED_PARAMETER_IS_NULL;
  228. return false;
  229. }
  230. \$sqlQuery = \"SELECT * FROM \".".$ftk_table_constant.".\"
  231. WHERE ".$key[0]." = $id;\";
  232. #\$sqlQueryResult = tep_db_reader_query(\$sqlQuery);
  233. \$sqlQueryResult = \$database->openConnectionWithReturn(\$sqlQuery);
  234. #if(\$result = tep_db_fetch_array(\$sqlQueryResult)){
  235. if(\$result = mysql_fetch_array(\$sqlQueryResult)){
  236. ";
  237. //$sql = "SHOW COLUMNS FROM $table;";
  238. //$database->query($sql);
  239. //$result = $database->result;
  240. //while ($row = mysql_fetch_row($result))
  241. //{
  242. //$col=$row[0];
  243. foreach($colProperties as $col => $colData){
  244. $cthis = "$" . "this->" . $colProperties[$col]['getVariableJavaLike'] . " = $" . "result['" . $col. "']";
  245. $c.=" $cthis;
  246. ";
  247. }
  248. $c.="
  249. return true;
  250. }
  251. }
  252. ";
  253. $zeile1 = "
  254. $" . "sqlQuery" . " = \"DELETE FROM \".".$ftk_table_constant.".\"
  255. WHERE ".$key[0]." = $id;\"";
  256. #tep_db_writer_query($sqlQuery);
  257. #$zeile2 = "$" . "result = $" . "this->database->query($" . "sql);";
  258. #$zeile2 = "\$sqlQueryResult = tep_db_reader_query(\$sqlQuery);";
  259. $zeile2 = '$sqlQueryResult = $database->openConnectionNoReturn($sqlQuery);';
  260. $c.="
  261. #######################################################################
  262. # DELETE
  263. /**
  264. * Remove Item from DB By Primary Key
  265. *
  266. * @param String $id
  267. * @return boolean
  268. */
  269. function _delete($id){
  270. global \$database;
  271. \$this->_lastError = null;
  272. if(\$id == \"\") {
  273. \$this->_lastError = ERROR_REQUIRED_PARAMETER_IS_NULL;
  274. return false;
  275. }
  276. $zeile1;
  277. $zeile2
  278. return true;
  279. ";
  280. $c.="
  281. }
  282. ";
  283. $zeile1 = "$" . "this->".$key['getVariableJavaLike']." = \"\"";
  284. $zeile2 = "INSERT INTO \".".$ftk_table_constant.".\" (";
  285. $zeile5= ")";
  286. $zeile3 = "";
  287. $zeile4 = "";
  288. $zeile6 = "VALUES (";
  289. //$sql = "SHOW COLUMNS FROM $table;";
  290. //$database->query($sql);
  291. //$result = $database->result;
  292. //while ($row = mysql_fetch_row($result))
  293. //{
  294. //$col=$row[0];
  295. foreach($colProperties as $col => $colData){
  296. if($col!=$key){
  297. $zeile3.= " $col" . ",\n";
  298. $zeile4.= " '$" . "this->" .$colProperties[$col]['getVariableJavaLike']. "',\n";
  299. //$zeile3 = rtrim($zeile3);
  300. //$zeile4 = rtrim($zeile4);
  301. //$zeile3 = str_replace(",", " ", $zeile3);
  302. //$zeile4 = str_replace(",", " ", $zeile4);
  303. }
  304. }
  305. $zeile3 = substr($zeile3, 0, -2);#remove comma after last
  306. $zeile4 = substr($zeile4, 0, -2);#remove comma after last
  307. $sql = "$" . "sqlQuery =";
  308. #$zeile7 = "$" . "result = $" . "this->database->query($" . "sqlQuery);";
  309. #$zeile7 = "tep_db_writer_query(\$sqlQuery);";
  310. $zeile7 = "\$result = \$database->openConnectionNoReturn(\$sqlQuery);";
  311. $zeile8 = "$" . "row";
  312. $zeile9 = "$" . "result";
  313. #$zeile10 = "$" . "this->$key = " . "mysql_insert_id($" . "this->database->link);";
  314. #$zeile10 = "$" . "this->".$key['getVariableJavaLike']." = " . "tep_db_insert_id();";
  315. $zeile10 = "$" . "this->".$key['getVariableJavaLike']." = " . "mysql_insert_id();";
  316. $c.="
  317. #######################################################################
  318. # INSERT
  319. /**
  320. * Insert new Item to DB
  321. *
  322. * @return boolean
  323. */
  324. function _insert(){
  325. global \$database;
  326. $zeile1; // clear key for autoincrement
  327. $sql \"$zeile2
  328. $zeile3
  329. $zeile5
  330. $zeile6
  331. $zeile4
  332. $zeile5\";
  333. $zeile7
  334. $zeile10
  335. return true;
  336. }
  337. ";
  338. // UPDATE ----------------------------------------
  339. $zeile1 = "$" . "this->".$key['getVariableJavaLike']." = \"\"";
  340. $zeile2 = "UPDATE \".".$ftk_table_constant.".\" SET ";
  341. $zeile5= ")";
  342. $zeile3 = "";
  343. $zeile4 = "";
  344. $zeile6 = "VALUES (";
  345. $upd = "";
  346. //$sql = "SHOW COLUMNS FROM $table;";
  347. //$database->query($sql);
  348. //$result = $database->result;
  349. //while ($row = mysql_fetch_row($result))
  350. //{
  351. //$col=$row[0];
  352. foreach($colProperties as $col => $colData){
  353. if($col!=$key){
  354. #$zeile3.= "$col" . ",";
  355. #$zeile4.= "$" . "this->$col" . ",";
  356. $zeile3.= "$col" . ",\n";
  357. $zeile4.= " '$" . "this->" .$colProperties[$col]['getVariableJavaLike']. "',\n";
  358. $upd.= " " . "$col = '\$this->".$colProperties[$col]['getVariableJavaLike']. "',\n";
  359. //$zeile3 = rtrim($zeile3);
  360. //$zeile4 = rtrim($zeile4);
  361. //$zeile3 = str_replace(",", " ", $zeile3);
  362. //$zeile4 = str_replace(",", " ", $zeile4);
  363. }
  364. }
  365. #$zeile3 = substr($zeile3, 0, -1);
  366. #$zeile4 = substr($zeile4, 0, -1);
  367. #$upd = substr($upd, 0, -1);
  368. $zeile3 = substr($zeile3, 0, -2);#remove comma after last
  369. $zeile4 = substr($zeile4, 0, -2);#remove comma after last
  370. $upd = substr($upd, 0, -2);#remove comma after last
  371. $sql = "$" . "sqlQuery = \"";
  372. #$zeile7 = "$" . "result = $" . "this->database->query($" . "sql)";
  373. #$zeile7 = "$" . "result = tep_db_writer_query($" . "sqlQuery)";
  374. $zeile7 = "$" . "result = \$database->openConnectionNoReturn($" . "sqlQuery)";
  375. $zeile8 = "$" . "row";
  376. $zeile9 = "$" . "result";
  377. $zeile10 = "$" . "this->".$key['getVariableJavaLike']." = $" . "row->$key";
  378. $id = "$" . "id";
  379. $where = "WHERE " . "".$key[0]." = $" . "id";
  380. $c.="
  381. #######################################################################
  382. # UPDATE
  383. /**
  384. * Update item values in DB by PrimaryKey
  385. *
  386. * @param string $id
  387. * @return bool
  388. */
  389. function _update($id){
  390. global \$database;
  391. \$this->_lastError = null;
  392. if(\$id == \"\") {
  393. \$this->_lastError = ERROR_REQUIRED_PARAMETER_IS_NULL;
  394. return false;
  395. }
  396. $sql $zeile2
  397. $upd
  398. $where \";
  399. $zeile7;
  400. ";
  401. $c.="
  402. return true;
  403. }
  404. ";
  405. $c.="
  406. /**
  407. * gives back getLastError
  408. *
  409. * @access public
  410. * @author Mischa Kupriyanov, <m@kupriyanov.com>
  411. * @return string
  412. */
  413. function getLastError(){
  414. \$returnValue = (string) '';
  415. \$returnValue = \$this->_lastError;
  416. \$this->_lastError = null;
  417. return (string) \$returnValue;
  418. }";
  419. $c.= "
  420. }
  421. ?>";
  422. fwrite($file, $c);
  423. header("Content-Type: text/html");
  424. highlight_string($c);
  425. die();
  426. print "
  427. <font face=\"Arial\" size=\"3\"><b>
  428. PHP MYSQL Class Generator
  429. </b>
  430. <p>
  431. <font face=\"Arial\" size=\"2\"><b>
  432. Class '$class' successfully generated as file '$filename'!
  433. <p>
  434. <a href=\"javascript:history.back();\">
  435. back
  436. </a>
  437. </b></font>
  438. ";
  439. ?>
  440. <?php
  441. } // endif
  442. ?>