/[LeafOK_CVS]/lbbs/src/article_favor_display.c
ViewVC logotype

Diff of /lbbs/src/article_favor_display.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.5 by sysadm, Sat Oct 18 12:49:13 2025 UTC Revision 1.16 by sysadm, Sat Jan 3 10:27:14 2026 UTC
# Line 1  Line 1 
1  /***************************************************************************  /* SPDX-License-Identifier: GPL-3.0-or-later */
2                                          article_favor_display.c  -  description  /*
3                                                           -------------------   * article_favor_display
4          Copyright            : (C) 2004-2025 by Leaflet   *   - user interactive feature to display favorite articles
5          Email                : leaflet@leafok.com   *
6   ***************************************************************************/   * Copyright (C) 2004-2026  Leaflet <leaflet@leafok.com>
7     */
8  /***************************************************************************  
9   *                                                                         *  #ifdef HAVE_CONFIG_H
10   *   This program is free software; you can redistribute it and/or modify  *  #include "config.h"
11   *   it under the terms of the GNU General Public License as published by  *  #endif
  *   the Free Software Foundation; either version 3 of the License, or     *  
  *   (at your option) any later version.                                   *  
  *                                                                         *  
  ***************************************************************************/  
12    
13  #include "article_favor_display.h"  #include "article_favor_display.h"
14  #include "article_view_log.h"  #include "article_view_log.h"
# Line 60  static int article_favor_draw_screen(int Line 56  static int article_favor_draw_screen(int
56          return 0;          return 0;
57  }  }
58    
59  static int article_favor_draw_items(int page_id, ARTICLE *p_articles[], char p_snames[][BBS_section_name_max_len + 1],  static int article_favor_draw_items(int page_id, const ARTICLE *p_articles[], char p_snames[][BBS_section_name_max_len + 1],
60                                                                          int article_count, int display_sname)                                                                          int article_count, int display_sname)
61  {  {
62          char str_time[LINE_BUFFER_LEN];          char str_time[LINE_BUFFER_LEN];
# Line 89  static int article_favor_draw_items(int Line 85  static int article_favor_draw_items(int
85                          is_viewed = article_view_log_is_viewed(p_articles[i]->aid, &BBS_article_view_log);                          is_viewed = article_view_log_is_viewed(p_articles[i]->aid, &BBS_article_view_log);
86                          if (is_viewed < 0)                          if (is_viewed < 0)
87                          {                          {
88                                  log_error("article_view_log_is_viewed(aid=%d) error\n", p_articles[i]->aid);                                  log_error("article_view_log_is_viewed(aid=%d) error", p_articles[i]->aid);
89                                  is_viewed = 0;                                  is_viewed = 0;
90                          }                          }
91                  }                  }
# Line 165  static enum select_cmd_t article_favor_s Line 161  static enum select_cmd_t article_favor_s
161                  if (ch != KEY_NULL && ch != KEY_TIMEOUT)                  if (ch != KEY_NULL && ch != KEY_TIMEOUT)
162                  {                  {
163                          BBS_last_access_tm = time(NULL);                          BBS_last_access_tm = time(NULL);
164    
165                            // Refresh current action
166                            if (user_online_update(NULL) < 0)
167                            {
168                                    log_error("user_online_update(NULL) error");
169                            }
170                  }                  }
171    
172                  switch (ch)                  switch (ch)
173                  {                  {
174                  case KEY_NULL: // broken pipe                  case KEY_NULL: // broken pipe
175                          log_error("KEY_NULL\n");                          log_debug("KEY_NULL");
176                  case KEY_ESC:                  case KEY_ESC:
177                  case KEY_LEFT:                  case KEY_LEFT:
178                          return EXIT_LIST; // exit list                          return EXIT_LIST; // exit list
179                  case KEY_TIMEOUT:                  case KEY_TIMEOUT:
180                          if (time(NULL) - BBS_last_access_tm >= MAX_DELAY_TIME)                          if (time(NULL) - BBS_last_access_tm >= BBS_max_user_idle_time)
181                          {                          {
182                                  log_error("User input timeout\n");                                  log_debug("User input timeout");
183                                  return EXIT_LIST; // exit list                                  return EXIT_LIST; // exit list
184                          }                          }
185                          continue;                          continue;
# Line 297  int article_favor_display(ARTICLE_FAVOR Line 299  int article_favor_display(ARTICLE_FAVOR
299    
300          char page_info_str[LINE_BUFFER_LEN];          char page_info_str[LINE_BUFFER_LEN];
301          char snames[BBS_article_limit_per_page][BBS_section_name_max_len + 1];          char snames[BBS_article_limit_per_page][BBS_section_name_max_len + 1];
302          ARTICLE *p_articles[BBS_article_limit_per_page];          const ARTICLE *p_articles[BBS_article_limit_per_page];
303          int article_count;          int article_count;
304          int page_count;          int page_count;
305          int page_id = 0;          int page_id = 0;
# Line 306  int article_favor_display(ARTICLE_FAVOR Line 308  int article_favor_display(ARTICLE_FAVOR
308    
309          if (p_favor == NULL)          if (p_favor == NULL)
310          {          {
311                  log_error("NULL pointer error\n");                  log_error("NULL pointer error");
312                  return -1;                  return -1;
313          }          }
314    
# Line 315  int article_favor_display(ARTICLE_FAVOR Line 317  int article_favor_display(ARTICLE_FAVOR
317          ret = query_favor_articles(p_favor, page_id, p_articles, snames, &article_count, &page_count);          ret = query_favor_articles(p_favor, page_id, p_articles, snames, &article_count, &page_count);
318          if (ret < 0)          if (ret < 0)
319          {          {
320                  log_error("query_favor_articles(page_id=%d) error\n", page_id);                  log_error("query_favor_articles(page_id=%d) error", page_id);
321                  return -2;                  return -2;
322          }          }
323    
# Line 329  int article_favor_display(ARTICLE_FAVOR Line 331  int article_favor_display(ARTICLE_FAVOR
331                  ret = article_favor_draw_items(page_id, p_articles, snames, article_count, display_sname);                  ret = article_favor_draw_items(page_id, p_articles, snames, article_count, display_sname);
332                  if (ret < 0)                  if (ret < 0)
333                  {                  {
334                          log_error("article_favor_draw_items(page_id=%d) error\n", page_id);                          log_error("article_favor_draw_items(page_id=%d) error", page_id);
335                          return -3;                          return -3;
336                  }                  }
337    
# Line 342  int article_favor_display(ARTICLE_FAVOR Line 344  int article_favor_display(ARTICLE_FAVOR
344    
345                  if (user_online_update("ARTICLE_FAVOR") < 0)                  if (user_online_update("ARTICLE_FAVOR") < 0)
346                  {                  {
347                          log_error("user_online_update(ARTICLE_FAVOR) error\n");                          log_error("user_online_update(ARTICLE_FAVOR) error");
348                  }                  }
349    
350                  ret = article_favor_select(page_count, article_count, &page_id, &selected_index);                  ret = article_favor_select(page_count, article_count, &page_id, &selected_index);
# Line 353  int article_favor_display(ARTICLE_FAVOR Line 355  int article_favor_display(ARTICLE_FAVOR
355                  case UNSET_FAVOR:                  case UNSET_FAVOR:
356                          if (article_favor_set(p_articles[selected_index]->aid, &BBS_article_favor, 0) != 1)                          if (article_favor_set(p_articles[selected_index]->aid, &BBS_article_favor, 0) != 1)
357                          {                          {
358                                  log_error("article_favor_set(aid=%d, 0) error\n", p_articles[selected_index]->aid);                                  log_error("article_favor_set(aid=%d, 0) error", p_articles[selected_index]->aid);
359                                  break;                                  break;
360                          }                          }
361                          // continue to refresh list                          // continue to refresh list
# Line 361  int article_favor_display(ARTICLE_FAVOR Line 363  int article_favor_display(ARTICLE_FAVOR
363                          ret = query_favor_articles(p_favor, page_id, p_articles, snames, &article_count, &page_count);                          ret = query_favor_articles(p_favor, page_id, p_articles, snames, &article_count, &page_count);
364                          if (ret < 0)                          if (ret < 0)
365                          {                          {
366                                  log_error("query_favor_articles(page_id=%d) error\n", page_id);                                  log_error("query_favor_articles(page_id=%d) error", page_id);
367                                  return -2;                                  return -2;
368                          }                          }
369    
# Line 377  int article_favor_display(ARTICLE_FAVOR Line 379  int article_favor_display(ARTICLE_FAVOR
379                  case LOCATE_ARTICLE:                  case LOCATE_ARTICLE:
380                          if (section_list_display(snames[selected_index], p_articles[selected_index]->aid) < 0)                          if (section_list_display(snames[selected_index], p_articles[selected_index]->aid) < 0)
381                          {                          {
382                                  log_error("section_list_display(sname=%s, aid=%d) error\n",                                  log_error("section_list_display(sname=%s, aid=%d) error",
383                                                    snames[selected_index], p_articles[selected_index]->aid);                                                    snames[selected_index], p_articles[selected_index]->aid);
384                          }                          }
385                          break;                          break;
# Line 391  int article_favor_display(ARTICLE_FAVOR Line 393  int article_favor_display(ARTICLE_FAVOR
393                          article_favor_draw_screen(display_sname);                          article_favor_draw_screen(display_sname);
394                          break;                          break;
395                  default:                  default:
396                          log_error("Unknown command %d\n", ret);                          log_error("Unknown command %d", ret);
397                  }                  }
398          }          }
399    


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1