コード例 #1
0
ファイル: He.php プロジェクト: BalamWeb/ccv4
 /** 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));
     }
 }