setFilterCallback() public method

An alternative way to filter. You can set a closure instead of a filter instance. If both are set, the closure will be preferred.
public setFilterCallback ( Closure $cCallback ) : void
$cCallback Closure
return void
Example #1
0
 /**
  * Pushes a message to the given api key.
  *
  * @param \Prowl\Message $oMessage
  * @return \Prowl\Response
  */
 public function push(\Prowl\Message $oMessage)
 {
     // Messages must be sent as post
     $this->setIsPostRequest(true);
     $oMessage->validate();
     if ($oMessage->getFilterCallback() == null) {
         if ($this->getFilterCallback() != null) {
             $oMessage->setFilterCallback($this->getFilterCallback());
         }
     }
     // if the previous routine did not set a callback, try to set the filter instance.
     if ($oMessage->getFilterCallback() == null) {
         if ($oMessage->getFilter() == null) {
             if ($this->getFilter() != null) {
                 $oMessage->setFilter($this->getFilter());
             } else {
                 throw new \RuntimeException("No filter found. " . "Please set a filter either in the message or in the connector");
             }
         }
     }
     $aParams['apikey'] = $oMessage->getApiKeysAsString();
     $aParams['providerkey'] = $this->sProviderKey;
     $aParams['application'] = $oMessage->getApplication();
     $aParams['event'] = $this->filter($oMessage, $oMessage->getEvent());
     $aParams['description'] = $this->filter($oMessage, $oMessage->getDescription());
     $aParams['priority'] = $oMessage->getPriority();
     if ($oMessage->getUrl() != null) {
         $aParams['url'] = $oMessage->getUrl();
     }
     array_map(create_function('$sAryVal', 'return str_replace("\\n","\\n", $sAryVal);'), $aParams);
     $sContextUrl = $this->sPushEndpoint;
     if (!$this->bIsPostRequest) {
         $sContextUrl .= '?';
     }
     $sParams = http_build_query($aParams);
     $sReturn = $this->execute($sContextUrl, $this->bIsPostRequest, $sParams);
     $this->oLastResponse = \Prowl\Response::fromResponseXml($sReturn);
     return $this->oLastResponse;
 }