Advanced search  

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Pages: [1]   Go Down

Author Topic: "Последние комментарии" без дублировани&#  (Read 4839 times)

0 Members and 1 Guest are viewing this topic.

gfxyer

  • Coppermine newbie
  • Offline Offline
  • Posts: 12

Можно ли устранить дублирования превьюшек с комментариями одного файла и выводить только превью с информацией о последнем комментарии? Т.е. у файла есть несколько комментариев написаных подряд. Можно ли в "Последних комментариях" оставить только  одну превьюшку с последним комментарием, а не несколько подряд?
Logged

gfxyer

  • Coppermine newbie
  • Offline Offline
  • Posts: 12
Re: "Последние комментарии" без дублированl
« Reply #1 on: November 11, 2009, 02:22:16 am »

У кого-нить есть мысли в какую сторону копать?
« Last Edit: November 11, 2009, 10:28:14 am by Makc666 »
Logged

gfxyer

  • Coppermine newbie
  • Offline Offline
  • Posts: 12
Re: "Последние комментарии" без дублированl
« Reply #2 on: November 11, 2009, 04:17:21 am »

Даже не так! Копать я знаю куда -> сюда. Но так как по сути это мой первый опыт общения с php, то решить некоторые проблемы с тем кодом не могу, пока.
Во-первых слетает дата коментов.
Во-вторых выводяться все комменты, даже тех альбомов к которым нет прав доступа.

Может кто сможет мне оказать помощь?
« Last Edit: November 11, 2009, 10:28:22 am by Makc666 »
Logged

Makc666

  • Moderator
  • Coppermine addict
  • ****
  • Offline Offline
  • Gender: Male
  • Posts: 1614
  • Русский (ISO-8859-1) - Russian - Русский (Windows)
    • Makc's home page
Re: "Последние комментарии" без дублированl
« Reply #3 on: November 11, 2009, 10:27:30 am »

gfxyer, используйте пожалуйста или Firefox, или Opera на данном форуме. Почему, написано тут -> http://forum.coppermine-gallery.net/index.php/topic,37805.0.html

Можно ли устранить дублирования превьюшек с комментариями одного файла и выводить только превью с информацией о последнем комментарии? Т.е. у файла есть несколько комментариев написаных подряд. Можно ли в "Последних комментариях" оставить только  одну превьюшку с последним комментарием, а не несколько подряд?

Функция, которая за это отвечает находится с файле:
./include/functions.inc.php

Code: [Select]
       case 'lastcom': // Last comments                                                                                                                                                                                                    
                if ($META_ALBUM_SET && $CURRENT_CAT_NAME) {                                                                                                                                                                                  
                        $album_name = $album_name = $lang_meta_album_names['lastcom'].' - '. $CURRENT_CAT_NAME;                                                                                                                              
                } else {                                                                                                                                                                                                                    
                        $album_name = $lang_meta_album_names['lastcom'];                                                                                                                                                                    
                }                                                                                                                                                                                                                            
                                                                                                                                                                                                                                            
                // Replacing the AND in ALBUM_SET with AND (                                                                                                                                                                                
                if($META_ALBUM_SET){                                                                                                                                                                                                        
                        $TMP_SET = "AND (" . substr($META_ALBUM_SET, 3);                                                                                                                                                                    
                }else{                                                                                                                                                                                                                      
                        $TMP_SET = "AND (1";                                                                                                                                                                                                
                }                                                                                                                                                                                                                            
                                                                                                                                                                                                                                            
                $query = "SELECT COUNT(*) from {$CONFIG['TABLE_COMMENTS']}, {$CONFIG['TABLE_PICTURES']}  WHERE approved = 'YES' AND {$CONFIG['TABLE_COMMENTS']}.pid = {$CONFIG['TABLE_PICTURES']}.pid $TMP_SET $keyword)";                  
                $result = cpg_db_query($query);                                                                                                                                                                                              
                                                                                                                                                                                                                                            
                $nbEnr = mysql_fetch_array($result);                                                                                                                                                                                        
                $count = $nbEnr[0];                                                                                                                                                                                                          
                mysql_free_result($result);                                                                                                                                                                                                  
                $select_columns = '*'; //allows building any data into any thumbnail caption                                                                                                                                                
                if($select_columns == '*'){                                                                                                                                                                                                  
                  $select_columns = 'p.*, msg_id, author_id, msg_author, UNIX_TIMESTAMP(msg_date) as msg_date, msg_body, aid';                                                                                                              
                } else {                                                                                                                                                                                                                    
                  $select_columns = str_replace('pid', 'c.pid', $select_columns).', msg_id, author_id, msg_author, UNIX_TIMESTAMP(msg_date) as msg_date, msg_body, aid';                                                                    
                }                                                                                                                                                                                                                            
                                                                                                                                                                                                                                            
                $TMP_SET = str_replace($CONFIG['TABLE_PICTURES'],'p',$TMP_SET);                                                                                                                                                              
                $query = "SELECT $select_columns FROM {$CONFIG['TABLE_COMMENTS']} as c, {$CONFIG['TABLE_PICTURES']} as p WHERE approved = 'YES' AND c.pid = p.pid $TMP_SET $keyword) ORDER by msg_id DESC $limit";                          
                $result = cpg_db_query($query);                                                                                                                                                                                              
                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                            
                $rowset = cpg_db_fetch_rowset($result);                                                                                                                                                                                      
                mysql_free_result($result);                                                                                                                                                                                                  
                                                                                                                                                                                                                                            
                if ($set_caption) build_caption($rowset,array('msg_body','msg_date'));                                                                                                                                                      
                                                                                                                                                                                                                                            
                $rowset = CPGPluginAPI::filter('thumb_caption_lastcom',$rowset);                                                                                                                                                            
                                                                                                                                                                                                                                            
                return $rowset;                                                                                                                                                                                                              
                break;

Запрос вот он:
Code: [Select]
$query = "SELECT $select_columns FROM {$CONFIG['TABLE_COMMENTS']} as c, {$CONFIG['TABLE_PICTURES']} as p WHERE approved = 'YES' AND c.pid = p.pid $TMP_SET $keyword) ORDER by msg_id DESC $limit";
По идее, добавление сюда:
GROUP BY pid
перед
ORDER by
будет выводить только один комментарий, но он, к сожалению, будет первым по списку, а не последним.

Чтобы выводить последний комментарий, нужно переписывать этот запрос и добавлять ещё как минимум один запрос.

Это осложняется тем, что текущий запрос формирует большой массив, который потом передаётся дальше.
И перелопатить это всё очень тяжело.
Logged
Pages: [1]   Go Up
 

Page created in 0.029 seconds with 21 queries.