]> git.wh0rd.org - tt-rss.git/blobdiff - functions.php
update translations
[tt-rss.git] / functions.php
index 23144f535b12ad4b59aa66a96c39e15b8688e17b..648ab3438657dc4a4ef36c60846a3c6810469ec4 100644 (file)
        }
 
        function printFeedEntry($feed_id, $class, $feed_title, $unread, $icon_file, $link,
-               $rtl_content = false, $last_updated = false, $last_error = false) {
+               $rtl_content = false, $last_updated = false, $last_error = false,
+               $fg_content = false, $bg_content = false) {
 
                if (file_exists($icon_file) && filesize($icon_file) > 0) {
                                $feed_icon = "<img id=\"FIMG-$feed_id\" src=\"$icon_file\">";
                $feed = "<a title=\"$link_title\" id=\"FEEDL-$feed_id\" 
                        href=\"javascript:viewfeed('$feed_id', '', false, '', false, 0);\">$feed_title</a>";
 
+/*             if ($feed_id < -10) {
+                       $bg_color = "#00ccff";
+                       $fg_color = "white";
+               }
+
+               if ($fg_color || $bg_color) {
+                       $color_str = "<div class='labelColorIndicator'
+                               style='color : $fg_color; background-color : $bg_color'>l</div>";
+               } 
+
+               print $color_str; */
+
                print "<li id=\"FEEDR-$feed_id\" class=\"$class\">";
                if (get_pref($link, 'ENABLE_FEED_ICONS')) {
                        print "$feed_icon";
                        print "<div class=\"feedExtInfo\">
                                <span id=\"FLUPD-$feed_id\">$last_updated ($total total) $error_notify_msg</span></div>";
                }
-                        
+
                print "</li>";
 
        }
 
                        if (!$_SESSION["uid"] || !validate_session($link)) {
                                render_login_form($link, $mobile);
+                               //header("Location: login.php");
                                exit;
                        } else {
                                /* bump login timestamp */
                }
        }
        
