Skip to content

Commit

Permalink
1.0.3
Browse files Browse the repository at this point in the history
  • Loading branch information
TobiasKrais committed Nov 19, 2017
1 parent 023b7c3 commit 67ae407
Show file tree
Hide file tree
Showing 34 changed files with 466 additions and 346 deletions.
18 changes: 9 additions & 9 deletions boot.php
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<?php
if(rex::isBackend() && is_object(rex::getUser())) {
if(\rex::isBackend() && is_object(\rex::getUser())) {
rex_perm::register('d2u_immo[]', rex_i18n::msg('d2u_immo_rights_all'));
rex_perm::register('d2u_immo[edit_lang]', rex_i18n::msg('d2u_immo_rights_edit_lang'), rex_perm::OPTIONS);
rex_perm::register('d2u_immo[edit_data]', rex_i18n::msg('d2u_immo_rights_edit_data'), rex_perm::OPTIONS);
rex_perm::register('d2u_immo[settings]', rex_i18n::msg('d2u_immo_rights_settings'), rex_perm::OPTIONS);
}

if(rex::isBackend()) {
if(\rex::isBackend()) {
rex_extension::register('CLANG_DELETED', 'rex_d2u_immo_clang_deleted');
rex_extension::register('MEDIA_IS_IN_USE', 'rex_d2u_immo_media_is_in_use');
rex_extension::register('ART_PRE_DELETED', 'rex_d2u_immo_article_is_in_use');
Expand Down Expand Up @@ -53,11 +53,11 @@ function rex_d2u_immo_clang_deleted(rex_extension_point $ep) {
$clang_id = $params['id'];

// Delete
$categories = Category::getAll($clang_id);
$categories = D2U_Immo\Category::getAll($clang_id);
foreach ($categories as $category) {
$category->delete(FALSE);
}
$properties = Property::getAll($clang_id, '', FALSE);
$properties = D2U_Immo\Property::getAll($clang_id, '', FALSE);
foreach ($properties as $property) {
$property->delete(FALSE);
}
Expand All @@ -84,19 +84,19 @@ function rex_d2u_immo_media_is_in_use(rex_extension_point $ep) {

// Contacts
$sql_contacts = rex_sql::factory();
$sql_contacts->setQuery('SELECT contact_id, firstname, lastname FROM `' . rex::getTablePrefix() . 'd2u_immo_contacts` '
$sql_contacts->setQuery('SELECT contact_id, firstname, lastname FROM `' . \rex::getTablePrefix() . 'd2u_immo_contacts` '
.'WHERE picture = "'. $filename .'" ');

// Categories
$sql_categories = rex_sql::factory();
$sql_categories->setQuery('SELECT lang.category_id, name FROM `' . rex::getTablePrefix() . 'd2u_immo_categories_lang` AS lang '
.'LEFT JOIN `' . rex::getTablePrefix() . 'd2u_immo_categories` AS categories ON lang.category_id = categories.category_id '
$sql_categories->setQuery('SELECT lang.category_id, name FROM `' . \rex::getTablePrefix() . 'd2u_immo_categories_lang` AS lang '
.'LEFT JOIN `' . \rex::getTablePrefix() . 'd2u_immo_categories` AS categories ON lang.category_id = categories.category_id '
.'WHERE picture = "'. $filename .'" ');

// Properties
$sql_properties = rex_sql::factory();
$sql_properties->setQuery('SELECT lang.property_id, name FROM `' . rex::getTablePrefix() . 'd2u_immo_properties_lang` AS lang '
.'LEFT JOIN `' . rex::getTablePrefix() . 'd2u_immo_properties` AS properties ON lang.property_id = properties.property_id '
$sql_properties->setQuery('SELECT lang.property_id, name FROM `' . \rex::getTablePrefix() . 'd2u_immo_properties_lang` AS lang '
.'LEFT JOIN `' . \rex::getTablePrefix() . 'd2u_immo_properties` AS properties ON lang.property_id = properties.property_id '
.'WHERE pictures LIKE "%'. $filename .'%" OR ground_plans LIKE "%'. $filename .'%" OR location_plans LIKE "%'. $filename .'%" OR documents LIKE "%'. $filename .'%"');

// Prepare warnings
Expand Down
62 changes: 31 additions & 31 deletions install.php

Large diffs are not rendered by default.

104 changes: 69 additions & 35 deletions lib/category.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
* @author <a href="http://www.design-to-use.de">www.design-to-use.de</a>
*/

namespace D2U_Immo;

/**
* Immo Category
*/
class Category {
class Category implements \D2U_Helper\ITranslationHelper {
/**
* @var int Database ID
*/
Expand Down Expand Up @@ -71,12 +73,12 @@ class Category {
*/
public function __construct($category_id, $clang_id) {
$this->clang_id = $clang_id;
$query = "SELECT * FROM ". rex::getTablePrefix() ."d2u_immo_categories AS categories "
."LEFT JOIN ". rex::getTablePrefix() ."d2u_immo_categories_lang AS lang "
$query = "SELECT * FROM ". \rex::getTablePrefix() ."d2u_immo_categories AS categories "
."LEFT JOIN ". \rex::getTablePrefix() ."d2u_immo_categories_lang AS lang "
."ON categories.category_id = lang.category_id "
."AND clang_id = ". $this->clang_id ." "
."WHERE categories.category_id = ". $category_id;
$result = rex_sql::factory();
$result = \rex_sql::factory();
$result->setQuery($query);
$num_rows = $result->getRows();

Expand All @@ -103,21 +105,21 @@ public function __construct($category_id, $clang_id) {
* FALSE, only this translation will be deleted.
*/
public function delete($delete_all = TRUE) {
$query_lang = "DELETE FROM ". rex::getTablePrefix() ."d2u_immo_categories_lang "
$query_lang = "DELETE FROM ". \rex::getTablePrefix() ."d2u_immo_categories_lang "
."WHERE category_id = ". $this->category_id
. ($delete_all ? '' : ' AND clang_id = '. $this->clang_id) ;
$result_lang = rex_sql::factory();
$result_lang = \rex_sql::factory();
$result_lang->setQuery($query_lang);

// If no more lang objects are available, delete
$query_main = "SELECT * FROM ". rex::getTablePrefix() ."d2u_immo_categories_lang "
$query_main = "SELECT * FROM ". \rex::getTablePrefix() ."d2u_immo_categories_lang "
."WHERE category_id = ". $this->category_id;
$result_main = rex_sql::factory();
$result_main = \rex_sql::factory();
$result_main->setQuery($query_main);
if($result_main->getRows() == 0) {
$query = "DELETE FROM ". rex::getTablePrefix() ."d2u_immo_categories "
$query = "DELETE FROM ". \rex::getTablePrefix() ."d2u_immo_categories "
."WHERE category_id = ". $this->category_id;
$result = rex_sql::factory();
$result = \rex_sql::factory();
$result->setQuery($query);
}
}
Expand All @@ -128,17 +130,17 @@ public function delete($delete_all = TRUE) {
* @return Category[] Array with Category objects.
*/
public static function getAll($clang_id) {
$query = "SELECT lang.category_id FROM ". rex::getTablePrefix() ."d2u_immo_categories_lang AS lang "
."LEFT JOIN ". rex::getTablePrefix() ."d2u_immo_categories AS categories "
$query = "SELECT lang.category_id FROM ". \rex::getTablePrefix() ."d2u_immo_categories_lang AS lang "
."LEFT JOIN ". \rex::getTablePrefix() ."d2u_immo_categories AS categories "
."ON lang.category_id = categories.category_id "
."WHERE clang_id = ". $clang_id ." ";
if(rex_addon::get('d2u_immo')->hasConfig('default_category_sort') && rex_addon::get('d2u_immo')->getConfig('default_category_sort') == 'priority') {
if(\rex_addon::get('d2u_immo')->hasConfig('default_category_sort') && \rex_addon::get('d2u_immo')->getConfig('default_category_sort') == 'priority') {
$query .= 'ORDER BY priority';
}
else {
$query .= 'ORDER BY name';
}
$result = rex_sql::factory();
$result = \rex_sql::factory();
$result->setQuery($query);

$categories = [];
Expand All @@ -162,9 +164,9 @@ public function getCanonicalTag() {
* @return Category[] Child categories.
*/
public function getChildren() {
$query = "SELECT category_id FROM ". rex::getTablePrefix() ."d2u_immo_categories "
$query = "SELECT category_id FROM ". \rex::getTablePrefix() ."d2u_immo_categories "
."WHERE parent_category_id = ". $this->category_id;
$result = rex_sql::factory();
$result = \rex_sql::factory();
$result->setQuery($query);

$children = [];
Expand All @@ -180,7 +182,7 @@ public function getChildren() {
* @return Complete title tag.
*/
public function getTitleTag() {
return '<title>'. $this->name .' / '. rex::getServerName() .'</title>';
return '<title>'. $this->name .' / '. \rex::getServerName() .'</title>';
}

/**
Expand All @@ -203,8 +205,8 @@ public function isChild() {
* @return Property[] Properties in this category
*/
public function getProperties($market_type = '', $only_online = FALSE) {
$query = "SELECT lang.property_id FROM ". rex::getTablePrefix() ."d2u_immo_properties_lang AS lang "
."LEFT JOIN ". rex::getTablePrefix() ."d2u_immo_properties AS properties "
$query = "SELECT lang.property_id FROM ". \rex::getTablePrefix() ."d2u_immo_properties_lang AS lang "
."LEFT JOIN ". \rex::getTablePrefix() ."d2u_immo_properties AS properties "
."ON lang.property_id = properties.property_id "
."WHERE category_id = ". $this->category_id ." AND clang_id = ". $this->clang_id ." ";
if($only_online || $market_type != '') {
Expand All @@ -215,13 +217,13 @@ public function getProperties($market_type = '', $only_online = FALSE) {
$query .= "AND market_type = '". $market_type ."' ";
}
}
if(rex_addon::get('d2u_immo')->hasConfig('default_property_sort') && rex_addon::get('d2u_immo')->getConfig('default_property_sort') == 'priority') {
if(\rex_addon::get('d2u_immo')->hasConfig('default_property_sort') && \rex_addon::get('d2u_immo')->getConfig('default_property_sort') == 'priority') {
$query .= 'ORDER BY priority ASC';
}
else {
$query .= 'ORDER BY name ASC';
}
$result = rex_sql::factory();
$result = \rex_sql::factory();
$result->setQuery($query);

$properties = [];
Expand All @@ -238,7 +240,7 @@ public function getProperties($market_type = '', $only_online = FALSE) {
*/
public function getMetaAlternateHreflangTags() {
$hreflang_tags = "";
foreach(rex_clang::getAll() as $rex_clang) {
foreach(\rex_clang::getAll() as $rex_clang) {
if($rex_clang->getId() == $this->clang_id && $this->translation_needs_update != "delete") {
$hreflang_tags .= '<link rel="alternate" type="text/html" hreflang="'. $rex_clang->getCode() .'" href="'. $this->getURL() .'" title="'. str_replace('"', '', $this->name) .'">';
}
Expand All @@ -260,6 +262,38 @@ public function getMetaDescriptionTag() {
return '<meta name="description" content="'. $this->teaser .'">';
}

/**
* Get objects concerning translation updates
* @param int $clang_id Redaxo language ID
* @param string $type 'update' or 'missing'
* @return Category[] Array with Category objects.
*/
public static function getTranslationHelperObjects($clang_id, $type) {
$query = 'SELECT category_id FROM '. \rex::getTablePrefix() .'d2u_immo_categories_lang '
."WHERE clang_id = ". $clang_id ." AND translation_needs_update = 'yes' "
.'ORDER BY name';
if($type == 'missing') {
$query = 'SELECT main.category_id FROM '. \rex::getTablePrefix() .'d2u_immo_categories AS main '
.'LEFT JOIN '. \rex::getTablePrefix() .'d2u_immo_categories_lang AS target_lang '
.'ON main.category_id = target_lang.category_id AND target_lang.clang_id = '. $clang_id .' '
.'LEFT JOIN '. \rex::getTablePrefix() .'d2u_immo_categories_lang AS default_lang '
.'ON main.category_id = default_lang.category_id AND default_lang.clang_id = '. \rex_config::get('d2u_helper', 'default_lang') .' '
."WHERE target_lang.category_id IS NULL "
.'ORDER BY default_lang.name';
$clang_id = \rex_config::get('d2u_helper', 'default_lang');
}
$result = \rex_sql::factory();
$result->setQuery($query);

$objects = [];
for($i = 0; $i < $result->getRows(); $i++) {
$objects[] = new Category($result->getValue("category_id"), $clang_id);
$result->next();
}

return $objects;
}

/*
* Returns the URL of this object.
* @param string $including_domain TRUE if Domain name should be included
Expand All @@ -270,11 +304,11 @@ public function getURL($including_domain = FALSE) {
$parameterArray = [];
$parameterArray['category_id'] = $this->category_id;

$this->url = rex_getUrl(rex_config::get('d2u_immo', 'article_id'), $this->clang_id, $parameterArray, "&");
$this->url = \rex_getUrl(\rex_config::get('d2u_immo', 'article_id'), $this->clang_id, $parameterArray, "&");
}

if($including_domain) {
return str_replace(rex::getServer(). '/', rex::getServer(), rex::getServer() . $this->url);
return str_replace(\rex::getServer(). '/', \rex::getServer(), \rex::getServer() . $this->url);
}
else {
return $this->url;
Expand All @@ -297,7 +331,7 @@ public function save() {
}

if($this->category_id == 0 || $pre_save_category != $this) {
$query = rex::getTablePrefix() ."d2u_immo_categories SET "
$query = \rex::getTablePrefix() ."d2u_immo_categories SET "
."parent_category_id = ". ($this->parent_category === FALSE ? 0 : $this->parent_category->category_id) .", "
."priority = ". $this->priority .", "
."picture = '". $this->picture ."' ";
Expand All @@ -309,7 +343,7 @@ public function save() {
$query = "UPDATE ". $query ." WHERE category_id = ". $this->category_id;
}

$result = rex_sql::factory();
$result = \rex_sql::factory();
$result->setQuery($query);
if($this->category_id == 0) {
$this->category_id = $result->getLastId();
Expand All @@ -321,24 +355,24 @@ public function save() {
// Save the language specific part
$pre_save_category = new Category($this->category_id, $this->clang_id);
if($pre_save_category != $this) {
$query = "REPLACE INTO ". rex::getTablePrefix() ."d2u_immo_categories_lang SET "
$query = "REPLACE INTO ". \rex::getTablePrefix() ."d2u_immo_categories_lang SET "
."category_id = '". $this->category_id ."', "
."clang_id = '". $this->clang_id ."', "
."name = '". $this->name ."', "
."teaser = '". $this->teaser ."', "
."translation_needs_update = '". $this->translation_needs_update ."', "
."updatedate = ". time() .", "
."updateuser = '". rex::getUser()->getLogin() ."' ";
."updateuser = '". \rex::getUser()->getLogin() ."' ";

$result = rex_sql::factory();
$result = \rex_sql::factory();
$result->setQuery($query);
$error = $result->hasError();
}
}

// Update URLs
if(rex_addon::get("url")->isAvailable()) {
UrlGenerator::generatePathFile([]);
if(\rex_addon::get("url")->isAvailable()) {
\UrlGenerator::generatePathFile([]);
}

return $error;
Expand All @@ -349,9 +383,9 @@ public function save() {
*/
private function setPriority() {
// Pull prios from database
$query = "SELECT category_id, priority FROM ". rex::getTablePrefix() ."d2u_immo_categories "
$query = "SELECT category_id, priority FROM ". \rex::getTablePrefix() ."d2u_immo_categories "
."WHERE category_id <> ". $this->category_id ." ORDER BY priority";
$result = rex_sql::factory();
$result = \rex_sql::factory();
$result->setQuery($query);

// When priority is too small, set at beginning
Expand All @@ -373,10 +407,10 @@ private function setPriority() {

// Save all prios
foreach($categories as $prio => $category_id) {
$query = "UPDATE ". rex::getTablePrefix() ."d2u_immo_categories "
$query = "UPDATE ". \rex::getTablePrefix() ."d2u_immo_categories "
."SET priority = ". ($prio + 1) ." " // +1 because array_splice recounts at zero
."WHERE category_id = ". $category_id;
$result = rex_sql::factory();
$result = \rex_sql::factory();
$result->setQuery($query);
}
}
Expand Down
Loading

0 comments on commit 67ae407

Please sign in to comment.