Database refactoring and improving blog comments, blog post history and more
This commit is contained in:
@@ -26,18 +26,38 @@
|
||||
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]);
|
||||
$data = $this->db->query('SELECT title, description, content, downloadName, openSourceName, customLinkName FROM projects_translations WHERE projectID = ? AND lang = ? ORDER BY lang', [$post['ID'], 'de'])->result_array();
|
||||
|
||||
if(empty($data)) {
|
||||
$postList[$i] = array_merge($post, [
|
||||
'title' => 'Not found',
|
||||
'description' => 'Not found',
|
||||
'content' => 'Not found',
|
||||
]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$data = $data[0];
|
||||
if($lang == 'de') {
|
||||
$postList[$i] = array_merge($post, $data);
|
||||
continue;
|
||||
}
|
||||
|
||||
$dataLang = $this->db->query('SELECT title, description, content, downloadName, openSourceName, customLinkName FROM projects_translations WHERE projectID = ? AND lang = ? ORDER BY lang', [$post['ID'], $lang])->result_array();
|
||||
|
||||
if (empty($dataLang)) {
|
||||
$postList[$i] = array_merge($post, $data);
|
||||
continue;
|
||||
}
|
||||
|
||||
$dataLang = $dataLang[0];
|
||||
|
||||
$merged = [];
|
||||
foreach ($data[0] as $key => $value) {
|
||||
if (($value == NULL && $data[1][$key] == NULL) || ($value != NULL && $data[1][$key] == NULL)) {
|
||||
foreach ($data as $key => $value) {
|
||||
if (($value == NULL && $dataLang[$key] == NULL) || ($value != NULL && $dataLang[$key] == NULL)) {
|
||||
$merged[$key] = $value;
|
||||
} else {
|
||||
$merged[$key] = $data[1][$key];
|
||||
$merged[$key] = $dataLang[$key];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,10 +68,29 @@
|
||||
|
||||
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();
|
||||
$collections = $this->db->query('SELECT c.*, count(p.projectID) count FROM projects_categories c LEFT JOIN projects_entry_categories p ON c.categoryID = p.categoryID GROUP BY c.categoryID ORDER BY c.name')->result_array();
|
||||
|
||||
if($_SESSION['site_lang'] !== 'de') {
|
||||
$collectionsLang = $this->db->query('SELECT categoryID, name, displayname FROM projects_categories WHERE lang = ?', [$_SESSION['site_lang']])->result_array();
|
||||
|
||||
$categoryIDs = array_column($collections, 'categoryID');
|
||||
foreach ($collectionsLang as $item) {
|
||||
$key = array_search($item['categoryID'], $categoryIDs);
|
||||
$collections[$key] = array_merge($collections[$key], $item);
|
||||
}
|
||||
}
|
||||
|
||||
return $collections;
|
||||
}
|
||||
|
||||
public function getCategoriesRaw() {
|
||||
$categories = $this->db->query('SELECT ID, GROUP_CONCAT(c.name) name, GROUP_CONCAT(c.displayname) displayname, (SELECT COUNT(*) FROM projects_entry_categories p WHERE c.categoryID = p.categoryID) count
|
||||
FROM projects_categories c
|
||||
GROUP BY c.categoryID
|
||||
ORDER BY ID')->result_array();
|
||||
return $categories;
|
||||
}
|
||||
|
||||
public function editEntry($data, $id)
|
||||
{
|
||||
$this->db->update('projects', $data, ['id' => $id]);
|
||||
@@ -120,7 +159,19 @@
|
||||
|
||||
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();
|
||||
$categories = $this->db->query('SELECT * FROM projects_categories WHERE ID IN (SELECT categoryID FROM projects_entry_categories WHERE projectID = ?) AND lang = "de"', [$id])->result_array();
|
||||
|
||||
if($_SESSION['site_lang'] != 'de') {
|
||||
$categoriesLang = $this->db->query('SELECT categoryID, name, displayname FROM projects_categories WHERE lang = ?', [$_SESSION['site_lang']])->result_array();
|
||||
|
||||
$categoryIDs = array_column($categories, 'categoryID');
|
||||
foreach ($categoriesLang as $item) {
|
||||
$key = array_search($item['categoryID'], $categoryIDs);
|
||||
$categories[$key] = array_merge($categories[$key], $item);
|
||||
}
|
||||
}
|
||||
|
||||
return $categories;
|
||||
}
|
||||
|
||||
public function updateCategories($postID, $categories)
|
||||
|
Reference in New Issue
Block a user