define ( 'FRIENDICA_CODENAME', 'Asparagus');
define ( 'FRIENDICA_VERSION', '3.5-dev' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
-define ( 'DB_UPDATE_VERSION', 1192 );
+define ( 'DB_UPDATE_VERSION', 1193 );
/**
* @brief Constant with a HTML line break.
"receiver-uid" => array("receiver-uid"),
)
);
+ $database["oembed"] = array(
+ "fields" => array(
+ "url" => array("type" => "varchar(255)", "not null" => "1", "primary" => "1"),
+ "content" => array("type" => "text", "not null" => "1"),
+ ),
+ "indexes" => array(
+ "PRIMARY" => array("url"),
+ )
+ );
+ $database["parsed_url"] = array(
+ "fields" => array(
+ "url" => array("type" => "varchar(255)", "not null" => "1", "primary" => "1"),
+ "guessing" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0", "primary" => "1"),
+ "oembed" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0", "primary" => "1"),
+ "content" => array("type" => "text", "not null" => "1"),
+ ),
+ "indexes" => array(
+ "PRIMARY" => array("url", "guessing", "oembed"),
+ )
+ );
$database["pconfig"] = array(
"fields" => array(
"id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"),
function query_page_info($url, $no_photos = false, $photo = "", $keywords = false, $keyword_blacklist = "") {
require_once("mod/parse_url.php");
- $data = Cache::get("parse_url:".$url);
- if (is_null($data)){
- $data = parseurl_getsiteinfo($url, true);
- Cache::set("parse_url:".$url,serialize($data), CACHE_DAY);
- } else
- $data = unserialize($data);
+ $data = parseurl_getsiteinfo_cached($url, true);
if ($photo != "")
$data["images"][0]["src"] = $photo;
$a = get_app();
- $txt = Cache::get($a->videowidth . $embedurl);
+ $r = q("SELECT * FROM `oembed` WHERE `url` = '%s'",
+ dbesc(normalise_link($embedurl)));
+
+ if ($r)
+ $txt = $r[0]["content"];
+ else
+ $txt = Cache::get($a->videowidth . $embedurl);
// These media files should now be caught in bbcode.php
// left here as a fallback in case this is called from another source
if ($txt[0]!="{")
$txt='{"type":"error"}';
- else //save in cache
+ else { //save in cache
+ $j = json_decode($txt);
+ if ($j->type != "error")
+ q("INSERT INTO `oembed` (`url`, `content`) VALUES ('%s', '%s')",
+ dbesc(normalise_link($embedurl)), dbesc($txt));
+
Cache::set($a->videowidth . $embedurl,$txt, CACHE_DAY);
+ }
}
$j = json_decode($txt);
// If fetching information doesn't work, then improve via internal functions
if (($j->type == "error") OR ($no_rich_type AND ($j->type == "rich"))) {
require_once("mod/parse_url.php");
- $data = parseurl_getsiteinfo($embedurl, true, false);
+ $data = parseurl_getsiteinfo_cached($embedurl, true, false);
$j->type = $data["type"];
if ($j->type == "photo") {
function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = true) {
- $data = Cache::get("parse_url:".$no_guessing.":".$do_oembed.":".$url);
+ if ($url == "")
+ return false;
+
+ $r = q("SELECT * FROM `parsed_url` WHERE `url` = '%s' AND `guessing` = %d AND `oembed` = %d",
+ dbesc(normalise_link($url)), intval(!$no_guessing), intval($do_oembed));
+
+ if ($r)
+ $data = $r[0]["content"];
+
if (!is_null($data)) {
$data = unserialize($data);
return $data;
$data = parseurl_getsiteinfo($url, $no_guessing, $do_oembed);
- Cache::set("parse_url:".$no_guessing.":".$do_oembed.":".$url,serialize($data), CACHE_DAY);
+ q("INSERT INTO `parsed_url` (`url`, `guessing`, `oembed`, `content`) VALUES ('%s', %d, %d, '%s')",
+ dbesc(normalise_link($url)), intval(!$no_guessing), intval($do_oembed), dbesc(serialize($data)));
return $data;
}
<?php
-define( 'UPDATE_VERSION' , 1192 );
+define( 'UPDATE_VERSION' , 1193 );
/**
*