[Модуль] ChatBox (app_chatbox)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: Альтернативный модуль лога сообщений Алисы

Сообщение nick7zmail »

m-malva писал(а):ну или ждите пока dym.php перепишут и выложат
Честно - даже не устанавливал этот модуль)) Выложил, как есть. По-ходу придется...может по-пути отрехтую еще че нить))
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: Альтернативный модуль лога сообщений Алисы

Сообщение nick7zmail »

Добавил файл dym.php в модуль...одного не понял...на кой там обращение к гугловскому движку, к гроулу и т.д...почему встроенный say(); не устраивал?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
m-malva
Сообщения: 291
Зарегистрирован: Чт фев 26, 2015 1:38 am
Откуда: Санкт-Петербург
Контактная информация:

Re: Альтернативный модуль лога сообщений Алисы

Сообщение m-malva »

nick7zmail писал(а):...одного не понял...на кой там обращение к гугловскому движку, к гроулу и т.д...почему встроенный say(); не устраивал?
на момент написания модуля именно так выглядела функция say
to nick7zmail
прочитайте самый первый пост в топике
"...Покопавшись в функции say() я заметил что в ней принудительно прописывается ID пользователя Алисы - именно поэтому все сообщения в логе отображаются от нее. Поскольку функцию менять нельзя, потому что все равно при обновлении системы изменения потеряются, я создал свою функцию saydym() которая в точности повторяет стандартную say(), но ID пользователя в ней можно задать какой угодно...."

saydim это копия функции say с добавленной возможностью выбора звукового файла и пользователя.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: Альтернативный модуль лога сообщений Алисы

Сообщение nick7zmail »

m-malva писал(а): прочитайте самый первый пост в топике
"...Покопавшись в функции say() я заметил что в ней принудительно прописывается ID пользователя Алисы - именно поэтому все сообщения в логе отображаются от нее. Поскольку функцию менять нельзя, потому что все равно при обновлении системы изменения потеряются, я создал свою функцию saydym() которая в точности повторяет стандартную say(), но ID пользователя в ней можно задать какой угодно...."

saydim это копия функции say с добавленной возможностью выбора звукового файла и пользователя.
Да, спасибо))) я уже вечером лежа и глядя в потолок понял это)) если юзать функцию say() команды повторно уйдут в лог, с дефалтным именем пользователя...
Буду переписывать функцию знач вечерком.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
bat86
Сообщения: 80
Зарегистрирован: Пн ноя 30, 2015 10:20 pm

Re: Альтернативный модуль лога сообщений Алисы

Сообщение bat86 »

У меня как-то так получилось
SPOILERSPOILER_SHOW

Код: Выделить всё

<?php
/**
* Title
*
* Description
*
* @access public
*/
 function saydym($ph, $level=0, $ding=1, $member_id=0) 
 {
        global $commandLine;
        global $voicemode;

if ($ding >= 5){$ding=1;};

DebMes('SAY FUNC: '.$ph);

        $rec = array();
        $rec['MESSAGE']   = $ph;
        $rec['ADDED']     = date('Y-m-d H:i:s');
        $rec['ROOM_ID']   = 0;
        $rec['MEMBER_ID'] = $member_id;
        $rec['SOURCE'] = $source;
  
        if ($level>0) $rec['IMPORTANCE']=$level;
        
        $rec['ID'] = SQLInsert('shouts', $rec);

        if (defined('SETTINGS_HOOK_BEFORE_SAY') && SETTINGS_HOOK_BEFORE_SAY!='') {
         eval(SETTINGS_HOOK_BEFORE_SAY);
        }
        if ($level >= (int)getGlobal('minMsgLevel'))
        { 

           if (!defined('SETTINGS_SPEAK_SIGNAL') || SETTINGS_SPEAK_SIGNAL=='1') {
              $passed=SQLSelectOne("SELECT (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(ADDED)) as PASSED FROM shouts WHERE ID!='".$rec['ID']."' ORDER BY ID DESC LIMIT 1");
              if ($passed['PASSED']>20) { // play intro-sound only if more than 30 seconds passed from the last one
                    if ($ding == 1){playSound('dingdong', 1, $level);}
                    if ($ding == 2){playSound('tone1', 1, $level);}
                    if ($ding == 3){playSound('tone2', 1, $level);}
                    if ($ding == 4){playSound('tone3', 1, $level);}
                }
           }
        }
       setGlobal('lastSayTime', time());
       setGlobal('lastSayMessage', $ph);
       processSubscriptions('SAY', array('level' => $level, 'message' => $ph, 'member_id' => $member_id, 'ignoreVoice'=>$ignoreVoice));

       if (!$noPatternMode)
       {
          include_once(DIR_MODULES . 'patterns/patterns.class.php');
          $pt = new patterns();
          $pt->checkAllPatterns($member_id);
       }

       if (defined('SETTINGS_HOOK_AFTER_SAY') && SETTINGS_HOOK_AFTER_SAY != '')
       {
            eval(SETTINGS_HOOK_AFTER_SAY);
       }

       $terminals=SQLSelect("SELECT NAME FROM terminals WHERE IS_ONLINE=1 AND MAJORDROID_API=1");
       $total=count($terminals);
       for($i=0;$i<$total;$i++) {
            sayTo($ph, $level, $terminals[$i]['NAME']);
       }
 }