+       function bool_to_sql_bool($s) {
+               if ($s) {
+                       return "true";
+               } else {
+                       return "false";
+               }
+       }
 
        function toggleEvenOdd($a) {
                if ($a == "even") 
                        
                                if ($cat_view) {
 
-                                       if ($feed > 0) {
-                                               $cat_qpart = "cat_id = '$feed'";
-                                       } else {
-                                               $cat_qpart = "cat_id IS NULL";
-                                       }
+                                       if ($feed >= 0) {
+
+                                               if ($feed > 0) {
+                                                       $cat_qpart = "cat_id = '$feed'";
+                                               } else {
+                                                       $cat_qpart = "cat_id IS NULL";
+                                               }
                                        
-                                       $tmp_result = db_query($link, "SELECT id 
-                                               FROM ttrss_feeds WHERE $cat_qpart AND owner_uid = " . 
-                                               $_SESSION["uid"]);
+                                               $tmp_result = db_query($link, "SELECT id 
+                                                       FROM ttrss_feeds WHERE $cat_qpart AND owner_uid = " . 
+                                                       $_SESSION["uid"]);
 
-                                       while ($tmp_line = db_fetch_assoc($tmp_result)) {
+                                               while ($tmp_line = db_fetch_assoc($tmp_result)) {
+
+                                                       $tmp_feed = $tmp_line["id"];
+
+                                                       db_query($link, "UPDATE ttrss_user_entries 
+                                                               SET unread = false,last_read = NOW() 
+                                                               WHERE feed_id = '$tmp_feed' AND owner_uid = " . $_SESSION["uid"]);
+                                               }
+                                       } else if ($feed == -2) {
 
-                                               $tmp_feed = $tmp_line["id"];
 
                                                db_query($link, "UPDATE ttrss_user_entries 
-                                                       SET unread = false,last_read = NOW() 
-                                                       WHERE feed_id = '$tmp_feed' AND owner_uid = " . $_SESSION["uid"]);
+                                                       SET unread = false,last_read = NOW() WHERE (SELECT COUNT(*) 
+                                                               FROM ttrss_user_labels2 WHERE article_id = ref_id) > 0 
+                                                       AND unread = true AND owner_uid = " . $_SESSION["uid"]);
                                        }
 
                                } else if ($feed > 0) {
                                        $label_id = -$feed - 11;
 
                                        db_query($link, "UPDATE ttrss_user_entries, ttrss_user_labels2 
-                                               SET unread = false WHERE label_id = '$label_id' AND unread = true
+                                               SET unread = false, last_read = NOW() 
+                                                       WHERE label_id = '$label_id' AND unread = true
                                                        AND owner_uid = '".$_SESSION["uid"]."' AND ref_id = article_id");
 
                                }
        }
 
        function get_script_dt_add() {
-               if (strpos(VERSION, ".99") === false) {
+/*             if (strpos(VERSION, ".99") === false) {
                        return VERSION;
                } else {
                        return time();
-               }
+               } */
+               return time();
        }
 
        function get_pgsql_version($link) {
                print "<param key=\"hide_read_feeds\" value=\"" . 
                        (int) get_pref($link, "HIDE_READ_FEEDS") . "\"/>";
 
+               print "<param key=\"enable_feed_cats\" value=\"" . 
+                       (int) get_pref($link, "ENABLE_FEED_CATS") . "\"/>";
+
                print "<param key=\"feeds_sort_by_unread\" value=\"" . 
                        (int) get_pref($link, "FEEDS_SORT_BY_UNREAD") . "\"/>";
 
 
                print "<param key=\"sync_counters\" value=\"1\"/>";
 
+               print "<param key=\"offline_enabled\" value=\"".
+                       (int) get_pref($link, "ENABLE_OFFLINE_READING") . "\"/>";
+
+               $result = db_query($link, "SELECT COUNT(*) AS cf FROM
+                       ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]);
+
+               $num_feeds = db_fetch_result($result, 0, "cf");
+
+               print "<param key=\"num_feeds\" value=\"".
+                       (int)$num_feeds. "\"/>";
+
                print "</init-params>";
        }
 
        function print_runtime_info($link) {
                print "<runtime-info>";
 
+               $result = db_query($link, "SELECT COUNT(*) AS cf FROM
+                       ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]);
+
+               $num_feeds = db_fetch_result($result, 0, "cf");
+
+               print "<param key=\"num_feeds\" value=\"".
+                       (int)$num_feeds. "\"/>";
+
                if (ENABLE_UPDATE_DAEMON) {
                        print "<param key=\"daemon_is_running\" value=\"".
                                sprintf("%d", file_is_locked("update_daemon.lock")) . "\"/>";
                                $feed_title = "?";
                        }
 
-                       if ($feed < -10) error_reporting (0);
-
                        $content_query_part = "content as content_preview,";
 
                        if (preg_match("/^-?[0-9][0-9]*$/", $feed) != false) {
        }
 
        function print_headline_subtoolbar($link, $feed_site_url, $feed_title, 
-                       $bottom = false, $rtl_content = false, $feed_id = 0,
-                       $is_cat = false, $search = false, $match_on = false,
-                       $search_mode = false, $offset = 0, $limit = 0, 
-                       $dashboard_menu = 0, $disable_feed = 0, $feed_small_icon = 0) {
-
-                       $user_page_offset = $offset + 1;
-
-                       if (!$bottom) {
-                               $class = "headlinesSubToolbar";
-                               $tid = "headlineActionsTop";
-                       } else {
-                               $class = "headlinesSubToolbar";
-                               $tid = "headlineActionsBottom";
-                       }
+                       $feed_id, $is_cat, $search, $match_on,
+                       $search_mode) {
 
-                       print "<nobr><table class=\"$class\" id=\"$tid\"
-                               width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tr>";
-
-                       if ($rtl_content) {
-                               $rtl_cpart = "RTL";
-                       } else {
-                               $rtl_cpart = "";
-                       }
+                       print "<div class=\"headlinesSubToolbar\">";
 
                        $page_prev_link = "javascript:viewFeedGoPage(-1)";
                        $page_next_link = "javascript:viewFeedGoPage(1)";
 
                        }
 
-                       print "<td class=\"headlineActions$rtl_cpart\">";
+                       print "<div id=\"subtoolbar_ftitle\">";
 
+                       if ($feed_site_url) {
+                               if (!$bottom) {
+                                       $target = "target=\"_blank\"";
+                               }
+                               print "<a $target href=\"$feed_site_url\">".
+                                       truncate_string($feed_title,30)."</a>";
+                       } else {
+                               print $feed_title;
+                       }
+
+                       if ($search) {
+                               $search_q = "&q=$search&m=$match_on&smode=$search_mode";
+                       }
+
+                       print "
+                               <a target=\"_blank\" 
+                                       href=\"backend.php?op=rss&id=$feed_id&is_cat=$is_cat$search_q\">
+                                       <img class=\"noborder\" 
+                                               alt=\"".__('Generated feed')."\" src=\"images/feed-icon-12x12.png\">
+                                               </a>";
+
+                       print "</div>";
 
                        print __('Select:')."
                                <a href=\"$sel_all_link\">".__('All')."</a>,
                        //print "<li><span class=\"insensitive\">--------</span></li>";
                        print "<li class=\"insensitive\">".__('Assign label:')."</li>";
 
-                       print "<li onclick=\"javascript:addLabel()\">
-                               &nbsp;&nbsp;".__("Create label...")."</li>";
-
-                       $result = db_query($link, "SELECT id, caption FROM ttrss_labels2 WHERE
-                               owner_uid = '".$_SESSION["uid"]."' ORDER BY caption");
-
-                       while ($line = db_fetch_assoc($result)) {
-
-                               $label_id = $line["id"];
-                               $label_caption = $line["caption"];
-
-                               if ($feed_id < -10 && $feed_id == -11-$label_id) {
-                                       print "<li onclick=\"javascript:selectionRemoveLabel($label_id)\">
-                                               &nbsp;&nbsp;$label_caption ".__('(remove)')."</li>";
-                               } else {                                        
-                                       print "<li onclick=\"javascript:selectionAssignLabel($label_id)\">
-                                               &nbsp;&nbsp;$label_caption</li>";
-                               }
-                       }
+                       print_labels_headlines_dropdown($link, $feed_id);
 
                        print "</ul>";
-                       print "</td>"; 
-       
-                       print "<td class=\"headlineTitle$rtl_cpart\">";
-
-                       print "<span id=\"subtoolbar_ftitle\">";
-
-                       if ($feed_site_url) {
-                               if (!$bottom) {
-                                       $target = "target=\"_blank\"";
-                               }
-                               print "<a $target href=\"$feed_site_url\">".
-                                       truncate_string($feed_title,30)."</a>";
-                       } else {
-                               print $feed_title;
-                       }
-
-                       if ($search) {
-                               $search_q = "&q=$search&m=$match_on&smode=$search_mode";
-                       }
-
-                       if ($user_page_offset > 1) {
-                               print " [$user_page_offset] ";
-                       }
-
-                       if (!$bottom && !$disable_feed) {
-                               print "
-                                       <a target=\"_blank\" 
-                                               href=\"backend.php?op=rss&id=$feed_id&is_cat=$is_cat$search_q\">
-                                               <img class=\"noborder\" 
-                                                       alt=\"".__('Generated feed')."\" src=\"images/feed-icon-12x12.png\">
-                                       </a>";
-                       } else if ($feed_small_icon) {
-                               print "<img class=\"noborder\" alt=\"\" src=\"images/$feed_small_icon\">";
-                       }
-
-                       print "</span>";
-
-                       print "</td>";
-                       print "</tr></table></nobr>";
 
+                       print "</div>";
                }
 
        function printCategoryHeader($link, $cat_id, $hidden = false, $can_browse = true) {
                if (!$tags) {
 
 
-                               $result = db_query($link, "SELECT id,caption FROM                                       
+                               $result = db_query($link, "SELECT * FROM
                                        ttrss_labels2 WHERE owner_uid = '$owner_uid' ORDER by caption");
                
                                if (db_num_rows($result) > 0) {
        
                                        printFeedEntry($label_id, 
                                                $class, $line["caption"], 
-                                               $count, "images/label.png", $link);
+                                               $count, "images/label.png", $link, 
+                                               false, false, false,
+                                               $line['fg_color'], $line['bg_color']);
                
                                }
 
                                print "<div clear='both'>" . $line["title"] . "$entry_author</div>";
                        }
 
-                       $tags = get_article_tags($link, $id);
-       
-                       $tags_str = "";
-                       $tags_nolinks_str = "";
-                       $f_tags_str = "";
-
-                       $num_tags = 0;
-
-                       if ($_SESSION["theme"] == "3pane") {
-                               $tag_limit = 3;
-                       } else {
-                               $tag_limit = 6;
-                       }
-
-                       foreach ($tags as $tag) {
-                               $num_tags++;
-                               $tag_escaped = str_replace("'", "\\'", $tag);
-
-                               $tag_str = "<a href=\"javascript:viewfeed('$tag_escaped')\">$tag</a>, ";
-                               
-                               if ($num_tags == $tag_limit) {
-                                       $tags_str .= "&hellip;";
-                                       $tags_nolinks_str .= "&hellip;";
-
-                               } else if ($num_tags < $tag_limit) {
-                                       $tags_str .= $tag_str;
-                                       $tags_nolinks_str .= "$tag, ";
-                               }
-                               $f_tags_str .= $tag_str;
-                       }
-
-                       $tags_str = preg_replace("/, $/", "", $tags_str);
-                       $tags_nolinks_str = preg_replace("/, $/", "", $tags_nolinks_str);
-                       $f_tags_str = preg_replace("/, $/", "", $f_tags_str);
-
-                       $all_tags_div = "<span class='cdmAllTagsCtr'>&hellip;<div class='cdmAllTags'>All Tags: $f_tags_str</div></span>";
-                       $tags_str = preg_replace("/\.\.\.$/", "$all_tags_div", $tags_str);
+                       $tags_str = format_tags_string(get_article_tags($link, $id), $id);
 
                        if (!$entry_comments) $entry_comments = "&nbsp;"; # placeholder
 
-                       if (!$tags_str) $tags_str = '<span class="tagList">'.__('no tags').'</span>';
-                       if (!$tags_nolinks_str) $tags_nolinks_str = '<span class="tagList">'.__('no tags').'</span>';
-
                        print "<div style='float : right'>
                                        <img src='images/tag.png' class='tagsPic' alt='Tags' title='Tags'>";
 
                        if (!$zoom_mode) {
-                               print "$tags_str 
+                               print "<span id=\"ATSTR-$id\">$tags_str</span>
                                        <a title=\"".__('Edit tags for this article')."\" 
                                        href=\"javascript:editArticleTags($id, $feed_id)\">(+)</a>";
 
                                                style=\"cursor : pointer\" style=\"cursor : pointer\"
                                                onclick=\"zoomToArticle($id)\"
                                                alt='Zoom' title='".__('Show article summary in new window')."'>";
-                       } else {
-                               print "$tags_nolinks_str";
                        }
                        print "</div>";
                        print "<div clear='both'>$entry_comments</div>";
 
                        print "<div class=\"postContent\">";
 
-                       #print "<div id=\"allEntryTags\">".__('Tags:')." $f_tags_str</div>";
-
                        $article_content = sanitize_rss($link, $line["content"]);
 
                        if (get_pref($link, 'OPEN_LINKS_IN_NEW_WINDOW')) {
                                return;
                        }
 
-                       print_headline_subtoolbar($link, $feed_site_url, $feed_title, false, 
-                               $rtl_content, $feed, $cat_view, $search, $match_on, $search_mode, 
-                               $offset, $limit);
+                       print_headline_subtoolbar($link, $feed_site_url, $feed_title,
+                               $feed, $cat_view, $search, $match_on, $search_mode);
 
                        print "<div id=\"headlinesInnerContainer\" onscroll=\"headlines_scroll_handler()\">";
                }
                                $feed_id = $line["feed_id"];
 
                                $labels = get_article_labels($link, $id);
-                               $labels_str = "<span id=\"HLLCTR-$id\">";
-
-                               foreach ($labels as $l) {
-                                       $labels_str .= "<span 
-                                               class='hlLabelRef'>".
-                                               $l[1]."</span>";
-                               }
 
+                               $labels_str = "<span id=\"HLLCTR-$id\">";
+                               $labels_str .= format_article_labels($labels, $id);
                                $labels_str .= "</span>";
-
+       
                                if (count($topmost_article_ids) < 5) {
                                        array_push($topmost_article_ids, $id);
                                }
                                                alt='Zoom' 
                                                title='".__('Show article summary in new window')."'></span>";
 
-                                       $tags = get_article_tags($link, $id);
-
-                                       $tags_str = "";
-                                       $full_tags_str = "";
-                                       $num_tags = 0;
-
-                                       foreach ($tags as $tag) {
-                                               $num_tags++;
-                                               $full_tags_str .= "<a href=\"javascript:viewfeed('$tag')\">$tag</a>, "; 
-                                               if ($num_tags < 5) {
-                                                       $tags_str .= "<a href=\"javascript:viewfeed('$tag')\">$tag</a>, "; 
-                                               } else if ($num_tags == 5) {
-                                                       $tags_str .= "&hellip;";
-                                               }
-                                       }
-
-                                       $tags_str = preg_replace("/, $/", "", $tags_str);
-                                       $full_tags_str = preg_replace("/, $/", "", $full_tags_str);
-
-                                       $all_tags_div = "<span class='cdmAllTagsCtr'>&hellip;<div class='cdmAllTags'>All Tags: $full_tags_str</div></span>";
-
-                                       $tags_str = preg_replace("/\.\.\.$/", "$all_tags_div", $tags_str);
-
-
-                                       if ($tags_str == "") $tags_str = "no tags";
+                                       $tags_str = format_tags_string(get_article_tags($link, $id), $id);
 
 //                                     print "<img src='images/tag.png' class='markedPic'>";
 
                                        print "<span class='s1'>
-                                               <img class='tagsPic' src='images/tag.png' alt='Tags' 
-                                                       title='Tags'> $tags_str <a title=\"Edit tags for this article\" 
-                                                       href=\"javascript:editArticleTags($id, $feed_id, true)\">(+)</a>";
+                                               <img class='tagsPic' src='images/tag.png' alt='Tags' title='Tags'>
+                                               <span id=\"ATSTR-$id\">$tags_str</span>
+                                               <a title=\"".__('Edit tags for this article')."\" 
+                                               href=\"javascript:editArticleTags($id, $feed_id, true)\">(+)</a>";
 
                                        print "</span>";
 
        function ccache_find($link, $feed_id, $owner_uid, $is_cat = false, 
                $no_update = false) {
 
+               if (!is_numeric($feed_id)) return;
+
                if (!$is_cat) {
                        $table = "ttrss_counters_cache";
                } else {
        function ccache_update($link, $feed_id, $owner_uid, $is_cat = false, 
                $update_pcat = true) {
 
+               if (!is_numeric($feed_id)) return;
+
                $prev_unread = ccache_find($link, $feed_id, $owner_uid, $is_cat, true);
 
                /* When updating a label, all we need to do is recalculate feed counters
 
        function get_article_labels($link, $id) {
                $result = db_query($link, 
-                       "SELECT DISTINCT label_id,caption 
+                       "SELECT DISTINCT label_id,caption,fg_color,bg_color 
                                FROM ttrss_labels2, ttrss_user_labels2 
                        WHERE id = label_id 
                                AND article_id = '$id' 
                $rv = array();
 
                while ($line = db_fetch_assoc($result)) {
-                       $rk = array($line["label_id"], $line["caption"]);
+                       $rk = array($line["label_id"], $line["caption"], $line["fg_color"],
+                               $line["bg_color"]);
                        array_push($rv, $rk);
                }
 
 
                db_query($link, "COMMIT");
        }
+
+       function label_create($link, $caption) {
+
+               db_query($link, "BEGIN");
+
+               $result = false;
+
+               $result = db_query($link, "SELECT id FROM ttrss_labels2
+                       WHERE caption = '$caption' AND owner_uid =  ". $_SESSION["uid"]);
+
+               if (db_num_rows($result) == 0) {
+                       $result = db_query($link,
+                               "INSERT INTO ttrss_labels2 (caption,owner_uid) 
+                                       VALUES ('$caption', '".$_SESSION["uid"]."')");
+
+                       $result = db_affected_rows($link, $result) != 0;
+               }
+
+               db_query($link, "COMMIT");
+
+               return $result;
+       }
+
+       function print_labels_headlines_dropdown($link, $feed_id) {
+               print "<li onclick=\"javascript:addLabel()\">
+                       &nbsp;&nbsp;".__("Create label...")."</li>";
+
+               $result = db_query($link, "SELECT id, caption FROM ttrss_labels2 WHERE
+                       owner_uid = '".$_SESSION["uid"]."' ORDER BY caption");
+
+               while ($line = db_fetch_assoc($result)) {
+
+                       $label_id = $line["id"];
+                       $label_caption = $line["caption"];
+
+                       if ($feed_id < -10 && $feed_id == -11-$label_id) {
+                               print "<li id=\"LHDL-$id\" 
+                                       onclick=\"javascript:selectionRemoveLabel($label_id)\">
+                                       &nbsp;&nbsp;$label_caption ".__('(remove)')."</li>";
+                       } else {                                        
+                               print "<li id=\"LHDL-$id\" 
+                                       onclick=\"javascript:selectionAssignLabel($label_id)\">
+                                       &nbsp;&nbsp;$label_caption</li>";
+                       }
+               }
+       }
+
+       function format_tags_string($tags, $id) {
+
+               $tags_str = "";
+               $tags_nolinks_str = "";
+
+               $num_tags = 0;
+
+               if ($_SESSION["theme"] == "3pane") {
+                       $tag_limit = 3;
+               } else {
+                       $tag_limit = 6;
+               }
+
+               $formatted_tags = array();
+
+               foreach ($tags as $tag) {
+                       $num_tags++;
+                       $tag_escaped = str_replace("'", "\\'", $tag);
+
+                       $tag_str = "<a href=\"javascript:viewfeed('$tag_escaped')\">$tag</a>";
+
+                       array_push($formatted_tags, $tag_str);
+                               
+                       if ($num_tags == $tag_limit) {
+                               break;
+                       }
+               }
+
+               $tags_str = implode(", ", $formatted_tags);
+
+               if ($num_tags < count($tags)) {
+                       $tags_str .= ", &hellip;";
+               }
+
+               if ($num_tags == 0) {
+                       $tags_str = __("no tags");
+               }
+
+               return $tags_str;
+
+       }
+
+       function format_article_labels($labels, $id) {
+
+               $labels_str = "";
+
+               foreach ($labels as $l) {
+                       $labels_str .= sprintf("<span class='hlLabelRef' 
+                               style='color : %s; background-color : %s'>%s</span>",
+                                       $l[2], $l[3], $l[1]);
+                       }
+
+               return $labels_str;
+
+       }
 ?>