<?php
/**
 *
 * @author    Chongmyung Park <chongmyung.park@gmail.com>
 */

# 개별 페이지 접근 불가
if (!defined("_GNUBOARD_")) {
    exit;
}

# 환경설정 #######################################################
# API Key (https://www.pushbullet.com/#settings)
$PUSHBULLET_API_KEY = '';

# 알림받을 이메일 주소 (Pushbullet 계정에 등록된 이메일)
$PUSHBULLET_RECV_EMAILS = [
    'chongmyung.park@gmail.com',
];
#################################################################

$PUSHBULLET_API_URL = 'https://api.pushbullet.com/v2/pushes';

/**
 * @param string $body  보낼 내용
 * @param string $title 제목
 * @param string $type  알림유형
 * @param string $url   링크
 */
function pushbullet_send($body='', $title='', $type='note', $url='') {
    global $PUSHBULLET_RECV_EMAILS, $PUSHBULLET_API_URL, $PUSHBULLET_API_KEY;

    foreach($PUSHBULLET_RECV_EMAILS as $v) {
        $push_param = '';
        if($type == 'link') $push_param .= 'url='.urlencode($url).'&';
        $push_param .= 'type='.$type.'&email='.$v.'&title='.urlencode($title).'&body='.urlencode($body);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $PUSHBULLET_API_URL);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $push_param);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Access-Token: '.$PUSHBULLET_API_KEY));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_exec($ch);
        curl_close($ch);
    }
}

/**
 * 게시물 작성시 알림 발송
 * 
 * @param array  $board        게시판정보
 * @param int    $wr_id        게시물ID
 * @param string $w            게시판 액션 flag
 * @param string $qstr         쿼리 스트링
 * @param string $redirect_url 리다이렉트 URL
 */
function pushbullet_on_write_update($board, $wr_id, $w, $qstr, $redirect_url) {
    global  $config, $wr_name;
    if($w) return;
    $subject = '['.$config['cf_title'].'] 새글알림';
    $content = '새글 by "'. $wr_name . '" on "'. $board['bo_subject'].'"';
    $link = G5_BBS_URL.'/board.php?bo_table='.$board['bo_table'].'&wr_id='.$wr_id;
    pushbullet_send($content, $subject, 'link', $link);
}

/**
 * 댓글 작성시 알림 발송
 *
 * @param array  $board        게시판정보
 * @param int    $wr_id        게시물ID
 * @param string $w            게시판 액션 flag
 * @param string $qstr         쿼리 스트링
 * @param string $redirect_url 리다이렉트 URL
 */
function pushbullet_on_write_comment_update($board, $wr_id, $w, $qstr, $redirect_url) {
    global  $config, $wr_name, $comment_id;
    if($w != 'c') return;
    $subject = '['.$config['cf_title'].'] 댓글알림';
    $content = '댓글 by "'. $wr_name . '" on "'. $board['bo_subject'].'"';
    $link = G5_BBS_URL.'/board.php?bo_table='.$board['bo_table'].'&wr_id='.$wr_id.'#c_'.$comment_id;
    pushbullet_send($content, $subject, 'link', $link);
}

# 이벤트 핸들러 등록
add_event('write_update_after', 'pushbullet_on_write_update', G5_HOOK_DEFAULT_PRIORITY, 5);             // 게시물 작성 이벤트 핸들러 등록
add_event('comment_update_after', 'pushbullet_on_write_comment_update', G5_HOOK_DEFAULT_PRIORITY, 5);   // 댓글 작성 이벤트 핸들러 등록