Merge pull request #5 from redmatrix/master

updating from original codebase
This commit is contained in:
mrjive 2015-09-29 08:01:51 +02:00
commit 11c1573b55
97 changed files with 137811 additions and 3250 deletions

View File

@ -50,7 +50,7 @@ define ( 'PLATFORM_NAME', 'hubzilla' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'H'); define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'H');
define ( 'ZOT_REVISION', 1 ); define ( 'ZOT_REVISION', 1 );
define ( 'DB_UPDATE_VERSION', 1154 ); define ( 'DB_UPDATE_VERSION', 1156 );
/** /**
* @brief Constant with a HTML line break. * @brief Constant with a HTML line break.
@ -333,6 +333,12 @@ define ( 'MENU_ITEM_ZID', 0x0001);
define ( 'MENU_ITEM_NEWWIN', 0x0002); define ( 'MENU_ITEM_NEWWIN', 0x0002);
define ( 'MENU_ITEM_CHATROOM', 0x0004); define ( 'MENU_ITEM_CHATROOM', 0x0004);
define ( 'SITE_TYPE_ZOT', 0);
define ( 'SITE_TYPE_NOTZOT', 1);
define ( 'SITE_TYPE_UNKNOWN', 2);
/** /**
* Poll/Survey types * Poll/Survey types
*/ */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
images/hubzilla_logo_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
images/hubzilla_logo_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
images/hubzilla_logo_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
images/hubzilla_logo_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
images/hubzilla_logo_5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
images/hubzilla_logo_6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 B

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 992 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -25,8 +25,9 @@ function checksites_run($argv, $argc){
if($days < 1) if($days < 1)
$days = 30; $days = 30;
$r = q("select * from site where site_dead = 0 and site_update < %s - INTERVAL %s $sql_options ", $r = q("select * from site where site_dead = 0 and site_update < %s - INTERVAL %s and site_type = %d $sql_options ",
db_utcnow(), db_quoteinterval($days . ' DAY') db_utcnow(), db_quoteinterval($days . ' DAY'),
intval(SITE_TYPE_ZOT)
); );
if(! $r) if(! $r)

View File

@ -53,18 +53,43 @@ function deliver_run($argv, $argc) {
continue; continue;
} }
} }
else {
// zot sites should all have a site record, unless they've been dead for as long as
// your site has existed. Since we don't know for sure what these sites are,
// call them unknown
q("insert into site (site_url, site_update, site_dead, site_type) values ('%s','%s',0,%d) ",
dbesc($base),
dbesc(datetime_convert()),
intval(($r[0]['outq_driver'] === 'post') ? SITE_TYPE_NOTZOT : SITE_TYPE_UNKNOWN)
);
}
} }
} }
// "post" queue driver - used for diaspora and friendica-over-diaspora communications. // "post" queue driver - used for diaspora and friendica-over-diaspora communications.
if($r[0]['outq_driver'] === 'post') { if($r[0]['outq_driver'] === 'post') {
$result = z_post_url($r[0]['outq_posturl'],$r[0]['outq_msg']); $result = z_post_url($r[0]['outq_posturl'],$r[0]['outq_msg']);
if($result['success'] && $result['return_code'] < 300) { if($result['success'] && $result['return_code'] < 300) {
logger('deliver: queue post success to ' . $r[0]['outq_posturl'], LOGGER_DEBUG); logger('deliver: queue post success to ' . $r[0]['outq_posturl'], LOGGER_DEBUG);
q("update site set site_update = '%s', site_dead = 0 where site_url = '%s' ",
dbesc(datetime_convert()),
dbesc($site_url)
);
q("update dreport set status = '%s', dreport_time = '%s' where dreport_queue = '%s' limit 1",
dbesc('accepted for delivery'),
dbesc(datetime_convert()),
dbesc($argv[$x])
);
$y = q("delete from outq where outq_hash = '%s'", $y = q("delete from outq where outq_hash = '%s'",
dbesc($argv[$x]) dbesc($argv[$x])
); );
} }
else { else {
logger('deliver: queue post returned ' . $result['return_code'] . ' from ' . $r[0]['outq_posturl'],LOGGER_DEBUG); logger('deliver: queue post returned ' . $result['return_code'] . ' from ' . $r[0]['outq_posturl'],LOGGER_DEBUG);

29
include/deliver_hooks.php Normal file
View File

@ -0,0 +1,29 @@
<?php
require_once('include/cli_startup.php');
require_once('include/zot.php');
function deliver_hooks_run($argv, $argc) {
cli_startup();
$a = get_app();
if($argc < 2)
return;
$r = q("select * from item where id = '%d'",
intval($argv[1])
);
if($r)
call_hooks('notifier_normal',$r[0]);
}
if (array_search(__file__,get_included_files())===0){
deliver_hooks_run($argv,$argc);
killme();
}

View File

@ -151,16 +151,18 @@ function sync_directories($dirmode) {
$realm = get_directory_realm(); $realm = get_directory_realm();
if ($realm == DIRECTORY_REALM) { if ($realm == DIRECTORY_REALM) {
$r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and ( site_realm = '%s' or site_realm = '') ", $r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and site_type = %d and ( site_realm = '%s' or site_realm = '') ",
intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY), intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY),
dbesc(z_root()), dbesc(z_root()),
intval(SITE_TYPE_ZOT),
dbesc($realm) dbesc($realm)
); );
} else { } else {
$r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and site_realm like '%s' ", $r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and site_realm like '%s' and site_type = %d ",
intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY), intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY),
dbesc(z_root()), dbesc(z_root()),
dbesc(protect_sprintf('%' . $realm . '%')) dbesc(protect_sprintf('%' . $realm . '%')),
intval(SITE_TYPE_ZOT)
); );
} }
@ -187,9 +189,10 @@ function sync_directories($dirmode) {
intval($r[0]['site_valid']) intval($r[0]['site_valid'])
); );
$r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s'", $r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and site_type = %d ",
intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY), intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY),
dbesc(z_root()) dbesc(z_root()),
intval(SITE_TYPE_ZOT)
); );
} }
if (! $r) if (! $r)

View File

