Que vous dire de plus ?
Archives pour septembre, 2009
InstantClient 10 compatible snow leopard 10.6
5/09/09
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.
Filtre de redirection basé sur le langage
1/09/09
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.
