/**
  * Returns a new Libro_versionQuery object.
  *
  * @param     string $modelAlias The alias of a model in the query
  * @param     Criteria $criteria Optional Criteria to build the query from
  *
  * @return    Libro_versionQuery
  */
 public static function create($modelAlias = null, $criteria = null)
 {
     if ($criteria instanceof Libro_versionQuery) {
         return $criteria;
     }
     $query = new Libro_versionQuery();
     if (null !== $modelAlias) {
         $query->setModelAlias($modelAlias);
     }
     if ($criteria instanceof Criteria) {
         $query->mergeWith($criteria);
     }
     return $query;
 }
<?php

//die;
error_reporting(E_ALL);
ini_set("display_errors", 1);
include_once "../../data/config.php";
$datos = json_decode($_POST['json']);
switch ($datos->acc) {
    case "filtrar":
        $versiones = Libro_versionQuery::create()->filterByIdlibro($datos->idlibro)->orderByIdlibro()->orderById()->find();
        $html = "";
        foreach ($versiones as $reg) {
            //$listaLibros .= "<li>".$reg->getNombre()."</li>"; libro_Idlibro_Id
            $html .= "<tr>" . "<td><input type = 'checkbox' value = '" . $reg->getIdlibro() . "_" . $reg->getId() . "' /></td>" . "<td>" . $reg->getId() . "</td>" . "<td>" . $reg->getFecha("d/m/y") . "</td>" . "<td>" . $reg->getHora() . "</td>" . "<td>" . $reg->getUsuario()->getNombre() . "</td>" . "</tr>";
        }
        echo json_encode(array('error' => 0, 'html' => $html));
        break;
    case "comparar":
        //$resultado = shell_exec("cd /var/www/proylectura/libros_version;diff -y  -T --suppress-common-lines -a --strip-trailing-cr libro_23_3.txt libro_23_5.txt;");
        $resultado = shell_exec("cd " . SITE_PATH . "/libros_version;diff -y -t --suppress-common-lines libro_" . $datos->versiones[0] . ".txt libro_" . $datos->versiones[1] . ".txt;");
        //echo $resultado;
        $resultado = htmlentities($resultado);
        /*$pos = 0;
          $exp_regular [$pos] = '/\\n/';
          $cadena_nueva[$pos++] = '<br/>';
          $exp_regular [$pos] = '/\\t/';*/
        //$cadena_nueva[$pos++] = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
        //$cadena_nueva[$pos++] = '<span style="width: 500px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>';
        //$resultado = preg_replace($exp_regular, $cadena_nueva, $resultado);
        if ($resultado != "") {
            $arrTmp = explode("_", $datos->versiones[0]);
 /**
  * If this collection has already been initialized with
  * an identical criteria, it returns the collection.
  * Otherwise if this Usuario is new, it will return
  * an empty collection; or if this Usuario has previously
  * been saved, it will retrieve related Libro_versions from storage.
  *
  * This method is protected by default in order to keep the public
  * api reasonable.  You can provide public methods for those you
  * actually need in Usuario.
  *
  * @param      Criteria $criteria optional Criteria object to narrow the query
  * @param      PropelPDO $con optional connection object
  * @param      string $join_behavior optional join type to use (defaults to Criteria::LEFT_JOIN)
  * @return     PropelCollection|array Libro_version[] List of Libro_version objects
  */
 public function getLibro_versionsJoinLibro($criteria = null, $con = null, $join_behavior = Criteria::LEFT_JOIN)
 {
     $query = Libro_versionQuery::create(null, $criteria);
     $query->joinWith('Libro', $join_behavior);
     return $this->getLibro_versions($query, $con);
 }
 /**
  * Removes this object from datastore and sets delete attribute.
  *
  * @param      PropelPDO $con
  * @return     void
  * @throws     PropelException
  * @see        BaseObject::setDeleted()
  * @see        BaseObject::isDeleted()
  */
 public function delete(PropelPDO $con = null)
 {
     if ($this->isDeleted()) {
         throw new PropelException("This object has already been deleted.");
     }
     if ($con === null) {
         $con = Propel::getConnection(Libro_versionPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
     }
     $con->beginTransaction();
     try {
         $deleteQuery = Libro_versionQuery::create()->filterByPrimaryKey($this->getPrimaryKey());
         $ret = $this->preDelete($con);
         if ($ret) {
             $deleteQuery->delete($con);
             $this->postDelete($con);
             $con->commit();
             $this->setDeleted(true);
         } else {
             $con->commit();
         }
     } catch (Exception $e) {
         $con->rollBack();
         throw $e;
     }
 }
<?php 
//die;
error_reporting(E_ALL);
ini_set("display_errors", 1);
include_once "../../data/config.php";
//->filterByIdusuario($_SESSION['userid'])
$versiones = Libro_versionQuery::create()->orderByIdlibro()->orderById()->find();
$options = "<option value = ''>Seleccione un libro</option> ";
$arr = array();
foreach ($versiones as $reg) {
    if (!array_key_exists($reg->getIdlibro(), $arr)) {
        $arr[$reg->getIdlibro()] = "";
        $options .= "<option value = '" . $reg->getIdlibro() . "'>" . $reg->getLibro()->getNombre() . "</option> ";
    }
}
//$versiones = Libro_versionQuery::create()->findOneById(1);
//$versiones->getLibro()->getNombre();
?>

<!DOCTYPE HTML>
<html>
    <head>
        <title>Proyecto lectura</title>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <!-- Tell the browser to be responsive to screen width -->
        <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
        
        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
        <!--[if lt IE 9]>