Secci贸n de enlaces

Algo que echaba en falta en el blog era una sección de enlaces, donde poder mostrar enlaces a páginas que me parecen interesantes y que sigo con asiduidad. Al final me decidí por mostrar estos enlaces en la barra lateral. Esto habría sido muy sencillo realizarlo de manera estática añadiendo los enlaces por código, pero la idea era poder modificarlo vía web. Estos son los pasos que he realizado:

1. Añadir una entrada en el fichero de idioma (es.php):

$lang['links'] = "enlaces";

2. Crear una tabla en la base de datos donde se almacenarán los enlaces, y ya de paso, añadir la creación de la tabla a la instalación para una futura migración. Añadimos lo siguiente al método eb_install() en _lib/admin.php:

mysql_query("DROP TABLE links;");
$sql.="CREATE TABLE links (".
    "link_id int NOT NULL AUTO_INCREMENT,".
    "link_name varchar(255) NOT NULL,".
    "link_url varchar(255) NOT NULL,".
    "PRIMARY KEY (link_id)".
    ");";

3. Creamos la página desde donde se podrán editar los enlaces. Como quería algo sencillo, la edición de los enlaces se realiza en un textarea. Cada enlace está formado por dos líneas. La primera es el nombre del enlace, mientras que la segunda es la dirección del enlace. La página de edición es links.php y su contenido es el siguiente:

<?php

require_once '_lib/global.php';
global $config;
eb_pre();

if(empty($_SESSION['user_id-'.$_SERVER['SERVER_NAME']])){
    header("Location: index.php");
}
elseif( !eb_checkadmin( $_SESSION['user_id-' . $_SERVER['SERVER_NAME']] ) ) {
    header("Location: index.php");
}
else {
    eb_head('');

    $textAreaText = "";

    if(!empty($_POST['editLinks'])){
        $textAreaText = $_POST['linksText'];
        if(!empty($textAreaText)){
            $links = explode(" ", $textAreaText);
        }

        $sqlQuery = "DELETE FROM links";
        mysql_query($sqlQuery);

        $count = 0;
        for($i = 0; $i < count($links); $i+=2){
            $sqlQuery = "INSERT INTO links SET link_name = '".$links[$i]."'"
            .", link_url = '".$links[$i+1]."'";
            mysql_query($sqlQuery);
            $count++;
        }
        echo "<p>Se han guardado ".$count." enlaces.</p>";
        $textAreaText = str_replace(" ", "", $textAreaText);
    }
    else{
        $query = mysql_query("SELECT link_name, link_url FROM links");

        while( $row = mysql_fetch_array( $query ) ) {
            if(!empty($textAreaText)){
                $textAreaText.=' ';
            }
            $textAreaText.=$row['link_name'].' '.$row['link_url'];
        }

        $textAreaText = str_replace(" ", "", $textAreaText);
    }

    $saveText = ucwords($lang['save']);
?>

<h3><?php echo ucwords($lang['links'])?></h3>
<form name="linksForm" action="links.php" method="post">
    <textarea name="linksText" id="linksText" rows="10"></textarea>
    <p>
        <input type="submit" name="submit" value="<?php echo $saveText; ?>" />
        <input type="hidden" name="editLinks" value="TRUE" />
    </p>
</form>

<script type="text/javascript">
<!--
var textArea = document.getElementById( "linksText" );
textArea.value = "<?php echo $textAreaText ?>";
//-->
</script>

<?php
    eb_foot();
}
?>

4. Añadir un enlace en la página de administración para acceder a la página de edición de enlaces. Yo lo he puesto tras el enlace a los miembros. En la función eb_admin() añadimos:

echo " <li><a href="links.php">" . ucwords( $lang['links'] ) . "</a></li>";

5. Ahora solo nos falta mostrar los enlaces en la columna lateral. Para ello debemos modificar el método eb_foot() en _lib/global.php, añadiendo lo siguiente donde queramos que se muestren. Yo me he decidido por ponerlos entre las etiquetas y el listado de artículos:

echo showLinks();

La definición del método es esta:

function showLinks(){
    global $lang;

    $count = mysql_num_rows(mysql_query("SELECT link_id FROM links"));

    if($count == 0){
        return "";
    }    

    $output = '<div class="box"><strong>' . ucwords( $lang['links'] ) . '</strong><ul>';

    $query = mysql_query("SELECT link_name, link_url FROM links");

    while( $row = mysql_fetch_array( $query ) ) {
        $output.=" ".'<li><a href="'.$row['link_url'].'" target="_blank">'
        .$row['link_name'].'</a></li>';
    }

    $output.='</ul></div>';

    return $output;
}

Y con esto ya tenemos nuestra sección de enlaces. Ahora solo falta llenarla de enlaces interesantes! 馃榾