diff --git a/include/bbcode.php b/include/bbcode.php index e63a8d39..41201038 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -259,16 +259,22 @@ function bb_ShareAttributes($match) { if ($matches[1] != "") $profile = $matches[1]; - $posted = ""; - preg_match("/posted='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $posted = $matches[1]; + $posted = ""; - preg_match('/posted="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $posted = $matches[1]; + $itemcache = get_config("system","itemcache"); - $reldate = (($posted) ? " " . relative_date($posted) : ''); + // relative dates only make sense when they aren't cached + if ($itemcache == "") { + preg_match("/posted='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $posted = $matches[1]; + + preg_match('/posted="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $posted = $matches[1]; + + $reldate = (($posted) ? " " . relative_date($posted) : ''); + } $headline = '
'; //$headline = '
'; diff --git a/include/diaspora.php b/include/diaspora.php index 0deb3cc2..abc518cd 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1041,10 +1041,10 @@ function diaspora_reshare($importer,$xml,$msg) { $datarray['owner-link'] = $contact['url']; $datarray['owner-avatar'] = ((x($contact,'thumb')) ? $contact['thumb'] : $contact['photo']); if (!intval(get_config('system','wall-to-wall_share'))) { - $prefix = "[share author='".str_replace("'", "'",$person['name']). + $prefix = "[share author='".str_replace(array("'", "[", "]"), array("'", "[", "]"),$person['name']). "' profile='".$person['url']. "' avatar='".((x($person,'thumb')) ? $person['thumb'] : $person['photo']). - "' link='".$orig_url."']"; + "' link='".str_replace(array("'", "[", "]"), array("'", "[", "]"),$orig_url)."']"; $datarray['author-name'] = $contact['name']; $datarray['author-link'] = $contact['url']; $datarray['author-avatar'] = $contact['thumb']; diff --git a/include/oembed.php b/include/oembed.php index bc127b5c..d598b41c 100755 --- a/include/oembed.php +++ b/include/oembed.php @@ -21,21 +21,21 @@ function oembed_fetch_url($embedurl){ $noexts = array("mp3","mp4","ogg","ogv","oga","ogm","webm"); $ext = pathinfo(strtolower($embedurl),PATHINFO_EXTENSION); - - + + if(is_null($txt)){ $txt = ""; - + if (!in_array($ext, $noexts)){ // try oembed autodiscovery $redirects = 0; - $html_text = fetch_url($embedurl, false, $redirects, 15, "text/*"); + $html_text = fetch_url($embedurl, false, $redirects, 15, "text/*"); /**/ if($html_text){ $dom = @DOMDocument::loadHTML($html_text); if ($dom){ $xpath = new DOMXPath($dom); $attr = "oembed"; - + $xattr = oe_build_xpath("class","oembed"); $entries = $xpath->query("//link[@type='application/json+oembed']"); foreach($entries as $e){ @@ -46,29 +46,29 @@ function oembed_fetch_url($embedurl){ } } } - + if ($txt==false || $txt==""){ // try oohembed service $ourl = "http://oohembed.com/oohembed/?url=".urlencode($embedurl).'&maxwidth=' . $a->videowidth; $txt = fetch_url($ourl); } - + $txt=trim($txt); if ($txt[0]!="{") $txt='{"type":"error"}'; - + //save in cache Cache::set($a->videowidth . $embedurl,$txt); } - + $j = json_decode($txt); $j->embedurl = $embedurl; return $j; } - + function oembed_format_object($j){ $a = get_app(); - $embedurl = $j->embedurl; + $embedurl = $j->embedurl; $jhtml = oembed_iframe($j->embedurl,(isset($j->width) ? $j->width : null), (isset($j->height) ? $j->height : null) ); $ret=""; switch ($j->type) { @@ -78,7 +78,7 @@ function oembed_format_object($j){ $th = (isset($j->thumbnail_height) && intval($j->thumbnail_height)) ? $j->thumbnail_height:180; // make sure we don't attempt divide by zero, fallback is a 1:1 ratio $tr = (($th) ? $tw/$th : 1); - + $th=120; $tw = $th*$tr; $tpl=get_markup_template('oembed_video.tpl'); $ret.=replace_macros($tpl, array( @@ -89,7 +89,7 @@ function oembed_format_object($j){ '$th'=>$th, '$turl'=>$j->thumbnail_url, )); - + } else { $ret=$jhtml; } @@ -99,22 +99,24 @@ function oembed_format_object($j){ $ret.= ""; //$ret.= ""; $ret.="
"; - }; break; + }; break; case "link": { //$ret = "".$j->title.""; - }; break; + }; break; case "rich": { - // not so safe.. + // not so safe.. $ret.= $jhtml; }; break; } // add link to source if not present in "rich" type - if ( $j->type!='rich' || !strpos($j->html,$embedurl) ){ + if ($j->type!='rich' || !strpos($j->html,$embedurl) ){ + if (isset($j->provider_name)) $ret .= $j->provider_name.": "; $embedlink = (isset($j->title))?$j->title:$embedurl; $ret .= "$embedlink"; - if (isset($j->author_name)) $ret.=" by ".$j->author_name; - if (isset($j->provider_name)) $ret.=" on ".$j->provider_name; + if (isset($j->author_name)) $ret.=" (".$j->author_name.")"; + //if (isset($j->author_name)) $ret.=" by ".$j->author_name; + //if (isset($j->provider_name)) $ret.=" on ".$j->provider_name; } else { // add for html2bbcode conversion $ret .= ""; @@ -128,14 +130,14 @@ function oembed_iframe($src,$width,$height) { $width = '640'; if(! $height || strstr($height,'%')) $height = '300'; - // try and leave some room for the description line. + // try and leave some room for the description line. $height = intval($height) + 80; $width = intval($width) + 40; $a = get_app(); $s = $a->get_baseurl()."/oembed/".base64url_encode($src); - return ''; + return ''; } @@ -162,7 +164,7 @@ function oe_get_inner_html( $node ) { $innerHTML .= $child->ownerDocument->saveXML( $child ); } return $innerHTML; -} +} /** * Find .... @@ -171,17 +173,17 @@ function oe_get_inner_html( $node ) { function oembed_html2bbcode($text) { // start parser only if 'oembed' is in text if (strpos($text, "oembed")){ - + // convert non ascii chars to html entities $html_text = mb_convert_encoding($text, 'HTML-ENTITIES', mb_detect_encoding($text)); - + // If it doesn't parse at all, just return the text. $dom = @DOMDocument::loadHTML($html_text); if(! $dom) return $text; $xpath = new DOMXPath($dom); $attr = "oembed"; - + $xattr = oe_build_xpath("class","oembed"); $entries = $xpath->query("//span[$xattr]"); @@ -193,8 +195,5 @@ function oembed_html2bbcode($text) { return oe_get_inner_html( $dom->getElementsByTagName("body")->item(0) ); } else { return $text; - } + } } - - - diff --git a/include/plugin.php b/include/plugin.php index a706dcf5..9002c7bc 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -80,7 +80,7 @@ function reload_plugins() { if(file_exists($fname)) { $t = @filemtime($fname); foreach($installed as $i) { - if(($i['name'] == $pl) && ($i['timestamp'] != $t)) { + if(($i['name'] == $pl) && ($i['timestamp'] != $t)) { logger('Reloading plugin: ' . $i['name']); @include_once($fname); @@ -145,7 +145,7 @@ if(! function_exists('load_hooks')) { function load_hooks() { $a = get_app(); $a->hooks = array(); - $r = q("SELECT * FROM `hook` WHERE 1 ORDER BY `priority` DESC"); + $r = q("SELECT * FROM `hook` WHERE 1 ORDER BY `priority` DESC, `file`"); if(count($r)) { foreach($r as $rr) { if(! array_key_exists($rr['hook'],$a->hooks)) diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 5a32d946..b609a545 100644 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -96,16 +96,16 @@ function dfrn_request_post(&$a) { else $contact_record = $r[0]; } - + if(is_array($contact_record)) { - $r = q("UPDATE `contact` SET `ret-aes` = %d, hidden = %d WHERE `id` = %d LIMIT 1", + $r = q("UPDATE `contact` SET `ret-aes` = %d, hidden = %d WHERE `id` = %d", intval($aes_allow), intval($hidden), intval($contact_record['id']) ); } else { - + /** * Scrape the other site's profile page to pick up the dfrn links, key, fn, and photo */ @@ -406,7 +406,7 @@ function dfrn_request_post(&$a) { `uri-date` = '%s', `avatar-date` = '%s', `hidden` = 0, - WHERE `id` = %d LIMIT 1 + WHERE `id` = %d ", dbesc($photos[0]), dbesc($photos[1]), @@ -486,7 +486,7 @@ function dfrn_request_post(&$a) { if(is_array($contact_record)) { // There is a contact record but no issued-id, so this // is a reciprocal introduction from a known contact - $r = q("UPDATE `contact` SET `issued-id` = '%s' WHERE `id` = %d LIMIT 1", + $r = q("UPDATE `contact` SET `issued-id` = '%s' WHERE `id` = %d", dbesc($issued_id), intval($contact_record['id']) ); @@ -565,7 +565,7 @@ function dfrn_request_post(&$a) { if(count($r)) $contact_record = $r[0]; } - + } if($r === false) { notice( t('Failed to update contact record.') . EOL ); @@ -573,7 +573,7 @@ function dfrn_request_post(&$a) { } $hash = random_string() . (string) time(); // Generate a confirm_key - + if(is_array($contact_record)) { $ret = q("INSERT INTO `intro` ( `uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime`) VALUES ( %d, %d, 1, %d, '%s', '%s', '%s' )", @@ -741,7 +741,7 @@ function dfrn_request_content(&$a) { // If we are auto_confirming, this record will have already been nuked // in dfrn_confirm_post() - $r = q("UPDATE `intro` SET `blocked` = 0 WHERE `hash` = '%s' LIMIT 1", + $r = q("UPDATE `intro` SET `blocked` = 0 WHERE `hash` = '%s'", dbesc($_GET['confirm_key']) ); } diff --git a/mod/notifications.php b/mod/notifications.php index c7f8e1bb..cde7fda0 100644 --- a/mod/notifications.php +++ b/mod/notifications.php @@ -5,9 +5,9 @@ function notifications_post(&$a) { if(! local_user()) { goaway(z_root()); } - + $request_id = (($a->argc > 1) ? $a->argv[1] : 0); - + if($request_id === "all") return; @@ -17,7 +17,7 @@ function notifications_post(&$a) { intval($request_id), intval(local_user()) ); - + if(count($r)) { $intro_id = $r[0]['id']; $contact_id = $r[0]['contact-id']; @@ -35,7 +35,7 @@ function notifications_post(&$a) { if($_POST['submit'] == t('Discard')) { $r = q("DELETE FROM `intro` WHERE `id` = %d LIMIT 1", intval($intro_id) - ); + ); if(! $fid) { // The check for blocked and pending is in case the friendship was already approved @@ -49,7 +49,7 @@ function notifications_post(&$a) { goaway($a->get_baseurl(true) . '/notifications/intros'); } if($_POST['submit'] == t('Ignore')) { - $r = q("UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d LIMIT 1", + $r = q("UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d", intval($intro_id)); goaway($a->get_baseurl(true) . '/notifications/intros'); } @@ -67,7 +67,7 @@ function notifications_content(&$a) { return; } - nav_set_selected('notifications'); + nav_set_selected('notifications'); $json = (($a->argc > 1 && $a->argv[$a->argc - 1] === 'json') ? true : false); @@ -105,19 +105,19 @@ function notifications_content(&$a) { 'sel'=> '', ), ); - + $o = ""; - + if( (($a->argc > 1) && ($a->argv[1] == 'intros')) || (($a->argc == 1))) { nav_set_selected('introductions'); if(($a->argc > 2) && ($a->argv[2] == 'all')) $sql_extra = ''; else $sql_extra = " AND `ignore` = 0 "; - + $notif_tpl = get_markup_template('notifications.tpl'); - + $notif_content .= '' . ((strlen($sql_extra)) ? t('Show Ignored Requests') : t('Hide Ignored Requests')) . '
' . "\r\n"; @@ -189,12 +189,12 @@ function notifications_content(&$a) { '$as_friend' => t('Friend'), '$as_fan' => (($rr['network'] == NETWORK_DIASPORA) ? t('Sharer') : t('Fan/Admirer')) )); - } + } $notif_content .= replace_macros($tpl, array( '$str_notifytype' => t('Notification type: '), '$notify_type' => (($rr['network'] !== NETWORK_OSTATUS) ? t('Friend/Connect Request') : t('New Follower')), - '$dfrn_text' => $dfrn_text, + '$dfrn_text' => $dfrn_text, '$dfrn_id' => $rr['issued-id'], '$uid' => $_SESSION['uid'], '$intro_id' => $rr['intro_id'], @@ -221,14 +221,14 @@ function notifications_content(&$a) { '$tabs' => $tabs, '$notif_content' => $notif_content, )); - + $o .= paginate($a); return $o; - + } else if (($a->argc > 1) && ($a->argv[1] == 'network')) { - + $notif_tpl = get_markup_template('notifications.tpl'); - + $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` as `object`, `pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink` diff --git a/mod/parse_url.php b/mod/parse_url.php index e7481a25..3e172862 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -50,7 +50,7 @@ function completeurl($url, $scheme) { return($complete); } -function parseurl_getsiteinfo($url) { +function parseurl_getsiteinfo($url, $no_guessing = false) { $siteinfo = array(); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); @@ -184,7 +184,7 @@ function parseurl_getsiteinfo($url) { } } - if (@$siteinfo["image"] == "") { + if ((@$siteinfo["image"] == "") AND !$no_guessing) { $list = $xpath->query("//img[@src]"); foreach ($list as $node) { $attr = array(); @@ -223,7 +223,7 @@ function parseurl_getsiteinfo($url) { "height"=>$photodata[1]); } - if (@$siteinfo["text"] == "") { + if ((@$siteinfo["text"] == "") AND (@$siteinfo["title"] != "") AND !$no_guessing) { $text = ""; $list = $xpath->query("//div[@class='article']");