Compartir

Compartir en GNU Social Compartir en Diaspora*

Mi GNU Social en el blog

Actualización
Hace algún tiempo metí en mi blog un bloque para que salieran las publicaciones que voy haciendo en mi cuenta de GNUSocial, de forma similar a lo que hace otra gente con su cuenta del pajarito privativo.
Recuerdo que en algún momento lo desactivé, imagino que por errores con el certificado del servidor de GNUSocial que utilizo y hoy me he acordado, he vuelto a activar el bloque y me he acordado que no había publicado el código que utilicé para crear el bloque en drupal.
Gracias a colegota ya me he enterado de donde saqué el código utilizado para el bloque. Se trata de GNUSocial-plugin (desarrollado por Escobrice con la colaboración estelar de Colegota) y tal como prometí lo pongo. ¡Gracias colegota!
El problema es que ahora ha pasado tanto tiempo que no recuerdo de donde saqué el código original, ya que yo nunca creo nada nuevo sino que me limito a copiar y como mucho adaptar, lo que otras personas sí saben hacer.

Pidiendo de antemano perdón al autor original por no citarle (prometo rectificar esta publicación en cuanto descubra de donde salió todo) (ahora ya sí, citado y rectificado) voy a dejar aquí los pasos que seguí:

  • Desde las páginas de administración del blog (recordemos que está montado sobre drupal), se entra a los bloques y se añade uno
  • En la descripción del bloque se pone GNUSocial (o lo que más rabia nos de). Esto solo se muestra en la administración de bloques
  • En el título del bloque se pone GNU Social (o lo que nos apetezca).
  • En formato de entrada elegimos PHP Code (sí, habrá que activarlo previamente, pero eso es otra historia)
  • En el cuerpo del bloque colocampos lo siguiente (poniendo los valores correctos en $server, $username, $nombre y $cuantos):
    <?php
     header('Content-Type: text/html; charset=UTF-8');
     #-- puede que haya que habilitar en php.ini la linea ;extension=php_openssl.dll (simplemente quitar el ;)
     #-- Configura con tus valores
     $timeline="user"; //user: usuario ; friends: /all
     $server =  "EL-SERVIDOR-DE-GNUSocial-SIN-PONER-HTTPS"; // en mi caso "quitter.es";
     $username= "TU-CUENTA-DE-GNUSocial"; // en mi caso "gaile"; 
     $nombre= "TU-NOMBRE-EN-GNUSocial"; // en mi caso "Gaile Oiratrebil";
     $protocol = "https://"; // http:// o https://
     $cuantos = 5; // cuantos mensajes mostrar
     ini_set('user_agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0');
     #-- En la siguiente linea simplemente metemos el timeline del usuario
     # $xml = simplexml_load_file($protocol.$server."/api/statuses/".$timeline."_timeline/".$username.".xml");
    
     $url = $protocol.$server."/api/statuses/".$timeline."_timeline/".$username.".xml";
     $response = drupal_http_request($url);
     $xml = simplexml_load_string($response->data);
    
    #-- CSS para editar al gusto y adaptar a cada blog
    echo '<style type="text/css" media="screen">
    #unmensaje
    {
    word-wrap: break-word;
    width: 90%;
    margin: 5px auto;
    background-color: #fff;
    color: #333;
    border: 1px solid gray;
    }
    #cabecera{
    padding: .5em;
    background-color: #ddd;
    border-bottom: 1px solid gray;
    }
    #cuerpo{
    padding: .5em;
    background-color: #0;
    }
    #pie
    {
    clear: both;
    margin: 0;
    padding: .5em;
    }
    #unmensaje a {
    color: #666	
    }
    #unmensaje a:link {
        text-decoration: none;
    }
    #unmensaje a:visited {
        text-decoration: none;
    }
    #unmensaje a:hover {
        text-decoration: underline;
    }
    #unmensaje a:active {
        text-decoration: underline;
    }
    </style>';
    #-- código del script
    #-- a partir de aquí no cambies nada si no sabes lo que haces :)
     $cont=0;
     echo '<div id="mensajes">';
     foreach($xml->status as $status)
     {
      $user=$status->user;
      $namespaces = $user->getNamespaces(true);
      $statusnet = $user->children($namespaces["statusnet"]);
      $perfil=$statusnet->profile_url;
        
      $retweet=$status->retweeted_status;
      if ($retweet != "") {
        $status=$status->retweeted_status;
        $RTtext="Repetido por ";
      }
      else {
        $RTtext="";
      }
       
      $usercab=$status->user;
      $namespacescab = $usercab->getNamespaces(true);
      $textocab = $usercab->children($namespacescab["statusnet"]);
      $perfilcab=$textocab->profile_url;
      
      $imagen=$usercab->profile_image_url;
      
      $respuestaa=$status->in_reply_to_screen_name;
      if ($respuestaa != "") {
        $textocabecera=$usercab->screen_name.' > '.$respuestaa;
      }
      else {
        $textocabecera=$usercab->screen_name;
      }
        
      $fecha=$status->created_at;
      $fecha=convertirfecha($fecha);
      $namespaces = $status->getNamespaces(true);
      $texto = $status->children($namespaces["statusnet"]);
    
      $asustituir = array($nombre . ' started following', $username . ' favorited something by', $nombre . ' joined the group');
      $sustituirpor   = array('He empezado a seguir a ', 'He marcado como favorito la publicación de', 'Comienzo a seguir al grupo');
      $html = str_replace($asustituir, $sustituirpor, $texto->html);
     
      echo '<div id="unmensaje">';
      echo '<div id="cabecera"><img src="'.$imagen.'" Align=ABSMIDDLE>'.'   '.
      '<strong><a target="_blank" href="'.$perfilcab.'">'.$textocabecera.'</a></strong><br \></div>';
      echo '<div id="cuerpo">'.$html.'</div>';
      echo '<div id="pie"> <br /><a target="_blank" href="'.$protocol.$server.'/notice/'.$status->id.'">'.$fecha.'</a>
      <strong>'.$RTtext.'<a target="_blank" href="'.$perfil.'">'.$user->screen_name.'</a></strong>
      </div>';
      echo '</div>';
      if (++$cont>=$cuantos) {
       break;
       }
     }
     echo '</div>';
     function convertirfecha($fecha)
     {
       $f=strtotime($fecha);
       $f=date('d/m/Y H:i',$f);
    	return $f;
     }
    ?> 
    
  • Marcamos las opciones de visibilidad que queramos y lo guardamos
  • A continuación lo seleccionamos de la lista de bloques y lo arrastramos hasta el lugar donde queremos que salga (Lateral izquierdo, derecho, ...) y guardamos

