Beispiel #1
0
 private function update_feed_access_key($feed_id, $is_cat, $owner_uid = false)
 {
     if (!$owner_uid) {
         $owner_uid = $_SESSION["uid"];
     }
     $sql_is_cat = bool_to_sql_bool($is_cat);
     $result = $this->dbh->query("SELECT access_key FROM ttrss_access_keys\n\t\t\tWHERE feed_id = '{$feed_id}'\tAND is_cat = {$sql_is_cat}\n\t\t\tAND owner_uid = " . $owner_uid);
     if ($this->dbh->num_rows($result) == 1) {
         $key = $this->dbh->escape_string(uniqid_short());
         $this->dbh->query("UPDATE ttrss_access_keys SET access_key = '{$key}'\n\t\t\t\tWHERE feed_id = '{$feed_id}' AND is_cat = {$sql_is_cat}\n\t\t\t\tAND owner_uid = " . $owner_uid);
         return $key;
     } else {
         return get_feed_access_key($feed_id, $is_cat, $owner_uid);
     }
 }
Beispiel #2
0
 private function opml_import_filter($doc, $node, $owner_uid)
 {
     $attrs = $node->attributes;
     $filter_type = db_escape_string($attrs->getNamedItem('filter-type')->nodeValue);
     if ($filter_type == '2') {
         $filter = json_decode($node->nodeValue, true);
         if ($filter) {
             $match_any_rule = bool_to_sql_bool($filter["match_any_rule"]);
             $enabled = bool_to_sql_bool($filter["enabled"]);
             db_query($this->link, "BEGIN");
             db_query($this->link, "INSERT INTO ttrss_filters2 (match_any_rule,enabled,owner_uid)\n\t\t\t\t\tVALUES ({$match_any_rule}, {$enabled}," . $_SESSION["uid"] . ")");
             $result = db_query($this->link, "SELECT MAX(id) AS id FROM ttrss_filters2 WHERE\n\t\t\t\t\towner_uid = " . $_SESSION["uid"]);
             $filter_id = db_fetch_result($result, 0, "id");
             if ($filter_id) {
                 $this->opml_notice(T_sprintf("Adding filter..."));
                 foreach ($filter["rules"] as $rule) {
                     $feed_id = "NULL";
                     $cat_id = "NULL";
                     if (!$rule["cat_filter"]) {
                         $tmp_result = db_query($this->link, "SELECT id FROM ttrss_feeds\n\t\t\t\t\t\t\t\tWHERE title = '" . db_escape_string($rule["feed"]) . "' AND owner_uid = " . $_SESSION["uid"]);
                         if (db_num_rows($tmp_result) > 0) {
                             $feed_id = db_fetch_result($tmp_result, 0, "id");
                         }
                     } else {
                         $tmp_result = db_query($this->link, "SELECT id FROM ttrss_feed_categories\n\t\t\t\t\t\t\t\tWHERE title = '" . db_escape_string($rule["feed"]) . "' AND owner_uid = " . $_SESSION["uid"]);
                         if (db_num_rows($tmp_result) > 0) {
                             $cat_id = db_fetch_result($tmp_result, 0, "id");
                         }
                     }
                     $cat_filter = bool_to_sql_bool($rule["cat_filter"]);
                     $reg_exp = db_escape_string($rule["reg_exp"]);
                     $filter_type = (int) $rule["filter_type"];
                     db_query($this->link, "INSERT INTO ttrss_filters2_rules (feed_id,cat_id,filter_id,filter_type,reg_exp,cat_filter)\n\t\t\t\t\t\t\tVALUES ({$feed_id}, {$cat_id}, {$filter_id}, {$filter_type}, '{$reg_exp}', {$cat_filter})");
                 }
                 foreach ($filter["actions"] as $action) {
                     $action_id = (int) $action["action_id"];
                     $action_param = db_escape_string($action["action_param"]);
                     db_query($this->link, "INSERT INTO ttrss_filters2_actions (filter_id,action_id,action_param)\n\t\t\t\t\t\t\tVALUES ({$filter_id}, {$action_id}, '{$action_param}')");
                 }
             }
             db_query($this->link, "COMMIT");
         }
     }
 }
 function update_feed_access_key($link, $feed_id, $is_cat, $owner_uid = false)
 {
     if (!$owner_uid) {
         $owner_uid = $_SESSION["uid"];
     }
     $sql_is_cat = bool_to_sql_bool($is_cat);
     $result = db_query($link, "SELECT access_key FROM ttrss_access_keys\n\t\t\tWHERE feed_id = '{$feed_id}'\tAND is_cat = {$sql_is_cat}\n\t\t\tAND owner_uid = " . $owner_uid);
     if (db_num_rows($result) == 1) {
         $key = db_escape_string(sha1(uniqid(rand(), true)));
         db_query($link, "UPDATE ttrss_access_keys SET access_key = '{$key}'\n\t\t\t\tWHERE feed_id = '{$feed_id}' AND is_cat = {$sql_is_cat}\n\t\t\t\tAND owner_uid = " . $owner_uid);
         return $key;
     } else {
         return get_feed_access_key($link, $feed_id, $is_cat, $owner_uid);
     }
 }
