Skip to content
Snippets Groups Projects
Commit 88ae1a54 authored by llaffont's avatar llaffont
Browse files

Multimedia: suppression automatique des postes qui n'existent plus lors de la synchro quotidienne

parent 5a7bcaea
Branches
Tags
No related merge requests found
......@@ -45,12 +45,34 @@ class Push_MultimediaController extends Zend_Controller_Action {
return;
}
$id_origine_postes = $this->createAllDevicesFromGroups($groups);
$this->deleteAllPostesFromSiteWithoutIdOrigine($groups[0]->site->id, $id_origine_postes);
}
public function createAllDevicesFromGroups($groups) {
$id_origine_postes = [];
foreach ($groups as $group) {
$location = Class_Multimedia_Location::getLoader()->fromJsonModel($group->site);
$deviceGroup = Class_Multimedia_DeviceGroup::getLoader()->fromJsonModelWithLocation($group, $location);
foreach ($group->postes as $poste)
Class_Multimedia_Device::getLoader()->fromJsonModelWithGroup($poste, $deviceGroup);
foreach ($group->postes as $poste) {
$poste = Class_Multimedia_Device::getLoader()->fromJsonModelWithGroup($poste, $deviceGroup);
$id_origine_postes[] = $poste->getIdOrigine();
}
}
return $id_origine_postes;
}
public function deleteAllPostesFromSiteWithoutIdOrigine($id_site, $id_origine_postes) {
$postes_to_delete = Class_Multimedia_Device::findAllBy(['where' => sprintf('id_origine not in(%s) and id_origine like \'%s-%%\'',
implode(',', array_map(function($id){return '\''.$id.'\'';},
$id_origine_postes)),
$id_site)]);
foreach($postes_to_delete as $poste)
$poste->delete();
}
}
?>
\ No newline at end of file
......@@ -110,6 +110,7 @@ class Push_MultimediaControllerInvalidSignConfigTest extends Push_MultimediaCont
class Push_MultimediaControllerValidConfigTest extends AbstractControllerTestCase {
protected $_group;
protected $_device_wrapper;
protected $_device_to_delete;
protected $_devices = array();
public function setUp() {
......@@ -131,12 +132,19 @@ class Push_MultimediaControllerValidConfigTest extends AbstractControllerTestCas
$this->_device_wrapper = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Multimedia_Device')
->whenCalled('findFirstBy')
->answers(null)
->whenCalled('delete')
->answers(null)
->whenCalled('save')
->willDo(function ($model) {
$this->_devices[] = $model;
return true;
});
})
->whenCalled('findAllBy')
->with(['where' => 'id_origine not in(\'1-1\',\'1-2\') and id_origine like \'1-%\''])
->answers([$this->_device_to_delete = Class_Multimedia_Device::newInstanceWithId(34)->setIdOrigine('1-34')]);
Class_Multimedia::setInstance(Storm_Test_ObjectWrapper::mock()
->whenCalled('isValidHashForContent')
......@@ -236,4 +244,11 @@ class Push_MultimediaControllerValidConfigTest extends AbstractControllerTestCas
$this->assertFalse($this->_devices[1]->isDisabled());
}
/** @test */
public function deviceNotInPushShouldHaveBeenDeleted() {
$this->assertEquals($this->_device_to_delete, Class_Multimedia_Device::getFirstAttributeForLastCallOn('delete'));
}
}
\ 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