Bonjour,

Je rencontre actuellement un problème avec une extension eZ Publish (4.0.0).
J'ai déjà réalisé quelques classes sans rencontrer trop de soucis, mais cette fois-ci je reste sur le carreau.

J'ai besoin de gérer une table supplémentaire pour sauvegarde les dates de dernières visualisation de certains noeud pour un utilisateur donné.

La table est plus que simple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
visites ( id_utilisateur, id_topic, date_visite )
Tous trois étant des entiers non signés.

1. Function_definition.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
	$FunctionList['forum_visiter'] = array(
 
		'name' => 'forum_visiter',
		'operation_types' => array(),
		'call_method' => array( 
 
			'include_file' => 'extension/damien/modules/damien/forum.php',
			'class' => 'Forum',
			'method' => 'visiter' ),
 
		'parameter_type' => 'standard',
		'parameters' => array(
 
			array( 	'name' => 'utilisateur', 'type' => 'string', 'required' => true ),
			array( 	'name' => 'topic', 'type' => 'string', 'required' => false )
 
		)
 
	);
 
?>
2. La fameuse classe

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
 
	class Forum {
 
		/**
		 * Rajoute une entrée dans la base de données pour dire quand un utilisateur a été voir un sujet pour la derniere fois
		 * \arg $utilisateur ID de l'utilisateur
		 * \arg $topic ID du noeud correspondant au topic
		 * \return Rien d'utile : true tout le temps
		 */
		function visiter($utilisateur, $topic){
 
			echo "<p>Forum::visiter()</p>";
 
			mysql_connect("xxxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx");
			mysql_select_db("xxxxxxxxx");
 
			$res = mysql_query("SELECT * FROM visites WHERE id_utilisateur = $utilisateur AND id_topic = $topic");
 
			if(mysql_num_rows($res) > 0)
				$sql = "UPDATE visites SET id_utilisateur = $utilisateur, id_topic = $topic, date_visite = ".time();
			else
				$sql = "INSERT INTO visites (id_utilisateur, id_topic, date_visite) VALUES ($utilisateur, $topic, ".time().")";
 
			mysql_query($sql);
 
			return array("result" => true);
 
		}
 
	}
 
?>
3. le problème

En fait, si je vide les caches pas de soucis, je passe bien dans mon code (je vois bien le echo et les données sont entrées en base).

Par contre si je rafraichi la page, je ne passe plus dans ma méthode.

Et bien sur, si je re-vide les caches... la méthode est appelée...

C'est bien la première fois que ça me fait ça... les autres méthodes des autres classes peuvent être appelé autant de fois qu'on le souhaite sans rencontrer de soucis.

Auriez-vous une idée sur la raison de ce comportement plus que bizarre ?

Merci d'avance