/**
  * Deletes all monitoring record for a Monitorer user (delete cascade emulation)
  * 
  * @param  BaseObject  $user
  */
 public function preDelete(BaseObject $user)
 {
     try {
         // get the objects affected by this user's removal
         $monitored_objects = $this->getMonitoredObjects($user);
         $user_id = $this->getReferenceKey($object);
         $c = new Criteria();
         $c->add(MonitoringPeer::USER_ID, $user_id);
         MonitoringPeer::doDelete($c);
         // updates the cache for the affected objects
         foreach ($monitored_objects as $object) {
             deppPropelActAsMonitorableBehavior::setCachedCountMonitoringUsers($user, $object->countMonitoringUsers($user_id, true));
         }
     } catch (Exception $e) {
         throw new deppPropelActAsMonitorerException('Unable to delete Monitorer object related records');
     }
 }
 /**
  * Deletes all monitoring for a monitorable object (delete cascade emulation)
  * 
  * @param  BaseObject  $object
  */
 public function preDelete(BaseObject $object)
 {
     try {
         $monitoring_users = $this->getMonitoringUsers($object);
         $c = new Criteria();
         $c->add(MonitoringPeer::MONITORABLE_ID, $this->getReferenceKey($object));
         $c->add(MonitoringPeer::MONITORABLE_MODEL, get_class($object));
         MonitoringPeer::doDelete($c);
         // updates the cache
         foreach ($monitoring_users as $user) {
             $nobjects = $user->countMonitoredObjects(get_class($object), null, true);
         }
     } catch (Exception $e) {
         throw new deppPropelActAsMonitorableException('Unable to delete monitorable object related records');
     }
 }