Example #1
0
 /**
  * Méthode qui gère l'action delete, supprime l'objet dans une transaction.
  *
  * @access protected
  * @return void
  */
 protected function delete()
 {
     $this->onBeforeDelete();
     Database::connection()->startTrans();
     $mapper = Mapper::singleton($this->clsname);
     $emptyForDeleteProperties = call_user_func(array($this->clsname, 'getEmptyForDeleteProperties'));
     $notDeletedObjects = array();
     // il y a des check auto on supprime un à un car les verif ne sont
     // pas faites par Mapper::delete() mais par Object::delete()
     $col = $mapper->loadCollection(array('Id' => $this->objID));
     $count = $col->getCount();
     for ($i = 0; $i < $count; $i++) {
         $o = $col->getItem($i);
         try {
             $o->delete();
         } catch (Exception $exc) {
             $notDeletedObjects[] = $o->toString();
             //. ': ' . $exc->getMessage();
         }
     }
     if (Database::connection()->hasFailedTrans()) {
         $err = Database::connection()->errorMsg();
         trigger_error($err, E_USER_WARNING);
         Database::connection()->rollbackTrans();
         Template::errorDialog(E_ERROR_SQL . '.<br/>' . $err, $this->guessReturnURL());
         exit;
     }
     Database::connection()->completeTrans();
     if (!empty($notDeletedObjects)) {
         Template::infoDialog(sprintf(I_NOT_DELETED_WITH_LIST, implode('</li><li>', $notDeletedObjects)), $this->guessReturnURL());
         exit;
     }
     $this->onAfterDelete();
 }