diff --git a/.gitignore b/.gitignore index 038ac32a5..bf4bd454b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ favicon.* home.html addon *~ +robots.txt #ignore documentation, it should be newly built doc/api diff --git a/boot.php b/boot.php index cd6f6a8d8..200ce2817 100644 --- a/boot.php +++ b/boot.php @@ -14,8 +14,7 @@ require_once('include/features.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_VERSION', '3.1.1618' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1159 ); - +define ( 'DB_UPDATE_VERSION', 1162 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); @@ -204,10 +203,12 @@ define ( 'NOTIFY_SYSTEM', 0x8000 ); define ( 'TERM_UNKNOWN', 0 ); define ( 'TERM_HASHTAG', 1 ); -define ( 'TERM_MENTION', 2 ); +define ( 'TERM_MENTION', 2 ); define ( 'TERM_CATEGORY', 3 ); define ( 'TERM_PCATEGORY', 4 ); define ( 'TERM_FILE', 5 ); +define ( 'TERM_SAVEDSEARCH', 6 ); +define ( 'TERM_CONVERSATION', 7 ); define ( 'TERM_OBJ_POST', 1 ); define ( 'TERM_OBJ_PHOTO', 2 ); @@ -355,7 +356,8 @@ if(! class_exists('App')) { public $identities; public $is_mobile; public $is_tablet; - + public $performance = array(); + public $nav_sel; public $category; @@ -403,7 +405,7 @@ if(! class_exists('App')) { private $cached_profile_image; private $cached_profile_picdate; - + function __construct() { global $default_timezone, $argv, $argc; @@ -412,6 +414,14 @@ if(! class_exists('App')) { date_default_timezone_set($this->timezone); + $this->performance["start"] = microtime(true); + $this->performance["database"] = 0; + $this->performance["network"] = 0; + $this->performance["rendering"] = 0; + $this->performance["parser"] = 0; + $this->performance["marktime"] = 0; + $this->performance["markstart"] = microtime(true); + $this->config = array(); $this->page = array(); $this->pager= array(); @@ -719,6 +729,17 @@ if(! class_exists('App')) { return $this->rdelim[$engine]; } + function save_timestamp($stamp, $value) { + $duration = (float)(microtime(true)-$stamp); + + $this->performance[$value] += (float)$duration; + $this->performance["marktime"] += (float)$duration; + } + + function mark_timestamp($mark) { + //$this->performance["markstart"] -= microtime(true) - $this->performance["marktime"]; + $this->performance["markstart"] = microtime(true) - $this->performance["markstart"] - $this->performance["marktime"]; + } } } diff --git a/database.sql b/database.sql index 6a4782fb8..f2c558241 100644 --- a/database.sql +++ b/database.sql @@ -560,6 +560,7 @@ CREATE TABLE IF NOT EXISTS `item` ( `deleted` tinyint(1) NOT NULL DEFAULT '0', `origin` tinyint(1) NOT NULL DEFAULT '0', `forum_mode` tinyint(1) NOT NULL DEFAULT '0', + `mention` tinyint(1) NOT NULL DEFAULT '0', `last-child` tinyint(1) unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `uri` (`uri`), @@ -589,6 +590,8 @@ CREATE TABLE IF NOT EXISTS `item` ( KEY `uid_commented` (`uid`, `commented`), KEY `uid_created` (`uid`, `created`), KEY `uid_unseen` (`uid`, `unseen`), + KEY `mention` (`mention`), + KEY `resource-id` (`resource-id`), KEY `event_id` (`event-id`), FULLTEXT KEY `title` (`title`), FULLTEXT KEY `body` (`body`), @@ -1030,18 +1033,22 @@ CREATE TABLE IF NOT EXISTS `spam` ( -- CREATE TABLE IF NOT EXISTS `term` ( - `tid` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `oid` INT UNSIGNED NOT NULL , - `otype` TINYINT( 3 ) UNSIGNED NOT NULL , - `type` TINYINT( 3 ) UNSIGNED NOT NULL , - `term` CHAR( 255 ) NOT NULL , - `url` CHAR( 255 ) NOT NULL, + `tid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `aid` int(10) unsigned NOT NULL DEFAULT '0', + `uid` int(10) unsigned NOT NULL DEFAULT '0', + `oid` int(10) unsigned NOT NULL, + `otype` tinyint(3) unsigned NOT NULL, + `type` tinyint(3) unsigned NOT NULL, + `term` char(255) NOT NULL, + `url` char(255) NOT NULL, PRIMARY KEY (`tid`), - KEY `oid` ( `oid` ), - KEY `otype` ( `otype` ), - KEY `type` ( `type` ), - KEY `term` ( `term` ) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; + KEY `oid` (`oid`), + KEY `otype` (`otype`), + KEY `type` (`type`), + KEY `term` (`term`), + KEY `uid` (`uid`), + KEY `aid` (`aid`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -1133,3 +1140,17 @@ CREATE TABLE IF NOT EXISTS `userd` ( `username` char(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tag` +-- + +CREATE TABLE IF NOT EXISTS `tag` ( + `iid` int(11) NOT NULL, + `tag` char(255) NOT NULL, + `link` char(255) NOT NULL, + PRIMARY KEY (`iid`, `tag`), + KEY `tag` (`tag`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/doc/Home.md b/doc/Home.md index b54ce3585..e986c89ac 100644 --- a/doc/Home.md +++ b/doc/Home.md @@ -36,8 +36,7 @@ Friendica Documentation and Resources **External Resources** * [Main Website](http://friendica.com) -* [Forums](http://groups.google.com/group/friendica) -* [Developer Forums](http://groups.google.com/group/friendica-dev) +* [Mailing List Archive](http://librelist.com/browser/friendica/) **About** diff --git a/doc/de/Home.md b/doc/de/Home.md index b2d8c52e4..260e368a9 100644 --- a/doc/de/Home.md +++ b/doc/de/Home.md @@ -36,8 +36,7 @@ Friendica - Dokumentation und Ressourcen **Externe Ressourcen** * [Haupt-Webseite](http://friendica.com) -* [Foren](http://groups.google.com/group/friendica) -* [Entwickler-Foren](http://groups.google.com/group/friendica-dev) +* [Mailing Liste](http://librelist.com/browser/friendica/) * [Deutsches Friendica-Wiki](http://wiki.toktan.org/doku.php) **Über diese Seite** diff --git a/include/Scrape.php b/include/Scrape.php index 611cbda88..7b72a199d 100644 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -346,7 +346,7 @@ function probe_url($url, $mode = PROBE_NORMAL) { $network = null; $diaspora = false; $diaspora_base = ''; - $diaspora_guid = ''; + $diaspora_guid = ''; $diaspora_key = ''; $has_lrdd = false; $email_conversant = false; @@ -485,7 +485,7 @@ function probe_url($url, $mode = PROBE_NORMAL) { } } } - } + } if($mode == PROBE_NORMAL) { if(strlen($zot)) { @@ -531,7 +531,7 @@ function probe_url($url, $mode = PROBE_NORMAL) { } if(strpos($url,'@')) $addr = str_replace('acct:', '', $url); - } + } if($network !== NETWORK_ZOT && $network !== NETWORK_DFRN && $network !== NETWORK_MAIL) { if($diaspora) @@ -544,13 +544,13 @@ function probe_url($url, $mode = PROBE_NORMAL) { $vcard = scrape_vcard($hcard); // Google doesn't use absolute url in profile photos - + if((x($vcard,'photo')) && substr($vcard['photo'],0,1) == '/') { $h = @parse_url($hcard); if($h) $vcard['photo'] = $h['scheme'] . '://' . $h['host'] . $vcard['photo']; } - + logger('probe_url: scrape_vcard: ' . print_r($vcard,true), LOGGER_DATA); } @@ -561,7 +561,7 @@ function probe_url($url, $mode = PROBE_NORMAL) { $vcard['nick'] = $addr_parts[0]; } - if($twitter) { + if($twitter) { logger('twitter: setup'); $tid = basename($url); $tapi = 'https://api.twitter.com/1/statuses/user_timeline.rss'; diff --git a/include/api.php b/include/api.php index 9b2073e09..600155666 100644 --- a/include/api.php +++ b/include/api.php @@ -521,13 +521,13 @@ $txt = $purifier->purify($txt); } $txt = html2bbcode($txt); - + $a->argv[1]=$user_info['screen_name']; //should be set to username? - + $_REQUEST['hush']='yeah'; //tell wall_upload function to return img info instead of echo require_once('mod/wall_upload.php'); $bebop = wall_upload_post($a); - + //now that we have the img url in bbcode we can add it to the status and insert the wall item. $_REQUEST['body']=$txt."\n\n".$bebop; require_once('mod/item.php'); @@ -634,7 +634,7 @@ if (count($lastwall)>0){ $lastwall = $lastwall[0]; - + $in_reply_to_status_id = ''; $in_reply_to_user_id = ''; $in_reply_to_screen_name = ''; @@ -642,9 +642,9 @@ $in_reply_to_status_id=$lastwall['parent']; $in_reply_to_user_id = $lastwall['reply_uid']; $in_reply_to_screen_name = $lastwall['reply_author']; - } + } $status_info = array( - 'text' => html2plain(bbcode($lastwall['body']), 0), + 'text' => html2plain(bbcode($lastwall['body'], false, false, true), 0), 'truncated' => false, 'created_at' => api_date($lastwall['created']), 'in_reply_to_status_id' => $in_reply_to_status_id, @@ -699,11 +699,11 @@ $in_reply_to_status_id=$lastwall['parent']; $in_reply_to_user_id = $lastwall['reply_uid']; $in_reply_to_screen_name = $lastwall['reply_author']; - } + } $user_info['status'] = array( 'created_at' => api_date($lastwall['created']), 'id' => $lastwall['contact-id'], - 'text' => html2plain(bbcode($lastwall['body']), 0), + 'text' => html2plain(bbcode($lastwall['body'], false, false, true), 0), 'source' => (($lastwall['app']) ? $lastwall['app'] : 'web'), 'truncated' => false, 'in_reply_to_status_id' => $in_reply_to_status_id, @@ -1042,21 +1042,27 @@ $myurl = $a->get_baseurl() . '/profile/'. $a->user['nickname']; $myurl = substr($myurl,strpos($myurl,'://')+3); - $myurl = str_replace(array('www.','.'),array('','\\.'),$myurl); + //$myurl = str_replace(array('www.','.'),array('','\\.'),$myurl); + $myurl = str_replace('www.','',$myurl); $diasp_url = str_replace('/profile/','/u/',$myurl); - if (get_config('system','use_fulltext_engine')) - $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ", - dbesc(protect_sprintf($myurl)), - dbesc(protect_sprintf($myurl)), - dbesc(protect_sprintf($diasp_url)) - ); - else - $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ", - dbesc(protect_sprintf('%' . $myurl)), - dbesc(protect_sprintf('%' . $myurl . ']%')), - dbesc(protect_sprintf('%' . $diasp_url . ']%')) - ); +/* if (get_config('system','use_fulltext_engine')) + $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ", + dbesc(protect_sprintf($myurl)), + dbesc(protect_sprintf($myurl)), + dbesc(protect_sprintf($diasp_url)) + ); + else + $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ", + dbesc(protect_sprintf('%' . $myurl)), + dbesc(protect_sprintf('%' . $myurl . ']%')), + dbesc(protect_sprintf('%' . $diasp_url . ']%')) + ); +*/ + $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where `author-link` IN ('https://%s', 'http://%s') OR `mention`)", + dbesc(protect_sprintf($myurl)), + dbesc(protect_sprintf($myurl)) + ); if ($max_id > 0) $sql_extra .= ' AND `item`.`id` <= '.intval($max_id); @@ -1299,11 +1305,11 @@ $ret['text'] = bbcode($item['body']); } elseif ($_GET["getText"] == "plain") { - $ret['text'] = html2plain(bbcode($item['body']), 0); + $ret['text'] = html2plain(bbcode($item['body'], false, false, true), 0); } } else { - $ret['text'] = $item['title']."\n".html2plain(bbcode($item['body']), 0); + $ret['text'] = $item['title']."\n".html2plain(bbcode($item['body'], false, false, true), 0); } if (isset($_GET["getUserObjects"]) && $_GET["getUserObjects"] == "false") { unset($ret['sender']); @@ -1347,7 +1353,7 @@ } // Workaround for ostatus messages where the title is identically to the body - $statusbody = trim(html2plain(bbcode($item['body']), 0)); + $statusbody = trim(html2plain(bbcode($item['body'], false, false, true), 0)); $statustitle = trim($item['title']); if (($statustitle != '') and (strpos($statusbody, $statustitle) !== false)) diff --git a/include/bbcode.php b/include/bbcode.php index 228b75d5a..a587d8c38 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -278,10 +278,39 @@ function bb_ShareAttributes($match) { return($text); } +function bb_ShareAttributesSimple($match) { + + $attributes = $match[1]; + + $author = ""; + preg_match("/author='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $author = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8'); + + preg_match('/author="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $author = $matches[1]; + + $profile = ""; + preg_match("/profile='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + preg_match('/profile="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + $text = "
".html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8').' '.$author.":
»".$match[2]."«"; + + return($text); +} + // BBcode 2 HTML was written by WAY2WEB.net // extended to work with Mistpark/Friendica - Mike Macgirvin -function bbcode($Text,$preserve_nl = false, $tryoembed = true) { +function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = false) { + + $stamp1 = microtime(true); $a = get_app(); @@ -340,13 +369,14 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $Text = str_replace("\r\n","\n", $Text); // removing multiplicated newlines -// $search = array("\n\n\n", "\n ", " \n", "[/quote]\n\n", "\n[/quote]"); -// $replace = array("\n\n", "\n", "\n", "[/quote]\n", "[/quote]"); -// do { -// $oldtext = $Text; -// $Text = str_replace($search, $replace, $Text); -// } while ($oldtext != $Text); - + if (get_config("system", "remove_multiplicated_lines")) { + $search = array("\n\n\n", "\n ", " \n", "[/quote]\n\n", "\n[/quote]"); + $replace = array("\n\n", "\n", "\n", "[/quote]\n", "[/quote]"); + do { + $oldtext = $Text; + $Text = str_replace($search, $replace, $Text); + } while ($oldtext != $Text); + } $Text = str_replace(array("\r","\n"), array('
','
'), $Text); @@ -515,7 +545,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $Text = preg_replace("/\[img\](.*?)\[\/img\]/ism", '' . t('Image/photo') . '', $Text); // Shared content - $Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributes",$Text); + if (!$simplehtml) + $Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributes",$Text); + else + $Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributesSimple",$Text); $Text = preg_replace("/\[crypt\](.*?)\[\/crypt\]/ism",'
' . t('Encrypted content') . '
', $Text); $Text = preg_replace("/\[crypt=(.*?)\](.*?)\[\/crypt\]/ism",'
' . t('Encrypted content') . '
', $Text); @@ -617,7 +650,8 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { // Clean up the HTML by loading and saving the HTML with the DOM // Only do it when it has to be done - for performance reasons - if (!$tryoembed) { + // Update: Now it is done every time - since bad structured html can break a whole page + //if (!$tryoembed) { $doc = new DOMDocument(); $doc->preserveWhiteSpace = false; @@ -632,10 +666,12 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $Text = str_replace('
','', $Text); $Text = mb_convert_encoding($Text, "UTF-8", 'HTML-ENTITIES'); - } + //} call_hooks('bbcode',$Text); + $a->save_timestamp($stamp1, "parser"); + return $Text; } diff --git a/include/conversation.php b/include/conversation.php index 5296011bb..36ac57f17 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -369,7 +369,6 @@ function visible_activity($item) { if(!function_exists('conversation')) { function conversation(&$a, $items, $mode, $update, $preview = false) { - require_once('include/bbcode.php'); $ssl_state = ((local_user()) ? true : false); @@ -524,7 +523,26 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $tags=array(); $hashtags = array(); $mentions = array(); - foreach(explode(',',$item['tag']) as $tag){ + + $taglist = q("SELECT `type`, `term`, `url` FROM `term` WHERE `otype` = %d AND `oid` = %d AND `type` IN (%d, %d) ORDER BY `tid`", + intval(TERM_OBJ_POST), intval($item['id']), intval(TERM_HASHTAG), intval(TERM_MENTION)); + + foreach($taglist as $tag) { + + if ($tag["url"] == "") + $tag["url"] = $searchpath.strtolower($tag["term"]); + + if ($tag["type"] == TERM_HASHTAG) { + $hashtags[] = "#".$tag["term"].""; + $prefix = "#"; + } elseif ($tag["type"] == TERM_MENTION) { + $mentions[] = "@".$tag["term"].""; + $prefix = "@"; + } + $tags[] = $prefix."".$tag["term"].""; + } + + /*foreach(explode(',',$item['tag']) as $tag){ $tag = trim($tag); if ($tag!="") { $t = bbcode($tag); @@ -534,7 +552,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { elseif($t[0] == '@') $mentions[] = $t; } - } + }*/ $sp = false; $profile_link = best_link_url($item,$sp); diff --git a/include/dba.php b/include/dba.php index ad33705bf..50354b7f4 100644 --- a/include/dba.php +++ b/include/dba.php @@ -23,6 +23,9 @@ class dba { public $error = false; function __construct($server,$user,$pass,$db,$install = false) { + global $a; + + $stamp1 = microtime(true); $server = trim($server); $user = trim($user); @@ -64,6 +67,8 @@ class dba { if(! $install) system_unavailable(); } + + $a->save_timestamp($stamp1, "network"); } public function getdb() { @@ -78,18 +83,19 @@ class dba { $this->error = ''; - if(x($a->config,'system') && x($a->config['system'],'db_log')) - $stamp1 = microtime(true); + $stamp1 = microtime(true); if($this->mysqli) $result = @$this->db->query($sql); else $result = @mysql_query($sql,$this->db); + $stamp2 = microtime(true); + $duration = (float)($stamp2-$stamp1); + if(x($a->config,'system') && x($a->config['system'],'db_log')) { - $stamp2 = microtime(true); - $duration = round($stamp2-$stamp1, 3); - if ($duration > $a->config["system"]["db_loglimit"]) { + if (($duration > $a->config["system"]["db_loglimit"])) { + $duration = round($duration, 3); $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); @file_put_contents($a->config["system"]["db_log"], $duration."\t". basename($backtrace[1]["file"])."\t". @@ -162,6 +168,7 @@ class dba { } } + $a->save_timestamp($stamp1, "database"); if($this->debug) logger('dba: ' . printable(print_r($r, true))); diff --git a/include/diaspora.php b/include/diaspora.php index 18d37c243..5bf45e241 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -559,7 +559,7 @@ function diaspora_decode($importer,$xml) { } - + function diaspora_request($importer,$xml) { $a = get_app(); @@ -569,7 +569,7 @@ function diaspora_request($importer,$xml) { if(! $sender_handle || ! $recipient_handle) return; - + $contact = diaspora_get_contact_by_handle($importer['uid'],$sender_handle); if($contact) { @@ -754,6 +754,20 @@ function diaspora_request($importer,$xml) { } function diaspora_post_allow($importer,$contact) { + + // perhaps we were already sharing with this person. Now they're sharing with us. + // That makes us friends. + // Normally this should have handled by getting a request - but this could get lost + if($contact['rel'] == CONTACT_IS_FOLLOWER && $importer['page-flags'] != PAGE_COMMUNITY) { + q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval(CONTACT_IS_FRIEND), + intval($contact['id']), + intval($importer['uid']) + ); + $contact['rel'] = CONTACT_IS_FRIEND; + logger('diaspora_post_allow: defining user '.$contact["nick"].' as friend'); + } + if(($contact['blocked']) || ($contact['readonly']) || ($contact['archive'])) return false; if($contact['rel'] == CONTACT_IS_SHARING || $contact['rel'] == CONTACT_IS_FRIEND) diff --git a/include/follow.php b/include/follow.php index 59f3b1a5f..fc167bb82 100644 --- a/include/follow.php +++ b/include/follow.php @@ -48,9 +48,9 @@ function new_contact($uid,$url,$interactive = false) { $myaddr = bin2hex($a->get_baseurl() . '/profile/' . $a->user['nickname']); else $myaddr = bin2hex($a->user['nickname'] . '@' . $a->get_hostname()); - + goaway($ret['request'] . "&addr=$myaddr"); - + // NOTREACHED } } @@ -61,7 +61,7 @@ function new_contact($uid,$url,$interactive = false) { return $result; } } - + diff --git a/include/items.php b/include/items.php index 255d580b6..b7be27932 100755 --- a/include/items.php +++ b/include/items.php @@ -5,7 +5,10 @@ require_once('include/oembed.php'); require_once('include/salmon.php'); require_once('include/crypto.php'); require_once('include/Photo.php'); +require_once('include/tags.php'); +require_once('include/text.php'); require_once('include/email.php'); +require_once('include/ostatus_conversation.php'); function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) { @@ -26,7 +29,7 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) } } - + // default permissions - anonymous user @@ -238,7 +241,7 @@ function construct_activity_object($item) { $r->link = str_replace('&','&', $r->link); $r->link = preg_replace('/\/','',$r->link); $o .= $r->link; - } + } else $o .= '' . "\r\n"; } @@ -270,7 +273,7 @@ function construct_activity_target($item) { $r->link = str_replace('&','&', $r->link); $r->link = preg_replace('/\/','',$r->link); $o .= $r->link; - } + } else $o .= '' . "\r\n"; } @@ -670,7 +673,7 @@ function get_atom_elements($feed,$item) { } // translate OStatus unfollow to activity streams if it happened to get selected - + if((x($res,'verb')) && ($res['verb'] === 'http://ostatus.org/schema/1.0/unfollow')) $res['verb'] = ACTIVITY_UNFOLLOW; @@ -721,7 +724,7 @@ function get_atom_elements($feed,$item) { if($child[NAMESPACE_ACTIVITY]['object-type'][0]['data']) { $res['object-type'] = $child[NAMESPACE_ACTIVITY]['object-type'][0]['data']; $res['object'] .= '' . $child[NAMESPACE_ACTIVITY]['object-type'][0]['data'] . '' . "\n"; - } + } if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'id') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data']) $res['object'] .= '' . $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'] . '' . "\n"; if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'link') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['link']) @@ -759,7 +762,7 @@ function get_atom_elements($feed,$item) { $child = $rawobj[0]['child']; if($child[NAMESPACE_ACTIVITY]['object-type'][0]['data']) { $res['target'] .= '' . $child[NAMESPACE_ACTIVITY]['object-type'][0]['data'] . '' . "\n"; - } + } if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'id') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data']) $res['target'] .= '' . $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'] . '' . "\n"; if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'link') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['link']) @@ -829,15 +832,30 @@ function get_atom_elements($feed,$item) { } } + // Search for ostatus conversation url + $links = $item->feed->data["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["feed"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["entry"][0]["child"]["http://www.w3.org/2005/Atom"]["link"]; + + if (is_array($links)) { + foreach ($links as $link) { + $conversation = array_shift($link["attribs"]); + + if ($conversation["rel"] == "ostatus:conversation") { + $res["ostatus_conversation"] = $conversation["href"]; + logger('get_atom_elements: found conversation url '.$res["ostatus_conversation"]); + } + }; + } + $arr = array('feed' => $feed, 'item' => $item, 'result' => $res); call_hooks('parse_atom', $arr); //if (($res["title"] != "") or (strpos($res["body"], "RT @") > 0)) { //if (strpos($res["body"], "RT @") !== false) { - // $debugfile = tempnam("/home/ike/log", "item-res2-"); - // file_put_contents($debugfile, serialize($arr)); - //} + /*if (strpos($res["body"], "@") !== false) { + $debugfile = tempnam("/var/www/virtual/pirati.ca/phptmp/", "item-res2-"); + file_put_contents($debugfile, serialize($arr)); + }*/ return $res; } @@ -876,13 +894,22 @@ function item_store($arr,$force_parent = false) { unset($arr['dsprsig']); } + // if an OStatus conversation url was passed in, it is stored and then + // removed from the array. + $ostatus_conversation = null; + + if (isset($arr["ostatus_conversation"])) { + $ostatus_conversation = $arr["ostatus_conversation"]; + unset($arr["ostatus_conversation"]); + } + if(x($arr, 'gravity')) $arr['gravity'] = intval($arr['gravity']); elseif($arr['parent-uri'] === $arr['uri']) $arr['gravity'] = 0; elseif(activity_match($arr['verb'],ACTIVITY_POST)) $arr['gravity'] = 6; - else + else $arr['gravity'] = 6; // extensible catchall if(! x($arr,'type')) @@ -898,8 +925,23 @@ function item_store($arr,$force_parent = false) { require_once('library/langdet/Text/LanguageDetect.php'); $naked_body = preg_replace('/\[(.+?)\]/','',$arr['body']); $l = new Text_LanguageDetect; - $lng = $l->detectConfidence($naked_body); - $arr['postopts'] = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : ''); + //$lng = $l->detectConfidence($naked_body); + //$arr['postopts'] = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : ''); + $lng = $l->detect($naked_body, 3); + + if (sizeof($lng) > 0) { + $postopts = ""; + + foreach ($lng as $language => $score) { + if ($postopts == "") + $postopts = "lang="; + else + $postopts .= ":"; + + $postopts .= $language.";".$score; + } + $arr['postopts'] = $postopts; + } } $arr['wall'] = ((x($arr,'wall')) ? intval($arr['wall']) : 0); @@ -952,9 +994,9 @@ function item_store($arr,$force_parent = false) { $deny_cid = $arr['deny_cid']; $deny_gid = $arr['deny_gid']; } - else { + else { - // find the parent and snarf the item id and ACL's + // find the parent and snarf the item id and ACLs // and anything else we need to inherit $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d ORDER BY `id` ASC LIMIT 1", @@ -1017,7 +1059,7 @@ function item_store($arr,$force_parent = false) { logger('item_store: item parent was not found - ignoring item'); return 0; } - + $parent_deleted = 0; } } @@ -1058,8 +1100,8 @@ function item_store($arr,$force_parent = false) { if(count($r)) { $current_post = $r[0]['id']; logger('item_store: created item ' . $current_post); - } - else { + create_tags_from_item($r[0]['id']); + } else { logger('item_store: could not locate created item'); return 0; } @@ -1072,7 +1114,7 @@ function item_store($arr,$force_parent = false) { ); } - if((! $parent_id) || ($arr['parent-uri'] === $arr['uri'])) + if((! $parent_id) || ($arr['parent-uri'] === $arr['uri'])) $parent_id = $current_post; if(strlen($allow_cid) || strlen($allow_gid) || strlen($deny_cid) || strlen($deny_gid)) @@ -1093,6 +1135,11 @@ function item_store($arr,$force_parent = false) { intval($parent_deleted), intval($current_post) ); + create_tags_from_item($current_post); + + // Complete ostatus threads + if ($ostatus_conversation) + complete_conversation($current_post, $ostatus_conversation); $arr['id'] = $current_post; $arr['parent'] = $parent_id; @@ -1136,6 +1183,18 @@ function item_store($arr,$force_parent = false) { tag_deliver($arr['uid'],$current_post); + // Store the fresh generated item into the cache + $cachefile = get_cachefile($arr["guid"]."-".hash("md5", $arr['body'])); + + if (($cachefile != '') AND !file_exists($cachefile)) { + $s = prepare_text($arr['body']); + $a = get_app(); + $stamp1 = microtime(true); + file_put_contents($cachefile, $s); + $a->save_timestamp($stamp1, "file"); + logger('item_store: put item '.$current_post.' into cachefile '.$cachefile); + } + return $current_post; } @@ -1272,7 +1331,7 @@ function tag_deliver($uid,$item_id) { intval($item_id) ); - proc_run('php','include/notifier.php','tgroup',$item_id); + proc_run('php','include/notifier.php','tgroup',$item_id); } @@ -1343,7 +1402,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { if($contact['duplex'] && $contact['dfrn-id']) $idtosend = '0:' . $orig_id; if($contact['duplex'] && $contact['issued-id']) - $idtosend = '1:' . $orig_id; + $idtosend = '1:' . $orig_id; $rino = ((function_exists('mcrypt_encrypt')) ? 1 : 0); @@ -1361,7 +1420,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { break; case SSL_POLICY_SELFSIGN: $ssl_policy = 'self'; - break; + break; case SSL_POLICY_NONE: default: $ssl_policy = 'none'; @@ -1414,7 +1473,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { intval(($perm == 'rw') ? 1 : 0), intval($contact['id']) ); - $contact['writable'] = (string) 1 - intval($contact['writable']); + $contact['writable'] = (string) 1 - intval($contact['writable']); } } @@ -1558,7 +1617,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) logger('consume_feed: empty input'); return; } - + $feed = new SimplePie(); $feed->set_raw_data($xml); if($datedir) @@ -1594,7 +1653,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) if($elems['name'][0]['attribs'][NAMESPACE_DFRN]['updated']) { $name_updated = $elems['name'][0]['attribs'][NAMESPACE_DFRN]['updated']; $new_name = $elems['name'][0]['data']; - } + } if((x($elems,'link')) && ($elems['link'][0]['attribs']['']['rel'] === 'photo') && ($elems['link'][0]['attribs'][NAMESPACE_DFRN]['updated'])) { $photo_timestamp = datetime_convert('UTC','UTC',$elems['link'][0]['attribs'][NAMESPACE_DFRN]['updated']); $photo_url = $elems['link'][0]['attribs']['']['href']; @@ -1637,12 +1696,12 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) intval($contact['uid']) ); } - + $img->scaleImageSquare(175); - + $hash = $resource_id; $r = $img->store($contact['uid'], $contact['id'], $hash, basename($photo_url), 'Contact Photos', 4); - + $img->scaleImage(80); $r = $img->store($contact['uid'], $contact['id'], $hash, basename($photo_url), 'Contact Photos', 5); @@ -1651,7 +1710,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) $a = get_app(); - q("UPDATE `contact` SET `avatar-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s' + q("UPDATE `contact` SET `avatar-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s' WHERE `uid` = %d AND `id` = %d LIMIT 1", dbesc(datetime_convert()), dbesc($a->get_baseurl() . '/photo/' . $hash . '-4.'.$img->getExt()), @@ -1701,7 +1760,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) * to contain a sparkle link and perhaps a photo. * */ - + $bdtext = sprintf( t('%s\'s birthday'), $contact['name']); $bdtext2 = sprintf( t('Happy Birthday %s'), ' [url=' . $contact['url'] . ']' . $contact['name'] . '[/url]' ) ; @@ -1718,7 +1777,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) dbesc($bdtext2), dbesc('birthday') ); - + // update bdyear @@ -1810,6 +1869,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) dbesc(implode(',',$newtags)), intval($i[0]['id']) ); + create_tags_from_item($i[0]['id']); } } } @@ -1824,6 +1884,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) dbesc($item['uri']), intval($importer['uid']) ); + create_tags_from_itemuri($item['uri'], $importer['uid']); } else { $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s', @@ -1834,6 +1895,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) dbesc($uri), intval($importer['uid']) ); + create_tags_from_itemuri($uri, $importer['uid']); if($item['last-child']) { // ensure that last-child is set in case the comment that had it just got wiped. q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d ", @@ -1947,6 +2009,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) dbesc($item_id), intval($importer['uid']) ); + create_tags_from_itemuri($item_id, $importer['uid']); } // update last-child if it changes @@ -1988,7 +2051,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) dbesc($parent_uri) ); if($r && count($r)) - continue; + continue; } if(($datarray['verb'] === ACTIVITY_TAG) && ($datarray['object-type'] === ACTIVITY_OBJ_TAGTERM)) { @@ -2011,6 +2074,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) dbesc($r[0]['tag'] . (strlen($r[0]['tag']) ? ',' : '') . $newtag), intval($r[0]['id']) ); + create_tags_from_item($r[0]['id']); } } } @@ -2094,6 +2158,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) dbesc($item_id), intval($importer['uid']) ); + create_tags_from_itemuri($item_id, $importer['uid']); } // update last-child if it changes @@ -2231,7 +2296,7 @@ function local_delivery($importer,$data) { if($elems['name'][0]['attribs'][NAMESPACE_DFRN]['updated']) { $name_updated = $elems['name'][0]['attribs'][NAMESPACE_DFRN]['updated']; $new_name = $elems['name'][0]['data']; - } + } if((x($elems,'link')) && ($elems['link'][0]['attribs']['']['rel'] === 'photo') && ($elems['link'][0]['attribs'][NAMESPACE_DFRN]['updated'])) { $photo_timestamp = datetime_convert('UTC','UTC',$elems['link'][0]['attribs'][NAMESPACE_DFRN]['updated']); $photo_url = $elems['link'][0]['attribs']['']['href']; @@ -2270,12 +2335,12 @@ function local_delivery($importer,$data) { intval($importer['importer_uid']) ); } - + $img->scaleImageSquare(175); - + $hash = $resource_id; $r = $img->store($importer['importer_uid'], $importer['id'], $hash, basename($photo_url), 'Contact Photos', 4); - + $img->scaleImage(80); $r = $img->store($importer['importer_uid'], $importer['id'], $hash, basename($photo_url), 'Contact Photos', 5); @@ -2284,7 +2349,7 @@ function local_delivery($importer,$data) { $a = get_app(); - q("UPDATE `contact` SET `avatar-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s' + q("UPDATE `contact` SET `avatar-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s' WHERE `uid` = %d AND `id` = %d LIMIT 1", dbesc(datetime_convert()), dbesc($a->get_baseurl() . '/photo/' . $hash . '-4.'.$img->getExt()), @@ -2343,17 +2408,17 @@ function local_delivery($importer,$data) { /** relocated user must have original key pair */ /*$newloc['pubkey'] = notags(unxmlify($base['pubkey'][0]['data'])); $newloc['prvkey'] = notags(unxmlify($base['prvkey'][0]['data']));*/ - + logger("items:relocate contact ".print_r($newloc, true).print_r($importer, true), LOGGER_DEBUG); - + // update contact $r = q("SELECT photo, url FROM contact WHERE id=%d AND uid=%d;", intval($importer['id']), intval($importer['importer_uid'])); - if ($r === false) + if ($r === false) return 1; $old = $r[0]; - + $x = q("UPDATE contact SET name = '%s', photo = '%s', @@ -2396,7 +2461,7 @@ function local_delivery($importer,$data) { if ($x === false) return 1; } - + // TODO // merge with current record, current contents have priority // update record, set url-updated @@ -2470,7 +2535,7 @@ function local_delivery($importer,$data) { $hash = random_string(); - + $r = q("INSERT INTO `intro` ( `uid`, `fid`, `contact-id`, `note`, `hash`, `datetime`, `blocked` ) VALUES( %d, %d, %d, '%s', '%s', '%s', %d )", intval($fsugg['uid']), @@ -2524,7 +2589,7 @@ function local_delivery($importer,$data) { $msg['uri'] = notags(unxmlify($base['id'][0]['data'])); $msg['parent-uri'] = notags(unxmlify($base['in-reply-to'][0]['data'])); $msg['created'] = datetime_convert(notags(unxmlify('UTC','UTC',$base['sentdate'][0]['data']))); - + dbesc_array($msg); $r = dbq("INSERT INTO `mail` (`" . implode("`, `", array_keys($msg)) @@ -2548,12 +2613,12 @@ function local_delivery($importer,$data) { 'verb' => ACTIVITY_POST, 'otype' => 'mail' ); - + notification($notif_params); return 0; // NOTREACHED - } + } $community_page = 0; $rawtags = $feed->get_feed_tags( NAMESPACE_DFRN, 'community'); @@ -2567,7 +2632,7 @@ function local_delivery($importer,$data) { ); $importer['forum'] = (string) $community_page; } - + logger('local_delivery: feed item count = ' . $feed->get_item_quantity()); // process any deleted entries @@ -2677,14 +2742,14 @@ function local_delivery($importer,$data) { if(count($i)) { // For tags, the owner cannot remove the tag on the author's copy of the post. - + $owner_remove = (($item['contact-id'] == $i[0]['contact-id']) ? true: false); $author_remove = (($item['origin'] && $item['self']) ? true : false); - $author_copy = (($item['origin']) ? true : false); + $author_copy = (($item['origin']) ? true : false); if($owner_remove && $author_copy) continue; - if($author_remove || $owner_remove) { + if($author_remove || $owner_remove) { $tags = explode(',',$i[0]['tag']); $newtags = array(); if(count($tags)) { @@ -2696,6 +2761,7 @@ function local_delivery($importer,$data) { dbesc(implode(',',$newtags)), intval($i[0]['id']) ); + create_tags_from_item($i[0]['id']); } } } @@ -2710,6 +2776,7 @@ function local_delivery($importer,$data) { dbesc($item['uri']), intval($importer['importer_uid']) ); + create_tags_from_itemuri($item['uri'], $importer['importer_uid']); } else { $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s', @@ -2720,6 +2787,7 @@ function local_delivery($importer,$data) { dbesc($uri), intval($importer['importer_uid']) ); + create_tags_from_itemuri($uri, $importer['importer_uid']); if($item['last-child']) { // ensure that last-child is set in case the comment that had it just got wiped. q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d ", @@ -2727,7 +2795,7 @@ function local_delivery($importer,$data) { dbesc($item['parent-uri']), intval($item['uid']) ); - // who is the last child now? + // who is the last child now? $r = q("SELECT `id` FROM `item` WHERE `parent-uri` = '%s' AND `type` != 'activity' AND `deleted` = 0 AND `uid` = %d ORDER BY `created` DESC LIMIT 1", dbesc($item['parent-uri']), @@ -2737,7 +2805,7 @@ function local_delivery($importer,$data) { q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1", intval($r[0]['id']) ); - } + } } // if this is a relayed delete, propagate it to other recipients @@ -2831,11 +2899,11 @@ function local_delivery($importer,$data) { if(count($r)) { $iid = $r[0]['id']; if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) { - + // do not accept (ignore) an earlier edit than one we currently have. if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited']) continue; - + logger('received updated comment' , LOGGER_DEBUG); $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($datarray['title']), @@ -2845,6 +2913,7 @@ function local_delivery($importer,$data) { dbesc($item_id), intval($importer['importer_uid']) ); + create_tags_from_itemuri($item_id, $importer['importer_uid']); proc_run('php',"include/notifier.php","comment-import",$iid); @@ -2881,14 +2950,14 @@ function local_delivery($importer,$data) { dbesc($datarray['verb']), dbesc($datarray['parent-uri']), dbesc($datarray['parent-uri']) - + ); if($r && count($r)) - continue; + continue; } if(($datarray['verb'] === ACTIVITY_TAG) && ($datarray['object-type'] === ACTIVITY_OBJ_TAGTERM)) { - + $xo = parse_xml_string($datarray['object'],false); $xt = parse_xml_string($datarray['target'],false); @@ -2901,9 +2970,9 @@ function local_delivery($importer,$data) { intval($importer['importer_uid']) ); if(! count($tagp)) - continue; + continue; - // extract tag, if not duplicate, and this user allows tags, add to parent item + // extract tag, if not duplicate, and this user allows tags, add to parent item if($xo->id && $xo->content) { $newtag = '#[url=' . $xo->id . ']'. $xo->content . '[/url]'; @@ -2917,9 +2986,10 @@ function local_delivery($importer,$data) { intval($tagp[0]['id']), dbesc(datetime_convert()) ); + create_tags_from_item($tagp[0]['id']); } } - } + } } } @@ -2936,7 +3006,7 @@ function local_delivery($importer,$data) { $parent = $r[0]['parent']; $parent_uri = $r[0]['parent-uri']; } - + if(! $is_like) { $r1 = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `uid` = %d AND `parent` = %d", dbesc(datetime_convert()), @@ -2954,7 +3024,7 @@ function local_delivery($importer,$data) { if($posted_id && $parent) { proc_run('php',"include/notifier.php","comment-import","$posted_id"); - + if((! $is_like) && (! $importer['self'])) { require_once('include/enotify.php'); @@ -3017,6 +3087,7 @@ function local_delivery($importer,$data) { dbesc($item_id), intval($importer['importer_uid']) ); + create_tags_from_itemuri($item_id, $importer['importer_uid']); } // update last-child if it changes @@ -3053,7 +3124,7 @@ function local_delivery($importer,$data) { dbesc($parent_uri) ); if($r && count($r)) - continue; + continue; } @@ -3068,24 +3139,25 @@ function local_delivery($importer,$data) { intval($importer['importer_uid']) ); if(! count($r)) - continue; + continue; - // extract tag, if not duplicate, add to parent item + // extract tag, if not duplicate, add to parent item if($xo->content) { if(! (stristr($r[0]['tag'],trim($xo->content)))) { q("UPDATE item SET tag = '%s' WHERE id = %d LIMIT 1", dbesc($r[0]['tag'] . (strlen($r[0]['tag']) ? ',' : '') . '#[url=' . $xo->id . ']'. $xo->content . '[/url]'), intval($r[0]['id']) ); + create_tags_from_item($r[0]['id']); } - } + } } } $posted_id = item_store($datarray); // find out if our user is involved in this conversation and wants to be notified. - + if(!x($datarray['type']) || $datarray['type'] != 'activity') { $myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0", @@ -3099,11 +3171,11 @@ function local_delivery($importer,$data) { // first make sure this isn't our own post coming back to us from a wall-to-wall event if(! link_compare($datarray['author-link'],$importer_url)) { - + foreach($myconv as $conv) { // now if we find a match, it means we're in this conversation - + if(! link_compare($conv['author-link'],$importer_url)) continue; @@ -3191,6 +3263,7 @@ function local_delivery($importer,$data) { dbesc($item_id), intval($importer['importer_uid']) ); + create_tags_from_itemuri($item_id, $importer['importer_uid']); } // update last-child if it changes @@ -3314,7 +3387,7 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) { // send email notification to owner? } else { - + // create contact record $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `name`, `nick`, `photo`, `network`, `rel`, @@ -3337,7 +3410,7 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) { if(count($r)) $contact_record = $r[0]; - // create notification + // create notification $hash = random_string(); if(is_array($contact_record)) { @@ -3375,7 +3448,7 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) { 'From: ' . 'Administrator' . '@' . $_SERVER['SERVER_NAME'] . "\n" . 'Content-type: text/plain; charset=UTF-8' . "\n" . 'Content-transfer-encoding: 8bit' ); - + } } } @@ -3445,7 +3518,7 @@ function subscribe_to_hub($url,$importer,$contact,$hubmode = 'subscribe') { post_url($url,$params); logger('subscribe_to_hub: returns: ' . $a->get_curl_code(), LOGGER_DEBUG); - + return; } @@ -3778,16 +3851,16 @@ function item_expire($uid,$days) { $expire_items = get_pconfig($uid, 'expire','items'); $expire_items = (($expire_items===false)?1:intval($expire_items)); // default if not set: 1 - + $expire_notes = get_pconfig($uid, 'expire','notes'); $expire_notes = (($expire_notes===false)?1:intval($expire_notes)); // default if not set: 1 $expire_starred = get_pconfig($uid, 'expire','starred'); $expire_starred = (($expire_starred===false)?1:intval($expire_starred)); // default if not set: 1 - + $expire_photos = get_pconfig($uid, 'expire','photos'); $expire_photos = (($expire_photos===false)?0:intval($expire_photos)); // default if not set: 0 - + logger('expire: # items=' . count($r). "; expire items: $expire_items, expire notes: $expire_notes, expire starred: $expire_starred, expire photos: $expire_photos"); foreach($r as $item) { @@ -3910,6 +3983,7 @@ function drop_item($id,$interactive = true) { dbesc(datetime_convert()), intval($item['id']) ); + create_tags_from_item($item['id']); // clean up categories and tags so they don't end up as orphans @@ -3975,6 +4049,7 @@ function drop_item($id,$interactive = true) { dbesc($item['parent-uri']), intval($item['uid']) ); + create_tags_from_item($item['parent-uri'], $item['uid']); // ignore the result } else { @@ -3984,7 +4059,7 @@ function drop_item($id,$interactive = true) { dbesc($item['parent-uri']), intval($item['uid']) ); - // who is the last child now? + // who is the last child now? $r = q("SELECT `id` FROM `item` WHERE `parent-uri` = '%s' AND `type` != 'activity' AND `deleted` = 0 AND `uid` = %d ORDER BY `edited` DESC LIMIT 1", dbesc($item['parent-uri']), intval($item['uid']) @@ -4016,7 +4091,7 @@ function drop_item($id,$interactive = true) { goaway($a->get_baseurl() . '/' . $_SESSION['return_url']); //NOTREACHED } - + } diff --git a/include/network.php b/include/network.php index 2a8dcc83a..941ef5e1b 100644 --- a/include/network.php +++ b/include/network.php @@ -7,10 +7,12 @@ if(! function_exists('fetch_url')) { function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_content=Null) { + $stamp1 = microtime(true); + $a = get_app(); $ch = @curl_init($url); - if(($redirects > 8) || (! $ch)) + if(($redirects > 8) || (! $ch)) return false; @curl_setopt($ch, CURLOPT_HEADER, true); @@ -78,9 +80,17 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_ } if($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) { - $matches = array(); - preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); - $newurl = trim(array_pop($matches)); + $new_location_info = @parse_url($curl_info["redirect_url"]); + $old_location_info = @parse_url($curl_info["url"]); + + $newurl = $curl_info["redirect_url"]; + + if (($new_location_info["path"] == "") AND ($new_location_info["host"] != "")) + $newurl = $new_location_info["scheme"]."://".$new_location_info["host"].$old_location_info["path"]; + + //$matches = array(); + //preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); + //$newurl = trim(array_pop($matches)); if(strpos($newurl,'/') === 0) $newurl = $url . $newurl; $url_parsed = @parse_url($newurl); @@ -95,6 +105,9 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_ $body = substr($s,strlen($header)); $a->set_curl_headers($header); @curl_close($ch); + + $a->save_timestamp($stamp1, "network"); + return($body); }} @@ -102,6 +115,9 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_ if(! function_exists('post_url')) { function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0) { + + $stamp1 = microtime(true); + $a = get_app(); $ch = curl_init($url); if(($redirects > 8) || (! $ch)) @@ -184,6 +200,9 @@ function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0) $a->set_curl_headers($header); curl_close($ch); + + $a->save_timestamp($stamp1, "network"); + return($body); }} @@ -293,9 +312,9 @@ function webfinger_dfrn($s,&$hcard) { if($link['@attributes']['rel'] === NAMESPACE_DFRN) $profile_link = $link['@attributes']['href']; if($link['@attributes']['rel'] === NAMESPACE_OSTATUSSUB) - $profile_link = 'stat:' . $link['@attributes']['template']; + $profile_link = 'stat:' . $link['@attributes']['template']; if($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard') - $hcard = $link['@attributes']['href']; + $hcard = $link['@attributes']['href']; } } return $profile_link; @@ -361,6 +380,7 @@ function lrdd($uri, $debug = false) { logger('lrdd: constructed url: ' . $url); $xml = fetch_url($url); + $headers = $a->get_curl_headers(); if (! $xml) @@ -410,7 +430,7 @@ function lrdd($uri, $debug = false) { elseif(x($link['@attributes'],'href')) $href = $link['@attributes']['href']; } - } + } } if((! isset($tpl)) || (! strpos($tpl,'{uri}'))) @@ -429,7 +449,7 @@ function lrdd($uri, $debug = false) { $lines = explode("\n",$headers); if(count($lines)) { - foreach($lines as $line) { + foreach($lines as $line) { if((stristr($line,'link:')) && preg_match('/<([^>].*)>.*rel\=[\'\"]lrdd[\'\"]/',$line,$matches)) { return(fetch_xrd_links($matches[1])); break; @@ -475,7 +495,7 @@ function lrdd($uri, $debug = false) { $lines = explode("\n",$headers); if(count($lines)) { - foreach($lines as $line) { + foreach($lines as $line) { // TODO alter the following regex to support multiple relations (space separated) if((stristr($line,'link:')) && preg_match('/<([^>].*)>.*rel\=[\'\"]lrdd[\'\"]/',$line,$matches)) { $pagelink = $matches[1]; @@ -591,14 +611,14 @@ function fetch_xrd_links($url) { if(! function_exists('validate_url')) { function validate_url(&$url) { - + // no naked subdomains (allow localhost for tests) if(strpos($url,'.') === false && strpos($url,'/localhost/') === false) return false; if(substr($url,0,4) != 'http') $url = 'http://' . $url; $h = @parse_url($url); - + if(($h) && (dns_get_record($h['host'], DNS_A + DNS_CNAME + DNS_PTR) || filter_var($h['host'], FILTER_VALIDATE_IP) )) { return true; } @@ -829,8 +849,11 @@ function scale_external_images($s, $include_link = true, $scale_replace = false) $i = fetch_url($scaled); $cachefile = get_cachefile(hash("md5", $scaled)); - if ($cachefile != '') + if ($cachefile != '') { + $stamp1 = microtime(true); file_put_contents($cachefile, $i); + $a->save_timestamp($stamp1, "file"); + } // guess mimetype from headers or filename $type = guess_image_type($mtch[1],true); @@ -920,7 +943,7 @@ function fix_contact_ssl_policy(&$contact,$new_policy) { * Return: The parsed XML in an array form. Use print_r() to see the resulting array structure. * Examples: $array = xml2array(file_get_contents('feed.xml')); * $array = xml2array(file_get_contents('feed.xml', true, 1, 'attribute')); - */ + */ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = 'attribute') { if(!$contents) return array(); @@ -978,7 +1001,7 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = $result = array(); $attributes_data = array(); - + if(isset($value)) { if($priority == 'tag') $result = $value; else $result['value'] = $value; // Put the value in a assoc array if we are in the 'Attribute' mode @@ -994,7 +1017,7 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = // See tag status and do the needed. if($namespaces && strpos($tag,':')) { - $namespc = substr($tag,0,strrpos($tag,':')); + $namespc = substr($tag,0,strrpos($tag,':')); $tag = strtolower(substr($tag,strlen($namespc)+1)); $result['@namespace'] = $namespc; } @@ -1017,7 +1040,7 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = } else { // This section will make the value an array if multiple tags with the same name appear together $current[$tag] = array($current[$tag],$result); // This will combine the existing item and the new item together to make an array $repeated_tag_index[$tag.'_'.$level] = 2; - + if(isset($current[$tag.'_attr'])) { // The attribute of the last(0th) tag must be moved as well $current[$tag]['0_attr'] = $current[$tag.'_attr']; unset($current[$tag.'_attr']); @@ -1040,7 +1063,7 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = // ...push the new element into that array. $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result; - + if($priority == 'tag' and $get_attributes and $attributes_data) { $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data; } @@ -1051,11 +1074,11 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = $repeated_tag_index[$tag.'_'.$level] = 1; if($priority == 'tag' and $get_attributes) { if(isset($current[$tag.'_attr'])) { // The attribute of the last(0th) tag must be moved as well - + $current[$tag]['0_attr'] = $current[$tag.'_attr']; unset($current[$tag.'_attr']); } - + if($attributes_data) { $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data; } @@ -1068,6 +1091,6 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = $current = &$parent[$level-1]; } } - + return($xml_array); -} +} diff --git a/include/ostatus_conversation.php b/include/ostatus_conversation.php new file mode 100644 index 000000000..cdaf80d76 --- /dev/null +++ b/include/ostatus_conversation.php @@ -0,0 +1,173 @@ + time()) { + logger('complete_conversation: poll intervall not reached'); + return; + } + } + + logger('complete_conversation: cron_start'); + + $start = date("Y-m-d H:i:s", time() - 86400); + $conversations = q("SELECT * FROM `term` WHERE `type` = 7 AND `term` > '%s'", + dbesc($start)); + foreach ($conversations AS $conversation) { + $id = $conversation['oid']; + $url = $conversation['url']; + complete_conversation($id, $url); + } + + logger('complete_conversation: cron_end'); + + set_config('system','ostatus_last_poll', time()); +} + +function complete_conversation($itemid, $conversation_url, $only_add_conversation = false) { + global $a; + + //logger('complete_conversation: completing conversation url '.$conversation_url.' for id '.$itemid); + + $messages = q("SELECT `uid`, `parent` FROM `item` WHERE `id` = %d LIMIT 1", intval($itemid)); + if (!$messages) + return; + $message = $messages[0]; + + // Store conversation url if not done before + $conversation = q("SELECT `url` FROM `term` WHERE `uid` = %d AND `oid` = %d AND `otype` = %d AND `type` = %d", + intval($message["uid"]), intval($itemid), intval(TERM_OBJ_POST), intval(TERM_CONVERSATION)); + + if (!$conversation) { + $r = q("INSERT INTO `term` (`uid`, `oid`, `otype`, `type`, `term`, `url`) VALUES (%d, %d, %d, %d, '%s', '%s')", + intval($message["uid"]), intval($itemid), intval(TERM_OBJ_POST), intval(TERM_CONVERSATION), dbesc(datetime_convert()), dbesc($conversation_url)); + logger('complete_conversation: Storing conversation url '.$conversation_url.' for id '.$itemid); + } + + if ($only_add_conversation) + return; + + // Get the parent + $parents = q("SELECT `id`, `uri`, `contact-id`, `type`, `verb`, `visible` FROM `item` WHERE `uid` = %d AND `id` = %d LIMIT 1", + intval($message["uid"]), intval($message["parent"])); + if (!$parents) + return; + $parent = $parents[0]; + + require_once('include/html2bbcode.php'); + require_once('include/items.php'); + + $conv = str_replace("/conversation/", "/api/statusnet/conversation/", $conversation_url).".as"; + + logger('complete_conversation: fetching conversation url '.$conv.' for '.$itemid); + $conv_as = fetch_url($conv); + + if ($conv_as) { + $conv_as = str_replace(',"statusnet:notice_info":', ',"statusnet_notice_info":', $conv_as); + $conv_as = json_decode($conv_as); + + $first_id = ""; + $items = array_reverse($conv_as->items); + + foreach ($items as $single_conv) { + if ($first_id == "") { + $first_id = $single_conv->id; + + $new_parents = q("SELECT `id`, `uri`, `contact-id`, `type`, `verb`, `visible` FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1", + intval($message["uid"]), dbesc($first_id)); + if ($new_parents) { + $parent = $new_parents[0]; + logger('complete_conversation: adopting new parent '.$parent["id"].' for '.$itemid); + } else { + $parent["id"] = 0; + $parent["uri"] = $first_id; + } + } + + if (isset($single_conv->context->inReplyTo->id)) + $parent_uri = $single_conv->context->inReplyTo->id; + else + $parent_uri = $parent["uri"]; + + if ($parent["id"] != 0) { + $message_exists = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1", + intval($message["uid"]), dbesc($single_conv->id)); + if ($message_exists) { + $existing_message = $message_exists[0]; + $r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `thr-parent` = '%s' WHERE `id` = %d LIMIT 1", + intval($parent["id"]), + dbesc($parent["uri"]), + dbesc($parent_uri), + intval($existing_message["id"])); + continue; + } + } + + $arr = array(); + $arr["uri"] = $single_conv->id; + $arr["plink"] = $single_conv->id; + $arr["uid"] = $message["uid"]; + $arr["contact-id"] = $parent["contact-id"]; // To-Do + if ($parent["id"] != 0) + $arr["parent"] = $parent["id"]; + $arr["parent-uri"] = $parent["uri"]; + $arr["thr-parent"] = $parent_uri; + $arr["created"] = $single_conv->published; + $arr["edited"] = $single_conv->published; + //$arr["owner-name"] = $single_conv->actor->contact->displayName; + $arr["owner-name"] = $single_conv->actor->contact->preferredUsername; + $arr["owner-link"] = $single_conv->actor->id; + $arr["owner-avatar"] = $single_conv->actor->image->url; + //$arr["author-name"] = $single_conv->actor->contact->displayName; + $arr["author-name"] = $single_conv->actor->contact->preferredUsername; + $arr["author-link"] = $single_conv->actor->id; + $arr["author-avatar"] = $single_conv->actor->image->url; + $arr["body"] = html2bbcode($single_conv->content); + $arr["app"] = strip_tags($single_conv->statusnet_notice_info->source); + if ($arr["app"] == "") + $arr["app"] = $single_conv->provider->displayName; + $arr["verb"] = $parent["verb"]; + $arr["visible"] = $parent["visible"]; + $arr["location"] = $single_conv->location->displayName; + $arr["coord"] = trim($single_conv->location->lat." ".$single_conv->location->lon); + + if ($arr["location"] == "") + unset($arr["location"]); + + if ($arr["coord"] == "") + unset($arr["coord"]); + + $newitem = item_store($arr); + + // Add the conversation entry (but don't fetch the whole conversation) + complete_conversation($newitem, $conversation_url, true); + + // If the newly created item is the top item then change the parent settings of the thread + if ($newitem AND ($arr["uri"] == $first_id)) { + logger('complete_conversation: setting new parent to id '.$newitem); + $new_parents = q("SELECT `id`, `uri`, `contact-id`, `type`, `verb`, `visible` FROM `item` WHERE `uid` = %d AND `id` = %d LIMIT 1", + intval($message["uid"]), intval($newitem)); + if ($new_parents) { + $parent = $new_parents[0]; + logger('complete_conversation: done changing parents to parent '.$newitem); + } + + /*logger('complete_conversation: changing parents to parent '.$newitem.' old parent: '.$parent["id"].' new uri: '.$arr["uri"]); + $r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s' WHERE `parent` = %d", + intval($newitem), + dbesc($arr["uri"]), + intval($parent["id"])); + logger('complete_conversation: done changing parents to parent '.$newitem.' '.print_r($r, true));*/ + } + } + } +} +?> diff --git a/include/plugin.php b/include/plugin.php index ef0ddd05e..b89cb2c53 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -8,7 +8,7 @@ function uninstall_plugin($plugin){ q("DELETE FROM `addon` WHERE `name` = '%s' ", dbesc($plugin) ); - + @include_once('addon/' . $plugin . '/' . $plugin . '.php'); if(function_exists($plugin . '_uninstall')) { $func = $plugin . '_uninstall'; @@ -28,9 +28,9 @@ function install_plugin($plugin) { if(function_exists($plugin . '_install')) { $func = $plugin . '_install'; $func(); - + $plugin_admin = (function_exists($plugin."_plugin_admin")?1:0); - + $r = q("INSERT INTO `addon` (`name`, `installed`, `timestamp`, `plugin_admin`) VALUES ( '%s', 1, %d , %d ) ", dbesc($plugin), intval($t), @@ -158,6 +158,8 @@ function load_hooks() { if(! function_exists('call_hooks')) { function call_hooks($name, &$data = null) { + $stamp1 = microtime(true); + $a = get_app(); if((is_array($a->hooks)) && (array_key_exists($name,$a->hooks))) { @@ -173,7 +175,7 @@ function call_hooks($name, &$data = null) { } else { // remove orphan hooks - q("delete from hook where hook = '%s' and file = '$s' and function = '%s' limit 1", + q("delete from hook where hook = '%s' and file = '%s' and function = '%s' limit 1", dbesc($name), dbesc($hook[0]), dbesc($hook[1]) @@ -181,7 +183,6 @@ function call_hooks($name, &$data = null) { } } } - }} @@ -199,18 +200,24 @@ function call_hooks($name, &$data = null) { if (! function_exists('get_plugin_info')){ function get_plugin_info($plugin){ + + $a = get_app(); + $info=Array( 'name' => $plugin, 'description' => "", 'author' => array(), 'version' => "" ); - + if (!is_file("addon/$plugin/$plugin.php")) return $info; - + + $stamp1 = microtime(true); $f = file_get_contents("addon/$plugin/$plugin.php"); + $a->save_timestamp($stamp1, "file"); + $r = preg_match("|/\*.*\*/|msU", $f, $m); - + if ($r){ $ll = explode("\n", $m[0]); foreach( $ll as $l ) { @@ -230,10 +237,10 @@ function get_plugin_info($plugin){ $info[$k]=$v; } } - + } } - + } return $info; }} @@ -242,7 +249,7 @@ function get_plugin_info($plugin){ /* * parse theme comment in search of theme infos. * like - * + * * * Name: My Theme * * Description: My Cool Theme * * Version: 1.2.3 @@ -270,11 +277,14 @@ function get_theme_info($theme){ $info['unsupported'] = true; if (!is_file("view/theme/$theme/theme.php")) return $info; - + + $a = get_app(); + $stamp1 = microtime(true); $f = file_get_contents("view/theme/$theme/theme.php"); + $a->save_timestamp($stamp1, "file"); + $r = preg_match("|/\*.*\*/|msU", $f, $m); - - + if ($r){ $ll = explode("\n", $m[0]); foreach( $ll as $l ) { diff --git a/include/poller.php b/include/poller.php index 692335aab..e85a4555d 100644 --- a/include/poller.php +++ b/include/poller.php @@ -9,7 +9,7 @@ function poller_run(&$argv, &$argc){ if(is_null($a)) { $a = new App; } - + if(is_null($db)) { @include(".htconfig.php"); require_once("include/dba.php"); @@ -57,21 +57,21 @@ function poller_run(&$argv, &$argc){ load_hooks(); logger('poller: start'); - + // run queue delivery process in the background proc_run('php',"include/queue.php"); - + // run diaspora photo queue process in the background proc_run('php',"include/dsprphotoq.php"); - + // expire any expired accounts q("UPDATE user SET `account_expired` = 1 where `account_expired` = 0 AND `account_expires_on` != '0000-00-00 00:00:00' AND `account_expires_on` < UTC_TIMESTAMP() "); - + // delete user and contact records for recently removed accounts $r = q("SELECT * FROM `user` WHERE `account_removed` = 1 AND `account_expires_on` < UTC_TIMESTAMP() - INTERVAL 3 DAY"); @@ -81,12 +81,13 @@ function poller_run(&$argv, &$argc){ q("DELETE FROM `user` WHERE `uid` = %d", intval($user['uid'])); } } - + $abandon_days = intval(get_config('system','account_abandon_days')); if($abandon_days < 1) $abandon_days = 0; - + // Check OStatus conversations + check_conversations(); // once daily run birthday_updates and then expire in background diff --git a/include/tags.php b/include/tags.php new file mode 100644 index 000000000..c81a752d5 --- /dev/null +++ b/include/tags.php @@ -0,0 +1,127 @@ +set_baseurl("https://pirati.ca"); +*/ + +function create_tags_from_item($itemid) { + global $a; + + $profile_base = $a->get_baseurl(); + $profile_data = parse_url($profile_base); + $profile_base_friendica = $profile_data['host'].$profile_data['path']."/profile/"; + $profile_base_diaspora = $profile_data['host'].$profile_data['path']."/u/"; + + $searchpath = $a->get_baseurl()."/search?tag="; + + $messages = q("SELECT `guid`, `uid`, `id`, `edited`, `deleted`, `title`, `body`, `tag` FROM `item` WHERE `id` = %d LIMIT 1", intval($itemid)); + + if (!$messages) + return; + + $message = $messages[0]; + + // Clean up all tags + q("DELETE FROM `term` WHERE `otype` = %d AND `oid` = %d AND `type` IN (%d, %d)", + intval(TERM_OBJ_POST), + intval($itemid), + intval(TERM_HASHTAG), + intval(TERM_MENTION)); + + if ($message["deleted"]) + return; + + $cachefile = get_cachefile($message["guid"]."-".hash("md5", $message['body'])); + + if (($cachefile != '') AND !file_exists($cachefile)) { + $s = prepare_text($message['body']); + $stamp1 = microtime(true); + file_put_contents($cachefile, $s); + $a->save_timestamp($stamp1, "file"); + logger('create_tags_from_item: put item '.$message["id"].' into cachefile '.$cachefile); + } + + $taglist = explode(",", $message["tag"]); + + $tags = ""; + foreach ($taglist as $tag) + if ((substr(trim($tag), 0, 1) == "#") OR (substr(trim($tag), 0, 1) == "@")) + $tags .= " ".trim($tag); + else + $tags .= " #".trim($tag); + + $data = " ".$message["title"]." ".$message["body"]." ".$tags." "; + + $tags = array(); + + $pattern = "/\W\#([^\[].*?)[\s'\".,:;\?!\[\]\/]/ism"; + if (preg_match_all($pattern, $data, $matches)) + foreach ($matches[1] as $match) + $tags["#".strtolower($match)] = ""; // $searchpath.strtolower($match); + + $pattern = "/\W([\#@])\[url\=(.*?)\](.*?)\[\/url\]/ism"; + if (preg_match_all($pattern, $data, $matches, PREG_SET_ORDER)) { + foreach ($matches as $match) + $tags[$match[1].strtolower(trim($match[3], ',.:;[]/\"?!'))] = $match[2]; + } + + foreach ($tags as $tag=>$link) { + + if (substr(trim($tag), 0, 1) == "#") { + $type = TERM_HASHTAG; + $term = substr($tag, 1); + } elseif (substr(trim($tag), 0, 1) == "@") { + $type = TERM_MENTION; + $term = substr($tag, 1); + } else { // This shouldn't happen + $type = TERM_HASHTAG; + $term = $tag; + } + + $r = q("INSERT INTO `term` (`uid`, `oid`, `otype`, `type`, `term`, `url`) VALUES (%d, %d, %d, %d, '%s', '%s')", + intval($message["uid"]), intval($itemid), intval(TERM_OBJ_POST), intval($type), dbesc($term), dbesc($link)); + + // Search for mentions + if ((substr($tag, 0, 1) == '@') AND (strpos($link, $profile_base_friendica) OR strpos($link, $profile_base_diaspora))) { + $users = q("SELECT `uid` FROM `contact` WHERE self AND (`url` = '%s' OR `nurl` = '%s')", $link, $link); + foreach ($users AS $user) { + if ($user["uid"] == $message["uid"]) + q("UPDATE `item` SET `mention` = 1 WHERE `id` = %d", intval($itemid)); + } + } + } +} + +function create_tags_from_itemuri($itemuri, $uid) { + $messages = q("SELECT `id` FROM `item` WHERE uri ='%s' AND uid=%d", dbesc($itemuri), intval($uid)); + + foreach ($messages as $message) + create_tags_from_item($message["id"]); +} + +function update_items() { + //$messages = q("SELECT `id` FROM `item` where tag !='' ORDER BY `created` DESC limit 10"); + $messages = q("SELECT `id` FROM `item` where tag !=''"); + + foreach ($messages as $message) + create_tags_from_item($message["id"]); +} + +//print_r($tags); +//print_r($hashtags); +//print_r($mentions); +//update_items(); +//create_tags_from_item(265194); +//create_tags_from_itemuri("infoagent@diasp.org:cce94abd104c06e8", 2); +?> diff --git a/include/text.php b/include/text.php index 6662ac802..97cf6ac20 100644 --- a/include/text.php +++ b/include/text.php @@ -6,16 +6,17 @@ // returns substituted string. // WARNING: this is pretty basic, and doesn't properly handle search strings that are substrings of each other. // For instance if 'test' => "foo" and 'testing' => "bar", testing could become either bar or fooing, -// depending on the order in which they were declared in the array. +// depending on the order in which they were declared in the array. require_once("include/template_processor.php"); require_once("include/friendica_smarty.php"); -if(! function_exists('replace_macros')) { +if(! function_exists('replace_macros')) { function replace_macros($s,$r) { global $t; -// $ts = microtime(); + $stamp1 = microtime(true); + $a = get_app(); if($a->theme['template_engine'] === 'smarty3') { @@ -34,12 +35,12 @@ function replace_macros($s,$r) { } else { $r = $t->replace($s,$r); - + $output = template_unescape($r); } -// $tt = microtime() - $ts; -// $a = get_app(); -// $a->page['debug'] .= "$tt
\n"; + $a = get_app(); + $a->save_timestamp($stamp1, "rendering"); + return $output; }} @@ -438,15 +439,26 @@ function load_view_file($s) { $lang = 'en'; $b = basename($s); $d = dirname($s); - if(file_exists("$d/$lang/$b")) - return file_get_contents("$d/$lang/$b"); - + if(file_exists("$d/$lang/$b")) { + $stamp1 = microtime(true); + $content = file_get_contents("$d/$lang/$b"); + $a->save_timestamp($stamp1, "file"); + return $content; + } + $theme = current_theme(); - if(file_exists("$d/theme/$theme/$b")) - return file_get_contents("$d/theme/$theme/$b"); - - return file_get_contents($s); + if(file_exists("$d/theme/$theme/$b")) { + $stamp1 = microtime(true); + $content = file_get_contents("$d/theme/$theme/$b"); + $a->save_timestamp($stamp1, "file"); + return $content; + } + + $stamp1 = microtime(true); + $content = file_get_contents($s); + $a->save_timestamp($stamp1, "file"); + return $content; }} if(! function_exists('get_intltext_template')) { @@ -461,17 +473,28 @@ function get_intltext_template($s) { if(! isset($lang)) $lang = 'en'; - if(file_exists("view/$lang$engine/$s")) - return file_get_contents("view/$lang$engine/$s"); - elseif(file_exists("view/en$engine/$s")) - return file_get_contents("view/en$engine/$s"); - else - return file_get_contents("view$engine/$s"); + if(file_exists("view/$lang$engine/$s")) { + $stamp1 = microtime(true); + $content = file_get_contents("view/$lang$engine/$s"); + $a->save_timestamp($stamp1, "file"); + return $content; + } elseif(file_exists("view/en$engine/$s")) { + $stamp1 = microtime(true); + $content = file_get_contents("view/en$engine/$s"); + $a->save_timestamp($stamp1, "file"); + return $content; + } else { + $stamp1 = microtime(true); + $content = file_get_contents("view$engine/$s"); + $a->save_timestamp($stamp1, "file"); + return $content; + } }} if(! function_exists('get_markup_template')) { function get_markup_template($s, $root = '') { -// $ts = microtime(); + $stamp1 = microtime(true); + $a = get_app(); if($a->theme['template_engine'] === 'smarty3') { @@ -479,19 +502,20 @@ function get_markup_template($s, $root = '') { $template = new FriendicaSmarty(); $template->filename = $template_file; + $a->save_timestamp($stamp1, "rendering"); -// $tt = microtime() - $ts; -// $a->page['debug'] .= "$tt
\n"; return $template; } else { $template_file = get_template_file($a, $s, $root); -// $file_contents = file_get_contents($template_file); -// $tt = microtime() - $ts; -// $a->page['debug'] .= "$tt
\n"; -// return $file_contents; - return file_get_contents($template_file); - } + $a->save_timestamp($stamp1, "rendering"); + + $stamp1 = microtime(true); + $content = file_get_contents($template_file); + $a->save_timestamp($stamp1, "file"); + return $content; + + } }} if(! function_exists("get_template_file")) { @@ -547,8 +571,10 @@ function logger($msg,$level = 0) { if((! $debugging) || (! $logfile) || ($level > $loglevel)) return; - + + $stamp1 = microtime(true); @file_put_contents($logfile, datetime_convert() . ':' . session_id() . ' ' . $msg . "\n", FILE_APPEND); + $a->save_timestamp($stamp1, "file"); return; }} @@ -574,11 +600,12 @@ function get_tags($s) { $ret = array(); // ignore anything in a code block - $s = preg_replace('/\[code\](.*?)\[\/code\]/sm','',$s); - // ignore anything in a bbtag + // Force line feeds at bbtags + $s = str_replace(array("[", "]"), array("\n[", "]\n"), $s); + // ignore anything in a bbtag $s = preg_replace('/\[(.*?)\]/sm','',$s); // Match full names against @tags including the space between first and last @@ -1030,14 +1057,20 @@ function prepare_body($item,$attach = false) { $a = get_app(); call_hooks('prepare_body_init', $item); - $cachefile = get_cachefile($item["guid"]."-".strtotime($item["edited"])."-".hash("crc32", $item['body'])); + //$cachefile = get_cachefile($item["guid"]."-".strtotime($item["edited"])."-".hash("crc32", $item['body'])); + $cachefile = get_cachefile($item["guid"]."-".hash("md5", $item['body'])); if (($cachefile != '')) { - if (file_exists($cachefile)) + if (file_exists($cachefile)) { + $stamp1 = microtime(true); $s = file_get_contents($cachefile); - else { + $a->save_timestamp($stamp1, "file"); + } else { $s = prepare_text($item['body']); + $stamp1 = microtime(true); file_put_contents($cachefile, $s); + $a->save_timestamp($stamp1, "file"); + logger('prepare_body: put item '.$item["id"].' into cachefile '.$cachefile); } } else $s = prepare_text($item['body']); diff --git a/index.php b/index.php index a1926d63a..3ccdc725f 100644 --- a/index.php +++ b/index.php @@ -33,7 +33,7 @@ $install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false $lang = get_browser_language(); - + load_translation_table($lang); /** diff --git a/mod/admin.php b/mod/admin.php index 8a79fb108..98e52d28b 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -20,7 +20,7 @@ function admin_post(&$a){ if(x($_SESSION,'submanage') && intval($_SESSION['submanage'])) return; - + // urls @@ -54,7 +54,7 @@ function admin_post(&$a){ } info(t('Theme settings updated.')); if(is_ajax()) return; - + goaway($a->get_baseurl(true) . '/admin/themes/' . $theme ); return; break; @@ -100,9 +100,9 @@ function admin_content(&$a) { 'dbsync' => Array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync"), //'update' => Array($a->get_baseurl(true)."/admin/update/", t("Software Update") , "update") ); - + /* get plugins admin page */ - + $r = q("SELECT * FROM `addon` WHERE `plugin_admin`=1"); $aside['plugins_admin']=Array(); foreach ($r as $h){ @@ -111,7 +111,7 @@ function admin_content(&$a) { // temp plugins with admin $a->plugins_admin[] = $plugin; } - + $aside['logs'] = Array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs"); $t = get_markup_template("admin_aside.tpl"); @@ -130,7 +130,6 @@ function admin_content(&$a) { * Page content */ $o = ''; - // urls if ($a->argc > 1){ switch ($a->argv[1]){ @@ -161,7 +160,7 @@ function admin_content(&$a) { } else { $o = admin_page_summary($a); } - + if(is_ajax()) { echo $o; killme(); @@ -274,12 +273,14 @@ function admin_page_site_post(&$a){ $diaspora_enabled = ((x($_POST,'diaspora_enabled')) ? True : False); $ssl_policy = ((x($_POST,'ssl_policy')) ? intval($_POST['ssl_policy']) : 0); $new_share = ((x($_POST,'new_share')) ? True : False); + $hide_help = ((x($_POST,'hide_help')) ? True : False); $use_fulltext_engine = ((x($_POST,'use_fulltext_engine')) ? True : False); $itemcache = ((x($_POST,'itemcache')) ? notags(trim($_POST['itemcache'])) : ''); $itemcache_duration = ((x($_POST,'itemcache_duration')) ? intval($_POST['itemcache_duration']) : 0); $lockpath = ((x($_POST,'lockpath')) ? notags(trim($_POST['lockpath'])) : ''); $temppath = ((x($_POST,'temppath')) ? notags(trim($_POST['temppath'])) : ''); $basepath = ((x($_POST,'basepath')) ? notags(trim($_POST['basepath'])) : ''); + $singleuser = ((x($_POST,'singleuser')) ? notags(trim($_POST['singleuser'])) : ''); if($ssl_policy != intval(get_config('system','ssl_policy'))) { if($ssl_policy == SSL_POLICY_FULL) { @@ -341,7 +342,12 @@ function admin_page_site_post(&$a){ del_config('system','mobile-theme'); } else { set_config('system','mobile-theme', $theme_mobile); - } + } + if ( $singleuser === '---' ) { + del_config('system','singleuser'); + } else { + set_config('system','singleuser', $singleuser); + } set_config('system','maximagesize', $maximagesize); set_config('system','max_image_length', $maximagelength); set_config('system','jpeg_quality', $jpegimagequality); @@ -380,6 +386,7 @@ function admin_page_site_post(&$a){ set_config('system','diaspora_enabled', $diaspora_enabled); set_config('system','new_share', $new_share); + set_config('system','hide_help', $hide_help); set_config('system','use_fulltext_engine', $use_fulltext_engine); set_config('system','itemcache', $itemcache); set_config('system','itemcache_duration', $itemcache_duration); @@ -426,19 +433,26 @@ function admin_page_site(&$a) { if (file_exists($file . '/mobile')) { $theme_choices_mobile[$f] = $theme_name; } - else { + else { $theme_choices[$f] = $theme_name; } } } - - + + /* get user names to make the install a personal install of X */ + $user_names = array(); + $user_names['---'] = t('Multi user instance'); + $users = q("SELECT username, nickname FROM `user`"); + foreach ($users as $user) { + $user_names[$user['nickname']] = $user['username']; + } + /* Banner */ $banner = get_config('system','banner'); if($banner == false) $banner = 'logoFriendica'; $banner = htmlspecialchars($banner); - + //echo "
"; var_dump($lang_choices); die("
"); /* Register policy */ @@ -474,6 +488,8 @@ function admin_page_site(&$a) { '$theme_mobile' => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile-theme'), t("Theme for mobile devices"), $theme_choices_mobile), '$ssl_policy' => array('ssl_policy', t("SSL link policy"), (string) intval(get_config('system','ssl_policy')), t("Determines whether generated links should be forced to use SSL"), $ssl_choices), '$new_share' => array('new_share', t("'Share' element"), get_config('system','new_share'), t("Activates the bbcode element 'share' for repeating items.")), + '$hide_help' => array('hide_help', t("Hide help entry from navigation menu"), get_config('system','hide_help'), t("Hides the menu entry for the Help pages from the navigation menu. You can still access it calling /help directly.")), + '$singleuser' => array('singleuser', t("Single user instance"), get_config('system','singleuser'), t("Make this instance multi-user or single-user for the named user"), $user_names), '$maximagesize' => array('maximagesize', t("Maximum image size"), get_config('system','maximagesize'), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")), '$maximagelength' => array('maximagelength', t("Maximum image length"), get_config('system','max_image_length'), t("Maximum length in pixels of the longest side of uploaded images. Default is -1, which means no limits.")), '$jpegimagequality' => array('jpegimagequality', t("JPEG image quality"), get_config('system','jpeg_quality'), t("Uploaded JPEGS will be saved at this quality setting [0-100]. Default is 100, which is full quality.")), @@ -763,7 +779,7 @@ function admin_page_users(&$a){ * @return string */ function admin_page_plugins(&$a){ - + /** * Single plugin */ @@ -773,9 +789,9 @@ function admin_page_plugins(&$a){ notice( t("Item not found.") ); return ''; } - + if (x($_GET,"a") && $_GET['a']=="t"){ - check_form_security_token_redirectOnErr('/admin/plugins', 'admin_themes', 't'); + check_form_security_token_redirectOnErr('/admin/plugins', 'admin_themes', 't'); // Toggle plugin status $idx = array_search($plugin, $a->plugins); @@ -800,52 +816,53 @@ function admin_page_plugins(&$a){ } else { $status="off"; $action= t("Enable"); } - + $readme=Null; if (is_file("addon/$plugin/README.md")){ $readme = file_get_contents("addon/$plugin/README.md"); $readme = Markdown($readme); } else if (is_file("addon/$plugin/README")){ $readme = "
". file_get_contents("addon/$plugin/README") ."
"; - } - + } + $admin_form=""; if (is_array($a->plugins_admin) && in_array($plugin, $a->plugins_admin)){ @require_once("addon/$plugin/$plugin.php"); $func = $plugin.'_plugin_admin'; $func($a, $admin_form); } - + $t = get_markup_template("admin_plugins_details.tpl"); + return replace_macros($t, array( '$title' => t('Administration'), '$page' => t('Plugins'), '$toggle' => t('Toggle'), '$settings' => t('Settings'), '$baseurl' => $a->get_baseurl(true), - + '$plugin' => $plugin, '$status' => $status, '$action' => $action, '$info' => get_plugin_info($plugin), '$str_author' => t('Author: '), - '$str_maintainer' => t('Maintainer: '), - + '$str_maintainer' => t('Maintainer: '), + '$admin_form' => $admin_form, '$function' => 'plugins', '$screenshot' => '', '$readme' => $readme, - '$form_security_token' => get_form_security_token("admin_themes"), + '$form_security_token' => get_form_security_token("admin_themes"), )); - } - - - + } + + + /** * List plugins */ - + $plugins = array(); $files = glob("addon/*/"); if($files) { @@ -857,7 +874,7 @@ function admin_page_plugins(&$a){ } } } - + $t = get_markup_template("admin_plugins.tpl"); return replace_macros($t, array( '$title' => t('Administration'), @@ -928,7 +945,7 @@ function rebuild_theme_table($themes) { return $o; } - + /** * Themes admin page * @@ -936,7 +953,7 @@ function rebuild_theme_table($themes) { * @return string */ function admin_page_themes(&$a){ - + $allowed_themes_str = get_config('system','allowed_themes'); $allowed_themes_raw = explode(',',$allowed_themes_str); $allowed_themes = array(); @@ -972,9 +989,9 @@ function admin_page_themes(&$a){ notice( t("Item not found.") ); return ''; } - + if (x($_GET,"a") && $_GET['a']=="t"){ - check_form_security_token_redirectOnErr('/admin/themes', 'admin_themes', 't'); + check_form_security_token_redirectOnErr('/admin/themes', 'admin_themes', 't'); // Toggle theme status @@ -1002,28 +1019,27 @@ function admin_page_themes(&$a){ } else { $status="off"; $action= t("Enable"); } - + $readme=Null; if (is_file("view/theme/$theme/README.md")){ $readme = file_get_contents("view/theme/$theme/README.md"); $readme = Markdown($readme); } else if (is_file("view/theme/$theme/README")){ $readme = "
". file_get_contents("view/theme/$theme/README") ."
"; - } - + } + $admin_form=""; if (is_file("view/theme/$theme/config.php")){ require_once("view/theme/$theme/config.php"); if(function_exists("theme_admin")){ $admin_form = theme_admin($a); } - + } - $screenshot = array( get_theme_screenshot($theme), t('Screenshot')); if(! stristr($screenshot[0],$theme)) - $screenshot = null; + $screenshot = null; $t = get_markup_template("admin_plugins_details.tpl"); return replace_macros($t, array( @@ -1032,7 +1048,7 @@ function admin_page_themes(&$a){ '$toggle' => t('Toggle'), '$settings' => t('Settings'), '$baseurl' => $a->get_baseurl(true), - + '$plugin' => $theme, '$status' => $status, '$action' => $action, @@ -1046,21 +1062,19 @@ function admin_page_themes(&$a){ '$form_security_token' => get_form_security_token("admin_themes"), )); - } - - - + } + /** * List themes */ - + $xthemes = array(); if($themes) { foreach($themes as $th) { $xthemes[] = array($th['name'],(($th['allowed']) ? "on" : "off"), get_theme_info($th['name'])); } } - + $t = get_markup_template("admin_plugins.tpl"); return replace_macros($t, array( '$title' => t('Administration'), diff --git a/mod/community.php b/mod/community.php index aa5bb7268..27a9e2194 100644 --- a/mod/community.php +++ b/mod/community.php @@ -64,23 +64,25 @@ function community_content(&$a, $update = 0) { } - $r = q("SELECT distinct(`item`.`uri`), `item`.*, `item`.`id` AS `item_id`, + //$r = q("SELECT distinct(`item`.`uri`) + $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`, `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`, `user`.`nickname`, `user`.`hidewall` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` + FROM `item` FORCE INDEX (`received`) LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `user`.`hidewall` = 0 - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 group by `item`.`uri` + AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self` ORDER BY `received` DESC LIMIT %d, %d ", intval($a->pager['start']), intval($a->pager['itemspage']) ); +// group by `item`.`uri` if(! count($r)) { info( t('No results.') . EOL); diff --git a/mod/content.php b/mod/content.php index 318c37233..06f5d58b2 100644 --- a/mod/content.php +++ b/mod/content.php @@ -160,16 +160,26 @@ function content_content(&$a, $update = 0) { $sql_extra2 = (($nouveau) ? '' : " AND `item`.`parent` = `item`.`id` "); $sql_extra3 = (($nouveau) ? '' : $sql_extra3); + $sql_table = "`item`"; if(x($_GET,'search')) { $search = escape_tags($_GET['search']); - if (get_config('system','use_fulltext_engine')) { + + if(strpos($search,'#') === 0) { + $tag = true; + $search = substr($search,1); + } + + if (get_config('system','only_tag_search')) + $tag = true; + + /*if (get_config('system','use_fulltext_engine')) { if(strpos($search,'#') === 0) - $sql_extra .= sprintf(" AND (MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode)) ", + $sql_extra .= sprintf(" AND (MATCH(tag) AGAINST ('%s' in boolean mode)) ", dbesc(protect_sprintf($search)) ); else - $sql_extra .= sprintf(" AND (MATCH(`item`.`body`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode)) ", + $sql_extra .= sprintf(" AND (MATCH(`item`.`body`, `item`.`title`) AGAINST ('%s' in boolean mode)) ", dbesc(protect_sprintf($search)), dbesc(protect_sprintf($search)) ); @@ -178,7 +188,19 @@ function content_content(&$a, $update = 0) { dbesc(protect_sprintf('%' . $search . '%')), dbesc(protect_sprintf('%]' . $search . '[%')) ); + }*/ + + if($tag) { + $sql_extra = sprintf(" AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d ", + dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG)); + $sql_table = "`term` LEFT JOIN `item` ON `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` "; + } else { + if (get_config('system','use_fulltext_engine')) + $sql_extra = sprintf(" AND MATCH (`item`.`body`, `item`.`title`) AGAINST ('%s' in boolean mode) ", dbesc(protect_sprintf($search))); + else + $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search)))); } + } if(strlen($file)) { $sql_extra .= file_tag_file_query('item',unxmlify($file)); @@ -189,38 +211,39 @@ function content_content(&$a, $update = 0) { $myurl = substr($myurl,strpos($myurl,'://')+3); $myurl = str_replace('www.','',$myurl); $diasp_url = str_replace('/profile/','/u/',$myurl); - if (get_config('system','use_fulltext_engine')) - $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ", + /*if (get_config('system','use_fulltext_engine')) + $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from $sql_table where (MATCH(`author-link`, `tag`) AGAINST ('%s' in boolean mode) or MATCH(tag) AGAINST ('%s' in boolean mode))) ", dbesc(protect_sprintf($myurl)), dbesc(protect_sprintf($myurl)), dbesc(protect_sprintf($diasp_url)) ); else - $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ", + $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from $sql_table where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ", dbesc(protect_sprintf('%' . $myurl)), dbesc(protect_sprintf('%' . $myurl . ']%')), dbesc(protect_sprintf('%' . $diasp_url . ']%')) - ); + );*/ + $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where `author-link` IN ('https://%s', 'http://%s') OR `mention`)", + dbesc(protect_sprintf($myurl)), + dbesc(protect_sprintf($myurl)) + ); } $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage'])); - - if($nouveau) { // "New Item View" - show all items unthreaded in reverse created date order - $items = q("SELECT `item`.*, `item`.`id` AS `item_id`, + $items = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`, `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` - FROM `item`, `contact` - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 + FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` + WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 $simple_update - AND `contact`.`id` = `item`.`contact-id` AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 $sql_extra $sql_nets ORDER BY `item`.`received` DESC $pager_sql ", @@ -241,7 +264,7 @@ function content_content(&$a, $update = 0) { $start = dba_timer(); $r = q("SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact_uid` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` + FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 AND `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `item`.`parent` = `item`.`id` @@ -268,9 +291,9 @@ function content_content(&$a, $update = 0) { `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`, `contact`.`writable`, `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` - FROM `item`, `contact` + FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 - AND `item`.`moderated` = 0 AND `contact`.`id` = `item`.`contact-id` + AND `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `item`.`parent` IN ( %s ) $sql_extra ", @@ -287,7 +310,7 @@ function content_content(&$a, $update = 0) { } } - + logger('parent dba_timer: ' . sprintf('%01.4f',$first - $start)); logger('child dba_timer: ' . sprintf('%01.4f',$second - $first)); @@ -298,7 +321,7 @@ function content_content(&$a, $update = 0) { $o = render_content($a,$items,$mode,false); - + header('Content-type: application/json'); echo json_encode($o); killme(); diff --git a/mod/item.php b/mod/item.php index d04ab71de..cca40e3a0 100644 --- a/mod/item.php +++ b/mod/item.php @@ -19,6 +19,7 @@ require_once('include/crypto.php'); require_once('include/enotify.php'); require_once('include/email.php'); require_once('library/langdet/Text/LanguageDetect.php'); +require_once('include/tags.php'); function item_post(&$a) { @@ -236,9 +237,23 @@ function item_post(&$a) { if (version_compare(PHP_VERSION, '5.3.0', '>=')) { $l = new Text_LanguageDetect; - $lng = $l->detectConfidence($naked_body); + //$lng = $l->detectConfidence($naked_body); + //$postopts = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : ''); - $postopts = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : ''); + $lng = $l->detect($naked_body, 3); + + if (sizeof($lng) > 0) { + $postopts = ""; + + foreach ($lng as $language => $score) { + if ($postopts == "") + $postopts = "lang="; + else + $postopts .= ":"; + + $postopts .= $language.";".$score; + } + } logger('mod_item: detect language' . print_r($lng,true) . $naked_body, LOGGER_DATA); } @@ -675,6 +690,7 @@ function item_post(&$a) { intval($post_id), intval($profile_uid) ); + create_tags_from_itemuri($post_id, $profile_uid); // update filetags in pconfig file_tag_update_pconfig($uid,$categories_old,$categories_new,'category'); @@ -740,10 +756,22 @@ function item_post(&$a) { if(count($r)) { $post_id = $r[0]['id']; logger('mod_item: saved item ' . $post_id); + create_tags_from_item($post_id); // update filetags in pconfig file_tag_update_pconfig($uid,$categories_old,$categories_new,'category'); + // Store the fresh generated item into the cache + $cachefile = get_cachefile($datarray["guid"]."-".hash("md5", $datarray['body'])); + + if (($cachefile != '') AND !file_exists($cachefile)) { + $s = prepare_text($datarray['body']); + $stamp1 = microtime(true); + file_put_contents($cachefile, $s); + $a->save_timestamp($stamp1, "file"); + logger('mod_item: put item '.$r[0]['id'].' into cachefile '.$cachefile); + } + if($parent) { // This item is the last leaf and gets the comment box, clear any ancestors @@ -872,14 +900,20 @@ function item_post(&$a) { } else { $subject = email_header_encode('[Friendica]' . ' ' . sprintf( t('%s posted an update.'),$a->user['username']),'UTF-8'); } - $headers = 'From: ' . email_header_encode($a->user['username'],'UTF-8') . ' <' . $a->user['email'] . '>' . "\n"; - $headers .= 'MIME-Version: 1.0' . "\n"; - $headers .= 'Content-Type: text/html; charset=UTF-8' . "\n"; - $headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n"; $link = '' . $a->user['username'] . '

'; $html = prepare_body($datarray); $message = '' . $link . $html . $disclaimer . ''; - @mail($addr, $subject, $message, $headers); + include_once('include/html2plain.php'); + $params = array ( + 'fromName' => $a->user['username'], + 'fromEmail' => $a->user['email'], + 'toEmail' => $addr, + 'replyTo' => $a->user['email'], + 'messageSubject' => $subject, + 'htmlVersion' => $message, + 'textVersion' => html2plain($html.$disclaimer), + ); + enotify::send($params); } } } diff --git a/mod/network.php b/mod/network.php index b5046b632..ba7bff791 100644 --- a/mod/network.php +++ b/mod/network.php @@ -6,7 +6,7 @@ function network_init(&$a) { notice( t('Permission denied.') . EOL); return; } - + $is_a_date_query = false; if($a->argc > 1) { @@ -17,12 +17,12 @@ function network_init(&$a) { } } } - + // convert query string to array and remove first element (which is friendica args) $query_array = array(); parse_str($a->query_string, $query_array); array_shift($query_array); - + // fetch last used network view and redirect if needed if(! $is_a_date_query) { $sel_tabs = network_query_get_sel_tab($a); @@ -141,11 +141,11 @@ function network_init(&$a) { if(x($_GET['nets']) && $_GET['nets'] === 'all') unset($_GET['nets']); - + $group_id = (($a->argc > 1 && is_numeric($a->argv[1])) ? intval($a->argv[1]) : 0); set_pconfig(local_user(), 'network.view', 'group.selected', $group_id); - + require_once('include/group.php'); require_once('include/contact_widgets.php'); require_once('include/items.php'); @@ -321,7 +321,7 @@ function network_query_get_sel_net() { if(x($_GET,'nets')) { $network = $_GET['nets']; } - + return $network; } @@ -382,14 +382,14 @@ function network_content(&$a, $update = 0) { // item filter tabs // TODO: fix this logic, reduce duplication //$a->page['content'] .= '
'; - + list($no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active) = network_query_get_sel_tab($a); // if no tabs are selected, defaults to comments if ($no_active=='active') $all_active='active'; //echo "
"; var_dump($no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active); killme();
 
 	$cmd = (($datequery) ? '' : $a->cmd);
-	$len_naked_cmd = strlen(str_replace('/new','',$cmd));		
+	$len_naked_cmd = strlen(str_replace('/new','',$cmd));
 
 	// tabs
 	$tabs = array(
@@ -435,10 +435,10 @@ function network_content(&$a, $update = 0) {
 //			'url'=>$a->get_baseurl(true) . '/network?f=&spam=1'
 //			'sel'=> $spam_active,
 //			'title' => t('Posts flagged as SPAM'),
-//		),	
+//		),
 
 	);
-	
+
 	if(feature_enabled(local_user(),'personal_tab')) {
 		$tabs[] = array(
 			'label' => t('Personal'),
@@ -500,7 +500,7 @@ function network_content(&$a, $update = 0) {
 
 
 
-	
+
 
 	$contact_id = $a->cid;
 
@@ -573,11 +573,11 @@ function network_content(&$a, $update = 0) {
 	}
 
 
-	// We don't have to deal with ACL's on this page. You're looking at everything
+	// We don't have to deal with ACLs on this page. You're looking at everything
 	// that belongs to you, hence you can see all of it. We will filter by group if
 	// desired. 
 
-	
+
 	$sql_options  = (($star) ? " and starred = 1 " : '');
 	$sql_options .= (($bmark) ? " and bookmark = 1 " : '');
 
@@ -647,16 +647,26 @@ function network_content(&$a, $update = 0) {
 
 	$sql_extra2 = (($nouveau) ? '' : " AND `item`.`parent` = `item`.`id` ");
 	$sql_extra3 = (($nouveau) ? '' : $sql_extra3);
+	$sql_table = "`item`";
 
 	if(x($_GET,'search')) {
 		$search = escape_tags($_GET['search']);
-		if (get_config('system','use_fulltext_engine')) {
+
+		if(strpos($search,'#') === 0) {
+                	$tag = true;
+			$search = substr($search,1);
+		}
+
+		if (get_config('system','only_tag_search'))
+			$tag = true;
+
+		/*if (get_config('system','use_fulltext_engine')) {
 			if(strpos($search,'#') === 0)
 				$sql_extra .= sprintf(" AND (MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode)) ",
 					dbesc(protect_sprintf($search))
 				);
 			else
-				$sql_extra .= sprintf(" AND (MATCH(`item`.`body`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode)) ",
+				$sql_extra .= sprintf(" AND (MATCH(`item`.`body`, `item`.`title`) AGAINST ('%s' in boolean mode)) ",
 					dbesc(protect_sprintf($search)),
 					dbesc(protect_sprintf($search))
 				);
@@ -665,6 +675,17 @@ function network_content(&$a, $update = 0) {
 					dbesc(protect_sprintf('%' . $search . '%')),
 					dbesc(protect_sprintf('%]' . $search . '[%'))
 			);
+		}*/
+
+		if($tag) {
+			$sql_extra = sprintf(" AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d ",
+					dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG));
+			$sql_table = "`term` LEFT JOIN `item` ON `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` ";
+		} else {
+			if (get_config('system','use_fulltext_engine'))
+				$sql_extra = sprintf(" AND MATCH (`item`.`body`, `item`.`title`) AGAINST ('%s' in boolean mode) ", dbesc(protect_sprintf($search)));
+			else
+				$sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search))));
 		}
 	}
 	if(strlen($file)) {
@@ -676,8 +697,10 @@ function network_content(&$a, $update = 0) {
 		$myurl = substr($myurl,strpos($myurl,'://')+3);
 		$myurl = str_replace('www.','',$myurl);
 		$diasp_url = str_replace('/profile/','/u/',$myurl);
-		if (get_config('system','use_fulltext_engine'))
+		/*if (get_config('system','use_fulltext_engine'))
 			$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ",
+			//$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (`author-link` IN ('https://%s', 'http://%s') OR MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ",
+			//$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where `author-link` IN ('https://%s', 'http://%s') OR `mention`)",
 				dbesc(protect_sprintf($myurl)),
 				dbesc(protect_sprintf($myurl)),
 				dbesc(protect_sprintf($diasp_url))
@@ -687,8 +710,12 @@ function network_content(&$a, $update = 0) {
 				dbesc(protect_sprintf('%' . $myurl)),
 				dbesc(protect_sprintf('%' . $myurl . ']%')),
 				dbesc(protect_sprintf('%' . $diasp_url . ']%'))
-			);
+			);*/
 
+		$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where `author-link` IN ('https://%s', 'http://%s') OR `mention`)",
+			dbesc(protect_sprintf($myurl)),
+			dbesc(protect_sprintf($myurl))
+		);
 	}
 
 	if($update) {
@@ -700,7 +727,7 @@ function network_content(&$a, $update = 0) {
 	else {
 		if( (! get_config('alt_pager', 'global')) && (! get_pconfig(local_user(),'system','alt_pager')) ) {
 		        $r = q("SELECT COUNT(*) AS `total`
-			        FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+			        FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
 			        WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
 			        AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
 			        $sql_extra2 $sql_extra3
@@ -731,11 +758,10 @@ function network_content(&$a, $update = 0) {
 			`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`,
 			`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
 			`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
-			FROM `item`, `contact`
+			FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
 			WHERE `item`.`uid` = %d AND `item`.`visible` = 1 
 			AND `item`.`deleted` = 0 and `item`.`moderated` = 0
 			$simple_update
-			AND `contact`.`id` = `item`.`contact-id`
 			AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
 			$sql_extra $sql_nets
 			ORDER BY `item`.`received` DESC $pager_sql ",
@@ -758,7 +784,7 @@ function network_content(&$a, $update = 0) {
 
 		if($update) {
 			$r = q("SELECT `parent` AS `item_id`, `contact`.`uid` AS `contact_uid`
-				FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+				FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
 				WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND
 				(`item`.`deleted` = 0 OR item.verb = '" . ACTIVITY_LIKE ."' OR item.verb = '" . ACTIVITY_DISLIKE . "')
 				and `item`.`moderated` = 0 and `item`.`unseen` = 1
@@ -769,7 +795,7 @@ function network_content(&$a, $update = 0) {
 		}
 		else {
 			$r = q("SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact_uid`
-				FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+				FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
 				WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
 				AND `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
 				AND `item`.`parent` = `item`.`id`
@@ -794,9 +820,9 @@ function network_content(&$a, $update = 0) {
 				`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`, `contact`.`writable`,
 				`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
 				`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
-				FROM `item`, `contact`
+				FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
 				WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
-				AND `item`.`moderated` = 0 AND `contact`.`id` = `item`.`contact-id`
+				AND `item`.`moderated` = 0
 				AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
 				AND `item`.`parent` IN ( %s )
 				$sql_extra ",
@@ -818,7 +844,7 @@ function network_content(&$a, $update = 0) {
 	// We aren't going to try and figure out at the item, group, and page
 	// level which items you've seen and which you haven't. If you're looking
 	// at the top level network page just mark everything seen. 
-	
+
 
 // The $update_unseen is a bit unreliable if you have stuff coming into your stream from a new contact - 
 // and other feeds that bring in stuff from the past. One can't find it all. 
diff --git a/mod/photo.php b/mod/photo.php
index 93db82a64..497dcd750 100644
--- a/mod/photo.php
+++ b/mod/photo.php
@@ -106,7 +106,7 @@ function photo_init(&$a) {
 			intval($resolution)
 		);
 		if(count($r)) {
-			
+
 			$sql_extra = permissions_sql($r[0]['uid']);
 
 			// Now we'll see if we can access the photo
@@ -169,10 +169,13 @@ function photo_init(&$a) {
 		}
 	}
 
-	if(isset($customres) && $customres > 0 && $customres < 500) {
+	// Resize only if its not a GIF
+	if ($mime != "image/gif") {
 		$ph = new Photo($data, $mimetype);
 		if($ph->is_valid()) {
-			$ph->scaleImageSquare($customres);
+			if(isset($customres) && $customres > 0 && $customres < 500) {
+				$ph->scaleImageSquare($customres);
+			}
 			$data = $ph->imageString();
 			$mimetype = $ph->getType();
 		}
diff --git a/mod/photos.php b/mod/photos.php
index c6892818a..79a51fd4c 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -5,7 +5,7 @@ require_once('include/acl_selectors.php');
 require_once('include/bbcode.php');
 require_once('include/security.php');
 require_once('include/redir.php');
-
+require_once('include/tags.php');
 
 function photos_init(&$a) {
 
@@ -252,6 +252,7 @@ function photos_post(&$a) {
 						dbesc($rr['parent-uri']),
 						intval($page_owner_uid)
 					);
+					create_tags_from_itemuri($rr['parent-uri'], $page_owner_uid);
 
 					$drop_id = intval($rr['id']);
 
@@ -321,6 +322,7 @@ function photos_post(&$a) {
 					dbesc($i[0]['uri']),
 					intval($page_owner_uid)
 				);
+				create_tags_from_itemuri($i[0]['uri'], $page_owner_uid);
 
 				$url = $a->get_baseurl();
 				$drop_id = intval($i[0]['id']);
@@ -381,7 +383,7 @@ function photos_post(&$a) {
 						$ph->scaleImage(640);
 						$width  = $ph->getWidth();
 						$height = $ph->getHeight();
-		
+
 						$x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 1 limit 1",
 							dbesc($ph->imageString()),
 							intval($height),
@@ -403,7 +405,7 @@ function photos_post(&$a) {
 							dbesc($resource_id),
 							intval($page_owner_uid)
 						);
-					}	
+					}
 				}
 			}
 		}
@@ -605,6 +607,7 @@ function photos_post(&$a) {
 				intval($item_id),
 				intval($page_owner_uid)
 			);
+			create_tags_from_item($item_id);
 
 			$best = 0;
 			foreach($p as $scales) {
@@ -880,8 +883,8 @@ function photos_post(&$a) {
 			intval($item_id)
 		);
 	}
-	
-	if($visible) 
+
+	if($visible)
 		proc_run('php', "include/notifier.php", 'wall-new', $item_id);
 
 	call_hooks('photo_post_end',intval($item_id));
@@ -1418,7 +1421,7 @@ function photos_content(&$a) {
 				intval($a->pager['itemspage'])
 
 			);
-		
+
 			if((local_user()) && (local_user() == $link_item['uid'])) {
 				q("UPDATE `item` SET `unseen` = 0 WHERE `parent` = %d and `uid` = %d",
 					intval($link_item['parent']),
diff --git a/mod/search.php b/mod/search.php
index 2753c2e1e..f7d235d45 100644
--- a/mod/search.php
+++ b/mod/search.php
@@ -23,7 +23,7 @@ function search_saved_searches() {
 			);
 		}
 
-		
+
 		$tpl = get_markup_template("saved_searches_aside.tpl");
 
 		$o .= replace_macros($tpl, array(
@@ -32,7 +32,7 @@ function search_saved_searches() {
 			'$searchbox' => '',
 			'$saved' 	 => $saved,
 		));
-	}		
+	}
 
 	return $o;
 
@@ -124,7 +124,10 @@ function search_content(&$a) {
 	if(! $search)
 		return $o;
 
-	if (get_config('system','use_fulltext_engine')) {
+	if (get_config('system','only_tag_search'))
+		$tag = true;
+
+	/*if (get_config('system','use_fulltext_engine')) {
 		if($tag)
 			$sql_extra = sprintf(" AND MATCH (`item`.`tag`) AGAINST ('".'"%s"'."' in boolean mode) ", '#'.dbesc(protect_sprintf($search)));
 		else
@@ -134,11 +137,25 @@ function search_content(&$a) {
 			$sql_extra = sprintf(" AND `item`.`tag` REGEXP '%s' ", 	dbesc('\\]' . protect_sprintf(preg_quote($search)) . '\\['));
 		else
 			$sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search))));
+	}*/
+
+	if($tag) {
+		//$sql_extra = sprintf(" AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d",
+		//			dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG));
+		//$sql_table = "`term` LEFT JOIN `item` ON `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` ";
+
+		$sql_extra = sprintf(" AND EXISTS (SELECT * FROM `term` WHERE `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d) GROUP BY `item`.`uri` ",
+					dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG));
+		$sql_table = "`item` FORCE INDEX (`uri`) ";
+	} else {
+		if (get_config('system','use_fulltext_engine')) {
+			$sql_extra = sprintf(" AND MATCH (`item`.`body`, `item`.`title`) AGAINST ('%s' in boolean mode) ", dbesc(protect_sprintf($search)));
+		} else {
+			$sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search))));
+		}
+		$sql_table = "`item`";
 	}
 
-
-
-
 	// Here is the way permissions work in the search module...
 	// Only public posts can be shown
 	// OR your own posts if you are a logged in member
@@ -146,14 +163,15 @@ function search_content(&$a) {
 
 	if( (! get_config('alt_pager', 'global')) && (! get_pconfig(local_user(),'system','alt_pager')) ) {
 	        $r = q("SELECT distinct(`item`.`uri`) as `total`
-		        FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid`
+		        FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid`
 		        WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
 		        AND (( `item`.`allow_cid` = ''  AND `item`.`allow_gid` = '' AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0) 
 			        OR ( `item`.`uid` = %d ))
 		        AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-		        $sql_extra group by `item`.`uri` ", 
+		        $sql_extra ",
 		        intval(local_user())
 	        );
+//		        $sql_extra group by `item`.`uri` ",
 
 	        if(count($r))
 		        $a->set_pager_total(count($r));
@@ -164,25 +182,25 @@ function search_content(&$a) {
 	        }
 	}
 
-	$r = q("SELECT distinct(`item`.`uri`), `item`.*, `item`.`id` AS `item_id`, 
+	$r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`, 
 		`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`,
 		`contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
 		`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
 		`user`.`nickname`, `user`.`uid`, `user`.`hidewall`
-		FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+		FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
 		LEFT JOIN `user` ON `user`.`uid` = `item`.`uid`
 		WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
 		AND (( `item`.`allow_cid` = ''  AND `item`.`allow_gid` = '' AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0 ) 
 			OR ( `item`.`uid` = %d ))
 		AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
 		$sql_extra
-		group by `item`.`uri`	
 		ORDER BY `received` DESC LIMIT %d , %d ",
 		intval(local_user()),
 		intval($a->pager['start']),
 		intval($a->pager['itemspage'])
 
 	);
+//		group by `item`.`uri`
 
 	if(! count($r)) {
 		info( t('No results.') . EOL);
diff --git a/mods/readme.txt b/mods/readme.txt
index 9e79f843f..d74b846d0 100644
--- a/mods/readme.txt
+++ b/mods/readme.txt
@@ -3,3 +3,4 @@ Site speed can be improved when the following indexes are set. They cannot be se
 CREATE INDEX `uid_commented` ON `item` (`uid`, `commented`);
 CREATE INDEX `uid_created` ON `item` (`uid`, `created`);
 CREATE INDEX `uid_unseen` ON `item` (`uid`, `unseen`);
+CREATE INDEX `resource-id` ON `item` (`resource-id`);
diff --git a/object/Conversation.php b/object/Conversation.php
index 8b838f7d0..bd7a95cf2 100644
--- a/object/Conversation.php
+++ b/object/Conversation.php
@@ -127,6 +127,7 @@ class Conversation extends BaseObject {
 	 *      _ false on failure
 	 */
 	public function get_template_data($alike, $dlike) {
+		global $a;
 		$result = array();
 
 		foreach($this->threads as $item) {
@@ -140,6 +141,7 @@ class Conversation extends BaseObject {
 			$result[] = $item_data;
 		}
 
+		//$a->mark_timestamp();
 		return $result;
 	}
 
diff --git a/object/Item.php b/object/Item.php
index cd42c4008..139a81f71 100644
--- a/object/Item.php
+++ b/object/Item.php
@@ -146,10 +146,30 @@ class Item extends BaseObject {
 		call_hooks('render_location',$locate);
 		$location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate));
 
+		$searchpath = $a->get_baseurl()."/search?tag=";
 		$tags=array();
 		$hashtags = array();
 		$mentions = array();
-		foreach(explode(',',$item['tag']) as $tag){
+
+		$taglist = q("SELECT `type`, `term`, `url` FROM `term` WHERE `otype` = %d AND `oid` = %d AND `type` IN (%d, %d) ORDER BY `tid`",
+				intval(TERM_OBJ_POST), intval($item['id']), intval(TERM_HASHTAG), intval(TERM_MENTION));
+
+		foreach($taglist as $tag) {
+
+			if ($tag["url"] == "")
+				$tag["url"] = $searchpath.strtolower($tag["term"]);
+
+			if ($tag["type"] == TERM_HASHTAG) {
+				$hashtags[] = "#".$tag["term"]."";
+				$prefix = "#";
+			} elseif ($tag["type"] == TERM_MENTION) {
+				$mentions[] = "@".$tag["term"]."";
+				$prefix = "@";
+			}
+			$tags[] = $prefix."".$tag["term"]."";
+		}
+
+		/*foreach(explode(',',$item['tag']) as $tag){
 			$tag = trim($tag);
 			if ($tag!="") {
 				$t = bbcode($tag);
@@ -159,8 +179,7 @@ class Item extends BaseObject {
 				elseif($t[0] == '@')
 					$mentions[] = $t;
 			}
-
-		}        
+		}*/
 
 		$like    = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : '');
 		$dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : '');
@@ -171,10 +190,10 @@ class Item extends BaseObject {
 		 * Maybe we should establish a way to be notified about conversation changes
 		 */
 		$this->check_wall_to_wall();
-		
+
 		if($this->is_wall_to_wall() && ($this->get_owner_url() == $this->get_redirect_url()))
 			$osparkle = ' sparkle';
-		
+
 		if($this->is_toplevel()) {
 			if($conv->get_profile_owner() == local_user()) {
 				$isstarred = (($item['starred']) ? "starred" : "unstarred");
@@ -214,8 +233,28 @@ class Item extends BaseObject {
 		localize_item($item);
 
 		if ($item["postopts"]) {
-			$langdata = explode(";", $item["postopts"]);
-			$langstr = substr($langdata[0], 5)." (".round($langdata[1]*100, 1)."%)";
+			//$langdata = explode(";", $item["postopts"]);
+			//$langstr = substr($langdata[0], 5)." (".round($langdata[1]*100, 1)."%)";
+			$langstr = "";
+			if (substr($item["postopts"], 0, 5) == "lang=") {
+				$postopts = substr($item["postopts"], 5);
+
+				$languages = explode(":", $postopts);
+
+				if (sizeof($languages) == 1) {
+					$languages = array();
+					$languages[] = $postopts;
+				}
+
+				foreach ($languages as $language) {
+					$langdata = explode(";", $language);
+					if ($langstr != "")
+						$langstr .= ", ";
+
+					//$langstr .= $langdata[0]." (".round($langdata[1]*100, 1)."%)";
+					$langstr .= round($langdata[1]*100, 1)."% ".$langdata[0];
+				}
+			}
 		}
 
 		$body = prepare_body($item,true);
@@ -244,14 +283,14 @@ class Item extends BaseObject {
 
 			'type' => implode("",array_slice(explode("/",$item['verb']),-1)),
 			'tags' => $tags,
-            'hashtags' => $hashtags,
-            'mentions' => $mentions,
+			'hashtags' => $hashtags,
+			'mentions' => $mentions,
 			'txt_cats' => t('Categories:'),
 			'txt_folders' => t('Filed under:'),
 			'has_cats' => ((count($categories)) ? 'true' : ''),
 			'has_folders' => ((count($folders)) ? 'true' : ''),
-            'categories' => $categories,
-            'folders' => $folders,            
+			'categories' => $categories,
+			'folders' => $folders,
 			'body' => $body_e,
 			'text' => $text_e,
 			'id' => $this->get_id(),
@@ -322,12 +361,12 @@ class Item extends BaseObject {
 				}
 			}
 		}
-		
+
         if ($this->is_toplevel()) {
             $result['total_comments_num'] = "$total_children";
             $result['total_comments_text'] = tt('comment', 'comments', $total_children);
         }
-        
+
 		$result['private'] = $item['private'];
 		$result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : '');
 
diff --git a/update.php b/update.php
index b70e7b8ce..6dd58757b 100644
--- a/update.php
+++ b/update.php
@@ -1,6 +1,6 @@
 
diff --git a/view/pl/messages.po b/view/pl/messages.po index aaeee8af5..dd107db44 100644 --- a/view/pl/messages.po +++ b/view/pl/messages.po @@ -16,6 +16,7 @@ # , 2012. # , 2012. # , 2012. +# Mariusz Pisz , 2013. # , 2012. # , 2012. # , 2012. @@ -27,9 +28,9 @@ msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: http://bugs.friendica.com/\n" -"POT-Creation-Date: 2013-01-18 10:00-0800\n" -"PO-Revision-Date: 2013-01-21 09:03+0000\n" -"Last-Translator: Cyryl Sochacki \n" +"POT-Creation-Date: 2013-02-07 10:00-0800\n" +"PO-Revision-Date: 2013-02-17 11:50+0000\n" +"Last-Translator: Piszu \n" "Language-Team: Polish (http://www.transifex.com/projects/p/friendica/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -57,11 +58,11 @@ msgstr "Nie udało się zaktualizować kontaktu." #: ../../mod/crepair.php:115 ../../mod/wall_attach.php:55 #: ../../mod/fsuggest.php:78 ../../mod/events.php:140 ../../mod/api.php:26 -#: ../../mod/api.php:31 ../../mod/photos.php:133 ../../mod/photos.php:995 +#: ../../mod/api.php:31 ../../mod/photos.php:133 ../../mod/photos.php:1041 #: ../../mod/editpost.php:10 ../../mod/install.php:151 ../../mod/poke.php:135 #: ../../mod/notifications.php:66 ../../mod/contacts.php:147 #: ../../mod/settings.php:91 ../../mod/settings.php:542 -#: ../../mod/settings.php:547 ../../mod/manage.php:90 ../../mod/network.php:6 +#: ../../mod/settings.php:547 ../../mod/manage.php:96 ../../mod/network.php:6 #: ../../mod/notes.php:20 ../../mod/uimport.php:23 ../../mod/wallmessage.php:9 #: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79 #: ../../mod/wallmessage.php:103 ../../mod/attach.php:33 @@ -70,18 +71,18 @@ msgstr "Nie udało się zaktualizować kontaktu." #: ../../mod/item.php:155 ../../mod/mood.php:114 #: ../../mod/profile_photo.php:19 ../../mod/profile_photo.php:169 #: ../../mod/profile_photo.php:180 ../../mod/profile_photo.php:193 -#: ../../mod/message.php:38 ../../mod/message.php:172 +#: ../../mod/message.php:38 ../../mod/message.php:174 #: ../../mod/allfriends.php:9 ../../mod/nogroup.php:25 #: ../../mod/wall_upload.php:66 ../../mod/follow.php:9 #: ../../mod/display.php:180 ../../mod/profiles.php:146 #: ../../mod/profiles.php:567 ../../mod/delegate.php:6 -#: ../../mod/suggest.php:28 ../../mod/invite.php:15 ../../mod/invite.php:83 +#: ../../mod/suggest.php:56 ../../mod/invite.php:15 ../../mod/invite.php:101 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:512 #: ../../addon/facebook/facebook.php:518 ../../addon/fbpost/fbpost.php:170 #: ../../addon/fbpost/fbpost.php:176 #: ../../addon/dav/friendica/layout.fnk.php:354 -#: ../../addon/tumblr/tumblr.php:34 ../../include/items.php:3987 -#: ../../index.php:340 ../../addon.old/facebook/facebook.php:510 +#: ../../addon/tumblr/tumblr.php:34 ../../include/items.php:4015 +#: ../../index.php:341 ../../addon.old/facebook/facebook.php:510 #: ../../addon.old/facebook/facebook.php:516 #: ../../addon.old/fbpost/fbpost.php:159 ../../addon.old/fbpost/fbpost.php:165 #: ../../addon.old/dav/friendica/layout.fnk.php:354 @@ -151,19 +152,20 @@ msgid "New photo from this URL" msgstr "Nowe zdjęcie z tej ścieżki" #: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107 -#: ../../mod/events.php:466 ../../mod/photos.php:1028 -#: ../../mod/photos.php:1118 ../../mod/photos.php:1402 -#: ../../mod/photos.php:1442 ../../mod/photos.php:1486 -#: ../../mod/photos.php:1569 ../../mod/install.php:248 +#: ../../mod/events.php:478 ../../mod/photos.php:1075 +#: ../../mod/photos.php:1196 ../../mod/photos.php:1498 +#: ../../mod/photos.php:1549 ../../mod/photos.php:1593 +#: ../../mod/photos.php:1676 ../../mod/install.php:248 #: ../../mod/install.php:286 ../../mod/localtime.php:45 ../../mod/poke.php:199 -#: ../../mod/content.php:710 ../../mod/contacts.php:352 +#: ../../mod/content.php:710 ../../mod/contacts.php:386 #: ../../mod/settings.php:560 ../../mod/settings.php:670 #: ../../mod/settings.php:739 ../../mod/settings.php:811 -#: ../../mod/settings.php:1018 ../../mod/group.php:87 ../../mod/mood.php:137 -#: ../../mod/message.php:301 ../../mod/message.php:527 ../../mod/admin.php:461 -#: ../../mod/admin.php:728 ../../mod/admin.php:865 ../../mod/admin.php:1064 -#: ../../mod/admin.php:1151 ../../mod/profiles.php:626 -#: ../../mod/invite.php:121 ../../addon/fromgplus/fromgplus.php:44 +#: ../../mod/settings.php:1037 ../../mod/manage.php:110 ../../mod/group.php:87 +#: ../../mod/mood.php:137 ../../mod/message.php:335 ../../mod/message.php:564 +#: ../../mod/admin.php:461 ../../mod/admin.php:728 ../../mod/admin.php:865 +#: ../../mod/admin.php:1068 ../../mod/admin.php:1155 +#: ../../mod/profiles.php:626 ../../mod/invite.php:140 +#: ../../addon/fromgplus/fromgplus.php:44 #: ../../addon/facebook/facebook.php:621 #: ../../addon/snautofollow/snautofollow.php:64 #: ../../addon/fbpost/fbpost.php:280 ../../addon/yourls/yourls.php:76 @@ -197,7 +199,7 @@ msgstr "Nowe zdjęcie z tej ścieżki" #: ../../addon/numfriends/numfriends.php:85 ../../addon/gnot/gnot.php:88 #: ../../addon/wppost/wppost.php:110 ../../addon/showmore/showmore.php:48 #: ../../addon/piwik/piwik.php:89 ../../addon/twitter/twitter.php:191 -#: ../../addon/twitter/twitter.php:229 ../../addon/twitter/twitter.php:554 +#: ../../addon/twitter/twitter.php:229 ../../addon/twitter/twitter.php:556 #: ../../addon/irc/irc.php:55 ../../addon/fromapp/fromapp.php:77 #: ../../addon/blogger/blogger.php:102 ../../addon/posterous/posterous.php:103 #: ../../view/theme/cleanzero/config.php:80 @@ -258,15 +260,15 @@ msgid "Help:" msgstr "Pomoc:" #: ../../mod/help.php:84 ../../addon/dav/friendica/layout.fnk.php:225 -#: ../../include/nav.php:86 ../../addon.old/dav/friendica/layout.fnk.php:225 +#: ../../include/nav.php:113 ../../addon.old/dav/friendica/layout.fnk.php:225 msgid "Help" msgstr "Pomoc" -#: ../../mod/help.php:90 ../../index.php:225 +#: ../../mod/help.php:90 ../../index.php:226 msgid "Not Found" msgstr "Nie znaleziono" -#: ../../mod/help.php:93 ../../index.php:228 +#: ../../mod/help.php:93 ../../index.php:229 msgid "Page not found." msgstr "Strona nie znaleziona." @@ -296,87 +298,87 @@ msgstr "Zaproponuj znajomych dla %s" msgid "Event title and start time are required." msgstr "" -#: ../../mod/events.php:279 +#: ../../mod/events.php:291 msgid "l, F j" msgstr "d, M d " -#: ../../mod/events.php:301 +#: ../../mod/events.php:313 msgid "Edit event" msgstr "Edytuj wydarzenie" -#: ../../mod/events.php:323 ../../include/text.php:1246 +#: ../../mod/events.php:335 ../../include/text.php:1258 msgid "link to source" msgstr "link do źródła" -#: ../../mod/events.php:358 ../../view/theme/diabook/theme.php:91 -#: ../../include/nav.php:52 ../../boot.php:1836 +#: ../../mod/events.php:370 ../../view/theme/diabook/theme.php:91 +#: ../../include/nav.php:79 ../../boot.php:1857 msgid "Events" msgstr "Wydarzenia" -#: ../../mod/events.php:359 +#: ../../mod/events.php:371 msgid "Create New Event" msgstr "Stwórz nowe wydarzenie" -#: ../../mod/events.php:360 ../../addon/dav/friendica/layout.fnk.php:263 +#: ../../mod/events.php:372 ../../addon/dav/friendica/layout.fnk.php:263 #: ../../addon.old/dav/friendica/layout.fnk.php:263 msgid "Previous" msgstr "Poprzedni" -#: ../../mod/events.php:361 ../../mod/install.php:207 +#: ../../mod/events.php:373 ../../mod/install.php:207 #: ../../addon/dav/friendica/layout.fnk.php:266 #: ../../addon.old/dav/friendica/layout.fnk.php:266 msgid "Next" msgstr "Następny" -#: ../../mod/events.php:434 +#: ../../mod/events.php:446 msgid "hour:minute" msgstr "godzina:minuta" -#: ../../mod/events.php:444 +#: ../../mod/events.php:456 msgid "Event details" msgstr "Szczegóły wydarzenia" -#: ../../mod/events.php:445 +#: ../../mod/events.php:457 #, php-format msgid "Format is %s %s. Starting date and Title are required." msgstr "" -#: ../../mod/events.php:447 +#: ../../mod/events.php:459 msgid "Event Starts:" msgstr "Rozpoczęcie wydarzenia:" -#: ../../mod/events.php:447 ../../mod/events.php:461 +#: ../../mod/events.php:459 ../../mod/events.php:473 msgid "Required" msgstr "Wymagany" -#: ../../mod/events.php:450 +#: ../../mod/events.php:462 msgid "Finish date/time is not known or not relevant" msgstr "Data/czas zakończenia nie jest znana lub jest nieistotna" -#: ../../mod/events.php:452 +#: ../../mod/events.php:464 msgid "Event Finishes:" msgstr "Zakończenie wydarzenia:" -#: ../../mod/events.php:455 +#: ../../mod/events.php:467 msgid "Adjust for viewer timezone" -msgstr "" +msgstr "Dopasuj dla strefy czasowej widza" -#: ../../mod/events.php:457 +#: ../../mod/events.php:469 msgid "Description:" msgstr "Opis:" -#: ../../mod/events.php:459 ../../mod/directory.php:134 +#: ../../mod/events.php:471 ../../mod/directory.php:134 #: ../../addon/forumdirectory/forumdirectory.php:156 #: ../../include/event.php:40 ../../include/bb2diaspora.php:415 -#: ../../boot.php:1358 +#: ../../boot.php:1379 msgid "Location:" msgstr "Lokalizacja" -#: ../../mod/events.php:461 +#: ../../mod/events.php:473 msgid "Title:" msgstr "Tytuł:" -#: ../../mod/events.php:463 +#: ../../mod/events.php:475 msgid "Share this event" msgstr "Udostępnij te wydarzenie" @@ -384,11 +386,14 @@ msgstr "Udostępnij te wydarzenie" msgid "System down for maintenance" msgstr "" -#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94 ../../mod/editpost.php:145 -#: ../../mod/dfrn_request.php:848 ../../mod/settings.php:561 -#: ../../mod/settings.php:587 ../../mod/fbrowser.php:81 -#: ../../mod/fbrowser.php:116 ../../addon/js_upload/js_upload.php:45 -#: ../../include/conversation.php:1040 +#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94 ../../mod/photos.php:202 +#: ../../mod/photos.php:289 ../../mod/editpost.php:148 +#: ../../mod/dfrn_request.php:848 ../../mod/contacts.php:249 +#: ../../mod/settings.php:561 ../../mod/settings.php:587 +#: ../../mod/fbrowser.php:81 ../../mod/fbrowser.php:116 +#: ../../mod/message.php:212 ../../mod/suggest.php:32 +#: ../../addon/js_upload/js_upload.php:45 ../../include/items.php:3897 +#: ../../include/conversation.php:1062 #: ../../addon.old/js_upload/js_upload.php:45 msgid "Cancel" msgstr "Anuluj" @@ -411,7 +416,7 @@ msgstr "Wybierz tag do usunięcia" msgid "Remove" msgstr "Usuń" -#: ../../mod/dfrn_poll.php:99 ../../mod/dfrn_poll.php:530 +#: ../../mod/dfrn_poll.php:101 ../../mod/dfrn_poll.php:534 #, php-format msgid "%1$s welcomes %2$s" msgstr "" @@ -435,14 +440,16 @@ msgid "" msgstr "Czy chcesz umożliwić tej aplikacji dostęp do Twoich wpisów, kontaktów oraz pozwolić jej na pisanie za Ciebie postów?" #: ../../mod/api.php:105 ../../mod/dfrn_request.php:836 -#: ../../mod/settings.php:934 ../../mod/settings.php:940 -#: ../../mod/settings.php:948 ../../mod/settings.php:952 -#: ../../mod/settings.php:957 ../../mod/settings.php:963 -#: ../../mod/settings.php:969 ../../mod/settings.php:975 -#: ../../mod/settings.php:1005 ../../mod/settings.php:1006 -#: ../../mod/settings.php:1007 ../../mod/settings.php:1008 -#: ../../mod/settings.php:1009 ../../mod/register.php:239 -#: ../../mod/profiles.php:606 +#: ../../mod/contacts.php:246 ../../mod/settings.php:934 +#: ../../mod/settings.php:940 ../../mod/settings.php:948 +#: ../../mod/settings.php:952 ../../mod/settings.php:957 +#: ../../mod/settings.php:963 ../../mod/settings.php:969 +#: ../../mod/settings.php:975 ../../mod/settings.php:1005 +#: ../../mod/settings.php:1006 ../../mod/settings.php:1007 +#: ../../mod/settings.php:1008 ../../mod/settings.php:1009 +#: ../../mod/register.php:239 ../../mod/message.php:209 +#: ../../mod/profiles.php:606 ../../mod/suggest.php:29 +#: ../../include/items.php:3894 msgid "Yes" msgstr "Tak" @@ -458,20 +465,20 @@ msgstr "Tak" msgid "No" msgstr "Nie" -#: ../../mod/photos.php:51 ../../boot.php:1829 +#: ../../mod/photos.php:51 ../../boot.php:1850 msgid "Photo Albums" msgstr "Albumy zdjęć" -#: ../../mod/photos.php:59 ../../mod/photos.php:154 ../../mod/photos.php:1009 -#: ../../mod/photos.php:1102 ../../mod/photos.php:1125 -#: ../../mod/photos.php:1626 ../../mod/photos.php:1638 +#: ../../mod/photos.php:59 ../../mod/photos.php:154 ../../mod/photos.php:1055 +#: ../../mod/photos.php:1180 ../../mod/photos.php:1203 +#: ../../mod/photos.php:1733 ../../mod/photos.php:1745 #: ../../addon/communityhome/communityhome.php:115 #: ../../view/theme/diabook/theme.php:492 #: ../../addon.old/communityhome/communityhome.php:110 msgid "Contact Photos" msgstr "Zdjęcia kontaktu" -#: ../../mod/photos.php:66 ../../mod/photos.php:1141 ../../mod/photos.php:1685 +#: ../../mod/photos.php:66 ../../mod/photos.php:1219 ../../mod/photos.php:1792 msgid "Upload New Photos" msgstr "Wyślij nowe zdjęcie" @@ -483,8 +490,8 @@ msgstr "wszyscy" msgid "Contact information unavailable" msgstr "Informacje o kontakcie nie dostępne." -#: ../../mod/photos.php:154 ../../mod/photos.php:676 ../../mod/photos.php:1102 -#: ../../mod/photos.php:1125 ../../mod/profile_photo.php:74 +#: ../../mod/photos.php:154 ../../mod/photos.php:722 ../../mod/photos.php:1180 +#: ../../mod/photos.php:1203 ../../mod/profile_photo.php:74 #: ../../mod/profile_photo.php:81 ../../mod/profile_photo.php:88 #: ../../mod/profile_photo.php:204 ../../mod/profile_photo.php:296 #: ../../mod/profile_photo.php:305 @@ -499,213 +506,247 @@ msgstr "Zdjęcia profilowe" msgid "Album not found." msgstr "Album nie znaleziony" -#: ../../mod/photos.php:182 ../../mod/photos.php:1119 +#: ../../mod/photos.php:187 ../../mod/photos.php:199 ../../mod/photos.php:1197 msgid "Delete Album" msgstr "Usuń album" -#: ../../mod/photos.php:245 ../../mod/photos.php:1403 +#: ../../mod/photos.php:197 +msgid "Do you really want to delete this photo album and all its photos?" +msgstr "" + +#: ../../mod/photos.php:275 ../../mod/photos.php:286 ../../mod/photos.php:1499 msgid "Delete Photo" msgstr "Usuń zdjęcie" -#: ../../mod/photos.php:607 +#: ../../mod/photos.php:284 +msgid "Do you really want to delete this photo?" +msgstr "" + +#: ../../mod/photos.php:653 #, php-format msgid "%1$s was tagged in %2$s by %3$s" msgstr "" -#: ../../mod/photos.php:607 +#: ../../mod/photos.php:653 msgid "a photo" msgstr "zdjęcie" -#: ../../mod/photos.php:712 ../../addon/js_upload/js_upload.php:321 +#: ../../mod/photos.php:758 ../../addon/js_upload/js_upload.php:321 #: ../../addon.old/js_upload/js_upload.php:315 msgid "Image exceeds size limit of " msgstr "obrazek przekracza limit rozmiaru" -#: ../../mod/photos.php:720 +#: ../../mod/photos.php:766 msgid "Image file is empty." msgstr "Plik obrazka jest pusty." -#: ../../mod/photos.php:752 ../../mod/profile_photo.php:153 +#: ../../mod/photos.php:798 ../../mod/profile_photo.php:153 #: ../../mod/wall_upload.php:112 msgid "Unable to process image." msgstr "Przetwarzanie obrazu nie powiodło się." -#: ../../mod/photos.php:779 ../../mod/profile_photo.php:301 +#: ../../mod/photos.php:825 ../../mod/profile_photo.php:301 #: ../../mod/wall_upload.php:138 msgid "Image upload failed." msgstr "Przesyłanie obrazu nie powiodło się" -#: ../../mod/photos.php:865 ../../mod/community.php:18 +#: ../../mod/photos.php:911 ../../mod/community.php:18 #: ../../mod/dfrn_request.php:761 ../../mod/viewcontacts.php:17 #: ../../mod/display.php:19 ../../mod/search.php:89 ../../mod/directory.php:31 #: ../../addon/forumdirectory/forumdirectory.php:53 msgid "Public access denied." msgstr "Publiczny dostęp zabroniony" -#: ../../mod/photos.php:875 +#: ../../mod/photos.php:921 msgid "No photos selected" msgstr "Nie zaznaczono zdjęć" -#: ../../mod/photos.php:976 +#: ../../mod/photos.php:1022 msgid "Access to this item is restricted." msgstr "Dostęp do tego obiektu jest ograniczony." -#: ../../mod/photos.php:1037 +#: ../../mod/photos.php:1085 #, php-format msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage." msgstr "" -#: ../../mod/photos.php:1053 +#: ../../mod/photos.php:1120 msgid "Upload Photos" msgstr "Prześlij zdjęcia" -#: ../../mod/photos.php:1057 ../../mod/photos.php:1114 +#: ../../mod/photos.php:1124 ../../mod/photos.php:1192 msgid "New album name: " msgstr "Nazwa nowego albumu:" -#: ../../mod/photos.php:1058 +#: ../../mod/photos.php:1125 msgid "or existing album name: " msgstr "lub istniejąca nazwa albumu:" -#: ../../mod/photos.php:1059 +#: ../../mod/photos.php:1126 msgid "Do not show a status post for this upload" msgstr "Nie pokazuj postów statusu dla tego wysłania" -#: ../../mod/photos.php:1061 ../../mod/photos.php:1398 +#: ../../mod/photos.php:1128 ../../mod/photos.php:1494 msgid "Permissions" msgstr "Uprawnienia" -#: ../../mod/photos.php:1129 +#: ../../mod/photos.php:1137 ../../mod/photos.php:1503 +#: ../../mod/settings.php:1070 +msgid "Show to Groups" +msgstr "" + +#: ../../mod/photos.php:1138 ../../mod/photos.php:1504 +#: ../../mod/settings.php:1071 +msgid "Show to Contacts" +msgstr "" + +#: ../../mod/photos.php:1139 +msgid "Private Photo" +msgstr "" + +#: ../../mod/photos.php:1140 +msgid "Public Photo" +msgstr "" + +#: ../../mod/photos.php:1207 msgid "Edit Album" msgstr "Edytuj album" -#: ../../mod/photos.php:1135 +#: ../../mod/photos.php:1213 msgid "Show Newest First" msgstr "Najpierw pokaż najnowsze" -#: ../../mod/photos.php:1137 +#: ../../mod/photos.php:1215 msgid "Show Oldest First" msgstr "Najpierw pokaż najstarsze" -#: ../../mod/photos.php:1170 ../../mod/photos.php:1668 +#: ../../mod/photos.php:1248 ../../mod/photos.php:1775 msgid "View Photo" msgstr "Zobacz zdjęcie" -#: ../../mod/photos.php:1205 +#: ../../mod/photos.php:1283 msgid "Permission denied. Access to this item may be restricted." msgstr "Odmowa dostępu. Dostęp do tych danych może być ograniczony." -#: ../../mod/photos.php:1207 +#: ../../mod/photos.php:1285 msgid "Photo not available" msgstr "Zdjęcie niedostępne" -#: ../../mod/photos.php:1263 +#: ../../mod/photos.php:1341 msgid "View photo" msgstr "Zobacz zdjęcie" -#: ../../mod/photos.php:1263 +#: ../../mod/photos.php:1341 msgid "Edit photo" msgstr "Edytuj zdjęcie" -#: ../../mod/photos.php:1264 +#: ../../mod/photos.php:1342 msgid "Use as profile photo" msgstr "Ustaw jako zdjęcie profilowe" -#: ../../mod/photos.php:1270 ../../mod/content.php:620 +#: ../../mod/photos.php:1348 ../../mod/content.php:620 #: ../../object/Item.php:106 msgid "Private Message" msgstr "Wiadomość prywatna" -#: ../../mod/photos.php:1289 +#: ../../mod/photos.php:1367 msgid "View Full Size" msgstr "Zobacz w pełnym rozmiarze" -#: ../../mod/photos.php:1363 +#: ../../mod/photos.php:1441 msgid "Tags: " msgstr "Tagi:" -#: ../../mod/photos.php:1366 +#: ../../mod/photos.php:1444 msgid "[Remove any tag]" msgstr "[Usunąć znacznik]" -#: ../../mod/photos.php:1388 +#: ../../mod/photos.php:1484 msgid "Rotate CW (right)" msgstr "" -#: ../../mod/photos.php:1389 +#: ../../mod/photos.php:1485 msgid "Rotate CCW (left)" msgstr "" -#: ../../mod/photos.php:1391 +#: ../../mod/photos.php:1487 msgid "New album name" msgstr "Nazwa nowego albumu" -#: ../../mod/photos.php:1394 +#: ../../mod/photos.php:1490 msgid "Caption" msgstr "Zawartość" -#: ../../mod/photos.php:1396 +#: ../../mod/photos.php:1492 msgid "Add a Tag" msgstr "Dodaj tag" -#: ../../mod/photos.php:1400 +#: ../../mod/photos.php:1496 msgid "" "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "Przykładowo: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" -#: ../../mod/photos.php:1420 ../../mod/content.php:684 +#: ../../mod/photos.php:1505 +msgid "Private photo" +msgstr "" + +#: ../../mod/photos.php:1506 +msgid "Public photo" +msgstr "" + +#: ../../mod/photos.php:1526 ../../mod/content.php:684 #: ../../object/Item.php:204 msgid "I like this (toggle)" msgstr "Lubię to (zmień)" -#: ../../mod/photos.php:1421 ../../mod/content.php:685 +#: ../../mod/photos.php:1527 ../../mod/content.php:685 #: ../../object/Item.php:205 msgid "I don't like this (toggle)" msgstr "Nie lubię (zmień)" -#: ../../mod/photos.php:1422 ../../include/conversation.php:1000 +#: ../../mod/photos.php:1528 ../../include/conversation.php:1023 msgid "Share" msgstr "Podziel się" -#: ../../mod/photos.php:1423 ../../mod/editpost.php:121 +#: ../../mod/photos.php:1529 ../../mod/editpost.php:124 #: ../../mod/content.php:499 ../../mod/content.php:883 -#: ../../mod/wallmessage.php:152 ../../mod/message.php:300 -#: ../../mod/message.php:528 ../../include/conversation.php:645 -#: ../../include/conversation.php:1019 ../../object/Item.php:293 +#: ../../mod/wallmessage.php:156 ../../mod/message.php:334 +#: ../../mod/message.php:565 ../../include/conversation.php:646 +#: ../../include/conversation.php:1042 ../../object/Item.php:293 msgid "Please wait" msgstr "Proszę czekać" -#: ../../mod/photos.php:1439 ../../mod/photos.php:1483 -#: ../../mod/photos.php:1566 ../../mod/content.php:707 +#: ../../mod/photos.php:1546 ../../mod/photos.php:1590 +#: ../../mod/photos.php:1673 ../../mod/content.php:707 #: ../../object/Item.php:601 msgid "This is you" msgstr "To jesteś ty" -#: ../../mod/photos.php:1441 ../../mod/photos.php:1485 -#: ../../mod/photos.php:1568 ../../mod/content.php:709 ../../boot.php:641 +#: ../../mod/photos.php:1548 ../../mod/photos.php:1592 +#: ../../mod/photos.php:1675 ../../mod/content.php:709 ../../boot.php:641 #: ../../object/Item.php:290 ../../object/Item.php:603 msgid "Comment" msgstr "Komentarz" -#: ../../mod/photos.php:1443 ../../mod/photos.php:1487 -#: ../../mod/photos.php:1570 ../../mod/editpost.php:142 -#: ../../mod/content.php:719 ../../include/conversation.php:1037 +#: ../../mod/photos.php:1550 ../../mod/photos.php:1594 +#: ../../mod/photos.php:1677 ../../mod/editpost.php:145 +#: ../../mod/content.php:719 ../../include/conversation.php:1059 #: ../../object/Item.php:613 msgid "Preview" msgstr "Podgląd" -#: ../../mod/photos.php:1527 ../../mod/content.php:439 +#: ../../mod/photos.php:1634 ../../mod/content.php:439 #: ../../mod/content.php:741 ../../mod/settings.php:623 #: ../../mod/group.php:171 ../../mod/admin.php:735 -#: ../../include/conversation.php:569 ../../object/Item.php:120 +#: ../../include/conversation.php:570 ../../object/Item.php:120 msgid "Delete" msgstr "Usuń" -#: ../../mod/photos.php:1674 +#: ../../mod/photos.php:1781 msgid "View Album" msgstr "Zobacz album" -#: ../../mod/photos.php:1683 +#: ../../mod/photos.php:1790 msgid "Recent Photos" msgstr "Ostatnio dodane zdjęcia" @@ -714,7 +755,7 @@ msgid "Not available." msgstr "Niedostępne." #: ../../mod/community.php:32 ../../view/theme/diabook/theme.php:93 -#: ../../include/nav.php:101 +#: ../../include/nav.php:128 msgid "Community" msgstr "Społeczność" @@ -763,96 +804,92 @@ msgstr "Artykuł nie znaleziony" msgid "Edit post" msgstr "Edytuj post" -#: ../../mod/editpost.php:91 ../../include/conversation.php:986 -msgid "Post to Email" -msgstr "Wyślij poprzez email" - -#: ../../mod/editpost.php:106 ../../mod/content.php:728 +#: ../../mod/editpost.php:109 ../../mod/content.php:728 #: ../../mod/settings.php:622 ../../object/Item.php:110 msgid "Edit" msgstr "Edytuj" -#: ../../mod/editpost.php:107 ../../mod/wallmessage.php:150 -#: ../../mod/message.php:298 ../../mod/message.php:525 -#: ../../include/conversation.php:1001 +#: ../../mod/editpost.php:110 ../../mod/wallmessage.php:154 +#: ../../mod/message.php:332 ../../mod/message.php:562 +#: ../../include/conversation.php:1024 msgid "Upload photo" msgstr "Wyślij zdjęcie" -#: ../../mod/editpost.php:108 ../../include/conversation.php:1002 +#: ../../mod/editpost.php:111 ../../include/conversation.php:1025 msgid "upload photo" msgstr "dodaj zdjęcie" -#: ../../mod/editpost.php:109 ../../include/conversation.php:1003 +#: ../../mod/editpost.php:112 ../../include/conversation.php:1026 msgid "Attach file" msgstr "Przyłącz plik" -#: ../../mod/editpost.php:110 ../../include/conversation.php:1004 +#: ../../mod/editpost.php:113 ../../include/conversation.php:1027 msgid "attach file" msgstr "załącz plik" -#: ../../mod/editpost.php:111 ../../mod/wallmessage.php:151 -#: ../../mod/message.php:299 ../../mod/message.php:526 -#: ../../include/conversation.php:1005 +#: ../../mod/editpost.php:114 ../../mod/wallmessage.php:155 +#: ../../mod/message.php:333 ../../mod/message.php:563 +#: ../../include/conversation.php:1028 msgid "Insert web link" msgstr "Wstaw link" -#: ../../mod/editpost.php:112 ../../include/conversation.php:1006 +#: ../../mod/editpost.php:115 ../../include/conversation.php:1029 msgid "web link" msgstr "Adres www" -#: ../../mod/editpost.php:113 ../../include/conversation.php:1007 +#: ../../mod/editpost.php:116 ../../include/conversation.php:1030 msgid "Insert video link" msgstr "Wstaw link wideo" -#: ../../mod/editpost.php:114 ../../include/conversation.php:1008 +#: ../../mod/editpost.php:117 ../../include/conversation.php:1031 msgid "video link" msgstr "link do filmu" -#: ../../mod/editpost.php:115 ../../include/conversation.php:1009 +#: ../../mod/editpost.php:118 ../../include/conversation.php:1032 msgid "Insert audio link" msgstr "Wstaw link audio" -#: ../../mod/editpost.php:116 ../../include/conversation.php:1010 +#: ../../mod/editpost.php:119 ../../include/conversation.php:1033 msgid "audio link" msgstr "Link audio" -#: ../../mod/editpost.php:117 ../../include/conversation.php:1011 +#: ../../mod/editpost.php:120 ../../include/conversation.php:1034 msgid "Set your location" msgstr "Ustaw swoje położenie" -#: ../../mod/editpost.php:118 ../../include/conversation.php:1012 +#: ../../mod/editpost.php:121 ../../include/conversation.php:1035 msgid "set location" msgstr "wybierz lokalizację" -#: ../../mod/editpost.php:119 ../../include/conversation.php:1013 +#: ../../mod/editpost.php:122 ../../include/conversation.php:1036 msgid "Clear browser location" msgstr "Wyczyść położenie przeglądarki" -#: ../../mod/editpost.php:120 ../../include/conversation.php:1014 +#: ../../mod/editpost.php:123 ../../include/conversation.php:1037 msgid "clear location" msgstr "wyczyść lokalizację" -#: ../../mod/editpost.php:122 ../../include/conversation.php:1020 +#: ../../mod/editpost.php:125 ../../include/conversation.php:1043 msgid "Permission settings" msgstr "Ustawienia uprawnień" -#: ../../mod/editpost.php:130 ../../include/conversation.php:1029 +#: ../../mod/editpost.php:133 ../../include/conversation.php:1052 msgid "CC: email addresses" msgstr "CC: adresy e-mail" -#: ../../mod/editpost.php:131 ../../include/conversation.php:1030 +#: ../../mod/editpost.php:134 ../../include/conversation.php:1053 msgid "Public post" msgstr "Publiczny post" -#: ../../mod/editpost.php:134 ../../include/conversation.php:1016 +#: ../../mod/editpost.php:137 ../../include/conversation.php:1039 msgid "Set title" msgstr "Ustaw tytuł" -#: ../../mod/editpost.php:136 ../../include/conversation.php:1018 +#: ../../mod/editpost.php:139 ../../include/conversation.php:1041 msgid "Categories (comma-separated list)" msgstr "" -#: ../../mod/editpost.php:137 ../../include/conversation.php:1032 +#: ../../mod/editpost.php:140 ../../include/conversation.php:1055 msgid "Example: bob@example.com, mary@example.com" msgstr "Przykład: bob@example.com, mary@example.com" @@ -1046,7 +1083,7 @@ msgstr "Twój zidentyfikowany adres:" msgid "Submit Request" msgstr "Wyślij zgłoszenie" -#: ../../mod/uexport.php:9 ../../mod/settings.php:30 ../../include/nav.php:140 +#: ../../mod/uexport.php:9 ../../mod/settings.php:30 ../../include/nav.php:167 msgid "Account settings" msgstr "Ustawienia konta" @@ -1075,10 +1112,10 @@ msgid "Remove account" msgstr "Usuń konto" #: ../../mod/uexport.php:48 ../../mod/settings.php:74 -#: ../../mod/newmember.php:22 ../../mod/admin.php:824 ../../mod/admin.php:1029 +#: ../../mod/newmember.php:22 ../../mod/admin.php:824 ../../mod/admin.php:1033 #: ../../addon/dav/friendica/layout.fnk.php:225 #: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:537 -#: ../../view/theme/diabook/theme.php:658 ../../include/nav.php:140 +#: ../../view/theme/diabook/theme.php:658 ../../include/nav.php:167 #: ../../addon.old/dav/friendica/layout.fnk.php:225 #: ../../addon.old/mathjax/mathjax.php:36 msgid "Settings" @@ -1305,7 +1342,7 @@ msgstr "Błąd: moduł PHP mb_string jest wymagany ale nie jest zainstalowany" msgid "" "The web installer needs to be able to create a file called \".htconfig.php\"" " in the top folder of your web server and it is unable to do so." -msgstr "" +msgstr "Instalator WWW musi być w stanie utworzyć plik o nazwie \". Htconfig.php\" i nie jest w stanie tego zrobić." #: ../../mod/install.php:424 msgid "" @@ -1454,8 +1491,8 @@ msgstr "Brak słów-kluczy do wyszukania. Dodaj słowa-klucze do swojego domyśl msgid "is interested in:" msgstr "interesuje się:" -#: ../../mod/match.php:58 ../../mod/suggest.php:59 -#: ../../include/contact_widgets.php:9 ../../boot.php:1296 +#: ../../mod/match.php:58 ../../mod/suggest.php:88 +#: ../../include/contact_widgets.php:9 ../../boot.php:1317 msgid "Connect" msgstr "Połącz" @@ -1472,37 +1509,37 @@ msgstr "Dane prywatne nie są dostępne zdalnie " msgid "Visible to:" msgstr "Widoczne dla:" -#: ../../mod/content.php:119 ../../mod/network.php:594 +#: ../../mod/content.php:119 ../../mod/network.php:596 msgid "No such group" msgstr "Nie ma takiej grupy" -#: ../../mod/content.php:130 ../../mod/network.php:605 +#: ../../mod/content.php:130 ../../mod/network.php:607 msgid "Group is empty" msgstr "Grupa jest pusta" -#: ../../mod/content.php:134 ../../mod/network.php:609 +#: ../../mod/content.php:134 ../../mod/network.php:611 msgid "Group: " msgstr "Grupa:" #: ../../mod/content.php:438 ../../mod/content.php:740 -#: ../../include/conversation.php:568 ../../object/Item.php:119 +#: ../../include/conversation.php:569 ../../object/Item.php:119 msgid "Select" msgstr "Wybierz" #: ../../mod/content.php:472 ../../mod/content.php:852 -#: ../../mod/content.php:853 ../../include/conversation.php:608 +#: ../../mod/content.php:853 ../../include/conversation.php:609 #: ../../object/Item.php:258 ../../object/Item.php:259 #, php-format msgid "View %s's profile @ %s" msgstr "Pokaż %s's profil @ %s" #: ../../mod/content.php:482 ../../mod/content.php:864 -#: ../../include/conversation.php:628 ../../object/Item.php:272 +#: ../../include/conversation.php:629 ../../object/Item.php:272 #, php-format msgid "%s from %s" msgstr "%s od %s" -#: ../../mod/content.php:497 ../../include/conversation.php:643 +#: ../../mod/content.php:497 ../../include/conversation.php:644 msgid "View in context" msgstr "Zobacz w kontekście" @@ -1514,7 +1551,7 @@ msgstr[0] " %d komentarz" msgstr[1] " %d komentarzy" msgstr[2] " %d komentarzy" -#: ../../mod/content.php:605 ../../include/text.php:1502 +#: ../../mod/content.php:605 ../../include/text.php:1514 #: ../../object/Item.php:315 ../../object/Item.php:328 msgid "comment" msgid_plural "comments" @@ -1608,11 +1645,11 @@ msgstr "do" #: ../../mod/content.php:855 ../../object/Item.php:262 msgid "Wall-to-Wall" -msgstr "" +msgstr "Wall-to-Wall" #: ../../mod/content.php:856 ../../object/Item.php:263 msgid "via Wall-To-Wall:" -msgstr "" +msgstr "via Wall-To-Wall:" #: ../../mod/home.php:34 ../../addon/communityhome/communityhome.php:189 #: ../../addon.old/communityhome/communityhome.php:179 @@ -1630,8 +1667,8 @@ msgid "Discard" msgstr "Odrzuć" #: ../../mod/notifications.php:51 ../../mod/notifications.php:164 -#: ../../mod/notifications.php:210 ../../mod/contacts.php:325 -#: ../../mod/contacts.php:379 +#: ../../mod/notifications.php:210 ../../mod/contacts.php:359 +#: ../../mod/contacts.php:413 msgid "Ignore" msgstr "Ignoruj" @@ -1639,7 +1676,7 @@ msgstr "Ignoruj" msgid "System" msgstr "System" -#: ../../mod/notifications.php:83 ../../include/nav.php:113 +#: ../../mod/notifications.php:83 ../../include/nav.php:140 msgid "Network" msgstr "Sieć" @@ -1648,16 +1685,16 @@ msgid "Personal" msgstr "Osobiste" #: ../../mod/notifications.php:93 ../../view/theme/diabook/theme.php:87 -#: ../../include/nav.php:77 ../../include/nav.php:116 +#: ../../include/nav.php:104 ../../include/nav.php:143 msgid "Home" msgstr "Dom" -#: ../../mod/notifications.php:98 ../../include/nav.php:122 +#: ../../mod/notifications.php:98 ../../include/nav.php:149 msgid "Introductions" msgstr "Wstępy" -#: ../../mod/notifications.php:103 ../../mod/message.php:180 -#: ../../include/nav.php:129 +#: ../../mod/notifications.php:103 ../../mod/message.php:182 +#: ../../include/nav.php:156 msgid "Messages" msgstr "Wiadomości" @@ -1683,7 +1720,7 @@ msgid "suggested by %s" msgstr "zaproponowane przez %s" #: ../../mod/notifications.php:157 ../../mod/notifications.php:204 -#: ../../mod/contacts.php:385 +#: ../../mod/contacts.php:419 msgid "Hide this contact from others" msgstr "Ukryj ten kontakt przed innymi" @@ -1740,7 +1777,7 @@ msgstr "Nowy obserwator" msgid "No introductions." msgstr "Brak wstępu." -#: ../../mod/notifications.php:220 ../../include/nav.php:123 +#: ../../mod/notifications.php:220 ../../include/nav.php:150 msgid "Notifications" msgstr "Powiadomienia" @@ -1841,51 +1878,55 @@ msgstr "Kontakt został zarchiwizowany" msgid "Contact has been unarchived" msgstr "" -#: ../../mod/contacts.php:233 +#: ../../mod/contacts.php:244 +msgid "Do you really want to delete this contact?" +msgstr "" + +#: ../../mod/contacts.php:263 msgid "Contact has been removed." msgstr "Kontakt został usunięty." -#: ../../mod/contacts.php:267 +#: ../../mod/contacts.php:301 #, php-format msgid "You are mutual friends with %s" msgstr "Jesteś już znajomym z %s" -#: ../../mod/contacts.php:271 +#: ../../mod/contacts.php:305 #, php-format msgid "You are sharing with %s" msgstr "Współdzielisz z %s" -#: ../../mod/contacts.php:276 +#: ../../mod/contacts.php:310 #, php-format msgid "%s is sharing with you" msgstr "%s współdzieli z tobą" -#: ../../mod/contacts.php:293 +#: ../../mod/contacts.php:327 msgid "Private communications are not available for this contact." msgstr "Prywatna rozmowa jest niemożliwa dla tego kontaktu" -#: ../../mod/contacts.php:296 +#: ../../mod/contacts.php:330 msgid "Never" msgstr "Nigdy" -#: ../../mod/contacts.php:300 +#: ../../mod/contacts.php:334 msgid "(Update was successful)" msgstr "(Aktualizacja przebiegła pomyślnie)" -#: ../../mod/contacts.php:300 +#: ../../mod/contacts.php:334 msgid "(Update was not successful)" msgstr "(Aktualizacja nie powiodła się)" -#: ../../mod/contacts.php:302 +#: ../../mod/contacts.php:336 msgid "Suggest friends" msgstr "Osoby, które możesz znać" -#: ../../mod/contacts.php:306 +#: ../../mod/contacts.php:340 #, php-format msgid "Network type: %s" msgstr "Typ sieci: %s" -#: ../../mod/contacts.php:309 ../../include/contact_widgets.php:199 +#: ../../mod/contacts.php:343 ../../include/contact_widgets.php:199 #, php-format msgid "%d contact in common" msgid_plural "%d contacts in common" @@ -1893,221 +1934,221 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: ../../mod/contacts.php:314 +#: ../../mod/contacts.php:348 msgid "View all contacts" msgstr "Zobacz wszystkie kontakty" -#: ../../mod/contacts.php:319 ../../mod/contacts.php:378 +#: ../../mod/contacts.php:353 ../../mod/contacts.php:412 #: ../../mod/admin.php:737 msgid "Unblock" msgstr "Odblokuj" -#: ../../mod/contacts.php:319 ../../mod/contacts.php:378 +#: ../../mod/contacts.php:353 ../../mod/contacts.php:412 #: ../../mod/admin.php:736 msgid "Block" msgstr "Zablokuj" -#: ../../mod/contacts.php:322 +#: ../../mod/contacts.php:356 msgid "Toggle Blocked status" msgstr "" -#: ../../mod/contacts.php:325 ../../mod/contacts.php:379 +#: ../../mod/contacts.php:359 ../../mod/contacts.php:413 msgid "Unignore" msgstr "Odblokuj" -#: ../../mod/contacts.php:328 +#: ../../mod/contacts.php:362 msgid "Toggle Ignored status" msgstr "" -#: ../../mod/contacts.php:332 +#: ../../mod/contacts.php:366 msgid "Unarchive" msgstr "" -#: ../../mod/contacts.php:332 +#: ../../mod/contacts.php:366 msgid "Archive" msgstr "Archiwum" -#: ../../mod/contacts.php:335 +#: ../../mod/contacts.php:369 msgid "Toggle Archive status" msgstr "" -#: ../../mod/contacts.php:338 +#: ../../mod/contacts.php:372 msgid "Repair" msgstr "Napraw" -#: ../../mod/contacts.php:341 +#: ../../mod/contacts.php:375 msgid "Advanced Contact Settings" msgstr "Zaawansowane ustawienia kontaktów" -#: ../../mod/contacts.php:347 +#: ../../mod/contacts.php:381 msgid "Communications lost with this contact!" msgstr "" -#: ../../mod/contacts.php:350 +#: ../../mod/contacts.php:384 msgid "Contact Editor" msgstr "Edytor kontaktów" -#: ../../mod/contacts.php:353 +#: ../../mod/contacts.php:387 msgid "Profile Visibility" msgstr "Widoczność profilu" -#: ../../mod/contacts.php:354 +#: ../../mod/contacts.php:388 #, php-format msgid "" "Please choose the profile you would like to display to %s when viewing your " "profile securely." msgstr "Wybierz profil, który chcesz bezpiecznie wyświetlić %s" -#: ../../mod/contacts.php:355 +#: ../../mod/contacts.php:389 msgid "Contact Information / Notes" msgstr "Informacja o kontakcie / Notka" -#: ../../mod/contacts.php:356 +#: ../../mod/contacts.php:390 msgid "Edit contact notes" msgstr "Edytuj notatki kontaktu" -#: ../../mod/contacts.php:361 ../../mod/contacts.php:553 +#: ../../mod/contacts.php:395 ../../mod/contacts.php:585 #: ../../mod/viewcontacts.php:62 ../../mod/nogroup.php:40 #, php-format msgid "Visit %s's profile [%s]" msgstr "Obejrzyj %s's profil [%s]" -#: ../../mod/contacts.php:362 +#: ../../mod/contacts.php:396 msgid "Block/Unblock contact" msgstr "Zablokuj/odblokuj kontakt" -#: ../../mod/contacts.php:363 +#: ../../mod/contacts.php:397 msgid "Ignore contact" msgstr "Ignoruj kontakt" -#: ../../mod/contacts.php:364 +#: ../../mod/contacts.php:398 msgid "Repair URL settings" msgstr "Napraw ustawienia adresu" -#: ../../mod/contacts.php:365 +#: ../../mod/contacts.php:399 msgid "View conversations" msgstr "Zobacz rozmowę" -#: ../../mod/contacts.php:367 +#: ../../mod/contacts.php:401 msgid "Delete contact" msgstr "Usuń kontakt" -#: ../../mod/contacts.php:371 +#: ../../mod/contacts.php:405 msgid "Last update:" msgstr "Ostatnia aktualizacja:" -#: ../../mod/contacts.php:373 +#: ../../mod/contacts.php:407 msgid "Update public posts" msgstr "Zaktualizuj publiczne posty" -#: ../../mod/contacts.php:375 ../../mod/admin.php:1209 +#: ../../mod/contacts.php:409 ../../mod/admin.php:1213 msgid "Update now" msgstr "Aktualizuj teraz" -#: ../../mod/contacts.php:382 +#: ../../mod/contacts.php:416 msgid "Currently blocked" msgstr "Obecnie zablokowany" -#: ../../mod/contacts.php:383 +#: ../../mod/contacts.php:417 msgid "Currently ignored" msgstr "Obecnie zignorowany" -#: ../../mod/contacts.php:384 +#: ../../mod/contacts.php:418 msgid "Currently archived" msgstr "Obecnie zarchiwizowany" -#: ../../mod/contacts.php:385 +#: ../../mod/contacts.php:419 msgid "" "Replies/likes to your public posts may still be visible" msgstr "Odpowiedzi/kliknięcia \"lubię to\" do twoich publicznych postów nadal mogą być widoczne" -#: ../../mod/contacts.php:438 +#: ../../mod/contacts.php:470 msgid "Suggestions" msgstr "Sugestie" -#: ../../mod/contacts.php:441 +#: ../../mod/contacts.php:473 msgid "Suggest potential friends" msgstr "Sugerowani znajomi" -#: ../../mod/contacts.php:444 ../../mod/group.php:194 +#: ../../mod/contacts.php:476 ../../mod/group.php:194 msgid "All Contacts" msgstr "Wszystkie kontakty" -#: ../../mod/contacts.php:447 +#: ../../mod/contacts.php:479 msgid "Show all contacts" msgstr "Pokaż wszystkie kontakty" -#: ../../mod/contacts.php:450 +#: ../../mod/contacts.php:482 msgid "Unblocked" msgstr "Odblokowany" -#: ../../mod/contacts.php:453 +#: ../../mod/contacts.php:485 msgid "Only show unblocked contacts" msgstr "Pokaż tylko odblokowane kontakty" -#: ../../mod/contacts.php:457 +#: ../../mod/contacts.php:489 msgid "Blocked" msgstr "Zablokowany" -#: ../../mod/contacts.php:460 +#: ../../mod/contacts.php:492 msgid "Only show blocked contacts" msgstr "Pokaż tylko zablokowane kontakty" -#: ../../mod/contacts.php:464 +#: ../../mod/contacts.php:496 msgid "Ignored" msgstr "Zignorowany" -#: ../../mod/contacts.php:467 +#: ../../mod/contacts.php:499 msgid "Only show ignored contacts" msgstr "Pokaż tylko ignorowane kontakty" -#: ../../mod/contacts.php:471 +#: ../../mod/contacts.php:503 msgid "Archived" msgstr "" -#: ../../mod/contacts.php:474 +#: ../../mod/contacts.php:506 msgid "Only show archived contacts" msgstr "Pokaż tylko zarchiwizowane kontakty" -#: ../../mod/contacts.php:478 +#: ../../mod/contacts.php:510 msgid "Hidden" msgstr "Ukryty" -#: ../../mod/contacts.php:481 +#: ../../mod/contacts.php:513 msgid "Only show hidden contacts" msgstr "Pokaż tylko ukryte kontakty" -#: ../../mod/contacts.php:529 +#: ../../mod/contacts.php:561 msgid "Mutual Friendship" msgstr "Wzajemna przyjaźń" -#: ../../mod/contacts.php:533 +#: ../../mod/contacts.php:565 msgid "is a fan of yours" msgstr "jest twoim fanem" -#: ../../mod/contacts.php:537 +#: ../../mod/contacts.php:569 msgid "you are a fan of" msgstr "jesteś fanem" -#: ../../mod/contacts.php:554 ../../mod/nogroup.php:41 +#: ../../mod/contacts.php:586 ../../mod/nogroup.php:41 msgid "Edit contact" msgstr "Edytuj kontakt" -#: ../../mod/contacts.php:575 ../../view/theme/diabook/theme.php:89 -#: ../../include/nav.php:144 +#: ../../mod/contacts.php:607 ../../view/theme/diabook/theme.php:89 +#: ../../include/nav.php:171 msgid "Contacts" msgstr "Kontakty" -#: ../../mod/contacts.php:579 +#: ../../mod/contacts.php:611 msgid "Search your contacts" msgstr "Wyszukaj w kontaktach" -#: ../../mod/contacts.php:580 ../../mod/directory.php:59 +#: ../../mod/contacts.php:612 ../../mod/directory.php:59 #: ../../addon/forumdirectory/forumdirectory.php:81 msgid "Finding: " msgstr "Znalezione:" -#: ../../mod/contacts.php:581 ../../mod/directory.php:61 +#: ../../mod/contacts.php:613 ../../mod/directory.php:61 #: ../../addon/forumdirectory/forumdirectory.php:83 #: ../../include/contact_widgets.php:33 msgid "Find" @@ -2132,7 +2173,7 @@ msgid "" "Password reset failed." msgstr "Prośba nie może być zweryfikowana. (Mogłeś już ją poprzednio wysłać.) Reset hasła nie powiódł się." -#: ../../mod/lostpass.php:84 ../../boot.php:1030 +#: ../../mod/lostpass.php:84 ../../boot.php:1051 msgid "Password Reset" msgstr "Zresetuj hasło" @@ -2251,7 +2292,7 @@ msgstr "" #: ../../addon/impressum/impressum.php:78 #: ../../addon/openstreetmap/openstreetmap.php:104 #: ../../addon/altpager/altpager.php:107 ../../addon/mathjax/mathjax.php:66 -#: ../../addon/piwik/piwik.php:105 ../../addon/twitter/twitter.php:548 +#: ../../addon/piwik/piwik.php:105 ../../addon/twitter/twitter.php:550 #: ../../addon.old/facebook/facebook.php:495 #: ../../addon.old/fbpost/fbpost.php:144 #: ../../addon.old/impressum/impressum.php:78 @@ -2582,149 +2623,161 @@ msgstr "Wygasające zdjęcia:" msgid "Only expire posts by others:" msgstr "" -#: ../../mod/settings.php:1016 +#: ../../mod/settings.php:1035 msgid "Account Settings" msgstr "Ustawienia konta" -#: ../../mod/settings.php:1024 +#: ../../mod/settings.php:1043 msgid "Password Settings" msgstr "Ustawienia hasła" -#: ../../mod/settings.php:1025 +#: ../../mod/settings.php:1044 msgid "New Password:" msgstr "Nowe hasło:" -#: ../../mod/settings.php:1026 +#: ../../mod/settings.php:1045 msgid "Confirm:" msgstr "Potwierdź:" -#: ../../mod/settings.php:1026 +#: ../../mod/settings.php:1045 msgid "Leave password fields blank unless changing" msgstr "Pozostaw pola hasła puste, chyba że chcesz je zmienić." -#: ../../mod/settings.php:1030 +#: ../../mod/settings.php:1049 msgid "Basic Settings" msgstr "Ustawienia podstawowe" -#: ../../mod/settings.php:1031 ../../include/profile_advanced.php:15 +#: ../../mod/settings.php:1050 ../../include/profile_advanced.php:15 msgid "Full Name:" msgstr "Imię i nazwisko:" -#: ../../mod/settings.php:1032 +#: ../../mod/settings.php:1051 msgid "Email Address:" msgstr "Adres email:" -#: ../../mod/settings.php:1033 +#: ../../mod/settings.php:1052 msgid "Your Timezone:" msgstr "Twoja strefa czasowa:" -#: ../../mod/settings.php:1034 +#: ../../mod/settings.php:1053 msgid "Default Post Location:" msgstr "Standardowa lokalizacja wiadomości:" -#: ../../mod/settings.php:1035 +#: ../../mod/settings.php:1054 msgid "Use Browser Location:" msgstr "Użyj położenia przeglądarki:" -#: ../../mod/settings.php:1038 +#: ../../mod/settings.php:1057 msgid "Security and Privacy Settings" msgstr "Ustawienia bezpieczeństwa i prywatności" -#: ../../mod/settings.php:1040 +#: ../../mod/settings.php:1059 msgid "Maximum Friend Requests/Day:" msgstr "Maksymalna liczba zaproszeń do grona przyjaciół na dzień:" -#: ../../mod/settings.php:1040 ../../mod/settings.php:1059 +#: ../../mod/settings.php:1059 ../../mod/settings.php:1089 msgid "(to prevent spam abuse)" msgstr "(aby zapobiec spamowaniu)" -#: ../../mod/settings.php:1041 +#: ../../mod/settings.php:1060 msgid "Default Post Permissions" msgstr "Domyślne prawa dostępu wiadomości" -#: ../../mod/settings.php:1042 +#: ../../mod/settings.php:1061 msgid "(click to open/close)" msgstr "(kliknij by otworzyć/zamknąć)" -#: ../../mod/settings.php:1059 +#: ../../mod/settings.php:1072 +msgid "Default Private Post" +msgstr "" + +#: ../../mod/settings.php:1073 +msgid "Default Public Post" +msgstr "" + +#: ../../mod/settings.php:1077 +msgid "Default Permissions for New Posts" +msgstr "" + +#: ../../mod/settings.php:1089 msgid "Maximum private messages per day from unknown people:" msgstr "" -#: ../../mod/settings.php:1062 +#: ../../mod/settings.php:1092 msgid "Notification Settings" msgstr "Ustawienia powiadomień" -#: ../../mod/settings.php:1063 +#: ../../mod/settings.php:1093 msgid "By default post a status message when:" msgstr "" -#: ../../mod/settings.php:1064 +#: ../../mod/settings.php:1094 msgid "accepting a friend request" msgstr "" -#: ../../mod/settings.php:1065 +#: ../../mod/settings.php:1095 msgid "joining a forum/community" msgstr "" -#: ../../mod/settings.php:1066 +#: ../../mod/settings.php:1096 msgid "making an interesting profile change" msgstr "" -#: ../../mod/settings.php:1067 +#: ../../mod/settings.php:1097 msgid "Send a notification email when:" msgstr "Wyślij powiadmonienia na email, kiedy:" -#: ../../mod/settings.php:1068 +#: ../../mod/settings.php:1098 msgid "You receive an introduction" msgstr "Otrzymałeś zaproszenie" -#: ../../mod/settings.php:1069 +#: ../../mod/settings.php:1099 msgid "Your introductions are confirmed" msgstr "Dane zatwierdzone" -#: ../../mod/settings.php:1070 +#: ../../mod/settings.php:1100 msgid "Someone writes on your profile wall" msgstr "Ktoś pisze na twojej ścianie profilowej" -#: ../../mod/settings.php:1071 +#: ../../mod/settings.php:1101 msgid "Someone writes a followup comment" msgstr "Ktoś pisze komentarz nawiązujący." -#: ../../mod/settings.php:1072 +#: ../../mod/settings.php:1102 msgid "You receive a private message" msgstr "Otrzymałeś prywatną wiadomość" -#: ../../mod/settings.php:1073 +#: ../../mod/settings.php:1103 msgid "You receive a friend suggestion" msgstr "Otrzymane propozycje znajomych" -#: ../../mod/settings.php:1074 +#: ../../mod/settings.php:1104 msgid "You are tagged in a post" msgstr "Jesteś oznaczony w poście" -#: ../../mod/settings.php:1075 +#: ../../mod/settings.php:1105 msgid "You are poked/prodded/etc. in a post" msgstr "" -#: ../../mod/settings.php:1078 +#: ../../mod/settings.php:1108 msgid "Advanced Account/Page Type Settings" msgstr "" -#: ../../mod/settings.php:1079 +#: ../../mod/settings.php:1109 msgid "Change the behaviour of this account for special situations" msgstr "" -#: ../../mod/manage.php:94 +#: ../../mod/manage.php:106 msgid "Manage Identities and/or Pages" msgstr "Zarządzaj Tożsamościami i/lub Stronami." -#: ../../mod/manage.php:97 +#: ../../mod/manage.php:107 msgid "" "Toggle between different identities or community/group pages which share " "your account details or which you have been granted \"manage\" permissions" msgstr "" -#: ../../mod/manage.php:99 +#: ../../mod/manage.php:108 msgid "Select an identity to manage: " msgstr "Wybierz tożsamość do zarządzania:" @@ -2802,19 +2855,19 @@ msgstr[2] "Uwaga: Ta grupa posiada %s członków z niezabezpieczonej sieci." msgid "Private messages to this group are at risk of public disclosure." msgstr "Prywatne wiadomości do tej grupy mogą zostać publicznego ujawnienia" -#: ../../mod/network.php:619 +#: ../../mod/network.php:621 msgid "Contact: " msgstr "Kontakt: " -#: ../../mod/network.php:621 +#: ../../mod/network.php:623 msgid "Private messages to this person are at risk of public disclosure." msgstr "Prywatne wiadomości do tej osoby mogą zostać publicznie ujawnione " -#: ../../mod/network.php:626 +#: ../../mod/network.php:628 msgid "Invalid contact." msgstr "Zły kontakt" -#: ../../mod/notes.php:44 ../../boot.php:1843 +#: ../../mod/notes.php:44 ../../boot.php:1864 msgid "Personal Notes" msgstr "Osobiste notatki" @@ -2902,36 +2955,36 @@ msgstr "Wysłano." msgid "No recipient." msgstr "Brak odbiorcy." -#: ../../mod/wallmessage.php:123 ../../mod/wallmessage.php:131 -#: ../../mod/message.php:249 ../../mod/message.php:257 -#: ../../mod/message.php:429 ../../mod/message.php:437 -#: ../../include/conversation.php:936 ../../include/conversation.php:954 +#: ../../mod/wallmessage.php:127 ../../mod/wallmessage.php:135 +#: ../../mod/message.php:283 ../../mod/message.php:291 +#: ../../mod/message.php:466 ../../mod/message.php:474 +#: ../../include/conversation.php:940 ../../include/conversation.php:958 msgid "Please enter a link URL:" msgstr "Proszę wpisać adres URL:" -#: ../../mod/wallmessage.php:138 ../../mod/message.php:285 +#: ../../mod/wallmessage.php:142 ../../mod/message.php:319 msgid "Send Private Message" msgstr "Wyślij prywatną wiadomość" -#: ../../mod/wallmessage.php:139 +#: ../../mod/wallmessage.php:143 #, php-format msgid "" "If you wish for %s to respond, please check that the privacy settings on " "your site allow private mail from unknown senders." msgstr "" -#: ../../mod/wallmessage.php:140 ../../mod/message.php:286 -#: ../../mod/message.php:516 +#: ../../mod/wallmessage.php:144 ../../mod/message.php:320 +#: ../../mod/message.php:553 msgid "To:" msgstr "Do:" -#: ../../mod/wallmessage.php:141 ../../mod/message.php:291 -#: ../../mod/message.php:518 +#: ../../mod/wallmessage.php:145 ../../mod/message.php:325 +#: ../../mod/message.php:555 msgid "Subject:" msgstr "Temat:" -#: ../../mod/wallmessage.php:147 ../../mod/message.php:295 -#: ../../mod/message.php:521 ../../mod/invite.php:115 +#: ../../mod/wallmessage.php:151 ../../mod/message.php:329 +#: ../../mod/message.php:558 ../../mod/invite.php:134 msgid "Your message:" msgstr "Twoja wiadomość:" @@ -2987,8 +3040,8 @@ msgstr "" #: ../../mod/newmember.php:32 ../../mod/profperm.php:103 #: ../../view/theme/diabook/theme.php:88 ../../include/profile_advanced.php:7 -#: ../../include/profile_advanced.php:84 ../../include/nav.php:50 -#: ../../boot.php:1819 +#: ../../include/profile_advanced.php:84 ../../include/nav.php:77 +#: ../../boot.php:1840 msgid "Profile" msgstr "Profil" @@ -3159,7 +3212,7 @@ msgstr "Nie znaleziono grupy" msgid "Group name changed." msgstr "Nazwa grupy zmieniona" -#: ../../mod/group.php:72 ../../mod/profperm.php:19 ../../index.php:339 +#: ../../mod/group.php:72 ../../mod/profperm.php:19 ../../index.php:340 msgid "Permission denied" msgstr "Odmowa dostępu" @@ -3293,7 +3346,7 @@ msgstr "Wybierz login. Login musi zaczynać się literą. Adres twojego profilu msgid "Choose a nickname: " msgstr "Wybierz pseudonim:" -#: ../../mod/register.php:275 ../../include/nav.php:81 ../../boot.php:991 +#: ../../mod/register.php:275 ../../include/nav.php:108 ../../boot.php:1012 msgid "Register" msgstr "Zarejestruj" @@ -3301,40 +3354,40 @@ msgstr "Zarejestruj" msgid "People Search" msgstr "Szukaj osób" -#: ../../mod/like.php:145 ../../mod/subthread.php:87 ../../mod/tagger.php:62 +#: ../../mod/like.php:151 ../../mod/subthread.php:87 ../../mod/tagger.php:62 #: ../../addon/communityhome/communityhome.php:171 -#: ../../view/theme/diabook/theme.php:464 ../../include/text.php:1498 -#: ../../include/diaspora.php:1860 ../../include/conversation.php:125 -#: ../../include/conversation.php:253 +#: ../../view/theme/diabook/theme.php:464 ../../include/text.php:1510 +#: ../../include/diaspora.php:1860 ../../include/conversation.php:126 +#: ../../include/conversation.php:254 #: ../../addon.old/communityhome/communityhome.php:163 msgid "photo" msgstr "zdjęcie" -#: ../../mod/like.php:145 ../../mod/like.php:298 ../../mod/subthread.php:87 +#: ../../mod/like.php:151 ../../mod/like.php:322 ../../mod/subthread.php:87 #: ../../mod/tagger.php:62 ../../addon/facebook/facebook.php:1600 #: ../../addon/communityhome/communityhome.php:166 #: ../../addon/communityhome/communityhome.php:175 #: ../../view/theme/diabook/theme.php:459 #: ../../view/theme/diabook/theme.php:468 ../../include/diaspora.php:1860 -#: ../../include/conversation.php:120 ../../include/conversation.php:129 -#: ../../include/conversation.php:248 ../../include/conversation.php:257 +#: ../../include/conversation.php:121 ../../include/conversation.php:130 +#: ../../include/conversation.php:249 ../../include/conversation.php:258 #: ../../addon.old/facebook/facebook.php:1598 #: ../../addon.old/communityhome/communityhome.php:158 #: ../../addon.old/communityhome/communityhome.php:167 msgid "status" msgstr "status" -#: ../../mod/like.php:162 ../../addon/facebook/facebook.php:1604 +#: ../../mod/like.php:168 ../../addon/facebook/facebook.php:1604 #: ../../addon/communityhome/communityhome.php:180 #: ../../view/theme/diabook/theme.php:473 ../../include/diaspora.php:1876 -#: ../../include/conversation.php:136 +#: ../../include/conversation.php:137 #: ../../addon.old/facebook/facebook.php:1602 #: ../../addon.old/communityhome/communityhome.php:172 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "%1$s lubi %2$s's %3$s" -#: ../../mod/like.php:164 ../../include/conversation.php:139 +#: ../../mod/like.php:170 ../../include/conversation.php:140 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "%1$s nie lubi %2$s's %3$s" @@ -3350,7 +3403,7 @@ msgid "Access denied." msgstr "Brak dostępu" #: ../../mod/fbrowser.php:25 ../../view/theme/diabook/theme.php:90 -#: ../../include/nav.php:51 ../../boot.php:1826 +#: ../../include/nav.php:78 ../../boot.php:1847 msgid "Photos" msgstr "Zdjęcia" @@ -3375,44 +3428,44 @@ msgstr "Proszę się zalogować." msgid "Unable to locate original post." msgstr "Nie można zlokalizować oryginalnej wiadomości." -#: ../../mod/item.php:288 +#: ../../mod/item.php:292 msgid "Empty post discarded." msgstr "Pusty wpis wyrzucony." -#: ../../mod/item.php:424 ../../mod/wall_upload.php:135 +#: ../../mod/item.php:428 ../../mod/wall_upload.php:135 #: ../../mod/wall_upload.php:144 ../../mod/wall_upload.php:151 #: ../../include/message.php:144 msgid "Wall Photos" msgstr "Tablica zdjęć" -#: ../../mod/item.php:837 +#: ../../mod/item.php:841 msgid "System error. Post not saved." msgstr "Błąd. Post niezapisany." -#: ../../mod/item.php:862 +#: ../../mod/item.php:866 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendica social " "network." msgstr "Wiadomość została wysłana do ciebie od %s , członka portalu Friendica" -#: ../../mod/item.php:864 +#: ../../mod/item.php:868 #, php-format msgid "You may visit them online at %s" msgstr "Możesz ich odwiedzić online u %s" -#: ../../mod/item.php:865 +#: ../../mod/item.php:869 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." msgstr "Skontaktuj się z nadawcą odpowiadając na ten post jeśli nie chcesz otrzymywać tych wiadomości." -#: ../../mod/item.php:867 +#: ../../mod/item.php:871 #, php-format msgid "%s posted an update." msgstr "%s zaktualizował wpis." -#: ../../mod/mood.php:62 ../../include/conversation.php:226 +#: ../../mod/mood.php:62 ../../include/conversation.php:227 #, php-format msgid "%1$s is currently %2$s" msgstr "" @@ -3506,7 +3559,15 @@ msgstr "Kompletne usunięcie konta. Jeżeli zostanie wykonane, konto nie może z msgid "Please enter your password for verification:" msgstr "Wprowadź hasło w celu weryfikacji." -#: ../../mod/message.php:9 ../../include/nav.php:132 +#: ../../mod/navigation.php:20 ../../include/nav.php:34 +msgid "Nothing new here" +msgstr "Brak nowych zdarzeń" + +#: ../../mod/navigation.php:24 ../../include/nav.php:38 +msgid "Clear notifications" +msgstr "" + +#: ../../mod/message.php:9 ../../include/nav.php:159 msgid "New Message" msgstr "Nowa wiadomość" @@ -3514,42 +3575,46 @@ msgstr "Nowa wiadomość" msgid "Unable to locate contact information." msgstr "Niezdolny do uzyskania informacji kontaktowych." -#: ../../mod/message.php:195 +#: ../../mod/message.php:207 +msgid "Do you really want to delete this message?" +msgstr "" + +#: ../../mod/message.php:227 msgid "Message deleted." msgstr "Wiadomość usunięta." -#: ../../mod/message.php:225 +#: ../../mod/message.php:258 msgid "Conversation removed." msgstr "Rozmowa usunięta." -#: ../../mod/message.php:334 +#: ../../mod/message.php:371 msgid "No messages." msgstr "Brak wiadomości." -#: ../../mod/message.php:341 +#: ../../mod/message.php:378 #, php-format msgid "Unknown sender - %s" msgstr "" -#: ../../mod/message.php:344 +#: ../../mod/message.php:381 #, php-format msgid "You and %s" msgstr "Ty i %s" -#: ../../mod/message.php:347 +#: ../../mod/message.php:384 #, php-format msgid "%s and You" msgstr "%s i ty" -#: ../../mod/message.php:368 ../../mod/message.php:509 +#: ../../mod/message.php:405 ../../mod/message.php:546 msgid "Delete conversation" msgstr "Usuń rozmowę" -#: ../../mod/message.php:371 +#: ../../mod/message.php:408 msgid "D, d M Y - g:i A" msgstr "D, d M R - g:m AM/PM" -#: ../../mod/message.php:374 +#: ../../mod/message.php:411 #, php-format msgid "%d message" msgid_plural "%d messages" @@ -3557,21 +3622,21 @@ msgstr[0] " %d wiadomość" msgstr[1] " %d wiadomości" msgstr[2] " %d wiadomości" -#: ../../mod/message.php:413 +#: ../../mod/message.php:450 msgid "Message not available." msgstr "Wiadomość nie jest dostępna." -#: ../../mod/message.php:483 +#: ../../mod/message.php:520 msgid "Delete message" msgstr "Usuń wiadomość" -#: ../../mod/message.php:511 +#: ../../mod/message.php:548 msgid "" "No secure communications available. You may be able to " "respond from the sender's profile page." msgstr "" -#: ../../mod/message.php:515 +#: ../../mod/message.php:552 msgid "Send Reply" msgstr "Odpowiedz" @@ -3600,7 +3665,7 @@ msgstr "Użytkownicy" msgid "Plugins" msgstr "Wtyczki" -#: ../../mod/admin.php:99 ../../mod/admin.php:1027 ../../mod/admin.php:1063 +#: ../../mod/admin.php:99 ../../mod/admin.php:1031 ../../mod/admin.php:1067 msgid "Themes" msgstr "Temat" @@ -3608,11 +3673,11 @@ msgstr "Temat" msgid "DB updates" msgstr "" -#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1150 +#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1154 msgid "Logs" msgstr "Logi" -#: ../../mod/admin.php:120 ../../include/nav.php:151 +#: ../../mod/admin.php:120 ../../include/nav.php:178 msgid "Admin" msgstr "Administator" @@ -3630,7 +3695,7 @@ msgstr "Konto normalne" #: ../../mod/admin.php:184 ../../mod/admin.php:699 msgid "Soapbox Account" -msgstr "" +msgstr "Konto Soapbox" #: ../../mod/admin.php:185 ../../mod/admin.php:700 msgid "Community/Celebrity Account" @@ -3653,8 +3718,8 @@ msgid "Message queues" msgstr "" #: ../../mod/admin.php:212 ../../mod/admin.php:459 ../../mod/admin.php:726 -#: ../../mod/admin.php:821 ../../mod/admin.php:863 ../../mod/admin.php:1026 -#: ../../mod/admin.php:1062 ../../mod/admin.php:1149 +#: ../../mod/admin.php:821 ../../mod/admin.php:863 ../../mod/admin.php:1030 +#: ../../mod/admin.php:1066 ../../mod/admin.php:1153 msgid "Administration" msgstr "Administracja" @@ -3992,7 +4057,7 @@ msgstr "URL Proxy" #: ../../mod/admin.php:504 msgid "Network timeout" -msgstr "" +msgstr "Network timeout" #: ../../mod/admin.php:504 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." @@ -4209,23 +4274,23 @@ msgstr "Wtyczka %s wyłączona." msgid "Plugin %s enabled." msgstr "Wtyczka %s właczona." -#: ../../mod/admin.php:799 ../../mod/admin.php:997 +#: ../../mod/admin.php:799 ../../mod/admin.php:1001 msgid "Disable" msgstr "Wyłącz" -#: ../../mod/admin.php:801 ../../mod/admin.php:999 +#: ../../mod/admin.php:801 ../../mod/admin.php:1003 msgid "Enable" msgstr "Zezwól" -#: ../../mod/admin.php:823 ../../mod/admin.php:1028 +#: ../../mod/admin.php:823 ../../mod/admin.php:1032 msgid "Toggle" msgstr "Włącz" -#: ../../mod/admin.php:831 ../../mod/admin.php:1038 +#: ../../mod/admin.php:831 ../../mod/admin.php:1042 msgid "Author: " msgstr "Autor: " -#: ../../mod/admin.php:832 ../../mod/admin.php:1039 +#: ../../mod/admin.php:832 ../../mod/admin.php:1043 msgid "Maintainer: " msgstr "" @@ -4233,65 +4298,65 @@ msgstr "" msgid "No themes found." msgstr "Nie znaleziono tematu." -#: ../../mod/admin.php:1020 +#: ../../mod/admin.php:1024 msgid "Screenshot" msgstr "Zrzut ekranu" -#: ../../mod/admin.php:1068 +#: ../../mod/admin.php:1072 msgid "[Experimental]" msgstr "[Eksperymentalne]" -#: ../../mod/admin.php:1069 +#: ../../mod/admin.php:1073 msgid "[Unsupported]" msgstr "[Niewspieralne]" -#: ../../mod/admin.php:1096 +#: ../../mod/admin.php:1100 msgid "Log settings updated." msgstr "" -#: ../../mod/admin.php:1152 +#: ../../mod/admin.php:1156 msgid "Clear" msgstr "Wyczyść" -#: ../../mod/admin.php:1158 +#: ../../mod/admin.php:1162 msgid "Debugging" msgstr "Naprawianie" -#: ../../mod/admin.php:1159 +#: ../../mod/admin.php:1163 msgid "Log file" msgstr "Plik logów" -#: ../../mod/admin.php:1159 +#: ../../mod/admin.php:1163 msgid "" "Must be writable by web server. Relative to your Friendica top-level " "directory." msgstr "" -#: ../../mod/admin.php:1160 +#: ../../mod/admin.php:1164 msgid "Log level" msgstr "Poziom logów" -#: ../../mod/admin.php:1210 +#: ../../mod/admin.php:1214 msgid "Close" msgstr "Zamknij" -#: ../../mod/admin.php:1216 +#: ../../mod/admin.php:1220 msgid "FTP Host" msgstr "Założyciel FTP" -#: ../../mod/admin.php:1217 +#: ../../mod/admin.php:1221 msgid "FTP Path" msgstr "Ścieżka FTP" -#: ../../mod/admin.php:1218 +#: ../../mod/admin.php:1222 msgid "FTP User" msgstr "Użytkownik FTP" -#: ../../mod/admin.php:1219 +#: ../../mod/admin.php:1223 msgid "FTP Password" msgstr "FTP Hasło" -#: ../../mod/profile.php:21 ../../boot.php:1204 +#: ../../mod/profile.php:21 ../../boot.php:1225 msgid "Requested profile is not available." msgstr "Żądany profil jest niedostępny" @@ -4400,7 +4465,7 @@ msgid "No installed applications." msgstr "Brak zainstalowanych aplikacji." #: ../../mod/search.php:99 ../../include/text.php:738 -#: ../../include/text.php:739 ../../include/nav.php:91 +#: ../../include/text.php:739 ../../include/nav.php:118 msgid "Search" msgstr "Szukaj" @@ -4698,28 +4763,28 @@ msgstr "Wiek: " msgid "Edit/Manage Profiles" msgstr "Edytuj/Zarządzaj Profilami" -#: ../../mod/profiles.php:722 ../../boot.php:1324 +#: ../../mod/profiles.php:722 ../../boot.php:1345 msgid "Change profile photo" msgstr "Zmień zdjęcie profilowe" -#: ../../mod/profiles.php:723 ../../boot.php:1325 +#: ../../mod/profiles.php:723 ../../boot.php:1346 msgid "Create New Profile" msgstr "Stwórz nowy profil" -#: ../../mod/profiles.php:734 ../../boot.php:1335 +#: ../../mod/profiles.php:734 ../../boot.php:1356 msgid "Profile Image" msgstr "Obraz profilowy" -#: ../../mod/profiles.php:736 ../../boot.php:1338 +#: ../../mod/profiles.php:736 ../../boot.php:1359 msgid "visible to everybody" msgstr "widoczne dla wszystkich" -#: ../../mod/profiles.php:737 ../../boot.php:1339 +#: ../../mod/profiles.php:737 ../../boot.php:1360 msgid "Edit visibility" msgstr "Edytuj widoczność" -#: ../../mod/filer.php:30 ../../include/conversation.php:940 -#: ../../include/conversation.php:958 +#: ../../mod/filer.php:30 ../../include/conversation.php:944 +#: ../../include/conversation.php:962 msgid "Save to Folder:" msgstr "Zapisz w folderze:" @@ -4727,7 +4792,7 @@ msgstr "Zapisz w folderze:" msgid "- select -" msgstr "- wybierz -" -#: ../../mod/tagger.php:95 ../../include/conversation.php:265 +#: ../../mod/tagger.php:95 ../../include/conversation.php:266 #, php-format msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "%1$s zaznaczył %2$s'go %3$s przy użyciu %4$s" @@ -4736,7 +4801,7 @@ msgstr "%1$s zaznaczył %2$s'go %3$s przy użyciu %4$s" msgid "No potential page delegates located." msgstr "" -#: ../../mod/delegate.php:121 ../../include/nav.php:138 +#: ../../mod/delegate.php:121 ../../include/nav.php:165 msgid "Delegate Page Management" msgstr "" @@ -4815,18 +4880,22 @@ msgstr "" msgid "diaspora2bb: " msgstr "" -#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:520 +#: ../../mod/suggest.php:27 +msgid "Do you really want to delete this suggestion?" +msgstr "" + +#: ../../mod/suggest.php:66 ../../view/theme/diabook/theme.php:520 #: ../../include/contact_widgets.php:34 msgid "Friend Suggestions" msgstr "Osoby, które możesz znać" -#: ../../mod/suggest.php:44 +#: ../../mod/suggest.php:72 msgid "" "No suggestions available. If this is a new site, please try again in 24 " "hours." msgstr "" -#: ../../mod/suggest.php:61 +#: ../../mod/suggest.php:90 msgid "Ignore/Hide" msgstr "Ignoruj/Ukryj" @@ -4850,19 +4919,19 @@ msgstr "Płeć: " #: ../../mod/directory.php:136 #: ../../addon/forumdirectory/forumdirectory.php:158 -#: ../../include/profile_advanced.php:17 ../../boot.php:1360 +#: ../../include/profile_advanced.php:17 ../../boot.php:1381 msgid "Gender:" msgstr "Płeć:" #: ../../mod/directory.php:138 #: ../../addon/forumdirectory/forumdirectory.php:160 -#: ../../include/profile_advanced.php:37 ../../boot.php:1363 +#: ../../include/profile_advanced.php:37 ../../boot.php:1384 msgid "Status:" msgstr "Status" #: ../../mod/directory.php:140 #: ../../addon/forumdirectory/forumdirectory.php:162 -#: ../../include/profile_advanced.php:48 ../../boot.php:1365 +#: ../../include/profile_advanced.php:48 ../../boot.php:1386 msgid "Homepage:" msgstr "Strona główna:" @@ -4873,25 +4942,33 @@ msgid "About:" msgstr "O:" #: ../../mod/directory.php:187 -#: ../../addon/forumdirectory/forumdirectory.php:203 +#: ../../addon/forumdirectory/forumdirectory.php:201 msgid "No entries (some entries may be hidden)." msgstr "Brak odwiedzin (niektóre odwiedziny mogą być ukryte)." -#: ../../mod/invite.php:37 +#: ../../mod/invite.php:27 +msgid "Total invitation limit exceeded." +msgstr "" + +#: ../../mod/invite.php:49 #, php-format msgid "%s : Not a valid email address." msgstr "%s : Niepoprawny adres email." -#: ../../mod/invite.php:61 +#: ../../mod/invite.php:73 msgid "Please join us on Friendica" msgstr "Dołącz do nas na Friendica" -#: ../../mod/invite.php:71 +#: ../../mod/invite.php:84 +msgid "Invitation limit exceeded. Please contact your site administrator." +msgstr "" + +#: ../../mod/invite.php:89 #, php-format msgid "%s : Message delivery failed." msgstr "%s : Dostarczenie wiadomości nieudane." -#: ../../mod/invite.php:75 +#: ../../mod/invite.php:93 #, php-format msgid "%d message sent." msgid_plural "%d messages sent." @@ -4899,11 +4976,11 @@ msgstr[0] "%d wiadomość wysłana." msgstr[1] "%d wiadomości wysłane." msgstr[2] "%d wysłano ." -#: ../../mod/invite.php:94 +#: ../../mod/invite.php:112 msgid "You have no more invitations available" msgstr "Nie masz więcej zaproszeń" -#: ../../mod/invite.php:102 +#: ../../mod/invite.php:120 #, php-format msgid "" "Visit %s for a list of public sites that you can join. Friendica members on " @@ -4911,14 +4988,14 @@ msgid "" " other social networks." msgstr "" -#: ../../mod/invite.php:104 +#: ../../mod/invite.php:122 #, php-format msgid "" "To accept this invitation, please visit and register at %s or any other " "public Friendica website." msgstr "" -#: ../../mod/invite.php:105 +#: ../../mod/invite.php:123 #, php-format msgid "" "Friendica sites all inter-connect to create a huge privacy-enhanced social " @@ -4927,36 +5004,36 @@ msgid "" "sites you can join." msgstr "" -#: ../../mod/invite.php:108 +#: ../../mod/invite.php:126 msgid "" "Our apologies. This system is not currently configured to connect with other" " public sites or invite members." msgstr "" -#: ../../mod/invite.php:113 +#: ../../mod/invite.php:132 msgid "Send invitations" msgstr "Wyślij zaproszenia" -#: ../../mod/invite.php:114 +#: ../../mod/invite.php:133 msgid "Enter email addresses, one per line:" msgstr "Wprowadź adresy email, jeden na linijkę:" -#: ../../mod/invite.php:116 +#: ../../mod/invite.php:135 msgid "" "You are cordially invited to join me and other close friends on Friendica - " "and help us to create a better social web." msgstr "" -#: ../../mod/invite.php:118 +#: ../../mod/invite.php:137 msgid "You will need to supply this invitation code: $invite_code" msgstr "" -#: ../../mod/invite.php:118 +#: ../../mod/invite.php:137 msgid "" "Once you have registered, please connect with me via my profile page at:" msgstr "Gdy już się zarejestrujesz, skontaktuj się ze mną przez moją stronkę profilową :" -#: ../../mod/invite.php:120 +#: ../../mod/invite.php:139 msgid "" "For more information about the Friendica project and why we feel it is " "important, please visit http://friendica.com" @@ -4998,7 +5075,7 @@ msgid "Unable to set contact photo." msgstr "Nie można ustawić zdjęcia kontaktu." #: ../../mod/dfrn_confirm.php:477 ../../include/diaspora.php:621 -#: ../../include/conversation.php:171 +#: ../../include/conversation.php:172 #, php-format msgid "%1$s is now friends with %2$s" msgstr "%1$s jest teraz znajomym z %2$s" @@ -5768,8 +5845,8 @@ msgid "Forum Directory" msgstr "Katalog Forum" #: ../../addon/communityhome/communityhome.php:28 -#: ../../addon/communityhome/communityhome.php:34 ../../include/nav.php:64 -#: ../../boot.php:1016 ../../addon.old/communityhome/communityhome.php:28 +#: ../../addon/communityhome/communityhome.php:34 ../../include/nav.php:91 +#: ../../boot.php:1037 ../../addon.old/communityhome/communityhome.php:28 #: ../../addon.old/communityhome/communityhome.php:34 #: ../../addon.old/communityhome/twillingham/communityhome.php:28 #: ../../addon.old/communityhome/twillingham/communityhome.php:34 @@ -5805,8 +5882,8 @@ msgid "Latest likes" msgstr "Ostatnie polubienia" #: ../../addon/communityhome/communityhome.php:163 -#: ../../view/theme/diabook/theme.php:456 ../../include/text.php:1496 -#: ../../include/conversation.php:117 ../../include/conversation.php:245 +#: ../../view/theme/diabook/theme.php:456 ../../include/text.php:1508 +#: ../../include/conversation.php:118 ../../include/conversation.php:246 #: ../../addon.old/communityhome/communityhome.php:155 msgid "event" msgstr "wydarzenie" @@ -6597,7 +6674,7 @@ msgstr "Ustawienia Randplace" #: ../../addon/randplace/randplace.php:171 #: ../../addon.old/randplace/randplace.php:171 msgid "Enable Randplace Plugin" -msgstr "" +msgstr "Włącz Randplace Plugin" #: ../../addon/dwpost/dwpost.php:39 ../../addon.old/dwpost/dwpost.php:39 msgid "Post to Dreamwidth" @@ -7304,7 +7381,7 @@ msgstr "" msgid "Add contact" msgstr "Dodaj kontakt" -#: ../../addon/viewsrc/viewsrc.php:37 ../../addon.old/viewsrc/viewsrc.php:37 +#: ../../addon/viewsrc/viewsrc.php:39 ../../addon.old/viewsrc/viewsrc.php:37 msgid "View Source" msgstr "Podgląd źródła" @@ -7333,7 +7410,7 @@ msgstr "Ustawienia StatusNet zaktualizowane" #: ../../addon/statusnet/statusnet.php:269 #: ../../addon.old/statusnet/statusnet.php:257 msgid "StatusNet Posting Settings" -msgstr "" +msgstr "Ustawienia StatusNet" #: ../../addon/statusnet/statusnet.php:283 #: ../../addon.old/statusnet/statusnet.php:271 @@ -7410,7 +7487,7 @@ msgstr "Aktualnym StatusNet API jest" #: ../../addon/statusnet/statusnet.php:334 #: ../../addon.old/statusnet/statusnet.php:322 msgid "Cancel StatusNet Connection" -msgstr "" +msgstr "Anuluj połączenie StatusNet" #: ../../addon/statusnet/statusnet.php:345 ../../addon/twitter/twitter.php:200 #: ../../addon.old/statusnet/statusnet.php:333 @@ -7438,7 +7515,7 @@ msgstr "" #: ../../addon/statusnet/statusnet.php:351 #: ../../addon.old/statusnet/statusnet.php:339 msgid "Allow posting to StatusNet" -msgstr "" +msgstr "Pozwól zamieszczać posty na StatusNet" #: ../../addon/statusnet/statusnet.php:354 #: ../../addon.old/statusnet/statusnet.php:342 @@ -7719,14 +7796,23 @@ msgstr "" msgid "Send linked #-tags and @-names to Twitter" msgstr "" -#: ../../addon/twitter/twitter.php:556 ../../addon.old/twitter/twitter.php:396 +#: ../../addon/twitter/twitter.php:558 ../../addon.old/twitter/twitter.php:396 msgid "Consumer key" msgstr "Klucz konsumenta" -#: ../../addon/twitter/twitter.php:557 ../../addon.old/twitter/twitter.php:397 +#: ../../addon/twitter/twitter.php:559 ../../addon.old/twitter/twitter.php:397 msgid "Consumer secret" msgstr "Sekret konsumenta" +#: ../../addon/twitter/twitter.php:560 +msgid "Name of the Twitter Application" +msgstr "" + +#: ../../addon/twitter/twitter.php:560 +msgid "" +"set this to avoid mirroring postings from ~friendica back to ~friendica" +msgstr "" + #: ../../addon/irc/irc.php:44 ../../addon.old/irc/irc.php:44 msgid "IRC Settings" msgstr "Ustawienia IRC" @@ -7861,12 +7947,12 @@ msgstr "" msgid "Color scheme" msgstr "" -#: ../../view/theme/diabook/theme.php:87 ../../include/nav.php:49 -#: ../../include/nav.php:116 +#: ../../view/theme/diabook/theme.php:87 ../../include/nav.php:76 +#: ../../include/nav.php:143 msgid "Your posts and conversations" msgstr "Twoje posty i rozmowy" -#: ../../view/theme/diabook/theme.php:88 ../../include/nav.php:50 +#: ../../view/theme/diabook/theme.php:88 ../../include/nav.php:77 msgid "Your profile page" msgstr "Twoja strona profilowa" @@ -7874,19 +7960,19 @@ msgstr "Twoja strona profilowa" msgid "Your contacts" msgstr "Twoje kontakty" -#: ../../view/theme/diabook/theme.php:90 ../../include/nav.php:51 +#: ../../view/theme/diabook/theme.php:90 ../../include/nav.php:78 msgid "Your photos" msgstr "Twoje zdjęcia" -#: ../../view/theme/diabook/theme.php:91 ../../include/nav.php:52 +#: ../../view/theme/diabook/theme.php:91 ../../include/nav.php:79 msgid "Your events" msgstr "Twoje wydarzenia" -#: ../../view/theme/diabook/theme.php:92 ../../include/nav.php:53 +#: ../../view/theme/diabook/theme.php:92 ../../include/nav.php:80 msgid "Personal notes" msgstr "Osobiste notatki" -#: ../../view/theme/diabook/theme.php:92 ../../include/nav.php:53 +#: ../../view/theme/diabook/theme.php:92 ../../include/nav.php:80 msgid "Your personal photos" msgstr "Twoje osobiste zdjęcia" @@ -7982,12 +8068,12 @@ msgid "Set twitter search term" msgstr "" #: ../../view/theme/diabook/theme.php:629 -#: ../../view/theme/diabook/config.php:146 ../../include/acl_selectors.php:313 +#: ../../view/theme/diabook/config.php:146 ../../include/acl_selectors.php:327 msgid "don't show" msgstr "nie pokazuj" #: ../../view/theme/diabook/theme.php:629 -#: ../../view/theme/diabook/config.php:146 ../../include/acl_selectors.php:312 +#: ../../view/theme/diabook/config.php:146 ../../include/acl_selectors.php:326 msgid "show" msgstr "pokaż" @@ -8458,7 +8544,7 @@ msgstr[2] "%d kontakty" msgid "poke" msgstr "zaczep" -#: ../../include/text.php:779 ../../include/conversation.php:210 +#: ../../include/text.php:779 ../../include/conversation.php:211 msgid "poked" msgstr "zaczepiony" @@ -8630,31 +8716,31 @@ msgstr "Listopad" msgid "December" msgstr "Grudzień" -#: ../../include/text.php:1066 +#: ../../include/text.php:1078 msgid "bytes" msgstr "bajty" -#: ../../include/text.php:1093 ../../include/text.php:1105 +#: ../../include/text.php:1105 ../../include/text.php:1117 msgid "Click to open/close" msgstr "Kliknij aby otworzyć/zamknąć" -#: ../../include/text.php:1278 ../../include/user.php:237 +#: ../../include/text.php:1290 ../../include/user.php:237 msgid "default" msgstr "standardowe" -#: ../../include/text.php:1290 +#: ../../include/text.php:1302 msgid "Select an alternate language" msgstr "Wybierz alternatywny język" -#: ../../include/text.php:1500 +#: ../../include/text.php:1512 msgid "activity" msgstr "aktywność" -#: ../../include/text.php:1503 +#: ../../include/text.php:1515 msgid "post" msgstr "post" -#: ../../include/text.php:1658 +#: ../../include/text.php:1670 msgid "Item filed" msgstr "" @@ -8750,125 +8836,129 @@ msgstr "Stwórz nową grupę" msgid "Contacts not in any group" msgstr "Kontakt nie jest w żadnej grupie" -#: ../../include/nav.php:46 ../../boot.php:1015 +#: ../../include/nav.php:73 ../../boot.php:1036 msgid "Logout" msgstr "Wyloguj się" -#: ../../include/nav.php:46 +#: ../../include/nav.php:73 msgid "End this session" msgstr "Zakończ sesję" -#: ../../include/nav.php:49 ../../boot.php:1812 +#: ../../include/nav.php:76 ../../boot.php:1833 msgid "Status" msgstr "Status" -#: ../../include/nav.php:64 +#: ../../include/nav.php:91 msgid "Sign in" msgstr "Zaloguj się" -#: ../../include/nav.php:77 +#: ../../include/nav.php:104 msgid "Home Page" msgstr "Strona startowa" -#: ../../include/nav.php:81 +#: ../../include/nav.php:108 msgid "Create an account" msgstr "Załóż konto" -#: ../../include/nav.php:86 +#: ../../include/nav.php:113 msgid "Help and documentation" msgstr "Pomoc i dokumentacja" -#: ../../include/nav.php:89 +#: ../../include/nav.php:116 msgid "Apps" msgstr "Aplikacje" -#: ../../include/nav.php:89 +#: ../../include/nav.php:116 msgid "Addon applications, utilities, games" msgstr "Wtyczki, aplikacje, narzędzia, gry" -#: ../../include/nav.php:91 +#: ../../include/nav.php:118 msgid "Search site content" msgstr "Przeszukaj zawartość strony" -#: ../../include/nav.php:101 +#: ../../include/nav.php:128 msgid "Conversations on this site" msgstr "Rozmowy na tej stronie" -#: ../../include/nav.php:103 +#: ../../include/nav.php:130 msgid "Directory" msgstr "Katalog" -#: ../../include/nav.php:103 +#: ../../include/nav.php:130 msgid "People directory" msgstr "" -#: ../../include/nav.php:113 +#: ../../include/nav.php:140 msgid "Conversations from your friends" msgstr "Rozmowy Twoich przyjaciół" -#: ../../include/nav.php:114 +#: ../../include/nav.php:141 msgid "Network Reset" msgstr "" -#: ../../include/nav.php:114 +#: ../../include/nav.php:141 msgid "Load Network page with no filters" msgstr "" -#: ../../include/nav.php:122 +#: ../../include/nav.php:149 msgid "Friend Requests" msgstr "Podania o przyjęcie do grona znajomych" -#: ../../include/nav.php:124 +#: ../../include/nav.php:151 msgid "See all notifications" msgstr "Zobacz wszystkie powiadomienia" -#: ../../include/nav.php:125 +#: ../../include/nav.php:152 msgid "Mark all system notifications seen" msgstr "" -#: ../../include/nav.php:129 +#: ../../include/nav.php:156 msgid "Private mail" msgstr "Prywatne maile" -#: ../../include/nav.php:130 +#: ../../include/nav.php:157 msgid "Inbox" msgstr "Odebrane" -#: ../../include/nav.php:131 +#: ../../include/nav.php:158 msgid "Outbox" msgstr "Wysłane" -#: ../../include/nav.php:135 +#: ../../include/nav.php:162 msgid "Manage" msgstr "Zarządzaj" -#: ../../include/nav.php:135 +#: ../../include/nav.php:162 msgid "Manage other pages" msgstr "Zarządzaj innymi stronami" -#: ../../include/nav.php:138 +#: ../../include/nav.php:165 msgid "Delegations" msgstr "" -#: ../../include/nav.php:142 ../../boot.php:1318 +#: ../../include/nav.php:169 ../../boot.php:1339 msgid "Profiles" msgstr "Profile" -#: ../../include/nav.php:142 +#: ../../include/nav.php:169 msgid "Manage/Edit Profiles" msgstr "" -#: ../../include/nav.php:144 +#: ../../include/nav.php:171 msgid "Manage/edit friends and contacts" msgstr "Zarządzaj listą przyjaciół i kontaktami" -#: ../../include/nav.php:151 +#: ../../include/nav.php:178 msgid "Site setup and configuration" msgstr "Konfiguracja i ustawienia instancji" -#: ../../include/nav.php:175 -msgid "Nothing new here" -msgstr "Brak nowych zdarzeń" +#: ../../include/nav.php:182 +msgid "Navigation" +msgstr "" + +#: ../../include/nav.php:182 +msgid "Site map" +msgstr "" #: ../../include/contact_widgets.php:6 msgid "Add New Contact" @@ -9187,7 +9277,7 @@ msgstr "Nie można zlokalizować serwera DNS dla bazy danych '%s'" msgid "[no subject]" msgstr "[bez tematu]" -#: ../../include/acl_selectors.php:311 +#: ../../include/acl_selectors.php:325 msgid "Visible to everybody" msgstr "Widoczny dla wszystkich" @@ -9233,146 +9323,146 @@ msgstr "prywatna wiadomość" msgid "Please visit %s to view and/or reply to your private messages." msgstr "Odwiedź %s żeby zobaczyć i/lub odpowiedzieć na twoje prywatne wiadomości" -#: ../../include/enotify.php:89 +#: ../../include/enotify.php:90 #, php-format msgid "%1$s commented on [url=%2$s]a %3$s[/url]" msgstr "" -#: ../../include/enotify.php:96 +#: ../../include/enotify.php:97 #, php-format msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]" msgstr "" -#: ../../include/enotify.php:104 +#: ../../include/enotify.php:105 #, php-format msgid "%1$s commented on [url=%2$s]your %3$s[/url]" msgstr "" -#: ../../include/enotify.php:114 +#: ../../include/enotify.php:115 #, php-format msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s" msgstr "" -#: ../../include/enotify.php:115 +#: ../../include/enotify.php:116 #, php-format msgid "%s commented on an item/conversation you have been following." msgstr "%s skomentował rozmowę którą śledzisz" -#: ../../include/enotify.php:118 ../../include/enotify.php:133 -#: ../../include/enotify.php:146 ../../include/enotify.php:164 -#: ../../include/enotify.php:177 +#: ../../include/enotify.php:119 ../../include/enotify.php:134 +#: ../../include/enotify.php:147 ../../include/enotify.php:165 +#: ../../include/enotify.php:178 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "Odwiedź %s żeby zobaczyć i/lub odpowiedzieć na rozmowę" -#: ../../include/enotify.php:125 +#: ../../include/enotify.php:126 #, php-format msgid "[Friendica:Notify] %s posted to your profile wall" msgstr "[Friendica:Notify] %s napisał na twoim profilu" -#: ../../include/enotify.php:127 +#: ../../include/enotify.php:128 #, php-format msgid "%1$s posted to your profile wall at %2$s" msgstr "" -#: ../../include/enotify.php:129 +#: ../../include/enotify.php:130 #, php-format msgid "%1$s posted to [url=%2$s]your wall[/url]" msgstr "" -#: ../../include/enotify.php:140 +#: ../../include/enotify.php:141 #, php-format msgid "[Friendica:Notify] %s tagged you" msgstr "[Friendica:Notify] %s oznaczył cię" -#: ../../include/enotify.php:141 +#: ../../include/enotify.php:142 #, php-format msgid "%1$s tagged you at %2$s" msgstr "" -#: ../../include/enotify.php:142 +#: ../../include/enotify.php:143 #, php-format msgid "%1$s [url=%2$s]tagged you[/url]." msgstr "" -#: ../../include/enotify.php:154 +#: ../../include/enotify.php:155 #, php-format msgid "[Friendica:Notify] %1$s poked you" msgstr "" -#: ../../include/enotify.php:155 +#: ../../include/enotify.php:156 #, php-format msgid "%1$s poked you at %2$s" msgstr "" -#: ../../include/enotify.php:156 +#: ../../include/enotify.php:157 #, php-format msgid "%1$s [url=%2$s]poked you[/url]." msgstr "" -#: ../../include/enotify.php:171 +#: ../../include/enotify.php:172 #, php-format msgid "[Friendica:Notify] %s tagged your post" msgstr "" -#: ../../include/enotify.php:172 +#: ../../include/enotify.php:173 #, php-format msgid "%1$s tagged your post at %2$s" msgstr "" -#: ../../include/enotify.php:173 +#: ../../include/enotify.php:174 #, php-format msgid "%1$s tagged [url=%2$s]your post[/url]" msgstr "" -#: ../../include/enotify.php:184 -msgid "[Friendica:Notify] Introduction received" -msgstr "" - #: ../../include/enotify.php:185 -#, php-format -msgid "You've received an introduction from '%1$s' at %2$s" +msgid "[Friendica:Notify] Introduction received" msgstr "" #: ../../include/enotify.php:186 #, php-format +msgid "You've received an introduction from '%1$s' at %2$s" +msgstr "" + +#: ../../include/enotify.php:187 +#, php-format msgid "You've received [url=%1$s]an introduction[/url] from %2$s." msgstr "" -#: ../../include/enotify.php:189 ../../include/enotify.php:207 +#: ../../include/enotify.php:190 ../../include/enotify.php:208 #, php-format msgid "You may visit their profile at %s" msgstr "Możesz obejrzeć ich profile na %s" -#: ../../include/enotify.php:191 +#: ../../include/enotify.php:192 #, php-format msgid "Please visit %s to approve or reject the introduction." msgstr "Odwiedż %s aby zatwierdzić lub odrzucić przedstawienie." -#: ../../include/enotify.php:198 +#: ../../include/enotify.php:199 msgid "[Friendica:Notify] Friend suggestion received" msgstr "" -#: ../../include/enotify.php:199 +#: ../../include/enotify.php:200 #, php-format msgid "You've received a friend suggestion from '%1$s' at %2$s" msgstr "" -#: ../../include/enotify.php:200 +#: ../../include/enotify.php:201 #, php-format msgid "" "You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s." msgstr "" -#: ../../include/enotify.php:205 +#: ../../include/enotify.php:206 msgid "Name:" msgstr "Imię:" -#: ../../include/enotify.php:206 +#: ../../include/enotify.php:207 msgid "Photo:" msgstr "Zdjęcie:" -#: ../../include/enotify.php:209 +#: ../../include/enotify.php:210 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "" @@ -9400,7 +9490,7 @@ msgstr "Autor lub nazwa nie zostało znalezione." #: ../../include/follow.php:84 msgid "No browser URL could be matched to this address." -msgstr "" +msgstr "Przeglądarka WWW nie może odnaleźć podanego adresu" #: ../../include/follow.php:86 msgid "" @@ -9440,7 +9530,11 @@ msgstr "" msgid "You have a new follower at " msgstr "" -#: ../../include/items.php:4057 +#: ../../include/items.php:3892 +msgid "Do you really want to delete this item?" +msgstr "" + +#: ../../include/items.php:4085 msgid "Archives" msgstr "Archiwum" @@ -9524,7 +9618,7 @@ msgstr "Proszę dodać zdjęcie profilowe." msgid "Welcome back " msgstr "Witaj ponownie " -#: ../../include/security.php:357 +#: ../../include/security.php:366 msgid "" "The form security token was not correct. This probably happened because the " "form has been opened for too long (>3 hours) before submitting it." @@ -9534,147 +9628,163 @@ msgstr "" msgid "stopped following" msgstr "przestań obserwować" -#: ../../include/Contact.php:225 ../../include/conversation.php:816 +#: ../../include/Contact.php:225 ../../include/conversation.php:820 msgid "Poke" msgstr "Zaczepka" -#: ../../include/Contact.php:226 ../../include/conversation.php:810 +#: ../../include/Contact.php:226 ../../include/conversation.php:814 msgid "View Status" msgstr "Zobacz status" -#: ../../include/Contact.php:227 ../../include/conversation.php:811 +#: ../../include/Contact.php:227 ../../include/conversation.php:815 msgid "View Profile" msgstr "Zobacz profil" -#: ../../include/Contact.php:228 ../../include/conversation.php:812 +#: ../../include/Contact.php:228 ../../include/conversation.php:816 msgid "View Photos" msgstr "Zobacz zdjęcia" -#: ../../include/Contact.php:229 ../../include/Contact.php:242 -#: ../../include/conversation.php:813 +#: ../../include/Contact.php:229 ../../include/Contact.php:251 +#: ../../include/conversation.php:817 msgid "Network Posts" msgstr "" -#: ../../include/Contact.php:230 ../../include/Contact.php:242 -#: ../../include/conversation.php:814 +#: ../../include/Contact.php:230 ../../include/Contact.php:251 +#: ../../include/conversation.php:818 msgid "Edit Contact" msgstr "Edytuj kontakt" -#: ../../include/Contact.php:231 ../../include/Contact.php:242 -#: ../../include/conversation.php:815 +#: ../../include/Contact.php:231 ../../include/Contact.php:251 +#: ../../include/conversation.php:819 msgid "Send PM" msgstr "Wyślij prywatną wiadomość" -#: ../../include/conversation.php:206 +#: ../../include/conversation.php:207 #, php-format msgid "%1$s poked %2$s" msgstr "" -#: ../../include/conversation.php:290 +#: ../../include/conversation.php:291 msgid "post/item" msgstr "" -#: ../../include/conversation.php:291 +#: ../../include/conversation.php:292 #, php-format msgid "%1$s marked %2$s's %3$s as favorite" msgstr "" -#: ../../include/conversation.php:620 ../../object/Item.php:249 +#: ../../include/conversation.php:621 ../../object/Item.php:249 msgid "Categories:" msgstr "Kategorie:" -#: ../../include/conversation.php:621 ../../object/Item.php:250 +#: ../../include/conversation.php:622 ../../object/Item.php:250 msgid "Filed under:" msgstr "" -#: ../../include/conversation.php:706 +#: ../../include/conversation.php:710 msgid "remove" msgstr "usuń" -#: ../../include/conversation.php:710 +#: ../../include/conversation.php:714 msgid "Delete Selected Items" msgstr "Usuń zaznaczone elementy" -#: ../../include/conversation.php:809 +#: ../../include/conversation.php:813 msgid "Follow Thread" msgstr "" -#: ../../include/conversation.php:878 +#: ../../include/conversation.php:882 #, php-format msgid "%s likes this." msgstr "%s lubi to." -#: ../../include/conversation.php:878 +#: ../../include/conversation.php:882 #, php-format msgid "%s doesn't like this." msgstr "%s nie lubi tego." -#: ../../include/conversation.php:883 +#: ../../include/conversation.php:887 #, php-format msgid "%2$d people like this" msgstr "" -#: ../../include/conversation.php:886 +#: ../../include/conversation.php:890 #, php-format msgid "%2$d people don't like this" msgstr "" -#: ../../include/conversation.php:900 +#: ../../include/conversation.php:904 msgid "and" msgstr "i" -#: ../../include/conversation.php:906 +#: ../../include/conversation.php:910 #, php-format msgid ", and %d other people" msgstr ", i %d innych ludzi" -#: ../../include/conversation.php:908 +#: ../../include/conversation.php:912 #, php-format msgid "%s like this." msgstr "%s lubi to." -#: ../../include/conversation.php:908 +#: ../../include/conversation.php:912 #, php-format msgid "%s don't like this." msgstr "%s nie lubi tego." -#: ../../include/conversation.php:935 ../../include/conversation.php:953 +#: ../../include/conversation.php:939 ../../include/conversation.php:957 msgid "Visible to everybody" msgstr "Widoczne dla wszystkich" -#: ../../include/conversation.php:937 ../../include/conversation.php:955 +#: ../../include/conversation.php:941 ../../include/conversation.php:959 msgid "Please enter a video link/URL:" msgstr "Podaj link do filmu" -#: ../../include/conversation.php:938 ../../include/conversation.php:956 +#: ../../include/conversation.php:942 ../../include/conversation.php:960 msgid "Please enter an audio link/URL:" msgstr "Podaj link do muzyki" -#: ../../include/conversation.php:939 ../../include/conversation.php:957 +#: ../../include/conversation.php:943 ../../include/conversation.php:961 msgid "Tag term:" msgstr "" -#: ../../include/conversation.php:941 ../../include/conversation.php:959 +#: ../../include/conversation.php:945 ../../include/conversation.php:963 msgid "Where are you right now?" msgstr "Gdzie teraz jesteś?" -#: ../../include/conversation.php:942 +#: ../../include/conversation.php:946 msgid "Delete item(s)?" msgstr "" -#: ../../include/conversation.php:1021 +#: ../../include/conversation.php:988 +msgid "Post to Email" +msgstr "Wyślij poprzez email" + +#: ../../include/conversation.php:1044 msgid "permissions" msgstr "zezwolenia" -#: ../../include/plugin.php:389 ../../include/plugin.php:391 +#: ../../include/conversation.php:1068 +msgid "Post to Groups" +msgstr "" + +#: ../../include/conversation.php:1069 +msgid "Post to Contacts" +msgstr "" + +#: ../../include/conversation.php:1070 +msgid "Private post" +msgstr "" + +#: ../../include/plugin.php:429 ../../include/plugin.php:431 msgid "Click here to upgrade." msgstr "Kliknij tu, aby zaktualizować." -#: ../../include/plugin.php:397 +#: ../../include/plugin.php:437 msgid "This action exceeds the limits set by your subscription plan." msgstr "" -#: ../../include/plugin.php:402 +#: ../../include/plugin.php:442 msgid "This action is not available under your subscription plan." msgstr "" @@ -9686,117 +9796,117 @@ msgstr "Usunąć ten element?" msgid "show fewer" msgstr "Pokaż mniej" -#: ../../boot.php:878 +#: ../../boot.php:899 #, php-format msgid "Update %s failed. See error logs." msgstr "" -#: ../../boot.php:880 +#: ../../boot.php:901 #, php-format msgid "Update Error at %s" msgstr "" -#: ../../boot.php:990 +#: ../../boot.php:1011 msgid "Create a New Account" msgstr "Załóż nowe konto" -#: ../../boot.php:1018 +#: ../../boot.php:1039 msgid "Nickname or Email address: " msgstr "Nick lub adres email:" -#: ../../boot.php:1019 +#: ../../boot.php:1040 msgid "Password: " msgstr "Hasło:" -#: ../../boot.php:1020 +#: ../../boot.php:1041 msgid "Remember me" msgstr "Zapamiętaj mnie" -#: ../../boot.php:1023 +#: ../../boot.php:1044 msgid "Or login using OpenID: " msgstr "Lub zaloguj się korzystając z OpenID:" -#: ../../boot.php:1029 +#: ../../boot.php:1050 msgid "Forgot your password?" msgstr "Zapomniałeś swojego hasła?" -#: ../../boot.php:1032 +#: ../../boot.php:1053 msgid "Website Terms of Service" msgstr "" -#: ../../boot.php:1033 +#: ../../boot.php:1054 msgid "terms of service" msgstr "" -#: ../../boot.php:1035 +#: ../../boot.php:1056 msgid "Website Privacy Policy" msgstr "" -#: ../../boot.php:1036 +#: ../../boot.php:1057 msgid "privacy policy" msgstr "" -#: ../../boot.php:1165 +#: ../../boot.php:1186 msgid "Requested account is not available." msgstr "" -#: ../../boot.php:1244 +#: ../../boot.php:1265 msgid "Edit profile" msgstr "Edytuj profil" -#: ../../boot.php:1310 +#: ../../boot.php:1331 msgid "Message" msgstr "Wiadomość" -#: ../../boot.php:1318 +#: ../../boot.php:1339 msgid "Manage/edit profiles" msgstr "Zarządzaj profilami" -#: ../../boot.php:1440 ../../boot.php:1526 +#: ../../boot.php:1461 ../../boot.php:1547 msgid "g A l F d" -msgstr "" +msgstr "g A I F d" -#: ../../boot.php:1441 ../../boot.php:1527 +#: ../../boot.php:1462 ../../boot.php:1548 msgid "F d" msgstr "" -#: ../../boot.php:1486 ../../boot.php:1567 +#: ../../boot.php:1507 ../../boot.php:1588 msgid "[today]" msgstr "[dziś]" -#: ../../boot.php:1498 +#: ../../boot.php:1519 msgid "Birthday Reminders" msgstr "Przypomnienia o urodzinach" -#: ../../boot.php:1499 +#: ../../boot.php:1520 msgid "Birthdays this week:" msgstr "Urodziny w tym tygodniu:" -#: ../../boot.php:1560 +#: ../../boot.php:1581 msgid "[No description]" msgstr "[Brak opisu]" -#: ../../boot.php:1578 +#: ../../boot.php:1599 msgid "Event Reminders" msgstr "Przypominacze wydarzeń" -#: ../../boot.php:1579 +#: ../../boot.php:1600 msgid "Events this week:" msgstr "Wydarzenia w tym tygodniu:" -#: ../../boot.php:1815 +#: ../../boot.php:1836 msgid "Status Messages and Posts" msgstr "Status wiadomości i postów" -#: ../../boot.php:1822 +#: ../../boot.php:1843 msgid "Profile Details" msgstr "Szczegóły profilu" -#: ../../boot.php:1839 +#: ../../boot.php:1860 msgid "Events and Calendar" msgstr "Wydarzenia i kalendarz" -#: ../../boot.php:1846 +#: ../../boot.php:1867 msgid "Only You Can See This" msgstr "Tylko ty możesz to zobaczyć" @@ -9804,7 +9914,7 @@ msgstr "Tylko ty możesz to zobaczyć" msgid "via" msgstr "" -#: ../../index.php:399 +#: ../../index.php:400 msgid "toggle mobile" msgstr "" diff --git a/view/pl/strings.php b/view/pl/strings.php index 68439ebdf..b070090d5 100644 --- a/view/pl/strings.php +++ b/view/pl/strings.php @@ -48,7 +48,7 @@ $a->strings["Event Starts:"] = "Rozpoczęcie wydarzenia:"; $a->strings["Required"] = "Wymagany"; $a->strings["Finish date/time is not known or not relevant"] = "Data/czas zakończenia nie jest znana lub jest nieistotna"; $a->strings["Event Finishes:"] = "Zakończenie wydarzenia:"; -$a->strings["Adjust for viewer timezone"] = ""; +$a->strings["Adjust for viewer timezone"] = "Dopasuj dla strefy czasowej widza"; $a->strings["Description:"] = "Opis:"; $a->strings["Location:"] = "Lokalizacja"; $a->strings["Title:"] = "Tytuł:"; @@ -74,7 +74,9 @@ $a->strings["Contact information unavailable"] = "Informacje o kontakcie nie dos $a->strings["Profile Photos"] = "Zdjęcia profilowe"; $a->strings["Album not found."] = "Album nie znaleziony"; $a->strings["Delete Album"] = "Usuń album"; +$a->strings["Do you really want to delete this photo album and all its photos?"] = ""; $a->strings["Delete Photo"] = "Usuń zdjęcie"; +$a->strings["Do you really want to delete this photo?"] = ""; $a->strings["%1\$s was tagged in %2\$s by %3\$s"] = ""; $a->strings["a photo"] = "zdjęcie"; $a->strings["Image exceeds size limit of "] = "obrazek przekracza limit rozmiaru"; @@ -90,6 +92,10 @@ $a->strings["New album name: "] = "Nazwa nowego albumu:"; $a->strings["or existing album name: "] = "lub istniejąca nazwa albumu:"; $a->strings["Do not show a status post for this upload"] = "Nie pokazuj postów statusu dla tego wysłania"; $a->strings["Permissions"] = "Uprawnienia"; +$a->strings["Show to Groups"] = ""; +$a->strings["Show to Contacts"] = ""; +$a->strings["Private Photo"] = ""; +$a->strings["Public Photo"] = ""; $a->strings["Edit Album"] = "Edytuj album"; $a->strings["Show Newest First"] = "Najpierw pokaż najnowsze"; $a->strings["Show Oldest First"] = "Najpierw pokaż najstarsze"; @@ -109,6 +115,8 @@ $a->strings["New album name"] = "Nazwa nowego albumu"; $a->strings["Caption"] = "Zawartość"; $a->strings["Add a Tag"] = "Dodaj tag"; $a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Przykładowo: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"; +$a->strings["Private photo"] = ""; +$a->strings["Public photo"] = ""; $a->strings["I like this (toggle)"] = "Lubię to (zmień)"; $a->strings["I don't like this (toggle)"] = "Nie lubię (zmień)"; $a->strings["Share"] = "Podziel się"; @@ -131,7 +139,6 @@ $a->strings["Installed plugins/addons/apps:"] = ""; $a->strings["No installed plugins/addons/apps"] = "Brak zainstalowanych pluginów/dodatków/aplikacji"; $a->strings["Item not found"] = "Artykuł nie znaleziony"; $a->strings["Edit post"] = "Edytuj post"; -$a->strings["Post to Email"] = "Wyślij poprzez email"; $a->strings["Edit"] = "Edytuj"; $a->strings["Upload photo"] = "Wyślij zdjęcie"; $a->strings["upload photo"] = "dodaj zdjęcie"; @@ -254,7 +261,7 @@ $a->strings["Error: GD graphics PHP module with JPEG support required but not in $a->strings["Error: openssl PHP module required but not installed."] = "Błąd: openssl PHP wymagany moduł, lecz nie zainstalowany."; $a->strings["Error: mysqli PHP module required but not installed."] = "Błąd: mysqli PHP wymagany moduł, lecz nie zainstalowany."; $a->strings["Error: mb_string PHP module required but not installed."] = "Błąd: moduł PHP mb_string jest wymagany ale nie jest zainstalowany"; -$a->strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = ""; +$a->strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "Instalator WWW musi być w stanie utworzyć plik o nazwie \". Htconfig.php\" i nie jest w stanie tego zrobić."; $a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = ""; $a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Friendica top folder."] = ""; $a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = ""; @@ -326,8 +333,8 @@ $a->strings["starred"] = ""; $a->strings["add tag"] = "dodaj tag"; $a->strings["save to folder"] = "zapisz w folderze"; $a->strings["to"] = "do"; -$a->strings["Wall-to-Wall"] = ""; -$a->strings["via Wall-To-Wall:"] = ""; +$a->strings["Wall-to-Wall"] = "Wall-to-Wall"; +$a->strings["via Wall-To-Wall:"] = "via Wall-To-Wall:"; $a->strings["Welcome to %s"] = "Witamy w %s"; $a->strings["Invalid request identifier."] = "Niewłaściwy identyfikator wymagania."; $a->strings["Discard"] = "Odrzuć"; @@ -380,6 +387,7 @@ $a->strings["Contact has been ignored"] = "Kontakt jest ignorowany"; $a->strings["Contact has been unignored"] = "Kontakt nie jest ignorowany"; $a->strings["Contact has been archived"] = "Kontakt został zarchiwizowany"; $a->strings["Contact has been unarchived"] = ""; +$a->strings["Do you really want to delete this contact?"] = ""; $a->strings["Contact has been removed."] = "Kontakt został usunięty."; $a->strings["You are mutual friends with %s"] = "Jesteś już znajomym z %s"; $a->strings["You are sharing with %s"] = "Współdzielisz z %s"; @@ -572,6 +580,9 @@ $a->strings["Maximum Friend Requests/Day:"] = "Maksymalna liczba zaproszeń do g $a->strings["(to prevent spam abuse)"] = "(aby zapobiec spamowaniu)"; $a->strings["Default Post Permissions"] = "Domyślne prawa dostępu wiadomości"; $a->strings["(click to open/close)"] = "(kliknij by otworzyć/zamknąć)"; +$a->strings["Default Private Post"] = ""; +$a->strings["Default Public Post"] = ""; +$a->strings["Default Permissions for New Posts"] = ""; $a->strings["Maximum private messages per day from unknown people:"] = ""; $a->strings["Notification Settings"] = "Ustawienia powiadomień"; $a->strings["By default post a status message when:"] = ""; @@ -754,8 +765,11 @@ $a->strings["No profile"] = "Brak profilu"; $a->strings["Remove My Account"] = "Usuń konto"; $a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Kompletne usunięcie konta. Jeżeli zostanie wykonane, konto nie może zostać odzyskane."; $a->strings["Please enter your password for verification:"] = "Wprowadź hasło w celu weryfikacji."; +$a->strings["Nothing new here"] = "Brak nowych zdarzeń"; +$a->strings["Clear notifications"] = ""; $a->strings["New Message"] = "Nowa wiadomość"; $a->strings["Unable to locate contact information."] = "Niezdolny do uzyskania informacji kontaktowych."; +$a->strings["Do you really want to delete this message?"] = ""; $a->strings["Message deleted."] = "Wiadomość usunięta."; $a->strings["Conversation removed."] = "Rozmowa usunięta."; $a->strings["No messages."] = "Brak wiadomości."; @@ -786,7 +800,7 @@ $a->strings["Admin"] = "Administator"; $a->strings["Plugin Features"] = "Polecane wtyczki"; $a->strings["User registrations waiting for confirmation"] = "Rejestracje użytkownika czekają na potwierdzenie."; $a->strings["Normal Account"] = "Konto normalne"; -$a->strings["Soapbox Account"] = ""; +$a->strings["Soapbox Account"] = "Konto Soapbox"; $a->strings["Community/Celebrity Account"] = "Konto społeczności/gwiazdy"; $a->strings["Automatic Friend Account"] = "Automatyczny przyjaciel konta"; $a->strings["Blog Account"] = ""; @@ -867,7 +881,7 @@ $a->strings["Verify SSL"] = "Weryfikacja SSL"; $a->strings["If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."] = ""; $a->strings["Proxy user"] = "Użytkownik proxy"; $a->strings["Proxy URL"] = "URL Proxy"; -$a->strings["Network timeout"] = ""; +$a->strings["Network timeout"] = "Network timeout"; $a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = ""; $a->strings["Delivery interval"] = ""; $a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = ""; @@ -1066,6 +1080,7 @@ $a->strings["bb2dia2bb: "] = ""; $a->strings["bb2md2html2bb: "] = ""; $a->strings["Source input (Diaspora format): "] = ""; $a->strings["diaspora2bb: "] = ""; +$a->strings["Do you really want to delete this suggestion?"] = ""; $a->strings["Friend Suggestions"] = "Osoby, które możesz znać"; $a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = ""; $a->strings["Ignore/Hide"] = "Ignoruj/Ukryj"; @@ -1078,8 +1093,10 @@ $a->strings["Status:"] = "Status"; $a->strings["Homepage:"] = "Strona główna:"; $a->strings["About:"] = "O:"; $a->strings["No entries (some entries may be hidden)."] = "Brak odwiedzin (niektóre odwiedziny mogą być ukryte)."; +$a->strings["Total invitation limit exceeded."] = ""; $a->strings["%s : Not a valid email address."] = "%s : Niepoprawny adres email."; $a->strings["Please join us on Friendica"] = "Dołącz do nas na Friendica"; +$a->strings["Invitation limit exceeded. Please contact your site administrator."] = ""; $a->strings["%s : Message delivery failed."] = "%s : Dostarczenie wiadomości nieudane."; $a->strings["%d message sent."] = array( 0 => "%d wiadomość wysłana.", @@ -1408,7 +1425,7 @@ $a->strings["You won!"] = "Wygrałeś!"; $a->strings["\"Cat\" game!"] = "Gra \"Kot\"!"; $a->strings["I won!"] = "Wygrałem!"; $a->strings["Randplace Settings"] = "Ustawienia Randplace"; -$a->strings["Enable Randplace Plugin"] = ""; +$a->strings["Enable Randplace Plugin"] = "Włącz Randplace Plugin"; $a->strings["Post to Dreamwidth"] = "Opublikuj na Dreamwidth"; $a->strings["Dreamwidth Post Settings"] = ""; $a->strings["Enable dreamwidth Post Plugin"] = ""; @@ -1550,7 +1567,7 @@ $a->strings["Post to StatusNet"] = "Wyślij do sieci StatusNet"; $a->strings["Please contact your site administrator.
The provided API URL is not valid."] = "Proszę się skontaktować z administratorem strony.
API URL nie jest poprawne"; $a->strings["We could not contact the StatusNet API with the Path you entered."] = ""; $a->strings["StatusNet settings updated."] = "Ustawienia StatusNet zaktualizowane"; -$a->strings["StatusNet Posting Settings"] = ""; +$a->strings["StatusNet Posting Settings"] = "Ustawienia StatusNet"; $a->strings["Globally Available StatusNet OAuthKeys"] = ""; $a->strings["There are preconfigured OAuth key pairs for some StatusNet servers available. If you are useing one of them, please use these credentials. If not feel free to connect to any other StatusNet instance (see below)."] = ""; $a->strings["Provide your own OAuth Credentials"] = ""; @@ -1563,11 +1580,11 @@ $a->strings["Log in with StatusNet"] = "Zaloguj się przez StatusNet"; $a->strings["Copy the security code from StatusNet here"] = "Tutaj skopiuj kod bezpieczeństwa z StatusNet"; $a->strings["Cancel Connection Process"] = "Anuluj proces łączenia"; $a->strings["Current StatusNet API is"] = "Aktualnym StatusNet API jest"; -$a->strings["Cancel StatusNet Connection"] = ""; +$a->strings["Cancel StatusNet Connection"] = "Anuluj połączenie StatusNet"; $a->strings["Currently connected to: "] = "Obecnie połączone z:"; $a->strings["If enabled all your public postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = ""; $a->strings["Note: Due your privacy settings (Hide your profile details from unknown viewers?) the link potentially included in public postings relayed to StatusNet will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = ""; -$a->strings["Allow posting to StatusNet"] = ""; +$a->strings["Allow posting to StatusNet"] = "Pozwól zamieszczać posty na StatusNet"; $a->strings["Send public postings to StatusNet by default"] = ""; $a->strings["Mirror all posts from statusnet that are no replies or repeated messages"] = ""; $a->strings["Shortening method that optimizes the post"] = ""; @@ -1629,6 +1646,8 @@ $a->strings["Shortening method that optimizes the tweet"] = ""; $a->strings["Send linked #-tags and @-names to Twitter"] = ""; $a->strings["Consumer key"] = "Klucz konsumenta"; $a->strings["Consumer secret"] = "Sekret konsumenta"; +$a->strings["Name of the Twitter Application"] = ""; +$a->strings["set this to avoid mirroring postings from ~friendica back to ~friendica"] = ""; $a->strings["IRC Settings"] = "Ustawienia IRC"; $a->strings["Channel(s) to auto connect (comma separated)"] = ""; $a->strings["Popular Channels (comma separated)"] = ""; @@ -1908,7 +1927,8 @@ $a->strings["Profiles"] = "Profile"; $a->strings["Manage/Edit Profiles"] = ""; $a->strings["Manage/edit friends and contacts"] = "Zarządzaj listą przyjaciół i kontaktami"; $a->strings["Site setup and configuration"] = "Konfiguracja i ustawienia instancji"; -$a->strings["Nothing new here"] = "Brak nowych zdarzeń"; +$a->strings["Navigation"] = ""; +$a->strings["Site map"] = ""; $a->strings["Add New Contact"] = "Dodaj nowy kontakt"; $a->strings["Enter address or web location"] = "Wpisz adres lub lokalizację sieciową"; $a->strings["Example: bob@example.com, http://example.com/barbara"] = "Przykład: bob@przykład.com, http://przykład.com/barbara"; @@ -2033,7 +2053,7 @@ $a->strings["This site is not configured to allow communications with other netw $a->strings["No compatible communication protocols or feeds were discovered."] = ""; $a->strings["The profile address specified does not provide adequate information."] = "Dany adres profilu nie dostarcza odpowiednich informacji."; $a->strings["An author or name was not found."] = "Autor lub nazwa nie zostało znalezione."; -$a->strings["No browser URL could be matched to this address."] = ""; +$a->strings["No browser URL could be matched to this address."] = "Przeglądarka WWW nie może odnaleźć podanego adresu"; $a->strings["Unable to match @-style Identity Address with a known protocol or email contact."] = ""; $a->strings["Use mailto: in front of address to force email check."] = ""; $a->strings["The profile address specified belongs to a network which has been disabled on this site."] = "Określony adres profilu należy do sieci, która została wyłączona na tej stronie."; @@ -2042,6 +2062,7 @@ $a->strings["Unable to retrieve contact information."] = "Nie można otrzymać i $a->strings["following"] = "następujący"; $a->strings["A new person is sharing with you at "] = ""; $a->strings["You have a new follower at "] = ""; +$a->strings["Do you really want to delete this item?"] = ""; $a->strings["Archives"] = "Archiwum"; $a->strings["An invitation is required."] = "Wymagane zaproszenie."; $a->strings["Invitation could not be verified."] = "Zaproszenie niezweryfikowane."; @@ -2093,7 +2114,11 @@ $a->strings["Please enter an audio link/URL:"] = "Podaj link do muzyki"; $a->strings["Tag term:"] = ""; $a->strings["Where are you right now?"] = "Gdzie teraz jesteś?"; $a->strings["Delete item(s)?"] = ""; +$a->strings["Post to Email"] = "Wyślij poprzez email"; $a->strings["permissions"] = "zezwolenia"; +$a->strings["Post to Groups"] = ""; +$a->strings["Post to Contacts"] = ""; +$a->strings["Private post"] = ""; $a->strings["Click here to upgrade."] = "Kliknij tu, aby zaktualizować."; $a->strings["This action exceeds the limits set by your subscription plan."] = ""; $a->strings["This action is not available under your subscription plan."] = ""; @@ -2115,7 +2140,7 @@ $a->strings["Requested account is not available."] = ""; $a->strings["Edit profile"] = "Edytuj profil"; $a->strings["Message"] = "Wiadomość"; $a->strings["Manage/edit profiles"] = "Zarządzaj profilami"; -$a->strings["g A l F d"] = ""; +$a->strings["g A l F d"] = "g A I F d"; $a->strings["F d"] = ""; $a->strings["[today]"] = "[dziś]"; $a->strings["Birthday Reminders"] = "Przypomnienia o urodzinach"; diff --git a/view/smarty3/admin_site.tpl b/view/smarty3/admin_site.tpl index f033b52ee..bad0f5275 100644 --- a/view/smarty3/admin_site.tpl +++ b/view/smarty3/admin_site.tpl @@ -52,10 +52,12 @@ {{include file="field_input.tpl" field=$sitename}} {{include file="field_textarea.tpl" field=$banner}} {{include file="field_select.tpl" field=$language}} - {{include file="field_select.tpl" field=$theme}} + {{include file="field_select.tpl" field=$theme}} {{include file="field_select.tpl" field=$theme_mobile}} {{include file="field_select.tpl" field=$ssl_policy}} {{include file="field_checkbox.tpl" field=$new_share}} + {{include file="field_checkbox.tpl" field=$hide_help}} + {{include file="field_select.tpl" field=$singleuser}}
diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index 8e240da3e..cbce920e7 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -2,7 +2,7 @@ style.css Smoothly - Created by alex@friendica.pixelbits.de on 2013-01-11 + Created by alex@friendica.pixelbits.de on 2013-02-21 ** Colors ** Blue links - #1873a2 @@ -202,6 +202,12 @@ section { clear: both; } +.login-extra-links { + width: 100%; + margin-left: 145px; + clear: both; +} + #login-extra-links a { display: block; margin: 10px; @@ -215,7 +221,7 @@ section { } #login_standard { - width: 250px; + width: 260px; float: left; border: 1px solid #7C7D7B; border-radius: 5px; @@ -256,7 +262,7 @@ section { } #login-submit-button { - width: 271px; + width: 280px; } .login-form, @@ -3522,7 +3528,7 @@ margin-left: 0px; /* ========= */ #adminpage { - width: 80%; + width: 90%; } #pending-update { @@ -3630,13 +3636,25 @@ margin-left: 0px; /* =============== */ .field { - width: 90%; + margin-bottom: 10px; + overflow: auto; + padding-bottom: 0px; + width: 100%; +} + +.field.radio .field_help { + margin-left: 205px; +} + +.field .field_help { + color: #666666; + display: block; + margin-left: 200px; } .field label { - float: left; - min-width: 120px; - margin: 5px 10px 0 0; + float: left; + width: 200px; } .field checkbox { @@ -3646,17 +3664,13 @@ margin-left: 0px; .field input, .field textarea { - width: 220px; + width: 400px; border: 1px solid #CDCDCD; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; } -.field textarea { - height: 100px; -} - .field password { height: 100px; margin-left: 150px; @@ -4346,6 +4360,12 @@ div #datebrowse-sidebar.widget { margin:10px 10px 0 0; } +#id_maxreq, +#id_cntunkmail, +#id_expire { + width: 75px; +} + #id_post_newfriend, #id_post_joingroup, #id_post_profilechange, @@ -4358,7 +4378,7 @@ div #datebrowse-sidebar.widget { #id_notify7, #id_notify8, #id_allow_location { - margin: 6px 0 0 0; + margin: 6px 0 0 10px; } #settings-form {} @@ -4374,6 +4394,7 @@ div #datebrowse-sidebar.widget { } #settings-notifications { + width: 400px; border: 1px solid #7C7D7B; box-shadow: 0 0 8px #BDBDBD; -moz-box-shadow: 3px 3px 4px #959494; @@ -4426,3 +4447,38 @@ div #datebrowse-sidebar.widget { width: auto !important; margin-bottom: 5px !important; } + +.onoff { + margin-right: 10px; +} + +.settings-heading { + margin: 25px 0 25px 0; +} + +#id_itemcache, +#id_basepath, +#id_temppath, +#id_lockpath, +#id_proxyuser, +#id_proxy, +#id_allowed_email, +#id_allowed_sites, +#id_directory_submit_url, +#id_register_text { + width: 440px; +} + +#id_itemcache_duration, +#id_abandon_days, +#id_maxloadavg, +#id_poll_interval, +#id_delivery_interval, +#id_timeout, +#id_jpegimagequality, +#id_maximagelength, +#id_maximagesize, +#id_max_daily_registrations { + width: 75px; +} + diff --git a/view/theme/smoothly/theme.php b/view/theme/smoothly/theme.php index 16a33d678..c88b27827 100644 --- a/view/theme/smoothly/theme.php +++ b/view/theme/smoothly/theme.php @@ -3,7 +3,7 @@ /* * Name: Smoothly * Description: Like coffee with milk. Theme optimized for iPad[2]. - * Version: Version 0.132 + * Version: Version 0.21 * Author: Alex * Maintainer: Alex * Screenshot: Screenshot diff --git a/view/theme/vier/profile_vcard.tpl b/view/theme/vier/profile_vcard.tpl index 451bf9dab..aa716f100 100644 --- a/view/theme/vier/profile_vcard.tpl +++ b/view/theme/vier/profile_vcard.tpl @@ -18,7 +18,7 @@ {{ else }} -
+
{{ endif }} diff --git a/view/theme/vier/style.css b/view/theme/vier/style.css index f97fc2f59..4a116c5b7 100644 --- a/view/theme/vier/style.css +++ b/view/theme/vier/style.css @@ -1020,6 +1020,9 @@ section { max-width: 766px; padding: 10px 10px 10px 10px; background-color: white; + border-bottom: 1px solid lightgray; + border-right: 1px solid lightgray; + border-left: 1px solid lightgray; } /* wall item */ .tread-wrapper { @@ -1091,6 +1094,7 @@ border-bottom: 1px solid #D2D2D2; max-width: 660px; word-wrap: break-word; line-height: 1.36; + padding-bottom: 6px; } .wall-item-container .wall-item-content img { @@ -1304,14 +1308,16 @@ border-bottom: 1px solid #D2D2D2; .wall-item-tags { padding-top: 1px; padding-bottom: 2px; + /*display: none;*/ } + .tag { color: rgb(153,153,153); - padding-left: 3px; - font-size: 10px; + /*padding-left: 3px; + font-size: 10px;*/ } .tag a { - padding-right: 8px; + /*padding-right: 8px;*/ color: rgb(153,153,153); } .wwto { @@ -1724,7 +1730,7 @@ div.pager, .birthday-notice, ul.tabs a, #jot-preview-link, .comment-edit-submit- background: linear-gradient(top, #ffffff 0%,#ececf2 100%);*/ } -#event-notice:hover, ul.tabs li .active, ul.tabs a:hover, #jot-preview-link:hover, .comment-edit-submit-wrapper .fakelink:hover { +#event-notice:hover, #birthday-notice:hover, ul.tabs li .active, ul.tabs a:hover, #jot-preview-link:hover, .comment-edit-submit-wrapper .fakelink:hover { color: black; background-color: #e5e5e5; text-decoration: none;