php

[Symfony] définir un préfix pour les tables générées par doctrine

voici comment définir un préfix pour les tables sql générées par doctrine :

il faut aller dans config/ProjectConfiguration.class.php et ajouter la fonction suivante :

  public function configureDoctrine(Doctrine_Manager $manager)
  {
    $manager->setAttribute(Doctrine_Core::ATTR_TBLNAME_FORMAT, 'mon_prefix_%s');
  }

ainsi toutes les tables auront pour préfix le mot "mon_prefix"

PS. ceci nous permet de manipuler des noms de tables/objets sans le prefix, voici un début de schema.yml

Contact:
  tableName: contacts
  actAs: [Timestampable]

  columns:
    email:      { type: string(100)}
    name:       { type: string(255) }

dans le code on fera des Doctrine::getTable("Contact") ou des $c = new Contact() alors que notre table s'appelle "mon_prefix_contacts"

[PHP] redimensionner une image

voici une fonction pour redimensionner une image, si l'image est plus petite que la taille demandée, on ne fait rien :

function _resizeImage( $tmpname, $w, $h, $save_dir, $save_name)
  {
    $save_dir      .= (substr($save_dir,-1) != "/") ? "/" : "";
    $img_src_chemin = $tmpname;
    $img_dst_chemin = $save_dir.$save_name;
    $extension = strtolower(substr($img_src_chemin, -3));
    
    switch ( $extension ) {
      case "jpg":
      case "peg": //pour le cas où l'extension est "jpeg"
        $img_src_resource = imagecreatefromjpeg( $img_src_chemin );
        break;

      case "gif":
        $img_src_resource = imagecreatefromgif( $img_src_chemin );
        break;

      case "png":
        $img_src_resource = imagecreatefrompng( $img_src_chemin );
        break;

      default:
        $img_src_resource = imagecreatefromjpeg( $img_src_chemin );
    }

    $img_src_width  = imagesx( $img_src_resource );
    $img_src_height = imagesy( $img_src_resource );

    //preserver les dimensions
    $rapport = $img_src_width / $img_src_height;
    if($rapport > 1) {
      $h = intval($h / $rapport);
    } else {
      $w = intval($w * $rapport);
    }

    //si image plus petite que ce qu'on veut (si on veut agrandir une image, il faudra enlever cette partie)
    if($img_src_width <= $w && $img_src_height <= $h) {
      rename($img_src_chemin, $img_dst_chemin);
      return;
    }

    $img_dst_resource = imagecreatetruecolor($w, $h);
    $white = imagecolorallocate($img_dst_resource, 255, 255, 255); //ici on veut un fond blanc (noir par défaut)
    imagefilledrectangle($img_dst_resource, 0, 0, $w, $h, $white);

    imagecopyresampled($img_dst_resource, $img_src_resource, 0, 0, 0, 0, $w, $h, $img_src_width, $img_src_height);

    switch ( $extension ) {
      case "jpg":
      case "peg":
        imagejpeg($img_dst_resource, $img_dst_chemin);
        break;

      case "gif":
        imagegif($img_dst_resource, $img_dst_chemin);
        break;

      case "png":
        imagepng($img_dst_resource, $img_dst_chemin);
        break;

      default:
        imagejpeg($img_dst_resource, $img_dst_chemin);
    }

    //on supprime l'image source
    unlink($img_src_chemin);
  }

exemple d'utilisation :

$this->_resizeImage(
            $_FILES['totot']['temp_name'], //de mémoire^^
           150,
           150,
           "/var/www/html/uploads/",
          "thumbnail.jpg"
);

[PHP] afficher les x premiers mots d'une chaine

voici un snippet tout simple pour couper une (pour afficher une résumé par exemple) en affichant les X premiers mots

echo preg_match('#(?:\w+\W+){XX}\w+#s' , $texte , $output) ? $output[0] : $texte; //remplacer XX par le nombre de mots souhaités

//le if c'est dans le cas où la chaine est moins longue que XX (dans ce cas on l'affiche telle quelle)
//astuce : si la chaine est en html, on pourrait faire $texte = trim( strip_tags( $texte )) avant

[PHP] générer un mot de passe aléatoire

un petite fonction pratique pour générer un mot de passe aléatoire :

function genPassword($length = 6) {
    $index = str_split("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!?@_-[#&$");
    shuffle($index);
    $code = implode('', array_slice($index, rand(0, count($index)-$length), $length));

    return $code;
}

//utilisations :
$pass = genPassword();
$pass = genPassword(8);

[PHP] détecter une requête Ajax

parfois il est pratique de cacher certaines parties d'une page quand elle est appelée en ajax, encore faut-il le savoir :)

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
//ici on fait le traitement voulu dans le cas d'une requete ajax...
}

il faut toutefois faire attention, la variable $_SERVER['HTTP_X_REQUESTED_WITH'] n'est présente que si la requête ajax est initiée via une librairie javascript comme jQuery, Prototype ou mootools

pour que cela fonctionne sous IE6, pensez aussi à ajouter ce code dans la page :

header("Cache-Control: no-cache");

Tags:

Pages

Subscribe to RSS - php