/** * Validate the data. * * @return boolean */ public function validate() { $text = $this->getData(); if (Str::length(trim(str_replace(" ", "", strip_tags($text)))) > 0) { if ($this->getSetup("max_length", 10000) < Str::length($text)) { $this->addError("TEXT_TOO_LARGE"); return false; } $this->setData(richText($text)); } else { $this->setData(""); } return true; }
/** * Saves the updated alliance preferences. * * @param boolean $showmember Show member list to everyone * @param boolean $showhomepage Show homepage to everyone * @param boolean $open Open applications * @param string $foundername Founder rank name * @param integer $memberlistsort Default memer list sort * @param string $textextern Extern alliance text * @param string $textintern Intern alliance text * @param string $logo Logo URL * @param string $homepage Homepage URL * @param string $applicationtext Application template * * @return Bengine_Game_Controller_Alliance */ protected function updateAllyPrefs($showmember, $showhomepage, $open, $foundername, $memberlistsort, $textextern, $textintern, $logo, $homepage, $applicationtext) { $foundername = trim($foundername); $logo = trim($logo); $homepage = trim($homepage); Hook::event("UpdateAlliancePreferences"); if ($showmember == 1) { $showmember = 1; } else { $showmember = 0; } if ($showhomepage == 1) { $showhomepage = 1; } else { $showhomepage = 0; } if ($open == 1) { $open = 1; } else { $open = 0; } if (Str::length($foundername) > Core::getOptions()->get("MAX_CHARS_ALLY_NAME")) { $foundername = ""; } $further = 1; if (Str::length($textextern) > Core::getOptions()->get("MAX_ALLIANCE_TEXT_LENGTH")) { $further = 0; } if (Str::length($textintern) > Core::getOptions()->get("MAX_ALLIANCE_TEXT_LENGTH")) { $further = 0; } if ((!isValidImageURL($logo) || Str::length($logo) > 128) && $logo != "") { $further = 0; } if ((!isValidURL($homepage) || Str::length($homepage) > 128) && $homepage != "") { $further = 0; } if (Str::length($applicationtext) > Core::getOptions()->get("MAX_APPLICATION_TEXT_LENGTH")) { $further = 0; } if ($further == 1) { $spec = array("logo" => $logo, "textextern" => richText($textextern), "textintern" => richText($textintern), "applicationtext" => Str::validateXHTML($applicationtext), "homepage" => $homepage, "showmember" => $showmember, "showhomepage" => $showhomepage, "memberlistsort" => $memberlistsort, "open" => $open, "foundername" => Str::validateXHTML($foundername)); Core::getQuery()->update("alliance", $spec, "aid = ?", array($this->aid)); $this->redirect("game/" . SID . "/Alliance/Manage"); } else { if (Str::length($textextern) > Core::getOptions()->get("MAX_ALLIANCE_TEXT_LENGTH")) { Core::getTPL()->assign("externerr", Logger::getMessageField("TEXT_INVALID")); } if (Str::length($textintern) > Core::getOptions()->get("MAX_ALLIANCE_TEXT_LENGTH")) { Core::getTPL()->assign("internerr", Logger::getMessageField("TEXT_INVALID")); } if (Str::length($applicationtext) > Core::getOptions()->get("MAX_APPLICATION_TEXT_LENGTH")) { Core::getTPL()->assign("apperr", Logger::getMessageField("TEXT_INVALID")); } if ((!isValidImageURL($logo) || Str::length($logo) > 128) && $logo != "") { Core::getTPL()->assign("logoerr", Logger::getMessageField("LOGO_INVALID")); } if ((!isValidURL($homepage) || Str::length($homepage) > 128) && $homepage != "") { Core::getTPL()->assign("hperr", Logger::getMessageField("HOMEPAGE_INVALID")); } } return $this; }
/** * Deletes messages. * * @param integer $folder Folder id * @param integer $option Mode to delete content * @param array $msgs Messages * * @return Bengine_Game_Controller_MSG */ protected function deleteMessages($folder, $option, array $msgs) { $pagination = $this->getPagination($folder); $deltime = 604800; if (is_numeric(Core::getOptions()->get("DEL_MESSAGE_DAYS")) && Core::getOptions()->get("DEL_MESSAGE_DAYS") > 0) { $deltime = (int) Core::getOptions()->get("DEL_MESSAGE_DAYS") * 86400; } $deltime = TIME - $deltime; Core::getQuery()->delete("message", "time <= ?", null, null, array($deltime)); switch ($option) { case 1: foreach ($msgs as $msgid) { Core::getQuery()->delete("message", "msgid = ? AND receiver = ?", null, null, array($msgid, Core::getUser()->get("userid"))); } break; case 2: $where = Core::getDB()->quoteInto("receiver = ? AND mode = ?", array(Core::getUser()->get("userid"), $folder)); $result = Core::getQuery()->select("message", "msgid", "", $where, "time DESC", $pagination->getStart() . ", " . Core::getOptions()->get("MAX_PMS")); foreach ($result->fetchAll() as $row) { if (!in_array($row["msgid"], $msgs)) { Core::getQuery()->delete("message", "msgid = ?", null, null, array($row["msgid"])); } } $result->closeCursor(); break; case 3: $where = Core::getDB()->quoteInto("receiver = ? AND mode = ?", array(Core::getUser()->get("userid"), $folder)); $result = Core::getQuery()->select("message", array("msgid"), "", $where, "time DESC", $pagination->getStart() . ", " . Core::getOptions()->get("MAX_PMS")); foreach ($result->fetchAll() as $row) { Core::getQuery()->delete("message", "msgid = ?", null, null, array($row["msgid"])); } break; case 4: Core::getQuery()->delete("message", "receiver = ? AND mode = ?", null, null, array(Core::getUser()->get("userid"), $folder)); break; case 5: $reports = array(); $modId = Game::getRandomModerator(); foreach ($msgs as $msgid) { $where = Core::getDB()->quoteInto("m.msgid = ? AND m.receiver = ?", array($msgid, Core::getUser()->get("userid"))); $result = Core::getQuery()->select("message m", array("m.sender", "m.mode", "m.message", "m.time", "u.username"), "LEFT JOIN " . PREFIX . "user u ON (u.userid = m.sender)", $where); if ($row = $result->fetchRow()) { if (($row["sender"] > 0 || $row["mode"] == 5) && $row["sender"] != $modId) { $reports[] = $row; } } } if (count($reports) > 0) { Core::getLang()->assign("reportSender", Core::getUser()->get("username")); foreach ($reports as $report) { Core::getLang()->assign("reportMessage", $report["message"]); Core::getLang()->assign("reportUser", $report["username"]); Core::getLang()->assign("reportSendTime", Date::timeToString(1, $report["time"], "", false)); if ($report["mode"] == 5) { $assault = Game::getModel("game/assault")->load((int) $report["message"]); $url = BASE_URL . Core::getLang()->getOpt("langcode") . "/combat/report/" . $assault->get("assaultid") . "/" . $assault->get("key"); $gentime = $assault->get("gentime") / 1000; $label = Core::getLanguage()->getItem("ASSAULT_REPORT") . " (A: " . fNumber($assault->get("lostunits_attacker")) . ", D: " . fNumber($assault->get("lostunits_defender")) . ") " . $gentime . "s"; Core::getLang()->assign("reportLink", "<span class=\"assault-report\" onclick=\"window.open('" . $url . "')\">" . $label . "</span>"); $message = Core::getDB()->escape(Core::getLang()->get("MODERATOR_REPORT_COMBAT")); } else { richText($message = Core::getLang()->get("MODERATOR_REPORT_MESSAGE")); } $subject = Core::getLang()->get("MODERATOR_REPORT_SUBJECT"); $spec = array("sender" => null, "mode" => 1, "subject" => $subject, "message" => $message, "receiver" => $modId, "time" => TIME, "read" => 0); Core::getQuery()->insert("message", $spec); } Logger::addMessage("MESSAGES_REPORTED", "success"); } break; } return $this; }