août 2010

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

Tout d'abord je vous souhaite à toutes et à tous la bienvenue dans ce blog.

Pourquoi ce blog ?

Ce blog existait bien avant, mais non public et il me servait de bloc-notes pour mes petites astuces et liens utiles du milieu du WEB et plus précisément le Développement. Ces derniers jours, j'ai refait l'identité visuel de mon site www.medev.ch et il me restait un coin vide où je ne savais pas quoi mettre. Et de là l'idée est venue. Pourquoi ne pas publier un peu de ces articles et ajouter un petit bloc pour le blog?

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éé