FMCorz.info
Le blog d'un geek qui n'en est pas un !

Envie

"L'envie est un désir qui échappe à la raison. Par opposition, le désir raisonné se nomme la volonté"

Dixit Wikipedia

Fil des billets

jeudi, août 18 2011

Alias et VirtualFields dans CakePHP

Dans CakePHP 2.0 (beta à la date d'aujourd'hui), avoir des VirtualFields peut générer des erreurs lorsqu'un modèle change d'alias.

Pour remédier à ce problème, voici un petit bout de code à placer dans AppModel.

public function getVirtualField($field = null) {
	if (!empty($field) && $this->isVirtualField($field)) {
		if (strpos($field, '.') !== false) {
			list($model, $field) = explode('.', $field);
		}
		return str_replace('{alias}', $this->alias, $this->virtualFields[$field]);
	} else {
		return parent::getVirtualField($field);
	}
}

Ensuite, spécifiez vos virtualFields de la manière suivante :

var $virtualFields = array(
  'name' => "CONCAT({alias}.first_name, ' ', {alias}.last_name)"
);

Ce qui dynamiquement donnera ceci :

var $virtualFields = array(
  'name' => "CONCAT(User.first_name, ' ', User.last_name)"
);

Edit #1 : Gestion du . dans le nom du champ passé à la fonction.

mardi, juillet 13 2010

Ajouter un mois à une date en PHP

Ne criez pas trop vite qu'il s'agit d'une fonction simple ! La fonction strtotime est certainement très intéressante, mais elle ne fait pas tout !

Démonstration

Nous sommes le 15 janvier. J'utilise strtotime("+1 month"), je me retrouve donc au 15 février. Jusque là tout va bien. Mais si nous sommes le 31 janvier...

Dans ce cas, strtotime va renvoyer le 3 mars (selon l'année). Voici une fonction qui prendra en compte le dernier jour du mois suivant si le mois ne comporte pas assez de jours.

Fonction PHP pour incrémenter une date

function getNextDate($type = null, $now = null, $start = null) {

	if (is_null($now)) return false;

	if (!is_numeric($now)) $now = strtotime($now);
	if (!is_null($start) && !is_numeric($start)) $start = strtotime($start);
	
	switch($type) {
		
		/**
		 * Rajouter un mois à $now en tenant en compte que $start est le tout début
		 */
		case "month":
		case "monthly":
			
			if (!is_null($start)) {
				$day = date("j", $start);
			} else {
				$day = date("j", $now);
			}
				
			switch($day) {
				case 29:
				case 30:
				case 31:
					$next = strtotime("next month", mktime(0, 0, 0, date("m", $now), 1, date("Y", $now)));
					$lastDay = date("t", $next);
					$next = mktime(0, 0, 0, date("m", $next), $lastDay, date("Y", $next));
					break;
					
				default:
					$next = strtotime("+1 month", $now);
					break;
			}
				
			break;				
			
	}
	
}

Je n'ai pas encore écrit la suite de la fonction permettant d'obtenir une date futur selon un autre $type, mais ça devrait suffire.

Utilisation

$timestamp = getNextDate($type, $now, $start);

@param String $type Le type de calcul (uniquement month pour l'instant)
@param Int $now Le timestamp de la date à partir de laquelle on calcule la prochaine
@param Int $start La date de départ
@return Int Timestamp de la date retournée

$start est utile lorsque dans une boucle vous cherchez à obtenir plusieurs mois suivants.

Exemple, si vous commencez au 30 janvier. $now sera le 30 janvier, et $start sera null. La date retournée sera le 28 février. Pour la prochaine date vous indiquerez le 28 février comme étant $now, et $start le 30 janvier. Si vous omettez $start, la valeur retournée sera le 28 mars, sinon elle sera le 30 mars.

vendredi, juin 25 2010

L'iPhone rend dépendant !

Pas vrai ?

iphone-gollum.jpg Mon précieux !

Vous ne regarderez plus les gens qui jouent avec leur iPhone de la même manière !

Source

jeudi, juin 17 2010

Fatal, le nouveau film de Michaël Youn

fatal.jpg

J'étais plein d'a priori comme tout le monde, c'est vrai que Youn n'a pas toujours un humour qui fait rire (tout le monde). Mais après avoir vu plusieurs bande-annonce et les "5 premières minutes du film", j'ai été conquis !

Critique de Fatal

Lire la suite »

vendredi, mai 21 2010

David Guetta a besoin d'argent !

Je ne sais pas pour vous, mais moi je déteste la publicité en général, et encore plus quand il s'agit des publicités incrustées dans un film ou un clip.

En l'occurrence, je trouve que dans le clip ci-dessous elle est tout sauf subtile. Entre autres pour un site de Poker, m'enfin... David Guetta a besoin d'argent ou quoi ?!

Le nouveau clip de David Guetta, Gettin' Over You

vendredi, décembre 11 2009

Dirty Workz Deluxe

Oui j'y étais. Il n'y a pas que des abrutis qui aiment ce style de musique ! Je ne suis pas fan de tuning, mais le hardstyle j'aime !

Après une soirée démente au Lotto Arena d'Anvers. Voici l'Aftermovie !

Dirty Workz Deluxe Wallpaper

L'Aftermovie de Dirty Workz

Lire la suite »

lundi, décembre 7 2009

WifiZoo, analyser la jungle du sans-fil !

Quand un réseau WiFi n'est pas sécurisé, les données qui transitent "in the air" ne sont pas non plus sécurisées. N'importe qui peut récolter ces paquets volants et en analyser le contenu.

Chose grandement simplifiée par un outil qui s'appelle WifiZoo permettant, entre autres, d'espionner les conversations MSN et de récupérer les cookies d'identification.

Mon tutorial WifiZoo : Sniffer le WiFi

Lire la suite »

mardi, décembre 1 2009

Tunnel SSH : Sécuriser son accès à Internet

La majorité des informations que nous transmettons sur Internet ne sont pas chiffrées. Passons encore, c'est habituel, et on en connait les risques.

Oui, mais... et si quelqu'un de mal intentionné décidait d'observer vos échanges et d'analyser les informations que vous transmettez ?

Par exemple en analysant tous les paquets Wi-Fi qui passent. Ou encore plus facile si vous êtes connecté au même réseau local.

En qui pouvons-nous encore avoir confiance quand on constate la facilité avec laquelle vos informations peuvent être dérobées ? C'est pourquoi...

Port Forwarding ou Proxy Socks5 en SSH

Lire la suite »