public function FiltrationDriver($o){
//Пока что : в случае если при схождении происходит отправка(без сбоя), то письмо с ящика удалиться(в папку deleted На почте) ,
// иначе если нет или если есть но произошол сбой отправки то письма не удалятся
//Создаем переменные и функции для подстановки полей в CONDITION;
if(!isset($this->filters)){ echo '<p>Фильтров не сущевствует</p>';exit;
}
//Сортировка!
foreach($this->filters as $filter){
if($filter['active']==1){
if(!isset($filter['condition']) or
!isset($filter['action'])){echo '<p>Битый фильтр '.$filter['name'].' [ID:'.$filter['id'].']'.'</p>';break
;} else{
if($this->DBGMODE==1)echo '<h4 style="margin-left:-25px;margin-top:20px;color:#91c02c;">Фильтр '.$filter['name'].':</h4>';
unset($postIF);unset
($postACT); if(preg_match('/(?<=\[POSTIF:)\C*?(?=;\])/i',$filter['condition'],$postIF)){$filter['condition'] = preg_replace('/(\[POSTIF:\C*?;\])/i','',$filter['condition']);} if(preg_match('/(?<=\[POSTACT:)\C*?(?=;\])/i',$filter['condition'],$postACT)){$filter['condition'] = preg_replace('/(\[POSTACT:\C*?;\])/i','',$filter['condition']);} if(preg_match('/(?<=\[POSTACT:)\C*?(?=;false\])/i',$filter['condition'],$postACT_false)){$filter['condition'] = preg_replace('/(\[POSTACT:\C*?;false\])/i','',$filter['condition']);} if($postIF[0
]==null){unset($postIF);}else{$postIF = $postIF[0
];} if($postACT[0
]==null){unset($postACT);}else{$postACT = $postACT[0
];} if($postACT_false[0
]==null){unset($postACT_false);}else{$postACT_false = $postACT_false[0
];}
eval('$activeIF = '.$filter['condition'].';'); //Обрабатываем CONDITION из базы данных в (bool).
// Фильтр ответчик по условию.
if( isset($filter['action']['sendansweras']) ){ if(($activeIF) and
isset($o) and
$o->seen != 1 and
$o->from_email != $this->user->login and
$this->inspector($o->from_email)!=NULL){ if($this->DBGMODE==1)echo '<p>АКТИВ IF! сработал!</p>';
if($this->DBGMODE==1)echo '<p>POST IF Получен!!</p>';
if($this->DBGMODE==1)echo '<p>Получаем тело!</p>';
$m = $this->getBody(imap_msgno($this->mailbox,$o->uid)); if(isset($m['content'])){ $body = preg_replace('/[< ]blockquote\C*сотрудниками\C*[< ][\/ ]blockquote[ >]/','',addcslashes($m['content'],'\'')); }else{echo '<p>Ошибка получения тела письма. Паа глянь код!<p>';exit;}
}
}
if($this->DBGMODE==1)echo '<p>конвертация postIF в булево</p><pre>' . $postIF . '</pre>';
eval('$postIF = (1==2) and '.$postIF.' ;');
if($this->DBGMODE==1)echo '<p>булево</p><pre>';var_dump( $postIF ); echo '</pre>';
if($postIF){
if($this->DBGMODE==1)echo '<p>ПОСТ IF! сработал!</p>';
if($filter['action']['sendansweras']!='нет'){
// Здесь действия если POSTIF условия выполнились.
$msg['Bcc'] = $this->inspector($o->from_email);
$msg['Uid'] = $o->uid;
$msg['Msgno'] = $o->msgno;
$this->filterData[$filter['action']['sendansweras']][] = $msg;
}else{
if($this->DBGMODE==1)echo '<p>Фильтр выполнен без отправки письма (Не выбран шаблон)</p>';
}
if(isset($filter['alert'])){ echo '<p>'.$filter['alert'].'</p>';
if(isset($filter['alertglobal']) and
$filter['alertglobal'] == 1
){ $_SESSION['ALERTS'][] = '<p>Фильтр ['.$filter['name'].']: '.$filter['alert'].'</p>';
}
}
return true;
}else{
if(isset($postACT_false)){ eval('$postACT_false = '.$postACT_false.';'.$postACT_false); echo '<p>['.$filter['name'].'] Выполнен постакт</p>';
if(isset($filter['alertglobal']) and
$filter['alertglobal'] == 1
){ $_SESSION['ALERTS'][] = '<p>Фильтр ['.$filter['name'].']: Выполнен постакт</p>';
}
}
if($this->DBGMODE==1)echo '<p>POST IF! не сработал</p>';
}
}else{echo '<p>Ошибка FiltrationDriver:sendansweras $postIF не является булевой</p>';exit;}
}
else{
if($this->DBGMODE==1)echo '<p>POST IF НЕ!Получен!!</p>';
$msg['Bcc'] = $this->inspector($o->from_email);
$msg['Uid'] = $o->uid;
$msg['Msgno'] = $o->msgno;
$this->filterData[$filter['action']['sendansweras']][] = $msg;
}
if(isset($filter['alert'])){ echo '<p>'.$filter['alert'].'</p>';
if(isset($filter['alertglobal']) and
$filter['alertglobal'] == 1
){ $_SESSION['ALERTS'][] = '<p>Фильтр ['.$filter['name'].']: '.$filter['alert'].'</p>';
}
}
return true;
}
}
}
// Фильтр с выполнением определенной команды.
if( isset($filter['action']['individual']) ){ $individual = $filter['action']['individual'];
if($activeIF){
if($this->DBGMODE==1)echo '<p>POST IF Получен!!</p>';
if($this->DBGMODE==1)echo '<p>Получаем тело!</p>';
$m = $this->getBody(imap_msgno($this->mailbox,$o->uid)); if($this->DBGMODE==1)echo '<p>Тело получено - отрабатываем контент письма!</p>';
if(isset($m['content'])){ $body = $m['content'];
if($this->DBGMODE==1)echo '<p>контент получен!!!</p><pre>'.$body.'</pre>';
}else{echo '<p>Ошибка получения тела письма. Паа глянь код!<p>';exit;}
}
}
eval('\$postIF = '.$postIF.';'); if($postIF){
// Здесь действия если POSTIF условия выполнились.
$off='';$on='';
if(isset($individual['answered'])){ $Answered = '\\Answered ';if($individual['answered']==2){$off.=$Answered;}elseif($individual['answered']==1){$on.=$Answered;}
}
if(isset($individual['flagged'])){ $Flagged = '\\Flagged ';if($individual['flagged']==2){$off.=$Flagged;}elseif($individual['flagged']==1){$on.=$Flagged;}
}
if(isset($individual['seen'])){ $Seen = '\\Seen ';if($individual['seen']==2){$off.=$Seen;}elseif($individual['seen']==1){$on.=$Seen;}
}
if(isset($individual['deleted'])){ $Deleted = '\\Deleted ';if($individual['deleted']==2){$off.=$Deleted;}elseif($individual['deleted']==1){$on.=$Deleted;}
}
if(isset($individual['deleted']) and
$individual['deleted']==1
){ }
if(isset($individual['individualaction'])){ eval($individual['individualaction']); }
}
if(isset($filter['alert'])){ echo '<p>'.$filter['alert'].'</p>';
if(isset($filter['alertglobal']) and
$filter['alertglobal'] == 1
){ $_SESSION['ALERTS'][] = '<p>Фильтр ['.$filter['name'].']: '.$filter['alert'].'</p>';
}
}
return true;
}else{
if(isset($postACT_false)){ eval('$postACT_false = '.$postACT_false.';'.$postACT_false); }
}
}else{echo '<p>Ошибка FiltrationDriver:individual $postIF не является булевой</p>';exit;}
}
else{
$off='';$on='';
if(isset($individual['answered'])){ $Answered = '\\Answered ';if($individual['answered']==2){$off.=$Answered;}elseif($individual['answered']==1){$on.=$Answered;}
}
if(isset($individual['flagged'])){ $Flagged = '\\Flagged ';if($individual['flagged']==2){$off.=$Flagged;}elseif($individual['flagged']==1){$on.=$Flagged;}
}
if(isset($individual['seen'])){ $Seen = '\\Seen ';if($individual['seen']==2){$off.=$Seen;}elseif($individual['seen']==1){$on.=$Seen;}
}
if(isset($individual['deleted'])){ $Deleted = '\\Deleted ';if($individual['deleted']==2){$off.=$Deleted;}elseif($individual['deleted']==1){$on.=$Deleted;}
}
if(isset($individual['deleted']) and
$individual['deleted']==1
){ }
if(isset($individual['individualaction'])){ eval($individual['individualaction']); }
eval('$postACT = '.$postACT.';'.$postACT); }
if(isset($filter['alert'])){ echo '<p>'.$filter['alert'].'</p>';
if(isset($filter['alertglobal']) and
$filter['alertglobal'] == 1
){ $_SESSION['ALERTS'][] = '<p>Фильтр ['.$filter['name'].']: '.$filter['alert'].'</p>';
}
}
return true;
}
}
}
}
}
}
}