Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Feeds
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
TeDomum
Feeds
Commits
70543b6a
Commit
70543b6a
authored
14 years ago
by
Andrew Dolgov
Browse files
Options
Downloads
Patches
Plain Diff
merge API changes from nilsbraden@github
parent
6a69b6ad
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
api/index.php
+358
-4
358 additions, 4 deletions
api/index.php
with
358 additions
and
4 deletions
api/index.php
+
358
−
4
View file @
70543b6a
...
...
@@ -7,6 +7,10 @@
require_once
"../db-prefs.php"
;
require_once
"../functions.php"
;
if
(
defined
(
'ENABLE_GZIP_OUTPUT'
)
&&
ENABLE_GZIP_OUTPUT
)
{
ob_start
(
"ob_gzhandler"
);
}
$link
=
db_connect
(
DB_HOST
,
DB_USER
,
DB_PASS
,
DB_NAME
);
$session_expire
=
SESSION_EXPIRE_TIME
;
//seconds
...
...
@@ -45,13 +49,16 @@
}
switch
(
$op
)
{
case
"getVersion"
:
$rv
=
array
(
"version"
=>
VERSION
);
print
json_encode
(
$rv
);
break
;
break
;
case
"login"
:
$login
=
db_escape_string
(
$_REQUEST
[
"user"
]);
$password
=
db_escape_string
(
$_REQUEST
[
"password"
]);
$password_base64
=
db_escape_string
(
base64_decode
(
$_REQUEST
[
"password"
]));
$result
=
db_query
(
$link
,
"SELECT id FROM ttrss_users WHERE login = '
$login
'"
);
...
...
@@ -62,9 +69,11 @@
}
if
(
$uid
&&
get_pref
(
$link
,
"ENABLE_API_ACCESS"
,
$uid
))
{
if
(
authenticate_user
(
$link
,
$login
,
$password
))
{
if
(
authenticate_user
(
$link
,
$login
,
$password
))
{
// try login with normal password
print
json_encode
(
array
(
"session_id"
=>
session_id
()));
}
else
{
}
else
if
(
authenticate_user
(
$link
,
$login
,
$password_base64
))
{
// else try with base64_decoded password
print
json_encode
(
array
(
"session_id"
=>
session_id
()));
}
else
{
// else we are not logged in
print
json_encode
(
array
(
"error"
=>
"LOGIN_ERROR"
));
}
}
else
{
...
...
@@ -72,13 +81,16 @@
}
break
;
case
"logout"
:
logout_user
();
print
json_encode
(
array
(
"status"
=>
"OK"
));
break
;
case
"isLoggedIn"
:
print
json_encode
(
array
(
"status"
=>
$_SESSION
[
"uid"
]
!=
''
));
break
;
case
"getUnread"
:
$feed_id
=
db_escape_string
(
$_REQUEST
[
"feed_id"
]);
$is_cat
=
db_escape_string
(
$_REQUEST
[
"is_cat"
]);
...
...
@@ -89,11 +101,78 @@
print
json_encode
(
array
(
"unread"
=>
getGlobalUnread
(
$link
)));
}
break
;
/* Method added for ttrss-reader for Android */
case
"getCounters"
:
$counters
=
array
();
$result
=
db_query
(
$link
,
"SELECT
id FROM ttrss_feed_categories
WHERE owner_uid = "
.
$_SESSION
[
"uid"
]);
$cats
=
array
();
while
(
$line
=
db_fetch_assoc
(
$result
))
{
array_push
(
$cats
,
$line
[
"id"
]);
}
array_push
(
$cats
,
"0"
);
array_push
(
$cats
,
"-1"
);
array_push
(
$cats
,
"-2"
);
array_push
(
$cats
,
"-3"
);
array_push
(
$cats
,
"-4"
);
foreach
(
$cats
as
$cat
)
{
$cat_part
=
"cat_id = '
$cat
'"
;
if
(
$cat
==
0
)
{
$cat_part
=
"cat_id IS null"
;
}
$result
=
db_query
(
$link
,
"SELECT
id FROM ttrss_feeds WHERE "
.
$cat_part
.
" AND owner_uid = "
.
$_SESSION
[
"uid"
]);
$feeds
=
array
();
/* TODO */
while
(
$line
=
db_fetch_assoc
(
$result
))
{
$unread
=
getFeedArticles
(
$link
,
$line
[
"id"
],
false
,
true
,
$_SESSION
[
"uid"
]);
if
(
$unread
)
{
$row
=
array
(
"feed_id"
=>
(
int
)
$line
[
"id"
],
"unread"
=>
(
int
)
$unread
);
array_push
(
$feeds
,
$row
);
}
}
$is_cat
=
true
;
if
(
$cat
<
0
)
{
$is_cat
=
false
;
}
$unread_cat
=
getFeedArticles
(
$link
,
$cat
,
$is_cat
,
true
,
$_SESSION
[
"uid"
]);
if
(
$feeds
)
{
$count
=
array
(
"cat_id"
=>
$cat
,
"unread"
=>
$unread_cat
,
"feeds"
=>
$feeds
);
}
else
{
$count
=
array
(
"cat_id"
=>
$cat
,
"unread"
=>
$unread_cat
);
}
array_push
(
$counters
,
$count
);
}
print
json_encode
(
$counters
);
break
;
case
"getFeeds"
:
$cat_id
=
db_escape_string
(
$_REQUEST
[
"cat_id"
]);
$unread_only
=
(
bool
)
db_escape_string
(
$_REQUEST
[
"unread_only"
]);
...
...
@@ -105,6 +184,7 @@
print
json_encode
(
$feeds
);
break
;
case
"getCategories"
:
$unread_only
=
(
bool
)
db_escape_string
(
$_REQUEST
[
"unread_only"
]);
...
...
@@ -127,6 +207,7 @@
print
json_encode
(
$cats
);
break
;
case
"getHeadlines"
:
$feed_id
=
db_escape_string
(
$_REQUEST
[
"feed_id"
]);
$limit
=
(
int
)
db_escape_string
(
$_REQUEST
[
"limit"
]);
...
...
@@ -144,6 +225,7 @@
print
json_encode
(
$headlines
);
break
;
case
"updateArticle"
:
$article_ids
=
split
(
","
,
db_escape_string
(
$_REQUEST
[
"article_ids"
]));
$mode
=
(
int
)
db_escape_string
(
$_REQUEST
[
"mode"
]);
...
...
@@ -233,6 +315,7 @@
}
break
;
case
"getConfig"
:
$config
=
array
(
"icons_dir"
=>
ICONS_DIR
,
...
...
@@ -276,7 +359,278 @@
$pref_name
=
db_escape_string
(
$_REQUEST
[
"pref_name"
]);
print
json_encode
(
array
(
"value"
=>
get_pref
(
$link
,
$pref_name
)));
break
;
/* Method added for ttrss-reader for Android */
case
"getArticles"
:
$isCategory
=
(
int
)
db_escape_string
(
$_REQUEST
[
"is_category"
]);
$id
=
(
int
)
db_escape_string
(
$_REQUEST
[
"id"
]);
$displayUnread
=
(
int
)
db_escape_string
(
$_REQUEST
[
"unread"
]);
$limit
=
(
int
)
db_escape_string
(
$_REQUEST
[
"limit"
]);
$feeds
=
array
();
if
(
$isCategory
>
0
)
{
// Get Feeds of the category
if
(
$id
==
0
)
{
$category_part
=
"cat_id is NULL"
;
}
else
{
$category_part
=
"cat_id = '
$id
'"
;
}
$result
=
db_query
(
$link
,
"SELECT id FROM ttrss_feeds WHERE "
.
$category_part
.
" AND owner_uid = '"
.
$_SESSION
[
"uid"
]
.
"'"
);
while
(
$line
=
db_fetch_assoc
(
$result
))
{
array_push
(
$feeds
,
$line
[
"id"
]);
}
// Virtual feeds
$match_part
=
""
;
if
(
$id
==
-
1
)
{
$match_part
=
"marked = true"
;
array_push
(
$feeds
,
-
1
);
}
else
if
(
$id
==
-
2
)
{
$match_part
=
"published = true"
;
array_push
(
$feeds
,
-
2
);
}
else
if
(
$id
==
-
3
)
{
$match_part
=
"unread = true"
;
array_push
(
$feeds
,
-
3
);
$intl
=
get_pref
(
$link
,
"FRESH_ARTICLE_MAX_AGE"
,
$owner_uid
);
if
(
DB_TYPE
==
"pgsql"
)
{
$match_part
.
=
" AND updated > NOW() - INTERVAL '
$intl
hour' "
;
}
else
{
$match_part
.
=
" AND updated > DATE_SUB(NOW(), INTERVAL
$intl
HOUR) "
;
}
}
else
if
(
$id
==
-
4
)
{
$match_part
=
"true"
;
array_push
(
$feeds
,
-
4
);
}
}
else
{
// Only add one feed
array_push
(
$feeds
,
$id
);
}
$ret
=
array
();
if
(
DB_TYPE
==
"mysql"
)
{
$limit_part
=
" LIMIT 0,"
.
$limit
;
}
else
if
(
DB_TYPE
==
"pgsql"
)
{
$limit_part
=
" LIMIT "
.
$limit
;
}
else
{
$limit_part
=
""
;
}
// Fetch articles for the feeds
foreach
(
$feeds
as
$feed
)
{
if
(
$match_part
)
{
$from_qpart
=
"ttrss_user_entries,ttrss_feeds,ttrss_entries"
;
$feeds_qpart
=
"ttrss_user_entries.feed_id = ttrss_feeds.id AND"
;
$query
=
"SELECT ttrss_entries.id,ttrss_entries.title,link,content,feed_id,comments,int_id,
marked,unread,published,"
.
SUBSTRING_FOR_DATE
.
"(updated,1,16) as updated,author
FROM
$from_qpart
WHERE
ttrss_user_entries.ref_id = ttrss_entries.id AND
$feeds_qpart
(
$match_part
) AND ttrss_user_entries.owner_uid = "
.
$_SESSION
[
"uid"
]
.
" ORDER BY updated DESC"
.
$limit_part
;
$result
=
db_query
(
$link
,
$query
);
}
else
{
$query
=
"SELECT ttrss_entries.id,ttrss_entries.title,link,content,feed_id,comments,int_id,
marked,unread,published,"
.
SUBSTRING_FOR_DATE
.
"(updated,1,16) as updated,author
FROM ttrss_entries,ttrss_user_entries
WHERE feed_id = '"
.
$feed
.
"' AND ref_id = id AND owner_uid = "
.
$_SESSION
[
"uid"
]
.
" AND unread >= '"
.
$displayUnread
.
"' ORDER BY updated DESC"
.
$limit_part
;
$result
=
db_query
(
$link
,
$query
);
}
$articles
=
array
();
$i
=
0
;
while
(
$i
<
mysql_numrows
(
$result
))
{
$article_id
=
db_fetch_result
(
$result
,
$i
,
"id"
);
$attachments
=
get_article_enclosures
(
$link
,
$article_id
);
$article
=
array
(
"id"
=>
db_fetch_result
(
$result
,
$i
,
"ttrss_entries.id"
),
"title"
=>
db_fetch_result
(
$result
,
$i
,
"ttrss_entries.title"
),
"link"
=>
db_fetch_result
(
$result
,
$i
,
"link"
),
"labels"
=>
get_article_labels
(
$link
,
$article_id
),
"unread"
=>
sql_bool_to_bool
(
db_fetch_result
(
$result
,
$i
,
"unread"
)),
"marked"
=>
sql_bool_to_bool
(
db_fetch_result
(
$result
,
$i
,
"marked"
)),
"published"
=>
sql_bool_to_bool
(
db_fetch_result
(
$result
,
$i
,
"published"
)),
"comments"
=>
db_fetch_result
(
$result
,
$i
,
"comments"
),
"author"
=>
db_fetch_result
(
$result
,
$i
,
"author"
),
"updated"
=>
strtotime
(
db_fetch_result
(
$result
,
$i
,
"updated"
)),
"content"
=>
db_fetch_result
(
$result
,
$i
,
"content"
),
"feed_id"
=>
db_fetch_result
(
$result
,
$i
,
"feed_id"
),
"attachments"
=>
$attachments
);
array_push
(
$ret
,
$article
);
$i
++
;
}
}
print
json_encode
(
$ret
);
break
;
/* Method added for ttrss-reader for Android */
case
"getNewArticles"
:
$time
=
(
int
)
db_escape_string
(
$_REQUEST
[
"time"
]);
// unread=1 zeigt alle an, unread=0 nur ungelesene
$displayUnread
=
(
int
)
db_escape_string
(
$_REQUEST
[
"unread"
]);
if
(
DB_TYPE
==
"mysql"
)
{
$db_time_function
=
" AND last_updated > FROM_UNIXTIME("
.
$time
.
")"
;
}
else
if
(
DB_TYPE
==
"pgsql"
)
{
$db_time_function
=
" AND last_updated > to_timestamp("
.
$time
.
")"
;
}
else
{
$db_time_function
=
""
;
}
if
(
DB_TYPE
==
"mysql"
)
{
$db_time_function2
=
" AND updated > FROM_UNIXTIME("
.
$time
.
")"
;
}
else
if
(
DB_TYPE
==
"pgsql"
)
{
$db_time_function2
=
" AND updated > to_timestamp("
.
$time
.
")"
;
}
else
{
$db_time_function2
=
""
;
}
$cats
=
array
();
// Add uncategorized feeds
$unread
=
getFeedUnread
(
$link
,
0
,
true
);
if
(
$unread
||
$displayUnread
>
0
)
{
$feeds
=
array
();
$result_0
=
db_query
(
$link
,
"SELECT id, feed_url, cat_id, title, "
.
SUBSTRING_FOR_DATE
.
"(last_updated,1,19) AS last_updated "
.
"FROM ttrss_feeds WHERE cat_id IS null AND owner_uid = '"
.
$_SESSION
[
"uid"
]
.
"'"
.
$db_time_function
);
while
(
$line_feeds
=
db_fetch_assoc
(
$result_0
))
{
$unread_feed
=
getFeedUnread
(
$link
,
$line_feeds
[
"id"
],
false
);
if
(
$unread
||
$displayUnread
>
0
)
{
$result_1
=
db_query
(
$link
,
"SELECT id,title,link,content,feed_id,comments,int_id,
marked,unread,published,"
.
SUBSTRING_FOR_DATE
.
"(updated,1,16) as updated,author
FROM ttrss_entries,ttrss_user_entries
WHERE feed_id = '"
.
$line_feeds
[
"id"
]
.
"' AND ref_id = id AND owner_uid = "
.
$_SESSION
[
"uid"
]
.
" AND unread >= '"
.
$displayUnread
.
"'"
.
$db_time_function2
);
$articles
=
array
();
while
(
$line_articles
=
db_fetch_assoc
(
$result_1
))
{
$article_id
=
db_fetch_result
(
$result
,
$i
,
"id"
);
$attachments
=
get_article_enclosures
(
$link
,
$article_id
);
array_push
(
$articles
,
$article
=
array
(
"id"
=>
$line_articles
[
"id"
],
"title"
=>
$line_articles
[
"title"
],
"link"
=>
$line_articles
[
"link"
],
"labels"
=>
$article_id
,
"unread"
=>
$line_articles
[
"unread"
],
"marked"
=>
$line_articles
[
"marked"
],
"published"
=>
$line_articles
[
"published"
],
"comments"
=>
$line_articles
[
"comments"
],
"author"
=>
$line_articles
[
"author"
],
"updated"
=>
strtotime
(
$line_articles
[
"updated"
]),
"content"
=>
$line_articles
[
"content"
],
"feed_id"
=>
$line_articles
[
"feed_id"
],
"attachments"
=>
$attachments
));
}
array_push
(
$feeds
,
array
(
"feed_url"
=>
$line_feeds
[
"feed_url"
],
"title"
=>
$line_feeds
[
"title"
],
"id"
=>
(
int
)
$line_feeds
[
"id"
],
"unread"
=>
(
int
)
$unread_feed
,
"has_icon"
=>
$has_icon
,
"cat_id"
=>
(
int
)
$line_feeds
[
"cat_id"
],
"last_updated"
=>
strtotime
(
$line_feeds
[
"last_updated"
]),
"articles"
=>
$articles
));
}
}
array_push
(
$cats
,
array
(
"id"
=>
0
,
"title"
=>
"Uncategorized Feeds"
,
"unread"
=>
$unread
,
"feeds"
=>
$feeds
));
}
$result
=
db_query
(
$link
,
"SELECT id, title FROM ttrss_feed_categories WHERE owner_uid = "
.
$_SESSION
[
"uid"
]);
while
(
$line
=
db_fetch_assoc
(
$result
))
{
$unread
=
getFeedUnread
(
$link
,
$line
[
"id"
],
true
);
if
(
$unread
||
$displayUnread
>
0
)
{
$feeds
=
array
();
$result_0
=
db_query
(
$link
,
"SELECT id, feed_url, cat_id, title, "
.
SUBSTRING_FOR_DATE
.
"(last_updated,1,19) AS last_updated "
.
"FROM ttrss_feeds WHERE cat_id = '"
.
$line
[
"id"
]
.
"' AND owner_uid = '"
.
$_SESSION
[
"uid"
]
.
"'"
.
$db_time_function
);
while
(
$line_feeds
=
db_fetch_assoc
(
$result_0
))
{
$unread_feed
=
getFeedUnread
(
$link
,
$line_feeds
[
"id"
],
false
);
if
(
$unread_feed
||
$displayUnread
>
0
)
{
$result_1
=
db_query
(
$link
,
"SELECT id,title,link,content,feed_id,comments,int_id,
marked,unread,published,"
.
SUBSTRING_FOR_DATE
.
"(updated,1,16) as updated,author
FROM ttrss_entries,ttrss_user_entries
WHERE feed_id = '"
.
$line_feeds
[
"id"
]
.
"' AND ref_id = id AND owner_uid = "
.
$_SESSION
[
"uid"
]
.
" AND unread >= '"
.
$displayUnread
.
"'"
.
$db_time_function2
);
$articles
=
array
();
while
(
$line_articles
=
db_fetch_assoc
(
$result_1
))
{
$article_id
=
db_fetch_result
(
$result
,
$i
,
"id"
);
$attachments
=
get_article_enclosures
(
$link
,
$article_id
);
array_push
(
$articles
,
$article
=
array
(
"id"
=>
$line_articles
[
"id"
],
"title"
=>
$line_articles
[
"title"
],
"link"
=>
$line_articles
[
"link"
],
"labels"
=>
$article_id
,
"unread"
=>
$line_articles
[
"unread"
],
"marked"
=>
$line_articles
[
"marked"
],
"published"
=>
$line_articles
[
"published"
],
"comments"
=>
$line_articles
[
"comments"
],
"author"
=>
$line_articles
[
"author"
],
"updated"
=>
strtotime
(
$line_articles
[
"updated"
]),
"content"
=>
$line_articles
[
"content"
],
"feed_id"
=>
$line_articles
[
"feed_id"
],
"attachments"
=>
$attachments
));
}
array_push
(
$feeds
,
array
(
"feed_url"
=>
$line_feeds
[
"feed_url"
],
"title"
=>
$line_feeds
[
"title"
],
"id"
=>
(
int
)
$line_feeds
[
"id"
],
"unread"
=>
(
int
)
$unread_feed
,
"cat_id"
=>
(
int
)
$line_feeds
[
"cat_id"
],
"last_updated"
=>
strtotime
(
$line_feeds
[
"last_updated"
]),
"articles"
=>
$articles
));
}
}
array_push
(
$cats
,
array
(
"id"
=>
$line
[
"id"
],
"title"
=>
$line
[
"title"
],
"unread"
=>
$unread
,
"feeds"
=>
$feeds
));
}
}
print
json_encode
(
$cats
);
break
;
default
:
print
json_encode
(
array
(
"error"
=>
'UNKNOWN_METHOD'
));
break
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment