diff --git a/src/content/lang/en.json b/src/content/lang/en.json
index 08f9f92..4c68cae 100644
--- a/src/content/lang/en.json
+++ b/src/content/lang/en.json
@@ -125,7 +125,11 @@
"feed_title": "%s",
"feed_completed_tasks": "Completed tasks",
"feed_modified_tasks": "Modified tasks",
- "feed_new_tasks": "New tasks",
+ "feed_new_tasks": "New tasks",
+ "feed_tasks": "Tasks",
+ "feed_status_new": "New",
+ "feed_status_updated": "Updated",
+ "feed_status_completed": "Completed",
"alltasks": "All tasks",
"set_header": "Settings",
"set_title": "Title",
diff --git a/src/content/lang/ru.json b/src/content/lang/ru.json
index 29cf0fc..a05331b 100644
--- a/src/content/lang/ru.json
+++ b/src/content/lang/ru.json
@@ -125,7 +125,11 @@
"feed_title": "%s",
"feed_completed_tasks": "Завершенные задачи",
"feed_modified_tasks": "Изменившиеся задачи",
- "feed_new_tasks": "Новые задачи",
+ "feed_new_tasks": "Новые задачи",
+ "feed_status_new": "Задача создана",
+ "feed_status_updated": "Задача обновлена",
+ "feed_status_completed": "Задача завершена",
+ "feed_tasks": "Задачи",
"alltasks": "Все задачи",
"set_header": "Настройки",
"set_title": "Заголовок страницы",
diff --git a/src/feed.php b/src/feed.php
index b9a7d1c..ffbe826 100644
--- a/src/feed.php
+++ b/src/feed.php
@@ -18,75 +18,120 @@ if (need_auth() && (!$listData || !$listData['published'])) {
die("Access denied!
List is not published.");
}
if(!$listData) {
- die("No such list");
+ die("No list found");
}
+$data = array();
$feedType = _get('feed');
-$sqlWhere = '';
+
if($feedType == 'completed') {
- $listData['_uid_field'] = 'd_completed';
$listData['_feed_descr'] = $lang->get('feed_completed_tasks');
- $sqlWhere = 'AND compl=1';
+ fillData( $data, $listId, 'd_completed', 'AND compl=1' );
}
elseif($feedType == 'modified') {
- $listData['_uid_field'] = 'd_edited';
- $listData['_feed_descr'] = $lang->get('feed_modified_tasks');
+ $listData['_feed_descr'] = $lang->get('feed_modified_tasks');
+ fillData( $data, $listId, 'd_edited', '' );
}
elseif($feedType == 'current') {
- $listData['_uid_field'] = 'd_created';
$listData['_feed_descr'] = $lang->get('feed_new_tasks');
- $sqlWhere = 'AND compl=0';
+ fillData( $data, $listId, 'd_created', 'AND compl=0' );
+}
+elseif($feedType == 'status') {
+ $listData['_feed_descr'] = $lang->get('feed_tasks');
+ fillData( $data, $listId, 'd_created', '' );
+ fillData( $data, $listId, 'd_edited', 'AND compl=0 AND d_edited > d_created' );
+ fillData( $data, $listId, 'd_completed', 'AND compl=1' );
}
else {
- $listData['_uid_field'] = 'd_created';
- $listData['_feed_descr'] = $lang->get('feed_new_tasks');
+ $listData['_feed_descr'] = $lang->get('feed_new_tasks');
+ $feedType = 'tasks';
+ fillData( $data, $listId, 'd_created', '' );
}
$listData['_feed_title'] = sprintf($lang->get('feed_title'), $listData['name']) . ' - '. $listData['_feed_descr'];
+$listData['_feed_link'] = get_mttinfo('mtt_url'). "feed.php?list=". (int)$listData['id'] . ($feedType != '' ? "&feed=". $feedType : '');
+$listData['_feed_type'] = $feedType;
htmlarray_ref($listData);
-$data = array();
-$q = $db->dq("SELECT * FROM {$db->prefix}todolist WHERE list_id=$listId $sqlWhere ORDER BY ". $listData['_uid_field'] ." DESC LIMIT 100");
-while($r = $q->fetch_assoc($q))
+printRss($data, $listData);
+
+
+function fillData(&$data, $listId, $field, $sqlWhere )
{
- if($r['prio'] > 0) $r['prio'] = '+'.$r['prio'];
- $a = array();
- if($r['prio']) $a[] = $lang->get('priority'). ": $r[prio]";
- if($r['duedate'] != '') {
- $ad = explode('-', $r['duedate']);
- $a[] = $lang->get('due'). ": ".formatDate3(Config::get('dateformat'), (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang);
+ $lang = Lang::instance();
+ $db = DBConnection::instance();
+ $q = $db->dq("SELECT * FROM {$db->prefix}todolist WHERE list_id=$listId $sqlWhere ORDER BY $field DESC LIMIT 100");
+ while ($r = $q->fetch_assoc($q))
+ {
+ if ($r['prio'] > 0) {
+ $r['prio'] = '+'.$r['prio'];
+ }
+ $a = array();
+ $a[] = $lang->get('task'). ": ". $r['title'];
+ if ($r['prio']) {
+ $a[] = $lang->get('priority'). ": $r[prio]";
+ }
+ if ($r['duedate'] != '') {
+ $ad = explode('-', $r['duedate']);
+ $a[] = $lang->get('due'). ": ".formatDate3(Config::get('dateformat'), (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang);
+ }
+ if ($r['tags'] != '') {
+ $a[] = $lang->get('tags'). ": ". str_replace(',', ', ', $r['tags']);
+ }
+ if ($r['compl']) {
+ $a[] = $lang->get('taskdate_completed'). ": ". timestampToDatetime($r['d_completed']);
+ }
+ $r['title'] = htmlspecialchars( $r['title'] );
+ $r['note'] = mttMarkup_v1($r['note']);
+ $r['_descr'] = implode("
", htmlarray($a)). "
". $r['note'];
+ $r['_title'] = "#". (int)$r['id']. ": ". $r['title'];
+ $r['_d'] = gmdate('r', $r[$field]);
+ $r['_field'] = $field;
+ $data[] = $r;
}
- if($r['tags'] != '') $a[] = $lang->get('tags'). ": ". str_replace(',', ', ', $r['tags']);
- if($r['compl']) $a[] = $lang->get('taskdate_completed'). ": ". timestampToDatetime($r['d_completed']);
- $r['title'] = htmlspecialchars( $r['title'] );
- $r['note'] = mttMarkup_v1($r['note']);
- $r['_descr'] = $r['note']. ($a && $r['note']!='' ? "
" : ""). implode("
", htmlarray($a));
- $data[] = $r;
}
-printRss($listData, $data);
-
-
-function printRss($listData, $data)
+function printRss($data, $listData)
{
+ $lang = Lang::instance();
$link = get_mttinfo('url'). "?list=". (int)$listData['id'];
$buildDate = gmdate('r');
- $s = "\n\n\n".
- "$listData[_feed_title]\n$link\n$listData[_feed_descr]\n".
+ $s = "\n".
+ "\n".
+ "\n".
+ "$listData[_feed_title]\n".
+ "$link\n".
+ "\n".
+ "$listData[_feed_descr]\n".
"$buildDate\n\n";
foreach($data as $v)
{
- $d = gmdate('r', $v[$listData['_uid_field']]);
- $guid = $listData['id'].'-'.$v['id'].'-'.$v[$listData['_uid_field']];
+ $guid = $listData['_feed_type']. '-'. $listData['id']. '-'. $v['id']. '-'. $v[$v['_field']];
+ $itemLink = $link. "&task=". (int)$v['id'];
- $s .= "- \n${v['title']}\n".
- "$link\n".
- "$d\n".
+ $status = '';
+ if ( $listData['_feed_type'] == 'status' ) {
+ if ( $v['_field'] == 'd_created' ) {
+ $status = $lang->get('feed_status_new');
+ }
+ elseif ( $v['_field'] == 'd_edited' ) {
+ $status = $lang->get('feed_status_updated');
+ }
+ elseif ( $v['_field'] == 'd_completed' ) {
+ $status = $lang->get('feed_status_completed');
+ }
+ }
+ if ( $status !='' ) $status = "[$status] ";
+
+ $s .= "
- \n".
+ "". $status. $v['title']. "\n".
+ "". $itemLink. "\n".
+ "". $v['_d']. "\n".
"\n".
"$guid\n".
- "
\n";
+ " \n\n";
}
$s .= "\n";