system/lib/ork3/class.Heraldry.php
<?php
class Heraldry extends Ork3 {
public function __construct() {
parent::__construct();
$this->mundane = new yapo($this->db, DB_PREFIX . 'mundane');
$this->kingdom = new yapo($this->db, DB_PREFIX . 'kingdom');
$this->park = new yapo($this->db, DB_PREFIX . 'park');
$this->unit = new yapo($this->db, DB_PREFIX . 'unit');
$this->event = new yapo($this->db, DB_PREFIX . 'event');
}
public function GetHeraldry($request) {
$response = array('Heraldry'=>'');
switch ($request['Type']) {
case 'Player': $response['Heraldry'] = base64_encode(file_get_contents(DIR_PLAYER_HERALDRY . sprintf('%06d.jpg', $request['Id']))); break;
}
return $response;
}
public function GetHeraldryUrl($request) {
$response = array('Url'=>'');
switch ($request['Type']) {
case 'Player': $response['Url'] = HTTP_PLAYER_HERALDRY . sprintf('%06d.jpg', $request['Id']); break;
case 'Park': $response['Url'] = HTTP_PARK_HERALDRY . sprintf('%05d.jpg', $request['Id']); break;
case 'Kingdom': $response['Url'] = HTTP_KINGDOM_HERALDRY . sprintf('%04d.jpg', $request['Id']); break;
case 'Unit': $response['Url'] = HTTP_UNIT_HERALDRY . sprintf('%05d.jpg', $request['Id']); break;
case 'Event': $response['Url'] = HTTP_EVENT_HERALDRY . sprintf('%05d.jpg', $request['Id']); break;
}
return $response;
}
public function SetPlayerHeraldry($request) {
$mundane = Ork3::$Lib->player->player_info($request['MundaneId']);
if ((($mundane_id = Ork3::$Lib->authorization->IsAuthorized($request['Token'])) > 0
&& Ork3::$Lib->authorization->HasAuthority($mundane_id, AUTH_PARK, $mundane['ParkId'], AUTH_EDIT))
|| $mundane_id == $request['MundaneId']) {
$this->mundane->clear();
$this->mundane->mundane_id = $request['MundaneId'];
if ($this->mundane->find()) {
$request = $this->fetch_url_heraldry($request);
$this->store_heraldry($request, DIR_PLAYER_HERALDRY, 6, 'mundane');
$this->mundane->save();
return Success();
} else {
return InvalidParameter();
}
} else {
return NoAuthorization();
}
}
private function store_heraldry($request, $path, $img_len, $table) {
if (strlen($request['Heraldry']) > 0 && strlen($request['Heraldry']) < 465000 && Common::supported_mime_types($request['HeraldryMimeType'])) {
$heraldry = @imagecreatefromstring(base64_decode($request['Heraldry']));
if($heraldry !== false)
{
$src_id = ucwords($table) . 'Id';
if (file_exists( $path.(sprintf("%0" . $img_len . "d",$request[$src_id])).'.jpg'))
unlink( $path.(sprintf("%0" . $img_len . "d",$request[$src_id])).'.jpg');
$fullpath = $path.(sprintf("%0" . $img_len . "d",$request[$src_id])).'.jpg';
imagejpeg($heraldry, $fullpath);
$this->$table->has_heraldry = 1;
}
}
}
private function fetch_url_heraldry($request) {
if (strlen($request['HeraldryUrl']) > 0 && Common::url_exists($request['HeraldryUrl'])) {
if ($this->url_file_size($request['HeraldryUrl']) < 465000) {
$request['Heraldry'] = base64_encode(file_get_contents($request['HeraldryUrl']));
$request['HeraldryMimeType'] = Common::exif_to_mime(@exif_imagetype($tmp_file), $request['HeraldryUrl']);
}
}
return $request;
}
public function SetPrincipalityHeraldry($request) {
$request['KingdomId'] = $request['PrincipalityId'];
$this->SetKingdomHeraldry($request);
}
public function url_file_size($remoteFile) {
$ch = curl_init($remoteFile);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //not necessary unless the file redirects (like the PHP example we're using here)
$data = curl_exec($ch);
curl_close($ch);
if ($data === false) {
echo 'cURL failed';
exit;
}
$contentLength = 0;
if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
$contentLength = (int)$matches[1];
}
return $contentLength;
}
public function SetKingdomHeraldry($request) {
if (($mundane_id = Ork3::$Lib->authorization->IsAuthorized($request['Token'])) > 0
&& Ork3::$Lib->authorization->HasAuthority($mundane_id, AUTH_KINGDOM, $request['KingdomId'], AUTH_EDIT)) {
$this->kingdom->clear();
$this->kingdom->kingdom_id = $request['KingdomId'];
if ($this->kingdom->find()) {
$request = $this->fetch_url_heraldry($request);
$this->store_heraldry($request, DIR_KINGDOM_HERALDRY, 4, 'kingdom');
$this->kingdom->save();
return Success();
} else {
return InvalidParameter();
}
} else {
return NoAuthorization();
}
}
public function SetParkHeraldry($request) {
if (($mundane_id = Ork3::$Lib->authorization->IsAuthorized($request['Token'])) > 0
&& Ork3::$Lib->authorization->HasAuthority($mundane_id, AUTH_PARK, $request['ParkId'], AUTH_EDIT)) {
$this->park->clear();
$this->park->park_id = $request['ParkId'];
if ($this->park->find()) {
$request = $this->fetch_url_heraldry($request);
$this->store_heraldry($request, DIR_PARK_HERALDRY, 5, 'park');
$this->park->save();
return Success();
} else {
return InvalidParameter();
}
} else {
return NoAuthorization();
}
}
public function SetUnitHeraldry($request) {
if (($mundane_id = Ork3::$Lib->authorization->IsAuthorized($request['Token'])) > 0
&& Ork3::$Lib->authorization->HasAuthority($mundane_id, AUTH_UNIT, $request['UnitId'], AUTH_EDIT)) {
// logtrace("SetUnitHeraldry() :1", $request);
$this->unit->clear();
$this->unit->unit_id = $request['UnitId'];
if ($this->unit->find()) {
$request = $this->fetch_url_heraldry($request);
$this->store_heraldry($request, DIR_UNIT_HERALDRY, 5, 'unit');
$this->unit->save();
return Success();
} else {
return InvalidParameter();
}
} else {
return NoAuthorization();
}
}
public function SetEventHeraldry($request) {
if (($mundane_id = Ork3::$Lib->authorization->IsAuthorized($request['Token'])) > 0
&& Ork3::$Lib->authorization->HasAuthority($mundane_id, AUTH_EVENT, $request['EventId'], AUTH_EDIT)) {
$this->event->clear();
$this->event->event_id = $request['EventId'];
if ($this->event->find()) {
$request = $this->fetch_url_heraldry($request);
$this->store_heraldry($request, DIR_EVENT_HERALDRY, 5, 'event');
$this->event->save();
return Success();
} else {
return InvalidParameter();
}
} else {
return NoAuthorization();
}
}
}
?>