Joe empezó en el plugin de backups a añadir soporte para automatizar backups con cron, y ahora que quería continuar con lo que él preparó, me encuentro algunos problemas al requerir archivos de la base de FacturaScripts, no se si puede haber más problemas de este tipo, aunque asumo que sí. Pongo un poco en contexto y voy explicando:
Joe preparó
esto conjuntamente al modal en la vista para que el usuario escoja si quiere o no usar el cron. Por si da por probar el plugin a cualquiera que quiera opinar sobre lo que explico, tengo cambios pendientes de subir a sugerencia de Carlos, para que sólo el usuario admin tenga acceso a las funcionalidades "delicadas" por así decirlo (subir/bajar/hacer/eliminar backups), y que además las advertencias que salen actualmente ya no salgan, e indico en el README del plugin que constantes se pueden declarar en config.php o modificarlas en el propio functions.php para "capar" funcionalidades como partners, al igual que se solicitó con ciertas características de la base para limitar funcionalidades.
Con lo que Joe preparó, pretende que mediante un botón de "Programar backups" el usuario escoja fácilmente si deben hacerse los backups automáticos o no, hasta aquí ningún problema, pero para comprobar la elección del usuario se requiere acceso desde cron a fs_var para poder comprobar dicha elección, y aquí es donde empieza el "problema" que creo que es de fácil arreglo, pero que si tengo que hacer un pull-request, quisiera aplicarlo a todas las partes implicadas con este problema que creo que he visto, de la forma que se considere más oportuna.
Posiblemente esté haciendo algo mal yo, pero me encuentro que al hacer un require_once de fs_var.php desde el cron.php, de forma obvia debo cargar config.php, base/config2.php, base/fs_cache y base/fs_model.php como dependencias de clases o variables que necesito para acceder a ese dato, y a partir de aquí me encuentro el problema real. Los archivos de la base se intentan cargar con rutas relativas y es aquí donde me encuentro los problemas y veo 2/3 soluciones.
1.- Utilizar
http://php.net/manual/es/function.set-include-path.php que según veo no se utiliza en la base de facturascripts y lo más similar que tenemos es FS_PATH que también se está utilizando de forma relativa en lugar de absoluta y no se está utilizando en todas partes, sólo en algunas.
2.- Seguir el consejo de
http://php.net/manual/es/function.require-once.php y aprovechar que tenemos __DIR__ para generar rutas absolutas de forma dinámica.
3.- Una combinación de ambas, para que FS_PATH use __DIR__ como ruta base absoluta para evitar que este problema se pueda extender aunque todavía no haya sucedido en otros lugares y además forzar en todos los lugares posibles a usar el set_include_path, para que sin tener que cambiar todos los requires, el cambio llegue a todos los posibles lugares donde se utilizan rutas relativas.
He estado intentando localizar si hay algún tipo de consenso como en PSR, pero no he encontrado nada al respecto y por eso lo planteo de esta forma.