View file system/connections/cheader/web_push.php

File size: 2.55Kb
<?php
  
if (user('ID') > 0) {
  
  $url = 'https://onesignal.com/api/v1/notifications';
  $APP_ID = config('WEB_PUSH_APP_ID');
  $REST_API_KEY = config('WEB_PUSH_KEY');
  $fields = null;
  
  $wbp_data = db::get_string_all("SELECT * FROM `WEB_PUSH_LIST` LIMIT 10");
  while ($wbp = $wbp_data->fetch()) {    
    
    $token_data = db::get_string_all("SELECT * FROM `WEB_PUSH_TOKEN` WHERE `USER_ID` = ? ORDER BY `ID` DESC LIMIT 3", [$wbp['USER_ID']]);
    while ($token = $token_data->fetch()) {
      
      /*
      ----------------
      Личные сообщения
      ----------------
      */
      
      if ($wbp['TYPE'] == 'message') {
        
        $fields = array(
          
          'app_id' => $APP_ID,
          'target_channel' => 'push',
          'include_subscription_ids' => [$token['TOKEN']],
          'data' => array("foo" => "bar"),
          'contents' => array("en" => 'от '.user::login_mini($wbp['MY_ID'])),
          'headings' => array("en" => '+1 новое сообщение в почте'),
          'large_icon' => '',
          'url' => 'https://'.HTTP_HOST.'/account/mail/'
        
        );
        
      }
      
      /*
      ---------------------
      Уведомления с журнала
      ---------------------
      */
      
      if ($wbp['TYPE'] == 'comments' || $wbp['TYPE'] == 'users' || $wbp['TYPE'] == 'user' || $wbp['TYPE'] == 'likes') {
        
        $fields = array(
          
          'app_id' => $APP_ID,
          'target_channel' => 'push',
          'include_subscription_ids' => [$token['TOKEN']],
          'data' => array("foo" => "bar"),
          'contents' => array("en" => 'от '.user::login_mini($wbp['MY_ID'])),
          'headings' => array("en" => '+1 новое уведомление в журнале'),
          'large_icon' => '',
          'url' => 'https://'.HTTP_HOST.'/account/journal/'
        
        );
        
      }
      
      $fields = json_encode($fields);        
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Basic '.$REST_API_KEY.''));
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
      curl_setopt($ch, CURLOPT_HEADER, FALSE);
      curl_setopt($ch, CURLOPT_POST, TRUE);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);        
      $response = curl_exec($ch);
      curl_close($ch);
      
    }
    
    db::get_set("DELETE FROM `WEB_PUSH_LIST` WHERE `ID` = ? LIMIT 1", [$wbp['ID']]);
  
  }
  
}