param = db_escape_string($_REQUEST["param"]); print ""; return true; } return false; } function after() { print ""; } function importOpml() { header("Content-Type: text/html"); # required for iframe print "
"; $owner_uid = $_SESSION["uid"]; db_query($this->link, "BEGIN"); /* create Imported feeds category just in case */ $result = db_query($this->link, "SELECT id FROM ttrss_feed_categories WHERE title = 'Imported feeds' AND owner_uid = '$owner_uid' LIMIT 1"); if (db_num_rows($result) == 0) { db_query($this->link, "INSERT INTO ttrss_feed_categories (title,owner_uid) VALUES ('Imported feeds', '$owner_uid')"); } db_query($this->link, "COMMIT"); /* Handle OPML import by DOMXML/DOMDocument */ print ""; print "
"; print "
"; print ""; print "
"; print ""; //return; } function editPrefProfiles() { print "
"; print "
"; $result = db_query($this->link, "SELECT title,id FROM ttrss_settings_profiles WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title"); print "
"; print "
"; print ""; print ""; #odd print ""; if (!$_SESSION["profile"]) { $is_active = __("(active)"); } else { $is_active = ""; } print ""; print ""; $lnum = 1; while ($line = db_fetch_assoc($result)) { $class = ($lnum % 2) ? "even" : "odd"; $profile_id = $line["id"]; $this_row_id = "id=\"FCATR-$profile_id\""; print ""; $edit_title = htmlspecialchars($line["title"]); print ""; if ($_SESSION["profile"] == $line["id"]) { $is_active = __("(active)"); } else { $is_active = ""; } print ""; print ""; ++$lnum; } print "
" . __("Default profile") . " $is_active
" . $edit_title . " $is_active
"; print "
"; print "
"; print "
"; print ""; print "
"; } function pubOPMLUrl() { print "".__('Public OPML URL').""; print "link); print __("Your Public OPML URL is:"); print "
"; print "$url_path"; print "
"; print "
"; print " "; print ""; print "
"; print "]]>
"; //return; } function explainError() { print "".__('Notice').""; print ""; if ($this->param == 1) { print __("Update daemon is enabled in configuration, but daemon process is not running, which prevents all feeds from updating. Please start the daemon process or contact instance owner."); $stamp = (int) file_get_contents(LOCK_DIRECTORY . "/update_daemon.stamp"); print "

" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp); } if ($this->param == 3) { print __("Update daemon is taking too long to perform a feed update. This could indicate a problem like crash or a hang. Please check the daemon process or contact instance owner."); $stamp = (int) file_get_contents(LOCK_DIRECTORY . "/update_daemon.stamp"); print "

" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp); } print ""; print "

