diff options
author | 2009-06-24 15:14:23 -0400 | |
---|---|---|
committer | 2009-06-24 15:14:23 -0400 | |
commit | 7eb6b066a50e96ba5f97e173c51fcb7e2f04e06c (patch) | |
tree | 36e4dcf704baa30ac68439c67db4c0d1777403a2 /update_sql_classes.php | |
parent | Updates to sql_row_obj class; moved newclass.php to update_sql_classes.php an... (diff) | |
download | ingenue-7eb6b066a50e96ba5f97e173c51fcb7e2f04e06c.tar.gz ingenue-7eb6b066a50e96ba5f97e173c51fcb7e2f04e06c.tar.bz2 ingenue-7eb6b066a50e96ba5f97e173c51fcb7e2f04e06c.zip |
Added merging changes in tables into already existing classes in update_sql_classes.php
Diffstat (limited to 'update_sql_classes.php')
-rwxr-xr-x | update_sql_classes.php | 69 |
1 files changed, 44 insertions, 25 deletions
diff --git a/update_sql_classes.php b/update_sql_classes.php index 24ea938..f807b3c 100755 --- a/update_sql_classes.php +++ b/update_sql_classes.php @@ -31,37 +31,39 @@ function prompt_string($prompt, $default=null) { } return $answer; } -function write_table_class_to_stream($table, $class, $stream) { +function write_table_class_to_file($table, $class, $file) { + $stream=fopen($file, 'w'); fputs($stream, "<?php\n"); $tmpclass='genclass_'.randstring(30); eval ("class $tmpclass extends sql_row_obj {\nprotected \$table='$table';\t}"); $obj=new $tmpclass(); fputs($stream, str_replace($tmpclass, $class, $obj->to_php())); fputs($stream, "?>\n"); - fflush($stream); + fclose($stream); } $pdo=&$S['pdo']; $r=$pdo->query('SHOW TABLES'); $tables=$r->fetchAll(PDO::FETCH_COLUMN); +$check_existing=prompt_bool('Check existing classes for changes from the database?'); foreach ($tables as $i => $table) { - if (sql_row_obj::table_to_class($table)) { + if ($class=sql_row_obj::table_to_class($table)) { unset($tables[$i]); - $class=$table; - if (substr($class, -1) == 's') { - $class=substr($class, 0, strlen($class)-1); + if (!$check_existing) { + continue; + } + if (substr($class, 0, 4) == 'sql_') { + $origfile=substr($class, 4); + } else { + $origfile=$class; } - $origfile=SHARED.'/classes/'.$class.'.php'; + $origfile=SHARED.'/classes/'.$origfile.'.php'; if (is_file($origfile)) { - $tmp=tmpfile(); - $file=stream_get_meta_data($tmp); - $file=$file['uri']; - $class='sql_'.$class; - write_table_class_to_stream($table, $class, $tmp); - $lines=count(explode("\n", rtrim(file_get_contents($file))))-2; - $diff=`diff "$origfile" "$file"`; - $difftmp=tmpfile(); - $diffname=stream_get_meta_data($tmp); - $diffname=$diffname['uri']; + write_table_class_to_file($table, $class, '.temp_class'); + $lines=count(explode("\n", rtrim(file_get_contents('.temp_class'))))-2; + $diff=`diff "$origfile" .temp_class`; + $difftmp=fopen('.temp_diff', 'w'); + $diffname='.temp_diff'; + $domerge=false; foreach (explode("\n", $diff) as $line) { $line.="\n"; if (strlen($line) && is_numeric(substr($line, 0, 1))) { @@ -72,14 +74,28 @@ foreach ($tables as $i => $table) { } } } + if (strlen(trim($line))) { + $domerge=true; + } fputs($difftmp, $line); } - fflush($difftmp); - if (filesize($diffname)) { - system('sdiff --diff-program="cat \''.$diffname.'\'; true" -o merge.tmp "'.$originfile.'" "'.$file.'"'); + fclose($difftmp); + if ($domerge) { + copy($origfile, '.temp_class'); + shell_exec('patch .temp_class < .temp_diff'); + passthru('colordiff -u "'.$origfile.'" .temp_class'); + if (prompt_bool('Merge differences?')) { + passthru('sdiff -o .temp_class2 "'.$origfile.'" .temp_class'); + passthru('colordiff -u "'.$origfile.'" .temp_class2'); + if (prompt_bool('Keep changes?')) { + rename('.temp_class2', $origfile); + } else { + unlink('.temp_class2'); + } + } } -// echo $diff; - fclose($tmp); + unlink('.temp_diff'); + unlink('.temp_class'); // TODO unlink others } } } @@ -92,12 +108,15 @@ if ($tables) { echo "No tables found without corresponding classes.\n"; } if (!$tables) { + die("Exiting.\n"); + /* echo 'Which tables should we generate classes for? (space-separated) '; $tables=explode(' ', trim(fgets(STDIN))); if ($tables[0] == '') { echo "Exiting.\n"; exit; } + */ } echo 'Generating classes for table(s): '.implode(', ', $tables)."\n"; foreach ($tables as $table) { @@ -122,14 +141,14 @@ foreach ($tables as $table) { } } echo 'Writing '.$file.'...'; - $file=fopen($file, 'w'); - write_table_class_to_stream($table, $class, $file); +// $file=fopen($file, 'w'); + write_table_class_to_file($table, $class, $file); /* fputs($file, "<?php\n"); eval ("class fake_class_for_newclass extends sql_row_obj {\nprotected \$table='$table';\t}"); $obj=new fake_class_for_newclass(); fputs($file, str_replace('fake_class_for_newclass', $class, $obj->to_php())); fputs($file, "?>\n");*/ - fclose($file); +// fclose($file); echo "done\n"; } ?> |