mckaygerhard
be6445a6ae
* provide minimal instruction to start to work, adn minimal README also * fix guachi libraries to work with php8 also * fix the script to start a module, move or put missing files into docs as examples * send real http code, specially on 404 response if controllers are not present or error * fix index controller and not found logic model * provide default index and default ini configuration files
101 lines
3.5 KiB
PHP
Executable File
101 lines
3.5 KiB
PHP
Executable File
#!/usr/bin/php
|
|
<?php
|
|
chdir(__DIR__);
|
|
require ("lib/guachi.php");
|
|
require ('lib/security.php');
|
|
|
|
/* Muestro la ayuda y salgo*/
|
|
function help_exit() {
|
|
printf("Usage: %s public|private <module name> \n", $GLOBALS["argv"][0]);
|
|
exit;
|
|
}
|
|
|
|
/* Copia un archivo, pero no lo sobreescribe*/
|
|
function safe_copy($source, $dest) {
|
|
if (file_exists($source) == false) {
|
|
return false;
|
|
}else{
|
|
if (file_exists($dest)) {
|
|
printf("Warning, Archivo ya existe: %s\n", $dest);
|
|
return false;
|
|
}
|
|
copy($source, $dest);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
/* Setea los nombres dentro de las plantillas */
|
|
function set_nombres($directory, $module) {
|
|
$filename = $directory . "/" . $module . ".php";
|
|
if (($file = file($filename)) === false) {
|
|
return false;
|
|
}
|
|
$module = str_replace("/", "_", $module);
|
|
$file[1] = str_replace("XXX", $module, $file);
|
|
if (($fp = fopen($filename, "w")) == false) {
|
|
return false;
|
|
}
|
|
fputs($fp, implode("", $file[1]));
|
|
fclose($fp);
|
|
return true;
|
|
}
|
|
|
|
/* Comienza la diversion*/
|
|
error_reporting(E_ALL & ~E_NOTICE); /*activo todos los errores de php*/
|
|
|
|
/*cuento la cantdad de argumentos*/
|
|
if (count($argv) < 3) {
|
|
help_exit();
|
|
} else if (in_array($argv[1], array("public", "private")) == false) {
|
|
help_exit();
|
|
}
|
|
|
|
/*guardo el primer argumento en la variable modulos*/
|
|
$module = $argv[2];
|
|
/* Valida el nombre del modulo*/
|
|
$module_characters = VALIDATE_NONCAPITALS . VALIDATE_NUMBERS . "/_";
|
|
if (valid_input($module, $module_characters) == false) {
|
|
exit("Nombre de modulo invalido.\n");
|
|
}
|
|
|
|
/* Verifica si el modulo ya existe*/
|
|
if ( module_exists($module, $argv[1], true) ) {
|
|
exit;
|
|
}
|
|
|
|
/* Creo los directorios*/
|
|
$locations = array("controllers", "models");
|
|
$ofs = 0;
|
|
while (($pos = strpos($module, "/", $ofs)) !== false) {
|
|
$ofs = $pos + 1;
|
|
$subdir = "/".substr($module, 0, $pos);
|
|
foreach ($locations as $location) {
|
|
if (file_exists($location.$subdir) == false) {
|
|
printf("Creando directorios %s%s.\n", $location, $subdir);
|
|
mkdir($location.$subdir, 0755, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Copia de la plantillas*/
|
|
print "Creando el controlador, el modelo, la vista y los archivos asociados.\n";
|
|
safe_copy("docs/example_controller.php", "controllers/$module.php");
|
|
print "Creando controllers/$module.php.\n";
|
|
safe_copy("docs/example_model.php", "models/$module.php");
|
|
|
|
|
|
/* Seteando el nombre del modulo*/
|
|
print "Configurando...\n";
|
|
set_nombres('controllers', $module);
|
|
set_nombres('models', $module);
|
|
|
|
/* cargo el archivo de configuracion*/
|
|
$config = parse_ini_file('modules.ini', true);
|
|
$mode = ($argv[1] == 'private') ? 'admin' : 'page';
|
|
/*añado la informacion nueva*/
|
|
$config[$argv[1]][$mode][] = $module;
|
|
/*finalmente escribo el archivo*/
|
|
write_ini_file('modules.ini', $config);
|
|
|
|
print "Listo!.\n";
|