/**
  * Recalculate the points.
  *
  * @return Bengine_Game_Cronjob_PointClean
  */
 protected function cleanPoints()
 {
     Hook::event("CleanPointsBegin");
     $_result = Core::getQuery()->select("user", "userid");
     foreach ($_result->fetchAll() as $_row) {
         $points = 0;
         $fpoints = 0;
         $dpoints = 0;
         $result = Core::getQuery()->select("planet", "planetid", "", Core::getDB()->quoteInto("userid = ?", $_row["userid"]));
         foreach ($result->fetchAll() as $row) {
             $points += Bengine_Game_PointRenewer::getBuildingPoints($row["planetid"]);
             $points += Bengine_Game_PointRenewer::getFleetPoints($row["planetid"]);
             $fpoints += Bengine_Game_PointRenewer::getFleetPoints_Fleet($row["planetid"]);
             $dpoints += Bengine_Game_PointRenewer::getDefensePoints($row["planetid"]);
         }
         $result->closeCursor();
         $points += Bengine_Game_PointRenewer::getResearchPoints($_row["userid"]);
         $points += Bengine_Game_PointRenewer::getFleetEventPoints($_row["userid"]);
         $fpoints += Bengine_Game_PointRenewer::getFleetEvent_Fleet($_row["userid"]);
         $rpoints = Bengine_Game_PointRenewer::getResearchPoints_r($_row["userid"]);
         Core::getQuery()->update("user", array("points" => $points, "fpoints" => $fpoints, "rpoints" => $rpoints, "dpoints" => $dpoints), "userid = ?", array($_row["userid"]));
     }
     $_result->closeCursor();
     return $this;
 }
/**
 * Deletes all planet data.
 *
 * @param integer $id		Planet id
 * @param integer $userid	User id
 * @param boolean $ismoon	Planet is moon
 *
 * @return void
 */
function deletePlanet($id, $userid, $ismoon)
{
    $points = Bengine_Game_PointRenewer::getBuildingPoints($id);
    $points += Bengine_Game_PointRenewer::getFleetPoints($id);
    $fpoints = Bengine_Game_PointRenewer::getFleetPoints_Fleet($id);
    $dpoints = Bengine_Game_PointRenewer::getDefensePoints($id);
    if (!$ismoon) {
        $result = Core::getQuery()->select("galaxy", "moonid", "", Core::getDB()->quoteInto("planetid = ?", $id));
        $row = $result->fetchRow();
        if ($row["moonid"]) {
            deletePlanet($row["moonid"], $userid, 1);
        }
    }
    Core::getDB()->query("UPDATE " . PREFIX . "user SET points = points - ?, fpoints = fpoints - ?, dpoints = dpoints - ? WHERE userid = ?", array($points, $fpoints, $dpoints, $userid));
    Core::getQuery()->update("planet", array("userid" => null), "planetid = ?", array($id));
    if ($ismoon) {
        Core::getQuery()->update("galaxy", array("moonid" => null), "moonid = ?", array($id));
    } else {
        Core::getQuery()->update("galaxy", array("destroyed" => 1), "planetid = ?", array($id));
    }
    Hook::event("DeletePlanet", array($id, $userid, $ismoon));
    return;
}