"];
foreach ($controllers as $name => $object) {
if(isset($object->todo)) continue;
// routes
$routesText[] = "/* SCAF */// $object->slug CRUD";
$routesText[] = "/* SCAF */Route::get ('/$object->slug', '{$name}Controller@index')->name('{$object->slug}-index');";
$routesText[] = "/* SCAF */Route::get ('/$object->slug/{id}', '{$name}Controller@show')->name('{$object->slug}-view');";
$routesText[] = "/* SCAF */Route::get ('/$object->slug/create', '{$name}Controller@create')->name('{$object->slug}-create');";
$routesText[] = "/* SCAF */Route::get ('/$object->slug/update/{id}', '{$name}Controller@update')->name('{$object->slug}-update');";
// left nav links
$linksText[] =
'
' . $object->text . '
';
// controller
$template = file_get_contents(base_path('generatecv/controller.template.php'));
$text = str_replace("_NAME_", $name, $template);
$text = str_replace("_MODEL_", $object->model, $text);
$text = str_replace("_SLUG_", $object->slug, $text);
// if(!file_exists(app_path("Http/Controllers/{$name}Controller.php"))) {
file_put_contents(app_path("Http/Controllers/{$name}Controller.php"), $text);
echo "Generated " . app_path("Http/Controllers/{$name}Controller.php") . "\n";
// }
// views - index
if(isset($object->list)) {
$template = file_get_contents(base_path('generatecv/listing.template.blade.php'));
$text = str_replace("_NAME_", $object->text, $template);
$text = str_replace("_SLUG_", $object->slug, $text);
$ths = [];
foreach ($object->list as $field => $display) {
$ths[] = "{$display} | ";
}
$ths = implode("\n", $ths);
$text = str_replace("", $ths, $text);
$tds = [];
foreach ($object->list as $field => $display) {
if($field === 'id') {
$tds[] = '= $row->' . $field . ' ?> | ';
}
else {
$tds[] = '= $row->' . $field . ' ?> | ';
}
}
$tds = implode("\n", $tds);
$text = str_replace("", $tds, $text);
// if(!file_exists(resource_path("views/{$object->slug}/index.blade.php"))) {
$this->file_force_contents(resource_path("views/{$object->slug}/index.blade.php"), $text);
echo "Generated " . resource_path("views/{$object->slug}/index.blade.php") . "\n";
// }
}
if(isset($object->show)) {
$template = file_get_contents(base_path('generatecv/show.template.blade.php'));
$dts = [];
foreach ($object->show as $field => $display) {
$dts[] = "{$display}" .
'= $row->' . $field . ' ?>';
}
$dts = implode("\n", $dts);
$text = str_replace("", $dts, $template);
// if(!file_exists(resource_path("views/{$object->slug}/show.blade.php"))) {
$this->file_force_contents(resource_path("views/{$object->slug}/show.blade.php"), $text);
echo "Generated " . resource_path("views/{$object->slug}/show.blade.php") . "\n";
// }
}
}
// write routes
$text = [];
$file = fopen(base_path("routes/web.php"), "r");
while (!feof($file)) {
$line = rtrim(fgets($file));
if(strpos($line, "/* SCAF */") === FALSE) {
$text[] = $line;
}
}
$text = implode("\n", $text);
fclose($file);
$text = str_replace("/* __SCAFFOLD_ROUTES__ */", implode("\n", $routesText), $text);
file_put_contents(base_path("routes/web.php"), $text);
echo "Updated " . base_path("routes/web.php") . "\n";
// write left nav links
$text = [];
$file = fopen(resource_path("views/layouts/pro-logged-in.blade.php"), "r");
while (!feof($file)) {
$line = rtrim(fgets($file));
if(strpos($line, "") === FALSE) {
$text[] = $line;
}
}
$text = implode("\n", $text);
fclose($file);
$text = str_replace("", implode("\n", $linksText), $text);
file_put_contents(resource_path("views/layouts/pro-logged-in.blade.php"), $text);
echo "Updated " . resource_path("views/layouts/pro-logged-in.blade.php") . "\n";
}
private function file_force_contents($dir, $contents){
$parts = explode('/', $dir);
$file = array_pop($parts);
$dir = '';
foreach($parts as $part)
if(!is_dir($dir .= "/$part")) mkdir($dir);
file_put_contents("$dir/$file", $contents);
}
}