Merge remote-tracking branch 'upstream/develop' into 1508-poco-ostatus

This commit is contained in:
Michael Vogel 2015-08-24 18:16:14 +02:00
commit 9ae4528d8b
23 changed files with 530 additions and 358 deletions

View File

@ -19,7 +19,7 @@ define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_CODENAME', 'Lily of the valley');
define ( 'FRIENDICA_VERSION', '3.4.1' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1187 );
define ( 'DB_UPDATE_VERSION', 1188 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
@ -84,6 +84,15 @@ define ( 'LOGGER_DEBUG', 2 );
define ( 'LOGGER_DATA', 3 );
define ( 'LOGGER_ALL', 4 );
/**
* cache levels
*/
define ( 'CACHE_MONTH', 0 );
define ( 'CACHE_WEEK', 1 );
define ( 'CACHE_DAY', 2 );
define ( 'CACHE_HOUR', 3 );
/**
* registration policies
*/

View File

@ -819,7 +819,7 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) {
}
}
Cache::set("probe_url:".$mode.":".$url,serialize($result));
Cache::set("probe_url:".$mode.":".$url,serialize($result), CACHE_DAY);
return $result;
}

View File

@ -5,33 +5,25 @@
class Cache {
public static function get($key) {
/*if (function_exists("apc_fetch") AND function_exists("apc_exists"))
if (apc_exists($key))
return(apc_fetch($key));*/
$r = q("SELECT `v` FROM `cache` WHERE `k`='%s' limit 1",
dbesc($key)
);
if (count($r)) {
/*if (function_exists("apc_store"))
apc_store($key, $r[0]['v'], 600);*/
if (count($r))
return $r[0]['v'];
}
return null;
}
public static function set($key,$value) {
public static function set($key,$value, $duration = CACHE_MONTH) {
q("REPLACE INTO `cache` (`k`,`v`,`updated`) VALUES ('%s','%s','%s')",
q("REPLACE INTO `cache` (`k`,`v`,`expire_mode`,`updated`) VALUES ('%s','%s',%d,'%s')",
dbesc($key),
dbesc($value),
intval($duration),
dbesc(datetime_convert()));
/*if (function_exists("apc_store"))
apc_store($key, $value, 600);*/
}
@ -63,8 +55,17 @@
public static function clear(){
q("DELETE FROM `cache` WHERE `updated` < '%s'",
dbesc(datetime_convert('UTC','UTC',"now - 30 days")));
q("DELETE FROM `cache` WHERE `updated` < '%s' AND `expire_mode` = %d",
dbesc(datetime_convert('UTC','UTC',"now - 30 days")), intval(CACHE_MONTH));
q("DELETE FROM `cache` WHERE `updated` < '%s' AND `expire_mode` = %d",
dbesc(datetime_convert('UTC','UTC',"now - 7 days")), intval(CACHE_WEEK));
q("DELETE FROM `cache` WHERE `updated` < '%s' AND `expire_mode` = %d",
dbesc(datetime_convert('UTC','UTC',"now - 1 days")), intval(CACHE_DAY));
q("DELETE FROM `cache` WHERE `updated` < '%s' AND `expire_mode` = %d",
dbesc(datetime_convert('UTC','UTC',"now - 1 hours")), intval(CACHE_HOUR));
}
}

View File

@ -364,6 +364,7 @@ function db_definition() {
"fields" => array(
"k" => array("type" => "varchar(255)", "not null" => "1", "primary" => "1"),
"v" => array("type" => "text", "not null" => "1"),
"expire_mode" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
"updated" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
),
"indexes" => array(

View File

@ -183,7 +183,7 @@ function discover_directory($search) {
poco_check($data["url"], $data["name"], $data["network"], $data["photo"], "", "", "", $jj->tags, $data["addr"], "", 0);
}
}
Cache::set("dirsearch:".$search, time());
Cache::set("dirsearch:".$search, time(), CACHE_DAY);
}
if (array_search(__file__,get_included_files())===0){

View File

@ -969,7 +969,7 @@ function query_page_info($url, $no_photos = false, $photo = "", $keywords = fals
$data = Cache::get("parse_url:".$url);
if (is_null($data)){
$data = parseurl_getsiteinfo($url, true);
Cache::set("parse_url:".$url,serialize($data));
Cache::set("parse_url:".$url,serialize($data), CACHE_DAY);
} else
$data = unserialize($data);

View File

@ -26,7 +26,7 @@ function nav(&$a) {
$tpl = get_markup_template('nav.tpl');
$a->page['nav'] .= replace_macros($tpl, array(
'$baseurl' => $a->get_baseurl(),
'$baseurl' => $a->get_baseurl(),
'$langselector' => lang_selector(),
'$sitelocation' => $nav_info['sitelocation'],
'$nav' => $nav_info['nav'],
@ -118,6 +118,12 @@ function nav_info(&$a) {
$nav['search'] = array('search', t('Search'), "", t('Search site content'));
$nav['searchoption'] = array(
t("Full Text"),
t("Tags"),
t("Contacts"),
t("Forums"));
$gdirpath = 'directory';
if(strlen(get_config('system','singleuser'))) {

View File

@ -73,7 +73,7 @@ function oembed_fetch_url($embedurl, $no_rich_type = false){
if ($txt[0]!="{") $txt='{"type":"error"}';
//save in cache
Cache::set($a->videowidth . $embedurl,$txt);
Cache::set($a->videowidth . $embedurl,$txt, CACHE_DAY);
}

View File

@ -986,16 +986,26 @@ if(! function_exists('search')) {
* @param string $url search url
* @param boolean $savedsearch show save search button
*/
function search($s,$id='search-box',$url='/search',$save = false) {
function search($s,$id='search-box',$url='/search',$save = false, $aside = true) {
$a = get_app();
return replace_macros(get_markup_template('searchbox.tpl'), array(
'$s' => $s,
'$id' => $id,
'$action_url' => $a->get_baseurl((stristr($url,'network')) ? true : false) . $url,
'$search_label' => t('Search'),
'$save_label' => t('Save'),
'$savedsearch' => feature_enabled(local_user(),'savedsearch'),
));
$values = array(
'$s' => $s,
'$id' => $id,
'$action_url' => $a->get_baseurl((stristr($url,'network')) ? true : false) . $url,
'$search_label' => t('Search'),
'$save_label' => t('Save'),
'$savedsearch' => feature_enabled(local_user(),'savedsearch'),
);
if (!$aside)
$values['$searchoption'] = array(
t("Full Text"),
t("Tags"),
t("Contacts"),
t("Forums"));
return replace_macros(get_markup_template('searchbox.tpl'), $values);
}}
if(! function_exists('valid_email')) {

View File

@ -1,6 +1,6 @@
/**
* Filebrowser - Friendica Communications Server
*
*
* Copyright (c) 2010-2013 the Friendica Project
*
* This program is free software: you can redistribute it and/or modify
@ -28,7 +28,7 @@
* The event is named
*
* fbrowser.<type>.[<eventname>]
*
*
* with params:
*
* filemane: filename of item choosed by user
@ -49,13 +49,13 @@
* $(id).value = bbcode;
* });
**/
var FileBrowser = {
nickname : "",
type : "",
event: "",
id : null,
init: function(nickname, type) {
FileBrowser.nickname = nickname;
FileBrowser.type = type;
@ -65,18 +65,23 @@ var FileBrowser = {
FileBrowser.event = FileBrowser.event + "." + h.split("-")[0];
FileBrowser.id = h.split("-")[1];
}
console.log("FileBrowser:", nickname, type,FileBrowser.event, FileBrowser.id );
$(".error a.close").on("click", function(e) {
e.preventDefault();
$(".error").addClass("hidden");
});
$(".folders a, .path a").on("click", function(e){
e.preventDefault();
var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + this.dataset.folder + "?mode=minimal" + location['hash'];
location.href = url;
});
$(".photo-album-photo-link").on('click', function(e){
e.preventDefault();
var embed = "";
if (FileBrowser.type == "image") {
embed = "[url="+this.dataset.link+"][img]"+this.dataset.img+"[/img][/url]";
@ -91,31 +96,45 @@ var FileBrowser = {
embed,
FileBrowser.id
]);
});
if ($("#upload-image").length)
var image_uploader = new window.AjaxUpload(
'upload-image',
{ action: 'wall_upload/'+FileBrowser.nickname,
{ action: 'wall_upload/'+FileBrowser.nickname+'?response=json',
name: 'userfile',
onSubmit: function(file,ext) { $('#profile-rotator').show(); },
responseType: 'json',
onSubmit: function(file,ext) { $('#profile-rotator').show(); $(".error").addClass('hidden'); },
onComplete: function(file,response) {
if (response['error']!= undefined) {
$(".error span").html(response['error']);
$(".error").removeClass('hidden');
$('#profile-rotator').hide();
return;
}
location = baseurl + "/fbrowser/image/?mode=minimal"+location['hash'];
location.reload(true);
}
}
}
);
if ($("#upload-file").length)
var file_uploader = new window.AjaxUpload(
'upload-file',
{ action: 'wall_attach/'+FileBrowser.nickname,
{ action: 'wall_attach/'+FileBrowser.nickname+'?response=json',
name: 'userfile',
onSubmit: function(file,ext) { $('#profile-rotator').show(); },
onSubmit: function(file,ext) { $('#profile-rotator').show(); $(".error").addClass('hidden'); },
onComplete: function(file,response) {
if (response['error']!= undefined) {
$(".error span").html(response['error']);
$(".error").removeClass('hidden');
$('#profile-rotator').hide();
return;
}
location = baseurl + "/fbrowser/file/?mode=minimal"+location['hash'];
location.reload(true); }
location.reload(true);
}
}
);
}

View File

@ -14,13 +14,13 @@ function dirfind_init(&$a) {
function dirfind_content(&$a) {
function dirfind_content(&$a, $prefix = "") {
$community = false;
$local = get_config('system','poco_local_search');
$search = notags(trim($_REQUEST['search']));
$search = $prefix.notags(trim($_REQUEST['search']));
if(strpos($search,'@') === 0)
$search = substr($search,1);

View File

@ -11,29 +11,29 @@ require_once('include/Photo.php');
* @param App $a
*/
function fbrowser_content($a){
if (!local_user())
killme();
if ($a->argc==1)
killme();
$template_file = "filebrowser.tpl";
$mode = "";
if (x($_GET,'mode')) {
$template_file = "filebrowser_plain.tpl";
$mode = "?mode=".$_GET['mode'];
}
//echo "<pre>"; var_dump($a->argv); killme();
//echo "<pre>"; var_dump($a->argv); killme();
switch($a->argv[1]){
case "image":
$path = array( array("", t("Photos")));
$albums = false;
$sql_extra = "";
$sql_extra2 = " ORDER BY created DESC LIMIT 0, 10";
if ($a->argc==2){
$albums = q("SELECT distinct(`album`) AS `album` FROM `photo` WHERE `uid` = %d ",
intval(local_user())
@ -41,9 +41,9 @@ function fbrowser_content($a){
// anon functions only from 5.3.0... meglio tardi che mai..
$folder1 = function($el) use ($mode) {return array(bin2hex($el['album']),$el['album']);};
$albums = array_map( $folder1 , $albums);
}
$album = "";
if ($a->argc==3){
$album = hex2bin($a->argv[2]);
@ -51,14 +51,14 @@ function fbrowser_content($a){
$sql_extra2 = "";
$path[]=array($a->argv[2], $album);
}
$r = q("SELECT `resource-id`, `id`, `filename`, type, min(`scale`) AS `hiq`,max(`scale`) AS `loq`, `desc`
FROM `photo` WHERE `uid` = %d AND (height <= 320 AND width <= 320) $sql_extra
$r = q("SELECT `resource-id`, `id`, `filename`, type, min(`scale`) AS `hiq`,max(`scale`) AS `loq`, `desc`
FROM `photo` WHERE `uid` = %d $sql_extra
GROUP BY `resource-id` $sql_extra2",
intval(local_user())
intval(local_user())
);
function files1($rr){
function files1($rr){
global $a;
$types = Photo::supportedTypes();
$ext = $types[$rr['type']];
@ -70,16 +70,16 @@ function fbrowser_content($a){
$filename_e = $rr['filename'];
}
return array(
$a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['hiq'] . '.' .$ext,
$filename_e,
return array(
$a->get_baseurl() . '/photo/' . $rr['resource-id'] . '.' .$ext,
$filename_e,
$a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['loq'] . '.'. $ext
);
}
$files = array_map("files1", $r);
$tpl = get_markup_template($template_file);
$o = replace_macros($tpl, array(
'$type' => 'image',
'$baseurl' => $a->get_baseurl(),
@ -89,16 +89,16 @@ function fbrowser_content($a){
'$cancel' => t('Cancel'),
'$nickname' => $a->user['nickname'],
));
break;
case "file":
if ($a->argc==2){
$files = q("SELECT id, filename, filetype FROM `attach` WHERE `uid` = %d ",
intval(local_user())
);
function files2($rr){ global $a;
function files2($rr){ global $a;
list($m1,$m2) = explode("/",$rr['filetype']);
$filetype = ( (file_exists("images/icons/$m1.png"))?$m1:"zip");
@ -109,12 +109,12 @@ function fbrowser_content($a){
$filename_e = $rr['filename'];
}
return array( $a->get_baseurl() . '/attach/' . $rr['id'], $filename_e, $a->get_baseurl() . '/images/icons/16/' . $filetype . '.png');
return array( $a->get_baseurl() . '/attach/' . $rr['id'], $filename_e, $a->get_baseurl() . '/images/icons/16/' . $filetype . '.png');
}
$files = array_map("files2", $files);
//echo "<pre>"; var_dump($files); killme();
$tpl = get_markup_template($template_file);
$o = replace_macros($tpl, array(
'$type' => 'file',
@ -125,18 +125,18 @@ function fbrowser_content($a){
'$cancel' => t('Cancel'),
'$nickname' => $a->user['nickname'],
));
}
break;
}
if (x($_GET,'mode')) {
return $o;
} else {
echo $o;
killme();
}
}

View File

@ -60,7 +60,7 @@ function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = tr
$data = parseurl_getsiteinfo($url, $no_guessing, $do_oembed);
Cache::set("parse_url:".$no_guessing.":".$do_oembed.":".$url,serialize($data));
Cache::set("parse_url:".$no_guessing.":".$do_oembed.":".$url,serialize($data), CACHE_DAY);
return $data;
}

View File

@ -1,4 +1,8 @@
<?php
require_once("include/bbcode.php");
require_once('include/security.php');
require_once('include/conversation.php');
require_once('mod/dirfind.php');
function search_saved_searches() {
@ -92,9 +96,6 @@ function search_content(&$a) {
nav_set_selected('search');
require_once("include/bbcode.php");
require_once('include/security.php');
require_once('include/conversation.php');
$o = '<h3>' . t('Search') . '</h3>';
@ -110,21 +111,34 @@ function search_content(&$a) {
}
$o .= search($search,'search-box','/search',((local_user()) ? true : false));
$o .= search($search,'search-box','/search',((local_user()) ? true : false), false);
if(strpos($search,'#') === 0) {
$tag = true;
$search = substr($search,1);
}
if(strpos($search,'@') === 0) {
require_once('mod/dirfind.php');
return dirfind_content($a);
}
if(strpos($search,'!') === 0) {
require_once('mod/dirfind.php');
return dirfind_content($a);
}
if(x($_GET,'search-option'))
switch($_GET['search-option']) {
case 'fulltext':
break;
case 'tags':
$tag = true;
break;
case 'contacts':
return dirfind_content($a, "@");
break;
case 'forums':
return dirfind_content($a, "!");
break;
}
if(! $search)
return $o;

View File

@ -5,17 +5,22 @@ require_once('include/datetime.php');
function wall_attach_post(&$a) {
$r_json = (x($_GET,'response') && $_GET['response']=='json');
if($a->argc > 1) {
$nick = $a->argv[1];
$r = q("SELECT `user`.*, `contact`.`id` FROM `user` LEFT JOIN `contact` on `user`.`uid` = `contact`.`uid` WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
dbesc($nick)
);
if(! count($r))
if(! count($r)){
if ($r_json) { echo json_encode(['error'=>t('Invalid request.')]); killme(); }
return;
}
}
else
} else {
if ($r_json) { echo json_encode(['error'=>t('Invalid request.')]); killme(); }
return;
}
$can_post = false;
$visitor = 0;
@ -52,12 +57,15 @@ function wall_attach_post(&$a) {
}
}
if(! $can_post) {
if ($r_json) { echo json_encode(['error'=>t('Permission denied.')]); killme(); }
notice( t('Permission denied.') . EOL );
killme();
}
if(! x($_FILES,'userfile'))
if(! x($_FILES,'userfile')) {
if ($r_json) { echo json_encode(['error'=>t('Invalid request.')]); killme(); }
killme();
}
$src = $_FILES['userfile']['tmp_name'];
$filename = basename($_FILES['userfile']['name']);
@ -72,13 +80,23 @@ function wall_attach_post(&$a) {
*/
if($filesize <=0) {
notice(t('Sorry, maybe your upload is bigger than the PHP configuration allows') . EOL .(t('Or - did you try to upload an empty file?')) . EOL);
$msg = t('Sorry, maybe your upload is bigger than the PHP configuration allows') . EOL .(t('Or - did you try to upload an empty file?'));
if ($r_json) {
echo json_encode(['error'=>$msg]);
} else {
notice( $msg. EOL );
}
@unlink($src);
killme();
}
if(($maxfilesize) && ($filesize > $maxfilesize)) {
echo sprintf(t('File exceeds size limit of %s'), formatBytes($maxfilesize)) . EOL;
$msg = sprintf(t('File exceeds size limit of %s'), formatBytes($maxfilesize));
if ($r_json) {
echo json_encode(['error'=>$msg]);
} else {
echo $msg. EOL ;
}
@unlink($src);
killme();
}
@ -90,7 +108,12 @@ function wall_attach_post(&$a) {
$limit = service_class_fetch($page_owner_uid,'attach_upload_limit');
if(($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) {
echo upgrade_message(true) . EOL ;
$msg = upgrade_message(true);
if ($r_json) {
echo json_encode(['error'=>$msg]);
} else {
echo $msg. EOL ;
}
@unlink($src);
killme();
}
@ -119,7 +142,12 @@ function wall_attach_post(&$a) {
@unlink($src);
if(! $r) {
echo ( t('File upload failed.') . EOL);
$msg = t('File upload failed.');
if ($r_json) {
echo json_encode(['error'=>$msg]);
} else {
echo $msg. EOL ;
}
killme();
}
@ -130,14 +158,21 @@ function wall_attach_post(&$a) {
);
if(! count($r)) {
echo ( t('File upload failed.') . EOL);
$msg = t('File upload failed.');
if ($r_json) {
echo json_encode(['error'=>$msg]);
} else {
echo $msg. EOL ;
}
killme();
}
if ($r_json) { echo json_encode(['ok'=>true]); killme(); }
$lf = "\n";
echo $lf . $lf . '[attachment]' . $r[0]['id'] . '[/attachment]' . $lf;
killme();
// NOTREACHED
}

View File

@ -6,26 +6,29 @@ function wall_upload_post(&$a, $desktopmode = true) {
logger("wall upload: starting new upload", LOGGER_DEBUG);
$r_json = (x($_GET,'response') && $_GET['response']=='json');
if($a->argc > 1) {
if(! x($_FILES,'media')) {
$nick = $a->argv[1];
$r = q("SELECT `user`.*, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid` WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
dbesc($nick)
);
if(! x($_FILES,'media')) {
$nick = $a->argv[1];
$r = q("SELECT `user`.*, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid` WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
dbesc($nick)
);
if(! count($r))
return;
}
else {
if(! count($r)){
if ($r_json) { echo json_encode(['error'=>t('Invalid request.')]); killme(); }
return;
}
} else {
$user_info = api_get_user($a);
$r = q("SELECT `user`.*, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid` WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
dbesc($user_info['screen_name'])
);
}
}
else
$r = q("SELECT `user`.*, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid` WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
dbesc($user_info['screen_name'])
);
}
} else {
if ($r_json) { echo json_encode(['error'=>t('Invalid request.')]); killme(); }
return;
}
$can_post = false;
$visitor = 0;
@ -62,14 +65,19 @@ function wall_upload_post(&$a, $desktopmode = true) {
}
}
if(! $can_post) {
if ($r_json) { echo json_encode(['error'=>t('Permission denied.')]); killme(); }
notice( t('Permission denied.') . EOL );
killme();
}
if(! x($_FILES,'userfile') && ! x($_FILES,'media'))
if(! x($_FILES,'userfile') && ! x($_FILES,'media')){
if ($r_json) { echo json_encode(['error'=>t('Invalid request.')]); killme(); }
killme();
}
$src = "";
if(x($_FILES,'userfile')) {
$src = $_FILES['userfile']['tmp_name'];
$filename = basename($_FILES['userfile']['name']);
@ -98,6 +106,12 @@ function wall_upload_post(&$a, $desktopmode = true) {
$filetype = $_FILES['media']['type'];
}
if ($src=="") {
if ($r_json) { echo json_encode(['error'=>t('Invalid request.')]); killme(); }
notice(t('Invalid request.').EOL);
killme();
}
// This is a special treatment for picture upload from Twidere
if (($filename == "octet-stream") AND ($filetype != "")) {
$filename = $filetype;
@ -109,6 +123,7 @@ function wall_upload_post(&$a, $desktopmode = true) {
// If there is a temp name, then do a manual check
// This is more reliable than the provided value
$imagedata = getimagesize($src);
if ($imagedata)
$filetype = $imagedata['mime'];
@ -119,7 +134,12 @@ function wall_upload_post(&$a, $desktopmode = true) {
$maximagesize = get_config('system','maximagesize');
if(($maximagesize) && ($filesize > $maximagesize)) {
echo sprintf( t('Image exceeds size limit of %s'), formatBytes($maximagesize)) . EOL;
$msg = sprintf( t('Image exceeds size limit of %s'), formatBytes($maximagesize));
if ($r_json) {
echo json_encode(['error'=>$msg]);
} else {
echo $msg. EOL;
}
@unlink($src);
killme();
}
@ -131,7 +151,12 @@ function wall_upload_post(&$a, $desktopmode = true) {
$limit = service_class_fetch($page_owner_uid,'photo_upload_limit');
if(($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) {
echo upgrade_message(true) . EOL ;
$msg = upgrade_message(true);
if ($r_json) {
echo json_encode(['error'=>$msg]);
} else {
echo $msg. EOL;
}
@unlink($src);
killme();
}
@ -141,7 +166,12 @@ function wall_upload_post(&$a, $desktopmode = true) {
$ph = new Photo($imagedata, $filetype);
if(! $ph->is_valid()) {
echo ( t('Unable to process image.') . EOL);
$msg = t('Unable to process image.');
if ($r_json) {
echo json_encode(['error'=>$msg]);
} else {
echo $msg. EOL;
}
@unlink($src);
killme();
}
@ -169,7 +199,12 @@ function wall_upload_post(&$a, $desktopmode = true) {
$r = $ph->store($page_owner_uid, $visitor, $hash, $filename, t('Wall Photos'), 0, 0, $defperm);
if(! $r) {
echo ( t('Image upload failed.') . EOL);
$msg = t('Image upload failed.');
if ($r_json) {
echo json_encode(['error'=>$msg]);
} else {
echo $msg. EOL;
}
killme();
}
@ -192,9 +227,10 @@ function wall_upload_post(&$a, $desktopmode = true) {
if (!$desktopmode) {
$r = q("SELECT `id`, `datasize`, `width`, `height`, `type` FROM `photo` WHERE `resource-id` = '%s' ORDER BY `width` DESC LIMIT 1", $hash);
if (!$r)
if (!$r){
if ($r_json) { echo json_encode(['error'=>'']); killme(); }
return false;
}
$picture = array();
$picture["id"] = $r[0]["id"];
@ -206,9 +242,12 @@ function wall_upload_post(&$a, $desktopmode = true) {
$picture["picture"] = $a->get_baseurl()."/photo/{$hash}-0.".$ph->getExt();
$picture["preview"] = $a->get_baseurl()."/photo/{$hash}-{$smallest}.".$ph->getExt();
if ($r_json) { echo json_encode(['picture'=>$picture]); killme(); }
return $picture;
}
if ($r_json) { echo json_encode(['ok'=>true]); killme(); }
/* mod Waitman Gobble NO WARRANTY */
//if we get the signal then return the image url info in BBCODE, otherwise this outputs the info and bails (for the ajax image uploader on wall post)

View File

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1187 );
define( 'UPDATE_VERSION' , 1188 );
/**
*

File diff suppressed because it is too large Load Diff

View File

@ -72,7 +72,7 @@ $a->strings["Update now"] = "Jetzt aktualisieren";
$a->strings["Currently blocked"] = "Derzeit geblockt";
$a->strings["Currently ignored"] = "Derzeit ignoriert";
$a->strings["Currently archived"] = "Momentan archiviert";
$a->strings["Hide this contact from others"] = "Verbirg diesen Kontakt von anderen";
$a->strings["Hide this contact from others"] = "Verbirg diesen Kontakt vor andere";
$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Antworten/Likes auf deine öffentlichen Beiträge <strong>könnten</strong> weiterhin sichtbar sein";
$a->strings["Notification for new posts"] = "Benachrichtigung bei neuen Beiträgen";
$a->strings["Send a notification of every new post of this contact"] = "Sende eine Benachrichtigung, wann immer dieser Kontakt einen neuen Beitrag schreibt.";
@ -471,7 +471,7 @@ $a->strings["Banner/Logo"] = "Banner/Logo";
$a->strings["Shortcut icon"] = "Shortcut Icon";
$a->strings["Touch icon"] = "Touch Icon";
$a->strings["Additional Info"] = "Zusätzliche Informationen";
$a->strings["For public servers: you can add additional information here that will be listed at dir.friendica.com/siteinfo."] = "Für öffentliche Server kannst Du hier zusätzliche Informationen angeben, die dann auf Dir.friendica.com/siteinfo angezeigt werden.";
$a->strings["For public servers: you can add additional information here that will be listed at %s/siteinfo."] = "Für öffentliche Server kannst Du hier zusätzliche Informationen angeben, die dann auf %s/siteinfo angezeigt werden.";
$a->strings["System language"] = "Systemsprache";
$a->strings["System theme"] = "Systemweites Theme";
$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Vorgabe für das System-Theme - kann von Benutzerprofilen überschrieben werden - <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>";
@ -880,6 +880,8 @@ $a->strings["Disable intelligent shortening"] = "Intelligentes Link kürzen auss
$a->strings["Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post."] = "Normalerweise versucht das System den besten Link zu finden um ihn zu gekürzten Postings hinzu zu fügen. Wird diese Option ausgewählt wird stets ein Link auf die originale Friendica Nachricht beigefügt.";
$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "Automatisch allen GNU Social (OStatus) Followern/Erwähnern folgen";
$a->strings["If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user."] = "Wenn du eine Nachricht eines unbekannten OStatus Nutzers bekommst, entscheidet diese Option wie diese behandelt werden soll. Ist die Option aktiviert, wird ein neuer Kontakt für den Verfasser erstellt,.";
$a->strings["Your legacy GNU Social account"] = "Dein alter GNU Social Account";
$a->strings["If you enter your old GNU Social/Statusnet account name here (in the format user@domain.tld), your contacts will be added automatically. The field will be emptied when done."] = "Wenn du deinen alten GNU Socual/Statusnet Accountnamen hier angibst (Fprmat name@domain.tld) werden deine Kontakte automatisch hinzugefügt. Dieses Feld wird geleert, wenn die Kontakte hinzugefügt wurden.";
$a->strings["Built-in support for %s connectivity is %s"] = "Eingebaute Unterstützung für Verbindungen zu %s ist %s";
$a->strings["Diaspora"] = "Diaspora";
$a->strings["enabled"] = "eingeschaltet";
@ -938,7 +940,7 @@ $a->strings["Allow friends to tag your posts?"] = "Dürfen Deine Kontakte Deine
$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?";
$a->strings["Permit unknown people to send you private mail?"] = "Dürfen Dir Unbekannte private Nachrichten schicken?";
$a->strings["Profile is <strong>not published</strong>."] = "Profil ist <strong>nicht veröffentlicht</strong>.";
$a->strings["Your Identity Address is"] = "Die Adresse Deines Profils lautet:";
$a->strings["Your Identity Address is <strong>'%s'</strong> or '%s'."] = "Die Adresse deines Profils lautet <strong>'%s'</strong> oder '%s'.";
$a->strings["Automatically expire posts after this many days:"] = "Beiträge verfallen automatisch nach dieser Anzahl von Tagen:";
$a->strings["If empty, posts will not expire. Expired posts will be deleted"] = "Wenn leer verfallen Beiträge nie automatisch. Verfallene Beiträge werden gelöscht.";
$a->strings["Advanced expiration settings"] = "Erweiterte Verfallseinstellungen";
@ -1026,7 +1028,7 @@ $a->strings["Hide this contact"] = "Verberge diesen Kontakt";
$a->strings["Welcome home %s."] = "Willkommen zurück %s.";
$a->strings["Please confirm your introduction/connection request to %s."] = "Bitte bestätige Deine Kontaktanfrage bei %s.";
$a->strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "Bitte gib die Adresse Deines Profils in einem der unterstützten sozialen Netzwerke an:";
$a->strings["If you are not yet a member of the free social web, <a href=\"http://dir.friendica.com/siteinfo\">follow this link to find a public Friendica site and join us today</a>."] = "Wenn Du noch kein Mitglied dieses freien sozialen Netzwerks bist, <a href=\"http://Dir.friendica.com/siteinfo\">folge diesem Link</a> um einen öffentlichen Friendica-Server zu finden und beizutreten.";
$a->strings["If you are not yet a member of the free social web, <a href=\"%s/siteinfo\">follow this link to find a public Friendica site and join us today</a>."] = "Wenn du noch kein Mitglied dieses freien sozialen Netzwerks bist, <a href=\"%s/siteinfo\">folge diesem Link</a> um einen öffentlichen Friendica-Server zu finden und beizutreten.";
$a->strings["Friend/Connection Request"] = "Freundschafts-/Kontaktanfrage";
$a->strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"] = "Beispiele: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca";
$a->strings["Friendica"] = "Friendica";

View File

@ -194,6 +194,9 @@ key { display: inline; background-color: #eee; color: #666; padding:0.2em; font-
.fbrowser.file img { display: inline; }
.fbrowser.file p { display: inline; white-space: nowrap; }
.fbrowser .upload { clear: both; padding-top: 1em;}
.fbrowser .error { background: #ffeeee; border: 1px solid #994444; color: #994444; padding: 0.5em;}
.fbrowser .error a.close { float: right; font-weight: bold; }
.fbrowser .error.hidden { display: none; }
a {
cursor: pointer;

View File

@ -13,11 +13,14 @@
});
</script>
<div class="fbrowser {{$type}}">
<div class="error hidden">
<span></span> <a href="#" class='close'>X</a>
</div>
<div class="path">
{{foreach $path as $p}}<a href="#" data-folder="{{$p.0}}">{{$p.1}}</a>{{/foreach}}
</div>
{{if $folders }}
<div class="folders">
<ul>
@ -25,7 +28,7 @@
</ul>
</div>
{{/if}}
<div class="list">
{{foreach $files as $f}}
<div class="photo-album-image-wrapper">
@ -38,11 +41,11 @@
</div>
<div class="upload">
<button id="upload-{{$type}}"><img id="profile-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait|escape:'html'}}" style="display: none;" /> {{"Upload"|t}}</button>
<button id="upload-{{$type}}"><img id="profile-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait|escape:'html'}}" style="display: none;" /> {{"Upload"|t}}</button>
</div>
</div>
</body>
</html>

View File

@ -2,6 +2,15 @@
<form action="{{$action_url}}" method="get" >
{{strip}}
<input type="text" name="search" id="search-text" placeholder="{{$search_label}}" value="{{$s}}" />
{{if $searchoption}}
<select name="search-option" id="search-options">
<option value="fulltext">{{$searchoption.0}}</option>
<option value="tags">{{$searchoption.1}}</option>
<option value="contacts">{{$searchoption.2}}</option>
<option value="forums">{{$searchoption.3}}</option>
</select>
{{/if}}
<input type="submit" name="submit" id="search-submit" value="{{$search_label}}" />
{{if $savedsearch}}
<input type="submit" name="save" id="search-save" value="{{$save_label}}" />

View File

@ -72,6 +72,12 @@
<li role="search" id="search-box">
<form method="get" action="{{$nav.search.0}}">
<input accesskey="s" id="search-text" class="nav-menu-search" type="text" value="" name="search">
<select name="search-option">
<option value="fulltext">{{$nav.searchoption.0}}</option>
<option value="tags">{{$nav.searchoption.1}}</option>
<option value="contacts">{{$nav.searchoption.2}}</option>
<option value="forums">{{$nav.searchoption.3}}</option>
</select>
</form>
</li>
{{/if}}