?>
Последний раз редактировалось bat86 Пн ноя 14, 2016 3:04 pm, всего редактировалось 1 раз.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: Альтернативный модуль лога сообщений Алисы

Сообщение nick7zmail »

bat86 писал(а):У меня как-то так получилось
Хорошо. Если работает норм - залил обновление. Не проверял, честно)) Времени пока нет. В пятницу другим занят был.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
bat86
Сообщения: 80
Зарегистрирован: Пн ноя 30, 2015 10:20 pm

Re: Альтернативный модуль лога сообщений Алисы

Сообщение bat86 »

Тогда наверное стоит обновить и chat_search.inc.php
Сделал корректное отображение цветов у имён, так как отображался код цвета.

Хотелось бы как-то в админку добавить возможность смены цвета и аватара у Алисы, но пока нет времени разбираться что-там как
SPOILERSPOILER_SHOW

Код: Выделить всё

<?php
/*
* @version 0.3 (auto-set)
*/

  global $session;
  global $msg;
  global $getdata;
  global $clear;

//#######################################################################################################
  if ($this->action=='admin' && $clear) {
   SQLExec("DELETE FROM shouts");
   $this->redirect("?");
  }
//#######################################################################################################
  if (!$session->data['SITE_USERNAME']) {
   $out['NOT_LOGGED']=1;
  } else {
   $user=SQLSelectOne("SELECT * FROM users WHERE USERNAME='".DBSafe($session->data['SITE_USERNAME'])."'");
   $session->data['logged_user']=$user['ID'];
  }

//#######################################################################################################
  if ($this->action=='' && $session->data['logged_user'] && $msg!='') {
   $rec=array();
   $rec['MEMBER_ID']=$session->data['logged_user'];
   $rec['MESSAGE']=htmlspecialchars($msg);
   $rec['ADDED']=date('Y-m-d H:i:s');
   SQLInsert('shouts', $rec);

   include_once(DIR_MODULES.'patterns/patterns.class.php');
   $pt=new patterns();

   $res=$pt->checkAllPatterns($rec['MEMBER_ID']);
   if (!$res) {
    processCommand($msg);
   }
   $getdata=1;
  }
//#######################################################################################################

  if ($this->owner->name=='panel') {
   $out['CONTROLPANEL']=1;
  }
//  $qry="1";

  if ($this->action!='admin') {
   $limit="LIMIT 50";
  }

  global $limit;
  if ($limit) {
   $this->limit=$limit;
  }

  if ($this->limit) {
   $limit="LIMIT ".$this->limit;
  } else {
   $limit="LIMIT 50";
  }

  $limit=str_replace('LIMIT LIMIT', 'LIMIT', $limit);

  $out['LIMIT']=$this->limit;

//  $res=SQLSelect("SELECT shouts.*, DATE_FORMAT(shouts.ADDED, '%H:%i') as DAT, TO_DAYS(shouts.ADDED) as DT, users.NAME, users.HOST FROM shouts LEFT JOIN users ON shouts.MEMBER_ID=users.ID WHERE $qry ORDER BY shouts.ADDED DESC, ID DESC $limit");
  $res=SQLSelect("SELECT shouts.*, DATE_FORMAT(shouts.ADDED, '%H:%i') as DAT, TO_DAYS(shouts.ADDED) as DT, users.NAME, users.COLOR, users.AVATAR FROM shouts LEFT JOIN users ON shouts.MEMBER_ID=users.ID ORDER BY shouts.ADDED DESC, ID DESC $limit");

//  if ($_GET['reverse']) {
   $this->reverse=1;
//  }

  if (!$this->reverse) {
   $res=array_reverse($res);
  } else {
   $out['REVERSE']=1;
  }
