PHP

[Magento] Créer un attribut

ici nous allons voir comment créer un nouvel attribut (de type texte) par code, pour cela on va utiliser le mysql4-install (ou -upgrade, en fonction de la situation) du dossier setup de votre module.

voici le code pour ajouter un nouvel attribut :

$installer = $this;
/* @var $installer Mage_Eav_Model_Entity_Setup */

$installer->startSetup();

$params = array(
    'type'              => 'text',
    'backend'           => '',
    'frontend'          => '',
    'label'             => 'Nom de l attribut',
    'input'             => 'text',
    'class'             => '',
    'source'            => '',
    'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => true,
    'default'           => '',
    'searchable'        => false,
    'filterable'        => false,
    'comparable'        => false,
    'visible_on_front'  => false,
    'visible_in_advanced_search'=>false,
    'unique'            => false,
    'apply_to'          => '',
    'is_configurable'   => false,
);

$installer->addAttribute('catalog_product', 'IDENTIFIANT_DE_L_ATTRIBUT', $params);

$installer->endSetup();

dans le cas d'un upgrade, pensez à mettre à jour la version du module dans le config.xml du module.

[zf] forcer la connexion mysql en utf8

une petite modification a apporter au Bootstrap.php d'un projet zend framework et plus besoin de faire des utf8_encore dans tous les sens sur des données récupérées en base (ou juste pour être tranquille)

public function  __construct($application) {
        parent::__construct($application);

        $this->getPluginResource('db')->getDbAdapter()->getConnection()->exec("SET NAMES 'utf8'");
    }

fonction de nettoyage de chaine de caractères

voici une fonction qui permet de nettaoyer une chaine de tout ce qui n'est pas alphanumérique, les caractères accentués, les blancs, etc.

function slugify($text) {
        $alphabet = array(
            'Š'=>'S', 'š'=>'s', 'Ð'=>'Dj','Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A',
            'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I',
            'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U',
            'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss','à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a',
            'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i',
            'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u',
            'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'ƒ'=>'f'
        );

        if(empty($text)) return 'n-a';

        $text = str_replace('&', '-and-', $text);
        $text = strtr ($text, $alphabet);

        // replace all non letters or digits by -
        $text = preg_replace('/\W+/', '-', $text);

        // trim and lowercase
        $text = strtolower(trim($text, '-'));

        return $text;
    }

Tags:

[ZF] fonction de log

voici une fonction que j'utilise dans zend framework pour enregistrer mes logs (dans les batchs surtout)

function log($message, $prefix = null, $suffix = null, $file = null)
    {
        $logs_dir = realpath(APPLICATION_PATH . '/../logs');

        $file = $logs_dir . '/fichier_de_log.log';

        $redacteur = new Zend_Log_Writer_Stream($file);
        $formatter = new Zend_Log_Formatter_Simple("[%timestamp%] :\t%message%" . PHP_EOL);
        $redacteur->setFormatter($formatter);
        $logger = new Zend_Log($redacteur);

        $logger->info($prefix . $message . $suffix);
    }

Obtenir la vraie adresse IP d'un visiteur

voici une fonction qui retourne l'adresse IP finale de l'utilisateur, celle de son réseau local (souvent en 192.168.X.X ou 10.0.X.X) si pas disponible, la fonction retourne l'adresse IP publique

function getRealIp()
{
     $ip = null;
     if(!empty($_SERVER['HTTP_CLIENT_IP'])){
          $ip = $_SERVER['HTTP_CLIENT_IP'];
     }
     if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
          $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
     }
     return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}

Tags:

Pages

Subscribe to RSS - PHP