• 156 Change Post Time - изменение времени сообщений • 
Полезен при наведении порядка в темах
При создании темы о модах для двигателя форумов phpBB ветки 3.0.Х название темы должно начинаться с названия мода на английском, без указания версии, затем тире, затем короткое название мода на русском с маленькой буквы. Создание тем не о модах в данном подфоруме запрещено. Посторонние темы о двиге и посторонних проблемах для ветки 3.0.Х в соседнем подфоруме. И помните - Вам тут никто ничего не должен. При малейшем "приказном" тоне в сообщениях - бан на вечно.

    156 Change Post Time - изменение времени сообщений

Сообщение Разместил Pthelovod 21 авг 2016, 15:24

Мод ИЗМЕНЕНИЕ ВРЕМЕНИ СООБЩЕНИЙ - Change Post Time
Мод позволяет изменять время создания сообщений.
Полезен при наведении порядка в темах

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  156 Change Post Time - изменение времени сообщений

Сообщение Разместил Pthelovod 21 авг 2016, 15:25

Вот так видится опция при модерации в модераторке.-

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  156 Change Post Time - изменение времени сообщений

Сообщение Разместил Pthelovod 21 авг 2016, 15:35

Первый вариант -
#----[ OPEN ]---------------------
includes/mcp/mcp_post.php
#----[ FIND ]---------------------
Код: выделить все
      case 'chgposter':

#----[ BEFORE, ADD ]----------
Код: выделить все
      // MOD: change post time
      case 'chgposttime':

         if (!$auth->acl_get('m_chgposter', $post_info['forum_id']))
         {
            trigger_error('NOT_AUTHORISED');
         }
         $match = array();
         $newtime = request_var('new_time', '');

         preg_match('/\b([0-9]{2})-([0-9]{2})-([0-9]{4}) ([0-9]{2}):([0-9]{2}):([0-9]{2})\b/', $newtime, $match);
         array_shift($match); // we don't want $match[0], so lop it off, and don't complain about undefined $match[0]

         list($month, $day, $year, $hour, $minute, $second) = $match;
         // Time is given in moderator's local time.  We must have GMT.
         // we *subtract* the timezone offsets given by the $user object
         $hour = $hour - ($user->timezone + $user->dst);

         $update_time = mktime($hour, $minute, $second, $month, $day, $year);

         // this could be a complicated dance.  Yay for the sync function !
         $sql = 'UPDATE ' . POSTS_TABLE . ' SET post_time = ' . (int) $update_time .
            ' WHERE post_id = ' . (int) $post_id;
         $db->sql_query($sql);

         sync('topic', 'topic_id', $post_info['topic_id'], true);
         sync('forum', 'forum_id', $post_info['forum_id'], true);
      break;
      // END MOD

#----[ OPEN ]---------------------
language/en/mcp.php
#----[ FIND ]---------------------
Код: выделить все
));

?>

#----[ BEFORE, ADD ]--------------
Код: выделить все
   'CHANGE_POST_TIME'         => 'Change Post Time',
   'CHANGE_POST_TIME_FORMAT'   => 'Use this format for dates: MM-DD-YYYY HH:MM:SS',

#----[ OPEN ]---------------------
styles/subsilver2/template/mcp_post.html
#----[ FIND ]---------------------
Код: выделить все
      <!-- IF S_CAN_CHGPOSTER -->

#----[ AFTER, ADD ]---------------
Код: выделить все
         <tr>
            <form method="post" name="mcp_chgposttime" action="{U_POST_ACTION}">
               <td class="row1" valign="top"><b class="gen">{L_CHANGE_POST_TIME}</b><br /><span class="gensmall">{L_CHANGE_POST_TIME_FORMAT}</span></td>
               <td class="row2"><input class="post" type="text" name="new_time" value="" /> <input class="btnmain" type="submit" value="{L_SUBMIT}" name="action[chgposttime]" /></td>
            </form>
         </tr>

#----[ OPEN ]---------------------
styles/prosilver/template/mcp_post.html
#----[ FIND ]---------------------
Код: выделить все
         <form method="post" id="mcp_chgposter" action="{U_POST_ACTION}">

