| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- <?php
- /**
- * Guild entity file.
- *
- * Creates the entity and makes it available.
- *
- * @author Iñigo Valentin <i@inigovalentin.com>
- * @license https://www.gnu.org/licenses/gpl-3.0.en.html GNU General Public License V3
- * @package SWDB
- */
- require_once(PATH::ENTITY . "Entity.php");
- require_once(PATH::ENTITY . "Guild_Member.php");
- /**
- * Guild.
- *
- * Represents a guild in the game.
- *
- * @category Entity
- */
- class Guild extends Entity{
- /**
- * @var int Guild identifier.
- */
- private $id;
- /**
- * @var string Guild name.
- */
- private $name;
- /**
- * @var int Guild level.
- */
- private $level;
- /**
- * Guild total experience.
- */
- private $experience;
- /**
- * @var bool Indicates if the guild is recruiting.
- */
- private $recruiting;
- /**
- * @var int Number of members.
- */
- private $total_members;
- /**
- * @var Guild_Member Guild Leader.
- */
- private $leader;
- /**
- * @var string Guild comment.
- */
- private $comment;
- /**
- * @var string Guild notice.
- */
- private $notice;
- /**
- * @var Guild_Member[] List of {@see Guild_Member}s.
- */
- private $members = [];
- /**
- * @var bool Internal flag that indicates if guild members have been loaded.
- */
- private $flag_members = false;
- /**
- * Constructor.
- *
- * Searches the database and retrieves the information about the
- * guild, populating it and it's items.
- *
- * @param int $id Guild identifier.
- */
- public function __construct($id){
- $statement = get_context()->get_db()->prepare("
- SELECT
- id,
- name,
- name,
- level,
- experience,
- recruiting,
- members,
- leader,
- comment,
- notice
- FROM guild
- WHERE id = :id;
- ");
- $statement->bindValue(':id', $id, SQLITE3_TEXT);
- $q = $statement->execute();
- $r = $q->fetchArray(SQLITE3_ASSOC);
- if ($r){
- $this->id = $r["id"];
- $this->name = HTML::e($r["name"]);
- $this->level = $r["level"];
- $this->experience = $r["experience"];
- $this->recruiting = $r["recruiting"];
- $this->total_members = $r["members"];
- $this->leader = $r["leader"];
- $this->comment = HTML::e($r["comment"]);
- $this->notice = HTML::e($r["notice"]);
- }
- }
- /**
- * Loads the members of the guild into the entity.
- *
- * Must be called only once before trying to get the members, the leader, or the member count.
- * Sets the flag {@link Guild:$flag_members} to true.
- */
- private function load_members(){
- $statement = get_context()->get_db()->prepare("
- SELECT
- member,
- grade
- FROM guild_member
- WHERE guild = :guild
- ORDER BY
- grade = 1 DESC, --LEADER
- grade = 3 DESC, --VICELEADER
- grade = 2 DESC, -- REGULAR MEMBER
- arena_score DESC;
- ");
- $statement->bindValue(':guild', $this->id, SQLITE3_TEXT);
- $q = $statement->execute();
- while ($r = $q->fetchArray(SQLITE3_ASSOC)){
- $member = new Guild_Member($r["member"]);
- array_push($this->members, $member);
- if ($r["grade"] == 1){
- $this->leader = $member;
- }
- }
- $this->total_members = count($this->members);
- $this->flag_members = true;
- }
- /**
- * Retrieves the guild identifier.
- *
- * @return int Guild ID.
- */
- public function get_id(){
- return $this->id;
- }
- /**
- * Retrieves the guild name.
- *
- * @return string Guild name.
- */
- public function get_name(){
- return $this->name;
- }
- /**
- * Retrieves the guild level.
- *
- * @return int Guild level.
- */
- public function get_level(){
- return $this->level;
- }
- /**
- * Retrieves the total experience earned by the guild.
- *
- * @return int Guild experience.
- */
- public function get_experience(){
- return $this->experience;
- }
- /**
- * Checks if the guild is recruiting.
- *
- * @return bool True if recruiting, false if not.
- */
- public function is_recruiting(){
- return $this->recruiting;
- }
- /**
- * Retrieves the guild's public notice.
- *
- * @return string Public notice.
- */
- public function get_comment(){
- return $this->comment;
- }
- /**
- * Retrieves the guild's private notice.
- *
- * @return string Private notice.
- */
- public function get_notice(){
- return $this->notice;
- }
- /**
- * Retrieves the number of members in the guild.
- *
- * @return int Number of members.
- */
- public function get_total_members(){
- if (! $this->flag_members){
- $this->load_members();
- }
- return $this->total_members;
- }
- /**
- * Retrieves the leader member of the guild.
- *
- * @return Guild_Member Leader.
- */
- public function get_leader(){
- if (! $this->flag_members()){
- $this->load_members;
- }
- return $this->leader;
- }
- /**
- * Retrieves a list of members$members
- *
- * @return Guild_Member[] Member list.
- */
- public function get_members(){
- if (! $this->flag_members){
- $this->load_members();
- }
- return $this->members;
- }
- }
|