/** Supprime les message excédant la taille maximale permise. * Libère l'espace nécésaire pour ajouter un message. * * Exemple d'utilisation (requiert 0 requêtes) * <code> * self::freeSpace($perso->getId(), $arr['heQte'], $arr['mp']); * </code> * * Exemple d'utilisation (requiert 2 requêtes) * <code> * self::freeSpace($perso->getId()); * </code> * @param int $pid Id du ou perso dont on veux trunker le HE. * @param int $heQte Quantité de message dans le HE (champ perso.heQte). * @param string $mp Status du M+ (champ account.mp). */ private static function freeSpace($pid, $heQte = null, $mp = null) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante //Vérifier si il reste suffisament d'espace disponible dans le HE pour ajouter le nouvel item. if (empty($htQte)) { $heQte = Member_He::getMsgCount($pid); } //WARNING: 1 query. if (empty($mp)) { $maxSpace = Member_He::calculateHeMaxSize($pid); } else { $maxSpace = self::spacePerMembership($mp); } //echo "<!-- DEBUG: HE_SIZE ($pid): $hesize / $maxspace -->"; //Vérifier si l'espace restant dans le HE est correcte if ($heQte >= $maxSpace && $maxSpace > 0) { $qteDeleted = 0; $query = 'UPDATE `' . DB_PREFIX . 'he_fromto`' . ' SET `show`="0"' . ' WHERE `persoid`= :persoId' . ' ORDER BY `msgid` ASC' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':persoId', $pid); while ($heQte - $qteDeleted >= $maxSpace && $qteDeleted < 10) { // Présomption: l'ID gère l'ordre temporel. $prep->execute(); $qteDeleted++; } //Mettre à jour les stats du HE. self::changeStat($pid, $qteDeleted, true, array(__FUNCTION__, $query)); } }