InstantClient 10 compatible snow leopard 10.6

Bonne nouvelle pour les utilisateurs d’Oracle. Le projet MacPorts a rendu la version InstantClient 10 compatible 64 bits pour l’installation sur snow leopard. Voici donc la marche à suivre pour son installation.

Pour être sur d’avoir les dernières sources, nous allons au préalable faire une mise à jour de l’arbre de MacPorts:

sudo port selfupdate

Première chose, nous allons télécharger la version d’InstantClient 10 directement sur le site d’Oracle en cliquant ici.
Récupérer les paquets suivants:

instantclient-basic-10.2.0.4.0-macosx-x64.zip
instantclient-sdk-10.2.0.4.0-macosx-x64.zip

La démarche suivante consiste à copier ces 2 paquets dans le projet MacPorts à l’emplacement suivant:

 /opt/local/var/macports/distfiles/oracle-instantclient

Dès que vous aurez déplacé ces paquets au bon endroit, il ne vous reste plus qu’à les installer

port install oracle-instantclient

Nous allons insérer la ligne suivante dans le profile (/etc/profile).

export DYLD_LIBRARY_PATH=/opt/local/lib/oracle

Nous allons également insérer ce path dans la configuration apache en ajoutant la ligne ci-dessous dans le fichier envvars se trouvant dans /opt/local/apache2/bin:

...
export DYLD_LIBRARY_PATH="/opt/local/lib/oracle"

Pour finir, nous allons installer l’interface pour php

port install php5-oracle

Il ne reste plus qu’à relancer apache pour que le tout soit pris en compte

sudo /opt/local/apache2/bin/apachectl stop
sudo /opt/local/apache2/bin/apachectl start

J’utilise le stop/start pour vraiment vider les choses en mémoire.

Bonne découverte.

Share

Filtre de redirection basé sur le langage

Pour compléter mon article précédent De la culture au language, j’ai réalisé un filtre permettant de faire une re-direction sur la page d’accueil selon le langage du navigateur web. Si ce langage n’est pas disponible, le navigateur sera automatiquement redirigé vers la langue par défaut.

Nous allons commencer par définir quelques paramètres dans le fichier app.yml du dossier config:

all:
  language:
    homepage_route:   home_language
    allowed:
      fr: fr_CH
      de: de_CH
      en: en_US

Nous allons également définir la route par défaut inscrite dans le paramètre « homepage_route »:

home_language:
  url:  /:sf_language
  param:  { module: main, action: index }

Nous poursuivons par la mise en place du filtre. Ajoutons le fichier nommé « languageFilter.class.php » dans le dossier lib de votre application:

class languageFilter extends sfFilter
{
  public function execute($filterChain)
  {
    // Execute this filter only once
    if ($this->isFirstCall())
    {
      $is_correct_url = true;
      
      $context = $this->getContext();

      $language = $context->getRequest()->getParameter('sf_language');
      
      $language_allowed = sfConfig::get('app_language_allowed');

      // Si la langue n'est pas dans l'url
      if($language == NULL)
      {
        // Récupération de la langue préférée du navigateur
        $language = substr($context->getRequest()->getPreferredCulture(), 0, 2);
        
        // Nous contrôlons si cette langue est dans la liste des langues valident
        // Si ce n'est pas le cas, nous prenons la langue par défaut
        if(!array_key_exists($language, $language_allowed))
        {
          $language = substr(sfConfig::get('sf_default_culture'), 0, 2);
        }
        $is_correct_url = false;
      }
      
      // Si la langue n'est pas définie comme active
      // Nous redirigeons sur la page erreur 404
      if(!array_key_exists($language, $language_allowed))
      {
        $module = sfConfig::get('sf_error_404_module', 'default');
        $action = sfConfig::get('sf_error_404_action', 'error404');
        $context->getController()->forward($module, $action);
        exit;
      }
      else
      {
        // Nous récupérons la culture valide selon le code de langue
        $user_culture = $language_allowed[$language];

        // Si la culture est différente de la culture de session
        // Nous la changeons
        if($user_culture != $context->getUser()->getCulture())
        {
          $context->getUser()->setCulture($user_culture);
        }
        
        // Nous renseignons la valeur meta de la langue
        $context->getResponse()->addHttpMeta('content-language', $language);
        
        // Nous effectuons la redirection
        $actionname = $context->getActionName();
        if($is_correct_url == false && $actionname != 'error404')
        {
          $context->getController()->redirect(
                             sfConfig::get('app_language_homepage_route'));
        }
      }
    }
    
    // Execute next filter
    $filterChain->execute();
  }
}

Il nous suffit maintenant d’activer ce filtre en ajoutant ces lignes dans le fichier filters.yml du dossier config:

rendering: ~
security:  ~

# insert your own filters here
language:
  class:  languageFilter
  
cache:     ~
common:    ~
execution: ~

Dès à présent, si votre navigateur est en langue française, si vous tapez « http://monsite.com », vous allez être redirigé vers l’adresse « http://monsite.com/fr ». Dans le cas d’une langue non reconnue, vous obtiendrez une erreur 404.

Avec ce filtre, nous avons une solution robuste pour gérer correctement notre langue.

Bonne découverte.

Share