@ -526,11 +526,15 @@ function event_import_ical($ical, $uid) {
// logger('dtstart: ' . var_export($dtstart,true)); // logger('dtstart: ' . var_export($dtstart,true));
if(($dtstart->timezone_type == 2) || (($dtstart->timezone_type == 3) && ($dtstart->timezone === 'UTC'))) {
$ev['adjust'] = 1; switch($dtstart->timezone_type) {
} case VObject\Property\DateTime::UTC :
else {
$ev['adjust'] = 0; $ev['adjust'] = 0;
break;
case VObject\Property\DateTime::LOCALTZ :
default:
$ev['adjust'] = 1;
break;
} }
$ev['start'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC', $ev['start'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
@ -751,11 +755,14 @@ function event_store_item($arr, $event) {
} }
} }
$item_arr = array(); $item_arr = array();
$prefix = ''; $prefix = '';
// $birthday = false; // $birthday = false;
if($event['type'] === 'birthday') { if($event['type'] === 'birthday') {
if(! is_sys_channel($arr['uid']))
$prefix = t('This event has been added to your calendar.'); $prefix = t('This event has been added to your calendar.');
// $birthday = true; // $birthday = true;

View File

@ -28,9 +28,10 @@ function externals_run($argv, $argc){
} }
else { else {
$randfunc = db_getfunc('RAND'); $randfunc = db_getfunc('RAND');
$r = q("select site_url, site_pull from site where site_url != '%s' and site_flags != %d order by $randfunc limit 1", $r = q("select site_url, site_pull from site where site_url != '%s' and site_flags != %d and site_type = %d order by $randfunc limit 1",
dbesc(z_root()), dbesc(z_root()),
intval(DIRECTORY_MODE_STANDALONE) intval(DIRECTORY_MODE_STANDALONE),
intval(SITE_TYPE_ZOT)
); );
if($r) if($r)
$url = $r[0]['site_url']; $url = $r[0]['site_url'];

View File

@ -16,7 +16,9 @@ function is_matrix_url($url) {
function prune_hub_reinstalls() { function prune_hub_reinstalls() {
$r = q("select site_url from site where true"); $r = q("select site_url from site where site_type = %d",
intval(SITE_TYPE_ZOT)
);
if($r) { if($r) {
foreach($r as $rr) { foreach($r as $rr) {
$x = q("select count(*) as t, hubloc_sitekey, max(hubloc_connected) as c from hubloc where hubloc_url = '%s' group by hubloc_sitekey order by c", $x = q("select count(*) as t, hubloc_sitekey, max(hubloc_connected) as c from hubloc where hubloc_url = '%s' group by hubloc_sitekey order by c",

View File

@ -616,6 +616,10 @@ function identity_basic_export($channel_id, $items = false) {
} }
} }
$addon = array('channel_id' => $channel_id,'data' => $ret);
call_hooks('identity_basic_export',$addon);
$ret = $addon['data'];
if(! $items) if(! $items)
return $ret; return $ret;

View File

@ -120,7 +120,11 @@ function load_translation_table($lang, $install = false) {
global $a; global $a;
$a->strings = array(); $a->strings = array();
if(file_exists("view/$lang/strings.php")) {
if(file_exists("view/$lang/hstrings.php")) {
include("view/$lang/hstrings.php");
}
elseif(file_exists("view/$lang/strings.php")) {
include("view/$lang/strings.php"); include("view/$lang/strings.php");
} }
@ -129,7 +133,10 @@ function load_translation_table($lang, $install = false) {
if ($plugins !== false) { if ($plugins !== false) {
foreach($plugins as $p) { foreach($plugins as $p) {
$name = $p['name']; $name = $p['name'];
if(file_exists("addon/$name/lang/$lang/strings.php")) { if(file_exists("addon/$name/lang/$lang/hstrings.php")) {
include("addon/$name/lang/$lang/hstrings.php");
}
elseif(file_exists("addon/$name/lang/$lang/strings.php")) {
include("addon/$name/lang/$lang/strings.php"); include("addon/$name/lang/$lang/strings.php");
} }
} }
@ -139,7 +146,10 @@ function load_translation_table($lang, $install = false) {
// Allow individual strings to be over-ridden on this site // Allow individual strings to be over-ridden on this site
// Either for the default language or for all languages // Either for the default language or for all languages
if(file_exists("view/local-$lang/strings.php")) { if(file_exists("view/local-$lang/hstrings.php")) {
include("view/local-$lang/hstrings.php");
}
elseif(file_exists("view/local-$lang/strings.php")) {
include("view/local-$lang/strings.php"); include("view/local-$lang/strings.php");
} }
} }

View File

@ -262,18 +262,30 @@ function private_messages_list($uid, $mailbox = '', $start = 0, $numitems = 0) {
); );
if(! $x) if(! $x)
return array(); return array();
if($mailbox === 'inbox')
$where = " and sender_xchan != '" . dbesc($x[0]['channel_hash']) . "' "; $channel_hash = dbesc($x[0]['channel_hash']);
elseif($mailbox === 'outbox') $local_channel = intval(local_channel());
$where = " and sender_xchan = '" . dbesc($x[0]['channel_hash']) . "' ";
switch($mailbox) {
case 'inbox':
$sql = "SELECT * FROM mail WHERE channel_id = $local_channel AND from_xchan != '$channel_hash' ORDER BY created DESC $limit";
break;
case 'outbox':
$sql = "SELECT * FROM mail WHERE channel_id = $local_channel AND from_xchan = '$channel_hash' ORDER BY created DESC $limit";
break;
case 'combined':
$sql = "SELECT * FROM ( SELECT * FROM mail WHERE channel_id = $local_channel ORDER BY created DESC $limit ) AS temp_table GROUP BY parent_mid ORDER BY created DESC";
break;
} }
// For different orderings, consider applying usort on the results. We thought of doing that }
// inside this function or having some preset sorts, but don't wish to limit app developers.
$r = q($sql);
$r = q("SELECT * from mail WHERE channel_id = %d $where order by created desc $limit",
intval(local_channel())
);
if(! $r) { if(! $r) {
return array(); return array();
} }

View File

@ -185,11 +185,11 @@ EOT;
$nav['notifications']['all']=array('notifications/system', t('See all notifications'), "", ""); $nav['notifications']['all']=array('notifications/system', t('See all notifications'), "", "");
$nav['notifications']['mark'] = array('', t('Mark all system notifications seen'), '',''); $nav['notifications']['mark'] = array('', t('Mark all system notifications seen'), '','');
$nav['messages'] = array('message', t('Mail'), "", t('Private mail'),'mail_nav_btn'); $nav['messages'] = array('mail/combined', t('Mail'), "", t('Private mail'),'mail_nav_btn');
$nav['messages']['all']=array('message', t('See all private messages'), "", ""); $nav['messages']['all']=array('mail/combined', t('See all private messages'), "", "");
$nav['messages']['mark'] = array('', t('Mark all private messages seen'), '',''); $nav['messages']['mark'] = array('', t('Mark all private messages seen'), '','');
$nav['messages']['inbox'] = array('message', t('Inbox'), "", t('Inbox')); $nav['messages']['inbox'] = array('mail/inbox', t('Inbox'), "", t('Inbox'));
$nav['messages']['outbox']= array('message/sent', t('Outbox'), "", t('Outbox')); $nav['messages']['outbox']= array('mail/outbox', t('Outbox'), "", t('Outbox'));
$nav['messages']['new'] = array('mail/new', t('New Message'), "", t('New Message')); $nav['messages']['new'] = array('mail/new', t('New Message'), "", t('New Message'));

View File

@ -579,7 +579,7 @@ function notifier_run($argv, $argc){
if($deliveries_per_process <= 0) if($deliveries_per_process <= 0)
$deliveries_per_process = 1; $deliveries_per_process = 1;
$deliver = array(); $deliveries = array();
foreach($dhubs as $hub) { foreach($dhubs as $hub) {
@ -675,7 +675,22 @@ function notifier_run($argv, $argc){
); );
} }
} }
$deliver[] = $hash;
$deliveries[] = $hash;
}
if($normal_mode) {
$x = q("select * from hook where hook = 'notifier_normal'");
if($x)
proc_run('php','deliver_hooks.php', $target_item['id']);
}
if($deliveries) {
$deliver = array();
foreach($deliveries as $d) {
$deliver[] = $d;
if(count($deliver) >= $deliveries_per_process) { if(count($deliver) >= $deliveries_per_process) {
proc_run('php','include/deliver.php',$deliver); proc_run('php','include/deliver.php',$deliver);
@ -684,19 +699,15 @@ function notifier_run($argv, $argc){
@time_sleep_until(microtime(true) + (float) $interval); @time_sleep_until(microtime(true) + (float) $interval);
} }
} }
}
// catch any stragglers // catch any stragglers
if(count($deliver)) { if($deliver)
proc_run('php','include/deliver.php',$deliver); proc_run('php','include/deliver.php',$deliver);
}
logger('notifier: basic loop complete.', LOGGER_DEBUG); logger('notifier: basic loop complete.', LOGGER_DEBUG);
if($normal_mode)
call_hooks('notifier_normal',$target_item);
call_hooks('notifier_end',$target_item); call_hooks('notifier_end',$target_item);
logger('notifer: complete.'); logger('notifer: complete.');

View File

@ -591,12 +591,29 @@ function import_xchan_photo($photo,$xchan,$thing = false) {
if(! $type) if(! $type)
$type = 'image/jpeg'; $type = 'image/jpeg';
$result = z_fetch_url($photo,true); $result = z_fetch_url($photo,true);
if($result['success']) if($result['success']) {
$img_str = $result['body']; $img_str = $result['body'];
$h = explode("\n",$result['header']);
if($h) {
foreach($h as $hl) {
if(stristr($hl,'content-type:')) {
if(! stristr($hl,'image/')) {
$photo_failure = true;
}
}
}
}
}
}
else {
$photo_failure = true;
} }
if(! $photo_failure) {
$img = photo_factory($img_str, $type); $img = photo_factory($img_str, $type);
if($img->is_valid()) { if($img->is_valid()) {
$width = $img->getWidth(); $width = $img->getWidth();
@ -653,6 +670,7 @@ function import_xchan_photo($photo,$xchan,$thing = false) {
logger('import_xchan_photo: invalid image from ' . $photo); logger('import_xchan_photo: invalid image from ' . $photo);
$photo_failure = true; $photo_failure = true;
} }
}
if($photo_failure) { if($photo_failure) {
$photo = $a->get_baseurl() . '/' . get_default_profile_photo(); $photo = $a->get_baseurl() . '/' . get_default_profile_photo();
$thumb = $a->get_baseurl() . '/' . get_default_profile_photo(80); $thumb = $a->get_baseurl() . '/' . get_default_profile_photo(80);

View File

@ -22,6 +22,22 @@ function queue_run($argv, $argc){
logger('queue: start'); logger('queue: start');
$r = q("select outq_posturl from outq where outq_created < %s - INTERVAL %s",
db_utcnow(), db_quoteinterval('3 DAY')
);
if($r) {
foreach($r as $rr) {
$site_url = '';
$h = parse_url($rr['outq_posturl']);
$desturl = $h['scheme'] . '://' . $h['host'] . (($h['port']) ? ':' . $h['port'] : '');
q("update site set site_dead = 1 where site_dead = 0 and site_url = '%s' and site_update < %s - INTERVAL %s",
dbesc($desturl),
db_utcnow(), db_quoteinterval('1 MONTH')
);
}
}
$r = q("DELETE FROM outq WHERE outq_created < %s - INTERVAL %s", $r = q("DELETE FROM outq WHERE outq_created < %s - INTERVAL %s",
db_utcnow(), db_quoteinterval('3 DAY') db_utcnow(), db_quoteinterval('3 DAY')
); );

View File

@ -245,6 +245,9 @@ function item_permissions_sql($owner_id, $remote_observer = null) {
$observer = (($remote_observer) ? $remote_observer : get_observer_hash()); $observer = (($remote_observer) ? $remote_observer : get_observer_hash());
if($observer) { if($observer) {
$s = scopes_sql($owner_id,$observer);
$groups = init_groups_visitor($observer); $groups = init_groups_visitor($observer);
$gs = '<<>>'; // should be impossible to match $gs = '<<>>'; // should be impossible to match
@ -255,9 +258,9 @@ function item_permissions_sql($owner_id, $remote_observer = null) {
} }
$regexop = db_getfunc('REGEXP'); $regexop = db_getfunc('REGEXP');
$sql = sprintf( $sql = sprintf(
" AND ( NOT (deny_cid like '%s' OR deny_gid $regexop '%s') " AND (( NOT (deny_cid like '%s' OR deny_gid $regexop '%s')
AND ( allow_cid like '%s' OR allow_gid $regexop '%s' OR ( allow_cid = '' AND allow_gid = '' AND item_private = 0 )) AND ( allow_cid like '%s' OR allow_gid $regexop '%s' OR ( allow_cid = '' AND allow_gid = '' AND item_private = 0 ))
) ) OR ( item_private = 1 $s ))
", ",
dbesc(protect_sprintf( '%<' . $observer . '>%')), dbesc(protect_sprintf( '%<' . $observer . '>%')),
dbesc($gs), dbesc($gs),
@ -270,6 +273,39 @@ function item_permissions_sql($owner_id, $remote_observer = null) {
return $sql; return $sql;
} }
/**
* Remote visitors also need to be checked against the public_scope parameter if item_private is set.
* This function checks the various permutations of that field for any which apply to this observer.
*
*/
function scopes_sql($uid,$observer) {
$str = " and ( public_policy = 'authenticated' ";
if(! is_foreigner($observer))
$str .= " or public_policy = 'network: red' ";
if(local_channel())
$str .= " or public_policy = 'site: " . get_app()->get_hostname() . "' ";
$ab = q("select * from abook where abook_xchan = '%s' and abook_channel = %d limit 1",
dbesc($observer),
intval($uid)
);
if(! $ab)
return $str . " ) ";
if($ab[0]['abook_pending'])
$str .= " or public_policy = 'any connections' ";
$str .= " or public_policy = 'contacts' ) ";
return $str;
}
/** /**
* @param string $observer_hash * @param string $observer_hash
* *

View File

@ -1686,14 +1686,14 @@ function mimetype_select($channel_id, $current = 'text/bbcode') {
function lang_selector() { function lang_selector() {
global $a; global $a;
$langs = glob('view/*/strings.php'); $langs = glob('view/*/hstrings.php');
$lang_options = array(); $lang_options = array();
$selected = ""; $selected = "";
if(is_array($langs) && count($langs)) { if(is_array($langs) && count($langs)) {
$langs[] = ''; $langs[] = '';
if(! in_array('view/en/strings.php',$langs)) if(! in_array('view/en/hstrings.php',$langs))
$langs[] = 'view/en/'; $langs[] = 'view/en/';
asort($langs); asort($langs);
foreach($langs as $l) { foreach($langs as $l) {

View File

@ -562,14 +562,30 @@ function widget_mailmenu($arr) {
return; return;
$a = get_app(); $a = get_app();
return replace_macros(get_markup_template('message_side.tpl'), array( return replace_macros(get_markup_template('message_side.tpl'), array(
'$title' => t('Messages'), '$title' => t('Private Mail Menu'),
'$tabs'=> array(),
'$check'=>array( '$check'=>array(
'label' => t('Check Mail'), 'label' => t('Check Mail'),
'url' => $a->get_baseurl(true) . '/message', 'url' => $a->get_baseurl(true) . '/mail/combined',
'sel' => (argv(1) == ''), 'sel' => (argv(1) == ''),
), ),
'$combined'=>array(
'label' => t('Combined View'),
'url' => $a->get_baseurl(true) . '/mail/combined',
'sel' => (argv(1) == 'combined'),
),
'$inbox'=>array(
'label' => t('Inbox'),
'url' => $a->get_baseurl(true) . '/mail/inbox',
'sel' => (argv(1) == 'inbox'),
),
'$outbox'=>array(
'label' => t('Outbox'),
'url' => $a->get_baseurl(true) . '/mail/outbox',
'sel' => (argv(1) == 'outbox'),
),
'$new'=>array( '$new'=>array(
'label' => t('New Message'), 'label' => t('New Message'),
'url' => $a->get_baseurl(true) . '/mail/new', 'url' => $a->get_baseurl(true) . '/mail/new',
@ -578,6 +594,80 @@ function widget_mailmenu($arr) {
)); ));
} }
function widget_conversations($arr) {
if (! local_channel())
return;
$a = get_app();
if(argc() > 1) {
switch(argv(1)) {
case 'combined':
$mailbox = 'combined';
$header = t('Conversations');
break;
case 'inbox':
$mailbox = 'inbox';
$header = t('Received Messages');
break;
case 'outbox':
$mailbox = 'outbox';
$header = t('Sent Messages');
break;
default:
$mailbox = 'combined';
$header = t('Conversations');
break;
}
require_once('include/message.php');
// private_messages_list() can do other more complicated stuff, for now keep it simple
$r = private_messages_list(local_channel(), $mailbox, $a->pager['start'], $a->pager['itemspage']);
if(! $r) {
info( t('No messages.') . EOL);
return $o;
}
$messages = array();
foreach($r as $rr) {
$messages[] = array(
'mailbox' => $mailbox,
'id' => $rr['id'],
'from_name' => $rr['from']['xchan_name'],
'from_url' => chanlink_hash($rr['from_xchan']),
'from_photo' => $rr['from']['xchan_photo_s'],
'to_name' => $rr['to']['xchan_name'],
'to_url' => chanlink_hash($rr['to_xchan']),
'to_photo' => $rr['to']['xchan_photo_s'],
'subject' => (($rr['seen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'),
'delete' => t('Delete conversation'),
'body' => $rr['body'],
'date' => datetime_convert('UTC',date_default_timezone_get(),$rr['created'], t('D, d M Y - g:i A')),
'seen' => $rr['seen'],
'selected' => ((argv(2)) ? (argv(2) == $rr['id']) : ($r[0]['id'] == $rr['id']))
);
}
$tpl = get_markup_template('mail_head.tpl');
$o .= replace_macros($tpl, array(
'$header' => $header,
'$messages' => $messages
));
$o .= alt_pager($a,count($r));
}
return $o;
}
function widget_design_tools($arr) { function widget_design_tools($arr) {
$a = get_app(); $a = get_app();
@ -594,6 +684,7 @@ function widget_design_tools($arr) {
return design_tools(); return design_tools();
} }
function widget_findpeople($arr) { function widget_findpeople($arr) {
return findpeople_widget(); return findpeople_widget();
} }

View File

@ -398,11 +398,6 @@ function zot_refresh($them, $channel = null, $force = false) {
} }
} }
$r = q("select * from abook where abook_xchan = '%s' and abook_channel = %d and abook_self = 0 limit 1",
dbesc($x['hash']),
intval($channel['channel_id'])
);
if(array_key_exists('profile',$j) && array_key_exists('next_birthday',$j['profile'])) { if(array_key_exists('profile',$j) && array_key_exists('next_birthday',$j['profile'])) {
$next_birthday = datetime_convert('UTC','UTC',$j['profile']['next_birthday']); $next_birthday = datetime_convert('UTC','UTC',$j['profile']['next_birthday']);
} }
@ -410,8 +405,15 @@ function zot_refresh($them, $channel = null, $force = false) {
$next_birthday = NULL_DATE; $next_birthday = NULL_DATE;
} }
$r = q("select * from abook where abook_xchan = '%s' and abook_channel = %d and abook_self = 0 limit 1",
dbesc($x['hash']),
intval($channel['channel_id'])
);
if($r) { if($r) {
// connection exists
// if the dob is the same as what we have stored (disregarding the year), keep the one // if the dob is the same as what we have stored (disregarding the year), keep the one
// we have as we may have updated the year after sending a notification; and resetting // we have as we may have updated the year after sending a notification; and resetting
// to the one we just received would cause us to create duplicated events. // to the one we just received would cause us to create duplicated events.
@ -453,6 +455,9 @@ function zot_refresh($them, $channel = null, $force = false) {
} }
} }
else { else {
// new connection
$role = get_pconfig($channel['channel_id'],'system','permissions_role'); $role = get_pconfig($channel['channel_id'],'system','permissions_role');
if($role) { if($role) {
$xx = get_role_perms($role); $xx = get_role_perms($role);
@ -1582,14 +1587,11 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
$channel = $r[0]; $channel = $r[0];
$DR->addto_recipient($channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>'); $DR->addto_recipient($channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>');
if($d['hash'] === $sender['hash']) {
// uncomment this once we find out what's stopping the clone sync of the item from working $DR->update('self delivery ignored');
// if($d['hash'] === $sender['hash']) { $result[] = $DR->get();
// $DR->update('self delivery ignored'); continue;
// $result[] = $DR->get(); }
// continue;
// }
// allow public postings to the sys channel regardless of permissions, but not // allow public postings to the sys channel regardless of permissions, but not
// for comments travelling upstream. Wait and catch them on the way down. // for comments travelling upstream. Wait and catch them on the way down.
@ -2738,7 +2740,7 @@ function import_site($arr, $pubkey) {
// logger('import_site: input: ' . print_r($arr,true)); // logger('import_site: input: ' . print_r($arr,true));
// logger('import_site: stored: ' . print_r($siterecord,true)); // logger('import_site: stored: ' . print_r($siterecord,true));
$r = q("update site set site_dead = 0, site_location = '%s', site_flags = %d, site_access = %d, site_directory = '%s', site_register = %d, site_update = '%s', site_sellpage = '%s', site_realm = '%s' $r = q("update site set site_dead = 0, site_location = '%s', site_flags = %d, site_access = %d, site_directory = '%s', site_register = %d, site_update = '%s', site_sellpage = '%s', site_realm = '%s', site_type = %d
where site_url = '%s'", where site_url = '%s'",
dbesc($site_location), dbesc($site_location),
intval($site_directory), intval($site_directory),
@ -2748,6 +2750,7 @@ function import_site($arr, $pubkey) {
dbesc(datetime_convert()), dbesc(datetime_convert()),
dbesc($sellpage), dbesc($sellpage),
dbesc($site_realm), dbesc($site_realm),
intval(SITE_TYPE_ZOT),
dbesc($url) dbesc($url)
); );
if(! $r) { if(! $r) {
@ -2764,7 +2767,7 @@ function import_site($arr, $pubkey) {
} }
else { else {
$update = true; $update = true;
$r = q("insert into site ( site_location, site_url, site_access, site_flags, site_update, site_directory, site_register, site_sellpage, site_realm ) $r = q("insert into site ( site_location, site_url, site_access, site_flags, site_update, site_directory, site_register, site_sellpage, site_realm, site_type )
values ( '%s', '%s', %d, %d, '%s', '%s', %d, '%s', '%s' )", values ( '%s', '%s', %d, %d, '%s', '%s', %d, '%s', '%s' )",
dbesc($site_location), dbesc($site_location),
dbesc($url), dbesc($url),
@ -2774,7 +2777,8 @@ function import_site($arr, $pubkey) {
dbesc($directory_url), dbesc($directory_url),
intval($register_policy), intval($register_policy),
dbesc($sellpage), dbesc($sellpage),
dbesc($site_realm) dbesc($site_realm),
intval(SITE_TYPE_ZOT)
); );
if(! $r) { if(! $r) {
logger('import_site: record create failed. ' . print_r($arr,true)); logger('import_site: record create failed. ' . print_r($arr,true));
@ -2816,6 +2820,9 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
$channel = $r[0]; $channel = $r[0];
if(intval($channel['channel_removed']))
return;
$h = q("select * from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0", $h = q("select * from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0",
dbesc($channel['channel_hash']) dbesc($channel['channel_hash'])
); );
@ -2866,7 +2873,7 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
// don't pass these elements, they should not be synchronised // don't pass these elements, they should not be synchronised
$disallowed = array('channel_id','channel_account_id','channel_primary','channel_prvkey','channel_address'); $disallowed = array('channel_id','channel_account_id','channel_primary','channel_prvkey','channel_address','channel_deleted','channel_removed','channel_system');
if(in_array($k,$disallowed)) if(in_array($k,$disallowed))
continue; continue;
@ -2993,10 +3000,12 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
// These flags cannot be sync'd. // These flags cannot be sync'd.
// remove the bits from the incoming flags. // remove the bits from the incoming flags.
if($arr['channel_pageflags'] & 0x8000) // These correspond to PAGE_REMOVED and PAGE_SYSTEM on redmatrix
$arr['channel_pageflags'] = $arr['channel_pageflags'] - 0x8000;
if($arr['channel_pageflags'] & 0x1000) if($arr['channel']['channel_pageflags'] & 0x8000)
$arr['channel_pageflags'] = $arr['channel_pageflags'] - 0x1000; $arr['channel']['channel_pageflags'] = $arr['channel']['channel_pageflags'] - 0x8000;
if($arr['channel']['channel_pageflags'] & 0x1000)
$arr['channel']['channel_pageflags'] = $arr['channel']['channel_pageflags'] - 0x1000;
} }
@ -3319,6 +3328,8 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
if(array_key_exists('item_id',$arr) && $arr['item_id']) if(array_key_exists('item_id',$arr) && $arr['item_id'])
sync_items($channel,$arr['item_id']); sync_items($channel,$arr['item_id']);
$addon = array('channel' => $channel,'data' => $arr);
call_hooks('process_channel_sync_delivery',$addon);
// we should probably do this for all items, but usually we only send one. // we should probably do this for all items, but usually we only send one.

View File

@ -396,6 +396,7 @@ CREATE TABLE IF NOT EXISTS `event` (
`event_repeat` text NOT NULL, `event_repeat` text NOT NULL,
`event_sequence` smallint(6) NOT NULL DEFAULT '0', `event_sequence` smallint(6) NOT NULL DEFAULT '0',
`event_priority` smallint(6) NOT NULL DEFAULT '0', `event_priority` smallint(6) NOT NULL DEFAULT '0',
`event_vdata` text NOT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `uid` (`uid`), KEY `uid` (`uid`),
KEY `type` (`type`), KEY `type` (`type`),
@ -1130,6 +1131,7 @@ CREATE TABLE IF NOT EXISTS `site` (
`site_realm` char(255) NOT NULL DEFAULT '', `site_realm` char(255) NOT NULL DEFAULT '',
`site_valid` smallint NOT NULL DEFAULT '0', `site_valid` smallint NOT NULL DEFAULT '0',
`site_dead` smallint NOT NULL DEFAULT '0', `site_dead` smallint NOT NULL DEFAULT '0',
`site_type` smallint NOT NULL DEFAULT '0',
PRIMARY KEY (`site_url`), PRIMARY KEY (`site_url`),
KEY `site_flags` (`site_flags`), KEY `site_flags` (`site_flags`),
KEY `site_update` (`site_update`), KEY `site_update` (`site_update`),
@ -1140,7 +1142,8 @@ CREATE TABLE IF NOT EXISTS `site` (
KEY `site_pull` (`site_pull`), KEY `site_pull` (`site_pull`),
KEY `site_realm` (`site_realm`), KEY `site_realm` (`site_realm`),
KEY `site_valid` (`site_valid`), KEY `site_valid` (`site_valid`),
KEY `site_dead` (`site_dead`) KEY `site_dead` (`site_dead`),
KEY `site_type` (`site_type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `source` ( CREATE TABLE IF NOT EXISTS `source` (

View File

@ -392,6 +392,7 @@ CREATE TABLE "event" (
"event_repeat" text NOT NULL, "event_repeat" text NOT NULL,
"event_sequence" smallint NOT NULL DEFAULT '0', "event_sequence" smallint NOT NULL DEFAULT '0',
"event_priority" smallint NOT NULL DEFAULT '0', "event_priority" smallint NOT NULL DEFAULT '0',
"event_vdata" text NOT NULL,
PRIMARY KEY ("id") PRIMARY KEY ("id")
); );
create index "event_uid_idx" on event ("uid"); create index "event_uid_idx" on event ("uid");
@ -1121,6 +1122,7 @@ CREATE TABLE "site" (
"site_realm" text NOT NULL DEFAULT '', "site_realm" text NOT NULL DEFAULT '',
"site_valid" smallint NOT NULL DEFAULT '0', "site_valid" smallint NOT NULL DEFAULT '0',
"site_dead" smallint NOT NULL DEFAULT '0', "site_dead" smallint NOT NULL DEFAULT '0',
"site_type" smallint NOT NULL DEFAULT '0',
PRIMARY KEY ("site_url") PRIMARY KEY ("site_url")
); );
create index "site_flags" on site ("site_flags"); create index "site_flags" on site ("site_flags");
@ -1132,6 +1134,7 @@ create index "site_sellpage" on site ("site_sellpage");
create index "site_realm" on site ("site_realm"); create index "site_realm" on site ("site_realm");
create index "site_valid" on site ("site_valid"); create index "site_valid" on site ("site_valid");
create index "site_dead" on site ("site_dead"); create index "site_dead" on site ("site_dead");
create index "site_type" on site ("site_type");
CREATE TABLE "source" ( CREATE TABLE "source" (
"src_id" serial NOT NULL, "src_id" serial NOT NULL,

View File

@ -1,6 +1,6 @@
<?php <?php
define( 'UPDATE_VERSION' , 1154 ); define( 'UPDATE_VERSION' , 1156 );
/** /**
* *
@ -1865,3 +1865,23 @@ function update_r1153() {
} }
function update_r1154() {
$r = q("ALTER TABLE event ADD event_vdata text NOT NULL ");
if($r)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}
function update_r1155() {
$r1 = q("alter table site add site_type smallint not null default '0' ");
$r2 = q("create index site_type on site ( site_type ) ");
if($r1 && $r2)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}

View File

@ -254,6 +254,7 @@ function admin_page_site_post(&$a){
$proxy = ((x($_POST,'proxy')) ? notags(trim($_POST['proxy'])) : ''); $proxy = ((x($_POST,'proxy')) ? notags(trim($_POST['proxy'])) : '');
$timeout = ((x($_POST,'timeout')) ? intval(trim($_POST['timeout'])) : 60); $timeout = ((x($_POST,'timeout')) ? intval(trim($_POST['timeout'])) : 60);
$delivery_interval = ((x($_POST,'delivery_interval'))? intval(trim($_POST['delivery_interval'])) : 0); $delivery_interval = ((x($_POST,'delivery_interval'))? intval(trim($_POST['delivery_interval'])) : 0);
$delivery_batch_count = ((x($_POST,'delivery_batch_count') && $_POST['delivery_batch_count'] > 0)? intval(trim($_POST['delivery_batch_count'])) : 1);
$poll_interval = ((x($_POST,'poll_interval')) ? intval(trim($_POST['poll_interval'])) : 0); $poll_interval = ((x($_POST,'poll_interval')) ? intval(trim($_POST['poll_interval'])) : 0);
$maxloadavg = ((x($_POST,'maxloadavg')) ? intval(trim($_POST['maxloadavg'])) : 50); $maxloadavg = ((x($_POST,'maxloadavg')) ? intval(trim($_POST['maxloadavg'])) : 50);
$feed_contacts = ((x($_POST,'feed_contacts')) ? intval($_POST['feed_contacts']) : 0); $feed_contacts = ((x($_POST,'feed_contacts')) ? intval($_POST['feed_contacts']) : 0);
@ -261,6 +262,7 @@ function admin_page_site_post(&$a){
set_config('system', 'feed_contacts', $feed_contacts); set_config('system', 'feed_contacts', $feed_contacts);
set_config('system', 'delivery_interval', $delivery_interval); set_config('system', 'delivery_interval', $delivery_interval);
set_config('system', 'delivery_batch_count', $delivery_batch_count);
set_config('system', 'poll_interval', $poll_interval); set_config('system', 'poll_interval', $poll_interval);
set_config('system', 'maxloadavg', $maxloadavg); set_config('system', 'maxloadavg', $maxloadavg);
set_config('system', 'frontpage', $frontpage); set_config('system', 'frontpage', $frontpage);
@ -330,10 +332,10 @@ function admin_page_site(&$a) {
/* Installed langs */ /* Installed langs */
$lang_choices = array(); $lang_choices = array();
$langs = glob('view/*/strings.php'); $langs = glob('view/*/hstrings.php');
if(is_array($langs) && count($langs)) { if(is_array($langs) && count($langs)) {
if(! in_array('view/en/strings.php',$langs)) if(! in_array('view/en/hstrings.php',$langs))
$langs[] = 'view/en/'; $langs[] = 'view/en/';
asort($langs); asort($langs);
foreach($langs as $l) { foreach($langs as $l) {
@ -442,6 +444,7 @@ function admin_page_site(&$a) {
'$proxy' => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""), '$proxy' => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""),
'$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")), '$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")),
'$delivery_interval' => array('delivery_interval', t("Delivery interval"), (x(get_config('system','delivery_interval'))?get_config('system','delivery_interval'):2), t("Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers.")), '$delivery_interval' => array('delivery_interval', t("Delivery interval"), (x(get_config('system','delivery_interval'))?get_config('system','delivery_interval'):2), t("Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers.")),
'$delivery_batch_count' => array('delivery_batch_count', t('Deliveries per process'),(x(get_config('system','delivery_batch_count'))?get_config('system','delivery_batch_count'):1), t("Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5.")),
'$poll_interval' => array('poll_interval', t("Poll interval"), (x(get_config('system','poll_interval'))?get_config('system','poll_interval'):2), t("Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval.")), '$poll_interval' => array('poll_interval', t("Poll interval"), (x(get_config('system','poll_interval'))?get_config('system','poll_interval'):2), t("Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval.")),
'$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(get_config('system','maxloadavg')) > 0)?get_config('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")), '$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(get_config('system','maxloadavg')) > 0)?get_config('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")),
'$default_expire_days' => array('default_expire_days', t('Expiration period in days for imported (matrix/network) content'), intval(get_config('system','default_expire_days')), t('0 for no expiration of imported content')), '$default_expire_days' => array('default_expire_days', t('Expiration period in days for imported (matrix/network) content'), intval(get_config('system','default_expire_days')), t('0 for no expiration of imported content')),

View File

@ -153,7 +153,6 @@ function channel_content(&$a, $update = 0, $load = false) {
else else
$page_mode = 'client'; $page_mode = 'client';
$abook_uids = " and abook.abook_channel = " . intval($a->profile['profile_uid']) . " "; $abook_uids = " and abook.abook_channel = " . intval($a->profile['profile_uid']) . " ";
$simple_update = (($update) ? " AND item_unseen = 1 " : ''); $simple_update = (($update) ? " AND item_unseen = 1 " : '');
@ -260,9 +259,6 @@ function channel_content(&$a, $update = 0, $load = false) {
} }
if((! $update) && (! $load)) { if((! $update) && (! $load)) {
// This is ugly, but we can't pass the profile_uid through the session to the ajax updater, // This is ugly, but we can't pass the profile_uid through the session to the ajax updater,

View File

@ -398,13 +398,15 @@ function list_public_sites() {
$rand = db_getfunc('rand'); $rand = db_getfunc('rand');
$realm = get_directory_realm(); $realm = get_directory_realm();
if($realm == DIRECTORY_REALM) { if($realm == DIRECTORY_REALM) {
$r = q("select * from site where site_access != 0 and site_register !=0 and ( site_realm = '%s' or site_realm = '') order by $rand", $r = q("select * from site where site_access != 0 and site_register !=0 and ( site_realm = '%s' or site_realm = '') and site_type = %d order by $rand",
dbesc($realm) dbesc($realm),
intval(SITE_TYPE_ZOT)
); );
} }
else { else {
$r = q("select * from site where site_access != 0 and site_register !=0 and site_realm = '%s' order by $rand", $r = q("select * from site where site_access != 0 and site_register !=0 and site_realm = '%s' and site_type = %d order by $rand",
dbesc($realm) dbesc($realm),
intval(SITE_TYPE_ZOT)
); );
} }

View File

@ -30,9 +30,48 @@ function dreport_content(&$a) {
$o .= '<h2>' . sprintf( t('Delivery report for %1$s'),substr($mid,0,32)) . '...' . '</h2>'; $o .= '<h2>' . sprintf( t('Delivery report for %1$s'),substr($mid,0,32)) . '...' . '</h2>';
$o .= '<table>'; $o .= '<table>';
for($x = 0; $x < count($r); $x++ ) {
$r[$x]['name'] = escape_tags(substr($r[$x]['dreport_recip'],strpos($r[$x]['dreport_recip'],' ')));
switch($r[$x]['dreport_result']) {
case 'channel sync processed':
$r[$x]['gravity'] = 0;
$r[$x]['dreport_result'] = t('channel sync processed');
break;
case 'queued':
$r[$x]['gravity'] = 2;
$r[$x]['dreport_result'] = t('queued');
break;
case 'posted':
$r[$x]['gravity'] = 3;
$r[$x]['dreport_result'] = t('posted');
break;
case 'accepted for delivery':
$r[$x]['gravity'] = 4;
$r[$x]['dreport_result'] = t('accepted for delivery');
break;
case 'updated':
$r[$x]['gravity'] = 5;
$r[$x]['dreport_result'] = t('updated');
case 'update ignored':
$r[$x]['gravity'] = 6;
$r[$x]['dreport_result'] = t('update ignored');
break;
case 'permission denied':
$r[$x]['dreport_result'] = t('permission denied');
$r[$x]['gravity'] = 6;
break;
default:
$r[$x]['gravity'] = 1;
break;
}
}
usort($r,'dreport_gravity_sort');
foreach($r as $rr) { foreach($r as $rr) {
$name = escape_tags(substr($rr['dreport_recip'],strpos($rr['dreport_recip'],' '))); $o .= '<tr><td width="40%">' . $rr['name'] . '</td><td width="20%">' . escape_tags($rr['dreport_result']) . '</td><td width="20%">' . escape_tags($rr['dreport_time']) . '</td></tr>';
$o .= '<tr><td>' . $name . '</td><td>' . escape_tags($rr['dreport_result']) . '</td><td>' . escape_tags($rr['dreport_time']) . '</td></tr>';
} }
$o .= '</table>'; $o .= '</table>';
@ -41,3 +80,12 @@ function dreport_content(&$a) {
} }
function dreport_gravity_sort($a,$b) {
if($a['gravity'] == $b['gravity']) {
if($a['name'] === $b['name'])
return strcmp($a['dreport_time'],$b['dreport_time']);
return strcmp($a['name'],$b['name']);
}
return (($a['gravity'] > $b['gravity']) ? 1 : (-1));
}

View File

@ -450,6 +450,8 @@ function import_post(&$a) {
if(is_array($data['menu'])) if(is_array($data['menu']))
import_menus($channel,$data['menu']); import_menus($channel,$data['menu']);
$addon = array('channel' => $channel,'data' => $data);
call_hooks('import_channel',$addon);
$saved_notification_flags = notifications_off($channel['channel_id']); $saved_notification_flags = notifications_off($channel['channel_id']);

View File

@ -101,7 +101,7 @@ function mail_post(&$a) {
notice($ret['message']); notice($ret['message']);
} }
goaway(z_root() . '/message'); goaway(z_root() . '/mail/combined');
} }
@ -128,35 +128,47 @@ function mail_content(&$a) {
'$header' => t('Messages'), '$header' => t('Messages'),
)); ));
if((argc() == 3) && (argv(1) === 'drop')) { if((argc() == 4) && (argv(2) === 'drop')) {
if(! intval(argv(2))) if(! intval(argv(3)))
return; return;
$cmd = argv(1); $cmd = argv(2);
$mailbox = argv(1);
$r = private_messages_drop(local_channel(), argv(2)); $r = private_messages_drop(local_channel(), argv(3));
if($r) { if($r) {
info( t('Message deleted.') . EOL ); //info( t('Message deleted.') . EOL );
} }
goaway($a->get_baseurl(true) . '/message' ); goaway($a->get_baseurl(true) . '/mail/' . $mailbox);
} }
if((argc() == 3) && (argv(1) === 'recall')) { if((argc() == 4) && (argv(2) === 'recall')) {
if(! intval(argv(2))) if(! intval(argv(3)))
return; return;
$cmd = argv(1); $cmd = argv(2);
$mailbox = argv(1);
$r = q("update mail set mail_recalled = 1 where id = %d and channel_id = %d", $r = q("update mail set mail_recalled = 1 where id = %d and channel_id = %d",
intval(argv(2)), intval(argv(3)),
intval(local_channel()) intval(local_channel())
); );
proc_run('php','include/notifier.php','mail',intval(argv(2))); proc_run('php','include/notifier.php','mail',intval(argv(3)));
if($r) { if($r) {
info( t('Message recalled.') . EOL ); info( t('Message recalled.') . EOL );
} }
goaway($a->get_baseurl(true) . '/message' ); goaway($a->get_baseurl(true) . '/mail/' . $mailbox . '/' . argv(3));
} }
if((argc() == 4) && (argv(2) === 'dropconv')) {
if(! intval(argv(3)))
return;
$cmd = argv(2);
$mailbox = argv(1);
$r = private_messages_drop(local_channel(), argv(3), true);
if($r)
info( t('Conversation removed.') . EOL );
goaway($a->get_baseurl(true) . '/mail/' . $mailbox);
}
if((argc() > 1) && (argv(1) === 'new')) { if((argc() > 1) && (argv(1) === 'new')) {
$plaintext = true; $plaintext = true;
@ -249,21 +261,35 @@ function mail_content(&$a) {
return $o; return $o;
} }
switch(argv(1)) {
case 'combined':
$mailbox = 'combined';
break;
case 'inbox':
$mailbox = 'inbox';
break;
case 'outbox':
$mailbox = 'outbox';
break;
default:
$mailbox = 'combined';
break;
}
if((argc() > 1) && (intval(argv(1)))) { $last_message = private_messages_list(local_channel(), $mailbox, 0, 1);
$o .= $header; $mid = ((argc() > 2) && (intval(argv(2)))) ? argv(2) : $last_message[0]['id'];
$plaintext = true; $plaintext = true;
// if( local_channel() && feature_enabled(local_channel(),'richtext') ) // if( local_channel() && feature_enabled(local_channel(),'richtext') )
// $plaintext = false; // $plaintext = false;
$messages = private_messages_fetch_conversation(local_channel(), argv(1), true); $messages = private_messages_fetch_conversation(local_channel(), $mid, true);
if(! $messages) { if(! $messages) {
info( t('Message not found.') . EOL); //info( t('Message not found.') . EOL);
return $o; return;
} }
if($messages[0]['to_xchan'] === $channel['channel_hash']) if($messages[0]['to_xchan'] === $channel['channel_hash'])
@ -286,8 +312,8 @@ function mail_content(&$a) {
'$expireswhen' => t('Expires YYYY-MM-DD HH:MM') '$expireswhen' => t('Expires YYYY-MM-DD HH:MM')
)); ));
$mails = array(); $mails = array();
$seen = 0; $seen = 0;
$unknown = false; $unknown = false;
@ -296,13 +322,14 @@ function mail_content(&$a) {
$s = theme_attachments($message); $s = theme_attachments($message);
$mails[] = array( $mails[] = array(
'mailbox' => $mailbox,
'id' => $message['id'], 'id' => $message['id'],
'from_name' => $message['from']['xchan_name'], 'from_name' => $message['from']['xchan_name'],
'from_url' => chanlink_hash($message['from_xchan']), 'from_url' => chanlink_hash($message['from_xchan']),
'from_photo' => $message['from']['xchan_photo_m'], 'from_photo' => $message['from']['xchan_photo_s'],
'to_name' => $message['to']['xchan_name'], 'to_name' => $message['to']['xchan_name'],
'to_url' => chanlink_hash($message['to_xchan']), 'to_url' => chanlink_hash($message['to_xchan']),
'to_photo' => $message['to']['xchan_photo_m'], 'to_photo' => $message['to']['xchan_photo_s'],
'subject' => $message['title'], 'subject' => $message['title'],
'body' => smilies(bbcode($message['body']) . $s), 'body' => smilies(bbcode($message['body']) . $s),
'delete' => t('Delete message'), 'delete' => t('Delete message'),
@ -322,14 +349,14 @@ function mail_content(&$a) {
$select = $message[$recp]['xchan_name'] . '<input type="hidden" name="messageto" value="' . $message[$recp]['xchan_hash'] . '" />'; $select = $message[$recp]['xchan_name'] . '<input type="hidden" name="messageto" value="' . $message[$recp]['xchan_hash'] . '" />';
$parent = '<input type="hidden" name="replyto" value="' . $message['parent_mid'] . '" />'; $parent = '<input type="hidden" name="replyto" value="' . $message['parent_mid'] . '" />';
$tpl = get_markup_template('mail_display.tpl'); $tpl = get_markup_template('mail_display.tpl');
$o = replace_macros($tpl, array( $o = replace_macros($tpl, array(
'$prvmsg_header' => t('Private Conversation'), '$mailbox' => $mailbox,
'$thread_id' => $a->argv[1], '$prvmsg_header' => $message['title'],
'$thread_id' => $mid,
'$thread_subject' => $message['title'], '$thread_subject' => $message['title'],
'$thread_seen' => $seen, '$thread_seen' => $seen,
'$delete' => t('Delete conversation'), '$delete' => t('Delete Conversation'),
'$canreply' => (($unknown) ? false : '1'), '$canreply' => (($unknown) ? false : '1'),
'$unknown_text' => t("No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."), '$unknown_text' => t("No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."),
'$mails' => $mails, '$mails' => $mails,
@ -340,7 +367,7 @@ function mail_content(&$a) {
'$showinputs' => '', '$showinputs' => '',
'$subject' => t('Subject:'), '$subject' => t('Subject:'),
'$subjtxt' => $message['title'], '$subjtxt' => $message['title'],
'$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ', '$readonly' => 'readonly="readonly"',
'$yourmessage' => t('Your message:'), '$yourmessage' => t('Your message:'),
'$text' => '', '$text' => '',
'$select' => $select, '$select' => $select,
@ -356,10 +383,8 @@ function mail_content(&$a) {
'$feature_encrypt' => ((feature_enabled(local_channel(),'content_encrypt')) ? true : false), '$feature_encrypt' => ((feature_enabled(local_channel(),'content_encrypt')) ? true : false),
'$encrypt' => t('Encrypt text'), '$encrypt' => t('Encrypt text'),
'$cipher' => $cipher, '$cipher' => $cipher,
)); ));
return $o; return $o;
}
} }

View File

@ -24,9 +24,7 @@ function message_content(&$a) {
if(! $cipher) if(! $cipher)
$cipher = 'aes256'; $cipher = 'aes256';
/*
if((argc() == 3) && (argv(1) === 'dropconv')) { if((argc() == 3) && (argv(1) === 'dropconv')) {
if(! intval(argv(2))) if(! intval(argv(2)))
return; return;
@ -34,14 +32,31 @@ function message_content(&$a) {
$r = private_messages_drop(local_channel(), argv(2), true); $r = private_messages_drop(local_channel(), argv(2), true);
if($r) if($r)
info( t('Conversation removed.') . EOL ); info( t('Conversation removed.') . EOL );
goaway($a->get_baseurl(true) . '/message' ); goaway($a->get_baseurl(true) . '/mail/combined' );
} }
if(argc() == 1) {
if(argc() == 2) {
switch(argv(1)) {
case 'combined':
$mailbox = 'combined';
$header = t('Conversations');
break;
case 'inbox':
$mailbox = 'inbox';
$header = t('Received Messages');
break;
case 'outbox':
$mailbox = 'outbox';
$header = t('Sent Messages');
break;
default:
break;
}
// private_messages_list() can do other more complicated stuff, for now keep it simple // private_messages_list() can do other more complicated stuff, for now keep it simple
$r = private_messages_list(local_channel(), '', $a->pager['start'], $a->pager['itemspage']); $r = private_messages_list(local_channel(), $mailbox, $a->pager['start'], $a->pager['itemspage']);
if(! $r) { if(! $r) {
info( t('No messages.') . EOL); info( t('No messages.') . EOL);
@ -51,6 +66,7 @@ function message_content(&$a) {
$messages = array(); $messages = array();
foreach($r as $rr) { foreach($r as $rr) {
$messages[] = array( $messages[] = array(
'id' => $rr['id'], 'id' => $rr['id'],
'from_name' => $rr['from']['xchan_name'], 'from_name' => $rr['from']['xchan_name'],
@ -70,14 +86,19 @@ function message_content(&$a) {
$tpl = get_markup_template('mail_head.tpl'); $tpl = get_markup_template('mail_head.tpl');
$o = replace_macros($tpl, array( $o = replace_macros($tpl, array(
'$header' => t('Messages'), '$header' => $header,
'$messages' => $messages '$messages' => $messages
)); ));
$o .= alt_pager($a,count($r)); $o .= alt_pager($a,count($r));
return $o; return $o;
}
return;
} }
*/
return;
}

View File

@ -22,8 +22,9 @@ function rate_init(&$a) {
$a->poi = $r[0]; $a->poi = $r[0];
} }
else { else {
$r = q("select * from site where site_url like '%s' ", $r = q("select * from site where site_url like '%s' and site_type = %d",
dbesc('%' . $target) dbesc('%' . $target),
intval(SITE_TYPE_ZOT)
); );
if($r) { if($r) {
$a->data['site'] = $r[0]; $a->data['site'] = $r[0];

View File

@ -35,8 +35,9 @@ function ratingsearch_init(&$a) {
if($p) if($p)
$target = $p[0]['xchan_hash']; $target = $p[0]['xchan_hash'];
else { else {
$p = q("select * from site where site_url like '%s' ", $p = q("select * from site where site_url like '%s' and site_type = %d ",
dbesc('%' . $hash) dbesc('%' . $hash),
intval(SITE_TYPE_ZOT)
); );
if($p) { if($p) {
$target = strtolower($hash); $target = strtolower($hash);

View File

@ -86,8 +86,9 @@ function regdir_init(&$a) {
if ($dirmode == DIRECTORY_MODE_STANDALONE) { if ($dirmode == DIRECTORY_MODE_STANDALONE) {
$r = array(array('site_url' => z_root())); $r = array(array('site_url' => z_root()));
} else { } else {
$r = q("select site_url from site where site_flags in ( 1, 2 ) and site_realm = '%s' $sql_extra ", $r = q("select site_url from site where site_flags in ( 1, 2 ) and site_realm = '%s' and site_type = %d $sql_extra ",
dbesc(get_directory_realm()) dbesc(get_directory_realm()),
intval(SITE_TYPE_ZOT)
); );
} }
if ($r) { if ($r) {

View File

@ -28,7 +28,9 @@ function sitelist_init(&$a) {
$result = array('success' => false); $result = array('success' => false);
$r = q("select count(site_url) as total from site where true $sql_extra "); $r = q("select count(site_url) as total from site where site_type = %d $sql_extra ",
intval(SITE_TYPE_ZOT)
);
if($r) if($r)
$result['total'] = intval($r[0]['total']); $result['total'] = intval($r[0]['total']);
@ -36,7 +38,9 @@ function sitelist_init(&$a) {
$result['start'] = $start; $result['start'] = $start;
$result['limit'] = $limit; $result['limit'] = $limit;
$r = q("select * from site where true $sql_extra $sql_order $sql_limit"); $r = q("select * from site where site_type = %d $sql_extra $sql_order $sql_limit",
intval(SITE_TYPE_ZOT)
);
$result['results'] = 0; $result['results'] = 0;
$result['entries'] = array(); $result['entries'] = array();

View File

@ -73,7 +73,7 @@ function tasks_post(&$a) {
if(! $text) if(! $text)
return array('success' => false); return array('success' => false);
$event = array(); $event = array();
$event['aid'] = $channel['channel_account_id']; $event['account'] = $channel['channel_account_id'];
$event['uid'] = $channel['channel_id']; $event['uid'] = $channel['channel_id'];
$event['event_xchan'] = $channel['channel_hash']; $event['event_xchan'] = $channel['channel_hash'];
$event['type'] = 'task'; $event['type'] = 'task';

View File

@ -41,14 +41,25 @@ function uexport_init(&$a) {
} }
function uexport_content(&$a) { function uexport_content(&$a) {
$y = datetime_convert('UTC',date_default_timezone_get(),'now','Y');
$yearurl = z_root() . '/uexport/' . $y;
$janurl = z_root() . '/uexport/' . $y . '/1';
$impurl = '/import_items';
$o = replace_macros(get_markup_template('uexport.tpl'), array( $o = replace_macros(get_markup_template('uexport.tpl'), array(
'$title' => t('Export Channel'), '$title' => t('Export Channel'),
'$basictitle' => t('Export Channel'), '$basictitle' => t('Export Channel'),
'$basic' => t('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 does not contain your content.'), '$basic' => t('Export your basic channel information to a 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 server hub, but does not contain your content.'),
'$fulltitle' => t('Export Content'), '$fulltitle' => t('Export Content'),
'$full' => t('Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and the last year of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin.'), '$full' => t('Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin.'),
'$by_year' => t('Export your posts from a given year.'), '$by_year' => t('Export your posts from a given year.'),
'$extra' => t('You may also export your posts and conversations for a particular year or month. Adjust the date in your browser location bar to select other dates. If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range.'),
'$extra2' => sprintf( t('To select all posts for a given year, such as this year, visit <a href="%1$s">%2$s</a>'),$yearurl,$yearurl),
'$extra3' => sprintf( t('To select all posts for a given month, such as January of this year, visit <a href="%1$s">%2$s</a>'),$janurl,$janurl),
'$extra4' => sprintf( t('These content files may be imported or restored by visiting <a href="%1$s">%2$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first).'),$impurl,$impurl)
)); ));
return $o; return $o;
} }

9170
util/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

2120
util/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,12 +8,12 @@
} }
if ($argc!=2) { if ($argc!=2) {
print "Usage: ".$argv[0]." <strings.php>\n\n"; print "Usage: ".$argv[0]." <hstrings.php>\n\n";
return; return;
} }
$phpfile = $argv[1]; $phpfile = $argv[1];
$pofile = dirname($phpfile)."/messages.po"; $pofile = dirname($phpfile)."/hmessages.po";
if (!file_exists($phpfile)){ if (!file_exists($phpfile)){
print "Unable to find '$phpfile'\n"; print "Unable to find '$phpfile'\n";

View File

@ -9,7 +9,7 @@ function po2php_run($argv, $argc) {
} }
$pofile = $argv[1]; $pofile = $argv[1];
$outfile = dirname($pofile)."/strings.php"; $outfile = dirname($pofile)."/hstrings.php";
if(strstr($outfile,'util')) if(strstr($outfile,'util'))
$lang = 'en'; $lang = 'en';

View File

@ -16,12 +16,12 @@ if [ $ADDONMODE ]
then then
cd "$FULLPATH/../addon/$ADDONNAME" cd "$FULLPATH/../addon/$ADDONNAME"
mkdir -p "$FULLPATH/../addon/$ADDONNAME/lang/C" mkdir -p "$FULLPATH/../addon/$ADDONNAME/lang/C"
OUTFILE="$FULLPATH/../addon/$ADDONNAME/lang/C/messages.po" OUTFILE="$FULLPATH/../addon/$ADDONNAME/lang/C/hmessages.po"
FINDSTARTDIR="." FINDSTARTDIR="."
FINDOPTS= FINDOPTS=
else else
cd "$FULLPATH/../view/en/" cd "$FULLPATH/../view/en/"
OUTFILE="$FULLPATH/messages.po" OUTFILE="$FULLPATH/hmessages.po"
FINDSTARTDIR="../../" FINDSTARTDIR="../../"
# skip addon folder # skip addon folder
FINDOPTS="-wholename */addon -prune -o" FINDOPTS="-wholename */addon -prune -o"

View File

@ -67,11 +67,11 @@
echo "String files\n"; echo "String files\n";
echo 'util/strings.php' . "\n"; echo 'util/hstrings.php' . "\n";
include_once('util/strings.php'); include_once('util/hstrings.php');
echo count($a->strings) . ' strings' . "\n"; echo count($a->strings) . ' strings' . "\n";
$files = glob('view/*/strings.php'); $files = glob('view/*/hstrings.php');
foreach($files as $file) { foreach($files as $file) {
echo $file . "\n"; echo $file . "\n";

View File

@ -1 +1 @@
2015-09-22.1163 2015-09-28.1169

9074
view/ca/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

2148
view/ca/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

4618
view/cs/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

1044
view/cs/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +1,3 @@
/* message */
#mail-list-wrapper {
border-top: 1px solid #ccc;
padding: 5px 5px 5px 5px;
}
span.mail-list {
float: left;
width: 20%;
}
img.mail-list-sender-photo {
height: 24px;
width: 24px;
float: left;
margin-right: 30px;
}
.mail-list-remove {
width: 5% !important;
}
/* message/new */ /* message/new */
#prvmail-to-label, #prvmail-to-label,
@ -48,49 +25,26 @@ img.mail-list-sender-photo {
cursor: pointer; cursor: pointer;
} }
#prvmail-end {
clear: both;
}
/* message/id */ /* message/id */
.mail-conv-outside-wrapper { .mail-conv-outside-wrapper {
margin-top: 30px; display: table;
table-layout: fixed;
} }
.mail-conv-sender, .mail-conv-sender {
.mail-conv-detail { display: table-cell;
float: left; vertical-align: top;
}
.mail-conv-detail {
margin-left: 20px;
width: 500px;
}
.mail-conv-subject {
font-size: 1.4em;
margin: 10px 0;
}
.mail-conv-delete-wrapper {
float: right;
margin-right: 30px;
margin-top: 15px;
margin-bottom: 5px;
}
.mail-conv-recall-wrapper {
float: right;
margin-right: 10px; margin-right: 10px;
margin-top: 15px;
margin-bottom: 5px;
} }
.mail-conv-outside-wrapper-end { .mail-conv-sender-name {
clear: both; font-weight: bold;
} }
.mail-conv-break { .mail-conv-detail {
clear: both; display: table-cell;
vertical-align: top;
width: 100%;
padding-left: 10px;
} }

View File

@ -122,3 +122,4 @@ li:hover .group-edit-icon {
#tasklist-new-summary { #tasklist-new-summary {
width: 250px; width: 250px;
} }

8769
view/de/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

2079
view/de/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

7714
view/eo/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

1771
view/eo/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

9081
view/es/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

2149
view/es/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -13,8 +13,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Redmatrix\n" "Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-11 00:05-0700\n" "POT-Creation-Date: 2015-09-18 00:04-0700\n"
"PO-Revision-Date: 2015-09-14 18:21+0000\n" "PO-Revision-Date: 2015-09-22 14:10+0000\n"
"Last-Translator: Manuel Jiménez Friaza <mjfriaza@openmailbox.org>\n" "Last-Translator: Manuel Jiménez Friaza <mjfriaza@openmailbox.org>\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/red-matrix/language/es/)\n" "Language-Team: Spanish (http://www.transifex.com/Friendica/red-matrix/language/es/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -1598,17 +1598,17 @@ msgstr "Por favor visite %s para ver y/o responder a su mensaje privado."
#: ../../include/enotify.php:158 #: ../../include/enotify.php:158
#, php-format #, php-format
msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]" msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
msgstr "%1$s, %2$s comentó en [zrl=%3$s]a %4$s[/zrl]" msgstr "%1$s, %2$s ha comentado sobre [zrl=%3$s]%4$s[/zrl]"
#: ../../include/enotify.php:166 #: ../../include/enotify.php:166
#, php-format #, php-format
msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]" msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
msgstr "%1$s, %2$s comentó en [zrl=%3$s]%4$s de %5$s[/zrl]" msgstr "%1$s, %2$s ha comentado sobre el [zrl=%3$s]%5$s de %4$s[/zrl]"
#: ../../include/enotify.php:175 #: ../../include/enotify.php:175
#, php-format #, php-format
msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]" msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
msgstr "%1$s, %2$s comentó en [zrl=%3$s]su %4$s[/zrl]" msgstr "%1$s, %2$s ha comentado [zrl=%3$s]su %4$s[/zrl]"
#: ../../include/enotify.php:186 #: ../../include/enotify.php:186
#, php-format #, php-format
@ -1665,7 +1665,7 @@ msgstr "[Red:Aviso] %1$s le ha dado un toque"
#: ../../include/enotify.php:239 #: ../../include/enotify.php:239
#, php-format #, php-format
msgid "%1$s, %2$s poked you at %3$s" msgid "%1$s, %2$s poked you at %3$s"
msgstr "%1$s, %2$s le dio un toque en %3$s" msgstr "%1$s, %2$s le dio un toque sobre %3$s"
#: ../../include/enotify.php:240 #: ../../include/enotify.php:240
#, php-format #, php-format
@ -1680,12 +1680,12 @@ msgstr "[Red:Aviso] %s etiquetó su entrada"
#: ../../include/enotify.php:257 #: ../../include/enotify.php:257
#, php-format #, php-format
msgid "%1$s, %2$s tagged your post at %3$s" msgid "%1$s, %2$s tagged your post at %3$s"
msgstr "%1$s, %2$s etiquetó su publicación en %3$s" msgstr "%1$s, %2$s ha etiquetado su publicación sobre %3$s"
#: ../../include/enotify.php:258 #: ../../include/enotify.php:258
#, php-format #, php-format
msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]" msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
msgstr "%1$s, %2$s etiquetó [zrl=%3$s]su publicación[/zrl]" msgstr "%1$s, %2$s ha etiquetado [zrl=%3$s]su publicación[/zrl]"
#: ../../include/enotify.php:270 #: ../../include/enotify.php:270
msgid "[Red:Notify] Introduction received" msgid "[Red:Notify] Introduction received"
@ -3118,15 +3118,15 @@ msgstr "Conexión: %s"
msgid "Connection not found." msgid "Connection not found."
msgstr "Conexión no encontrada" msgstr "Conexión no encontrada"
#: ../../include/zot.php:675 #: ../../include/zot.php:677
msgid "Invalid data packet" msgid "Invalid data packet"
msgstr "Paquete de datos no válido" msgstr "Paquete de datos no válido"
#: ../../include/zot.php:691 #: ../../include/zot.php:693
msgid "Unable to verify channel signature" msgid "Unable to verify channel signature"
msgstr "No ha sido posible de verificar la signatura del canal" msgstr "No ha sido posible de verificar la signatura del canal"
#: ../../include/zot.php:2142 #: ../../include/zot.php:2161
#, php-format #, php-format
msgid "Unable to verify site signature for %s" msgid "Unable to verify site signature for %s"
msgstr "No ha sido posible de verificar la signatura del sitio para %s" msgstr "No ha sido posible de verificar la signatura del sitio para %s"
@ -4640,7 +4640,7 @@ msgstr "Por favor, visite <a href=\"https://redmatrix.me\">redmatrix.me </a> par
#: ../../mod/siteinfo.php:165 #: ../../mod/siteinfo.php:165
msgid "Bug reports and issues: please visit" msgid "Bug reports and issues: please visit"
msgstr "Informes de errores e incidencias: por, favor visite" msgstr "Informes de errores e incidencias: por favor visite"
#: ../../mod/siteinfo.php:167 #: ../../mod/siteinfo.php:167
msgid "$projectname issues" msgid "$projectname issues"
@ -5275,7 +5275,7 @@ msgstr "Introduzca la dirección del enlace o seleccione el nombre de un submen
#: ../../mod/mitem.php:159 ../../mod/mitem.php:232 #: ../../mod/mitem.php:159 ../../mod/mitem.php:232
msgid "Use magic-auth if available" msgid "Use magic-auth if available"
msgstr "Use la autenticación mágica si está disponible" msgstr "Usar la autenticación mágica si está disponible"
#: ../../mod/mitem.php:160 ../../mod/mitem.php:233 #: ../../mod/mitem.php:160 ../../mod/mitem.php:233
msgid "Open link in new window" msgid "Open link in new window"
@ -6188,7 +6188,7 @@ msgstr "Puerto de la base de datos"
#: ../../mod/setup.php:312 #: ../../mod/setup.php:312
msgid "Communication port number - use 0 for default" msgid "Communication port number - use 0 for default"
msgstr "Número del puerto de comunicaciones - use 0 como valor por defecto" msgstr "Número del puerto de comunicaciones - usar 0 como valor por defecto"
#: ../../mod/setup.php:313 #: ../../mod/setup.php:313
msgid "Database Login Name" msgid "Database Login Name"
@ -6532,7 +6532,7 @@ msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo
#: ../../mod/tagger.php:96 #: ../../mod/tagger.php:96
#, php-format #, php-format
msgid "%1$s tagged %2$s's %3$s with %4$s" 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" msgstr "%1$s ha etiquetado la %3$s de %2$s con %4$s"
#: ../../mod/uexport.php:45 ../../mod/uexport.php:46 #: ../../mod/uexport.php:45 ../../mod/uexport.php:46
msgid "Export Channel" msgid "Export Channel"
@ -6958,7 +6958,7 @@ msgstr "Intervalo de sondeo"
msgid "" msgid ""
"Delay background polling processes by this many seconds to reduce system " "Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval." "load. If 0, use delivery interval."
msgstr "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." msgstr "Retrasar el sondeo en segundo plano en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, se usará el intervalo de entrega."
#: ../../mod/admin.php:491 #: ../../mod/admin.php:491
msgid "Maximum Load Average" msgid "Maximum Load Average"
@ -7985,7 +7985,7 @@ msgstr "Reciba una sugerencia de amistad"
#: ../../mod/settings.php:1108 #: ../../mod/settings.php:1108
msgid "You are tagged in a post" msgid "You are tagged in a post"
msgstr "Usted sea etiquetado en una publicación" msgstr "Usted ha sido etiquetado en una publicación"
#: ../../mod/settings.php:1109 #: ../../mod/settings.php:1109
msgid "You are poked/prodded/etc. in a post" msgid "You are poked/prodded/etc. in a post"
@ -8305,7 +8305,7 @@ msgstr "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunqu
#: ../../mod/connedit.php:551 #: ../../mod/connedit.php:551
msgid "This connection is archived!" msgid "This connection is archived!"
msgstr "¡Esta conexión esta archivada!" msgstr "¡Esta conexión está archivada!"
#: ../../mod/connedit.php:555 #: ../../mod/connedit.php:555
msgid "Unhide" msgid "Unhide"

View File

@ -364,9 +364,9 @@ $a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %
$a->strings["%1\$s sent you %2\$s."] = "%1\$s le envió %2\$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["a private message"] = "un mensaje privado";
$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["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ó en [zrl=%3\$s]a %4\$s[/zrl]"; $a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s ha comentado sobre [zrl=%3\$s]%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ó en [zrl=%3\$s]%4\$s de %5\$s[/zrl]"; $a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s ha comentado sobre el [zrl=%3\$s]%5\$s de %4\$s[/zrl]";
$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s comentó en [zrl=%3\$s]su %4\$s[/zrl]"; $a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s ha comentado [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["[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["%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["Please visit %s to view and/or reply to the conversation."] = "Para ver o comentar la conversación, visite %s";
@ -377,11 +377,11 @@ $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 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["%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 le ha dado un toque"; $a->strings["[Red:Notify] %1\$s poked you"] = "[Red:Aviso] %1\$s le ha dado 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 poked you at %3\$s"] = "%1\$s, %2\$s le dio un toque sobre %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["%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["[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 your post at %3\$s"] = "%1\$s, %2\$s ha etiquetado su publicación sobre %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["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s ha etiquetado [zrl=%3\$s]su publicación[/zrl]";
$a->strings["[Red:Notify] Introduction received"] = "[Red:Aviso] Solicitud de conexión recibida"; $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 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["%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.";
@ -1093,7 +1093,7 @@ $a->strings["Tag: "] = "Etiqueta:";
$a->strings["Last background fetch: "] = "Última actualización en segundo plano:"; $a->strings["Last background fetch: "] = "Última actualización en segundo plano:";
$a->strings["Running at web location"] = "Corriendo en el sitio web"; $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["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["Bug reports and issues: please visit"] = "Informes de errores e incidencias: por favor visite";
$a->strings["\$projectname issues"] = "Problemas en \$projectname"; $a->strings["\$projectname issues"] = "Problemas en \$projectname";
$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Sugerencias, elogios, etc - por favor, un correo electrónico a \"redmatrix\" en librelist - punto com"; $a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Sugerencias, elogios, etc - por favor, un correo electrónico a \"redmatrix\" en librelist - punto com";
$a->strings["Site Administrators"] = "Administradores del sitio"; $a->strings["Site Administrators"] = "Administradores del sitio";
@ -1244,7 +1244,7 @@ $a->strings["(click to open/close)"] = "(pulse para abrir/cerrar)";
$a->strings["Link Name"] = "Nombre del enlace"; $a->strings["Link Name"] = "Nombre del enlace";
$a->strings["Link or Submenu Target"] = "Destino del enlace o submenú"; $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ú"; $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ú";
$a->strings["Use magic-auth if available"] = "Use la autenticación mágica si está disponible"; $a->strings["Use magic-auth if available"] = "Usar la autenticación mágica si está disponible";
$a->strings["Open link in new window"] = "Abrir el enlace en una nueva ventana"; $a->strings["Open link in new window"] = "Abrir el enlace en una nueva ventana";
$a->strings["Order in list"] = "Orden en la lista"; $a->strings["Order in list"] = "Orden en la lista";
$a->strings["Higher numbers will sink to bottom of listing"] = "Los números más altos irán al final de la lista"; $a->strings["Higher numbers will sink to bottom of listing"] = "Los números más altos irán al final de la lista";
@ -1467,7 +1467,7 @@ $a->strings["The database you specify below should already exist. If it does not
$a->strings["Database Server Name"] = "Nombre del servidor de base de datos"; $a->strings["Database Server Name"] = "Nombre del servidor de base de datos";
$a->strings["Default is localhost"] = "Por defecto es localhost"; $a->strings["Default is localhost"] = "Por defecto es localhost";
$a->strings["Database Port"] = "Puerto de la base de datos"; $a->strings["Database Port"] = "Puerto de la base de datos";
$a->strings["Communication port number - use 0 for default"] = "Número del puerto de comunicaciones - use 0 como valor por defecto"; $a->strings["Communication port number - use 0 for default"] = "Número del puerto de comunicaciones - usar 0 como valor por defecto";
$a->strings["Database Login Name"] = "Nombre de acceso a la base de datos"; $a->strings["Database Login Name"] = "Nombre de acceso a la base de datos";
$a->strings["Database Login Password"] = "Contraseña de acceso a la base de datos"; $a->strings["Database Login Password"] = "Contraseña de acceso a la base de datos";
$a->strings["Database Name"] = "Nombre de la base de datos"; $a->strings["Database Name"] = "Nombre de la base de datos";
@ -1537,7 +1537,7 @@ $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["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["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 desde su servidor 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["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetado la %3\$s de %2\$s con %4\$s";
$a->strings["Export Channel"] = "Exportar el canal"; $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 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 Content"] = "Exportar contenidos";
@ -1632,7 +1632,7 @@ $a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] =
$a->strings["Delivery interval"] = "Intervalo de entrega"; $a->strings["Delivery interval"] = "Intervalo de entrega";
$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Retrasar los procesos de entrega en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para hosts compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados."; $a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Retrasar los procesos de entrega en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para hosts compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados.";
$a->strings["Poll interval"] = "Intervalo de sondeo"; $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["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 segundos, para reducir la carga del sistema. Si es 0, se usará el intervalo de entrega.";
$a->strings["Maximum Load Average"] = "Carga media máxima"; $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["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 (red)"; $a->strings["Expiration period in days for imported (matrix/network) content"] = "Periodo de caducidad en días para el contenido importado (red)";
@ -1887,7 +1887,7 @@ $a->strings["Someone writes on your profile wall"] = "Alguien escriba en la pág
$a->strings["Someone writes a followup comment"] = "Alguien escriba un comentario sobre sus publicaciones"; $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 private message"] = "Reciba un mensaje privado";
$a->strings["You receive a friend suggestion"] = "Reciba una sugerencia de amistad"; $a->strings["You receive a friend suggestion"] = "Reciba una sugerencia de amistad";
$a->strings["You are tagged in a post"] = "Usted sea etiquetado en una publicación"; $a->strings["You are tagged in a post"] = "Usted ha sido etiquetado en una publicación";
$a->strings["You are poked/prodded/etc. in a post"] = "Recibir un toque o incitación en una publicación"; $a->strings["You are poked/prodded/etc. in a post"] = "Recibir un toque o incitación en una publicación";
$a->strings["Show visual notifications including:"] = "Mostrar notificaciones visuales que incluyan:"; $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 matrix activity"] = "Actividad no vista en la red";
@ -1964,7 +1964,7 @@ $a->strings["This connection is ignored!"] = "¡Esta conexión es ignorada!";
$a->strings["Unarchive"] = "Desarchivar"; $a->strings["Unarchive"] = "Desarchivar";
$a->strings["Archive"] = "Archivar"; $a->strings["Archive"] = "Archivar";
$a->strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos"; $a->strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos";
$a->strings["This connection is archived!"] = "¡Esta conexión esta archivada!"; $a->strings["This connection is archived!"] = "¡Esta conexión está archivada!";
$a->strings["Unhide"] = "Mostrar"; $a->strings["Unhide"] = "Mostrar";
$a->strings["Hide"] = "Ocultar"; $a->strings["Hide"] = "Ocultar";
$a->strings["Hide or Unhide this connection from your other connections"] = "Ocultar o mostrar esta conexión a sus otras conexiones"; $a->strings["Hide or Unhide this connection from your other connections"] = "Ocultar o mostrar esta conexión a sus otras conexiones";

8034
view/fr/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

1898
view/fr/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

8934
view/it/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

2118
view/it/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2,5 +2,4 @@ $(document).ready(function() {
$("#recip").contact_autocomplete(baseurl + '/acl', '', false, function(data) { $("#recip").contact_autocomplete(baseurl + '/acl', '', false, function(data) {
$("#recip-complete").val(data.xid); $("#recip-complete").val(data.xid);
}); });
}); });

8893
view/nb-no/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

2111
view/nb-no/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

8940
view/nl/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

2124
view/nl/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,4 @@
[region=aside] [region=aside]
[widget=vcard][/widget] [widget=mailmenu][/widget]
[widget=conversations][/widget]
[/region] [/region]

9250
view/pt-br/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

2326
view/pt-br/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

7842
view/ru/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

1865
view/ru/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

8550
view/sv/hmessages.po Normal file

File diff suppressed because it is too large Load Diff

2019
view/sv/hstrings.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1305,6 +1305,10 @@ a.rconnect:hover, a.rateme:hover, div.rateme:hover {
padding: 0; padding: 0;
} }
.widget .conv-participants {
color: $font_colour;
}
.notif-item a { .notif-item a {
color: #000; color: #000;
} }
@ -1561,9 +1565,9 @@ th,td {
overflow: hidden; overflow: hidden;
} }
/* message */ /* mail */
img.mail-list-sender-photo { img.mail-conv-sender-photo {
-moz-border-radius: $radiuspx; -moz-border-radius: $radiuspx;
border-radius: $radiuspx; border-radius: $radiuspx;
} }

View File

@ -78,6 +78,7 @@
{{include file="field_input.tpl" field=$proxyuser}} {{include file="field_input.tpl" field=$proxyuser}}
{{include file="field_input.tpl" field=$timeout}} {{include file="field_input.tpl" field=$timeout}}
{{include file="field_input.tpl" field=$delivery_interval}} {{include file="field_input.tpl" field=$delivery_interval}}
{{include file="field_input.tpl" field=$delivery_batch_count}}
{{include file="field_input.tpl" field=$poll_interval}} {{include file="field_input.tpl" field=$poll_interval}}
{{include file="field_input.tpl" field=$maxloadavg}} {{include file="field_input.tpl" field=$maxloadavg}}
{{include file="field_input.tpl" field=$abandon_days}} {{include file="field_input.tpl" field=$abandon_days}}

View File

@ -1,18 +1,18 @@
<div class="mail-conv-outside-wrapper"> <div id="mail-{{$mail.id}}" class="mail-conv-outside-wrapper">
<div class="mail-conv-sender" > <div class="mail-conv-sender" >
<a href="{{$mail.from_url}}" class="mail-conv-sender-url" ><img class="mframe mail-conv-sender-photo{{$mail.sparkle}}" src="{{$mail.from_photo}}" heigth="80" width="80" alt="{{$mail.from_name}}" /></a> <a href="{{$mail.from_url}}"><img class="mail-conv-sender-photo" src="{{$mail.from_photo}}" alt="{{$mail.from_name}}" /></a>
<div class="mail-conv-sender-name" >{{$mail.from_name}}</div>
</div> </div>
<div class="mail-conv-detail"> <div class="mail-conv-detail">
{{if $mail.is_recalled}}<strong>{{$mail.is_recalled}}</strong>{{/if}} {{if $mail.is_recalled}}<strong>{{$mail.is_recalled}}</strong>{{/if}}
<div class="mail-conv-date">{{$mail.date}}</div> <div class="mail-conv-sender-name" ><a href="{{$mail.from_url}}">{{$mail.from_name}}</a></div>
<div class="mail-conv-subject">{{$mail.subject}}</div> <div class="mail-conv-date autotime wall-item-ago" title="{{$mail.date}}">{{$mail.date}}</div>
<div class="mail-conv-body">{{$mail.body}}</div> <div class="mail-conv-body">{{$mail.body}}</div>
<div class="mail-conv-delete-wrapper" id="mail-conv-delete-wrapper-{{$mail.id}}" ><a href="mail/drop/{{$mail.id}}" onclick="return confirmDelete();" title="{{$mail.delete}}" id="mail-conv-delete-icon-{{$mail.id}}" class="mail-conv-delete-icon btn btn-default" ><i class="icon-trash mail-icons drop-icons"></i></a></div><div class="mail-conv-delete-end"></div> <div class="btn-group pull-right" id="mail-conv-delete-wrapper-{{$mail.id}}" >
{{if $mail.can_recall}} {{if $mail.can_recall}}
<div class="mail-conv-recall-wrapper" id="mail-conv-recall-wrapper-{{$mail.id}}" ><a href="mail/recall/{{$mail.id}}" title="{{$mail.recall}}" id="mail-conv-recall-icon-{{$mail.id}}" class="mail-conv-recall-icon btn btn-default" ><i class="icon-undo mail-icons drop-icons"></i></a></div><div class="mail-conv-recall-end"></div> <a href="mail/{{$mail.mailbox}}/recall/{{$mail.id}}" title="{{$mail.recall}}" id="mail-conv-recall-icon-{{$mail.id}}" class="btn btn-default" ><i class="icon-undo mail-icons"></i></a>
{{/if}} {{/if}}
<div class="mail-conv-outside-wrapper-end"></div> <a href="#" onclick="dropItem('mail/{{$mail.mailbox}}/drop/{{$mail.id}}', '#mail-{{$mail.id}}'); return false;" title="{{$mail.delete}}" id="mail-conv-delete-icon-{{$mail.id}}" class="btn btn-default" ><i class="icon-trash mail-icons"></i></a>
</div> </div>
</div> </div>
<hr class="mail-conv-break" /> <div class="clear"></div>
</div>

View File

@ -1,6 +1,8 @@
<div class="generic-content-wrapper"> <div class="generic-content-wrapper">
<div class="section-title-wrapper"> <div class="section-title-wrapper">
<a class="btn btn-xs btn-danger pull-right" href="mail/{{$mailbox}}/dropconv/{{$thread_id}}" onclick="return confirmDelete();"><i class="icon-trash"></i> {{$delete}}</a>
<h2>{{$prvmsg_header}}</h2> <h2>{{$prvmsg_header}}</h2>
<div class="clear"></div>
</div> </div>
<div class="section-content-wrapper"> <div class="section-content-wrapper">
{{foreach $mails as $mail}} {{foreach $mails as $mail}}

View File

@ -1,10 +1,8 @@
<div class="generic-content-wrapper"> <div class="widget">
<div class="section-title-wrapper"> <h3>{{$header}}</h3>
<h2>{{$header}}</h2> <ul class="nav nav-pills nav-stacked">
</div>
<div class="section-content-wrapper">
{{foreach $messages as $message}} {{foreach $messages as $message}}
{{include file="mail_list.tpl"}} {{include file="mail_list.tpl"}}
{{/foreach}} {{/foreach}}
</div> </ul>
</div> </div>

View File

@ -1,6 +1,7 @@
<a href="{{$message.from_url}}" class ="mail-list" ><img class="mail-list-sender-photo" src="{{$message.from_photo}}" alt="{{$message.from_name}}" /></a> <li>
<span class="mail-list">{{$message.from_name}}</span> <a href="mail/{{$message.mailbox}}/{{$message.id}}" class="{{if $message.selected}}active{{/if}}">
<span class="mail-list {{if $message.seen}}seen{{else}}unseen{{/if}}"><a href="mail/{{$message.id}}" class="mail-link">{{$message.subject}}</a></span> <span class="{{if $message.seen}}seen{{else}}unseen{{/if}}">{{$message.subject}}</span><br>
<span class="mail-list" title="{{$message.date}}">{{$message.date}}</span> <span class="conv-participants">{{$message.from_name}} > {{$message.to_name}}</span><br>
<span class="mail-list mail-list-remove" class="btn btn-default btn-sm"><a href="message/dropconv/{{$message.id}}" onclick="return confirmDelete();" title="{{$message.delete}}" class="btn btn-default btn-sm" ><i class="icon-trash mail-icons drop-icons"></i></a></span> <span class="wall-item-ago autotime" title="{{$message.date}}">{{$message.date}}</span>
<div class="clear"></div> </a>
</li>

View File

@ -1,14 +1,10 @@
<div class="widget"> <div class="widget">
<h3>{{$title}}</h3> <h3>{{$title}}</h3>
<ul class="nav nav-pills nav-stacked"> <ul class="nav nav-pills nav-stacked">
<li><a href="{{$check.url}}"{{if $check.sel}} class="checkmessage-selected"{{/if}}>{{$check.label}}</a></li> <li><a href="{{$check.url}}"{{if $check.sel}} class="active"{{/if}}>{{$check.label}}</a></li>
<li><a href="{{$new.url}}"{{if $new.sel}} class="newmessage-selected"{{/if}}>{{$new.label}}</a></li> <li><a href="{{$combined.url}}"{{if $combined.sel}} class="active"{{/if}}>{{$combined.label}}</a></li>
<li><a href="{{$inbox.url}}"{{if $inbox.sel}} class="active"{{/if}}>{{$inbox.label}}</a></li>
<li><a href="{{$outbox.url}}"{{if $outbox.sel}} class="active"{{/if}}>{{$outbox.label}}</a></li>
<li><a href="{{$new.url}}"{{if $new.sel}} class="active"{{/if}}>{{$new.label}}</a></li>
</ul> </ul>
{{if $tabs}}
<ul class="nav nav-pills nav-stacked">
{{foreach $tabs as $t}}
<li><a href="{{$t.url}}"{{if $t.sel}} class="message-selected"{{/if}}>{{$t.label}}</a></li>
{{/foreach}}
</ul>
{{/if}}
</div> </div>

View File

@ -8,7 +8,7 @@
<div id="prvmail-to-label">{{$to}}</div> <div id="prvmail-to-label">{{$to}}</div>
{{if $showinputs}} {{if $showinputs}}
<input type="text" id="recip" name="messagerecip" value="{{$prefill}}" maxlength="255" size="64" tabindex="10" /> <input class="form-control" type="text" id="recip" name="messagerecip" value="{{$prefill}}" maxlength="255" tabindex="10" />
<input type="hidden" id="recip-complete" name="messageto" value="{{$preid}}"> <input type="hidden" id="recip-complete" name="messageto" value="{{$preid}}">
{{else}} {{else}}
{{$select}} {{$select}}
@ -18,10 +18,10 @@
<input type="hidden" name="media_str" id="jot-media" value="" /> <input type="hidden" name="media_str" id="jot-media" value="" />
<div id="prvmail-subject-label">{{$subject}}</div> <div id="prvmail-subject-label">{{$subject}}</div>
<input type="text" size="64" maxlength="255" id="prvmail-subject" name="subject" value="{{$subjtxt}}" {{$readonly}} tabindex="11" /> <input class="form-control" type="text" maxlength="255" id="prvmail-subject" name="subject" value="{{$subjtxt}}" {{$readonly}} tabindex="11" />
<div id="prvmail-message-label">{{$yourmessage}}</div> <div id="prvmail-message-label">{{$yourmessage}}</div>
<textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">{{$text}}</textarea> <textarea class="prvmail-text form-control" id="prvmail-text" name="body" tabindex="12">{{$text}}</textarea>
<div id="prvmail-submit-wrapper" > <div id="prvmail-submit-wrapper" >
@ -51,6 +51,6 @@
<div id="prvmail-rotator"></div> <div id="prvmail-rotator"></div>
</div> </div>
</div> </div>
<div id="prvmail-end"></div> <div id="prvmail-end" class="clear"></div>
</form> </form>
</div> </div>

View File

@ -8,5 +8,12 @@
<p><b><a href="uexport/complete">{{$fulltitle}}</a></b></p> <p><b><a href="uexport/complete">{{$fulltitle}}</a></b></p>
<p>{{$full}}</p> <p>{{$full}}</p>
<p>{{$extra}}</p>
<p>{{$extra2}}</p>
<p>{{$extra3}}</p>
<p>{{$extra4}}</p>
</div> </div>
</div> </div>