#----[ AFTER, ADD ]---------------
Код: выделить все
         <fieldset>
         <dl>
            <dt><label>{L_CHANGE_POST_TIME}:</label></dt>
            <dd style="margin-top:3px;">
               <input class="inputbox autowidth" type="text" name="new_time" value="" />
               <input type="submit" class="button2" name="action[chgposttime]" value="{L_SUBMIT}" />
               <br />
               <span>{L_CHANGE_POST_TIME_FORMAT}</span>
            </dd>
         </dl>
         </fieldset>

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  156 Change Post Time - изменение времени сообщений

Сообщение Разместил Pthelovod 21 авг 2016, 15:38

Второй вариант -
Можно проще -
Код: выделить все
      preg_match('/b([0-9]{2})-([0-9]{2})-([0-9]{4}) ([0-9]{2}):([0-9]{2}):([0-9]{2})b/', $newtime, $match);   
         array_shift($match); // we don't want $match[0], so lop it off, and don't complain about undefined $match[0]
         list($month, $day, $year, $hour, $minute, $second) = $match;
         // Time is given in moderator's local time.  We must have GMT.
         // we *subtract* the timezone offsets given by the $user object
         $hour = $hour - ($user->timezone + $user->dst);
         $update_time = mktime(...)

заменить на
Код: выделить все
         if(preg_match('/b([0-9]{2})-([0-9]{2})-([0-9]{4}) ([0-9]{2}):([0-9]{2}):([0-9]{2})b/', $newtime, $match)){
            $update_time = strtotime($newtime);
         }else{
            break;
         }

при этом дата будет в формате DD-MM-YYYY HH:MM:SS

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  156 Change Post Time - изменение времени сообщений

Сообщение Разместил Pthelovod 21 авг 2016, 15:40

Третий вариант -
Открыть:
includes/mcp/mcp_post.php
Найти:
Код: выделить все
case 'chgposter':

Добавить до:
Код: выделить все
      // MOD: change post time
      case 'chgposttime':

         if (!$auth->acl_get('m_chgposter', $post_info['forum_id']))
         {
            trigger_error('NOT_AUTHORISED');
         }
         $match = array();
         
         $newtime = request_var('new_post_time', '');

         $dt_elements = explode(' ',$newtime);
         $date_elements = explode('.',$dt_elements[0]);
         $time_elements =  explode(':',$dt_elements[1]);

         $update_time = mktime($time_elements[0], $time_elements[1],$time_elements[2], $date_elements[1],$date_elements[0], $date_elements[2]);               
         
         $sql = 'UPDATE ' . POSTS_TABLE . ' SET post_time = ' . (int) $update_time .
            ' WHERE post_id = ' . (int) $post_id;
         $db->sql_query($sql);

         sync('topic', 'topic_id', $post_info['topic_id'], true);
         sync('forum', 'forum_id', $post_info['forum_id'], true);
      break;
      // END MOD

Найти:
Код: выделить все
'U_WHOIS'            => ($auth->acl_get('m_info', $post_info['forum_id'])) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&amp;mode=$mode&amp;action=whois&amp;p=$post_id&amp;ip={$post_info['poster_ip']}") : '',

Добавить после:
Код: выделить все
      'NEW_POST_TIME'         => date ('d.m.Y H:i:s'),

Открыть:
language/ru/mcp.php
Найти:
Код: выделить все
));
?>

Добавить до:
Код: выделить все
   'CHANGE_POST_TIME'         => 'Изменить время сообщения',

Открыть:
styles/prosilver/template/mcp_post.html
Найти:
Код: выделить все
<form method="post" id="mcp_chgposter" action="{U_POST_ACTION}">

Добавить после:
Код: выделить все
         <fieldset>
         <dl>
            <dt><label>{L_CHANGE_POST_TIME}:</label></dt>
            <dd style="margin-top:3px;">
               <input class="inputbox autowidth" type="text" name="new_post_time" value="{NEW_POST_TIME}" />
               <input type="submit" class="button2" name="action[chgposttime]" value="{L_SUBMIT}" />
            </dd>
         </dl>
         </fieldset>

Примечание: в текстовое поле автоматически вставляется текущая дата и время, оно же и является шаблоном для смены даты.

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  156 Change Post Time - изменение времени сообщений

Сообщение Разместил Pthelovod 21 авг 2016, 15:41

Сборка всех трех вариантов -

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

Вернуться в Коды и модификации для движка phpBB версий до 3.0.Х