/**
  * Execute pushover test
  *
  * @todo move test to separate class
  */
 protected function testPushover()
 {
     $pushover = psm_build_pushover();
     $pushover->setDebug(true);
     $user = $this->getUser()->getUser();
     $api_token = psm_get_conf('pushover_api_token');
     if (empty($api_token)) {
         $this->addMessage(psm_get_lang('config', 'pushover_error_noapp'), 'error');
     } elseif (empty($user->pushover_key)) {
         $this->addMessage(psm_get_lang('config', 'pushover_error_nokey'), 'error');
     } else {
         $pushover->setPriority(0);
         $pushover->setTitle(psm_get_lang('config', 'test_subject'));
         $pushover->setMessage(psm_get_lang('config', 'test_message'));
         $pushover->setUser($user->pushover_key);
         if ($user->pushover_device != '') {
             $pushover->setDevice($user->pushover_device);
         }
         $result = $pushover->send();
         if (isset($result['output']->status) && $result['output']->status == 1) {
             $this->addMessage(psm_get_lang('config', 'pushover_sent'), 'success');
         } else {
             if (isset($result['output']->errors->error)) {
                 $error = $result['output']->errors->error;
             } else {
                 $error = 'Unknown';
             }
             $this->addMessage(sprintf(psm_get_lang('config', 'pushover_error'), $error), 'error');
         }
     }
 }
 /**
  * This functions performs the pushover notifications
  *
  * @param array $users
  * @return boolean
  */
 protected function notifyByPushover($users)
 {
     $userlist = array();
     $pushover = psm_build_pushover();
     if ($this->status_new === true) {
         $pushover->setPriority(0);
     } else {
         $pushover->setPriority(2);
         $pushover->setRetry(300);
         //Used with Priority = 2; Pushover will resend the notification every 60 seconds until the user accepts.
         $pushover->setExpire(3600);
         //Used with Priority = 2; Pushover will resend the notification every 60 seconds for 3600 seconds. After that point, it stops sending notifications.
     }
     $message = psm_parse_msg($this->status_new, 'pushover_message', $this->server);
     $pushover->setTitle(psm_parse_msg($this->status_new, 'pushover_title', $this->server));
     $pushover->setMessage(str_replace('<br/>', "\n", $message));
     $pushover->setUrl(psm_build_url());
     $pushover->setUrlTitle(psm_get_lang('system', 'title'));
     foreach ($users as $user) {
         if (trim($user['pushover_key']) == '') {
             continue;
         }
         $userlist[] = $user['user_id'];
         $pushover->setUser($user['pushover_key']);
         if ($user['pushover_device'] != '') {
             $pushover->setDevice($user['pushover_device']);
         }
         $pushover->send();
     }
     if (psm_get_conf('log_pushover')) {
         psm_add_log($this->server_id, 'pushover', $message, implode(',', $userlist));
     }
 }