Мод Спасибо под FB 2.0

Тема в разделе "Fireboard", создана пользователем backdoor, 29.05.2009.

  1. backdoor
    Offline

    backdoor Недавно здесь

    Регистрация:
    07.10.2008
    Сообщения:
    9
    Симпатии:
    0
    Пол:
    Мужской
    1 этап создаем таблицу в бд
    Код (CODE):
    1. CREATE TABLE IF NOT EXISTS `jos_spasibo` (
    2. `id` int(10) NOT NULL auto_increment,
    3. `userid` int(10) NOT NULL default '0',
    4. `myid` varchar(50) NOT NULL,
    5. `postid` int(10) NOT NULL default '0',
    6. PRIMARY KEY (`id`)
    7. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=656 ;

    2 открываем файл components/com_fireboard/sources/fb_statsbar.php
    в конец файла добавляем
    Код (CODE):
    1. function connect()
    2. {
    3.  
    4. $link= mysql_connect('localhost','xxx','yyy');
    5.  
    6. mysql_query("SET NAMES cp1251",$link);
    7. if (!$link)
    8. {
    9. echo "Нельзя сконектится с базой данных";
    10. }
    11. else
    12. {
    13. mysql_select_db('bbb');
    14. }
    15. }
    16. connect();

    где xxx юзверь ммускула
    yyy-пароль
    bbb -имя бд где стоит джумла
    в папке components/com_fireboard/template/default/plugin
    создаем папку dspasibo
    и папку spasibo
    в папке dspasibo
    создаем файл dspasibo.php
    Код (CODE):
    1. <?
    2. function connect()
    3. {
    4.  
    5. $link= mysql_connect('localhost','xxx','yyy');
    6.  
    7. mysql_query("SET NAMES cp1251",$link);
    8. if (!$link)
    9. {
    10. echo "Нельзя сконектится с базой данных";
    11. }
    12. else
    13. {
    14. mysql_select_db('bbb');
    15. }
    16. }
    17. connect();
    18. mysql_error();
    19. $cat=$_POST['catid'];
    20. $msg=$_POST['msid'];
    21. $myid=$_POST['myid'];
    22. $mes_id=$_POST['mes_id'];
    23. $userid=$_POST['userid'];
    24. $id=$_POST['id'];
    25.  
    26.  
    27. $sql3x="DELETE FROM jos_spasibo
    28. WHERE id =".$id."";
    29.  
    30.  
    31. $rez3xx = mysql_query($sql3x);
    32. header("HTTP/1.1 301 Moved Permanently");
    33. header("Location: http://вашсайт/index.php?option=com_fireboard&Itemid=46&func=view&catid=$cat&id=$msg");
    34. exit();

    в папке spasibo
    создаем файл spasibo.php
    Код (CODE):
    1. <?
    2. function connect()
    3. {
    4.  
    5. $link= mysql_connect('localhost','xxx','yyy');
    6.  
    7. mysql_query("SET NAMES cp1251",$link);
    8. if (!$link)
    9. {
    10. echo "Нельзя сконектится с базой данных";
    11. }
    12. else
    13. {
    14. mysql_select_db('bbb');
    15. }
    16. }
    17. connect();
    18. mysql_error();
    19. $cat=$_POST['catid'];
    20. $msg=$_POST['msid'];
    21. $myid=$_POST['myid'];
    22. $mes_id=$_POST['mes_id'];
    23. $userid=$_POST['userid'];
    24.  
    25. $sql3x="INSERT INTO jos_spasibo ( myid, userid,postid )
    26. VALUES ($myid, $userid,$mes_id)";
    27.  
    28.  
    29. $rez3xx = mysql_query($sql3x);
    30. header("HTTP/1.1 301 Moved Permanently");
    31. header("Location: http://вашсайтру/index.php?option=com_fireboard&Itemid=46&func=view&catid=$cat&id=$msg");
    32. exit();

    далеее открываем файл components/com_fireboard/template/default/message.php
    находим строчку
    Код (CODE):
    1. <td class = "fb-msgview-right-b" align = "right">

    ниже вставляем
    Код (CODE):
    1. <?
    2.  
    3.  
    4.  
    5.  
    6. $idpost = $fmessage->id;
    7. $result = mysql_query ("
    8. SELECT
    9. a.id ,
    10. us.username
    11.  
    12. FROM jos_spasibo as a
    13. inner join jos_users as us
    14. on a.myid = us.id
    15.  
    16. WHERE a.postid=$idpost");
    17.  
    18. $sql3a = "SELECT myid,id FROM jos_spasibo WHERE postid=".$msg_id;
    19. $rez3aa = mysql_query($sql3a);
    20. $rez4a= mysql_fetch_row($rez3aa);
    21.  
    22.  
    23. if(($my->id!=$fmessage->userid) and ($my->id > 0) )
    24.  
    25. {
    26. if($rez4a[0]!=$my->id)
    27. {
    28. ?> <form method="post" action="http://вашсайтру/index.php?option=com_fireboard&func=spasibo">
    29.  
    30. <input type="hidden" name="catid" value="<?php echo $catid;?>">
    31. <input type="hidden" name="myid" value="<?php echo $my->id;?>">
    32. <input type="hidden" name="msid" value="<?php echo $msg_id;?>">
    33. <input type="hidden" name="mes_id" value="<?php echo $fmessage->id;?>">
    34. <input type="hidden" name="userid" value="<?php echo $fmessage->userid;?>">
    35. <input type="submit" name="Submit" value="" style="background-image: url('/images/pict/spasibo.png'); width:70px; height: 22px; border: 0px; background-color: white; cursor: pointer" />
    36. </form>
    37. <? }
    38.  
    39. else
    40. {
    41. ?>
    42. <form method="post" action="http://вашсайтру/index.php?option=com_fireboard&func=dspasibo">
    43. <input type="hidden" name="id" value="<?php echo $rez4a[1];?>">
    44. <input type="hidden" name="catid" value="<?php echo $catid;?>">
    45. <input type="hidden" name="myid" value="<?php echo $my->id;?>">
    46. <input type="hidden" name="msid" value="<?php echo $msg_id;?>">
    47. <input type="hidden" name="mes_id" value="<?php echo $fmessage->id;?>">
    48. <input type="hidden" name="userid" value="<?php echo $fmessage->userid;?>">
    49. <input type="submit" value="Удалить спасибку" class=button>
    50. </form>
    51. <?
    52.  
    53.  
    54. } }
    55.  
    56. ?>

    ниже находим код
    Код (CODE):
    1. <?php
    2. echo $msg_quote;
    3. if ($msg_delete) {
    4. echo " | " . $msg_delete;
    5. }
    6. if ($msg_move) {
    7. echo " | " . $msg_move;
    8. }
    9. if ($msg_edit) {
    10. echo " | " . $msg_edit;
    11. }
    12. if ($msg_sticky) {
    13. echo " | " . $msg_sticky;
    14. }
    15.  
    16. if ($msg_lock) {
    17. echo "| " . $msg_lock;
    18. }
    19. }
    20. else {
    21. echo $msg_closed;
    22. }
    23. }
    24. ?>

    ниже вставляем
    Код (CODE):
    1. <?
    2.  
    3.  
    4.  
    5. if ($result)
    6. if (!(mysql_num_rows($result) == 0))
    7. {
    8. echo "</br>";
    9. //echo "<img src='http://mir-saratov.ru/spasibo.png' >";
    10. echo "<font color=green>Сказали спасибо:</font>";
    11. echo "</br>";
    12. while (list ($id, $name) = mysql_fetch_row($result))
    13. {
    14.  
    15.  
    16.  
    17. //echo 'ид юзера '.$id;
    18. echo $name.', ';
    19.  
    20. }
    21. }
    22. ?>

    открываем файл components/com_fireboard/fireboard.php
    находим код
    Код (CODE):
    1. case 'who':
    2. if (file_exists(JB_ABSTMPLTPATH . '/plugin/who/who.php')) {
    3. include (JB_ABSTMPLTPATH . '/plugin/who/who.php');
    4. }
    5. else {
    6. include (JB_ABSPATH . '/template/default/plugin/who/who.php');
    7. }
    8. break;

    ниже вставляем
    Код (CODE):
    1. case 'dspasibo':
    2. if (file_exists(JB_ABSTMPLTPATH . '/plugin/dspasibo/dspasibo.php')) {
    3. include (JB_ABSTMPLTPATH . '/plugin/dspasibo/dspasibo.php');
    4. }
    5. else {
    6. include (JB_ABSPATH . '/template/default/plugin/dspasibo/dspasibo.php');
    7. }
    8. break;
    9. case 'spasibo':
    10. if (file_exists(JB_ABSTMPLTPATH . '/plugin/spasibo/spasibo.php')) {
    11. include (JB_ABSTMPLTPATH . '/plugin/spasibo/spasibo.php');
    12. }
    13. else {
    14. include (JB_ABSPATH . '/template/default/plugin/spasibo/spasibo.php');
    15. }
    16. break;

    вообщем в файл message.php
    если хотите сделать вывод количество спасибок у юзверя
    вставляйте этот код
    Код (CODE):
    1. $sql3x = "select count(id) from jos_spasibo where userid=".$fmessage->userid;
    2. $rez3xx = mysql_query($sql3x);
    3. $rez4x = mysql_fetch_row($rez3xx);
    4. $sql3y = "select count(id) from jos_spasibo where myid=".$fmessage->userid;
    5. $rez3yy = mysql_query($sql3y);
    6. $rez4y = mysql_fetch_row($rez3yy);
    7. echo "</br>";
    8. echo "Спасибок:".$rez4x[0]."&nbsp;раз</br>";
    9. echo "Сказал спасибо:</br>";
    10. echo $rez4y[0]."&nbsp;раз";

    вот вроде и все
    также необходимо залить в папку
    /images/pict/
    рисунок кнопки спасибо
    spasibo.png
    вообщем юзайте FB
    вы об этом не пожалете=))
     
  2.  
  3. backdoor
    Offline

    backdoor Недавно здесь

    Регистрация:
    07.10.2008
    Сообщения:
    9
    Симпатии:
    0
    Пол:
    Мужской
    ну что кто нибудь ставил?
    или вам всем в лом отписаться?
     
  4. Offline

    ptipti Недавно здесь

    Регистрация:
    15.07.2009
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    Да ну не совсем, просто не сочтите за оскорбление, сильно криво написано. Можно проще гараздо это реализовать.

    Открываем файл \administrator\components\com_fireboard\language\russian.php
    Добавляем:
    Код (CODE):
    1. define('_FB_THANKS', 'Сказали Спасибо:');
    2. define('_FB_SAY_THANK', 'Сказать Спасибо');
    3. define('_FB_ALREADY_THANK', 'Вы уже выражали свою благодарность!');



    Открываем папку components\com_fireboard\template\default
    Файл post.php
    Ищем:
    Код (CODE):
    1. else if ($do == "delete")
    ПЕРЕД ЭТИМ вставляем
    Код (CODE):
    1. else if ($do == "thank") {
    2.             if ( $my_id != "" ) {
    3.                         $database->setQuery("SELECT userid FROM #__fb_messages WHERE id=$id");
    4.                         $fmessageuserid = $database->loadResult();
    5.                   if ( $fmessageuserid != $my_id ) {
    6.                     $allowthank = 1;
    7.                   }
    8.             }
    9.             if ( !$allowthank ) { die ("Hacking Attempt!"); }
    10.  
    11.                   $database->setQuery("SELECT thanks_id from #__fb_messages where id={$id}");
    12.                   $fb_thanks = $database->loadResult();
    13.  
    14.                 if ( !$fb_thanks ) {
    15.                     $fb_thanksdb = $user->username;
    16.                 } else {
    17.                     if ( substr_count ( $fb_thanks, $user->username ) ) {
    18.                         $error="alert('". _FB_ALREADY_THANK ."')";
    19.                     } else {
    20.                             $fb_thanksdb = $fb_thanks.', '.$user->username;
    21.                     }
    22.                 }
    23.                 if ( $error ) { ?>
    24.                      <script type="text/javascript"><?php echo $error;?></script> <?php
    25.                 } else {
    26.                   $database->setQuery("UPDATE #__fb_messages SET thanks_id='$fb_thanksdb' where id={$id}");
    27.                 $database->query();
    28.                 }
    29. ?>
    30.                                 <script language = "javascript">
    31.                                     document.location='<?php echo sefRelToAbs(JB_LIVEURLREL.'&func=view&catid='.$catid.'&id='.$id).'#'.$id;?>';
    32.                                     //setTimeout("location='<?php echo sefRelToAbs(JB_LIVEURLREL.'&func=view&catid='.$catid.'&id='.$id).'#'.$id;?>'", 3500);
    33.                                 </script>
    34. <?php
    35.  
    36.                }


    Далее открываем файл message.php и ищем
    Код (CODE):
    1. <span id = "fb_qr_sc__<?php echo $msg_id;?>


    Опять же НАД НИМ вставляем:
    Код (CODE):
    1. <?php
    2. if ( $my->id>0  &&  $my->id!=$fmessage->userid ) {  ?>
    3.  
    4. <a href="<?php echo sefRelToAbs(JB_LIVEURLREL."&amp;func=post&amp;do=thank&amp;id=$msg_id&amp;catid=$catid&amp;userid=$my->id");?>"><img src="<?php echo JB_URLICONSPATH.'plus.gif" border="0" alt="'. _FB_SAY_THANK.'" title="'._FB_SAY_THANK ?>"" /></a>
    5.  
    6. <?php } ?>


    Далее ищем
    Код (CODE):
    1. </tbody>
    и опять же НАД НИМ вставляем
    Код (CODE):
    1. <?php
    2.       $database->setQuery("SELECT thanks_id from #__fb_messages where id={$msg_id}");
    3.       $fb_thanks = $database->loadResult();
    4. if ($fb_thanks) { ?>
    5.  
    6.     <tr>
    7.       <td class = "fb-msgview-left-thanks">
    8.         <div class="fb-view-left-thanks"><?php echo _FB_THANKS; ?></div>
    9.       </td>
    10.       <td class = "fb-msgview-right-thanks">
    11.          <div class="fb-view-right-thanks"><?php echo $fb_thanks;?></div>
    12.       </td>
    13.     </tr>
    14. <?php } ?>


    теперь открываем файл forum.css и вписываем туда строки
    Код (CODE):
    1. td.fb-msgview-left-thanks{background:#7F9DB9;vertical-align: absmiddle;border-left:1px solid #D4C9AD;}
    2. div.fb-view-left-thanks  {font-weight: bold; margin-left:10px;color:#FFFFFF;}
    3. td.fb-msgview-right-thanks {background:#EFF0F4;vertical-align: absmiddle;}
    4. div.fb-view-right-thanks  {font-weight: bold; font-family: Arial; margin-left:10px;margin-right:10px;font-size:12px;color:#000;}


    Теперь База Данных. как вы поняли - придёться добавить лишнее поле в таблицу (которая существует). ПРЕДУПРЕЖДАЮ, что это рискованое занятие, особенно для новичков. (И не говорите потом что не предупреждал). Я Серьёзно. Ну так вот, зайти надо через phpMyAdmin и экспортировать таблицу префикс_fb_messages. Открываем экспорт и видим:

    Код (CODE):
    1. -- phpMyAdmin SQL Dump
    2. -- version 2.10.3
    3. -- http://www.phpmyadmin.net
    4. --
    5. -- Хост: localhost
    6. -- Время создания: Окт 10 2009 г., 03:18
    7. -- Версия сервера: 5.0.51
    8. -- Версия PHP: 5.2.6
    9.  
    10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    11.  
    12. --
    13. -- База данных: `jos`
    14. --
    15.  
    16. -- --------------------------------------------------------
    17.  
    18. --
    19. -- Структура таблицы `jos_fb_messages`
    20. --
    21.  
    22. CREATE TABLE `jos_fb_messages` (
    23.   `id` int(11) NOT NULL auto_increment,
    24.   `parent` int(11) default '0',
    25.   `thread` int(11) default '0',
    26.   `catid` int(11) NOT NULL default '0',
    27.   `name` tinytext,
    28.   `userid` int(11) NOT NULL default '0',
    29.   `email` tinytext,
    30.   `subject` tinytext,
    31.   `time` int(11) NOT NULL default '0',
    32.   `ip` varchar(15) default NULL,
    33.   `topic_emoticon` int(11) NOT NULL default '0',
    34.   `locked` tinyint(4) NOT NULL default '0',
    35.   `hold` tinyint(4) NOT NULL default '0',
    36.   `ordering` int(11) default '0',
    37.   `hits` int(11) default '0',
    38.   `moved` tinyint(4) default '0',
    39.   `modified_by` int(7) default NULL,
    40.   `modified_time` int(11) default NULL,
    41.   `modified_reason` tinytext,
    42.   PRIMARY KEY  (`id`),
    43.   KEY `thread` (`thread`),
    44.   KEY `parent` (`parent`),
    45.   KEY `catid` (`catid`),
    46.   KEY `ip` (`ip`),
    47.   KEY `userid` (`userid`),
    48.   KEY `time` (`time`),
    49.   KEY `locked` (`locked`),
    50.   KEY `hold_time` (`hold`,`time`)
    51. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;
    52.  
    53. --
    54. -- Дамп данных таблицы `jos_fb_messages`
    55. --
    56.  
    57. INSERT INTO `jos_fb_messages` VALUES (5, 0, 5, 10, 'ptipti', 63, 'user@mail.com', 'ZASdfasdfasdf', 1255061777, '127.0.0.1', 1, 0, 0, 0, 59, 0, NULL, NULL, NULL);
    58. INSERT INTO `jos_fb_messages` VALUES (11, 0, 11, 9, 'admin', 62, 'user2@mail.net', '123424312', 1255089568, '127.0.0.1', 1, 0, 0, 0, 20, 0, NULL, NULL, NULL);


    Что-то подобное. Ну так вот, после значения `modified_reason` tinytext, сс новой строки вставляем `thanks_id` text, (я долго думал, текст или тинитекст, остановился на текст - мало ли что в жизни бывает).
    Теперь ещё надо будет обработать все значения INSERT INTO, вот в конец после последнего NULL надо добавить ещё один , NULL. Сделать это легко автозаменой в том же блокноте.

    Теперь надо будет изображение plus.gif, его положить в папку components\com_fireboard\template\default\images\russian\icons.

    Скрин и картинка в приложениях.
     

    Вложения:

    • plus.gif
      plus.gif
      Размер файла:
      65 байт
      Просмотров:
      27
    • Untitled-22.jpg
      Untitled-22.jpg
      Размер файла:
      46.9 КБ
      Просмотров:
      15
    Последнее редактирование: 10.10.2009

Поделиться этой страницей

Загрузка...