From 2c9c0617be3fef3113ef5d0211b472a59e683f48 Mon Sep 17 00:00:00 2001 From: gloas <gloas@git-test.afi-sa.fr> Date: Mon, 19 Aug 2013 14:24:42 +0000 Subject: [PATCH] rel #9354 affichage des evenements qui se finnissent apres la date du jour --- library/Class/Article.php | 15 +++++++++++++++ library/Class/Calendar.php | 9 ++++++++- library/ZendAfi/View/Helper/Accueil/Calendar.php | 1 + .../controllers/MultimediaControllerTest.php | 2 +- .../opac/controllers/FormulaireControllerTest.php | 3 +-- tests/library/Class/ArticleLoaderTest.php | 8 ++++++++ tests/library/Class/TimeSourceForTest.php | 5 +++-- .../ZendAfi/View/Helper/Accueil/CalendarTest.php | 10 +++++----- 8 files changed, 42 insertions(+), 11 deletions(-) diff --git a/library/Class/Article.php b/library/Class/Article.php index e2467d4c4af..47456f2c53a 100644 --- a/library/Class/Article.php +++ b/library/Class/Article.php @@ -156,6 +156,18 @@ class ArticleLoader extends Storm_Model_Loader { } + protected function _whereEventEndAfter($event_date) { + if (!$event_date || (10 > strlen($event_date))) + return $this; + + $this->_select->where('EVENTS_FIN IS NOT NULL'); + $this->_select->where("EVENTS_FIN >= ?", $event_date); + + return $this; + + } + + /** * @return ArticleLoader */ @@ -276,6 +288,7 @@ class ArticleLoader extends Storm_Model_Loader { 'langue' => null, // que les traductions de cette langue 'event_date' => null, // que les articles dont les dates de début et/ou de fin inclue cette date 'event_start_after' => null, // que les articles dont l'évènement commence après cette date + 'event_end_after' => null, // que les articles dont l'évènement termine à ou après cette date 'id_bib' => null, // filtre par cette bibliothèque 'status' => null, // filtre par cet état de workflow cf. Class_Article::STATUS_XXX 'events_only' => false, // filtre que les évènements, @@ -294,6 +307,7 @@ class ArticleLoader extends Storm_Model_Loader { $this->_limit = $this->_sort_order == 'Random' ? $this->_nb_analyse : $this->_nb_aff; $this->_langue = $preferences['langue']; $this->_event_date = $preferences['event_date']; + $this->_event_end_after = $preferences['event_end_after']; $this->_event_start_after = $preferences['event_start_after']; $this->_id_bib = $preferences['id_bib']; $this->_status = $preferences['status']; @@ -309,6 +323,7 @@ class ArticleLoader extends Storm_Model_Loader { ->_whereSelectionIn($this->_id_articles, $this->_id_categories) ->_whereEventDateIn($this->_event_date) ->_whereEventStartAfter($this->_event_start_after) + ->_whereEventEndAfter($this->_event_end_after) ->_filterByLangue() ->_filterByStatus() ->_orderAndLimit() diff --git a/library/Class/Calendar.php b/library/Class/Calendar.php index 149443eeb38..02965e24901 100644 --- a/library/Class/Calendar.php +++ b/library/Class/Calendar.php @@ -22,6 +22,7 @@ // OPAC- 3 Class_Calendar ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class Class_Calendar { + use Trait_TimeSource; var $PREFIX = "calendar_"; var $CSS_PREFIX = "calendar_"; var $URL_PARAMETER = "date"; @@ -106,10 +107,16 @@ class Class_Calendar { $id_cat = ''; $prefs = ['display_order' => 'EventDebut', 'id_categorie' => $id_cat, - 'event_date' => $this->param["DATE"], 'events_only' => true, 'published' => false]; + $time = $this->getTimeSource()->time(); + + if($this->param["DATE"] == strftime('%Y-%m',$time)) + $prefs ['event_end_after'] = strftime('%Y-%m-%d',$time); + else + $prefs ['event_date'] = $this->param["DATE"]; + // Lire les news dans la bdd $articles = Class_Article::getLoader()->getArticlesByPreferences($prefs); diff --git a/library/ZendAfi/View/Helper/Accueil/Calendar.php b/library/ZendAfi/View/Helper/Accueil/Calendar.php index e09fae37b14..f94fcb17827 100644 --- a/library/ZendAfi/View/Helper/Accueil/Calendar.php +++ b/library/ZendAfi/View/Helper/Accueil/Calendar.php @@ -90,6 +90,7 @@ SCRIPT; $param["DISPLAY_NEXT_EVENT"] = array_key_exists('display_next_event', $this->preferences) ? $this->preferences["display_next_event"] : '1'; $class_calendar = new Class_Calendar($param, $this->view); + $class_calendar->setTimeSource($this->getTimeSource()); $this->contenu = $class_calendar->rendHTML(); diff --git a/tests/application/modules/admin/controllers/MultimediaControllerTest.php b/tests/application/modules/admin/controllers/MultimediaControllerTest.php index d761f0fd1c3..8e609704c6b 100644 --- a/tests/application/modules/admin/controllers/MultimediaControllerTest.php +++ b/tests/application/modules/admin/controllers/MultimediaControllerTest.php @@ -210,7 +210,7 @@ class Admin_MultimediaControllerBrowseTest extends Admin_MultimediaControllerTes ->setGroups(array($group)); - $time_source = (new TimeSourceForTest())->setTime(strtotime('today')); + $time_source = new TimeSourceForTest('today'); Class_Multimedia_Device::setTimeSource($time_source); Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Multimedia_DeviceHold') diff --git a/tests/application/modules/opac/controllers/FormulaireControllerTest.php b/tests/application/modules/opac/controllers/FormulaireControllerTest.php index 02c7e826ec1..87bdb241611 100644 --- a/tests/application/modules/opac/controllers/FormulaireControllerTest.php +++ b/tests/application/modules/opac/controllers/FormulaireControllerTest.php @@ -34,8 +34,7 @@ abstract class FormulaireControllerPostActionTestCase extends Admin_AbstractCont }); - $timesource = new TimeSourceForTest(); - $timesource->setTime(strtotime('2012-10-23 12:32:00')); + $timesource = new TimeSourceForTest('2012-10-23 12:32:00'); Class_Formulaire::setTimeSource($timesource); } } diff --git a/tests/library/Class/ArticleLoaderTest.php b/tests/library/Class/ArticleLoaderTest.php index 6823e6af7f8..e377989329b 100644 --- a/tests/library/Class/ArticleLoaderTest.php +++ b/tests/library/Class/ArticleLoaderTest.php @@ -297,6 +297,14 @@ class ArticleLoaderGetArticlesByPreferencesTest extends ModelTestCase { } + /** @test */ + public function withEventEndAfterSqlShouldFilterOnEventsFin() { + $articles = $this->getArticles(['event_end_after' => '2011-03-15']); + $this->assertSelect(sprintf("WHERE %s AND (EVENTS_FIN IS NOT NULL) AND (EVENTS_FIN >= '2011-03-15') AND (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC", self::WHERE_VISIBLE_CLAUSE)); + } + + + /** @test */ public function withPublishedFalseShouldNotFilterByDebutAndFin() { $article = $this->getArticles(array('published' => false)); diff --git a/tests/library/Class/TimeSourceForTest.php b/tests/library/Class/TimeSourceForTest.php index 8877e6da6b3..0d7f7e30e63 100644 --- a/tests/library/Class/TimeSourceForTest.php +++ b/tests/library/Class/TimeSourceForTest.php @@ -22,8 +22,9 @@ class TimeSourceForTest extends Class_TimeSource { protected $_time; - public function __construct($strtime) { - $this->setTime(strtotime($strtime)); + public function __construct($strtime = null) { + if ($strtime) + $this->setTime(strtotime($strtime)); } /** diff --git a/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php b/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php index 1f05f235d57..525371fbc8b 100644 --- a/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php +++ b/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php @@ -110,7 +110,7 @@ abstract class CalendarWithEmptyPreferencesTestCase extends CalendarViewHelperTe } -class CalendarWithEmptyPreferencesTest extends CalendarWithEmptyPreferencesTestCase { +class CalendarViewTodayWithEmptyPreferencesTest extends CalendarWithEmptyPreferencesTestCase { public function setUp() { parent::setUp(); @@ -119,7 +119,7 @@ class CalendarWithEmptyPreferencesTest extends CalendarWithEmptyPreferencesTestC ->with(array( 'display_order' => 'EventDebut', 'id_categorie' => '', - 'event_date' => '2013-08', + 'event_end_after' => '2013-08-19', 'events_only' => true, 'published' => false)) ->answers(array($this->nanook2, $this->opac4, $this->amber)) @@ -210,7 +210,7 @@ class CalendarWithPreferencesNbEventsOneTest extends CalendarWithEmptyPreference ->with(array( 'display_order' => 'EventDebut', 'id_categorie' => '', - 'event_date' => '2013-08', + 'event_end_after' => '2013-08-19', 'events_only' => true, 'published' => false)) ->answers(array($this->nanook2, $this->opac4, $this->amber)) @@ -254,7 +254,7 @@ class CalendarWithEmptyParamsLocaleEnAndOnlyTwoArticlesReturned Extends Calendar ->with(array( 'display_order' => 'EventDebut', 'id_categorie' => '', - 'event_date' => '2013-08', + 'event_end_after' => '2013-08-19', 'events_only' => true, 'published' => false)) ->answers(array($this->nanook2, $this->opac4)) @@ -414,7 +414,7 @@ class CalendarWithWorkFlowStatusTest extends CalendarWithEmptyPreferencesTestCa ->with([ 'display_order' => 'EventDebut', 'id_categorie' => '', - 'event_date' => '2013-08', + 'event_end_after' => '2013-08-19', 'events_only' => true, 'published' => false ]) -- GitLab