function get_feed_access_key($link, $feed_id, $is_cat, $owner_uid = false)
{
    if (!$owner_uid) {
        $owner_uid = $_SESSION["uid"];
    }
    $sql_is_cat = bool_to_sql_bool($is_cat);
    $result = db_query($link, "SELECT access_key FROM ttrss_access_keys\n\t\t\tWHERE feed_id = '{$feed_id}'\tAND is_cat = {$sql_is_cat}\n\t\t\tAND owner_uid = " . $owner_uid);
    if (db_num_rows($result) == 1) {
        return db_fetch_result($result, 0, "access_key");
    } else {
        $key = db_escape_string(sha1(uniqid(rand(), true)));
        $result = db_query($link, "INSERT INTO ttrss_access_keys\n\t\t\t\t(access_key, feed_id, is_cat, owner_uid)\n\t\t\t\tVALUES ('{$key}', '{$feed_id}', {$sql_is_cat}, '{$owner_uid}')");
        return $key;
    }
    return false;
}
Beispiel #5
0
 function hook_article_filter($article)
 {
     if (!function_exists("curl_init")) {
         return $article;
     }
     // do not process an article more than once
     if (strpos($article['plugin_data'], "fullpost,{$owner_uid}:") !== false) {
         if (isset($article['stored']['content'])) {
             $article['content'] = $article['stored']['content'];
         }
         break;
     }
     $json_conf = $this->host->get($this, 'json_conf');
     $showInfoEnabled = sql_bool_to_bool($this->host->get($this, "af_fullpost_showinfo", bool_to_sql_bool(TRUE)));
     $owner_uid = $article['owner_uid'];
     // get url's for exclusion
     $data = explode(',', str_replace(",,", ",", str_replace("\n", ",", $json_conf)));
     //$data = explode(",", $json_conf);
     try {
         // if there is some stuff in the array
         if (is_array($data)) {
             // check url for excluded
             foreach ($data as $urlpart) {
                 if (stripos($article['link'], trim($urlpart)) !== false) {
                     $check_content = "Skipped";
                     break;
                 }
             }
         }
         // if the array is empty or url in list
         if ($check_content != "Skipped") {
             $check_content = $this->get_full_post($article['link']);
         }
         // If enabled print some information if content was processed by readability
         if ($check_content != "Failed" && $check_content != "Skipped" && trim($check_content) != "") {
             $article['content'] = $check_content;
             if ($showInfoEnabled === True) {
                 $article['content'] .= "<br>Processed by Readability";
             }
         } elseif ($check_content == "Skipped") {
             $article['content'] = $article['content'];
             if ($showInfoEnabled === True) {
                 $article['content'] .= "<br>You skipped Readability";
             }
         } else {
             $article['content'] = $article['content'];
             if ($showInfoEnabled === True) {
                 $article['content'] .= "<br>Failed processing by Readability";
             }
         }
     } catch (Exception $e) {
         // Readability failed to parse the page (?); don't process this article and keep going
         $article['content'] = $article['content'] . "<br>ERROR processing by Readability<br>" . $e;
     }
     // clean links without http, some sites do <img src="//www.site.com"> for safe to get images with http and https
     $toClean = array("\"//");
     $article["content"] = str_replace($toClean, "\"http://", $article["content"], $count);
     if ($showInfoEnabled === True) {
         $article['content'] .= " + " . $count . " Replacements";
     }
     // mark article as processed
     $article['plugin_data'] = "fullpost,{$owner_uid}:" . $article['plugin_data'];
     return $article;
 }
