/** * Cambia los extends de las clases que extienden de las componentes de $de * a extends de las componentes de $a. * Combinaciones válidas: * $de = toba | $a = proyecto * $de = toba | $a = personalizacion * $de = proyecto | $a = personalizacion * @param toba_modelo_proyecto $proyecto * @param string $de valores posibles: toba | proyecto * @param string $a valores posibles: proyecto | personalizacion */ static function revincular_componentes(toba_modelo_proyecto $proyecto, $de = 'toba', $a = 'proyecto') { if (!self::chequear_combinaciones($de, $a)) { throw new toba_error("No se puede revincular de {$de} a {$a}"); } if ($de == 'toba' && $a == 'personalizacion') { self::revincular_componentes($proyecto, $de, 'proyecto'); self::revincular_componentes($proyecto, 'proyecto', $a); return; } $id_proyecto = $proyecto->get_id(); $clases_de = array(); $clases_a = array(); self::get_clases($proyecto, $de, $a, $clases_de, $clases_a); $editor = new toba_editor_archivos(); foreach ($clases_de as $key => $clase) { $clase_nueva = $clases_a[$key]; $texto_buscado = "|(?:[\t\r\n ]+extends[\t\r\n ]+{$clase})|i"; $texto_reemplazo = " extends {$clase_nueva}"; $editor->agregar_sustitucion($texto_buscado, $texto_reemplazo); } $path = $proyecto->get_dir() . '/php'; $dirs_excluidos = array($path . '/extension_toba/componentes'); $archivos = toba_manejador_archivos::get_archivos_directorio($path, '|.php|', true, $dirs_excluidos); $editor->procesar_archivos($archivos); }
function proyecto__cambio_memoria_por_hilo() { $editor = new toba_editor_archivos(); $editor->agregar_sustitucion('/toba::hilo/', 'toba::memoria'); $archivos = toba_manejador_archivos::get_archivos_directorio($this->elemento->get_dir(), '/.php$/', true); $editor->procesar_archivos($archivos); }
/** * Se deja de lado el archivo PROYECTO y VERSION y se incluyen en el archivo proyecto.ini en la raiz junto a otras configuraciones del instalador */ function proyecto__configuraciones_ini() { $origen_ini = toba_dir() . '/php/modelo/template_proyecto/proyecto.ini'; $destino_ini = $this->elemento->get_dir() . '/proyecto.ini'; $archivo_proyecto = $this->elemento->get_dir() . '/PROYECTO'; $archivo_version = $this->elemento->get_dir() . '/VERSION'; $version = '1.0.0'; if (file_exists($archivo_proyecto)) { unlink($archivo_proyecto); } if (file_exists($archivo_version)) { $version = trim(file_get_contents($archivo_version)); unlink($archivo_version); } if (!file_exists($destino_ini)) { if (!copy($origen_ini, $destino_ini)) { throw new toba_error("Imposible copiar de {$origen_ini} a {$destino_ini}"); } $editor = new toba_editor_archivos(); $editor->agregar_sustitucion('|__proyecto__|', $this->elemento->get_id()); $editor->agregar_sustitucion('|__version__|', $version); $editor->procesar_archivos(array($destino_ini)); } }
function instancia__migracion_variables_entorno() { //Busco los archivos ya sean PHP o de lotes $dir_base = toba_dir() . '/bin'; $archivos_php = toba_manejador_archivos::get_archivos_directorio($dir_base, '|.php|', true); $archivos_sh = toba_manejador_archivos::get_archivos_directorio($dir_base, '|.sh|', true); $archivos_bat = toba_manejador_archivos::get_archivos_directorio($dir_base, '|.bat|', true); //Proceso los cambios de asignacion de variables $editor = new toba_editor_archivos(); $editor->agregar_sustitucion('|\\stoba_instancia\\s*=|', ' TOBA_INSTANCIA='); $editor->agregar_sustitucion('|\\stoba_proyecto\\s*=|', ' TOBA_PROYECTO='); $editor->agregar_sustitucion('|\\stoba_dir\\s*=|', ' TOBA_DIR='); $editor->agregar_sustitucion('|\\$toba_dir|', '$TOBA_DIR'); $editor->procesar_archivos($archivos_php); $editor->procesar_archivos($archivos_sh); $editor->procesar_archivos($archivos_bat); //Proceso las lecturas de variables en $_SERVER $editor2 = new toba_editor_archivos(); $editor2->agregar_sustitucion('|$_SERVER[\'toba_proyecto\']|', '$_SERVER[\'TOBA_PROYECTO\']'); $editor2->agregar_sustitucion('|$_SERVER[\'toba_instancia\']|', '$_SERVER[\'TOBA_INSTANCIA\']'); $editor2->procesar_archivos($archivos_php); }
function proyecto__namespace_toba() { $editor = new toba_editor_archivos(); $editor->agregar_sustitucion('/separar_texto_lineas\\(/', 'toba_texto::separar_texto_lineas('); $archivos = toba_manejador_archivos::get_archivos_directorio($this->elemento->get_dir(), '/.php$/', true); $editor->procesar_archivos($archivos); }
/** * El ei_filtro pasa a ser un formulario con un par de campos seteados */ function proyecto__migrar_filtro_viejo() { //-- Todos los actuales filtros, se les pone un par de flags en el form. $sql = "\n\t\t\tUPDATE apex_objeto_ut_formulario SET no_imprimir_efs_sin_estado = 1, resaltar_efs_con_estado = 1\n\t\t\tFROM apex_objeto\n\t\t\tWHERE \n\t\t\t\t\tapex_objeto_ut_formulario.objeto_ut_formulario\t\t\t= apex_objeto.objeto\n\t\t\t\tAND apex_objeto_ut_formulario.objeto_ut_formulario_proyecto = apex_objeto.proyecto\n\t\t\t\tAND apex_objeto.clase='toba_ei_filtro' \n\t\t\t\tAND apex_objeto_ut_formulario.objeto_ut_formulario_proyecto = '{$this->elemento->get_id()}'\n\t\t"; $cant = $this->elemento->get_db()->ejecutar($sql); //-- Se cambia la clase $sql = "UPDATE apex_objeto SET clase='toba_ei_formulario' WHERE clase='toba_ei_filtro' AND proyecto = '{$this->elemento->get_id()}'"; $cant += $this->elemento->get_db()->ejecutar($sql); //-- Se cambian las extensiones de código y los hint de tipos $editor = new toba_editor_archivos(); $editor->agregar_sustitucion("|toba_ei_filtro|", "toba_ei_formulario"); $archivos = toba_manejador_archivos::get_archivos_directorio($this->elemento->get_dir(), '|.php|', true); $editor->procesar_archivos($archivos); return $cant; }