За последние 24 часа нас посетил 59171 программист и 1816 роботов. Сейчас ищут 967 программистов ...

Транслит, замена кириллицы на латынь

Тема в разделе "Прочие вопросы по PHP", создана пользователем Ramis, 4 авг 2015.

  1. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    Друзья, всем привет! Срочно нужна Ваша помощь!
    Краткая предыстория: делаю сайт, пользователи задают вопросы и внизу вопросов есть социальные кнопки (можно лайкать или поделиться). Так вот все очень даже хорошо, но есть проблема: счетчик Twitter не работает из-за того, что ссылка вопрос отображается в кириллице. На сайте стоит компонент easydiscuss в настройках нашел там можно изменить алиас, но это очень долго и нудно. Так вот я нашел php отвечающий полю алиаса, нужно только вставить код транслит и все, но я не знаю php. Вот кусок кода который нужно изменить:
    Код (PHP):
    1. <div class="si-form-row">
    2.                         <div class="span2">
    3.                             <label for="alias"><?php echo JText::_( 'COM_EASYDISCUSS_POST_ALIAS' );?></label>
    4.                         </div>
    5.                         <div class="span10">
    6.                             <input type="text" maxlength="255" size="100" id="alias" name="alias" class="input-xxlarge" value="<?php echo $this->escape( $this->post->alias );?>" />
    7.                         </div>
    8.                     </div>
    Нужно вставить транслит на вот эту часть:
    Код (PHP):
    1. <?php echo $this->escape( $this->post->alias );?>"
    Помогите ребята, пожалуйста!!! Добру добром отвечаю!

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
  3. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    Нет, к сожалению, не помогло :(
     
  4. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Наверное так правильнее:
    Код (PHP):
    1. <?php $joomla_twit_alias = $this->escape($this->post->alias );
    2. echo mb_convert_encoding($joomla_twit_alias, 'utf-8', mb_detect_encoding($joomla_twit_alias));?>
     
  5. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    :( Не получается. Может файл не тот, сейчас поищу. Потом напишу Вам.
     
  6. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    А Joomla сообщество что говорит? Наверное не только у Вас такая проблема.
     
  7. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    Точно этот файл PHP. У них не спрашивал, вот наткнулся и сразу к Вам. В интернете тоже нету ни слово об этом.
    А если вставить вот этот код:
    Код (PHP):
    1. <?php
    2.   // функция превода текста с кириллицы в траскрипт
    3.   function encodestring($st)
    4.   {
    5.     // Сначала заменяем "односимвольные" фонемы.
    6.     $st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
    7.     "abvgdeeziyklmnoprstufh'iei");
    8.     $st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
    9.     "ABVGDEEZIYKLMNOPRSTUFH'IEI");
    10.     // Затем - "многосимвольные".
    11.     $st=strtr($st, 
    12.                     array(
    13.                         "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", 
    14.                         "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
    15.                         "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", 
    16.                         "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
    17.                         "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
    18.                         )
    19.              );
    20.     // Возвращаем результат.
    21.     return $st;
    22.   }
    23. ?>
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  8. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Приведите пример ссылки - так будет понятнее. Откуда берется кириллица?
    В функции, что вы привели - русские буквы заменяются на созвучные английские. Может это то что Вам нужно.
     
  9. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    Может быть. На ссылку посмотрите и твитните.
    http://gguomble.com/guomble/куда-можно-устроиться-на-работу-без-стажа.html

    Добавлено спустя 5 минут 38 секунд:
    Сделал вот так, но все равно никакого движения, даже система не залипает
    Код (PHP):
    1. <?php echo (function encodestring($this->escape( $this->post->alias )) {
    2.     // Сначала заменяем "односимвольные" фонемы.
    3.     $st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
    4.     "abvgdeeziyklmnoprstufh'iei");
    5.     $st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
    6.     "ABVGDEEZIYKLMNOPRSTUFH'IEI");
    7.     // Затем - "многосимвольные".
    8.     $st=strtr($st, 
    9.                     array(
    10.                         "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", 
    11.                         "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
    12.                         "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", 
    13.                         "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
    14.                         "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
    15.                         )
    16.              );
    17.     // Возвращаем результат.
    18.     return $st;
    19.   }
    20. ?>);?>
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  10. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Вам можно попробовать так: http://htmlweb.ru/php/example/translit.php
    много ошибок.

    Код (PHP):
    1. <?php echo str2url($this->escape( $this->post->alias ));
    2. function rus2translit($string) {
    3.     $converter = array(
    4.         'а' => 'a',   'б' => 'b',   'в' => 'v',
    5.         'г' => 'g',   'д' => 'd',   'е' => 'e',
    6.         'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
    7.         'и' => 'i',   'й' => 'y',   'к' => 'k',
    8.         'л' => 'l',   'м' => 'm',   'н' => 'n',
    9.         'о' => 'o',   'п' => 'p',   'р' => 'r',
    10.         'с' => 's',   'т' => 't',   'у' => 'u',
    11.         'ф' => 'f',   'х' => 'h',   'ц' => 'c',
    12.         'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
    13.         'ь' => '\'',  'ы' => 'y',   'ъ' => '\'',
    14.         'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
    15.         
    16.         'А' => 'A',   'Б' => 'B',   'В' => 'V',
    17.         'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
    18.         'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
    19.         'И' => 'I',   'Й' => 'Y',   'К' => 'K',
    20.         'Л' => 'L',   'М' => 'M',   'Н' => 'N',
    21.         'О' => 'O',   'П' => 'P',   'Р' => 'R',
    22.         'С' => 'S',   'Т' => 'T',   'У' => 'U',
    23.         'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
    24.         'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
    25.         'Ь' => '\'',  'Ы' => 'Y',   'Ъ' => '\'',
    26.         'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
    27.     );
    28.     return strtr($string, $converter);
    29. }
    30.  
    31. function str2url($str) {
    32.     // переводим в транслит
    33.     $str = rus2translit($str);
    34.     // в нижний регистр
    35.     $str = strtolower($str);
    36.     // заменям все ненужное нам на "-"
    37.     $str = preg_replace('~[^-a-z0-9_\/\:]+~u', '-', $str);
    38.     // удаляем начальные и конечные '-'
    39.     $str = trim($str, "-");
    40.     return $str;
    41. }
    42. ?>
    Только меня смущает $this. Увидеть бы начало кода.

    Кое что поменял! 14:33
     
  11. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    Понял, сейчас попробую.
    Код (PHP):
    1. <?php
    2. /**
    3.  * @package        EasyDiscuss
    4.  * @copyright    Copyright (C) 2010 Stack Ideas Private Limited. All rights reserved.
    5.  * @license        GNU/GPL, see LICENSE.php
    6.  *
    7.  * EasyDiscuss is free software. This version may have been modified pursuant
    8.  * to the GNU General Public License, and as distributed it includes or
    9.  * is derivative of works licensed under the GNU General Public License or
    10.  * other free or open source software licenses.
    11.  * See COPYRIGHT.php for copyright notices and details.
    12.  */
    13. defined('_JEXEC') or die('Restricted access');
    14.  
    15. JHTML::_('behavior.modal' , 'a.modal' );
    16.  
    17. // Force isDiscussion = true
    18. $this->composer->setIsDiscussion(true);
    19. $editor = JFactory::getEditor();
    20. ?>
    21.  
    22. <?php if( $this->config->get( 'layout_editor' ) == 'bbcode' ) { ?>
    23. <script type="text/javascript">
    24. EasyDiscuss.require()
    25.     .library('markitup')
    26.     .done(function($){
    27.         $('.dc_reply_content').markItUp(
    28.             $.getEasyDiscussBBCodeSettings
    29.         );
    30.     });
    31. </script>
    32. <?php } ?>
    33.  
    34. <script type="text/javascript">
    35. EasyDiscuss.require()
    36. .script('composer', 'legacy')
    37. .done(function($){
    38.  
    39.     $.Joomla( 'submitbutton' , function( action ){
    40.  
    41.         if(action == 'cancel')
    42.         {
    43.             window.location.href     = 'index.php?option=com_easydiscuss&view=posts';
    44.         }
    45.         else if(action == 'submit')
    46.         {
    47.             if(admin.post.validate(false, 'newpost'))
    48.             {
    49.                 admin.post.submit();
    50.             }
    51.         }
    52.         else
    53.         {
    54.             $.Joomla( 'submitform' , [action] );
    55.         }
    56.     });
    57.  
    58.     discuss.composer.init("<?php echo $this->composer->classname; ?>");
    59.  
    60.     // User selection.
    61.     window.selectUser = function( id , name )
    62.     {
    63.         $( '#user_id' ).val( id );
    64.         $( '#user_name' ).val( name );
    65.  
    66.         // Close dialog
    67.         $.Joomla( 'squeezebox' ).close();
    68.     };
    69.  
    70.     // Initialize custom Tabs.
    71.     // Try to test if there is a 'default' class in all of the tabs
    72.     if( $( 'ul.formTabs' ).children().find( '.default' ).html() != null )
    73.     {
    74.         var id     = $( 'ul.formTabs' ).children().find( '.default' ).attr( 'id' );
    75.         var tab = id.substr( id.indexOf( '-' ) + 1 , id.length );
    76.  
    77.         $( 'ul.formTabs' ).children().find( '.default' ).parent().addClass( 'active' );
    78.  
    79.         $( 'div.formTabsContent' ).children().hide();
    80.         $( '.tab-' + tab ).show();
    81.     }
    82.     else
    83.     {
    84.         $( 'ul.formTabs a:first' ).tab( 'show' );
    85.     }
    86. });
    87. </script>
    88. <div class="discuss-form">
    89. <form id="adminForm" name="adminForm" action="index.php" method="post" enctype="multipart/form-data" class="adminform-body">
    90. <div class="discuss-form <?php echo $this->composer->id; ?>"
    91.      data-id="<?php echo $this->composer->id; ?>"
    92.      data-editor="<?php echo $this->config->get('layout_editor') ?>">
    93.  
    94. <div id="dc_post_notification"><div class="msg_in"></div></div>
    95.  
    96. <div class="row-fluid">
    97.     <div class="span8">
    98.         <div class="widget accordion-group">
    99.             <div class="whead accordion-heading">
    100.                 <a href="javascript:void(0);" data-foundry-toggle="collapse" data-target="#option01">
    101.                 <h6><?php echo JText::_( 'COM_EASYDISCUSS_POST_DETAILS' ); ?></h6>
    102.                 <i class="icon-chevron-down"></i>
    103.                 </a>
    104.             </div>
    105.  
    106.             <div id="option01" class="accordion-body collapse in">
    107.                 <div class="wbody">
    108.                     <div class="si-form-row">
    109.                         <div class="span2">
    110.                             <label for="title"><?php echo JText::_( 'COM_EASYDISCUSS_POST_TITLE' );?></label>
    111.                         </div>
    112.                         <div class="span10">
    113.                             <input type="text" maxlength="255" size="100" id="title" name="title" class="input-xxlarge" value="<?php echo $this->escape( $this->post->title );?>" />
    114.                         </div>
    115.                     </div>
    116.                     <div class="si-form-row">
    117.                         <div class="span2">
    118.                             <label for="alias"><?php echo JText::_( 'COM_EASYDISCUSS_POST_ALIAS' );?></label>
    119.                         </div>
    120.                         <div class="span10">
    121.                             <input type="text" maxlength="255" size="100" id="alias" name="alias" class="input-xxlarge" value="<?php echo $this->escape( $this->post->alias );?>" />
    122.                         </div>
    123.                     </div>
    124.  
    125.                     <?php if ($this->config->get('main_private_post', false)) { ?>
    126.                     <div class="si-form-row">
    127.                         <label class="checkbox" for="private">
    128.                             <input id="private" type="checkbox" name="private" value="1" <?php echo $this->post->private ? ' checked="checked"' : '';?>/> <?php echo JText::_('COM_EASYDISCUSS_MAKE_THIS_POST_PRIVATE');?>
    129.                         </label>
    130.                     </div>
    131.                     <?php } ?>
    132.  
    133.                     <div class="si-form-row">
    134. <!--                         <?php if( $this->config->get( 'layout_editor') == 'bbcode' ) { ?>
    135.                             <textarea class="dc_reply_content full-width" name="dc_reply_content" class="full-width"><?php echo $this->escape( $this->post->content ); ?></textarea>
    136.                         <?php } else { ?>
    137.                             <?php echo $editor->display( 'dc_reply_content', $this->escape( $this->post->content ), '100%', '350', '10', '10' , array( 'pagebreak' , 'readmore' ) ); ?>
    138.                         <?php } ?> -->
    139.                         <?php echo $this->composer->getEditor(); ?>
    140.                     </div>
    141.  
    142.                     <div class="control-group">
    143.                         <?php //echo $this->loadTemplate( 'form.location.php' ); ?>
    144.                     </div>
    145.  
    146.                     <?php echo $this->composer->getFields(); ?>
    147.  
    148.                 </div>
    149.             </div>
    150.         </div>
    151.     </div>
    152.  
    153.     <div class="span4">
    154.         <div class="widget accordion-group">
    155.             <div class="whead accordion-heading">
    156.                 <a href="javascript:void(0);" data-foundry-toggle="collapse" data-target="#publishoptions">
    157.                 <h6><?php echo JText::_( 'COM_EASYDISCUSS_PUBLISHING_OPTIONS' );?></h6>
    158.                 <i class="icon-chevron-down"></i>
    159.                 </a>
    160.             </div>
    161.  
    162.             <div id="publishoptions" class="accordion-body collapse in">
    163.                 <div class="wbody">
    164.                     <div class="si-form-row">
    165.                         <div class="span4">
    166.                             <label for="title"><?php echo JText::_( 'COM_EASYDISCUSS_CATEGORY' );?></label>
    167.                         </div>
    168.                         <div class="span8">
    169.                             <?php echo $this->nestedCategories; ?>
    170.                         </div>
    171.                     </div>
    172.  
    173.                     <div class="si-form-row">
    174.                         <div class="span4">
    175.                             <label><?php echo JText::_( 'COM_EASYDISCUSS_POST_AUTHOR' ); ?></label>
    176.                         </div>
    177.                         <div class="span8">
    178.                             <input type="text" disabled="disabled" id="user_name" value="<?php echo $this->creatorName;?>" class="input-xlarge" />
    179.                             <input type="hidden" name="user_id" id="user_id" value="<?php echo $this->post->user_id;?>" />
    180.                             [url="index.php?option=com_easydiscuss&view=users&tmpl=component&browse=1&browsefunction=selectUser"] <?php echo JText::_( 'COM_EASYDISCUSS_BROWSE_USERS' ); ?>[/url]
    181.                         </div>
    182.                     </div>
    183.                     <div class="si-form-row">
    184.                         <div class="span4">
    185.                             <label><?php echo JText::_( 'COM_EASYDISCUSS_PUBLISHED' ); ?></label>
    186.                         </div>
    187.                         <div class="span8">
    188.                             <?php echo $this->renderCheckbox( 'published' , $this->post->published ); ?>
    189.                         </div>
    190.                     </div>
    191.  
    192.                 </div>
    193.             </div>
    194.         </div>
    195.     </div>
    196.  
    197. </div>
    198.  
    199. <input type="hidden" name="id" id="id" value="<?php echo $this->post->id; ?>" />
    200. <input type="hidden" name="parent_id" id="parent_id" value="<?php echo $this->post->parent_id; ?>" />
    201. <input type="hidden" name="option" value="com_easydiscuss" />
    202. <input type="hidden" name="controller" value="posts" />
    203. <input type="hidden" id="task" name="task" value="submit" />
    204. <input type="hidden" name="source" value="<?php echo $this->source ;?>" />
    205. <?php echo JHTML::_( 'form.token' ); ?>
    206.  
    207. </div>
    208. </form>
    209. </div>
    Попробовал, тоже нет.

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  12. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Наверное не в этом месте ссылка образуется...
    Найдите файл, где встречается комбинация id="dc_share"
     
  13. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    Ладно, попробую, отпишусь. Спасибо Вам большое!
     
  14. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    Нашел файл где встречается id="dc_share" и сразу вспомнил, это место где отображаются социальные кнопки
    Код (Text):
    1. if( !empty($socialButtonsHere) )
    2.         {
    3.             $socialButtons  = '<div id="dc_share" '.$float.'>' . $digg . $linkedIn . $googlebuzz . $googleone . $googleShare . $twitterbutton . $facebookLikes . '</div>';
    4.         }
    5.         echo $socialButtons;
    Он только один в php, остальные css и less.
    Я думаю он никакого значения не имеет к представленной проблеме.
     
  15. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Именно он!
    Теперь надо найти файл где будет $twitterbutton =
     
  16. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    Maputo, но как так? Он же не отвечает за "общий" алиас или Вы решили изменить алиас только для твиттера?
    Там есть $twitterbutton = DiscussTwitter::getButtonHTML( $post, $position );
    Код (Text):
    1. public static function populateCategoryLinkage($childId)
    2.     {
    3.         $arr        = array();
    4.         $category   = DiscussHelper::getTable( 'Category' );
    5.         $category->load($childId);
    6.  
    7.         $obj        = new stdClass();
    8.         $obj->id    = $category->id;
    9.         $obj->title = $category->title;
    10.         $obj->alias = $category->alias;
    11.  
    12.         $arr[]  = $obj;
    13.  
    14.         if((!empty($category->parent_id)))
    15.         {
    16.             DiscussHelper::accessCategoryLinkage($category->parent_id, $arr);
    17.         }
    18.  
    19.         $arr    = array_reverse($arr);
    20.         return $arr;
    21.  
    22.     }
    23.  
    24.     public static function accessCategoryLinkage($childId, &$arr)
    25.     {
    26.         $category   = DiscussHelper::getTable( 'Category' );
    27.  
    28.         $category->load($childId);
    29.  
    30.         $obj        = new stdClass();
    31.         $obj->id    = $category->id;
    32.         $obj->title = $category->title;
    33.         $obj->alias = $category->alias;
    34.  
    35.         $arr[]  = $obj;
    36.  
    37.         if((!empty($category->parent_id)))
    38.         {
    39.             DiscussHelper::accessCategoryLinkage($category->parent_id, $arr);
    40.         }
    41.         else
    42.         {
    43.             return false;
    44.         }
    45.     }
    46.  
    47.     public static function showSocialButtons( $post, $position = 'vertical' )
    48.     {
    49.         require_once DISCUSS_CLASSES . '/google.php';
    50.         require_once DISCUSS_CLASSES . '/googleshare.php';
    51.         require_once DISCUSS_CLASSES . '/twitter.php';
    52.         require_once DISCUSS_CLASSES . '/facebook.php';
    53.         require_once DISCUSS_CLASSES . '/digg.php';
    54.         require_once DISCUSS_CLASSES . '/linkedin.php';
    55.  
    56.         $config     = DiscussHelper::getConfig();
    57.         $document   = JFactory::getDocument();
    58.  
    59.         $googlebuzz     = '';
    60.         $twitterbutton  = '';
    61.  
    62.  
    63.         $twitterbutton  = DiscussTwitter::getButtonHTML( $post, $position );
    64.         $googleone      = DiscussGoogleOne::getButtonHTML( $post, $position );
    65.         $googleShare    = DiscussGoogleShare::getButtonHTML( $post, $position );
    66.  
    67.         $facebookLikes  = DiscussFacebook::getLikeHTML( $post, $position );
    68.         $digg           = DiscussDigg::getButtonHTML( $post , $position );
    69.         $linkedIn       = DiscussLinkedIn::getButtonHTML( $post , $position );
    70.  
    71.         $float = ($position == 'vertical') ? 'class="discuss-post-share float-r"' : 'class="discuss-post-share"';
    72.  
    73.         $socialButtons = '';
    74.  
    75.         $socialButtonsHere = $digg . $linkedIn . $googlebuzz . $googleone . $googleShare . $twitterbutton . $facebookLikes;
    76.  
    77.         if( !empty($socialButtonsHere) )
    78.         {
    79.             $socialButtons  = '<div id="dc_share" '.$float.'>' . $digg . $linkedIn . $googlebuzz . $googleone . $googleShare . $twitterbutton . $facebookLikes . '</div>';
    80.         }
    81.         echo $socialButtons;
    82.     }
    Добавлено спустя 4 минуты 11 секунд:
    И пожалуйста ответьте, что означает :: между DiscussTwitter::getButtonHTML ?
     
  17. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    :: - это вместо ->. Используется для обращения к статическим методам и свойствам класса. -> - обращение к свойствам и методам экземпляра класса и т.п. Т.е. DiscussTwitter - это класс, а не объект.

    Во теперь меня интересует переменная $post. Где она формируется. Если ее транслитировать - наверняка это применится ко всем кнопкам.
     
  18. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    Их много, но ищу так $post = и нашел :
    $post = DiscussHelper::getTable('Post');
    $post = JTable::getInstance( 'Posts' , 'Discuss' );
    $post = JRequest::get( 'POST' );
    $post = new stdClass();
    $post = "Media multipart posting\n";
    $post = Auth_OpenID::params_from_string($str);

    больше всего встречается
    $post = DiscussHelper::getTable('Post');
     
  19. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Эта вроде больше похожа на правду:
    Посмотреть бы что вокруг нее... Можно ли там проинициализировать функцию стандартным путём?

    Эта!
    Это всё в одном файле?

    И есть ли там чтонибудь типа DiscussHelper::setTable
     
  20. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    Эту смотрите! Вот здесь $post = JRequest::get( 'POST' ); Скинул от того места где встретился до конца (просто ограничение 60000 символов)
    Код (Text):
    1.  
    2. //JRequest::checkToken('request') or jexit( 'Invalid Token' );
    3.         $config = DiscussHelper::getConfig();
    4.         $acl = DiscussHelper::getHelper( 'ACL' );
    5.         $my = JFactory::getUser();
    6.         $app = JFactory::getApplication();
    7.         $post = JRequest::get( 'POST' );
    8.  
    9.         $output = array();
    10.         $output['id'] = $post[ 'post_id' ];
    11.  
    12.         $postTable = DiscussHelper::getTable('Post');
    13.         $postTable->load($post['post_id']);
    14.  
    15.         $categoryTable = DiscussHelper::getTable('category');
    16.         $categoryTable->load($postTable->category_id);
    17.  
    18.         $postAccess = DiscussHelper::getPostAccess($postTable, $categoryTable);
    19.  
    20.         if(!$postAccess->canEdit())
    21.         {
    22.             DiscussHelper::setMessageQueue( JText::_('COM_EASYDISCUSS_SYSTEM_INSUFFICIENT_PERMISSIONS') , DISCUSS_QUEUE_ERROR );
    23.             $app->redirect( DiscussRouter::_('index.php?option=com_easydiscuss&view=ask&id='.$post['post_id'] , false ) );
    24.             return $app->close();
    25.         }
    26.  
    27.         // do checking here!
    28.         if( empty( $post[ 'dc_reply_content' ] ) )
    29.         {
    30.             DiscussHelper::setMessageQueue( JText::_('COM_EASYDISCUSS_ERROR_REPLY_EMPTY' ) , DISCUSS_QUEUE_ERROR );
    31.             $app->redirect( DiscussRouter::_('index.php?option=com_easydiscuss&view=ask&id='.$post['post_id'] , false ) );
    32.             return $app->close();
    33.         }
    34.  
    35.         // Rebind the post data
    36.         $post['dc_reply_content'] = JRequest::getVar( 'dc_reply_content', '', 'post', 'none' , JREQUEST_ALLOWRAW );
    37.         $post['content'] = $post['dc_reply_content'];
    38.         $data['content_type'] = DiscussHelper::getEditorType( 'reply' );
    39.  
    40.         $postTable->bind($post);
    41.  
    42.         $recaptcha = $config->get( 'antispam_recaptcha');
    43.         $public = $config->get( 'antispam_recaptcha_public');
    44.         $private = $config->get( 'antispam_recaptcha_private');
    45.  
    46.         if( !$config->get( 'antispam_recaptcha_registered_members') && $my->id > 0 )
    47.         {
    48.             $recaptcha  = false;
    49.         }
    50.  
    51.  
    52.         if( $recaptcha && $public && $private )
    53.         {
    54.             require_once DISCUSS_CLASSES . '/recaptcha.php';
    55.  
    56.             $obj = DiscussRecaptcha::recaptcha_check_answer( $private , $_SERVER['REMOTE_ADDR'] , $post['recaptcha_challenge_field'] , $post['recaptcha_response_field'] );
    57.  
    58.             if(!$obj->is_valid)
    59.             {
    60.                 $ajax->reloadCaptcha();
    61.                 $ajax->reject('error', JText::_('COM_EASYDISCUSS_POST_INVALID_RECAPTCHA_RESPONSE'));
    62.                 $ajax->send();
    63.             }
    64.         }
    65.         else if( $config->get( 'antispam_easydiscuss_captcha' ) )
    66.         {
    67.             $runCaptcha = DiscussHelper::getHelper( 'Captcha' )->showCaptcha();
    68.  
    69.             if( $runCaptcha )
    70.             {
    71.                 $response = JRequest::getVar( 'captcha-response' );
    72.                 $captchaId = JRequest::getInt( 'captcha-id' );
    73.  
    74.                 $discussCaptcha = new stdClass();
    75.                 $discussCaptcha->captchaResponse = $response;
    76.                 $discussCaptcha->captchaId = $captchaId;
    77.  
    78.                 $state = DiscussHelper::getHelper( 'Captcha' )->verify( $discussCaptcha );
    79.  
    80.                 if( !$state )
    81.                 {
    82.                     DiscussHelper::setMessageQueue( JText::_('COM_EASYDISCUSS_INVALID_CAPTCHA' ) , DISCUSS_QUEUE_ERROR );
    83.                     $app->redirect( DiscussRouter::_('index.php?option=com_easydiscuss&view=post&layout=edit&id=' . $postTable->id , false ) );
    84.                     return $app->close();
    85.                 }
    86.             }
    87.         }
    88.  
    89.  
    90.         // @rule: Bind parameters
    91.         if( $config->get( 'reply_field_references' ) )
    92.         {
    93.             $postTable->bindParams( $post );
    94.         }
    95.  
    96.         // Bind file attachments
    97.         if( $acl->allowed( 'add_attachment' , '0' ) )
    98.         {
    99.             $postTable->bindAttachments();
    100.         }
    101.  
    102.         $isNew  = false;
    103.  
    104.         // @trigger: onBeforeSave
    105.         DiscussEventsHelper::importPlugin( 'content' );
    106.         DiscussEventsHelper::onContentBeforeSave('post', $postTable, $isNew);
    107.  
    108.         if ( !$postTable->store() )
    109.         {
    110.             $ajax->reject('error', JText::_('COM_EASYDISCUSS_ERROR'));
    111.             $ajax->send();
    112.         }
    113.  
    114.         // Process poll items
    115.         $includePolls   = JRequest::getBool( 'pollitems' , false );
    116.  
    117.         // Process poll items here.
    118.         if( $includePolls && $config->get( 'main_polls') )
    119.         {
    120.             $pollItems      = JRequest::getVar( 'pollitems' );
    121.             $pollItemsOri   = JRequest::getVar( 'pollitemsOri' );
    122.  
    123.             // Delete polls if necessary since this post doesn't contain any polls.
    124.             //if( !$isNew && !$includePolls )
    125.             if( count( $pollItems ) == 1 && empty( $pollItems[0] ) && !$isNew )
    126.             {
    127.                 $postTable->removePoll();
    128.             }
    129.  
    130.             // Check if the multiple polls checkbox is it checked?
    131.             $multiplePolls  = JRequest::getVar( 'multiplePolls' , '0' );
    132.  
    133.             if( $pollItems )
    134.             {
    135.                 // As long as we need to create the poll answers, we need to create the main question.
    136.                 $pollTitle  = JRequest::getVar( 'poll_question' , '' );
    137.  
    138.                 // Since poll question are entirely optional.
    139.                 $pollQuestion   = DiscussHelper::getTable( 'PollQuestion' );
    140.                 $pollQuestion->loadByPost( $postTable->id );
    141.  
    142.                 $pollQuestion->post_id  = $postTable->id;
    143.                 $pollQuestion->title    = $pollTitle;
    144.                 $pollQuestion->multiple = $config->get( 'main_polls_multiple' ) ? $multiplePolls : false;
    145.                 $pollQuestion->store();
    146.  
    147.                 if( !$isNew )
    148.                 {
    149.                     // Try to detect which poll items needs to be removed.
    150.                     $remove = JRequest::getVar( 'pollsremove' );
    151.  
    152.                     if( !empty( $remove ) )
    153.                     {
    154.                         $remove = explode( ',' , $remove );
    155.  
    156.                         foreach( $remove as $id )
    157.                         {
    158.                             $id     = (int) $id;
    159.                             $poll   = DiscussHelper::getTable( 'Poll' );
    160.                             $poll->load( $id );
    161.                             $poll->delete();
    162.                         }
    163.                     }
    164.                 }
    165.  
    166.                 for( $i = 0; $i < count($pollItems); $i++ )
    167.                 {
    168.                     $item    = $pollItems[$i];
    169.                     $itemOri = isset( $pollItemsOri[$i] ) ? $pollItemsOri[$i] : '';
    170.  
    171.                     $value      = (string) $item;
    172.                     $valueOri   = (string) $itemOri;
    173.  
    174.                     if( trim( $value ) == '' )
    175.                         continue;
    176.  
    177.                     $poll   = DiscussHelper::getTable( 'Poll' );
    178.  
    179.                     if( empty( $valueOri ) && !empty( $value ) )
    180.                     {
    181.                         // this is a new item.
    182.                         $poll->set( 'value'         , $value );
    183.                         $poll->set( 'post_id'       , $postTable->get( 'id' )  );
    184.                         $poll->store();
    185.                     }
    186.                     else if( !empty( $valueOri ) && !empty( $value )  )
    187.                     {
    188.                         // update existing value.
    189.                         if( ! $poll->loadByValue( $valueOri , $postTable->get( 'id' ) ) )
    190.                         {
    191.                             $poll->set( 'value'         , $value );
    192.                             $poll->store();
    193.                         }
    194.  
    195.                     }
    196.  
    197.                 }
    198.             }
    199.         }
    200.  
    201.         if( !empty( $postTable->id ) )
    202.         {
    203.             //Clear off previous records before storing
    204.             $ruleModel = DiscussHelper::getModel( 'CustomFields' );
    205.             $ruleModel->deleteCustomFieldsValue( $postTable->id, 'update' );
    206.  
    207.             // Process custom fields.
    208.             $fieldIds = JRequest::getVar( 'customFields' );
    209.  
    210.             if( !empty($fieldIds) )
    211.             {
    212.                 foreach( $fieldIds as $fieldId )
    213.                 {
    214.                     $fields = JRequest::getVar( 'customFieldValue_'.$fieldId );
    215.  
    216.                     if( !empty($fields) )
    217.                     {
    218.                         // Cater for custom fields select list
    219.                         // To detect if there is no value selected for the select list custom fields
    220.                         if( in_array( 'defaultList', $fields ) )
    221.                         {
    222.                             $tempKey = array_search( 'defaultList', $fields );
    223.                             $fields[ $tempKey ] = '';
    224.                         }
    225.                     }
    226.  
    227.                     $postTable->bindCustomFields( $fields, $fieldId );
    228.                 }
    229.             }
    230.         }
    231.  
    232.         // @trigger: onAfterSave
    233.         DiscussEventsHelper::onContentAfterSave('post', $postTable, $isNew);
    234.  
    235.         //get parent post
    236.         $parentId           = $postTable->parent_id;
    237.         $parentTable        = DiscussHelper::getTable( 'Post' );
    238.         $parentTable->load($parentId);
    239.  
    240.         // filtering badwords
    241.         $postTable->title   = DiscussHelper::wordFilter( $postTable->title);
    242.         $postTable->content = DiscussHelper::wordFilter( $postTable->content);
    243.  
    244.         //all access control goes here.
    245.         $canDelete  = false;
    246.  
    247.         if( DiscussHelper::isSiteAdmin() || $acl->allowed('delete_reply', '0') || $postTable->user_id == $user->id )
    248.         {
    249.             $canDelete  = true;
    250.         }
    251.  
    252.         // @rule: URL References
    253.         $postTable->references  = $postTable->getReferences();
    254.  
    255.         // set for vote status
    256.         $voteModel              = DiscussHelper::getModel( 'Votes' );
    257.         $postTable->voted       = $voteModel->hasVoted( $postTable->id );
    258.  
    259.         // get total vote for this reply
    260.         $postTable->totalVote   = $postTable->sum_totalvote;
    261.  
    262.         //load porfile info and auto save into table if user is not already exist in discuss's user table.
    263.         $creator = DiscussHelper::getTable( 'Profile' );
    264.         $creator->load( $postTable->user_id );
    265.  
    266.         $postTable->user = $creator;
    267.  
    268.         //default value
    269.         $postTable->isVoted         = 0;
    270.         $postTable->total_vote_cnt  = 0;
    271.         $postTable->likesAuthor     = '';
    272.         $postTable->minimize        = 0;
    273.  
    274.         if( $config->get( 'main_content_trigger_replies' ) )
    275.         {
    276.             // process content plugins
    277.             DiscussEventsHelper::importPlugin( 'content' );
    278.             DiscussEventsHelper::onContentPrepare('reply', $postTable);
    279.  
    280.             $postTable->event = new stdClass();
    281.  
    282.             $results    = DiscussEventsHelper::onContentBeforeDisplay('reply', $postTable);
    283.             $postTable->event->beforeDisplayContent = trim(implode("\n", $results));
    284.  
    285.             $results    = DiscussEventsHelper::onContentAfterDisplay('reply', $postTable);
    286.             $postTable->event->afterDisplayContent  = trim(implode("\n", $results));
    287.         }
    288.  
    289.         $theme      = new DiscussThemes();
    290.         $question   = DiscussHelper::getTable( 'Post' );
    291.         $question->load( $postTable->parent_id );
    292.  
    293.         $recaptcha  = '';
    294.         $enableRecaptcha    = $config->get('antispam_recaptcha');
    295.         $publicKey          = $config->get('antispam_recaptcha_public');
    296.         $skipRecaptcha      = $config->get('antispam_skip_recaptcha');
    297.  
    298.         $model      = DiscussHelper::getModel( 'Posts' );
    299.         $postCount  = count( $model->getPostsBy( 'user' , $my->id ) );
    300.  
    301.         if( $enableRecaptcha && !empty( $publicKey ) && $postCount < $skipRecaptcha )
    302.         {
    303.             require_once DISCUSS_CLASSES . '/recaptcha.php';
    304.             $recaptcha  = getRecaptchaData( $publicKey , $config->get('antispam_recaptcha_theme') , $config->get('antispam_recaptcha_lang') , null, $config->get('antispam_recaptcha_ssl'), 'edit-reply-recaptcha' .  $postTable->id);
    305.         }
    306.  
    307.         // Get the post access object here.
    308.         $category           = DiscussHelper::getTable( 'Category' );
    309.         $category->load( $postTable->category_id );
    310.  
    311.         $access             = $postTable->getAccess( $category );
    312.         $postTable->access  = $access;
    313.  
    314.         // Get comments for the post
    315.         $commentLimit               = $config->get( 'main_comment_pagination' ) ? $config->get( 'main_comment_pagination_count' ) : null;
    316.         $comments                   = $postTable->getComments( $commentLimit );
    317.         $postTable->comments        = DiscussHelper::formatComments( $comments );
    318.  
    319.         $theme->set('question'  , $question);
    320.         $theme->set('post'      , $postTable);
    321.         $theme->set('category'  , $category);
    322.  
    323.         $html   = $theme->fetch( 'post.reply.item.php' );
    324.  
    325.         if( $recaptcha && $public && $private )
    326.         {
    327.             $output[ 'type' ]   = 'success.captcha';
    328.         }
    329.  
    330.         if(!$parentTable->islock)
    331.         {
    332.             $output[ 'type' ]   = 'locked';
    333.         }
    334.  
    335.         $message    = ( $isNew ) ? JText::_( 'COM_EASYDISCUSS_POST_STORED' ) : JText::_( 'COM_EASYDISCUSS_EDIT_SUCCESS' );
    336.         $state      = 'success';
    337.  
    338.         // Let's set our custom message here.
    339.         DiscussHelper::setMessageQueue( $message , $state );
    340.  
    341.         $redirect       = JRequest::getVar( 'redirect' , '' );
    342.  
    343.         if( !empty( $redirect ) )
    344.         {
    345.             $redirect   = base64_decode( $redirect );
    346.             return $this->setRedirect( $redirect );
    347.         }
    348.  
    349.         $this->setRedirect( DiscussRouter::getPostRoute( $post['parent_id'] , false ) );
    350.     }
    351.  
    352. }
    Все эти $post = не в одном файле.

    Добавлено спустя 3 минуты 12 секунд:
    Нету.
     
  21. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Вот строчка подходящая:
    Код (PHP):
    1. $post['content'] = $post['dc_reply_content']; 
    Сейчас напишу код...
     
  22. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    А не проще просто twitter.php изменить?

    Добавлено спустя 8 минут 22 секунды:
    Ну ладно попробуем.
     
  23. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Вобщем попробуйте так:
    Вместо $post['content'] = $post['dc_reply_content']; написать следующее:
    Код (PHP):
    1. $post['content'] = rus2translit($post['dc_reply_content']); 
    2. function rus2translit($string) {
    3.     $converter = array(
    4.         'а' => 'a',   'б' => 'b',   'в' => 'v',
    5.         'г' => 'g',   'д' => 'd',   'е' => 'e',
    6.         'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
    7.         'и' => 'i',   'й' => 'y',   'к' => 'k',
    8.         'л' => 'l',   'м' => 'm',   'н' => 'n',
    9.         'о' => 'o',   'п' => 'p',   'р' => 'r',
    10.         'с' => 's',   'т' => 't',   'у' => 'u',
    11.         'ф' => 'f',   'х' => 'h',   'ц' => 'c',
    12.         'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
    13.         'ь' => '\'',  'ы' => 'y',   'ъ' => '\'',
    14.         'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
    15.         
    16.         'А' => 'A',   'Б' => 'B',   'В' => 'V',
    17.         'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
    18.         'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
    19.         'И' => 'I',   'Й' => 'Y',   'К' => 'K',
    20.         'Л' => 'L',   'М' => 'M',   'Н' => 'N',
    21.         'О' => 'O',   'П' => 'P',   'Р' => 'R',
    22.         'С' => 'S',   'Т' => 'T',   'У' => 'U',
    23.         'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
    24.         'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
    25.         'Ь' => '\'',  'Ы' => 'Y',   'Ъ' => '\'',
    26.         'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
    27.     );
    28.     return trim(preg_replace('~\s+~u', '-', strtolower(strtr($string, $converter))), "-");
    29. } 
    Добавлено спустя 22 секунды:
    Наверняка
     
  24. Ramis

    Ramis Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    22
    Симпатии:
    0
    Maputo, должен Вас разочаровать, не работает :(

    Добавлено спустя 3 минуты 47 секунд:
    Вот twitter.php :
    Код (Text):
    1.  
    2. <?php
    3. /**
    4. * @package      EasyDiscuss
    5. * @copyright    Copyright (C) 2010 Stack Ideas Private Limited. All rights reserved.
    6. * @license      GNU/GPL, see LICENSE.php
    7. * EasyDiscuss is free software. This version may have been modified pursuant
    8. * to the GNU General Public License, and as distributed it includes or
    9. * is derivative of works licensed under the GNU General Public License or
    10. * other free or open source software licenses.
    11. * See COPYRIGHT.php for copyright notices and details.
    12. */
    13. defined('_JEXEC') or die('Restricted access');
    14.  
    15. require_once DISCUSS_HELPERS . '/helper.php';
    16.  
    17. class DiscussTwitter
    18. {
    19.     public static function getButtonHTML( $row, $position = 'vertical' )
    20.     {
    21.         $config = DiscussHelper::getConfig();
    22.  
    23.         if( !$config->get('integration_twitter_button') )
    24.         {
    25.             return '';
    26.         }
    27.  
    28.         $html       = '';
    29.         $style      = $config->get( 'integration_twitter_button_style' );
    30.         $dataURL    = DiscussRouter::getRoutedURL('index.php?option=com_easydiscuss&view=post&id=' . $row->id, false, true);
    31.  
    32.  
    33.         $width  = '80px';
    34.  
    35.         if( $position == 'horizontal' )
    36.         {
    37.             $style  = 'horizontal';
    38.             $width  = '80px';
    39.         }
    40.         else
    41.         {
    42.             $width  = '55px';
    43.             $style  = 'vertical';
    44.         }
    45.  
    46.         $html   = '<div class="social-button retweet" style="width: ' . $width . '"><a href="http://twitter.com/share" class="twitter-share-button" data-url="' . $dataURL . '" data-counturl="'.$dataURL.'" data-count="' . $style .'">Tweet</a><script type="text/javascript" src="https://platform.twitter.com/widgets.js"></script></div>';
    47.  
    48.  
    49.         return $html;
    50.     }
    51. }
    Добавлено спустя 1 минуту 19 секунд:
    Но я что то не уверен, что отсюда можно изменить
     
  25. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Остался ещё один вариант:
    Вместо всё той же строчки:
    Код (PHP):
    1. $post['dc_reply_content'] = rus2translit($post['dc_reply_content']); 
    2. function rus2translit($string) {
    3.     $converter = array(
    4.         'а' => 'a',   'б' => 'b',   'в' => 'v',
    5.         'г' => 'g',   'д' => 'd',   'е' => 'e',
    6.         'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
    7.         'и' => 'i',   'й' => 'y',   'к' => 'k',
    8.         'л' => 'l',   'м' => 'm',   'н' => 'n',
    9.         'о' => 'o',   'п' => 'p',   'р' => 'r',
    10.         'с' => 's',   'т' => 't',   'у' => 'u',
    11.         'ф' => 'f',   'х' => 'h',   'ц' => 'c',
    12.         'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
    13.         'ь' => '\'',  'ы' => 'y',   'ъ' => '\'',
    14.         'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
    15.         
    16.         'А' => 'A',   'Б' => 'B',   'В' => 'V',
    17.         'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
    18.         'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
    19.         'И' => 'I',   'Й' => 'Y',   'К' => 'K',
    20.         'Л' => 'L',   'М' => 'M',   'Н' => 'N',
    21.         'О' => 'O',   'П' => 'P',   'Р' => 'R',
    22.         'С' => 'S',   'Т' => 'T',   'У' => 'U',
    23.         'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
    24.         'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
    25.         'Ь' => '\'',  'Ы' => 'Y',   'Ъ' => '\'',
    26.         'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
    27.     );
    28.     return trim(preg_replace('~\s+~u', '-', strtolower(strtr($string, $converter))), "-");
    29. } 
    30. $post['content'] = $post['dc_reply_content']; 
    А по хорошему глянуть бы файл с описанием класса DiscussTwitter
    Или