Warning: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings.

Si vous avez mis à jour le PHP d'une version 5.2 à 5.3, vous risquer surement de tomber sur ce Bug lors de la modification d'un noeud sur Drupal.

Afin d'éviter ces erreurs il existe deux possiblités:

1 - Dans le fichier php.ini (Bien sûre si vous avez accès) ajouter ceci:

[Date]
; Defines the default timezone used by the date functions
date.timezone = "votre fuseau horaire"

Il existe un superbe module dans Drupal qui nous permet de structurer les nodes d'une manière hiérarchisé parent enfant sous enfant, ce module est Node Hierchy.

Par contre ce module manque un peu de développement et surtout sa version 2.x qui tarde à venir.

Dans cette exemple on va s'intéresser au poids du fieldset de ce module qui est à 10 par défaut.

J'utilise la fonction  hook_content_extra_fields() de CCK qui nous permet de gérer ça.

Si vous avez installé SPIP en version 2.1, un bug introduit il y a 10 mois vient de faire « disparaître » l’ensemble de vos articles sur votre site. Pas de panique, ce n’est que l’affichage qui est cassé, une simple mise à jour vers la version SPIP 2.1.2 suffira à rétablir la situation.


> Lire la suite sur le site de SPIP

Voici une petite astuce pour récuperer l'url du site sous Drupal:

<?php
  url(NULL,array('absolute' => True));
?>

Pour ajouter un fichier CSS ou javascript dans notre développement Drupal dispose d'une fonction pour cela:

<?php
 
  // Ajouter un fichier CSS
  drupal_add_css($path = NULL, $type = 'module', $media = 'all', $preprocess = TRUE);
 
  //Ajouter un fichier js
  drupal_add_js($data = NULL, $type = 'module', $scope = 'header', $defer = FALSE, $cache = TRUE, $preprocess = TRUE);
 
?>

Voici comment récuperer le chemin relative d'un module ou d'un thème

<?php 
  // Pour les modules
  drupal_get_path('module','nom_du_module');
 
  //Pour les themes 
  drupal_get_path('theme','nom_du_theme');
?>

Mehdi Ben Romdhane

www.medev.ch

Rue de Berne, 32

1205 Genève

Tél. +41 22 732 52 50

MySQL Workbench permet aux DBA, aux développeurs ou aux architectes de bases de données de concevoir, de générer et de gérer visuellement tous les types de bases de données, y compris Web, OLTP et applications d’entrepôts de données. Il comprend tout ce dont un modélisateur de données a besoin pour créer des modèles ER complexes.

Afin de vérifier les e-mails laisser par les visiteurs dans un formulaire, nous utilisons les expressions régulières pour faire le test dont voici un exemple de fonction (CMS Drupal):

<?php
function valid_email_address($mail) {
  $user = '[a-zA-Z0-9_\-\.\+\^!#\$%&*+\/\=\?\`\|\{\}~\']+';
  $domain = '(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.?)+';
  $ipv4 = '[0-9]{1,3}(\.[0-9]{1,3}){3}';
  $ipv6 = '[0-9a-fA-F]{1,4}(\:[0-9a-fA-F]{1,4}){7}';
 
  return preg_match("/^$user@($domain|(\[($ipv4|$ipv6)\]))$/", $mail);
}
?>

Sur cet exemple, on va voir comment on peut configurer Drupal pour se connecter sur plusieurs bases de données.

Pour commencer je reviens sur le faite que Drupal enregistre les configurations de la BDD sur le fichier sites/default/settings.php et c'est là où on va changer un peu notre configuration.

Pour la BDD c'est stocké sous l'un de ces formats (selon notre type de BDD) :

* $db_url = 'mysql://username:password@localhost/databasename';
* $db_url = 'mysqli://username:password@localhost/databasename';
* $db_url = 'pgsql://username:password@localhost/databasename';

Jusqu'à maintenant, impossible de supprimer la totalité d'un dossier en PHP tant que ce dernier n'est pas vide (aucun sous dossier ou fichier)

Voici une petite fonction que j'utilise pour contourner ce manque :

<?php
function supprimer_dossier($directory, $empty = false) {
    if(substr($directory,-1) == "/") {
        $directory = substr($directory,0,-1);
    }
 
    if(!file_exists($directory) || !is_dir($directory)) {
        return false;
    } elseif(!is_readable($directory)) {
        return false;
    } else {

Sous PHP il manque parfois des fonctions très utiles comme pour copier un dossier avec tout son contenu.

Voici une petite fonction que j'utilise pour contourner ce manque :

<?php
function copy_dir ($dir2copy,$dir_paste) {
  // On vérifie si $dir2copy est un dossier
  if (is_dir($dir2copy)) {
 
    // Si oui, on l'ouvre
    if ($dh = opendir($dir2copy)) {     
      // On liste les dossiers et fichiers de $dir2copy
      while (($file = readdir($dh)) !== false) {
        // Si le dossier dans lequel on veut coller n'existe pas, on le créé

Une erreur sur les dernières versions de views quand on utilise comme argument un tid (identifiant du terme)

Voici l'erreur comme elle s'affiche :'views_plugin_argument_default' not found in
\sites\all\modules\views\modules\taxonomy\views_plugin_argument_default_taxonomy_tid.inc

Pour contourner cette erreur quand on utilise les arguments de la taxonomy:

--- taxonomy.views.inc	2010-04-06 12:59:29.000000000 -0700
 
+++ taxonomy.views.inc	2010-04-13 15:19:03.000000000 -0700
 
@@ -462,6 +462,7 @@ function taxonomy_views_plugins() {

Voici comme on peut recuperer les valeurs d'un champ CCK pour l'utiliser dans un autre module :

<?php
  $fields = module_invoke('content', 'fields','nom_fileld');
  $values = module_invoke('content','allowed_values',$fields);
?>

Un probleme dans la tabulation du module quicktabs sous IE 7.

Un patch existe sur ce lien http://drupal.org/node/487518

le patch est :

Index: quicktabs.js
 
===================================================================
 
--- quicktabs.js	(revision 26)
 
+++ quicktabs.js	(working copy)
 
@@ -41,13 +41,11 @@
 
   this.tabIndex = el.myTabIndex;
 
   this.qtid = el.qtid;
 
   var qtKey = 'qt_' + this.qtid;
 
-  var i = 0;
 
   for (var key in Drupal.settings.quicktabs[qtKey].tabs) {
 
-    if (i == this.tabIndex) {