"; print ""; print "
"; print "]]>
"; //return; } function quickAddFeed() { print ""; print ""; print "
".__("Feed")."
"; print "
"; print ""; print "
"; if (get_pref($this->link, 'ENABLE_FEED_CATS')) { print __('Place in category:') . " "; print_feed_cat_select($this->link, "cat", false, 'dojoType="dijit.form.Select"'); } print "
"; print ''; print ""; print "
"; print ""; print "
"; //return; } function feedBrowser() { $browser_search = db_escape_string($_REQUEST["search"]); print ""; print ""; print "
"; print " "; print __("limit:"); print " "; print "
"; $owner_uid = $_SESSION["uid"]; print ""; print "
"; } function search() { $this->params = explode(":", db_escape_string($_REQUEST["param"]), 2); $active_feed_id = sprintf("%d", $this->params[0]); $is_cat = $this->params[1] != "false"; print "
".__('Look for')."
"; print "
"; if (!SPHINX_ENABLED) { print ""; print " " . __('match on')." "; $search_fields = array( "title" => __("Title"), "content" => __("Content"), "both" => __("Title or content")); print_select_hash("match_on", 3, $search_fields, 'dojoType="dijit.form.Select"'); } else { print ""; } print "
".__('Limit search to:')." "; print ""; print "
"; print "
"; if (!SPHINX_ENABLED) { print "
Search syntax
"; } print "
"; } function quickAddFilter() { $active_feed_id = db_escape_string($_REQUEST["param"]); print ""; print ""; print ""; $result = db_query($this->link, "SELECT id,description FROM ttrss_filter_types ORDER BY description"); $filter_types = array(); while ($line = db_fetch_assoc($result)) { //array_push($filter_types, $line["description"]); $filter_types[$line["id"]] = __($line["description"]); } print "
".__("Match")."
"; print "
"; print ""; $filter_params = array( "before" => __("before"), "after" => __("after")); print_select_hash("filter_date_modifier", "before", $filter_params, 'dojoType="dijit.form.Select"'); print " "; print ""; print ""; print " "; print ""; print "
" . __("on field") . " "; print_select_hash("filter_type", 1, $filter_types, 'onchange="filterDlgCheckType(this)" dojoType="dijit.form.Select"'); print "
"; print __("in") . " "; print_feed_select($this->link, "feed_id", $active_feed_id, 'dojoType="dijit.form.FilteringSelect"'); print "
"; print "
".__("Perform Action")."
"; print "
"; print ""; print ""; print " " . __("with parameters:") . " "; print ""; print_label_select($this->link, "action_param_label", $action_param, 'id="filterDlg_actionParamLabel" dojoType="dijit.form.Select"'); print ""; print " "; // tiny layout hack print "
"; print "
".__("Options")."
"; print "
"; print "
"; print " "; print "
"; print "
"; print " "; print " "; print ""; print "
"; } function inactiveFeeds() { if (DB_TYPE == "pgsql") { $interval_qpart = "NOW() - INTERVAL '3 months'"; } else { $interval_qpart = "DATE_SUB(NOW(), INTERVAL 3 MONTH)"; } $result = db_query($this->link, "SELECT ttrss_feeds.title, ttrss_feeds.site_url, ttrss_feeds.feed_url, ttrss_feeds.id, MAX(updated) AS last_article FROM ttrss_feeds, ttrss_entries, ttrss_user_entries WHERE (SELECT MAX(updated) FROM ttrss_entries, ttrss_user_entries WHERE ttrss_entries.id = ref_id AND ttrss_user_entries.feed_id = ttrss_feeds.id) < $interval_qpart AND ttrss_feeds.owner_uid = ".$_SESSION["uid"]." AND ttrss_user_entries.feed_id = ttrss_feeds.id AND ttrss_entries.id = ref_id GROUP BY ttrss_feeds.title, ttrss_feeds.id, ttrss_feeds.site_url, ttrss_feeds.feed_url ORDER BY last_article"); print __("These feeds have not been updated with new content for 3 months (oldest first):"); print "
"; print ""; $lnum = 1; while ($line = db_fetch_assoc($result)) { $class = ($lnum % 2) ? "even" : "odd"; $feed_id = $line["id"]; $this_row_id = "id=\"FUPDD-$feed_id\""; print ""; $edit_title = htmlspecialchars($line["title"]); print ""; print ""; print ""; ++$lnum; } print "
"; print "". htmlspecialchars($line["title"]).""; print ""; print make_local_datetime($this->link, $line['last_article'], false); print "
"; print "
"; print "
"; print "
"; print " "; print "
"; print ""; print "
"; } function feedsWithErrors() { print __("These feeds have not been updated because of errors:"); $result = db_query($this->link, "SELECT id,title,feed_url,last_error,site_url FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]); print "
"; print ""; $lnum = 1; while ($line = db_fetch_assoc($result)) { $class = ($lnum % 2) ? "even" : "odd"; $feed_id = $line["id"]; $this_row_id = "id=\"FUPDD-$feed_id\""; print ""; $edit_title = htmlspecialchars($line["title"]); print ""; print ""; print ""; ++$lnum; } print "
"; print "". htmlspecialchars($line["title"]).": "; print ""; print htmlspecialchars($line["last_error"]); print ""; print "
"; print "
"; print "
"; print "
"; print " "; print "
"; print ""; print "
"; } function editArticleTags() { print __("Tags for this article (separated by commas):")."
"; $tags = get_article_tags($this->link, $this->param); $tags_str = join(", ", $tags); print "param\">"; print ""; print ""; print "
"; print "
"; print "
"; print "
"; print " "; print ""; print "
"; } function printTagCloud() { print "".__('Tag Cloud').""; print ""; // from here: http://www.roscripts.com/Create_tag_cloud-71.html $query = "SELECT tag_name, COUNT(post_int_id) AS count FROM ttrss_tags WHERE owner_uid = ".$_SESSION["uid"]." GROUP BY tag_name ORDER BY count DESC LIMIT 50"; $result = db_query($this->link, $query); $tags = array(); while ($line = db_fetch_assoc($result)) { $tags[$line["tag_name"]] = $line["count"]; } if( count($tags) == 0 ){ return; } ksort($tags); $max_size = 32; // max font size in pixels $min_size = 11; // min font size in pixels // largest and smallest array values $max_qty = max(array_values($tags)); $min_qty = min(array_values($tags)); // find the range of values $spread = $max_qty - $min_qty; if ($spread == 0) { // we don't want to divide by zero $spread = 1; } // set the font-size increment $step = ($max_size - $min_size) / ($spread); // loop through the tag array foreach ($tags as $key => $value) { // calculate font-size // find the $value in excess of $min_qty // multiply by the font-size increment ($size) // and add the $min_size set above $size = round($min_size + (($value - $min_qty) * $step)); $key_escaped = str_replace("'", "\\'", $key); echo "' . $key . ' '; } print ""; print "
"; print ""; print "
"; print "]]>
"; } function printTagSelect() { print "" . __('Select item(s) by tags') . ""; print " Any "; print " All "; print " tags."; print ""; print "
"; print ""; print " "; print ""; print "
"; print "]]>
"; } function generatedFeed() { print "".__('View as RSS').""; print "params = explode(":", $this->param, 3); $feed_id = db_escape_string($this->params[0]); $is_cat = (bool) $this->params[1]; $key = get_feed_access_key($this->link, $feed_id, $is_cat); $url_path = htmlspecialchars($this->params[2]) . "&key=" . $key; print __("You can view this feed as RSS using the following URL:"); print "
"; print "$url_path"; print "
"; print "
"; print " "; print ""; print "
"; print "]]>
"; //return; } function newVersion() { $version_data = check_for_update($this->link); $version = $version_data['version']; $id = $version_data['version_id']; print "
"; print T_sprintf("New version of Tiny Tiny RSS is available (%s).", "$version"); print "
"; $details = "http://tt-rss.org/redmine/versions/show/$id"; $download = "http://tt-rss.org/#Download"; print "
"; print ""; print ""; print ""; print "
"; } function customizeCSS() { $value = get_pref($this->link, "USER_STYLESHEET"); $value = str_replace("
", "\n", $value); print T_sprintf("You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline.", "tt-rss.css"); print ""; print ""; print ""; print "
"; print ""; print "
"; print "
"; print " "; print ""; print "
"; } function addInstance() { print ""; print ""; print "
".__("Instance")."
"; print "
"; /* URL */ print __("URL:") . " "; print ""; print "
"; $access_key = sha1(uniqid(rand(), true)); /* Access key */ print __("Access key:") . " "; print ""; print "

" . __("Use one access key for both linked instances."); print "

"; print "
"; return; } } ?>