Holiday changes ;)
This commit is contained in:
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));
|
||||
|
@@ -229,10 +229,18 @@
|
||||
}
|
||||
|
||||
private function mergeReplyData($post) {
|
||||
$data = $this->db->query('SELECT uuid, username, displayname FROM user_posts LEFT JOIN users ON users.ID = user_posts.user_id WHERE user_posts.ID = ?', [$post['reply_to']])->result_array();
|
||||
$post['replyToUuid'] = $data[0]['uuid'];
|
||||
$post['replyToUsername'] = $data[0]['username'];
|
||||
$post['replyToDisplayname'] = $data[0]['displayname'];
|
||||
$data = $this->db->query('SELECT p.*, username, displayname FROM user_posts p LEFT JOIN users ON users.ID = p.user_id WHERE p.ID = ?', [$post['reply_to']])->result_array();
|
||||
$data = $this->preparePostList($data);
|
||||
if(!empty($data)) {
|
||||
$post['replyToPost'] = $data[0];
|
||||
} else {
|
||||
$post['replyToPost'] = [
|
||||
'username' => '',
|
||||
'displayname' => '',
|
||||
'content' => 'Nicht existent',
|
||||
'date' => '',
|
||||
];
|
||||
}
|
||||
|
||||
return $post;
|
||||
}
|
||||
|
@@ -1,207 +1,243 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
class ProjectsModel extends CI_Model {
|
||||
class ProjectsModel extends CI_Model
|
||||
{
|
||||
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
$this->load->model('projectsModel', '', TRUE);
|
||||
}
|
||||
|
||||
public function getEntries($category) {
|
||||
if($category !== 'all') {
|
||||
$content = $this->db->query('SELECT *, (SELECT (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = p.ID AND type = 1) - (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = p.ID AND type = -1)) voteCount FROM projects p WHERE ID IN (SELECT projectID FROM projects_entry_categories WHERE categoryID = ?) ORDER BY datetime DESC', [$category])->result_array();
|
||||
} else {
|
||||
$content = $this->db->query('SELECT *, (SELECT (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = p.ID AND type = 1) - (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = p.ID AND type = -1)) voteCount FROM projects p ORDER BY datetime DESC')->result_array();
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->load->model('projectsModel', '', TRUE);
|
||||
}
|
||||
|
||||
$content = $this->mergeTranslationData($content, $_SESSION['site_lang']);
|
||||
public function getEntries($category)
|
||||
{
|
||||
if ($category !== 'all') {
|
||||
$content = $this->db->query('SELECT *, (SELECT (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = p.ID AND type = 1) - (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = p.ID AND type = -1)) voteCount FROM projects p WHERE ID IN (SELECT projectID FROM projects_entry_categories WHERE categoryID = ?) ORDER BY datetime DESC', [$category])->result_array();
|
||||
} else {
|
||||
$content = $this->db->query('SELECT *, (SELECT (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = p.ID AND type = 1) - (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = p.ID AND type = -1)) voteCount FROM projects p ORDER BY datetime DESC')->result_array();
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
$content = $this->mergeTranslationData($content, $_SESSION['site_lang']);
|
||||
|
||||
public function getCategories() {
|
||||
$collections = $this->db->query('SELECT c.*, count(p.projectID) count FROM projects_categories c LEFT JOIN projects_entry_categories p ON c.ID = p.categoryID GROUP BY c.ID ORDER BY c.collection')->result_array();
|
||||
return $collections;
|
||||
}
|
||||
|
||||
public function editEntry($data, $id) {
|
||||
$this->db->update('projects', $data, ['id' => $id]);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
public function addEntry($data) {
|
||||
$this->db->insert('projects', $data);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
public function delete($id) {
|
||||
$this->db->query('DELETE FROM projects WHERE ID = ? LIMIT 1', [$id]);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
public function deleteCategory($id) {
|
||||
$this->db->query('DELETE FROM projects_entry_categories WHERE categoryID = ?', [$id]);
|
||||
$this->db->query('DELETE FROM projects_categories WHERE ID = ? LIMIT 1', [$id]);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
public function checkIfExists($id) {
|
||||
$result = $this->db->query('SELECT ID FROM projects WHERE ID = ? LIMIT 1', [$id])->result_array();
|
||||
if(!empty($result)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
return $content;
|
||||
}
|
||||
}
|
||||
|
||||
public function checkIfNameExists($name) {
|
||||
$result = $this->db->query('SELECT ID FROM projects WHERE name = ? LIMIT 1', [$name])->result_array();
|
||||
if(!empty($result)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
public function mergeTranslationData($postList, $lang = 'de')
|
||||
{
|
||||
foreach ($postList as $i => $post) {
|
||||
$data = $this->db->query('SELECT * FROM projects_translations WHERE projectID = ? AND (lang = ? OR lang = ?) ORDER BY lang', [$post['ID'], 'de', $lang])->result_array();
|
||||
if (sizeof($data) == 1) {
|
||||
$postList[$i] = array_merge($post, $data[0]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$merged = [];
|
||||
foreach ($data[0] as $key => $value) {
|
||||
if (($value == NULL && $data[1][$key] == NULL) || ($value != NULL && $data[1][$key] == NULL)) {
|
||||
$merged[$key] = $value;
|
||||
} else {
|
||||
$merged[$key] = $data[1][$key];
|
||||
}
|
||||
}
|
||||
|
||||
$postList[$i] = array_merge($post, $merged);
|
||||
}
|
||||
return $postList;
|
||||
}
|
||||
}
|
||||
|
||||
public function getEntry($id) {
|
||||
return $this->db->query('SELECT * FROM projects WHERE ID = ? LIMIT 1', [$id])->result_array();
|
||||
}
|
||||
|
||||
public function getEntryByName($name, $lang = 'de') {
|
||||
$result = $this->db->query('SELECT * FROM projects WHERE name = ? LIMIT 1', [$name])->result_array();
|
||||
|
||||
$result = $this->mergeTranslationData($result, $lang);
|
||||
|
||||
return !empty($result) ? $result[0] : null;
|
||||
}
|
||||
|
||||
public function getEntryCategories($id) {
|
||||
return $this->db->query('SELECT * FROM projects_categories WHERE ID IN (SELECT categoryID FROM projects_entry_categories WHERE projectID = ?)', [$id])->result_array();
|
||||
}
|
||||
|
||||
public function resetEntryCategories($postID) {
|
||||
$this->db->query('DELETE FROM projects_entry_categories WHERE projectID = ?', $postID);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
public function addCategoryToEntryID($postID, $categoryID) {
|
||||
$this->db->query('INSERT INTO projects_entry_categories (projectID, categoryID) VALUES (?, ?)', [$postID, $categoryID]);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
public function updateCategories($postID, $categories) {
|
||||
$this->resetEntryCategories($postID);
|
||||
foreach ($categories as $category) {
|
||||
$this->addCategoryToEntryID($postID, $category);
|
||||
public function getCategories()
|
||||
{
|
||||
$collections = $this->db->query('SELECT c.*, count(p.projectID) count FROM projects_categories c LEFT JOIN projects_entry_categories p ON c.ID = p.categoryID GROUP BY c.ID ORDER BY c.collection')->result_array();
|
||||
return $collections;
|
||||
}
|
||||
}
|
||||
|
||||
public function addCategoryToEntryName($name, $categoryID) {
|
||||
$id = $this->db->query('SELECT ID FROM projects WHERE name = ? LIMIT 1', [$name])->result_array()[0];
|
||||
$this->addCategoryToEntryID(intval($id['ID']), $categoryID);
|
||||
}
|
||||
public function editEntry($data, $id)
|
||||
{
|
||||
$this->db->update('projects', $data, ['id' => $id]);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
public function getPrevProject($id) {
|
||||
$result = $this->db->query('SELECT * FROM projects WHERE datetime < (SELECT datetime FROM projects WHERE ID = ?) ORDER BY datetime DESC LIMIT 1', [$id])->result_array();
|
||||
public function addEntry($data)
|
||||
{
|
||||
$this->db->insert('projects', $data);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
$result = $this->mergeTranslationData($result, $_SESSION['site_lang']);
|
||||
public function delete($id)
|
||||
{
|
||||
$this->db->query('DELETE FROM projects WHERE ID = ? LIMIT 1', [$id]);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
public function deleteCategory($id)
|
||||
{
|
||||
$this->db->query('DELETE FROM projects_entry_categories WHERE categoryID = ?', [$id]);
|
||||
$this->db->query('DELETE FROM projects_categories WHERE ID = ? LIMIT 1', [$id]);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
public function getNextProject($id) {
|
||||
$result = $this->db->query('SELECT * FROM projects WHERE datetime > (SELECT datetime FROM projects WHERE ID = ?) ORDER BY datetime ASC LIMIT 1', [$id])->result_array();
|
||||
public function checkIfExists($id)
|
||||
{
|
||||
$result = $this->db->query('SELECT ID FROM projects WHERE ID = ? LIMIT 1', [$id])->result_array();
|
||||
if (!empty($result)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$result = $this->mergeTranslationData($result, $_SESSION['site_lang']);
|
||||
public function checkIfNameExists($name)
|
||||
{
|
||||
$result = $this->db->query('SELECT ID FROM projects WHERE name = ? LIMIT 1', [$name])->result_array();
|
||||
if (!empty($result)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
public function getEntry($id)
|
||||
{
|
||||
return $this->db->query('SELECT * FROM projects WHERE ID = ? LIMIT 1', [$id])->result_array();
|
||||
}
|
||||
|
||||
public function addVote($projectID, $userID, $voteType) {
|
||||
$this->db->query('DELETE FROM projects_entry_votes WHERE projectID = ? AND userID = ?', [$projectID, $userID]);
|
||||
$this->db->query('INSERT INTO projects_entry_votes (projectID, userID, type) VALUES (?, ?, ?)', [$projectID, $userID, $voteType]);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('projects', 'addVote');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
public function getEntryByName($name, $lang = 'de')
|
||||
{
|
||||
$result = $this->db->query('SELECT * FROM projects WHERE name = ? LIMIT 1', [$name])->result_array();
|
||||
|
||||
public function getVoteCount($projectID) {
|
||||
$result = $this->db->query('SELECT (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = ? AND type = 1) - (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = ? AND type = -1) voteCount', [$projectID, $projectID])->result_array();
|
||||
return $result[0]['voteCount'];
|
||||
}
|
||||
$result = $this->mergeTranslationData($result, $lang);
|
||||
|
||||
public function getUserVoteType($projectID, $userID) {
|
||||
$result = $this->db->query('SELECT type FROM projects_entry_votes WHERE projectID = ? AND userID = ?', [$projectID, $userID])->result_array();
|
||||
if(empty($result))
|
||||
return 0;
|
||||
return $result[0]['type'];
|
||||
}
|
||||
return !empty($result) ? $result[0] : null;
|
||||
}
|
||||
|
||||
public function createNewProjectDraft() {
|
||||
$this->db->query('INSERT INTO projects () VALUES ()');
|
||||
public function getEntryCategories($id)
|
||||
{
|
||||
return $this->db->query('SELECT * FROM projects_categories WHERE ID IN (SELECT categoryID FROM projects_entry_categories WHERE projectID = ?)', [$id])->result_array();
|
||||
}
|
||||
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
public function updateCategories($postID, $categories)
|
||||
{
|
||||
$this->resetEntryCategories($postID);
|
||||
foreach ($categories as $category) {
|
||||
$this->addCategoryToEntryID($postID, $category);
|
||||
}
|
||||
}
|
||||
|
||||
$data = $this->db->query('SELECT ID FROM projects ORDER BY ID DESC LIMIT 1')->result_array();
|
||||
return $data[0]['ID'];
|
||||
}
|
||||
public function resetEntryCategories($postID)
|
||||
{
|
||||
$this->db->query('DELETE FROM projects_entry_categories WHERE projectID = ?', $postID);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
public function updateProject($id, $translations, $url, $download, $openSource, $customLink, $date, $image) {
|
||||
$this->db->query('UPDATE projects SET name = ?, isDownloadable = ?, downloadLink = ?, isOpenSource = ?, openSourceLink = ?, customLink = ?, datetime = ?, source = ? WHERE ID = ?', [$url, $download['available'], $download['link'], $openSource['available'], $openSource['link'], $customLink['link'], $date, $image, $id]);
|
||||
public function addCategoryToEntryID($postID, $categoryID)
|
||||
{
|
||||
$this->db->query('INSERT INTO projects_entry_categories (projectID, categoryID) VALUES (?, ?)', [$postID, $categoryID]);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
$this->db->cache_off();
|
||||
foreach($translations as $lang => $translation) {
|
||||
$data = $this->db->query('SELECT translationID FROM projects_translations WHERE projectID = ? AND lang = ?', [$id, $lang])->result_array();
|
||||
public function addCategoryToEntryName($name, $categoryID)
|
||||
{
|
||||
$id = $this->db->query('SELECT ID FROM projects WHERE name = ? LIMIT 1', [$name])->result_array()[0];
|
||||
$this->addCategoryToEntryID(intval($id['ID']), $categoryID);
|
||||
}
|
||||
|
||||
if(empty($data)) {
|
||||
$this->db->query('INSERT INTO projects_translations (projectID, lang) VALUES (?, ?)', [$id, $lang]);
|
||||
public function getPrevProject($id)
|
||||
{
|
||||
$result = $this->db->query('SELECT * FROM projects WHERE datetime < (SELECT datetime FROM projects WHERE ID = ?) ORDER BY datetime DESC LIMIT 1', [$id])->result_array();
|
||||
|
||||
$result = $this->mergeTranslationData($result, $_SESSION['site_lang']);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getNextProject($id)
|
||||
{
|
||||
$result = $this->db->query('SELECT * FROM projects WHERE datetime > (SELECT datetime FROM projects WHERE ID = ?) ORDER BY datetime ASC LIMIT 1', [$id])->result_array();
|
||||
|
||||
$result = $this->mergeTranslationData($result, $_SESSION['site_lang']);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function addVote($projectID, $userID, $voteType)
|
||||
{
|
||||
$this->db->query('DELETE FROM projects_entry_votes WHERE projectID = ? AND userID = ?', [$projectID, $userID]);
|
||||
$this->db->query('INSERT INTO projects_entry_votes (projectID, userID, type) VALUES (?, ?, ?)', [$projectID, $userID, $voteType]);
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
$this->db->cache_delete('projects', 'addVote');
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
}
|
||||
|
||||
public function getVoteCount($projectID)
|
||||
{
|
||||
$result = $this->db->query('SELECT (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = ? AND type = 1) - (SELECT COUNT(*) FROM projects_entry_votes WHERE projectID = ? AND type = -1) voteCount', [$projectID, $projectID])->result_array();
|
||||
return $result[0]['voteCount'];
|
||||
}
|
||||
|
||||
public function getUserVoteType($projectID, $userID)
|
||||
{
|
||||
$result = $this->db->query('SELECT type FROM projects_entry_votes WHERE projectID = ? AND userID = ?', [$projectID, $userID])->result_array();
|
||||
if (empty($result))
|
||||
return 0;
|
||||
return $result[0]['type'];
|
||||
}
|
||||
|
||||
public function createNewProjectDraft()
|
||||
{
|
||||
$this->db->query('INSERT INTO projects () VALUES ()');
|
||||
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
|
||||
$data = $this->db->query('SELECT ID FROM projects ORDER BY ID DESC LIMIT 1')->result_array();
|
||||
return $data[0]['ID'];
|
||||
}
|
||||
|
||||
public function updateProject($id, $translations, $url, $download, $openSource, $customLink, $date, $image)
|
||||
{
|
||||
$this->db->query('UPDATE projects SET name = ?, isDownloadable = ?, downloadLink = ?, isOpenSource = ?, openSourceLink = ?, customLink = ?, datetime = ?, source = ? WHERE ID = ?', [$url, $download['available'], $download['link'], $openSource['available'], $openSource['link'], $customLink['link'], $date, $image, $id]);
|
||||
|
||||
$this->db->cache_off();
|
||||
foreach ($translations as $lang => $translation) {
|
||||
$data = $this->db->query('SELECT translationID FROM projects_translations WHERE projectID = ? AND lang = ?', [$id, $lang])->result_array();
|
||||
|
||||
if (empty($data)) {
|
||||
$this->db->query('INSERT INTO projects_translations (projectID, lang) VALUES (?, ?)', [$id, $lang]);
|
||||
|
||||
$data = $this->db->query('SELECT translationID FROM projects_translations WHERE projectID = ? AND lang = ?', [$id, $lang])->result_array();
|
||||
}
|
||||
|
||||
$translationID = $data[0]['translationID'];
|
||||
|
||||
$this->db->query('UPDATE projects_translations SET title = ?, description = ?, content = ?, downloadName = ?, openSourceName = ?, customLinkName = ? WHERE translationID = ?', array_merge($translation, [$download['name'], $openSource['name'], $customLink['name'], $translationID]));
|
||||
}
|
||||
$this->db->cache_on();
|
||||
|
||||
$translationID = $data[0]['translationID'];
|
||||
|
||||
$this->db->query('UPDATE projects_translations SET title = ?, description = ?, content = ?, downloadName = ?, openSourceName = ?, customLinkName = ? WHERE translationID = ?', array_merge($translation, [$download['name'], $openSource['name'], $customLink['name'], $translationID]));
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
}
|
||||
$this->db->cache_on();
|
||||
|
||||
$this->db->cache_delete('admin', 'projects');
|
||||
$this->db->cache_delete('projects', 'index');
|
||||
$this->db->cache_delete('projects', 'entry');
|
||||
}
|
||||
|
||||
public function mergeTranslationData($postList, $lang = 'de') {
|
||||
foreach ($postList as $i => $post) {
|
||||
$data = $this->db->query('SELECT * FROM projects_translations WHERE projectID = ? AND (lang = ? OR lang = ?) ORDER BY lang', [$post['ID'], 'de', $lang])->result_array();
|
||||
if(sizeof($data) == 1) {
|
||||
$postList[$i] = array_merge($post, $data[0]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$merged = [];
|
||||
foreach ($data[0] as $key => $value) {
|
||||
if(($value == NULL && $data[1][$key] == NULL) || ($value != NULL && $data[1][$key] == NULL)) {
|
||||
$merged[$key] = $value;
|
||||
} else {
|
||||
$merged[$key] = $data[1][$key];
|
||||
public function mergeFullTranslationData($postList)
|
||||
{
|
||||
foreach ($postList as $i => $post) {
|
||||
$data = $this->db->query('SELECT * FROM projects_translations WHERE projectID = ? ORDER BY lang', [$post['ID']])->result_array();
|
||||
foreach ($data as $lang) {
|
||||
$postList[$i]['translations'][$lang['lang']] = $lang;
|
||||
}
|
||||
}
|
||||
|
||||
$postList[$i] = array_merge($post, $merged);
|
||||
return $postList;
|
||||
}
|
||||
return $postList;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user