Например: Скачать CSS v34
Суббота, 16.05.2026, 23:22 Регистрация Карта сайта RSS Лента
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Мгновенное оповещение как на сайте vk для ucoz
Дата: Среда, 29.08.2012, 02:55 | Сообщение # 1
  • 189
  • 372
  • PHP Скрипт

    Мгновенное оповещение как на сайте vk для ucoz. Всем привет, вот решил написать небольшой скрипт мгн. оповещений как на ВК.

    В любом шаблоне перед

    пишем:
    Code
    <div class="uBox"></div>


    создаём папку js и в ней два файла: cookie.js, ualert.js и вставляем перед
    В ualert.js пишем:
    Code
    setTimeout(function () {    
           
        var source = new EventSource('/php/evstream/index.php');    
        source.addEventListener('message', function(e) {    
        // Пришли какие-то данные    
        var data = e.data;    
        data = data.split('alert: ');    
        eval('var newalert = '+data[1]+';');    
           
        for( i = 0; i < 4; i++ ){    
        if(!$('#uBox_'+newalert[i].id).html() && cookie('uBox_'+newalert[i].id)==null){    
        $('#pmm_player').remove();    
        $('body').append('<embed type="application/x-shockwave-flash" id="pmm_player"    
       src="http://usite.su/images/player.swf?song_url=http://usite.su/images/new_ls.mp3&autoplay=1&loop=0" width="0" height="0"/>');    
        $('.uBox').animate({bottom:'10'}, {queue:false}).fadeIn().append('<div    
       class="uBoxMesssge" id="uBox_'+newalert[i].id+'"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td colspan="2" valign="top" align="left" class="uBoxTitle"><div class="uBox_close"><a class="uBox_close_s" title="Закрыть" href="javascript://" onclick="ualert_hide('+newalert[i].id+')"></a></div><b>Новое уведомление от '+newalert[i].title+'</b></td></tr><tr><td rowspan="2" width="50px" valign="top"><a href="/index/8-0-"><img class="uBoxAva" src="'+newalert[i].photo+'" border="0"></a></td><td valign="top" align="left" class="uBoxTheme">Тема: '+newalert[i].message+'</td></tr><tr><td valign="top" align="left" class="uBoxMessaged"><a style="word-wrap:break-word;text-decoration:none;text-align:left" href="javascript://"></a></td></tr></table></div>');    
        }    
        }    
        }, false);    
           
        source.addEventListener('open', function(e) {    
        // Соединение было открыто    
        }, false);    
           
        source.addEventListener('error', function(e) {    
        if (e.eventPhase == EventSource.CLOSED) {    
        // Соединение закрыто    
        }    
        }, false);    
           
        }, 5);    
           
        function ualert_hide(id){    
        cookie('uBox_'+id, '1', {expires: 1});    
           
        $('#uBox_'+id).animate({bottom:'10'}).fadeOut();    
           
        }


    В cookie.js пишим:
    Code
    function cookie(name, value, options) {    
        if (typeof value != 'undefined') {    
        options = options || {};    
        if (value === null) {    
        value = '';    
        options.expires = -1;    
        }    
        var expires = '';    
        if (options.expires && (typeof options.expires == 'number' ||    
        options.expires.toUTCString)) {    
        var date;    
        if (typeof options.expires == 'number') {    
        date = new Date();    
        date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));    
        } else {    
        date = options.expires;    
        }    
        expires = '; expires=' + date.toUTCString();    
        }    
        var path = options.path ? '; path=' + (options.path) : '';    
        var domain = options.domain ? '; domain=' + (options.domain) : '';    
        var secure = options.secure ? '; secure' : '';    
        document.cookie = [name, '=', encodeURIComponent(value), expires, path,    
       domain,    
        secure].join('');    
        } else {    
        var cookieValue = null;    
        if (document.cookie && document.cookie != '') {    
        var cookies = document.cookie.split(';');    
        for (var i = 0; i < cookies.length; i++) {    
        var cookie = jQuery.trim(cookies[i]);    
        if (cookie.substring(0, name.length + 1) == (name + '=')) {    
        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));    
        break;    
        }    
        }    
        }    
        return cookieValue;    
        }    
        };


    Создаём в папке php папку evstream, в ней создаём 2 файла: base.php, index.php
    Своего рода базой является base.php, в нём пишем:
    Code
    <?    
        /*    
        //Автор: faforty    
        Файл: base.php    
        Назначение: исполняет роль базы оповещений    
        */   
        if (! defined ( 'FAFORTYDEV' )) {    
        die ( "Hacking attempt!" );    
        }    
        $base_alert = array(    
        '1' => array(    
        'title' => 'ВКурсе. Первый журнал', //Название оповещения    
        'message' => 'Самая редкая кошка на планете: фото', //Сообщение    
        'photo' => 'http://cs6005.userapi.com/u76040944/d_f0af6997.jpg', //Url на фото    
        'group_id' => '1,3,4', //id групп через запятую, для которых выводить    
       оповещение, 0 - для всех групп    
        'user_id' => '0', //id пользователей для которых выводить сообщение, 0 -    
       для всех пользователей    
        'active' => '1' //1 - оповещание активно, 0 - неактивно    
        ),    
        '2' => array(    
        'title' => 'ВКурсе. Первый журнал',    
        'message' => 'Самая быстрая машина в мире: фото',    
        'photo' => 'http://cs6005.userapi.com/u76040944/d_f0af6997.jpg',    
        'group_id' => '0',    
        'user_id' => '0',    
        'active' => '1'   
        )    
        );   
       ?>


    В файле index.php:
    Code
    <?    
        //Автор: faforty    
        $___notjson = 1;    
           
        header('Content-Type: text/event-stream');    
        header('Cache-Control: no-cache');    
           
        @error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );    
        @ini_set ( 'display_errors', true );    
        @ini_set ( 'html_errors', false );    
        @ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );    
           
        define ( 'FAFORTYDEV', true );    
           
        $domen = "http://".$_SERVER['HTTP_HOST'];    
           
        require_once('./base.php');    
           
        function sendMsg($id, $msg) {    
        echo "id: $id" . PHP_EOL;    
        echo "data: $msg" . PHP_EOL;    
        echo PHP_EOL;    
        ob_flush();    
        flush();    
        }    
        $serverTime = time();    
           
        foreach($base_alert as $key => $massiv)    
        {    
        $group_id = $massiv['group_id'];    
        $user_id = $massiv['user_id'];    
        $my_user = ucoz_getinfo("SITEUSERID");    
        $v_arr = array('id' => $key, 'title' => $massiv['title'],'message' => $massiv   
       ['message'],'photo' => $massiv['photo']);    
        if($massiv['active']){    
        if($group_id==0 && $user_id==0){    
        $var_js[]= $v_arr;    
        }else{    
           
        $m_group = explode(',',$group_id);    
        $m_user = explode(',',$user_id);    
           
        foreach($m_group as $group){    
        foreach($m_user as $user){    
        $user_data = xmlrpc_decode(file_get_contents($domen."/api/index/8-".   
       $my_user), "utf8");    
        if(($user == 0 || $user == $user_data["USER_ID"]) && ($group == 0 ||    
       $group == $user_data["USER_GROUPID"])){    
        $var_js[]= $v_arr;    
        }    
        }    
        }    
        }    
           
        }    
        }    
           
        sendMsg($serverTime, 'alert: '. json_encode($var_js));    
        ?>  
    Показать выделенный код в новом окне  

       И на последок осталось добавить css. Создаём папку css и там ualert.css:   
    .uPM{    
        position:relative;z-index:9999    
        }    
        .uBox{    
        position:fixed;bottom:5px;right:5px;z-index:9999    
        }    
        .uBoxMesssge{    
        display:none;    
        padding: 5px;    
        margin-bottom: 10px;    
        width:300px;    
        background: url(http://usite.su/images/uContent-bg.png);    
        padding: 7px;    
        -webkit-border-radius: 5px;    
        -moz-border-radius: 5px;    
        border-radius: 5px;    
        -moz-box-shadow: 0px 2px 7px rgba(0, 0, 0, 0.70);    
        -webkit-box-shadow: 0px 2px 7px rgba(0, 0, 0, 0.70);    
        box-shadow: 0px 2px 7px rgba(0, 0, 0, 0.70);    
        }    
        .uBoxTitle b{    
        font: bold 11px Tahoma !important;    
        }    
           
        .uBoxMesssge *{    
        font: 11px Tahoma;    
        color:#fff;    
        text-shadow:0px 1px 0px rgba(0, 0, 0, 0.70);    
        }    
        .uBoxAva{    
        -webkit-border-radius: 3px;    
        -moz-border-radius: 3px;    
        border-radius: 3px;    
        width:50px;    
        }    
           
        .uBox_close{    
        background: #000;    
        -moz-border-radius: 3px;    
        -webkit-border-radius: 3px;    
        border-radius: 3px;    
        -moz-box-shadow: 0 0 2px #111;    
        -webkit-box-shadow: 0 0 2px #111;    
        box-shadow: 0 0 2px #111;    
        padding: 5px;    
        margin: 0 0 0 10px;    
        opacity: 0.6;    
        width: 7px;    
        float:right    
        }    
           
        .uBox_close_s{    
        display: block;    
        background: url("http://usite.su/images/notifier_close.gif") no-repeat scroll 0 0    
       transparent;    
        opacity: 0.6;    
        width: 7px;    
        height: 7px;    
        }    
        .uBox_close_s:hover{    
        opacity: 1.0;    
        }    
        .uBoxTheme{    
        padding-left:5px;    
        color:#bbb;    
        }    
        .uBoxMessaged{    
        padding-left:5px;    
        }    
        .uBoxMessaged a{    
        color:#fff;    
           
        }


    • Страница 1 из 1
    • 1
    Поиск: