Location: PHPKode > projects > Readenglish > readenglish/english_readenglish_con.php
<?php
include_once "lib/errores_lib.php";
include_once "lib/texto_palabras_lib.php";
include_once "basedatos_con.php";
include_once "english_readenglish_words_con.php";

function english_readenglish_revisar_inicio (& $inicio)
{
    $ret = true;
    $inicio = 0;
    $separador = "";
    $palabra = "";
    $palabra_encontrada = "";
    $_SESSION ["array_no_encontrados"] = array ();
    $tam = strlen ($_REQUEST["texto"]);
    $ret = basedatos_abrir ();
    if ($ret) {
        while (true) {
            if ($inicio >= $tam) {
                break;
            }
            if (! $ret) {
                break;
            }
            $separador = "";
            $palabra = "";
            $ret = texto_palabras ($_REQUEST["texto"], $inicio, $separador, $palabra);
            if ($ret && $palabra != "") {
                $ret = english_readenglish_buscar ($palabra, $palabra_encontrada);
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_singular ($palabra, $palabra_encontrada);
                }
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_participio ($palabra, $palabra_encontrada);
                }
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_gerundio ($palabra, $palabra_encontrada);
                }
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_ly ($palabra, $palabra_encontrada);
                }
                if ($ret && $palabra_encontrada != "") {
                    $ret = english_readenglish_modificar_palabra ($separador, $palabra, $palabra_encontrada);
                }
                if ($ret) {
                    if ($palabra_encontrada == "") {
                        $ret = english_readenglish_no_encontrado ($palabra, false);
                        break;
                    }
                }
            }
        }
        basedatos_cerrar ();
    }
    return $ret;
}

function english_readenglish_revisar_fin ($inicio)
{
    $ret = true;
    $separador = "";
    $palabra = "";
    $palabra_encontrada = "";
    $tam = strlen ($_REQUEST["texto"]);
    $ret = basedatos_abrir ();
    if ($ret) {
        $ret = english_readenglish_words_linea_listado ($_SESSION ["array_no_encontrados"][0]);
    }
    if ($ret) {
        while (true) {
            if ($inicio >= $tam) {
                break;
            }
            if (! $ret) {
                break;
            }
            $separador = "";
            $palabra = "";
            $ret = texto_palabras ($_REQUEST["texto"], $inicio, $separador, $palabra);
            if ($ret && $palabra != "") {
                $ret = english_readenglish_buscar ($palabra, $palabra_encontrada);
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_singular ($palabra, $palabra_encontrada);
                }
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_participio ($palabra, $palabra_encontrada);
                }
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_gerundio ($palabra, $palabra_encontrada);
                }
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_ly ($palabra, $palabra_encontrada);
                }
                if ($ret && $palabra_encontrada != "") {
                    $ret = english_readenglish_modificar_palabra ($separador, $palabra, $palabra_encontrada);
                }
                if ($ret) {
                    if ($palabra_encontrada == "") {
                        $ret = english_readenglish_no_encontrado ($palabra, true);
                    }
                }
            }
        }
        basedatos_cerrar ();
    }
    return $ret;
}

function english_readenglish_traducir (& $texto_resultado)
{
    $ret = true;
    $inicio = 0;
    $separador = "";
    $palabra = "";
    $palabra_encontrada = "";
    $_SESSION ["array_no_encontrados"] = array ();
    $tam = strlen ($_REQUEST["texto"]);
    $ret = basedatos_abrir ();
    if ($ret) {
        while (true) {
            if ($inicio >= $tam) {
                break;
            }
            if (! $ret) {
                break;
            }
            $ret = texto_palabras ($_REQUEST["texto"], $inicio, $separador, $palabra);
            if ($ret && $palabra != "") {
                $ret = english_readenglish_buscar ($palabra, $palabra_encontrada);
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_singular ($palabra, $palabra_encontrada);
                }
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_participio ($palabra, $palabra_encontrada);
                }
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_gerundio ($palabra, $palabra_encontrada);
                }
                if ($ret && $palabra_encontrada == "") {
                    $ret = english_readenglish_mirar_ly ($palabra, $palabra_encontrada);
                }
                if ($ret) {
                    $ret = english_readenglish_modificar_palabra ($separador, $palabra, $palabra_encontrada);
                }
                if ($ret) {
                    if ($palabra_encontrada == "") {
//                        $ret = english_readenglish_no_encontrado ($palabra, false);
                        $palabra_encontrada = $palabra;
                    }
                }
            } else {
                $palabra_encontrada = "";
            }
            if ($ret) {
                $texto_resultado .= $separador . $palabra_encontrada;
            }
        }
        basedatos_cerrar ();
    }
    return $ret;
}

