subjectPatterns = [ '/\[' . $this->caseLabel . ' #([0-9a-f]{7})\]/i', '/\[' . $this->caseLabel . ' #(\d+)\]/i', ]; } /** * Checks if email is related to cases. * * @param string $subject * Email subject. * * @return bool * TRUE if email subject contains case ID or case hash, FALSE otherwise. */ public function isCaseEmail ($subject) { $subject = trim($subject); $patterns = $this->getSubjectPatterns(); $res = FALSE; for ($i = 0; !$res && $i < count($patterns); $i++) { $res = preg_match($patterns[$i], $subject) === 1; } return $res; } /** * Returns cases related email subject patterns. * * These patterns could be used to check if email is related to cases. * * @return array|string[] */ public function getSubjectPatterns() { // Allow others to change patterns using hook. if (empty($this->subjectPatternsHooked)) { $patterns = $this->subjectPatterns; CRM_Utils_Hook::caseEmailSubjectPatterns($patterns); $this->subjectPatternsHooked = $patterns; } return !empty($this->subjectPatternsHooked) ? $this->subjectPatternsHooked : $this->subjectPatterns; } /** * Returns value of some class property. * * @param string $name * Property name. * * @return mixed|null * Property value or null if property does not exist. */ public function get($name) { return $this->{$name} ?? NULL; } /** * Sets value of some class property. * * @param string $name * Property name. * @param mixed $value * New property value. */ public function set($name, $value) { if (isset($this->{$name})) { $this->{$name} = $value; } } }