 <?php
    /**
     * Monster details page file.
     *
     * Provides a class with all the properties and methods to display the page.
     *
     * @category Page
     */

    /**
     * Require dependent files if not present.
     */
    require_once(PATH::PAGE . "Page.php");
    require_once(PATH::ENTITY . "K_Unit.php");


    /**
     * Monster details page model.
     *
     * @category Page
     */
    class Monster_Info_Page extends Page{

        /**
         * @var \K_Unit[] Selected unit array.
         *
         * [0]: Unawakened monster (null if default purple).
         * [1]: Awakened monster (null if silver).
         * [2]: Second awakened monster (null if unavailaable).
         */
        public $monster = [];

        /**
         * @var int[] IDs to other units of the family
         */
        public $family = [];

        /**
         * Constructor.
         *
         * Retrieves the data and initializes the variables.
         *
         * @param resource $db Connection to the database.
         * @param int $id Monster id. Can be any of the awakening stages
         */
        public function __construct($db, $id){
            parent::__construct($db);
            $this->view = PATH::VIEW . "monster_info.php";
            $title = "";
            $monster = new K_Unit($db, $id);
            if ($monster->can_awaken == 0){
                // Silver star monster.
                $this->monster[0] = $monster;
                $this->monster[1] = null;
                $this->monster[2] = null;
                $title = $this->monster[0]->element_name . " " . $this->monster[0]->name;
            }
            elseif ($monster->can_awaken == 1 && $monster->awakens_to == "" && $monster->awakens_from == ""){
                // Default purple (Rainbowmon or King Angelmon)
                $this->monster[0] = null;
                $this->monster[1] = $monster;
                $this->monster[2] = null;
                $title = $this->monster[1]->name;
            }
            elseif ($monster->can_awaken == 1 && $monster->awakens_to == "" && strlen($monster->awakens_from) > 0){
                // Normal monster, already awakened, no 2a.
                $this->monster[0] = new K_Unit($db, $monster->awakens_from);
                $this->monster[1] = $monster;
                $this->monster[2] = null;
                $title = $this->monster[1]->name . " - " .$this->monster[0]->element_name . " " . $this->monster[0]->name;
                $monster = $this->monster[0];
            }
            elseif ($monster->can_awaken == 1 && strlen($monster->awakens_to) > 0 && $monster->awakens_from == ""){
                // Normal monster, not awakened, may have 2a.
                $this->monster[0] = $monster;
                $this->monster[1] = new K_Unit($db, $this->monster[0]->awakens_to);
                if ($this->monster[1]->awakens_to == ""){
                    $this->monster[2] = null;
                }
                else{
                    $this->monster[2] = new K_Unit($db, $this->monster[1]->awakens_to);
                }
                $title = $this->monster[1]->name . " - " .$this->monster[0]->element_name . " " . $this->monster[0]->name;
            }

            $this->title = $title ." - SWDB";
            $this->description = $title . " info - SWDB";
            $this->canonical = URL::BASE . "monster_info/" . $id;
        }
    }
?>