function english_readenglish_palabras_no_encontradas ()
{
    return (count ($_SESSION ["array_no_encontrados"]) != 0);
}

function english_readenglish_mensaje_no_encontradas ()
{
    $resultado = "";
    if (count ($_SESSION ["array_no_encontrados"]) > 0){
        $resultado = "Not found words:";
        foreach ($_SESSION ["array_no_encontrados"] as $palabra) {
            $resultado .= "<BR>" . $palabra;
        }
    }
    return $resultado;
}

function english_readenglish_modificar_palabra ($separador, $palabra, & $palabra_encontrada)
{
    $ret = true;
    $mayuscula_inico = false;
    if (ctype_upper ($palabra[0])){
        $i = 1;
        $tam = strlen ($palabra);
        $mayuscula_inico = true;
        while (true) {
            if ($i >= $tam) {
                break;
            }
            if (ctype_upper ($palabra[$i])){
                $mayuscula_inico = false;
                break;
            }
            $i ++;
        }
    } else if ($separador != "") {
        $separador_fin = rtrim ($separador);
        $palabra = strtolower ($palabra);
        if ($separador_fin > 0 && $separador_fin [strlen($separador_fin)-1] == '.') {
            $palabra [0] = strtoupper ($palabra [0]);
            $mayuscula_inico = true;
        }
    }
    if ($mayuscula_inico) {
        $i = 0;
        $tam = strlen ($palabra_encontrada);
        $caso_especial = false;
        while (true) {
            if ($i >= $tam) {
                break;
            }
            if ( $palabra_encontrada [$i]>= 'a' && $palabra_encontrada [$i]<='z') {
                if (! $caso_especial
                && ($palabra_encontrada [$i]== 'a'
                  || $palabra_encontrada [$i]== 'e'
                  || $palabra_encontrada [$i]== 'i'
                  || $palabra_encontrada [$i]== 'o'
                  || $palabra_encontrada [$i]== 'u')) {
                    $palabra_encontrada = substr ($palabra_encontrada, 0, $i) . '.'
                    . strtoupper ($palabra_encontrada [$i])
                    . substr ($palabra_encontrada, $i+1);
                } else {
                    $palabra_encontrada [$i]= strtoupper ($palabra_encontrada [$i]);
                }
                break;
            } else if ($palabra_encontrada [$i]>= 'A' && $palabra_encontrada [$i]<='Z') {
                break;
            } else if ($palabra_encontrada [$i]== '.') {
                break;
            } else if ($palabra_encontrada [$i]== ':') {
                $caso_especial = true;
            }
            $i ++;
        }
    }
    return $ret;
}

function english_readenglish_buscar ($palabra, & $palabra_encontrada)
{
    $ret = true;
    $palabra_buscar = strtolower($palabra);
    $comando = "select ref_readenglish from englishes_readenglishes where "
    . "ref_english='" . mysql_real_escape_string ($palabra_buscar) . "'";
    $resultado = mysql_query($comando);
    if ($resultado === false) {
        errores_mensaje ("Error in the database query. ");
        errores_log("Error in the database query. ". mysql_error ());
        $ret = false;
    }
    if ($ret) {
        if (mysql_num_rows ($resultado)==0) {
            $palabra_encontrada = "";
        } else {
            $array_fila =  mysql_fetch_assoc ($resultado );
            if ($array_fila === false) {
                errores_mensaje ("Error accesing to the dictionary. ");
                errores_log ("Error accesing to the dictionary. " . mysql_error ());
            } else {
                $palabra_encontrada = $array_fila ["ref_readenglish"];
            }
        }
        mysql_free_result($resultado);
    }
    return $ret;
}

