/**
  * Action permettant d'enregistrer ou de mettre à jour automatiquement un device
  *
  * @param sfWebRequest $request
  */
 public function execute($request)
 {
     $this->getResponse()->setContentType('application/json');
     $this->setLayout(false);
     if ($request->getPostParameter('drivers') == null) {
         $response = array("error" => "Error with the post parameters drivers.", "success" => false);
     } else {
         $JSONArray = json_decode($request->getPostParameter('drivers'));
         //die("json: ".$JSONArray. " / error:".json_last_error());
         $device_identifier = $request->getParameter('device_identifier');
         $device_type_name = $request->getParameter('device_type');
         $response = array("error" => "An error occured when we try to create / update the device.", "success" => false);
         try {
             $device = Doctrine_Core::getTable("EiDevice")->findOneBy("device_identifier", $device_identifier);
             if ($device != null) {
                 /* Si le device existe, on efface ses drivers (les browsers sont effacés en cascade) */
                 $device_drivers = $device->getEiDeviceDriver();
                 foreach ($device_drivers as $device_driver) {
                     $device_driver->delete();
                 }
             } else {
                 /* Sinon on créé ce device */
                 $device = new EiDevice();
                 $device->setDeviceIdentifier($device_identifier);
                 $device_type = Doctrine_Core::getTable('EiDeviceType')->findOneBy('hidden_name', $device_type_name);
                 $device->setDeviceTypeId($device_type);
                 $device->save();
             }
             /* On créé les drivers et browsers de ces drivers pour le device */
             foreach ($JSONArray as $driver) {
                 $driver_type_name = $driver->{'driver_type'};
                 $driver_type = Doctrine_Core::getTable("EiDriverType")->findOneBy("hidden_name", $driver_type_name);
                 $device_driver = new EiDeviceDriver();
                 $device_driver->setDeviceId($device->getId());
                 $device_driver->setDriverTypeId($driver_type->getId());
                 $device_driver->save();
                 foreach ($driver->{'browsers'} as $browser_name) {
                     $browser_type = Doctrine_Core::getTable("EiBrowserType")->findOneBy("hidden_name", $browser_name);
                     $driver_browser = new EiDriverBrowser();
                     $driver_browser->setDeviceDriverId($device_driver->getId());
                     $driver_browser->setBrowserTypeId($browser_type->getId());
                     $driver_browser->save();
                 }
             }
             unset($response["error"]);
             $response["success"] = true;
         } catch (Exception $e) {
             $response = array("error" => "Exception : An error occured when we try to create / update the device: " . $e->getMessage());
         }
     }
     return $this->renderText(json_encode($response));
 }