public function updateGroupProviderId($oldId, $newId)
 {
     if (strlen($oldId) > 0 && strlen($newId) > 0 && $oldId != $newId) {
         $dao = new EngineBlock_Model_DbTable_GroupProviderDecorator();
         return $dao->update(array('group_provider_id' => $newId), "group_provider_id = '{$oldId}'");
     } else {
         // ignore
         return true;
     }
 }
 protected function _saveDecorators($row, $decorators)
 {
     // delete the old
     $gpdTable = new EngineBlock_Model_DbTable_GroupProviderDecorator();
     $gpdoTable = new EngineBlock_Model_DbTable_GroupProviderDecoratorOption();
     $gpdOld = $gpdTable->fetchAll($gpdTable->select("id")->where("group_provider_id = '{$row['id']}'"));
     try {
         // delete the old
         foreach ($gpdOld as $old) {
             $old->delete();
             // cascade delete for options
         }
         // insert the new
         foreach ($decorators as $d) {
             // separate options
             $gpdoData = $d['options'];
             unset($d['options']);
             // insert decorator row
             $gpdRow = $gpdTable->createRow();
             $gpdRow->setFromArray($d);
             $gpdId = $gpdRow->save();
             // insert related options
             if (is_array($gpdoData)) {
                 foreach ($gpdoData as $o) {
                     $gpdoRow = $gpdoTable->createRow();
                     $gpdoRow->setFromArray($o);
                     $gpdoRow->group_provider_decorator_id = $gpdId;
                     $gpdoRow->save();
                 }
             }
         }
     } catch (Exception $ex) {
         // TODO: handle exception
         throw $ex;
     }
 }