/**
  * This function performs the validation work for complex object models.
  *
  * In addition to checking the current object, all related objects will
  * also be validated.  If all pass then <code>true</code> is returned; otherwise
  * an aggreagated array of ValidationFailed objects will be returned.
  *
  * @param      array $columns Array of column names to validate.
  * @return     mixed <code>true</code> if all validations pass; array of <code>ValidationFailed</code> objets otherwise.
  */
 protected function doValidate($columns = null)
 {
     if (!$this->alreadyInValidation) {
         $this->alreadyInValidation = true;
         $retval = null;
         $failureMap = array();
         if (($retval = NagiosTimeperiodPeer::doValidate($this, $columns)) !== true) {
             $failureMap = array_merge($failureMap, $retval);
         }
         if ($this->collNagiosTimeperiodEntrys !== null) {
             foreach ($this->collNagiosTimeperiodEntrys as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosTimeperiodExcludesRelatedByTimeperiodId !== null) {
             foreach ($this->collNagiosTimeperiodExcludesRelatedByTimeperiodId as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosTimeperiodExcludesRelatedByExcludedTimeperiod !== null) {
             foreach ($this->collNagiosTimeperiodExcludesRelatedByExcludedTimeperiod as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosContactsRelatedByHostNotificationPeriod !== null) {
             foreach ($this->collNagiosContactsRelatedByHostNotificationPeriod as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosContactsRelatedByServiceNotificationPeriod !== null) {
             foreach ($this->collNagiosContactsRelatedByServiceNotificationPeriod as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosHostTemplatesRelatedByCheckPeriod !== null) {
             foreach ($this->collNagiosHostTemplatesRelatedByCheckPeriod as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosHostTemplatesRelatedByNotificationPeriod !== null) {
             foreach ($this->collNagiosHostTemplatesRelatedByNotificationPeriod as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosHostsRelatedByCheckPeriod !== null) {
             foreach ($this->collNagiosHostsRelatedByCheckPeriod as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosHostsRelatedByNotificationPeriod !== null) {
             foreach ($this->collNagiosHostsRelatedByNotificationPeriod as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosServiceTemplatesRelatedByCheckPeriod !== null) {
             foreach ($this->collNagiosServiceTemplatesRelatedByCheckPeriod as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosServiceTemplatesRelatedByNotificationPeriod !== null) {
             foreach ($this->collNagiosServiceTemplatesRelatedByNotificationPeriod as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosServicesRelatedByCheckPeriod !== null) {
             foreach ($this->collNagiosServicesRelatedByCheckPeriod as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosServicesRelatedByNotificationPeriod !== null) {
             foreach ($this->collNagiosServicesRelatedByNotificationPeriod as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosDependencys !== null) {
             foreach ($this->collNagiosDependencys as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collNagiosEscalations !== null) {
             foreach ($this->collNagiosEscalations as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         $this->alreadyInValidation = false;
     }
     return !empty($failureMap) ? $failureMap : true;
 }