Beispiel #6
0
 private function saveRulesAndActions($filter_id)
 {
     db_query($this->link, "DELETE FROM ttrss_filters2_rules WHERE filter_id = '{$filter_id}'");
     db_query($this->link, "DELETE FROM ttrss_filters2_actions WHERE filter_id = '{$filter_id}'");
     if ($filter_id) {
         /* create rules */
         $rules = array();
         $actions = array();
         foreach ($_REQUEST["rule"] as $rule) {
             $rule = json_decode($rule, true);
             unset($rule["id"]);
             if (array_search($rule, $rules) === false) {
                 array_push($rules, $rule);
             }
         }
         foreach ($_REQUEST["action"] as $action) {
             $action = json_decode($action, true);
             unset($action["id"]);
             if (array_search($action, $actions) === false) {
                 array_push($actions, $action);
             }
         }
         foreach ($rules as $rule) {
             if ($rule) {
                 $reg_exp = strip_tags(db_escape_string(trim($rule["reg_exp"])));
                 $filter_type = (int) db_escape_string(trim($rule["filter_type"]));
                 $feed_id = db_escape_string(trim($rule["feed_id"]));
                 if (strpos($feed_id, "CAT:") === 0) {
                     $cat_filter = bool_to_sql_bool(true);
                     $cat_id = (int) substr($feed_id, 4);
                     $feed_id = "NULL";
                     if (!$cat_id) {
                         $cat_id = "NULL";
                     }
                     // Uncategorized
                 } else {
                     $cat_filter = bool_to_sql_bool(false);
                     $feed_id = (int) $feed_id;
                     $cat_id = "NULL";
                     if (!$feed_id) {
                         $feed_id = "NULL";
                     }
                     // Uncategorized
                 }
                 $query = "INSERT INTO ttrss_filters2_rules\n\t\t\t\t\t\t(filter_id, reg_exp,filter_type,feed_id,cat_id,cat_filter) VALUES\n\t\t\t\t\t\t('{$filter_id}', '{$reg_exp}', '{$filter_type}', {$feed_id}, {$cat_id}, {$cat_filter})";
                 db_query($this->link, $query);
             }
         }
         foreach ($actions as $action) {
             if ($action) {
                 $action_id = (int) db_escape_string($action["action_id"]);
                 $action_param = db_escape_string($action["action_param"]);
                 $action_param_label = db_escape_string($action["action_param_label"]);
                 if ($action_id == 7) {
                     $action_param = $action_param_label;
                 }
                 if ($action_id == 6) {
                     $action_param = (int) str_replace("+", "", $action_param);
                 }
                 $query = "INSERT INTO ttrss_filters2_actions\n\t\t\t\t\t\t(filter_id, action_id, action_param) VALUES\n\t\t\t\t\t\t('{$filter_id}', '{$action_id}', '{$action_param}')";
                 db_query($this->link, $query);
             }
         }
     }
 }
Beispiel #7
0
     if (authenticate_user($link, $login, $password)) {
         $result = db_query($link, "SELECT * FROM ttirc_settings_profiles\n\t\t\t\t\tWHERE owner_uid = " . $_SESSION["uid"] . " ORDER BY title");
         print "<select style='width: 100%' name='profile'>";
         print "<option value='0'>" . __("Default profile") . "</option>";
         while ($line = db_fetch_assoc($result)) {
             $id = $line["id"];
             $title = $line["title"];
             print "<option value='{$id}'>{$title}</option>";
         }
         print "</select>";
         $_SESSION = array();
     }
     break;
 case "toggle-connection":
     $connection_id = (int) db_escape_string($_REQUEST["connection_id"]);
     $status = bool_to_sql_bool(db_escape_string($_REQUEST["set_enabled"]));
     db_query($link, "UPDATE ttirc_connections SET enabled = '{$status}'\n\t\t\tWHERE id = '{$connection_id}' AND owner_uid = " . $_SESSION["uid"]);
     print json_encode(array("status" => $status));
     break;
 case "prefs-edit-notify":
     notification_editor($link);
     break;
 case "prefs-save-notify":
     $notify_events = json_encode($_REQUEST["notify_event"]);
     set_pref($link, "NOTIFY_ON", $notify_events);
     break;
 case "prefs-edit-twitter":
     twitter_editor($link);
     break;
 case "tweet-dlg":
     $text = $_REQUEST['text'];
