Advanced search  

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Pages: [1]   Go Down

Author Topic: "Последние комментарии" без дублировани&#  (Read 4838 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.025 seconds with 21 queries.