function english_readenglish_no_encontrado ($palabra, $listar)
{
    $ret = true;
    $no_encontrado = true;
    $palabra_minusculas = strtolower ($palabra);
    $inicio_minusculas = ctype_lower($palabra);
    if (isset($_SESSION ["array_no_encontrados"])) {
        foreach ($_SESSION ["array_no_encontrados"] as $palabra_encontrada) {
            if (strtolower ($palabra_encontrada) == $palabra_minusculas) {
                if ($inicio_minusculas && ctype_upper($palabra_encontrada[0])) {
                    $palabra_encontrada = $palabra;
                }
                $no_encontrado = false;
                break;
            }
        }
        if ($no_encontrado) {
            $_SESSION ["array_no_encontrados"] [] = $palabra;
            if ($listar) {
                $ret = english_readenglish_words_linea_listado ($palabra);
            }
        }
    }
    return $ret;
}

function english_readenglish_mirar_singular ($palabra, & $palabra_encontrada)
{
    $ret = true;
    $tam = strlen ($palabra);
    $nueva_palabra = "";
    $quitado = "";
    if ($tam > 0 && $palabra [$tam-1] == 's') {
        if ($tam > 2 && $palabra [$tam-2] == 'e'
        && $palabra [$tam-3] == 'v') {
            $quitado = "v&middot;s";
            $nueva_palabra = substr ($palabra, 0, $tam-3). "fe";
        } else if ($tam > 3
        && $palabra[$tam-2] == 'e'
        && $palabra[$tam-3] == 'i'
        && $palabra[$tam-4] != 'a'
        && $palabra[$tam-4] != 'e'
        && $palabra[$tam-4] != 'i'
        && $palabra[$tam-4] != 'o'
        && $palabra[$tam-4] != 'u') {
            $quitado = "i&middot;s";
            $nueva_palabra = substr ($palabra, 0, $tam-3)."y";
        } else if ($tam > 2 && $palabra [$tam-2] == 'e'
        && ($palabra [$tam-3] == 's'
        || $palabra [$tam-3] == 'h'
        || $palabra [$tam-3] == 'x'
        || $palabra [$tam-3] == 'z'
        || $palabra [$tam-3] == 'o')) {
            $quitado = "&middot;s";
            $nueva_palabra = substr ($palabra, 0, $tam-2);
        } else {
            $quitado = "s";
            $nueva_palabra = substr ($palabra, 0, $tam-1);
        }
        $palabra_encontrada = "";
        if ($tam > 1 && $palabra [$tam-2] == 'e') {
            $otra_opcion = substr ($palabra, 0, $tam-1);
            $ret = english_readenglish_buscar ($otra_opcion, $palabra_encontrada);
        }
        if ($ret && $palabra_encontrada == "") {
            $ret = english_readenglish_buscar ($nueva_palabra, $palabra_encontrada);
        }
        if ($ret && $palabra_encontrada != "") {
            $tam = strlen ($palabra_encontrada);
            if ($palabra_encontrada[$tam-1]== '\''){
                $palabra_encontrada = substr ($palabra_encontrada, 0, $tam-1);
                $tam --;
            }
            if ($quitado == "v&middot;s") {
                $tam = strlen ($palabra_encontrada);
                $palabra_encontrada = substr ($palabra_encontrada, 0, $tam-2). $quitado;
            } else if ($quitado == "i&middot;s") {
                $tam = strlen ($palabra_encontrada);
                $palabra_encontrada = substr ($palabra_encontrada, 0, $tam-1). $quitado;
            } else {
                $palabra_encontrada = $palabra_encontrada . $quitado;
            }
        }
    }
    return $ret;
}

function english_readenglish_mirar_ly ($palabra, & $palabra_encontrada)
{
    $ret = true;
    $tam = strlen ($palabra);
    $nueva_palabra = "";
    if ($tam > 1 && $palabra [$tam-1] == 'y' && $palabra [$tam-2] == 'l') {
        $palabra_encontrada = "";
        $nueva_palabra = substr ($palabra, 0, $tam-2);
        $ret = english_readenglish_buscar ($nueva_palabra, $palabra_encontrada);
        if ($ret) {
            if ($palabra_encontrada != "") {
                $tam = strlen ($palabra_encontrada);
                if ($palabra_encontrada[$tam-1]== '\''){
                    $palabra_encontrada = substr ($palabra_encontrada, 0, $tam-1);
                }
                $palabra_encontrada = $palabra_encontrada . "ly";
            } else {
                $ret = english_readenglish_mirar_participio ($nueva_palabra, $palabra_encontrada);
                if ($ret && $palabra_encontrada != "") {
                    $tam = strlen ($palabra_encontrada);
                    if ($palabra_encontrada[$tam-1]== '\''){
                        $palabra_encontrada = substr ($palabra_encontrada, 0, $tam-1);
                    }
                    $palabra_encontrada = $palabra_encontrada . "ly";
                } else {
                    if ($tam > 2 && $palabra [$tam-1] == 'y' && $palabra [$tam-2] == 'l' && $palabra [$tam-3] == 'i') {
                        $nueva_palabra = substr ($palabra, 0, $tam-3). "y";
                        $ret = english_readenglish_buscar ($nueva_palabra, $palabra_encontrada);
                        if ($ret) {
                            if ($palabra_encontrada != "") {
                                $tam = strlen ($palabra_encontrada);
                                if ($palabra_encontrada[$tam-1]== '\''){
                                    $palabra_encontrada = substr ($palabra_encontrada, 0, $tam-1);
                                    $tam --;
                                }
                                $palabra_encontrada = substr ($palabra_encontrada, 0, $tam-1) . "ily";
                            }
                        }
                    }
                }
            }
        }
    }
    return $ret;
}

