LesOlivex

Serveis informàtics



Redirigir http a https con htaccess

Category : apache set 22nd, 2016
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.dominio.com/$1 [R,L]

Campos de usuarios en drupal

Category : Drupal, php, Programación mar 3rd, 2015

Drupal

Desde nuestro módulo podemos añadir o modificar los campos de un usuario.


//set up the user fields
$fields = array(
'name' => $data['UID'],
'mail' => ( $GLOBALS['anonymous'] ) ? 'test-'.$data['UID'].'@test.com' : $data['Email'],
'pass' => $password,
'status' => ( $data['Locked'] == 0 ) ? 1 : 0 ,
// 'init' => ( $GLOBALS['anonymous'] ) ? 'test-'.$data['UID'].'@test.com' : $data['Email'],
'language' => ( isset($langs[$data['Lang']]) ) ? $langs[$data['Lang']] : $langs['default'] ,
'roles' => array(
DRUPAL_AUTHENTICATED_RID => 'authenticated user',
),

// User custom fields
'ces_firstname' => array(LANGUAGE_NONE => array(array('value' => $data['Firstname']))),
'ces_surname' => array(LANGUAGE_NONE => array(array('value' => $data['Surname']))),
'ces_address' => array(LANGUAGE_NONE => array(array('value' => $data['Address1']."\n".$data['Address2']))),
'ces_town' => array(LANGUAGE_NONE => array(array('value' => $data['Address3']))),
'ces_postcode' => array(LANGUAGE_NONE => array(array('value' => $data['Postcode']))),
'ces_phonemobile' => array(LANGUAGE_NONE => array(array('value' => $data['PhoneM']))),
'ces_phonework' => array(LANGUAGE_NONE => array(array('value' => $data['PhoneW']))),
'ces_phonehome' => array(LANGUAGE_NONE => array(array('value' => $data['PhoneH']))),
'ces_website' => array(LANGUAGE_NONE => array(array('value' => $data['WebSite']))),

);

$user_drupal = user_save('', $fields);

Añadir protocolo en firefox

Category : Programación, Vim mar 3rd, 2015

Muy útil en la programación, ya que de una lista se presenta de archivos afectados, o de tareas pendientes sobre el código, se puede hacer que desde firefox abra tu editor con el archivo y la linea adecuada. El editor que utilizo es vim y una aplicación realizada en bash que me gestiona las tareas. Dentro de este programa se mira en que formato viene el archivo que se desea editar, si es el de firefox:

mt_editor_dev='/usr/bin/gvim -geometry 500x50 --servername $proyecto --remote-silent '

archivos=$@

if [ `echo "$archivos" | grep 'vim:'` ] ; then

   # También puede venir en formato web vim:/home/eduardo/archivo.php@linea

   local archivo="`echo $archivos | cut -d: -f2`"
   local linea="`echo $archivos | cut -d@ -f2`"
   archivo="`echo $archivo | cut -d@ -f1`"
   archivo=`echo $archivo | sed 's/^\///g' | sed 's/^\///g'`

   cmd="$editor +$linea $archivo"
   eval "$cmd"

fi

Este es una parte del script que utilizo y la que mira si el archivo que queremos editar viene en formato de firefox. Debería ser adaptado a cada caso. Se coloca el script en por ejemplo $HOME/bin/editar dandole permisos de ejecución:

chmod +x $HOME/bin/editar

En firefox añadimos la siguiente entrada tipo logico (si/no) nueva desde about:config:

network.protocol-handler.expose.vim

Y como valor false.

Esto hará que la próxima vez que firefox se encuentre con un enlace como vim://directorio/archivo.php@32 preguntara con que aplicación se quiere lanzar escogiendo $HOME/bin/editar

Tema hijo en wordpress

Category : Programación, Wordpress gen 27th, 2015

Creamos una carpeta en wp-content/themes/tema-hijo Añadimos nuestro functions.php que se sumara al del tema base Añadimos nuestro style.css que cogerá el del tema base:

/*
Theme Name: Tema hijo
Theme URI: -
Description: Tema derivado de Padre
Author: Eduardo Magrané
Author URI: -
Template: tema_padre
Version: 1.0
*/

@import url('../carpeta_padre/style.css');

#css_propio {
   border: 1px solid green;
}

* El Template: define el tema padre y debe ser el nombre del directorio que lo contiene.

Copiamos los archivos que queremos modificar como header.php a nuestro directorio

Recoger los campos personalizados de los posts en wordpress – post meta

Category : Programación, Wordpress gen 27th, 2015

Recoger los datos de los campos personalizados en los posts:

$datos = get_post_meta (get_the_ID(),array(), false);

