/**
  * Method to do selects.
  *
  * @param      Criteria $criteria The Criteria object used to build the SELECT statement.
  * @param      PropelPDO $con
  * @return     array Array of selected Objects
  * @throws     PropelException Any exceptions caught during processing will be
  *		 rethrown wrapped into a PropelException.
  */
 public static function doSelect(Criteria $criteria, PropelPDO $con = null)
 {
     $criteriaForSelect = PermissionItemPeer::prepareCriteriaForSelect($criteria);
     $queryDB = kQueryCache::QUERY_DB_UNDEFINED;
     $cacheKey = null;
     $cachedResult = kQueryCache::getCachedQueryResults($criteriaForSelect, kQueryCache::QUERY_TYPE_SELECT, 'PermissionItemPeer', $cacheKey, $queryDB);
     if ($cachedResult !== null) {
         PermissionItemPeer::filterSelectResults($cachedResult, $criteriaForSelect);
         PermissionItemPeer::updateInstancePool($cachedResult);
         return $cachedResult;
     }
     $con = PermissionItemPeer::alternativeCon($con, $queryDB);
     $queryResult = PermissionItemPeer::populateObjects(BasePeer::doSelect($criteriaForSelect, $con));
     if ($criteriaForSelect instanceof KalturaCriteria) {
         $criteriaForSelect->applyResultsSort($queryResult);
     }
     if ($cacheKey !== null) {
         kQueryCache::cacheQueryResults($cacheKey, $queryResult);
     }
     PermissionItemPeer::filterSelectResults($queryResult, $criteria);
     PermissionItemPeer::addInstancesToPool($queryResult);
     return $queryResult;
 }