2008-09-20 10:00:00 +00:00
< ? php
/**
* Classe Bourse par Pierre - Olivier MERCIER
* Derni<EFBFBD> re <EFBFBD> dition le 21 Juillet 2008
* Copyright Halo - Battle Tous droits r<EFBFBD> serv<EFBFBD> s
*/
class Bourse {
var $bd ;
var $id ;
var $nom ;
var $taxeA = 1.1 ;
var $taxeV = 1.5 ;
var $metal ;
var $cristal ;
var $actionsUser ;
var $user ;
/**
* Constructor
*
* @ param String $nom Nom de l ' action
* @ param int $user ID du joueur <EFBFBD> charger automatiquement
*
* @ access protected
*/
function Bourse ( $nom = " " , $user = 0 ){
global $var___db , $config ;
$db = new bdd ();
$db -> connexion ();
$this -> bd = $db ;
if ( ! empty ( $nom )) {
$this -> loadAction ( $nom , " id " );
if ( ! empty ( $user )) $this -> loadUser ( $user );
}
}
function __destruct (){
$this -> bd -> deconnexion ();
}
function loadAction ( $nom , $type = " nom " ){
global $table_bourse ;
$this -> bd -> escape ( $nom );
$act = $this -> bd -> unique_query ( " SELECT * FROM $table_bourse WHERE $type = ' $nom '; " );
2008-11-08 11:00:00 +00:00
if ( $act ) {
$this -> id = $act [ 'id' ];
$this -> nom = $act [ 'nom' ];
$this -> metal = $act [ 'metal' ];
$this -> cristal = $act [ 'cristal' ];
}
else erreur ( 'Impossible de trouver cette action !' , " red " , '?p=bourse' );
2008-09-20 10:00:00 +00:00
}
function loadUser ( $user , $type = " id " ){
global $table_user ;
$this -> bd -> escape ( $user );
$act = $this -> bd -> unique_query ( " SELECT id, bourse FROM $table_user WHERE $type = ' $user '; " );
$this -> user = $act [ 'id' ];
$this -> traitUser ( $act [ 'bourse' ]);
}
function traitUser ( $start ){
$end = array ();
$start = explode ( ';' , $start );
$cnt = count ( $start );
for ( $i = 0 ; $i < $cnt ; $i ++ ){
$tmp = explode ( ':' , $start [ $i ]);
if ( ! empty ( $tmp [ 1 ])) $end [ $tmp [ 0 ]] = explode ( ',' , $tmp [ 1 ]);
else $end [ $tmp [ 0 ]] = array ();
}
$this -> actionsUser = $end ;
}
function prixAchat ( $nb ){
return array ( floor ( $this -> metal * $nb * $this -> taxeA ), floor ( $this -> cristal * $nb * $this -> taxeA ));
}
function prixVente ( $nb ){
if ( $this -> action () < $nb ) $nb = $this -> action ();
return array ( floor ( $this -> metal * $nb / $this -> taxeV ), floor ( $this -> cristal * $nb / $this -> taxeV ));
}
function addAction ( $nb ){
$ret = array ( floor ( $this -> metal * $nb * $this -> taxeA ), floor ( $this -> cristal * $nb * $this -> taxeA ));
$this -> metal *= pow ( 1.1 , $nb );
$this -> cristal *= pow ( 1.1 , $nb );
for ( $i = 0 ; $i < $nb ; $i ++ ){
$this -> actionsUser [ $this -> id ][] = time ();
}
$this -> maj ();
return $ret ;
}
function delAction ( $nb ){
if ( $this -> action () < $nb ) $nb = $this -> action ();
$ret = array ( floor ( $this -> metal * $nb / $this -> taxeV ), floor ( $this -> cristal * $nb / $this -> taxeV ));
$this -> metal /= pow ( 1.1 , $nb );
$this -> cristal /= pow ( 1.1 , $nb );
for ( $i = 0 ; $i < $nb ; $i ++ ){
unset ( $this -> actionsUser [ $this -> id ][ $i ]);
}
$this -> maj ();
return $ret ;
}
function actionIn24Hours (){
$nb = 0 ;
if ( isset ( $this -> actionsUser [ $this -> id ])) {
$cnt = count ( $this -> actionsUser [ $this -> id ]);
for ( $i = 0 ; $i < $cnt ; $i ++ ){
if ( $this -> actionsUser [ $this -> id ][ $i ] > time () - 86400 ) $nb ++ ;
}
}
return $nb ;
}
function action (){
if ( isset ( $this -> actionsUser [ $this -> id ])) return count ( $this -> actionsUser [ $this -> id ]);
else return 0 ;
}
function maj (){
$this -> majBourse ();
$this -> majUser ();
$this -> fileSave ();
}
function majBourse (){
global $table_bourse ;
$this -> bd -> query ( " UPDATE $table_bourse SET nom = ' " . $this -> nom . " ', metal = ' " . $this -> metal . " ', cristal = ' " . $this -> cristal . " ' WHERE id = " . $this -> id . " ; " );
}
function majUser (){
global $table_user ;
$champ = '' ;
foreach ( $this -> actionsUser as $key => $cell ) {
if ( count ( $cell ) > 0 ) {
if ( empty ( $champ )) $champ .= $key . ':' . implode ( ',' , $cell );
else $champ .= ';' . $key . ':' . implode ( ',' , $cell );
}
}
$this -> bd -> query ( " UPDATE $table_user SET bourse = ' $champ ' WHERE id = " . $this -> user . " ; " );
}
function delUser ( $id = " " ){
if ( ! empty ( $id )) $this -> loadUser ( $id );
$champ = '' ;
foreach ( $this -> actionsUser as $key => $cell ) {
$cnt = count ( $cell );
if ( $cnt > 0 ) {
$this -> loadAction ( $key , " id " );
$this -> delAction ( $cnt );
}
}
}
function fileSave (){
$fichier = fopen ( _FCORE . " ../game/cache/bourse/ " . $this -> id . " . " . strftime ( '%Y%m%d' ) . " .bourse " , 'a+' );
fwrite ( $fichier , time () . ';' . $this -> metal . ';' . $this -> cristal . " \n " );
fclose ( $fichier );
}
function newGroupe ( $nom , $metal , $cristal , $description = " " ){
global $table_bourse ;
$this -> bd -> query ( " INSERT INTO $table_bourse (nom, metal, cristal, description) VALUES(' $nom ', ' $metal ', ' $cristal ', ' $description '); " );
}
function editGroupe ( $description ){
//TODO toute cette fonction !!
}
}
?>