private function handleListFiltering($oCriteria)
 {
     foreach ($this->oListSettings->aFilters as $sFilterIdentifier => $mFilterValue) {
         $sFilterType = $this->filterTypeForColumn($sFilterIdentifier);
         if ($mFilterValue === self::SELECT_ALL || $sFilterType === self::FILTER_TYPE_MANUAL) {
             continue;
         }
         $sFilterColumn = $this->getDatabaseColumnForColumn($sFilterIdentifier);
         $bInverted = $mFilterValue === self::SELECT_WITHOUT;
         $mFilterValue = $bInverted ? null : $mFilterValue;
         if ($sFilterType === self::FILTER_TYPE_IS) {
             $oCriteria->add($sFilterColumn, $mFilterValue, Criteria::EQUAL);
             //LIKE criterias are not compatible with $bInverted == true
         } else {
             if ($sFilterType === self::FILTER_TYPE_BEGINS) {
                 $oCriteria->add($sFilterColumn, "{$mFilterValue}%", Criteria::LIKE);
             } else {
                 if ($sFilterType === self::FILTER_TYPE_CONTAINS) {
                     $oCriteria->add($sFilterColumn, "%{$mFilterValue}%", Criteria::LIKE);
                 } else {
                     if ($sFilterType === self::FILTER_TYPE_IS_NULL) {
                         if ($mFilterValue) {
                             $oCriteria->add($sFilterColumn, null, Criteria::ISNULL);
                         } else {
                             $oCriteria->add($sFilterColumn, null, Criteria::ISNOTNULL);
                         }
                     } else {
                         if ($sFilterType === self::FILTER_TYPE_IN) {
                             if (!is_array($mFilterValue)) {
                                 $mFilterValue = array($mFilterValue);
                             }
                             if (count($mFilterValue) === 0) {
                                 $bInverted = true;
                             }
                             $oCriteria->add($sFilterColumn, $mFilterValue, $bInverted ? Criteria::NOT_IN : Criteria::IN);
                         } else {
                             if ($sFilterType === self::FILTER_TYPE_TAG) {
                                 $aTaggedItemIds = array();
                                 foreach (TagInstancePeer::getByModelNameAndTagName($this->sModelName, $mFilterValue) as $oTagInstance) {
                                     $aTaggedItemIds[] = $oTagInstance->getTaggedItemId();
                                 }
                                 $oCriteria->add($sFilterColumn, $aTaggedItemIds, $bInverted ? Criteria::NOT_IN : Criteria::IN);
                             }
                         }
                     }
                 }
             }
         }
     }
 }