コード例 #1
0
 /**
  * @param \RainLoop\Providers\Filters\Classes\FilterCondition $oCondition
  *
  * @return string
  */
 private function conditionToSieveScript($oCondition)
 {
     $sResult = '';
     $sTypeWord = '';
     $bTrue = true;
     $sValue = \trim($oCondition->Value());
     $sValueSecond = \trim($oCondition->ValueSecond());
     if (0 < \strlen($sValue) || 0 < \strlen($sValue) && 0 < \strlen($sValueSecond) && \RainLoop\Providers\Filters\Enumerations\ConditionField::HEADER === $oCondition->Field()) {
         switch ($oCondition->Type()) {
             case \RainLoop\Providers\Filters\Enumerations\ConditionType::OVER:
                 $sTypeWord = ':over';
                 break;
             case \RainLoop\Providers\Filters\Enumerations\ConditionType::UNDER:
                 $sTypeWord = ':under';
                 break;
             case \RainLoop\Providers\Filters\Enumerations\ConditionType::NOT_EQUAL_TO:
                 $sResult .= 'not ';
             case \RainLoop\Providers\Filters\Enumerations\ConditionType::EQUAL_TO:
                 $sTypeWord = ':is';
                 break;
             case \RainLoop\Providers\Filters\Enumerations\ConditionType::NOT_CONTAINS:
                 $sResult .= 'not ';
             case \RainLoop\Providers\Filters\Enumerations\ConditionType::CONTAINS:
                 $sTypeWord = ':contains';
                 break;
             default:
                 $bTrue = false;
                 $sResult = '/* @Error: unknown type value */ false';
                 break;
         }
         switch ($oCondition->Field()) {
             case \RainLoop\Providers\Filters\Enumerations\ConditionField::FROM:
                 $sResult .= 'header ' . $sTypeWord . ' ["From"]';
                 break;
             case \RainLoop\Providers\Filters\Enumerations\ConditionField::RECIPIENT:
                 $sResult .= 'header ' . $sTypeWord . ' ["To", "CC"]';
                 break;
             case \RainLoop\Providers\Filters\Enumerations\ConditionField::SUBJECT:
                 $sResult .= 'header ' . $sTypeWord . ' ["Subject"]';
                 break;
             case \RainLoop\Providers\Filters\Enumerations\ConditionField::HEADER:
                 $sResult .= 'header ' . $sTypeWord . ' ["' . $this->quote($sValueSecond) . '"]';
                 break;
             case \RainLoop\Providers\Filters\Enumerations\ConditionField::SIZE:
                 $sResult .= 'size ' . $sTypeWord;
                 break;
             default:
                 $bTrue = false;
                 $sResult = '/* @Error: unknown field value */ false';
                 break;
         }
         if ($bTrue) {
             if (\in_array($oCondition->Field(), array(\RainLoop\Providers\Filters\Enumerations\ConditionField::FROM, \RainLoop\Providers\Filters\Enumerations\ConditionField::RECIPIENT)) && false !== \strpos($sValue, ',')) {
                 $self = $this;
                 $aValue = \array_map(function ($sValue) use($self) {
                     return '"' . $self->quote(\trim($sValue)) . '"';
                 }, \explode(',', $sValue));
                 $sResult .= ' [' . \trim(\implode(', ', $aValue)) . ']';
             } else {
                 if (\RainLoop\Providers\Filters\Enumerations\ConditionField::SIZE === $oCondition->Field()) {
                     $sResult .= ' ' . $this->quote($sValue);
                 } else {
                     $sResult .= ' "' . $this->quote($sValue) . '"';
                 }
             }
             $sResult = \MailSo\Base\Utils::StripSpaces($sResult);
         }
     } else {
         $sResult = '/* @Error: empty condition value */ false';
     }
     return $sResult;
 }
コード例 #2
0
ファイル: SieveStorage.php プロジェクト: sunhaolin/rainloop
 /**
  * @param \RainLoop\Providers\Filters\Classes\FilterCondition $oCondition
  *
  * @return string
  */
 private function conditionToSieveScript($oCondition)
 {
     $sResult = '';
     $sTypeWord = '';
     $sValue = \trim($oCondition->Value());
     if (0 < strlen($sValue)) {
         switch ($oCondition->Type()) {
             case \RainLoop\Providers\Filters\Enumerations\ConditionType::NOT_EQUAL_TO:
                 $sResult .= 'not ';
             case \RainLoop\Providers\Filters\Enumerations\ConditionType::EQUAL_TO:
                 $sTypeWord = ':is';
                 break;
             case \RainLoop\Providers\Filters\Enumerations\ConditionType::NOT_CONTAINS:
                 $sResult .= 'not ';
             case \RainLoop\Providers\Filters\Enumerations\ConditionType::CONTAINS:
                 $sTypeWord = ':contains';
                 break;
         }
         switch ($oCondition->Field()) {
             case \RainLoop\Providers\Filters\Enumerations\ConditionField::FROM:
                 $sResult .= 'header ' . $sTypeWord . ' ["From"]';
                 break;
             case \RainLoop\Providers\Filters\Enumerations\ConditionField::RECIPIENT:
                 $sResult .= 'header ' . $sTypeWord . ' ["To", "CC"]';
                 break;
             case \RainLoop\Providers\Filters\Enumerations\ConditionField::SUBJECT:
                 $sResult .= 'header ' . $sTypeWord . ' ["Subject"]';
                 break;
         }
         if (\in_array($oCondition->Field(), array(\RainLoop\Providers\Filters\Enumerations\ConditionField::FROM, \RainLoop\Providers\Filters\Enumerations\ConditionField::RECIPIENT)) && false !== \strpos($sValue, ',')) {
             $self = $this;
             $aValue = \array_map(function ($sValue) use($self) {
                 return '"' . $self->quote(\trim($sValue)) . '"';
             }, \explode(',', $sValue));
             $sResult .= ' [' . \trim(\implode(', ', $aValue)) . ']';
         } else {
             $sResult .= ' "' . $this->quote($sValue) . '"';
         }
         $sResult = \preg_replace('/[\\s]+/u', ' ', $sResult);
     } else {
         $sResult = '/* @Error: empty condition value */ false';
     }
     return $sResult;
 }