Skip to content
Snippets Groups Projects
Commit c36c1aec authored by Patrick Barroca's avatar Patrick Barroca :grin:
Browse files

Merge remote-tracking branch 'refs/remotes/afi/stable' into afi-master

# Conflicts:
#	VERSIONS
#	cosmogramme/sql/patch/patch_322.php
#	library/startup.php
#	tests/db/UpgradeDBTest.php
parents bdb0221e 3076a150
Branches
Tags
3 merge requests!2334Master,!2147Dev#40650 contractuel 5255 dole preinscription en ligne bressuire concarneau ccvh,!2132dev #59734 first commit
Pipeline #1431 passed with stage
in 11 minutes and 16 seconds
- ticket #59638 : Newsletter: Correction d'un bug envoyant les newsletters en ignorant les modifications depuis leur dernière prévisualisation.
02/05/2017 - v7.9.16
- ticket #55142 : ajout de mécanismes d'analyse du déroulement du moissonnage des ressources numériques
......
<?php
try {
Zend_Db_Table_Abstract::getDefaultAdapter()
->query('delete from newsletter_dispatch where COLLECTED=0 and ended_on is NULL and error is NULL and DATE(created_on)!=CURDATE()');
} catch(Exception $e) {}
?>
\ No newline at end of file
......@@ -103,11 +103,18 @@ class Class_Newsletter extends Storm_Model_Abstract {
->run();
}
public function getDispatchIfNotEnded() {
return (($dispatch = $this->getLastDispatch()) &&
$dispatch->isRunnable())
? $dispatch : false;
}
protected function _getOrCreateDispatchToRun() {
return ($dispatch = $this->getLastDispatch()) && $dispatch->isRunnable()
? $dispatch->resetError()
: Class_Newsletter_Dispatch::newFrom($this);
if ($dispatch = $this->getDispatchIfNotEnded())
return $dispatch->resetError();
return Class_Newsletter_Dispatch::newFrom($this);
}
......
......@@ -22,6 +22,8 @@
class ZendAfi_Controller_Plugin_Manager_Newsletter extends ZendAfi_Controller_Plugin_Manager_Manager {
public function getActions($model) {
$existing_dispatch = $model->getDispatchIfNotEnded();
return [
['url' => '/admin/newsletter/edit/id/%s',
'icon' => 'edit',
......@@ -39,12 +41,14 @@ class ZendAfi_Controller_Plugin_Manager_Newsletter extends ZendAfi_Controller_Pl
['url' => '/admin/newsletter/send/id/%s',
'icon' => 'mail',
'anchorOptions' => ['rel' => 'send'],
'caption' => function($model)
'caption' => function($model) use ($existing_dispatch)
{
Class_ScriptLoader::getInstance()->addJQueryReady("
function sendNewsletterClick(event) {
var target = $(event.target).closest('a');
var answer = confirm(\"".$this->_("Envoyer la lettre d'information ?")."\");
var answer = confirm(\"". ($existing_dispatch ?
$this->_("Reprendre l'envoi de la lettre d'information: %s ? ",$existing_dispatch->getTitle())
: $this->_("Envoyer la lettre d'information ?"))."\");
if (answer == false) {
event.preventDefault();
return;
......@@ -53,7 +57,10 @@ function sendNewsletterClick(event) {
$(\"a[rel='send']\").click(sendNewsletterClick);
");},
'label' => 'Envoyer la lettre d\'information'],
'label' => ($existing_dispatch ?
$this->_('Reprendre l\'envoi en cours')
: $this->_('Envoyez la lettre d\'information'))
],
['url' => '/admin/newsletter/duplicate/id/%s',
'icon' => 'copy',
'label' => $this->_('Dupliquer la lettre d\'information')],
......@@ -72,7 +79,7 @@ function sendNewsletterClick(event) {
$this->_addModelToView($newsletter);
$template = Class_Newsletter_Dispatch::newFrom($newsletter)->getTemplate();
$template = Class_Newsletter_Dispatch::newVolatileFrom($newsletter)->getTemplate();
$mock_user = new Class_Entity();
$mock_user->setId(0)->setMail('');
......
......@@ -503,11 +503,6 @@ class Admin_NewsletterControllerSendInProgressActionTest extends Admin_Newslette
Class_Batch_SendNewsletters::setCommand($this->_command);
Class_Newsletter_Dispatch::setTimeSource(new TimeSourceForTest('2016-07-21 11:21:38'));
$dispatch = Class_Newsletter_Dispatch::newFrom(Class_Newsletter::find(2));
$dispatch->assertSave();
$this->dispatch('/admin/newsletter/send/id/2', true);
$this->_dispatch = Class_Newsletter::find(2)->getDispatchs()[0];
}
......@@ -519,6 +514,13 @@ class Admin_NewsletterControllerSendInProgressActionTest extends Admin_Newslette
/** @test */
public function shouldHaveOnlyOneDispatch() {
$dispatch = Class_Newsletter_Dispatch::newFrom(Class_Newsletter::find(2));
$dispatch->setCollected(1);
$dispatch->assertSave();
$this->dispatch('/admin/newsletter/send/id/2', true);
$this->_dispatch = Class_Newsletter::find(2)->getDispatchs()[0];
$this->assertEquals(1, Class_Newsletter::find(2)->numberOfDispatchs());
}
}
......@@ -868,6 +870,7 @@ class Admin_NewsletterControllerPreviewActionTest extends Admin_NewsletterContro
$this->assertXPath('//div//img[@src="zork.jpg"]', $this->_response->getBody());
}
/** @test */
public function noticeShouldBePresent() {
$this->assertQueryContentContains('p', 'Martine à la plage', $this->_response->getBody());
......@@ -877,6 +880,12 @@ class Admin_NewsletterControllerPreviewActionTest extends Admin_NewsletterContro
public function noticeMartineALaPlageUrlShouldBeRechercheViewNotice42() {
$this->assertXPath('//a[@href="http://localhost' . BASE_URL . '/recherche/viewnotice/id/42"]');
}
/** @test */
public function templateShouldNotCreateNewsletterDispatch() {
$this->assertEmpty(Class_Newsletter_Dispatch::findAll());
}
}
......@@ -1463,6 +1472,12 @@ class Admin_NewsletterControllerScriptTest extends Admin_NewsletterControllerTes
}
/** @test */
public function sendMailButtonShouldBeHere() {
$this->assertXPathContentContains('//script', 'Envoyer la lettre d\'information');
}
/** @test */
public function progressBarNewsletterShouldBeDisplay() {
$this->assertXPath('//div[@id="progress_bar_newsletter_1"]');
......@@ -1508,6 +1523,8 @@ class Admin_NewsletterControllerSendProgressWithWrongNewsletterIdTest extends Ad
class Admin_NewsletterControllerSendProgressWithErrorAndNothingSentTest
extends Admin_NewsletterControllerSendProgressTestCase {
......@@ -1531,6 +1548,8 @@ class Admin_NewsletterControllerSendProgressWithErrorAndNothingSentTest
public function statusShouldContainsNothingSent() {
$this->assertContains('aucun mail envoyé', $this->_json->status);
}
}
......@@ -1565,6 +1584,16 @@ class Admin_NewsletterControllerSendProgressWithErrorAnd1Of2SentTest
public function statusShouldContains1Of2Sent() {
$this->assertContains('envoyé à 1 sur 2', $this->_json->status);
}
/** @test */
public function sendButtonShouldContainsReloadText() {
Class_Newsletter::find(1)->setTitre('Other title')->save();
$this->dispatch('admin/newsletter/index', true);
$this->assertXPathContentContains('//script', 'Reprendre l\'envoi de la lettre d\'information: Nouveautés classique ?', $this->_response->getBody());
$this->assertXPath('//img[contains(@title,"Reprendre l\'envoi en cours")]', $this->_response->getBody());
}
}
......
......@@ -1454,8 +1454,6 @@ class UpgradeDB_325_Test extends UpgradeDBTestCase {
class UpgradeDB_326_Test extends UpgradeDBTestCase {
public function prepare() {
try {
......@@ -1482,3 +1480,26 @@ class UpgradeDB_326_Test extends UpgradeDBTestCase {
$this->assertFieldType('user_api_tokens', $field, $type);
}
}
class UpgradeDB_327_Test extends UpgradeDBTestCase {
public function prepare() {
$this->query("insert into newsletter_dispatch (newsletter_id, title, created_on, ended_on, error, collected) values ('1','Title for test', NOW(),NULL,NULL,0),
('1','Title 2 for test', '2017-05-08 14:00:00',NULL,NULL,0)");
}
/** @test */
public function newslettersDispatchWithSameDateShouldNotBeDeleted() {
$data = $this->query('select * from newsletter_dispatch where title="Title for test" ;')->fetch();
$this->assertNotNull($data);
}
/** @test */
public function newslettersDispatchShouldBeDeleted() {
$data = $this->query('select * from newsletter_dispatch where title="Title 2 for test" ;')->fetch();
$this->assertNull($data);
}
}
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment