Automatically crop uploaded profile pictures (fix #10) and migrate profile editing page to Bootstrap 4 (fix #8). General improvements to the process of profile editing
This commit is contained in:
parent
2b5632fe95
commit
0ea56d1292
|
@ -14,7 +14,7 @@ class File extends MY_Controller
|
|||
if ($title == null) {
|
||||
redirect(base_url());
|
||||
} else {
|
||||
$file = $this->db->query('SELECT name, type, path FROM files WHERE name = ?', [urldecode($title)])->result_array();
|
||||
$file = $this->db->query('SELECT name, type, path, isUserData FROM files WHERE name = ?', [urldecode($title)])->result_array();
|
||||
|
||||
if (!empty($file)) {
|
||||
$file = $file[0];
|
||||
|
@ -25,7 +25,7 @@ class File extends MY_Controller
|
|||
header("Content-Disposition: attachment; filename=" . $file['name'] . '.' . explode('/', $file['type'])[1]);
|
||||
}
|
||||
|
||||
$imagePath = 'files/' . (isset($_GET['w']) || isset($_GET['h']) ? 'thumbs/' : '') . $file['name'] . (isset($_GET['w']) ? '_w' . $_GET['w'] : '') . (isset($_GET['h']) ? '_h' . $_GET['h'] : '') . '.' . explode('.', $file['path'])[1];
|
||||
$imagePath = 'files/' . ($file['isUserData'] ? 'userContent/' : '') . (isset($_GET['w']) || isset($_GET['h']) ? 'thumbs/' : '') . $file['name'] . (isset($_GET['w']) ? '_w' . $_GET['w'] : '') . (isset($_GET['h']) ? '_h' . $_GET['h'] : '') . '.' . explode('.', $file['path'])[1];
|
||||
|
||||
if (!file_exists($imagePath)) {
|
||||
$config['image_library'] = 'gd2';
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -11,9 +11,13 @@ class FileModel extends CI_Model
|
|||
parent::__construct();
|
||||
}
|
||||
|
||||
public function uploadFile($original_name, $tmpname, $size, $type)
|
||||
private function getPath($fileName, $userContent) {
|
||||
return 'files/' . ($userContent ? 'userContent/' : '') . $fileName;
|
||||
}
|
||||
|
||||
public function uploadFile($original_name, $tmpname, $size, $type, $userContent = true)
|
||||
{
|
||||
$target_dir = "files" . DIRECTORY_SEPARATOR;
|
||||
$target_dir = "files" . DIRECTORY_SEPARATOR . ($userContent ? 'userContent' . DIRECTORY_SEPARATOR : '');
|
||||
$filetype = pathinfo(basename($original_name), PATHINFO_EXTENSION);
|
||||
$target_file = $target_dir . $this->generateName() . '.' . $filetype;
|
||||
$name = explode('.' . $filetype, explode(DIRECTORY_SEPARATOR, $target_file)[1])[0];
|
||||
|
@ -22,13 +26,13 @@ class FileModel extends CI_Model
|
|||
die('File couldn\'t be uploaded!');
|
||||
}
|
||||
|
||||
$this->db->query('INSERT INTO files (name, original_name, type, size, path) VALUES (?, ?, ?, ?, ?)', [$name, $original_name, $type, $size, $target_file]);
|
||||
$this->db->query('INSERT INTO files (name, original_name, type, size, path, isUserData) VALUES (?, ?, ?, ?, ?, ?)', [$name, $original_name, $type, $size, $target_file, $userContent]);
|
||||
|
||||
return "/file/open/" . $name;
|
||||
return "/f/" . $name;
|
||||
}
|
||||
|
||||
public function uploadImage($name, $max_size, $originalname, $max_width) {
|
||||
$config['upload_path'] = './files/';
|
||||
public function uploadImage($name, $max_size, $originalname, $max_width, $userContent = true) {
|
||||
$config['upload_path'] = '.' . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . ($userContent ? 'userContent' . DIRECTORY_SEPARATOR : '');
|
||||
$config['allowed_types'] = 'gif|jpg|png';
|
||||
$config['max_size'] = $max_size;
|
||||
$config['file_name'] = $this->generateName() . "." . pathinfo(basename($originalname), PATHINFO_EXTENSION);
|
||||
|
@ -50,13 +54,65 @@ class FileModel extends CI_Model
|
|||
|
||||
$this->image_lib->resize();
|
||||
|
||||
$this->db->query('INSERT INTO files (name, original_name, type, size, path) VALUES (?, ?, ?, ?, ?)', [$data['raw_name'], $originalname, $data['file_type'], $data['file_size'] * 1024, 'files/' . $data['file_name']]);
|
||||
$this->db->query('INSERT INTO files (name, original_name, type, size, path, isUserData) VALUES (?, ?, ?, ?, ?, ?)', [$data['raw_name'], $originalname, $data['file_type'], $data['file_size'] * 1024, $this->getPath($data['file_name'], $userContent), $userContent]);
|
||||
return '/f/' . $data['raw_name'];
|
||||
}
|
||||
}
|
||||
|
||||
public function uploadFileByContent($content, $original_name, $fullType, $fileSize) {
|
||||
$target_dir = "files" . DIRECTORY_SEPARATOR;
|
||||
public function uploadCroppedImage($name, $max_size, $originalname, $width, $height, $userContent = true) {
|
||||
$config['upload_path'] = '.' . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . ($userContent ? 'userContent' . DIRECTORY_SEPARATOR : '');
|
||||
$config['allowed_types'] = 'gif|jpg|png';
|
||||
$config['max_size'] = $max_size;
|
||||
$config['file_name'] = $this->generateName() . "." . pathinfo(basename($originalname), PATHINFO_EXTENSION);
|
||||
|
||||
$this->load->library('upload', $config);
|
||||
|
||||
if ( ! $this->upload->do_upload($name)) {
|
||||
return null;
|
||||
} else {
|
||||
$data = $this->upload->data();
|
||||
|
||||
// Resize
|
||||
$config['image_library'] = 'gd2';
|
||||
$config['source_image'] = $data['full_path'];
|
||||
$config['maintain_ratio'] = TRUE;
|
||||
|
||||
$size = getimagesize($data['full_path']);
|
||||
|
||||
if($size[0] > $size[1]) {
|
||||
$config['height'] = $height;
|
||||
} else {
|
||||
$config['width'] = $width;
|
||||
}
|
||||
|
||||
$this->load->library('image_lib');
|
||||
$this->image_lib->initialize($config);
|
||||
$this->image_lib->resize();
|
||||
|
||||
$config['source_image'] = $config['upload_path'] . $config['file_name'];
|
||||
$config['maintain_ratio'] = FALSE;
|
||||
$config['height'] = $height;
|
||||
$config['width'] = $width;
|
||||
|
||||
$size = getimagesize($config['source_image']);
|
||||
|
||||
if($size[0] > $size[1]) {
|
||||
$config['x_axis'] = ($size[0] - $width) / 2;
|
||||
} else {
|
||||
$config['y_axis'] = ($size[1] - $height) / 2;
|
||||
}
|
||||
|
||||
$this->image_lib->clear();
|
||||
$this->image_lib->initialize($config);
|
||||
$this->image_lib->crop();
|
||||
|
||||
$this->db->query('INSERT INTO files (name, original_name, type, size, path, isUserData) VALUES (?, ?, ?, ?, ?, ?)', [$data['raw_name'], $originalname, $data['file_type'], $data['file_size'] * 1024, $this->getPath($data['file_name'], $userContent), $userContent]);
|
||||
return '/f/' . $data['raw_name'];
|
||||
}
|
||||
}
|
||||
|
||||
public function uploadFileByContent($content, $original_name, $fullType, $fileSize, $userContent = true) {
|
||||
$target_dir = "files" . DIRECTORY_SEPARATOR . ($userContent ? 'userContent' . DIRECTORY_SEPARATOR : '');
|
||||
$filetype = pathinfo(basename($original_name), PATHINFO_EXTENSION);
|
||||
$target_file = $target_dir . $this->generateName() . '.' . $filetype;
|
||||
$name = explode('.' . $filetype, explode(DIRECTORY_SEPARATOR, $target_file)[1])[0];
|
||||
|
@ -65,7 +121,7 @@ class FileModel extends CI_Model
|
|||
fwrite($fp, $content);
|
||||
fclose($fp);
|
||||
|
||||
$this->db->query('INSERT INTO files (name, original_name, type, size, path) VALUES (?, ?, ?, ?, ?)', [$name, $original_name, $fullType, $fileSize, $target_file]);
|
||||
$this->db->query('INSERT INTO files (name, original_name, type, size, path, isUserData) VALUES (?, ?, ?, ?, ?, ?)', [$name, $original_name, $fullType, $fileSize, $target_file, $userContent]);
|
||||
|
||||
return '/f/' . $name;
|
||||
}
|
||||
|
|
|
@ -69,6 +69,20 @@ class LoginModel extends CI_Model
|
|||
}
|
||||
}
|
||||
|
||||
public function reloadLoginSession($logindata) {
|
||||
$_SESSION['user']['displayname'] = $logindata['displayname'];
|
||||
$_SESSION['user']['username'] = $logindata['username'];
|
||||
$_SESSION['user']['rank'] = $logindata['rank'];
|
||||
$_SESSION['user']['ID'] = $logindata['ID'];
|
||||
$_SESSION['user']['ads'] = $logindata['showAds'];
|
||||
$profilePic = $logindata['profile_picture'];
|
||||
if (empty($profilePic)) {
|
||||
$_SESSION['user']['profilePic'] = '/assets/images/steam.jpg';
|
||||
} else {
|
||||
$_SESSION['user']['profilePic'] = $profilePic;
|
||||
}
|
||||
}
|
||||
|
||||
public function getUserHash($username, $password, $email, $id)
|
||||
{
|
||||
$hash = hash('sha256', $id . '//' . $username . '//' . substr($password, 0, 5) . '//' . substr($email, 0, 5));
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user