From c2699ad3a576ad4ec3b4073dca3624c8df9ddefc Mon Sep 17 00:00:00 2001 From: gloas <gloas@git-test.afi-sa.fr> Date: Mon, 19 Aug 2013 15:57:51 +0000 Subject: [PATCH] =?UTF-8?q?Calendrier:=20s=C3=A9paration=20du=20chargement?= =?UTF-8?q?=20des=20articles=20entre=20le=20tableau=20et=20la=20liste?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/Class/Calendar.php | 87 ++++++--------- .../View/Helper/Accueil/CalendarTest.php | 104 +++++++++++++----- 2 files changed, 112 insertions(+), 79 deletions(-) diff --git a/library/Class/Calendar.php b/library/Class/Calendar.php index 02965e24901..1cc967e4a0d 100644 --- a/library/Class/Calendar.php +++ b/library/Class/Calendar.php @@ -38,7 +38,6 @@ class Class_Calendar { var $month; var $year; protected $id_module; - protected $articles; //Liste des articles à afficher, chargés dans _loadArticles protected $_translate; protected $_article_event_helper; protected $_view; @@ -84,8 +83,6 @@ class Class_Calendar { $this->param = $param_array; $this->today = date("dmY"); $this->id_module = $param_array["ID_MODULE"]; - - $this->_loadArticles(); } @@ -97,7 +94,12 @@ class Class_Calendar { * ou tous si vaut "all" * param["ID_CAT"]: Liste des catégories autorisées (paramètre administrateur) */ - protected function _loadArticles(){ + protected function _getArticlesForCalendar(){ + return $this->_loadArticles([]); + } + + + protected function _loadArticles($extra_prefs) { if (('all' !== $this->param["SELECT_ID_CAT"]) and ($this->param['DISPLAY_CAT_SELECT'])) $id_cat = (int)$this->param['SELECT_ID_CAT']; else @@ -105,61 +107,42 @@ class Class_Calendar { if (0 == $id_cat) $id_cat = ''; - $prefs = ['display_order' => 'EventDebut', - 'id_categorie' => $id_cat, - '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"]; + $prefs = array_merge(['display_order' => 'EventDebut', + 'id_categorie' => $id_cat, + 'events_only' => true, + 'event_date' => $this->param['DATE'], + 'id_bib' => $this->param['ID_BIB'], + 'published' => false], $extra_prefs); - // Lire les news dans la bdd - - $articles = Class_Article::getLoader()->getArticlesByPreferences($prefs); + $articles = Class_Article::getArticlesByPreferences($prefs); + $articles = Class_Article::filterByLocaleAndWorkflow($articles); + return $articles; + } - if ($id_bib = $this->param['ID_BIB']) { - $this->articles = array(); - foreach($articles as $article) { - if (($id_bib == $article->getBib()->getId())) - $this->articles []= $article; - } - } else { - $this->articles = $articles; - } + protected function _getNextEvents(){ + $time = $this->getTimeSource()->time(); + $prefs = []; + if($this->param["DATE"] == strftime('%Y-%m',$time)) + $prefs['event_end_after'] = strftime('%Y-%m-%d',$time); - $this->articles = Class_Article::filterByLocaleAndWorkflow($this->articles); - if ($this->param["ALEATOIRE"] == 1) - shuffle($this->articles); - $prefs = [ - 'display_order' => 'EventDebut', - 'id_categorie' => $id_cat, - 'event_start_after' => $this->param["DATE"], - 'events_only' => true, - 'id_bib' => $this->param['ID_BIB'], - 'limit' => $this->param['NB_NEWS'], - 'published' => false]; + $articles = $this->_loadArticles($prefs); + if ($this->param["ALEATOIRE"] == 1) + shuffle($articles); if (count($articles) < $this->param['NB_NEWS']) { - $next_articles = Class_Article::getLoader()->getArticlesByPreferences($prefs); - - $this->articles = array_merge($this->articles, - Class_Article::filterByLocaleAndWorkflow($next_articles)); + $next_articles = $this->_loadArticles(['event_start_after' => $this->param["DATE"], + 'event_date' => '', + 'event_end_after' => '', + 'limit' => $this->param['NB_NEWS']]); + $articles = array_merge($articles, + Class_Article::filterByLocaleAndWorkflow($next_articles)); } - return $this; - } - - - /* liste des articles chargés, voir _loadArticles */ - protected function _getArticles() { - return $this->articles; + return $articles; } @@ -330,7 +313,7 @@ class Class_Calendar { $current_day = $first_month_day - 3600 * 24 * $offset; $row_number = ceil((gmdate("t", $first_month_day) + $offset) / 7); - $articles = $this->_getArticles(); + $articles = $this->_getArticlesForCalendar(); /////////////////////////////////////////////////////////////////////////// // HTML - No des jours @@ -392,7 +375,7 @@ class Class_Calendar { $html.="</table></div>"; // Html sous le calendrier - $html .= $this->htmlForEvents($articles); + $html .= $this->htmlForEvents(); return sprintf("<div class='calendar'>%s</div>", $html); @@ -400,10 +383,10 @@ class Class_Calendar { - protected function htmlForEvents($articles) { + protected function htmlForEvents() { if ($this->param['DISPLAY_NEXT_EVENT']=='0') return ''; - + $articles = $this->_getNextEvents(); $nb_news = $this->param["NB_NEWS"]; $news_array = array_slice($articles, 0, $nb_news); diff --git a/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php b/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php index 525371fbc8b..0c42bb2a00f 100644 --- a/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php +++ b/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php @@ -116,14 +116,26 @@ class CalendarViewTodayWithEmptyPreferencesTest extends CalendarWithEmptyPrefere $article_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article') ->whenCalled('getArticlesByPreferences') - ->with(array( - 'display_order' => 'EventDebut', - 'id_categorie' => '', - 'event_end_after' => '2013-08-19', - 'events_only' => true, - 'published' => false)) + ->with([ + 'display_order' => 'EventDebut', + 'id_categorie' => '', + 'event_date' => '2013-08', + 'event_end_after' => '2013-08-19', + 'events_only' => true, + 'id_bib' => 0, + 'published' => false]) ->answers(array($this->nanook2, $this->opac4, $this->amber)) - ->getWrapper() + + ->whenCalled('getArticlesByPreferences') + ->with([ + 'display_order' => 'EventDebut', + 'id_categorie' => '', + 'event_date' => '2013-08', + 'events_only' => true, + 'id_bib' => 0, + 'published' => false]) + ->answers(array($this->nanook2, $this->opac4, $this->amber)) + ->beStrict(); $this->html = $this->helper->getBoite(); @@ -211,10 +223,22 @@ class CalendarWithPreferencesNbEventsOneTest extends CalendarWithEmptyPreference 'display_order' => 'EventDebut', 'id_categorie' => '', 'event_end_after' => '2013-08-19', + 'event_date' => '2013-08', + 'id_bib' => 0, 'events_only' => true, 'published' => false)) ->answers(array($this->nanook2, $this->opac4, $this->amber)) - ->getWrapper() + + ->whenCalled('getArticlesByPreferences') + ->with(array( + 'display_order' => 'EventDebut', + 'id_categorie' => '', + 'event_date' => '2013-08', + 'id_bib' => 0, + 'events_only' => true, + 'published' => false)) + ->answers(array($this->nanook2, $this->opac4, $this->amber)) + ->beStrict(); @@ -247,28 +271,39 @@ class CalendarWithEmptyParamsLocaleEnAndOnlyTwoArticlesReturned Extends Calendar parent::setUp(); Zend_Registry::get('translate')->setLocale('en'); - Class_AdminVar::getLoader()->find('LANGUES')->setValeur('fr;en'); + Class_AdminVar::find('LANGUES')->setValeur('fr;en'); - $article_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article') + Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article') ->whenCalled('getArticlesByPreferences') ->with(array( 'display_order' => 'EventDebut', 'id_categorie' => '', 'event_end_after' => '2013-08-19', + 'event_date' => '2013-08', + 'id_bib' => 0, 'events_only' => true, 'published' => false)) ->answers(array($this->nanook2, $this->opac4)) - ->getWrapper() + + ->whenCalled('getArticlesByPreferences') + ->with(array( + 'display_order' => 'EventDebut', + 'id_categorie' => '', + 'event_date' => '2013-08', + 'id_bib' => 0, + 'events_only' => true, + 'published' => false)) + ->answers([$this->nanook2, $this->opac4]) ->whenCalled('getArticlesByPreferences') ->with(array( 'display_order' => 'EventDebut', 'id_categorie' => '', 'event_start_after' => '2013-09', + 'id_bib' => 0, 'events_only' => true, 'published' => false)) - ->answers(array($this->amber)) - ->getWrapper(); + ->answers(array($this->amber)); $this->html = $this->helper->getBoite(); } @@ -316,16 +351,17 @@ class CalendarWithCategoryLimitAndBibPreferencesTest extends CalendarViewHelperT $helper = new ZendAfi_View_Helper_Accueil_Calendar(2, $this->params); $helper->setView(new ZendAfi_Controller_Action_Helper_View()); - $article_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article') + Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article') ->whenCalled('getArticlesByPreferences') ->with(array( 'display_order' => 'EventDebut', 'id_categorie' => '12-3', 'event_date' => '2011-03', + 'id_bib' => 5, 'events_only' => true, 'published' => false)) ->answers(array($this->nanook2, $this->opac4, $this->amber)) - ->getWrapper() + ->beStrict(); $this->html = $helper->getBoite(); } @@ -363,14 +399,6 @@ class CalendarWithCategoryLimitAndBibPreferencesTest extends CalendarViewHelperT } - /** @test */ - function calendarEventListShouldNotContainsNanook2() { - $this->assertNotXPathContentContains($this->html, - '//a[@class="calendar_event_title"]', - 'Nanook 2 en prod !'); - } - - /** @test */ function calendarEventListShouldContainsOPAC4() { $this->assertXPathContentContains($this->html, @@ -399,8 +427,9 @@ class CalendarWithCategoryLimitAndBibPreferencesTest extends CalendarViewHelperT } + + class CalendarWithWorkFlowStatusTest extends CalendarWithEmptyPreferencesTestCase { - public function setUp() { parent::setUp(); Class_AdminVar::set('WORKFLOW',1); @@ -415,21 +444,39 @@ class CalendarWithWorkFlowStatusTest extends CalendarWithEmptyPreferencesTestCa 'display_order' => 'EventDebut', 'id_categorie' => '', 'event_end_after' => '2013-08-19', + 'event_date' => '2013-08', + 'id_bib' => 0, 'events_only' => true, 'published' => false ]) ->answers([$this->opac4, $this->amber]) + + ->whenCalled('getArticlesByPreferences') + ->with([ + 'display_order' => 'EventDebut', + 'id_categorie' => '', + 'event_date' => '2013-08', + 'id_bib' => 0, + 'events_only' => true, + 'published' => false + ]) + ->answers([$this->opac4, $this->amber]) + ->whenCalled('getArticlesByPreferences') ->with([ 'display_order' => 'EventDebut', 'id_categorie' => '', 'event_start_after' => '2013-08', + 'event_date' => '', + 'event_end_after' => '', 'events_only' => true, 'id_bib' => 0, 'limit' => 3, 'published' => false ]) - ->answers([$this->nanook2,$this->opac4, $this->amber]) ->beStrict(); + ->answers([$this->nanook2,$this->opac4, $this->amber]) + ->beStrict(); + $this->html = $this->helper->getBoite(); } @@ -468,16 +515,17 @@ class CalendarWithCategorySelectorAndRssPreferencesTest extends CalendarViewHelp $helper = new ZendAfi_View_Helper_Accueil_Calendar(2, $params); $helper->setView(new ZendAfi_Controller_Action_Helper_View()); - $article_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article') + Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article') ->whenCalled('getArticlesByPreferences') ->with(array( 'display_order' => 'EventDebut', 'id_categorie' => '12', 'event_date' => '2011-12', + 'id_bib' => 0, 'events_only' => true, 'published' => false)) ->answers(array($this->nanook2, $this->opac4, $this->amber)) - ->getWrapper() + ->beStrict(); $this->html = $helper->getBoite(); @@ -543,6 +591,7 @@ extends CalendarViewHelperTestCase { ->with(array('display_order' => 'EventDebut', 'id_categorie' => '', 'event_date' => '2011-12', + 'id_bib' => 0, 'events_only' => true, 'published' => false)) ->answers(array($this->nanook2, $this->opac4, $this->amber)) @@ -633,6 +682,7 @@ class CalendarOnJanuaryTest extends CalendarViewHelperTestCase { 'display_order' => 'EventDebut', 'id_categorie' => '', 'event_date' => '2012-01', + 'id_bib' => 0, 'events_only' => true, 'published' => false)) ->answers(array($this->nanook2, $this->opac4, $this->amber)) -- GitLab