Beispiel #8
0
 function perform_data_import($filename, $owner_uid)
 {
     $num_imported = 0;
     $num_processed = 0;
     $num_feeds_created = 0;
     libxml_disable_entity_loader(false);
     $doc = @DOMDocument::load($filename);
     if (!$doc) {
         $contents = file_get_contents($filename);
         if ($contents) {
             $data = @gzuncompress($contents);
         }
         if (!$data) {
             $data = @gzdecode($contents);
         }
         if ($data) {
             $doc = DOMDocument::loadXML($data);
         }
     }
     libxml_disable_entity_loader(true);
     if ($doc) {
         $xpath = new DOMXpath($doc);
         $container = $doc->firstChild;
         if ($container && $container->hasAttribute('schema-version')) {
             $schema_version = $container->getAttribute('schema-version');
             if ($schema_version != SCHEMA_VERSION) {
                 print "<p>" . __("Could not import: incorrect schema version.") . "</p>";
                 return;
             }
         } else {
             print "<p>" . __("Could not import: unrecognized document format.") . "</p>";
             return;
         }
         $articles = $xpath->query("//article");
         foreach ($articles as $article_node) {
             if ($article_node->childNodes) {
                 $ref_id = 0;
                 $article = array();
                 foreach ($article_node->childNodes as $child) {
                     if ($child->nodeName != 'label_cache') {
                         $article[$child->nodeName] = db_escape_string($child->nodeValue);
                     } else {
                         $article[$child->nodeName] = $child->nodeValue;
                     }
                 }
                 //print_r($article);
                 if ($article['guid']) {
                     ++$num_processed;
                     //db_query("BEGIN");
                     //print 'GUID:' . $article['guid'] . "\n";
                     $result = db_query("SELECT id FROM ttrss_entries\n\t\t\t\t\t\t\tWHERE guid = '" . $article['guid'] . "'");
                     if (db_num_rows($result) == 0) {
                         $result = db_query("INSERT INTO ttrss_entries\n\t\t\t\t\t\t\t\t\t(title,\n\t\t\t\t\t\t\t\t\tguid,\n\t\t\t\t\t\t\t\t\tlink,\n\t\t\t\t\t\t\t\t\tupdated,\n\t\t\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\t\t\tcontent_hash,\n\t\t\t\t\t\t\t\t\tno_orig_date,\n\t\t\t\t\t\t\t\t\tdate_updated,\n\t\t\t\t\t\t\t\t\tdate_entered,\n\t\t\t\t\t\t\t\t\tcomments,\n\t\t\t\t\t\t\t\t\tnum_comments,\n\t\t\t\t\t\t\t\t\tauthor)\n\t\t\t\t\t\t\t\tVALUES\n\t\t\t\t\t\t\t\t\t('" . $article['title'] . "',\n\t\t\t\t\t\t\t\t\t'" . $article['guid'] . "',\n\t\t\t\t\t\t\t\t\t'" . $article['link'] . "',\n\t\t\t\t\t\t\t\t\t'" . $article['updated'] . "',\n\t\t\t\t\t\t\t\t\t'" . $article['content'] . "',\n\t\t\t\t\t\t\t\t\t'" . sha1($article['content']) . "',\n\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t\tNOW(),\n\t\t\t\t\t\t\t\t\tNOW(),\n\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t'0',\n\t\t\t\t\t\t\t\t\t'')");
                         $result = db_query("SELECT id FROM ttrss_entries\n\t\t\t\t\t\t\t\tWHERE guid = '" . $article['guid'] . "'");
                         if (db_num_rows($result) != 0) {
                             $ref_id = db_fetch_result($result, 0, "id");
                         }
                     } else {
                         $ref_id = db_fetch_result($result, 0, "id");
                     }
                     //print "Got ref ID: $ref_id\n";
                     if ($ref_id) {
                         $feed_url = $article['feed_url'];
                         $feed_title = $article['feed_title'];
                         $feed = 'NULL';
                         if ($feed_url && $feed_title) {
                             $result = db_query("SELECT id FROM ttrss_feeds\n\t\t\t\t\t\t\t\t\tWHERE feed_url = '{$feed_url}' AND owner_uid = '{$owner_uid}'");
                             if (db_num_rows($result) != 0) {
                                 $feed = db_fetch_result($result, 0, "id");
                             } else {
                                 // try autocreating feed in Uncategorized...
                                 $result = db_query("INSERT INTO ttrss_feeds (owner_uid,\n\t\t\t\t\t\t\t\t\t\tfeed_url, title) VALUES ({$owner_uid}, '{$feed_url}', '{$feed_title}')");
                                 $result = db_query("SELECT id FROM ttrss_feeds\n\t\t\t\t\t\t\t\t\t\tWHERE feed_url = '{$feed_url}' AND owner_uid = '{$owner_uid}'");
                                 if (db_num_rows($result) != 0) {
                                     ++$num_feeds_created;
                                     $feed = db_fetch_result($result, 0, "id");
                                 }
                             }
                         }
                         if ($feed != 'NULL') {
                             $feed_qpart = "feed_id = {$feed}";
                         } else {
                             $feed_qpart = "feed_id IS NULL";
                         }
                         //print "$ref_id / $feed / " . $article['title'] . "\n";
                         $result = db_query("SELECT int_id FROM ttrss_user_entries\n\t\t\t\t\t\t\t\tWHERE ref_id = '{$ref_id}' AND owner_uid = '{$owner_uid}' AND {$feed_qpart}");
                         if (db_num_rows($result) == 0) {
                             $marked = bool_to_sql_bool(sql_bool_to_bool($article['marked']));
                             $published = bool_to_sql_bool(sql_bool_to_bool($article['published']));
                             $score = (int) $article['score'];
                             $tag_cache = $article['tag_cache'];
                             $label_cache = db_escape_string($article['label_cache']);
                             $note = $article['note'];
                             //print "Importing " . $article['title'] . "<br/>";
                             ++$num_imported;
                             $result = db_query("INSERT INTO ttrss_user_entries\n\t\t\t\t\t\t\t\t\t(ref_id, owner_uid, feed_id, unread, last_read, marked,\n\t\t\t\t\t\t\t\t\t\tpublished, score, tag_cache, label_cache, uuid, note)\n\t\t\t\t\t\t\t\t\tVALUES ({$ref_id}, {$owner_uid}, {$feed}, false,\n\t\t\t\t\t\t\t\t\t\tNULL, {$marked}, {$published}, {$score}, '{$tag_cache}',\n\t\t\t\t\t\t\t\t\t\t\t'{$label_cache}', '', '{$note}')");
                             $label_cache = json_decode($label_cache, true);
                             if (is_array($label_cache) && $label_cache["no-labels"] != 1) {
                                 foreach ($label_cache as $label) {
                                     label_create($label[1], $label[2], $label[3], $owner_uid);
                                     label_add_article($ref_id, $label[1], $owner_uid);
                                 }
                             }
                             //db_query("COMMIT");
                         }
                     }
                 }
             }
         }
         print "<p>" . __("Finished: ") . vsprintf(_ngettext("%d article processed, ", "%d articles processed, ", $num_processed), $num_processed) . vsprintf(_ngettext("%d imported, ", "%d imported, ", $num_imported), $num_imported) . vsprintf(_ngettext("%d feed created.", "%d feeds created.", $num_feeds_created), $num_feeds_created) . "</p>";
     } else {
         print "<p>" . __("Could not load XML document.") . "</p>";
     }
 }
