Once you've added some groups, <a href="help/Quick-Start-andfinally">move on to the next section</a>.
-<iframe src="http://dir.friendica.com/directory/forum" width="950" height="600"></iframe>
+<iframe src="http://dir.friendica.social/directory" width="950" height="600"></iframe>
return;
}
- Contact::terminateFriendship($r[0], $orig_record);
+ Contact::terminateFriendship($r[0], $orig_record, true);
Contact::remove($orig_record['id']);
}
$encrypted_id = '';
$id_str = $my_id . '.' . mt_rand(1000,9999);
- $prv_key = trim($importer['prvkey']);
- $pub_key = trim($importer['pubkey']);
+ $prv_key = trim($importer['cprvkey']);
+ $pub_key = trim($importer['cpubkey']);
$dplx = intval($importer['duplex']);
if (($dplx && strlen($prv_key)) || (strlen($prv_key) && !strlen($pub_key))) {
$local = Config::get('system','poco_local_search');
- $search = $prefix.notags(trim($_REQUEST['search']));
+ $search = $prefix.notags(trim(defaults($_REQUEST, 'search', '')));
$header = '';
$cid = (x($_POST, 'cid') ? intval($_POST['cid']) : 0);
$uid = local_user();
- $start_text = escape_tags($_REQUEST['start_text']);
- $finish_text = escape_tags($_REQUEST['finish_text']);
+ $start_text = escape_tags(defaults($_REQUEST, 'start_text', ''));
+ $finish_text = escape_tags(defaults($_REQUEST, 'finish_text', ''));
- $adjust = intval($_POST['adjust']);
- $nofinish = intval($_POST['nofinish']);
+ $adjust = intval(defaults($_POST, 'adjust', 0));
+ $nofinish = intval(defaults($_POST, 'nofinish', 0));
// The default setting for the `private` field in event_store() is false, so mirror that
$private_event = false;
// and we'll waste a bunch of time responding to it. Time that
// could've been spent doing something else.
- $summary = escape_tags(trim($_POST['summary']));
- $desc = escape_tags(trim($_POST['desc']));
- $location = escape_tags(trim($_POST['location']));
+ $summary = escape_tags(trim(defaults($_POST, 'summary', '')));
+ $desc = escape_tags(trim(defaults($_POST, 'desc', '')));
+ $location = escape_tags(trim(defaults($_POST, 'location', '')));
$type = 'event';
$action = ($event_id == '') ? 'new' : "event/" . $event_id;
goaway($onerror_url);
}
- $share = (intval($_POST['share']) ? intval($_POST['share']) : 0);
+ $share = intval(defaults($_POST, 'share', 0));
$c = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self` LIMIT 1",
intval(local_user())
$perms = ACL::getDefaultUserPermissions($orig_event);
- if ($mode === 'new' || $mode === 'copy') {
- $acl = ($cid ? '' : ACL::getFullSelectorHTML($a->user, false, $orig_event));
+ if (!$cid && in_array($mode, ['new', 'copy'])) {
+ $acl = ACL::getFullSelectorHTML($a->user, false, $orig_event);
+ } else {
+ $acl = '';
}
// If we copy an old event, we need to remove the ID and URI
use Friendica\Database\DBA;
use Friendica\Model\Item;
-function lockview_content(App $a) {
-
+function lockview_content(App $a)
+{
$type = (($a->argc > 1) ? $a->argv[1] : 0);
if (is_numeric($type)) {
$item_id = intval($type);
- $type='item';
+ $type = 'item';
} else {
$item_id = (($a->argc > 2) ? intval($a->argv[2]) : 0);
}
- if (!$item_id)
+ if (!$item_id) {
killme();
+ }
- if (!in_array($type, ['item','photo','event']))
+ if (!in_array($type, ['item','photo','event'])) {
killme();
+ }
- $fields = ['uid', 'private', 'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid'];
+ $fields = ['uid', 'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid'];
$condition = ['id' => $item_id];
+
if ($type != 'item') {
$item = DBA::selectFirst($type, $fields, $condition);
} else {
+ $fields[] = 'private';
$item = Item::selectFirst($fields, $condition);
}
killme();
}
-
- if (($item['private'] == 1) && empty($item['allow_cid']) && empty($item['allow_gid'])
- && empty($item['deny_cid']) && empty($item['deny_gid'])) {
-
+ if ($item['private'] == 1
+ && empty($item['allow_cid'])
+ && empty($item['allow_gid'])
+ && empty($item['deny_cid'])
+ && empty($item['deny_gid']))
+ {
echo L10n::t('Remote privacy information not available.') . '<br />';
killme();
}
- $allowed_users = expand_acl($item['allow_cid']);
+ $allowed_users = expand_acl($item['allow_cid']);
$allowed_groups = expand_acl($item['allow_gid']);
- $deny_users = expand_acl($item['deny_cid']);
- $deny_groups = expand_acl($item['deny_gid']);
+ $deny_users = expand_acl($item['deny_cid']);
+ $deny_groups = expand_acl($item['deny_gid']);
$o = L10n::t('Visible to:') . '<br />';
$l = [];
$r = q("SELECT `name` FROM `group` WHERE `id` IN ( %s )",
DBA::escape(implode(', ', $allowed_groups))
);
- if (DBA::isResult($r))
- foreach($r as $rr)
+ if (DBA::isResult($r)) {
+ foreach ($r as $rr) {
$l[] = '<b>' . $rr['name'] . '</b>';
+ }
+ }
}
+
if (count($allowed_users)) {
$r = q("SELECT `name` FROM `contact` WHERE `id` IN ( %s )",
- DBA::escape(implode(', ',$allowed_users))
+ DBA::escape(implode(', ', $allowed_users))
);
- if (DBA::isResult($r))
- foreach($r as $rr)
+ if (DBA::isResult($r)) {
+ foreach ($r as $rr) {
$l[] = $rr['name'];
-
+ }
+ }
}
if (count($deny_groups)) {
$r = q("SELECT `name` FROM `group` WHERE `id` IN ( %s )",
DBA::escape(implode(', ', $deny_groups))
);
- if (DBA::isResult($r))
- foreach($r as $rr)
+ if (DBA::isResult($r)) {
+ foreach ($r as $rr) {
$l[] = '<b><strike>' . $rr['name'] . '</strike></b>';
+ }
+ }
}
+
if (count($deny_users)) {
$r = q("SELECT `name` FROM `contact` WHERE `id` IN ( %s )",
- DBA::escape(implode(', ',$deny_users))
+ DBA::escape(implode(', ', $deny_users))
);
- if (DBA::isResult($r))
- foreach($r as $rr)
+ if (DBA::isResult($r)) {
+ foreach ($r as $rr) {
$l[] = '<strike>' . $rr['name'] . '</strike>';
-
+ }
+ }
}
echo $o . implode(', ', $l);
$perpage = 20;
$startrec = ($page * $perpage) - $perpage;
+ $notif_header = L10n::t('Notifications');
+
// Get introductions
if ((($a->argc > 1) && ($a->argv[1] == 'intros')) || (($a->argc == 1))) {
Nav::setSelected('introductions');
- $notif_header = L10n::t('Notifications');
$all = (($a->argc > 2) && ($a->argv[2] == 'all'));
$notif_tpl = get_markup_template('notifications.tpl');
- if (!isset($notifs['ident'])) {
- logger('Missing data in notifs: ' . json_encode($a->argv), LOGGER_DEBUG);
- }
-
// Process the data for template creation
- if ($notifs['ident'] === 'introductions') {
+ if (defaults($notifs, 'ident', '') === 'introductions') {
$sugg = get_markup_template('suggestions.tpl');
$tpl = get_markup_template("intros.tpl");
}
// Normal notifications (no introductions)
- } else {
+ } elseif (!empty($notifs['notifications'])) {
// The template files we need in different cases for formatting the content
$tpl_item_like = 'notifications_likes_item.tpl';
$tpl_item_dislike = 'notifications_dislikes_item.tpl';
* information and does format this information to BBCode
*
* @see ParseUrl::getSiteinfo() for more information about scraping embeddable content
-*/
-
+ */
use Friendica\App;
use Friendica\Core\Addon;
use Friendica\Util\Network;
use Friendica\Util\ParseUrl;
-require_once("include/items.php");
-
-function parse_url_content(App $a) {
+require_once 'include/items.php';
+function parse_url_content(App $a)
+{
$text = null;
- $str_tags = "";
+ $str_tags = '';
$br = "\n";
- if (!empty($_GET["binurl"])) {
- $url = trim(hex2bin($_GET["binurl"]));
+ if (!empty($_GET['binurl'])) {
+ $url = trim(hex2bin($_GET['binurl']));
} else {
- $url = trim($_GET["url"]);
+ $url = trim($_GET['url']);
}
- if (!empty($_GET["title"])) {
- $title = strip_tags(trim($_GET["title"]));
+ if (!empty($_GET['title'])) {
+ $title = strip_tags(trim($_GET['title']));
}
- if (!empty($_GET["description"])) {
- $text = strip_tags(trim($_GET["description"]));
+ if (!empty($_GET['description'])) {
+ $text = strip_tags(trim($_GET['description']));
}
- if (!empty($_GET["tags"])) {
- $arr_tags = ParseUrl::convertTagsToArray($_GET["tags"]);
+ if (!empty($_GET['tags'])) {
+ $arr_tags = ParseUrl::convertTagsToArray($_GET['tags']);
if (count($arr_tags)) {
- $str_tags = $br . implode(" ", $arr_tags) . $br;
+ $str_tags = $br . implode(' ', $arr_tags) . $br;
}
}
// Add url scheme if it is missing
$arrurl = parse_url($url);
- if (!x($arrurl, "scheme")) {
- if (x($arrurl, "host")) {
- $url = "http:".$url;
+ if (!x($arrurl, 'scheme')) {
+ if (x($arrurl, 'host')) {
+ $url = 'http:' . $url;
} else {
- $url = "http://".$url;
+ $url = 'http://' . $url;
}
}
- logger("prse_url: " . $url);
+ logger($url);
// Check if the URL is an image, video or audio file. If so format
// the URL with the corresponding BBCode media tag
$redirects = 0;
// Fetch the header of the URL
- $result = Network::curl($url, false, $redirects, ["novalidate" => true, "nobody" => true]);
- if($result["success"]) {
+ $result = Network::curl($url, false, $redirects, ['novalidate' => true, 'nobody' => true]);
+
+ if ($result['success']) {
// Convert the header fields into an array
$hdrs = [];
- $h = explode("\n", $result["header"]);
+ $h = explode("\n", $result['header']);
foreach ($h as $l) {
- $header = array_map("trim", explode(":", trim($l), 2));
+ $header = array_map('trim', explode(':', trim($l), 2));
if (count($header) == 2) {
- list($k,$v) = $header;
+ list($k, $v) = $header;
$hdrs[$k] = $v;
}
}
- if (array_key_exists("Content-Type", $hdrs)) {
- $type = $hdrs["Content-Type"];
+ if (array_key_exists('Content-Type', $hdrs)) {
+ $type = $hdrs['Content-Type'];
}
if ($type) {
- if(stripos($type, "image/") !== false) {
- echo $br . "[img]" . $url . "[/img]" . $br;
- killme();
+ if (stripos($type, 'image/') !== false) {
+ echo $br . '[img]' . $url . '[/img]' . $br;
+ exit();
}
- if (stripos($type, "video/") !== false) {
- echo $br . "[video]" . $url . "[/video]" . $br;
- killme();
+ if (stripos($type, 'video/') !== false) {
+ echo $br . '[video]' . $url . '[/video]' . $br;
+ exit();
}
- if (stripos($type, "audio/") !== false) {
- echo $br . "[audio]" . $url . "[/audio]" . $br;
- killme();
+ if (stripos($type, 'audio/') !== false) {
+ echo $br . '[audio]' . $url . '[/audio]' . $br;
+ exit();
}
}
}
- $template = "[bookmark=%s]%s[/bookmark]%s";
+ $template = '[bookmark=%s]%s[/bookmark]%s';
- $arr = ["url" => $url, "text" => ""];
+ $arr = ['url' => $url, 'text' => ''];
- Addon::callHooks("parse_link", $arr);
+ Addon::callHooks('parse_link', $arr);
- if (strlen($arr["text"])) {
- echo $arr["text"];
- killme();
+ if (strlen($arr['text'])) {
+ echo $arr['text'];
+ exit();
}
// If there is already some content information submitted we don't
// need to parse the url for content.
if (!empty($url) && !empty($title) && !empty($text)) {
+ $title = str_replace(["\r", "\n"], ['', ''], $title);
- $title = str_replace(["\r","\n"],["",""],$title);
-
- $text = "[quote]" . trim($text) . "[/quote]" . $br;
+ $text = '[quote]' . trim($text) . '[/quote]' . $br;
$result = sprintf($template, $url, ($title) ? $title : $url, $text) . $str_tags;
- logger("parse_url (unparsed): returns: " . $result);
+ logger('(unparsed): returns: ' . $result);
echo $result;
- killme();
+ exit();
}
// Fetch the information directly from the webpage
$siteinfo = ParseUrl::getSiteinfo($url);
- unset($siteinfo["keywords"]);
+ unset($siteinfo['keywords']);
// Format it as BBCode attachment
$info = add_page_info_data($siteinfo);
echo $info;
- killme();
+ exit();
}
/**
* @todo Remove this function after all Addons has been changed to use
* ParseUrl::getSiteinfoCached
*/
-function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = true) {
+function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = true)
+{
$siteinfo = ParseUrl::getSiteinfoCached($url, $no_guessing, $do_oembed);
return $siteinfo;
}
// NOTREACHED
}
- if ($_REQUEST['cancel']) {
+ if (!empty($_REQUEST['cancel'])) {
goaway($return_url);
}
$uid = local_user();
$url = notags(trim(defaults($_REQUEST, 'url', '')));
- $condition = ["`uid` = ? AND (`rel` = ? OR `rel` = ?) AND (`nurl` = ? OR `alias` = ? OR `alias` = ?) AND `network` != ?",
+ $condition = ["`uid` = ? AND (`rel` = ? OR `rel` = ?) AND (`nurl` = ? OR `alias` = ? OR `alias` = ?)",
$uid, Contact::SHARING, Contact::FRIEND, normalise_link($url),
normalise_link($url), $url];
$contact = DBA::selectFirst('contact', [], $condition);
// NOTREACHED
}
+ $dissolve = ($contact['rel'] == Contact::SHARING);
+
$owner = User::getOwnerDataById($uid);
if ($owner) {
- Contact::terminateFriendship($owner, $contact);
+ Contact::terminateFriendship($owner, $contact, $dissolve);
}
// Sharing-only contacts get deleted as there no relationship any more
- if ($contact['rel'] == Contact::SHARING) {
+ if ($dissolve) {
Contact::remove($contact['id']);
$return_path = 'contacts';
} else {
$meminfo = [];
foreach ($memdata as $line) {
- list($key, $val) = explode(':', $line);
+ $data = explode(':', $line);
+ if (count($data) != 2) {
+ continue;
+ }
+ list($key, $val) = $data;
$meminfo[$key] = (int) trim(str_replace('kB', '', $val));
$meminfo[$key] = (int) ($meminfo[$key] / 1024);
}
$return .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-preview" /></a><br />', $data["url"], self::proxyUrl($data["preview"], $simplehtml), $data["title"]);
}
- if (($data["type"] == "photo") && !empty($data["url"]) && !empty($data["image"])) {
- $return .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-image" /></a>', $data["url"], self::proxyUrl($data["image"], $simplehtml), $data["title"]);
- } else {
+ if (!empty($data['title']) && !empty($data['url'])) {
$return .= sprintf('<h4><a href="%s">%s</a></h4>', $data['url'], $data['title']);
}
$bbcode = HTML::toBBCode($data["description"]);
$return .= sprintf('<blockquote>%s</blockquote>', trim(self::convert($bbcode)));
}
- if ($data["type"] == "link") {
+
+ if (!empty($data['url'])) {
$return .= sprintf('<sup><a href="%s">%s</a></sup>', $data['url'], parse_url($data['url'], PHP_URL_HOST));
}
use Friendica\Network\Probe;
use Friendica\Object\Image;
use Friendica\Protocol\Diaspora;
+use Friendica\Protocol\DFRN;
use Friendica\Protocol\OStatus;
use Friendica\Protocol\PortableContact;
use Friendica\Protocol\Salmon;
/**
* @brief Sends an unfriend message. Does not remove the contact
*
- * @param array $user User unfriending
- * @param array $contact Contact unfriended
+ * @param array $user User unfriending
+ * @param array $contact Contact unfriended
+ * @param boolean $dissolve Remove the contact on the remote side
* @return void
*/
- public static function terminateFriendship(array $user, array $contact)
+ public static function terminateFriendship(array $user, array $contact, $dissolve = false)
{
- if (in_array($contact['network'], [Protocol::OSTATUS, Protocol::DFRN])) {
+ if (($contact['network'] == Protocol::DFRN) && $dissolve) {
+ DFRN::deliver($user, $contact, 'placeholder', true);
+ } elseif (in_array($contact['network'], [Protocol::OSTATUS, Protocol::DFRN])) {
// create an unfollow slap
$item = [];
$item['verb'] = NAMESPACE_OSTATUS . "/unfollow";
use Friendica\Core\PConfig;
use Friendica\Core\System;
use Friendica\Database\DBA;
+use Friendica\Model\Contact;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Map;
$title = strip_tags(html_entity_decode($title, ENT_QUOTES, 'UTF-8'));
}
+ $author_link = $event['author-link'];
+ $plink = $event['plink'];
+
+ $event['author-link'] = Contact::magicLink($author_link);
+ $event['plink'] = Contact::magicLink($author_link, $plink);
+
$html = self::getHTML($event);
$event['desc'] = BBCode::convert($event['desc']);
$event['location'] = BBCode::convert($event['location']);
return [];
}
- $user['importer_uid'] = $user['uid'];
+ $user['importer_uid'] = $user['uid'];
+ $user['uprvkey'] = $user['prvkey'];
} else {
$user = ['importer_uid' => 0, 'uprvkey' => '', 'timezone' => 'UTC',
'nickname' => '', 'sprvkey' => '', 'spubkey' => '',
$a = get_app();
// At first try the Diaspora transport layer
- $ret = self::transmit($owner, $contact, $atom);
- if ($ret >= 200) {
- logger('Delivery via Diaspora transport layer was successful with status ' . $ret);
- return $ret;
+ if (!$dissolve) {
+ $ret = self::transmit($owner, $contact, $atom);
+ if ($ret >= 200) {
+ logger('Delivery via Diaspora transport layer was successful with status ' . $ret);
+ return $ret;
+ }
}
$idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
$key = $key($sig_block['keyId']);
}
+ logger('Got keyID ' . $sig_block['keyId']);
+
// We don't use Activity Pub at the moment.
// if (!$key) {
// $result['signer'] = $sig_block['keyId'];
// Check if the URL does contain a scheme
$scheme = parse_url($url, PHP_URL_SCHEME);
- if ($scheme == "") {
- $url = "http://".trim($url, "/");
+ if ($scheme == '') {
+ $url = 'http://' . trim($url, '/');
}
if ($count > 10) {
- logger("parseurl_getsiteinfo: Endless loop detected for ".$url, LOGGER_DEBUG);
- return($siteinfo);
+ logger('Endless loop detected for ' . $url, LOGGER_DEBUG);
+ return $siteinfo;
}
$url = trim($url, "'");
$url = Network::stripTrackingQueryParams($url);
- $siteinfo["url"] = $url;
- $siteinfo["type"] = "link";
+ $siteinfo['url'] = $url;
+ $siteinfo['type'] = 'link';
$data = Network::curl($url);
if (!$data['success']) {
- return($siteinfo);
+ return $siteinfo;
}
// If the file is too large then exit
- if ($data["info"]["download_content_length"] > 1000000) {
- return($siteinfo);
+ if ($data['info']['download_content_length'] > 1000000) {
+ return $siteinfo;
}
// If it isn't a HTML file then exit
- if (($data["info"]["content_type"] != "") && !strstr(strtolower($data["info"]["content_type"]), "html")) {
- return($siteinfo);
+ if (($data['info']['content_type'] != '') && !strstr(strtolower($data['info']['content_type']), 'html')) {
+ return $siteinfo;
}
- $header = $data["header"];
- $body = $data["body"];
+ $header = $data['header'];
+ $body = $data['body'];
if ($do_oembed) {
$oembed_data = OEmbed::fetchURL($url);
if (!empty($oembed_data->type)) {
- if (!in_array($oembed_data->type, ["error", "rich", ""])) {
- $siteinfo["type"] = $oembed_data->type;
+ if (!in_array($oembed_data->type, ['error', 'rich', ''])) {
+ $siteinfo['type'] = $oembed_data->type;
}
- if (($oembed_data->type == "link") && ($siteinfo["type"] != "photo")) {
+ if (($oembed_data->type == 'link') && ($siteinfo['type'] != 'photo')) {
if (isset($oembed_data->title)) {
- $siteinfo["title"] = trim($oembed_data->title);
+ $siteinfo['title'] = trim($oembed_data->title);
}
if (isset($oembed_data->description)) {
- $siteinfo["text"] = trim($oembed_data->description);
+ $siteinfo['text'] = trim($oembed_data->description);
}
if (isset($oembed_data->thumbnail_url)) {
- $siteinfo["image"] = $oembed_data->thumbnail_url;
+ $siteinfo['image'] = $oembed_data->thumbnail_url;
}
}
}
}
// Fetch the first mentioned charset. Can be in body or header
- $charset = "";
- if (preg_match('/charset=(.*?)['."'".'"\s\n]/', $header, $matches)) {
+ $charset = '';
+ if (preg_match('/charset=(.*?)[\'"\s\n]/', $header, $matches)) {
$charset = trim(trim(trim(array_pop($matches)), ';,'));
}
- if ($charset == "") {
- $charset = "utf-8";
+ if ($charset == '') {
+ $charset = 'utf-8';
}
- if (($charset != "") && (strtoupper($charset) != "UTF-8")) {
- logger("parseurl_getsiteinfo: detected charset ".$charset, LOGGER_DEBUG);
- //$body = mb_convert_encoding($body, "UTF-8", $charset);
- $body = iconv($charset, "UTF-8//TRANSLIT", $body);
+ if (($charset != '') && (strtoupper($charset) != 'UTF-8')) {
+ logger('detected charset ' . $charset, LOGGER_DEBUG);
+ $body = iconv($charset, 'UTF-8//TRANSLIT', $body);
}
- $body = mb_convert_encoding($body, 'HTML-ENTITIES', "UTF-8");
+ $body = mb_convert_encoding($body, 'HTML-ENTITIES', 'UTF-8');
$doc = new DOMDocument();
@$doc->loadHTML($body);
- XML::deleteNode($doc, "style");
- XML::deleteNode($doc, "script");
- XML::deleteNode($doc, "option");
- XML::deleteNode($doc, "h1");
- XML::deleteNode($doc, "h2");
- XML::deleteNode($doc, "h3");
- XML::deleteNode($doc, "h4");
- XML::deleteNode($doc, "h5");
- XML::deleteNode($doc, "h6");
- XML::deleteNode($doc, "ol");
- XML::deleteNode($doc, "ul");
+ XML::deleteNode($doc, 'style');
+ XML::deleteNode($doc, 'script');
+ XML::deleteNode($doc, 'option');
+ XML::deleteNode($doc, 'h1');
+ XML::deleteNode($doc, 'h2');
+ XML::deleteNode($doc, 'h3');
+ XML::deleteNode($doc, 'h4');
+ XML::deleteNode($doc, 'h5');
+ XML::deleteNode($doc, 'h6');
+ XML::deleteNode($doc, 'ol');
+ XML::deleteNode($doc, 'ul');
$xpath = new DOMXPath($doc);
- $list = $xpath->query("//meta[@content]");
+ $list = $xpath->query('//meta[@content]');
foreach ($list as $node) {
- $attr = [];
+ $meta_tag = [];
if ($node->attributes->length) {
foreach ($node->attributes as $attribute) {
- $attr[$attribute->name] = $attribute->value;
+ $meta_tag[$attribute->name] = $attribute->value;
}
}
- if (@$attr["http-equiv"] == "refresh") {
- $path = $attr["content"];
- $pathinfo = explode(";", $path);
- $content = "";
+ if (@$meta_tag['http-equiv'] == 'refresh') {
+ $path = $meta_tag['content'];
+ $pathinfo = explode(';', $path);
+ $content = '';
foreach ($pathinfo as $value) {
- if (substr(strtolower($value), 0, 4) == "url=") {
+ if (substr(strtolower($value), 0, 4) == 'url=') {
$content = substr($value, 4);
}
}
- if ($content != "") {
+ if ($content != '') {
$siteinfo = self::getSiteinfo($content, $no_guessing, $do_oembed, ++$count);
- return($siteinfo);
+ return $siteinfo;
}
}
}
- $list = $xpath->query("//title");
+ $list = $xpath->query('//title');
if ($list->length > 0) {
- $siteinfo["title"] = trim($list->item(0)->nodeValue);
+ $siteinfo['title'] = trim($list->item(0)->nodeValue);
}
- //$list = $xpath->query("head/meta[@name]");
- $list = $xpath->query("//meta[@name]");
+ $list = $xpath->query('//meta[@name]');
foreach ($list as $node) {
- $attr = [];
+ $meta_tag = [];
if ($node->attributes->length) {
foreach ($node->attributes as $attribute) {
- $attr[$attribute->name] = $attribute->value;
+ $meta_tag[$attribute->name] = $attribute->value;
}
}
- if (!empty($attr["content"])) {
- $attr["content"] = trim(html_entity_decode($attr["content"], ENT_QUOTES, "UTF-8"));
-
- switch (strtolower($attr["name"])) {
- case "fulltitle":
- $siteinfo["title"] = trim($attr["content"]);
- break;
- case "description":
- $siteinfo["text"] = trim($attr["content"]);
- break;
- case "thumbnail":
- $siteinfo["image"] = $attr["content"];
- break;
- case "twitter:image":
- $siteinfo["image"] = $attr["content"];
- break;
- case "twitter:image:src":
- $siteinfo["image"] = $attr["content"];
- break;
- case "twitter:card":
- if (($siteinfo["type"] == "") || ($attr["content"] == "photo")) {
- $siteinfo["type"] = $attr["content"];
- }
- break;
- case "twitter:description":
- $siteinfo["text"] = trim($attr["content"]);
- break;
- case "twitter:title":
- $siteinfo["title"] = trim($attr["content"]);
- break;
- case "dc.title":
- $siteinfo["title"] = trim($attr["content"]);
- break;
- case "dc.description":
- $siteinfo["text"] = trim($attr["content"]);
- break;
- case "keywords":
- $keywords = explode(",", $attr["content"]);
- break;
- case "news_keywords":
- $keywords = explode(",", $attr["content"]);
- break;
- }
+ if (empty($meta_tag['content'])) {
+ continue;
}
- if ($siteinfo["type"] == "summary") {
- $siteinfo["type"] = "link";
+
+ $meta_tag['content'] = trim(html_entity_decode($meta_tag['content'], ENT_QUOTES, 'UTF-8'));
+
+ switch (strtolower($meta_tag['name'])) {
+ case 'fulltitle':
+ $siteinfo['title'] = trim($meta_tag['content']);
+ break;
+ case 'description':
+ $siteinfo['text'] = trim($meta_tag['content']);
+ break;
+ case 'thumbnail':
+ $siteinfo['image'] = $meta_tag['content'];
+ break;
+ case 'twitter:image':
+ $siteinfo['image'] = $meta_tag['content'];
+ break;
+ case 'twitter:image:src':
+ $siteinfo['image'] = $meta_tag['content'];
+ break;
+ case 'twitter:card':
+ // Obsolete card type
+ if ($meta_tag['content'] == 'photo') {
+ $siteinfo['type'] = 'summary_large_image';
+ } else {
+ $siteinfo['type'] = $meta_tag['content'];
+ }
+ break;
+ case 'twitter:description':
+ $siteinfo['text'] = trim($meta_tag['content']);
+ break;
+ case 'twitter:title':
+ $siteinfo['title'] = trim($meta_tag['content']);
+ break;
+ case 'dc.title':
+ $siteinfo['title'] = trim($meta_tag['content']);
+ break;
+ case 'dc.description':
+ $siteinfo['text'] = trim($meta_tag['content']);
+ break;
+ case 'keywords':
+ $keywords = explode(',', $meta_tag['content']);
+ break;
+ case 'news_keywords':
+ $keywords = explode(',', $meta_tag['content']);
+ break;
}
}
+ if ($siteinfo['type'] == 'summary' || $siteinfo['type'] == 'summary_large_image') {
+ $siteinfo['type'] = 'link';
+ }
+
if (isset($keywords)) {
- $siteinfo["keywords"] = [];
+ $siteinfo['keywords'] = [];
foreach ($keywords as $keyword) {
- if (!in_array(trim($keyword), $siteinfo["keywords"])) {
- $siteinfo["keywords"][] = trim($keyword);
+ if (!in_array(trim($keyword), $siteinfo['keywords'])) {
+ $siteinfo['keywords'][] = trim($keyword);
}
}
}
- //$list = $xpath->query("head/meta[@property]");
- $list = $xpath->query("//meta[@property]");
+ $list = $xpath->query('//meta[@property]');
foreach ($list as $node) {
- $attr = [];
+ $meta_tag = [];
if ($node->attributes->length) {
foreach ($node->attributes as $attribute) {
- $attr[$attribute->name] = $attribute->value;
+ $meta_tag[$attribute->name] = $attribute->value;
}
}
- if (!empty($attr["content"])) {
- $attr["content"] = trim(html_entity_decode($attr["content"], ENT_QUOTES, "UTF-8"));
+ if (!empty($meta_tag['content'])) {
+ $meta_tag['content'] = trim(html_entity_decode($meta_tag['content'], ENT_QUOTES, 'UTF-8'));
- switch (strtolower($attr["property"])) {
- case "og:image":
- $siteinfo["image"] = $attr["content"];
+ switch (strtolower($meta_tag['property'])) {
+ case 'og:image':
+ $siteinfo['image'] = $meta_tag['content'];
break;
- case "og:title":
- $siteinfo["title"] = trim($attr["content"]);
+ case 'og:title':
+ $siteinfo['title'] = trim($meta_tag['content']);
break;
- case "og:description":
- $siteinfo["text"] = trim($attr["content"]);
+ case 'og:description':
+ $siteinfo['text'] = trim($meta_tag['content']);
break;
}
}
}
- if ((@$siteinfo["image"] == "") && !$no_guessing) {
- $list = $xpath->query("//img[@src]");
+ if ((@$siteinfo['image'] == '') && !$no_guessing) {
+ $list = $xpath->query('//img[@src]');
foreach ($list as $node) {
- $attr = [];
+ $img_tag = [];
if ($node->attributes->length) {
foreach ($node->attributes as $attribute) {
- $attr[$attribute->name] = $attribute->value;
+ $img_tag[$attribute->name] = $attribute->value;
}
}
- $src = self::completeUrl($attr["src"], $url);
+ $src = self::completeUrl($img_tag['src'], $url);
$photodata = Image::getInfoFromURL($src);
if (($photodata) && ($photodata[0] > 150) && ($photodata[1] > 150)) {
$photodata[0] = round($photodata[0] * (300 / $photodata[1]));
$photodata[1] = 300;
}
- $siteinfo["images"][] = ["src" => $src,
- "width" => $photodata[0],
- "height" => $photodata[1]];
+ $siteinfo['images'][] = [
+ 'src' => $src,
+ 'width' => $photodata[0],
+ 'height' => $photodata[1]
+ ];
}
}
- } elseif (!empty($siteinfo["image"])) {
- $src = self::completeUrl($siteinfo["image"], $url);
+ } elseif (!empty($siteinfo['image'])) {
+ $src = self::completeUrl($siteinfo['image'], $url);
- unset($siteinfo["image"]);
+ unset($siteinfo['image']);
$photodata = Image::getInfoFromURL($src);
if (($photodata) && ($photodata[0] > 10) && ($photodata[1] > 10)) {
- $siteinfo["images"][] = ["src" => $src,
- "width" => $photodata[0],
- "height" => $photodata[1]];
+ $siteinfo['images'][] = ['src' => $src,
+ 'width' => $photodata[0],
+ 'height' => $photodata[1]];
}
}
- if ((@$siteinfo["text"] == "") && (@$siteinfo["title"] != "") && !$no_guessing) {
- $text = "";
+ if ((@$siteinfo['text'] == '') && (@$siteinfo['title'] != '') && !$no_guessing) {
+ $text = '';
- $list = $xpath->query("//div[@class='article']");
+ $list = $xpath->query('//div[@class="article"]');
foreach ($list as $node) {
if (strlen($node->nodeValue) > 40) {
- $text .= " ".trim($node->nodeValue);
+ $text .= ' ' . trim($node->nodeValue);
}
}
- if ($text == "") {
- $list = $xpath->query("//div[@class='content']");
+ if ($text == '') {
+ $list = $xpath->query('//div[@class="content"]');
foreach ($list as $node) {
if (strlen($node->nodeValue) > 40) {
- $text .= " ".trim($node->nodeValue);
+ $text .= ' ' . trim($node->nodeValue);
}
}
}
// If none text was found then take the paragraph content
- if ($text == "") {
- $list = $xpath->query("//p");
+ if ($text == '') {
+ $list = $xpath->query('//p');
foreach ($list as $node) {
if (strlen($node->nodeValue) > 40) {
- $text .= " ".trim($node->nodeValue);
+ $text .= ' ' . trim($node->nodeValue);
}
}
}
- if ($text != "") {
- $text = trim(str_replace(["\n", "\r"], [" ", " "], $text));
+ if ($text != '') {
+ $text = trim(str_replace(["\n", "\r"], [' ', ' '], $text));
- while (strpos($text, " ")) {
- $text = trim(str_replace(" ", " ", $text));
+ while (strpos($text, ' ')) {
+ $text = trim(str_replace(' ', ' ', $text));
}
- $siteinfo["text"] = trim(html_entity_decode(substr($text, 0, 350), ENT_QUOTES, "UTF-8").'...');
+ $siteinfo['text'] = trim(html_entity_decode(substr($text, 0, 350), ENT_QUOTES, 'UTF-8') . '...');
}
}
- logger("parseurl_getsiteinfo: Siteinfo for ".$url." ".print_r($siteinfo, true), LOGGER_DEBUG);
+ logger('Siteinfo for ' . $url . ' ' . print_r($siteinfo, true), LOGGER_DEBUG);
- Addon::callHooks("getsiteinfo", $siteinfo);
+ Addon::callHooks('getsiteinfo', $siteinfo);
- return($siteinfo);
+ return $siteinfo;
}
/**
return;
}
foreach ($r as $contact) {
- Contact::terminateFriendship($user, $contact);
+ Contact::terminateFriendship($user, $contact, true);
}
return;
} elseif ($cmd == Delivery::RELOCATION) {
}).trigger('change');
+ // Click event listener for the album edit link/button.
+ $("body").on('click', '#album-edit-link', function() {
+ var modalUrl = $(this).attr("data-modal-url");
+ if (typeof modalUrl !== "undefined") {
+ addToModal(modalUrl, 'photo-album-edit-wrapper');
+ }
+ });
});
$(window).load(function() {
}
}
-// This function loads html content from a friendica page
-// into a modal.
-function addToModal(url) {
+
+/**
+ * This function loads html content from a friendica page into a modal.
+ *
+ * @param {string} url The url with html content.
+ * @param {string} id The ID of a html element (can be undefined).
+ * @returns {void}
+ */
+function addToModal(url, id) {
var char = qOrAmp(url);
url = url + char + 'mode=none';
var modal = $('#modal').modal();
+ // Only search for an element if we have an ID.
+ if (typeof id !== "undefined") {
+ url = url + " div#" + id;
+ }
+
modal
.find('#modal-body')
.load(url, function (responseText, textStatus) {
});
}
-// Add a element (by it's id) to a bootstrap modal.
+// Add an element (by its id) to a bootstrap modal.
function addElmToModal(id) {
var elm = $(id).html();
var modal = $('#modal').modal();
<div id="photo-album-edit-wrapper">
-<form name="photo-album-edit-form" id="photo-album-edit-form" action="photos/{{$nickname}}/album/{{$hexalbum}}" method="post" >
- <label id="photo-album-edit-name-label" for="photo-album-edit-name" >{{$nametext}}</label>
- <div class="pull-left photo-album-edit-name">
- <input class="form-control" type="text" size="64" name="albumname" value="{{$album|escape:'html'}}" id="photo-album-edit-name" style="width: 100%;">
- </div>
-
- <div class="pull-right">
- <input class="btn-primary btn btn-small" id="photo-album-edit-submit" type="submit" name="submit" value="{{$submit|escape:'html'}}" />
- <input class="btn-primary btn btn-small" id="photo-album-edit-drop" type="submit" name="dropalbum" value="{{$dropsubmit|escape:'html'}}" onclick="return confirmDelete();" />
- </div>
-</form>
+ <form name="photo-album-edit-form" id="photo-album-edit-form" action="photos/{{$nickname}}/album/{{$hexalbum}}" method="post" >
+ <label id="photo-album-edit-name-label" for="photo-album-edit-name" >{{$nametext}}</label>
+ <div class="pull-left photo-album-edit-name">
+ <input class="form-control" type="text" size="64" name="albumname" value="{{$album|escape:'html'}}" id="photo-album-edit-name">
+ </div>
+
+ <div class="pull-right">
+ <input class="btn-primary btn btn-small" id="photo-album-edit-submit" type="submit" name="submit" value="{{$submit|escape:'html'}}" />
+ <input class="btn-primary btn btn-small" id="photo-album-edit-drop" type="submit" name="dropalbum" value="{{$dropsubmit|escape:'html'}}" onclick="return confirmDelete();" />
+ </div>
+ </form>
+ <div class="clear"></div>
</div>
<div class="clear"></div>
{{include file="section_title.tpl" title=$title pullright=1}}
{{* The link to create a new event *}}
+ {{if $new_event.0}}
<div class="pull-right" id="new-event-link">
<button type="button" class="btn-link page-action faded-icon" onclick="addToModal('{{$new_event.0}}')" title="{{$new_event.1}}" data-toggle="tooltip">
<i class="fa fa-plus"></i>
</button>
</div>
+ {{/if}}
{{* We create our own fullcallendar header (with title & calendar view *}}
<div id="fc-header" class="clear">
{{if $edit}}
<span class="icon-padding"> </span>
- <a id="album-edit-link" class="page-action faded-icon" href="{{$edit.1}}" title="{{$edit.0}}" data-toggle="tooltip">
+ <button id="album-edit-link" class="btn-link page-action faded-icon" type="button" data-modal-url="{{$edit.1}}" title="{{$edit.0}}" data-toggle="tooltip">
<i class="fa fa-pencil"></i>
- </a>
+ </button>
{{/if}}
{{if ! $noorder}}
/*
* Name: frio
* Description: Bootstrap V3 theme. The theme is currently under construction, so it is far from finished. For further information have a look at the <a href="https://github.com/friendica/friendica/tree/develop/view/theme/frio/README.md">ReadMe</a>.
- * Version: V.0.8
+ * Version: V.0.8.5
* Author: Rabuzarus <https://friendica.kommune4.de/profile/rabuzarus>
*
*/