aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xboot.php14
-rw-r--r--doc/Privacy.md33
-rw-r--r--doc/Widgets.md8
-rw-r--r--doc/admins.bb12
-rw-r--r--doc/bugs.bb31
-rw-r--r--doc/credits.bb7
-rw-r--r--doc/develop.bb34
-rw-r--r--doc/features.bb6
-rw-r--r--doc/general.bb20
-rw-r--r--doc/history.md18
-rw-r--r--doc/main.bb73
-rw-r--r--doc/members.bb25
-rw-r--r--doc/to_do_code.bb2
-rw-r--r--doc/to_do_doco.bb23
-rw-r--r--images/default_profile_photos/alpha/300.pngbin3817 -> 524 bytes
-rw-r--r--images/default_profile_photos/arrow_avatar/300.pngbin0 -> 14163 bytes
-rw-r--r--images/default_profile_photos/arrow_avatar/48.pngbin0 -> 2279 bytes
-rw-r--r--images/default_profile_photos/arrow_avatar/80.pngbin0 -> 3861 bytes
-rw-r--r--images/default_profile_photos/black_avatar_1/300.pngbin6420 -> 11081 bytes
-rw-r--r--images/default_profile_photos/black_avatar_2/300.pngbin5802 -> 10148 bytes
-rw-r--r--images/default_profile_photos/blank/300.jpgbin910 -> 1630 bytes
-rw-r--r--images/default_profile_photos/blank/300.pngbin3817 -> 906 bytes
-rw-r--r--images/default_profile_photos/rainbow_man/300.jpgbin8510 -> 26219 bytes
-rw-r--r--images/default_profile_photos/rainbow_man/300.pngbin57998 -> 101379 bytes
-rw-r--r--images/default_profile_photos/rainbow_man_trans/300.pngbin71198 -> 117156 bytes
-rw-r--r--images/default_profile_photos/red_avatar/300.pngbin4621 -> 8856 bytes
-rw-r--r--images/default_profile_photos/red_koala/300.jpgbin22969 -> 38412 bytes
-rw-r--r--images/default_profile_photos/red_koala/300.pngbin20722 -> 28671 bytes
-rw-r--r--images/default_profile_photos/red_koala_trans/300.pngbin25546 -> 37012 bytes
-rw-r--r--images/default_profile_photos/redmatrix_logo_smiley/300.pngbin3834 -> 7930 bytes
-rw-r--r--images/hz-16.pngbin0 -> 876 bytes
-rw-r--r--images/hz-32.pngbin0 -> 1615 bytes
-rw-r--r--images/hz-64.pngbin0 -> 3627 bytes
-rw-r--r--include/AccessList.php148
-rw-r--r--include/Contact.php3
-rw-r--r--include/api.php141
-rw-r--r--include/apps.php40
-rw-r--r--include/attach.php79
-rw-r--r--include/chat.php2
-rw-r--r--include/conversation.php13
-rw-r--r--include/event.php308
-rw-r--r--include/group.php2
-rw-r--r--include/hubloc.php2
-rw-r--r--include/identity.php67
-rw-r--r--include/import.php475
-rwxr-xr-xinclude/importdoc.php41
-rwxr-xr-xinclude/items.php12
-rw-r--r--include/menu.php32
-rw-r--r--include/message.php11
-rw-r--r--include/network.php4
-rw-r--r--include/photo/photo_driver.php9
-rw-r--r--include/photos.php186
-rw-r--r--include/poller.php5
-rw-r--r--include/session.php3
-rw-r--r--include/taxonomy.php10
-rw-r--r--include/text.php62
-rw-r--r--include/widgets.php33
-rw-r--r--include/zot.php43
-rw-r--r--install/sample-lighttpd.conf (renamed from doc/install/sample-lighttpd.conf)0
-rw-r--r--install/sample-nginx.conf (renamed from doc/install/sample-nginx.conf)0
-rw-r--r--install/schema_mysql.sql29
-rw-r--r--install/schema_postgres.sql25
-rw-r--r--install/update.php121
-rw-r--r--library/cacert.pem520
-rw-r--r--library/certs/cacert.pem520
-rw-r--r--mod/admin.php14
-rw-r--r--mod/chat.php28
-rw-r--r--mod/connections.php137
-rw-r--r--mod/connedit.php11
-rw-r--r--mod/editpost.php6
-rwxr-xr-xmod/events.php118
-rw-r--r--mod/filestorage.php14
-rw-r--r--mod/help.php56
-rw-r--r--mod/import.php196
-rw-r--r--mod/import_items.php172
-rw-r--r--mod/item.php91
-rwxr-xr-xmod/like.php20
-rw-r--r--mod/linkinfo.php (renamed from mod/parse_url.php)384
-rw-r--r--mod/mitem.php9
-rw-r--r--mod/oexchange.php2
-rw-r--r--mod/openid.php2
-rw-r--r--mod/photos.php53
-rw-r--r--mod/ping.php2
-rw-r--r--mod/rpost.php2
-rw-r--r--mod/settings.php31
-rw-r--r--mod/siteinfo.php1
-rw-r--r--mod/tasks.php107
-rw-r--r--mod/thing.php137
-rw-r--r--mod/uexport.php8
-rw-r--r--mod/wall_attach.php1
-rw-r--r--mod/xrd.php2
-rw-r--r--mod/zfinger.php2
-rw-r--r--version.inc2
-rw-r--r--view/css/mod_admin.css7
-rw-r--r--view/css/mod_apps.css12
-rw-r--r--view/css/widgets.css12
-rw-r--r--view/es/messages.po1353
-rw-r--r--view/es/strings.php1127
-rw-r--r--view/js/main.js2
-rw-r--r--view/nl/strings.php13
-rw-r--r--view/pdl/mod_events.pdl3
-rw-r--r--view/pdl/mod_help.pdl3
-rw-r--r--view/theme/redbasic/css/style.css10
-rwxr-xr-xview/tpl/admin_channels.tpl2
-rwxr-xr-xview/tpl/admin_users.tpl4
-rw-r--r--view/tpl/app.tpl4
-rwxr-xr-xview/tpl/event_form.tpl9
-rwxr-xr-xview/tpl/item_import.tpl15
-rwxr-xr-xview/tpl/jot-header.tpl4
-rwxr-xr-xview/tpl/msg-header.tpl4
-rwxr-xr-xview/tpl/myapps.tpl2
-rwxr-xr-xview/tpl/profile_advanced.tpl2
-rw-r--r--view/tpl/show_thing.tpl8
-rw-r--r--view/tpl/thing_edit.tpl9
-rw-r--r--view/tpl/thing_input.tpl9
115 files changed, 4563 insertions, 2911 deletions
diff --git a/boot.php b/boot.php
index 31ec60a89..4dafde7f2 100755
--- a/boot.php
+++ b/boot.php
@@ -43,13 +43,14 @@ require_once('include/taxonomy.php');
require_once('include/identity.php');
require_once('include/Contact.php');
require_once('include/account.php');
+require_once('include/AccessList.php');
define ( 'PLATFORM_NAME', 'hubzilla' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'H');
define ( 'ZOT_REVISION', 1 );
-define ( 'DB_UPDATE_VERSION', 1145 );
+define ( 'DB_UPDATE_VERSION', 1152 );
/**
* @brief Constant with a HTML line break.
@@ -80,9 +81,8 @@ $DIRECTORY_FALLBACK_SERVERS = array(
'https://zothub.com',
'https://zotid.net',
'https://red.zottel.red',
- 'https://redmatrix.info',
+ 'https://gravizot.de',
'https://my.federated.social',
- 'https://redmatrix.nl'
);
@@ -800,7 +800,7 @@ class App {
$this->is_mobile = $mobile_detect->isMobile();
$this->is_tablet = $mobile_detect->isTablet();
- $this->head_set_icon('/images/rm-32.png');
+ $this->head_set_icon('/images/hz-32.png');
BaseObject::set_app($this);
@@ -1990,6 +1990,11 @@ function load_pdl(&$a) {
require_once('include/comanche.php');
if (! count($a->layout)) {
+
+ $arr = array('module' => $a->module, 'layout' => '');
+ call_hooks('load_pdl',$arr);
+ $s = $arr['layout'];
+
$n = 'mod_' . $a->module . '.pdl' ;
$u = comanche_get_channel_id();
if($u)
@@ -2002,6 +2007,7 @@ function load_pdl(&$a) {
$a->pdl = $s;
}
}
+
}
diff --git a/doc/Privacy.md b/doc/Privacy.md
index fd6df6315..ff5eac181 100644
--- a/doc/Privacy.md
+++ b/doc/Privacy.md
@@ -1,25 +1,28 @@
-#Privacy Policy
+Privacy Policy
+==============
+
+
+##Summary##
-##Summary
Q: Who can see my content?
-A: By default ANYBODY on the internet, UNLESS you restrict it. The $Projectname allows you to choose the privacy level you desire. Restricted content will NOT be visible to spy networks and their advertisers. It will be protected against eavesdropping by outsiders - to the best of our ability. Hub administrators with sufficient skills and patience MAY be able to eavesdrop on some private communications but they must expend effort to do so. Privacy modes exist within the $Projectname which are even resistant to eavesdropping by skilled and determined hub administrators.
+A: By default ANYBODY on the internet, UNLESS you restrict it. $Projectname allows you to choose the privacy level you desire. Restricted content will NOT be visible to "spy networks" and advertisers. It will be protected against eavesdropping by outsiders - to the best of our ability. Hub administrators with sufficient skills and patience MAY be able to eavesdrop on some private communications but they must expend effort to do so. Privacy modes exist within $Projectname which are even resistant to eavesdropping by skilled and determined hub administrators.
Q: Can my content be censored?
-A: The $Projectname (the network) CANNOT censor your content. Server and hub administrators are subject to local laws and MAY remove objectionable content from their site/hub. Anybody MAY become a hub administrator, including you; and therefore publish content which might otherwise be censored. You still MAY be subject to local laws.
+A: $Projectname (the network) CANNOT censor your content. Server and hub administrators are subject to local laws and MAY remove objectionable content from their site/hub. Anybody MAY become a hub administrator, including you; and therefore publish content which might otherwise be censored. You still MAY be subject to local laws.
##Definitions
**$Projectname**
-Otherwise referred to as "the network", the $Projectname is a collection of individual computers/servers (aka **hubs**) which connect together to form a larger cooperative network.
+Otherwise referred to as "the network", $Projectname is a collection of individual computers/servers (aka **hubs**) which connect together to form a larger cooperative network.
**hub**
-An individual computer or server connected to the $Projectname. These are provided by a **hub administrator** and may be public or private, paid or free.
+An individual computer or server connected to $Projectname. These are provided by a **hub administrator** and may be public or private, paid or free.
**hub administrator**
@@ -29,7 +32,7 @@ The system operator of an individual hub.
**Public Information**
-Any information or anything posted by you within the $Projectname MAY be public or visible to anybody on the internet. To the extent possible, the $Projectname allows you to protect content and restrict who can view it.
+Any information or anything posted by you within $Projectname MAY be public or visible to anybody on the internet. To the extent possible, $Projectname allows you to protect content and restrict who can view it.
Your profile photo, your channel name, and the location (URL or network address) of your channel are visible to anybody on the internet and privacy controls will not affect the display of these items.
@@ -37,7 +40,7 @@ You MAY additionally provide other profile information. Any information which yo
**Content**
-Content you provide (status posts, photos, files, etc.) belongs to you. The $Projectname default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). The $Projectname developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability.
+Content you provide (status posts, photos, files, etc.) belongs to you. The $Projectname default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). $Projectname developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability.
Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other $Projectname sites. It MAY appear on spy networks and internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content.
@@ -48,25 +51,27 @@ Comments to posts that were created by others and posts which are designated as
**Private Information**
-$Projectname developers will ensure that any content you provide which is designated as PRIVATE will be protected against eavesdropping - to the best of their ability. Private content is generally hidden or obscured even from hub administrators. It is also stripped from email notifications. It is difficult but NOT impossible for this content to be seen by a hub administrator. This is a side effect of the physical laws of the universe. Unfortunately, if a database needs to decrypt a post at display time, it must have the means to decrypt the post! End to end encryption is also provided and this CANNOT be seen, even by a determined administrator.
+$Projectname developers will ensure that any content you provide which is designated as PRIVATE will be protected against eavesdropping - to the best of their ability. Private content is generally hidden or obscured even from hub administrators. It is also stripped from email notifications. It is difficult but NOT impossible for this content to be seen by a hub administrator. End to end encryption is provided as an optional feature and this CANNOT be seen, even by a determined administrator.
##Identity Privacy
-Privacy for your identity is another aspect. Because you have a decentralized identity in the $Projectname, your privacy extends beyond your home hub. If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible.
+Privacy for your identity is another aspect. Because you have a decentralized identity in $Projectname, your privacy extends beyond your home hub. If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible.
A decentralized identity has a lot of advantages and gives you al lot of interesting features, but you should be aware of the fact that your identity is known by other hubs in the $Projectname network. One of those advantages is that other channels can serve you customized content and allow you to see private things (such as private photos which others wish to share with you). Because of this those channels need to know who you are. But we understand that sometimes those other channels know more from you than you might desire. For instance the plug-in Visage that can tell a channel owner the last time you visit their profile. You can easily OPT-OUT of this low level and we think, harmless tracking.
-* You can enable [Do Not Track (DNT)](http://donottrack.us/) in your web browser. We respect this new privacy policy proposal. All modern browsers support DNT. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of the $Projectname. This setting is probably enough for most people.
+* You can enable [Do Not Track (DNT)](http://donottrack.us/) in your web browser. We respect this new privacy policy proposal. All modern browsers support DNT. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of $Projectname. This setting is probably enough for most people.
+
*You can [disable publication](settings) of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case.
+
* You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set.
###Censorship
-The $Projectname is a global network which is inclusive of all religions and cultures. This does not imply that every member of the network feels the same way you do on contentious issues, and some people may be STRONGLY opposed to the content you post. In general, if you wish to post something that you know may nor be universally acceptable, the best approach is to restrict the audience using privacy controls to a small circle of friends.
+$Projectname is a global network which is inclusive of all religions and cultures. This does not imply that every member of the network feels the same way you do on contentious issues, and some people may be STRONGLY opposed to the content you post. In general, if you wish to post something that you know may nor be universally acceptable, the best approach is to restrict the audience using privacy controls to a small circle of friends.
-The $Projectname as a network provider is unable to censor content. However, hub administrators MAY censor any content which appears on their hub to comply with local laws or even personal judgement. Their decision is final. If you have issues with any hub administrator, you may move your account and postings to another site which is more in line with your expectations. Please check (periodically) the [Terms of Service](help/TermsOfService) of your hub to learn about any rules or guidelines. If your content consists of material which is illegal or may cause issues, you are STRONGLY encouraged to host your own (become a hub administrator). You may still find that your content is blocked on some hubs, but the $Projectname as a network cannot block it from being posted.
+$Projectname as a network provider is unable to censor content. However, hub administrators MAY censor any content which appears on their hub to comply with local laws or even personal judgement. Their decision is final. If you have issues with any hub administrator, you may move your account and postings to another site which is more in line with your expectations. Please check (periodically) the [Terms of Service](help/TermsOfService) of your hub to learn about any rules or guidelines. If your content consists of material which is illegal or may cause issues, you are STRONGLY encouraged to host your own (become a hub administrator). You may still find that your content is blocked on some hubs, but $Projectname as a network cannot block it from being posted.
-The $Projectname RECOMMENDS that hub administrators provide a grace period of 1-2 days between warning an account holder of content that needs to be removed and physically removing or disabling the account. This will give the content owner an opportunity to export their channel meta-data and import it to another site. In rare cases the content may be of such a nature to justify the immediate termination of the account. This is a hub decision, not a $Projectname decision.
+$Projectname RECOMMENDS that hub administrators provide a grace period of 1-2 days between warning an account holder of content that needs to be removed and physically removing or disabling the account. This will give the content owner an opportunity to export their channel meta-data and import it to another site. In rare cases the content may be of such a nature to justify the immediate termination of the account. This is a hub decision, not a $Projectname decision.
If you typically and regularly post content of an adult or offensive nature, you are STRONGLY encouraged to mark your account "NSFW" (Not Safe For Work). This will prevent the display of your profile photo in the directory except to viewers that have chosen to disable "safe mode". If your profile photo is found by directory administrators to be adult or offensive, the directory administrator MAY flag your profile photo as NSFW. There is currently no official mechanism to contest or reverse this decision, which is why you SHOULD mark your own account NSFW if it is likely to be inappropriate for general audiences.
diff --git a/doc/Widgets.md b/doc/Widgets.md
index d9df66eee..a225f5ef3 100644
--- a/doc/Widgets.md
+++ b/doc/Widgets.md
@@ -99,6 +99,14 @@ Some/many of these widgets have restrictions which may restrict the type of page
* channel_id - if not your own
<br />&nbsp;<br />
+* tasklist - provide a task or to-do list for the currently logged-in channel.
+ * args:
+ * all - display completed tasks if all is non-zero.
+<br />&nbsp;<br />
+
+* forums - provide a list of connected public forums with unseen counts for the current logged-in channel.
+<br />&nbsp;<br />
+
Creating New Widgets
====================
diff --git a/doc/admins.bb b/doc/admins.bb
new file mode 100644
index 000000000..d4e90c8a3
--- /dev/null
+++ b/doc/admins.bb
@@ -0,0 +1,12 @@
+[h2]Documentation for Hub Administrators[/h2]
+
+[h3]Administrators[/h3]
+
+[zrl=[baseurl]/help/install]Install[/zrl]
+[zrl=[baseurl]/help/red2pi]Installing $Projectname on the Raspberry Pi[/zrl]
+[zrl=[baseurl]/help/troubleshooting]Troubleshooting Tips[/zrl]
+[zrl=[baseurl]/help/hidden_configs]Tweaking $Projectname's Hidden Configurations[/zrl]
+[zrl=[baseurl]/help/faq_admins]FAQ For Admins[/zrl]
+[zrl=[baseurl]/help/service_classes]Service Classes[/zrl]
+
+
diff --git a/doc/bugs.bb b/doc/bugs.bb
new file mode 100644
index 000000000..9fefdef08
--- /dev/null
+++ b/doc/bugs.bb
@@ -0,0 +1,31 @@
+[h2]Bugs, Issues, and things that go bump in the night...[/h2]
+
+[h3]Something went wrong! Who is charge of fixing it?[/h3]
+
+This software is open source and was built by and is maintained by unpaid volunteers. So the quick answer is that nobody is in charge of fixing things. However, some of us have worked long and hard to provide a quality experience for you and don't wish to see you in discomfort because of a software issue or bug.
+
+The first thing you need to do is talk to your hub administrator - the person who runs and manages your site. They are in the unique position of having access to the internal software and database and [b]logfiles[/b] and will need to be involved in fixing your problem. Other people "on the net" can't really help with this. The first thing [b]they[/b] need to do is look at their logs and/or try to reproduce the problem. So try to be as helpful and courteous as possible in helping them look into the problem.
+
+To find your site administrator (if you don't know who they are) please look at [url=[baseurl]/siteinfo]this page[/url]. If they have not provided any contact info on that page or provided an "Impressum" there, see [url=[baseurl]/siteinfo/json]this site info summary[/url] under the heading "admin:".
+
+[h3]I'm a site administrator; what do I do?[/h3]
+
+It's your site, fix it! OK, sometimes it isn't that easy. There could be other sites involved, and the problem may not even be on your site but elsewhere in the network. Try to pin down the communication endpoints (hubs or sites) involved in the problem and contact the administrator of that site or those sites. Please try and provide an event time of when things went wrong so it can be found in the logs. Work with the other administrator(s) to find the cause of the problem. Logfiles are your friend. When something happens in the software that we didn't expect, it is nearly always logged.
+
+[h3]The white screen of death[/h3]
+
+If you get a blank white screen when doing something, this is almost always a code or syntax error. There are instructions in your .htconfig.php file for enabling syntax logging. Do this and repeat the sequence which led to the error and it should log the offending line of code. Hopefully you will be able to fix the problem with this information. When you do, please submit the fix "upstream" so that we can share the fix with the rest of the project members. This is the key benefit of using open source software - we share with each other and everybody benefits.
+
+[h3]I'm stumped. I can't figure out what is wrong.[/h3]
+
+At this point it might be worthwhile discussing the issue on one of the online forums. There may be several of these and some may be more suited to your spoken language. As a last resort, try "Channel One", which is in English.
+
+Other developers may need to find out more, so do your homework and document what is happening and everything you've tried. Don't say "I did xyz and it didn't work." That doesn't tell us anything. Tell us precisely what steps you took and what you expected the result to be, and precisely what happened as a result. If there were any error messages, don't say "there was an error message". Tell us exactly what the message said.
+
+If the project developers can't help you right away, understand that they are volunteers and may have a lot of other work and demands on their time. At this point you need to file a bug report. You will need an account on github.com to do this. So register, and then visit https://github.com/redmatrix/hubzilla/issues
+. Create an issue here and provide all the same information that you provided online. Don't leave out anything.
+
+Then you wait. If it's a high profile issue, it may get fixed quickly. But nobody is in charge of fixing bugs. If it lingers without resolution, please spend some more time investigating the problem. Ask about anything you don't understand related to the behaviour. You will learn more about how the software works and quite possibly figure out why it isn't working now. Ultimately it is somebody in the community who is going to fix this and you are a member of the community; and this is how the open source process works.
+
+And just a word of warning. If you file 10 or 20 or 40 bugs on your first day looking at the project and without exploring how the software was supposed to work in the first place, you will probably be ignored. This is a public project and we are unfortunately frequented by "whingers" who like to waste our time complaining about stuff. Don't be one of them. The more helpful and courteous you are, the more helpful and courteous we will be in return. This applies to everything you do in life and is only mentioned here as a reminder.
+ \ No newline at end of file
diff --git a/doc/credits.bb b/doc/credits.bb
index 5459c7d7a..200f1fc85 100644
--- a/doc/credits.bb
+++ b/doc/credits.bb
@@ -1,5 +1,9 @@
[b]Credits[/b]
+Thanks to all who have helped and contributed to the project and its predecessors over the years. It is possible we missed in your name but this is unintentional. We also thank the community and its members for providing valuable input and without whom this entire effort would be meaningless.
+
+It is also worth acknowledging the contributions and solutions to problems which arose from discussions amongst members and developers of other somewhat related and competing projects; even if we have had our occasional disagreements.
+
Mike Macgirvin
Fabio Comuni
Simon L'nu
@@ -62,6 +66,7 @@ tonnerkiller
Antoine G
Christian Drechsler
Ludovic Grossard
+RedmatrixCanada
Stanislav Lechev [0xAF]
aweiher
bufalo1973
@@ -73,3 +78,5 @@ mycocham
ndurchx
pafcu
Simó Albert i Beltran
+Manuel Reva
+Manuel Jiménez Friaza
diff --git a/doc/develop.bb b/doc/develop.bb
new file mode 100644
index 000000000..c46447cce
--- /dev/null
+++ b/doc/develop.bb
@@ -0,0 +1,34 @@
+[h2]Documentation for Developers[/h2]
+
+[h3]Technical Documentation[/h3]
+[zrl=[baseurl]/help/Zot---A-High-Level-Overview]A high level overview of Zot[/zrl]
+[zrl=[baseurl]/help/zot]An introduction to Zot[/zrl]
+[zrl=[baseurl]/help/zot_structures]Zot Stuctures[/zrl]
+[zrl=[baseurl]/help/comanche]Comanche Page Descriptions[/zrl]
+[zrl=[baseurl]/help/Creating-Templates]Creating Comanche Templates[/zrl]
+[zrl=[baseurl]/help/Widgets]Widgets[/zrl]
+[zrl=[baseurl]/help/plugins]Plugins[/zrl]
+[zrl=[baseurl]/help/doco]Contributing Documentation[/zrl]
+[zrl=[baseurl]/help/DerivedTheme1]Creating Derivative Themes[/zrl]
+[zrl=[baseurl]/help/schema_development]Schemas[/zrl]
+[zrl=[baseurl]/help/Translations]Translations[/zrl]
+[zrl=[baseurl]/help/developers]Developers[/zrl]
+[zrl=[baseurl]/help/intro_for_developers]Intro for Developers[/zrl]
+[zrl=[baseurl]/help/database]Database schema documantation[/zrl]
+[zrl=[baseurl]/help/api_functions]API functions[/zrl]
+[zrl=[baseurl]/help/api_posting]Posting to the red# using the API[/zrl]
+[zrl=[baseurl]/help/developer_function_primer]Red Functions 101[/zrl]
+[zrl=[baseurl]/doc/html/]Code Reference (Doxygen generated - sets cookies)[/zrl]
+[zrl=[baseurl]/help/to_do_doco]To-Do list for the Red Documentation Project[/zrl]
+[zrl=[baseurl]/help/to_do_code]To-Do list for Developers[/zrl]
+[zrl=[baseurl]/help/roadmap]Version 3 roadmap[/zrl]
+[zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl]
+[zrl=[baseurl]/help/dev_beginner]Step-for-step manual for beginning developers[/zrl]
+
+[h3]Frequently Asked Questions For Developers[/h3]
+[zrl=[baseurl]/help/faq_developers]FAQ For Developers[/zrl]
+
+[h3]External Resources[/h3]
+
+[url=https://zothub.com/channel/one]Development Channel[/url]
+[url=https://federated.social/channel/postgres]Postgres-specific $Projectname Admin Support Channel[/url]
diff --git a/doc/features.bb b/doc/features.bb
index e8d1cd687..cb194966e 100644
--- a/doc/features.bb
+++ b/doc/features.bb
@@ -33,6 +33,10 @@ At this point, the $Projectname [i]Affinity Slider[/i] tool, which usually appea
The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness.
+[b]Connection Filtering[/b]
+
+You have the ability to control precisely what appears in your stream using the optional "Connection Filter". When enabled, the Connection Editor provides inputs for selecting criteria which needs to be matched in order to include or exclude a specific post from a specific channel. Once a post has been allowed, all comments to that post are allowed regardless of whether they match the selection criteria. You may select words that if present block the post or ensure it is included in your stream. Regular expressions may be used for even finer control, as well as hashtags or even the detected language of the post.
+
[b]Access Control Lists[/b]
When sharing content, members have the option of restricting who sees the content. By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names.
@@ -56,7 +60,7 @@ Store photos in albums. All your photos may be protected by Access Control Lists
[b]Events Calendar[/b]
-Create and manage events, which may also be protected with Access Control Lists. Events can be exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly.
+Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly.
[b]Chatrooms[/b]
diff --git a/doc/general.bb b/doc/general.bb
new file mode 100644
index 000000000..c9c2501e5
--- /dev/null
+++ b/doc/general.bb
@@ -0,0 +1,20 @@
+
+[h2]Project/Site Information[/h2]
+
+[zrl=[baseurl]/help/Privacy]Privacy Policy[/zrl]
+
+[zrl=[baseurl]/help/history]$Projectname history[/zrl]
+
+[h3]External Resources[/h3]
+[zrl=[baseurl]/help/external-resource-links]External Resource Links[/zrl]
+
+[url=https://github.com/redmatrix/hubzilla]Main Website[/url]
+[url=https://github.com/redmatrix/hubzilla-addons]Addon Website[/url]
+
+[url=[baseurl]/help/credits]$Projectname Credits[/url]
+
+[h3]About This $Projectname Hub[/h3]
+[zrl=[baseurl]/help/TermsOfService]Terms of Service For This Hub[/zrl]
+[zrl=[baseurl]/siteinfo]Hub Information (/siteinfo)[/zrl]
+[zrl=[baseurl]/siteinfo/json]Detailed Technical Hub Information in JSON format(/siteinfo/json)[/zrl]
+
diff --git a/doc/history.md b/doc/history.md
index 32917712f..7360c6b22 100644
--- a/doc/history.md
+++ b/doc/history.md
@@ -1,7 +1,7 @@
-Redmatrix History
-=================
+Hubzilla History
+================
-Redmatrix is a collaborative effort by the Redmatrix community and based on work introduced in Friendica by the Friendica community. The core design, the project mission, and software base itself were created/written primarily by Mike Macgirvin and represent the culmination of over a decade of software design using variations of this platform and an evolving vision of the role of communication software in our lives. Many others have contributed to this work, both conceptually and in terms of actual code (way too many to list individually).
+Hubzilla is a community developed open source project based on work introduced in Friendica by the Friendica community and which previously was named Redmatrix. The core design, the project mission, and software base itself were created/written primarily by Mike Macgirvin and represent the culmination of over a decade of software design using variations of this platform and an evolving vision of the role of communication software in our lives. Many others have contributed to this work, both conceptually and in terms of actual code (far too many to list individually).
##Mike Macgirvin -- Biography
@@ -10,9 +10,9 @@ Mike Macgirvin is an American software engineer now living in Australia. He spen
During a layoff round, Mike was let go from America Online in August 2001 and purchased a music store in Mountain View, California later to be known as "Sonica Music Company". Opening a retail store for non-essential goods at the beginning of a prolonged economic downturn was in retrospect probably not the wisest career move. Sonica eventually folded; in late 2006. Mike returned to working on software and systems support full-time and was employed briefly at Symantec before moving to Australia in early 2007. He currently lives on a farm "out in the middle of nowhere" and is employed as a Computer Systems Officer at the University of Wollongong.
-##Redmatrix - The Early Years
+##Hubzilla - The Early Years
-The software which went into creating Redmatrix has been through three distinct historical phases. It began in 2003 when Mike Macgirvin was looking for a content management system to power the website for his music store and found the available solutions to be lacking in various respects. The project was born as the "PurpleHaze weblog" under the nom de plume "Nerdware Communications". It was a multi-user PHP/MySQL CMS which provided blogs, forums, photo albums, events and more. Initially it provided the basis for a social community and shopping for customers of the store, but was also linked to Mike's personal weblog running on another domain. The distinguishing characteristic of this software was the ability for so-called "normal users" to re-assemble the components and choose different content feeds - and in essence create their own personal "multi-user CMS" as a view. Their custom view was able to communicate with anybody else that used the system, but could be partitioned so that adult sites and motorcycle enthusiast sites would not be visible to each other and not clash (or in this case Mike's personal website and the music store website). This software was developed primarily from 2003 until 2008.
+The software which went into creating Hubzilla has been through several distinct historical phases. It began in 2003 when Mike Macgirvin was looking for a content management system to power the website for his music store and found the available solutions to be lacking in various respects. The project was born as the "PurpleHaze weblog" under the nom de plume "Nerdware Communications". It was a multi-user PHP/MySQL CMS which provided blogs, forums, photo albums, events and more. Initially it provided the basis for a social community and shopping for customers of the store, but was also linked to Mike's personal weblog running on another domain. The distinguishing characteristic of this software was the ability for so-called "normal users" to re-assemble the components and choose different content feeds - and in essence create their own personal "multi-user CMS" as a view. Their custom view was able to communicate with anybody else that used the system, but could be partitioned so that adult sites and motorcycle enthusiast sites would not be visible to each other and not clash (or in this case Mike's personal website and the music store website). This software was developed primarily from 2003 until 2008.
In 2006 this software was used as the prototype for Symantec's "safeweb" reputation and community site. It was developed and enhanced until about 2008. A rewrite took place in 2008 named "Reflection" but work stagnated as the community dwindled. The need for content management systems and communications software dropped dramatically during this time as humans flocked to the new social aggregrators - Facebook and Twitter.
@@ -44,7 +44,13 @@ The concept of identity-aware content was alien to anything that existed previou
Over time a few federation components re-emerged. The ability to view RSS feeds was important to many people. Diaspora never really managed to re-write their protocol, so that was re-implemented and allowed Redmatrix to connect with Diaspora and Friendica again (Friendica still had their Diaspora protocol intact, so this was the most common language now remaining on the free web - despite its faults). Diaspora communications aren't able to make use of the advanced identity features, but they work for basic communications.
-Mike stepped down as active coordinator for the project in early 2015.
+##Hubzilla
+
+The Redmatrix project reached a point of stagnation in early 2015 as network growth leveled and active interest in the project declined. Mike met with several external high tech developers and innovators in a round of discussions that were called "Zotopia" in early 2015 to perform an independent review of the project and try to identify what had gone wrong and plan a route forward. The basic consensus is that the project suffered from bad marketing decisions which were compounded by mixed messages about the project goals and target audience. A "rival" project (Diaspora) was marketing itself as a Facebook competitor, but after some long discussions it was determined that Redmatrix wasn't a Facebook competitor at all, and too much emphasis was being placed on the "social network" and "anti-Facebook" features. It was a novel decentralisation platform with distributed identity and permissions, and as was pointed out, the "end user" was the wrong target market. These marketing mistakes were now identified with the project name and random sampling of various "customers" showed that none of them really had a clue about the software goals or target market segment. The mixed messages were associated with the brand identity and this was a problem.
+
+The Redmatrix community held a vote and the project was renamed "Hubzilla", with a renewed identity and focus - to provide software for creating and ultimately linking together unrelated community websites or "hubs" into a global community. This is in fact what we were building all along, but didn't fully recognise it. The target audience for this software as it turns out is not the members or end users, but software integrators and digital community architects and builders. These in turn will be responsible for marketing their own product (their respective online communities) to end-users or members. The software solves a real world need of linking isolated and "walled garden" community sites together into a larger cooperative. The transition from Redmatrix to Hubzilla was complex and has taken several months as we consolidated the marketing and media assets to deliver a consistent message. It is still ongoing at this time, and should be completed in Q4 2015.
+
+Mike stepped down as active coordinator for the project in early 2015 and turned management over to the community. He remains active as a Hubzilla developer.
#include doc/macros/main_footer.bb;
diff --git a/doc/main.bb b/doc/main.bb
index 6998ee90e..44f227c16 100644
--- a/doc/main.bb
+++ b/doc/main.bb
@@ -10,77 +10,4 @@ Think of standalone family communication platforms, distributed online communiti
[zrl=[baseurl]/help/what_is_zot][b]Got Zot? Well, you should.[/b][/zrl]
Zot is the great new communicaton protocol invented especially for $Projectname. As a member you are no longer bound to a single site or hub thanks to "Nomadic Identities". Migrate easily to another server and keep your contacts intact, or clone it and run the same channel on several servers. Just in case one of them might shut down, you don't lose out. Plus once you are inside $Projectname there is no need for you to authenticate twice, even when accessing another $Projectname site. Zot is what sets $Projectname apart.
-[h3]Getting Started[/h3]
-[zrl=[baseurl]/help/Privacy]Privacy Policy[/zrl]
-[zrl=[baseurl]/help/registration]Account Registration[/zrl]
-[zrl=[baseurl]/help/accounts_profiles_channels_basics]You at the $Projectname: accounts, profiles and channels in short[/zrl]
-[zrl=[baseurl]/help/profiles]Profiles[/zrl]
-[zrl=[baseurl]/help/channels]Channels[/zrl]
-[zrl=[baseurl]/help/roles]Permission roles and Channel types[/zrl]
-[zrl=[baseurl]/help/first-post]Your first posting[/zrl]
-[zrl=[baseurl]/help/connecting_to_channels]Connecting To Other Channels[/zrl]
-[zrl=[baseurl]/help/permissions]Permissions And Encryption: You Are In Control[/zrl]
-[zrl=[baseurl]/help/cloud]Cloud Storage[/zrl]
-[zrl=[baseurl]/help/remove_account]Remove Channel or Account[/zrl]
-[h3]Members Help[/h3]
-[zrl=[baseurl]/help/tags_and_mentions]Tags and Mentions[/zrl]
-[zrl=[baseurl]/help/webpages]Web Pages[/zrl]
-[zrl=[baseurl]/help/bbcode]BBcode reference for posts and comments[/zrl]
-[zrl=[baseurl]/help/checking_account_quota_usage]Checking Account Quota Usage[/zrl]
-[zrl=[baseurl]/help/cloud_desktop_clients]Cloud Desktop Clients[/zrl]
-[zrl=[baseurl]/help/AdvancedSearch]Advanced Directory Search[/zrl]
-[zrl=[baseurl]/help/addons]Help With Addons[/zrl]
-[zrl=[baseurl]/help/diaspora_compat]Diaspora Communications Compatibility (Diaspora and Friendica)[/zrl]
-[zrl=[baseurl]/help/faq_members]FAQ For Members[/zrl]
-
-[h3]Administrators Help[/h3]
-[zrl=[baseurl]/help/install]Install[/zrl]
-[zrl=[baseurl]/help/red2pi]Installing Red on the Raspberry Pi[/zrl]
-[zrl=[baseurl]/help/troubleshooting]Troubleshooting Tips[/zrl]
-[zrl=[baseurl]/help/hidden_configs]Tweaking $Projectname's Hidden Configurations[/zrl]
-[zrl=[baseurl]/help/faq_admins]FAQ For Admins[/zrl]
-[zrl=[baseurl]/help/service_classes]Service Classes[/zrl]
-
-[h3]Technical Documentation[/h3]
-[zrl=[baseurl]/help/history]$Projectname history[/zrl]
-[zrl=[baseurl]/help/Zot---A-High-Level-Overview]A high level overview of Zot[/zrl]
-[zrl=[baseurl]/help/zot]An introduction to Zot[/zrl]
-[zrl=[baseurl]/help/zot_structures]Zot Stuctures[/zrl]
-[zrl=[baseurl]/help/comanche]Comanche Page Descriptions[/zrl]
-[zrl=[baseurl]/help/Creating-Templates]Creating Comanche Templates[/zrl]
-[zrl=[baseurl]/help/Widgets]Widgets[/zrl]
-[zrl=[baseurl]/help/plugins]Plugins[/zrl]
-[zrl=[baseurl]/help/doco]Contributing Documentation[/zrl]
-[zrl=[baseurl]/help/DerivedTheme1]Creating Derivative Themes[/zrl]
-[zrl=[baseurl]/help/schema_development]Schemas[/zrl]
-[zrl=[baseurl]/help/Translations]Translations[/zrl]
-[zrl=[baseurl]/help/developers]Developers[/zrl]
-[zrl=[baseurl]/help/intro_for_developers]Intro for Developers[/zrl]
-[zrl=[baseurl]/help/database]Database schema documantation[/zrl]
-[zrl=[baseurl]/help/api_functions]API functions[/zrl]
-[zrl=[baseurl]/help/api_posting]Posting to the red# using the API[/zrl]
-[zrl=[baseurl]/help/developer_function_primer]Red Functions 101[/zrl]
-[zrl=[baseurl]/doc/html/]Code Reference (Doxygen generated - sets cookies)[/zrl]
-[zrl=[baseurl]/help/to_do_doco]To-Do list for the Red Documentation Project[/zrl]
-[zrl=[baseurl]/help/to_do_code]To-Do list for Developers[/zrl]
-[zrl=[baseurl]/help/roadmap]Version 3 roadmap[/zrl]
-[zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl]
-[zrl=[baseurl]/help/dev_beginner]Step-for-step manual for beginning developers[/zrl]
-
-[h3]Frequently Asked Questions For Developers[/h3]
-[zrl=[baseurl]/help/faq_developers]FAQ For Developers[/zrl]
-
-[h3]External Resources[/h3]
-[zrl=[baseurl]/help/external-resource-links]External Resource Links[/zrl]
-[url=https://github.com/redmatrix/hubzilla]Main Website[/url]
-[url=https://github.com/redmatrix/hubzilla-addons]Addon Website[/url]
-[url=https://zothub.com/channel/one]Development Channel[/url]
-[url=https://federated.social/channel/postgres]Postgres-specific $Projectname Admin Support Channel[/url]
-
-[url=[baseurl]/help/credits]$Projectname Credits[/url]
-
-[h3]About This $Projectname Hub[/h3]
-[zrl=[baseurl]/help/TermsOfService]Terms of Service For This Hub[/zrl]
-[zrl=[baseurl]/siteinfo]Hub Information (/siteinfo)[/zrl]
-[zrl=[baseurl]/siteinfo/json]Detailed Technical Hub Information in JSON format(/siteinfo/json)[/zrl]
diff --git a/doc/members.bb b/doc/members.bb
new file mode 100644
index 000000000..13339ef2d
--- /dev/null
+++ b/doc/members.bb
@@ -0,0 +1,25 @@
+[h2]Documentation for Hub Members[/h2]
+
+[h3]Getting Started[/h3]
+[zrl=[baseurl]/help/registration]Account Registration[/zrl]
+[zrl=[baseurl]/help/accounts_profiles_channels_basics]You at $Projectname: accounts, profiles and channels in short[/zrl]
+[zrl=[baseurl]/help/profiles]Profiles[/zrl]
+[zrl=[baseurl]/help/channels]Channels[/zrl]
+[zrl=[baseurl]/help/roles]Permission roles and Channel types[/zrl]
+[zrl=[baseurl]/help/first-post]Your first posting[/zrl]
+[zrl=[baseurl]/help/connecting_to_channels]Connecting To Other Channels[/zrl]
+[zrl=[baseurl]/help/permissions]Permissions And Encryption: You Are In Control[/zrl]
+[zrl=[baseurl]/help/cloud]Cloud Storage[/zrl]
+[zrl=[baseurl]/help/remove_account]Remove Channel or Account[/zrl]
+
+[h3]Members Help[/h3]
+[zrl=[baseurl]/help/tags_and_mentions]Tags and Mentions[/zrl]
+[zrl=[baseurl]/help/webpages]Web Pages[/zrl]
+[zrl=[baseurl]/help/bbcode]BBcode reference for posts and comments[/zrl]
+[zrl=[baseurl]/help/checking_account_quota_usage]Checking Account Quota Usage[/zrl]
+[zrl=[baseurl]/help/cloud_desktop_clients]Cloud Desktop Clients[/zrl]
+[zrl=[baseurl]/help/AdvancedSearch]Advanced Directory Search[/zrl]
+[zrl=[baseurl]/help/addons]Help With Addons[/zrl]
+[zrl=[baseurl]/help/diaspora_compat]Diaspora Communications Compatibility (Diaspora and Friendica)[/zrl]
+[zrl=[baseurl]/help/faq_members]FAQ For Members[/zrl]
+[zrl=[baseurl]/help/bugs]Bugs, Issues, and things that go bump in the night...[/zrl]
diff --git a/doc/to_do_code.bb b/doc/to_do_code.bb
index 04974e012..94421bab0 100644
--- a/doc/to_do_code.bb
+++ b/doc/to_do_code.bb
@@ -7,12 +7,14 @@ We need much more than this, but here are areas where developers can help. Pleas
[li](done) forum widget with unread counts (requires the DB schema changes from v3/hubzilla to be viable)[/li]
[li]Create bug tracker module[/li]
[li]translation plugins - moses or apertium[/li]
+[li]plugins - provide 'disable' which is softer than 'uninstall' for those plugins which create additional DB tables[/li]
[li]Infinite scroll improvements (i.e. embedded page links) see http://scrollsample.appspot.com/items [/li]
[li]Finish the anti-spam bayesian engine[/li]
[li]implement an email permission denied bounce message from the sys channel[/li]
[li]provide a way for xchans with a certain network type to upgrade (unknown to rss, rss to statusnet, friendica-over-diaspora to friendica, for instance) based on new knowledge and/or redmatrix ability[/li]
[li](done - HZ) If DAV folders exist, add an option to the Settings page to set a default folder for attachment uploads.[/li]
[li]Integrate the &quot;open site&quot; list with the register page[/li]
+[li]Support comments and member notes on documentation pages (to achieve an effect similar to php.net)[/li]
[li]implement oembed provider interface[/li]
[li]refactor the oembed client interface so that we can safely sandbox remote content[/li]
[li]Many modern social apps now have both a profile photo and a "cover photo". Add support for this. [/li]
diff --git a/doc/to_do_doco.bb b/doc/to_do_doco.bb
deleted file mode 100644
index d0f595b3e..000000000
--- a/doc/to_do_doco.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-[b]Documentation To-Do List[/b]
-
-[b]Documentation we need to write[/b]
-
- Database schema detailed descriptions
-
- Complete plugin hook documentation
-
- API documentation
-
- Function and code documentation (doxygen)
-
- New Member guide
-
- &quot;Extra Feature&quot; reference, description of each
-
- Detailed Personal Settings Documentation
-
- Administration Guide (post-install)
-
- Administration Guide (pre-install)
-
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
diff --git a/images/default_profile_photos/alpha/300.png b/images/default_profile_photos/alpha/300.png
index 17211ee27..9e36606b8 100644
--- a/images/default_profile_photos/alpha/300.png
+++ b/images/default_profile_photos/alpha/300.png
Binary files differ
diff --git a/images/default_profile_photos/arrow_avatar/300.png b/images/default_profile_photos/arrow_avatar/300.png
new file mode 100644
index 000000000..a13221ceb
--- /dev/null
+++ b/images/default_profile_photos/arrow_avatar/300.png
Binary files differ
diff --git a/images/default_profile_photos/arrow_avatar/48.png b/images/default_profile_photos/arrow_avatar/48.png
new file mode 100644
index 000000000..aaa86c152
--- /dev/null
+++ b/images/default_profile_photos/arrow_avatar/48.png
Binary files differ
diff --git a/images/default_profile_photos/arrow_avatar/80.png b/images/default_profile_photos/arrow_avatar/80.png
new file mode 100644
index 000000000..cf48c584a
--- /dev/null
+++ b/images/default_profile_photos/arrow_avatar/80.png
Binary files differ
diff --git a/images/default_profile_photos/black_avatar_1/300.png b/images/default_profile_photos/black_avatar_1/300.png
index bc5b19793..0ed1fe763 100644
--- a/images/default_profile_photos/black_avatar_1/300.png
+++ b/images/default_profile_photos/black_avatar_1/300.png
Binary files differ
diff --git a/images/default_profile_photos/black_avatar_2/300.png b/images/default_profile_photos/black_avatar_2/300.png
index 8ff3cbd4c..c86490d7c 100644
--- a/images/default_profile_photos/black_avatar_2/300.png
+++ b/images/default_profile_photos/black_avatar_2/300.png
Binary files differ
diff --git a/images/default_profile_photos/blank/300.jpg b/images/default_profile_photos/blank/300.jpg
index 4024d6e88..6d039cd05 100644
--- a/images/default_profile_photos/blank/300.jpg
+++ b/images/default_profile_photos/blank/300.jpg
Binary files differ
diff --git a/images/default_profile_photos/blank/300.png b/images/default_profile_photos/blank/300.png
index 1edb25b76..dda9daa5e 100644
--- a/images/default_profile_photos/blank/300.png
+++ b/images/default_profile_photos/blank/300.png
Binary files differ
diff --git a/images/default_profile_photos/rainbow_man/300.jpg b/images/default_profile_photos/rainbow_man/300.jpg
index fc0ec3d77..d1d35c7d2 100644
--- a/images/default_profile_photos/rainbow_man/300.jpg
+++ b/images/default_profile_photos/rainbow_man/300.jpg
Binary files differ
diff --git a/images/default_profile_photos/rainbow_man/300.png b/images/default_profile_photos/rainbow_man/300.png
index 30a7e0ffb..b8541ef48 100644
--- a/images/default_profile_photos/rainbow_man/300.png
+++ b/images/default_profile_photos/rainbow_man/300.png
Binary files differ
diff --git a/images/default_profile_photos/rainbow_man_trans/300.png b/images/default_profile_photos/rainbow_man_trans/300.png
index a0a236841..b715f67ea 100644
--- a/images/default_profile_photos/rainbow_man_trans/300.png
+++ b/images/default_profile_photos/rainbow_man_trans/300.png
Binary files differ
diff --git a/images/default_profile_photos/red_avatar/300.png b/images/default_profile_photos/red_avatar/300.png
index 31d39a41a..9188aa08c 100644
--- a/images/default_profile_photos/red_avatar/300.png
+++ b/images/default_profile_photos/red_avatar/300.png
Binary files differ
diff --git a/images/default_profile_photos/red_koala/300.jpg b/images/default_profile_photos/red_koala/300.jpg
index e49343b1d..b9c8ffeaf 100644
--- a/images/default_profile_photos/red_koala/300.jpg
+++ b/images/default_profile_photos/red_koala/300.jpg
Binary files differ
diff --git a/images/default_profile_photos/red_koala/300.png b/images/default_profile_photos/red_koala/300.png
index ee4a701d9..8eab5e4b8 100644
--- a/images/default_profile_photos/red_koala/300.png
+++ b/images/default_profile_photos/red_koala/300.png
Binary files differ
diff --git a/images/default_profile_photos/red_koala_trans/300.png b/images/default_profile_photos/red_koala_trans/300.png
index 4e51c80e2..a76b2fffe 100644
--- a/images/default_profile_photos/red_koala_trans/300.png
+++ b/images/default_profile_photos/red_koala_trans/300.png
Binary files differ
diff --git a/images/default_profile_photos/redmatrix_logo_smiley/300.png b/images/default_profile_photos/redmatrix_logo_smiley/300.png
index 7299c4494..d0b18ea80 100644
--- a/images/default_profile_photos/redmatrix_logo_smiley/300.png
+++ b/images/default_profile_photos/redmatrix_logo_smiley/300.png
Binary files differ
diff --git a/images/hz-16.png b/images/hz-16.png
new file mode 100644
index 000000000..b88b6aa57
--- /dev/null
+++ b/images/hz-16.png
Binary files differ
diff --git a/images/hz-32.png b/images/hz-32.png
new file mode 100644
index 000000000..79c728a83
--- /dev/null
+++ b/images/hz-32.png
Binary files differ
diff --git a/images/hz-64.png b/images/hz-64.png
new file mode 100644
index 000000000..bff03d8da
--- /dev/null
+++ b/images/hz-64.png
Binary files differ
diff --git a/include/AccessList.php b/include/AccessList.php
new file mode 100644
index 000000000..43f1de111
--- /dev/null
+++ b/include/AccessList.php
@@ -0,0 +1,148 @@
+<?php
+
+
+class AccessList {
+
+ private $allow_cid;
+ private $allow_gid;
+ private $deny_cid;
+ private $deny_gid;
+
+ /* indicates if we are using the default constructor values or values that have been set explicitly. */
+
+ private $explicit;
+
+ function __construct($channel) {
+
+ if($channel) {
+ $this->allow_cid = $channel['channel_allow_cid'];
+ $this->allow_gid = $channel['channel_allow_gid'];
+ $this->deny_cid = $channel['channel_deny_cid'];
+ $this->deny_gid = $channel['channel_deny_gid'];
+ }
+ else {
+ $this->allow_cid = '';
+ $this->allow_gid = '';
+ $this->deny_cid = '';
+ $this->deny_gid = '';
+ }
+
+ $this->explicit = false;
+ }
+
+ function get_explicit() {
+ return $this->explicit;
+ }
+
+ /**
+ * Set AccessList from strings such as those in already
+ * existing stored data items
+ */
+
+ function set($arr,$explicit = true) {
+ $this->allow_cid = $arr['allow_cid'];
+ $this->allow_gid = $arr['allow_gid'];
+ $this->deny_cid = $arr['deny_cid'];
+ $this->deny_gid = $arr['deny_gid'];
+
+ $this->explicit = $explicit;
+ }
+
+ /**
+ * return an array consisting of the current
+ * access list components where the elements
+ * are directly storable.
+ */
+
+ function get() {
+ return array(
+ 'allow_cid' => $this->allow_cid,
+ 'allow_gid' => $this->allow_gid,
+ 'deny_cid' => $this->deny_cid,
+ 'deny_gid' => $this->deny_gid,
+ );
+ }
+
+ /**
+ * Set AccessList from arrays, such as those provided by
+ * acl_selector(). For convenience, a string (or non-array) input is
+ * assumed to be a comma-separated list and auto-converted into an array.
+ */
+
+ function set_from_array($arr,$explicit = true) {
+ $this->allow_cid = perms2str((is_array($arr['contact_allow']))
+ ? $arr['contact_allow'] : explode(',',$arr['contact_allow']));
+ $this->allow_gid = perms2str((is_array($arr['group_allow']))
+ ? $arr['group_allow'] : explode(',',$arr['group_allow']));
+ $this->deny_cid = perms2str((is_array($arr['contact_deny']))
+ ? $arr['contact_deny'] : explode(',',$arr['contact_deny']));
+ $this->deny_gid = perms2str((is_array($arr['group_deny']))
+ ? $arr['group_deny'] : explode(',',$arr['group_deny']));
+
+ $this->explicit = $explicit;
+ }
+
+ function is_private() {
+ return (($this->allow_cid || $this->allow_gid || $this->deny_cid || $this->deny_gid) ? true : false);
+ }
+
+}
+
+/**
+ * @brief Used to wrap ACL elements in angle brackets for storage.
+ *
+ * @param[in,out] array &$item
+ */
+function sanitise_acl(&$item) {
+ if (strlen($item))
+ $item = '<' . notags(trim($item)) . '>';
+ else
+ unset($item);
+}
+
+/**
+ * @brief Convert an ACL array to a storable string.
+ *
+ * @param array $p
+ * @return array
+ */
+function perms2str($p) {
+ $ret = '';
+
+ if (is_array($p))
+ $tmp = $p;
+ else
+ $tmp = explode(',', $p);
+
+ if (is_array($tmp)) {
+ array_walk($tmp, 'sanitise_acl');
+ $ret = implode('', $tmp);
+ }
+
+ return $ret;
+}
+
+
+/**
+ * @brief Turn user/group ACLs stored as angle bracketed text into arrays.
+ *
+ * turn string array of angle-bracketed elements into string array
+ * e.g. "<123xyz><246qyo><sxo33e>" => array(123xyz,246qyo,sxo33e);
+ *
+ * @param string $s
+ * @return array
+ */
+function expand_acl($s) {
+ $ret = array();
+
+ if(strlen($s)) {
+ $t = str_replace('<','',$s);
+ $a = explode('>',$t);
+ foreach($a as $aa) {
+ if($aa)
+ $ret[] = $aa;
+ }
+ }
+
+ return $ret;
+}
diff --git a/include/Contact.php b/include/Contact.php
index 6b5f9388c..008574d8f 100644
--- a/include/Contact.php
+++ b/include/Contact.php
@@ -174,9 +174,6 @@ function abook_toggle_flag($abook,$flag) {
);
}
- $a = get_app();
- if($a->data['abook'])
- $a->data['abook']['abook_flags'] = $a->data['abook']['abook_flags'] ^ $flag;
return $r;
}
diff --git a/include/api.php b/include/api.php
index e72344ff7..6d71cfc33 100644
--- a/include/api.php
+++ b/include/api.php
@@ -631,6 +631,47 @@ require_once('include/items.php');
}
api_register_func('api/red/photos','api_photos', true);
+ function api_photo_detail(&$a,$type) {
+ if (api_user()===false) return false;
+ if(! $_REQUEST['photo_id']) return false;
+ $scale = ((array_key_exists('scale',$_REQUEST)) ? intval($_REQUEST['scale']) : 0);
+ $r = q("select * from photo where uid = %d and resource_id = '%s' and scale = %d limit 1",
+ intval(local_channel()),
+ dbesc($_REQUEST['photo_id']),
+ intval($scale)
+ );
+ if($r) {
+ $data = dbunescbin($r[0]['data']);
+ if(array_key_exists('os_storage',$r[0]) && intval($r[0]['os_storage']))
+ $data = file_get_contents($data);
+ $r[0]['data'] = base64_encode($data);
+ $ret = array('photo' => $r[0]);
+ $i = q("select id from item where uid = %d and resource_type = 'photo' and resource_id = '%s' limit 1",
+ intval(local_channel()),
+ dbesc($_REQUEST['photo_id'])
+ );
+ if($i) {
+ $ii = q("select * from item where parent = %d order by id",
+ intval($i[0]['id'])
+ );
+ if($ii) {
+ xchan_query($ii,true,0);
+ $ii = fetch_post_tags($ii,true);
+ if($ii) {
+ $ret['item'] = array();
+ foreach($ii as $iii)
+ $ret['item'][] = encode_item($iii,true);
+ }
+ }
+ }
+
+ json_return_and_die($ret);
+ }
+ killme();
+ }
+
+ api_register_func('api/red/photo', 'api_photo_detail', true);
+
function api_group_members(&$a,$type) {
if(api_user() === false)
@@ -686,7 +727,7 @@ require_once('include/items.php');
api_register_func('api/red/xchan','api_red_xchan',true);
- function api_statuses_mediap(&$a, $type) {
+ function api_statuses_mediap(&$a, $type) {
if (api_user() === false) {
logger('api_statuses_update: no user');
return false;
@@ -696,7 +737,7 @@ require_once('include/items.php');
$_REQUEST['type'] = 'wall';
$_REQUEST['profile_uid'] = api_user();
$_REQUEST['api_source'] = true;
-
+
$txt = requestdata('status');
require_once('library/HTMLPurifier.auto.php');
@@ -711,13 +752,13 @@ require_once('include/items.php');
}
$txt = html2bbcode($txt);
- $a->argv[1] = $user_info['screen_name'];
+ $a->argv[1] = $user_info['screen_name'];
$_REQUEST['silent']='1'; //tell wall_upload function to return img info instead of echo
$_FILES['userfile'] = $_FILES['media'];
require_once('mod/wall_attach.php');
$posted = wall_attach_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".$posted;
require_once('mod/item.php');
@@ -1178,7 +1219,7 @@ require_once('include/items.php');
and uid = " . $sys['channel_id'] . "
$sql_extra
AND id > %d group by mid
- order by received desc LIMIT %d OFFSET %d ",
+ order by received desc LIMIT %d OFFSET %d ",
intval($since_id),
intval($count),
intval($start)
@@ -1392,17 +1433,17 @@ require_once('include/items.php');
$diasp_url = str_replace('/channel/','/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 . ']%'))
- );
+ $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 ($max_id > 0)
$sql_extra .= ' AND `item`.`id` <= '.intval($max_id);
@@ -1496,10 +1537,10 @@ require_once('include/items.php');
// );
$arr = array(
- 'uid' => api_user(),
- 'since_id' => $since_id,
- 'start' => $start,
- 'records' => $count);
+ 'uid' => api_user(),
+ 'since_id' => $since_id,
+ 'start' => $start,
+ 'records' => $count);
if ($user_info['self']==1)
$arr['wall'] = 1;
@@ -1508,7 +1549,7 @@ require_once('include/items.php');
$r = items_fetch($arr,get_app()->get_channel(),get_observer_hash());
-
+
$ret = api_format_items($r,$user_info);
@@ -1526,32 +1567,32 @@ require_once('include/items.php');
- /**
- * Star/unstar an item
- * param: id : id of the item
- *
- * api v1 : https://web.archive.org/web/20131019055350/https://dev.twitter.com/docs/api/1/post/favorites/create/%3Aid
- */
- function api_favorites_create_destroy(&$a, $type){
+ /**
+ * Star/unstar an item
+ * param: id : id of the item
+ *
+ * api v1 : https://web.archive.org/web/20131019055350/https://dev.twitter.com/docs/api/1/post/favorites/create/%3Aid
+ */
+ function api_favorites_create_destroy(&$a, $type){
logger('favorites_create_destroy');
- if (api_user()===false)
+ if (api_user()===false)
return false;
- $action = str_replace(".".$type,"",argv(2));
- if (argc() > 3) {
- $itemid = intval(argv(3));
- } else {
- $itemid = intval($_REQUEST['id']);
- }
+ $action = str_replace(".".$type,"",argv(2));
+ if (argc() > 3) {
+ $itemid = intval(argv(3));
+ } else {
+ $itemid = intval($_REQUEST['id']);
+ }
$item = q("SELECT * FROM item WHERE id = %d AND uid = %d",
intval($itemid),
intval(api_user())
);
- if (! $item)
+ if (! $item)
return false;
switch($action){
@@ -1581,22 +1622,22 @@ require_once('include/items.php');
xchan_query($item,true);
- $user_info = api_get_user($a);
- $rets = api_format_items($item,$user_info);
- $ret = $rets[0];
+ $user_info = api_get_user($a);
+ $rets = api_format_items($item,$user_info);
+ $ret = $rets[0];
- $data = array('$status' => $ret);
- switch($type){
- case "atom":
- case "rss":
- $data = api_rss_extra($a, $data, $user_info);
- }
+ $data = array('$status' => $ret);
+ switch($type){
+ case "atom":
+ case "rss":
+ $data = api_rss_extra($a, $data, $user_info);
+ }
- return api_apply_template("status", $type, $data);
- }
+ return api_apply_template("status", $type, $data);
+ }
- api_register_func('api/favorites/create', 'api_favorites_create_destroy', true);
- api_register_func('api/favorites/destroy', 'api_favorites_create_destroy', true);
+ api_register_func('api/favorites/create', 'api_favorites_create_destroy', true);
+ api_register_func('api/favorites/destroy', 'api_favorites_create_destroy', true);
@@ -1607,7 +1648,7 @@ require_once('include/items.php');
$user_info = api_get_user($a);
// params
- $count = (x($_REQUEST,'count')?$_REQUEST['count']:20);
+ $count = (x($_REQUEST,'count')?$_REQUEST['count']:20);
$page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
if($page < 0)
$page = 0;
diff --git a/include/apps.php b/include/apps.php
index 504641102..661fc2163 100644
--- a/include/apps.php
+++ b/include/apps.php
@@ -264,18 +264,37 @@ function app_install($uid,$app) {
else
$x = app_store($app);
- if($x['success'])
- return $x['app_id'];
+ if($x['success']) {
+ $r = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($x['app_id']),
+ intval($uid)
+ );
+ if($r)
+ build_sync_packet($uid,array('app' => $r[0]));
+ return $x['app_id'];
+ }
return false;
}
function app_destroy($uid,$app) {
+
+
if($uid && $app['guid']) {
+
+ $x = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($app['guid']),
+ intval($uid)
+ );
+ $x[0]['app_deleted'] = 1;
+
+
$r = q("delete from app where app_id = '%s' and app_channel = %d",
dbesc($app['guid']),
intval($uid)
);
+
+ build_sync_packet($uid,array('app' => $x));
}
}
@@ -325,7 +344,7 @@ function app_store($arr) {
return $ret;
if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
- $x = import_profile_photo($arr['photo'],get_observer_hash(),true);
+ $x = import_xchan_photo($arr['photo'],get_observer_hash(),true);
$arr['photo'] = $x[1];
}
@@ -342,7 +361,9 @@ function app_store($arr) {
$darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
$darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
- $r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel, app_addr, app_price, app_page, app_requires ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s' )",
+ $created = datetime_convert();
+
+ $r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel, app_addr, app_price, app_page, app_requires, app_created, app_edited ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s' )",
dbesc($darray['app_id']),
dbesc($darray['app_sig']),
dbesc($darray['app_author']),
@@ -355,7 +376,9 @@ function app_store($arr) {
dbesc($darray['app_addr']),
dbesc($darray['app_price']),
dbesc($darray['app_page']),
- dbesc($darray['app_requires'])
+ dbesc($darray['app_requires']),
+ dbesc($created),
+ dbesc($created)
);
if($r) {
$ret['success'] = true;
@@ -378,7 +401,7 @@ function app_update($arr) {
return $ret;
if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
- $x = import_profile_photo($arr['photo'],get_observer_hash(),true);
+ $x = import_xchan_photo($arr['photo'],get_observer_hash(),true);
$arr['photo'] = $x[1];
}
@@ -393,7 +416,9 @@ function app_update($arr) {
$darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
$darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
- $r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s', app_requires = '%s' where app_id = '%s' and app_channel = %d",
+ $edited = datetime_convert();
+
+ $r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s', app_requires = '%s', app_edited = '%s' where app_id = '%s' and app_channel = %d",
dbesc($darray['app_sig']),
dbesc($darray['app_author']),
dbesc($darray['app_name']),
@@ -405,6 +430,7 @@ function app_update($arr) {
dbesc($darray['app_price']),
dbesc($darray['app_page']),
dbesc($darray['app_requires']),
+ dbesc($edited),
dbesc($darray['app_id']),
intval($darray['app_channel'])
);
diff --git a/include/attach.php b/include/attach.php
index 71fad86a8..620c7620c 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -414,9 +414,19 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
$hash = (($arr && $arr['hash']) ? $arr['hash'] : null);
$upload_path = (($arr && $arr['directory']) ? $arr['directory'] : '');
- logger('arr: ' . print_r($arr,true));
+ $observer = array();
- if(! perm_is_allowed($channel_id,get_observer_hash(), 'write_storage')) {
+ if($observer_hash) {
+ $x = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($observer_hash)
+ );
+ if($x)
+ $observer = $x[0];
+ }
+
+ logger('arr: ' . print_r($arr,true));
+
+ if(! perm_is_allowed($channel_id,$observer_hash, 'write_storage')) {
$ret['message'] = t('Permission denied.');
return $ret;
}
@@ -434,7 +444,13 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
// revise or update must provide $arr['hash'] of the thing to revise/update
- if($options !== 'update') {
+ if($options === 'import') {
+ $src = $arr['src'];
+ $filename = $arr['filename'];
+ $filesize = @filesize($src);
+ $hash = $arr['resource_id'];
+ }
+ elseif($options !== 'update') {
if(! x($_FILES,'userfile')) {
$ret['message'] = t('No source file.');
return $ret;
@@ -480,12 +496,19 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
-
+ $def_extension = '';
$is_photo = 0;
$gis = @getimagesize($src);
logger('getimagesize: ' . print_r($gis,true), LOGGER_DATA);
if(($gis) && ($gis[2] === IMAGETYPE_GIF || $gis[2] === IMAGETYPE_JPEG || $gis[2] === IMAGETYPE_PNG)) {
$is_photo = 1;
+ if($gis[2] === IMAGETYPE_GIF)
+ $def_extension = '.gif';
+ if($gis[2] === IMAGETYPE_JPEG)
+ $def_extension = '.jpg';
+ if($gis[2] === IMAGETYPE_PNG)
+ $def_extension = '.png';
+
}
$pathname = '';
@@ -527,7 +550,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
$folder_hash = '';
}
- if(! $options) {
+ if((! $options) || ($options === 'import')) {
// A freshly uploaded file. Check for duplicate and resolve with the channel's overwrite settings.
@@ -544,9 +567,18 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
$hash = $x[0]['hash'];
}
else {
+ if(strpos($filename,'.') !== false) {
+ $basename = substr($filename,0,strrpos($filename,'.'));
+ $ext = substr($filename,strrpos($filename,'.'));
+ }
+ else {
+ $basename = $filename;
+ $ext = $def_extension;
+ }
+
$r = q("select filename from attach where ( filename = '%s' OR filename like '%s' ) and folder = '%s' ",
- dbesc($filename),
- dbesc($filename . '(%)'),
+ dbesc($basename . $ext),
+ dbesc($basename . '(%)' . $ext),
dbesc($folder_hash)
);
@@ -556,7 +588,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
do {
$found = false;
foreach($r as $rr) {
- if($rr['filename'] === $filename . '(' . $x . ')') {
+ if($rr['filename'] === $basename . '(' . $x . ')' . $ext) {
$found = true;
break;
}
@@ -565,8 +597,10 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
$x++;
}
while($found);
- $filename = $filename . '(' . $x . ')';
+ $filename = $basename . '(' . $x . ')' . $ext;
}
+ else
+ $filename = $basename . $ext;
}
}
}
@@ -614,7 +648,16 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
if($src)
@file_put_contents($os_basepath . $os_relpath,@file_get_contents($src));
- $created = datetime_convert();
+ if(array_key_exists('created', $arr))
+ $created = $arr['created'];
+ else
+ $created = datetime_convert();
+
+ if(array_key_exists('edited', $arr))
+ $edited = $arr['edited'];
+ else
+ $edited = $created;
+
if($options === 'replace') {
$r = q("update attach set filename = '%s', filetype = '%s', folder = '%s', filesize = %d, os_storage = %d, is_photo = %d, data = '%s', edited = '%s' where id = %d and uid = %d",
@@ -704,7 +747,21 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
$args['contact_deny'] = $arr['contact_deny'];
if($arr['group_deny'])
$args['group_deny'] = $arr['group_deny'];
- $p = photo_upload($channel,get_app()->get_observer(),$args);
+ if(array_key_exists('allow_cid',$arr))
+ $args['allow_cid'] = $arr['allow_cid'];
+ if(array_key_exists('allow_gid',$arr))
+ $args['allow_gid'] = $arr['allow_gid'];
+ if(array_key_exists('deny_cid',$arr))
+ $args['deny_cid'] = $arr['deny_cid'];
+ if(array_key_exists('deny_gid',$arr))
+ $args['deny_gid'] = $arr['deny_gid'];
+
+ $args['created'] = $created;
+ $args['edited'] = $edited;
+ if($arr['item'])
+ $args['item'] = $arr['item'];
+
+ $p = photo_upload($channel,$observer,$args);
if($p['success']) {
$ret['body'] = $p['body'];
}
diff --git a/include/chat.php b/include/chat.php
index 05bb02bb9..a0646265a 100644
--- a/include/chat.php
+++ b/include/chat.php
@@ -91,6 +91,8 @@ function chatroom_destroy($channel,$arr) {
return $ret;
}
+ create_sync_packet($channel['channel_id'],array('chatroom' => $r));
+
q("delete from chatroom where cr_id = %d",
intval($r[0]['cr_id'])
);
diff --git a/include/conversation.php b/include/conversation.php
index e58429255..a3fdf39df 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -395,7 +395,9 @@ function count_descendants($item) {
* @brief Check if the activity of the item is visible.
*
* likes (etc.) can apply to other things besides posts. Check if they are post
- * children, in which case we handle them specially.
+ * children, in which case we handle them specially. Activities which are unrecognised
+ * as having special meaning and hidden will be treated as posts or comments and visible
+ * in the stream.
*
* @param array $item
* @return boolean
@@ -403,12 +405,21 @@ function count_descendants($item) {
function visible_activity($item) {
$hidden_activities = array(ACTIVITY_LIKE, ACTIVITY_DISLIKE, ACTIVITY_AGREE, ACTIVITY_DISAGREE, ACTIVITY_ABSTAIN, ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE);
+ $post_types = array(ACTIVITY_OBJ_NOTE,ACTIVITY_OBJ_COMMENT,basename(ACTIVITY_OBJ_NOTE),basename(ACTIVITY_OBJ_COMMENT));
+
foreach ($hidden_activities as $act) {
if ((activity_match($item['verb'], $act)) && ($item['mid'] != $item['parent_mid'])) {
return false;
}
}
+ // In order to share edits with networks which have no concept of editing, we'll create
+ // separate activities to indicate the edit. Our network will not require them, since our
+ // edits are automatically applied and the activity indicated.
+
+ if(($item['verb'] === ACTIVITY_UPDATE) && (in_array($item['obj_type'],$post_types)))
+ return false;
+
return true;
}
diff --git a/include/event.php b/include/event.php
index 4393e6854..6670bc53b 100644
--- a/include/event.php
+++ b/include/event.php
@@ -63,9 +63,9 @@ function ical_wrapper($ev) {
return '';
$o .= "BEGIN:VCALENDAR";
- $o .= "\nVERSION:2.0";
- $o .= "\nMETHOD:PUBLISH";
- $o .= "\nPRODID:-//" . get_config('system','sitename') . "//" . PLATFORM_NAME . "//" . strtoupper(get_app()->language). "\n";
+ $o .= "\r\nVERSION:2.0";
+ $o .= "\r\nMETHOD:PUBLISH";
+ $o .= "\r\nPRODID:-//" . get_config('system','sitename') . "//" . PLATFORM_NAME . "//" . strtoupper(get_app()->language). "\r\n";
if(array_key_exists('start', $ev))
$o .= format_event_ical($ev);
else {
@@ -73,38 +73,84 @@ function ical_wrapper($ev) {
$o .= format_event_ical($e);
}
}
- $o .= "\nEND:VCALENDAR\n";
+ $o .= "\r\nEND:VCALENDAR\r\n";
return $o;
}
function format_event_ical($ev) {
+ if($ev['type'] === 'task')
+ return format_todo_ical($ev);
+
$o = '';
- $o .= "\nBEGIN:VEVENT";
+ $o .= "\r\nBEGIN:VEVENT";
+
+ $o .= "\r\nCREATED:" . datetime_convert('UTC','UTC', $ev['created'],'Ymd\\THis\\Z');
+ $o .= "\r\nLAST-MODIFIED:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
+ $o .= "\r\nDTSTAMP:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
if($ev['start'])
- $o .= "\nDTSTART:" . datetime_convert('UTC','UTC', $ev['start'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
+ $o .= "\r\nDTSTART:" . datetime_convert('UTC','UTC', $ev['start'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
if($ev['finish'] && ! $ev['nofinish'])
- $o .= "\nDTEND:" . datetime_convert('UTC','UTC', $ev['finish'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
+ $o .= "\r\nDTEND:" . datetime_convert('UTC','UTC', $ev['finish'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
if($ev['summary'])
- $o .= "\nSUMMARY:" . format_ical_text($ev['summary']);
+ $o .= "\r\nSUMMARY:" . format_ical_text($ev['summary']);
if($ev['location'])
- $o .= "\nLOCATION:" . format_ical_text($ev['location']);
+ $o .= "\r\nLOCATION:" . format_ical_text($ev['location']);
if($ev['description'])
- $o .= "\nDESCRIPTION:" . format_ical_text($ev['description']);
- $o .= "\nUID:" . $ev['event_hash'] ;
- $o .= "\nEND:VEVENT\n";
+ $o .= "\r\nDESCRIPTION:" . format_ical_text($ev['description']);
+ if($ev['event_priority'])
+ $o .= "\r\nPRIORITY:" . intval($ev['event_priority']);
+ $o .= "\r\nUID:" . $ev['event_hash'] ;
+ $o .= "\r\nEND:VEVENT\r\n";
+
+ return $o;
+}
+
+
+function format_todo_ical($ev) {
+
+ $o = '';
+
+ $o .= "\r\nBEGIN:VTODO";
+ $o .= "\r\nCREATED:" . datetime_convert('UTC','UTC', $ev['created'],'Ymd\\THis\\Z');
+ $o .= "\r\nLAST-MODIFIED:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
+ $o .= "\r\nDTSTAMP:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
+ if($ev['start'])
+ $o .= "\r\nDTSTART:" . datetime_convert('UTC','UTC', $ev['start'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
+ if($ev['finish'] && ! $ev['nofinish'])
+ $o .= "\r\nDUE:" . datetime_convert('UTC','UTC', $ev['finish'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
+ if($ev['summary'])
+ $o .= "\r\nSUMMARY:" . format_ical_text($ev['summary']);
+ if($ev['event_status']) {
+ $o .= "\r\nSTATUS:" . $ev['event_status'];
+ if($ev['event_status'] === 'COMPLETED')
+ $o .= "\r\nCOMPLETED:" . datetime_convert('UTC','UTC', $ev['event_status_date'],'Ymd\\THis\\Z');
+ }
+ if(intval($ev['event_percent']))
+ $o .= "\r\nPERCENT-COMPLETE:" . $ev['event_percent'];
+ if(intval($ev['event_sequence']))
+ $o .= "\r\nSEQUENCE:" . $ev['event_sequence'];
+ if($ev['location'])
+ $o .= "\r\nLOCATION:" . format_ical_text($ev['location']);
+ if($ev['description'])
+ $o .= "\r\nDESCRIPTION:" . format_ical_text($ev['description']);
+ $o .= "\r\nUID:" . $ev['event_hash'] ;
+ if($ev['event_priority'])
+ $o .= "\r\nPRIORITY:" . intval($ev['event_priority']);
+ $o .= "\r\nEND:VTODO\r\n";
return $o;
}
+
function format_ical_text($s) {
require_once('include/bbcode.php');
require_once('include/html2plain.php');
- return(wordwrap(str_replace(',','\\,',html2plain(bbcode($s))),72,"\n ",true));
+ return(wordwrap(str_replace(array(',',';','\\'),array('\\,','\\;','\\\\'),html2plain(bbcode($s))),72,"\r\n ",true));
}
@@ -218,12 +264,18 @@ function ev_compare($a, $b) {
function event_store_event($arr) {
- $arr['created'] = (($arr['created']) ? $arr['created'] : datetime_convert());
- $arr['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert());
- $arr['type'] = (($arr['type']) ? $arr['type'] : 'event' );
- $arr['event_xchan'] = (($arr['event_xchan']) ? $arr['event_xchan'] : '');
+ $arr['created'] = (($arr['created']) ? $arr['created'] : datetime_convert());
+ $arr['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert());
+ $arr['type'] = (($arr['type']) ? $arr['type'] : 'event' );
+ $arr['event_xchan'] = (($arr['event_xchan']) ? $arr['event_xchan'] : '');
+ $arr['event_priority'] = (($arr['event_priority']) ? $arr['event_priority'] : 0);
+ if(array_key_exists('event_status_date',$arr))
+ $arr['event_status_date'] = datetime_convert('UTC','UTC', $arr['event_status_date']);
+ else
+ $arr['event_status_date'] = NULL_DATE;
+
// Existing event being modified
if($arr['id'] || $arr['event_hash']) {
@@ -265,6 +317,12 @@ function event_store_event($arr) {
`type` = '%s',
`adjust` = %d,
`nofinish` = %d,
+ `event_status` = '%s',
+ `event_status_date` = '%s',
+ `event_percent` = %d,
+ `event_repeat` = '%s',
+ `event_sequence` = %d,
+ `event_priority` = %d,
`allow_cid` = '%s',
`allow_gid` = '%s',
`deny_cid` = '%s',
@@ -280,6 +338,12 @@ function event_store_event($arr) {
dbesc($arr['type']),
intval($arr['adjust']),
intval($arr['nofinish']),
+ dbesc($arr['event_status']),
+ dbesc($arr['event_status_date']),
+ intval($arr['event_percent']),
+ dbesc($arr['event_repeat']),
+ intval($arr['event_sequence']),
+ intval($arr['event_priority']),
dbesc($arr['allow_cid']),
dbesc($arr['allow_gid']),
dbesc($arr['deny_cid']),
@@ -298,8 +362,8 @@ function event_store_event($arr) {
$hash = random_string() . '@' . get_app()->get_hostname();
$r = q("INSERT INTO event ( uid,aid,event_xchan,event_hash,created,edited,start,finish,summary,description,location,type,
- adjust,nofinish,allow_cid,allow_gid,deny_cid,deny_gid)
- VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', '%s', '%s' ) ",
+ adjust,nofinish, event_status, event_status_date, event_percent, event_repeat, event_sequence, event_priority, allow_cid,allow_gid,deny_cid,deny_gid)
+ VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', %d, '%s', %d, %d, '%s', '%s', '%s', '%s' ) ",
intval($arr['uid']),
intval($arr['account']),
dbesc($arr['event_xchan']),
@@ -314,6 +378,12 @@ function event_store_event($arr) {
dbesc($arr['type']),
intval($arr['adjust']),
intval($arr['nofinish']),
+ dbesc($arr['event_status']),
+ dbesc($arr['event_status_date']),
+ intval($arr['event_percent']),
+ dbesc($arr['event_repeat']),
+ intval($arr['event_sequence']),
+ intval($arr['event_priority']),
dbesc($arr['allow_cid']),
dbesc($arr['allow_gid']),
dbesc($arr['deny_cid']),
@@ -399,9 +469,15 @@ require_once('vendor/autoload.php');
$ical = VObject\Reader::read($s);
if($ical) {
- foreach($ical->VEVENT as $event) {
- event_import_ical($event,$uid);
-
+ if($ical->VEVENT) {
+ foreach($ical->VEVENT as $event) {
+ event_import_ical($event,$uid);
+ }
+ }
+ if($ical->VTODO) {
+ foreach($ical->VTODO as $event) {
+ event_import_ical_task($event,$uid);
+ }
}
}
@@ -475,6 +551,8 @@ function event_import_ical($ical, $uid) {
$ev['description'] = (string) $ical->DESCRIPTION;
if(isset($ical->SUMMARY))
$ev['summary'] = (string) $ical->SUMMARY;
+ if(isset($ical->PRIORITY))
+ $ev['event_priority'] = intval((string) $ical->PRIORITY);
if(isset($ical->UID)) {
$evuid = (string) $ical->UID;
@@ -507,6 +585,138 @@ function event_import_ical($ical, $uid) {
}
+function event_import_ical_task($ical, $uid) {
+
+ $c = q("select * from channel where channel_id = %d limit 1",
+ intval($uid)
+ );
+
+ if(! $c)
+ return false;
+
+ $channel = $c[0];
+ $ev = array();
+
+
+ if(! isset($ical->DTSTART)) {
+ logger('no event start');
+ return false;
+ }
+
+ $dtstart = $ical->DTSTART->getDateTime();
+
+// logger('dtstart: ' . var_export($dtstart,true));
+
+ if(($dtstart->timezone_type == 2) || (($dtstart->timezone_type == 3) && ($dtstart->timezone === 'UTC'))) {
+ $ev['adjust'] = 1;
+ }
+ else {
+ $ev['adjust'] = 0;
+ }
+
+ $ev['start'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
+ $dtstart->format(\DateTime::W3C));
+
+
+ if(isset($ical->DUE)) {
+ $dtend = $ical->DUE->getDateTime();
+ $ev['finish'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
+ $dtend->format(\DateTime::W3C));
+ }
+ else
+ $ev['nofinish'] = 1;
+
+
+ if($ev['start'] === $ev['finish'])
+ $ev['nofinish'] = 1;
+
+ if(isset($ical->CREATED)) {
+ $created = $ical->CREATED->getDateTime();
+ $ev['created'] = datetime_convert('UTC','UTC',$created->format(\DateTime::W3C));
+ }
+
+ if(isset($ical->{'DTSTAMP'})) {
+ $edited = $ical->{'DTSTAMP'}->getDateTime();
+ $ev['edited'] = datetime_convert('UTC','UTC',$edited->format(\DateTime::W3C));
+ }
+
+ if(isset($ical->{'LAST-MODIFIED'})) {
+ $edited = $ical->{'LAST-MODIFIED'}->getDateTime();
+ $ev['edited'] = datetime_convert('UTC','UTC',$edited->format(\DateTime::W3C));
+ }
+
+ if(isset($ical->LOCATION))
+ $ev['location'] = (string) $ical->LOCATION;
+ if(isset($ical->DESCRIPTION))
+ $ev['description'] = (string) $ical->DESCRIPTION;
+ if(isset($ical->SUMMARY))
+ $ev['summary'] = (string) $ical->SUMMARY;
+ if(isset($ical->PRIORITY))
+ $ev['event_priority'] = intval((string) $ical->PRIORITY);
+
+ $stored_event = null;
+
+ if(isset($ical->UID)) {
+ $evuid = (string) $ical->UID;
+ $r = q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1",
+ dbesc($evuid),
+ intval($uid)
+ );
+ if($r) {
+ $ev['event_hash'] = $evuid;
+ $stored_event = $r[0];
+ }
+ else {
+ $ev['external_id'] = $evuid;
+ }
+ }
+
+ if(isset($ical->SEQUENCE)) {
+ $ev['event_sequence'] = (string) $ical->SEQUENCE;
+ // see if our stored event is more current than the one we're importing
+ if((intval($ev['event_sequence']) <= intval($stored_event['event_sequence']))
+ && ($ev['edited'] <= $stored_event['edited']))
+ return false;
+ }
+
+ if(isset($ical->STATUS)) {
+ $ev['event_status'] = (string) $ical->STATUS;
+ }
+
+ if(isset($ical->{'COMPLETED'})) {
+ $completed = $ical->{'COMPLETED'}->getDateTime();
+ $ev['event_status_date'] = datetime_convert('UTC','UTC',$completed->format(\DateTime::W3C));
+ }
+
+ if(isset($ical->{'PERCENT-COMPLETE'})) {
+ $ev['event_percent'] = (string) $ical->{'PERCENT-COMPLETE'} ;
+ }
+
+ $ev['type'] = 'task';
+
+ if($ev['summary'] && $ev['start']) {
+ $ev['event_xchan'] = $channel['channel_hash'];
+ $ev['uid'] = $channel['channel_id'];
+ $ev['account'] = $channel['channel_account_id'];
+ $ev['private'] = 1;
+ $ev['allow_cid'] = '<' . $channel['channel_hash'] . '>';
+
+ logger('storing event: ' . print_r($ev,true), LOGGER_ALL);
+ $event = event_store_event($ev);
+ if($event) {
+ $item_id = event_store_item($ev,$event);
+ return true;
+ }
+ }
+
+ return false;
+
+}
+
+
+
+
+
function event_store_item($arr, $event) {
@@ -568,7 +778,12 @@ function event_store_item($arr, $event) {
$private = (($arr['allow_cid'] || $arr['allow_gid'] || $arr['deny_cid'] || $arr['deny_gid']) ? 1 : 0);
- q("UPDATE item SET title = '%s', body = '%s', object = '%s', allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', edited = '%s', item_flags = %d, item_private = %d, obj_type = '%s' WHERE id = %d AND uid = %d",
+ // @FIXME can only update sig if we have the author's channel on this site
+ // Until fixed, set it to nothing so it won't give us signature errors
+
+ $sig = '';
+
+ q("UPDATE item SET title = '%s', body = '%s', object = '%s', allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', edited = '%s', sig = '%s', item_flags = %d, item_private = %d, obj_type = '%s' WHERE id = %d AND uid = %d",
dbesc($arr['summary']),
dbesc($prefix . format_event_bbcode($arr)),
dbesc($object),
@@ -577,6 +792,7 @@ function event_store_item($arr, $event) {
dbesc($arr['deny_cid']),
dbesc($arr['deny_gid']),
dbesc($arr['edited']),
+ dbesc($sig),
intval($r[0]['item_flags']),
intval($private),
dbesc(ACTIVITY_OBJ_EVENT),
@@ -652,6 +868,17 @@ function event_store_item($arr, $event) {
$item_arr['item_origin'] = $item_origin;
$item_arr['item_thread_top'] = $item_thread_top;;
+ $attach = array(array(
+ 'href' => z_root() . '/events/ical/' . urlencode($event['event_hash']),
+ 'length' => 0,
+ 'type' => 'text/calendar',
+ 'title' => t('event') . '-' . $event['event_hash'],
+ 'revision' => ''
+ ));
+
+ $item_arr['attach'] = $attach;
+
+
if(array_key_exists('term', $arr))
$item_arr['term'] = $arr['term'];
@@ -698,3 +925,38 @@ function event_store_item($arr, $event) {
return $item_id;
}
}
+
+
+function todo_stat() {
+ return array(
+ '' => t('Not specified'),
+ 'NEEDS-ACTION' => t('Needs Action'),
+ 'COMPLETED' => t('Completed'),
+ 'IN-PROCESS' => t('In Process'),
+ 'CANCELLED' => t('Cancelled')
+ );
+}
+
+
+function tasks_fetch($arr) {
+
+ if(! local_channel())
+ return;
+
+ $ret = array();
+ $sql_extra = " and event_status != 'COMPLETED' ";
+ if($arr && $arr['all'] == 1)
+ $sql_extra = '';
+
+ $r = q("select * from event where type = 'task' and uid = %d $sql_extra order by created desc",
+ intval(local_channel())
+ );
+
+ $ret['success'] = (($r) ? true : false);
+ if($r) {
+ $ret['tasks'] = $r;
+ }
+
+ return $ret;
+
+} \ No newline at end of file
diff --git a/include/group.php b/include/group.php
index 81e9b98f2..0875b10f9 100644
--- a/include/group.php
+++ b/include/group.php
@@ -229,7 +229,7 @@ function mini_group_select($uid,$group = '') {
logger('mini_group_select: ' . print_r($grps,true), LOGGER_DATA);
$o = replace_macros(get_markup_template('group_selection.tpl'), array(
- '$label' => t('Default privacy group for new contacts'),
+ '$label' => t('Add new connections to this collection (privacy group)'),
'$groups' => $grps
));
return $o;
diff --git a/include/hubloc.php b/include/hubloc.php
index 515223f53..396f4ddfa 100644
--- a/include/hubloc.php
+++ b/include/hubloc.php
@@ -230,7 +230,7 @@ function xchan_store($arr) {
if(! $r)
return $r;
- $photos = import_profile_photo($arr['photo'],$arr['hash']);
+ $photos = import_xchan_photo($arr['photo'],$arr['hash']);
$r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
dbesc(datetime_convert()),
dbesc($photos[0]),
diff --git a/include/identity.php b/include/identity.php
index 804f316d1..393378cc4 100644
--- a/include/identity.php
+++ b/include/identity.php
@@ -427,7 +427,7 @@ function create_identity($arr) {
}
}
- call_hooks('register_account', $newuid);
+ call_hooks('create_identity', $newuid);
proc_run('php','include/directory.php', $ret['channel']['channel_id']);
}
@@ -555,17 +555,33 @@ function identity_basic_export($channel_id, $items = false) {
if($r)
$ret['term'] = $r;
- $r = q("select * from obj where obj_channel = %d",
+
+ // add psuedo-column obj_baseurl to aid in relocations
+
+ $r = q("select obj.*, '%s' as obj_baseurl from obj where obj_channel = %d",
+ dbesc(z_root()),
intval($channel_id)
);
if($r)
$ret['obj'] = $r;
+ $r = q("select * from app where app_channel = %d",
+ intval($channel_id)
+ );
+ if($r)
+ $ret['app'] = $r;
+
+ $r = q("select * from chatroom where cr_uid = %d",
+ intval($channel_id)
+ );
+ if($r)
+ $ret['chatroom'] = $r;
+
if(! $items)
return $ret;
- $r = q("select likes.*, item.mid from likes left join item on likes.iid = item.id where likes.channel_id = %d",
+ $r = q("select * from likes where channel_id = %d",
intval($channel_id)
);
@@ -583,14 +599,17 @@ function identity_basic_export($channel_id, $items = false) {
/** @warning this may run into memory limits on smaller systems */
- /** export one year of posts. If you want to export and import all posts you have to start with
+
+ /** export three months of posts. If you want to export and import all posts you have to start with
* the first year and export/import them in ascending order.
+ *
+ * Don't export linked resource items. we'll have to pull those out separately.
*/
- $r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created > %s - INTERVAL %s",
+ $r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created > %s - INTERVAL %s and resource_type = '' order by created",
intval($channel_id),
db_utcnow(),
- db_quoteinterval('1 YEAR')
+ db_quoteinterval('3 MONTH')
);
if($r) {
$ret['item'] = array();
@@ -604,15 +623,27 @@ function identity_basic_export($channel_id, $items = false) {
}
-function identity_export_year($channel_id,$year) {
+function identity_export_year($channel_id,$year,$month = 0) {
if(! $year)
return array();
+ if($month && $month <= 12) {
+ $target_month = sprintf('%02d',$month);
+ $target_month_plus = sprintf('%02d',$month+1);
+ }
+ else
+ $target_month = '01';
+
$ret = array();
- $mindate = datetime_convert('UTC','UTC',$year . '-01-01 00:00:00');
- $maxdate = datetime_convert('UTC','UTC',$year+1 . '-01-01 00:00:00');
- $r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created >= '%s' and created < '%s' ",
+
+ $mindate = datetime_convert('UTC','UTC',$year . '-' . $target_month . '-01 00:00:00');
+ if($month && $month < 12)
+ $maxdate = datetime_convert('UTC','UTC',$year . '-' . $target_month_plus . '-01 00:00:00');
+ else
+ $maxdate = datetime_convert('UTC','UTC',$year+1 . '-01-01 00:00:00');
+
+ $r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created >= '%s' and created < '%s' and resource_type = '' order by created",
intval($channel_id),
dbesc($mindate),
dbesc($maxdate)
@@ -626,6 +657,17 @@ function identity_export_year($channel_id,$year) {
$ret['item'][] = encode_item($rr,true);
}
+ $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item_id.uid = %d
+ and item.created >= '%s' and item.created < '%s' order by created ",
+ intval($channel_id),
+ dbesc($mindate),
+ dbesc($maxdate)
+ );
+
+ if($r)
+ $ret['item_id'] = $r;
+
+
return $ret;
}
@@ -649,7 +691,7 @@ function identity_export_year($channel_id,$year) {
*/
function profile_load(&$a, $nickname, $profile = '') {
- logger('profile_load: ' . $nickname . (($profile) ? ' profile: ' . $profile : ''));
+// logger('profile_load: ' . $nickname . (($profile) ? ' profile: ' . $profile : ''));
$user = q("select channel_id from channel where channel_address = '%s' and channel_removed = 0 limit 1",
dbesc($nickname)
@@ -912,7 +954,8 @@ function profile_sidebar($profile, $block = 0, $show_connect = true) {
$marital = ((x($profile,'marital') == 1) ? t('Status:') : False);
$homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False);
$profile['online'] = (($profile['online_status'] === 'online') ? t('Online Now') : False);
- logger('online: ' . $profile['online']);
+
+// logger('online: ' . $profile['online']);
if(! perm_is_allowed($profile['uid'],((is_array($observer)) ? $observer['xchan_hash'] : ''),'view_profile')) {
$block = true;
diff --git a/include/import.php b/include/import.php
new file mode 100644
index 000000000..261219ce0
--- /dev/null
+++ b/include/import.php
@@ -0,0 +1,475 @@
+<?php
+
+
+function import_channel($channel) {
+
+ if(! array_key_exists('channel_system',$channel)) {
+ $channel['channel_system'] = (($channel['channel_pageflags'] & 0x1000) ? 1 : 0);
+ $channel['channel_removed'] = (($channel['channel_pageflags'] & 0x8000) ? 1 : 0);
+ }
+
+ $r = q("select * from channel where (channel_guid = '%s' or channel_hash = '%s' or channel_address = '%s' ) limit 1",
+ dbesc($channel['channel_guid']),
+ dbesc($channel['channel_hash']),
+ dbesc($channel['channel_address'])
+ );
+
+ // We should probably also verify the hash
+
+ if($r) {
+ if($r[0]['channel_guid'] === $channel['channel_guid'] || $r[0]['channel_hash'] === $channel['channel_hash']) {
+ logger('mod_import: duplicate channel. ', print_r($channel,true));
+ notice( t('Cannot create a duplicate channel identifier on this system. Import failed.') . EOL);
+ return false;
+ }
+ else {
+ // try at most ten times to generate a unique address.
+ $x = 0;
+ $found_unique = false;
+ do {
+ $tmp = $channel['channel_address'] . mt_rand(1000,9999);
+ $r = q("select * from channel where channel_address = '%s' limit 1",
+ dbesc($tmp)
+ );
+ if(! $r) {
+ $channel['channel_address'] = $tmp;
+ $found_unique = true;
+ break;
+ }
+ $x ++;
+ } while ($x < 10);
+ if(! $found_unique) {
+ logger('mod_import: duplicate channel. randomisation failed.', print_r($channel,true));
+ notice( t('Unable to create a unique channel address. Import failed.') . EOL);
+ return false;
+ }
+ }
+ }
+
+ unset($channel['channel_id']);
+ $channel['channel_account_id'] = get_account_id();
+ $channel['channel_primary'] = (($seize) ? 1 : 0);
+
+ dbesc_array($channel);
+
+ $r = dbq("INSERT INTO channel (`"
+ . implode("`, `", array_keys($channel))
+ . "`) VALUES ('"
+ . implode("', '", array_values($channel))
+ . "')"
+ );
+
+ if(! $r) {
+ logger('mod_import: channel clone failed. ', print_r($channel,true));
+ notice( t('Channel clone failed. Import failed.') . EOL);
+ return false;
+ }
+
+ $r = q("select * from channel where channel_account_id = %d and channel_guid = '%s' limit 1",
+ intval(get_account_id()),
+ $channel['channel_guid'] // Already dbesc'd
+ );
+ if(! $r) {
+ logger('mod_import: channel not found. ', print_r($channel,true));
+ notice( t('Cloned channel not found. Import failed.') . EOL);
+ return false;
+ }
+ // reset
+ $channel = $r[0];
+
+ set_default_login_identity(get_account_id(),$channel['channel_id'],false);
+ logger('import step 1');
+ $_SESSION['import_step'] = 1;
+ ref_session_write(session_id(), serialize($_SESSION));
+ return $channel;
+
+}
+
+function import_config($channel,$configs) {
+
+ if($channel && $configs) {
+ foreach($configs as $config) {
+ unset($config['id']);
+ $config['uid'] = $channel['channel_id'];
+ dbesc_array($config);
+ $r = dbq("INSERT INTO pconfig (`"
+ . implode("`, `", array_keys($config))
+ . "`) VALUES ('"
+ . implode("', '", array_values($config))
+ . "')" );
+ }
+ load_pconfig($channel['channel_id']);
+ }
+}
+
+
+function import_profiles($channel,$profiles) {
+
+ if($channel && $profiles) {
+ foreach($profiles as $profile) {
+ unset($profile['id']);
+ $profile['aid'] = get_account_id();
+ $profile['uid'] = $channel['channel_id'];
+
+ // we are going to reset all profile photos to the original
+ // somebody will have to fix this later and put all the applicable photos into the export
+
+ $profile['photo'] = z_root() . '/photo/profile/l/' . $channel['channel_id'];
+ $profile['thumb'] = z_root() . '/photo/profile/m/' . $channel['channel_id'];
+
+ dbesc_array($profile);
+ $r = dbq("INSERT INTO profile (`"
+ . implode("`, `", array_keys($profile))
+ . "`) VALUES ('"
+ . implode("', '", array_values($profile))
+ . "')"
+ );
+ }
+ }
+}
+
+
+function import_hublocs($channel,$hublocs,$seize) {
+
+ if($channel && $hublocs) {
+ foreach($hublocs as $hubloc) {
+
+ $hash = make_xchan_hash($hubloc['hubloc_guid'],$hubloc['hubloc_guid_sig']);
+ if($hubloc['hubloc_network'] === 'zot' && $hash !== $hubloc['hubloc_hash']) {
+ logger('forged hubloc: ' . print_r($hubloc,true));
+ continue;
+ }
+
+ if(! array_key_exists('hubloc_primary',$hubloc)) {
+ $hubloc['hubloc_primary'] = (($hubloc['hubloc_flags'] & 0x0001) ? 1 : 0);
+ $hubloc['hubloc_orphancheck'] = (($hubloc['hubloc_flags'] & 0x0004) ? 1 : 0);
+ $hubloc['hubloc_error'] = (($hubloc['hubloc_status'] & 0x0003) ? 1 : 0);
+ $hubloc['hubloc_deleted'] = (($hubloc['hubloc_flags'] & 0x1000) ? 1 : 0);
+ }
+
+ $arr = array(
+ 'guid' => $hubloc['hubloc_guid'],
+ 'guid_sig' => $hubloc['hubloc_guid_sig'],
+ 'url' => $hubloc['hubloc_url'],
+ 'url_sig' => $hubloc['hubloc_url_sig']
+ );
+ if(($hubloc['hubloc_hash'] === $channel['channel_hash']) && intval($hubloc['hubloc_primary']) && ($seize))
+ $hubloc['hubloc_primary'] = 0;
+
+ if(! zot_gethub($arr)) {
+ unset($hubloc['hubloc_id']);
+ dbesc_array($hubloc);
+
+ $r = dbq("INSERT INTO hubloc (`"
+ . implode("`, `", array_keys($hubloc))
+ . "`) VALUES ('"
+ . implode("', '", array_values($hubloc))
+ . "')"
+ );
+ }
+ }
+ }
+}
+
+
+
+function import_objs($channel,$objs) {
+
+ if($channel && $objs) {
+ foreach($objs as $obj) {
+
+ // if it's the old term format - too hard to support
+ if(! $obj['obj_created'])
+ continue;
+
+ $baseurl = $obj['obj_baseurl'];
+ unset($obj['obj_id']);
+ unset($obj['obj_baseurl']);
+
+ $obj['obj_channel'] = $channel['channel_id'];
+
+ if($baseurl && (strpos($obj['obj_url'],$baseurl . '/thing/') !== false)) {
+ $obj['obj_url'] = str_replace($baseurl,z_root(),$obj['obj_url']);
+ }
+
+ if($obj['obj_imgurl']) {
+ $x = import_xchan_photo($obj['obj_imgurl'],$channel['channel_hash'],true);
+ $obj['obj_imgurl'] = $x[0];
+ }
+
+ dbesc_array($obj);
+
+ $r = dbq("INSERT INTO obj (`"
+ . implode("`, `", array_keys($obj))
+ . "`) VALUES ('"
+ . implode("', '", array_values($obj))
+ . "')"
+ );
+ }
+ }
+}
+
+function sync_objs($channel,$objs) {
+
+ if($channel && $objs) {
+ foreach($objs as $obj) {
+
+ if(array_key_exists('obj_deleted',$obj) && $obj['obj_deleted'] && $obj['obj_obj']) {
+ q("delete from obj where obj_obj = '%s' and obj_channel = %d limit 1",
+ dbesc($obj['obj_obj']),
+ intval($channel['channel_id'])
+ );
+ continue;
+ }
+
+ // if it's the old term format - too hard to support
+ if(! $obj['obj_created'])
+ continue;
+
+ $baseurl = $obj['obj_baseurl'];
+ unset($obj['obj_id']);
+ unset($obj['obj_baseurl']);
+
+ $obj['obj_channel'] = $channel['channel_id'];
+
+ if($baseurl && (strpos($obj['obj_url'],$baseurl . '/thing/') !== false)) {
+ $obj['obj_url'] = str_replace($baseurl,z_root(),$obj['obj_url']);
+ }
+
+ $exists = false;
+
+ $x = q("select * from obj where obj_obj = '%s' and obj_channel = %d limit 1",
+ dbesc($obj['obj_obj']),
+ intval($channel['channel_id'])
+ );
+ if($x) {
+ if($x[0]['obj_edited'] >= $obj['obj_edited'])
+ continue;
+
+ $exists = true;
+ }
+
+ if($obj['obj_imgurl']) {
+ $x = import_xchan_photo($obj['obj_imgurl'],$channel['channel_hash'],true);
+ $obj['obj_imgurl'] = $x[0];
+ }
+
+ $hash = $obj['obj_obj'];
+
+ if($exists) {
+ unset($obj['obj_obj']);
+ foreach($obj as $k => $v) {
+ $r = q("UPDATE obj SET `%s` = '%s' WHERE obj_obj = '%s' AND obj_channel = %d",
+ dbesc($k),
+ dbesc($v),
+ dbesc($hash),
+ intval($channel['channel_id'])
+ );
+ }
+ }
+ else {
+
+ dbesc_array($obj);
+
+ $r = dbq("INSERT INTO obj (`"
+ . implode("`, `", array_keys($obj))
+ . "`) VALUES ('"
+ . implode("', '", array_values($obj))
+ . "')"
+ );
+ }
+ }
+ }
+}
+
+
+
+
+
+function import_apps($channel,$apps) {
+
+ if($channel && $apps) {
+ foreach($apps as $app) {
+
+ unset($app['id']);
+ unset($app['app_channel']);
+
+ $app['app_channel'] = $channel['channel_id'];
+
+ if($app['app_photo']) {
+ $x = import_xchan_photo($app['app_photo'],$channel['channel_hash'],true);
+ $app['app_photo'] = $x[0];
+ }
+
+ dbesc_array($app);
+ $r = dbq("INSERT INTO app (`"
+ . implode("`, `", array_keys($app))
+ . "`) VALUES ('"
+ . implode("', '", array_values($app))
+ . "')"
+ );
+ }
+ }
+}
+
+
+
+function sync_apps($channel,$apps) {
+
+ if($channel && $apps) {
+ foreach($apps as $app) {
+
+ if(array_key_exists('app_deleted',$app) && $app['app_deleted'] && $app['app_id']) {
+ q("delete from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($app['app_id']),
+ intval($channel['channel_id'])
+ );
+ continue;
+ }
+
+ unset($app['id']);
+ unset($app['app_channel']);
+
+ if(! $app['app_created'] || $app['app_created'] === NULL_DATE)
+ $app['app_created'] = datetime_convert();
+ if(! $app['app_edited'] || $app['app_edited'] === NULL_DATE)
+ $app['app_edited'] = datetime_convert();
+
+ $app['app_channel'] = $channel['channel_id'];
+
+ if($app['app_photo']) {
+ $x = import_xchan_photo($app['app_photo'],$channel['channel_hash'],true);
+ $app['app_photo'] = $x[0];
+ }
+
+ $exists = false;
+
+ $x = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($app['app_id']),
+ intval($channel['channel_id'])
+ );
+ if($x) {
+ if($x[0]['app_edited'] >= $app['app_edited'])
+ continue;
+ $exists = true;
+ }
+ $hash = $app['app_id'];
+
+ if($exists) {
+ unset($app['app_id']);
+ foreach($app as $k => $v) {
+ $r = q("UPDATE app SET `%s` = '%s' WHERE app_id = '%s' AND app_channel = %d",
+ dbesc($k),
+ dbesc($v),
+ dbesc($hash),
+ intval($channel['channel_id'])
+ );
+ }
+ }
+ else {
+ dbesc_array($app);
+ $r = dbq("INSERT INTO app (`"
+ . implode("`, `", array_keys($app))
+ . "`) VALUES ('"
+ . implode("', '", array_values($app))
+ . "')"
+ );
+ }
+ }
+ }
+}
+
+
+
+function import_chatrooms($channel,$chatrooms) {
+
+ if($channel && $chatrooms) {
+ foreach($chatrooms as $chatroom) {
+
+ if(! $chatroom['cr_name'])
+ continue;
+
+ unset($chatroom['cr_id']);
+ unset($chatroom['cr_aid']);
+ unset($chatroom['cr_uid']);
+
+ $chatroom['cr_aid'] = $channel['channel_account_id'];
+ $chatroom['cr_uid'] = $channel['channel_id'];
+
+ dbesc_array($chatroom);
+ $r = dbq("INSERT INTO chatroom (`"
+ . implode("`, `", array_keys($chatroom))
+ . "`) VALUES ('"
+ . implode("', '", array_values($chatroom))
+ . "')"
+ );
+ }
+ }
+}
+
+
+
+function sync_chatrooms($channel,$chatrooms) {
+
+ if($channel && $chatrooms) {
+ foreach($chatrooms as $chatroom) {
+
+ if(! $chatroom['cr_name'])
+ continue;
+
+ if(array_key_exists('cr_deleted',$chatroom) && $chatroom['cr_deleted']) {
+ q("delete from chatroom where cr_name = '%s' and cr_uid = %d limit 1",
+ dbesc($chatroom['cr_name']),
+ intval($channel['channel_id'])
+ );
+ continue;
+ }
+
+
+ unset($chatroom['cr_id']);
+ unset($chatroom['cr_aid']);
+ unset($chatroom['cr_uid']);
+
+ if(! $chatroom['cr_created'] || $chatroom['cr_created'] === NULL_DATE)
+ $chatroom['cr_created'] = datetime_convert();
+ if(! $chatroom['cr_edited'] || $chatroom['cr_edited'] === NULL_DATE)
+ $chatroom['cr_edited'] = datetime_convert();
+
+ $chatroom['cr_aid'] = $channel['channel_account_id'];
+ $chatroom['cr_uid'] = $channel['channel_id'];
+
+ $exists = false;
+
+ $x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1",
+ dbesc($chatroom['cr_name']),
+ intval($channel['channel_id'])
+ );
+ if($x) {
+ if($x[0]['cr_edited'] >= $chatroom['cr_edited'])
+ continue;
+ $exists = true;
+ }
+ $name = $chatroom['cr_name'];
+
+ if($exists) {
+ foreach($chatroom as $k => $v) {
+ $r = q("UPDATE chatroom SET `%s` = '%s' WHERE cr_name = '%s' AND cr_uid = %d",
+ dbesc($k),
+ dbesc($v),
+ dbesc($name),
+ intval($channel['channel_id'])
+ );
+ }
+ }
+ else {
+ dbesc_array($chatroom);
+ $r = dbq("INSERT INTO chatroom (`"
+ . implode("`, `", array_keys($chatroom))
+ . "`) VALUES ('"
+ . implode("', '", array_values($chatroom))
+ . "')"
+ );
+ }
+ }
+ }
+}
diff --git a/include/importdoc.php b/include/importdoc.php
new file mode 100755
index 000000000..10f868697
--- /dev/null
+++ b/include/importdoc.php
@@ -0,0 +1,41 @@
+<?php
+
+
+
+require_once('include/cli_startup.php');
+
+
+function importdoc_run($argv, $argc){
+
+ cli_startup();
+
+ require_once('mod/help.php');
+
+
+ update_docs_dir('doc/*');
+
+}
+if (array_search(__file__,get_included_files())===0){
+ importdoc_run($argv,$argc);
+ killme();
+}
+
+function update_docs_dir($s) {
+ $f = basename($s);
+ $d = dirname($s);
+ if($s === 'doc/html')
+ return;
+ $files = glob("$d/$f");
+ if($files) {
+ foreach($files as $fi) {
+ if($fi === 'doc/html')
+ continue;
+ if(is_dir($fi))
+ update_docs_dir("$fi/*");
+ else
+ store_doc_file($fi);
+ }
+ }
+}
+
+
diff --git a/include/items.php b/include/items.php
index d8c551cea..91afad0e6 100755
--- a/include/items.php
+++ b/include/items.php
@@ -272,6 +272,8 @@ function can_comment_on_post($observer_xchan, $item) {
}
if(strstr($item['comment_policy'],'network:') && strstr($item['comment_policy'],'red'))
return true;
+ if(strstr($item['comment_policy'],'network:') && strstr($item['comment_policy'],'diaspora'))
+ return true;
if(strstr($item['comment_policy'],'site:') && strstr($item['comment_policy'],get_app()->get_hostname()))
return true;
@@ -1125,7 +1127,7 @@ function import_author_rss($x) {
if($r && $x['photo']) {
- $photos = import_profile_photo($x['photo']['src'],$x['url']);
+ $photos = import_xchan_photo($x['photo']['src'],$x['url']);
if($photos) {
/** @bug $arr is undefined in this SQL query */
@@ -1170,7 +1172,7 @@ function import_author_unknown($x) {
);
if($r && $x['photo']) {
- $photos = import_profile_photo($x['photo']['src'],$x['url']);
+ $photos = import_xchan_photo($x['photo']['src'],$x['url']);
if($photos) {
/** @bug $arr is undefined in this SQL query */
@@ -3320,7 +3322,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
dbesc($title),
dbesc($body),
intval($item_wall),
- $intval($item_origin),
+ intval($item_origin),
intval($item_id)
);
@@ -3492,7 +3494,7 @@ function mail_store($arr) {
$arr['to_xchan'] = ((x($arr,'to_xchan')) ? notags(trim($arr['to_xchan'])) : '');
$arr['created'] = ((x($arr,'created') !== false) ? datetime_convert('UTC','UTC',$arr['created']) : datetime_convert());
$arr['expires'] = ((x($arr,'expires') !== false) ? datetime_convert('UTC','UTC',$arr['expires']) : NULL_DATE);
- $arr['title'] = ((x($arr,'title')) ? notags(trim($arr['title'])) : '');
+ $arr['title'] = ((x($arr,'title')) ? trim($arr['title']) : '');
$arr['parent_mid'] = ((x($arr,'parent_mid')) ? notags(trim($arr['parent_mid'])) : '');
$arr['body'] = ((x($arr,'body')) ? trim($arr['body']) : '');
@@ -4366,7 +4368,7 @@ function delete_item_lowlevel($item, $stage = DROPITEM_NORMAL, $force = false) {
);
}
else {
- $r = q("UPDATE item set item_deleted = 1, changed = '%s', edited = '%s' where if = %d",
+ $r = q("UPDATE item set item_deleted = 1, changed = '%s', edited = '%s' where id = %d",
dbesc(datetime_convert()),
dbesc(datetime_convert()),
intval($item['id'])
diff --git a/include/menu.php b/include/menu.php
index d20df1d6e..7ed931a59 100644
--- a/include/menu.php
+++ b/include/menu.php
@@ -3,6 +3,7 @@
require_once('include/security.php');
require_once('include/bbcode.php');
+
function menu_fetch($name,$uid,$observer_xchan) {
$sql_options = permissions_sql($uid);
@@ -299,19 +300,18 @@ function menu_add_item($menu_id, $uid, $arr) {
$channel = get_app()->get_channel();
}
- $str_group_allow = perms2str($arr['group_allow']);
- $str_contact_allow = perms2str($arr['contact_allow']);
- $str_group_deny = perms2str($arr['group_deny']);
- $str_contact_deny = perms2str($arr['contact_deny']);
+ $acl = new AccessList($channel);
+ $acl->set_from_array($arr);
+ $p = $acl->get();
$r = q("insert into menu_item ( mitem_link, mitem_desc, mitem_flags, allow_cid, allow_gid, deny_cid, deny_gid, mitem_channel_id, mitem_menu_id, mitem_order ) values ( '%s', '%s', %d, '%s', '%s', '%s', '%s', %d, %d, %d ) ",
dbesc($mitem_link),
dbesc($mitem_desc),
intval($mitem_flags),
- dbesc($str_contact_allow),
- dbesc($str_group_allow),
- dbesc($str_contact_deny),
- dbesc($str_group_deny),
+ dbesc($p['allow_cid']),
+ dbesc($p['allow_gid']),
+ dbesc($p['deny_cid']),
+ dbesc($p['deny_gid']),
intval($uid),
intval($menu_id),
intval($mitem_order)
@@ -341,19 +341,19 @@ function menu_edit_item($menu_id, $uid, $arr) {
$channel = get_app()->get_channel();
}
- $str_group_allow = perms2str($arr['group_allow']);
- $str_contact_allow = perms2str($arr['contact_allow']);
- $str_group_deny = perms2str($arr['group_deny']);
- $str_contact_deny = perms2str($arr['contact_deny']);
+ $acl = new AccessList($channel);
+ $acl->set_from_array($arr);
+ $p = $acl->get();
+
$r = q("update menu_item set mitem_link = '%s', mitem_desc = '%s', mitem_flags = %d, allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', mitem_order = %d where mitem_channel_id = %d and mitem_menu_id = %d and mitem_id = %d",
dbesc($mitem_link),
dbesc($mitem_desc),
intval($mitem_flags),
- dbesc($str_contact_allow),
- dbesc($str_group_allow),
- dbesc($str_contact_deny),
- dbesc($str_group_deny),
+ dbesc($p['allow_cid']),
+ dbesc($p['allow_gid']),
+ dbesc($p['deny_cid']),
+ dbesc($p['deny_gid']),
intval($mitem_order),
intval($uid),
intval($menu_id),
diff --git a/include/message.php b/include/message.php
index 5720d2da4..396e3162c 100644
--- a/include/message.php
+++ b/include/message.php
@@ -75,13 +75,16 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto='
$handles = $recip_handle . ';' . $sender_handle;
+ if($subject)
+ $nsubject = str_rot47(base64url_encode($subject));
+
$r = q("insert into conv (uid,guid,creator,created,updated,subject,recips) values(%d, '%s', '%s', '%s', '%s', '%s', '%s') ",
intval(local_channel()),
dbesc($conv_guid),
dbesc($sender_handle),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
- dbesc($subject),
+ dbesc($nsubject),
dbesc($handles)
);
@@ -212,6 +215,12 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto='
intval($channel['channel_id']),
dbesc('<' . $channel['channel_hash'] . '>')
);
+ $r = q("UPDATE attach SET allow_cid = '%s' WHERE hash = '%s' AND is_photo = 1 and uid = %d and allow_cid = '%s'",
+ dbesc('<' . $recipient . '>'),
+ dbesc($image_uri),
+ intval($channel['channel_id']),
+ dbesc('<' . $channel['channel_hash'] . '>')
+ );
}
}
diff --git a/include/network.php b/include/network.php
index ef92e0132..75729d6e4 100644
--- a/include/network.php
+++ b/include/network.php
@@ -1035,7 +1035,7 @@ function discover_by_url($url,$arr = null) {
dbesc(datetime_convert())
);
- $photos = import_profile_photo($photo,$guid);
+ $photos = import_xchan_photo($photo,$guid);
$r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
dbesc(datetime_convert()),
dbesc($photos[0]),
@@ -1192,7 +1192,7 @@ function discover_by_webbie($webbie) {
dbescdate(datetime_convert())
);
}
- $photos = import_profile_photo($vcard['photo'],$addr);
+ $photos = import_xchan_photo($vcard['photo'],$addr);
$r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
dbescdate(datetime_convert('UTC','UTC',$arr['photo_updated'])),
dbesc($photos[0]),
diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php
index 426eb6aac..2a7d1ae01 100644
--- a/include/photo/photo_driver.php
+++ b/include/photo/photo_driver.php
@@ -238,10 +238,12 @@ abstract class photo_driver {
if(! $this->is_valid())
return FALSE;
+
if((! function_exists('exif_read_data')) || ($this->getType() !== 'image/jpeg'))
return;
$exif = @exif_read_data($filename,null,true);
+
if($exif) {
$ort = $exif['IFD0']['Orientation'];
@@ -281,7 +283,6 @@ abstract class photo_driver {
break;
}
- // logger('exif: ' . print_r($exif,true));
return $exif;
}
@@ -556,14 +557,14 @@ function guess_image_type($filename, $headers = '') {
}
-function import_profile_photo($photo,$xchan,$thing = false) {
+function import_xchan_photo($photo,$xchan,$thing = false) {
$a = get_app();
$flags = (($thing) ? PHOTO_THING : PHOTO_XCHAN);
$album = (($thing) ? 'Things' : 'Contact Photos');
- logger('import_profile_photo: updating channel photo from ' . $photo . ' for ' . $xchan, LOGGER_DEBUG);
+ logger('import_xchan_photo: updating channel photo from ' . $photo . ' for ' . $xchan, LOGGER_DEBUG);
if($thing)
$hash = photo_new_resource();
@@ -649,7 +650,7 @@ function import_profile_photo($photo,$xchan,$thing = false) {
$micro = $a->get_baseurl() . '/photo/' . $hash . '-6';
}
else {
- logger('import_profile_photo: invalid image from ' . $photo);
+ logger('import_xchan_photo: invalid image from ' . $photo);
$photo_failure = true;
}
if($photo_failure) {
diff --git a/include/photos.php b/include/photos.php
index 7437d6aa9..b4129fbf1 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -34,16 +34,6 @@ function photo_upload($channel, $observer, $args) {
*/
$album = $args['album'];
-// $newalbum = $args['newalbum'];
-
-// logger('photo_upload: album= ' . $album . ' newalbum= ' . $newalbum , LOGGER_DEBUG);
-
-// if(! $album) {
-// if($newalbum)
-// $album = $newalbum;
-// else
-// $album = datetime_convert('UTC',date_default_timezone_get(),'now', 'Y-m');
-// }
if(intval($args['visible']) || $args['visible'] === 'true')
$visible = 1;
@@ -52,32 +42,23 @@ function photo_upload($channel, $observer, $args) {
// Set to default channel permissions. If the parent directory (album) has permissions set,
// use those instead. If we have specific permissions supplied, they take precedence over
- // all other settings.
-
- $str_group_allow = $channel['channel_allow_gid'];
- $str_contact_allow = $channel['channel_allow_cid'];
- $str_group_deny = $channel['channel_deny_gid'];
- $str_contact_deny = $channel['channel_deny_cid'];
-
- if($args['directory']) {
- $str_group_allow = $args['directory']['allow_gid'];
- $str_contact_allow = $args['directory']['allow_cid'];
- $str_group_deny = $args['directory']['deny_gid'];
- $str_contact_deny = $args['directory']['deny_cid'];
- }
-
+ // all other settings. 'allow_cid' being passed from an external source takes priority over channel settings.
+ // ...messy... needs re-factoring once the photos/files integration stabilises
+
+ $acl = new AccessList($channel);
+ if(array_key_exists('directory',$args) && $args['directory'])
+ $acl->set($args['directory']);
+ if(array_key_exists('allow_cid',$args))
+ $acl->set($args);
if( (array_key_exists('group_allow',$args))
|| (array_key_exists('contact_allow',$args))
|| (array_key_exists('group_deny',$args))
|| (array_key_exists('contact_deny',$args))) {
-
- $str_group_allow = perms2str(((is_array($args['group_allow'])) ? $args['group_allow'] : explode(',',$args['group_allow'])));
- $str_contact_allow = perms2str(((is_array($args['contact_allow'])) ? $args['contact_allow'] : explode(',',$args['contact_allow'])));
- $str_group_deny = perms2str(((is_array($args['group_deny'])) ? $args['group_deny'] : explode(',',$args['group_deny'])));
- $str_contact_deny = perms2str(((is_array($args['contact_deny'])) ? $args['contact_deny'] : explode(',',$args['contact_deny'])));
-
+ $acl->set_from_array($args);
}
+ $ac = $acl->get();
+
$os_storage = 0;
if($args['os_path'] && $args['getimagesize']) {
@@ -166,7 +147,7 @@ function photo_upload($channel, $observer, $args) {
return $ret;
}
- $exif = $ph->orient($src);
+ $exif = $ph->orient(($args['os_path']) ? $args['os_path'] : $src);
@unlink($src);
@@ -191,8 +172,8 @@ function photo_upload($channel, $observer, $args) {
$p = array('aid' => $account_id, 'uid' => $channel_id, 'xchan' => $visitor, 'resource_id' => $photo_hash,
'filename' => $filename, 'album' => $album, 'scale' => 0, 'photo_usage' => PHOTO_NORMAL,
- 'allow_cid' => $str_contact_allow, 'allow_gid' => $str_group_allow,
- 'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny,
+ 'allow_cid' => $ac['allow_cid'], 'allow_gid' => $ac['allow_gid'],
+ 'deny_cid' => $ac['deny_cid'], 'deny_gid' => $ac['deny_gid'],
'os_storage' => $os_storage, 'os_path' => $args['os_path']
);
if($args['created'])
@@ -261,62 +242,105 @@ function photo_upload($channel, $observer, $args) {
}
}
- $title = '';
- $mid = item_message_id();
+ if($args['item']) {
+ foreach($args['item'] as $i) {
- $arr = array();
+ $item = get_item_elements($i);
+ $force = false;
- if($lat && $lon)
- $arr['coord'] = $lat . ' ' . $lon;
-
- $arr['aid'] = $account_id;
- $arr['uid'] = $channel_id;
- $arr['mid'] = $mid;
- $arr['parent_mid'] = $mid;
- $arr['item_hidden'] = $item_hidden;
- $arr['resource_type'] = 'photo';
- $arr['resource_id'] = $photo_hash;
- $arr['owner_xchan'] = $channel['channel_hash'];
- $arr['author_xchan'] = $observer['xchan_hash'];
- $arr['title'] = $title;
- $arr['allow_cid'] = $str_contact_allow;
- $arr['allow_gid'] = $str_group_allow;
- $arr['deny_cid'] = $str_contact_deny;
- $arr['deny_gid'] = $str_group_deny;
- $arr['verb'] = ACTIVITY_POST;
- $arr['item_wall'] = 1;
- $arr['item_origin'] = 1;
- $arr['item_thread_top'] = 1;
+ if($item['mid'] === $item['parent_mid']) {
- $arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid'];
+ $item['body'] = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo_hash . ']'
+ . $tag . z_root() . "/photo/{$photo_hash}-{$smallest}.".$ph->getExt() . '[/zmg]'
+ . '[/zrl]';
- // We should also put a width_x_height on large photos. Left as an exercise for
- // devs looking fo simple stuff to fix.
+ if($item['author_xchan'] === $channel['channel_hash']) {
+ $item['sig'] = base64url_encode(rsa_sign($item['body'],$channel['channel_prvkey']));
+ $item['item_verified'] = 1;
+ }
+ else {
+ $item['sig'] = '';
+ }
+ $force = true;
- $larger = feature_enabled($channel['channel_id'], 'large_photos');
- if($larger) {
- $tag = '[zmg]';
- if($r2)
- $smallest = 1;
- else
- $smallest = 0;
+ }
+ $r = q("select id, edited from item where mid = '%s' and uid = %d limit 1",
+ dbesc($item['mid']),
+ intval($channel['channel_id'])
+ );
+ if($r) {
+ if(($item['edited'] > $r[0]['edited']) || $force) {
+ $item['id'] = $r[0]['id'];
+ $item['uid'] = $channel['channel_id'];
+ item_store_update($item);
+ continue;
+ }
+ }
+ else {
+ $item['aid'] = $channel['channel_account_id'];
+ $item['uid'] = $channel['channel_id'];
+ $item_result = item_store($item);
+ }
+ }
}
else {
- if ($width_x_height)
- $tag = '[zmg=' . $width_x_height. ']';
- else
+ $title = '';
+ $mid = item_message_id();
+
+ $arr = array();
+
+ if($lat && $lon)
+ $arr['coord'] = $lat . ' ' . $lon;
+
+ $arr['aid'] = $account_id;
+ $arr['uid'] = $channel_id;
+ $arr['mid'] = $mid;
+ $arr['parent_mid'] = $mid;
+ $arr['item_hidden'] = $item_hidden;
+ $arr['resource_type'] = 'photo';
+ $arr['resource_id'] = $photo_hash;
+ $arr['owner_xchan'] = $channel['channel_hash'];
+ $arr['author_xchan'] = $observer['xchan_hash'];
+ $arr['title'] = $title;
+ $arr['allow_cid'] = $ac['allow_cid'];
+ $arr['allow_gid'] = $ac['allow_gid'];
+ $arr['deny_cid'] = $ac['deny_cid'];
+ $arr['deny_gid'] = $ac['deny_gid'];
+ $arr['verb'] = ACTIVITY_POST;
+ $arr['item_wall'] = 1;
+ $arr['item_origin'] = 1;
+ $arr['item_thread_top'] = 1;
+ $arr['item_private'] = intval($acl->is_private());
+ $arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid'];
+
+ // We should also put a width_x_height on large photos. Left as an exercise for
+ // devs looking for simple stuff to fix.
+
+ $larger = feature_enabled($channel['channel_id'], 'large_photos');
+ if($larger) {
$tag = '[zmg]';
- }
+ if($r2)
+ $smallest = 1;
+ else
+ $smallest = 0;
+ }
+ else {
+ if ($width_x_height)
+ $tag = '[zmg=' . $width_x_height. ']';
+ else
+ $tag = '[zmg]';
+ }
- $arr['body'] = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo_hash . ']'
+ $arr['body'] = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo_hash . ']'
. $tag . z_root() . "/photo/{$photo_hash}-{$smallest}.".$ph->getExt() . '[/zmg]'
. '[/zrl]';
- $result = item_store($arr);
- $item_id = $result['item_id'];
+ $result = item_store($arr);
+ $item_id = $result['item_id'];
- if($visible)
- proc_run('php', "include/notifier.php", 'wall-new', $item_id);
+ if($visible)
+ proc_run('php', "include/notifier.php", 'wall-new', $item_id);
+ }
$ret['success'] = true;
$ret['item'] = $arr;
@@ -579,6 +603,16 @@ function getGps($exifCoord, $hemi) {
return floatval($flip * ($degrees + ($minutes / 60) + ($seconds / 3600)));
}
+function getGpstimestamp($exifCoord) {
+
+ $hours = count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0;
+ $minutes = count($exifCoord) > 1 ? gps2Num($exifCoord[1]) : 0;
+ $seconds = count($exifCoord) > 2 ? gps2Num($exifCoord[2]) : 0;
+
+ return sprintf('%02d:%02d:%02d',$hours,$minutes,$seconds);
+}
+
+
function gps2Num($coordPart) {
$parts = explode('/', $coordPart);
diff --git a/include/poller.php b/include/poller.php
index f44298a9f..a1b25bf41 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -175,6 +175,9 @@ function poller_run($argv, $argc){
logger('regdir: ' . print_r(z_fetch_url(get_directory_primary() . '/regdir?f=&url=' . urlencode(z_root()) . '&realm=' . urlencode(get_directory_realm())),true));
}
+
+ proc_run('php', 'include/importdoc.php');
+
/**
* End Cron Weekly
*/
@@ -232,7 +235,7 @@ function poller_run($argv, $argc){
if($r) {
require_once('include/photo/photo_driver.php');
foreach($r as $rr) {
- $photos = import_profile_photo($rr['xchan_photo_l'],$rr['xchan_hash']);
+ $photos = import_xchan_photo($rr['xchan_photo_l'],$rr['xchan_hash']);
$x = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s'
where xchan_hash = '%s'",
dbesc($photos[0]),
diff --git a/include/session.php b/include/session.php
index 31b3f0614..92004bc18 100644
--- a/include/session.php
+++ b/include/session.php
@@ -98,9 +98,6 @@ function ref_session_destroy ($id) {
function ref_session_gc($expire) {
q("DELETE FROM session WHERE expire < %d", dbesc(time()));
- if (! get_config('system', 'innodb'))
- db_optimizetable('session');
-
return true;
}
diff --git a/include/taxonomy.php b/include/taxonomy.php
index b57cfc5c4..a82cf94f7 100644
--- a/include/taxonomy.php
+++ b/include/taxonomy.php
@@ -341,7 +341,7 @@ function get_things($profile_hash,$uid) {
$sql_extra = (($profile_hash) ? " and obj_page = '" . $profile_hash . "' " : '');
- $r = q("select * from obj left join term on obj_obj = term_hash where term_hash != '' and uid = %d and obj_type = %d $sql_extra order by obj_verb, term",
+ $r = q("select * from obj where obj_channel = %d and obj_type = %d $sql_extra order by obj_verb, obj_term",
intval($uid),
intval(TERM_OBJ_THING)
);
@@ -357,8 +357,8 @@ function get_things($profile_hash,$uid) {
foreach($r as $rr) {
$rr['profile_name'] = '';
- if(! in_array($rr['term_hash'],$profile_hashes))
- $profile_hashes[] = $rr['term_hash'];
+ if(! in_array($rr['obj_obj'],$profile_hashes))
+ $profile_hashes[] = $rr['obj_obj'];
}
stringify_array_elms($profile_hashes);
if(! $profile_hash) {
@@ -390,7 +390,7 @@ function get_things($profile_hash,$uid) {
$l = q("select xchan_name, xchan_url from likes left join xchan on likee = xchan_hash where
target_type = '%s' and target_id = '%s' and channel_id = %d",
dbesc(ACTIVITY_OBJ_THING),
- dbesc($rr['term_hash']),
+ dbesc($rr['obj_obj']),
intval($uid)
);
@@ -400,7 +400,7 @@ function get_things($profile_hash,$uid) {
if(! $things[$rr['obj_verb']])
$things[$rr['obj_verb']] = array();
- $things[$rr['obj_verb']][] = array('term' => $rr['term'],'url' => $rr['url'],'img' => $rr['imgurl'], 'profile' => $rr['profile_name'],'term_hash' => $rr['term_hash'], 'likes' => $l,'like_count' => count($l),'like_label' => tt('Like','Likes',count($l),'noun'));
+ $things[$rr['obj_verb']][] = array('term' => $rr['obj_term'],'url' => $rr['obj_url'],'img' => $rr['obj_imgurl'], 'profile' => $rr['profile_name'],'term_hash' => $rr['obj_obj'], 'likes' => $l,'like_count' => count($l),'like_label' => tt('Like','Likes',count($l),'noun'));
}
$sorted_things = array();
if($things) {
diff --git a/include/text.php b/include/text.php
index cc084f6f1..4d9670806 100644
--- a/include/text.php
+++ b/include/text.php
@@ -72,10 +72,6 @@ function notags($string) {
// return(str_replace(array("<",">","\xBA","\xBC","\xBE"), array('[',']','','',''), $string));
}
-// use this on "body" or "content" input where angle chars shouldn't be removed,
-// and allow them to be safely displayed.
-
-
/**
* use this on "body" or "content" input where angle chars shouldn't be removed,
@@ -458,63 +454,7 @@ function alt_pager(&$a, $i, $more = '', $less = '') {
}
-/**
- * @brief Turn user/group ACLs stored as angle bracketed text into arrays.
- *
- * turn string array of angle-bracketed elements into string array
- * e.g. "<123xyz><246qyo><sxo33e>" => array(123xyz,246qyo,sxo33e);
- *
- * @param string $s
- * @return array
- */
-function expand_acl($s) {
- $ret = array();
-
- if(strlen($s)) {
- $t = str_replace('<','',$s);
- $a = explode('>',$t);
- foreach($a as $aa) {
- if($aa)
- $ret[] = $aa;
- }
- }
-
- return $ret;
-}
-/**
- * @brief Used to wrap ACL elements in angle brackets for storage.
- *
- * @param[in,out] array &$item
- */
-function sanitise_acl(&$item) {
- if (strlen($item))
- $item = '<' . notags(trim($item)) . '>';
- else
- unset($item);
-}
-
-/**
- * @brief Convert an ACL array to a storable string.
- *
- * @param array $p
- * @return array
- */
-function perms2str($p) {
- $ret = '';
-
- if (is_array($p))
- $tmp = $p;
- else
- $tmp = explode(',', $p);
-
- if (is_array($tmp)) {
- array_walk($tmp, 'sanitise_acl');
- $ret = implode('', $tmp);
- }
-
- return $ret;
-}
/**
* @brief Generate a guaranteed unique (for this domain) item ID for ATOM.
@@ -1305,7 +1245,7 @@ function theme_attachments(&$item) {
$title = htmlspecialchars($r['title'], ENT_COMPAT,'UTF-8');
if(! $title)
$title = t('unknown.???');
- $title .= ' ' . $r['length'] . ' ' . t('bytes');
+ $title .= ' ' . (($r['length']) ? $r['length'] . ' ' . t('bytes') : '');
require_once('include/identity.php');
if(is_foreigner($item['author_xchan']))
diff --git a/include/widgets.php b/include/widgets.php
index e735f5b2f..42d9db19a 100644
--- a/include/widgets.php
+++ b/include/widgets.php
@@ -1042,3 +1042,36 @@ function widget_forums($arr) {
}
+
+function widget_tasklist($arr) {
+
+
+ require_once('include/event.php');
+ $o .= '<script>var tasksShowAll = 0; $(document).ready(function() { tasksFetch(); $("#tasklist-new-form").submit(function(event) { event.preventDefault(); $.post( "tasks/new", $("#tasklist-new-form").serialize(), function(data) { tasksFetch(); $("#tasklist-new-summary").val(""); } ); return false; } )});</script>';
+ $o .= '<script>function taskComplete(id) { $.post("tasks/complete/"+id, function(data) { tasksFetch();}); }
+ function tasksFetch() {
+ $.get("tasks/fetch" + ((tasksShowAll) ? "/all" : ""), function(data) {
+ $(".tasklist-tasks").html(data.html);
+ });
+ }
+ </script>';
+
+ $o .= '<div class="widget">' . '<h3>' . t('Tasks') . '</h3><div class="tasklist-tasks">';
+ $o .= '</div><form id="tasklist-new-form" action="" ><input id="tasklist-new-summary" type="text" name="summary" value="" /></form>';
+ $o .= '</div>';
+ return $o;
+
+}
+
+
+function widget_helpindex($arr) {
+ $o .= '<div class="widget">' . '<h3>' . t('Documentation') . '</h3>';
+ $o .= '<ul class="nav nav-pills nav-stacked">';
+ $o .= '<li><a href="help/general">' . t('Project/Site Information') . '</a></li>';
+ $o .= '<li><a href="help/members">' . t('For Members') . '</a></li>';
+ $o .= '<li><a href="help/admins">' . t('For Administrators') . '</a></li>';
+ $o .= '<li><a href="help/develop">' . t('For Developers') . '</a></li>';
+ $o .= '</ul></div>';
+ return $o;
+
+} \ No newline at end of file
diff --git a/include/zot.php b/include/zot.php
index bae20b4f0..9610df894 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -294,12 +294,12 @@ function zot_refresh($them, $channel = null, $force = false) {
if ($them['hubloc_url']) {
$url = $them['hubloc_url'];
} else {
- $r = q("select hubloc_url, hubloc_flags from hubloc where hubloc_hash = '%s'",
+ $r = q("select hubloc_url, hubloc_primary from hubloc where hubloc_hash = '%s'",
dbesc($them['xchan_hash'])
);
if ($r) {
foreach ($r as $rr) {
- if ($rr['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) {
+ if (intval($rr['hubloc_primary'])) {
$url = $rr['hubloc_url'];
break;
}
@@ -801,7 +801,7 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
);
}
} else {
- $photos = import_profile_photo($arr['photo'], $xchan_hash);
+ $photos = import_xchan_photo($arr['photo'], $xchan_hash);
}
if ($photos) {
if ($photos[4]) {
@@ -1637,10 +1637,9 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
}
}
-
- $ab = q("select abook.* from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d
- and abook_self = 0",
- intval($channel['channel_id'])
+ $ab = q("select * from abook where abook_channel = %d and abook_xchan = '%s'",
+ intval($channel['channel_id']),
+ dbesc($arr['owner_xchan'])
);
$abook = (($ab) ? $ab[0] : null);
@@ -1688,7 +1687,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
$result[] = array($d['hash'],'update ignored',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
}
else {
- update_imported_item($sender,$arr,$channel['channel_id']);
+ update_imported_item($sender,$arr,$r[0],$channel['channel_id']);
$result[] = array($d['hash'],'updated',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
if(! $relay)
add_source_route($item_id,$sender['hash']);
@@ -1825,9 +1824,20 @@ function remove_community_tag($sender, $arr, $uid) {
* @param array $item
* @param int $uid (unused)
*/
-function update_imported_item($sender, $item, $uid) {
+function update_imported_item($sender, $item, $orig, $uid) {
+
$x = item_store_update($item);
+
+ // If we're updating an event that we've saved locally, we store the item info first
+ // because event_addtocal will parse the body to get the 'new' event details
+
+ if($orig['resource_type'] === 'event') {
+ $res = event_addtocal($orig['id'],$uid);
+ if(! $res)
+ logger('update event: failed');
+ }
+
if(! $x['item_id'])
logger('update_imported_item: failed: ' . $x['message']);
else
@@ -2196,7 +2206,7 @@ function sync_locations($sender, $arr, $absolute = false) {
dbesc(datetime_convert()),
intval($r[0]['hubloc_id'])
);
- $r[0]['hubloc_flags'] = $r[0]['hubloc_flags'] ^ HUBLOC_FLAGS_PRIMARY;
+ $r[0]['hubloc_primary'] = intval($location['primary']);
hubloc_change_primary($r[0]);
$what .= 'primary_hub ';
$changed = true;
@@ -2831,6 +2841,8 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
*/
function process_channel_sync_delivery($sender, $arr, $deliveries) {
+ require_once('include/import.php');
+
/** @FIXME this will sync red structures (channel, pconfig and abook). Eventually we need to make this application agnostic. */
$result = array();
@@ -2863,6 +2875,15 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
}
}
+ if(array_key_exists('obj',$arr) && $arr['obj'])
+ sync_objs($channel,$arr['obj']);
+
+ if(array_key_exists('app',$arr) && $arr['app'])
+ sync_apps($channel,$arr['app']);
+
+ if(array_key_exists('chatroom',$arr) && $arr['chatroom'])
+ sync_apps($channel,$arr['chatroom']);
+
if(array_key_exists('channel',$arr) && is_array($arr['channel']) && count($arr['channel'])) {
if(array_key_exists('channel_page_flags',$arr['channel']) && intval($arr['channel']['channel_pageflags'])) {
$arr['channel']['channel_removed'] = (($arr['channel']['channel_pageflags'] & 0x8000) ? 1 : 0);
@@ -2900,6 +2921,7 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
$total_feeds ++;
}
+
$disallowed = array('abook_id','abook_account','abook_channel','abook_rating','abook_rating_text');
foreach($arr['abook'] as $abook) {
@@ -2988,7 +3010,6 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
foreach($clean as $k => $v) {
if($k == 'abook_dob')
$v = dbescdate($v);
-
$r = dbq("UPDATE abook set " . dbesc($k) . " = '" . dbesc($v)
. "' where abook_xchan = '" . dbesc($clean['abook_xchan']) . "' and abook_channel = " . intval($channel['channel_id']));
}
diff --git a/doc/install/sample-lighttpd.conf b/install/sample-lighttpd.conf
index db26c3b64..db26c3b64 100644
--- a/doc/install/sample-lighttpd.conf
+++ b/install/sample-lighttpd.conf
diff --git a/doc/install/sample-nginx.conf b/install/sample-nginx.conf
index e9a80d226..e9a80d226 100644
--- a/doc/install/sample-nginx.conf
+++ b/install/sample-nginx.conf
diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql
index b1d59a0f5..1793f89c2 100644
--- a/install/schema_mysql.sql
+++ b/install/schema_mysql.sql
@@ -108,6 +108,8 @@ CREATE TABLE IF NOT EXISTS `app` (
`app_price` char(255) NOT NULL DEFAULT '',
`app_page` char(255) NOT NULL DEFAULT '',
`app_requires` char(255) NOT NULL DEFAULT '',
+ `app_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `app_edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `app_id` (`app_id`),
KEY `app_name` (`app_name`),
@@ -115,7 +117,9 @@ CREATE TABLE IF NOT EXISTS `app` (
KEY `app_photo` (`app_photo`),
KEY `app_version` (`app_version`),
KEY `app_channel` (`app_channel`),
- KEY `app_price` (`app_price`)
+ KEY `app_price` (`app_price`),
+ KEY `app_created` (`app_created`),
+ KEY `app_edited` (`app_edited`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `attach` (
@@ -367,6 +371,12 @@ CREATE TABLE IF NOT EXISTS `event` (
`allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL,
`deny_gid` mediumtext NOT NULL,
+ `event_status` char(255) NOT NULL DEFAULT '',
+ `event_status_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `event_percent` smallint(6) NOT NULL DEFAULT '0',
+ `event_repeat` text NOT NULL,
+ `event_sequence` smallint(6) NOT NULL DEFAULT '0',
+ `event_priority` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `type` (`type`),
@@ -377,7 +387,10 @@ CREATE TABLE IF NOT EXISTS `event` (
KEY `ignore` (`ignore`),
KEY `aid` (`aid`),
KEY `event_hash` (`event_hash`),
- KEY `event_xchan` (`event_xchan`)
+ KEY `event_xchan` (`event_xchan`),
+ KEY `event_status` (`event_status`),
+ KEY `event_sequence` (`event_sequence`),
+ KEY `event_priority` (`event_priority`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `fcontact` (
@@ -679,6 +692,7 @@ CREATE TABLE IF NOT EXISTS `likes` (
`liker` char(128) NOT NULL DEFAULT '',
`likee` char(128) NOT NULL DEFAULT '',
`iid` int(11) unsigned NOT NULL DEFAULT '0',
+ `i_mid` char(255) NOT NULL DEFAULT '',
`verb` char(255) NOT NULL DEFAULT '',
`target_type` char(255) NOT NULL DEFAULT '',
`target_id` char(128) NOT NULL DEFAULT '',
@@ -687,6 +701,7 @@ CREATE TABLE IF NOT EXISTS `likes` (
KEY `liker` (`liker`),
KEY `likee` (`likee`),
KEY `iid` (`iid`),
+ KEY `i_mid` (`i_mid`),
KEY `verb` (`verb`),
KEY `target_type` (`target_type`),
KEY `channel_id` (`channel_id`),
@@ -812,6 +827,11 @@ CREATE TABLE IF NOT EXISTS `obj` (
`obj_type` int(10) unsigned NOT NULL DEFAULT '0',
`obj_obj` char(255) NOT NULL DEFAULT '',
`obj_channel` int(10) unsigned NOT NULL DEFAULT '0',
+ `obj_term` char(255) NOT NULL DEFAULT '',
+ `obj_url` char(255) NOT NULL DEFAULT '',
+ `obj_imgurl` char(255) NOT NULL DEFAULT '',
+ `obj_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `obj_edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL,
@@ -821,6 +841,11 @@ CREATE TABLE IF NOT EXISTS `obj` (
KEY `obj_page` (`obj_page`),
KEY `obj_type` (`obj_type`),
KEY `obj_channel` (`obj_channel`),
+ KEY `obj_term` (`obj_term`),
+ KEY `obj_url` (`obj_url`),
+ KEY `obj_imgurl` (`obj_imgurl`),
+ KEY `obj_created` (`obj_created`),
+ KEY `obj_edited` (`obj_edited`),
KEY `obj_obj` (`obj_obj`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql
index 7d81f31aa..d31c304eb 100644
--- a/install/schema_postgres.sql
+++ b/install/schema_postgres.sql
@@ -107,6 +107,8 @@ CREATE TABLE "app" (
"app_price" text NOT NULL DEFAULT '',
"app_page" text NOT NULL DEFAULT '',
"app_requires" text NOT NULL DEFAULT '',
+ "app_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "app_edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY ("id")
);
create index "app_id" on app ("app_id");
@@ -116,6 +118,8 @@ create index "app_photo" on app ("app_photo");
create index "app_version" on app ("app_version");
create index "app_channel" on app ("app_channel");
create index "app_price" on app ("app_price");
+create index "app_created" on app ("app_created");
+create index "app_edited" on app ("app_edited");
CREATE TABLE "attach" (
"id" serial NOT NULL,
"aid" bigint NOT NULL DEFAULT '0',
@@ -358,6 +362,12 @@ CREATE TABLE "event" (
"allow_gid" text NOT NULL,
"deny_cid" text NOT NULL,
"deny_gid" text NOT NULL,
+ "event_status" char(255) NOT NULL DEFAULT '',
+ "event_status_date" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "event_percent" smallint(6) NOT NULL DEFAULT '0',
+ "event_repeat" text NOT NULL,
+ "event_sequence" smallint NOT NULL DEFAULT '0',
+ "event_priority" smallint NOT NULL DEFAULT '0',
PRIMARY KEY ("id")
);
create index "event_uid_idx" on event ("uid");
@@ -370,6 +380,9 @@ create index "event_ignore_idx" on event ("ignore");
create index "event_aid_idx" on event ("aid");
create index "event_hash_idx" on event ("event_hash");
create index "event_xchan_idx" on event ("event_xchan");
+create index "event_status_idx" on event ("event_status");
+create index "event_sequence_idx" on event ("event_sequence");
+create index "event_priority_idx" on event ("event_priority");
CREATE TABLE "fcontact" (
@@ -672,6 +685,7 @@ CREATE TABLE "likes" (
"liker" char(128) NOT NULL DEFAULT '',
"likee" char(128) NOT NULL DEFAULT '',
"iid" bigint NOT NULL DEFAULT '0',
+ "i_mid" char(255) NOT NULL DEFAULT '',
"verb" text NOT NULL DEFAULT '',
"target_type" text NOT NULL DEFAULT '',
"target_id" char(128) NOT NULL DEFAULT '',
@@ -682,6 +696,7 @@ create index "likes_channel_id" on likes ("channel_id");
create index "likes_liker" on likes ("liker");
create index "likes_likee" on likes ("likee");
create index "likes_iid" on likes ("iid");
+create index "likes_i_mid" on likes ("i_mid");
create index "likes_verb" on likes ("verb");
create index "likes_target_type" on likes ("target_type");
create index "likes_target_id" on likes ("target_id");
@@ -801,6 +816,11 @@ CREATE TABLE "obj" (
"obj_type" bigint NOT NULL DEFAULT '0',
"obj_obj" text NOT NULL DEFAULT '',
"obj_channel" bigint NOT NULL DEFAULT '0',
+ "obj_term" char(255) NOT NULL DEFAULT '',
+ "obj_url" char(255) NOT NULL DEFAULT '',
+ "obj_imgurl" char(255) NOT NULL DEFAULT '',
+ "obj_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "obj_edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"allow_cid" text NOT NULL,
"allow_gid" text NOT NULL,
"deny_cid" text NOT NULL,
@@ -813,6 +833,11 @@ create index "obj_page" on obj ("obj_page");
create index "obj_type" on obj ("obj_type");
create index "obj_channel" on obj ("obj_channel");
create index "obj_obj" on obj ("obj_obj");
+create index "obj_term" on obj ("obj_term");
+create index "obj_url" on obj ("obj_url");
+create index "obj_imgurl" on obj ("obj_imgurl");
+create index "obj_created" on obj ("obj_created");
+create index "obj_edited" on obj ("obj_edited");
CREATE TABLE "outq" (
"outq_hash" text NOT NULL,
diff --git a/install/update.php b/install/update.php
index e8c4f578e..339d0cb25 100644
--- a/install/update.php
+++ b/install/update.php
@@ -1,6 +1,6 @@
<?php
-define( 'UPDATE_VERSION' , 1145 );
+define( 'UPDATE_VERSION' , 1152 );
/**
*
@@ -1686,4 +1686,121 @@ function update_r1144() {
}
return UPDATE_SUCCESS;
-} \ No newline at end of file
+}
+
+function update_r1145() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE event ADD event_status char(255) NOT NULL DEFAULT '',
+ ADD event_status_date timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ ADD event_percent SMALLINT NOT NULL DEFAULT '0',
+ ADD event_repeat TEXT NOT NULL DEFAULT '' ");
+ $r2 = q("create index event_status on event ( event_status )");
+ $r = $r1 && $r2;
+ }
+ else {
+ $r = q("ALTER TABLE `event` ADD `event_status` CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD `event_status_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
+ ADD `event_percent` SMALLINT NOT NULL DEFAULT '0',
+ ADD `event_repeat` TEXT NOT NULL DEFAULT '',
+ ADD INDEX ( `event_status` ) ");
+ }
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+function update_r1146() {
+
+ $r1 = q("alter table event add event_sequence smallint not null default '0' ");
+ $r2 = q("create index event_sequence on event ( event_sequence ) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+function update_r1147() {
+
+ $r1 = q("alter table event add event_priority smallint not null default '0' ");
+ $r2 = q("create index event_priority on event ( event_priority ) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+function update_r1148() {
+ $r1 = q("alter table likes add i_mid char(255) not null default '' ");
+ $r2 = q("create index i_mid on likes ( i_mid ) ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+function update_r1149() {
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE obj ADD obj_term CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_url CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_imgurl CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ ADD obj_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ }
+ else {
+ $r1 = q("ALTER TABLE obj ADD obj_term CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_url CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_imgurl CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_created DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
+ ADD obj_edited DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ");
+ }
+
+ $r2 = q("create index obj_term on obj ( obj_term ) ");
+ $r3 = q("create index obj_url on obj ( obj_url ) ");
+ $r4 = q("create index obj_imgurl on obj ( obj_imgurl ) ");
+ $r5 = q("create index obj_created on obj ( obj_created ) ");
+ $r6 = q("create index obj_edited on obj ( obj_edited ) ");
+ $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6;
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+function update_r1150() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE app ADD app_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ ADD app_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ }
+ else {
+ $r1 = q("ALTER TABLE app ADD app_created DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
+ ADD app_edited DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ");
+ }
+
+ $r2 = q("create index app_created on app ( app_created ) ");
+ $r3 = q("create index app_edited on app ( app_edited ) ");
+
+ $r = $r1 && $r2 && $r3;
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+function update_r1151() {
+
+ $r3 = q("select likes.*, item.mid from likes left join item on likes.iid = item.id");
+ if($r3) {
+ foreach($r3 as $rr) {
+ q("update likes set i_mid = '%s' where id = $d",
+ dbesc($rr['mid']),
+ intval($rr['id'])
+ );
+ }
+ }
+
+
+ return UPDATE_SUCCESS;
+
+}
diff --git a/library/cacert.pem b/library/cacert.pem
index 633005921..f71ec3f84 100644
--- a/library/cacert.pem
+++ b/library/cacert.pem
@@ -1,7 +1,7 @@
##
## Bundle of CA Root Certificates
##
-## Certificate data from Mozilla downloaded on: Wed Sep 3 03:12:03 2014
+## Certificate data from Mozilla as of: Wed Apr 22 03:12:04 2015
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
@@ -13,66 +13,11 @@
## an Apache+mod_ssl webserver for SSL client authentication.
## Just configure this file as the SSLCACertificateFile.
##
-## Conversion done with mk-ca-bundle.pl verison 1.22.
-## SHA1: c4540021427a6fa29e5f50db9f12d48c97d33889
+## Conversion done with mk-ca-bundle.pl version 1.25.
+## SHA1: ed3c0bbfb7912bcc00cd2033b0cb85c98d10559c
##
-GTE CyberTrust Global Root
-==========================
------BEGIN CERTIFICATE-----
-MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
-Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
-A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
-MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
-Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
-IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
-sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
-HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
-AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
-M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
-NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
------END CERTIFICATE-----
-
-Thawte Server CA
-================
------BEGIN CERTIFICATE-----
-MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
-DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
-dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
-AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
-b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
-BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
-c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
-A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
-ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
-/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
-1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
-MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
-GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
-GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
------END CERTIFICATE-----
-
-Thawte Premium Server CA
-========================
------BEGIN CERTIFICATE-----
-MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
-DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
-dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
-AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
-ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
-AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
-VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
-aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
-cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
-aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
-Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
-qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
-SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
-8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
-UCemDaYj+bvLpgcUQg==
------END CERTIFICATE-----
-
Equifax Secure CA
=================
-----BEGIN CERTIFICATE-----
@@ -93,25 +38,6 @@ BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
70+sB3c4
-----END CERTIFICATE-----
-Verisign Class 3 Public Primary Certification Authority - G2
-============================================================
------BEGIN CERTIFICATE-----
-MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
-dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
-dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
-FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
-lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
-MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
-1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
-Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
------END CERTIFICATE-----
-
GlobalSign Root CA
==================
-----BEGIN CERTIFICATE-----
@@ -248,40 +174,6 @@ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
-----END CERTIFICATE-----
-Equifax Secure Global eBusiness CA
-==================================
------BEGIN CERTIFICATE-----
-MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
-bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
-HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
-b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
-PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
-qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
-hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
-BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
-MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
-I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
-NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
------END CERTIFICATE-----
-
-Equifax Secure eBusiness CA 1
-=============================
------BEGIN CERTIFICATE-----
-MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
-LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
-ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
-IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
-1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
-IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
-MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
-Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
-AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
-lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
-KpYrtWKmpj29f5JZzVoqgrI3eQ==
------END CERTIFICATE-----
-
AddTrust Low-Value Services Root
================================
-----BEGIN CERTIFICATE-----
@@ -527,59 +419,6 @@ gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
-----END CERTIFICATE-----
-America Online Root Certification Authority 1
-=============================================
------BEGIN CERTIFICATE-----
-MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
-Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
-A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
-T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
-v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
-DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
-sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
-8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
-AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
-o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
-GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
-VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
-3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
-Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
-sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
------END CERTIFICATE-----
-
-America Online Root Certification Authority 2
-=============================================
------BEGIN CERTIFICATE-----
-MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
-Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
-A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
-T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
-ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
-fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
-f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
-qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
-RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
-gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
-6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
-FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
-Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
-B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
-aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
-AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
-T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
-+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
-JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
-zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
-ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
-1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
-GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
-Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
-cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
------END CERTIFICATE-----
-
Visa eCommerce Root
===================
-----BEGIN CERTIFICATE-----
@@ -1777,33 +1616,6 @@ JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
vQ==
-----END CERTIFICATE-----
-TC TrustCenter Class 3 CA II
-============================
------BEGIN CERTIFICATE-----
-MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
-REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
-IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
-MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
-c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
-AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
-yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
-6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
-uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
-2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
-/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
-7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
-Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
-cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
-SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
-TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
-O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
-yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
-IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
-092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
-5A==
------END CERTIFICATE-----
-
TC TrustCenter Universal CA I
=============================
-----BEGIN CERTIFICATE-----
@@ -2421,28 +2233,6 @@ yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
LXpUq3DDfSJlgnCW
-----END CERTIFICATE-----
-E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
-===================================================
------BEGIN CERTIFICATE-----
-MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
-EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
-ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
-MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
-cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
-aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
-8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
-jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
-JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
-9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
-AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
-SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
-F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
-D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
-Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
-fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
------END CERTIFICATE-----
-
GlobalSign Root CA - R3
=======================
-----BEGIN CERTIFICATE-----
@@ -3892,6 +3682,310 @@ ONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Leie2uPAmvylezkolwQOQv
T8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR12KvxAmLBsX5VYc8T1yaw15zLKYs4SgsO
kI26oQ==
-----END CERTIFICATE-----
+
+COMODO RSA Certification Authority
+==================================
+-----BEGIN CERTIFICATE-----
+MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE
+BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
+A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC
+R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
+ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB
+dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn
+dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ
+FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+
+5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG
+x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX
+2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL
+OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3
+sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C
+GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5
+WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
+FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
+DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt
+rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+
+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg
+tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW
+sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp
+pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA
+zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq
+ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52
+7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I
+LaZRfyHBNVOFBkpdn627G190
+-----END CERTIFICATE-----
+
+USERTrust RSA Certification Authority
+=====================================
+-----BEGIN CERTIFICATE-----
+MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE
+BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK
+ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE
+BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK
+ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz
+0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j
+Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn
+RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O
++T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq
+/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE
+Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM
+lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8
+yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+
+eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
+BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
+MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW
+FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ
+7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ
+Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM
+8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi
+FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi
+yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c
+J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw
+sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx
+Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9
+-----END CERTIFICATE-----
+
+USERTrust ECC Certification Authority
+=====================================
+-----BEGIN CERTIFICATE-----
+MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
+aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
+aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2
+0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez
+nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV
+HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB
+HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
+9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
+-----END CERTIFICATE-----
+
+GlobalSign ECC Root CA - R4
+===========================
+-----BEGIN CERTIFICATE-----
+MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
+OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
+AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
+MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
+JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
+-----END CERTIFICATE-----
+
+GlobalSign ECC Root CA - R5
+===========================
+-----BEGIN CERTIFICATE-----
+MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6
+SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS
+h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
+BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx
+uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
+yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
+-----END CERTIFICATE-----
+
+Staat der Nederlanden Root CA - G3
+==================================
+-----BEGIN CERTIFICATE-----
+MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE
+CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
+Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC
+TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
+ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y
+olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t
+x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy
+EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K
+Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur
+mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5
+1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp
+07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo
+FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE
+41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB
+AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu
+yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD
+U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq
+KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1
+v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA
+8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b
+8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r
+mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq
+1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI
+JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV
+tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk=
+-----END CERTIFICATE-----
+
+Staat der Nederlanden EV Root CA
+================================
+-----BEGIN CERTIFICATE-----
+MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE
+CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
+RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M
+MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl
+cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk
+SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW
+O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r
+0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8
+Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV
+XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr
+08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV
+0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd
+74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx
+fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC
+MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa
+ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI
+eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu
+c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq
+5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN
+b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN
+f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi
+5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4
+WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK
+DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy
+eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg==
+-----END CERTIFICATE-----
+
+IdenTrust Commercial Root CA 1
+==============================
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG
+EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS
+b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES
+MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB
+IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld
+hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/
+mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi
+1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C
+XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl
+3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy
+NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV
+WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg
+xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix
+uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC
+AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI
+hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH
+6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg
+ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt
+ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV
+YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX
+feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro
+kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe
+2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz
+Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R
+cGzM7vRX+Bi6hG6H
+-----END CERTIFICATE-----
+
+IdenTrust Public Sector Root CA 1
+=================================
+-----BEGIN CERTIFICATE-----
+MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG
+EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv
+ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV
+UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS
+b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy
+P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6
+Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI
+rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf
+qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS
+mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn
+ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh
+LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v
+iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL
+4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B
+Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw
+DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj
+t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A
+mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt
+GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt
+m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx
+NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4
+Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI
+ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC
+ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ
+3Wl9af0AVqW3rLatt8o+Ae+c
+-----END CERTIFICATE-----
+
+Entrust Root Certification Authority - G2
+=========================================
+-----BEGIN CERTIFICATE-----
+MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV
+BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy
+bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug
+b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw
+HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT
+DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx
+OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s
+eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi
+MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP
+/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz
+HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU
+s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y
+TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx
+AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6
+0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z
+iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
+Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi
+nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+
+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO
+e4pIb4tF9g==
+-----END CERTIFICATE-----
+
+Entrust Root Certification Authority - EC1
+==========================================
+-----BEGIN CERTIFICATE-----
+MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx
+FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn
+YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl
+ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
+IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw
+FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs
+LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg
+dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt
+IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy
+AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef
+9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
+FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h
+vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8
+kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
+-----END CERTIFICATE-----
+
+CFCA EV ROOT
+============
+-----BEGIN CERTIFICATE-----
+MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE
+CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB
+IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw
+MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD
+DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV
+BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD
+7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN
+uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW
+ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7
+xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f
+py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K
+gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol
+hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ
+tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf
+BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
+/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB
+ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q
+ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua
+4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG
+E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX
+BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn
+aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy
+PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX
+kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C
+ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
+-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB
hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
diff --git a/library/certs/cacert.pem b/library/certs/cacert.pem
index fa9df81f7..440e52d0a 100644
--- a/library/certs/cacert.pem
+++ b/library/certs/cacert.pem
@@ -1,7 +1,7 @@
##
## Bundle of CA Root Certificates
##
-## Certificate data from Mozilla downloaded on: Wed Sep 3 03:12:03 2014
+## Certificate data from Mozilla as of: Wed Apr 22 03:12:04 2015
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
@@ -13,66 +13,11 @@
## an Apache+mod_ssl webserver for SSL client authentication.
## Just configure this file as the SSLCACertificateFile.
##
-## Conversion done with mk-ca-bundle.pl verison 1.22.
-## SHA1: c4540021427a6fa29e5f50db9f12d48c97d33889
+## Conversion done with mk-ca-bundle.pl version 1.25.
+## SHA1: ed3c0bbfb7912bcc00cd2033b0cb85c98d10559c
##
-GTE CyberTrust Global Root
-==========================
------BEGIN CERTIFICATE-----
-MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
-Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
-A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
-MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
-Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
-IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
-sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
-HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
-AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
-M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
-NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
------END CERTIFICATE-----
-
-Thawte Server CA
-================
------BEGIN CERTIFICATE-----
-MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
-DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
-dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
-AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
-b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
-BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
-c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
-A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
-ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
-/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
-1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
-MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
-GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
-GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
------END CERTIFICATE-----
-
-Thawte Premium Server CA
-========================
------BEGIN CERTIFICATE-----
-MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
-DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
-dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
-AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
-ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
-AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
-VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
-aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
-cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
-aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
-Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
-qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
-SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
-8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
-UCemDaYj+bvLpgcUQg==
------END CERTIFICATE-----
-
Equifax Secure CA
=================
-----BEGIN CERTIFICATE-----
@@ -93,25 +38,6 @@ BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
70+sB3c4
-----END CERTIFICATE-----
-Verisign Class 3 Public Primary Certification Authority - G2
-============================================================
------BEGIN CERTIFICATE-----
-MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
-dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
-dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
-FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
-lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
-MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
-1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
-Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
------END CERTIFICATE-----
-
GlobalSign Root CA
==================
-----BEGIN CERTIFICATE-----
@@ -248,40 +174,6 @@ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
-----END CERTIFICATE-----
-Equifax Secure Global eBusiness CA
-==================================
------BEGIN CERTIFICATE-----
-MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
-bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
-HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
-b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
-PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
-qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
-hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
-BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
-MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
-I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
-NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
------END CERTIFICATE-----
-
-Equifax Secure eBusiness CA 1
-=============================
------BEGIN CERTIFICATE-----
-MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
-LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
-ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
-IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
-1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
-IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
-MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
-Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
-AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
-lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
-KpYrtWKmpj29f5JZzVoqgrI3eQ==
------END CERTIFICATE-----
-
AddTrust Low-Value Services Root
================================
-----BEGIN CERTIFICATE-----
@@ -527,59 +419,6 @@ gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
-----END CERTIFICATE-----
-America Online Root Certification Authority 1
-=============================================
------BEGIN CERTIFICATE-----
-MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
-Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
-A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
-T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
-v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
-DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
-sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
-8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
-AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
-o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
-GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
-VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
-3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
-Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
-sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
------END CERTIFICATE-----
-
-America Online Root Certification Authority 2
-=============================================
------BEGIN CERTIFICATE-----
-MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
-Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
-A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
-T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
-ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
-fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
-f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
-qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
-RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
-gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
-6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
-FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
-Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
-B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
-aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
-AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
-T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
-+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
-JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
-zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
-ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
-1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
-GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
-Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
-cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
------END CERTIFICATE-----
-
Visa eCommerce Root
===================
-----BEGIN CERTIFICATE-----
@@ -1777,33 +1616,6 @@ JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
vQ==
-----END CERTIFICATE-----
-TC TrustCenter Class 3 CA II
-============================
------BEGIN CERTIFICATE-----
-MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
-REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
-IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
-MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
-c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
-AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
-yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
-6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
-uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
-2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
-/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
-7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
-Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
-cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
-SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
-TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
-O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
-yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
-IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
-092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
-5A==
------END CERTIFICATE-----
-
TC TrustCenter Universal CA I
=============================
-----BEGIN CERTIFICATE-----
@@ -2421,28 +2233,6 @@ yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
LXpUq3DDfSJlgnCW
-----END CERTIFICATE-----
-E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
-===================================================
------BEGIN CERTIFICATE-----
-MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
-EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
-ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
-MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
-cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
-aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
-8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
-jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
-JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
-9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
-AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
-SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
-F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
-D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
-Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
-fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
------END CERTIFICATE-----
-
GlobalSign Root CA - R3
=======================
-----BEGIN CERTIFICATE-----
@@ -3892,3 +3682,307 @@ ONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Leie2uPAmvylezkolwQOQv
T8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR12KvxAmLBsX5VYc8T1yaw15zLKYs4SgsO
kI26oQ==
-----END CERTIFICATE-----
+
+COMODO RSA Certification Authority
+==================================
+-----BEGIN CERTIFICATE-----
+MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE
+BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
+A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC
+R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
+ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB
+dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn
+dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ
+FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+
+5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG
+x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX
+2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL
+OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3
+sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C
+GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5
+WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
+FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
+DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt
+rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+
+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg
+tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW
+sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp
+pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA
+zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq
+ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52
+7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I
+LaZRfyHBNVOFBkpdn627G190
+-----END CERTIFICATE-----
+
+USERTrust RSA Certification Authority
+=====================================
+-----BEGIN CERTIFICATE-----
+MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE
+BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK
+ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE
+BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK
+ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz
+0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j
+Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn
+RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O
++T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq
+/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE
+Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM
+lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8
+yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+
+eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
+BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
+MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW
+FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ
+7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ
+Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM
+8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi
+FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi
+yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c
+J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw
+sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx
+Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9
+-----END CERTIFICATE-----
+
+USERTrust ECC Certification Authority
+=====================================
+-----BEGIN CERTIFICATE-----
+MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
+aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
+aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2
+0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez
+nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV
+HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB
+HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
+9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
+-----END CERTIFICATE-----
+
+GlobalSign ECC Root CA - R4
+===========================
+-----BEGIN CERTIFICATE-----
+MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
+OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
+AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
+MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
+JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
+-----END CERTIFICATE-----
+
+GlobalSign ECC Root CA - R5
+===========================
+-----BEGIN CERTIFICATE-----
+MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6
+SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS
+h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
+BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx
+uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
+yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
+-----END CERTIFICATE-----
+
+Staat der Nederlanden Root CA - G3
+==================================
+-----BEGIN CERTIFICATE-----
+MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE
+CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
+Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC
+TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
+ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y
+olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t
+x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy
+EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K
+Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur
+mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5
+1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp
+07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo
+FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE
+41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB
+AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu
+yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD
+U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq
+KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1
+v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA
+8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b
+8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r
+mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq
+1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI
+JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV
+tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk=
+-----END CERTIFICATE-----
+
+Staat der Nederlanden EV Root CA
+================================
+-----BEGIN CERTIFICATE-----
+MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE
+CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
+RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M
+MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl
+cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk
+SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW
+O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r
+0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8
+Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV
+XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr
+08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV
+0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd
+74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx
+fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC
+MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa
+ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI
+eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu
+c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq
+5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN
+b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN
+f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi
+5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4
+WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK
+DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy
+eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg==
+-----END CERTIFICATE-----
+
+IdenTrust Commercial Root CA 1
+==============================
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG
+EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS
+b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES
+MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB
+IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld
+hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/
+mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi
+1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C
+XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl
+3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy
+NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV
+WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg
+xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix
+uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC
+AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI
+hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH
+6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg
+ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt
+ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV
+YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX
+feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro
+kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe
+2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz
+Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R
+cGzM7vRX+Bi6hG6H
+-----END CERTIFICATE-----
+
+IdenTrust Public Sector Root CA 1
+=================================
+-----BEGIN CERTIFICATE-----
+MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG
+EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv
+ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV
+UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS
+b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy
+P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6
+Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI
+rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf
+qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS
+mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn
+ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh
+LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v
+iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL
+4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B
+Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw
+DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj
+t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A
+mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt
+GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt
+m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx
+NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4
+Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI
+ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC
+ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ
+3Wl9af0AVqW3rLatt8o+Ae+c
+-----END CERTIFICATE-----
+
+Entrust Root Certification Authority - G2
+=========================================
+-----BEGIN CERTIFICATE-----
+MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV
+BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy
+bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug
+b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw
+HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT
+DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx
+OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s
+eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi
+MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP
+/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz
+HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU
+s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y
+TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx
+AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6
+0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z
+iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
+Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi
+nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+
+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO
+e4pIb4tF9g==
+-----END CERTIFICATE-----
+
+Entrust Root Certification Authority - EC1
+==========================================
+-----BEGIN CERTIFICATE-----
+MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx
+FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn
+YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl
+ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
+IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw
+FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs
+LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg
+dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt
+IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy
+AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef
+9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
+FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h
+vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8
+kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
+-----END CERTIFICATE-----
+
+CFCA EV ROOT
+============
+-----BEGIN CERTIFICATE-----
+MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE
+CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB
+IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw
+MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD
+DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV
+BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD
+7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN
+uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW
+ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7
+xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f
+py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K
+gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol
+hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ
+tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf
+BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
+/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB
+ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q
+ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua
+4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG
+E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX
+BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn
+aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy
+PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX
+kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C
+ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
+-----END CERTIFICATE-----
diff --git a/mod/admin.php b/mod/admin.php
index 794bac69b..89207e4fa 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -677,7 +677,7 @@ function admin_page_users_post($a) {
intval($users[$i])
);
}
- notice( sprintf( tt("%s user blocked/unblocked", "%s users blocked/unblocked", count($users)), count($users)) );
+ notice( sprintf( tt("%s account blocked/unblocked", "%s account blocked/unblocked", count($users)), count($users)) );
}
// account delete button was submitted
if (x($_POST, 'page_users_delete')) {
@@ -685,7 +685,7 @@ function admin_page_users_post($a) {
foreach ($users as $uid){
account_remove($uid, true, false);
}
- notice( sprintf( tt("%s user deleted", "%s users deleted", count($users)), count($users)) );
+ notice( sprintf( tt("%s account deleted", "%s accounts deleted", count($users)), count($users)) );
}
// registration approved button was submitted
if (x($_POST, 'page_users_approve')) {
@@ -733,7 +733,7 @@ function admin_page_users(&$a){
require_once('include/Contact.php');
account_remove($uid,true,false);
- notice( sprintf(t("User '%s' deleted"), $account[0]['account_email']) . EOL);
+ notice( sprintf(t("Account '%s' deleted"), $account[0]['account_email']) . EOL);
break;
case 'block':
q("UPDATE account SET account_flags = ( account_flags | %d ) WHERE account_id = %d",
@@ -741,7 +741,7 @@ function admin_page_users(&$a){
intval($uid)
);
- notice( sprintf( t("User '%s' blocked") , $account[0]['account_email']) . EOL);
+ notice( sprintf( t("Account '%s' blocked") , $account[0]['account_email']) . EOL);
break;
case 'unblock':
q("UPDATE account SET account_flags = ( account_flags & ~%d ) WHERE account_id = %d",
@@ -749,7 +749,7 @@ function admin_page_users(&$a){
intval($uid)
);
- notice( sprintf( t("User '%s' unblocked"), $account[0]['account_email']) . EOL);
+ notice( sprintf( t("Account '%s' unblocked"), $account[0]['account_email']) . EOL);
break;
}
@@ -826,8 +826,8 @@ function admin_page_users(&$a){
'$h_users' => t('Users'),
'$th_users' => array( t('ID'), t('Email'), t('All Channels'), t('Register date'), t('Last login'), t('Expires'), t('Service Class')),
- '$confirm_delete_multi' => t('Selected users will be deleted!\n\nEverything these users had posted on this site will be permanently deleted!\n\nAre you sure?'),
- '$confirm_delete' => t('The user {0} will be deleted!\n\nEverything this user has posted on this site will be permanently deleted!\n\nAre you sure?'),
+ '$confirm_delete_multi' => t('Selected accounts will be deleted!\n\nEverything these accounts had posted on this site will be permanently deleted!\n\nAre you sure?'),
+ '$confirm_delete' => t('The account {0} will be deleted!\n\nEverything this account has posted on this site will be permanently deleted!\n\nAre you sure?'),
'$form_security_token' => get_form_security_token("admin_users"),
diff --git a/mod/chat.php b/mod/chat.php
index c54d29313..9ad58bc32 100644
--- a/mod/chat.php
+++ b/mod/chat.php
@@ -54,20 +54,21 @@ function chat_post(&$a) {
goaway(z_root() . '/chat/' . $channel['channel_address']);
}
+ $acl = new AccessList($channel);
+ $acl->set_from_array($_REQUEST);
- $arr = array('name' => $room);
- $arr['allow_gid'] = perms2str($_REQUEST['group_allow']);
- $arr['allow_cid'] = perms2str($_REQUEST['contact_allow']);
- $arr['deny_gid'] = perms2str($_REQUEST['group_deny']);
- $arr['deny_cid'] = perms2str($_REQUEST['contact_deny']);
+ $arr = $acl->get();
+ $arr['name'] = $room;
chatroom_create($channel,$arr);
- $x = q("select cr_id from chatroom where cr_name = '%s' and cr_uid = %d limit 1",
+ $x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1",
dbesc($room),
intval(local_channel())
);
+ create_sync_packet(0, array('chatroom' => $x));
+
if($x)
goaway(z_root() . '/chat/' . $channel['channel_address'] . '/' . $x[0]['cr_id']);
@@ -158,7 +159,10 @@ function chat_content(&$a) {
intval($a->profile['profile_uid'])
);
if($x) {
- $private = ((($x[0]['allow_cid']) || ($x[0]['allow_gid']) || ($x[0]['deny_cid']) || ($x[0]['deny_gid'])) ? true : false);
+ $acl = new AccessList(false);
+ $acl->set($x[0]);
+
+ $private = $acl->is_private();
$room_name = $x[0]['cr_name'];
if($bookmark_link)
$bookmark_link .= '&url=' . z_root() . '/chat/' . argv(1) . '/' . argv(2) . '&title=' . urlencode($x[0]['cr_name']) . (($private) ? '&private=1' : '') . '&ischat=1';
@@ -192,14 +196,8 @@ function chat_content(&$a) {
if(local_channel() && argc() > 2 && argv(2) === 'new') {
-
-
- $channel_acl = array(
- 'allow_cid' => $channel['channel_allow_cid'],
- 'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid']
- );
+ $acl = new AccessList($channel);
+ $channel_acl = $acl->get();
require_once('include/acl_selectors.php');
diff --git a/mod/connections.php b/mod/connections.php
index 2f1a1fdf5..2060ca85e 100644
--- a/mod/connections.php
+++ b/mod/connections.php
@@ -19,143 +19,6 @@ function connections_init(&$a) {
}
-function connections_post(&$a) {
-
- if(! local_channel())
- return;
-
- $contact_id = intval(argv(1));
- if(! $contact_id)
- return;
-
- $orig_record = q("SELECT * FROM abook WHERE abook_id = %d AND abook_channel = %d LIMIT 1",
- intval($contact_id),
- intval(local_channel())
- );
-
- if(! $orig_record) {
- notice( t('Could not access contact record.') . EOL);
- goaway(z_root() . '/connections');
- return; // NOTREACHED
- }
-
- call_hooks('contact_edit_post', $_POST);
-
- $profile_id = $_POST['profile_assign'];
- if($profile_id) {
- $r = q("SELECT profile_guid FROM profile WHERE profile_guid = '%s' AND `uid` = %d LIMIT 1",
- dbesc($profile_id),
- intval(local_channel())
- );
- if(! count($r)) {
- notice( t('Could not locate selected profile.') . EOL);
- return;
- }
- }
-
- $hidden = intval($_POST['hidden']);
-
- $priority = intval($_POST['poll']);
- if($priority > 5 || $priority < 0)
- $priority = 0;
-
- $closeness = intval($_POST['closeness']);
- if($closeness < 0)
- $closeness = 99;
-
- $abook_my_perms = 0;
-
- foreach($_POST as $k => $v) {
- if(strpos($k,'perms_') === 0) {
- $abook_my_perms += $v;
- }
- }
-
- $new_friend = false;
-
- if(($_REQUEST['pending']) && intval($orig_record[0]['abook_pending'])) {
- $new_friend = true;
- }
-
- $r = q("UPDATE abook SET abook_profile = '%s', abook_my_perms = %d , abook_closeness = %d, abook_pending = %d
- where abook_id = %d AND abook_channel = %d",
- dbesc($profile_id),
- intval($abook_my_perms),
- intval($closeness),
- intval(1 - intval($new_friend)),
- intval($contact_id),
- intval(local_channel())
- );
-
- if($r)
- info( t('Connection updated.') . EOL);
- else
- notice( t('Failed to update connection record.') . EOL);
-
- if((x($a->data,'abook')) && $a->data['abook']['abook_my_perms'] != $abook_my_perms
- && (! intval($a->data['abook']['abook_self']))) {
- proc_run('php', 'include/notifier.php', 'permission_update', $contact_id);
- }
-
- if($new_friend) {
- $channel = $a->get_channel();
- $default_group = $channel['channel_default_group'];
- if($default_group) {
- require_once('include/group.php');
- $g = group_rec_byhash(local_channel(),$default_group);
- if($g)
- group_add_member(local_channel(),'',$a->data['abook_xchan'],$g['id']);
- }
-
-
-
- // Check if settings permit ("post new friend activity" is allowed, and
- // friends in general or this friend in particular aren't hidden)
- // and send out a new friend activity
- // TODO
-
- // pull in a bit of content if there is any to pull in
- proc_run('php','include/onepoll.php',$contact_id);
-
- }
-
- // Refresh the structure in memory with the new data
-
- $r = q("SELECT abook.*, xchan.*
- FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_channel = %d and abook_id = %d LIMIT 1",
- intval(local_channel()),
- intval($contact_id)
- );
- if($r) {
- $a->data['abook'] = $r[0];
- }
-
- if($new_friend) {
- $arr = array('channel_id' => local_channel(), 'abook' => $a->data['abook']);
- call_hooks('accept_follow', $arr);
- }
-
- connections_clone($a);
-
- return;
-
-}
-
-function connections_clone(&$a) {
-
- if(! array_key_exists('abook',$a->data))
- return;
- $clone = $a->data['abook'];
-
- unset($clone['abook_id']);
- unset($clone['abook_account']);
- unset($clone['abook_channel']);
-
- build_sync_packet(0 /* use the current local_channel */, array('abook' => array($clone)));
-}
-
-
function connections_content(&$a) {
$sort_type = 0;
diff --git a/mod/connedit.php b/mod/connedit.php
index 866f83615..75a5fd719 100644
--- a/mod/connedit.php
+++ b/mod/connedit.php
@@ -314,6 +314,17 @@ function connedit_clone(&$a) {
if(! $a->poi)
return;
+
+ $r = q("SELECT abook.*, xchan.*
+ FROM abook left join xchan on abook_xchan = xchan_hash
+ WHERE abook_channel = %d and abook_id = %d LIMIT 1",
+ intval(local_channel()),
+ intval($a->poi['abook_id'])
+ );
+ if($r) {
+ $a->poi = $r[0];
+ }
+
$clone = $a->poi;
unset($clone['abook_id']);
diff --git a/mod/editpost.php b/mod/editpost.php
index 235ae9def..daca7c154 100644
--- a/mod/editpost.php
+++ b/mod/editpost.php
@@ -32,6 +32,12 @@ function editpost_content(&$a) {
return;
}
+ if($itm[0]['resource_type'] === 'event' && $itm[0]['resource_id']) {
+ goaway(z_root() . '/events/event/' . $itm[0]['resource_id']);
+ }
+
+
+
$plaintext = true;
// if(feature_enabled(local_channel(),'richtext'))
// $plaintext = false;
diff --git a/mod/events.php b/mod/events.php
index c2bacfe44..9120f8713 100755
--- a/mod/events.php
+++ b/mod/events.php
@@ -8,7 +8,7 @@ require_once('include/items.php');
function events_post(&$a) {
- logger('post: ' . print_r($_REQUEST,true));
+ logger('post: ' . print_r($_REQUEST,true), LOGGER_DATA);
if(! local_channel())
return;
@@ -41,16 +41,11 @@ function events_post(&$a) {
$categories = escape_tags(trim($_POST['category']));
-
-
// only allow editing your own events.
if(($xchan) && ($xchan !== get_observer_hash()))
return;
- // The default setting for the `private` field in event_store() is false, so mirror that
- $private_event = false;
-
if($start_text) {
$start = $start_text;
}
@@ -89,14 +84,14 @@ function events_post(&$a) {
$summary = escape_tags(trim($_POST['summary']));
$desc = escape_tags(trim($_POST['desc']));
$location = escape_tags(trim($_POST['location']));
- $type = 'event';
+ $type = escape_tags(trim($_POST['type']));
require_once('include/text.php');
linkify_tags($a, $desc, local_channel());
linkify_tags($a, $location, local_channel());
$action = ($event_hash == '') ? 'new' : "event/" . $event_hash;
- $onerror_url = $a->get_baseurl() . "/events/" . $action . "?summary=$summary&description=$desc&location=$location&start=$start_text&finish=$finish_text&adjust=$adjust&nofinish=$nofinish";
+ $onerror_url = $a->get_baseurl() . "/events/" . $action . "?summary=$summary&description=$desc&location=$location&start=$start_text&finish=$finish_text&adjust=$adjust&nofinish=$nofinish&type=$type";
if(strcmp($finish,$start) < 0 && !$nofinish) {
notice( t('Event can not end before it has started.') . EOL);
if(intval($_REQUEST['preview'])) {
@@ -119,6 +114,8 @@ function events_post(&$a) {
$channel = $a->get_channel();
+ $acl = new AccessList(false);
+
if($event_id) {
$x = q("select * from event where id = %d and uid = %d limit 1",
intval($event_id),
@@ -132,44 +129,33 @@ function events_post(&$a) {
}
return;
}
+
+ $acl->set($x[0]);
+
+ $created = $x[0]['created'];
+ $edited = datetime_convert();
+
if($x[0]['allow_cid'] === '<' . $channel['channel_hash'] . '>'
&& $x[0]['allow_gid'] === '' && $x[0]['deny_cid'] === '' && $x[0]['deny_gid'] === '') {
$share = false;
}
else {
$share = true;
- $str_group_allow = $x[0]['allow_gid'];
- $str_contact_allow = $x[0]['allow_cid'];
- $str_group_deny = $x[0]['deny_gid'];
- $str_contact_deny = $x[0]['deny_cid'];
-
- if(strlen($str_group_allow) || strlen($str_contact_allow)
- || strlen($str_group_deny) || strlen($str_contact_deny)) {
- $private_event = true;
- }
}
}
else {
+ $created = $edited = datetime_convert();
if($share) {
- $str_group_allow = perms2str($_POST['group_allow']);
- $str_contact_allow = perms2str($_POST['contact_allow']);
- $str_group_deny = perms2str($_POST['group_deny']);
- $str_contact_deny = perms2str($_POST['contact_deny']);
-
- if(strlen($str_group_allow) || strlen($str_contact_allow)
- || strlen($str_group_deny) || strlen($str_contact_deny)) {
- $private_event = true;
- }
+ $acl->set_from_array($_POST);
}
else {
- $str_contact_allow = '<' . $channel['channel_hash'] . '>';
- $str_group_allow = $str_contact_deny = $str_group_deny = '';
- $private_event = true;
+ $acl->set(array('allow_cid' => '<' . $channel['channel_hash'] . '>', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => ''));
}
}
$post_tags = array();
$channel = $a->get_channel();
+ $ac = $acl->get();
if(strlen($categories)) {
$cats = explode(',',$categories);
@@ -196,11 +182,11 @@ function events_post(&$a) {
$datarray['uid'] = local_channel();
$datarray['account'] = get_account_id();
$datarray['event_xchan'] = $channel['channel_hash'];
- $datarray['allow_cid'] = $str_contact_allow;
- $datarray['allow_gid'] = $str_group_allow;
- $datarray['deny_cid'] = $str_contact_deny;
- $datarray['deny_gid'] = $str_group_deny;
- $datarray['private'] = (($private_event) ? 1 : 0);
+ $datarray['allow_cid'] = $ac['allow_cid'];
+ $datarray['allow_gid'] = $ac['allow_gid'];
+ $datarray['deny_cid'] = $ac['deny_cid'];
+ $datarray['deny_gid'] = $ac['deny_gid'];
+ $datarray['private'] = (($acl->is_private()) ? 1 : 0);
$datarray['id'] = $event_id;
$datarray['created'] = $created;
$datarray['edited'] = $edited;
@@ -228,6 +214,27 @@ function events_post(&$a) {
function events_content(&$a) {
+ if(argc() > 2 && argv(1) == 'ical') {
+ $event_id = argv(2);
+
+ require_once('include/security.php');
+ $sql_extra = permissions_sql(local_channel());
+
+ $r = q("select * from event where event_hash = '%s' $sql_extra limit 1",
+ dbesc($event_id)
+ );
+ if($r) {
+ header('Content-type: text/calendar');
+ header('content-disposition: attachment; filename="' . t('event') . '-' . $event_id . '.ics"' );
+ echo ical_wrapper($r);
+ killme();
+ }
+ else {
+ notice( t('Event not found.') . EOL );
+ return;
+ }
+ }
+
if(! local_channel()) {
notice( t('Permission denied.') . EOL);
return;
@@ -306,6 +313,10 @@ function events_content(&$a) {
killme();
}
+
+
+
+
if($mode == 'view') {
@@ -366,8 +377,18 @@ function events_content(&$a) {
intval(local_channel()),
intval($_GET['id'])
);
- } else {
-
+ } elseif($export) {
+ $r = q("SELECT * from event where uid = %d
+ AND (( `adjust` = 0 AND ( `finish` >= '%s' or nofinish = 1 ) AND `start` <= '%s' )
+ OR ( `adjust` = 1 AND ( `finish` >= '%s' or nofinish = 1 ) AND `start` <= '%s' )) ",
+ intval(local_channel()),
+ dbesc($start),
+ dbesc($finish),
+ dbesc($adjust_start),
+ dbesc($adjust_finish)
+ );
+ }
+ else {
// fixed an issue with "nofinish" events not showing up in the calendar.
// There's still an issue if the finish date crosses the end of month.
// Noting this for now - it will need to be fixed here and in Friendica.
@@ -384,17 +405,19 @@ function events_content(&$a) {
dbesc($adjust_start),
dbesc($adjust_finish)
);
-
}
+
$links = array();
- if($r) {
+ if($r && ! $export) {
xchan_query($r);
$r = fetch_post_tags($r,true);
$r = sort_by_date($r);
+ }
+ if($r) {
foreach($r as $rr) {
$j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'j') : datetime_convert('UTC','UTC',$rr['start'],'j'));
if(! x($links,$j))
@@ -402,7 +425,6 @@ function events_content(&$a) {
}
}
-
$events=array();
$last_date = '';
@@ -547,9 +569,7 @@ function events_content(&$a) {
if(x($_REQUEST,'location')) $orig_event['location'] = $_REQUEST['location'];
if(x($_REQUEST,'start')) $orig_event['start'] = $_REQUEST['start'];
if(x($_REQUEST,'finish')) $orig_event['finish'] = $_REQUEST['finish'];
- }
-
- if($mode === 'edit' || $mode === 'new') {
+ if(x($_REQUEST,'type')) $orig_event['type'] = $_REQUEST['type'];
$n_checked = ((x($orig_event) && $orig_event['nofinish']) ? ' checked="checked" ' : '');
$a_checked = ((x($orig_event) && $orig_event['adjust']) ? ' checked="checked" ' : '');
@@ -568,9 +588,6 @@ function events_content(&$a) {
if($orig_event['event_xchan'])
$sh_checked .= ' disabled="disabled" ';
-
-
-
$sdt = ((x($orig_event)) ? $orig_event['start'] : 'now');
$fdt = ((x($orig_event)) ? $orig_event['finish'] : 'now');
@@ -596,6 +613,7 @@ function events_content(&$a) {
$fminute = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'i') : 0);
$ftext = datetime_convert('UTC',$tz,$fdt);
$ftext = substr($ftext,0,14) . "00:00";
+ $type = ((x($orig_event)) ? $orig_event['type'] : 'event');
$f = get_config('system','event_input_format');
if(! $f)
@@ -623,18 +641,16 @@ function events_content(&$a) {
require_once('include/acl_selectors.php');
- $perm_defaults = array(
- 'allow_cid' => $channel['channel_allow_cid'],
- 'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid']
- );
+ $acl = new AccessList($channel);
+ $perm_defaults = $acl->get();
+
$tpl = get_markup_template('event_form.tpl');
$o .= replace_macros($tpl,array(
'$post' => $a->get_baseurl() . '/events',
'$eid' => $eid,
+ '$type' => $type,
'$xchan' => $event_xchan,
'$mid' => $mid,
'$event_hash' => $event_id,
diff --git a/mod/filestorage.php b/mod/filestorage.php
index 9787c0380..7ba8c1801 100644
--- a/mod/filestorage.php
+++ b/mod/filestorage.php
@@ -28,20 +28,20 @@ function filestorage_post(&$a) {
return;
}
- $str_group_allow = perms2str($_REQUEST['group_allow']);
- $str_contact_allow = perms2str($_REQUEST['contact_allow']);
- $str_group_deny = perms2str($_REQUEST['group_deny']);
- $str_contact_deny = perms2str($_REQUEST['contact_deny']);
-
$channel = $a->get_channel();
+
+ $acl = new AccessList($channel);
+ $acl->set_from_array($_REQUEST);
+ $x = $acl->get();
+
$cloudPath = get_parent_cloudpath($channel_id, $channel['channel_address'], $resource);
//get the object before permissions change so we can catch eventual former allowed members
$object = get_file_activity_object($channel_id, $resource, $cloudPath);
- attach_change_permissions($channel_id, $resource, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny, $recurse);
+ attach_change_permissions($channel_id, $resource, $x['allow_cid'], $x['allow_gid'], $x['deny_cid'], $x['deny_gid'], $recurse);
- file_activity($channel_id, $object, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny, 'post', $notify);
+ file_activity($channel_id, $object, $x['allow_cid'], $x['allow_gid'], $x['deny_cid'], $x['deny_gid'], 'post', $notify);
goaway($cloudPath);
}
diff --git a/mod/help.php b/mod/help.php
index 809313a3e..16ec069a7 100644
--- a/mod/help.php
+++ b/mod/help.php
@@ -12,9 +12,6 @@
-
-
-
function load_doc_file($s) {
$lang = get_app()->language;
if(! isset($lang))
@@ -32,21 +29,6 @@ function load_doc_file($s) {
}
function find_doc_file($s) {
-
- // If the file was edited more recently than we've stored a copy in the database, use the file.
- // The stored database item will be searchable, the file won't be.
-
- $r = q("select item.* from item left join item_id on item.id = item_id.iid where service = 'docfile' and
- sid = '%s' and item_type = %d limit 1",
- dbesc($s),
- intval(ITEM_TYPE_DOC)
- );
-
- if($r) {
- if(file_exists($s) && (filemtime($s) > datetime_convert('UTC','UTC',$r[0]['edited'],'U')))
- return file_get_contents($s);
- return($r[0]['body']);
- }
if(file_exists($s))
return file_get_contents($s);
return '';
@@ -56,12 +38,9 @@ function search_doc_files($s) {
$a = get_app();
- $itemspage = get_pconfig(local_channel(),'system','itemspage');
- $a->set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
- $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval($a->pager['itemspage']), intval($a->pager['start']));
-
- // If the file was edited more recently than we've stored a copy in the database, use the file.
- // The stored database item will be searchable, the file won't be.
+ $itemspage = get_pconfig(local_channel(),'system','itemspage');
+ $a->set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
+ $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval($a->pager['itemspage']), intval($a->pager['start']));
$regexop = db_getfunc('REGEXP');
@@ -72,11 +51,10 @@ function search_doc_files($s) {
);
$r = fetch_post_tags($r,true);
- require_once('include/html2plain.php');
for($x = 0; $x < count($r); $x ++) {
- $r[$x]['text'] = html2plain(prepare_text($r[$x]['body'],$r[$x]['mimetype'], true));
+ $r[$x]['text'] = $r[$x]['body'];
$r[$x]['rank'] = 0;
if($r[$x]['term']) {
@@ -89,16 +67,20 @@ function search_doc_files($s) {
if(stristr($r[$x]['sid'],$s))
$r[$x]['rank'] ++;
$r[$x]['rank'] += substr_count(strtolower($r[$x]['text']),strtolower($s));
+ // bias the results to the observer's native language
+ if($r[$x]['lang'] === $a->language)
+ $r[$x]['rank'] = $r[$x]['rank'] + 10;
+
}
usort($r,'doc_rank_sort');
return $r;
}
-function doc_rank_sort($a,$b) {
- if($a['rank'] == $b['rank'])
+function doc_rank_sort($s1,$s2) {
+ if($s1['rank'] == $s2['rank'])
return 0;
- return (($a['rank'] < $b['rank']) ? 1 : (-1));
+ return (($s1['rank'] < $s2['rank']) ? 1 : (-1));
}
@@ -118,14 +100,17 @@ function store_doc_file($s) {
if(strpos($s,'.md'))
- $item['mimetype'] = 'text/markdown';
+ $mimetype = 'text/markdown';
elseif(strpos($s,'.html'))
- $item['mimetype'] = 'text/html';
+ $mimetype = 'text/html';
else
- $item['mimetype'] = 'text/bbcode';
+ $mimetype = 'text/bbcode';
+ require_once('include/html2plain.php');
+
+ $item['body'] = html2plain(prepare_text(file_get_contents($s),$mimetype, true));
+ $item['mimetype'] = 'text/plain';
- $item['body'] = file_get_contents($s);
$item['plink'] = z_root() . '/' . str_replace('doc','help',$s);
$item['owner_xchan'] = $item['author_xchan'] = $sys['channel_hash'];
$item['item_type'] = ITEM_TYPE_DOC;
@@ -158,9 +143,12 @@ function help_content(&$a) {
nav_set_selected('help');
if($_REQUEST['search']) {
+
+ $o .= '<h2>' . t('Documentation Search') . ' - ' . htmlspecialchars($_REQUEST['search']) . '</h2>';
+
$r = search_doc_files($_REQUEST['search']);
if($r) {
- $o .= '<ul>';
+ $o .= '<ul class="help-searchlist">';
foreach($r as $rr) {
$dirname = dirname($rr['sid']);
$fname = basename($rr['sid']);
diff --git a/mod/import.php b/mod/import.php
index deee0c6e7..1d1799e00 100644
--- a/mod/import.php
+++ b/mod/import.php
@@ -6,6 +6,8 @@
require_once('include/Contact.php');
require_once('include/zot.php');
require_once('include/identity.php');
+require_once('include/import.php');
+
function import_post(&$a) {
@@ -118,125 +120,47 @@ function import_post(&$a) {
// import channel
if(array_key_exists('channel',$data)) {
- $channel = $data['channel'];
if($completed < 1) {
+ $channel = import_channel($data['channel']);
- if(! array_key_exists('channel_system',$channel)) {
- $channel['channel_system'] = (($channel['channel_pageflags'] & 0x1000) ? 1 : 0);
- $channel['channel_removed'] = (($channel['channel_pageflags'] & 0x8000) ? 1 : 0);
- }
-
- $r = q("select * from channel where (channel_guid = '%s' or channel_hash = '%s' or channel_address = '%s' ) limit 1",
- dbesc($channel['channel_guid']),
- dbesc($channel['channel_hash']),
- dbesc($channel['channel_address'])
- );
-
- // We should probably also verify the hash
-
- if($r) {
- if($r[0]['channel_guid'] === $channel['channel_guid'] || $r[0]['channel_hash'] === $channel['channel_hash']) {
- logger('mod_import: duplicate channel. ', print_r($channel,true));
- notice( t('Cannot create a duplicate channel identifier on this system. Import failed.') . EOL);
- return;
- }
- else {
- // try at most ten times to generate a unique address.
- $x = 0;
- $found_unique = false;
- do {
- $tmp = $channel['channel_address'] . mt_rand(1000,9999);
- $r = q("select * from channel where channel_address = '%s' limit 1",
- dbesc($tmp)
- );
- if(! $r) {
- $channel['channel_address'] = $tmp;
- $found_unique = true;
- break;
- }
- $x ++;
- } while ($x < 10);
- if(! $found_unique) {
- logger('mod_import: duplicate channel. randomisation failed.', print_r($channel,true));
- notice( t('Unable to create a unique channel address. Import failed.') . EOL);
- return;
- }
- }
- }
-
- unset($channel['channel_id']);
- $channel['channel_account_id'] = get_account_id();
- $channel['channel_primary'] = (($seize) ? 1 : 0);
-
- dbesc_array($channel);
-
- $r = dbq("INSERT INTO channel (`"
- . implode("`, `", array_keys($channel))
- . "`) VALUES ('"
- . implode("', '", array_values($channel))
- . "')" );
-
- if(! $r) {
- logger('mod_import: channel clone failed. ', print_r($channel,true));
- notice( t('Channel clone failed. Import failed.') . EOL);
- return;
- }
-
+ }
+ else {
$r = q("select * from channel where channel_account_id = %d and channel_guid = '%s' limit 1",
intval(get_account_id()),
- $channel['channel_guid'] // Already dbesc'd
+ dbesc($channel['channel_guid'])
);
- if(! $r) {
- logger('mod_import: channel not found. ', print_r($channel,true));
- notice( t('Cloned channel not found. Import failed.') . EOL);
- return;
- }
- // reset
- $channel = $r[0];
-
- set_default_login_identity(get_account_id(),$channel['channel_id'],false);
- logger('import step 1');
- $_SESSION['import_step'] = 1;
- ref_session_write(session_id(), serialize($_SESSION));
+ if($r)
+ $channel = $r[0];
}
- }
- else {
- $r = q("select * from channel where channel_account_id = %d and channel_guid = '%s' limit 1",
- intval(get_account_id()),
- dbesc($channel['channel_guid'])
- );
- if($r)
- $channel = $r[0];
- else {
+ if(! $channel) {
logger('mod_import: channel not found. ', print_r($channel,true));
notice( t('Cloned channel not found. Import failed.') . EOL);
return;
}
}
- if($completed < 2) {
+ if(! $channel)
+ $channel = $a->get_channel();
+
+ if(! $channel) {
+ logger('mod_import: channel not found. ', print_r($channel,true));
+ notice( t('No channel. Import failed.') . EOL);
+ return;
+ }
- $configs = $data['config'];
- if($configs) {
- foreach($configs as $config) {
- unset($config['id']);
- $config['uid'] = $channel['channel_id'];
- dbesc_array($config);
- $r = dbq("INSERT INTO pconfig (`"
- . implode("`, `", array_keys($config))
- . "`) VALUES ('"
- . implode("', '", array_values($config))
- . "')" );
- }
+
+ if($completed < 2) {
+ if(is_array($data['config'])) {
+ import_config($channel,$data['config']);
}
+
logger('import step 2');
$_SESSION['import_step'] = 2;
ref_session_write(session_id(), serialize($_SESSION));
}
-
if($completed < 3) {
if($data['photo']) {
@@ -244,28 +168,9 @@ function import_post(&$a) {
import_channel_photo(base64url_decode($data['photo']['data']),$data['photo']['type'],get_account_id(),$channel['channel_id']);
}
- $profiles = $data['profile'];
- if($profiles) {
- foreach($profiles as $profile) {
- unset($profile['id']);
- $profile['aid'] = get_account_id();
- $profile['uid'] = $channel['channel_id'];
-
- // we are going to reset all profile photos to the original
- // somebody will have to fix this later and put all the applicable photos into the export
-
- $profile['photo'] = z_root() . '/photo/profile/l/' . $channel['channel_id'];
- $profile['thumb'] = z_root() . '/photo/profile/m/' . $channel['channel_id'];
-
+ if(is_array($data['profile']))
+ import_profiles($channel,$data['profile']);
- dbesc_array($profile);
- $r = dbq("INSERT INTO profile (`"
- . implode("`, `", array_keys($profile))
- . "`) VALUES ('"
- . implode("', '", array_values($profile))
- . "')" );
- }
- }
logger('import step 3');
$_SESSION['import_step'] = 3;
ref_session_write(session_id(), serialize($_SESSION));
@@ -273,37 +178,10 @@ function import_post(&$a) {
if($completed < 4) {
- $hublocs = $data['hubloc'];
- if($hublocs) {
- foreach($hublocs as $hubloc) {
-
- if(! array_key_exists('hubloc_primary',$hublocs)) {
- $hubloc['hubloc_primary'] = (($hubloc['hubloc_flags'] & 0x0001) ? 1 : 0);
- $hubloc['hubloc_orphancheck'] = (($hubloc['hubloc_flags'] & 0x0004) ? 1 : 0);
- $hubloc['hubloc_error'] = (($hubloc['hubloc_status'] & 0x0003) ? 1 : 0);
- $hubloc['hubloc_deleted'] = (($hubloc['hubloc_flags'] & 0x1000) ? 1 : 0);
- }
- $arr = array(
- 'guid' => $hubloc['hubloc_guid'],
- 'guid_sig' => $hubloc['guid_sig'],
- 'url' => $hubloc['hubloc_url'],
- 'url_sig' => $hubloc['hubloc_url_sig']
- );
- if(($hubloc['hubloc_hash'] === $channel['channel_hash']) && intval($hubloc['hubloc_primary']) && ($seize))
- $hubloc['hubloc_primary'] = 0;
+ if(is_array($data['hubloc'])) {
+ import_hublocs($channel,$data['hubloc'],$seize);
- if(! zot_gethub($arr)) {
- unset($hubloc['hubloc_id']);
- dbesc_array($hubloc);
-
- $r = dbq("INSERT INTO hubloc (`"
- . implode("`, `", array_keys($hubloc))
- . "`) VALUES ('"
- . implode("', '", array_values($hubloc))
- . "')" );
- }
- }
}
logger('import step 4');
$_SESSION['import_step'] = 4;
@@ -384,6 +262,13 @@ function import_post(&$a) {
$xchans = $data['xchan'];
if($xchans) {
foreach($xchans as $xchan) {
+
+ $hash = make_xchan_hash($xchan['xchan_guid'],$xchan['xchan_guid_sig']);
+ if($xchan['xchan_network'] === 'zot' && $hash !== $xchan['xchan_hash']) {
+ logger('forged xchan: ' . print_r($xchan,true));
+ continue;
+ }
+
if(! array_key_exists('xchan_hidden',$xchan)) {
$xchan['xchan_hidden'] = (($xchan['xchan_flags'] & 0x0001) ? 1 : 0);
$xchan['xchan_orphan'] = (($xchan['xchan_flags'] & 0x0002) ? 1 : 0);
@@ -410,7 +295,7 @@ function import_post(&$a) {
require_once('include/photo/photo_driver.php');
- $photos = import_profile_photo($xchan['xchan_photo_l'],$xchan['xchan_hash']);
+ $photos = import_xchan_photo($xchan['xchan_photo_l'],$xchan['xchan_hash']);
if($photos[4])
$photodate = NULL_DATE;
else
@@ -435,7 +320,7 @@ function import_post(&$a) {
-// FIXME - ensure we have an xchan if somebody is trying to pull a fast one
+ // FIXME - ensure we have an xchan if somebody is trying to pull a fast one
if($completed < 8) {
$friends = 0;
@@ -544,6 +429,15 @@ function import_post(&$a) {
ref_session_write(session_id(), serialize($_SESSION));
}
+ if(is_array($data['obj']))
+ import_objs($channel,$data['obj']);
+
+ if(is_array($data['app']))
+ import_apps($channel,$data['app']);
+
+ if(is_array($data['chatroom']))
+ import_chatrooms($channel,$data['chatroom']);
+
$saved_notification_flags = notifications_off($channel['channel_id']);
if($import_posts && array_key_exists('item',$data) && $data['item']) {
@@ -602,7 +496,7 @@ function import_post(&$a) {
-// FIXME - ensure we have a self entry if somebody is trying to pull a fast one
+ // FIXME - ensure we have a self entry if somebody is trying to pull a fast one
// send out refresh requests
// notify old server that it may no longer be primary.
diff --git a/mod/import_items.php b/mod/import_items.php
new file mode 100644
index 000000000..1e54c0deb
--- /dev/null
+++ b/mod/import_items.php
@@ -0,0 +1,172 @@
+<?php
+
+
+function import_items_post(&$a) {
+
+ if(! local_channel())
+ return;
+
+ $data = null;
+
+ $src = $_FILES['filename']['tmp_name'];
+ $filename = basename($_FILES['filename']['name']);
+ $filesize = intval($_FILES['filename']['size']);
+ $filetype = $_FILES['filename']['type'];
+
+ if($src) {
+ // This is OS specific and could also fail if your tmpdir isn't very large
+ // mostly used for Diaspora which exports gzipped files.
+
+ if(strpos($filename,'.gz')){
+ @rename($src,$src . '.gz');
+ @system('gunzip ' . escapeshellarg($src . '.gz'));
+ }
+
+ if($filesize) {
+ $data = @file_get_contents($src);
+ }
+ unlink($src);
+ }
+
+ if(! $src) {
+
+ $old_address = ((x($_REQUEST,'old_address')) ? $_REQUEST['old_address'] : '');
+
+ if(! $old_address) {
+ logger('mod_import: nothing to import.');
+ notice( t('Nothing to import.') . EOL);
+ return;
+ }
+
+ $email = ((x($_REQUEST,'email')) ? $_REQUEST['email'] : '');
+ $password = ((x($_REQUEST,'password')) ? $_REQUEST['password'] : '');
+
+ $year = ((x($_REQUEST,'year')) ? $_REQUEST['year'] : '');
+
+ $channelname = substr($old_address,0,strpos($old_address,'@'));
+ $servername = substr($old_address,strpos($old_address,'@')+1);
+
+ $scheme = 'https://';
+ $api_path = '/api/red/channel/export/items?f=&channel=' . $channelname . '&year=' . intval($year);
+ $binary = false;
+ $redirects = 0;
+ $opts = array('http_auth' => $email . ':' . $password);
+ $url = $scheme . $servername . $api_path;
+ $ret = z_fetch_url($url, $binary, $redirects, $opts);
+ if(! $ret['success'])
+ $ret = z_fetch_url('http://' . $servername . $api_path, $binary, $redirects, $opts);
+ if($ret['success'])
+ $data = $ret['body'];
+ else
+ notice( t('Unable to download data from old server') . EOL);
+
+ }
+
+ if(! $data) {
+ logger('mod_import: empty file.');
+ notice( t('Imported file is empty.') . EOL);
+ return;
+ }
+
+ $data = json_decode($data,true);
+
+// logger('import: data: ' . print_r($data,true));
+// print_r($data);
+
+
+ if(array_key_exists('compatibility',$data) && array_key_exists('database',$data['compatibility'])) {
+ $v1 = substr($data['compatibility']['database'],-4);
+ $v2 = substr(DB_UPDATE_VERSION,-4);
+ if($v2 > $v1) {
+ $t = sprintf( t('Warning: Database versions differ by %1$d updates.'), $v2 - $v1 );
+ notice($t);
+ }
+ }
+
+ $channel = $a->get_channel();
+
+ $saved_notification_flags = notifications_off($channel['channel_id']);
+
+ if(array_key_exists('item',$data) && $data['item']) {
+
+ foreach($data['item'] as $i) {
+ $item = get_item_elements($i);
+
+ $r = q("select id, edited from item where mid = '%s' and uid = %d limit 1",
+ dbesc($item['mid']),
+ intval($channel['channel_id'])
+ );
+ if($r) {
+ if($item['edited'] > $r[0]['edited']) {
+ $item['id'] = $r[0]['id'];
+ $item['uid'] = $channel['channel_id'];
+ item_store_update($item);
+ continue;
+ }
+ }
+ else {
+ $item['aid'] = $channel['channel_account_id'];
+ $item['uid'] = $channel['channel_id'];
+ $item_result = item_store($item);
+ }
+
+ }
+
+ }
+
+ notifications_on($channel['channel_id'],$saved_notification_flags);
+
+ if(array_key_exists('item_id',$data) && $data['item_id']) {
+ foreach($data['item_id'] as $i) {
+ $r = q("select id from item where mid = '%s' and uid = %d limit 1",
+ dbesc($i['mid']),
+ intval($channel['channel_id'])
+ );
+ if(! $r)
+ continue;
+ $z = q("select * from item_id where service = '%s' and sid = '%s' and iid = %d and uid = %d limit 1",
+ dbesc($i['service']),
+ dbesc($i['sid']),
+ intval($r[0]['id']),
+ intval($channel['channel_id'])
+ );
+ if(! $z) {
+ q("insert into item_id (iid,uid,sid,service) values(%d,%d,'%s','%s')",
+ intval($r[0]['id']),
+ intval($channel['channel_id']),
+ dbesc($i['sid']),
+ dbesc($i['service'])
+ );
+ }
+ }
+ }
+
+ info( t('Import completed') . EOL);
+ return;
+}
+
+
+
+
+function import_items_content(&$a) {
+
+
+
+
+ if(! local_channel()) {
+ notice( t('Permission denied') . EOL);
+ return login();
+ }
+
+ $o = replace_macros(get_markup_template('item_import.tpl'),array(
+ '$title' => t('Import Items'),
+ '$desc' => t('Use this form to import existing posts and content from an export file.'),
+ '$label_filename' => t('File to Upload'),
+ '$submit' => t('Submit')
+ ));
+
+ return $o;
+
+}
+
+
diff --git a/mod/item.php b/mod/item.php
index ff6a834e6..c93560771 100644
--- a/mod/item.php
+++ b/mod/item.php
@@ -305,6 +305,8 @@ function item_post(&$a) {
}
}
+ $acl = new AccessList($channel);
+
$public_policy = ((x($_REQUEST,'public_policy')) ? escape_tags($_REQUEST['public_policy']) : map_scope($channel['channel_r_stream'],true));
if($webpage)
@@ -316,28 +318,17 @@ function item_post(&$a) {
$private = 0;
// webpages are allowed to change ACLs after the fact. Normal conversation items aren't.
if($webpage) {
- $str_group_allow = perms2str($_REQUEST['group_allow']);
- $str_contact_allow = perms2str($_REQUEST['contact_allow']);
- $str_group_deny = perms2str($_REQUEST['group_deny']);
- $str_contact_deny = perms2str($_REQUEST['contact_deny']);
+ $acl->set_from_array($_REQUEST);
}
else {
- $str_group_allow = $orig_post['allow_gid'];
- $str_contact_allow = $orig_post['allow_cid'];
- $str_group_deny = $orig_post['deny_gid'];
- $str_contact_deny = $orig_post['deny_cid'];
+ $acl->set($orig_post);
$public_policy = $orig_post['public_policy'];
$private = $orig_post['item_private'];
}
- if((strlen($str_group_allow))
- || strlen($str_contact_allow)
- || strlen($str_group_deny)
- || strlen($str_contact_deny)
- || strlen($public_policy)
- || $private) {
+ if($private || $public_policy || $acl->is_private())
$private = 1;
- }
+
$location = $orig_post['location'];
$coord = $orig_post['coord'];
@@ -381,38 +372,12 @@ function item_post(&$a) {
}
else {
-
- // if coming from the API and no privacy settings are set,
- // use the user default permissions - as they won't have
- // been supplied via a form.
-
- if(($api_source)
- && (! array_key_exists('contact_allow',$_REQUEST))
- && (! array_key_exists('group_allow',$_REQUEST))
- && (! array_key_exists('contact_deny',$_REQUEST))
- && (! array_key_exists('group_deny',$_REQUEST))) {
- $str_group_allow = $channel['channel_allow_gid'];
- $str_contact_allow = $channel['channel_allow_cid'];
- $str_group_deny = $channel['channel_deny_gid'];
- $str_contact_deny = $channel['channel_deny_cid'];
- }
- elseif($walltowall) {
-
- // use the channel owner's default permissions
-
- $str_group_allow = $channel['channel_allow_gid'];
- $str_contact_allow = $channel['channel_allow_cid'];
- $str_group_deny = $channel['channel_deny_gid'];
- $str_contact_deny = $channel['channel_deny_cid'];
- }
- else {
-
- // use the posted permissions
-
- $str_group_allow = perms2str($_REQUEST['group_allow']);
- $str_contact_allow = perms2str($_REQUEST['contact_allow']);
- $str_group_deny = perms2str($_REQUEST['group_deny']);
- $str_contact_deny = perms2str($_REQUEST['contact_deny']);
+ if((! $walltowall) &&
+ ((array_key_exists('contact_allow',$_REQUEST))
+ || (array_key_exists('group_allow',$_REQUEST))
+ || (array_key_exists('contact_deny',$_REQUEST))
+ || (array_key_exists('group_deny',$_REQUEST)))) {
+ $acl->set_from_array($_REQUEST);
}
@@ -424,33 +389,15 @@ function item_post(&$a) {
$body .= trim($_REQUEST['attachment']);
$postopts = '';
- $private = (
- ( strlen($str_group_allow)
- || strlen($str_contact_allow)
- || strlen($str_group_deny)
- || strlen($str_contact_deny)
- || strlen($public_policy)
- ) ? 1 : 0);
+ $private = intval($acl->is_private() || ($public_policy));
// If this is a comment, set the permissions from the parent.
if($parent_item) {
$private = 0;
-
- if(($parent_item['item_private'])
- || strlen($parent_item['allow_cid'])
- || strlen($parent_item['allow_gid'])
- || strlen($parent_item['deny_cid'])
- || strlen($parent_item['deny_gid'])
- || strlen($parent_item['public_policy'])) {
- $private = (($parent_item['item_private']) ? $parent_item['item_private'] : 1);
- }
-
+ $acl->set($parent_item);
+ $private = intval($acl->is_private() || $parent_item['item_private']);
$public_policy = $parent_item['public_policy'];
- $str_contact_allow = $parent_item['allow_cid'];
- $str_group_allow = $parent_item['allow_gid'];
- $str_contact_deny = $parent_item['deny_cid'];
- $str_group_deny = $parent_item['deny_gid'];
$owner_hash = $parent_item['owner_xchan'];
}
@@ -505,6 +452,11 @@ function item_post(&$a) {
}
}
+ $gacl = $acl->get();
+ $str_contact_allow = $gacl['allow_cid'];
+ $str_group_allow = $gacl['allow_gid'];
+ $str_contact_deny = $gacl['deny_cid'];
+ $str_group_deny = $gacl['deny_gid'];
if($mimetype === 'text/bbcode') {
@@ -569,9 +521,6 @@ function item_post(&$a) {
$body = preg_replace_callback('/\[img(.*?)\](.*?)\[\/img\]/ism','red_zrlify_img_callback',$body);
-
-
-
$body = bb_translate_video($body);
/**
diff --git a/mod/like.php b/mod/like.php
index 9077adbda..42ff9bb8a 100755
--- a/mod/like.php
+++ b/mod/like.php
@@ -117,8 +117,7 @@ function like_content(&$a) {
}
elseif($obj_type == 'thing') {
- $r = q("select * from obj left join term on obj_obj = term_hash where term_hash != ''
- and obj_type = %d and term_hash = '%s' limit 1",
+ $r = q("select * from obj where obj_type = %d and obj_obj = '%s' limit 1",
intval(TERM_OBJ_THING),
dbesc(argv(2))
);
@@ -146,18 +145,18 @@ function like_content(&$a) {
$links = array();
$links[] = array('rel' => 'alternate', 'type' => 'text/html',
- 'href' => z_root() . '/thing/' . $r[0]['term_hash']);
+ 'href' => z_root() . '/thing/' . $r[0]['obj_obj']);
if($r[0]['imgurl'])
- $links[] = array('rel' => 'photo', 'href' => $r[0]['imgurl']);
+ $links[] = array('rel' => 'photo', 'href' => $r[0]['obj_imgurl']);
$target = json_encode(array(
'type' => $tgttype,
- 'title' => $r[0]['term'],
- 'id' => z_root() . '/thing/' . $r[0]['term_hash'],
+ 'title' => $r[0]['obj_term'],
+ 'id' => z_root() . '/thing/' . $r[0]['obj_obj'],
'link' => $links
));
- $plink = '[zrl=' . z_root() . '/thing/' . $r[0]['term_hash'] . ']' . $r[0]['term'] . '[/zrl]';
+ $plink = '[zrl=' . z_root() . '/thing/' . $r[0]['obj_obj'] . ']' . $r[0]['obj_term'] . '[/zrl]';
}
@@ -480,15 +479,16 @@ function like_content(&$a) {
if($extended_like) {
- $r = q("insert into likes (channel_id,liker,likee,iid,verb,target_type,target_id,target) values (%d,'%s','%s',%d,'%s','%s','%s','%s')",
+ $r = q("insert into likes (channel_id,liker,likee,iid,i_mid,verb,target_type,target_id,target) values (%d,'%s','%s',%d,'%s','%s','%s','%s','%s')",
intval($ch[0]['channel_id']),
dbesc($observer['xchan_hash']),
dbesc($ch[0]['channel_hash']),
intval($post_id),
+ dbesc($mid),
dbesc($activity),
- dbesc(($tgttype)?$tgttype:$objtype),
+ dbesc(($tgttype)? $tgttype : $objtype),
dbesc($obj_id),
- dbesc(json_encode(($target)?$target:$object))
+ dbesc(($target) ? $target : $object)
);
};
diff --git a/mod/parse_url.php b/mod/linkinfo.php
index 2a6f7663e..c3df1305d 100644
--- a/mod/parse_url.php
+++ b/mod/linkinfo.php
@@ -1,29 +1,180 @@
<?php
-require_once('include/oembed.php');
-
-/* To-Do
-https://developers.google.com/+/plugins/snippet/
-
-<meta itemprop="name" content="Toller Titel">
-<meta itemprop="description" content="Eine tolle Beschreibung">
-<meta itemprop="image" content="http://maple.libertreeproject.org/images/tree-icon.png">
-
-<body itemscope itemtype="http://schema.org/Product">
- <h1 itemprop="name">Shiny Trinket</h1>
- <img itemprop="image" src="{image-url}" />
- <p itemprop="description">Shiny trinkets are shiny.</p>
-</body>
-*/
-
-if(!function_exists('deletenode')) {
- function deletenode(&$doc, $node)
- {
- $xpath = new DomXPath($doc);
- $list = $xpath->query("//".$node);
- foreach ($list as $child)
- $child->parentNode->removeChild($child);
+
+function arr_add_hashes(&$item,$k) {
+ $item = '#' . $item;
+}
+
+
+
+function linkinfo_content(&$a) {
+
+ logger('linkinfo: ' . print_r($_REQUEST,true));
+
+ $text = null;
+ $str_tags = '';
+
+
+ $br = "\n";
+
+ if(x($_GET,'binurl'))
+ $url = trim(hex2bin($_GET['binurl']));
+ else
+ $url = trim($_GET['url']);
+
+ if((substr($url,0,1) != '/') && (substr($url,0,4) != 'http'))
+ $url = 'http://' . $url;
+
+
+ if($_GET['title'])
+ $title = strip_tags(trim($_GET['title']));
+
+ if($_GET['description'])
+ $text = strip_tags(trim($_GET['description']));
+
+ if($_GET['tags']) {
+ $arr_tags = str_getcsv($_GET['tags']);
+ if(count($arr_tags)) {
+ array_walk($arr_tags,'arr_add_hashes');
+ $str_tags = $br . implode(' ',$arr_tags) . $br;
+ }
+ }
+
+ logger('linkinfo: ' . $url);
+
+ $result = z_fetch_url($url,false,0,array('novalidate' => true, 'nobody' => true));
+ if($result['success']) {
+ $hdrs=array();
+ $h = explode("\n",$result['header']);
+ foreach ($h as $l) {
+ list($k,$v) = array_map("trim", explode(":", trim($l), 2));
+ $hdrs[$k] = $v;
+ }
+ if (array_key_exists('Content-Type', $hdrs))
+ $type = $hdrs['Content-Type'];
+ if($type) {
+ $zrl = is_matrix_url($url);
+ if(stripos($type,'image/') !== false) {
+ if($zrl)
+ echo $br . '[zmg]' . $url . '[/zmg]' . $br;
+ else
+ echo $br . '[img]' . $url . '[/img]' . $br;
+ killme();
+ }
+ if(stripos($type,'video/') !== false) {
+ if($zrl)
+ echo $br . '[zvideo]' . $url . '[/zvideo]' . $br;
+ else
+ echo $br . '[video]' . $url . '[/video]' . $br;
+ killme();
+ }
+ if(stripos($type,'audio/') !== false) {
+ if($zrl)
+ echo $br . '[zaudio]' . $url . '[/zaudio]' . $br;
+ else
+ echo $br . '[audio]' . $url . '[/audio]' . $br;
+ killme();
+ }
+ }
}
+
+ $template = $br . '#^[url=%s]%s[/url]%s' . $br;
+
+ $arr = array('url' => $url, 'text' => '');
+
+ call_hooks('parse_link', $arr);
+
+ if(strlen($arr['text'])) {
+ echo $arr['text'];
+ killme();
+ }
+
+ $x = oembed_process($url);
+ if($x) {
+ echo $x;
+ killme();
+ }
+
+ if($url && $title && $text) {
+
+ $text = $br . '[quote]' . trim($text) . '[/quote]' . $br;
+
+ $title = str_replace(array("\r","\n"),array('',''),$title);
+
+ $result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags;
+
+ logger('linkinfo (unparsed): returns: ' . $result);
+
+ echo $result;
+ killme();
+ }
+
+ $siteinfo = parseurl_getsiteinfo($url);
+
+ // If this is a Red site, use zrl rather than url so they get zids sent to them by default
+
+ if( x($siteinfo,'generator') && (strpos($siteinfo['generator'],PLATFORM_NAME . ' ') === 0))
+ $template = str_replace('url','zrl',$template);
+
+ if($siteinfo["title"] == "") {
+ echo sprintf($template,$url,$url,'') . $str_tags;
+ killme();
+ } else {
+ $text = $siteinfo["text"];
+ $title = $siteinfo["title"];
+ }
+
+ $image = "";
+
+ if(sizeof($siteinfo["images"]) > 0){
+ /* Execute below code only if image is present in siteinfo */
+
+ $total_images = 0;
+ $max_images = get_config('system','max_bookmark_images');
+ if($max_images === false)
+ $max_images = 2;
+ else
+ $max_images = intval($max_images);
+
+ foreach ($siteinfo["images"] as $imagedata) {
+ if ($url) {
+ $image .= sprintf('[url=%s]', $url);
+ }
+ $image .= '[img='.$imagedata["width"].'x'.$imagedata["height"].']'.$imagedata["src"].'[/img]';
+ if ($url) {
+ $image .= '[/url]';
+ }
+ $image .= "\n";
+ $total_images ++;
+ if($max_images && $max_images >= $total_images)
+ break;
+ }
+ }
+
+ if(strlen($text)) {
+ $text = $br.'[quote]'.trim($text).'[/quote]'.$br ;
+ }
+
+ if($image) {
+ $text = $br.$br.$image.$text;
+ }
+ $title = str_replace(array("\r","\n"),array('',''),$title);
+
+ $result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags;
+
+ logger('linkinfo: returns: ' . $result, LOGGER_DEBUG);
+
+ echo trim($result);
+ killme();
+
+}
+
+
+function deletexnode(&$doc, $node) {
+ $xpath = new DomXPath($doc);
+ $list = $xpath->query("//".$node);
+ foreach ($list as $child)
+ $child->parentNode->removeChild($child);
}
function completeurl($url, $scheme) {
@@ -53,6 +204,7 @@ function completeurl($url, $scheme) {
return($complete);
}
+
function parseurl_getsiteinfo($url) {
$siteinfo = array();
@@ -70,17 +222,17 @@ function parseurl_getsiteinfo($url) {
$doc = new DOMDocument();
@$doc->loadHTML($body);
- deletenode($doc, 'style');
- deletenode($doc, 'script');
- deletenode($doc, 'option');
- deletenode($doc, 'h1');
- deletenode($doc, 'h2');
- deletenode($doc, 'h3');
- deletenode($doc, 'h4');
- deletenode($doc, 'h5');
- deletenode($doc, 'h6');
- deletenode($doc, 'ol');
- deletenode($doc, 'ul');
+ deletexnode($doc, 'style');
+ deletexnode($doc, 'script');
+ deletexnode($doc, 'option');
+ deletexnode($doc, 'h1');
+ deletexnode($doc, 'h2');
+ deletexnode($doc, 'h3');
+ deletexnode($doc, 'h4');
+ deletexnode($doc, 'h5');
+ deletexnode($doc, 'h6');
+ deletexnode($doc, 'ol');
+ deletexnode($doc, 'ul');
$xpath = new DomXPath($doc);
@@ -215,167 +367,3 @@ function parseurl_getsiteinfo($url) {
return($siteinfo);
}
-
-function arr_add_hashes(&$item,$k) {
- $item = '#' . $item;
-}
-
-function parse_url_content(&$a) {
-
- $text = null;
- $str_tags = '';
-
-
- $br = "\n";
-
- if(x($_GET,'binurl'))
- $url = trim(hex2bin($_GET['binurl']));
- else
- $url = trim($_GET['url']);
-
- if((substr($url,0,1) != '/') && (substr($url,0,4) != 'http'))
- $url = 'http://' . $url;
-
-
- if($_GET['title'])
- $title = strip_tags(trim($_GET['title']));
-
- if($_GET['description'])
- $text = strip_tags(trim($_GET['description']));
-
- if($_GET['tags']) {
- $arr_tags = str_getcsv($_GET['tags']);
- if(count($arr_tags)) {
- array_walk($arr_tags,'arr_add_hashes');
- $str_tags = $br . implode(' ',$arr_tags) . $br;
- }
- }
-
- logger('parse_url: ' . $url);
-
- $result = z_fetch_url($url,false,0,array('novalidate' => true, 'nobody' => true));
- if($result['success']) {
- $hdrs=array();
- $h = explode("\n",$result['header']);
- foreach ($h as $l) {
- list($k,$v) = array_map("trim", explode(":", trim($l), 2));
- $hdrs[$k] = $v;
- }
- if (array_key_exists('Content-Type', $hdrs))
- $type = $hdrs['Content-Type'];
- if($type) {
- $zrl = is_matrix_url($url);
- if(stripos($type,'image/') !== false) {
- if($zrl)
- echo $br . '[zmg]' . $url . '[/zmg]' . $br;
- else
- echo $br . '[img]' . $url . '[/img]' . $br;
- killme();
- }
- if(stripos($type,'video/') !== false) {
- if($zrl)
- echo $br . '[zvideo]' . $url . '[/zvideo]' . $br;
- else
- echo $br . '[video]' . $url . '[/video]' . $br;
- killme();
- }
- if(stripos($type,'audio/') !== false) {
- if($zrl)
- echo $br . '[zaudio]' . $url . '[/zaudio]' . $br;
- else
- echo $br . '[audio]' . $url . '[/audio]' . $br;
- killme();
- }
- }
- }
-
- $template = $br . '#^[url=%s]%s[/url]%s' . $br;
-
- $arr = array('url' => $url, 'text' => '');
-
- call_hooks('parse_link', $arr);
-
- if(strlen($arr['text'])) {
- echo $arr['text'];
- killme();
- }
-
- $x = oembed_process($url);
- if($x) {
- echo $x;
- killme();
- }
-
- if($url && $title && $text) {
-
-
- $text = $br . '[quote]' . trim($text) . '[/quote]' . $br;
-
- $title = str_replace(array("\r","\n"),array('',''),$title);
-
- $result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags;
-
- logger('parse_url (unparsed): returns: ' . $result);
-
- echo $result;
- killme();
- }
-
- $siteinfo = parseurl_getsiteinfo($url);
-
- // If this is a Red site, use zrl rather than url so they get zids sent to them by default
-
- if( x($siteinfo,'generator') && (strpos($siteinfo['generator'],PLATFORM_NAME . ' ') === 0))
- $template = str_replace('url','zrl',$template);
-
- if($siteinfo["title"] == "") {
- echo sprintf($template,$url,$url,'') . $str_tags;
- killme();
- } else {
- $text = $siteinfo["text"];
- $title = $siteinfo["title"];
- }
-
- $image = "";
-
- if(sizeof($siteinfo["images"]) > 0){
- /* Execute below code only if image is present in siteinfo */
-
- $total_images = 0;
- $max_images = get_config('system','max_bookmark_images');
- if($max_images === false)
- $max_images = 2;
- else
- $max_images = intval($max_images);
-
- foreach ($siteinfo["images"] as $imagedata) {
- if ($url) {
- $image .= sprintf('[url=%s]', $url);
- }
- $image .= '[img='.$imagedata["width"].'x'.$imagedata["height"].']'.$imagedata["src"].'[/img]';
- if ($url) {
- $image .= '[/url]';
- }
- $image .= "\n";
- $total_images ++;
- if($max_images && $max_images >= $total_images)
- break;
- }
- }
-
- if(strlen($text)) {
- $text = $br.'[quote]'.trim($text).'[/quote]'.$br ;
- }
-
- if($image) {
- $text = $br.$br.$image.$text;
- }
- $title = str_replace(array("\r","\n"),array('',''),$title);
-
- $result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags;
-
- logger('parse_url: returns: ' . $result, LOGGER_DEBUG);
-
- echo trim($result);
- killme();
-}
diff --git a/mod/mitem.php b/mod/mitem.php
index bc93165ac..0fadd1548 100644
--- a/mod/mitem.php
+++ b/mod/mitem.php
@@ -125,12 +125,7 @@ function mitem_content(&$a) {
$menu_names[] = $menus['menu_name'];
}
- $perm_defaults = array(
- 'allow_cid' => $channel['channel_allow_cid'],
- 'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid']
- );
+ $acl = new AccessList($channel);
$lockstate = (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock');
@@ -151,7 +146,7 @@ function mitem_content(&$a) {
'$menu_id' => $a->data['menu']['menu_id'],
'$permissions' => t('Menu Item Permissions'),
'$permdesc' => t("\x28click to open/close\x29"),
- '$aclselect' => populate_acl($perm_defaults,false),
+ '$aclselect' => populate_acl($acl->get(),false),
'$mitem_desc' => array('mitem_desc', t('Link Name'), '', 'Visible name of the link','*'),
'$mitem_link' => array('mitem_link', t('Link or Submenu Target'), '', t('Enter URL of the link or select a menu name to create a submenu'), '*', 'list="menu-names"'),
'$usezid' => array('usezid', t('Use magic-auth if available'), true, '', array(t('No'), t('Yes'))),
diff --git a/mod/oexchange.php b/mod/oexchange.php
index a684bd5d8..867cea6f2 100644
--- a/mod/oexchange.php
+++ b/mod/oexchange.php
@@ -47,7 +47,7 @@ function oexchange_content(&$a) {
$tags = (((x($_REQUEST,'tags')) && strlen($_REQUEST['tags']))
? '&tags=' . urlencode(notags(trim($_REQUEST['tags']))) : '');
- $ret = z_fetch_url($a->get_baseurl() . '/parse_url?f=&url=' . $url . $title . $description . $tags);
+ $ret = z_fetch_url($a->get_baseurl() . '/urlinfo?f=&url=' . $url . $title . $description . $tags);
if($ret['success'])
$s = $ret['body'];
diff --git a/mod/openid.php b/mod/openid.php
index 70da2690a..b9ca672a9 100644
--- a/mod/openid.php
+++ b/mod/openid.php
@@ -155,7 +155,7 @@ function openid_content(&$a) {
);
if($r) {
- $photos = import_profile_photo($pphoto,$url);
+ $photos = import_xchan_photo($pphoto,$url);
if($photos) {
$z = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s',
xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
diff --git a/mod/photos.php b/mod/photos.php
index dc70e4f90..d06a8e69c 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -85,6 +85,7 @@ function photos_post(&$a) {
$owner_record = $s[0];
+ $acl = AccessList($a->data['channel']);
if((argc() > 3) && (argv(2) === 'album')) {
@@ -200,6 +201,7 @@ function photos_post(&$a) {
goaway($a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . $_SESSION['album_return']);
}
+
if(($a->argc > 2) && ((x($_POST,'desc') !== false) || (x($_POST,'newtag') !== false)) || (x($_POST,'albname') !== false)) {
@@ -208,10 +210,9 @@ function photos_post(&$a) {
$item_id = ((x($_POST,'item_id')) ? intval($_POST['item_id']) : 0);
$albname = ((x($_POST,'albname')) ? notags(trim($_POST['albname'])) : '');
$is_nsfw = ((x($_POST,'adult')) ? intval($_POST['adult']) : 0);
- $str_group_allow = perms2str($_POST['group_allow']);
- $str_contact_allow = perms2str($_POST['contact_allow']);
- $str_group_deny = perms2str($_POST['group_deny']);
- $str_contact_deny = perms2str($_POST['contact_deny']);
+
+ $acl->set_from_array($_POST);
+ $perm = $acl->get();
$resource_id = $a->argv[2];
@@ -284,10 +285,10 @@ function photos_post(&$a) {
$r = q("UPDATE `photo` SET `description` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s' WHERE `resource_id` = '%s' AND `uid` = %d",
dbesc($desc),
- dbesc($str_contact_allow),
- dbesc($str_group_allow),
- dbesc($str_contact_deny),
- dbesc($str_group_deny),
+ dbesc($perm['allow_cid']),
+ dbesc($perm['allow_gid']),
+ dbesc($perm['deny_cid']),
+ dbesc($perm['deny_gid']),
dbesc($resource_id),
intval($page_owner_uid)
);
@@ -331,20 +332,20 @@ function photos_post(&$a) {
// make sure the linked item has the same permissions as the photo regardless of any other changes
$x = q("update item set allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', item_private = %d
where id = %d",
- dbesc($str_contact_allow),
- dbesc($str_group_allow),
- dbesc($str_contact_deny),
- dbesc($str_group_deny),
- intval($item_private),
+ dbesc($perm['allow_cid']),
+ dbesc($perm['allow_gid']),
+ dbesc($perm['deny_cid']),
+ dbesc($perm['deny_gid']),
+ intval($acl->is_private()),
intval($item_id)
);
// make sure the attach has the same permissions as the photo regardless of any other changes
$x = q("update attach set allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s' where hash = '%s' and uid = %d and is_photo = 1",
- dbesc($str_contact_allow),
- dbesc($str_group_allow),
- dbesc($str_contact_deny),
- dbesc($str_group_deny),
+ dbesc($perm['allow_cid']),
+ dbesc($perm['allow_gid']),
+ dbesc($perm['deny_cid']),
+ dbesc($perm['deny_gid']),
dbesc($resource_id),
intval($page_owner_uid)
);
@@ -418,11 +419,11 @@ function photos_post(&$a) {
$_REQUEST['source'] = 'photos';
require_once('include/attach.php');
- if(!local_channel()) {
+ if(! local_channel()) {
$_REQUEST['contact_allow'] = expand_acl($channel['channel_allow_cid']);
- $_REQUEST['group_allow'] = expand_acl($channel['channel_allow_gid']);
- $_REQUEST['contact_deny'] = expand_acl($channel['channel_deny_cid']);
- $_REQUEST['group_deny'] = expand_acl($channel['channel_deny_gid']);
+ $_REQUEST['group_allow'] = expand_acl($channel['channel_allow_gid']);
+ $_REQUEST['contact_deny'] = expand_acl($channel['channel_deny_cid']);
+ $_REQUEST['group_deny'] = expand_acl($channel['channel_deny_gid']);
}
$r = attach_store($a->channel,get_observer_hash(), '', $_REQUEST);
@@ -557,14 +558,10 @@ function photos_content(&$a) {
if($_is_owner) {
$channel = $a->get_channel();
- $channel_acl = array(
- 'allow_cid' => $channel['channel_allow_cid'],
- 'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid']
- );
+ $acl = new AccessList($channel);
+ $channel_acl = $acl->get();
- $lockstate = (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock');
+ $lockstate = (($acl->is_private()) ? 'lock' : 'unlock');
}
$aclselect = (($_is_owner) ? populate_acl($channel_acl,false) : '');
diff --git a/mod/ping.php b/mod/ping.php
index 719183388..394dbf089 100644
--- a/mod/ping.php
+++ b/mod/ping.php
@@ -321,6 +321,7 @@ function ping_init(&$a) {
$r = q("SELECT * FROM event left join xchan on event_xchan = xchan_hash
WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0
+ and type in ( 'event', 'birthday' )
ORDER BY `start` DESC LIMIT 1000",
intval(local_channel()),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')),
@@ -439,6 +440,7 @@ function ping_init(&$a) {
if($vnotify & (VNOTIFY_EVENT|VNOTIFY_EVENTTODAY|VNOTIFY_BIRTHDAY)) {
$events = q("SELECT type, start, adjust FROM `event`
WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0
+ and type in ( 'event', 'birthday' )
ORDER BY `start` ASC ",
intval(local_channel()),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')),
diff --git a/mod/rpost.php b/mod/rpost.php
index 0c0916646..4a6b87cc6 100644
--- a/mod/rpost.php
+++ b/mod/rpost.php
@@ -102,7 +102,7 @@ function rpost_content(&$a) {
);
if($_REQUEST['url']) {
- $x = z_fetch_url(z_root() . '/parse_url?f=&url=' . urlencode($_REQUEST['url']));
+ $x = z_fetch_url(z_root() . '/urlinfo?f=&url=' . urlencode($_REQUEST['url']));
if($x['success'])
$_REQUEST['body'] = $_REQUEST['body'] . $x['body'];
}
diff --git a/mod/settings.php b/mod/settings.php
index cbd6abafc..8bfff3765 100644
--- a/mod/settings.php
+++ b/mod/settings.php
@@ -311,17 +311,16 @@ function settings_post(&$a) {
foreach($global_perms as $k => $v) {
$set_perms .= ', ' . $v[0] . ' = ' . intval($_POST[$k]) . ' ';
}
-
- $str_group_allow = perms2str($_POST['group_allow']);
- $str_contact_allow = perms2str($_POST['contact_allow']);
- $str_group_deny = perms2str($_POST['group_deny']);
- $str_contact_deny = perms2str($_POST['contact_deny']);
- $r = q("update channel set channel_allow_cid = '%s', channel_allow_gid = '%s', channel_deny_cid = '%s', channel_deny_gid = '%s'
- where channel_id = %d",
- dbesc($str_contact_allow),
- dbesc($str_group_allow),
- dbesc($str_contact_deny),
- dbesc($str_group_deny),
+ $acl = new AccessList($channel);
+ $acl->set_from_array($_POST);
+ $x = $acl->get();
+
+ $r = q("update channel set channel_allow_cid = '%s', channel_allow_gid = '%s',
+ channel_deny_cid = '%s', channel_deny_gid = '%s' where channel_id = %d",
+ dbesc($x['allow_cid']),
+ dbesc($x['allow_gid']),
+ dbesc($x['deny_cid']),
+ dbesc($x['deny_gid']),
intval(local_channel())
);
}
@@ -983,14 +982,8 @@ function settings_content(&$a) {
$stpl = get_markup_template('settings.tpl');
- $celeb = false;
-
- $perm_defaults = array(
- 'allow_cid' => $channel['channel_allow_cid'],
- 'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid']
- );
+ $acl = new AccessList($channel);
+ $perm_defaults = $acl->get();
require_once('include/group.php');
$group_select = mini_group_select(local_channel(),$channel['channel_default_group']);
diff --git a/mod/siteinfo.php b/mod/siteinfo.php
index 61c20d66f..8281a7a0a 100644
--- a/mod/siteinfo.php
+++ b/mod/siteinfo.php
@@ -84,7 +84,6 @@ function siteinfo_init(&$a) {
'register_policy' => $register_policy[$a->config['system']['register_policy']],
'directory_mode' => $directory_mode[$a->config['system']['directory_mode']],
'language' => get_config('system','language'),
- 'diaspora_emulation' => get_config('system','diaspora_enabled'),
'rss_connections' => get_config('system','feed_contacts'),
'expiration' => $site_expire,
'default_service_restrictions' => $service_class,
diff --git a/mod/tasks.php b/mod/tasks.php
new file mode 100644
index 000000000..ed267cc92
--- /dev/null
+++ b/mod/tasks.php
@@ -0,0 +1,107 @@
+<?php
+
+require_once('include/event.php');
+
+
+function tasks_init(&$a) {
+
+
+// logger('request: ' . print_r($_REQUEST,true));
+
+ $arr = array();
+
+ if(argc() > 1 && argv(1) === 'fetch') {
+ if(argc() > 2 && argv(2) === 'all')
+ $arr['all'] = 1;
+
+ $x = tasks_fetch($arr);
+ if($x['tasks']) {
+ $x['html'] = '';
+ foreach($x['tasks'] as $y) {
+ $x['html'] .= '<div class="tasklist-item"><input type="checkbox" onchange="taskComplete(' . $y['id'] . '); return false;" /> ' . $y['summary'] . '</div>';
+ }
+ }
+ json_return_and_die($x);
+ }
+
+}
+
+
+
+function tasks_post(&$a) {
+
+
+// logger('post: ' . print_r($_POST,true));
+
+
+ if(! local_channel())
+ return;
+
+ $channel = $a->get_channel();
+
+ if((argc() > 2) && (argv(1) === 'complete') && intval(argv(2))) {
+ $ret = array('success' => false);
+ $r = q("select * from event where `type` = 'task' and uid = %d and id = %d limit 1",
+ intval(local_channel()),
+ intval(argv(2))
+ );
+ if($r) {
+ $event = $r[0];
+ if($event['event_status'] === 'COMPLETED') {
+ $event['event_status'] = 'IN-PROCESS';
+ $event['event_status_date'] = NULL_DATE;
+ $event['event_percent'] = 0;
+ $event['event_sequence'] = $event['event_sequence'] + 1;
+ $event['edited'] = datetime_convert();
+ }
+ else {
+ $event['event_status'] = 'COMPLETED';
+ $event['event_status_date'] = datetime_convert();
+ $event['event_percent'] = 100;
+ $event['event_sequence'] = $event['event_sequence'] + 1;
+ $event['edited'] = datetime_convert();
+ }
+ $x = event_store_event($event);
+ if($x)
+ $ret['success'] = true;
+ }
+ json_return_and_die($ret);
+ }
+
+ if(argc() == 2 && argv(1) === 'new') {
+ $text = escape_tags(trim($_REQUEST['summary']));
+ if(! $text)
+ return array('success' => false);
+ $event = array();
+ $event['aid'] = $channel['channel_account_id'];
+ $event['uid'] = $channel['channel_id'];
+ $event['event_xchan'] = $channel['channel_hash'];
+ $event['type'] = 'task';
+ $event['nofinish'] = true;
+ $event['created'] = $event['edited'] = $event['start'] = datetime_convert();
+ $event['adjust'] = 1;
+ $event['allow_cid'] = '<' . $channel['channel_hash'] . '>';
+ $event['summary'] = escape_tags($_REQUEST['summary']);
+ $x = event_store_event($event);
+ if($x)
+ $x['success'] = true;
+ else
+ $x = array('success' => false);
+ json_return_and_die($x);
+ }
+
+
+}
+
+
+
+
+
+function tasks_content(&$a) {
+
+ if(! local_channel())
+ return;
+
+
+ return '';
+} \ No newline at end of file
diff --git a/mod/thing.php b/mod/thing.php
index b4b8ad027..03dc7db5b 100644
--- a/mod/thing.php
+++ b/mod/thing.php
@@ -5,8 +5,9 @@
*/
require_once('include/items.php');
+require_once('include/security.php');
require_once('include/contact_selectors.php');
-
+require_once('include/acl_selectors.php');
function thing_init(&$a) {
@@ -65,33 +66,58 @@ function thing_init(&$a) {
if((! $name) || (! $translated_verb))
return;
+ $acl = new AccessList($channel);
+
+ if(array_key_exists('contact_allow',$_REQUEST)
+ || array_key_exists('group_allow',$_REQUEST)
+ || array_key_exists('contact_deny',$_REQUEST)
+ || array_key_exists('group_deny',$_REQUEST)) {
+ $acl->set_from_array($_REQUEST);
+ }
+
+ $x = $acl->get();
+
if($term_hash) {
- $t = q("select * from obj left join term on obj_obj = term_hash where term_hash != '' and obj_type = %d and term_hash = '%s' limit 1",
- intval(TERM_OBJ_THING),
- dbesc($term_hash)
+ $t = q("select * from obj where obj_obj = '%s' and obj_channel = %d limit 1",
+ dbesc($term_hash),
+ intval(local_channel())
);
if(! $t) {
notice( t('Item not found.') . EOL);
return;
}
$orig_record = $t[0];
- if($photo != $orig_record['imgurl']) {
- $arr = import_profile_photo($photo,get_observer_hash(),true);
+ if($photo != $orig_record['obj_imgurl']) {
+ $arr = import_xchan_photo($photo,get_observer_hash(),true);
$local_photo = $arr[0];
$local_photo_type = $arr[3];
}
else
- $local_photo = $orig_record['imgurl'];
+ $local_photo = $orig_record['obj_imgurl'];
- $r = q("update term set term = '%s', url = '%s', imgurl = '%s' where term_hash = '%s' and uid = %d",
+ $r = q("update obj set obj_term = '%s', obj_url = '%s', obj_imgurl = '%s', obj_edited = '%s', allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s' where obj_obj = '%s' and obj_channel = %d ",
dbesc($name),
dbesc(($url) ? $url : z_root() . '/thing/' . $term_hash),
dbesc($local_photo),
+ dbesc(datetime_convert()),
+ dbesc($x['allow_cid']),
+ dbesc($x['allow_gid']),
+ dbesc($x['deny_cid']),
+ dbesc($x['deny_gid']),
dbesc($term_hash),
intval(local_channel())
);
info( t('Thing updated') . EOL);
+
+ $r = q("select * from obj where obj_channel = %d and obj_obj = '%s' limit 1",
+ intval(local_channel()),
+ dbesc($term_hash)
+ );
+ if($r) {
+ build_sync_packet(0, array('obj' => $r));
+ }
+
return;
}
@@ -108,45 +134,29 @@ function thing_init(&$a) {
$local_photo = null;
if($photo) {
- $arr = import_profile_photo($photo,get_observer_hash(),true);
+ $arr = import_xchan_photo($photo,get_observer_hash(),true);
$local_photo = $arr[0];
$local_photo_type = $arr[3];
}
- $r = q("select * from term where uid = %d and otype = %d and type = %d and term = '%s' limit 1",
- intval(local_channel()),
- intval(TERM_OBJ_THING),
- intval(TERM_THING),
- dbesc($name)
- );
- if(! $r) {
- $r = q("insert into term ( aid, uid, oid, otype, type, term, url, imgurl, term_hash )
- values( %d, %d, %d, %d, %d, '%s', '%s', '%s', '%s' ) ",
- intval($account_id),
- intval(local_channel()),
- 0,
- intval(TERM_OBJ_THING),
- intval(TERM_THING),
- dbesc($name),
- dbesc(($url) ? $url : z_root() . '/thing/' . $hash),
- dbesc(($photo) ? $local_photo : ''),
- dbesc($hash)
- );
- $r = q("select * from term where uid = %d and otype = %d and type = %d and term = '%s' limit 1",
- intval(local_channel()),
- intval(TERM_OBJ_THING),
- intval(TERM_THING),
- dbesc($name)
- );
- }
- $term = $r[0];
+ $created = datetime_convert();
+ $url = (($url) ? $url : z_root() . '/thing/' . $hash);
- $r = q("insert into obj ( obj_page, obj_verb, obj_type, obj_channel, obj_obj) values ('%s','%s', %d, %d, '%s') ",
+ $r = q("insert into obj ( obj_page, obj_verb, obj_type, obj_channel, obj_obj, obj_term, obj_url, obj_imgurl, obj_created, obj_edited, allow_cid, allow_gid, deny_cid, deny_gid ) values ('%s','%s', %d, %d, '%s','%s','%s','%s','%s','%s','%s','%s','%s','%s') ",
dbesc($profile['profile_guid']),
dbesc($verb),
intval(TERM_OBJ_THING),
intval(local_channel()),
- dbesc($term['term_hash'])
+ dbesc($hash),
+ dbesc($name),
+ dbesc($url),
+ dbesc(($photo) ? $local_photo : ''),
+ dbesc($created),
+ dbesc($created),
+ dbesc($x['allow_cid']),
+ dbesc($x['allow_gid']),
+ dbesc($x['deny_cid']),
+ dbesc($x['deny_gid'])
);
if(! $r) {
@@ -155,10 +165,18 @@ function thing_init(&$a) {
}
info( t('Thing added'));
+
+ $r = q("select * from obj where obj_channel = %d and obj_obj = '%s' limit 1",
+ intval(local_channel()),
+ dbesc($hash)
+ );
+ if($r) {
+ build_sync_packet(0, array('obj' => $r));
+ }
if($activity) {
$arr = array();
- $links = array(array('rel' => 'alternate','type' => 'text/html', 'href' => $term['url']));
+ $links = array(array('rel' => 'alternate','type' => 'text/html', 'href' => $url));
if($local_photo)
$links[] = array('rel' => 'photo', 'type' => $local_photo_type, 'href' => $local_photo);
@@ -166,10 +184,10 @@ function thing_init(&$a) {
$obj = json_encode(array(
'type' => $objtype,
- 'id' => $term['url'],
+ 'id' => $url,
'link' => $links,
- 'title' => $term['term'],
- 'content' => $term['term']
+ 'title' => $name,
+ 'content' => $name
));
$bodyverb = str_replace('OBJ: ', '',t('OBJ: %1$s %2$s %3$s'));
@@ -182,7 +200,7 @@ function thing_init(&$a) {
$arr['item_thread_top'] = 1;
$ulink = '[zrl=' . $channel['xchan_url'] . ']' . $channel['channel_name'] . '[/zrl]';
- $plink = '[zrl=' . $term['url'] . ']' . $term['term'] . '[/zrl]';
+ $plink = '[zrl=' . $url . ']' . $name . '[/zrl]';
$arr['body'] = sprintf( $bodyverb, $ulink, $translated_verb, $plink );
@@ -218,7 +236,9 @@ function thing_content(&$a) {
if(argc() == 2) {
- $r = q("select * from obj left join term on obj_obj = term_hash where term_hash != '' and obj_type = %d and term_hash = '%s' limit 1",
+ $sql_extra = permissions_sql();
+
+ $r = q("select * from obj where obj_type = %d and obj_obj = '%s' $sql_extra limit 1",
intval(TERM_OBJ_THING),
dbesc(argv(1))
);
@@ -244,12 +264,17 @@ function thing_content(&$a) {
return;
}
+ $acl = new AccessList($channel);
+ $channel_acl = $acl->get();
+
+ $lockstate = (($acl->is_private()) ? 'lock' : 'unlock');
+
$thing_hash = '';
if(argc() == 3 && argv(1) === 'edit') {
$thing_hash = argv(2);
- $r = q("select * from obj left join term on obj_obj = term_hash where term_hash != '' and obj_type = %d and term_hash = '%s' limit 1",
+ $r = q("select * from obj where obj_type = %d and obj_obj = '%s' limit 1",
intval(TERM_OBJ_THING),
dbesc($thing_hash)
);
@@ -269,11 +294,14 @@ function thing_content(&$a) {
'$activity' => array('activity',t('Post an activity'),true,t('Only sends to viewers of the applicable profile')),
'$thing_hash' => $thing_hash,
'$thing_lbl' => t('Name of thing e.g. something'),
- '$thething' => $r[0]['term'],
+ '$thething' => $r[0]['obj_term'],
'$url_lbl' => t('URL of thing (optional)'),
- '$theurl' => $r[0]['url'],
+ '$theurl' => $r[0]['obj_url'],
'$img_lbl' => t('URL for photo of thing (optional)'),
- '$imgurl' => $r[0]['imgurl'],
+ '$imgurl' => $r[0]['obj_imgurl'],
+ '$permissions' => t('Permissions'),
+ '$aclselect' => populate_acl($channel_acl,false),
+ '$lockstate' => $lockstate,
'$submit' => t('Submit')
));
@@ -283,7 +311,7 @@ function thing_content(&$a) {
if(argc() == 3 && argv(1) === 'drop') {
$thing_hash = argv(2);
- $r = q("select * from obj left join term on obj_obj = term_hash where term_hash != '' and obj_type = %d and term_hash = '%s' limit 1",
+ $r = q("select * from obj where obj_type = %d and obj_obj = '%s' limit 1",
intval(TERM_OBJ_THING),
dbesc($thing_hash)
);
@@ -298,10 +326,10 @@ function thing_content(&$a) {
intval(TERM_OBJ_THING),
intval(local_channel())
);
- $x = q("delete from term where term_hash = '%s' and uid = %d",
- dbesc($thing_hash),
- intval(local_channel())
- );
+
+ $r[0]['obj_deleted'] = 1;
+
+ build_sync_packet(0,array('obj' => $r));
return $o;
}
@@ -317,6 +345,9 @@ function thing_content(&$a) {
'$thing_lbl' => t('Name of thing e.g. something'),
'$url_lbl' => t('URL of thing (optional)'),
'$img_lbl' => t('URL for photo of thing (optional)'),
+ '$permissions' => t('Permissions'),
+ '$aclselect' => populate_acl($channel_acl,false),
+ '$lockstate' => $lockstate,
'$submit' => t('Submit')
));
diff --git a/mod/uexport.php b/mod/uexport.php
index 8217a17c4..df66474f1 100644
--- a/mod/uexport.php
+++ b/mod/uexport.php
@@ -13,11 +13,15 @@ function uexport_init(&$a) {
$year = intval(argv(1));
}
+ if(argc() > 2 && intval(argv(2)) > 0 && intval(argv(2)) <= 12) {
+ $month = intval(argv(2));
+ }
+
header('content-type: application/octet_stream');
- header('content-disposition: attachment; filename="' . $channel['channel_address'] . (($year) ? '-' . $year : '') . '.json"' );
+ header('content-disposition: attachment; filename="' . $channel['channel_address'] . (($year) ? '-' . $year : '') . (($month) ? '-' . $month : '') . '.json"' );
if($year) {
- echo json_encode(identity_export_year(local_channel(),$year));
+ echo json_encode(identity_export_year(local_channel(),$year,$month));
killme();
}
diff --git a/mod/wall_attach.php b/mod/wall_attach.php
index f08f931c2..8677c2b83 100644
--- a/mod/wall_attach.php
+++ b/mod/wall_attach.php
@@ -52,6 +52,7 @@ function wall_attach_post(&$a) {
echo "\n\n" . $r['body'] . "\n\n";
if($using_api)
return;
+ killme();
}
echo "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n";
killme();
diff --git a/mod/xrd.php b/mod/xrd.php
index 4fa81c7f3..d547194ad 100644
--- a/mod/xrd.php
+++ b/mod/xrd.php
@@ -24,7 +24,7 @@ function xrd_init(&$a) {
$dspr = replace_macros(get_markup_template('xrd_diaspora.tpl'),array(
'$baseurl' => $a->get_baseurl(),
- '$dspr_guid' => $r[0]['channel_guid'],
+ '$dspr_guid' => $r[0]['channel_guid'] . str_replace('.','',$a->get_hostname()),
'$dspr_key' => base64_encode(pemtorsa($r[0]['channel_pubkey']))
));
diff --git a/mod/zfinger.php b/mod/zfinger.php
index 8ddd92f3d..ba80fc9b6 100644
--- a/mod/zfinger.php
+++ b/mod/zfinger.php
@@ -108,7 +108,7 @@ function zfinger_init(&$a) {
$public_forum = false;
$role = get_pconfig($e['channel_id'],'system','permissions_role');
- if($role === 'forum') {
+ if($role === 'forum' || $role === 'repository') {
$public_forum = true;
}
else {
diff --git a/version.inc b/version.inc
index 70a3aa358..9cfd95d30 100644
--- a/version.inc
+++ b/version.inc
@@ -1 +1 @@
-2015-08-14.1124
+2015-09-03.1144
diff --git a/view/css/mod_admin.css b/view/css/mod_admin.css
index f052175bb..409744402 100644
--- a/view/css/mod_admin.css
+++ b/view/css/mod_admin.css
@@ -61,7 +61,12 @@
#adminpage table tr:hover { background-color: #bbc7d7; }
#adminpage .selectall { text-align: right; }
+.checkbox_bulkedit {
+ width: 1.2em;
+ height: 1.2em;
+}
.channels_ckbx, .pending_ckbx, .users_ckbx {
- margin-top: -5px !important;
+ margin-top: 0px !important;
+ margin-left: 0px !important;
}
diff --git a/view/css/mod_apps.css b/view/css/mod_apps.css
index 5e98a6a18..cfaf5ef87 100644
--- a/view/css/mod_apps.css
+++ b/view/css/mod_apps.css
@@ -1,6 +1,16 @@
.app-container {
float: left;
width: 125px;
- height: 160px;
+ height: 180px;
padding: 20px;
}
+
+.app-detail {
+ height: 130px;
+ overflow-x: hidden;
+ overflow-y: hidden;
+}
+
+.app-tools {
+ margin-bottom: 0;
+}
diff --git a/view/css/widgets.css b/view/css/widgets.css
index 5b6e8aeb9..c1b80dabb 100644
--- a/view/css/widgets.css
+++ b/view/css/widgets.css
@@ -110,3 +110,15 @@ li:hover .group-edit-icon {
.directory-rating-submit {
margin-top: 15px;
}
+
+
+/* tasklist */
+
+.tasklist-tasks {
+ max-height: 300px;
+ overflow-y: auto;
+}
+
+#tasklist-new-summary {
+ width: 250px;
+}
diff --git a/view/es/messages.po b/view/es/messages.po
index 048aa20aa..995124a85 100644
--- a/view/es/messages.po
+++ b/view/es/messages.po
@@ -13,8 +13,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-08-07 00:03-0700\n"
-"PO-Revision-Date: 2015-08-14 07:27+0000\n"
+"POT-Creation-Date: 2015-08-21 00:04-0700\n"
+"PO-Revision-Date: 2015-08-29 14:42+0000\n"
"Last-Translator: Manuel Jiménez Friaza <mjfriaza@openmailbox.org>\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/red-matrix/language/es/)\n"
"MIME-Version: 1.0\n"
@@ -26,7 +26,7 @@ msgstr ""
#: ../../include/dba/dba_driver.php:141
#, php-format
msgid "Cannot locate DNS info for database server '%s'"
-msgstr "No se ha podido localizar información para el servidor de base de datos “%s”"
+msgstr "No se ha podido localizar información de DNS para el servidor de base de datos “%s”"
#: ../../include/photo/photo_driver.php:687 ../../mod/profile_photo.php:143
#: ../../mod/profile_photo.php:302 ../../mod/profile_photo.php:424
@@ -86,7 +86,7 @@ msgstr "RSS/Atom"
#: ../../mod/admin.php:831 ../../mod/id.php:15 ../../mod/id.php:16
#: ../../boot.php:1553
msgid "Email"
-msgstr "Email"
+msgstr "Correo electrónico"
#: ../../include/contact_selectors.php:80
msgid "Diaspora"
@@ -114,22 +114,22 @@ msgstr "MySpace"
#: ../../include/notify.php:23
msgid "created a new post"
-msgstr "Crear una nueva entrada"
+msgstr "ha creado una nueva entrada"
#: ../../include/notify.php:24
#, php-format
msgid "commented on %s's post"
-msgstr "comentar la entrada de %s"
+msgstr "ha comentado la entrada de %s"
#: ../../include/Import/import_diaspora.php:17
msgid "No username found in import file."
-msgstr "No se ha encontrado nombre de usuario en el archivo importado."
+msgstr "No se ha encontrado el nombre de usuario en el fichero importado."
#: ../../include/Import/import_diaspora.php:42 ../../mod/import.php:156
msgid "Unable to create a unique channel address. Import failed."
msgstr "No se ha podido crear una dirección de canal única. Ha fallado la importación."
-#: ../../include/Import/import_diaspora.php:140 ../../mod/import.php:504
+#: ../../include/Import/import_diaspora.php:140 ../../mod/import.php:530
msgid "Import completed."
msgstr "Importación completada."
@@ -138,11 +138,11 @@ msgid ""
"A deleted group with this name was revived. Existing item permissions "
"<strong>may</strong> apply to this group and any future members. If this is "
"not what you intended, please create another group with a different name."
-msgstr "Un grupo suprimido con éste nombre ha sido reestablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a éste grupo y sus futuros miembros. Si no quiere esto por favor cree otro grupo con un nombre diferente."
+msgstr "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto por favor cree otro grupo con un nombre diferente."
#: ../../include/group.php:235
msgid "Default privacy group for new contacts"
-msgstr "Grupo de privacidad por defecto para nuevos contactos "
+msgstr "Privacidad de grupo por defecto para nuevos contactos "
#: ../../include/group.php:254 ../../mod/admin.php:831
msgid "All Channels"
@@ -174,7 +174,7 @@ msgstr "añadir"
#: ../../include/account.php:27
msgid "Not a valid email address"
-msgstr "Dirección de correo inválida"
+msgstr "Dirección de correo no válida"
#: ../../include/account.php:29
msgid "Your email domain is not among those allowed on this site"
@@ -222,7 +222,7 @@ msgstr "su contraseña de registro"
#: ../../include/account.php:339 ../../include/account.php:399
#, php-format
msgid "Registration details for %s"
-msgstr "Detalles del registro para %s"
+msgstr "Detalles del registro de %s"
#: ../../include/account.php:408
msgid "Account approved."
@@ -231,11 +231,11 @@ msgstr "Cuenta aprobada."
#: ../../include/account.php:447
#, php-format
msgid "Registration revoked for %s"
-msgstr "Registro rechazado para %s"
+msgstr "Registro revocado para %s"
#: ../../include/account.php:492
msgid "Account verified. Please login."
-msgstr "Cuenta verificada. Por favor, inicia sesión."
+msgstr "Cuenta verificada. Por favor, inicie sesión."
#: ../../include/account.php:705 ../../include/account.php:707
msgid "Click here to upgrade."
@@ -243,7 +243,7 @@ msgstr "Pulse aquí para actualizar"
#: ../../include/account.php:713
msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Ésta acción supera los límites establecidos por su plan de suscripción "
+msgstr "Esta acción supera los límites establecidos por su plan de suscripción "
#: ../../include/account.php:718
msgid "This action is not available under your subscription plan."
@@ -255,7 +255,7 @@ msgstr "Varios"
#: ../../include/datetime.php:132
msgid "YYYY-MM-DD or MM-DD"
-msgstr "YYYY-MM-DD o MM-DD"
+msgstr "AAAA-MM-DD o MM-DD"
#: ../../include/datetime.php:235 ../../mod/events.php:649
#: ../../mod/appman.php:91 ../../mod/appman.php:92
@@ -268,7 +268,7 @@ msgstr "nunca"
#: ../../include/datetime.php:268
msgid "less than a second ago"
-msgstr "hace menos de un segundo"
+msgstr "hace un instante"
#: ../../include/datetime.php:271
msgid "year"
@@ -377,11 +377,11 @@ msgstr "Sí"
#: ../../include/dir_fns.php:129
msgid "Public Forums Only"
-msgstr "Solamente foros públicos"
+msgstr "Solo foros públicos"
#: ../../include/dir_fns.php:130
msgid "This Website Only"
-msgstr "Solamente este sitio web"
+msgstr "Solo este sitio web"
#: ../../include/page_widgets.php:6
msgid "New Page"
@@ -422,7 +422,7 @@ msgstr "Creado"
msgid "Edited"
msgstr "Editado"
-#: ../../include/api.php:1193
+#: ../../include/api.php:1214
msgid "Public Timeline"
msgstr "Cronología pública"
@@ -506,7 +506,7 @@ msgstr "Describir (opcional)"
#: ../../mod/thing.php:318 ../../mod/events.php:494 ../../mod/events.php:670
#: ../../mod/group.php:81 ../../mod/photos.php:577 ../../mod/photos.php:654
#: ../../mod/photos.php:941 ../../mod/photos.php:981 ../../mod/photos.php:1099
-#: ../../mod/pdledit.php:58 ../../mod/import.php:534 ../../mod/chat.php:177
+#: ../../mod/pdledit.php:58 ../../mod/import.php:560 ../../mod/chat.php:177
#: ../../mod/chat.php:211 ../../mod/mitem.php:232 ../../mod/rate.php:167
#: ../../mod/invite.php:142 ../../mod/locs.php:105 ../../mod/sources.php:104
#: ../../mod/sources.php:138 ../../mod/filestorage.php:156
@@ -531,7 +531,7 @@ msgstr "Por favor, introduzca una dirección de enlace"
#: ../../include/js_strings.php:24
msgid "Unsaved changes. Are you sure you wish to leave this page?"
-msgstr "Cambios no guardados. ¿Estás seguro que deseas abandonar la página?"
+msgstr "Cambios no guardados. ¿Está seguro de que desea abandonar la página?"
#: ../../include/js_strings.php:26
msgid "timeago.prefixAgo"
@@ -543,7 +543,7 @@ msgstr "timeago.prefixFromNow"
#: ../../include/js_strings.php:28
msgid "ago"
-msgstr "hace"
+msgstr "de su publicación"
#: ../../include/js_strings.php:29
msgid "from now"
@@ -555,7 +555,7 @@ msgstr "menos de un minuto"
#: ../../include/js_strings.php:31
msgid "about a minute"
-msgstr "hace como un minuto"
+msgstr "alrededor de un minuto"
#: ../../include/js_strings.php:32
#, php-format
@@ -564,12 +564,12 @@ msgstr "%d minutos"
#: ../../include/js_strings.php:33
msgid "about an hour"
-msgstr "hace como una hora"
+msgstr "alrededor de una hora"
#: ../../include/js_strings.php:34
#, php-format
msgid "about %d hours"
-msgstr "hace %d minutos"
+msgstr "alrededor de %d horas"
#: ../../include/js_strings.php:35
msgid "a day"
@@ -582,7 +582,7 @@ msgstr "%d días"
#: ../../include/js_strings.php:37
msgid "about a month"
-msgstr "hace como un mes"
+msgstr "alrededor de un mes"
#: ../../include/js_strings.php:38
#, php-format
@@ -591,7 +591,7 @@ msgstr "%d meses"
#: ../../include/js_strings.php:39
msgid "about a year"
-msgstr "hace un año"
+msgstr "alrededor de un año"
#: ../../include/js_strings.php:40
#, php-format
@@ -608,11 +608,11 @@ msgstr "timeago.numbers"
#: ../../include/text.php:395
msgid "prev"
-msgstr "previa"
+msgstr "anterior"
#: ../../include/text.php:397
msgid "first"
-msgstr "Primera"
+msgstr "primera"
#: ../../include/text.php:426
msgid "last"
@@ -638,8 +638,8 @@ msgstr "Sin conexiones"
#, php-format
msgid "%d Connection"
msgid_plural "%d Connections"
-msgstr[0] "%d conexión"
-msgstr[1] "%d conexiones"
+msgstr[0] "%d Conexión"
+msgstr[1] "%d Conexiones"
#: ../../include/text.php:861 ../../mod/viewconnections.php:104
msgid "View Connections"
@@ -668,11 +668,11 @@ msgstr "ha recibido un toque"
#: ../../include/text.php:995
msgid "ping"
-msgstr "ping"
+msgstr "avisar"
#: ../../include/text.php:995
msgid "pinged"
-msgstr " le hicieron un ping"
+msgstr "avisado/a"
#: ../../include/text.php:996
msgid "prod"
@@ -680,31 +680,31 @@ msgstr "incitar"
#: ../../include/text.php:996
msgid "prodded"
-msgstr "incitaros"
+msgstr "incitado/a"
#: ../../include/text.php:997
msgid "slap"
-msgstr "bofetada"
+msgstr "abofetear"
#: ../../include/text.php:997
msgid "slapped"
-msgstr "abofetear"
+msgstr "abofeteado/a"
#: ../../include/text.php:998
msgid "finger"
-msgstr "manoseo"
+msgstr "señalar"
#: ../../include/text.php:998
msgid "fingered"
-msgstr "manosear"
+msgstr "señalado/a"
#: ../../include/text.php:999
msgid "rebuff"
-msgstr "desaire"
+msgstr "desairar"
#: ../../include/text.php:999
msgid "rebuffed"
-msgstr "desaireado/a"
+msgstr "desairado/a"
#: ../../include/text.php:1009
msgid "happy"
@@ -776,7 +776,7 @@ msgstr "frustrado/a"
#: ../../include/text.php:1026
msgid "depressed"
-msgstr "deprimido"
+msgstr "deprimido/a"
#: ../../include/text.php:1027
msgid "motivated"
@@ -792,83 +792,83 @@ msgstr "sorprendido/a"
#: ../../include/text.php:1201
msgid "Monday"
-msgstr "Lunes"
+msgstr "lunes"
#: ../../include/text.php:1201
msgid "Tuesday"
-msgstr "Martes"
+msgstr "martes"
#: ../../include/text.php:1201
msgid "Wednesday"
-msgstr "Miércoles"
+msgstr "miércoles"
#: ../../include/text.php:1201
msgid "Thursday"
-msgstr "Jueves"
+msgstr "jueves"
#: ../../include/text.php:1201
msgid "Friday"
-msgstr "Viernes"
+msgstr "viernes"
#: ../../include/text.php:1201
msgid "Saturday"
-msgstr "Sábado"
+msgstr "sábado"
#: ../../include/text.php:1201
msgid "Sunday"
-msgstr "Domingo"
+msgstr "domingo"
#: ../../include/text.php:1205
msgid "January"
-msgstr "Enero"
+msgstr "enero"
#: ../../include/text.php:1205
msgid "February"
-msgstr "Febrero"
+msgstr "febrero"
#: ../../include/text.php:1205
msgid "March"
-msgstr "Marzo"
+msgstr "marzo"
#: ../../include/text.php:1205
msgid "April"
-msgstr "Abril"
+msgstr "abril"
#: ../../include/text.php:1205
msgid "May"
-msgstr "Mayo"
+msgstr "mayo"
#: ../../include/text.php:1205
msgid "June"
-msgstr "Junio"
+msgstr "junio"
#: ../../include/text.php:1205
msgid "July"
-msgstr "Julio"
+msgstr "julio"
#: ../../include/text.php:1205
msgid "August"
-msgstr "Agosto"
+msgstr "agosto"
#: ../../include/text.php:1205
msgid "September"
-msgstr "Septiembre"
+msgstr "septiembre"
#: ../../include/text.php:1205
msgid "October"
-msgstr "Octubre"
+msgstr "octubre"
#: ../../include/text.php:1205
msgid "November"
-msgstr "Noviembre"
+msgstr "noviembre"
#: ../../include/text.php:1205
msgid "December"
-msgstr "Diciembre"
+msgstr "diciembre"
#: ../../include/text.php:1310
msgid "unknown.???"
-msgstr "desconocido.???"
+msgstr "desconocido???"
#: ../../include/text.php:1311
msgid "bytes"
@@ -880,7 +880,7 @@ msgstr "eliminar categoría"
#: ../../include/text.php:1422
msgid "remove from file"
-msgstr "eliminar del archivo"
+msgstr "eliminar del fichero"
#: ../../include/text.php:1498 ../../include/text.php:1509
msgid "Click to open/close"
@@ -888,7 +888,7 @@ msgstr "Pulsar para abrir/cerrar"
#: ../../include/text.php:1665 ../../mod/events.php:457
msgid "Link to Source"
-msgstr "Enlace a la fuente"
+msgstr "Ir al mensaje original"
#: ../../include/text.php:1686 ../../include/text.php:1757
msgid "default"
@@ -896,11 +896,11 @@ msgstr "por defecto"
#: ../../include/text.php:1694
msgid "Page layout"
-msgstr "Disposición de página"
+msgstr "Formato de la página"
#: ../../include/text.php:1694
msgid "You can create your own with the layouts tool"
-msgstr "Puede crear la suya propia con la herramienta de disposiciones"
+msgstr "Puede crear su propio formato gráfico con las herramientas de diseño"
#: ../../include/text.php:1735
msgid "Page content type"
@@ -951,7 +951,7 @@ msgstr "Menús"
#: ../../include/text.php:2201 ../../mod/layouts.php:174
msgid "Layouts"
-msgstr "Disposiciones"
+msgstr "Formato gráfico"
#: ../../include/text.php:2202
msgid "Pages"
@@ -1063,7 +1063,7 @@ msgstr "Crear nueva carpeta"
#: ../../include/RedDAV/RedBrowser.php:304
msgid "Upload file"
-msgstr "Subir archivo"
+msgstr "Subir fichero"
#: ../../include/bookmarks.php:35
#, php-format
@@ -1072,7 +1072,7 @@ msgstr "Marcadores de %1$s"
#: ../../include/network.php:635
msgid "view full size"
-msgstr "Ver a pantalla completa"
+msgstr "Ver en el tamaño original"
#: ../../include/network.php:1585 ../../include/enotify.php:58
msgid "$Projectname Notification"
@@ -1103,7 +1103,7 @@ msgstr "Características generales"
#: ../../include/features.php:40
msgid "Content Expiration"
-msgstr "Expiración del contenido"
+msgstr "Caducidad del contenido"
#: ../../include/features.php:40
msgid "Remove posts/comments and/or private messages at a future time"
@@ -1147,11 +1147,11 @@ msgstr "Notas privadas"
#: ../../include/features.php:45
msgid "Enables a tool to store notes and reminders"
-msgstr "Activa una herramienta para almacenar notas y recordatorios"
+msgstr "Activar una herramienta para almacenar notas y recordatorios"
#: ../../include/features.php:46
msgid "Navigation Channel Select"
-msgstr "Selección de navegación de canal"
+msgstr "Navegación por el selector de canales"
#: ../../include/features.php:46
msgid "Change channels directly from within the navigation dropdown menu"
@@ -1163,7 +1163,7 @@ msgstr "Ubicación de las fotos"
#: ../../include/features.php:47
msgid "If location data is available on uploaded photos, link this to a map."
-msgstr "Si los datos de ubicación están disponibles en las fotos subidas, enlaza esto a un mapa."
+msgstr "Si los datos de ubicación están disponibles en las fotos subidas, enlaza estas a un mapa."
#: ../../include/features.php:49
msgid "Expert Mode"
@@ -1181,7 +1181,7 @@ msgstr "Canal premium"
msgid ""
"Allows you to set restrictions and terms on those that connect with your "
"channel"
-msgstr "Te permite configurar restricciones y términos a aquellos que conectan con su canal"
+msgstr "Les permite configurar restricciones y normas de uso a aquellos que conectan con su canal"
#: ../../include/features.php:55
msgid "Post Composition Features"
@@ -1203,16 +1203,16 @@ msgstr "Fotos de gran tamaño"
msgid ""
"Include large (640px) photo thumbnails in posts. If not enabled, use small "
"(320px) photo thumbnails"
-msgstr "Incluir miniaturas de foto grandes (640px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (320px)"
+msgstr "Incluir miniaturas de fotos grandes (640px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (320px)"
#: ../../include/features.php:59 ../../include/widgets.php:548
#: ../../mod/sources.php:88
msgid "Channel Sources"
-msgstr "Fuentes del canal"
+msgstr "Orígenes de los contenidos del canal"
#: ../../include/features.php:59
msgid "Automatically import channel content from other channels or feeds"
-msgstr "Importar automáticamente contenido de otros canales o fuentes"
+msgstr "Importar automáticamente contenido de otros canales o \"feeds\""
#: ../../include/features.php:60
msgid "Even More Encryption"
@@ -1233,7 +1233,7 @@ msgstr "Proveer una clase de publicación en la que otros puedan votar"
#: ../../include/features.php:67
msgid "Network and Stream Filtering"
-msgstr "Filtrado de red y flujo"
+msgstr "Filtrado del contenido"
#: ../../include/features.php:68
msgid "Search by Date"
@@ -1249,7 +1249,7 @@ msgstr "Filtrado de colecciones"
#: ../../include/features.php:69
msgid "Enable widget to display Network posts only from selected collections"
-msgstr "Habilitar la muestra de entradas de red eligiendo colecciones"
+msgstr "Habilitar la muestra de entradas eligiendo colecciones"
#: ../../include/features.php:70 ../../include/widgets.php:274
msgid "Saved Searches"
@@ -1265,7 +1265,7 @@ msgstr "Pestaña de red personal"
#: ../../include/features.php:71
msgid "Enable tab to display only Network posts that you've interacted on"
-msgstr "Habilitar una pestaña en la cual se muestran solo entradas de red en las que has participado."
+msgstr "Habilitar una pestaña en la cual se muestren solo las entradas en las que ha participado."
#: ../../include/features.php:72
msgid "Network New Tab"
@@ -1273,7 +1273,7 @@ msgstr "Nueva pestaña de red"
#: ../../include/features.php:72
msgid "Enable tab to display all new Network activity"
-msgstr "Habilitar una pestaña en la cual se muestra toda la actividad de la red"
+msgstr "Habilitar una pestaña en la que se muestre toda la actividad de la red"
#: ../../include/features.php:73
msgid "Affinity Tool"
@@ -1330,15 +1330,15 @@ msgstr "Capacidad de archivar entradas en carpetas"
#: ../../include/features.php:84
msgid "Dislike Posts"
-msgstr "No me gusta:"
+msgstr "Desagrado de publicaciones"
#: ../../include/features.php:84
msgid "Ability to dislike posts/comments"
-msgstr "Capacidad de desaprovar entradas/comentarios"
+msgstr "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios"
#: ../../include/features.php:85
msgid "Star Posts"
-msgstr "Entrada destacada"
+msgstr "Entradas destacadas"
#: ../../include/features.php:85
msgid "Ability to mark special posts with a star indicator"
@@ -1372,15 +1372,15 @@ msgstr "Personales"
#: ../../include/widgets.php:95
msgid "Create Personal App"
-msgstr "Crear App personal"
+msgstr "Crear una aplicación personal"
#: ../../include/widgets.php:96
msgid "Edit Personal App"
-msgstr "Editar App personal"
+msgstr "Editar una aplicación personal"
#: ../../include/widgets.php:136 ../../include/widgets.php:175
#: ../../include/Contact.php:107 ../../include/conversation.php:945
-#: ../../include/identity.php:857 ../../mod/directory.php:316
+#: ../../include/identity.php:880 ../../mod/directory.php:316
#: ../../mod/match.php:64 ../../mod/suggest.php:52
msgid "Connect"
msgstr "Conectar"
@@ -1400,15 +1400,15 @@ msgstr "Ver más..."
#: ../../include/widgets.php:166
#, php-format
msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Tienes %1$.0f de %2$.0f conexiones permitidas."
+msgstr "Tiene %1$.0f de %2$.0f conexiones permitidas."
#: ../../include/widgets.php:172
msgid "Add New Connection"
-msgstr "Añadir nueva conección"
+msgstr "Añadir nueva conexión"
#: ../../include/widgets.php:173
msgid "Enter the channel address"
-msgstr "Introduce la dirección del canal"
+msgstr "Introducir la dirección del canal"
#: ../../include/widgets.php:174
msgid "Example: bob@example.com, http://example.com/barbara"
@@ -1455,11 +1455,11 @@ msgstr "Conocidos/as"
#: ../../include/widgets.php:433 ../../mod/connections.php:231
#: ../../mod/connections.php:246 ../../mod/connedit.php:575
msgid "All"
-msgstr "Todos"
+msgstr "Todas"
#: ../../include/widgets.php:452
msgid "Refresh"
-msgstr "Refrescar"
+msgstr "Recargar"
#: ../../include/widgets.php:487
msgid "Account settings"
@@ -1475,15 +1475,15 @@ msgstr "Características adicionales"
#: ../../include/widgets.php:505
msgid "Feature/Addon settings"
-msgstr "Configuración de característica/complemento"
+msgstr "Configuración de características o complementos"
#: ../../include/widgets.php:511
msgid "Display settings"
-msgstr "Configuración de visualización"
+msgstr "Ajustes de visualización"
#: ../../include/widgets.php:517
msgid "Connected apps"
-msgstr "Apps conectadas"
+msgstr "Aplicaciones conectadas"
#: ../../include/widgets.php:523
msgid "Export channel"
@@ -1495,7 +1495,7 @@ msgstr "Permisos predeterminados de conexión"
#: ../../include/widgets.php:540
msgid "Premium Channel Settings"
-msgstr "Configuración de canal premium"
+msgstr "Configuración del canal premium"
#: ../../include/widgets.php:556 ../../include/nav.php:208
#: ../../include/apps.php:134 ../../mod/admin.php:1079
@@ -1522,7 +1522,7 @@ msgstr "Salas de chat"
#: ../../include/widgets.php:672
msgid "Bookmarked Chatrooms"
-msgstr "Salas de chat favoritas"
+msgstr "Salas de chat preferidas"
#: ../../include/widgets.php:692
msgid "Suggested Chatrooms"
@@ -1534,7 +1534,7 @@ msgstr "foto/imagen"
#: ../../include/widgets.php:972 ../../include/widgets.php:974
msgid "Rate Me"
-msgstr "Califícame"
+msgstr "Valorar este canal"
#: ../../include/widgets.php:978
msgid "View Ratings"
@@ -1557,7 +1557,7 @@ msgid "Finishes:"
msgstr "Finaliza:"
#: ../../include/event.php:50 ../../include/bb2diaspora.php:481
-#: ../../include/identity.php:908 ../../mod/directory.php:302
+#: ../../include/identity.php:931 ../../mod/directory.php:302
#: ../../mod/events.php:661
msgid "Location:"
msgstr "Ubicación:"
@@ -1574,17 +1574,17 @@ msgstr "%s <!item_type!>"
#: ../../include/enotify.php:100
#, php-format
msgid "[Red:Notify] New mail received at %s"
-msgstr "[Red notifica] Nuevo correo recibido en %s"
+msgstr "[Red:Aviso] Nuevo correo recibido en %s"
#: ../../include/enotify.php:102
#, php-format
msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s te ha enviado un nuevo mensaje privado a las %3$s."
+msgstr "%1$s, %2$s le ha enviado un nuevo mensaje privado en %3$s."
#: ../../include/enotify.php:103
#, php-format
msgid "%1$s sent you %2$s."
-msgstr "%1$s te envió %2$s."
+msgstr "%1$s le envió %2$s."
#: ../../include/enotify.php:103
msgid "a private message"
@@ -1593,94 +1593,94 @@ msgstr "un mensaje privado"
#: ../../include/enotify.php:104
#, php-format
msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Por favor visita %s para ver y/o responder a tu mensaje privado"
+msgstr "Por favor visite %s para ver y/o responder a su mensaje privado."
#: ../../include/enotify.php:158
#, php-format
msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s comentó sobre [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s comentó [zrl=%3$s]a %4$s[/zrl]"
#: ../../include/enotify.php:166
#, php-format
msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s comentó sobre [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s comentó [zrl=%3$s]%4$s de %5$s[/zrl]"
#: ../../include/enotify.php:175
#, php-format
msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s comentó sobre [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s comentó [zrl=%3$s]su %4$s[/zrl]"
#: ../../include/enotify.php:186
#, php-format
msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Red notifica] Comentario en la conversación #%1$d por %2$s"
+msgstr "[Red:Aviso] Nuevo comentario de %2$s en la conversación #%1$d"
#: ../../include/enotify.php:187
#, php-format
msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s comentó sobre un elemento/conversación que has estado siguiendo."
+msgstr "%1$s, %2$s comentó un elemento/conversación que ha estado siguiendo."
#: ../../include/enotify.php:190 ../../include/enotify.php:205
#: ../../include/enotify.php:231 ../../include/enotify.php:249
#: ../../include/enotify.php:263
#, php-format
msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Para ver o comentar la conversación, visita %s"
+msgstr "Para ver o comentar la conversación, visite %s"
#: ../../include/enotify.php:196
#, php-format
msgid "[Red:Notify] %s posted to your profile wall"
-msgstr "[Red:aviso] %s escribió en su muro"
+msgstr "[Red:Aviso] %s escribió en su página de perfil"
#: ../../include/enotify.php:198
#, php-format
msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s publicó en su muro de perfil a las %3$s"
+msgstr "%1$s, %2$s publicó en su página de perfil en %3$s"
#: ../../include/enotify.php:200
#, php-format
msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s publicó en [zrl=%3$s]su muro[/zrl]"
+msgstr "%1$s, %2$s publicó en [zrl=%3$s]su página de perfil[/zrl]"
#: ../../include/enotify.php:224
#, php-format
msgid "[Red:Notify] %s tagged you"
-msgstr "[Red notifica] %s te etiquetó"
+msgstr "[Red:Aviso] %s le etiquetó"
#: ../../include/enotify.php:225
#, php-format
msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s te etiquetó a las %3$s"
+msgstr "%1$s, %2$s le etiquetó en %3$s"
#: ../../include/enotify.php:226
#, php-format
msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]te etiquetó[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]le etiquetó[/zrl]."
#: ../../include/enotify.php:238
#, php-format
msgid "[Red:Notify] %1$s poked you"
-msgstr "[Red aviso] %1$s ha recibido un toque"
+msgstr "[Red:Aviso] %1$s ha recibido un toque"
#: ../../include/enotify.php:239
#, php-format
msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s recibió un toque en %3$s"
+msgstr "%1$s, %2$s le dio un toque en %3$s"
#: ../../include/enotify.php:240
#, php-format
msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]recibió un toque[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]le dio un toque[/zrl]."
#: ../../include/enotify.php:256
#, php-format
msgid "[Red:Notify] %s tagged your post"
-msgstr "[Red notifica] %s etiquetó su entrada"
+msgstr "[Red:Aviso] %s etiquetó su entrada"
#: ../../include/enotify.php:257
#, php-format
msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s etiquetó su publicación a las %3$s"
+msgstr "%1$s, %2$s etiquetó su publicación en %3$s"
#: ../../include/enotify.php:258
#, php-format
@@ -1689,12 +1689,12 @@ msgstr "%1$s, %2$s etiquetó [zrl=%3$s]su publicación[/zrl]"
#: ../../include/enotify.php:270
msgid "[Red:Notify] Introduction received"
-msgstr "[Red notifica] Introducción recibida"
+msgstr "[Red:Aviso] Solicitud de conexión recibida"
#: ../../include/enotify.php:271
#, php-format
msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, ha recibido una nueva solicitud de conexión de '%2$s' a las %3$s"
+msgstr "%1$s, ha recibido una nueva solicitud de conexión de '%2$s' en %3$s"
#: ../../include/enotify.php:272
#, php-format
@@ -1705,28 +1705,28 @@ msgstr "%1$s, ha recibido [zrl=%2$s]una nueva solicitud de conexión[/zrl] de %3
#: ../../include/enotify.php:276 ../../include/enotify.php:295
#, php-format
msgid "You may visit their profile at %s"
-msgstr "Puedes visitar su perfil en %s"
+msgstr "Puede visitar su perfil en %s"
#: ../../include/enotify.php:278
#, php-format
msgid "Please visit %s to approve or reject the connection request."
-msgstr "Por favor, visita %s para permitir o rechazar la solicitd de conexión."
+msgstr "Por favor, visite %s para permitir o rechazar la solicitad de conexión."
#: ../../include/enotify.php:285
msgid "[Red:Notify] Friend suggestion received"
-msgstr "[Red notifica] recibiste una sugerencia de amistad"
+msgstr "[Red:Aviso] recibió una sugerencia de conexión"
#: ../../include/enotify.php:286
#, php-format
msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, has recibido una sugerencia de un amigo de '%2$s' a las %3$s"
+msgstr "%1$s, ha recibido una sugerencia de conexión de '%2$s' en %3$s"
#: ../../include/enotify.php:287
#, php-format
msgid ""
"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
"%4$s."
-msgstr "%1$s, ha recibido [zrl=%2$s]una sugerencia de amistad[/zrl] para %3$s de %4$s."
+msgstr "%1$s, ha recibido [zrl=%2$s]una sugerencia de conexión[/zrl] para %3$s de %4$s."
#: ../../include/enotify.php:293
msgid "Name:"
@@ -1739,11 +1739,11 @@ msgstr "Foto:"
#: ../../include/enotify.php:297
#, php-format
msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Para aprovar o rechazar la sugerencia, visita %s"
+msgstr "Por favor, visite %s para aprobar o rechazar la sugerencia."
#: ../../include/enotify.php:508
msgid "[Red:Notify]"
-msgstr "[Red:Notify]"
+msgstr "[Red:Aviso]"
#: ../../include/message.php:18
msgid "No recipient provided."
@@ -1755,21 +1755,21 @@ msgstr "[sin asunto]"
#: ../../include/message.php:45
msgid "Unable to determine sender."
-msgstr "No ha sido posible de determinar el remitente. "
+msgstr "No ha sido posible determinar el remitente. "
#: ../../include/message.php:200
msgid "Stored post could not be verified."
-msgstr "No se ha podido verificar las entradas guardadas."
+msgstr "No se han podido verificar las entradas guardadas."
#: ../../include/diaspora.php:2148 ../../include/conversation.php:164
#: ../../mod/like.php:394
#, php-format
msgid "%1$s likes %2$s's %3$s"
-msgstr "a %1$s le gusta el/la %3$s de %2$s"
+msgstr "a %1$s le gusta %3$s de %2$s"
#: ../../include/diaspora.php:2494
msgid "Please choose"
-msgstr "Por favor selecciona"
+msgstr "Por favor, elija"
#: ../../include/diaspora.php:2496
msgid "Agree"
@@ -1781,19 +1781,19 @@ msgstr "En desacuerdo"
#: ../../include/diaspora.php:2500
msgid "Abstain"
-msgstr "Se abstiene"
+msgstr "Abstención"
#: ../../include/follow.php:28
msgid "Channel is blocked on this site."
-msgstr "El canal está bloqueado en éste sitio."
+msgstr "El canal está bloqueado en este sitio."
#: ../../include/follow.php:33
msgid "Channel location missing."
-msgstr "Falta la dirección del canal "
+msgstr "Falta la ubicación del canal."
#: ../../include/follow.php:83
msgid "Response from remote channel was incomplete."
-msgstr "Respuesta del canal remoto incompleta."
+msgstr "Respuesta incompleta del canal."
#: ../../include/follow.php:100
msgid "Channel was deleted and no longer exists."
@@ -1809,7 +1809,7 @@ msgstr "Protocolo bloqueado para este canal."
#: ../../include/follow.php:179
msgid "Channel discovery failed."
-msgstr "Búsqueda de canales ha fallado."
+msgstr "El intento de acceder al canal ha fallado."
#: ../../include/follow.php:195
msgid "local account not found."
@@ -1817,7 +1817,7 @@ msgstr "No se ha encontrado la cuenta local."
#: ../../include/follow.php:224
msgid "Cannot connect to yourself."
-msgstr "No puedes conectarte contigo mismo."
+msgstr "No puede conectarse consigo mismo."
#: ../../include/ItemObject.php:89 ../../include/conversation.php:667
msgid "Private Message"
@@ -1833,15 +1833,15 @@ msgstr "Guardar en carpeta"
#: ../../include/ItemObject.php:151
msgid "I will attend"
-msgstr "Asistiré"
+msgstr "Participaré"
#: ../../include/ItemObject.php:151
msgid "I will not attend"
-msgstr "No asistiré"
+msgstr "No participaré"
#: ../../include/ItemObject.php:151
msgid "I might attend"
-msgstr "Quizá asista"
+msgstr "Quizá participe"
#: ../../include/ItemObject.php:161
msgid "I agree"
@@ -1862,25 +1862,25 @@ msgid "View all"
msgstr "Ver todo"
#: ../../include/ItemObject.php:179 ../../include/taxonomy.php:396
-#: ../../include/conversation.php:1701 ../../include/identity.php:1167
+#: ../../include/conversation.php:1701 ../../include/identity.php:1190
#: ../../mod/photos.php:1019
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
-msgstr[0] "Le gusta"
-msgstr[1] "Le gusta"
+msgstr[0] "Me gusta"
+msgstr[1] "Me gusta"
#: ../../include/ItemObject.php:184 ../../include/conversation.php:1704
#: ../../mod/photos.php:1024
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
-msgstr[0] "No le gusta"
-msgstr[1] "No les gusta"
+msgstr[0] "No me gusta"
+msgstr[1] "No me gusta"
#: ../../include/ItemObject.php:212
msgid "Add Star"
-msgstr "Añadir estrella"
+msgstr "Destacar añadiendo una estrella"
#: ../../include/ItemObject.php:213
msgid "Remove Star"
@@ -1888,7 +1888,7 @@ msgstr "Eliminar estrella"
#: ../../include/ItemObject.php:214
msgid "Toggle Star Status"
-msgstr "Invertir estado de estrella"
+msgstr "Activar o desactivar el estado de preferido"
#: ../../include/ItemObject.php:218
msgid "starred"
@@ -1908,19 +1908,19 @@ msgstr "Añadir etiqueta"
#: ../../include/ItemObject.php:254 ../../mod/photos.php:959
msgid "I like this (toggle)"
-msgstr "me gusta (conmutar)"
+msgstr "me gusta (cambiar)"
#: ../../include/ItemObject.php:254 ../../include/taxonomy.php:310
msgid "like"
-msgstr "Me gusta"
+msgstr "me gusta"
#: ../../include/ItemObject.php:255 ../../mod/photos.php:960
msgid "I don't like this (toggle)"
-msgstr "No me gusta (conmutar)"
+msgstr "No me gusta esto (cambiar)"
#: ../../include/ItemObject.php:255 ../../include/taxonomy.php:311
msgid "dislike"
-msgstr "No me gusta"
+msgstr "no me gusta"
#: ../../include/ItemObject.php:259
msgid "Share This"
@@ -1928,7 +1928,7 @@ msgstr "Compartir esto"
#: ../../include/ItemObject.php:259
msgid "share"
-msgstr "Compartir"
+msgstr "compartir"
#: ../../include/ItemObject.php:276
#, php-format
@@ -1940,7 +1940,7 @@ msgstr[1] "%d comentarios"
#: ../../include/ItemObject.php:294 ../../include/ItemObject.php:295
#, php-format
msgid "View %s's profile - %s"
-msgstr "Ver perfil de %s - %s"
+msgstr "Ver el perfil de %s - %s"
#: ../../include/ItemObject.php:298
msgid "to"
@@ -1952,16 +1952,16 @@ msgstr "mediante"
#: ../../include/ItemObject.php:300
msgid "Wall-to-Wall"
-msgstr "Muro-a-Muro"
+msgstr "De página de perfil a página de perfil (de Muro a Muro)"
#: ../../include/ItemObject.php:301
msgid "via Wall-To-Wall:"
-msgstr "mediante Muro-a-Muro"
+msgstr "Mediante el procedimiento página de perfil a página de perfil (de Muro a Muro)"
#: ../../include/ItemObject.php:312 ../../include/conversation.php:716
#, php-format
msgid "from %s"
-msgstr "de %s"
+msgstr "desde %s"
#: ../../include/ItemObject.php:315 ../../include/conversation.php:719
#, php-format
@@ -1975,7 +1975,7 @@ msgstr "Caduca: %s"
#: ../../include/ItemObject.php:337
msgid "Save Bookmarks"
-msgstr "Guardar marcadores"
+msgstr "Guardar en Marcadores"
#: ../../include/ItemObject.php:338
msgid "Add to Calendar"
@@ -1983,17 +1983,17 @@ msgstr "Añadir al calendario"
#: ../../include/ItemObject.php:347
msgid "Mark all seen"
-msgstr "Marcar todos como vistos"
+msgstr "Marcar todo como visto"
#: ../../include/ItemObject.php:353 ../../mod/photos.php:1145
msgctxt "noun"
msgid "Likes"
-msgstr "Le gusta"
+msgstr "Me gusta"
#: ../../include/ItemObject.php:354 ../../mod/photos.php:1146
msgctxt "noun"
msgid "Dislikes"
-msgstr "No le gusta"
+msgstr "No me gusta"
#: ../../include/ItemObject.php:359 ../../include/acl_selectors.php:249
#: ../../mod/photos.php:1151
@@ -2068,10 +2068,10 @@ msgstr "Nueva ventana"
msgid "Open the selected location in a different window or browser tab"
msgstr "Abrir la ubicación seleccionada en una ventana o pestaña aparte"
-#: ../../include/Contact.php:215 ../../mod/admin.php:739
+#: ../../include/Contact.php:215
#, php-format
msgid "User '%s' deleted"
-msgstr "Usuario '%s' eliminado"
+msgstr "El usuario '%s' ha sido eliminado"
#: ../../include/bb2diaspora.php:373
msgid "Attachments:"
@@ -2083,11 +2083,11 @@ msgstr "Notificación de eventos de $Projectname:"
#: ../../include/nav.php:87 ../../include/nav.php:120 ../../boot.php:1550
msgid "Logout"
-msgstr "Cerrar sesión"
+msgstr "Finalizar sesión"
#: ../../include/nav.php:87 ../../include/nav.php:120
msgid "End this session"
-msgstr "Cerrar ésta sesión"
+msgstr "Finalizar esta sesión"
#: ../../include/nav.php:90 ../../include/nav.php:151
msgid "Home"
@@ -2100,7 +2100,7 @@ msgstr "Sus entradas y conversaciones"
#: ../../include/nav.php:91 ../../include/conversation.php:942
#: ../../mod/connedit.php:498
msgid "View Profile"
-msgstr "Ver perfil"
+msgstr "Ver el perfil"
#: ../../include/nav.php:91
msgid "Your profile page"
@@ -2114,13 +2114,13 @@ msgstr "Editar perfiles"
msgid "Manage/Edit profiles"
msgstr "Administrar/editar perfiles"
-#: ../../include/nav.php:95 ../../include/identity.php:880
+#: ../../include/nav.php:95 ../../include/identity.php:903
msgid "Edit Profile"
msgstr "Editar perfil"
#: ../../include/nav.php:95
msgid "Edit your profile"
-msgstr "Editar tu perfil"
+msgstr "Editar su perfil"
#: ../../include/nav.php:97 ../../include/conversation.php:1600
#: ../../include/apps.php:139 ../../mod/fbrowser.php:25
@@ -2172,15 +2172,15 @@ msgstr "Acceder"
#: ../../include/nav.php:134
#, php-format
msgid "%s - click to logout"
-msgstr "%s - pulsar para cerrar sesión"
+msgstr "%s - pulsar para finalizar sesión"
#: ../../include/nav.php:137
msgid "Remote authentication"
-msgstr "Autenticación remota"
+msgstr "Acceder desde su servidor"
#: ../../include/nav.php:137
msgid "Click to authenticate to your home hub"
-msgstr "Pulsar para identificarse en su servidor"
+msgstr "Pulsar para identificarse en su servidor de inicio"
#: ../../include/nav.php:151
msgid "Home Page"
@@ -2221,7 +2221,7 @@ msgstr "Directorio de canales"
#: ../../include/nav.php:180 ../../include/apps.php:133
msgid "Matrix"
-msgstr "Matríz"
+msgstr "RedMatrix"
#: ../../include/nav.php:180
msgid "Your matrix"
@@ -2241,7 +2241,7 @@ msgstr "Mi canal"
#: ../../include/nav.php:184
msgid "Mark all channel notifications seen"
-msgstr "Marcar todas las notificaciones de canales como leídas"
+msgstr "Marcar todas las notificaciones del canal como leídas"
#: ../../include/nav.php:187 ../../mod/connections.php:407
msgid "Connections"
@@ -2307,11 +2307,11 @@ msgstr "Marcar todos los eventos como leidos"
#: ../../include/nav.php:206 ../../include/apps.php:132
#: ../../mod/manage.php:166
msgid "Channel Manager"
-msgstr "Administración del canal"
+msgstr "Administración de canales"
#: ../../include/nav.php:206
msgid "Manage Your Channels"
-msgstr "Gestione sus canales"
+msgstr "Gestionar sus canales"
#: ../../include/nav.php:208
msgid "Account/Channel Settings"
@@ -2323,7 +2323,7 @@ msgstr "Administrador"
#: ../../include/nav.php:216
msgid "Site Setup and Configuration"
-msgstr "Configuración del sitio"
+msgstr "Ajustes y configuración del sitio"
#: ../../include/nav.php:247 ../../include/conversation.php:850
msgid "Loading..."
@@ -2335,7 +2335,7 @@ msgstr "@nombre, #etiqueta, contenido"
#: ../../include/nav.php:253
msgid "Please wait..."
-msgstr "Espera por favor…"
+msgstr "Espere por favor…"
#: ../../include/taxonomy.php:222 ../../include/taxonomy.php:243
msgid "Tags"
@@ -2347,7 +2347,7 @@ msgstr "Palabras clave"
#: ../../include/taxonomy.php:308
msgid "have"
-msgstr "tienes"
+msgstr "tener"
#: ../../include/taxonomy.php:308
msgid "has"
@@ -2355,7 +2355,7 @@ msgstr "tiene"
#: ../../include/taxonomy.php:309
msgid "want"
-msgstr "quieres"
+msgstr "quiero"
#: ../../include/taxonomy.php:309
msgid "wants"
@@ -2385,7 +2385,7 @@ msgstr "%1$s cambió %2$s a &ldquo;%3$s&rdquo;"
#: ../../include/activities.php:57
#, php-format
msgid "Visit %1$s's %2$s"
-msgstr "Visita %2$s de %1$s"
+msgstr "Visitar %2$s de %1$s"
#: ../../include/activities.php:60
#, php-format
@@ -2396,63 +2396,63 @@ msgstr "%1$s actualizó %2$s, %3$s cambió."
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."
-msgstr "El token de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado"
+msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado"
#: ../../include/permissions.php:26
msgid "Can view my normal stream and posts"
-msgstr "Puede ver mi flujo y publicaciones normales"
+msgstr "Pueden verse mi flujo de actividad y publicaciones normales"
#: ../../include/permissions.php:27
msgid "Can view my default channel profile"
-msgstr "Puede ver mi perfil de canal predeterminado."
+msgstr "Puede verse mi perfil de canal predeterminado."
#: ../../include/permissions.php:28
msgid "Can view my photo albums"
-msgstr "Puede ver mis álbumes de fotos"
+msgstr "Pueden verse mis álbumes de fotos"
#: ../../include/permissions.php:29
msgid "Can view my connections"
-msgstr "Puede ver mis conexiones"
+msgstr "Pueden verse mis conexiones"
#: ../../include/permissions.php:30
msgid "Can view my file storage"
-msgstr "Puede ver mis ficheros almacenados"
+msgstr "Pueden verse mis ficheros compartidos"
#: ../../include/permissions.php:31
msgid "Can view my webpages"
-msgstr "Puede ver mis páginas web"
+msgstr "Pueden verse mis páginas web"
#: ../../include/permissions.php:34
msgid "Can send me their channel stream and posts"
-msgstr "Te pueden enviar sus canales de flujos y entradas"
+msgstr "Me pueden enviar sus entradas y flujo de actividad su canal"
#: ../../include/permissions.php:35
msgid "Can post on my channel page (\"wall\")"
-msgstr "Pueden crear entradas en su página del canal (“muro”)"
+msgstr "Pueden crear entradas en mi página de inicio del canal (“muro”)"
#: ../../include/permissions.php:36
msgid "Can comment on or like my posts"
-msgstr "Puede comentar en mis publicaciones o marcar como 'me gusta'."
+msgstr "Pueden publicarse comentarios en mis publicaciones o marcar mis entradas con 'me gusta'."
#: ../../include/permissions.php:37
msgid "Can send me private mail messages"
-msgstr "Puede enviarme mensajes privados"
+msgstr "Se me pueden enviar mensajes privados"
#: ../../include/permissions.php:38
msgid "Can post photos to my photo albums"
-msgstr "Puede publicar fotos en mis galerias"
+msgstr "Pueden publicarse fotos en mis álbumes"
#: ../../include/permissions.php:39
msgid "Can like/dislike stuff"
-msgstr "Puede marcar contenido como me gustar/no me gusta."
+msgstr "Puede marcarse contenido como me gustar/no me gusta."
#: ../../include/permissions.php:39
msgid "Profiles and things other than posts/comments"
-msgstr "Perfiles y cosas aparte de publicaciones/comentarios"
+msgstr "Perfiles y otras cosas aparte de publicaciones/comentarios"
#: ../../include/permissions.php:41
msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Puede reenviar a todos mis contactos de canalmediante post @mentions"
+msgstr "Puede enviarse una entrada a todos mis contactos del canal mediante una @mención"
#: ../../include/permissions.php:41
msgid "Advanced - useful for creating group forum channels"
@@ -2460,11 +2460,11 @@ msgstr "Avanzado - útil para crear canales de foro o grupos"
#: ../../include/permissions.php:42
msgid "Can chat with me (when available)"
-msgstr "Puede charlar conmigo"
+msgstr "Se puede charlar conmigo (cuando esté disponible)"
#: ../../include/permissions.php:43
msgid "Can write to my file storage"
-msgstr "Puede escribir en mi almacenamiento de ficheros"
+msgstr "Puede escribirse en mi carpeta de ficheros"
#: ../../include/permissions.php:44
msgid "Can edit my webpages"
@@ -2472,7 +2472,7 @@ msgstr "Puede editar mis páginas web"
#: ../../include/permissions.php:46
msgid "Can source my public posts in derived channels"
-msgstr "Puede utilizar como fuente mis publicaciones públicas en canales derivados"
+msgstr "Pueden utilizarse mis publicaciones públicas como origen de contenidos en canales derivados"
#: ../../include/permissions.php:46
msgid "Somewhat advanced - very useful in open communities"
@@ -2480,16 +2480,16 @@ msgstr "Algo avanzado - muy útil en comunidades abiertas"
#: ../../include/permissions.php:48
msgid "Can administer my channel resources"
-msgstr "Puede administrar mis recursos de canal"
+msgstr "Pueden administrarse mis recursos del canal"
#: ../../include/permissions.php:48
msgid ""
"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Muy avanzado. Dejalo a no ser que sabes bien lo que estás haciendo."
+msgstr "Muy avanzado. Déjelo a no ser que sepa bien lo que está haciendo."
#: ../../include/permissions.php:893
msgid "Social Networking"
-msgstr "Creación de redes sociales"
+msgstr "Redes sociales"
#: ../../include/permissions.php:893 ../../include/permissions.php:894
#: ../../include/permissions.php:895
@@ -2511,7 +2511,7 @@ msgstr "Foro de la comunidad"
#: ../../include/permissions.php:895
msgid "Feed Republish"
-msgstr "Republicar feed"
+msgstr "Republicar un \"feed\""
#: ../../include/permissions.php:896
msgid "Special Purpose"
@@ -2519,7 +2519,7 @@ msgstr "Propósito especial"
#: ../../include/permissions.php:896
msgid "Celebrity/Soapbox"
-msgstr "Celebridad / Plataforma improvisada"
+msgstr "Página para fans"
#: ../../include/permissions.php:896
msgid "Group Repository"
@@ -2543,12 +2543,12 @@ msgstr "canal"
#: ../../include/conversation.php:167 ../../mod/like.php:396
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "a %1$s no le gusta el/la %3$s de %2$s"
+msgstr "a %1$s no le gusta el %3$s de %2$s"
#: ../../include/conversation.php:204
#, php-format
msgid "%1$s is now connected with %2$s"
-msgstr "%1$s ahora es conectada con %2$s"
+msgstr "%1$s ahora está conectado con %2$s"
#: ../../include/conversation.php:239
#, php-format
@@ -2564,12 +2564,12 @@ msgstr "%1$s está %2$s"
#: ../../include/conversation.php:572 ../../mod/photos.php:996
msgctxt "title"
msgid "Likes"
-msgstr "Le gusta"
+msgstr "Me gusta"
#: ../../include/conversation.php:572 ../../mod/photos.php:996
msgctxt "title"
msgid "Dislikes"
-msgstr "No le gusta"
+msgstr "No me gusta"
#: ../../include/conversation.php:573 ../../mod/photos.php:997
msgctxt "title"
@@ -2584,27 +2584,27 @@ msgstr "En desacuerdo"
#: ../../include/conversation.php:573 ../../mod/photos.php:997
msgctxt "title"
msgid "Abstain"
-msgstr "Abstenerse"
+msgstr "Abstención"
#: ../../include/conversation.php:574 ../../mod/photos.php:998
msgctxt "title"
msgid "Attending"
-msgstr "Asistir"
+msgstr "Participar"
#: ../../include/conversation.php:574 ../../mod/photos.php:998
msgctxt "title"
msgid "Not attending"
-msgstr "No asistir"
+msgstr "No participar"
#: ../../include/conversation.php:574 ../../mod/photos.php:998
msgctxt "title"
msgid "Might attend"
-msgstr "Quizá asista"
+msgstr "Quizá participe"
#: ../../include/conversation.php:692
#, php-format
msgid "View %s's profile @ %s"
-msgstr "Ver perfil @ %s de %s"
+msgstr "Ver el perfil @ %s de %s"
#: ../../include/conversation.php:707
msgid "Categories:"
@@ -2616,7 +2616,7 @@ msgstr "Archivado bajo:"
#: ../../include/conversation.php:735
msgid "View in context"
-msgstr "Mostrar en contexto"
+msgstr "Mostrar en su contexto"
#: ../../include/conversation.php:846
msgid "remove"
@@ -2628,7 +2628,7 @@ msgstr "Eliminar elementos seleccionados"
#: ../../include/conversation.php:939
msgid "View Source"
-msgstr "Ver fuente"
+msgstr "Ver la fuente original de esta entrada"
#: ../../include/conversation.php:940
msgid "Follow Thread"
@@ -2644,7 +2644,7 @@ msgstr "Ver fotos"
#: ../../include/conversation.php:944
msgid "Matrix Activity"
-msgstr "Actvidad de Matrix"
+msgstr "Actividad en la red de esta conexión"
#: ../../include/conversation.php:946
msgid "Edit Contact"
@@ -2661,25 +2661,25 @@ msgstr "Dar un toque"
#: ../../include/conversation.php:1062
#, php-format
msgid "%s likes this."
-msgstr "a %s les gusta esto."
+msgstr "a %s le gusta esto."
#: ../../include/conversation.php:1062
#, php-format
msgid "%s doesn't like this."
-msgstr "%s no les gusta esto."
+msgstr "a %s no le gusta esto."
#: ../../include/conversation.php:1066
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
-msgstr[0] "a <span %1$s>%2$d persona</span> le gusta esto."
+msgstr[0] "a <span %1$s>%2$d personas</span> le gusta esto."
msgstr[1] "a <span %1$s>%2$d personas</span> les gusta esto."
#: ../../include/conversation.php:1068
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
-msgstr[0] "a <span %1$s>%2$d persona</span> no le gusta esto."
+msgstr[0] "a <span %1$s>%2$d personas</span> no les gusta esto."
msgstr[1] "a <span %1$s>%2$d personas</span> no les gusta esto."
#: ../../include/conversation.php:1074
@@ -2696,33 +2696,33 @@ msgstr[1] ", y %d personas más"
#: ../../include/conversation.php:1078
#, php-format
msgid "%s like this."
-msgstr "%s les gusta esto."
+msgstr "a %s le gusta esto."
#: ../../include/conversation.php:1078
#, php-format
msgid "%s don't like this."
-msgstr "%s no les gusta esto."
+msgstr "a %s no le gusta esto."
#: ../../include/conversation.php:1140
msgid "Visible to <strong>everybody</strong>"
-msgstr "Visible para cualquiera"
+msgstr "Visible para <strong>cualquiera</strong>"
#: ../../include/conversation.php:1141 ../../mod/mail.php:174
#: ../../mod/mail.php:289
msgid "Please enter a link URL:"
-msgstr "Por favor, introduzca una URL de enlace:"
+msgstr "Por favor, introduzca la dirección del enlace:"
#: ../../include/conversation.php:1142
msgid "Please enter a video link/URL:"
-msgstr "Por favor, introduzca un enlace/URL de vídeo:"
+msgstr "Por favor, introduzca un enlace de vídeo:"
#: ../../include/conversation.php:1143
msgid "Please enter an audio link/URL:"
-msgstr "Por favor, introduzca un enlace/URL de audio:"
+msgstr "Por favor, introduzca un enlace de audio:"
#: ../../include/conversation.php:1144
msgid "Tag term:"
-msgstr "Término de etiqueta:"
+msgstr "Término de la etiqueta:"
#: ../../include/conversation.php:1145 ../../mod/filer.php:49
msgid "Save to Folder:"
@@ -2730,7 +2730,7 @@ msgstr "Guardar en carpeta:"
#: ../../include/conversation.php:1146
msgid "Where are you right now?"
-msgstr "¿Donde estás ahora?"
+msgstr "¿Donde está ahora?"
#: ../../include/conversation.php:1147 ../../mod/editpost.php:47
#: ../../mod/mail.php:175 ../../mod/mail.php:290
@@ -2764,11 +2764,11 @@ msgstr "subir foto"
#: ../../mod/editlayout.php:140 ../../mod/editwebpage.php:185
#: ../../mod/editblock.php:142 ../../mod/mail.php:239 ../../mod/mail.php:353
msgid "Attach file"
-msgstr "Adjuntar archivo"
+msgstr "Adjuntar fichero"
#: ../../include/conversation.php:1189
msgid "attach file"
-msgstr "adjuntar archivo"
+msgstr "adjuntar fichero"
#: ../../include/conversation.php:1190 ../../mod/editpost.php:114
#: ../../mod/editlayout.php:141 ../../mod/editwebpage.php:186
@@ -2804,11 +2804,11 @@ msgstr "Configure su localización"
#: ../../include/conversation.php:1197
msgid "set location"
-msgstr "configura localización"
+msgstr "configure localización"
#: ../../include/conversation.php:1198 ../../mod/editpost.php:120
msgid "Toggle voting"
-msgstr "Invertir votación"
+msgstr "Cambiar votación"
#: ../../include/conversation.php:1201 ../../mod/editpost.php:119
#: ../../mod/editlayout.php:146 ../../mod/editwebpage.php:191
@@ -2845,19 +2845,19 @@ msgstr "permisos"
#: ../../mod/editlayout.php:155 ../../mod/editwebpage.php:202
#: ../../mod/editblock.php:158
msgid "Public post"
-msgstr "Publicación pública"
+msgstr "Entrada pública"
#: ../../include/conversation.php:1221 ../../mod/editpost.php:138
#: ../../mod/editlayout.php:163 ../../mod/editwebpage.php:210
#: ../../mod/editblock.php:165
msgid "Example: bob@example.com, mary@example.com"
-msgstr "Ejemplo: bob@example.com, mary@example.com"
+msgstr "Ejemplo: roberto@ejemplo.com, maría@ejemplo.com"
#: ../../include/conversation.php:1234 ../../mod/editpost.php:149
#: ../../mod/editlayout.php:172 ../../mod/editwebpage.php:219
#: ../../mod/editblock.php:175 ../../mod/mail.php:245 ../../mod/mail.php:359
msgid "Set expiration date"
-msgstr "Configurar fecha de expiración"
+msgstr "Configurar fecha de caducidad"
#: ../../include/conversation.php:1238 ../../mod/events.php:651
#: ../../mod/editpost.php:153
@@ -2889,7 +2889,7 @@ msgstr "Ordenar por fecha de comentario"
#: ../../include/conversation.php:1496
msgid "Posted Order"
-msgstr "Recientemente publicados"
+msgstr "Publicaciones recientes"
#: ../../include/conversation.php:1499
msgid "Sort by Post Date"
@@ -2934,11 +2934,11 @@ msgstr "Mensajes de estado y publicaciones"
#: ../../include/conversation.php:1591
msgid "About"
-msgstr "Perfil"
+msgstr "Sobre mí"
#: ../../include/conversation.php:1594
msgid "Profile Details"
-msgstr "Detalles de perfil"
+msgstr "Detalles del perfil"
#: ../../include/conversation.php:1603 ../../include/photos.php:359
msgid "Photo Albums"
@@ -2946,7 +2946,7 @@ msgstr "Álbumes de fotos"
#: ../../include/conversation.php:1612
msgid "Files and Storage"
-msgstr "Ficheros y almacenamiento"
+msgstr "Ficheros y carpetas"
#: ../../include/conversation.php:1622 ../../include/conversation.php:1625
msgid "Chatrooms"
@@ -2965,14 +2965,14 @@ msgctxt "noun"
msgid "Attending"
msgid_plural "Attending"
msgstr[0] "Asistir"
-msgstr[1] "Asistir"
+msgstr[1] "Participar"
#: ../../include/conversation.php:1710
msgctxt "noun"
msgid "Not Attending"
msgid_plural "Not Attending"
msgstr[0] "No asistir"
-msgstr[1] "No asistir"
+msgstr[1] "No participar"
#: ../../include/conversation.php:1713
msgctxt "noun"
@@ -3000,7 +3000,7 @@ msgctxt "noun"
msgid "Abstain"
msgid_plural "Abstains"
msgstr[0] "se abstiene"
-msgstr[1] "se abstienen"
+msgstr[1] "Se abstienen"
#: ../../include/items.php:413 ../../mod/like.php:270
#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/profperm.php:23
@@ -3008,51 +3008,51 @@ msgstr[1] "se abstienen"
msgid "Permission denied"
msgstr "Permiso denegado"
-#: ../../include/items.php:1035 ../../include/items.php:1081
+#: ../../include/items.php:1038 ../../include/items.php:1084
msgid "(Unknown)"
msgstr "(Desconocido)"
-#: ../../include/items.php:1307
+#: ../../include/items.php:1310
msgid "Visible to anybody on the internet."
-msgstr "Visible para todo el mundo en internet."
+msgstr "Visible para cualquiera en internet."
-#: ../../include/items.php:1309
+#: ../../include/items.php:1312
msgid "Visible to you only."
-msgstr "Visible sólo para ti."
+msgstr "Visible sólo para usted."
-#: ../../include/items.php:1311
+#: ../../include/items.php:1314
msgid "Visible to anybody in this network."
msgstr "Visible para cualquiera en esta red."
-#: ../../include/items.php:1313
+#: ../../include/items.php:1316
msgid "Visible to anybody authenticated."
-msgstr "Visible para cualquiera autenticado."
+msgstr "Visible para cualquiera que haya sido autenticado."
-#: ../../include/items.php:1315
+#: ../../include/items.php:1318
#, php-format
msgid "Visible to anybody on %s."
msgstr "Visible para cualquiera en %s."
-#: ../../include/items.php:1317
+#: ../../include/items.php:1320
msgid "Visible to all connections."
msgstr "Visible para todas las conexiones."
-#: ../../include/items.php:1319
+#: ../../include/items.php:1322
msgid "Visible to approved connections."
-msgstr "Visible para conexiones permitidas."
+msgstr "Visible para las conexiones permitidas."
-#: ../../include/items.php:1321
+#: ../../include/items.php:1324
msgid "Visible to specific connections."
msgstr "Visible para conexiones específicas."
-#: ../../include/items.php:4215 ../../mod/thing.php:74
+#: ../../include/items.php:4218 ../../mod/thing.php:74
#: ../../mod/filestorage.php:27 ../../mod/viewsrc.php:20
#: ../../mod/admin.php:167 ../../mod/admin.php:1025 ../../mod/admin.php:1225
#: ../../mod/display.php:36
msgid "Item not found."
msgstr "Elemento no encontrado."
-#: ../../include/items.php:4288 ../../include/attach.php:137
+#: ../../include/items.php:4291 ../../include/attach.php:137
#: ../../include/attach.php:184 ../../include/attach.php:247
#: ../../include/attach.php:261 ../../include/attach.php:305
#: ../../include/attach.php:319 ../../include/attach.php:350
@@ -3095,45 +3095,45 @@ msgstr "Elemento no encontrado."
msgid "Permission denied."
msgstr "Acceso denegado."
-#: ../../include/items.php:4690 ../../mod/group.php:38 ../../mod/group.php:140
+#: ../../include/items.php:4693 ../../mod/group.php:38 ../../mod/group.php:140
#: ../../mod/bulksetclose.php:51
msgid "Collection not found."
msgstr "Colección no encontrada."
-#: ../../include/items.php:4706
+#: ../../include/items.php:4709
msgid "Collection is empty."
msgstr "La colección está vacía."
-#: ../../include/items.php:4713
+#: ../../include/items.php:4716
#, php-format
msgid "Collection: %s"
msgstr "Colección: %s"
-#: ../../include/items.php:4723 ../../mod/connedit.php:662
+#: ../../include/items.php:4726 ../../mod/connedit.php:662
#, php-format
msgid "Connection: %s"
msgstr "Conexión: %s"
-#: ../../include/items.php:4725
+#: ../../include/items.php:4728
msgid "Connection not found."
msgstr "Conexión no encontrada"
#: ../../include/zot.php:666
msgid "Invalid data packet"
-msgstr "Paquete de datos inválido"
+msgstr "Paquete de datos no válido"
#: ../../include/zot.php:682
msgid "Unable to verify channel signature"
msgstr "No ha sido posible de verificar la signatura del canal"
-#: ../../include/zot.php:2132
+#: ../../include/zot.php:2133
#, php-format
msgid "Unable to verify site signature for %s"
msgstr "No ha sido posible de verificar la signatura del sitio para %s"
#: ../../include/oembed.php:183
msgid "Embedded content"
-msgstr "Contenido incrustado"
+msgstr "Contenido incorporado"
#: ../../include/oembed.php:192
msgid "Embedding disabled"
@@ -3149,14 +3149,14 @@ msgstr "Autenticación fallida."
#: ../../include/auth.php:286 ../../mod/openid.php:190
msgid "Login failed."
-msgstr "Login ha fallado."
+msgstr "El acceso ha fallado."
#: ../../include/contact_widgets.php:14
#, php-format
msgid "%d invitation available"
msgid_plural "%d invitations available"
msgstr[0] "%d invitación pendiente"
-msgstr[1] "%d invitaciones pendientes"
+msgstr[1] "%d invitaciones disponibles"
#: ../../include/contact_widgets.php:19 ../../mod/admin.php:457
msgid "Advanced"
@@ -3194,11 +3194,11 @@ msgstr "Perfil aleatorio"
#: ../../include/contact_widgets.php:30
msgid "Invite Friends"
-msgstr "Invitar amigos"
+msgstr "Invitar a amigos"
#: ../../include/contact_widgets.php:32
msgid "Advanced example: name=fred and country=iceland"
-msgstr "Ejemplo avanzado: nombre=fred y pais=islandia"
+msgstr "Ejemplo avanzado: nombre=juan y país=españa"
#: ../../include/contact_widgets.php:125
#, php-format
@@ -3213,7 +3213,7 @@ msgstr "mostrar más"
#: ../../include/acl_selectors.php:240
msgid "Visible to your default audience"
-msgstr "Visible para tu público predeterminado."
+msgstr "Visible para su público predeterminado."
#: ../../include/acl_selectors.php:241
msgid "Show"
@@ -3235,20 +3235,20 @@ msgstr "Elemento no encontrado."
#: ../../include/attach.php:363
msgid "No source file."
-msgstr "Ningún archivo de fuente"
+msgstr "Ningún fichero de origen"
#: ../../include/attach.php:381
msgid "Cannot locate file to replace"
-msgstr "No se puede localizar el archivo a ser sustituido."
+msgstr "No se puede localizar el fichero que va a ser sustituido."
#: ../../include/attach.php:399
msgid "Cannot locate file to revise/update"
-msgstr "No se puede localizar el archivo para revisar/actualizar"
+msgstr "No se puede localizar el fichero para revisar/actualizar"
#: ../../include/attach.php:410
#, php-format
msgid "File exceeds size limit of %d"
-msgstr "Archivo supera el limite de tamaño de %d"
+msgstr "El fichero supera el limite de tamaño de %d"
#: ../../include/attach.php:422
#, php-format
@@ -3257,11 +3257,11 @@ msgstr "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos."
#: ../../include/attach.php:505
msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Error de carga, posiblemente por limite de sistema o terminación de acción"
+msgstr "Error de carga, posiblemente por limite de sistema o porque la acción ha finalizado."
#: ../../include/attach.php:517
msgid "Stored file could not be verified. Upload failed."
-msgstr "El archivo almacenado no ha podido ser verificado. El envío ha fallado."
+msgstr "El fichero almacenado no ha podido ser verificado. El envío ha fallado."
#: ../../include/attach.php:561 ../../include/attach.php:578
msgid "Path not available."
@@ -3273,7 +3273,7 @@ msgstr "Ruta vacía"
#: ../../include/attach.php:639
msgid "duplicate filename or path"
-msgstr "Nombre de ruta o archivo duplicado"
+msgstr "Nombre de ruta o fichero duplicados"
#: ../../include/attach.php:663
msgid "Path not found."
@@ -3285,11 +3285,11 @@ msgstr "mkdir ha fallado."
#: ../../include/attach.php:718
msgid "database storage failed."
-msgstr "almacenamiento en base de datos ha fallado."
+msgstr "el almacenamiento en la base de datos ha fallado."
#: ../../include/identity.php:33
msgid "Unable to obtain identity information from database"
-msgstr "No ha sido posible de obtener la información de identidad de la base de datos"
+msgstr "No ha sido posible obtener los datos de identidad desde la base de datos"
#: ../../include/identity.php:67
msgid "Empty name"
@@ -3309,26 +3309,26 @@ msgstr "Se requiere un sobrenombre (alias)."
#: ../../include/identity.php:212
msgid "Reserved nickname. Please choose another."
-msgstr "Sobrenombre en uso. Por favor, elige otro."
+msgstr "Sobrenombre en uso. Por favor, elija otro."
#: ../../include/identity.php:217 ../../include/dimport.php:34
msgid ""
"Nickname has unsupported characters or is already being used on this site."
-msgstr "El apodo contiene caracteres no admitidos o está ya en uso por otros usuarios de éste sitio."
+msgstr "El alias contiene caracteres no admitidos o está ya en uso por otros usuarios de este sitio."
#: ../../include/identity.php:292
msgid "Unable to retrieve created identity"
-msgstr "No ha sido posible de conseguir la identidad creada"
+msgstr "No ha sido posible recuperar la identidad creada"
#: ../../include/identity.php:350
msgid "Default Profile"
msgstr "Perfil principal"
-#: ../../include/identity.php:660
+#: ../../include/identity.php:683
msgid "Requested channel is not available."
msgstr "El canal solicitado no está disponible."
-#: ../../include/identity.php:707 ../../mod/profile.php:16
+#: ../../include/identity.php:730 ../../mod/profile.php:16
#: ../../mod/achievements.php:11 ../../mod/webpages.php:29
#: ../../mod/connect.php:13 ../../mod/hcard.php:8 ../../mod/blocks.php:29
#: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28
@@ -3337,193 +3337,193 @@ msgstr "El canal solicitado no está disponible."
msgid "Requested profile is not available."
msgstr "El perfil solicitado no está disponible."
-#: ../../include/identity.php:870 ../../mod/profiles.php:774
+#: ../../include/identity.php:893 ../../mod/profiles.php:774
msgid "Change profile photo"
msgstr "Cambiar foto de perfil"
-#: ../../include/identity.php:876
+#: ../../include/identity.php:899
msgid "Profiles"
msgstr "Perfiles"
-#: ../../include/identity.php:876
+#: ../../include/identity.php:899
msgid "Manage/edit profiles"
msgstr "Administrar/editar perfiles"
-#: ../../include/identity.php:877 ../../mod/profiles.php:775
+#: ../../include/identity.php:900 ../../mod/profiles.php:775
msgid "Create New Profile"
msgstr "Crear nuevo perfil"
-#: ../../include/identity.php:892 ../../mod/profiles.php:786
+#: ../../include/identity.php:915 ../../mod/profiles.php:786
msgid "Profile Image"
msgstr "Imagen de perfil"
-#: ../../include/identity.php:895
+#: ../../include/identity.php:918
msgid "visible to everybody"
-msgstr "visible para todos"
+msgstr "visible para cualquiera"
-#: ../../include/identity.php:896 ../../mod/profiles.php:669
+#: ../../include/identity.php:919 ../../mod/profiles.php:669
#: ../../mod/profiles.php:790
msgid "Edit visibility"
msgstr "Editar visibilidad"
-#: ../../include/identity.php:912 ../../include/identity.php:1151
+#: ../../include/identity.php:935 ../../include/identity.php:1174
msgid "Gender:"
-msgstr "Sexo:"
+msgstr "Género:"
-#: ../../include/identity.php:913 ../../include/identity.php:1195
+#: ../../include/identity.php:936 ../../include/identity.php:1218
msgid "Status:"
msgstr "Estado:"
-#: ../../include/identity.php:914 ../../include/identity.php:1206
+#: ../../include/identity.php:937 ../../include/identity.php:1229
msgid "Homepage:"
-msgstr "Página web:"
+msgstr "Página personal:"
-#: ../../include/identity.php:915
+#: ../../include/identity.php:938
msgid "Online Now"
msgstr "Ahora en línea"
-#: ../../include/identity.php:998 ../../include/identity.php:1076
+#: ../../include/identity.php:1021 ../../include/identity.php:1099
#: ../../mod/ping.php:324
msgid "g A l F d"
-msgstr "g A l F d"
+msgstr "g A l d F"
-#: ../../include/identity.php:999 ../../include/identity.php:1077
+#: ../../include/identity.php:1022 ../../include/identity.php:1100
msgid "F d"
-msgstr "F d"
+msgstr "d F"
-#: ../../include/identity.php:1044 ../../include/identity.php:1116
+#: ../../include/identity.php:1067 ../../include/identity.php:1139
#: ../../mod/ping.php:346
msgid "[today]"
msgstr "[hoy]"
-#: ../../include/identity.php:1055
+#: ../../include/identity.php:1078
msgid "Birthday Reminders"
msgstr "Recordatorios de cumpleaños"
-#: ../../include/identity.php:1056
+#: ../../include/identity.php:1079
msgid "Birthdays this week:"
msgstr "Cumpleaños esta semana:"
-#: ../../include/identity.php:1109
+#: ../../include/identity.php:1132
msgid "[No description]"
msgstr "[Sin descripción]"
-#: ../../include/identity.php:1127
+#: ../../include/identity.php:1150
msgid "Event Reminders"
msgstr "Recordatorios de eventos"
-#: ../../include/identity.php:1128
+#: ../../include/identity.php:1151
msgid "Events this week:"
-msgstr "Eventos esta semana:"
+msgstr "Eventos de esta semana:"
-#: ../../include/identity.php:1141 ../../include/identity.php:1258
+#: ../../include/identity.php:1164 ../../include/identity.php:1281
#: ../../include/apps.php:138 ../../mod/profperm.php:112
msgid "Profile"
msgstr "Perfil"
-#: ../../include/identity.php:1149 ../../mod/settings.php:1056
+#: ../../include/identity.php:1172 ../../mod/settings.php:1056
msgid "Full Name:"
msgstr "Nombre completo:"
-#: ../../include/identity.php:1156
+#: ../../include/identity.php:1179
msgid "Like this channel"
msgstr "Me gusta este canal"
-#: ../../include/identity.php:1180
+#: ../../include/identity.php:1203
msgid "j F, Y"
-msgstr "j F, Y"
+msgstr "j F Y"
-#: ../../include/identity.php:1181
+#: ../../include/identity.php:1204
msgid "j F"
msgstr "j F"
-#: ../../include/identity.php:1188
+#: ../../include/identity.php:1211
msgid "Birthday:"
msgstr "Cumpleaños:"
-#: ../../include/identity.php:1192 ../../mod/directory.php:297
+#: ../../include/identity.php:1215 ../../mod/directory.php:297
msgid "Age:"
msgstr "Edad:"
-#: ../../include/identity.php:1201
+#: ../../include/identity.php:1224
#, php-format
msgid "for %1$d %2$s"
msgstr "por %1$d %2$s"
-#: ../../include/identity.php:1204 ../../mod/profiles.php:691
+#: ../../include/identity.php:1227 ../../mod/profiles.php:691
msgid "Sexual Preference:"
msgstr "Orientación sexual:"
-#: ../../include/identity.php:1208 ../../mod/directory.php:313
+#: ../../include/identity.php:1231 ../../mod/directory.php:313
#: ../../mod/profiles.php:693
msgid "Hometown:"
msgstr "Ciudad de origen:"
-#: ../../include/identity.php:1210
+#: ../../include/identity.php:1233
msgid "Tags:"
msgstr "Etiquetas:"
-#: ../../include/identity.php:1212 ../../mod/profiles.php:694
+#: ../../include/identity.php:1235 ../../mod/profiles.php:694
msgid "Political Views:"
msgstr "Posición política:"
-#: ../../include/identity.php:1214
+#: ../../include/identity.php:1237
msgid "Religion:"
msgstr "Religión:"
-#: ../../include/identity.php:1216 ../../mod/directory.php:315
+#: ../../include/identity.php:1239 ../../mod/directory.php:315
msgid "About:"
-msgstr "Sobre usted:"
+msgstr "Sobre mí:"
-#: ../../include/identity.php:1218
+#: ../../include/identity.php:1241
msgid "Hobbies/Interests:"
msgstr "Aficciones/Intereses:"
-#: ../../include/identity.php:1220 ../../mod/profiles.php:697
+#: ../../include/identity.php:1243 ../../mod/profiles.php:697
msgid "Likes:"
msgstr "Me gusta:"
-#: ../../include/identity.php:1222 ../../mod/profiles.php:698
+#: ../../include/identity.php:1245 ../../mod/profiles.php:698
msgid "Dislikes:"
msgstr "No me gusta:"
-#: ../../include/identity.php:1224
+#: ../../include/identity.php:1247
msgid "Contact information and Social Networks:"
msgstr "Información de contacto y redes sociales:"
-#: ../../include/identity.php:1226
+#: ../../include/identity.php:1249
msgid "My other channels:"
msgstr "Mis otros canales:"
-#: ../../include/identity.php:1228
+#: ../../include/identity.php:1251
msgid "Musical interests:"
msgstr "Intereses musicales:"
-#: ../../include/identity.php:1230
+#: ../../include/identity.php:1253
msgid "Books, literature:"
msgstr "Libros, literatura:"
-#: ../../include/identity.php:1232
+#: ../../include/identity.php:1255
msgid "Television:"
msgstr "Televisión:"
-#: ../../include/identity.php:1234
+#: ../../include/identity.php:1257
msgid "Film/dance/culture/entertainment:"
-msgstr "Cine/baile/cultura/entretenimiento:"
+msgstr "Cine/danza/cultura/entretenimiento:"
-#: ../../include/identity.php:1236
+#: ../../include/identity.php:1259
msgid "Love/Romance:"
-msgstr "Amor/romance:"
+msgstr "Vida sentimental/amorosa:"
-#: ../../include/identity.php:1238
+#: ../../include/identity.php:1261
msgid "Work/employment:"
-msgstr "Trabajo/empleo:"
+msgstr "Trabajo:"
-#: ../../include/identity.php:1240
+#: ../../include/identity.php:1263
msgid "School/education:"
-msgstr "Escuela/educación:"
+msgstr "Estudios:"
-#: ../../include/identity.php:1260
+#: ../../include/identity.php:1283
msgid "Like this thing"
msgstr "Me gusta esto"
@@ -3575,11 +3575,11 @@ msgstr "Neutral"
#: ../../include/profile_selectors.php:6
msgid "Non-specific"
-msgstr "No-especificada"
+msgstr "No especificado"
#: ../../include/profile_selectors.php:6
msgid "Undecided"
-msgstr "Indecidido"
+msgstr "Indeciso"
#: ../../include/profile_selectors.php:42
#: ../../include/profile_selectors.php:61
@@ -3613,7 +3613,7 @@ msgstr "Autosexual"
#: ../../include/profile_selectors.php:42
msgid "Abstinent"
-msgstr "Abstinente"
+msgstr "Casto"
#: ../../include/profile_selectors.php:42
msgid "Virgin"
@@ -3625,15 +3625,15 @@ msgstr "Fuera de lo común"
#: ../../include/profile_selectors.php:42
msgid "Fetish"
-msgstr "Fetiche"
+msgstr "Fetichista"
#: ../../include/profile_selectors.php:42
msgid "Oodles"
-msgstr "Montones"
+msgstr "Orgías"
#: ../../include/profile_selectors.php:42
msgid "Nonsexual"
-msgstr "No sexual"
+msgstr "Asexual"
#: ../../include/profile_selectors.php:80
#: ../../include/profile_selectors.php:97
@@ -3658,12 +3658,12 @@ msgstr "Enamorado/a"
#: ../../include/profile_selectors.php:80
msgid "Infatuated"
-msgstr "Infatuado"
+msgstr "Apasionado"
#: ../../include/profile_selectors.php:80
#: ../../include/profile_selectors.php:97
msgid "Dating"
-msgstr "Citando"
+msgstr "Saliendo con alguien"
#: ../../include/profile_selectors.php:80
msgid "Unfaithful"
@@ -3692,7 +3692,7 @@ msgstr "Casado/a"
#: ../../include/profile_selectors.php:80
msgid "Imaginarily married"
-msgstr "Casado/a imaginario/a"
+msgstr "Casado/a en sueños"
#: ../../include/profile_selectors.php:80
msgid "Partners"
@@ -3705,7 +3705,7 @@ msgstr "Cohabitando"
#: ../../include/profile_selectors.php:80
msgid "Common law"
-msgstr "Derecho común"
+msgstr "Matrimonio tradicional"
#: ../../include/profile_selectors.php:80
msgid "Happy"
@@ -3717,7 +3717,7 @@ msgstr "No estoy buscando"
#: ../../include/profile_selectors.php:80
msgid "Swinger"
-msgstr "Swinger"
+msgstr "Infiel"
#: ../../include/profile_selectors.php:80
msgid "Betrayed"
@@ -3739,7 +3739,7 @@ msgstr "Divorciado/a"
#: ../../include/profile_selectors.php:80
msgid "Imaginarily divorced"
-msgstr "Divorciado/a imaginario/a"
+msgstr "Divorciado/a en sueños"
#: ../../include/profile_selectors.php:80
#: ../../include/profile_selectors.php:97
@@ -3833,19 +3833,19 @@ msgstr "Imagen/foto"
#: ../../include/bbcode.php:161 ../../include/bbcode.php:818
msgid "Encrypted content"
-msgstr "Contenido encriptado"
+msgstr "Contenido cifrado"
#: ../../include/bbcode.php:178
#, php-format
msgid "Install %s element: "
-msgstr "Instalar %s elemento:"
+msgstr "Instalar el elemento %s:"
#: ../../include/bbcode.php:182
#, php-format
msgid ""
"This post contains an installable %s element, however you lack permissions "
"to install it on this site."
-msgstr "Esta entrada contiene un elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio."
+msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio."
#: ../../include/bbcode.php:192 ../../mod/impel.php:37
msgid "webpage"
@@ -3857,7 +3857,7 @@ msgstr "disposición"
#: ../../include/bbcode.php:198 ../../mod/impel.php:42
msgid "block"
-msgstr "bloquear"
+msgstr "bloque"
#: ../../include/bbcode.php:201 ../../mod/impel.php:54
msgid "menu"
@@ -3870,7 +3870,7 @@ msgstr "Código QR"
#: ../../include/bbcode.php:266
#, php-format
msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s escribió lo siguiente %2$s %3$s"
+msgstr "%1$s escribió la siguiente %2$s %3$s"
#: ../../include/bbcode.php:268 ../../mod/tagger.php:51
msgid "post"
@@ -3882,7 +3882,7 @@ msgstr "Visitantes diferentes verán este texto de forma diferente"
#: ../../include/bbcode.php:729
msgid "$1 spoiler"
-msgstr "alerón $1"
+msgstr "$1 spoiler"
#: ../../include/bbcode.php:756
msgid "$1 wrote:"
@@ -3898,7 +3898,7 @@ msgstr "Nombre de sala duplicado."
#: ../../include/chat.php:82 ../../include/chat.php:90
msgid "Invalid room specifier."
-msgstr "Especificador de sala inválido."
+msgstr "Especificador de sala no válido."
#: ../../include/chat.php:120
msgid "Room not found."
@@ -3915,11 +3915,11 @@ msgstr "La imagen es demasiado grande (%lu demás)"
#: ../../include/photos.php:101
msgid "Image file is empty."
-msgstr "El fichero de imagen ésta vacío. "
+msgstr "El fichero de imagen está vacío. "
#: ../../include/photos.php:128 ../../mod/profile_photo.php:217
msgid "Unable to process image"
-msgstr "No ha sido posible de procesar la imagen"
+msgstr "No ha sido posible procesar la imagen"
#: ../../include/photos.php:199
msgid "Photo storage failed."
@@ -3931,12 +3931,12 @@ msgstr "Subir nuevas fotos"
#: ../../mod/achievements.php:34
msgid "Some blurb about what to do when you're new here"
-msgstr "Algunas palabras sobre qué hacer cuando eres nuevo aquí"
+msgstr "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí"
#: ../../mod/manage.php:136
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Has creado %1$.0f de %2$.0f canales permitidos."
+msgstr "Ha creado %1$.0f de %2$.0f canales permitidos."
#: ../../mod/manage.php:144
msgid "Create a new channel"
@@ -3952,7 +3952,7 @@ msgstr "Cambiar a uno de sus canales seleccionándolo."
#: ../../mod/manage.php:170
msgid "Default Channel"
-msgstr "Canal predeterminado"
+msgstr "Canal principal"
#: ../../mod/manage.php:171
msgid "Make Default"
@@ -3961,12 +3961,12 @@ msgstr "Convertir en predeterminado"
#: ../../mod/manage.php:174
#, php-format
msgid "%d new messages"
-msgstr "%d nuevos mensajes"
+msgstr "%d mensajes nuevos"
#: ../../mod/manage.php:175
#, php-format
msgid "%d new introductions"
-msgstr "%d nuevas introducciones"
+msgstr "%d nuevas isolicitudes de conexión"
#: ../../mod/manage.php:177
msgid "Delegated Channels"
@@ -3995,7 +3995,7 @@ msgstr "Estado:"
#: ../../mod/directory.php:249
msgid "Homepage: "
-msgstr "Página de inicio:"
+msgstr "Página personal:"
#: ../../mod/directory.php:308 ../../mod/events.php:659
msgid "Description:"
@@ -4051,11 +4051,11 @@ msgstr "Alfabético inverso"
#: ../../mod/directory.php:389
msgid "Newest to Oldest"
-msgstr "Más nuevo a más antiguo"
+msgstr "De más nuevo a más antiguo"
#: ../../mod/directory.php:390
msgid "Oldest to Newest"
-msgstr "Más antiguo a más nuevo"
+msgstr "De más antiguo a más nuevo"
#: ../../mod/directory.php:407
msgid "No entries (some entries may be hidden)."
@@ -4063,11 +4063,11 @@ msgstr "Sin entradas (algunas entradas pueden estar ocultas)."
#: ../../mod/xchan.php:6
msgid "Xchan Lookup"
-msgstr "Búsqueda Xchan"
+msgstr "Búsqueda de canales"
#: ../../mod/xchan.php:9
msgid "Lookup xchan beginning with (or webbie): "
-msgstr "Buscar xchan que comience por (o webbie):"
+msgstr "Buscar un canal (o un \"webbie\") que comience por:"
#: ../../mod/xchan.php:37 ../../mod/mitem.php:114 ../../mod/menu.php:156
msgid "Not found."
@@ -4075,11 +4075,11 @@ msgstr "No encontrado."
#: ../../mod/api.php:76 ../../mod/api.php:102
msgid "Authorize application connection"
-msgstr "Autorizar conexión de aplicación"
+msgstr "Autorizar una conexión de aplicación"
#: ../../mod/api.php:77
msgid "Return to your app and insert this Securty Code:"
-msgstr "Volver a su \"app\" e introducir este código de seguridad:"
+msgstr "Volver a su aplicación e introducir este código de seguridad:"
#: ../../mod/api.php:89
msgid "Please login to continue."
@@ -4105,11 +4105,11 @@ msgstr "Etiqueta eliminada."
#: ../../mod/tagrm.php:119
msgid "Remove Item Tag"
-msgstr "Eliminar etiqueta de elemento."
+msgstr "Eliminar etiqueta del elemento."
#: ../../mod/tagrm.php:121
msgid "Select a tag to remove: "
-msgstr "Selecciona una etiqueta a eliminar:"
+msgstr "Seleccionar una etiqueta para eliminar:"
#: ../../mod/tagrm.php:133 ../../mod/photos.php:887
msgid "Remove"
@@ -4121,11 +4121,11 @@ msgstr "Continuar"
#: ../../mod/connect.php:85
msgid "Premium Channel Setup"
-msgstr "Configuración de canal premium"
+msgstr "Configuración del canal premium"
#: ../../mod/connect.php:87
msgid "Enable premium channel connection restrictions"
-msgstr "Habilitar restricciones de conexión de canal premium"
+msgstr "Habilitar restricciones de conexión del canal premium"
#: ../../mod/connect.php:88
msgid ""
@@ -4137,7 +4137,7 @@ msgstr "Por favor introduzca sus restricciones o condiciones, como recibo paypal
msgid ""
"This channel may require additional steps or acknowledgement of the "
"following conditions prior to connecting:"
-msgstr "Este canal puede requerir antes de conectar pasos adicionales o conocimiento de las siguientes condiciones:"
+msgstr "Este canal puede requerir antes de conectar unos pasos adicionales o el conocimiento de las siguientes condiciones:"
#: ../../mod/connect.php:91
msgid ""
@@ -4201,15 +4201,15 @@ msgstr "Sólo envíos a espectadores del perfil pertinente."
#: ../../mod/thing.php:269 ../../mod/thing.php:315
msgid "Name of thing e.g. something"
-msgstr "Nombre del elemento e.g. algo"
+msgstr "Nombre del elemento p. ej.:. \"algo\""
#: ../../mod/thing.php:271 ../../mod/thing.php:316
msgid "URL of thing (optional)"
-msgstr "URL del elemento (opcional)"
+msgstr "Dirección del elemento (opcional)"
#: ../../mod/thing.php:273 ../../mod/thing.php:317
msgid "URL for photo of thing (optional)"
-msgstr "URL para foto o elemento (opcional)"
+msgstr "Dirección para la foto o elemento (opcional)"
#: ../../mod/thing.php:308
msgid "Add Thing to your Profile"
@@ -4222,26 +4222,26 @@ msgstr "Elemento no disponible"
#: ../../mod/probe.php:24 ../../mod/probe.php:30
#, php-format
msgid "Fetching URL returns error: %1$s"
-msgstr "Obtener URL retorna error: %1$s"
+msgstr "Al intentar obtener la dirección, retorna el error: %1$s"
#: ../../mod/profile_photo.php:108
msgid "Image uploaded but image cropping failed."
-msgstr "Imagen actualizada pero recorte de imagen ha fallado. "
+msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. "
#: ../../mod/profile_photo.php:162
msgid "Image resize failed."
-msgstr "Ajustar tamaño de imagen ha fallado."
+msgstr "El ajuste del tamaño de la imagen ha fallado."
#: ../../mod/profile_photo.php:206
msgid ""
"Shift-reload the page or clear browser cache if the new photo does not "
"display immediately."
-msgstr "Recargue la página o limpie caché del navegador si la nueva foto no se muestra inmediatamente."
+msgstr "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente."
#: ../../mod/profile_photo.php:233
#, php-format
msgid "Image exceeds size limit of %d"
-msgstr "La imagen supera el límite de %d"
+msgstr "La imagen supera el tamaño límite de %d"
#: ../../mod/profile_photo.php:242
msgid "Unable to process image."
@@ -4253,7 +4253,7 @@ msgstr "Foto no disponible."
#: ../../mod/profile_photo.php:359
msgid "Upload File:"
-msgstr "Subir archivo:"
+msgstr "Subir fichero:"
#: ../../mod/profile_photo.php:360
msgid "Select a profile:"
@@ -4273,7 +4273,7 @@ msgstr "Omitir este paso"
#: ../../mod/profile_photo.php:366
msgid "select a photo from your photo albums"
-msgstr "Seleccione una foto de sus álbums de fotos"
+msgstr "Seleccione una foto de sus álbumes de fotos"
#: ../../mod/profile_photo.php:382
msgid "Crop Image"
@@ -4281,7 +4281,7 @@ msgstr "Recortar imagen"
#: ../../mod/profile_photo.php:383
msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Por favor ajuta el recorte de la imagen para una visión óptima."
+msgstr "Por favor ajuste el recorte de la imagen para una visión óptima."
#: ../../mod/profile_photo.php:385
msgid "Done Editing"
@@ -4298,7 +4298,7 @@ msgstr "Subida de imagen fallida."
#: ../../mod/profile_photo.php:439
#, php-format
msgid "Image size reduction [%s] failed."
-msgstr "Reducción de la imagen [%s] fallida."
+msgstr "La reducción de la imagen [%s] ha fallado."
#: ../../mod/block.php:27 ../../mod/page.php:36
msgid "Invalid item."
@@ -4346,32 +4346,32 @@ msgstr "Acción anterior revocada."
#: ../../mod/like.php:398
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
-msgstr "%1$s está de acuerdo con %2$s de %3$s"
+msgstr "%1$s está de acuerdo con %3$s de %2$s"
#: ../../mod/like.php:400
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
-msgstr "%1$s no están de acuerdo con %2$s de %3$s"
+msgstr "%1$s no está de acuerdo con %3$s de %2$s"
#: ../../mod/like.php:402
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
-msgstr "%1$s se abstiene de pronunciarse sobre %2$s de %3$s"
+msgstr "%1$s se abstiene en %3$s de %2$s"
#: ../../mod/like.php:404
#, php-format
msgid "%1$s is attending %2$s's %3$s"
-msgstr "%1$s asistirá a %2$s de %3$s"
+msgstr "%1$s participará en el %3$s de %2$s"
#: ../../mod/like.php:406
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
-msgstr "%1$s no asistirá a %2$s de %3$s"
+msgstr "%1$s no participará en el %3$s de %2$s"
#: ../../mod/like.php:408
#, php-format
msgid "%1$s may attend %2$s's %3$s"
-msgstr "%1$s podrá asistir a %2$s de %3$s"
+msgstr "%1$s tal vez participe en el %3$s de %2$s"
#: ../../mod/like.php:492
msgid "Action completed."
@@ -4447,7 +4447,7 @@ msgstr "Evento borrado"
#: ../../mod/events.php:521
msgid "Failed to remove event"
-msgstr "Error al borrar evento"
+msgstr "Error al borrar el evento"
#: ../../mod/events.php:641
msgid "Event details"
@@ -4455,7 +4455,7 @@ msgstr "Detalles del evento"
#: ../../mod/events.php:642
msgid "Starting date and Title are required."
-msgstr "Se requieren fecha y Título."
+msgstr "Se requieren fecha y título."
#: ../../mod/events.php:644
msgid "Categories (comma-separated list)"
@@ -4463,7 +4463,7 @@ msgstr "Categorías (lista separada por comas)"
#: ../../mod/events.php:646
msgid "Event Starts:"
-msgstr "Inicios de acontecimientos:"
+msgstr "Inicios de eventos:"
#: ../../mod/events.php:653
msgid "Finish date/time is not known or not relevant"
@@ -4481,7 +4481,7 @@ msgstr "Ajustar para obtener el visor de zona horaria"
msgid ""
"Important for events that happen in a particular place. Not practical for "
"global holidays."
-msgstr "Importante para los eventos que suceden en un lugar determinado. No práctico para las vacaciones globales."
+msgstr "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales."
#: ../../mod/events.php:663
msgid "Title:"
@@ -4515,7 +4515,7 @@ msgstr "Valorar este sitio"
#: ../../mod/pubsites.php:26
msgid "Site URL"
-msgstr "URL del sitio"
+msgstr "Dirección del sitio"
#: ../../mod/pubsites.php:26
msgid "Access Type"
@@ -4535,7 +4535,7 @@ msgstr "Ver las valoraciones del sitio"
#: ../../mod/pubsites.php:30
msgid "Rate"
-msgstr "Valoración"
+msgstr "Valorar"
#: ../../mod/pubsites.php:31
msgid "View ratings"
@@ -4567,7 +4567,7 @@ msgstr "Crear una colección de canales."
#: ../../mod/group.php:87 ../../mod/group.php:183
msgid "Collection Name: "
-msgstr "Nombre de la Colección:"
+msgstr "Nombre de la colección:"
#: ../../mod/group.php:89 ../../mod/group.php:186
msgid "Members are visible to other channels"
@@ -4583,7 +4583,7 @@ msgstr "No ha sido posible de eliminar la colección."
#: ../../mod/group.php:182
msgid "Collection Editor"
-msgstr "Editor de Colecciones"
+msgstr "Editor de colecciones"
#: ../../mod/group.php:196 ../../mod/bulksetclose.php:89
msgid "Members"
@@ -4595,7 +4595,7 @@ msgstr "Todos los canales conectados"
#: ../../mod/group.php:233 ../../mod/bulksetclose.php:126
msgid "Click on a channel to add or remove."
-msgstr "Haga clic en un canal para agregar o quitar."
+msgstr "Haga clic en un canal para agregarlo o quitarlo."
#: ../../mod/siteinfo.php:112
#, php-format
@@ -4604,11 +4604,11 @@ msgstr "Versión %s"
#: ../../mod/siteinfo.php:133
msgid "Installed plugins/addons/apps:"
-msgstr "Plugins/addons/apps instalados:"
+msgstr "Extensiones/Aplicaciones instaladas:"
#: ../../mod/siteinfo.php:146
msgid "No installed plugins/addons/apps"
-msgstr "Plugins/addons/apps no instalados:"
+msgstr "Extensiones/Aplicaciones no instaladas:"
#: ../../mod/siteinfo.php:155 ../../mod/home.php:58 ../../mod/home.php:64
msgid "$Projectname"
@@ -4626,11 +4626,11 @@ msgstr "Etiqueta:"
#: ../../mod/siteinfo.php:160
msgid "Last background fetch: "
-msgstr "Último fondo elegido:"
+msgstr "Última actualización en segundo plano:"
#: ../../mod/siteinfo.php:163
msgid "Running at web location"
-msgstr "Corriendo en un sitio web"
+msgstr "Corriendo en el sitio web"
#: ../../mod/siteinfo.php:164
msgid ""
@@ -4748,19 +4748,19 @@ msgstr "Error al actualizar el registro de la conexión."
#: ../../mod/connections.php:192 ../../mod/connections.php:293
msgid "Blocked"
-msgstr "Bloqueados"
+msgstr "Bloqueadas"
#: ../../mod/connections.php:197 ../../mod/connections.php:300
msgid "Ignored"
-msgstr "Ignorados"
+msgstr "Ignoradas"
#: ../../mod/connections.php:202 ../../mod/connections.php:314
msgid "Hidden"
-msgstr "Ocultos"
+msgstr "Ocultas"
#: ../../mod/connections.php:207 ../../mod/connections.php:307
msgid "Archived"
-msgstr "Archivados"
+msgstr "Archivadas"
#: ../../mod/connections.php:271
msgid "Suggest new connections"
@@ -4784,7 +4784,7 @@ msgstr "Mostrar todas las conexiones"
#: ../../mod/connections.php:286
msgid "Unblocked"
-msgstr "Desbloqueados"
+msgstr "Desbloqueadas"
#: ../../mod/connections.php:289
msgid "Only show unblocked connections"
@@ -4821,7 +4821,7 @@ msgstr "Buscar sus conexiones"
#: ../../mod/connections.php:412
msgid "Finding: "
-msgstr "Encontrado:"
+msgstr "Búsqueda:"
#: ../../mod/blocks.php:95 ../../mod/blocks.php:148
msgid "Block Name"
@@ -4843,7 +4843,7 @@ msgstr "El elemento no es editable"
#: ../../mod/editpost.php:48
msgid "Delete item?"
-msgstr "¿Borrar este elemento?"
+msgstr "¿Borrar el elemento?"
#: ../../mod/editpost.php:115 ../../mod/editlayout.php:142
#: ../../mod/editwebpage.php:187 ../../mod/editblock.php:144
@@ -4908,7 +4908,7 @@ msgstr "Introducir un nuevo nombre de álbum"
#: ../../mod/photos.php:567 ../../mod/photos.php:649 ../../mod/photos.php:928
msgid "or select an existing one (doubleclick)"
-msgstr "o seleccionar uno (Double click) existente"
+msgstr "o seleccionar uno (doble click) existente"
#: ../../mod/photos.php:568
msgid "Create a status post for this upload"
@@ -4981,11 +4981,11 @@ msgstr "Añadir una etiqueta"
#: ../../mod/photos.php:937
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
-msgstr "Ejemplo: @bob, @Barbara_Jensen, @jim@example.com"
+msgstr "Ejemplo: @bob, @Barbara_Gómez, @juan@ejemplo.com"
#: ../../mod/photos.php:940
msgid "Flag as adult in album view"
-msgstr "Marcar como \"adultos\" en el álbum"
+msgstr "Marcar como \"solo para adultos\" en el álbum"
#: ../../mod/photos.php:1132
msgid "In This Photo:"
@@ -5047,7 +5047,7 @@ msgstr "Guardar marcador"
#: ../../mod/rbmark.php:94
msgid "URL of bookmark"
-msgstr "URL del marcador"
+msgstr "Dirección del marcador"
#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
msgid "Description"
@@ -5059,7 +5059,7 @@ msgstr "O introduzca un nuevo nombre para la carpeta de marcadores"
#: ../../mod/notify.php:53 ../../mod/notifications.php:94
msgid "No more system notifications."
-msgstr "No hay más notificaciones de sistema"
+msgstr "No hay más notificaciones del sistema"
#: ../../mod/notify.php:57 ../../mod/notifications.php:98
msgid "System Notifications"
@@ -5075,7 +5075,7 @@ msgstr "RSS"
#: ../../mod/pdledit.php:13
msgid "Layout updated."
-msgstr "Diseño actualizado"
+msgstr "Formato actualizado"
#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
msgid "Edit System Page Description"
@@ -5083,7 +5083,7 @@ msgstr "Editor del Sistema de Descripción de Páginas"
#: ../../mod/pdledit.php:48
msgid "Layout not found."
-msgstr "Diseño no encontrado"
+msgstr "Formato no encontrado"
#: ../../mod/pdledit.php:54
msgid "Module Name:"
@@ -5095,7 +5095,7 @@ msgstr "Ayuda para el diseño de la página"
#: ../../mod/filer.php:49
msgid "- select -"
-msgstr "-seleccionar-"
+msgstr "- seleccionar -"
#: ../../mod/import.php:25
#, php-format
@@ -5136,42 +5136,42 @@ msgstr "No se ha podido importar el canal porque el canal no se ha podido clonar
msgid "Cloned channel not found. Import failed."
msgstr "No se ha podido importar el canal porque el canal clonado no se ha encontrado."
-#: ../../mod/import.php:516
+#: ../../mod/import.php:542
msgid "You must be logged in to use this feature."
msgstr "Debe estar registrado para poder usar esta funcionalidad."
-#: ../../mod/import.php:521
+#: ../../mod/import.php:547
msgid "Import Channel"
msgstr "Importar canal"
-#: ../../mod/import.php:522
+#: ../../mod/import.php:548
msgid ""
"Use this form to import an existing channel from a different server/hub. You"
" may retrieve the channel identity from the old server/hub via the network "
"or provide an export file."
msgstr "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación."
-#: ../../mod/import.php:523
+#: ../../mod/import.php:549
msgid "File to Upload"
msgstr "Fichero para subir"
-#: ../../mod/import.php:524
+#: ../../mod/import.php:550
msgid "Or provide the old server/hub details"
-msgstr "O proporcionando los detalles de su antiguo servidor/hub"
+msgstr "O proporcione los detalles de su antiguo servidor/hub"
-#: ../../mod/import.php:525
+#: ../../mod/import.php:551
msgid "Your old identity address (xyz@example.com)"
msgstr "Su identidad en el antiguo servidor (canal@ejemplo.com)"
-#: ../../mod/import.php:526
+#: ../../mod/import.php:552
msgid "Your old login email address"
msgstr "Su antigua dirección de correo electrónico"
-#: ../../mod/import.php:527
+#: ../../mod/import.php:553
msgid "Your old login password"
msgstr "Su antigua contraseña"
-#: ../../mod/import.php:528
+#: ../../mod/import.php:554
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be"
@@ -5179,17 +5179,17 @@ msgid ""
"primary location for files, photos, and media."
msgstr "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua ubicación debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos."
-#: ../../mod/import.php:529
+#: ../../mod/import.php:555
msgid "Make this hub my primary location"
msgstr "Convertir este servidor en mi ubicación primaria"
-#: ../../mod/import.php:530
+#: ../../mod/import.php:556
msgid ""
"Import existing posts if possible (experimental - limited by available "
"memory"
-msgstr "Importa el contenido publicado si es posible (experimental - limitado por la memoria disponible"
+msgstr "Importar el contenido publicado si es posible (experimental - limitado por la memoria disponible"
-#: ../../mod/import.php:531
+#: ../../mod/import.php:557
msgid ""
"This process may take several minutes to complete. Please submit the form "
"only once and leave this page open until finished."
@@ -5201,20 +5201,20 @@ msgstr "¿Borrar formato?"
#: ../../mod/editlayout.php:158 ../../mod/layouts.php:124
msgid "Layout Description (Optional)"
-msgstr "Descripción del diseño (opcional)"
+msgstr "Descripción del formato gráfico (opcional)"
#: ../../mod/editlayout.php:160 ../../mod/layouts.php:121
#: ../../mod/layouts.php:179
msgid "Layout Name"
-msgstr "Nombre del diseño"
+msgstr "Nombre del formato"
#: ../../mod/editlayout.php:177
msgid "Edit Layout"
-msgstr "Editar diseño"
+msgstr "Modificar formato"
#: ../../mod/chat.php:19 ../../mod/channel.php:25
msgid "You must be logged in to see this page."
-msgstr "Debe estar registrado para poder ver esta página."
+msgstr "Debe haber iniciado sesión para poder ver esta página."
#: ../../mod/chat.php:167
msgid "Room not found"
@@ -5275,7 +5275,7 @@ msgstr "Permisos del elemento del menú"
#: ../../mod/mitem.php:153 ../../mod/mitem.php:224 ../../mod/settings.php:1083
msgid "(click to open/close)"
-msgstr "(pulsa para abrir/cerrar)"
+msgstr "(pulse para abrir/cerrar)"
#: ../../mod/mitem.php:155 ../../mod/mitem.php:171
msgid "Link Name"
@@ -5363,7 +5363,7 @@ msgstr "Este elemento del menú ha sido borrado"
#: ../../mod/mitem.php:214
msgid "Menu item could not be deleted."
-msgstr "Este elemento del menú no puede ser borrada."
+msgstr "Este elemento del menú no puede ser borrado."
#: ../../mod/mitem.php:221
msgid "Edit Menu Element"
@@ -5397,7 +5397,7 @@ msgstr "No se ha encontrado una cuenta válida."
msgid "Password reset request issued. Check your email."
msgstr "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico."
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
+#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:103
#, php-format
msgid "Site Member (%s)"
msgstr "Usuario del sitio (%s)"
@@ -5413,52 +5413,52 @@ msgid ""
"Password reset failed."
msgstr "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado."
-#: ../../mod/lostpass.php:85 ../../boot.php:1559
+#: ../../mod/lostpass.php:86 ../../boot.php:1559
msgid "Password Reset"
-msgstr "Contraseña restablecida"
+msgstr "Restablecer la contraseña"
-#: ../../mod/lostpass.php:86
+#: ../../mod/lostpass.php:87
msgid "Your password has been reset as requested."
msgstr "Su contraseña ha sido restablecida según lo solicitó."
-#: ../../mod/lostpass.php:87
+#: ../../mod/lostpass.php:88
msgid "Your new password is"
msgstr "Su nueva contraseña es"
-#: ../../mod/lostpass.php:88
+#: ../../mod/lostpass.php:89
msgid "Save or copy your new password - and then"
msgstr "Guarde o copie su nueva contraseña - y después"
-#: ../../mod/lostpass.php:89
+#: ../../mod/lostpass.php:90
msgid "click here to login"
msgstr "Pulse aquí para conectarse"
-#: ../../mod/lostpass.php:90
+#: ../../mod/lostpass.php:91
msgid ""
"Your password may be changed from the <em>Settings</em> page after "
"successful login."
-msgstr "Puede cambiar la contraseña en la página <em>Configuraciones</em> una vez iniciada la sesión."
+msgstr "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión."
-#: ../../mod/lostpass.php:107
+#: ../../mod/lostpass.php:108
#, php-format
msgid "Your password has changed at %s"
msgstr "Su contraseña en %s ha sido cambiada"
-#: ../../mod/lostpass.php:122
+#: ../../mod/lostpass.php:123
msgid "Forgot your Password?"
msgstr "¿Ha olvidado su contraseña?"
-#: ../../mod/lostpass.php:123
+#: ../../mod/lostpass.php:124
msgid ""
"Enter your email address and submit to have your password reset. Then check "
"your email for further instructions."
-msgstr "Introduzca y envíe su dirección de correo electrónico para que el restablecimiento de csu ontraseña. Luego revise su correo para obtener más instrucciones."
+msgstr "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones."
-#: ../../mod/lostpass.php:124
+#: ../../mod/lostpass.php:125
msgid "Email Address"
msgstr "Dirección de correo electrónico"
-#: ../../mod/lostpass.php:125
+#: ../../mod/lostpass.php:126
msgid "Reset"
msgstr "Reiniciar"
@@ -5587,7 +5587,7 @@ msgstr "Eliminar localización"
#: ../../mod/sources.php:32
msgid "Failed to create source. No channel selected."
-msgstr "Imposible crear la fuente. Ningún canal ha sido seleccionado."
+msgstr "Imposible crear el origen de los clontenidos. Ningún canal ha sido seleccionado."
#: ../../mod/sources.php:45
msgid "Source created."
@@ -5613,7 +5613,7 @@ msgstr "Nueva fuente"
msgid ""
"Import all or selected content from the following channel into this channel "
"and distribute it according to your channel settings."
-msgstr "Importar todo el contenido o una selección de los siguientes canales en este canal, y distribuirlo de acuerdo con los ajustes de su canal."
+msgstr "Importar todo el contenido o una selección de los siguientes canales en este canal, y distribuirlo de acuerdo con sus ajustes."
#: ../../mod/sources.php:102 ../../mod/sources.php:134
msgid "Only import content with these words (one per line)"
@@ -5778,7 +5778,7 @@ msgstr "Mostrar la dirección de este fichero"
#: ../../mod/filestorage.php:159
msgid "Notify your contacts about this file"
-msgstr "Avisar a sus contactos de este fichero"
+msgstr "Avisar a sus contactos sobre este fichero"
#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
msgid "Contact not found."
@@ -5827,7 +5827,7 @@ msgstr "Identificador de perfil no válido"
#: ../../mod/profperm.php:110
msgid "Profile Visibility Editor"
-msgstr "Editor de visibilidad el perfil"
+msgstr "Editor de visibilidad del perfil"
#: ../../mod/profperm.php:114
msgid "Click on a contact to add or remove."
@@ -5878,7 +5878,7 @@ msgstr "Se necesita el nombre del perfil."
#: ../../mod/profiles.php:404
msgid "Marital Status"
-msgstr "Estado sentimental"
+msgstr "Estado civil"
#: ../../mod/profiles.php:408
msgid "Romantic Partner"
@@ -6014,7 +6014,7 @@ msgstr "Quién: (si es aplicable)"
#: ../../mod/profiles.php:689
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Por ejemplo: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Por ejemplo: ana123, María González, sara@ejemplo.com"
#: ../../mod/profiles.php:690
msgid "Since [date]:"
@@ -6082,7 +6082,7 @@ msgstr "Trabajo"
#: ../../mod/profiles.php:711
msgid "School/education"
-msgstr "Educación"
+msgstr "Estudios"
#: ../../mod/profiles.php:717
msgid "This is your default profile."
@@ -6291,7 +6291,7 @@ msgstr "PHP register_argc_argv"
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to"
" upload is set to %s. You are allowed to upload up to %d files at once."
-msgstr "La carga máxima que se le permite subir está establecida en %s. El tamaño máxima de un archivo está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez."
+msgstr "La carga máxima que se le permite subir está establecida en %s. El tamaño máximo de un fichero está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez."
#: ../../mod/setup.php:459
msgid "You can adjust these settings in the servers php.ini."
@@ -6398,7 +6398,7 @@ msgstr "Error: el módulo PHP xml es necesario para DAV, pero no está instalado
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 "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de tu servidor."
+msgstr "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor."
#: ../../mod/setup.php:567
msgid ""
@@ -6457,7 +6457,7 @@ msgstr "%s tiene permisos de escritura"
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to"
" have write access to the store directory under the Red top level folder"
-msgstr "Red guarda los ficheros descargados en la carpeta \"store\". El servidor web necesita tener permisos de escritura sobre esa carpeta, en el directorio de instalación de Red."
+msgstr "Red guarda los ficheros descargados en la carpeta \"store\". El servidor web necesita tener permisos de escritura sobre esa carpeta, en el directorio de instalación."
#: ../../mod/setup.php:612
msgid "store is writable"
@@ -6513,7 +6513,7 @@ msgstr "No se pueden reescribir las direcciones web en .htaccess. Compruebe la c
#: ../../mod/setup.php:661
msgid "Url rewrite is working"
-msgstr "Se puede reescribir la dirección en .htaccess"
+msgstr "La reescritura de la direcciones funciona correctamente"
#: ../../mod/setup.php:670
msgid ""
@@ -6543,18 +6543,18 @@ msgstr "Error del protocolo OpenID. Ningún ID recibido como respuesta."
#: ../../mod/openid.php:72 ../../mod/openid.php:180 ../../mod/post.php:286
#, php-format
msgid "Welcome %s. Remote authentication successful."
-msgstr "Bienvenido %s. La identificación remota se ha llevado a cabo correctamente."
+msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente."
#: ../../mod/tagger.php:96
#, php-format
msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr "%1$s ha etiquetado el %3$s de %2$s con %4$s"
-#: ../../mod/uexport.php:41 ../../mod/uexport.php:42
+#: ../../mod/uexport.php:45 ../../mod/uexport.php:46
msgid "Export Channel"
msgstr "Exportar el canal"
-#: ../../mod/uexport.php:43
+#: ../../mod/uexport.php:47
msgid ""
"Export your basic channel information to a small file. This acts as a "
"backup of your connections, permissions, profile and basic data, which can "
@@ -6562,22 +6562,22 @@ msgid ""
"content."
msgstr "Exportar la base de datos de su canal a un pequeño fichero. Este podrá servir como una copia de seguridad de sus conexiones, permisos, perfil y datos básicos, que podrá importar a un nuevo canal, pero sin sus contenidos."
-#: ../../mod/uexport.php:44
+#: ../../mod/uexport.php:48
msgid "Export Content"
msgstr "Exportar contenidos"
-#: ../../mod/uexport.php:45
+#: ../../mod/uexport.php:49
msgid ""
"Export your channel information and all the content to a JSON backup. This "
"backs up all of your connections, permissions, profile data and all of your "
"content, but is generally not suitable for importing a channel to a new hub "
"as this file may be VERY large. Please be patient - it may take several "
"minutes for this download to begin."
-msgstr "Exportar toda la información del canal y todo su contenido a un fichero JSON. Este contendrá todas sus conexiones, permisos, información del perfil y todo su contenido, Sin embargo, a menudo, no será una buena solución para importarlo en una nueva instancia, pues el fichero será MUY voluminoso. Por favor, tenga paciencia - pueden pasar muchos minutos antes de comience la carga."
+msgstr "Exportar toda la información del canal y todo su contenido a un fichero JSON. Este contendrá todas sus conexiones, permisos, información del perfil y todo su contenido, Sin embargo, a menudo, no será una buena solución para importarlo en una nueva instancia, pues el fichero será MUY voluminoso. Por favor, tenga paciencia - pueden pasar muchos minutos antes de que comience la carga."
#: ../../mod/viewconnections.php:62
msgid "No connections."
-msgstr "No hay conexiones."
+msgstr "Sin conexiones."
#: ../../mod/viewconnections.php:75
#, php-format
@@ -6606,7 +6606,7 @@ msgstr "Canales"
#: ../../mod/admin.php:96 ../../mod/admin.php:1077 ../../mod/admin.php:1117
msgid "Plugins"
-msgstr "Plugins"
+msgstr "Extensiones"
#: ../../mod/admin.php:97 ../../mod/admin.php:1277 ../../mod/admin.php:1311
msgid "Themes"
@@ -6630,11 +6630,11 @@ msgstr "Informes"
#: ../../mod/admin.php:121
msgid "Plugin Features"
-msgstr "Ajustes del plugin"
+msgstr "Ajustes de la extensión"
#: ../../mod/admin.php:123
msgid "User registrations waiting for confirmation"
-msgstr "Registro de usuarios pendientes de confirmación"
+msgstr "Registros de usuarios pendientes de confirmación"
#: ../../mod/admin.php:200
msgid "# Accounts"
@@ -6646,11 +6646,11 @@ msgstr "# cuentas bloqueadas"
#: ../../mod/admin.php:202
msgid "# expired accounts"
-msgstr "# cuentas expiradas"
+msgstr "# cuentas caducadas"
#: ../../mod/admin.php:203
msgid "# expiring accounts"
-msgstr "# cuentas expiradas"
+msgstr "# cuentas que caducan"
#: ../../mod/admin.php:216
msgid "# Channels"
@@ -6693,7 +6693,7 @@ msgstr "Canales registrados"
#: ../../mod/admin.php:247 ../../mod/admin.php:553
msgid "Active plugins"
-msgstr "Plugins activos"
+msgstr "Extensiones activas"
#: ../../mod/admin.php:248
msgid "Version"
@@ -6767,11 +6767,11 @@ msgstr "Información de contacto de los administradores del sitio. Visible en la
#: ../../mod/admin.php:464
msgid "System language"
-msgstr "Lengua del sistema"
+msgstr "Idioma del sistema"
#: ../../mod/admin.php:465
msgid "System theme"
-msgstr "Tema del sistema"
+msgstr "Tema gráfico del sistema"
#: ../../mod/admin.php:465
msgid ""
@@ -6789,7 +6789,7 @@ msgstr "Tema para aparatos móviles"
#: ../../mod/admin.php:468
msgid "Enable Diaspora Protocol"
-msgstr "Activar protocolo de la red social Diaspora"
+msgstr "Activar el protocolo de la red social Diaspora"
#: ../../mod/admin.php:468
msgid "Communicate with Diaspora and Friendica - experimental"
@@ -6831,7 +6831,7 @@ msgstr "Se mostrará de forma destacada en la página de registro."
#: ../../mod/admin.php:474
msgid "Site homepage to show visitors (default: login box)"
-msgstr "Página de inicio que se mostrará a los visitantes (por defecto: la página de identificación)"
+msgstr "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)"
#: ../../mod/admin.php:474
msgid ""
@@ -6841,13 +6841,13 @@ msgstr "ejemplo: 'public' para mostrar contenido público de los usuarios, 'page
#: ../../mod/admin.php:475
msgid "Preserve site homepage URL"
-msgstr "Preservar la dirección de la página web"
+msgstr "Preservar la dirección de la página personal"
#: ../../mod/admin.php:475
msgid ""
"Present the site homepage in a frame at the original location instead of "
"redirecting"
-msgstr "Presenta la página web del sitio en un marco en la ubicación original, en vez de redirigirla."
+msgstr "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla."
#: ../../mod/admin.php:476
msgid "Accounts abandoned after x days"
@@ -6893,7 +6893,7 @@ msgstr "Lista separada por comas de los dominios de los que no se acepta una dir
#: ../../mod/admin.php:480
msgid "Block public"
-msgstr "Bloque público"
+msgstr "Bloquear página pública"
#: ../../mod/admin.php:480
msgid ""
@@ -6931,7 +6931,7 @@ msgstr "Quitar la pestaña para ver contenido público extraído de las fuentes
#: ../../mod/admin.php:484
msgid "login on Homepage"
-msgstr "Acceso a la página de inicio"
+msgstr "acceso a la página personal"
#: ../../mod/admin.php:484
msgid ""
@@ -6988,7 +6988,7 @@ msgstr "Carga máxima del sistema antes de que los procesos de entrega y sondeo
#: ../../mod/admin.php:492
msgid "Expiration period in days for imported (matrix/network) content"
-msgstr "Periodo de caducidad en días para el contenido importado (matrix/red)"
+msgstr "Periodo de caducidad en días para el contenido importado (red)"
#: ../../mod/admin.php:492
msgid "0 for no expiration of imported content"
@@ -7008,7 +7008,7 @@ msgstr "por canal"
#: ../../mod/admin.php:547
msgid "on server"
-msgstr "sobre el servidor"
+msgstr "en el servidor"
#: ../../mod/admin.php:547
msgid "Status"
@@ -7025,7 +7025,7 @@ msgstr "La actualización ha sido marcada como exitosa"
#: ../../mod/admin.php:576
#, php-format
msgid "Executing %s failed. Check system logs."
-msgstr "La ejecución de %s ha fallado. Mire en los registros del sistema."
+msgstr "La ejecución de %s ha fallado. Mirar en los informes del sistema."
#: ../../mod/admin.php:579
#, php-format
@@ -7088,31 +7088,36 @@ msgstr "Último contacto conocido"
#: ../../mod/admin.php:683
#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "%s usuarios bloqueados/desbloqueados"
-msgstr[1] "%s de usuarios bloqueados/desbloqueados"
+msgid "%s account blocked/unblocked"
+msgid_plural "%s account blocked/unblocked"
+msgstr[0] "%s cuenta bloqueada/desbloqueada"
+msgstr[1] "%s cuenta bloqueada/desbloqueada"
#: ../../mod/admin.php:691
#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s usuarios eliminados"
-msgstr[1] "%s usuarios eliminados"
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] "%s cuentas eliminadas"
+msgstr[1] "%s cuentas eliminadas"
#: ../../mod/admin.php:727
msgid "Account not found"
msgstr "Cuenta no encontrada"
+#: ../../mod/admin.php:739
+#, php-format
+msgid "Account '%s' deleted"
+msgstr "La cuenta '%s' ha sido eliminada"
+
#: ../../mod/admin.php:747
#, php-format
-msgid "User '%s' blocked"
-msgstr "Usuario %s bloqueado"
+msgid "Account '%s' blocked"
+msgstr "La cuenta '%s' ha sido bloqueada"
#: ../../mod/admin.php:755
#, php-format
-msgid "User '%s' unblocked"
-msgstr "Usuario %s desbloqueado"
+msgid "Account '%s' unblocked"
+msgstr "La cuenta '%s' ha sido desbloqueada"
#: ../../mod/admin.php:818 ../../mod/admin.php:830
msgid "Users"
@@ -7160,7 +7165,7 @@ msgstr "Último acceso"
#: ../../mod/admin.php:831
msgid "Expires"
-msgstr "Expira"
+msgstr "Caduca"
#: ../../mod/admin.php:831
msgid "Service Class"
@@ -7168,15 +7173,15 @@ msgstr "Clase de servicio"
#: ../../mod/admin.php:833
msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Los usuarios seleccionados serám eliminados!\\n\\nTodo lo que estos usuarios han publicado en este sitio se borrará de manera definitiva!\\n\\n¿Está seguro de querer hacerlo?"
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
+" on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"
#: ../../mod/admin.php:834
msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "El usuario {0} va a ser eliminado!\\n\\nTodo lo que este usuario ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"
#: ../../mod/admin.php:870
#, php-format
@@ -7263,12 +7268,12 @@ msgstr "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en
#: ../../mod/admin.php:1037
#, php-format
msgid "Plugin %s disabled."
-msgstr "Plugin %s desactivado."
+msgstr "Extensión %s desactivada."
#: ../../mod/admin.php:1041
#, php-format
msgid "Plugin %s enabled."
-msgstr "Plugin %s activado."
+msgstr "Extensión %s activada."
#: ../../mod/admin.php:1051 ../../mod/admin.php:1249
msgid "Disable"
@@ -7316,7 +7321,7 @@ msgstr "Vaciar"
#: ../../mod/admin.php:1404
msgid "Debugging"
-msgstr "Depurando"
+msgstr "Depuración"
#: ../../mod/admin.php:1405
msgid "Log file"
@@ -7427,12 +7432,12 @@ msgstr "Términos del servicio"
#: ../../mod/register.php:191
#, php-format
msgid "I accept the %s for this website"
-msgstr "Acepto el %s de este sitio"
+msgstr "Acepto los %s de este sitio"
#: ../../mod/register.php:193
#, php-format
msgid "I am over 13 years of age and accept the %s for this website"
-msgstr "Tengo más de 13 años de edad y acepto el %s de este sitio"
+msgstr "Tengo más de 13 años de edad y acepto los %s de este sitio"
#: ../../mod/register.php:212
msgid "Membership on this site is by invitation only."
@@ -7554,19 +7559,19 @@ msgstr "La actualización de la contraseña ha fallado. Por favor, inténtalo de
#: ../../mod/settings.php:272
msgid "Not valid email."
-msgstr "Email no válido."
+msgstr "Correo electrónico no válido."
#: ../../mod/settings.php:275
msgid "Protected email address. Cannot change to that email."
-msgstr "Dirección de email protegida. No se peude cambiar a ese email."
+msgstr "Dirección de correo electrónico protegida. No se puede cambiar a ella."
#: ../../mod/settings.php:284
msgid "System failure storing new email. Please try again."
-msgstr "Fallo de sistema al guardar el nuevo email. Por favor, inténtalo de nuevo."
+msgstr "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo."
#: ../../mod/settings.php:523
msgid "Settings updated."
-msgstr "Configuración actualizada."
+msgstr "Ajustes actualizados."
#: ../../mod/settings.php:587 ../../mod/settings.php:613
#: ../../mod/settings.php:649
@@ -7583,11 +7588,11 @@ msgstr "Clave de consumidor"
#: ../../mod/settings.php:591 ../../mod/settings.php:592
msgid "Automatically generated - change if desired. Max length 20"
-msgstr "Generado automáticamente - si lo deseas, cámbialo. Longitud máxima: 20"
+msgstr "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 20"
#: ../../mod/settings.php:592 ../../mod/settings.php:618
msgid "Consumer Secret"
-msgstr "Secreto de consumidor"
+msgstr "Clave secreta de consumidor"
#: ../../mod/settings.php:593 ../../mod/settings.php:619
msgid "Redirect"
@@ -7597,11 +7602,11 @@ msgstr "Redirigir"
msgid ""
"Redirect URI - leave blank unless your application specifically requires "
"this"
-msgstr "URI de redirección - dejar en blanco a menos que tu aplicación específicamente lo requiera"
+msgstr "URI de redirección - dejar en blanco a menos que su aplicación específicamente lo requiera"
#: ../../mod/settings.php:594 ../../mod/settings.php:620
msgid "Icon url"
-msgstr "url de icono"
+msgstr "dirección del icono"
#: ../../mod/settings.php:594
msgid "Optional"
@@ -7609,11 +7614,11 @@ msgstr "Opcional"
#: ../../mod/settings.php:605
msgid "You can't edit this application."
-msgstr "No puedes editar esta aplicación."
+msgstr "No puede modificar esta aplicación."
#: ../../mod/settings.php:648
msgid "Connected Apps"
-msgstr "Apps conectadas"
+msgstr "Aplicaciones conectadas"
#: ../../mod/settings.php:652
msgid "Client key starts with"
@@ -7633,7 +7638,7 @@ msgstr "No se ha establecido la configuración de características"
#: ../../mod/settings.php:685
msgid "Feature/Addon Settings"
-msgstr "Configuración de característica/complemento"
+msgstr "Ajustes de la característica o el complemento"
#: ../../mod/settings.php:687
msgid "Settings for the built-in Diaspora emulator"
@@ -7665,19 +7670,19 @@ msgstr "Introduzca la nueva contraseña:"
#: ../../mod/settings.php:717
msgid "Confirm New Password:"
-msgstr "Confirma la nueva contraseña:"
+msgstr "Confirme la nueva contraseña:"
#: ../../mod/settings.php:717
msgid "Leave password fields blank unless changing"
-msgstr "Deja en blanco los campos de contraseña a menos que cambie"
+msgstr "Dejar en blanco los campos de contraseña a menos que cambie"
#: ../../mod/settings.php:719 ../../mod/settings.php:1057
msgid "Email Address:"
-msgstr "Dirección de email:"
+msgstr "Dirección de correo electrónico:"
#: ../../mod/settings.php:721
msgid "Remove this account including all its channels"
-msgstr "Eliminar esta cuenta incuyendo todos sus canales"
+msgstr "Eliminar esta cuenta incluyendo todos sus canales"
#: ../../mod/settings.php:737
msgid "Off"
@@ -7693,7 +7698,7 @@ msgstr "Características adicionales"
#: ../../mod/settings.php:768
msgid "Connector Settings"
-msgstr "Configuración de conector"
+msgstr "Configuración del conector"
#: ../../mod/settings.php:807
msgid "No special theme for mobile devices"
@@ -7706,7 +7711,7 @@ msgstr "%s - (Experimental)"
#: ../../mod/settings.php:849
msgid "Display Settings"
-msgstr "Configuración de visualización"
+msgstr "Ajustes de visualización"
#: ../../mod/settings.php:850
msgid "Theme Settings"
@@ -7722,11 +7727,11 @@ msgstr "Ajustes del contenido"
#: ../../mod/settings.php:858
msgid "Display Theme:"
-msgstr "Tema de visualización:"
+msgstr "Tema gráfico del perfil:"
#: ../../mod/settings.php:859
msgid "Mobile Theme:"
-msgstr "Tema móvil:"
+msgstr "Tema para el móvil:"
#: ../../mod/settings.php:860
msgid "Enable user zoom on mobile devices"
@@ -7754,15 +7759,15 @@ msgstr "Mostrar emoticonos (smilies) como imágenes"
#: ../../mod/settings.php:864
msgid "Link post titles to source"
-msgstr "Enlazar título de la publicación a la fuente"
+msgstr "Enlazar título de la publicación a la fuente original"
#: ../../mod/settings.php:865
msgid "System Page Layout Editor - (advanced)"
-msgstr "Editor de sistema de distribución de página - (avanzado)"
+msgstr "Editor de diseño de página del sistema - (avanzado)"
#: ../../mod/settings.php:868
msgid "Use blog/list mode on channel page"
-msgstr "Usar modo blog/lista en página del canal"
+msgstr "Usar modo blog/lista en la página de inicio del canal"
#: ../../mod/settings.php:868 ../../mod/settings.php:869
msgid "(comments displayed separately)"
@@ -7770,7 +7775,7 @@ msgstr "(comentarios mostrados de forma separada)"
#: ../../mod/settings.php:869
msgid "Use blog/list mode on matrix page"
-msgstr "Usar modo blog/lista en página de matrix"
+msgstr "Mostrar la red en modo blog/lista"
#: ../../mod/settings.php:870
msgid "Channel page max height of content (in pixels)"
@@ -7782,7 +7787,7 @@ msgstr "Pulsa para expandir el contenido que excede esta altura"
#: ../../mod/settings.php:871
msgid "Matrix page max height of content (in pixels)"
-msgstr "Altura máxima del contenido de la página de matrix (en píxeles)"
+msgstr "Altura máxima del contenido de la página de la red (en píxeles)"
#: ../../mod/settings.php:905
msgid "Nobody except yourself"
@@ -7790,7 +7795,7 @@ msgstr "Nadie excepto tú"
#: ../../mod/settings.php:906
msgid "Only those you specifically allow"
-msgstr "Solamente aquellos a los que tú permitas específicamente"
+msgstr "Solo aquellos a los que usted permita explícitamente"
#: ../../mod/settings.php:907
msgid "Approved connections"
@@ -7802,7 +7807,7 @@ msgstr "Cualquier conexión"
#: ../../mod/settings.php:909
msgid "Anybody on this website"
-msgstr "Cualquiera en este website"
+msgstr "Cualquiera en este sitio web"
#: ../../mod/settings.php:910
msgid "Anybody in this network"
@@ -7810,7 +7815,7 @@ msgstr "Cualquiera en esta red"
#: ../../mod/settings.php:911
msgid "Anybody authenticated"
-msgstr "Cualquiera autenticado"
+msgstr "Cualquiera que esté autenticado"
#: ../../mod/settings.php:912
msgid "Anybody on the internet"
@@ -7818,7 +7823,7 @@ msgstr "Cualquiera en internet"
#: ../../mod/settings.php:986
msgid "Publish your default profile in the network directory"
-msgstr "Publicar tu perfil predeterminado en el directorio de la red"
+msgstr "Publicar su perfil principal en el directorio de la red"
#: ../../mod/settings.php:991
msgid "Allow us to suggest you as a potential friend to new members?"
@@ -7830,7 +7835,7 @@ msgstr "Su dirección de canal es"
#: ../../mod/settings.php:1048
msgid "Channel Settings"
-msgstr "Configuración de canal"
+msgstr "Ajustes del canal"
#: ../../mod/settings.php:1055
msgid "Basic Settings"
@@ -7846,21 +7851,21 @@ msgstr "Ubicación de publicación predeterminada:"
#: ../../mod/settings.php:1059
msgid "Geographical location to display on your posts"
-msgstr "Localización geográfica a mostrar en sus publicaciones"
+msgstr "Ubicación geográfica que debe mostrarse en sus publicaciones"
#: ../../mod/settings.php:1060
msgid "Use Browser Location:"
-msgstr "Usar localización de navegador:"
+msgstr "Usar la localización del navegador:"
#: ../../mod/settings.php:1062
msgid "Adult Content"
-msgstr "Contenido adulto"
+msgstr "Contenido solo para adultos"
#: ../../mod/settings.php:1062
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
-msgstr "Este canal frecuentemente o regularmente publica contenido adulto. (Por favor etiqueta cualquier material adulto y/o desnudez con #NSFW)"
+msgstr "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)"
#: ../../mod/settings.php:1064
msgid "Security and Privacy Settings"
@@ -7872,11 +7877,11 @@ msgstr "Sus permisos ya están configurados. Pulse para ver/ajustar"
#: ../../mod/settings.php:1068
msgid "Hide my online presence"
-msgstr "Oculta mi presencia online"
+msgstr "Ocultra mi presencia en línea"
#: ../../mod/settings.php:1068
msgid "Prevents displaying in your profile that you are online"
-msgstr "Evita mostrar en su perfil que está en línea"
+msgstr "Evitar mostrar en su perfil que está en línea"
#: ../../mod/settings.php:1070
msgid "Simple Privacy Settings:"
@@ -7891,15 +7896,15 @@ msgstr "Muy Público - <em>extremadamente permisivo (debería ser usado con prec
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
-msgstr "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de red social pero con privacidad mejorada)</em>"
+msgstr "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>"
#: ../../mod/settings.php:1073
msgid "Private - <em>default private, never open or public</em>"
-msgstr "Privado - <em>por defecto privado, nunca abierto o público</em>"
+msgstr "Privado - <em>por defecto, privado, nunca abierto o público</em>"
#: ../../mod/settings.php:1074
msgid "Blocked - <em>default blocked to/from everybody</em>"
-msgstr "Bloqueado - <em>por defecto bloqueado bloqueado a/para cualquiera</em>"
+msgstr "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>"
#: ../../mod/settings.php:1076
msgid "Allow others to tag your posts"
@@ -7920,7 +7925,7 @@ msgstr "Caducar contenido de otro canal después de este número de días"
#: ../../mod/settings.php:1080
msgid "0 or blank prevents expiration"
-msgstr "0 o vacío evita la expiración"
+msgstr "0 o en claro evitan la caducidad"
#: ../../mod/settings.php:1081
msgid "Maximum Friend Requests/Day:"
@@ -7960,7 +7965,7 @@ msgstr "acepte una solicitud de amistad"
#: ../../mod/settings.php:1099
msgid "joining a forum/community"
-msgstr "se una a un foro o comunidad"
+msgstr "al unirse a un foro o comunidad"
#: ../../mod/settings.php:1100
msgid "making an <em>interesting</em> profile change"
@@ -7976,11 +7981,11 @@ msgstr "Reciba una solicitud de conexión"
#: ../../mod/settings.php:1103
msgid "Your connections are confirmed"
-msgstr "Su conexión haya sido confirmada"
+msgstr "Sus conexiones hayan sido confirmadas"
#: ../../mod/settings.php:1104
msgid "Someone writes on your profile wall"
-msgstr "Alguien escriba en el muro de su perfil"
+msgstr "Alguien escriba en la página de su perfil (muro)"
#: ../../mod/settings.php:1105
msgid "Someone writes a followup comment"
@@ -7996,11 +8001,11 @@ msgstr "Reciba una sugerencia de amistad"
#: ../../mod/settings.php:1108
msgid "You are tagged in a post"
-msgstr "Sea etiquetado en una publicación"
+msgstr "Usted sea etiquetado en una publicación"
#: ../../mod/settings.php:1109
msgid "You are poked/prodded/etc. in a post"
-msgstr "Ha recibido un toque o ha sido incitado, etc. en una publicación"
+msgstr "Haya recibido un toque o haya sido incitado, etc. en una publicación"
#: ../../mod/settings.php:1112
msgid "Show visual notifications including:"
@@ -8084,7 +8089,7 @@ msgstr "Cambiar el comportamiento de esta cuenta en situaciones especiales"
msgid ""
"Please enable expert mode (in <a href=\"settings/features\">Settings > "
"Additional features</a>) to adjust!"
-msgstr "Activa modo experto (en <a href=\"settings/features\">Ajustes > Características Adicionales</a>) para ajustar!"
+msgstr "Activar modo experto (en <a href=\"settings/features\">Ajustes > Características Adicionales</a>) para ajustar."
#: ../../mod/settings.php:1134
msgid "Miscellaneous Settings"
@@ -8112,7 +8117,7 @@ msgstr "Apellido"
#: ../../mod/id.php:13
msgid "Nickname"
-msgstr "Alias"
+msgstr "Sobrenombre o Alias"
#: ../../mod/id.php:14
msgid "Full Name"
@@ -8348,7 +8353,7 @@ msgstr "Aplicar estos permisos automaticamente"
#: ../../mod/connedit.php:665
msgid "This connection's address is"
-msgstr "Esta dirección de conexión es"
+msgstr "La dirección de esta conexión es"
#: ../../mod/connedit.php:668
msgid ""
@@ -8379,34 +8384,34 @@ msgstr "Importar solo entradas que contengan este texto"
#: ../../mod/connedit.php:676 ../../mod/connedit.php:677
msgid ""
"words one per line or #tags or /patterns/, leave blank to import all posts"
-msgstr "Palabras, una por línea o #etiquetas o /patrones/, deja en blanco para importar todas las entradas"
+msgstr "Palabras, una por línea o #etiquetas o /patrones/, dejar en blanco para importar todas las entradas"
#: ../../mod/connedit.php:677
msgid "Do not import posts with this text"
-msgstr "No importes entradas conteniendo este texto"
+msgstr "No importar entradas que contienen este texto"
#: ../../mod/connedit.php:679
msgid "This information is public!"
-msgstr "Esta información es pública!"
+msgstr "¡Esta información es pública!"
#: ../../mod/connedit.php:684
msgid "Connection Pending Approval"
-msgstr "Conexión Pendiente de Aprobación"
+msgstr "Conexión pendiente de aprobación"
#: ../../mod/connedit.php:685
msgid "Connection Request"
-msgstr "Petición de Conexión"
+msgstr "Solicitud de conexión"
#: ../../mod/connedit.php:686
#, php-format
msgid ""
"(%s) would like to connect with you. Please approve this connection to allow"
" communication."
-msgstr "(%s) desearía conectar contigo. por favor, aprueba esta conexión para permitir la comunicación."
+msgstr "(%s) desearía conectar con usted. por favor, apruebe esta conexión para permitir la comunicación."
#: ../../mod/connedit.php:688
msgid "Approve Later"
-msgstr "Aprobar Más Tarde"
+msgstr "Aprobar más tarde"
#: ../../mod/connedit.php:691
msgid "inherited"
@@ -8417,19 +8422,19 @@ msgstr "heredado"
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
-msgstr "Por favor, escoge el perfil que quieres mostrar a %s cuando este viendo el perfil de seguridad."
+msgstr "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura."
#: ../../mod/connedit.php:695
msgid "Their Settings"
-msgstr "Sus Ajustes"
+msgstr "Sus ajustes"
#: ../../mod/connedit.php:696
msgid "My Settings"
-msgstr "Mis Ajustes"
+msgstr "Mis ajustes"
#: ../../mod/connedit.php:698
msgid "Individual Permissions"
-msgstr "Permisos Individuales"
+msgstr "Permisos individuales"
#: ../../mod/connedit.php:699
msgid ""
@@ -8445,7 +8450,7 @@ msgid ""
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
"priority than individual settings. You can change those settings here but "
"they wont have any impact unless the inherited setting changes."
-msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí pero no tendrán ningún impacto hasta que cambie los ajustes heredados."
+msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún impacto hasta que cambie los ajustes heredados."
#: ../../mod/connedit.php:701
msgid "Last update:"
@@ -8455,7 +8460,7 @@ msgstr "Última actualización:"
msgid ""
"We encountered a problem while logging in with the OpenID you provided. "
"Please check the correct spelling of the ID."
-msgstr "Encontramos un problema durante el inicio de sesión con la OpenID que proporcionaste. por favor, comprueba la escritura correcta de la ID."
+msgstr "Encontramos un problema durante el inicio de sesión con la OpenID que proporcionó. por favor, compruebe que la ID está correctamente escrita."
#: ../../mod/rmagic.php:40
msgid "The error message was:"
@@ -8467,31 +8472,31 @@ msgstr "Falló la autenticación."
#: ../../mod/rmagic.php:84
msgid "Remote Authentication"
-msgstr "Autenticación Remota"
+msgstr "Acceso desde su servidor"
#: ../../mod/rmagic.php:85
msgid "Enter your channel address (e.g. channel@example.com)"
-msgstr "Introduzca la dirección del canal (p.e. channel@example.com)"
+msgstr "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)"
#: ../../mod/rmagic.php:86
msgid "Authenticate"
-msgstr "Identifíquese"
+msgstr "Acceder"
#: ../../mod/mail.php:33
msgid "Unable to lookup recipient."
-msgstr "No ha sido posible de "
+msgstr "Imposible asociar a un destinatario."
#: ../../mod/mail.php:41
msgid "Unable to communicate with requested channel."
-msgstr "Incapaz de comunicar con el canal solicitado."
+msgstr "Imposible comunicar con el canal solicitado."
#: ../../mod/mail.php:48
msgid "Cannot verify requested channel."
-msgstr "No puedo verificar el canal solicitado."
+msgstr "No se puede verificar el canal solicitado."
#: ../../mod/mail.php:74
msgid "Selected channel has private message restrictions. Send failed."
-msgstr "El canal seleccionado tiene restricciones sobre los mensajes privados. El envió falló."
+msgstr "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló."
#: ../../mod/mail.php:139
msgid "Message deleted."
@@ -8503,7 +8508,7 @@ msgstr "Mensaje recuperado."
#: ../../mod/mail.php:225
msgid "Send Private Message"
-msgstr "Envía un Mensaje Privado"
+msgstr "Enviar un mensaje privado"
#: ../../mod/mail.php:226 ../../mod/mail.php:343
msgid "To:"
@@ -8515,7 +8520,7 @@ msgstr "Asunto:"
#: ../../mod/mail.php:242
msgid "Send"
-msgstr "Envia"
+msgstr "Enviar"
#: ../../mod/mail.php:269
msgid "Message not found."
@@ -8527,7 +8532,7 @@ msgstr "Mensaje eliminado"
#: ../../mod/mail.php:313
msgid "Recall message"
-msgstr "Mensaje recuperado"
+msgstr "Recuperar el mensaje"
#: ../../mod/mail.php:315
msgid "Message has been recalled."
@@ -8535,17 +8540,17 @@ msgstr "El mensaje ha sido recuperado."
#: ../../mod/mail.php:332
msgid "Private Conversation"
-msgstr "Conversación Privada"
+msgstr "Conversación privada"
#: ../../mod/mail.php:338
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
-msgstr "Comunicación segura no disponible. Pero <strong>puedes</strong> responder desde la página de perfil del remitente."
+msgstr "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página de perfil del remitente."
#: ../../mod/mail.php:342
msgid "Send Reply"
-msgstr "Envía Respuesta"
+msgstr "Envía respuesta"
#: ../../mod/notifications.php:26
msgid "Invalid request identifier."
@@ -8553,21 +8558,21 @@ msgstr "Petición inválida del identificador."
#: ../../mod/notifications.php:35
msgid "Discard"
-msgstr "Descarta"
+msgstr "Descartar"
#: ../../mod/regmod.php:11
msgid "Please login."
-msgstr "Por favor, inicia sesión."
+msgstr "Por favor, inicie sesión."
#: ../../mod/post.php:235
msgid ""
"Remote authentication blocked. You are logged into this site locally. Please"
" logout and retry."
-msgstr "La autenticación remota está bloqueada. Has iniciado sesión localmente. Por favor, sal de la sesión y vuelve a intentarlo."
+msgstr "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo."
#: ../../mod/new_channel.php:109
msgid "Add a Channel"
-msgstr "Añade un Canal"
+msgstr "Añadir un canal"
#: ../../mod/new_channel.php:110
msgid ""
@@ -8575,39 +8580,39 @@ msgid ""
" to hold social network profiles, blogs, conversation groups and forums, "
"celebrity pages, and much more. You may create as many channels as your "
"service provider allows."
-msgstr "Un canal es su propia colección de páginas web relacionadas. Un canal se puede utilizar para almacenar los perfiles sociales de la red, blogs, grupos de conversación y foros, páginas de famosos y mucho más. Puede crear tantos canales como su proveedor de servicio permita."
+msgstr "Un canal está formado por su propia colección de páginas web relacionadas. Se puede utilizar para almacenar los perfiles sociales de la red, blogs, grupos de conversación y foros, páginas de famosos y mucho más. Puede crear tantos canales como su proveedor de servicio permita."
#: ../../mod/new_channel.php:113
msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
-msgstr "Ejemplos: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
+msgstr "Ejemplos: \"Juan García\", \"Isabel y sus caballos\", \"Fútbol\", \"Grupo de parapente\" "
#: ../../mod/new_channel.php:114
msgid "Choose a short nickname"
-msgstr "Escoge un alias corto"
+msgstr "Elija un alias corto"
#: ../../mod/new_channel.php:115
msgid ""
"Your nickname will be used to create an easily remembered channel address "
"(like an email address) which you can share with others."
-msgstr "Su alias podrá usarse para crear una dirección de canal fácilmente memorizable (como una dirección de correo electrónico) el cual puede ser compartido con otros."
+msgstr "Su alias podrá usarse para crear una dirección de canal fácilmente memorizable (como una dirección de correo electrónico) que puede ser compartido con otros."
#: ../../mod/new_channel.php:116
msgid "Or <a href=\"import\">import an existing channel</a> from another location"
-msgstr "O <a href=\"import\">importa un canal existente</a> de otro lugar"
+msgstr "O <a href=\"import\">importar un canal existente</a> de otro lugar"
#: ../../mod/new_channel.php:118
msgid ""
"Please choose a channel type (such as social networking or community forum) "
"and privacy requirements so we can select the best permissions for you"
-msgstr "escoge el tipo de canal (como red social o fofo de comunidad) y la privacidad que requiera, así podemos seleccionar el mejor conjunto de permisos para ti"
+msgstr "Elija el tipo de canal (como red social o foro de comunidad) y la privacidad que requiera, así podremos seleccionar el mejor conjunto de permisos para usted"
#: ../../mod/new_channel.php:119
msgid "Channel Type"
-msgstr "Tipo de Canal"
+msgstr "Tipo de canal"
#: ../../mod/new_channel.php:119
msgid "Read more about roles"
-msgstr "Lee más sobre los roles"
+msgstr "Leer más sobre los roles"
#: ../../mod/appman.php:28 ../../mod/appman.php:44
msgid "App installed."
@@ -8615,19 +8620,19 @@ msgstr "Aplicación instalada."
#: ../../mod/appman.php:37
msgid "Malformed app."
-msgstr "Aplicación malformada"
+msgstr "Aplicación con errores"
#: ../../mod/appman.php:80
msgid "Embed code"
-msgstr "codigo embebido"
+msgstr "código incorporado"
#: ../../mod/appman.php:86
msgid "Edit App"
-msgstr "Edita la aplicación"
+msgstr "Modificar la aplicación"
#: ../../mod/appman.php:86
msgid "Create App"
-msgstr "Crea una aplicación"
+msgstr "Crear una aplicación"
#: ../../mod/appman.php:91
msgid "Name of app"
@@ -8639,7 +8644,7 @@ msgstr "Ubicación (URL) de la aplicación"
#: ../../mod/appman.php:94
msgid "Photo icon URL"
-msgstr "Foto del icono URL"
+msgstr "Dirección del icono que se va a utilizar para esta foto"
#: ../../mod/appman.php:94
msgid "80 x 80 pixels - optional"
@@ -8647,7 +8652,7 @@ msgstr "80 x 80 pixels - opcional"
#: ../../mod/appman.php:95
msgid "Version ID"
-msgstr "Versión ID"
+msgstr "Versión"
#: ../../mod/appman.php:96
msgid "Price of app"
@@ -8655,11 +8660,11 @@ msgstr "Precio de la aplicación"
#: ../../mod/appman.php:97
msgid "Location (URL) to purchase app"
-msgstr "Ubicación (URL) para conseguir la aplicación"
+msgstr "Ubicación (URL) donde adquirir la aplicación"
#: ../../mod/ping.php:263
msgid "sent you a private message"
-msgstr "envia un mensaje privado"
+msgstr "enviarle un mensaje privado"
#: ../../mod/ping.php:314
msgid "added your channel"
@@ -8667,19 +8672,19 @@ msgstr "se añadió su canal"
#: ../../mod/ping.php:355
msgid "posted an event"
-msgstr "Se publicó un evento"
+msgstr "publicó un evento"
#: ../../mod/layouts.php:176
msgid "Comanche page description language help"
-msgstr "Página de ayuda de la descripción del lenguaje Comanche"
+msgstr "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche"
#: ../../mod/layouts.php:180
msgid "Layout Description"
-msgstr "Descripción del Formato Gráfico"
+msgstr "Descripción del formato"
#: ../../mod/layouts.php:185
msgid "Download PDL file"
-msgstr "Descarga el fichero PDL"
+msgstr "Descargar el fichero PDL"
#: ../../mod/home.php:73
#, php-format
@@ -8700,11 +8705,11 @@ msgstr "Mis Marcadores"
#: ../../mod/bookmarks.php:71
msgid "My Connections Bookmarks"
-msgstr "Mis Marcadores de Conexiones"
+msgstr "Marcadores de mis conexiones"
#: ../../mod/channel.php:97
msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Permisos insuficientes. Petición redirigida a la página de perfil."
+msgstr "Permisos insuficientes. Petición redirigida a la página del perfil."
#: ../../mod/pconfig.php:27 ../../mod/pconfig.php:60
msgid "This setting requires special processing and editing has been blocked."
@@ -8712,32 +8717,32 @@ msgstr "Este ajuste necesita de un proceso especial y la edición ha sido bloque
#: ../../mod/pconfig.php:49
msgid "Configuration Editor"
-msgstr "Editor de Configuración"
+msgstr "Editor de configuración"
#: ../../mod/pconfig.php:50
msgid ""
"Warning: Changing some settings could render your channel inoperable. Please"
" leave this page unless you are comfortable with and knowledgeable about how"
" to correctly use this feature."
-msgstr "Atención: El cambio de algunos ajustes puede convertir su canal en inoperable. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica."
+msgstr "Atención: El cambio de algunos ajustes puede volver inoperante su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica."
#: ../../mod/suggest.php:35
msgid ""
"No suggestions available. If this is a new site, please try again in 24 "
"hours."
-msgstr "No hay sugerencias disponibles. Si es un lugar nuevo, espera 24 horas y prueba de nuevo."
+msgstr "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo."
#: ../../mod/poll.php:64
msgid "Poll"
-msgstr "Sondea"
+msgstr "Sondear"
#: ../../mod/poll.php:69
msgid "View Results"
-msgstr "Mostrar Resultados"
+msgstr "Mostrar resultados"
#: ../../mod/service_limits.php:19
msgid "No service class restrictions found."
-msgstr "No se han encontrado clases de restricción de servicio."
+msgstr "No se han encontrado restricciones sobre esta clase de servicio."
#: ../../mod/sharedwithme.php:94
msgid "Files: shared with me"
@@ -8753,12 +8758,12 @@ msgstr "Borrar todos los ficheros"
#: ../../mod/sharedwithme.php:100
msgid "Remove this file"
-msgstr "Borra este archivo"
+msgstr "Borrar este fichero"
#: ../../view/theme/apw/php/config.php:202
#: ../../view/theme/apw/php/config.php:236
msgid "Schema Default"
-msgstr "Esquema Predeterminado"
+msgstr "Esquema predeterminado"
#: ../../view/theme/apw/php/config.php:203
msgid "Sans-Serif"
@@ -8771,36 +8776,36 @@ msgstr "Monospace"
#: ../../view/theme/apw/php/config.php:259
#: ../../view/theme/redbasic/php/config.php:102
msgid "Theme settings"
-msgstr "Ajustes de tema"
+msgstr "Ajustes del tema"
#: ../../view/theme/apw/php/config.php:260
msgid "Set scheme"
-msgstr "Ajusta esquema"
+msgstr "Ajustar esquema"
#: ../../view/theme/apw/php/config.php:261
#: ../../view/theme/redbasic/php/config.php:124
msgid "Set font-size for posts and comments"
-msgstr "Ajusta el tamaño del tipo de letra para entradas y comentarios"
+msgstr "Ajustar el tamaño del tipo de letra para entradas y comentarios"
#: ../../view/theme/apw/php/config.php:262
msgid "Set font face"
-msgstr "Ajusta el tipo de letra"
+msgstr "Ajustar el tipo de letra"
#: ../../view/theme/apw/php/config.php:263
msgid "Set iconset"
-msgstr "Ajusta el conjunto de iconos"
+msgstr "Ajustar el conjunto de iconos"
#: ../../view/theme/apw/php/config.php:264
msgid "Set big shadow size, default 15px 15px 15px"
-msgstr "Ajusta el sombreado grande, por defecto 15px 15px 15px"
+msgstr "Ajustar el sombreado grande, por defecto 15px 15px 15px"
#: ../../view/theme/apw/php/config.php:265
msgid "Set small shadow size, default 5px 5px 5px"
-msgstr "Ajusta el sombreado pequeño, por defecto 5px 5px 5px"
+msgstr "Ajustar el sombreado pequeño, por defecto 5px 5px 5px"
#: ../../view/theme/apw/php/config.php:266
msgid "Set shadow color, default #000"
-msgstr "Ajusta el color del sombreado, predeterminado a #000"
+msgstr "Ajustar el color del sombreado, predeterminado a #000"
#: ../../view/theme/apw/php/config.php:267
msgid "Set radius size, default 5px"
@@ -8808,55 +8813,55 @@ msgstr "Ajusta el tamaño del radio, predeterminado a 5px"
#: ../../view/theme/apw/php/config.php:268
msgid "Set line-height for posts and comments"
-msgstr "Ajusta la altura de linea para entradas y comentarios"
+msgstr "Ajustar la altura de linea para entradas y comentarios"
#: ../../view/theme/apw/php/config.php:269
msgid "Set background image"
-msgstr "Ajusta la imagen de fondo"
+msgstr "Ajustar la imagen de fondo"
#: ../../view/theme/apw/php/config.php:270
msgid "Set background attachment"
-msgstr "Ajusta el fondo adjuntado"
+msgstr "Ajustar el fondo adjuntado"
#: ../../view/theme/apw/php/config.php:271
msgid "Set background color"
-msgstr "Ajusta el color de fondo"
+msgstr "Ajustar el color de fondo"
#: ../../view/theme/apw/php/config.php:272
msgid "Set section background image"
-msgstr "Ajusta la imagen de la sección del fondo"
+msgstr "Ajustar la imagen de la sección del fondo"
#: ../../view/theme/apw/php/config.php:273
msgid "Set section background color"
-msgstr "Ajusta el color de la sección del fondo"
+msgstr "Ajustar el color de la sección del fondo"
#: ../../view/theme/apw/php/config.php:274
msgid "Set color of items - use hex"
-msgstr "Ajusta el color de los elementos - utiliza código hexadecimal"
+msgstr "Ajustar el color de los elementos - utilizar código hexadecimal"
#: ../../view/theme/apw/php/config.php:275
msgid "Set color of links - use hex"
-msgstr "Ajusta el color de los enlaces - utiliza código hexadecimal"
+msgstr "Ajusta el color de los enlaces - utilizar código hexadecimal"
#: ../../view/theme/apw/php/config.php:276
msgid "Set max-width for items. Default 400px"
-msgstr "Ajusta la anchura máxima para los elementos. Predeterminado a 400px"
+msgstr "Ajustar la anchura máxima para los elementos. Predeterminado a 400px"
#: ../../view/theme/apw/php/config.php:277
msgid "Set min-width for items. Default 240px"
-msgstr "Ajusta la anchura mínima para los elementos. Predeterminado a 240px"
+msgstr "Ajustar la anchura mínima para los elementos. Predeterminado a 240px"
#: ../../view/theme/apw/php/config.php:278
msgid "Set the generic content wrapper width. Default 48%"
-msgstr "Ajusta el ancho de la envoltura del contenido genérico. Predeterminado 48%"
+msgstr "Ajustar el ancho de la envoltura del contenido genérico. Predeterminado 48%"
#: ../../view/theme/apw/php/config.php:279
msgid "Set color of fonts - use hex"
-msgstr "Ajusta el color del tipo de letra - utiliza código hexadecimal"
+msgstr "Ajustar el color del tipo de letra - utiliza código hexadecimal"
#: ../../view/theme/apw/php/config.php:280
msgid "Set background-size element"
-msgstr "Ajusta el tamaño de fondo del elemento"
+msgstr "Ajustar el tamaño de fondo del elemento"
#: ../../view/theme/apw/php/config.php:281
msgid "Item opacity"
@@ -8864,7 +8869,7 @@ msgstr "Opacidad del elemento"
#: ../../view/theme/apw/php/config.php:282
msgid "Display post previews only"
-msgstr "Muestra solo las previsualizaciones de las entradas"
+msgstr "Mostrar solo las previsualizaciones de las entradas"
#: ../../view/theme/apw/php/config.php:283
msgid "Display side bar on channel page"
@@ -8900,15 +8905,15 @@ msgstr "Desplazamiento derecho del elemento lateral"
#: ../../view/theme/redbasic/php/config.php:82
msgid "Light (Red Matrix default)"
-msgstr "Ligero (Red Matrix predeterminado)"
+msgstr "Ligero (predeterminado de RedMatrix)"
#: ../../view/theme/redbasic/php/config.php:103
msgid "Select scheme"
-msgstr "Escoge esquema"
+msgstr "Elegir un esquema"
#: ../../view/theme/redbasic/php/config.php:104
msgid "Narrow navbar"
-msgstr "Limita la barra de navegación"
+msgstr "Estrechar la barra de navegación"
#: ../../view/theme/redbasic/php/config.php:105
msgid "Navigation bar background color"
@@ -8948,43 +8953,43 @@ msgstr "Color del enlace"
#: ../../view/theme/redbasic/php/config.php:114
msgid "Set font-color for banner"
-msgstr "Ajusta el color del tipo de letra para la pancarta"
+msgstr "Ajustar el color del tipo de letra para el \"banner\""
#: ../../view/theme/redbasic/php/config.php:115
msgid "Set the background color"
-msgstr "Ajusta el color de fondo"
+msgstr "Ajustar el color de fondo"
#: ../../view/theme/redbasic/php/config.php:116
msgid "Set the background image"
-msgstr "Ajusta la imagen de fondo"
+msgstr "Ajustar la imagen de fondo"
#: ../../view/theme/redbasic/php/config.php:117
msgid "Set the background color of items"
-msgstr "Ajusta el color de los elementos de fondo"
+msgstr "Ajustar el color de los elementos de fondo"
#: ../../view/theme/redbasic/php/config.php:118
msgid "Set the background color of comments"
-msgstr "Ajusta el color de fondo de los comentarios"
+msgstr "Ajustar el color de fondo de los comentarios"
#: ../../view/theme/redbasic/php/config.php:119
msgid "Set the border color of comments"
-msgstr "Ajusta el color del borde de los comentarios"
+msgstr "Ajustar el color del borde de los comentarios"
#: ../../view/theme/redbasic/php/config.php:120
msgid "Set the indent for comments"
-msgstr "Ajusta la indentación de los comentarios"
+msgstr "Ajustar la indentación de los comentarios"
#: ../../view/theme/redbasic/php/config.php:121
msgid "Set the basic color for item icons"
-msgstr "Ajusta el color básico para los iconos de los elementos"
+msgstr "Ajustar el color básico para los iconos de los elementos"
#: ../../view/theme/redbasic/php/config.php:122
msgid "Set the hover color for item icons"
-msgstr "Ajusta el color flotante para los iconos de los artículos"
+msgstr "Ajustar el color flotante para los iconos de los elementos"
#: ../../view/theme/redbasic/php/config.php:123
msgid "Set font-size for the entire application"
-msgstr "Ajusta el tamaño del tipo de letra para toda la aplicación"
+msgstr "Ajustar el tamaño de letra para toda la aplicación"
#: ../../view/theme/redbasic/php/config.php:123
msgid "Example: 14px"
@@ -8992,7 +8997,7 @@ msgstr "Ejemplo: 14px"
#: ../../view/theme/redbasic/php/config.php:125
msgid "Set font-color for posts and comments"
-msgstr "Establecer el color de la fuente para publicaciones y comentarios"
+msgstr "Establecer el color de la letra para publicaciones y comentarios"
#: ../../view/theme/redbasic/php/config.php:126
msgid "Set radius of corners"
@@ -9000,15 +9005,15 @@ msgstr "Establecer el radio de curvatura de las esquinas"
#: ../../view/theme/redbasic/php/config.php:127
msgid "Set shadow depth of photos"
-msgstr "Ajusta profundidad de sombras de las fotos"
+msgstr "Ajustar la profundidad de sombras de las fotos"
#: ../../view/theme/redbasic/php/config.php:128
msgid "Set maximum width of content region in pixel"
-msgstr "Ajusta la anchura máxima de la región de contenido, en pixels"
+msgstr "Ajustar la anchura máxima de la región de contenido, en pixels"
#: ../../view/theme/redbasic/php/config.php:128
msgid "Leave empty for default width"
-msgstr "Deja en blanco para la anchura predeterminada"
+msgstr "Dejar en blanco para la anchura predeterminada"
#: ../../view/theme/redbasic/php/config.php:129
msgid "Center page content"
@@ -9016,15 +9021,15 @@ msgstr "Contenido del centro de la página"
#: ../../view/theme/redbasic/php/config.php:130
msgid "Set minimum opacity of nav bar - to hide it"
-msgstr "Ajusta la opacidad mínima de la barra de navegación - para ocultarla"
+msgstr "Ajustar la opacidad mínima de la barra de navegación - para ocultarla"
#: ../../view/theme/redbasic/php/config.php:131
msgid "Set size of conversation author photo"
-msgstr "Ajusta el tamaño de la foto del autor de la conversación"
+msgstr "Ajustar el tamaño de la foto del autor de la conversación"
#: ../../view/theme/redbasic/php/config.php:132
msgid "Set size of followup author photos"
-msgstr "Ajusta el tamaño de foto de los seguidores del autor"
+msgstr "Ajustar el tamaño de foto de los seguidores del autor"
#: ../../boot.php:1356
#, php-format
@@ -9039,7 +9044,7 @@ msgstr "Error de Actualización en %s"
#: ../../boot.php:1526
msgid ""
"Create an account to access services and applications within the Red Matrix"
-msgstr "Crea una cuenta para acceder a los servicios y aplicaciones dentro de Red Matrix"
+msgstr "Crear una cuenta para acceder a los servicios y aplicaciones dentro de la red"
#: ../../boot.php:1554
msgid "Password"
@@ -9047,7 +9052,7 @@ msgstr "Contraseña"
#: ../../boot.php:1555
msgid "Remember me"
-msgstr "Recuérdeme"
+msgstr "Recordarme"
#: ../../boot.php:1558
msgid "Forgot your password?"
@@ -9055,7 +9060,7 @@ msgstr "¿Olvidó su contraseña?"
#: ../../boot.php:2178
msgid "toggle mobile"
-msgstr "cambiar a móvil"
+msgstr "cambiar a modo móvil"
#: ../../boot.php:2313
msgid "Website SSL certificate is not valid. Please correct."
@@ -9064,11 +9069,11 @@ msgstr "El certificado SSL del sitio web no es válido. Por favor, corríjalo."
#: ../../boot.php:2316
#, php-format
msgid "[red] Website SSL error for %s"
-msgstr "[red] SSL error de Sitio Web en %s"
+msgstr "[red] Error SSL del sitio web en %s"
#: ../../boot.php:2353
msgid "Cron/Scheduled tasks not running."
-msgstr "Las tareas de Cron/Planificador no funcionan."
+msgstr "Las tareas del Planificador/Cron no se están funcionando."
#: ../../boot.php:2357
#, php-format
diff --git a/view/es/strings.php b/view/es/strings.php
index ae56403bd..8088348f4 100644
--- a/view/es/strings.php
+++ b/view/es/strings.php
@@ -5,7 +5,7 @@ function string_plural_select_es($n){
return ($n != 1);;
}}
;
-$a->strings["Cannot locate DNS info for database server '%s'"] = "No se ha podido localizar información para el servidor de base de datos “%s”";
+$a->strings["Cannot locate DNS info for database server '%s'"] = "No se ha podido localizar información de DNS para el servidor de base de datos “%s”";
$a->strings["Profile Photos"] = "Fotos de perfil";
$a->strings["Edit"] = "Editar";
$a->strings["Frequently"] = "Frecuentemente";
@@ -17,20 +17,20 @@ $a->strings["Monthly"] = "Mensualmente";
$a->strings["Friendica"] = "Friendica";
$a->strings["OStatus"] = "OStatus";
$a->strings["RSS/Atom"] = "RSS/Atom";
-$a->strings["Email"] = "Email";
+$a->strings["Email"] = "Correo electrónico";
$a->strings["Diaspora"] = "Diaspora";
$a->strings["Facebook"] = "Facebook";
$a->strings["Zot!"] = "Zot!";
$a->strings["LinkedIn"] = "LinkedIn";
$a->strings["XMPP/IM"] = "XMPP/IM";
$a->strings["MySpace"] = "MySpace";
-$a->strings["created a new post"] = "Crear una nueva entrada";
-$a->strings["commented on %s's post"] = "comentar la entrada de %s";
-$a->strings["No username found in import file."] = "No se ha encontrado nombre de usuario en el archivo importado.";
+$a->strings["created a new post"] = "ha creado una nueva entrada";
+$a->strings["commented on %s's post"] = "ha comentado la entrada de %s";
+$a->strings["No username found in import file."] = "No se ha encontrado el nombre de usuario en el fichero importado.";
$a->strings["Unable to create a unique channel address. Import failed."] = "No se ha podido crear una dirección de canal única. Ha fallado la importación.";
$a->strings["Import completed."] = "Importación completada.";
-$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo suprimido con éste nombre ha sido reestablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a éste grupo y sus futuros miembros. Si no quiere esto por favor cree otro grupo con un nombre diferente.";
-$a->strings["Default privacy group for new contacts"] = "Grupo de privacidad por defecto para nuevos contactos ";
+$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto por favor cree otro grupo con un nombre diferente.";
+$a->strings["Default privacy group for new contacts"] = "Privacidad de grupo por defecto para nuevos contactos ";
$a->strings["All Channels"] = "Todos los canales";
$a->strings["edit"] = "editar";
$a->strings["Collections"] = "Colecciones";
@@ -38,7 +38,7 @@ $a->strings["Edit collection"] = "Editar colección";
$a->strings["Add new collection"] = "Añadir nueva colección";
$a->strings["Channels not in any collection"] = "El canal no se encuentra en ninguna colección";
$a->strings["add"] = "añadir";
-$a->strings["Not a valid email address"] = "Dirección de correo inválida";
+$a->strings["Not a valid email address"] = "Dirección de correo no válida";
$a->strings["Your email domain is not among those allowed on this site"] = "Su dirección de correo no pertenece a los dominios permitidos en este sitio.";
$a->strings["Your email address is already registered at this site."] = "Su dirección de correo está ya registrada en este sitio.";
$a->strings["An invitation is required."] = "Es obligatorio que le inviten.";
@@ -49,18 +49,18 @@ $a->strings["Registration confirmation for %s"] = "Confirmación de registro par
$a->strings["Registration request at %s"] = "Solicitud de registro en %s";
$a->strings["Administrator"] = "Administrador";
$a->strings["your registration password"] = "su contraseña de registro";
-$a->strings["Registration details for %s"] = "Detalles del registro para %s";
+$a->strings["Registration details for %s"] = "Detalles del registro de %s";
$a->strings["Account approved."] = "Cuenta aprobada.";
-$a->strings["Registration revoked for %s"] = "Registro rechazado para %s";
-$a->strings["Account verified. Please login."] = "Cuenta verificada. Por favor, inicia sesión.";
+$a->strings["Registration revoked for %s"] = "Registro revocado para %s";
+$a->strings["Account verified. Please login."] = "Cuenta verificada. Por favor, inicie sesión.";
$a->strings["Click here to upgrade."] = "Pulse aquí para actualizar";
-$a->strings["This action exceeds the limits set by your subscription plan."] = "Ésta acción supera los límites establecidos por su plan de suscripción ";
+$a->strings["This action exceeds the limits set by your subscription plan."] = "Esta acción supera los límites establecidos por su plan de suscripción ";
$a->strings["This action is not available under your subscription plan."] = "Esta acción no está disponible en su plan de suscripción.";
$a->strings["Miscellaneous"] = "Varios";
-$a->strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD o MM-DD";
+$a->strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD";
$a->strings["Required"] = "Obligatorio";
$a->strings["never"] = "nunca";
-$a->strings["less than a second ago"] = "hace menos de un segundo";
+$a->strings["less than a second ago"] = "hace un instante";
$a->strings["year"] = "año";
$a->strings["years"] = "años";
$a->strings["month"] = "mes";
@@ -82,8 +82,8 @@ $a->strings["Directory Options"] = "Opciones del directorio";
$a->strings["Safe Mode"] = "Modo seguro";
$a->strings["No"] = "No";
$a->strings["Yes"] = "Sí";
-$a->strings["Public Forums Only"] = "Solamente foros públicos";
-$a->strings["This Website Only"] = "Solamente este sitio web";
+$a->strings["Public Forums Only"] = "Solo foros públicos";
+$a->strings["This Website Only"] = "Solo este sitio web";
$a->strings["New Page"] = "Nueva página";
$a->strings["View"] = "Ver";
$a->strings["Preview"] = "Previsualizar";
@@ -113,50 +113,50 @@ $a->strings["Rating"] = "Valoración";
$a->strings["Describe (optional)"] = "Describir (opcional)";
$a->strings["Submit"] = "Enviar";
$a->strings["Please enter a link URL"] = "Por favor, introduzca una dirección de enlace";
-$a->strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Cambios no guardados. ¿Estás seguro que deseas abandonar la página?";
+$a->strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Cambios no guardados. ¿Está seguro de que desea abandonar la página?";
$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
$a->strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
-$a->strings["ago"] = "hace";
+$a->strings["ago"] = "de su publicación";
$a->strings["from now"] = "desde ahora";
$a->strings["less than a minute"] = "menos de un minuto";
-$a->strings["about a minute"] = "hace como un minuto";
+$a->strings["about a minute"] = "alrededor de un minuto";
$a->strings["%d minutes"] = "%d minutos";
-$a->strings["about an hour"] = "hace como una hora";
-$a->strings["about %d hours"] = "hace %d minutos";
+$a->strings["about an hour"] = "alrededor de una hora";
+$a->strings["about %d hours"] = "alrededor de %d horas";
$a->strings["a day"] = "un día";
$a->strings["%d days"] = "%d días";
-$a->strings["about a month"] = "hace como un mes";
+$a->strings["about a month"] = "alrededor de un mes";
$a->strings["%d months"] = "%d meses";
-$a->strings["about a year"] = "hace un año";
+$a->strings["about a year"] = "alrededor de un año";
$a->strings["%d years"] = "%d años";
$a->strings[" "] = " ";
$a->strings["timeago.numbers"] = "timeago.numbers";
-$a->strings["prev"] = "previa";
-$a->strings["first"] = "Primera";
+$a->strings["prev"] = "anterior";
+$a->strings["first"] = "primera";
$a->strings["last"] = "última";
$a->strings["next"] = "próxima";
$a->strings["older"] = "más antiguas";
$a->strings["newer"] = "más recientes";
$a->strings["No connections"] = "Sin conexiones";
$a->strings["%d Connection"] = array(
- 0 => "%d conexión",
- 1 => "%d conexiones",
+ 0 => "%d Conexión",
+ 1 => "%d Conexiones",
);
$a->strings["View Connections"] = "Ver conexiones";
$a->strings["Search"] = "Buscar";
$a->strings["Save"] = "Guardar";
$a->strings["poke"] = "dar un toque";
$a->strings["poked"] = "ha recibido un toque";
-$a->strings["ping"] = "ping";
-$a->strings["pinged"] = " le hicieron un ping";
+$a->strings["ping"] = "avisar";
+$a->strings["pinged"] = "avisado/a";
$a->strings["prod"] = "incitar";
-$a->strings["prodded"] = "incitaros";
-$a->strings["slap"] = "bofetada";
-$a->strings["slapped"] = "abofetear";
-$a->strings["finger"] = "manoseo";
-$a->strings["fingered"] = "manosear";
-$a->strings["rebuff"] = "desaire";
-$a->strings["rebuffed"] = "desaireado/a";
+$a->strings["prodded"] = "incitado/a";
+$a->strings["slap"] = "abofetear";
+$a->strings["slapped"] = "abofeteado/a";
+$a->strings["finger"] = "señalar";
+$a->strings["fingered"] = "señalado/a";
+$a->strings["rebuff"] = "desairar";
+$a->strings["rebuffed"] = "desairado/a";
$a->strings["happy"] = "feliz";
$a->strings["sad"] = "triste";
$a->strings["mellow"] = "amable";
@@ -174,38 +174,38 @@ $a->strings["anxious"] = "ansioso/a";
$a->strings["cranky"] = "de mal humor";
$a->strings["disturbed"] = "perturbado/a";
$a->strings["frustrated"] = "frustrado/a";
-$a->strings["depressed"] = "deprimido";
+$a->strings["depressed"] = "deprimido/a";
$a->strings["motivated"] = "motivado/a";
$a->strings["relaxed"] = "relajado/a";
$a->strings["surprised"] = "sorprendido/a";
-$a->strings["Monday"] = "Lunes";
-$a->strings["Tuesday"] = "Martes";
-$a->strings["Wednesday"] = "Miércoles";
-$a->strings["Thursday"] = "Jueves";
-$a->strings["Friday"] = "Viernes";
-$a->strings["Saturday"] = "Sábado";
-$a->strings["Sunday"] = "Domingo";
-$a->strings["January"] = "Enero";
-$a->strings["February"] = "Febrero";
-$a->strings["March"] = "Marzo";
-$a->strings["April"] = "Abril";
-$a->strings["May"] = "Mayo";
-$a->strings["June"] = "Junio";
-$a->strings["July"] = "Julio";
-$a->strings["August"] = "Agosto";
-$a->strings["September"] = "Septiembre";
-$a->strings["October"] = "Octubre";
-$a->strings["November"] = "Noviembre";
-$a->strings["December"] = "Diciembre";
-$a->strings["unknown.???"] = "desconocido.???";
+$a->strings["Monday"] = "lunes";
+$a->strings["Tuesday"] = "martes";
+$a->strings["Wednesday"] = "miércoles";
+$a->strings["Thursday"] = "jueves";
+$a->strings["Friday"] = "viernes";
+$a->strings["Saturday"] = "sábado";
+$a->strings["Sunday"] = "domingo";
+$a->strings["January"] = "enero";
+$a->strings["February"] = "febrero";
+$a->strings["March"] = "marzo";
+$a->strings["April"] = "abril";
+$a->strings["May"] = "mayo";
+$a->strings["June"] = "junio";
+$a->strings["July"] = "julio";
+$a->strings["August"] = "agosto";
+$a->strings["September"] = "septiembre";
+$a->strings["October"] = "octubre";
+$a->strings["November"] = "noviembre";
+$a->strings["December"] = "diciembre";
+$a->strings["unknown.???"] = "desconocido???";
$a->strings["bytes"] = "bytes";
$a->strings["remove category"] = "eliminar categoría";
-$a->strings["remove from file"] = "eliminar del archivo";
+$a->strings["remove from file"] = "eliminar del fichero";
$a->strings["Click to open/close"] = "Pulsar para abrir/cerrar";
-$a->strings["Link to Source"] = "Enlace a la fuente";
+$a->strings["Link to Source"] = "Ir al mensaje original";
$a->strings["default"] = "por defecto";
-$a->strings["Page layout"] = "Disposición de página";
-$a->strings["You can create your own with the layouts tool"] = "Puede crear la suya propia con la herramienta de disposiciones";
+$a->strings["Page layout"] = "Formato de la página";
+$a->strings["You can create your own with the layouts tool"] = "Puede crear su propio formato gráfico con las herramientas de diseño";
$a->strings["Page content type"] = "Tipo de contenido de página";
$a->strings["Select an alternate language"] = "Selecciona un idioma alternativo";
$a->strings["photo"] = "foto";
@@ -216,7 +216,7 @@ $a->strings["activity"] = "actividad";
$a->strings["Design Tools"] = "Herramientas de diseño";
$a->strings["Blocks"] = "Bloques";
$a->strings["Menus"] = "Menús";
-$a->strings["Layouts"] = "Disposiciones";
+$a->strings["Layouts"] = "Formato gráfico";
$a->strings["Pages"] = "Páginas";
$a->strings["Collection"] = "Colección";
$a->strings["parent"] = "padre";
@@ -239,16 +239,16 @@ $a->strings["Size"] = "Tamaño";
$a->strings["Last Modified"] = "Última modificación";
$a->strings["Delete"] = "Borrar";
$a->strings["Create new folder"] = "Crear nueva carpeta";
-$a->strings["Upload file"] = "Subir archivo";
+$a->strings["Upload file"] = "Subir fichero";
$a->strings["%1\$s's bookmarks"] = "Marcadores de %1\$s";
-$a->strings["view full size"] = "Ver a pantalla completa";
+$a->strings["view full size"] = "Ver en el tamaño original";
$a->strings["\$Projectname Notification"] = "Notificación de \$Projectname";
$a->strings["\$projectname"] = "\$projectname";
$a->strings["Thank You,"] = "Gracias,";
$a->strings["%s Administrator"] = "%s Administrador";
$a->strings["No Subject"] = "Sin asunto";
$a->strings["General Features"] = "Características generales";
-$a->strings["Content Expiration"] = "Expiración del contenido";
+$a->strings["Content Expiration"] = "Caducidad del contenido";
$a->strings["Remove posts/comments and/or private messages at a future time"] = "Eliminar publicaciones/comentarios y/o mensajes privados más adelante";
$a->strings["Multiple Profiles"] = "Múltiples perfiles";
$a->strings["Ability to create multiple profiles"] = "Capacidad de crear múltiples perfiles";
@@ -259,37 +259,37 @@ $a->strings["Save and load profile details across sites/channels"] = "Guardar y
$a->strings["Web Pages"] = "Páginas web";
$a->strings["Provide managed web pages on your channel"] = "Proveer páginas web gestionadas en su canal";
$a->strings["Private Notes"] = "Notas privadas";
-$a->strings["Enables a tool to store notes and reminders"] = "Activa una herramienta para almacenar notas y recordatorios";
-$a->strings["Navigation Channel Select"] = "Selección de navegación de canal";
+$a->strings["Enables a tool to store notes and reminders"] = "Activar una herramienta para almacenar notas y recordatorios";
+$a->strings["Navigation Channel Select"] = "Navegación por el selector de canales";
$a->strings["Change channels directly from within the navigation dropdown menu"] = "Cambiar canales directamente desde el menú de navegación desplegable";
$a->strings["Photo Location"] = "Ubicación de las fotos";
-$a->strings["If location data is available on uploaded photos, link this to a map."] = "Si los datos de ubicación están disponibles en las fotos subidas, enlaza esto a un mapa.";
+$a->strings["If location data is available on uploaded photos, link this to a map."] = "Si los datos de ubicación están disponibles en las fotos subidas, enlaza estas a un mapa.";
$a->strings["Expert Mode"] = "Modo de experto";
$a->strings["Enable Expert Mode to provide advanced configuration options"] = "Habilitar el modo de experto para acceder a opciones avanzadas de configuración";
$a->strings["Premium Channel"] = "Canal premium";
-$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Te permite configurar restricciones y términos a aquellos que conectan con su canal";
+$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Les permite configurar restricciones y normas de uso a aquellos que conectan con su canal";
$a->strings["Post Composition Features"] = "Características de composición de entradas";
$a->strings["Use Markdown"] = "Usar Markdown";
$a->strings["Allow use of \"Markdown\" to format posts"] = "Permitir el uso de \"Markdown\" para formatear publicaciones";
$a->strings["Large Photos"] = "Fotos de gran tamaño";
-$a->strings["Include large (640px) photo thumbnails in posts. If not enabled, use small (320px) photo thumbnails"] = "Incluir miniaturas de foto grandes (640px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (320px)";
-$a->strings["Channel Sources"] = "Fuentes del canal";
-$a->strings["Automatically import channel content from other channels or feeds"] = "Importar automáticamente contenido de otros canales o fuentes";
+$a->strings["Include large (640px) photo thumbnails in posts. If not enabled, use small (320px) photo thumbnails"] = "Incluir miniaturas de fotos grandes (640px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (320px)";
+$a->strings["Channel Sources"] = "Orígenes de los contenidos del canal";
+$a->strings["Automatically import channel content from other channels or feeds"] = "Importar automáticamente contenido de otros canales o \"feeds\"";
$a->strings["Even More Encryption"] = "Más cifrado todavía";
$a->strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permitir cifrado adicional de contenido punto-a-punto con una clave secreta compartida.";
$a->strings["Enable voting tools"] = "Activar herramientas de votación";
$a->strings["Provide a class of post which others can vote on"] = "Proveer una clase de publicación en la que otros puedan votar";
-$a->strings["Network and Stream Filtering"] = "Filtrado de red y flujo";
+$a->strings["Network and Stream Filtering"] = "Filtrado del contenido";
$a->strings["Search by Date"] = "Buscar por fecha";
$a->strings["Ability to select posts by date ranges"] = "Capacidad de seleccionar entradas por rango de fechas";
$a->strings["Collections Filter"] = "Filtrado de colecciones";
-$a->strings["Enable widget to display Network posts only from selected collections"] = "Habilitar la muestra de entradas de red eligiendo colecciones";
+$a->strings["Enable widget to display Network posts only from selected collections"] = "Habilitar la muestra de entradas eligiendo colecciones";
$a->strings["Saved Searches"] = "Búsquedas Guardadas";
$a->strings["Save search terms for re-use"] = "Guardar términos de búsqueda para su reutilización";
$a->strings["Network Personal Tab"] = "Pestaña de red personal";
-$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Habilitar una pestaña en la cual se muestran solo entradas de red en las que has participado.";
+$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Habilitar una pestaña en la cual se muestren solo las entradas en las que ha participado.";
$a->strings["Network New Tab"] = "Nueva pestaña de red";
-$a->strings["Enable tab to display all new Network activity"] = "Habilitar una pestaña en la cual se muestra toda la actividad de la red";
+$a->strings["Enable tab to display all new Network activity"] = "Habilitar una pestaña en la que se muestre toda la actividad de la red";
$a->strings["Affinity Tool"] = "Herramienta de afinidad";
$a->strings["Filter stream activity by depth of relationships"] = "Filtrar la actividad del flujo por profundidad de relaciones";
$a->strings["Connection Filtering"] = "Filtrado de conexiones";
@@ -303,9 +303,9 @@ $a->strings["Post Categories"] = "Categorías de entradas";
$a->strings["Add categories to your posts"] = "Añadir categorías a sus publicaciones";
$a->strings["Saved Folders"] = "Carpetas guardadas";
$a->strings["Ability to file posts under folders"] = "Capacidad de archivar entradas en carpetas";
-$a->strings["Dislike Posts"] = "No me gusta:";
-$a->strings["Ability to dislike posts/comments"] = "Capacidad de desaprovar entradas/comentarios";
-$a->strings["Star Posts"] = "Entrada destacada";
+$a->strings["Dislike Posts"] = "Desagrado de publicaciones";
+$a->strings["Ability to dislike posts/comments"] = "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios";
+$a->strings["Star Posts"] = "Entradas destacadas";
$a->strings["Ability to mark special posts with a star indicator"] = "Capacidad de marcar entradas destacadas con un indicador de estrella";
$a->strings["Tag Cloud"] = "Nube de etiquetas";
$a->strings["Provide a personal tag cloud on your channel page"] = "Proveer nube de etiquetas personal en su página de canal";
@@ -313,15 +313,15 @@ $a->strings["Categories"] = "Categorías";
$a->strings["Apps"] = "Aplicaciones";
$a->strings["System"] = "Sistema";
$a->strings["Personal"] = "Personales";
-$a->strings["Create Personal App"] = "Crear App personal";
-$a->strings["Edit Personal App"] = "Editar App personal";
+$a->strings["Create Personal App"] = "Crear una aplicación personal";
+$a->strings["Edit Personal App"] = "Editar una aplicación personal";
$a->strings["Connect"] = "Conectar";
$a->strings["Ignore/Hide"] = "Ignorar/Ocultar";
$a->strings["Suggestions"] = "Sugerencias";
$a->strings["See more..."] = "Ver más...";
-$a->strings["You have %1$.0f of %2$.0f allowed connections."] = "Tienes %1$.0f de %2$.0f conexiones permitidas.";
-$a->strings["Add New Connection"] = "Añadir nueva conección";
-$a->strings["Enter the channel address"] = "Introduce la dirección del canal";
+$a->strings["You have %1$.0f of %2$.0f allowed connections."] = "Tiene %1$.0f de %2$.0f conexiones permitidas.";
+$a->strings["Add New Connection"] = "Añadir nueva conexión";
+$a->strings["Enter the channel address"] = "Introducir la dirección del canal";
$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Ejemplo: paco@ejemplo.com, http://ejemplo.com/paco";
$a->strings["Notes"] = "Notas";
$a->strings["Remove term"] = "Eliminar término";
@@ -331,26 +331,26 @@ $a->strings["Me"] = "Yo";
$a->strings["Family"] = "Familia";
$a->strings["Friends"] = "Amigos";
$a->strings["Acquaintances"] = "Conocidos/as";
-$a->strings["All"] = "Todos";
-$a->strings["Refresh"] = "Refrescar";
+$a->strings["All"] = "Todas";
+$a->strings["Refresh"] = "Recargar";
$a->strings["Account settings"] = "Configuración de la cuenta";
$a->strings["Channel settings"] = "Configuración del canal";
$a->strings["Additional features"] = "Características adicionales";
-$a->strings["Feature/Addon settings"] = "Configuración de característica/complemento";
-$a->strings["Display settings"] = "Configuración de visualización";
-$a->strings["Connected apps"] = "Apps conectadas";
+$a->strings["Feature/Addon settings"] = "Configuración de características o complementos";
+$a->strings["Display settings"] = "Ajustes de visualización";
+$a->strings["Connected apps"] = "Aplicaciones conectadas";
$a->strings["Export channel"] = "Exportar canal";
$a->strings["Connection Default Permissions"] = "Permisos predeterminados de conexión";
-$a->strings["Premium Channel Settings"] = "Configuración de canal premium";
+$a->strings["Premium Channel Settings"] = "Configuración del canal premium";
$a->strings["Settings"] = "Ajustes";
$a->strings["Messages"] = "Mensajes";
$a->strings["Check Mail"] = "Comprobar correo";
$a->strings["New Message"] = "Nuevo mensaje";
$a->strings["Chat Rooms"] = "Salas de chat";
-$a->strings["Bookmarked Chatrooms"] = "Salas de chat favoritas";
+$a->strings["Bookmarked Chatrooms"] = "Salas de chat preferidas";
$a->strings["Suggested Chatrooms"] = "Salas de chat sugeridas";
$a->strings["photo/image"] = "foto/imagen";
-$a->strings["Rate Me"] = "Califícame";
+$a->strings["Rate Me"] = "Valorar este canal";
$a->strings["View Ratings"] = "Ver valoraciones";
$a->strings["Public Hubs"] = "Servidores públicos";
$a->strings["l F d, Y \\@ g:i A"] = "l d de F, Y \\@ G:i";
@@ -359,107 +359,107 @@ $a->strings["Finishes:"] = "Finaliza:";
$a->strings["Location:"] = "Ubicación:";
$a->strings["This event has been added to your calendar."] = "Este evento ha sido añadido a su calendario.";
$a->strings["%s <!item_type!>"] = "%s <!item_type!>";
-$a->strings["[Red:Notify] New mail received at %s"] = "[Red notifica] Nuevo correo recibido en %s";
-$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s te ha enviado un nuevo mensaje privado a las %3\$s.";
-$a->strings["%1\$s sent you %2\$s."] = "%1\$s te envió %2\$s.";
+$a->strings["[Red:Notify] New mail received at %s"] = "[Red:Aviso] Nuevo correo recibido en %s";
+$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s le ha enviado un nuevo mensaje privado en %3\$s.";
+$a->strings["%1\$s sent you %2\$s."] = "%1\$s le envió %2\$s.";
$a->strings["a private message"] = "un mensaje privado";
-$a->strings["Please visit %s to view and/or reply to your private messages."] = "Por favor visita %s para ver y/o responder a tu mensaje privado";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s comentó sobre [zrl=%3\$s]a %4\$s[/zrl]";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s comentó sobre [zrl=%3\$s]%4\$s's %5\$s[/zrl]";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s comentó sobre [zrl=%3\$s]your %4\$s[/zrl]";
-$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red notifica] Comentario en la conversación #%1\$d por %2\$s";
-$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s comentó sobre un elemento/conversación que has estado siguiendo.";
-$a->strings["Please visit %s to view and/or reply to the conversation."] = "Para ver o comentar la conversación, visita %s";
-$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:aviso] %s escribió en su muro";
-$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s publicó en su muro de perfil a las %3\$s";
-$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s publicó en [zrl=%3\$s]su muro[/zrl]";
-$a->strings["[Red:Notify] %s tagged you"] = "[Red notifica] %s te etiquetó";
-$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s te etiquetó a las %3\$s";
-$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]te etiquetó[/zrl].";
-$a->strings["[Red:Notify] %1\$s poked you"] = "[Red aviso] %1\$s ha recibido un toque";
-$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s recibió un toque en %3\$s";
-$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]recibió un toque[/zrl].";
-$a->strings["[Red:Notify] %s tagged your post"] = "[Red notifica] %s etiquetó su entrada";
-$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s etiquetó su publicación a las %3\$s";
+$a->strings["Please visit %s to view and/or reply to your private messages."] = "Por favor visite %s para ver y/o responder a su mensaje privado.";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s comentó [zrl=%3\$s]a %4\$s[/zrl]";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s comentó [zrl=%3\$s]%4\$s de %5\$s[/zrl]";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s comentó [zrl=%3\$s]su %4\$s[/zrl]";
+$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Aviso] Nuevo comentario de %2\$s en la conversación #%1\$d";
+$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s comentó un elemento/conversación que ha estado siguiendo.";
+$a->strings["Please visit %s to view and/or reply to the conversation."] = "Para ver o comentar la conversación, visite %s";
+$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Aviso] %s escribió en su página de perfil";
+$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s publicó en su página de perfil en %3\$s";
+$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s publicó en [zrl=%3\$s]su página de perfil[/zrl]";
+$a->strings["[Red:Notify] %s tagged you"] = "[Red:Aviso] %s le etiquetó";
+$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s le etiquetó en %3\$s";
+$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]le etiquetó[/zrl].";
+$a->strings["[Red:Notify] %1\$s poked you"] = "[Red:Aviso] %1\$s ha recibido un toque";
+$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s le dio un toque en %3\$s";
+$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]le dio un toque[/zrl].";
+$a->strings["[Red:Notify] %s tagged your post"] = "[Red:Aviso] %s etiquetó su entrada";
+$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s etiquetó su publicación en %3\$s";
$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s etiquetó [zrl=%3\$s]su publicación[/zrl]";
-$a->strings["[Red:Notify] Introduction received"] = "[Red notifica] Introducción recibida";
-$a->strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, ha recibido una nueva solicitud de conexión de '%2\$s' a las %3\$s";
+$a->strings["[Red:Notify] Introduction received"] = "[Red:Aviso] Solicitud de conexión recibida";
+$a->strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, ha recibido una nueva solicitud de conexión de '%2\$s' en %3\$s";
$a->strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, ha recibido [zrl=%2\$s]una nueva solicitud de conexión[/zrl] de %3\$s.";
-$a->strings["You may visit their profile at %s"] = "Puedes visitar su perfil en %s";
-$a->strings["Please visit %s to approve or reject the connection request."] = "Por favor, visita %s para permitir o rechazar la solicitd de conexión.";
-$a->strings["[Red:Notify] Friend suggestion received"] = "[Red notifica] recibiste una sugerencia de amistad";
-$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, has recibido una sugerencia de un amigo de '%2\$s' a las %3\$s";
-$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, ha recibido [zrl=%2\$s]una sugerencia de amistad[/zrl] para %3\$s de %4\$s.";
+$a->strings["You may visit their profile at %s"] = "Puede visitar su perfil en %s";
+$a->strings["Please visit %s to approve or reject the connection request."] = "Por favor, visite %s para permitir o rechazar la solicitad de conexión.";
+$a->strings["[Red:Notify] Friend suggestion received"] = "[Red:Aviso] recibió una sugerencia de conexión";
+$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, ha recibido una sugerencia de conexión de '%2\$s' en %3\$s";
+$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, ha recibido [zrl=%2\$s]una sugerencia de conexión[/zrl] para %3\$s de %4\$s.";
$a->strings["Name:"] = "Nombre:";
$a->strings["Photo:"] = "Foto:";
-$a->strings["Please visit %s to approve or reject the suggestion."] = "Para aprovar o rechazar la sugerencia, visita %s";
-$a->strings["[Red:Notify]"] = "[Red:Notify]";
+$a->strings["Please visit %s to approve or reject the suggestion."] = "Por favor, visite %s para aprobar o rechazar la sugerencia.";
+$a->strings["[Red:Notify]"] = "[Red:Aviso]";
$a->strings["No recipient provided."] = "No se ha especificado ningún destinatario.";
$a->strings["[no subject]"] = "[sin asunto]";
-$a->strings["Unable to determine sender."] = "No ha sido posible de determinar el remitente. ";
-$a->strings["Stored post could not be verified."] = "No se ha podido verificar las entradas guardadas.";
-$a->strings["%1\$s likes %2\$s's %3\$s"] = "a %1\$s le gusta el/la %3\$s de %2\$s";
-$a->strings["Please choose"] = "Por favor selecciona";
+$a->strings["Unable to determine sender."] = "No ha sido posible determinar el remitente. ";
+$a->strings["Stored post could not be verified."] = "No se han podido verificar las entradas guardadas.";
+$a->strings["%1\$s likes %2\$s's %3\$s"] = "a %1\$s le gusta %3\$s de %2\$s";
+$a->strings["Please choose"] = "Por favor, elija";
$a->strings["Agree"] = "De acuerdo";
$a->strings["Disagree"] = "En desacuerdo";
-$a->strings["Abstain"] = "Se abstiene";
-$a->strings["Channel is blocked on this site."] = "El canal está bloqueado en éste sitio.";
-$a->strings["Channel location missing."] = "Falta la dirección del canal ";
-$a->strings["Response from remote channel was incomplete."] = "Respuesta del canal remoto incompleta.";
+$a->strings["Abstain"] = "Abstención";
+$a->strings["Channel is blocked on this site."] = "El canal está bloqueado en este sitio.";
+$a->strings["Channel location missing."] = "Falta la ubicación del canal.";
+$a->strings["Response from remote channel was incomplete."] = "Respuesta incompleta del canal.";
$a->strings["Channel was deleted and no longer exists."] = "El canal ha sido eliminado y ya no existe.";
$a->strings["Protocol disabled."] = "Protocolo deshabilitado.";
$a->strings["Protocol blocked for this channel."] = "Protocolo bloqueado para este canal.";
-$a->strings["Channel discovery failed."] = "Búsqueda de canales ha fallado.";
+$a->strings["Channel discovery failed."] = "El intento de acceder al canal ha fallado.";
$a->strings["local account not found."] = "No se ha encontrado la cuenta local.";
-$a->strings["Cannot connect to yourself."] = "No puedes conectarte contigo mismo.";
+$a->strings["Cannot connect to yourself."] = "No puede conectarse consigo mismo.";
$a->strings["Private Message"] = "Mensaje Privado";
$a->strings["Select"] = "Seleccionar";
$a->strings["Save to Folder"] = "Guardar en carpeta";
-$a->strings["I will attend"] = "Asistiré";
-$a->strings["I will not attend"] = "No asistiré";
-$a->strings["I might attend"] = "Quizá asista";
+$a->strings["I will attend"] = "Participaré";
+$a->strings["I will not attend"] = "No participaré";
+$a->strings["I might attend"] = "Quizá participe";
$a->strings["I agree"] = "Estoy de acuerdo";
$a->strings["I disagree"] = "No estoy de acuerdo";
$a->strings["I abstain"] = "Me abstengo";
$a->strings["View all"] = "Ver todo";
$a->strings["__ctx:noun__ Like"] = array(
- 0 => "Le gusta",
- 1 => "Le gusta",
+ 0 => "Me gusta",
+ 1 => "Me gusta",
);
$a->strings["__ctx:noun__ Dislike"] = array(
- 0 => "No le gusta",
- 1 => "No les gusta",
+ 0 => "No me gusta",
+ 1 => "No me gusta",
);
-$a->strings["Add Star"] = "Añadir estrella";
+$a->strings["Add Star"] = "Destacar añadiendo una estrella";
$a->strings["Remove Star"] = "Eliminar estrella";
-$a->strings["Toggle Star Status"] = "Invertir estado de estrella";
+$a->strings["Toggle Star Status"] = "Activar o desactivar el estado de preferido";
$a->strings["starred"] = "preferidos";
$a->strings["Message signature validated"] = "Firma de mensaje validada";
$a->strings["Message signature incorrect"] = "Firma de mensaje incorrecta";
$a->strings["Add Tag"] = "Añadir etiqueta";
-$a->strings["I like this (toggle)"] = "me gusta (conmutar)";
-$a->strings["like"] = "Me gusta";
-$a->strings["I don't like this (toggle)"] = "No me gusta (conmutar)";
-$a->strings["dislike"] = "No me gusta";
+$a->strings["I like this (toggle)"] = "me gusta (cambiar)";
+$a->strings["like"] = "me gusta";
+$a->strings["I don't like this (toggle)"] = "No me gusta esto (cambiar)";
+$a->strings["dislike"] = "no me gusta";
$a->strings["Share This"] = "Compartir esto";
-$a->strings["share"] = "Compartir";
+$a->strings["share"] = "compartir";
$a->strings["%d comment"] = array(
0 => "%d comentario",
1 => "%d comentarios",
);
-$a->strings["View %s's profile - %s"] = "Ver perfil de %s - %s";
+$a->strings["View %s's profile - %s"] = "Ver el perfil de %s - %s";
$a->strings["to"] = "a";
$a->strings["via"] = "mediante";
-$a->strings["Wall-to-Wall"] = "Muro-a-Muro";
-$a->strings["via Wall-To-Wall:"] = "mediante Muro-a-Muro";
-$a->strings["from %s"] = "de %s";
+$a->strings["Wall-to-Wall"] = "De página de perfil a página de perfil (de Muro a Muro)";
+$a->strings["via Wall-To-Wall:"] = "Mediante el procedimiento página de perfil a página de perfil (de Muro a Muro)";
+$a->strings["from %s"] = "desde %s";
$a->strings["last edited: %s"] = "último cambio: %s";
$a->strings["Expires: %s"] = "Caduca: %s";
-$a->strings["Save Bookmarks"] = "Guardar marcadores";
+$a->strings["Save Bookmarks"] = "Guardar en Marcadores";
$a->strings["Add to Calendar"] = "Añadir al calendario";
-$a->strings["Mark all seen"] = "Marcar todos como vistos";
-$a->strings["__ctx:noun__ Likes"] = "Le gusta";
-$a->strings["__ctx:noun__ Dislikes"] = "No le gusta";
+$a->strings["Mark all seen"] = "Marcar todo como visto";
+$a->strings["__ctx:noun__ Likes"] = "Me gusta";
+$a->strings["__ctx:noun__ Dislikes"] = "No me gusta";
$a->strings["Close"] = "Cerrar";
$a->strings["Please wait"] = "Espera por favor";
$a->strings["This is you"] = "Este es usted";
@@ -474,19 +474,19 @@ $a->strings["Video"] = "Vídeo";
$a->strings["Encrypt text"] = "Cifrar texto";
$a->strings["New window"] = "Nueva ventana";
$a->strings["Open the selected location in a different window or browser tab"] = "Abrir la ubicación seleccionada en una ventana o pestaña aparte";
-$a->strings["User '%s' deleted"] = "Usuario '%s' eliminado";
+$a->strings["User '%s' deleted"] = "El usuario '%s' ha sido eliminado";
$a->strings["Attachments:"] = "Ficheros adjuntos:";
$a->strings["\$Projectname event notification:"] = "Notificación de eventos de \$Projectname:";
-$a->strings["Logout"] = "Cerrar sesión";
-$a->strings["End this session"] = "Cerrar ésta sesión";
+$a->strings["Logout"] = "Finalizar sesión";
+$a->strings["End this session"] = "Finalizar esta sesión";
$a->strings["Home"] = "Inicio";
$a->strings["Your posts and conversations"] = "Sus entradas y conversaciones";
-$a->strings["View Profile"] = "Ver perfil";
+$a->strings["View Profile"] = "Ver el perfil";
$a->strings["Your profile page"] = "Su página de perfil";
$a->strings["Edit Profiles"] = "Editar perfiles";
$a->strings["Manage/Edit profiles"] = "Administrar/editar perfiles";
$a->strings["Edit Profile"] = "Editar perfil";
-$a->strings["Edit your profile"] = "Editar tu perfil";
+$a->strings["Edit your profile"] = "Editar su perfil";
$a->strings["Photos"] = "Fotos";
$a->strings["Your photos"] = "Sus fotos";
$a->strings["Your files"] = "Sus ficheros";
@@ -498,9 +498,9 @@ $a->strings["Webpages"] = "Páginas web";
$a->strings["Your webpages"] = "Sus páginas web";
$a->strings["Login"] = "Iniciar sesión";
$a->strings["Sign in"] = "Acceder";
-$a->strings["%s - click to logout"] = "%s - pulsar para cerrar sesión";
-$a->strings["Remote authentication"] = "Autenticación remota";
-$a->strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor";
+$a->strings["%s - click to logout"] = "%s - pulsar para finalizar sesión";
+$a->strings["Remote authentication"] = "Acceder desde su servidor";
+$a->strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor de inicio";
$a->strings["Home Page"] = "Página de inicio";
$a->strings["Register"] = "Registrarse";
$a->strings["Create an account"] = "Crear una cuenta";
@@ -510,12 +510,12 @@ $a->strings["Applications, utilities, links, games"] = "Aplicaciones, utilidades
$a->strings["Search site content"] = "Buscar contenido del sitio";
$a->strings["Directory"] = "Directorio";
$a->strings["Channel Directory"] = "Directorio de canales";
-$a->strings["Matrix"] = "Matríz";
+$a->strings["Matrix"] = "RedMatrix";
$a->strings["Your matrix"] = "Su red";
$a->strings["Mark all matrix notifications seen"] = "Marcar todas las notificaciones de la red como leídas";
$a->strings["Channel Home"] = "Mi canal";
$a->strings["Channel home"] = "Mi canal";
-$a->strings["Mark all channel notifications seen"] = "Marcar todas las notificaciones de canales como leídas";
+$a->strings["Mark all channel notifications seen"] = "Marcar todas las notificaciones del canal como leídas";
$a->strings["Connections"] = "Conexiones";
$a->strings["Notices"] = "Avisos";
$a->strings["Notifications"] = "Notificaciones";
@@ -531,96 +531,96 @@ $a->strings["Events"] = "Eventos";
$a->strings["Event Calendar"] = "Calendario de eventos";
$a->strings["See all events"] = "Ver todos los eventos";
$a->strings["Mark all events seen"] = "Marcar todos los eventos como leidos";
-$a->strings["Channel Manager"] = "Administración del canal";
-$a->strings["Manage Your Channels"] = "Gestione sus canales";
+$a->strings["Channel Manager"] = "Administración de canales";
+$a->strings["Manage Your Channels"] = "Gestionar sus canales";
$a->strings["Account/Channel Settings"] = "Ajustes de cuenta/canales";
$a->strings["Admin"] = "Administrador";
-$a->strings["Site Setup and Configuration"] = "Configuración del sitio";
+$a->strings["Site Setup and Configuration"] = "Ajustes y configuración del sitio";
$a->strings["Loading..."] = "Cargando...";
$a->strings["@name, #tag, content"] = "@nombre, #etiqueta, contenido";
-$a->strings["Please wait..."] = "Espera por favor…";
+$a->strings["Please wait..."] = "Espere por favor…";
$a->strings["Tags"] = "Etiquetas";
$a->strings["Keywords"] = "Palabras clave";
-$a->strings["have"] = "tienes";
+$a->strings["have"] = "tener";
$a->strings["has"] = "tiene";
-$a->strings["want"] = "quieres";
+$a->strings["want"] = "quiero";
$a->strings["wants"] = "quiere";
$a->strings["likes"] = "le gusta";
$a->strings["dislikes"] = "no le gusta";
$a->strings[" and "] = "y";
$a->strings["public profile"] = "perfil público";
$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s cambió %2\$s a &ldquo;%3\$s&rdquo;";
-$a->strings["Visit %1\$s's %2\$s"] = "Visita %2\$s de %1\$s";
+$a->strings["Visit %1\$s's %2\$s"] = "Visitar %2\$s de %1\$s";
$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s actualizó %2\$s, %3\$s cambió.";
-$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El token de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado";
-$a->strings["Can view my normal stream and posts"] = "Puede ver mi flujo y publicaciones normales";
-$a->strings["Can view my default channel profile"] = "Puede ver mi perfil de canal predeterminado.";
-$a->strings["Can view my photo albums"] = "Puede ver mis álbumes de fotos";
-$a->strings["Can view my connections"] = "Puede ver mis conexiones";
-$a->strings["Can view my file storage"] = "Puede ver mis ficheros almacenados";
-$a->strings["Can view my webpages"] = "Puede ver mis páginas web";
-$a->strings["Can send me their channel stream and posts"] = "Te pueden enviar sus canales de flujos y entradas";
-$a->strings["Can post on my channel page (\"wall\")"] = "Pueden crear entradas en su página del canal (“muro”)";
-$a->strings["Can comment on or like my posts"] = "Puede comentar en mis publicaciones o marcar como 'me gusta'.";
-$a->strings["Can send me private mail messages"] = "Puede enviarme mensajes privados";
-$a->strings["Can post photos to my photo albums"] = "Puede publicar fotos en mis galerias";
-$a->strings["Can like/dislike stuff"] = "Puede marcar contenido como me gustar/no me gusta.";
-$a->strings["Profiles and things other than posts/comments"] = "Perfiles y cosas aparte de publicaciones/comentarios";
-$a->strings["Can forward to all my channel contacts via post @mentions"] = "Puede reenviar a todos mis contactos de canalmediante post @mentions";
+$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado";
+$a->strings["Can view my normal stream and posts"] = "Pueden verse mi flujo de actividad y publicaciones normales";
+$a->strings["Can view my default channel profile"] = "Puede verse mi perfil de canal predeterminado.";
+$a->strings["Can view my photo albums"] = "Pueden verse mis álbumes de fotos";
+$a->strings["Can view my connections"] = "Pueden verse mis conexiones";
+$a->strings["Can view my file storage"] = "Pueden verse mis ficheros compartidos";
+$a->strings["Can view my webpages"] = "Pueden verse mis páginas web";
+$a->strings["Can send me their channel stream and posts"] = "Me pueden enviar sus entradas y flujo de actividad su canal";
+$a->strings["Can post on my channel page (\"wall\")"] = "Pueden crear entradas en mi página de inicio del canal (“muro”)";
+$a->strings["Can comment on or like my posts"] = "Pueden publicarse comentarios en mis publicaciones o marcar mis entradas con 'me gusta'.";
+$a->strings["Can send me private mail messages"] = "Se me pueden enviar mensajes privados";
+$a->strings["Can post photos to my photo albums"] = "Pueden publicarse fotos en mis álbumes";
+$a->strings["Can like/dislike stuff"] = "Puede marcarse contenido como me gustar/no me gusta.";
+$a->strings["Profiles and things other than posts/comments"] = "Perfiles y otras cosas aparte de publicaciones/comentarios";
+$a->strings["Can forward to all my channel contacts via post @mentions"] = "Puede enviarse una entrada a todos mis contactos del canal mediante una @mención";
$a->strings["Advanced - useful for creating group forum channels"] = "Avanzado - útil para crear canales de foro o grupos";
-$a->strings["Can chat with me (when available)"] = "Puede charlar conmigo";
-$a->strings["Can write to my file storage"] = "Puede escribir en mi almacenamiento de ficheros";
+$a->strings["Can chat with me (when available)"] = "Se puede charlar conmigo (cuando esté disponible)";
+$a->strings["Can write to my file storage"] = "Puede escribirse en mi carpeta de ficheros";
$a->strings["Can edit my webpages"] = "Puede editar mis páginas web";
-$a->strings["Can source my public posts in derived channels"] = "Puede utilizar como fuente mis publicaciones públicas en canales derivados";
+$a->strings["Can source my public posts in derived channels"] = "Pueden utilizarse mis publicaciones públicas como origen de contenidos en canales derivados";
$a->strings["Somewhat advanced - very useful in open communities"] = "Algo avanzado - muy útil en comunidades abiertas";
-$a->strings["Can administer my channel resources"] = "Puede administrar mis recursos de canal";
-$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Muy avanzado. Dejalo a no ser que sabes bien lo que estás haciendo.";
-$a->strings["Social Networking"] = "Creación de redes sociales";
+$a->strings["Can administer my channel resources"] = "Pueden administrarse mis recursos del canal";
+$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Muy avanzado. Déjelo a no ser que sepa bien lo que está haciendo.";
+$a->strings["Social Networking"] = "Redes sociales";
$a->strings["Mostly Public"] = "Público en su mayor parte";
$a->strings["Restricted"] = "Restringido";
$a->strings["Private"] = "Privado";
$a->strings["Community Forum"] = "Foro de la comunidad";
-$a->strings["Feed Republish"] = "Republicar feed";
+$a->strings["Feed Republish"] = "Republicar un \"feed\"";
$a->strings["Special Purpose"] = "Propósito especial";
-$a->strings["Celebrity/Soapbox"] = "Celebridad / Plataforma improvisada";
+$a->strings["Celebrity/Soapbox"] = "Página para fans";
$a->strings["Group Repository"] = "Repositorio de grupo";
$a->strings["Other"] = "Otro";
$a->strings["Custom/Expert Mode"] = "Modo personalizado/experto";
$a->strings["channel"] = "canal";
-$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "a %1\$s no le gusta el/la %3\$s de %2\$s";
-$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora es conectada con %2\$s";
+$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "a %1\$s no le gusta el %3\$s de %2\$s";
+$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora está conectado con %2\$s";
$a->strings["%1\$s poked %2\$s"] = "%1\$s dio un toque a %2\$s";
$a->strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s";
-$a->strings["__ctx:title__ Likes"] = "Le gusta";
-$a->strings["__ctx:title__ Dislikes"] = "No le gusta";
+$a->strings["__ctx:title__ Likes"] = "Me gusta";
+$a->strings["__ctx:title__ Dislikes"] = "No me gusta";
$a->strings["__ctx:title__ Agree"] = "De acuerdo";
$a->strings["__ctx:title__ Disagree"] = "En desacuerdo";
-$a->strings["__ctx:title__ Abstain"] = "Abstenerse";
-$a->strings["__ctx:title__ Attending"] = "Asistir";
-$a->strings["__ctx:title__ Not attending"] = "No asistir";
-$a->strings["__ctx:title__ Might attend"] = "Quizá asista";
-$a->strings["View %s's profile @ %s"] = "Ver perfil @ %s de %s";
+$a->strings["__ctx:title__ Abstain"] = "Abstención";
+$a->strings["__ctx:title__ Attending"] = "Participar";
+$a->strings["__ctx:title__ Not attending"] = "No participar";
+$a->strings["__ctx:title__ Might attend"] = "Quizá participe";
+$a->strings["View %s's profile @ %s"] = "Ver el perfil @ %s de %s";
$a->strings["Categories:"] = "Categorías:";
$a->strings["Filed under:"] = "Archivado bajo:";
-$a->strings["View in context"] = "Mostrar en contexto";
+$a->strings["View in context"] = "Mostrar en su contexto";
$a->strings["remove"] = "eliminar";
$a->strings["Delete Selected Items"] = "Eliminar elementos seleccionados";
-$a->strings["View Source"] = "Ver fuente";
+$a->strings["View Source"] = "Ver la fuente original de esta entrada";
$a->strings["Follow Thread"] = "Seguir el hilo";
$a->strings["View Status"] = "Ver estado";
$a->strings["View Photos"] = "Ver fotos";
-$a->strings["Matrix Activity"] = "Actvidad de Matrix";
+$a->strings["Matrix Activity"] = "Actividad en la red de esta conexión";
$a->strings["Edit Contact"] = "Editar contacto";
$a->strings["Send PM"] = "Enviar Mensaje Privado";
$a->strings["Poke"] = "Dar un toque";
-$a->strings["%s likes this."] = "a %s les gusta esto.";
-$a->strings["%s doesn't like this."] = "%s no les gusta esto.";
+$a->strings["%s likes this."] = "a %s le gusta esto.";
+$a->strings["%s doesn't like this."] = "a %s no le gusta esto.";
$a->strings["<span %1\$s>%2\$d people</span> like this."] = array(
- 0 => "a <span %1\$s>%2\$d persona</span> le gusta esto.",
+ 0 => "a <span %1\$s>%2\$d personas</span> le gusta esto.",
1 => "a <span %1\$s>%2\$d personas</span> les gusta esto.",
);
$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
- 0 => "a <span %1\$s>%2\$d persona</span> no le gusta esto.",
+ 0 => "a <span %1\$s>%2\$d personas</span> no les gusta esto.",
1 => "a <span %1\$s>%2\$d personas</span> no les gusta esto.",
);
$a->strings["and"] = "y";
@@ -628,23 +628,23 @@ $a->strings[", and %d other people"] = array(
0 => ", y %d persona más",
1 => ", y %d personas más",
);
-$a->strings["%s like this."] = "%s les gusta esto.";
-$a->strings["%s don't like this."] = "%s no les gusta esto.";
-$a->strings["Visible to <strong>everybody</strong>"] = "Visible para cualquiera";
-$a->strings["Please enter a link URL:"] = "Por favor, introduzca una URL de enlace:";
-$a->strings["Please enter a video link/URL:"] = "Por favor, introduzca un enlace/URL de vídeo:";
-$a->strings["Please enter an audio link/URL:"] = "Por favor, introduzca un enlace/URL de audio:";
-$a->strings["Tag term:"] = "Término de etiqueta:";
+$a->strings["%s like this."] = "a %s le gusta esto.";
+$a->strings["%s don't like this."] = "a %s no le gusta esto.";
+$a->strings["Visible to <strong>everybody</strong>"] = "Visible para <strong>cualquiera</strong>";
+$a->strings["Please enter a link URL:"] = "Por favor, introduzca la dirección del enlace:";
+$a->strings["Please enter a video link/URL:"] = "Por favor, introduzca un enlace de vídeo:";
+$a->strings["Please enter an audio link/URL:"] = "Por favor, introduzca un enlace de audio:";
+$a->strings["Tag term:"] = "Término de la etiqueta:";
$a->strings["Save to Folder:"] = "Guardar en carpeta:";
-$a->strings["Where are you right now?"] = "¿Donde estás ahora?";
+$a->strings["Where are you right now?"] = "¿Donde está ahora?";
$a->strings["Expires YYYY-MM-DD HH:MM"] = "Caduca YYYY-MM-DD HH:MM";
$a->strings["Share"] = "Compartir";
$a->strings["Page link name"] = "Nombre de enlace de página";
$a->strings["Post as"] = "Publicar como";
$a->strings["Upload photo"] = "Subir foto";
$a->strings["upload photo"] = "subir foto";
-$a->strings["Attach file"] = "Adjuntar archivo";
-$a->strings["attach file"] = "adjuntar archivo";
+$a->strings["Attach file"] = "Adjuntar fichero";
+$a->strings["attach file"] = "adjuntar fichero";
$a->strings["Insert web link"] = "Insertar enlace web";
$a->strings["web link"] = "enlace web";
$a->strings["Insert video link"] = "Insertar enlace de vídeo";
@@ -652,24 +652,24 @@ $a->strings["video link"] = "enlace de vídeo";
$a->strings["Insert audio link"] = "Insertar enlace de audio";
$a->strings["audio link"] = "enlace de audio";
$a->strings["Set your location"] = "Configure su localización";
-$a->strings["set location"] = "configura localización";
-$a->strings["Toggle voting"] = "Invertir votación";
+$a->strings["set location"] = "configure localización";
+$a->strings["Toggle voting"] = "Cambiar votación";
$a->strings["Clear browser location"] = "Eliminar localización del navegador";
$a->strings["clear location"] = "eliminar localización";
$a->strings["Title (optional)"] = "Título (opcional)";
$a->strings["Categories (optional, comma-separated list)"] = "Categorías (opcional, lista separada por comas)";
$a->strings["Permission settings"] = "Configuración de permisos";
$a->strings["permissions"] = "permisos";
-$a->strings["Public post"] = "Publicación pública";
-$a->strings["Example: bob@example.com, mary@example.com"] = "Ejemplo: bob@example.com, mary@example.com";
-$a->strings["Set expiration date"] = "Configurar fecha de expiración";
+$a->strings["Public post"] = "Entrada pública";
+$a->strings["Example: bob@example.com, mary@example.com"] = "Ejemplo: roberto@ejemplo.com, maría@ejemplo.com";
+$a->strings["Set expiration date"] = "Configurar fecha de caducidad";
$a->strings["OK"] = "OK";
$a->strings["Cancel"] = "Cancelar";
$a->strings["Discover"] = "Descubrir";
$a->strings["Imported public streams"] = "Flujos públicos importados";
$a->strings["Commented Order"] = "Comentarios recientes";
$a->strings["Sort by Comment Date"] = "Ordenar por fecha de comentario";
-$a->strings["Posted Order"] = "Recientemente publicados";
+$a->strings["Posted Order"] = "Publicaciones recientes";
$a->strings["Sort by Post Date"] = "Ordenar por fecha de publicación";
$a->strings["Posts that mention or involve you"] = "Publicaciones que le mencionan o involucran";
$a->strings["New"] = "Novedades";
@@ -680,20 +680,20 @@ $a->strings["Spam"] = "Correo basura";
$a->strings["Posts flagged as SPAM"] = "Publicaciones marcadas como basura";
$a->strings["Channel"] = "Canal";
$a->strings["Status Messages and Posts"] = "Mensajes de estado y publicaciones";
-$a->strings["About"] = "Perfil";
-$a->strings["Profile Details"] = "Detalles de perfil";
+$a->strings["About"] = "Sobre mí";
+$a->strings["Profile Details"] = "Detalles del perfil";
$a->strings["Photo Albums"] = "Álbumes de fotos";
-$a->strings["Files and Storage"] = "Ficheros y almacenamiento";
+$a->strings["Files and Storage"] = "Ficheros y carpetas";
$a->strings["Chatrooms"] = "Salas de chat";
$a->strings["Saved Bookmarks"] = "Marcadores guardados";
$a->strings["Manage Webpages"] = "Administrar páginas web";
$a->strings["__ctx:noun__ Attending"] = array(
0 => "Asistir",
- 1 => "Asistir",
+ 1 => "Participar",
);
$a->strings["__ctx:noun__ Not Attending"] = array(
0 => "No asistir",
- 1 => "No asistir",
+ 1 => "No participar",
);
$a->strings["__ctx:noun__ Undecided"] = array(
0 => "Indeciso/a",
@@ -709,17 +709,17 @@ $a->strings["__ctx:noun__ Disagree"] = array(
);
$a->strings["__ctx:noun__ Abstain"] = array(
0 => "se abstiene",
- 1 => "se abstienen",
+ 1 => "Se abstienen",
);
$a->strings["Permission denied"] = "Permiso denegado";
$a->strings["(Unknown)"] = "(Desconocido)";
-$a->strings["Visible to anybody on the internet."] = "Visible para todo el mundo en internet.";
-$a->strings["Visible to you only."] = "Visible sólo para ti.";
+$a->strings["Visible to anybody on the internet."] = "Visible para cualquiera en internet.";
+$a->strings["Visible to you only."] = "Visible sólo para usted.";
$a->strings["Visible to anybody in this network."] = "Visible para cualquiera en esta red.";
-$a->strings["Visible to anybody authenticated."] = "Visible para cualquiera autenticado.";
+$a->strings["Visible to anybody authenticated."] = "Visible para cualquiera que haya sido autenticado.";
$a->strings["Visible to anybody on %s."] = "Visible para cualquiera en %s.";
$a->strings["Visible to all connections."] = "Visible para todas las conexiones.";
-$a->strings["Visible to approved connections."] = "Visible para conexiones permitidas.";
+$a->strings["Visible to approved connections."] = "Visible para las conexiones permitidas.";
$a->strings["Visible to specific connections."] = "Visible para conexiones específicas.";
$a->strings["Item not found."] = "Elemento no encontrado.";
$a->strings["Permission denied."] = "Acceso denegado.";
@@ -728,17 +728,17 @@ $a->strings["Collection is empty."] = "La colección está vacía.";
$a->strings["Collection: %s"] = "Colección: %s";
$a->strings["Connection: %s"] = "Conexión: %s";
$a->strings["Connection not found."] = "Conexión no encontrada";
-$a->strings["Invalid data packet"] = "Paquete de datos inválido";
+$a->strings["Invalid data packet"] = "Paquete de datos no válido";
$a->strings["Unable to verify channel signature"] = "No ha sido posible de verificar la signatura del canal";
$a->strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la signatura del sitio para %s";
-$a->strings["Embedded content"] = "Contenido incrustado";
+$a->strings["Embedded content"] = "Contenido incorporado";
$a->strings["Embedding disabled"] = "Incrustación deshabilitada";
$a->strings["Logged out."] = "Desconectado.";
$a->strings["Failed authentication"] = "Autenticación fallida.";
-$a->strings["Login failed."] = "Login ha fallado.";
+$a->strings["Login failed."] = "El acceso ha fallado.";
$a->strings["%d invitation available"] = array(
0 => "%d invitación pendiente",
- 1 => "%d invitaciones pendientes",
+ 1 => "%d invitaciones disponibles",
);
$a->strings["Advanced"] = "Avanzado";
$a->strings["Find Channels"] = "Encontrar canales";
@@ -748,39 +748,39 @@ $a->strings["Examples: Robert Morgenstein, Fishing"] = "Ejemplos: José Fernánd
$a->strings["Find"] = "Encontrar";
$a->strings["Channel Suggestions"] = "Sugerencias de canales";
$a->strings["Random Profile"] = "Perfil aleatorio";
-$a->strings["Invite Friends"] = "Invitar amigos";
-$a->strings["Advanced example: name=fred and country=iceland"] = "Ejemplo avanzado: nombre=fred y pais=islandia";
+$a->strings["Invite Friends"] = "Invitar a amigos";
+$a->strings["Advanced example: name=fred and country=iceland"] = "Ejemplo avanzado: nombre=juan y país=españa";
$a->strings["%d connection in common"] = array(
0 => "%d conexión en común",
1 => "%d conexiones en común",
);
$a->strings["show more"] = "mostrar más";
-$a->strings["Visible to your default audience"] = "Visible para tu público predeterminado.";
+$a->strings["Visible to your default audience"] = "Visible para su público predeterminado.";
$a->strings["Show"] = "Mostrar";
$a->strings["Don't show"] = "No mostrar";
$a->strings["Permissions"] = "Permisos";
$a->strings["Item was not found."] = "Elemento no encontrado.";
-$a->strings["No source file."] = "Ningún archivo de fuente";
-$a->strings["Cannot locate file to replace"] = "No se puede localizar el archivo a ser sustituido.";
-$a->strings["Cannot locate file to revise/update"] = "No se puede localizar el archivo para revisar/actualizar";
-$a->strings["File exceeds size limit of %d"] = "Archivo supera el limite de tamaño de %d";
+$a->strings["No source file."] = "Ningún fichero de origen";
+$a->strings["Cannot locate file to replace"] = "No se puede localizar el fichero que va a ser sustituido.";
+$a->strings["Cannot locate file to revise/update"] = "No se puede localizar el fichero para revisar/actualizar";
+$a->strings["File exceeds size limit of %d"] = "El fichero supera el limite de tamaño de %d";
$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos.";
-$a->strings["File upload failed. Possible system limit or action terminated."] = "Error de carga, posiblemente por limite de sistema o terminación de acción";
-$a->strings["Stored file could not be verified. Upload failed."] = "El archivo almacenado no ha podido ser verificado. El envío ha fallado.";
+$a->strings["File upload failed. Possible system limit or action terminated."] = "Error de carga, posiblemente por limite de sistema o porque la acción ha finalizado.";
+$a->strings["Stored file could not be verified. Upload failed."] = "El fichero almacenado no ha podido ser verificado. El envío ha fallado.";
$a->strings["Path not available."] = "Ruta no disponible.";
$a->strings["Empty pathname"] = "Ruta vacía";
-$a->strings["duplicate filename or path"] = "Nombre de ruta o archivo duplicado";
+$a->strings["duplicate filename or path"] = "Nombre de ruta o fichero duplicados";
$a->strings["Path not found."] = "Ruta no encontrada";
$a->strings["mkdir failed."] = "mkdir ha fallado.";
-$a->strings["database storage failed."] = "almacenamiento en base de datos ha fallado.";
-$a->strings["Unable to obtain identity information from database"] = "No ha sido posible de obtener la información de identidad de la base de datos";
+$a->strings["database storage failed."] = "el almacenamiento en la base de datos ha fallado.";
+$a->strings["Unable to obtain identity information from database"] = "No ha sido posible obtener los datos de identidad desde la base de datos";
$a->strings["Empty name"] = "Nombre vacío";
$a->strings["Name too long"] = "Nombre demasiado largo";
$a->strings["No account identifier"] = "Ningún identificador de la cuenta";
$a->strings["Nickname is required."] = "Se requiere un sobrenombre (alias).";
-$a->strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elige otro.";
-$a->strings["Nickname has unsupported characters or is already being used on this site."] = "El apodo contiene caracteres no admitidos o está ya en uso por otros usuarios de éste sitio.";
-$a->strings["Unable to retrieve created identity"] = "No ha sido posible de conseguir la identidad creada";
+$a->strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elija otro.";
+$a->strings["Nickname has unsupported characters or is already being used on this site."] = "El alias contiene caracteres no admitidos o está ya en uso por otros usuarios de este sitio.";
+$a->strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada";
$a->strings["Default Profile"] = "Perfil principal";
$a->strings["Requested channel is not available."] = "El canal solicitado no está disponible.";
$a->strings["Requested profile is not available."] = "El perfil solicitado no está disponible.";
@@ -789,24 +789,24 @@ $a->strings["Profiles"] = "Perfiles";
$a->strings["Manage/edit profiles"] = "Administrar/editar perfiles";
$a->strings["Create New Profile"] = "Crear nuevo perfil";
$a->strings["Profile Image"] = "Imagen de perfil";
-$a->strings["visible to everybody"] = "visible para todos";
+$a->strings["visible to everybody"] = "visible para cualquiera";
$a->strings["Edit visibility"] = "Editar visibilidad";
-$a->strings["Gender:"] = "Sexo:";
+$a->strings["Gender:"] = "Género:";
$a->strings["Status:"] = "Estado:";
-$a->strings["Homepage:"] = "Página web:";
+$a->strings["Homepage:"] = "Página personal:";
$a->strings["Online Now"] = "Ahora en línea";
-$a->strings["g A l F d"] = "g A l F d";
-$a->strings["F d"] = "F d";
+$a->strings["g A l F d"] = "g A l d F";
+$a->strings["F d"] = "d F";
$a->strings["[today]"] = "[hoy]";
$a->strings["Birthday Reminders"] = "Recordatorios de cumpleaños";
$a->strings["Birthdays this week:"] = "Cumpleaños esta semana:";
$a->strings["[No description]"] = "[Sin descripción]";
$a->strings["Event Reminders"] = "Recordatorios de eventos";
-$a->strings["Events this week:"] = "Eventos esta semana:";
+$a->strings["Events this week:"] = "Eventos de esta semana:";
$a->strings["Profile"] = "Perfil";
$a->strings["Full Name:"] = "Nombre completo:";
$a->strings["Like this channel"] = "Me gusta este canal";
-$a->strings["j F, Y"] = "j F, Y";
+$a->strings["j F, Y"] = "j F Y";
$a->strings["j F"] = "j F";
$a->strings["Birthday:"] = "Cumpleaños:";
$a->strings["Age:"] = "Edad:";
@@ -816,7 +816,7 @@ $a->strings["Hometown:"] = "Ciudad de origen:";
$a->strings["Tags:"] = "Etiquetas:";
$a->strings["Political Views:"] = "Posición política:";
$a->strings["Religion:"] = "Religión:";
-$a->strings["About:"] = "Sobre usted:";
+$a->strings["About:"] = "Sobre mí:";
$a->strings["Hobbies/Interests:"] = "Aficciones/Intereses:";
$a->strings["Likes:"] = "Me gusta:";
$a->strings["Dislikes:"] = "No me gusta:";
@@ -825,10 +825,10 @@ $a->strings["My other channels:"] = "Mis otros canales:";
$a->strings["Musical interests:"] = "Intereses musicales:";
$a->strings["Books, literature:"] = "Libros, literatura:";
$a->strings["Television:"] = "Televisión:";
-$a->strings["Film/dance/culture/entertainment:"] = "Cine/baile/cultura/entretenimiento:";
-$a->strings["Love/Romance:"] = "Amor/romance:";
-$a->strings["Work/employment:"] = "Trabajo/empleo:";
-$a->strings["School/education:"] = "Escuela/educación:";
+$a->strings["Film/dance/culture/entertainment:"] = "Cine/danza/cultura/entretenimiento:";
+$a->strings["Love/Romance:"] = "Vida sentimental/amorosa:";
+$a->strings["Work/employment:"] = "Trabajo:";
+$a->strings["School/education:"] = "Estudios:";
$a->strings["Like this thing"] = "Me gusta esto";
$a->strings["Male"] = "Hombre";
$a->strings["Female"] = "Mujer";
@@ -841,8 +841,8 @@ $a->strings["Intersex"] = "Intersexual";
$a->strings["Transsexual"] = "Transexual";
$a->strings["Hermaphrodite"] = "Hermafrodita";
$a->strings["Neuter"] = "Neutral";
-$a->strings["Non-specific"] = "No-especificada";
-$a->strings["Undecided"] = "Indecidido";
+$a->strings["Non-specific"] = "No especificado";
+$a->strings["Undecided"] = "Indeciso";
$a->strings["Males"] = "Hombres";
$a->strings["Females"] = "Mujeres";
$a->strings["Gay"] = "Gay";
@@ -850,37 +850,37 @@ $a->strings["Lesbian"] = "Lesbiana";
$a->strings["No Preference"] = "Sin preferencias";
$a->strings["Bisexual"] = "Bisexual";
$a->strings["Autosexual"] = "Autosexual";
-$a->strings["Abstinent"] = "Abstinente";
+$a->strings["Abstinent"] = "Casto";
$a->strings["Virgin"] = "Virgen";
$a->strings["Deviant"] = "Fuera de lo común";
-$a->strings["Fetish"] = "Fetiche";
-$a->strings["Oodles"] = "Montones";
-$a->strings["Nonsexual"] = "No sexual";
+$a->strings["Fetish"] = "Fetichista";
+$a->strings["Oodles"] = "Orgías";
+$a->strings["Nonsexual"] = "Asexual";
$a->strings["Single"] = "Soltero/a";
$a->strings["Lonely"] = "Solo/a";
$a->strings["Available"] = "Disponible";
$a->strings["Unavailable"] = "No disponible";
$a->strings["Has crush"] = "Enamorado/a";
-$a->strings["Infatuated"] = "Infatuado";
-$a->strings["Dating"] = "Citando";
+$a->strings["Infatuated"] = "Apasionado";
+$a->strings["Dating"] = "Saliendo con alguien";
$a->strings["Unfaithful"] = "Infiel";
$a->strings["Sex Addict"] = "Con adicción al sexo";
$a->strings["Friends/Benefits"] = "Amistad beneficiosa";
$a->strings["Casual"] = "Casual";
$a->strings["Engaged"] = "Prometido/a";
$a->strings["Married"] = "Casado/a";
-$a->strings["Imaginarily married"] = "Casado/a imaginario/a";
+$a->strings["Imaginarily married"] = "Casado/a en sueños";
$a->strings["Partners"] = "Pareja";
$a->strings["Cohabiting"] = "Cohabitando";
-$a->strings["Common law"] = "Derecho común";
+$a->strings["Common law"] = "Matrimonio tradicional";
$a->strings["Happy"] = "Felíz";
$a->strings["Not looking"] = "No estoy buscando";
-$a->strings["Swinger"] = "Swinger";
+$a->strings["Swinger"] = "Infiel";
$a->strings["Betrayed"] = "Engañado/a";
$a->strings["Separated"] = "Separado/a";
$a->strings["Unstable"] = "Inestable";
$a->strings["Divorced"] = "Divorciado/a";
-$a->strings["Imaginarily divorced"] = "Divorciado/a imaginario/a";
+$a->strings["Imaginarily divorced"] = "Divorciado/a en sueños";
$a->strings["Widowed"] = "Viudo/a";
$a->strings["Uncertain"] = "Indeterminado";
$a->strings["It's complicated"] = "Es complicado";
@@ -901,38 +901,38 @@ $a->strings["Update"] = "Actualizar";
$a->strings["Install"] = "Instalar";
$a->strings["Purchase"] = "Comprar";
$a->strings["Image/photo"] = "Imagen/foto";
-$a->strings["Encrypted content"] = "Contenido encriptado";
-$a->strings["Install %s element: "] = "Instalar %s elemento:";
-$a->strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Esta entrada contiene un elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio.";
+$a->strings["Encrypted content"] = "Contenido cifrado";
+$a->strings["Install %s element: "] = "Instalar el elemento %s:";
+$a->strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio.";
$a->strings["webpage"] = "página web";
$a->strings["layout"] = "disposición";
-$a->strings["block"] = "bloquear";
+$a->strings["block"] = "bloque";
$a->strings["menu"] = "menú";
$a->strings["QR code"] = "Código QR";
-$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s escribió lo siguiente %2\$s %3\$s";
+$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s escribió la siguiente %2\$s %3\$s";
$a->strings["post"] = "entrada";
$a->strings["Different viewers will see this text differently"] = "Visitantes diferentes verán este texto de forma diferente";
-$a->strings["$1 spoiler"] = "alerón $1";
+$a->strings["$1 spoiler"] = "$1 spoiler";
$a->strings["$1 wrote:"] = "$1 escribió";
$a->strings["Missing room name"] = "Nombre de sala desaparecido.";
$a->strings["Duplicate room name"] = "Nombre de sala duplicado.";
-$a->strings["Invalid room specifier."] = "Especificador de sala inválido.";
+$a->strings["Invalid room specifier."] = "Especificador de sala no válido.";
$a->strings["Room not found."] = "Sala no encontrada.";
$a->strings["Room is full"] = "La sala está llena.";
$a->strings["Image exceeds website size limit of %lu bytes"] = "La imagen es demasiado grande (%lu demás)";
-$a->strings["Image file is empty."] = "El fichero de imagen ésta vacío. ";
-$a->strings["Unable to process image"] = "No ha sido posible de procesar la imagen";
+$a->strings["Image file is empty."] = "El fichero de imagen está vacío. ";
+$a->strings["Unable to process image"] = "No ha sido posible procesar la imagen";
$a->strings["Photo storage failed."] = "La foto no ha podido ser guardada.";
$a->strings["Upload New Photos"] = "Subir nuevas fotos";
-$a->strings["Some blurb about what to do when you're new here"] = "Algunas palabras sobre qué hacer cuando eres nuevo aquí";
-$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Has creado %1$.0f de %2$.0f canales permitidos.";
+$a->strings["Some blurb about what to do when you're new here"] = "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí";
+$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Ha creado %1$.0f de %2$.0f canales permitidos.";
$a->strings["Create a new channel"] = "Crear un nuevo canal";
$a->strings["Current Channel"] = "Canal actual";
$a->strings["Switch to one of your channels by selecting it."] = "Cambiar a uno de sus canales seleccionándolo.";
-$a->strings["Default Channel"] = "Canal predeterminado";
+$a->strings["Default Channel"] = "Canal principal";
$a->strings["Make Default"] = "Convertir en predeterminado";
-$a->strings["%d new messages"] = "%d nuevos mensajes";
-$a->strings["%d new introductions"] = "%d nuevas introducciones";
+$a->strings["%d new messages"] = "%d mensajes nuevos";
+$a->strings["%d new introductions"] = "%d nuevas isolicitudes de conexión";
$a->strings["Delegated Channels"] = "Canales delegados";
$a->strings["Public access denied."] = "Acceso público denegado.";
$a->strings["%d rating"] = array(
@@ -941,7 +941,7 @@ $a->strings["%d rating"] = array(
);
$a->strings["Gender: "] = "Género:";
$a->strings["Status: "] = "Estado:";
-$a->strings["Homepage: "] = "Página de inicio:";
+$a->strings["Homepage: "] = "Página personal:";
$a->strings["Description:"] = "Descripción:";
$a->strings["Public Forum:"] = "Foro público:";
$a->strings["Keywords: "] = "Palabras clave:";
@@ -955,27 +955,27 @@ $a->strings["previous page"] = "página anterior";
$a->strings["Sort options"] = "Ordenar opciones";
$a->strings["Alphabetic"] = "Alfabético";
$a->strings["Reverse Alphabetic"] = "Alfabético inverso";
-$a->strings["Newest to Oldest"] = "Más nuevo a más antiguo";
-$a->strings["Oldest to Newest"] = "Más antiguo a más nuevo";
+$a->strings["Newest to Oldest"] = "De más nuevo a más antiguo";
+$a->strings["Oldest to Newest"] = "De más antiguo a más nuevo";
$a->strings["No entries (some entries may be hidden)."] = "Sin entradas (algunas entradas pueden estar ocultas).";
-$a->strings["Xchan Lookup"] = "Búsqueda Xchan";
-$a->strings["Lookup xchan beginning with (or webbie): "] = "Buscar xchan que comience por (o webbie):";
+$a->strings["Xchan Lookup"] = "Búsqueda de canales";
+$a->strings["Lookup xchan beginning with (or webbie): "] = "Buscar un canal (o un \"webbie\") que comience por:";
$a->strings["Not found."] = "No encontrado.";
-$a->strings["Authorize application connection"] = "Autorizar conexión de aplicación";
-$a->strings["Return to your app and insert this Securty Code:"] = "Volver a su \"app\" e introducir este código de seguridad:";
+$a->strings["Authorize application connection"] = "Autorizar una conexión de aplicación";
+$a->strings["Return to your app and insert this Securty Code:"] = "Volver a su aplicación e introducir este código de seguridad:";
$a->strings["Please login to continue."] = "Por favor inicia sesión para continuar.";
$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?";
$a->strings["Page Title"] = "Título de página";
$a->strings["Channel added."] = "Canal añadido.";
$a->strings["Tag removed"] = "Etiqueta eliminada.";
-$a->strings["Remove Item Tag"] = "Eliminar etiqueta de elemento.";
-$a->strings["Select a tag to remove: "] = "Selecciona una etiqueta a eliminar:";
+$a->strings["Remove Item Tag"] = "Eliminar etiqueta del elemento.";
+$a->strings["Select a tag to remove: "] = "Seleccionar una etiqueta para eliminar:";
$a->strings["Remove"] = "Eliminar";
$a->strings["Continue"] = "Continuar";
-$a->strings["Premium Channel Setup"] = "Configuración de canal premium";
-$a->strings["Enable premium channel connection restrictions"] = "Habilitar restricciones de conexión de canal premium";
+$a->strings["Premium Channel Setup"] = "Configuración del canal premium";
+$a->strings["Enable premium channel connection restrictions"] = "Habilitar restricciones de conexión del canal premium";
$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Por favor introduzca sus restricciones o condiciones, como recibo paypal, normas de uso, etc.";
-$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Este canal puede requerir antes de conectar pasos adicionales o conocimiento de las siguientes condiciones:";
+$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Este canal puede requerir antes de conectar unos pasos adicionales o el conocimiento de las siguientes condiciones:";
$a->strings["Potential connections will then see the following text before proceeding:"] = "Las posibles conexiones verán por tanto el siguiente texto antes de proceder:";
$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Al continuar, certifico que he cumplido con todas las intrucciones proporcionadas en esta página.";
$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(No ha sido proporcionada ninguna instrucción específica por el propietario del canal.)";
@@ -990,30 +990,30 @@ $a->strings["Edit Thing"] = "Editar elemento";
$a->strings["Select a profile"] = "Seleccionar un perfil";
$a->strings["Post an activity"] = "Publicar una actividad";
$a->strings["Only sends to viewers of the applicable profile"] = "Sólo envíos a espectadores del perfil pertinente.";
-$a->strings["Name of thing e.g. something"] = "Nombre del elemento e.g. algo";
-$a->strings["URL of thing (optional)"] = "URL del elemento (opcional)";
-$a->strings["URL for photo of thing (optional)"] = "URL para foto o elemento (opcional)";
+$a->strings["Name of thing e.g. something"] = "Nombre del elemento p. ej.:. \"algo\"";
+$a->strings["URL of thing (optional)"] = "Dirección del elemento (opcional)";
+$a->strings["URL for photo of thing (optional)"] = "Dirección para la foto o elemento (opcional)";
$a->strings["Add Thing to your Profile"] = "Añadir elemento a su perfil";
$a->strings["Item not available."] = "Elemento no disponible";
-$a->strings["Fetching URL returns error: %1\$s"] = "Obtener URL retorna error: %1\$s";
-$a->strings["Image uploaded but image cropping failed."] = "Imagen actualizada pero recorte de imagen ha fallado. ";
-$a->strings["Image resize failed."] = "Ajustar tamaño de imagen ha fallado.";
-$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Recargue la página o limpie caché del navegador si la nueva foto no se muestra inmediatamente.";
-$a->strings["Image exceeds size limit of %d"] = "La imagen supera el límite de %d";
+$a->strings["Fetching URL returns error: %1\$s"] = "Al intentar obtener la dirección, retorna el error: %1\$s";
+$a->strings["Image uploaded but image cropping failed."] = "Imagen actualizada, pero el recorte de la imagen ha fallado. ";
+$a->strings["Image resize failed."] = "El ajuste del tamaño de la imagen ha fallado.";
+$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente.";
+$a->strings["Image exceeds size limit of %d"] = "La imagen supera el tamaño límite de %d";
$a->strings["Unable to process image."] = "No ha sido posible procesar la imagen.";
$a->strings["Photo not available."] = "Foto no disponible.";
-$a->strings["Upload File:"] = "Subir archivo:";
+$a->strings["Upload File:"] = "Subir fichero:";
$a->strings["Select a profile:"] = "Seleccionar un perfil:";
$a->strings["Upload Profile Photo"] = "Subir foto de perfil";
$a->strings["or"] = "o";
$a->strings["skip this step"] = "Omitir este paso";
-$a->strings["select a photo from your photo albums"] = "Seleccione una foto de sus álbums de fotos";
+$a->strings["select a photo from your photo albums"] = "Seleccione una foto de sus álbumes de fotos";
$a->strings["Crop Image"] = "Recortar imagen";
-$a->strings["Please adjust the image cropping for optimum viewing."] = "Por favor ajuta el recorte de la imagen para una visión óptima.";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Por favor ajuste el recorte de la imagen para una visión óptima.";
$a->strings["Done Editing"] = "Edición completada";
$a->strings["Image uploaded successfully."] = "Imagen subida correctamente.";
$a->strings["Image upload failed."] = "Subida de imagen fallida.";
-$a->strings["Image size reduction [%s] failed."] = "Reducción de la imagen [%s] fallida.";
+$a->strings["Image size reduction [%s] failed."] = "La reducción de la imagen [%s] ha fallado.";
$a->strings["Invalid item."] = "Elemento no válido.";
$a->strings["Channel not found."] = "Canal no encontrado.";
$a->strings["Page not found."] = "Página no encontrada.";
@@ -1024,12 +1024,12 @@ $a->strings["Invalid request."] = "Solicitud incorrecta.";
$a->strings["thing"] = "elemento";
$a->strings["Channel unavailable."] = "Canal no disponible.";
$a->strings["Previous action reversed."] = "Acción anterior revocada.";
-$a->strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s está de acuerdo con %2\$s de %3\$s";
-$a->strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s no están de acuerdo con %2\$s de %3\$s";
-$a->strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s se abstiene de pronunciarse sobre %2\$s de %3\$s";
-$a->strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s asistirá a %2\$s de %3\$s";
-$a->strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s no asistirá a %2\$s de %3\$s";
-$a->strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s podrá asistir a %2\$s de %3\$s";
+$a->strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s está de acuerdo con %3\$s de %2\$s";
+$a->strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s no está de acuerdo con %3\$s de %2\$s";
+$a->strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s se abstiene en %3\$s de %2\$s";
+$a->strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s participará en el %3\$s de %2\$s";
+$a->strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s no participará en el %3\$s de %2\$s";
+$a->strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s tal vez participe en el %3\$s de %2\$s";
$a->strings["Action completed."] = "Acción completada.";
$a->strings["Thank you."] = "Gracias.";
$a->strings["Calendar entries imported."] = "Entradas de calendario importadas.";
@@ -1048,27 +1048,27 @@ $a->strings["Next"] = "Siguiente";
$a->strings["Export"] = "Exportar";
$a->strings["Import"] = "Importar";
$a->strings["Event removed"] = "Evento borrado";
-$a->strings["Failed to remove event"] = "Error al borrar evento";
+$a->strings["Failed to remove event"] = "Error al borrar el evento";
$a->strings["Event details"] = "Detalles del evento";
-$a->strings["Starting date and Title are required."] = "Se requieren fecha y Título.";
+$a->strings["Starting date and Title are required."] = "Se requieren fecha y título.";
$a->strings["Categories (comma-separated list)"] = "Categorías (lista separada por comas)";
-$a->strings["Event Starts:"] = "Inicios de acontecimientos:";
+$a->strings["Event Starts:"] = "Inicios de eventos:";
$a->strings["Finish date/time is not known or not relevant"] = "La fecha / hora de finalización no se conocen o no son relevantes";
$a->strings["Event Finishes:"] = "Eventos Terminados:";
$a->strings["Adjust for viewer timezone"] = "Ajustar para obtener el visor de zona horaria";
-$a->strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Importante para los eventos que suceden en un lugar determinado. No práctico para las vacaciones globales.";
+$a->strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales.";
$a->strings["Title:"] = "Título:";
$a->strings["Share this event"] = "Compartir este evento";
$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está siguiendo %2\$s de %3\$s";
$a->strings["Public Sites"] = "Sitios públicos";
$a->strings["The listed sites allow public registration for the \$Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Los sitios listados permiten el registro público de la red \$Projectname. Todos los sitios de la red están vinculados entre sí por lo que sus miembros, en ninguna de ellas, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los enlaces de los proveedores de <strong> pueden </strong> proporcionar detalles adicionales.";
$a->strings["Rate this hub"] = "Valorar este sitio";
-$a->strings["Site URL"] = "URL del sitio";
+$a->strings["Site URL"] = "Dirección del sitio";
$a->strings["Access Type"] = "Tipo de Acceso";
$a->strings["Registration Policy"] = "Normas de Registro";
$a->strings["Location"] = "Localización";
$a->strings["View hub ratings"] = "Ver las valoraciones del sitio";
-$a->strings["Rate"] = "Valoración";
+$a->strings["Rate"] = "Valorar";
$a->strings["View ratings"] = "Ver valoraciones";
$a->strings["Edit post"] = "Editar entrada";
$a->strings["\$Projectname channel"] = "canal \$Projectname";
@@ -1076,22 +1076,22 @@ $a->strings["Collection created."] = "Colección creada.";
$a->strings["Could not create collection."] = "No se puede crear colección.";
$a->strings["Collection updated."] = "Colección actualizada.";
$a->strings["Create a collection of channels."] = "Crear una colección de canales.";
-$a->strings["Collection Name: "] = "Nombre de la Colección:";
+$a->strings["Collection Name: "] = "Nombre de la colección:";
$a->strings["Members are visible to other channels"] = "Los miembros son visibles para otros canales";
$a->strings["Collection removed."] = "Colección eliminada.";
$a->strings["Unable to remove collection."] = "No ha sido posible de eliminar la colección.";
-$a->strings["Collection Editor"] = "Editor de Colecciones";
+$a->strings["Collection Editor"] = "Editor de colecciones";
$a->strings["Members"] = "Miembros";
$a->strings["All Connected Channels"] = "Todos los canales conectados";
-$a->strings["Click on a channel to add or remove."] = "Haga clic en un canal para agregar o quitar.";
+$a->strings["Click on a channel to add or remove."] = "Haga clic en un canal para agregarlo o quitarlo.";
$a->strings["Version %s"] = "Versión %s";
-$a->strings["Installed plugins/addons/apps:"] = "Plugins/addons/apps instalados:";
-$a->strings["No installed plugins/addons/apps"] = "Plugins/addons/apps no instalados:";
+$a->strings["Installed plugins/addons/apps:"] = "Extensiones/Aplicaciones instaladas:";
+$a->strings["No installed plugins/addons/apps"] = "Extensiones/Aplicaciones no instaladas:";
$a->strings["\$Projectname"] = "\$Projectname";
$a->strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Este es un sitio integrado en \$Projectname - una red cooperativa mundial de sitios web descentralizados de privacidad mejorada.";
$a->strings["Tag: "] = "Etiqueta:";
-$a->strings["Last background fetch: "] = "Último fondo elegido:";
-$a->strings["Running at web location"] = "Corriendo en un sitio web";
+$a->strings["Last background fetch: "] = "Última actualización en segundo plano:";
+$a->strings["Running at web location"] = "Corriendo en el sitio web";
$a->strings["Please visit <a href=\"https://redmatrix.me\">redmatrix.me</a> to learn more about \$Projectname."] = "Por favor, visite <a href=\"https://redmatrix.me\">redmatrix.me </a> para aprender más sobre \$Projectname.";
$a->strings["Bug reports and issues: please visit"] = "Informes de errores e incidencias: por, favor visite";
$a->strings["\$projectname issues"] = "Problemas en \$projectname";
@@ -1119,16 +1119,16 @@ $a->strings["Could not access contact record."] = "No se ha podido acceder al re
$a->strings["Could not locate selected profile."] = "No se ha podido localizar el perfil seleccionado.";
$a->strings["Connection updated."] = "Conexión actualizada.";
$a->strings["Failed to update connection record."] = "Error al actualizar el registro de la conexión.";
-$a->strings["Blocked"] = "Bloqueados";
-$a->strings["Ignored"] = "Ignorados";
-$a->strings["Hidden"] = "Ocultos";
-$a->strings["Archived"] = "Archivados";
+$a->strings["Blocked"] = "Bloqueadas";
+$a->strings["Ignored"] = "Ignoradas";
+$a->strings["Hidden"] = "Ocultas";
+$a->strings["Archived"] = "Archivadas";
$a->strings["Suggest new connections"] = "Sugerir nuevas conexiones";
$a->strings["New Connections"] = "Nuevas conexiones";
$a->strings["Show pending (new) connections"] = "Mostrar conexiones (nuevas) pendientes";
$a->strings["All Connections"] = "Todas las conexiones";
$a->strings["Show all connections"] = "Mostrar todas las conexiones";
-$a->strings["Unblocked"] = "Desbloqueados";
+$a->strings["Unblocked"] = "Desbloqueadas";
$a->strings["Only show unblocked connections"] = "Mostrar solo las conexiones desbloqueadas";
$a->strings["Only show blocked connections"] = "Mostrar solo las conexiones bloqueadas";
$a->strings["Only show ignored connections"] = "Mostrar solo conexiones ignoradas";
@@ -1137,12 +1137,12 @@ $a->strings["Only show hidden connections"] = "Mostrar solo las conexiones ocult
$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
$a->strings["Edit connection"] = "Editar conexión";
$a->strings["Search your connections"] = "Buscar sus conexiones";
-$a->strings["Finding: "] = "Encontrado:";
+$a->strings["Finding: "] = "Búsqueda:";
$a->strings["Block Name"] = "Nombre del bloque";
$a->strings["Block Title"] = "Título del bloque";
$a->strings["Item not found"] = "Elemento no encontrado";
$a->strings["Item is not editable"] = "El elemento no es editable";
-$a->strings["Delete item?"] = "¿Borrar este elemento?";
+$a->strings["Delete item?"] = "¿Borrar el elemento?";
$a->strings["Insert YouTube video"] = "Insertar vídeo de YouTube";
$a->strings["Insert Vorbis [.ogg] video"] = "Insertar vídeo Vorbis [.ogg]";
$a->strings["Insert Vorbis [.ogg] audio"] = "Insertar audio Vorbis [.ogg]";
@@ -1157,7 +1157,7 @@ $a->strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB de %2$.2f
$a->strings["%1$.2f MB photo storage used."] = "%1$.2f MB de almacenamiento de fotos utilizado.";
$a->strings["Upload Photos"] = "Subir fotos";
$a->strings["Enter a new album name"] = "Introducir un nuevo nombre de álbum";
-$a->strings["or select an existing one (doubleclick)"] = "o seleccionar uno (Double click) existente";
+$a->strings["or select an existing one (doubleclick)"] = "o seleccionar uno (doble click) existente";
$a->strings["Create a status post for this upload"] = "Crear una entrada de estado para esta subida";
$a->strings["Album name could not be decoded"] = "El nombre del álbum no ha podido ser descifrado";
$a->strings["Contact Photos"] = "Fotos de contacto";
@@ -1175,8 +1175,8 @@ $a->strings["Rotate CW (right)"] = "Girar CW (a la derecha)";
$a->strings["Rotate CCW (left)"] = "Girar CCW (a la izquierda)";
$a->strings["Caption"] = "Título";
$a->strings["Add a Tag"] = "Añadir una etiqueta";
-$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Ejemplo: @bob, @Barbara_Jensen, @jim@example.com";
-$a->strings["Flag as adult in album view"] = "Marcar como \"adultos\" en el álbum";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Ejemplo: @bob, @Barbara_Gómez, @juan@ejemplo.com";
+$a->strings["Flag as adult in album view"] = "Marcar como \"solo para adultos\" en el álbum";
$a->strings["In This Photo:"] = "En esta foto:";
$a->strings["Map"] = "Mapa";
$a->strings["View Album"] = "Ver álbum";
@@ -1191,19 +1191,19 @@ $a->strings["Away"] = "Ausente";
$a->strings["Online"] = "Conectado";
$a->strings["Select a bookmark folder"] = "Seleccionar una carpeta de marcadores";
$a->strings["Save Bookmark"] = "Guardar marcador";
-$a->strings["URL of bookmark"] = "URL del marcador";
+$a->strings["URL of bookmark"] = "Dirección del marcador";
$a->strings["Description"] = "Descripción";
$a->strings["Or enter new bookmark folder name"] = "O introduzca un nuevo nombre para la carpeta de marcadores";
-$a->strings["No more system notifications."] = "No hay más notificaciones de sistema";
+$a->strings["No more system notifications."] = "No hay más notificaciones del sistema";
$a->strings["System Notifications"] = "Notificaciones de sistema";
$a->strings["network"] = "red";
$a->strings["RSS"] = "RSS";
-$a->strings["Layout updated."] = "Diseño actualizado";
+$a->strings["Layout updated."] = "Formato actualizado";
$a->strings["Edit System Page Description"] = "Editor del Sistema de Descripción de Páginas";
-$a->strings["Layout not found."] = "Diseño no encontrado";
+$a->strings["Layout not found."] = "Formato no encontrado";
$a->strings["Module Name:"] = "Nombre del módulo:";
$a->strings["Layout Help"] = "Ayuda para el diseño de la página";
-$a->strings["- select -"] = "-seleccionar-";
+$a->strings["- select -"] = "- seleccionar -";
$a->strings["Your service plan only allows %d channels."] = "Su paquete de servicios solo permite %d canales.";
$a->strings["Nothing to import."] = "No hay nada para importar.";
$a->strings["Unable to download data from old server"] = "No se han podido descargar datos de su antiguo servidor";
@@ -1217,19 +1217,19 @@ $a->strings["You must be logged in to use this feature."] = "Debe estar registra
$a->strings["Import Channel"] = "Importar canal";
$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación.";
$a->strings["File to Upload"] = "Fichero para subir";
-$a->strings["Or provide the old server/hub details"] = "O proporcionando los detalles de su antiguo servidor/hub";
+$a->strings["Or provide the old server/hub details"] = "O proporcione los detalles de su antiguo servidor/hub";
$a->strings["Your old identity address (xyz@example.com)"] = "Su identidad en el antiguo servidor (canal@ejemplo.com)";
$a->strings["Your old login email address"] = "Su antigua dirección de correo electrónico";
$a->strings["Your old login password"] = "Su antigua contraseña";
$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua ubicación debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos.";
$a->strings["Make this hub my primary location"] = "Convertir este servidor en mi ubicación primaria";
-$a->strings["Import existing posts if possible (experimental - limited by available memory"] = "Importa el contenido publicado si es posible (experimental - limitado por la memoria disponible";
+$a->strings["Import existing posts if possible (experimental - limited by available memory"] = "Importar el contenido publicado si es posible (experimental - limitado por la memoria disponible";
$a->strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine.";
$a->strings["Delete layout?"] = "¿Borrar formato?";
-$a->strings["Layout Description (Optional)"] = "Descripción del diseño (opcional)";
-$a->strings["Layout Name"] = "Nombre del diseño";
-$a->strings["Edit Layout"] = "Editar diseño";
-$a->strings["You must be logged in to see this page."] = "Debe estar registrado para poder ver esta página.";
+$a->strings["Layout Description (Optional)"] = "Descripción del formato gráfico (opcional)";
+$a->strings["Layout Name"] = "Nombre del formato";
+$a->strings["Edit Layout"] = "Modificar formato";
+$a->strings["You must be logged in to see this page."] = "Debe haber iniciado sesión para poder ver esta página.";
$a->strings["Room not found"] = "Sala no encontrada";
$a->strings["Leave Room"] = "Abandonar sala";
$a->strings["Delete This Room"] = "Eliminar esta sala";
@@ -1244,7 +1244,7 @@ $a->strings["Unable to create element."] = "Imposible crear el elemento.";
$a->strings["Unable to update menu element."] = "No es posible actualizar el elemento del menú.";
$a->strings["Unable to add menu element."] = "No es posible añadir el elemento al menú";
$a->strings["Menu Item Permissions"] = "Permisos del elemento del menú";
-$a->strings["(click to open/close)"] = "(pulsa para abrir/cerrar)";
+$a->strings["(click to open/close)"] = "(pulse para abrir/cerrar)";
$a->strings["Link Name"] = "Nombre del enlace";
$a->strings["Link or Submenu Target"] = "Destino del enlace o submenú";
$a->strings["Enter URL of the link or select a menu name to create a submenu"] = "Introduzca la dirección del enlace o seleccione el nombre de un submenú";
@@ -1266,7 +1266,7 @@ $a->strings["Delete this menu item"] = "Eliminar este elemento del menú";
$a->strings["Edit this menu item"] = "Modificar este elemento del menú";
$a->strings["Menu item not found."] = "Este elemento del menú no se ha encontrado";
$a->strings["Menu item deleted."] = "Este elemento del menú ha sido borrado";
-$a->strings["Menu item could not be deleted."] = "Este elemento del menú no puede ser borrada.";
+$a->strings["Menu item could not be deleted."] = "Este elemento del menú no puede ser borrado.";
$a->strings["Edit Menu Element"] = "Editar elemento del menú";
$a->strings["Link text"] = "Texto del enlace";
$a->strings["Delete webpage?"] = "¿Eliminar página web?";
@@ -1278,15 +1278,15 @@ $a->strings["Password reset request issued. Check your email."] = "Se ha recibid
$a->strings["Site Member (%s)"] = "Usuario del sitio (%s)";
$a->strings["Password reset requested at %s"] = "Se ha solicitado restablecer la contraseña en %s";
$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado.";
-$a->strings["Password Reset"] = "Contraseña restablecida";
+$a->strings["Password Reset"] = "Restablecer la contraseña";
$a->strings["Your password has been reset as requested."] = "Su contraseña ha sido restablecida según lo solicitó.";
$a->strings["Your new password is"] = "Su nueva contraseña es";
$a->strings["Save or copy your new password - and then"] = "Guarde o copie su nueva contraseña - y después";
$a->strings["click here to login"] = "Pulse aquí para conectarse";
-$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puede cambiar la contraseña en la página <em>Configuraciones</em> una vez iniciada la sesión.";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión.";
$a->strings["Your password has changed at %s"] = "Su contraseña en %s ha sido cambiada";
$a->strings["Forgot your Password?"] = "¿Ha olvidado su contraseña?";
-$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Introduzca y envíe su dirección de correo electrónico para que el restablecimiento de csu ontraseña. Luego revise su correo para obtener más instrucciones.";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones.";
$a->strings["Email Address"] = "Dirección de correo electrónico";
$a->strings["Reset"] = "Reiniciar";
$a->strings["Website:"] = "Sitio web:";
@@ -1321,13 +1321,13 @@ $a->strings["Manage Channel Locations"] = "Gestionar localizaciones del canal";
$a->strings["Location (address)"] = "Localización (dirección)";
$a->strings["Primary Location"] = "Localización primaria";
$a->strings["Drop location"] = "Eliminar localización";
-$a->strings["Failed to create source. No channel selected."] = "Imposible crear la fuente. Ningún canal ha sido seleccionado.";
+$a->strings["Failed to create source. No channel selected."] = "Imposible crear el origen de los clontenidos. Ningún canal ha sido seleccionado.";
$a->strings["Source created."] = "Fuente creada.";
$a->strings["Source updated."] = "Fuente actualizada.";
$a->strings["*"] = "*";
$a->strings["Manage remote sources of content for your channel."] = "Gestionar contenido de origen remoto para su canal.";
$a->strings["New Source"] = "Nueva fuente";
-$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importar todo el contenido o una selección de los siguientes canales en este canal, y distribuirlo de acuerdo con los ajustes de su canal.";
+$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importar todo el contenido o una selección de los siguientes canales en este canal, y distribuirlo de acuerdo con sus ajustes.";
$a->strings["Only import content with these words (one per line)"] = "Importar solo contenido que contenga estas palabras (una por línea)";
$a->strings["Leave blank to import all public content"] = "Dejar en blanco para importar todo el contenido público";
$a->strings["Channel Name"] = "Nombre del canal";
@@ -1368,7 +1368,7 @@ $a->strings["Copy/paste this code to attach file to a post"] = "Copiar/pegar est
$a->strings["Copy/paste this URL to link file from a web page"] = "Copiar/pegar esta dirección para enlazar el fichero desde una página web";
$a->strings["Share this file"] = "Compartir este fichero";
$a->strings["Show URL to this file"] = "Mostrar la dirección de este fichero";
-$a->strings["Notify your contacts about this file"] = "Avisar a sus contactos de este fichero";
+$a->strings["Notify your contacts about this file"] = "Avisar a sus contactos sobre este fichero";
$a->strings["Contact not found."] = "Contacto no encontrado";
$a->strings["Friend suggestion sent."] = "Enviar sugerencia a un amigo.";
$a->strings["Suggest Friends"] = "Sugerir amigos";
@@ -1380,7 +1380,7 @@ $a->strings["Recipient"] = "Destinatario";
$a->strings["Choose what you wish to do to recipient"] = "Elegir qué desea enviar al destinatario";
$a->strings["Make this post private"] = "Convertir en privado este envío";
$a->strings["Invalid profile identifier."] = "Identificador de perfil no válido";
-$a->strings["Profile Visibility Editor"] = "Editor de visibilidad el perfil";
+$a->strings["Profile Visibility Editor"] = "Editor de visibilidad del perfil";
$a->strings["Click on a contact to add or remove."] = "Pulsar en un contacto para añadir o eliminar.";
$a->strings["Visible To"] = "Visible para";
$a->strings["%s element installed"] = "%s elemento instalado";
@@ -1392,7 +1392,7 @@ $a->strings["New profile created."] = "Creado el nuevo perfil.";
$a->strings["Profile unavailable to clone."] = "Perfil no disponible para clonar.";
$a->strings["Profile unavailable to export."] = "Perfil no disponible para exportar.";
$a->strings["Profile Name is required."] = "Se necesita el nombre del perfil.";
-$a->strings["Marital Status"] = "Estado sentimental";
+$a->strings["Marital Status"] = "Estado civil";
$a->strings["Romantic Partner"] = "Pareja sentimental";
$a->strings["Likes"] = "Me gusta";
$a->strings["Dislikes"] = "No me gusta";
@@ -1426,7 +1426,7 @@ $a->strings["Country:"] = "País:";
$a->strings["Region/State:"] = "Región/Estado:";
$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Estado sentimental:";
$a->strings["Who: (if applicable)"] = "Quién: (si es aplicable)";
-$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Por ejemplo: cathy123, Cathy Williams, cathy@example.com";
+$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Por ejemplo: ana123, María González, sara@ejemplo.com";
$a->strings["Since [date]:"] = "Desde [fecha]:";
$a->strings["Homepage URL:"] = "Dirección de la página personal:";
$a->strings["Religious Views:"] = "Creencias religiosas:";
@@ -1443,7 +1443,7 @@ $a->strings["Television"] = "Televisión";
$a->strings["Film/dance/culture/entertainment"] = "Cine/danza/cultura/entretenimiento";
$a->strings["Love/romance"] = "Vida sentimental/amorosa";
$a->strings["Work/employment"] = "Trabajo";
-$a->strings["School/education"] = "Educación";
+$a->strings["School/education"] = "Estudios";
$a->strings["This is your default profile."] = "Este es su perfil principal.";
$a->strings["Age: "] = "Edad:";
$a->strings["Edit/Manage Profiles"] = "Modificar/gestionar perfiles";
@@ -1490,7 +1490,7 @@ $a->strings["Command line PHP"] = "PHP en línea de comandos";
$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La línea de comandos PHP de su sistema no tiene activado \"register_argc_argv\".";
$a->strings["This is required for message delivery to work."] = "Esto es necesario para que funcione la entrega de mensajes.";
$a->strings["PHP register_argc_argv"] = "PHP register_argc_argv";
-$a->strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "La carga máxima que se le permite subir está establecida en %s. El tamaño máxima de un archivo está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez.";
+$a->strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "La carga máxima que se le permite subir está establecida en %s. El tamaño máximo de un fichero está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez.";
$a->strings["You can adjust these settings in the servers php.ini."] = "Puede ajustar estos valores en el fichero php.ini de su servidor.";
$a->strings["PHP upload limits"] = "Límites PHP de subida";
$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado.";
@@ -1514,7 +1514,7 @@ $a->strings["Error: mysqli or postgres PHP module required but neither are insta
$a->strings["Error: mb_string PHP module required but not installed."] = "Error: el módulo PHP mb_string es necesario, pero no está instalado.";
$a->strings["Error: mcrypt PHP module required but not installed."] = "Error: el módulo PHP mcrypt es necesario, pero no está instalado.";
$a->strings["Error: xml PHP module required for DAV but not installed."] = "Error: el módulo PHP xml es necesario para DAV, pero no está instalado.";
-$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."] = "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de tu servidor.";
+$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."] = "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor.";
$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."] = "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos.";
$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Al término de este procedimiento, podemos crear un fichero de texto para guardar con el nombre .htconfig.php en el directorio raíz de su instalación de Red.";
$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Como alternativa, puede dejar este procedimiento e intentar realizar una instalación manual. Lea, por favor, el fichero\"install/INSTALL.txt\" para las instrucciones.";
@@ -1524,7 +1524,7 @@ $a->strings["In order to store these compiled templates, the web server needs to
$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data).";
$a->strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s -no al fichero de plantilla (.tpl) que contiene.";
$a->strings["%s is writable"] = "%s tiene permisos de escritura";
-$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red guarda los ficheros descargados en la carpeta \"store\". El servidor web necesita tener permisos de escritura sobre esa carpeta, en el directorio de instalación de Red.";
+$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red guarda los ficheros descargados en la carpeta \"store\". El servidor web necesita tener permisos de escritura sobre esa carpeta, en el directorio de instalación.";
$a->strings["store is writable"] = "\"store\" tiene permisos de escritura";
$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio.";
$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo.";
@@ -1534,37 +1534,37 @@ $a->strings["This can cause usability issues elsewhere (not just on your own sit
$a->strings["Providers are available that issue free certificates which are browser-valid."] = "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos.";
$a->strings["SSL certificate validation"] = "validación del certificado SSL";
$a->strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:";
-$a->strings["Url rewrite is working"] = "Se puede reescribir la dirección en .htaccess";
+$a->strings["Url rewrite is working"] = "La reescritura de la direcciones funciona correctamente";
$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor.";
$a->strings["Errors encountered creating database tables."] = "Se han encontrado errores al crear las tablas de la base de datos.";
$a->strings["<h1>What next</h1>"] = "<h1>Siguiente paso</h1>";
$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Debe crear [manualmente] una tarea programada para las actualizaciones.";
$a->strings["OpenID protocol error. No ID returned."] = "Error del protocolo OpenID. Ningún ID recibido como respuesta.";
-$a->strings["Welcome %s. Remote authentication successful."] = "Bienvenido %s. La identificación remota se ha llevado a cabo correctamente.";
+$a->strings["Welcome %s. Remote authentication successful."] = "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente.";
$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetado el %3\$s de %2\$s con %4\$s";
$a->strings["Export Channel"] = "Exportar el canal";
$a->strings["Export your basic channel information to a small file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new hub, but\tdoes not contain your content."] = "Exportar la base de datos de su canal a un pequeño fichero. Este podrá servir como una copia de seguridad de sus conexiones, permisos, perfil y datos básicos, que podrá importar a un nuevo canal, pero sin sus contenidos.";
$a->strings["Export Content"] = "Exportar contenidos";
-$a->strings["Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and all of your content, but is generally not suitable for importing a channel to a new hub as this file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exportar toda la información del canal y todo su contenido a un fichero JSON. Este contendrá todas sus conexiones, permisos, información del perfil y todo su contenido, Sin embargo, a menudo, no será una buena solución para importarlo en una nueva instancia, pues el fichero será MUY voluminoso. Por favor, tenga paciencia - pueden pasar muchos minutos antes de comience la carga.";
-$a->strings["No connections."] = "No hay conexiones.";
+$a->strings["Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and all of your content, but is generally not suitable for importing a channel to a new hub as this file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exportar toda la información del canal y todo su contenido a un fichero JSON. Este contendrá todas sus conexiones, permisos, información del perfil y todo su contenido, Sin embargo, a menudo, no será una buena solución para importarlo en una nueva instancia, pues el fichero será MUY voluminoso. Por favor, tenga paciencia - pueden pasar muchos minutos antes de que comience la carga.";
+$a->strings["No connections."] = "Sin conexiones.";
$a->strings["Visit %s's profile [%s]"] = "Visitar el perfil de %s [%s]";
$a->strings["invalid target signature"] = "La firma recibida no es válida";
$a->strings["Theme settings updated."] = "Ajustes del tema actualizados.";
$a->strings["Site"] = "Sitio";
$a->strings["Accounts"] = "Cuentas";
$a->strings["Channels"] = "Canales";
-$a->strings["Plugins"] = "Plugins";
+$a->strings["Plugins"] = "Extensiones";
$a->strings["Themes"] = "Temas";
$a->strings["Inspect queue"] = "Examinar la cola";
$a->strings["Profile Config"] = "Ajustes del perfil";
$a->strings["DB updates"] = "Actualizaciones de la base de datos";
$a->strings["Logs"] = "Informes";
-$a->strings["Plugin Features"] = "Ajustes del plugin";
-$a->strings["User registrations waiting for confirmation"] = "Registro de usuarios pendientes de confirmación";
+$a->strings["Plugin Features"] = "Ajustes de la extensión";
+$a->strings["User registrations waiting for confirmation"] = "Registros de usuarios pendientes de confirmación";
$a->strings["# Accounts"] = "# Cuentas";
$a->strings["# blocked accounts"] = "# cuentas bloqueadas";
-$a->strings["# expired accounts"] = "# cuentas expiradas";
-$a->strings["# expiring accounts"] = "# cuentas expiradas";
+$a->strings["# expired accounts"] = "# cuentas caducadas";
+$a->strings["# expiring accounts"] = "# cuentas que caducan";
$a->strings["# Channels"] = "# Canales";
$a->strings["# primary"] = "# primario";
$a->strings["# clones"] = "# clones";
@@ -1574,7 +1574,7 @@ $a->strings["Summary"] = "Sumario";
$a->strings["Registered accounts"] = "Cuentas registradas";
$a->strings["Pending registrations"] = "Registros pendientes";
$a->strings["Registered channels"] = "Canales registrados";
-$a->strings["Active plugins"] = "Plugins activos";
+$a->strings["Active plugins"] = "Extensiones activas";
$a->strings["Version"] = "Versión";
$a->strings["Site settings updated."] = "Ajustes del sitio actualizados.";
$a->strings["mobile"] = "móvil";
@@ -1592,12 +1592,12 @@ $a->strings["Site name"] = "Nombre del sitio";
$a->strings["Banner/Logo"] = "Banner/Logo";
$a->strings["Administrator Information"] = "Información del Administrador";
$a->strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode";
-$a->strings["System language"] = "Lengua del sistema";
-$a->strings["System theme"] = "Tema del sistema";
+$a->strings["System language"] = "Idioma del sistema";
+$a->strings["System theme"] = "Tema gráfico del sistema";
$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar ajustes del tema</a>";
$a->strings["Mobile system theme"] = "Tema del sistema para móviles";
$a->strings["Theme for mobile devices"] = "Tema para aparatos móviles";
-$a->strings["Enable Diaspora Protocol"] = "Activar protocolo de la red social Diaspora";
+$a->strings["Enable Diaspora Protocol"] = "Activar el protocolo de la red social Diaspora";
$a->strings["Communicate with Diaspora and Friendica - experimental"] = "Comunicar con Diaspora y Friendica - experimental";
$a->strings["Allow Feeds as Connections"] = "Permitir flujos RSS como conexiones";
$a->strings["(Heavy system resource usage)"] = "(Uso intenso de los recursos del sistema)";
@@ -1607,10 +1607,10 @@ $a->strings["Does this site allow new member registration?"] = "¿Debe este siti
$a->strings["Which best describes the types of account offered by this hub?"] = "¿Cómo describiría el tipo de servicio ofrecido por este servidor?";
$a->strings["Register text"] = "Texto del registro";
$a->strings["Will be displayed prominently on the registration page."] = "Se mostrará de forma destacada en la página de registro.";
-$a->strings["Site homepage to show visitors (default: login box)"] = "Página de inicio que se mostrará a los visitantes (por defecto: la página de identificación)";
+$a->strings["Site homepage to show visitors (default: login box)"] = "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)";
$a->strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "ejemplo: 'public' para mostrar contenido público de los usuarios, 'page/sys/home' para mostrar la página web definida como \"home\" o 'include:home.html' para mostrar el contenido de un fichero.";
-$a->strings["Preserve site homepage URL"] = "Preservar la dirección de la página web";
-$a->strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Presenta la página web del sitio en un marco en la ubicación original, en vez de redirigirla.";
+$a->strings["Preserve site homepage URL"] = "Preservar la dirección de la página personal";
+$a->strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla.";
$a->strings["Accounts abandoned after x days"] = "Cuentas abandonados después de x días";
$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo.";
$a->strings["Allowed friend domains"] = "Dominios amigos permitidos";
@@ -1619,7 +1619,7 @@ $a->strings["Allowed email domains"] = "Se aceptan dominios de correo electróni
$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. ";
$a->strings["Not allowed email domains"] = "No se permiten dominios de correo electrónico";
$a->strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado.";
-$a->strings["Block public"] = "Bloque público";
+$a->strings["Block public"] = "Bloquear página pública";
$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Activar para bloquear el acceso público a todas las páginas públicas personales en este sitio salvo que estén identificadas en el sistema.";
$a->strings["Verify Email Addresses"] = "Verificar direcciones de correo electrónico";
$a->strings["Check to verify email addresses used in account registration (recommended)."] = "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado).";
@@ -1627,7 +1627,7 @@ $a->strings["Force publish"] = "Forzar la publicación";
$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio.";
$a->strings["Disable discovery tab"] = "Desactivar la pestaña \"Descubrir\"";
$a->strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Quitar la pestaña para ver contenido público extraído de las fuentes elegidas por este sitio.";
-$a->strings["login on Homepage"] = "Acceso a la página de inicio";
+$a->strings["login on Homepage"] = "acceso a la página personal";
$a->strings["Present a login box to visitors on the home page if no other content has been configured."] = "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido.";
$a->strings["Proxy user"] = "Usuario del proxy";
$a->strings["Proxy URL"] = "Dirección del proxy";
@@ -1639,16 +1639,16 @@ $a->strings["Poll interval"] = "Intervalo de sondeo";
$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Retrasar el sondeo en segundo plano en esta cantidad de segundo para reducir la carga del sistema. Si es 0, use el intervalo de entrega.";
$a->strings["Maximum Load Average"] = "Carga media máxima";
$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima del sistema antes de que los procesos de entrega y sondeo se hayan retardado - por defecto, 50.";
-$a->strings["Expiration period in days for imported (matrix/network) content"] = "Periodo de caducidad en días para el contenido importado (matrix/red)";
+$a->strings["Expiration period in days for imported (matrix/network) content"] = "Periodo de caducidad en días para el contenido importado (red)";
$a->strings["0 for no expiration of imported content"] = "0 para que no caduque el contenido importado";
$a->strings["No server found"] = "Servidor no encontrado";
$a->strings["ID"] = "ID";
$a->strings["for channel"] = "por canal";
-$a->strings["on server"] = "sobre el servidor";
+$a->strings["on server"] = "en el servidor";
$a->strings["Status"] = "Estado";
$a->strings["Server"] = "Servidor";
$a->strings["Update has been marked successful"] = "La actualización ha sido marcada como exitosa";
-$a->strings["Executing %s failed. Check system logs."] = "La ejecución de %s ha fallado. Mire en los registros del sistema.";
+$a->strings["Executing %s failed. Check system logs."] = "La ejecución de %s ha fallado. Mirar en los informes del sistema.";
$a->strings["Update %s was successfully applied."] = "La actualización de %s se ha realizado exitosamente.";
$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "La actualización de %s no ha devuelto ningún estado. No se sabe si ha tenido éxito.";
$a->strings["Update function %s could not be found."] = "No se encuentra la función de actualización de %s.";
@@ -1663,17 +1663,18 @@ $a->strings["Destination URL"] = "Dirección de destino";
$a->strings["Mark hub permanently offline"] = "Marcar el servidor como permanentemente fuera de línea";
$a->strings["Empty queue for this hub"] = "Vaciar la cola para este servidor";
$a->strings["Last known contact"] = "Último contacto conocido";
-$a->strings["%s user blocked/unblocked"] = array(
- 0 => "%s usuarios bloqueados/desbloqueados",
- 1 => "%s de usuarios bloqueados/desbloqueados",
+$a->strings["%s account blocked/unblocked"] = array(
+ 0 => "%s cuenta bloqueada/desbloqueada",
+ 1 => "%s cuenta bloqueada/desbloqueada",
);
-$a->strings["%s user deleted"] = array(
- 0 => "%s usuarios eliminados",
- 1 => "%s usuarios eliminados",
+$a->strings["%s account deleted"] = array(
+ 0 => "%s cuentas eliminadas",
+ 1 => "%s cuentas eliminadas",
);
$a->strings["Account not found"] = "Cuenta no encontrada";
-$a->strings["User '%s' blocked"] = "Usuario %s bloqueado";
-$a->strings["User '%s' unblocked"] = "Usuario %s desbloqueado";
+$a->strings["Account '%s' deleted"] = "La cuenta '%s' ha sido eliminada";
+$a->strings["Account '%s' blocked"] = "La cuenta '%s' ha sido bloqueada";
+$a->strings["Account '%s' unblocked"] = "La cuenta '%s' ha sido desbloqueada";
$a->strings["Users"] = "Usuarios";
$a->strings["select all"] = "seleccionar todo";
$a->strings["User registrations waiting for confirm"] = "Registros de usuario en espera de aprobación";
@@ -1685,10 +1686,10 @@ $a->strings["Block"] = "Bloquear";
$a->strings["Unblock"] = "Desbloquear";
$a->strings["Register date"] = "Fecha de registro";
$a->strings["Last login"] = "Último acceso";
-$a->strings["Expires"] = "Expira";
+$a->strings["Expires"] = "Caduca";
$a->strings["Service Class"] = "Clase de servicio";
-$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Los usuarios seleccionados serám eliminados!\\n\\nTodo lo que estos usuarios han publicado en este sitio se borrará de manera definitiva!\\n\\n¿Está seguro de querer hacerlo?";
-$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "El usuario {0} va a ser eliminado!\\n\\nTodo lo que este usuario ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?";
+$a->strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?";
+$a->strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?";
$a->strings["%s channel censored/uncensored"] = array(
0 => "%s canales censurados/no censurados",
1 => "%s canales censurados/no censurados",
@@ -1714,8 +1715,8 @@ $a->strings["Disallow Code"] = "No permitir código";
$a->strings["UID"] = "UID";
$a->strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Los canales seleccionados se eliminarán!\\n\\nTodo lo publicado por estos canales en este sitio se borrarán definitivamente!\\n\\n¿Está seguro de querer hacerlo?";
$a->strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en este sitio se borrará definitivamente!\\n\\n¿Está seguro de querer hacerlo?";
-$a->strings["Plugin %s disabled."] = "Plugin %s desactivado.";
-$a->strings["Plugin %s enabled."] = "Plugin %s activado.";
+$a->strings["Plugin %s disabled."] = "Extensión %s desactivada.";
+$a->strings["Plugin %s enabled."] = "Extensión %s activada.";
$a->strings["Disable"] = "Desactivar";
$a->strings["Enable"] = "Activar";
$a->strings["Toggle"] = "Cambiar";
@@ -1727,7 +1728,7 @@ $a->strings["[Experimental]"] = "[Experimental]";
$a->strings["[Unsupported]"] = "[No soportado]";
$a->strings["Log settings updated."] = "Actualizado el informe de configuraciones.";
$a->strings["Clear"] = "Vaciar";
-$a->strings["Debugging"] = "Depurando";
+$a->strings["Debugging"] = "Depuración";
$a->strings["Log file"] = "Fichero de informe";
$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Debe tener permisos de escritura para el servidor web. Ruta relativa al directorio raíz de Red.";
$a->strings["Log level"] = "Nivel de depuración";
@@ -1753,8 +1754,8 @@ $a->strings["Registration on this site/hub is by approval only."] = "El registro
$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Inscribirse en un servidor/hub afiliado</a>";
$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana.";
$a->strings["Terms of Service"] = "Términos del servicio";
-$a->strings["I accept the %s for this website"] = "Acepto el %s de este sitio";
-$a->strings["I am over 13 years of age and accept the %s for this website"] = "Tengo más de 13 años de edad y acepto el %s de este sitio";
+$a->strings["I accept the %s for this website"] = "Acepto los %s de este sitio";
+$a->strings["I am over 13 years of age and accept the %s for this website"] = "Tengo más de 13 años de edad y acepto los %s de este sitio";
$a->strings["Membership on this site is by invitation only."] = "Para registrarse en este sitio es necesaria una invitación.";
$a->strings["Please enter your invitation code"] = "Por favor, introduzca el código de su invitación";
$a->strings["Your email address"] = "Su dirección de correo electrónico";
@@ -1782,26 +1783,26 @@ $a->strings["Passwords do not match. Password unchanged."] = "Las contraseñas n
$a->strings["Empty passwords are not allowed. Password unchanged."] = "No se permiten contraseñas vacías. La contraseña no se ha cambiado.";
$a->strings["Password changed."] = "Constraseña cambiada.";
$a->strings["Password update failed. Please try again."] = "La actualización de la contraseña ha fallado. Por favor, inténtalo de nuevo.";
-$a->strings["Not valid email."] = "Email no válido.";
-$a->strings["Protected email address. Cannot change to that email."] = "Dirección de email protegida. No se peude cambiar a ese email.";
-$a->strings["System failure storing new email. Please try again."] = "Fallo de sistema al guardar el nuevo email. Por favor, inténtalo de nuevo.";
-$a->strings["Settings updated."] = "Configuración actualizada.";
+$a->strings["Not valid email."] = "Correo electrónico no válido.";
+$a->strings["Protected email address. Cannot change to that email."] = "Dirección de correo electrónico protegida. No se puede cambiar a ella.";
+$a->strings["System failure storing new email. Please try again."] = "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo.";
+$a->strings["Settings updated."] = "Ajustes actualizados.";
$a->strings["Add application"] = "Añadir aplicación";
$a->strings["Name of application"] = "Nombre de la aplicación";
$a->strings["Consumer Key"] = "Clave de consumidor";
-$a->strings["Automatically generated - change if desired. Max length 20"] = "Generado automáticamente - si lo deseas, cámbialo. Longitud máxima: 20";
-$a->strings["Consumer Secret"] = "Secreto de consumidor";
+$a->strings["Automatically generated - change if desired. Max length 20"] = "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 20";
+$a->strings["Consumer Secret"] = "Clave secreta de consumidor";
$a->strings["Redirect"] = "Redirigir";
-$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirección - dejar en blanco a menos que tu aplicación específicamente lo requiera";
-$a->strings["Icon url"] = "url de icono";
+$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirección - dejar en blanco a menos que su aplicación específicamente lo requiera";
+$a->strings["Icon url"] = "dirección del icono";
$a->strings["Optional"] = "Opcional";
-$a->strings["You can't edit this application."] = "No puedes editar esta aplicación.";
-$a->strings["Connected Apps"] = "Apps conectadas";
+$a->strings["You can't edit this application."] = "No puede modificar esta aplicación.";
+$a->strings["Connected Apps"] = "Aplicaciones conectadas";
$a->strings["Client key starts with"] = "La clave de cliente empieza por";
$a->strings["No name"] = "Sin nombre";
$a->strings["Remove authorization"] = "Eliminar autorización";
$a->strings["No feature settings configured"] = "No se ha establecido la configuración de características";
-$a->strings["Feature/Addon Settings"] = "Configuración de característica/complemento";
+$a->strings["Feature/Addon Settings"] = "Ajustes de la característica o el complemento";
$a->strings["Settings for the built-in Diaspora emulator"] = "Configuración para el emulador de Diaspora incorporado";
$a->strings["Allow any Diaspora member to comment on your public posts"] = "Permitir a cualquier miembro de Diaspora comentar en sus publicaciones públicas";
$a->strings["Enable the Diaspora protocol for this channel"] = "Activar el protocolo de Diaspora para este canal";
@@ -1809,69 +1810,69 @@ $a->strings["Diaspora Policy Settings"] = "Configuración de directivas de Diasp
$a->strings["Prevent your hashtags from being redirected to other sites"] = "Impedir que sus \"hashtags\" sean redirigidos a otros sitios ";
$a->strings["Account Settings"] = "Configuración de la cuenta";
$a->strings["Enter New Password:"] = "Introduzca la nueva contraseña:";
-$a->strings["Confirm New Password:"] = "Confirma la nueva contraseña:";
-$a->strings["Leave password fields blank unless changing"] = "Deja en blanco los campos de contraseña a menos que cambie";
-$a->strings["Email Address:"] = "Dirección de email:";
-$a->strings["Remove this account including all its channels"] = "Eliminar esta cuenta incuyendo todos sus canales";
+$a->strings["Confirm New Password:"] = "Confirme la nueva contraseña:";
+$a->strings["Leave password fields blank unless changing"] = "Dejar en blanco los campos de contraseña a menos que cambie";
+$a->strings["Email Address:"] = "Dirección de correo electrónico:";
+$a->strings["Remove this account including all its channels"] = "Eliminar esta cuenta incluyendo todos sus canales";
$a->strings["Off"] = "Desactivado";
$a->strings["On"] = "Activado";
$a->strings["Additional Features"] = "Características adicionales";
-$a->strings["Connector Settings"] = "Configuración de conector";
+$a->strings["Connector Settings"] = "Configuración del conector";
$a->strings["No special theme for mobile devices"] = "Sin tema especial para dispositivos móviles";
$a->strings["%s - (Experimental)"] = "%s - (Experimental)";
-$a->strings["Display Settings"] = "Configuración de visualización";
+$a->strings["Display Settings"] = "Ajustes de visualización";
$a->strings["Theme Settings"] = "Ajustes del tema";
$a->strings["Custom Theme Settings"] = "Ajustes personalizados del tema";
$a->strings["Content Settings"] = "Ajustes del contenido";
-$a->strings["Display Theme:"] = "Tema de visualización:";
-$a->strings["Mobile Theme:"] = "Tema móvil:";
+$a->strings["Display Theme:"] = "Tema gráfico del perfil:";
+$a->strings["Mobile Theme:"] = "Tema para el móvil:";
$a->strings["Enable user zoom on mobile devices"] = "Habilitar zoom de usuario en dispositivos móviles";
$a->strings["Update browser every xx seconds"] = "Actualizar navegador cada xx segundos";
$a->strings["Minimum of 10 seconds, no maximum"] = "Mínimo de 10 segundos, sin máximo";
$a->strings["Maximum number of conversations to load at any time:"] = "Máximo número de conversaciones a cargar en cualquier momento:";
$a->strings["Maximum of 100 items"] = "Máximo de 100 elementos";
$a->strings["Show emoticons (smilies) as images"] = "Mostrar emoticonos (smilies) como imágenes";
-$a->strings["Link post titles to source"] = "Enlazar título de la publicación a la fuente";
-$a->strings["System Page Layout Editor - (advanced)"] = "Editor de sistema de distribución de página - (avanzado)";
-$a->strings["Use blog/list mode on channel page"] = "Usar modo blog/lista en página del canal";
+$a->strings["Link post titles to source"] = "Enlazar título de la publicación a la fuente original";
+$a->strings["System Page Layout Editor - (advanced)"] = "Editor de diseño de página del sistema - (avanzado)";
+$a->strings["Use blog/list mode on channel page"] = "Usar modo blog/lista en la página de inicio del canal";
$a->strings["(comments displayed separately)"] = "(comentarios mostrados de forma separada)";
-$a->strings["Use blog/list mode on matrix page"] = "Usar modo blog/lista en página de matrix";
+$a->strings["Use blog/list mode on matrix page"] = "Mostrar la red en modo blog/lista";
$a->strings["Channel page max height of content (in pixels)"] = "Altura máxima del contenido de la página del canal (en píxeles)";
$a->strings["click to expand content exceeding this height"] = "Pulsa para expandir el contenido que excede esta altura";
-$a->strings["Matrix page max height of content (in pixels)"] = "Altura máxima del contenido de la página de matrix (en píxeles)";
+$a->strings["Matrix page max height of content (in pixels)"] = "Altura máxima del contenido de la página de la red (en píxeles)";
$a->strings["Nobody except yourself"] = "Nadie excepto tú";
-$a->strings["Only those you specifically allow"] = "Solamente aquellos a los que tú permitas específicamente";
+$a->strings["Only those you specifically allow"] = "Solo aquellos a los que usted permita explícitamente";
$a->strings["Approved connections"] = "Conexiones aprobadas";
$a->strings["Any connections"] = "Cualquier conexión";
-$a->strings["Anybody on this website"] = "Cualquiera en este website";
+$a->strings["Anybody on this website"] = "Cualquiera en este sitio web";
$a->strings["Anybody in this network"] = "Cualquiera en esta red";
-$a->strings["Anybody authenticated"] = "Cualquiera autenticado";
+$a->strings["Anybody authenticated"] = "Cualquiera que esté autenticado";
$a->strings["Anybody on the internet"] = "Cualquiera en internet";
-$a->strings["Publish your default profile in the network directory"] = "Publicar tu perfil predeterminado en el directorio de la red";
+$a->strings["Publish your default profile in the network directory"] = "Publicar su perfil principal en el directorio de la red";
$a->strings["Allow us to suggest you as a potential friend to new members?"] = "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?";
$a->strings["Your channel address is"] = "Su dirección de canal es";
-$a->strings["Channel Settings"] = "Configuración de canal";
+$a->strings["Channel Settings"] = "Ajustes del canal";
$a->strings["Basic Settings"] = "Configuración básica";
$a->strings["Your Timezone:"] = "Su zona horaria:";
$a->strings["Default Post Location:"] = "Ubicación de publicación predeterminada:";
-$a->strings["Geographical location to display on your posts"] = "Localización geográfica a mostrar en sus publicaciones";
-$a->strings["Use Browser Location:"] = "Usar localización de navegador:";
-$a->strings["Adult Content"] = "Contenido adulto";
-$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Este canal frecuentemente o regularmente publica contenido adulto. (Por favor etiqueta cualquier material adulto y/o desnudez con #NSFW)";
+$a->strings["Geographical location to display on your posts"] = "Ubicación geográfica que debe mostrarse en sus publicaciones";
+$a->strings["Use Browser Location:"] = "Usar la localización del navegador:";
+$a->strings["Adult Content"] = "Contenido solo para adultos";
+$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)";
$a->strings["Security and Privacy Settings"] = "Configuración de seguridad y privacidad";
$a->strings["Your permissions are already configured. Click to view/adjust"] = "Sus permisos ya están configurados. Pulse para ver/ajustar";
-$a->strings["Hide my online presence"] = "Oculta mi presencia online";
-$a->strings["Prevents displaying in your profile that you are online"] = "Evita mostrar en su perfil que está en línea";
+$a->strings["Hide my online presence"] = "Ocultra mi presencia en línea";
+$a->strings["Prevents displaying in your profile that you are online"] = "Evitar mostrar en su perfil que está en línea";
$a->strings["Simple Privacy Settings:"] = "Configuración de privacidad sencilla:";
$a->strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Muy Público - <em>extremadamente permisivo (debería ser usado con precaución)</em>";
-$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de red social pero con privacidad mejorada)</em>";
-$a->strings["Private - <em>default private, never open or public</em>"] = "Privado - <em>por defecto privado, nunca abierto o público</em>";
-$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloqueado - <em>por defecto bloqueado bloqueado a/para cualquiera</em>";
+$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>";
+$a->strings["Private - <em>default private, never open or public</em>"] = "Privado - <em>por defecto, privado, nunca abierto o público</em>";
+$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>";
$a->strings["Allow others to tag your posts"] = "Permitir a otros etiquetar sus publicaciones";
$a->strings["Often used by the community to retro-actively flag inappropriate content"] = "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva.";
$a->strings["Advanced Privacy Settings"] = "Configuración de privacidad avanzada";
$a->strings["Expire other channel content after this many days"] = "Caducar contenido de otro canal después de este número de días";
-$a->strings["0 or blank prevents expiration"] = "0 o vacío evita la expiración";
+$a->strings["0 or blank prevents expiration"] = "0 o en claro evitan la caducidad";
$a->strings["Maximum Friend Requests/Day:"] = "Máximo de solicitudes de amistad por día:";
$a->strings["May reduce spam activity"] = "Podría reducir la actividad de spam";
$a->strings["Default Post Permissions"] = "Permidos de publicación predeterminados";
@@ -1881,17 +1882,17 @@ $a->strings["Useful to reduce spamming"] = "Útil para reducir el envío de corr
$a->strings["Notification Settings"] = "Configuración de notificaciones";
$a->strings["By default post a status message when:"] = "Por defecto, enviar un mensaje de estado cuando:";
$a->strings["accepting a friend request"] = "acepte una solicitud de amistad";
-$a->strings["joining a forum/community"] = "se una a un foro o comunidad";
+$a->strings["joining a forum/community"] = "al unirse a un foro o comunidad";
$a->strings["making an <em>interesting</em> profile change"] = "realice un cambio <em>interesante</em> en su perfil";
$a->strings["Send a notification email when:"] = "Enviar una notificación por correo electrónico cuando:";
$a->strings["You receive a connection request"] = "Reciba una solicitud de conexión";
-$a->strings["Your connections are confirmed"] = "Su conexión haya sido confirmada";
-$a->strings["Someone writes on your profile wall"] = "Alguien escriba en el muro de su perfil";
+$a->strings["Your connections are confirmed"] = "Sus conexiones hayan sido confirmadas";
+$a->strings["Someone writes on your profile wall"] = "Alguien escriba en la página de su perfil (muro)";
$a->strings["Someone writes a followup comment"] = "Alguien escriba un comentario sobre sus publicaciones";
$a->strings["You receive a private message"] = "Reciba un mensaje privado";
$a->strings["You receive a friend suggestion"] = "Reciba una sugerencia de amistad";
-$a->strings["You are tagged in a post"] = "Sea etiquetado en una publicación";
-$a->strings["You are poked/prodded/etc. in a post"] = "Ha recibido un toque o ha sido incitado, etc. en una publicación";
+$a->strings["You are tagged in a post"] = "Usted sea etiquetado en una publicación";
+$a->strings["You are poked/prodded/etc. in a post"] = "Haya recibido un toque o haya sido incitado, etc. en una publicación";
$a->strings["Show visual notifications including:"] = "Mostrar notificaciones visuales que incluyan:";
$a->strings["Unseen matrix activity"] = "Actividad no vista en la red";
$a->strings["Unseen channel activity"] = "Actividad no vista en el canal";
@@ -1911,14 +1912,14 @@ $a->strings["Notify me of events this many days in advance"] = "Avisarme de los
$a->strings["Must be greater than 0"] = "Debe ser mayor que 0";
$a->strings["Advanced Account/Page Type Settings"] = "Ajustes avanzados de la cuenta y de los tipos de página";
$a->strings["Change the behaviour of this account for special situations"] = "Cambiar el comportamiento de esta cuenta en situaciones especiales";
-$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Activa modo experto (en <a href=\"settings/features\">Ajustes > Características Adicionales</a>) para ajustar!";
+$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Activar modo experto (en <a href=\"settings/features\">Ajustes > Características Adicionales</a>) para ajustar.";
$a->strings["Miscellaneous Settings"] = "Ajustes diversos";
$a->strings["Personal menu to display in your channel pages"] = "Menú personal que debe mostrarse en las páginas de su canal";
$a->strings["Remove Channel"] = "Eliminar canal";
$a->strings["Remove this channel."] = "Eliminar este canal.";
$a->strings["First Name"] = "Nombre";
$a->strings["Last Name"] = "Apellido";
-$a->strings["Nickname"] = "Alias";
+$a->strings["Nickname"] = "Sobrenombre o Alias";
$a->strings["Full Name"] = "Nombre completo";
$a->strings["Profile Photo 16px"] = "Foto de perfil 16px";
$a->strings["Profile Photo 32px"] = "Foto de perfil 32px";
@@ -1975,126 +1976,126 @@ $a->strings["Set Affinity"] = "Ajustar Afinidad";
$a->strings["Set Profile"] = "Ajustar Perfil";
$a->strings["Set Affinity & Profile"] = "Ajustar Afinidad y Perfil";
$a->strings["Apply these permissions automatically"] = "Aplicar estos permisos automaticamente";
-$a->strings["This connection's address is"] = "Esta dirección de conexión es";
+$a->strings["This connection's address is"] = "La dirección de esta conexión es";
$a->strings["The permissions indicated on this page will be applied to all new connections."] = "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones.";
$a->strings["Slide to adjust your degree of friendship"] = "Deslizar para ajustar el grado de amistad";
$a->strings["Slide to adjust your rating"] = "Deslizar para ajustar su valoración";
$a->strings["Optionally explain your rating"] = "Opcionalmente, puede explicar su valoración";
$a->strings["Custom Filter"] = "Filtro Personalizado";
$a->strings["Only import posts with this text"] = "Importar solo entradas que contengan este texto";
-$a->strings["words one per line or #tags or /patterns/, leave blank to import all posts"] = "Palabras, una por línea o #etiquetas o /patrones/, deja en blanco para importar todas las entradas";
-$a->strings["Do not import posts with this text"] = "No importes entradas conteniendo este texto";
-$a->strings["This information is public!"] = "Esta información es pública!";
-$a->strings["Connection Pending Approval"] = "Conexión Pendiente de Aprobación";
-$a->strings["Connection Request"] = "Petición de Conexión";
-$a->strings["(%s) would like to connect with you. Please approve this connection to allow communication."] = "(%s) desearía conectar contigo. por favor, aprueba esta conexión para permitir la comunicación.";
-$a->strings["Approve Later"] = "Aprobar Más Tarde";
+$a->strings["words one per line or #tags or /patterns/, leave blank to import all posts"] = "Palabras, una por línea o #etiquetas o /patrones/, dejar en blanco para importar todas las entradas";
+$a->strings["Do not import posts with this text"] = "No importar entradas que contienen este texto";
+$a->strings["This information is public!"] = "¡Esta información es pública!";
+$a->strings["Connection Pending Approval"] = "Conexión pendiente de aprobación";
+$a->strings["Connection Request"] = "Solicitud de conexión";
+$a->strings["(%s) would like to connect with you. Please approve this connection to allow communication."] = "(%s) desearía conectar con usted. por favor, apruebe esta conexión para permitir la comunicación.";
+$a->strings["Approve Later"] = "Aprobar más tarde";
$a->strings["inherited"] = "heredado";
-$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Por favor, escoge el perfil que quieres mostrar a %s cuando este viendo el perfil de seguridad.";
-$a->strings["Their Settings"] = "Sus Ajustes";
-$a->strings["My Settings"] = "Mis Ajustes";
-$a->strings["Individual Permissions"] = "Permisos Individuales";
+$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura.";
+$a->strings["Their Settings"] = "Sus ajustes";
+$a->strings["My Settings"] = "Mis ajustes";
+$a->strings["Individual Permissions"] = "Permisos individuales";
$a->strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí.";
-$a->strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí pero no tendrán ningún impacto hasta que cambie los ajustes heredados.";
+$a->strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún impacto hasta que cambie los ajustes heredados.";
$a->strings["Last update:"] = "Última actualización:";
-$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Encontramos un problema durante el inicio de sesión con la OpenID que proporcionaste. por favor, comprueba la escritura correcta de la ID.";
+$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Encontramos un problema durante el inicio de sesión con la OpenID que proporcionó. por favor, compruebe que la ID está correctamente escrita.";
$a->strings["The error message was:"] = "El mensaje de error fue:";
$a->strings["Authentication failed."] = "Falló la autenticación.";
-$a->strings["Remote Authentication"] = "Autenticación Remota";
-$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Introduzca la dirección del canal (p.e. channel@example.com)";
-$a->strings["Authenticate"] = "Identifíquese";
-$a->strings["Unable to lookup recipient."] = "No ha sido posible de ";
-$a->strings["Unable to communicate with requested channel."] = "Incapaz de comunicar con el canal solicitado.";
-$a->strings["Cannot verify requested channel."] = "No puedo verificar el canal solicitado.";
-$a->strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionado tiene restricciones sobre los mensajes privados. El envió falló.";
+$a->strings["Remote Authentication"] = "Acceso desde su servidor";
+$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)";
+$a->strings["Authenticate"] = "Acceder";
+$a->strings["Unable to lookup recipient."] = "Imposible asociar a un destinatario.";
+$a->strings["Unable to communicate with requested channel."] = "Imposible comunicar con el canal solicitado.";
+$a->strings["Cannot verify requested channel."] = "No se puede verificar el canal solicitado.";
+$a->strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló.";
$a->strings["Message deleted."] = "Mensaje eliminado.";
$a->strings["Message recalled."] = "Mensaje recuperado.";
-$a->strings["Send Private Message"] = "Envía un Mensaje Privado";
+$a->strings["Send Private Message"] = "Enviar un mensaje privado";
$a->strings["To:"] = "Para:";
$a->strings["Subject:"] = "Asunto:";
-$a->strings["Send"] = "Envia";
+$a->strings["Send"] = "Enviar";
$a->strings["Message not found."] = "No se encuentra el mensaje.";
$a->strings["Delete message"] = "Mensaje eliminado";
-$a->strings["Recall message"] = "Mensaje recuperado";
+$a->strings["Recall message"] = "Recuperar el mensaje";
$a->strings["Message has been recalled."] = "El mensaje ha sido recuperado.";
-$a->strings["Private Conversation"] = "Conversación Privada";
-$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicación segura no disponible. Pero <strong>puedes</strong> responder desde la página de perfil del remitente.";
-$a->strings["Send Reply"] = "Envía Respuesta";
+$a->strings["Private Conversation"] = "Conversación privada";
+$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página de perfil del remitente.";
+$a->strings["Send Reply"] = "Envía respuesta";
$a->strings["Invalid request identifier."] = "Petición inválida del identificador.";
-$a->strings["Discard"] = "Descarta";
-$a->strings["Please login."] = "Por favor, inicia sesión.";
-$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "La autenticación remota está bloqueada. Has iniciado sesión localmente. Por favor, sal de la sesión y vuelve a intentarlo.";
-$a->strings["Add a Channel"] = "Añade un Canal";
-$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Un canal es su propia colección de páginas web relacionadas. Un canal se puede utilizar para almacenar los perfiles sociales de la red, blogs, grupos de conversación y foros, páginas de famosos y mucho más. Puede crear tantos canales como su proveedor de servicio permita.";
-$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Ejemplos: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" ";
-$a->strings["Choose a short nickname"] = "Escoge un alias corto";
-$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Su alias podrá usarse para crear una dirección de canal fácilmente memorizable (como una dirección de correo electrónico) el cual puede ser compartido con otros.";
-$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "O <a href=\"import\">importa un canal existente</a> de otro lugar";
-$a->strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "escoge el tipo de canal (como red social o fofo de comunidad) y la privacidad que requiera, así podemos seleccionar el mejor conjunto de permisos para ti";
-$a->strings["Channel Type"] = "Tipo de Canal";
-$a->strings["Read more about roles"] = "Lee más sobre los roles";
+$a->strings["Discard"] = "Descartar";
+$a->strings["Please login."] = "Por favor, inicie sesión.";
+$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo.";
+$a->strings["Add a Channel"] = "Añadir un canal";
+$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Un canal está formado por su propia colección de páginas web relacionadas. Se puede utilizar para almacenar los perfiles sociales de la red, blogs, grupos de conversación y foros, páginas de famosos y mucho más. Puede crear tantos canales como su proveedor de servicio permita.";
+$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Ejemplos: \"Juan García\", \"Isabel y sus caballos\", \"Fútbol\", \"Grupo de parapente\" ";
+$a->strings["Choose a short nickname"] = "Elija un alias corto";
+$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Su alias podrá usarse para crear una dirección de canal fácilmente memorizable (como una dirección de correo electrónico) que puede ser compartido con otros.";
+$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "O <a href=\"import\">importar un canal existente</a> de otro lugar";
+$a->strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Elija el tipo de canal (como red social o foro de comunidad) y la privacidad que requiera, así podremos seleccionar el mejor conjunto de permisos para usted";
+$a->strings["Channel Type"] = "Tipo de canal";
+$a->strings["Read more about roles"] = "Leer más sobre los roles";
$a->strings["App installed."] = "Aplicación instalada.";
-$a->strings["Malformed app."] = "Aplicación malformada";
-$a->strings["Embed code"] = "codigo embebido";
-$a->strings["Edit App"] = "Edita la aplicación";
-$a->strings["Create App"] = "Crea una aplicación";
+$a->strings["Malformed app."] = "Aplicación con errores";
+$a->strings["Embed code"] = "código incorporado";
+$a->strings["Edit App"] = "Modificar la aplicación";
+$a->strings["Create App"] = "Crear una aplicación";
$a->strings["Name of app"] = "Nombre de la aplicación";
$a->strings["Location (URL) of app"] = "Ubicación (URL) de la aplicación";
-$a->strings["Photo icon URL"] = "Foto del icono URL";
+$a->strings["Photo icon URL"] = "Dirección del icono que se va a utilizar para esta foto";
$a->strings["80 x 80 pixels - optional"] = "80 x 80 pixels - opcional";
-$a->strings["Version ID"] = "Versión ID";
+$a->strings["Version ID"] = "Versión";
$a->strings["Price of app"] = "Precio de la aplicación";
-$a->strings["Location (URL) to purchase app"] = "Ubicación (URL) para conseguir la aplicación";
-$a->strings["sent you a private message"] = "envia un mensaje privado";
+$a->strings["Location (URL) to purchase app"] = "Ubicación (URL) donde adquirir la aplicación";
+$a->strings["sent you a private message"] = "enviarle un mensaje privado";
$a->strings["added your channel"] = "se añadió su canal";
-$a->strings["posted an event"] = "Se publicó un evento";
-$a->strings["Comanche page description language help"] = "Página de ayuda de la descripción del lenguaje Comanche";
-$a->strings["Layout Description"] = "Descripción del Formato Gráfico";
-$a->strings["Download PDL file"] = "Descarga el fichero PDL";
+$a->strings["posted an event"] = "publicó un evento";
+$a->strings["Comanche page description language help"] = "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche";
+$a->strings["Layout Description"] = "Descripción del formato";
+$a->strings["Download PDL file"] = "Descargar el fichero PDL";
$a->strings["Welcome to %s"] = "Bienvenido a %s";
$a->strings["Lorem Ipsum"] = "Lorem Ipsum";
$a->strings["Bookmark added"] = "Marcador añadido";
$a->strings["My Bookmarks"] = "Mis Marcadores";
-$a->strings["My Connections Bookmarks"] = "Mis Marcadores de Conexiones";
-$a->strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficientes. Petición redirigida a la página de perfil.";
+$a->strings["My Connections Bookmarks"] = "Marcadores de mis conexiones";
+$a->strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficientes. Petición redirigida a la página del perfil.";
$a->strings["This setting requires special processing and editing has been blocked."] = "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada.";
-$a->strings["Configuration Editor"] = "Editor de Configuración";
-$a->strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Atención: El cambio de algunos ajustes puede convertir su canal en inoperable. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica.";
-$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hay sugerencias disponibles. Si es un lugar nuevo, espera 24 horas y prueba de nuevo.";
-$a->strings["Poll"] = "Sondea";
-$a->strings["View Results"] = "Mostrar Resultados";
-$a->strings["No service class restrictions found."] = "No se han encontrado clases de restricción de servicio.";
+$a->strings["Configuration Editor"] = "Editor de configuración";
+$a->strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Atención: El cambio de algunos ajustes puede volver inoperante su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica.";
+$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo.";
+$a->strings["Poll"] = "Sondear";
+$a->strings["View Results"] = "Mostrar resultados";
+$a->strings["No service class restrictions found."] = "No se han encontrado restricciones sobre esta clase de servicio.";
$a->strings["Files: shared with me"] = "Ficheros: compartidos conmigo";
$a->strings["NEW"] = "NUEVO";
$a->strings["Remove all files"] = "Borrar todos los ficheros";
-$a->strings["Remove this file"] = "Borra este archivo";
-$a->strings["Schema Default"] = "Esquema Predeterminado";
+$a->strings["Remove this file"] = "Borrar este fichero";
+$a->strings["Schema Default"] = "Esquema predeterminado";
$a->strings["Sans-Serif"] = "Sans-Serif";
$a->strings["Monospace"] = "Monospace";
-$a->strings["Theme settings"] = "Ajustes de tema";
-$a->strings["Set scheme"] = "Ajusta esquema";
-$a->strings["Set font-size for posts and comments"] = "Ajusta el tamaño del tipo de letra para entradas y comentarios";
-$a->strings["Set font face"] = "Ajusta el tipo de letra";
-$a->strings["Set iconset"] = "Ajusta el conjunto de iconos";
-$a->strings["Set big shadow size, default 15px 15px 15px"] = "Ajusta el sombreado grande, por defecto 15px 15px 15px";
-$a->strings["Set small shadow size, default 5px 5px 5px"] = "Ajusta el sombreado pequeño, por defecto 5px 5px 5px";
-$a->strings["Set shadow color, default #000"] = "Ajusta el color del sombreado, predeterminado a #000";
+$a->strings["Theme settings"] = "Ajustes del tema";
+$a->strings["Set scheme"] = "Ajustar esquema";
+$a->strings["Set font-size for posts and comments"] = "Ajustar el tamaño del tipo de letra para entradas y comentarios";
+$a->strings["Set font face"] = "Ajustar el tipo de letra";
+$a->strings["Set iconset"] = "Ajustar el conjunto de iconos";
+$a->strings["Set big shadow size, default 15px 15px 15px"] = "Ajustar el sombreado grande, por defecto 15px 15px 15px";
+$a->strings["Set small shadow size, default 5px 5px 5px"] = "Ajustar el sombreado pequeño, por defecto 5px 5px 5px";
+$a->strings["Set shadow color, default #000"] = "Ajustar el color del sombreado, predeterminado a #000";
$a->strings["Set radius size, default 5px"] = "Ajusta el tamaño del radio, predeterminado a 5px";
-$a->strings["Set line-height for posts and comments"] = "Ajusta la altura de linea para entradas y comentarios";
-$a->strings["Set background image"] = "Ajusta la imagen de fondo";
-$a->strings["Set background attachment"] = "Ajusta el fondo adjuntado";
-$a->strings["Set background color"] = "Ajusta el color de fondo";
-$a->strings["Set section background image"] = "Ajusta la imagen de la sección del fondo";
-$a->strings["Set section background color"] = "Ajusta el color de la sección del fondo";
-$a->strings["Set color of items - use hex"] = "Ajusta el color de los elementos - utiliza código hexadecimal";
-$a->strings["Set color of links - use hex"] = "Ajusta el color de los enlaces - utiliza código hexadecimal";
-$a->strings["Set max-width for items. Default 400px"] = "Ajusta la anchura máxima para los elementos. Predeterminado a 400px";
-$a->strings["Set min-width for items. Default 240px"] = "Ajusta la anchura mínima para los elementos. Predeterminado a 240px";
-$a->strings["Set the generic content wrapper width. Default 48%"] = "Ajusta el ancho de la envoltura del contenido genérico. Predeterminado 48%";
-$a->strings["Set color of fonts - use hex"] = "Ajusta el color del tipo de letra - utiliza código hexadecimal";
-$a->strings["Set background-size element"] = "Ajusta el tamaño de fondo del elemento";
+$a->strings["Set line-height for posts and comments"] = "Ajustar la altura de linea para entradas y comentarios";
+$a->strings["Set background image"] = "Ajustar la imagen de fondo";
+$a->strings["Set background attachment"] = "Ajustar el fondo adjuntado";
+$a->strings["Set background color"] = "Ajustar el color de fondo";
+$a->strings["Set section background image"] = "Ajustar la imagen de la sección del fondo";
+$a->strings["Set section background color"] = "Ajustar el color de la sección del fondo";
+$a->strings["Set color of items - use hex"] = "Ajustar el color de los elementos - utilizar código hexadecimal";
+$a->strings["Set color of links - use hex"] = "Ajusta el color de los enlaces - utilizar código hexadecimal";
+$a->strings["Set max-width for items. Default 400px"] = "Ajustar la anchura máxima para los elementos. Predeterminado a 400px";
+$a->strings["Set min-width for items. Default 240px"] = "Ajustar la anchura mínima para los elementos. Predeterminado a 240px";
+$a->strings["Set the generic content wrapper width. Default 48%"] = "Ajustar el ancho de la envoltura del contenido genérico. Predeterminado 48%";
+$a->strings["Set color of fonts - use hex"] = "Ajustar el color del tipo de letra - utiliza código hexadecimal";
+$a->strings["Set background-size element"] = "Ajustar el tamaño de fondo del elemento";
$a->strings["Item opacity"] = "Opacidad del elemento";
-$a->strings["Display post previews only"] = "Muestra solo las previsualizaciones de las entradas";
+$a->strings["Display post previews only"] = "Mostrar solo las previsualizaciones de las entradas";
$a->strings["Display side bar on channel page"] = "Muestra la barra lateral en la página del canal";
$a->strings["Colour of the navigation bar"] = "Color de la barra de navegación";
$a->strings["Item float"] = "Elemento flotante";
@@ -2103,9 +2104,9 @@ $a->strings["Right offset of the section element"] = "Desplazamiento derecho del
$a->strings["Section width"] = "Ancho de la sección";
$a->strings["Left offset of the aside"] = "Desplazamiento izquierdo del lateral";
$a->strings["Right offset of the aside element"] = "Desplazamiento derecho del elemento lateral";
-$a->strings["Light (Red Matrix default)"] = "Ligero (Red Matrix predeterminado)";
-$a->strings["Select scheme"] = "Escoge esquema";
-$a->strings["Narrow navbar"] = "Limita la barra de navegación";
+$a->strings["Light (Red Matrix default)"] = "Ligero (predeterminado de RedMatrix)";
+$a->strings["Select scheme"] = "Elegir un esquema";
+$a->strings["Narrow navbar"] = "Estrechar la barra de navegación";
$a->strings["Navigation bar background color"] = "Color de fondo de la barra de navegación";
$a->strings["Navigation bar gradient top color"] = "Color superior del gradiente de la barra de navegación";
$a->strings["Navigation bar gradient bottom color"] = "Color inferior del gradiente de la barra de navegación";
@@ -2115,34 +2116,34 @@ $a->strings["Navigation bar border color "] = "Color del borde de la barra de na
$a->strings["Navigation bar icon color "] = "Color del icono de la barra de navegación";
$a->strings["Navigation bar active icon color "] = "Color del icono activo de la barra de navegación";
$a->strings["link color"] = "Color del enlace";
-$a->strings["Set font-color for banner"] = "Ajusta el color del tipo de letra para la pancarta";
-$a->strings["Set the background color"] = "Ajusta el color de fondo";
-$a->strings["Set the background image"] = "Ajusta la imagen de fondo";
-$a->strings["Set the background color of items"] = "Ajusta el color de los elementos de fondo";
-$a->strings["Set the background color of comments"] = "Ajusta el color de fondo de los comentarios";
-$a->strings["Set the border color of comments"] = "Ajusta el color del borde de los comentarios";
-$a->strings["Set the indent for comments"] = "Ajusta la indentación de los comentarios";
-$a->strings["Set the basic color for item icons"] = "Ajusta el color básico para los iconos de los elementos";
-$a->strings["Set the hover color for item icons"] = "Ajusta el color flotante para los iconos de los artículos";
-$a->strings["Set font-size for the entire application"] = "Ajusta el tamaño del tipo de letra para toda la aplicación";
+$a->strings["Set font-color for banner"] = "Ajustar el color del tipo de letra para el \"banner\"";
+$a->strings["Set the background color"] = "Ajustar el color de fondo";
+$a->strings["Set the background image"] = "Ajustar la imagen de fondo";
+$a->strings["Set the background color of items"] = "Ajustar el color de los elementos de fondo";
+$a->strings["Set the background color of comments"] = "Ajustar el color de fondo de los comentarios";
+$a->strings["Set the border color of comments"] = "Ajustar el color del borde de los comentarios";
+$a->strings["Set the indent for comments"] = "Ajustar la indentación de los comentarios";
+$a->strings["Set the basic color for item icons"] = "Ajustar el color básico para los iconos de los elementos";
+$a->strings["Set the hover color for item icons"] = "Ajustar el color flotante para los iconos de los elementos";
+$a->strings["Set font-size for the entire application"] = "Ajustar el tamaño de letra para toda la aplicación";
$a->strings["Example: 14px"] = "Ejemplo: 14px";
-$a->strings["Set font-color for posts and comments"] = "Establecer el color de la fuente para publicaciones y comentarios";
+$a->strings["Set font-color for posts and comments"] = "Establecer el color de la letra para publicaciones y comentarios";
$a->strings["Set radius of corners"] = "Establecer el radio de curvatura de las esquinas";
-$a->strings["Set shadow depth of photos"] = "Ajusta profundidad de sombras de las fotos";
-$a->strings["Set maximum width of content region in pixel"] = "Ajusta la anchura máxima de la región de contenido, en pixels";
-$a->strings["Leave empty for default width"] = "Deja en blanco para la anchura predeterminada";
+$a->strings["Set shadow depth of photos"] = "Ajustar la profundidad de sombras de las fotos";
+$a->strings["Set maximum width of content region in pixel"] = "Ajustar la anchura máxima de la región de contenido, en pixels";
+$a->strings["Leave empty for default width"] = "Dejar en blanco para la anchura predeterminada";
$a->strings["Center page content"] = "Contenido del centro de la página";
-$a->strings["Set minimum opacity of nav bar - to hide it"] = "Ajusta la opacidad mínima de la barra de navegación - para ocultarla";
-$a->strings["Set size of conversation author photo"] = "Ajusta el tamaño de la foto del autor de la conversación";
-$a->strings["Set size of followup author photos"] = "Ajusta el tamaño de foto de los seguidores del autor";
+$a->strings["Set minimum opacity of nav bar - to hide it"] = "Ajustar la opacidad mínima de la barra de navegación - para ocultarla";
+$a->strings["Set size of conversation author photo"] = "Ajustar el tamaño de la foto del autor de la conversación";
+$a->strings["Set size of followup author photos"] = "Ajustar el tamaño de foto de los seguidores del autor";
$a->strings["Update %s failed. See error logs."] = "La actualización %s ha fallado. Mire el informe de errores.";
$a->strings["Update Error at %s"] = "Error de Actualización en %s";
-$a->strings["Create an account to access services and applications within the Red Matrix"] = "Crea una cuenta para acceder a los servicios y aplicaciones dentro de Red Matrix";
+$a->strings["Create an account to access services and applications within the Red Matrix"] = "Crear una cuenta para acceder a los servicios y aplicaciones dentro de la red";
$a->strings["Password"] = "Contraseña";
-$a->strings["Remember me"] = "Recuérdeme";
+$a->strings["Remember me"] = "Recordarme";
$a->strings["Forgot your password?"] = "¿Olvidó su contraseña?";
-$a->strings["toggle mobile"] = "cambiar a móvil";
+$a->strings["toggle mobile"] = "cambiar a modo móvil";
$a->strings["Website SSL certificate is not valid. Please correct."] = "El certificado SSL del sitio web no es válido. Por favor, corríjalo.";
-$a->strings["[red] Website SSL error for %s"] = "[red] SSL error de Sitio Web en %s";
-$a->strings["Cron/Scheduled tasks not running."] = "Las tareas de Cron/Planificador no funcionan.";
+$a->strings["[red] Website SSL error for %s"] = "[red] Error SSL del sitio web en %s";
+$a->strings["Cron/Scheduled tasks not running."] = "Las tareas del Planificador/Cron no se están funcionando.";
$a->strings["[red] Cron tasks not running on %s"] = "[red] Las tareas de Cron no están funcionando en %s";
diff --git a/view/js/main.js b/view/js/main.js
index 5fe778488..77184465d 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -135,7 +135,7 @@ function insertCommentURL(comment, id) {
if(reply && reply.length) {
reply = bin2hex(reply);
$('body').css('cursor', 'wait');
- $.get('parse_url?binurl=' + reply, function(data) {
+ $.get('linkinfo?f=&binurl=' + reply, function(data) {
var tmpStr = $("#comment-edit-text-" + id).val();
if(tmpStr == comment) {
tmpStr = "";
diff --git a/view/nl/strings.php b/view/nl/strings.php
index ce98c8a3d..37bb0c32b 100644
--- a/view/nl/strings.php
+++ b/view/nl/strings.php
@@ -1761,17 +1761,18 @@ $a->strings["Destination URL"] = "Doel-URL";
$a->strings["Mark hub permanently offline"] = "Hub als permanent offline markeren";
$a->strings["Empty queue for this hub"] = "Berichtenwachtrij voor deze hub legen";
$a->strings["Last known contact"] = "Voor het laatst contact";
-$a->strings["%s user blocked/unblocked"] = array(
+$a->strings["%s account blocked/unblocked"] = array(
0 => "%s account geblokkeerd/gedeblokkeerd",
1 => "%s accounts geblokkeerd/gedeblokkeerd",
);
-$a->strings["%s user deleted"] = array(
+$a->strings["%s account deleted"] = array(
0 => "%s account verwijderd",
1 => "%s accounts verwijderd",
);
$a->strings["Account not found"] = "Account niet gevonden";
-$a->strings["User '%s' blocked"] = "Lid '%s' geblokkeerd";
-$a->strings["User '%s' unblocked"] = "Account '%s' gedeblokkeerd";
+$a->strings["Account '%s' deleted"] = "Account '%s' verwijderd";
+$a->strings["Account '%s' blocked"] = "Account '%s' geblokkeerd";
+$a->strings["Account '%s' unblocked"] = "Account '%s' gedeblokkeerd";
$a->strings["Users"] = "Accounts";
$a->strings["select all"] = "alles selecteren";
$a->strings["User registrations waiting for confirm"] = "Accounts die op goedkeuring wachten";
@@ -1785,8 +1786,8 @@ $a->strings["Register date"] = "Geregistreerd";
$a->strings["Last login"] = "Laatste keer ingelogd";
$a->strings["Expires"] = "Verloopt";
$a->strings["Service Class"] = "Abonnementen";
-$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?";
-$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?";
+$a->strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?";
+$a->strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?";
$a->strings["%s channel censored/uncensored"] = array(
0 => "%s kanaal gecensureerd/ongecensureerd",
1 => "%s kanalen gecensureerd/ongecensureerd",
diff --git a/view/pdl/mod_events.pdl b/view/pdl/mod_events.pdl
new file mode 100644
index 000000000..5a9763297
--- /dev/null
+++ b/view/pdl/mod_events.pdl
@@ -0,0 +1,3 @@
+[region=aside]
+[widget=tasklist][/widget]
+[/region]
diff --git a/view/pdl/mod_help.pdl b/view/pdl/mod_help.pdl
new file mode 100644
index 000000000..bafad3839
--- /dev/null
+++ b/view/pdl/mod_help.pdl
@@ -0,0 +1,3 @@
+[region=aside]
+[widget=helpindex][/widget]
+[/region]
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index 046d8471b..25436db5f 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -2293,6 +2293,14 @@ nav .badge.mail-update:hover {
background-color: #337AB7;
}
-.channels_ckbx, .pending_ckbx, .users_ckbx {
+/*.channels_ckbx, .pending_ckbx, .users_ckbx {
margin-top: -5px !important;
+}*/
+
+.help-searchlist {
+ list-style-type: none;
}
+
+.help-searchlist a {
+ font-size: 130%;
+} \ No newline at end of file
diff --git a/view/tpl/admin_channels.tpl b/view/tpl/admin_channels.tpl
index a3390b179..8a2f4458a 100755
--- a/view/tpl/admin_channels.tpl
+++ b/view/tpl/admin_channels.tpl
@@ -32,7 +32,7 @@
<td class='channel_id'>{{$c.channel_id}}</td>
<td class='channel_name'><a href="channel/{{$c.channel_address}}">{{$c.channel_name}}</a></td>
<td class='channel_address'>{{$c.channel_address}}</td>
- <td class="checkbox"><input type="checkbox" class="channels_ckbx" id="id_channel_{{$c.channel_id}}" name="channel[]" value="{{$c.channel_id}}"/></td>
+ <td class="checkbox_bulkedit"><input type="checkbox" class="channels_ckbx" id="id_channel_{{$c.channel_id}}" name="channel[]" value="{{$c.channel_id}}"/></td>
<td class="tools">
<a href="{{$baseurl}}/admin/channels/block/{{$c.channel_id}}?t={{$form_security_token}}" class="btn btn-default btn-xs" title='{{if ($c.blocked)}}{{$unblock}}{{else}}{{$block}}{{/if}}'><i class='icon-ban-circle admin-icons {{if ($c.blocked)}}dim{{/if}}'></i></a>
<a href="{{$baseurl}}/admin/channels/code/{{$c.channel_id}}?t={{$form_security_token}}" class="btn btn-default btn-xs" title='{{if ($c.allowcode)}}{{$uncode}}{{else}}{{$code}}{{/if}}'><i class='icon-terminal admin-icons {{if ($c.allowcode)}}dim{{/if}}'></i></a>
diff --git a/view/tpl/admin_users.tpl b/view/tpl/admin_users.tpl
index aa0abb12f..f372911a0 100755
--- a/view/tpl/admin_users.tpl
+++ b/view/tpl/admin_users.tpl
@@ -31,7 +31,7 @@
<tr>
<td class="created">{{$u.account_created}}</td>
<td class="email">{{$u.account_email}}</td>
- <td class="checkbox"><input type="checkbox" class="pending_ckbx" id="id_pending_{{$u.hash}}" name="pending[]" value="{{$u.hash}}"></td>
+ <td class="checkbox_bulkedit"><input type="checkbox" class="pending_ckbx" id="id_pending_{{$u.hash}}" name="pending[]" value="{{$u.hash}}"></td>
<td class="tools">
<a href="{{$baseurl}}/regmod/allow/{{$u.hash}}" class="btn btn-default btn-xs" title="{{$approve}}"><i class="icon-thumbs-up-alt admin-icons"></i></a>
<a href="{{$baseurl}}/regmod/deny/{{$u.hash}}" class="btn btn-default btn-xs" title="{{$deny}}"><i class="icon-thumbs-down-alt admin-icons"></i></a>
@@ -71,7 +71,7 @@
<td class="login_date">{{$u.account_lastlog}}</td>
<td class="account_expires">{{$u.account_expires}}</td>
<td class="service_class">{{$u.account_service_class}}</td>
- <td class="checkbox"><input type="checkbox" class="users_ckbx" id="id_user_{{$u.account_id}}" name="user[]" value="{{$u.account_id}}"><input type="hidden" name="blocked[]" value="{{$u.blocked}}"></td>
+ <td class="checkbox_bulkedit"><input type="checkbox" class="users_ckbx" id="id_user_{{$u.account_id}}" name="user[]" value="{{$u.account_id}}"><input type="hidden" name="blocked[]" value="{{$u.blocked}}"></td>
<td class="tools">
<a href="{{$baseurl}}/admin/users/{{if ($u.blocked)}}un{{/if}}block/{{$u.account_id}}?t={{$form_security_token}}" class="btn btn-default btn-xs" title='{{if ($u.blocked)}}{{$unblock}}{{else}}{{$block}}{{/if}}'><i class="icon-ban-circle admin-icons{{if ($u.blocked)}} dim{{/if}}"></i></a><a href="{{$baseurl}}/admin/users/delete/{{$u.account_id}}?t={{$form_security_token}}" class="btn btn-default btn-xs" title='{{$delete}}' onclick="return confirm_delete('{{$u.name}}')"><i class="icon-trash admin-icons"></i></a>
</td>
diff --git a/view/tpl/app.tpl b/view/tpl/app.tpl
index cebc17d45..727be5eba 100644
--- a/view/tpl/app.tpl
+++ b/view/tpl/app.tpl
@@ -1,4 +1,5 @@
<div class="app-container">
+<div class="app-detail">
<a href="{{$app.url}}" {{if $ap.target}}target="{{$ap.target}}" {{/if}}{{if $app.desc}}title="{{$app.desc}}{{if $app.price}} ({{$app.price}}){{/if}}"{{else}}title="{{$app.name}}"{{/if}}><img src="{{$app.photo}}" width="80" height="80" />
<div class="app-name" style="text-align:center;">{{$app.name}}</div>
</a>
@@ -6,7 +7,9 @@
{{if $purchase}}
<a href="{{$app.page}}" class="btn btn-default" title="{{$purchase}}" ><i class="icon-external"></i></a>
{{/if}}
+</div>
{{if $install || $update || $delete }}
+<div class="app-tools">
<form action="{{$hosturl}}appman" method="post">
<input type="hidden" name="papp" value="{{$app.papp}}" />
{{if $install}}<button type="submit" name="install" value="{{$install}}" class="btn btn-default" title="{{$install}}" ><i class="icon-download-alt" ></i></button>{{/if}}
@@ -16,4 +19,5 @@
{{/if}}
{{/if}}
</div>
+</div>
diff --git a/view/tpl/event_form.tpl b/view/tpl/event_form.tpl
index d2562f080..15505397b 100755
--- a/view/tpl/event_form.tpl
+++ b/view/tpl/event_form.tpl
@@ -12,6 +12,7 @@
<input type="hidden" name="event_hash" value="{{$event_hash}}" />
<input type="hidden" name="xchan" value="{{$xchan}}" />
<input type="hidden" name="mid" value="{{$mid}}" />
+<input type="hidden" name="type" value="{{$type}}" />
<input type="hidden" name="preview" id="event-edit-preview" value="0" />
<div id="event-summary-text">{{$t_text}}</div>
@@ -92,14 +93,6 @@
</div>
</div>
-
-<!-- <div class="btn-group pull-right" id="comment-edit-submit-wrapper-desc">
- {{if $preview}}
- <button id="comment-edit-submit-desc" class="btn btn-default btn-xs" onclick="preview_comment(desc); return false;" title="{{$preview}}">
- <i class="icon-eye-open comment-icon" ></i>
- </button>
- {{/if}}
--->
</div>
<div class="clear"></div>
diff --git a/view/tpl/item_import.tpl b/view/tpl/item_import.tpl
new file mode 100755
index 000000000..65de7fcaf
--- /dev/null
+++ b/view/tpl/item_import.tpl
@@ -0,0 +1,15 @@
+<h2>{{$title}}</h2>
+
+<form action="import_items" method="post" enctype="multipart/form-data" id="import-channel-form">
+
+ <div id="import-desc" class="descriptive-paragraph">{{$desc}}</div>
+
+ <label for="import-filename" id="label-import-filename" class="import-label" >{{$label_filename}}</label>
+ <input type="file" name="filename" id="import-filename" class="import-input" value="" />
+ <div id="import-filename-end" class="import-field-end"></div>
+
+ <input type="submit" name="submit" id="import-submit-button" value="{{$submit}}" />
+ <div id="import-submit-end" class="import-field-end"></div>
+
+</form>
+
diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl
index 4121882b7..49369ab63 100755
--- a/view/tpl/jot-header.tpl
+++ b/view/tpl/jot-header.tpl
@@ -191,7 +191,7 @@ function enableOnUser(){
if(reply && reply.length) {
reply = bin2hex(reply);
$('#profile-rotator').spin('tiny');
- $.get('{{$baseurl}}/parse_url?binurl=' + reply, function(data) {
+ $.get('{{$baseurl}}/linkinfo?f=&binurl=' + reply, function(data) {
addeditortext(data);
$('#profile-rotator').spin(false);
});
@@ -258,7 +258,7 @@ function enableOnUser(){
if(reply && reply.length) {
reply = bin2hex(reply);
$('#profile-rotator').spin('tiny');
- $.get('{{$baseurl}}/parse_url?binurl=' + reply, function(data) {
+ $.get('{{$baseurl}}/linkinfo?f=&binurl=' + reply, function(data) {
if (!editor) $("#profile-jot-text").val("");
initEditor(function(){
addeditortext(data);
diff --git a/view/tpl/msg-header.tpl b/view/tpl/msg-header.tpl
index e1d1c6d23..2119d3b02 100755
--- a/view/tpl/msg-header.tpl
+++ b/view/tpl/msg-header.tpl
@@ -78,7 +78,7 @@ else
reply = prompt("{{$linkurl}}");
if(reply && reply.length) {
$('#prvmail-rotator').spin('tiny');
- $.get('parse_url?url=' + reply, function(data) {
+ $.get('linkinfo?f=&url=' + reply, function(data) {
addmailtext(data);
$('#prvmail-rotator').spin(false);
});
@@ -104,7 +104,7 @@ else
event.preventDefault();
if(reply && reply.length) {
$('#prvmail-rotator').spin('tiny');
- $.get('parse_url?url=' + reply, function(data) {
+ $.get('linkinfo?f=&url=' + reply, function(data) {
addmailtext(data);
$('#prvmail-rotator').spin(false);
});
diff --git a/view/tpl/myapps.tpl b/view/tpl/myapps.tpl
index 1a591f9f8..ccb995849 100755
--- a/view/tpl/myapps.tpl
+++ b/view/tpl/myapps.tpl
@@ -1,9 +1,7 @@
<h3>{{$title}}</h3>
{{foreach $apps as $ap}}
-<div class="app-container">
{{$ap}}
-</div>
{{/foreach}}
<div class="clear"></div>
diff --git a/view/tpl/profile_advanced.tpl b/view/tpl/profile_advanced.tpl
index 1f99bf1ad..a4413e536 100755
--- a/view/tpl/profile_advanced.tpl
+++ b/view/tpl/profile_advanced.tpl
@@ -204,7 +204,7 @@
<b>{{$profile.fullname.1}} {{$key}}</b>
<ul class="profile-thing-list">
{{foreach $items as $item}}
- <li>{{if $item.img}}<img src="{{$item.img}}" width="100" height="100" alt="{{$item.term}}" />{{/if}}
+ <li>{{if $item.img}}<a href="{{$item.url}}" ><img src="{{$item.img}}" width="100" height="100" alt="{{$item.term}}" /></a>{{/if}}
<a href="{{$item.url}}" >{{$item.term}}</a>
{{if $profile.canlike}}<br />
<button type="button" class="btn btn-default btn-sm" onclick="doprofilelike('thing/' + '{{$item.term_hash}}','like'); return false;" title="{{$likethis}}" >
diff --git a/view/tpl/show_thing.tpl b/view/tpl/show_thing.tpl
index 9aacc8958..c98003ea2 100644
--- a/view/tpl/show_thing.tpl
+++ b/view/tpl/show_thing.tpl
@@ -1,13 +1,13 @@
<h2>{{$header}}</h2>
{{if $thing}}
<div class="thing-show">
-{{if $thing.imgurl}}<img src="{{$thing.imgurl}}" width="175" height="175" alt="{{$thing.term}}" />{{/if}}
-<a href="{{$thing.url}}" >{{$thing.term}}</a>
+{{if $thing.obj_imgurl}}<a href="{{$thing.obj_url}}" ><img src="{{$thing.obj_imgurl}}" width="175" height="175" alt="{{$thing.obj_term}}" /></a>{{/if}}
+<a href="{{$thing.obj_url}}" >{{$thing.obj_term}}</a>
</div>
{{if $canedit}}
<div class="thing-edit-links">
-<a href="thing/edit/{{$thing.term_hash}}" title="{{$edit}}" class="btn btn-default" ><i class="icon-pencil thing-edit-icon"></i></a>
-<a href="thing/drop/{{$thing.term_hash}}" onclick="return confirmDelete();" title="{{$delete}}" class="btn btn-default" ><i class="icon-trash drop-icons"></i></a>
+<a href="thing/edit/{{$thing.obj_obj}}" title="{{$edit}}" class="btn btn-default" ><i class="icon-pencil thing-edit-icon"></i></a>
+<a href="thing/drop/{{$thing.obj_obj}}" onclick="return confirmDelete();" title="{{$delete}}" class="btn btn-default" ><i class="icon-trash drop-icons"></i></a>
</div>
<div class="thing-edit-links-end"></div>
{{/if}}
diff --git a/view/tpl/thing_edit.tpl b/view/tpl/thing_edit.tpl
index b170f152c..d513d2855 100644
--- a/view/tpl/thing_edit.tpl
+++ b/view/tpl/thing_edit.tpl
@@ -29,5 +29,14 @@
<div class="thing-end"></div>
+{{$aclselect}}
+
+{{if $lockstate}}
+ <button id="dbtn-acl" class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" onclick="return false;">
+ <i id="jot-perms-icon" class="icon-{{$lockstate}}"></i>
+ </button>
+{{/if}}
+
+
<input type="submit" class="thing-submit" name="submit" value="{{$submit}}" />
</form>
diff --git a/view/tpl/thing_input.tpl b/view/tpl/thing_input.tpl
index e93a1aa65..22f8f5cb6 100644
--- a/view/tpl/thing_input.tpl
+++ b/view/tpl/thing_input.tpl
@@ -29,5 +29,14 @@
<div class="thing-end"></div>
+{{$aclselect}}
+
+{{if $lockstate}}
+ <button id="dbtn-acl" class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" onclick="return false;">
+ <i id="jot-perms-icon" class="icon-{{$lockstate}}"></i>
+ </button>
+{{/if}}
+
+
<input type="submit" class="thing-submit" name="submit" value="{{$submit}}" />
</form>