public static function getByMayInterested($airport = null, $min_efficiency = 85) { $c = new Criteria(); $c->add(self::APPT_DATE, null, Criteria::ISNOTNULL); $c->add(self::MISSION_DATE, null, Criteria::ISNOTNULL); $c->add(self::CANCEL_MISSION, 1); $c->add(self::MISSION_DATE, date("Y/m/d", strtotime("now")), Criteria::GREATER_EQUAL); $c->addAnd(self::MISSION_DATE, date("Y/m/d", strtotime("+1 year")), Criteria::LESS_EQUAL); if ($min_efficiency && $airport) { $c->addJoin(self::ID, MissionLegPeer::MISSION_ID, Criteria::INNER_JOIN); $c->addJoin(MissionLegPeer::ID, PilotRequestPeer::LEG_ID, Criteria::LEFT_JOIN); $c->addJoin(MissionPeer::ITINERARY_ID, ItineraryPeer::ID, Criteria::INNER_JOIN); $c->add(MissionLegPeer::MISSION_REPORT_ID, null, Criteria::ISNULL); $c->addAlias('from_air', AirportPeer::TABLE_NAME); $c->addAlias('to_air', AirportPeer::TABLE_NAME); $c->addJoin(MissionLegPeer::FROM_AIRPORT_ID, AirportPeer::alias('from_air', AirportPeer::ID), Criteria::INNER_JOIN); $c->addJoin(MissionLegPeer::TO_AIRPORT_ID, AirportPeer::alias('to_air', AirportPeer::ID), Criteria::INNER_JOIN); $c->addAnd(MissionPeer::ID, "\n CEILING(ROUND(ACOS(SIN(RADIANS(from_air.latitude))\n *SIN(RADIANS(to_air.latitude))+COS(RADIANS(from_air.latitude))\n *COS(RADIANS(to_air.latitude))*COS(RADIANS(from_air.longitude)-RADIANS(to_air.longitude)))\n *((180*60)/PI()))/(ROUND(ACOS(SIN(RADIANS(from_air.latitude))\n *SIN(RADIANS(to_air.latitude))+COS(RADIANS(from_air.latitude))\n *COS(RADIANS(to_air.latitude))\n *\n COS(RADIANS(from_air.longitude)-RADIANS(to_air.longitude))\n ) * ((180*60)/PI())\n )\n +\n ROUND(\n ACOS(\n SIN(RADIANS({$airport->getLatitude()}))\n *\n SIN(RADIANS(to_air.latitude))\n +\n COS(RADIANS({$airport->getLatitude()}))\n *\n COS(RADIANS(to_air.latitude))\n *\n COS(RADIANS({$airport->getLongitude()})-RADIANS(to_air.longitude))\n ) * ((180*60)/PI())\n )\n +\n ROUND(\n ACOS(\n SIN(RADIANS({$airport->getLatitude()}))\n *\n SIN(RADIANS(from_air.latitude))\n +\n COS(RADIANS({$airport->getLatitude()}))\n *\n COS(RADIANS(from_air.latitude))\n *\n COS(RADIANS({$airport->getLongitude()})-RADIANS(from_air.longitude))\n ) * ((180*60)/PI()))) * 200) >= " . $min_efficiency, Criteria::CUSTOM); $c->add(MissionLegPeer::CANCELLED, null, Criteria::ISNULL); } $c->setDistinct(self::ID); $c->addAscendingOrderByColumn(self::MISSION_DATE); $c->setLimit(3); return self::doSelect($c); }
public static function getPendingPagerPilot($max, $page = 1, $pilot_id, $wing_id = null, $ident = null) { $c = new Criteria(); $c->addJoin(self::MISSION_ID, MissionPeer::ID, Criteria::LEFT_JOIN); $c->add(self::PILOT_ID, $pilot_id); $c->addJoin(self::FROM_AIRPORT_ID, AirportPeer::alias('from_air', AirportPeer::ID), Criteria::LEFT_JOIN); $c->addJoin(self::TO_AIRPORT_ID, AirportPeer::alias('to_air', AirportPeer::ID), Criteria::LEFT_JOIN); $c->addAlias('from_air', AirportPeer::TABLE_NAME); $c->addAlias('to_air', AirportPeer::TABLE_NAME); if ($ident) { $c1 = $c->getNewCriterion(AirportPeer::alias("from_air", AirportPeer::IDENT), "%{$ident}%", Criteria::LIKE); $c2 = $c->getNewCriterion(AirportPeer::alias("to_air", AirportPeer::IDENT), "%{$ident}%", Criteria::LIKE); $c->add($c1->addOr($c2)); } if ($wing_id) { $c1 = $c->getNewCriterion(AirportPeer::alias("from_air", AirportPeer::WING_ID), $wing_id); $c2 = $c->getNewCriterion(AirportPeer::alias("to_air", AirportPeer::WING_ID), $wing_id); $c->add($c1->addOr($c2)); } $c->add(MissionPeer::MISSION_DATE, date('Y-m-d') . ' 00:00:00', Criteria::GREATER_EQUAL); $c->add(self::CANCELLED, null, Criteria::ISNULL); self::addSelectColumns($c); $c->addAsColumn("sort_order", "ABS(DATEDIFF(" . MissionPeer::MISSION_DATE . ", NOW()))"); $c->addAscendingOrderByColumn('sort_order'); $pager = new sfPropelPager('MissionLeg', $max); $pager->setCriteria($c); $pager->setPage($page); $pager->init(); return $pager; }