api_channel_list
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
- channel_t *ch;
+ channel_t *ch, **chlist;
htsmsg_t *l;
const int cfg = api_channel_is_all(perm, args);
const int numbers = htsmsg_get_s32_or_default(args, "numbers", 0);
const int flags = (numbers ? CHANNEL_ENAME_NUMBERS : 0) |
(sources ? CHANNEL_ENAME_SOURCES : 0);
char buf[128], buf1[128], ubuf[UUID_HEX_SIZE];
- const char *name, *blank;
+ const char *name, *blank, *sort = htsmsg_get_str(args, "sort");
+ int i, count;
+ sort = htsmsg_get_str(args, "sort");
+ if (numbers && !sort) sort = "numname";
blank = tvh_gettext_lang(perm->aa_lang_ui, channel_blank_name);
l = htsmsg_create_list();
pthread_mutex_lock(&global_lock);
- CHANNEL_FOREACH(ch) {
+ chlist = channel_get_sorted_list(sort, cfg, &count);
+ for (i = 0; i < count; i++) {
+ ch = chlist[i];
if (!cfg && !channel_access(ch, perm, 0)) continue;
if (!ch->ch_enabled) {
snprintf(buf, sizeof(buf), "{%s}",
htsmsg_add_msg(l, NULL, htsmsg_create_key_val(idnode_uuid_as_str(&ch->ch_id, ubuf), name));
}
pthread_mutex_unlock(&global_lock);
+ free(chlist);
*resp = htsmsg_create_map();
htsmsg_add_msg(*resp, "entries", l);
}
channel_t **
-channel_get_sorted_list(const char *sort_type, int *_count)
+channel_get_sorted_list(const char *sort_type, int all, int *_count)
{
int count = 0;
channel_t *ch, **chlist = malloc(channels_count * sizeof(channel_t *));
CHANNEL_FOREACH(ch)
- if (ch->ch_enabled)
+ if (all || ch->ch_enabled)
chlist[count++] = ch;
assert(count <= channels_count);
#define channel_get_id(ch) idnode_get_short_uuid((&(ch)->ch_id))
channel_t **channel_get_sorted_list
- ( const char *sort_type, int *_count ) ;
+ ( const char *sort_type, int all, int *_count ) ;
channel_t **channel_get_sorted_list_for_tag
( const char *sort_type, channel_tag_t *tag, int *_count );
channel_tag_t **channel_tag_get_sorted_list
'sources': tvheadend.chname_src,
},
event: 'channel',
+ stype: 'none',
listeners: {
'load': function(scope, records, options) {
var placeholder = Ext.data.Record.create(['key', 'val']);
ctlist = channel_tag_get_sorted_list(sort, &count);
if (pltype == PLAYLIST_E2 || pltype == PLAYLIST_SATIP_M3U) {
- chlist = channel_get_sorted_list(sort, &chcount);
+ chlist = channel_get_sorted_list(sort, 0, &chcount);
} else {
chlist = NULL;
}
profile = profile_validate_name(http_arg_get(&hc->hc_req_args, "profile"));
hostpath = http_get_hostpath(hc);
sort = http_arg_get(&hc->hc_req_args, "sort");
- chlist = channel_get_sorted_list(sort, &count);
+ chlist = channel_get_sorted_list(sort, 0, &count);
blank = tvh_gettext_lang(lang, channel_blank_name);
htsbuf_append_str(hq, pltype == PLAYLIST_E2 ? "#NAME Tvheadend Channels\n" : "#EXTM3U\n");