function english_readenglish_mirar_participio ($palabra, & $palabra_encontrada)
{
    $ret = true;
    $tam = strlen ($palabra);
    $nueva_palabra = "";
    $duplicar = false;
    if ($tam > 1 && $palabra [$tam-1] == 'd' && $palabra [$tam-2] == 'e') {
        if ($tam > 2 && $palabra [$tam-3] == 'i') {
            $nueva_palabra = substr ($palabra, 0, $tam-3). "y";
        } else {
            if ($tam > 3 && $palabra [$tam-3] == $palabra [$tam-4]) {
                $duplicar = true;
                $nueva_palabra = substr ($palabra, 0, $tam-3);
            } else {
                $nueva_palabra = substr ($palabra, 0, $tam-2);
            }
        }
        $palabra_encontrada = "";
        $otra_opcion = substr ($palabra, 0, $tam-1);
        $ret = english_readenglish_buscar ($otra_opcion, $palabra_encontrada);
        if ($ret) {
            if ($palabra_encontrada == "") {
                $ret = english_readenglish_buscar ($nueva_palabra, $palabra_encontrada);
            }
            if ($ret && $palabra_encontrada != "") {
                $tam = strlen ($palabra_encontrada);
                if ($palabra_encontrada[$tam-1]== '\''){
                    $palabra_encontrada = substr ($palabra_encontrada, 0, $tam-1);
                    $tam --;
                }
                if ($duplicar) {
                   $palabra_encontrada .= $palabra_encontrada[$tam-1];
                   $tam++;
                }
                if ($palabra_encontrada[$tam-1] == 't' || $palabra_encontrada[$tam-1] == 'd') {
                    $palabra_encontrada = $palabra_encontrada."Ed";
                } else {
                    $palabra_encontrada = $palabra_encontrada."&middot;d";
                }
            }
        }
    }
    return $ret;
}

function english_readenglish_mirar_gerundio ($palabra, & $palabra_encontrada)
{
    $ret = true;
    $tam = strlen ($palabra);
    $nueva_palabra = "";
    if ($tam > 2
    && $palabra [$tam-1] == 'g'
    && $palabra [$tam-2] == 'n'
    && $palabra [$tam-3] == 'i') {
        $nueva_palabra = substr ($palabra, 0, $tam-3);
        $palabra_encontrada = "";
        $ret = english_readenglish_buscar ($nueva_palabra, $palabra_encontrada);
        if ($ret) {
            if ($palabra_encontrada != "") {
                $tam = strlen ($palabra_encontrada);
                if ($palabra_encontrada[$tam-1]== '\''){
                    $palabra_encontrada = substr ($palabra_encontrada, 0, $tam-1);
                }
                $palabra_encontrada = $palabra_encontrada . "ing";
            } else {
                $nueva_palabra .= 'e';
                $ret = english_readenglish_buscar ($nueva_palabra, $palabra_encontrada);
                if ($ret && $palabra_encontrada != "") {
                    $tam = strlen ($palabra_encontrada);
                    if ($palabra_encontrada[$tam-1]== '\''){
                        $palabra_encontrada = substr ($palabra_encontrada, 0, $tam-1);
                        $tam --;
                    }
                    $palabra_encontrada = substr ($palabra_encontrada, 0, $tam-1) . "ing";
                }
            }
        }
    }
    return $ret;
}

?>
Return current item: Readenglish