//  $txtdata="<h4>".day2str(date('w')).date(' d ').mon2str(date('m')).date(' Y')." года</h4><p>";

  if ($this->mobile) {
   $out['MOBILE']=1;
  }


  if ($res[0]['ID']) {
   $old_dt=$res[0]['DT'];
   $total=count($res);
   for($i=0;$i<$total;$i++) {

    // some action for every record if required
    $tmp=explode(' ', $res[$i]['ADDED']);
    $res[$i]['ADDED']=fromDBDate($tmp[0])." ".$tmp[1];
    if ($res[$i]['DT']!=$old_dt) {
        $txtdata.="<h4>".day2str(date('w',strtotime($tmp[0]))).date(' d ',strtotime($tmp[0])).mon2str(date('m',strtotime($tmp[0]))).date(' Y',strtotime($tmp[0]))." года</h4>";
        $old_dt=$res[$i]['DT'];
    }
    if ($res[$i]['MEMBER_ID']==0) {
     $res[$i]['NAME']='Алиса';
     $res[$i]['AVATAR']='10_14045.png';
     $res[$i]['COLOR']='#00BCD4';
   $left_right="class=\"left clearfix\"";
   $img_left_right="<span class=\"chat-img pull-left\">";
   $time_block="<small class=\"pull-right text-muted\">";
   $nic_block="class=\"primary-font\"";  
    }else{
   $left_right="class=\"left clearfix\"";
   $img_left_right="<span class=\"chat-img pull-left\">";
   $time_block="<small class=\"pull-right text-muted\">";
   $nic_block="class=\"primary-font\"";
  }

  $txtdata.="
        <ul class=\"chat\">
          <li ".$left_right.">";
  if ($res[$i]['AVATAR']!=''){
      $txtdata.="".
          $img_left_right."
            <img src='/cms/avatars/".$res[$i]['AVATAR']."' class=\"img-circle\" width=\"40\" height=\"40\">
          </span>";
  }else{
      $txtdata.="".   
          $img_left_right."
            <img src='/img/icons/user.png' class=\"img-circle\" width=\"40\" height=\"40\">
          </span>";   
  }
  $txtdata.="
          <div class=\"chat-body clearfix\">
            <div class=\"header\">
              ".$time_block."
                <span class=\"glyphicon glyphicon-time\"></span> ".$res[$i]['DAT']."
              </small>";

  $txtdata.="        
              <strong style='color:".$res[$i]['COLOR'].";'".$nic_block."> ".$res[$i]['NAME']."
              </strong>
            </div>";              
  $txtdata.="     
            <h5>".$lr." ".nl2br($res[$i]['MESSAGE'])."
            </h5>
                    </div>
                    </li>
        </ul>";

   }

   $txtdata.='';
   $out['RESULT']=$res;
   $out['TXT_DATA']=$txtdata;

  } else {
   $txtdata.='No data';
  }
   $txtdata.='';
  $out['SERVER_NAME']=$_SERVER['SERVER_NAME'];

  if ($this->action=='' && $getdata!='') {
   header ("HTTP/1.0: 200 OK\n");
   header ('Content-Type: text/html; charset=utf-8');
   echo $txtdata;
   $session->save();
   exit;
  }

function mon2str($mon){
    switch ($mon){
  case 01: $m="января";break;
  case 02: $m="февраля";break;
  case 03: $m="марта";break;
  case 04: $m="апреля";break;
  case 05: $m="мая";break;
  case 06: $m="июня";break;
  case 07: $m="июля";break;
  case 08: $m="августа";break;
  case 09: $m="сентября";break;
  case 10: $m="октября";break;
  case 11: $m="ноября";break;
  case 12: $m="декабря";break;
    }
return $m;
}
function day2str($day){
    switch ($day){
  case 1: $m="Понедельник";break;
  case 2: $m="Вторник";break;
  case 3: $m="Среда";break;
  case 4: $m="Четверг";break;
  case 5: $m="Пятница";break;
  case 6: $m="Суббота";break;
  case 0: $m="Воскресенье";break;
    }
return $m;
}

?>
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: Альтернативный модуль лога сообщений Алисы

Сообщение nick7zmail »

bat86 писал(а): Хотелось бы как-то в админку добавить возможность смены цвета и аватара у Алисы, но пока нет времени разбираться что-там как
Залил обнову...как заказывали - настройка аватара и цвета))
screen.jpg
screen.jpg (17.02 КБ) 6792 просмотра
Кстати...кто знает как слова перенести можно? Все теги автопереноса пробовал - чет ноль реакции. Если у кого полусилось - отпишитесь как? А то если в боковое меню пихать - как-то так получается:
скринSPOILER_SHOW
scr2.jpg
scr2.jpg (31.68 КБ) 6765 просмотров
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
bat86
Сообщения: 80
Зарегистрирован: Пн ноя 30, 2015 10:20 pm

Re: Альтернативный модуль лога сообщений Алисы

Сообщение bat86 »

Это как раз легко)
В chat_search_site.html в css

Код: Выделить всё

.chat li .chat-body h5
{
   white-space: normal;
}
 
pdmitry2
Сообщения: 90
Зарегистрирован: Ср фев 06, 2013 1:12 pm
Откуда: Россия, Москва

Re: Альтернативный модуль лога сообщений Алисы

Сообщение pdmitry2 »

А как можно аватар, рядом с именем расположить, а то много места в боковом меню занимает? Да и имя системы хотелось бы, что бы была возможность менять.
Ответить