<?php
namespace entities\html;

class Image extends Element
{
   public function __construct($src, $id=null, $class=null)
   {
      parent::__construct("img", $id, $class, false);
      $this->add_attribute("src", $src);
   }
}
<?php
namespace entities\html;

class Form
{
   public function __construct($id=null)
   {
      $this->id = $id;
   }
   public function __toString()
   {
      return $this->build_html();
   }
   private function build_html()
   {
      $markup = "<form method=\"post\"";
      if (!is_null($this->id))
      {
         $markup .= " id=\"" . $this->id . "\"";
      }
      $markup .= ">\n";
      $markup .= $this->build_content();
      $markup .= "</form>\n";
      return $markup;
   }
   protected function build_content()
   {
      return "&nbsp;\n";
   }
}
<?php
namespace entities\html;

class Meta extends Element
{
   public function __construct($content, $name=null, $http_equiv=null)
   {
      parent::__construct("meta", null, null, false);
      $this->add_attribute("name", $name);
      $this->add_attribute("http-equiv", $http_equiv);
      $this->add_attribute("content", $content);
   }
}
<?php
namespace entities\evr;

class Trailer extends \entities\html\IFrame
{
   public function __construct()
   {
      parent::__construct(
         "trailer", $GLOBALS["TRAILER_URL"], $GLOBALS["TRAILER_WIDTH"],
         $GLOBALS["TRAILER_HEIGHT"]);
      $this->add_attribute("webkitAllowFullScreen", true);
      $this->add_attribute("allowFullScreen", true);
   }
}
<?php
namespace entities\evr;
use \entities\html as html;

class Emoticon_Vs_Rainbow extends html\Page
{
   private $markup = "";
   public function __construct()
   {
      parent::__construct($GLOBALS["PAGE_TITLE"]);
   }
   protected function build_content()
   {
      $markup = new html\Image(
         $GLOBALS["LOADING_ANIMATION_PATH"], "loading_animation");
      $markup .= new html\Script($this->build_script_path());
      return $markup;
   }
   private function build_script_path()
   {
      return $this->determine_script_root() . $GLOBALS["GAME_PATH"];
   }
   private function determine_script_root()
   {
      $path = "src/game/stable/";
      if ($this->visitor_is_local() || isset($_GET["v"]))
      {
         if (!isset($_GET["s"]))
         {
            $path = "src/game/volatile/";
         }
      }
      return $path;
   }
   private function visitor_is_local()
   {
      $localhost = "127.0.0.1";
      $network = "/^192\.168\.0\..*/";
      $address = $_SERVER["REMOTE_ADDR"];
      return $address == $localhost || preg_match($network, $address);
   }
}
<?php
namespace entities\evr\security;

class Password_Mail extends Mail
{
   public function __construct($recipient, $password)
   {
      parent::__construct(
         $recipient, $GLOBALS["EMAIL_SENDER"],
         $GLOBALS["NEW_PASSWORD_SUBJECT"]);
      $this->password = $password;
   }
   protected function build_message()
   {
      $message = $GLOBALS["NEW_PASSWORD_PREFACE"] . " ";
      $message .= $this->password . "\n";
      return $message;
   }
}
<?php
namespace entities\evr\security;

class Cookie
{
   public function __construct()
   {
      $this->name = $GLOBALS["COOKIE_NAME"];
   }
   public function exists()
   {
      return isset($_COOKIE[$this->name]) && $_COOKIE[$this->name] != "";
   }
   public function set($username, $hash)
   {
      $value = "$username|$hash";
      $expiration = time() + 60 * 60 * 24 * 30;
      $domain = $_SERVER["HTTP_HOST"];
      setrawcookie($this->name, $value, $expiration, "/", $domain);
   }
   public function get()
   {
      return $_COOKIE[$this->name];
   }
   public function get_username()
   {
      $fields = explode("|", $this->get());
      return $fields[0];
   }
   public function get_hash()
   {
      $fields = explode("|", $this->get());
      return $fields[1];
   }
}
<?php
namespace entities\evr\security;

class Mail
{
   public function __construct($recipient, $sender, $subject)
   {
      $this->recipient = $recipient;
      $this->sender = $sender;
      $this->subject = $subject;
   }
   public function send()
   {
      $header = $this->build_header();
      $message = $this->build_message();
      return mail($this->recipient, $this->subject, $message, $header);
   }
   private function build_header()
   {
      $header = "From: " . $this->sender . "\r\n";
      $header .= "Content-Type: text/plain\r\n";
      return $header;
   }
   protected function build_message()
   {
      return "default message\n";
   }
}
216.73.216.221
216.73.216.221
216.73.216.221
 
June 6, 2016