Advertisement
Guest User

Untitled

a guest
Mar 4th, 2019
585
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.15 KB | None | 0 0
  1. FILTER WHERE
  2. Subject CONTAINS "Order Confirmation"
  3. AND
  4. Email FROM "billyjones26@gmail.com" OR "billyjones26@googlemail.com"
  5.  
  6. public function check_email(){
  7. $filters = $this->filters_model->get_filters($owner_id=1);
  8. foreach($filters->result() as $filter){
  9. $emails = $this->gmail->get_emails($mailbox_id = $filter->mailbox_id, $limit = 10);
  10.  
  11. $matched = array();
  12. $conditions = unserialize($filter->conditions);
  13.  
  14. foreach($emails as $email){
  15. if($conditions->isMet($email) == TRUE){
  16. $matched[] = $email;
  17. }
  18. }
  19.  
  20. echo count($matched);
  21. echo '<pre>'.$filter->title.'<br /.';
  22. print_r($conditions);
  23. echo '</pre><br />-----';
  24. exit;
  25. }
  26. }
  27.  
  28. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  29.  
  30. class Keyvalueprerequisite {
  31.  
  32. private $key;
  33. private $comparator;
  34. private $value;
  35.  
  36. public function __construct($key, $comparator, $value){
  37. $this->key = $key;
  38. $this->comparator = $comparator;
  39. $this->value = $value;
  40. }
  41.  
  42.  
  43. public function isMet(&$context)
  44. {
  45. switch ($this->key) {
  46.  
  47. case "subject":
  48.  
  49. $subject = $context["subject"];
  50. if ($this->comparator === "in"){
  51. return stripos($subject, $this->value) !== FALSE;
  52. } else if ($this->comparator === "!in") {
  53. return stripos($subject, $this->value) === FALSE;
  54. }
  55.  
  56. return FALSE;
  57.  
  58. break;
  59.  
  60. case "body":
  61.  
  62. $body = $context["body"];
  63.  
  64. if ($this->comparator === "in") {
  65. return stripos($body, $this->value) !== FALSE;
  66. } else if ($this->comparator === "!in") {
  67. return stripos($body, $this->value) === FALSE;
  68. }
  69.  
  70. return FALSE;
  71.  
  72. break;
  73.  
  74. case "from_address":
  75.  
  76. $from = $context["from"];
  77.  
  78. if ($this->comparator === "=") {
  79. return $this->value === $from;
  80. } else if ($this->comparator === "!=") {
  81. return $this->value !== $from;
  82. } else{
  83. return false;
  84. }
  85.  
  86. break;
  87.  
  88. default:
  89. }
  90.  
  91. return FALSE;
  92. }
  93.  
  94. }
  95.  
  96. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  97.  
  98. class Prerequisitegroup {
  99.  
  100. private $type;
  101. private $prerequisites;
  102.  
  103. public function __construct($type = 'AND'){
  104. $this->type = $type;
  105. }
  106.  
  107. public function add(){
  108. foreach(func_get_args() as $prerequisite){
  109. $this->prerequisites[] = $prerequisite;
  110. }
  111. }
  112.  
  113. public function isMet(&$context)
  114. {
  115. if (empty($this->prerequisites) === FALSE) {
  116. $result = TRUE;
  117.  
  118. foreach ($this->prerequisites as $prerequisite) {
  119. $is_met = $prerequisite->isMet($context);
  120. if ($this->type === 'AND') {
  121. $result = $result && $is_met;
  122. if ($result === FALSE) {
  123. return FALSE;
  124. }
  125. } else {
  126. $result = $result || $is_met;
  127. if ($result === TRUE) {
  128. return TRUE;
  129. }
  130. }
  131. }
  132. return $result;
  133. }
  134.  
  135. return TRUE;
  136. }
  137.  
  138.  
  139. }
  140.  
  141. string(3) "AND"
  142. ["prerequisites":"Prerequisitegroup":private]=>
  143. array(1) {
  144. [0]=>
  145. object(Prerequisitegroup)#23 (2) {
  146. ["type":"Prerequisitegroup":private]=>
  147. string(2) "OR"
  148. ["prerequisites":"Prerequisitegroup":private]=>
  149. array(1) {
  150. [0]=>
  151. object(Keyvalueprerequisite)#24 (3) {
  152. ["key":"Keyvalueprerequisite":private]=>
  153. string(7) "subject"
  154. ["comparator":"Keyvalueprerequisite":private]=>
  155. string(2) "in"
  156. ["value":"Keyvalueprerequisite":private]=>
  157. string(4) "TEST"
  158. }
  159. }
  160. }
  161. }
  162. }
  163.  
  164. $c1 = new KeyValuePrerequisite("EmailFrom", "=", "billyjones26@gmail.com");
  165. $c2 = new KeyValuePrerequisite("EmailFrom", "=", "billyjones26@googlemail.com");
  166. $c3 = new KeyValuePrerequisite("Subject", "in", "Order Confirmation");
  167.  
  168. $from_condition = new PrerequisiteGroup('or');
  169. $from_condition->add($c1, $c2);
  170.  
  171. $final_condition = new PrerequisiteGroup($c3, $from_condition); // defaults to and
  172.  
  173. $db->query("INSERT INTO conditions SET user_id = %i, conditions = %l", $user_id, serialize($final_condition));
  174.  
  175. // Fetch conditions
  176.  
  177. $email_conditions = $user->getEmailConditions()
  178.  
  179. // Connect to your inbox and fetch relevant emails
  180.  
  181. $matching_emails = array();
  182. foreach ($emails as $email) {
  183. if ($email_conditions->isMet($email) {
  184. $matching_emails[] = $email;
  185. }
  186. }
  187.  
  188. interface Prerequisite
  189. {
  190. /**
  191. * Must return TRUE or FALSE.
  192. */
  193. public function isMet(&$context);
  194. }
  195.  
  196. class KeyValuePrerequisite extends PrerequisiteGroup
  197. {
  198. protected $key;
  199. protected $comparator;
  200. protected $value;
  201.  
  202. public function __construct($key, $comparator, $value = NULL)
  203. {
  204. $this->key = $key;
  205. $this->comparator = $comparator;
  206. $this->value = $value;
  207. }
  208.  
  209. public function isMet(&$context)
  210. {
  211. switch ($this->key) {
  212.  
  213. case "Subject":
  214.  
  215. $subject = $context["subject"];
  216.  
  217. if ($this->comparator === "in") }
  218. return stripos($subject, $this->value) !== FALSE;
  219. } else if ($this->comparator === "not int") {
  220. return stripos($subject, $this->value) === FALSE;
  221. }
  222.  
  223. return FALSE;
  224.  
  225. break;
  226.  
  227. case "EmailFrom":
  228.  
  229. $from = $context["from"];
  230.  
  231. return $this->value === $from;
  232.  
  233. break;
  234.  
  235. default:
  236. }
  237.  
  238. return FALSE;
  239. }
  240. }
  241.  
  242. class PrerequisiteGroup implements Prerequisite
  243. {
  244. private $type;
  245. private $prerequisites;
  246.  
  247. public function __construct($type = 'AND')
  248. {
  249. $this->type = $type;
  250. }
  251.  
  252. public function add(Prerequisite $prerequisite)
  253. {
  254. if ($prerequisite instanceof Prerequisite) {
  255. $this->prerequisites[] = $prerequisite;
  256. } else {
  257. throw new Exception('Unknown Prerequisite type ' . get_class($prerequisite));
  258. }
  259. }
  260.  
  261. public function isMet(&$context)
  262. {
  263. if (empty($this->prerequisites) === FALSE) {
  264. $result = $this->type === 'AND';
  265. foreach ($this->prerequisites as $prerequisite) {
  266. $is_met = $prerequisite->isMet($context);
  267. if ($this->type === 'AND') {
  268. $result = $result && $is_met;
  269. if ($result === FALSE) {
  270. return FALSE;
  271. }
  272. } else {
  273. $result = $result || $is_met;
  274. if ($result === TRUE) {
  275. return TRUE;
  276. }
  277. }
  278. }
  279. return $result;
  280. }
  281.  
  282. return TRUE;
  283. }
  284. }
  285.  
  286. Row 1: [select: subject] [select:contains] [input:"Order Confirmation"]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement