for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace GeminiLabs\SiteReviews\Modules\Avatars;
abstract class AbstractSvgAvatar
{
public function create(string $from): string
return $this->save($this->generate($from), $this->filename($from));
}
abstract public function generate(string $from): string;
abstract protected function filename(string $from): string;
protected function save(string $contents, string $name): string
$uploadsDir = wp_upload_dir();
$baseDir = trailingslashit($uploadsDir['basedir']);
$baseUrl = trailingslashit($uploadsDir['baseurl']);
$pathDir = trailingslashit(glsr()->id).trailingslashit('avatars');
$filename = sprintf('%s.svg', $name ?: 'blank');
$filepath = $baseDir.$pathDir.$filename;
if (!file_exists($filepath)) {
wp_mkdir_p($baseDir.$pathDir);
$fp = @fopen($filepath, 'wb');
if (false === $fp) {
return '';
mbstring_binary_safe_encoding();
$dataLength = strlen($contents);
$bytesWritten = fwrite($fp, $contents);
reset_mbstring_encoding();
fclose($fp);
if ($dataLength !== $bytesWritten) {
chmod($filepath, fileperms(ABSPATH.'index.php') & 0777 | 0644);
return set_url_scheme($baseUrl.$pathDir.$filename);