if ( isset($datos['edad_de_los_hijos']) && ! empty($datos['fecha'][0]) ) {
   echo "<p><span class='info_taxonomia_dades_titol'>Edad de los niños: </span>"
       ."<span class='valor_fecha'>"
       .mysql2date(get_option('date_format'),$datos['fecha'][0], true)
       ."</span>"
       ."</p>";
   }

Recoger la información de los campos personalizados de una taxonomía en wordpress

Category : Programación, Wordpress gen 27th, 2015

Ejemplo sobre una taxonomía denominada where.

$slug_taxonomia_actual = get_query_var('where');
if ( $slug_taxonomia_actual ) {
   $taxonomia_actual = get_term_by('slug', $slug_taxonomia_actual,'where');
   $location = get_field('Location', 'where_'.$taxonomia_actual->term_id);
}

Presentar imagen aleatoria de un post en wordpress

Category : Programación, Wordpress gen 27th, 2015

Creamos shortcode de gallery con una sola imagen aleatoria sobre el post actual en single.php

// Presentar una sola imagen aleatoria del post

 $consulta_img = "SELECT ID FROM wp_posts 
    WHERE post_parent=".get_the_ID()." AND post_type like 'attachment' 
    ORDER BY RAND() LIMIT 1";

 $lista_imagenes = FALSE ;
 $resultado_img = $wpdb->get_results( $consulta_img );
 if ( count($resultado_img) != 0 ) $lista_imagenes = TRUE;

 if ( $lista_imagenes ) {

  $lista_imagenes = "";
  foreach ( $resultado_img as $fila ) { $lista_imagenes .= $fila->ID."," ; }
  $lista_imagenes = rtrim($lista_imagenes,',');

  // Galería de imágenes

  ?>
  <p>
  <div id="galeria_pais">
  <?php echo _do_shortcode('[_gallery columns="1" link="file" include="'.$lista_imagenes.'"]'); ?>
  </div>
  </p>
  <?php
}

Añado guiones bajos para que no lo interprete wordpress.

Depurar en wordpress

Category : Programación, Wordpress gen 27th, 2015

Activar la depuración

Desde wp-config.php:

// DEBUG

//define('WP_DEBUG', fasle);

 // Enable WP_DEBUG mode
define('WP_DEBUG', true);

// Enable Debug logging to the /wp-content/debug.log file
define('WP_DEBUG_LOG', true);

// Disable display of errors and warnings
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);

// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define('SCRIPT_DEBUG', true);

Utilizar el identificativo de tu usuario para algo sin que afecte a otros usuarios.


global $current_user;
if ( $current_user->ID == 12 ) {
   echo "<pre>" ; print_r($themename) ; echo "</pre>"; // DEV
   }

javascript: Trabajar con formularios

Category : javascript gen 27th, 2015

Ejemplos sobre manipulación de formularios en javascript.

Recoger valores de un formulario.

// Elemento que contiene el valor
var caixa_subtotal = document.getElementById('subtotal');

// Recoger el valor que obtiene convertido a numero e base 10
var subtotal   = parseInt(caixa_subtotal.value,10);

// Redondear numero
caixa_subtotal.value = Math.round(subtotal*100/100);

// Convertir a numero entero sin decimales
impresions = Math.floor(impresions);

Modificar elementos concretos dentro de un identificador.


// Caja contenedora
var el = document.getElementById("exemples");
// Elementos td dentro de la caja
var as = el.getElementsByTagName("td");
for (var i=0; i 0 ) {
      // Modificamos enlace
      enlace[0].href = "javascript: cambiar_imatge_exemple("+altura+");";
   }
}

Comprobar la existencia de una opción de un select.


var existe = false;
// Recorremos select
for (x = 0; x < caixa_altura.length; x++) {
   // Si el valor corresponde
   if(caixa_altura.options[x].value == imgAltura){
      existe = true;
      // Lo seleccionamos
      caixa_altura.options[x].selected = true;
      }
   }

// Sino existe lo añadimos
if ( existe == false ) {
   caixa_altura.options[caixa_altura.length]=new Option(imgAltura,imgAltura,"defaultSelected");
}

Comprobamos que el valor de un select no es nulo y la selección esta por encima de las dos primera opciones.


function select_modificado(theList){
   if (theList.value!='null' && theList.selectedIndex > 1 ) {
      theList.form.submit();
      }
   }

Reemplazar urls planas por enlaces html con javascript

Category : javascript gen 27th, 2015

Script para detectar enlaces y generar el código automáticamente

Función que remplaza los enlaces planos por enlaces html:

function replaceURLWithHTMLLinks(text) {
   var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi;
   return text.replace(exp,"<a href='$1'>$1</a>");
   }

Forma de utilizarla:

var elements = document.getElementsByClassName('contingut_comentari');

for(var i = 0;i < elements.length;i++) {
   elements[i].innerHTML = replaceURLWithHTMLLinks(elements[i].innerHTML);
   }