Yo además le he metido una infame modificación para cambiar algunas de las notificaciones que muestra (cuando te unes a un grupo o cuando marcas una publicación como favorita) para que el mensaje me guste más (principalmente que sea en castellano). Para ello he sustituido (practicamente al final del código) la línea:

  $html = $texto->html;

por:

  $asustituir = array($nombre . ' started following', $username . ' favorited something by', $nombre . ' joined the group');
  $sustituirpor   = array('He empezado a seguir a ', 'He marcado como favorito la publicación de', 'Comienzo a seguir al grupo');
  $html = str_replace($asustituir, $sustituirpor, $texto->html);

Comentarios

Modulo Drupal

No consigo hacerlo funcionar... me muestra

data); #-- CSS para editar al gusto...

Como si hubiera un error o algo que no capturara.

A ver si sabes como poder arreglarlo o algo k se me pueda haber pasado.

Un saludo.

Si puedes pon el código de tu

Si puedes pon el código de tu bloque en algún pastebin y me pasas el enlace.

Modulo Drupal

Buenas! No consigo hacerlo funcionar... me corta el código php en response->data
He comprobado mi usuario y el xml se genera bien pero drupal no consigue leerlo

A ver si me puedes echar un cable.

Un saludo.

Lo primero disculpa porque ha

Lo primero disculpa porque ha fallado el filtro de spam y tu comentario ha salido como falso positivo :(

Acabo de hacer una prueba con tu usuario de gnusocial y a mí me carga bien. Puedes verlo en http://zenon.en-getafe.org/licencia donde en lugar de sacar los mensajes de mi cuenta saca los tuyos.

El código que he puesto en el bloque es el mismo de arriba pero sustituyendo EL-SERVIDOR-DE-GNUSocial-SIN-PONER-HTTPS por gnusocial.net, TU-CUENTA-DE-GNUSocial por ondanonina y TU-NOMBRE-EN-GNUSocial por Ondanonina

Si no te va a lo mejor hay alguna limitación en tu servidor (¿tal vez la memoria disponible en la configuración de php? o algún otro parámetro de php que le impida leer en remoto).

A lo mejor también influye la versión del drupal, yo tengo el blog abandonado en la 6 (no consigo encontrar tiempo para pasar primero a la 7 y luego a la 8). No se si en versiones posteriores habría que adaptar el código.