diff --git a/app/handlers/feed.php b/app/handlers/feed.php index 56099ff..24e5bd7 100644 --- a/app/handlers/feed.php +++ b/app/handlers/feed.php @@ -98,6 +98,10 @@ function update_feed($user_id, $feed_id) { $subscription = Model\Feed\get_feed($user_id, $feed_id); + if ($subscription['enabled'] == 0) { + return false; + } + list($feed, $resource, $error_message) = fetch_feed( $subscription['feed_url'], (bool) $subscription['download_content'], @@ -115,8 +119,14 @@ function update_feed($user_id, $feed_id) )); return false; + } else if (Model\Feed\is_duplicated_feed($user_id, $feed_id, $resource->getUrl())) { + Model\Feed\update_feed($user_id, $feed_id, array( + 'enabled' => 0, + 'last_checked' => time(), + 'parsing_error' => 1, + 'parsing_error_message' => t('Duplicated feed'), + )); } else { - Model\Feed\update_feed($user_id, $feed_id, array( 'feed_url' => $resource->getUrl(), 'etag' => $resource->getEtag(), diff --git a/app/locales/ar_AR/translations.php b/app/locales/ar_AR/translations.php index 8b527bb..13d6040 100644 --- a/app/locales/ar_AR/translations.php +++ b/app/locales/ar_AR/translations.php @@ -254,4 +254,5 @@ return array( // 'Current Password' => '', // 'New Password' => '', // 'Wrong password' => '', + // 'Duplicated feed' => '', ); diff --git a/app/locales/cs_CZ/translations.php b/app/locales/cs_CZ/translations.php index fa59bd0..be743b1 100644 --- a/app/locales/cs_CZ/translations.php +++ b/app/locales/cs_CZ/translations.php @@ -254,4 +254,5 @@ return array( 'Current Password' => 'Aktuální heslo', 'New Password' => 'Nové heslo', 'Wrong password' => 'Špatné heslo', + // 'Duplicated feed' => '', ); diff --git a/app/locales/de_DE/translations.php b/app/locales/de_DE/translations.php index cae6b3b..27edf63 100644 --- a/app/locales/de_DE/translations.php +++ b/app/locales/de_DE/translations.php @@ -254,4 +254,5 @@ return array( // 'Current Password' => '', // 'New Password' => '', // 'Wrong password' => '', + // 'Duplicated feed' => '', ); diff --git a/app/locales/es_ES/translations.php b/app/locales/es_ES/translations.php index 2a2d851..cab71e8 100644 --- a/app/locales/es_ES/translations.php +++ b/app/locales/es_ES/translations.php @@ -254,4 +254,5 @@ return array( // 'Current Password' => '', // 'New Password' => '', // 'Wrong password' => '', + // 'Duplicated feed' => '', ); diff --git a/app/locales/fr_FR/translations.php b/app/locales/fr_FR/translations.php index 4264378..5d132b1 100644 --- a/app/locales/fr_FR/translations.php +++ b/app/locales/fr_FR/translations.php @@ -254,4 +254,5 @@ return array( 'Current Password' => 'Mot de passe actuel', 'New Password' => 'Nouveau mot de passe', 'Wrong password' => 'Mauvais mot de passe', + 'Duplicated feed' => 'Abonnement dupliqué', ); diff --git a/app/locales/it_IT/translations.php b/app/locales/it_IT/translations.php index c0f32bf..5d19314 100644 --- a/app/locales/it_IT/translations.php +++ b/app/locales/it_IT/translations.php @@ -254,4 +254,5 @@ return array( // 'Current Password' => '', // 'New Password' => '', // 'Wrong password' => '', + // 'Duplicated feed' => '', ); diff --git a/app/locales/ja_JP/translations.php b/app/locales/ja_JP/translations.php index b660d66..0fd11d1 100644 --- a/app/locales/ja_JP/translations.php +++ b/app/locales/ja_JP/translations.php @@ -256,4 +256,5 @@ return array( // 'Current Password' => '', // 'New Password' => '', // 'Wrong password' => '', + // 'Duplicated feed' => '', ); diff --git a/app/locales/pt_BR/translations.php b/app/locales/pt_BR/translations.php index 8ebb2c6..88858eb 100644 --- a/app/locales/pt_BR/translations.php +++ b/app/locales/pt_BR/translations.php @@ -254,4 +254,5 @@ return array( // 'Current Password' => '', // 'New Password' => '', // 'Wrong password' => '', + // 'Duplicated feed' => '', ); diff --git a/app/locales/ru_RU/translations.php b/app/locales/ru_RU/translations.php index 8065319..af43c64 100644 --- a/app/locales/ru_RU/translations.php +++ b/app/locales/ru_RU/translations.php @@ -254,4 +254,5 @@ return array( 'Current Password' => 'Текущий пароль', 'New Password' => 'Новый пароль', 'Wrong password' => 'Неверный пароль', + // 'Duplicated feed' => '', ); diff --git a/app/locales/sr_RS/translations.php b/app/locales/sr_RS/translations.php index 10a44ca..25d319f 100644 --- a/app/locales/sr_RS/translations.php +++ b/app/locales/sr_RS/translations.php @@ -254,4 +254,5 @@ return array( // 'Current Password' => '', // 'New Password' => '', // 'Wrong password' => '', + // 'Duplicated feed' => '', ); diff --git a/app/locales/sr_RS@latin/translations.php b/app/locales/sr_RS@latin/translations.php index 2d11723..ef454c9 100644 --- a/app/locales/sr_RS@latin/translations.php +++ b/app/locales/sr_RS@latin/translations.php @@ -254,4 +254,5 @@ return array( // 'Current Password' => '', // 'New Password' => '', // 'Wrong password' => '', + // 'Duplicated feed' => '', ); diff --git a/app/locales/tr_TR/translations.php b/app/locales/tr_TR/translations.php index e60a3ba..5ddfbea 100644 --- a/app/locales/tr_TR/translations.php +++ b/app/locales/tr_TR/translations.php @@ -254,4 +254,5 @@ return array( // 'Current Password' => '', // 'New Password' => '', // 'Wrong password' => '', + // 'Duplicated feed' => '', ); diff --git a/app/locales/zh_CN/translations.php b/app/locales/zh_CN/translations.php index 624729d..0d522f1 100644 --- a/app/locales/zh_CN/translations.php +++ b/app/locales/zh_CN/translations.php @@ -254,4 +254,5 @@ return array( 'Current Password' => '当前密码', 'New Password' => '新密码', 'Wrong password' => '密码错误', + // 'Duplicated feed' => '', ); diff --git a/app/models/feed.php b/app/models/feed.php index 5fa7561..050d154 100644 --- a/app/models/feed.php +++ b/app/models/feed.php @@ -117,6 +117,16 @@ function get_feed($user_id, $feed_id) ->findOne(); } +function is_duplicated_feed($user_id, $feed_id, $feed_url) +{ + return Database::getInstance('db') + ->table(TABLE) + ->eq('user_id', $user_id) + ->neq('id', $feed_id) + ->eq('feed_url', $feed_url) + ->exists(); +} + function update_feed($user_id, $feed_id, array $values) { $db = Database::getInstance('db'); diff --git a/app/templates/feeds.php b/app/templates/feeds.php index 38d6aba..8e56613 100644 --- a/app/templates/feeds.php +++ b/app/templates/feeds.php @@ -12,9 +12,7 @@ -

- @@ -47,12 +45,11 @@ - - - - - + + + +