Beispiel #9
0
function opml_import_domdoc($link, $owner_uid)
{
    if (is_file($_FILES['opml_file']['tmp_name'])) {
        $doc = DOMDocument::load($_FILES['opml_file']['tmp_name']);
        $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) == 1) {
            $default_cat_id = db_fetch_result($result, 0, "id");
        } else {
            $default_cat_id = 0;
        }
        // Keep imported categories in order, after any pre-existing ones.
        $new_cat_order_id = 0;
        // Get the highest category order_id in use.
        $result = db_query($link, "SELECT order_id FROM\n\t\t\t\tttrss_feed_categories WHERE owner_uid = '{$owner_uid}'\n\t\t\t\tORDER BY order_id DESC LIMIT 1");
        if (db_num_rows($result) == 1) {
            $new_cat_order_id = db_fetch_result($result, 0, "order_id");
        }
        if ($doc) {
            $body = $doc->getElementsByTagName('body');
            $xpath = new DOMXpath($doc);
            $query = "/opml/body//outline";
            $outlines = $xpath->query($query);
            foreach ($outlines as $outline) {
                $attributes = $outline->attributes;
                $feed_title = db_escape_string($attributes->getNamedItem('text')->nodeValue);
                if (!$feed_title) {
                    $feed_title = db_escape_string($attributes->getNamedItem('title')->nodeValue);
                }
                $cat_title = db_escape_string($attributes->getNamedItem('title')->nodeValue);
                if (!$cat_title) {
                    $cat_title = db_escape_string($attributes->getNamedItem('text')->nodeValue);
                }
                $feed_url = db_escape_string($attributes->getNamedItem('xmlUrl')->nodeValue);
                if (!$feed_url) {
                    $feed_url = db_escape_string($attributes->getNamedItem('xmlURL')->nodeValue);
                }
                $site_url = db_escape_string($attributes->getNamedItem('htmlUrl')->nodeValue);
                $pref_name = db_escape_string($attributes->getNamedItem('pref-name')->nodeValue);
                $label_name = db_escape_string($attributes->getNamedItem('label-name')->nodeValue);
                $filter_name = db_escape_string($attributes->getNamedItem('filter-name')->nodeValue);
                if ($cat_title && !$feed_url) {
                    if ($cat_title != "tt-rss-prefs" && $cat_title != 'tt-rss-labels' && $cat_title != 'tt-rss-filters') {
                        db_query($link, "BEGIN");
                        $result = db_query($link, "SELECT id FROM\n\t\t\t\t\t\t\t\t\tttrss_feed_categories WHERE title = '{$cat_title}' AND\n\t\t\t\t\t\t\t\t\towner_uid = '{$owner_uid}' LIMIT 1");
                        if (db_num_rows($result) == 0) {
                            $cat_order_id = ++$new_cat_order_id;
                            printf(__("<li>Adding category <b>%s</b>.</li>"), $cat_title);
                            db_query($link, "INSERT INTO ttrss_feed_categories\n\t\t\t\t\t\t\t\t\t\t(title,owner_uid,order_id)\n\t\t\t\t\t\t\t\t\t\tVALUES ('{$cat_title}', '{$owner_uid}', '{$cat_order_id}')");
                        }
                        db_query($link, "COMMIT");
                    }
                }
                //						print "$active_category : $feed_title : $feed_url<br>";
                if ($pref_name) {
                    $parent_node = $outline->parentNode;
                    if ($parent_node && $parent_node->nodeName == "outline") {
                        $cat_check = $parent_node->attributes->getNamedItem('title')->nodeValue;
                        if ($cat_check == "tt-rss-prefs") {
                            $pref_value = db_escape_string($outline->attributes->getNamedItem('value')->nodeValue);
                            printf("<li>" . __("Setting preference key %s to %s") . "</li>", $pref_name, $pref_value);
                            set_pref($link, $pref_name, $pref_value);
                        }
                    }
                }
                if ($label_name) {
                    $parent_node = $outline->parentNode;
                    if ($parent_node && $parent_node->nodeName == "outline") {
                        $cat_check = $parent_node->attributes->getNamedItem('title')->nodeValue;
                        if ($cat_check == "tt-rss-labels") {
                            $fg_color = db_escape_string($attributes->getNamedItem('label-fg-color')->nodeValue);
                            $bg_color = db_escape_string($attributes->getNamedItem('label-bg-color')->nodeValue);
                            if (!label_find_id($link, $label_name, $_SESSION['uid'])) {
                                printf("<li>" . __("Adding label %s") . "</li>", htmlspecialchars($label_name));
                                label_create($link, $label_name, $fg_color, $bg_color);
                            } else {
                                printf("<li>" . __("Duplicate label: %s") . "</li>", htmlspecialchars($label_name));
                            }
                        }
                    }
                }
                if ($filter_name) {
                    $parent_node = $outline->parentNode;
                    if ($parent_node && $parent_node->nodeName == "outline") {
                        $cat_check = $parent_node->attributes->getNamedItem('title')->nodeValue;
                        if ($cat_check == "tt-rss-filters") {
                            $filter = json_decode($outline->nodeValue, true);
                            if ($filter) {
                                $reg_exp = db_escape_string($filter['reg_exp']);
                                $filter_type = (int) $filter['filter_type'];
                                $action_id = (int) $filter['action_id'];
                                $result = db_query($link, "SELECT id FROM ttrss_filters WHERE\n\t\t\t\t\t\t\t\t\t\treg_exp = '{$reg_exp}' AND\n\t\t\t\t\t\t\t\t\t\tfilter_type = '{$filter_type}' AND\n\t\t\t\t\t\t\t\t\t\taction_id = '{$action_id}' AND\n\t\t\t\t\t\t\t\t\t\towner_uid = " . $_SESSION['uid']);
                                if (db_num_rows($result) == 0) {
                                    $enabled = bool_to_sql_bool($filter['enabled']);
                                    $action_param = db_escape_string($filter['action_param']);
                                    $inverse = bool_to_sql_bool($filter['inverse']);
                                    $filter_param = db_escape_string($filter['filter_param']);
                                    $cat_filter = bool_to_sql_bool($filter['cat_filter']);
                                    $feed_url = db_escape_string($filter['feed_url']);
                                    $cat_title = db_escape_string($filter['cat_title']);
                                    $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE\n\t\t\t\t\t\t\t\t\t\t\tfeed_url = '{$feed_url}' AND owner_uid = " . $_SESSION['uid']);
                                    if (db_num_rows($result) != 0) {
                                        $feed_id = db_fetch_result($result, 0, "id");
                                    } else {
                                        $feed_id = "NULL";
                                    }
                                    $result = db_query($link, "SELECT id FROM ttrss_feed_categories WHERE\n\t\t\t\t\t\t\t\t\t\t\ttitle = '{$cat_title}' AND  owner_uid = " . $_SESSION['uid']);
                                    if (db_num_rows($result) != 0) {
                                        $cat_id = db_fetch_result($result, 0, "id");
                                    } else {
                                        $cat_id = "NULL";
                                    }
                                    printf("<li>" . __("Adding filter %s") . "</li>", htmlspecialchars($reg_exp));
                                    $query = "INSERT INTO ttrss_filters (filter_type, action_id,\n\t\t\t\t\t\t\t\t\t\t\t\tenabled, inverse, action_param, filter_param,\n\t\t\t\t\t\t\t\t\t\t\t\tcat_filter, feed_id,\n\t\t\t\t\t\t\t\t\t\t\t\tcat_id, reg_exp,\n\t\t\t\t\t\t\t\t\t\t\t\towner_uid)\n\t\t\t\t\t\t\t\t\t\t\tVALUES ({$filter_type}, {$action_id},\n\t\t\t\t\t\t\t\t\t\t\t\t{$enabled}, {$inverse}, '{$action_param}', '{$filter_param}',\n\t\t\t\t\t\t\t\t\t\t\t\t{$cat_filter}, {$feed_id},\n\t\t\t\t\t\t\t\t\t\t\t\t{$cat_id}, '{$reg_exp}', " . $_SESSION['uid'] . ")";
                                    db_query($link, $query);
                                } else {
                                    printf("<li>" . __("Duplicate filter %s") . "</li>", htmlspecialchars($reg_exp));
                                }
                            }
                        }
                    }
                }
                if (!$feed_title || !$feed_url) {
                    continue;
                }
                db_query($link, "BEGIN");
                $cat_id = null;
                $parent_node = $outline->parentNode;
                if ($parent_node && $parent_node->nodeName == "outline") {
                    $element_category = $parent_node->attributes->getNamedItem('title')->nodeValue;
                    if (!$element_category) {
                        $element_category = $parent_node->attributes->getNamedItem('text')->nodeValue;
                    }
                } else {
                    $element_category = '';
                }
                if ($element_category) {
                    $element_category = db_escape_string($element_category);
                    $result = db_query($link, "SELECT id FROM\n\t\t\t\t\t\t\t\tttrss_feed_categories WHERE title = '{$element_category}' AND\n\t\t\t\t\t\t\t\towner_uid = '{$owner_uid}' LIMIT 1");
                    if (db_num_rows($result) == 1) {
                        $cat_id = db_fetch_result($result, 0, "id");
                    }
                }
                $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE\n\t\t\t\t\t\t\tfeed_url = '{$feed_url}'\n\t\t\t\t\t\t\tAND owner_uid = '{$owner_uid}'");
                print "<li><a target='_blank' href='{$site_url}'><b>{$feed_title}</b></a></b>\n\t\t\t\t\t\t(<a target='_blank' href=\"{$feed_url}\">rss</a>)&nbsp;";
                if (db_num_rows($result) > 0) {
                    print __('is already imported.');
                } else {
                    // Get max order_id already in use. Increment.
                    $new_feed_order_id = 0;
                    // these start at zero
                    $cat_id_qpart = $cat_id ? "cat_id = '{$cat_id}'" : "cat_id = '{$default_cat_id}'";
                    $result = db_query($link, "SELECT order_id FROM\n\t\t\t\t\t\t\tttrss_feeds WHERE owner_uid = '{$owner_uid}' AND {$cat_id_qpart}\n\t\t\t\t\t\t\tORDER BY order_id DESC LIMIT 1");
                    if (db_num_rows($result) == 1) {
                        $new_feed_order_id = db_fetch_result($result, 0, "order_id");
                        $new_feed_order_id++;
                    }
                    if ($cat_id) {
                        $add_query = "INSERT INTO ttrss_feeds\n\t\t\t\t\t\t\t\t(title, feed_url, owner_uid, cat_id, site_url, order_id) VALUES\n\t\t\t\t\t\t\t\t('{$feed_title}', '{$feed_url}', '{$owner_uid}',\n\t\t\t\t\t\t\t\t '{$cat_id}', '{$site_url}', '{$new_feed_order_id}')";
                    } else {
                        $add_query = "INSERT INTO ttrss_feeds\n\t\t\t\t\t\t\t\t(title, feed_url, owner_uid, cat_id, site_url, order_id) VALUES\n\t\t\t\t\t\t\t\t('{$feed_title}', '{$feed_url}', '{$owner_uid}', '{$default_cat_id}',\n\t\t\t\t\t\t\t\t\t'{$site_url}', '{$new_feed_order_id}')";
                    }
                    //print $add_query;
                    db_query($link, $add_query);
                    print __('OK');
                }
                print "</li>";
                db_query($link, "COMMIT");
            }
        } else {
            print_error(__('Error while parsing document.'));
        }
    } else {
        print_error(__('Error: please upload OPML file.'));
    }
}
Beispiel #10
0
function push_message($link, $connection_id, $channel, $message, $incoming = false, $message_type = MSGT_PRIVMSG, $from_nick = false)
{
    if (!$message) {
        return false;
    }
    $incoming = bool_to_sql_bool($incoming);
    if ($channel != "---") {
        $my_nick = get_nick($link, $connection_id);
    } else {
        $my_nick = "---";
    }
    if ($from_nick) {
        $my_nick = $from_nick;
    }
    //$message = db_escape_string($message);
    $result = db_query($link, "INSERT INTO ttirc_messages \n\t\t\t(incoming, connection_id, channel, sender, message, message_type) VALUES\n\t\t\t({$incoming}, {$connection_id}, '{$channel}', '{$my_nick}', '{$message}', \n\t\t\t'{$message_type}')");
}
Beispiel #11
0
function get_feed_access_key($feed_id, $is_cat, $owner_uid = false)
{
    if (!$owner_uid) {
        $owner_uid = $_SESSION["uid"];
    }
    $sql_is_cat = bool_to_sql_bool($is_cat);
    $result = db_query("SELECT access_key FROM ttrss_access_keys\n        WHERE feed_id = '{$feed_id}'    AND is_cat = {$sql_is_cat}\n        AND owner_uid = " . $owner_uid);
    if (db_num_rows($result) == 1) {
        return db_fetch_result($result, 0, "access_key");
    }
    $key = db_escape_string(uniqid(base_convert(rand(), 10, 36)));
    $result = db_query("INSERT INTO ttrss_access_keys\n        (access_key, feed_id, is_cat, owner_uid)\n        VALUES ('{$key}', '{$feed_id}', {$sql_is_cat}, '{$owner_uid}')");
    return $key;
}