/**
  * Returns those CareerSubjects that are correlative for $career_subject. This depends on
  * has_correlative_previous_year flag
  *
  * @param CareerSubject $career_subject
  * @param Criteria $criteria add custom filters to returned values
  * @param PropelPDO $con
  * @return array CareerSubject[]
  */
 public function getCorrelativesForCareerSubject(CareerSubject $career_subject, Criteria $criteria = null, PropelPDO $con = null)
 {
     if ($career_subject->getHasCorrelativePreviousYear()) {
         // $criteria must filter only the CareerSubject objects that belong to the
         // same Career as $career_subject, different from $career_subject, that
         // are in an year up to the same year as $career_subject
         $criteria = is_null($criteria) ? new Criteria() : $criteria;
         $criteria->add(CareerSubjectPeer::ID, $career_subject->getId(), Criteria::NOT_EQUAL);
         $criteria->add(CareerSubjectPeer::CAREER_ID, $career_subject->getCareerId());
         $criteria->add(CareerSubjectPeer::YEAR, $career_subject->getYear() - 1);
         //Only consider previous year
         // Dont forget to consider orientation
         $orientation_criterion = $criteria->getNewCriterion(CareerSubjectPeer::ORIENTATION_ID, null, Criteria::ISNULL);
         $sub_orientation_criterion = $criteria->getNewCriterion(CareerSubjectPeer::SUB_ORIENTATION_ID, null, Criteria::ISNULL);
         if (!is_null($orientation = $career_subject->getOrientation())) {
             /*
              * Correlatives for a subject with orientation are other subjects without orientation
              * or subjects with same orientation
              */
             $criterion = $criteria->getNewCriterion(CareerSubjectPeer::ORIENTATION_ID, $orientation->getId());
             $orientation_criterion->addOr($criterion);
         }
         $criteria->add($orientation_criterion);
         if (!is_null($sub_orientation = $career_subject->getSubOrientation())) {
             /*
              * Correlatives for a subject with orientation are other subjects without orientation
              * or subjects with same orientation
              */
             $criterion = $criteria->getNewCriterion(CareerSubjectPeer::ORIENTATION_ID, $orientation->getId());
             $sub_orientation_criterion->addOr($criterion);
         }
         $criteria->add($sub_orientation_criterion);
         return CareerSubjectPeer::doSelect($criteria);
     }
     return array_map(create_function('$correlative', 'return $correlative->getCareerSubjectRelatedByCorrelativeCareerSubjectId();'), $career_subject->getCorrelativesRelatedByCareerSubjectId($criteria));
 }