function print_runtime_info($link) { print "<runtime-info>"; $result = db_query($link, "SELECT COUNT(*) AS cf FROM\n\t\t\tttrss_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=\"" . (int) file_is_locked("update_daemon.lock") . "\"/>"; if (time() - $_SESSION["daemon_stamp_check"] > 30) { $stamp = (int) read_stampfile("update_daemon.stamp"); // print "<param key=\"daemon_stamp_delta\" value=\"$stamp_delta\"/>"; if ($stamp) { $stamp_delta = time() - $stamp; if ($stamp_delta > 1800) { $stamp_check = 0; } else { $stamp_check = 1; $_SESSION["daemon_stamp_check"] = time(); } print "<param key=\"daemon_stamp_ok\" value=\"{$stamp_check}\"/>"; $stamp_fmt = date("Y.m.d, G:i", $stamp); print "<param key=\"daemon_stamp\" value=\"{$stamp_fmt}\"/>"; } } } if (CHECK_FOR_NEW_VERSION && $_SESSION["access_level"] >= 10) { if ($_SESSION["last_version_check"] + 86400 + rand(-1000, 1000) < time()) { $new_version_details = check_for_update($link); print "<param key=\"new_version_available\" value=\"" . sprintf("%d", $new_version_details != "") . "\"/>"; $_SESSION["last_version_check"] = time(); } } // print "<param key=\"new_version_available\" value=\"1\"/>"; print "</runtime-info>"; }
function module_popup_dialog($link) { $id = $_REQUEST["id"]; $param = db_escape_string($_REQUEST["param"]); if ($id == "importOpml") { print "<div id=\"infoBoxTitle\">" . __('OPML Import') . "</div>"; print "<div class=\"infoBoxContents\">"; print "<div class=\"prefFeedCatHolder\">"; $owner_uid = $_SESSION["uid"]; db_query($link, "BEGIN"); /* create Imported feeds category just in case */ $result = db_query($link, "SELECT id FROM\n\t\t\t\tttrss_feed_categories WHERE title = 'Imported feeds' AND\n\t\t\t\towner_uid = '{$owner_uid}' LIMIT 1"); if (db_num_rows($result) == 0) { db_query($link, "INSERT INTO ttrss_feed_categories\n\t\t\t\t\t(title,owner_uid) \n\t\t\t\t\t\tVALUES ('Imported feeds', '{$owner_uid}')"); } db_query($link, "COMMIT"); /* Handle OPML import by DOMXML/DOMDocument */ if (function_exists('domxml_open_file')) { print "<ul class='nomarks'>"; print "<li>" . __("Importing using DOMXML.") . "</li>"; require_once "modules/opml_domxml.php"; opml_import_domxml($link, $owner_uid); print "</ul>"; } else { if (PHP_VERSION >= 5) { print "<ul class='nomarks'>"; print "<li>" . __("Importing using DOMDocument.") . "</li>"; require_once "modules/opml_domdoc.php"; opml_import_domdoc($link, $owner_uid); print "</ul>"; } else { print_error(__("DOMXML extension is not found. It is required for PHP versions below 5.")); } } print "</div>"; print "<div align='center'>"; print "<button onclick=\"return opmlImportDone()\">" . __('Close this window') . "</button>"; print "</div>"; print "<script type=\"text/javascript\">"; print "parent.opmlImportHandler(this)"; print "</script>"; print "</div></div>"; return; } if ($id == "editPrefProfiles") { print "<div id=\"infoBoxTitle\">" . __('Settings Profiles') . "</div>"; print "<div class=\"infoBoxContents\">"; print "<div><input id=\"fadd_profile\" \n\t\t\t\t\tonkeypress=\"return filterCR(event, addPrefProfile)\"\n\t\t\t\t\tsize=\"40\">\n\t\t\t\t\t<button onclick=\"javascript:addPrefProfile()\">" . __('Create profile') . "</button></div>"; print "<p>"; $result = db_query($link, "SELECT title,id FROM ttrss_settings_profiles\n\t\t\t\tWHERE owner_uid = " . $_SESSION["uid"] . " ORDER BY title"); print __('Select:') . " \n\t\t\t\t<a href=\"javascript:selectPrefRows('fcat', true)\">" . __('All') . "</a>,\n\t\t\t\t<a href=\"javascript:selectPrefRows('fcat', false)\">" . __('None') . "</a>"; print "<div class=\"prefFeedCatHolder\">"; print "<form id=\"profile_edit_form\" onsubmit=\"return false\">"; print "<table width=\"100%\" class=\"prefFeedCatList\" \n\t\t\t\tcellspacing=\"0\" id=\"prefFeedCatList\">"; print "<tr class=\"odd\" id=\"FCATR-0\">"; print "<td width='5%' align='center'><input \n\t\t\t\tonclick='toggleSelectPrefRow(this, \"fcat\");' \n\t\t\t\ttype=\"checkbox\" id=\"FCCHK-0\"></td>"; if (!$_SESSION["profile"]) { $is_active = __("(active)"); } else { $is_active = ""; } print "<td><span id=\"FCATT-0\">" . __("Default profile") . " {$is_active}</span></td>"; print "</tr>"; $lnum = 1; while ($line = db_fetch_assoc($result)) { $class = $lnum % 2 ? "even" : "odd"; $cat_id = $line["id"]; $this_row_id = "id=\"FCATR-{$cat_id}\""; print "<tr class=\"{$class}\" {$this_row_id}>"; $edit_title = htmlspecialchars($line["title"]); print "<td width='5%' align='center'><input \n\t\t\t\t\tonclick='toggleSelectPrefRow(this, \"fcat\");' \n\t\t\t\t\ttype=\"checkbox\" id=\"FCCHK-{$cat_id}\"></td>"; if ($_SESSION["profile"] == $line["id"]) { $is_active = __("(active)"); } else { $is_active = ""; } print "<td><span id=\"FCATT-{$cat_id}\">" . $edit_title . "</span> {$is_active}</td>"; print "</tr>"; ++$lnum; } print "</table>"; print "</form>"; print "</div>"; print "<div class='dlgButtons'>\n\t\t\t\t<div style='float : left'>\n\t\t\t\t<button onclick=\"return removeSelectedPrefProfiles()\">" . __('Remove') . "</button>\n\t\t\t\t<button onclick=\"return activatePrefProfile()\">" . __('Activate') . "</button>\n\t\t\t\t</div>"; print "<button onclick=\"return closeInfoBox()\">" . __('Close this window') . "</button>"; print "</div></div>"; return; } if ($id == "pubUrl") { print "<div id=\"infoBoxTitle\">" . __('Published Articles') . "</div>"; print "<div class=\"infoBoxContents\">"; $url_path = article_publish_url($link); print __("Your Published articles feed URL is:"); print "<div class=\"tagCloudContainer\">"; print "<a id='pub_feed_url' href='{$url_path}' target='_blank'>{$url_path}</a>"; print "</div>"; print "<div align='center'>"; print "<button onclick=\"return pubRegenKey()\">" . __('Generate new URL') . "</button> "; print "<input class=\"button\"\n\t\t\t\ttype=\"submit\" onclick=\"return closeInfoBox()\" \n\t\t\t\tvalue=\"" . __('Close this window') . "\">"; print "</div></div>"; return; } if ($id == "pubOPMLUrl") { print "<div id=\"infoBoxTitle\">" . __('Public OPML URL') . "</div>"; print "<div class=\"infoBoxContents\">"; $url_path = opml_publish_url($link); print __("Your Public OPML URL is:"); print "<div class=\"tagCloudContainer\">"; print "<a id='pub_opml_url' href='{$url_path}' target='_blank'>{$url_path}</a>"; print "</div>"; print "<div align='center'>"; print "<button onclick=\"return opmlRegenKey()\">" . __('Generate new URL') . "</button> "; print "<input class=\"button\"\n\t\t\t\ttype=\"submit\" onclick=\"return closeInfoBox()\" \n\t\t\t\tvalue=\"" . __('Close this window') . "\">"; print "</div></div>"; return; } if ($id == "explainError") { print "<div id=\"infoBoxTitle\">" . __('Notice') . "</div>"; print "<div class=\"infoBoxContents\">"; print "<div class=\"errorExplained\">"; if ($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) read_stampfile("update_daemon.stamp"); print "<p>" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp); } if ($param == 2) { $msg = check_for_update($link); if (!$msg) { print __("You are running the latest version of Tiny Tiny RSS. The fact that you are seeing this dialog is probably a bug."); } else { print $msg; } } if ($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) read_stampfile("update_daemon.stamp"); print "<p>" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp); } print "</div>"; print "<div align='center'>"; print "<input class=\"button\"\n\t\t\t\ttype=\"submit\" onclick=\"return closeInfoBox()\" \n\t\t\t\tvalue=\"" . __('Close this window') . "\">"; print "</div></div>"; return; } if ($id == "quickAddFeed") { print "<div id=\"infoBoxTitle\">" . __('Subscribe to Feed') . "</div>"; print "<div class=\"infoBoxContents\">"; print "<form id='feed_add_form' onsubmit='return false'>"; print "<input type=\"hidden\" name=\"op\" value=\"rpc\">"; print "<input type=\"hidden\" name=\"subop\" value=\"addfeed\">"; //print "<input type=\"hidden\" name=\"from\" value=\"tt-rss\">"; print "<div class=\"dlgSec\">" . __("Feed") . "</div>"; print "<div class=\"dlgSecCont\">"; print __("URL:") . " "; print "<input size=\"40\"\n\t\t\t\t\tonkeypress=\"return filterCR(event, subscribeToFeed)\"\n\t\t\t\t\tname=\"feed\" id=\"feed_url\"></td></tr>"; print "<br/>"; if (get_pref($link, 'ENABLE_FEED_CATS')) { print __('Place in category:') . " "; print_feed_cat_select($link, "cat"); } print "</div>"; print "<div id='fadd_login_container' style='display:none'>\n\t\n\t\t\t\t\t<div class=\"dlgSec\">" . __("Authentication") . "</div>\n\t\t\t\t\t<div class=\"dlgSecCont\">" . __('Login:'******'login' size=\"20\" \n\t\t\t\t\t\t\tonkeypress=\"return filterCR(event, subscribeToFeed)\"> " . __('Password:'******'password'\n\t\t\t\t\t\t\tname='pass' size=\"20\" \n\t\t\t\t\t\t\tonkeypress=\"return filterCR(event, subscribeToFeed)\">\n\t\t\t\t</div></div>"; print "<div style=\"clear : both\">\t\t\t\t\n\t\t\t\t<input type=\"checkbox\" id=\"fadd_login_check\" \n\t\t\t\t\t\tonclick='checkboxToggleElement(this, \"fadd_login_container\")'>\n\t\t\t\t\t<label for=\"fadd_login_check\">" . __('This feed requires authentication.') . "</div>"; print "</form>"; print "<div class=\"dlgButtons\">\n\t\t\t\t<button class=\"button\" id=\"fadd_submit_btn\"\n\t\t\t\t\tonclick=\"return subscribeToFeed()\">" . __('Subscribe') . "</button>\n\t\t\t\t<button onclick=\"return displayDlg('feedBrowser')\">" . __('More feeds') . "</button>\n\t\t\t\t<button onclick=\"return closeInfoBox()\">" . __('Cancel') . "</button></div>"; return; } if ($id == "feedBrowser") { print "<div id=\"infoBoxTitle\">" . __('Feed Browser') . "</div>"; print "<div class=\"infoBoxContents\">"; $browser_search = db_escape_string($_REQUEST["search"]); print "<form onsubmit='return false;' display='inline' \n\t\t\t\tname='feed_browser' id='feed_browser'>"; print "<input type=\"hidden\" name=\"op\" value=\"rpc\">"; print "<input type=\"hidden\" name=\"subop\" value=\"updateFeedBrowser\">"; print "\n\t\t\t\t<div style='float : right'>\n\t\t\t\t<img style='display : none' \n\t\t\t\t\tid='feed_browser_spinner' src='" . theme_image($link, 'images/indicator_white.gif') . "'>\n\t\t\t\t<input name=\"search\" size=\"20\" type=\"search\"\n\t\t\t\t\tonchange=\"javascript:updateFeedBrowser()\" value=\"{$browser_search}\">\n\t\t\t\t<button onclick=\"javascript:updateFeedBrowser()\">" . __('Search') . "</button>\n\t\t\t</div>"; print " <select name=\"mode\" onchange=\"updateFeedBrowser()\">\n\t\t\t\t<option value='1'>" . __('Popular feeds') . "</option>\n\t\t\t\t<option value='2'>" . __('Feed archive') . "</option>\n\t\t\t\t</select> "; print __("limit:"); print " <select name=\"limit\" onchange='updateFeedBrowser()'>"; foreach (array(25, 50, 100, 200) as $l) { $issel = $l == $limit ? "selected" : ""; print "<option {$issel}>{$l}</option>"; } print "</select> "; print "<p>"; $owner_uid = $_SESSION["uid"]; /* print __('Select:')." <a href=\"javascript:selectPrefRows('fbrowse', true)\">".__('All')."</a>, <a href=\"javascript:selectPrefRows('fbrowse', false)\">".__('None')."</a>"; */ print "<ul class='browseFeedList' id='browseFeedList'>"; print_feed_browser($link, $search, 25); print "</ul>"; print "<div align='center'>\n\t\t\t\t<button onclick=\"feedBrowserSubscribe()\">" . __('Subscribe') . "</button>\n\t\t\t\t<button style='display : none' id='feed_archive_remove' onclick=\"feedArchiveRemove()\">" . __('Remove') . "</button>\n\t\t\t\t<button onclick=\"closeInfoBox()\" >" . __('Cancel') . "</button></div>"; print "</div>"; return; } if ($id == "search") { print "<div id=\"infoBoxTitle\">" . __('Search') . "</div>"; print "<div class=\"infoBoxContents\">"; print "<form id='search_form' onsubmit='return false'>"; #$active_feed_id = db_escape_string($_REQUEST["param"]); $params = split(":", db_escape_string($_REQUEST["param"])); $active_feed_id = sprintf("%d", $params[0]); $is_cat = $params[1] == "true"; print "<div class=\"dlgSec\">" . __('Look for') . "</div>"; print "<div class=\"dlgSecCont\">"; print "<input onkeypress=\"return filterCR(event, search)\"\n\t\t\t\tname=\"query\" size=\"20\" type=\"search\"\tvalue=''>"; print " " . __('match on') . " "; $search_fields = array("title" => __("Title"), "content" => __("Content"), "both" => __("Title or content")); print_select_hash("match_on", 3, $search_fields); print "<br/>" . __('Limit search to:') . " "; print "<select name=\"search_mode\">\n\t\t\t\t<option value=\"all_feeds\">" . __('All feeds') . "</option>"; $feed_title = getFeedTitle($link, $active_feed_id); if (!$is_cat) { $feed_cat_title = getFeedCatTitle($link, $active_feed_id); } else { $feed_cat_title = getCategoryTitle($link, $active_feed_id); } if ($active_feed_id && !$is_cat) { print "<option selected value=\"this_feed\">{$feed_title}</option>"; } else { print "<option disabled>" . __('This feed') . "</option>"; } if ($is_cat) { $cat_preselected = "selected"; } if (get_pref($link, 'ENABLE_FEED_CATS') && ($active_feed_id > 0 || $is_cat)) { print "<option {$cat_preselected} value=\"this_cat\">{$feed_cat_title}</option>"; } else { //print "<option disabled>".__('This category')."</option>"; } print "</select>"; print "</div>"; print "</form>"; print "<div class=\"dlgButtons\">\n\t\t\t<button onclick=\"javascript:search()\">" . __('Search') . "</button>\n\t\t\t<button onclick=\"javascript:closeInfoBox(true)\">" . __('Cancel') . "</button>\n\t\t\t</div>"; print "</div>"; return; } if ($id == "quickAddFilter") { $active_feed_id = db_escape_string($_REQUEST["param"]); print "<div id=\"infoBoxTitle\">" . __('Create Filter') . "</div>"; print "<div class=\"infoBoxContents\">"; print "<form id=\"filter_add_form\" onsubmit='return false'>"; print "<input type=\"hidden\" name=\"op\" value=\"pref-filters\">"; print "<input type=\"hidden\" name=\"quiet\" value=\"1\">"; print "<input type=\"hidden\" name=\"subop\" value=\"add\">"; $result = db_query($link, "SELECT id,description \n\t\t\t\tFROM 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 "<div class=\"dlgSec\">" . __("Match") . "</div>"; print "<div class=\"dlgSecCont\">"; print "<span id=\"filter_dlg_date_mod_box\" style=\"display : none\">"; print __("Date") . " "; $filter_params = array("before" => __("before"), "after" => __("after")); print_select_hash("filter_date_modifier", "before", $filter_params); print " </span>"; print "<input onkeypress=\"return filterCR(event, createFilter)\"\n\t\t\t\t name=\"reg_exp\" size=\"30\" value=\"{$reg_exp}\">"; print "<span id=\"filter_dlg_date_chk_box\" style=\"display : none\">"; print " <input class=\"button\"\n\t\t\t\ttype=\"submit\" onclick=\"return filterDlgCheckDate()\" \n\t\t\t\tvalue=\"" . __('Check it') . "\">"; print "</span>"; print "<br/> " . __("on field") . " "; print_select_hash("filter_type", 1, $filter_types, 'onchange="filterDlgCheckType(this)"'); print "<br/>"; print __("in") . " "; print_feed_select($link, "feed_id", $active_feed_id); print "</div>"; print "<div class=\"dlgSec\">" . __("Perform Action") . "</div>"; print "<div class=\"dlgSecCont\">"; print "<select name=\"action_id\"\n\t\t\t\tonchange=\"filterDlgCheckAction(this)\">"; $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions \n\t\t\t\tORDER BY name"); while ($line = db_fetch_assoc($result)) { printf("<option value='%d'>%s</option>", $line["id"], __($line["description"])); } print "</select>"; print "<span id=\"filter_dlg_param_box\" style=\"display : none\">"; print " " . __("with parameters:") . " "; print "<input size=\"20\"\n\t\t\t\t\tonkeypress=\"return filterCR(event, createFilter)\"\n\t\t\t\t\tname=\"action_param\">"; print_label_select($link, "action_param_label", $action_param); print "</span>"; print " "; // tiny layout hack print "</div>"; print "<div class=\"dlgSec\">" . __("Options") . "</div>"; print "<div class=\"dlgSecCont\">"; print "<div style=\"line-height : 100%\">"; print "<input type=\"checkbox\" name=\"enabled\" id=\"enabled\" checked=\"1\">\n\t\t\t\t\t<label for=\"enabled\">" . __('Enabled') . "</label><br/>"; print "<input type=\"checkbox\" name=\"inverse\" id=\"inverse\">\n\t\t\t\t<label for=\"inverse\">" . __('Inverse match') . "</label>"; print "</div>"; print "</div>"; print "</form>"; print "<div class=\"dlgButtons\">"; print "<button onclick=\"return createFilter()\">" . __('Create') . "</button> "; print "<button onclick=\"return closeInfoBox()\">" . __('Cancel') . "</button>"; print "</div>"; // print "</td></tr></table>"; return; } if ($id == "feedUpdateErrors") { print "<div id=\"infoBoxTitle\">" . __('Update Errors') . "</div>"; print "<div class=\"infoBoxContents\">"; print __("These feeds have not been updated because of errors:"); $result = db_query($link, "SELECT id,title,feed_url,last_error\n\t\t\tFROM ttrss_feeds WHERE last_error != '' AND owner_uid = " . $_SESSION["uid"]); print "<ul class='feedErrorsList'>"; while ($line = db_fetch_assoc($result)) { print "<li><b>" . $line["title"] . "</b> (" . $line["feed_url"] . "): " . "<em>" . $line["last_error"] . "</em>"; } print "</ul>"; print "<div align='center'>"; print "<button onclick=\"return closeInfoBox()\">" . __('Close this window') . "</button>"; print "</div>"; return; } if ($id == "editArticleTags") { print "<div id=\"infoBoxTitle\">" . __('Edit Tags') . "</div>"; print "<div class=\"infoBoxContents\">"; print "<form id=\"tag_edit_form\" onsubmit='return false'>"; print __("Tags for this article (separated by commas):") . "<br>"; $tags = get_article_tags($link, $param); $tags_str = join(", ", $tags); print "<table width='100%'>"; print "<tr><td colspan='2'><input type=\"hidden\" name=\"id\" value=\"{$param}\"></td></tr>"; print "<tr><td colspan='2'><textarea rows='4' class='iedit' id='tags_str' \n\t\t\t\tname='tags_str'>{$tags_str}</textarea>\n\t\t\t<div class=\"autocomplete\" id=\"tags_choices\" \n\t\t\t\t\tstyle=\"display:none\"></div>\t\n\t\t\t</td></tr>"; print "</table>"; print "</form>"; print "<div align='right'>"; print "<button onclick=\"return editTagsSave()\">" . __('Save') . "</button> "; print "<button onclick=\"return closeInfoBox()\">" . __('Cancel') . "</button>"; print "</div>"; return; } if ($id == "printTagCloud") { print "<div id=\"infoBoxTitle\">" . __('Tag Cloud') . "</div>"; print "<div class=\"infoBoxContents\">"; print __("Showing most popular tags ") . " (<a \n\t\t\thref='javascript:toggleTags(true)'>" . __('more tags') . "</a>):<br/>"; print "<div class=\"tagCloudContainer\">"; printTagCloud($link); print "</div>"; print "<div align='center'>"; print "<button onclick=\"return closeInfoBox()\">" . __('Close this window') . "</button>"; print "</div>"; print "</div>"; return; } /* if ($id == "offlineDownload") { print "<div id=\"infoBoxTitle\">".__('Download articles')."</div>"; print "<div class=\"infoBoxContents\">"; print "<form name='download_ops_form' id='download_ops_form'>"; print "<div class=\"dlgSec\">".__("Download")."</div>"; print "<div class=\"dlgSecCont\">"; $amount = array( 50 => 50, 100 => 100, 250 => 250, 500 => 500); print_select_hash("amount", 50, $amount); print " " . __("latest articles for offline reading."); print "<br/>"; print "<input checked='yes' type='checkbox' name='unread_only' id='unread_only'>"; print "<label for='unread_only'>".__('Only include unread articles')."</label>"; print "</div>"; print "</form>"; print "<div class=\"dlgButtons\"> <input class=\"button\" type=\"submit\" onclick=\"return initiate_offline_download(0, this)\" value=\"".__('Download')."\"> <input class=\"button\" type=\"submit\" onclick=\"return closeInfoBox()\" value=\"".__('Cancel')."\"></div>"; print "</div>"; return; } */ print "<div id='infoBoxTitle'>Internal Error</div>\n\t\t\t<div id='infoBoxContents'>\n\t\t\t<p>Unknown dialog <b>{$id}</b></p>\n\t\t\t</div></div>"; }