api = new BattleNet($id, $key); } public function lists() { return $this->belongsToMany(CharacterList::class, 'wowpress_charlists_item', 'list_id', 'character_id')->withPivot('comment', 'date', 'id'); } public function user() { return $this->belongsTo(User::class); } public function getCanEditAttribute() { if (empty($this->user->ID)) { return current_user_can('wowpress_edit_raids'); } return current_user_can('wowpress_edit_raids') || (get_current_user_id() == $this->user->ID); } public function sanitize($string, $delimiter_space = "") { $string = strtolower(str_replace(" ", $delimiter_space, $string)); $string = strtolower(str_replace("'", "", $string)); return $string; } public function getRankAttribute($rank) { switch ($rank) { case 0: return "Gildenmeister"; break; case 1: return "Offizier"; break; case 2: return "Offi-Twink"; break; case 3: return "Raidlead"; break; case 4: return "Ehrenmitglied"; break; case 5: return "Raider"; break; case 6: return "Raider-Twink"; break; case 7: return "F&F"; break; case 8: return "Novize"; break; case 9: return "Sleeper"; break; default: return "Gast"; } } public function getColorAttribute() { return $this->sanitize($this->class); } public function getClassIconAttribute() { $classname = $this->sanitize($this->class); return get_template_directory_uri() . "/icons/class/$classname/$classname.png"; } public static function classIconLink($class) { $classname = (new self())->sanitize($class); return get_template_directory_uri() . "/icons/class/$classname/$classname.png"; } public function getSpecIconAttribute() { $classname = $this->sanitize($this->class); $specname = $this->sanitize($this->spec); return get_template_directory_uri() . "/icons/class/$classname/$specname.png"; } public static function specIconLink($class, $spec) { $classname = (new self())->sanitize($class); $specname = (new self())->sanitize($spec); return get_template_directory_uri() . "/icons/class/$classname/$specname.png"; } public function updateFromAPI() { $realm = $this->sanitize($this->realm, "-"); $char_from_api = $this->api->getCharacter($this->name, $realm); if (!array_key_exists('character_class', $char_from_api)) { return false; } $this->class = $char_from_api['character_class']['name']; $this->spec = $char_from_api['active_spec']['name']; $this->id_blizz = $char_from_api['id']; $guild_data = $this->api->getGuildRank($this->name, $realm); if (!empty($guild_data['rank'])) { $this->guild = $guild_data['guild']; $this->rank = $guild_data['rank']; } else { $this->rank = 99; } $this->save(); return $char_from_api; } public function updateMedia($force = false) { if (empty($this->id_blizz)) { return false; } $character_dir = wp_upload_dir()['basedir'] . "/characters/" . $this->ID . "/"; if (!is_dir($character_dir)) { mkdir($character_dir, 0777, true); } $id = $this->id_blizz; $mod = $id % 256; $realm = $this->sanitize($this->realm, '-'); $data = $this->api->getMedia($this->name, $this->realm, 0); if (key_exists("assets", $data)) { foreach ($data['assets'] as $asset) { if ($asset['key'] == 'avatar') { file_put_contents($character_dir . "avatar.jpg", file_get_contents($asset['value'])); return true; } } } } public function getAvatarAttribute() { $character_dir = wp_upload_dir()['basedir'] . "/characters/" . $this->ID . "/avatar.jpg"; $character_dir_uri = wp_upload_dir()['baseurl'] . "/characters/" . $this->ID . "/avatar.jpg"; if (file_exists($character_dir)) { return $character_dir_uri; } else { return ""; } } public function getClassButtonAttribute() { require(get_template_directory() . "/template-parts/components/class-button.php"); } }