/** * 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'); } }