Merge branch '0.9.x' into testing
This commit is contained in:
commit
021fa25e8d
@ -107,7 +107,7 @@ class Design extends Memcached_DataObject
|
|||||||
|
|
||||||
static function toWebColor($color)
|
static function toWebColor($color)
|
||||||
{
|
{
|
||||||
if ($color == null) {
|
if ($color === null || $color === '') {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ function main()
|
|||||||
{
|
{
|
||||||
// fake HTTP redirects using lighttpd's 404 redirects
|
// fake HTTP redirects using lighttpd's 404 redirects
|
||||||
if (strpos($_SERVER['SERVER_SOFTWARE'], 'lighttpd') !== false) {
|
if (strpos($_SERVER['SERVER_SOFTWARE'], 'lighttpd') !== false) {
|
||||||
$_lighty_url = $base_url.$_SERVER['REQUEST_URI'];
|
$_lighty_url = $_SERVER['REQUEST_URI'];
|
||||||
$_lighty_url = @parse_url($_lighty_url);
|
$_lighty_url = @parse_url($_lighty_url);
|
||||||
|
|
||||||
if ($_lighty_url['path'] != '/index.php' && $_lighty_url['path'] != '/') {
|
if ($_lighty_url['path'] != '/index.php' && $_lighty_url['path'] != '/') {
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
.fake: all clean
|
.fake: all clean
|
||||||
|
|
||||||
TARGETS=util.min.js
|
TARGETS=util.min.js json2.min.js
|
||||||
SOURCES=util.js xbImportNode.js geometa.js
|
UTIL_SOURCES=util.js xbImportNode.js geometa.js
|
||||||
|
|
||||||
all: $(TARGETS)
|
all: $(TARGETS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(TARGETS)
|
rm -f $(TARGETS)
|
||||||
|
|
||||||
util.min.js: $(SOURCES)
|
util.min.js: $(UTIL_SOURCES)
|
||||||
cat $+ | yui-compressor --type js > $@
|
cat $+ | yui-compressor --type js > $@
|
||||||
|
|
||||||
|
json2.min.js: json2.js
|
||||||
|
yui-compressor $+ > $@
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
alert('IMPORTANT: Remove this line from json2.js before deployment.');
|
|
||||||
/*
|
/*
|
||||||
http://www.JSON.org/json2.js
|
http://www.JSON.org/json2.js
|
||||||
2010-08-25
|
2010-08-25
|
||||||
|
2
js/json2.min.js
vendored
2
js/json2.min.js
vendored
@ -1 +1 @@
|
|||||||
alert("IMPORTANT: Remove this line from json2.js before deployment.");if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());
|
if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());
|
@ -22,13 +22,13 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
|||||||
//exit with 200 response, if this is checking fancy from the installer
|
//exit with 200 response, if this is checking fancy from the installer
|
||||||
if (isset($_REQUEST['p']) && $_REQUEST['p'] == 'check-fancy') { exit; }
|
if (isset($_REQUEST['p']) && $_REQUEST['p'] == 'check-fancy') { exit; }
|
||||||
|
|
||||||
define('STATUSNET_BASE_VERSION', '0.9.7');
|
define('STATUSNET_BASE_VERSION', '0.9.8');
|
||||||
define('STATUSNET_LIFECYCLE', 'alpha1'); // 'dev', 'alpha[0-9]+', 'beta[0-9]+', 'rc[0-9]+', 'release'
|
define('STATUSNET_LIFECYCLE', 'dev'); // 'dev', 'alpha[0-9]+', 'beta[0-9]+', 'rc[0-9]+', 'release'
|
||||||
define('STATUSNET_VERSION', STATUSNET_BASE_VERSION . STATUSNET_LIFECYCLE);
|
define('STATUSNET_VERSION', STATUSNET_BASE_VERSION . STATUSNET_LIFECYCLE);
|
||||||
|
|
||||||
define('LACONICA_VERSION', STATUSNET_VERSION); // compatibility
|
define('LACONICA_VERSION', STATUSNET_VERSION); // compatibility
|
||||||
|
|
||||||
define('STATUSNET_CODENAME', 'World Leader Pretend');
|
define('STATUSNET_CODENAME', 'Letter Never Sent');
|
||||||
|
|
||||||
define('AVATAR_PROFILE_SIZE', 96);
|
define('AVATAR_PROFILE_SIZE', 96);
|
||||||
define('AVATAR_STREAM_SIZE', 48);
|
define('AVATAR_STREAM_SIZE', 48);
|
||||||
|
@ -103,15 +103,17 @@ class Nickname
|
|||||||
*/
|
*/
|
||||||
public static function normalize($str)
|
public static function normalize($str)
|
||||||
{
|
{
|
||||||
|
if (mb_strlen($str) > self::MAX_LEN) {
|
||||||
|
// Display forms must also fit!
|
||||||
|
throw new NicknameTooLongException();
|
||||||
|
}
|
||||||
|
|
||||||
$str = trim($str);
|
$str = trim($str);
|
||||||
$str = str_replace('_', '', $str);
|
$str = str_replace('_', '', $str);
|
||||||
$str = mb_strtolower($str);
|
$str = mb_strtolower($str);
|
||||||
|
|
||||||
$len = mb_strlen($str);
|
if (mb_strlen($str) < 1) {
|
||||||
if ($len < 1) {
|
|
||||||
throw new NicknameEmptyException();
|
throw new NicknameEmptyException();
|
||||||
} else if ($len > self::MAX_LEN) {
|
|
||||||
throw new NicknameTooLongException();
|
|
||||||
}
|
}
|
||||||
if (!self::isCanonical($str)) {
|
if (!self::isCanonical($str)) {
|
||||||
throw new NicknameInvalidException();
|
throw new NicknameInvalidException();
|
||||||
|
@ -8247,7 +8247,7 @@ msgstr ""
|
|||||||
#: lib/mail.php:680
|
#: lib/mail.php:680
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%1$s (@%2$s) sent a notice to your attention"
|
msgid "%1$s (@%2$s) sent a notice to your attention"
|
||||||
msgstr "%1$s (@%2$s) a envoyé un avis à vote attention"
|
msgstr "%1$s (@%2$s) a envoyé un avis à votre attention"
|
||||||
|
|
||||||
#. TRANS: Body of @-reply notification e-mail.
|
#. TRANS: Body of @-reply notification e-mail.
|
||||||
#. TRANS: %1$s is the sending user's long name, $2$s is the StatusNet sitename,
|
#. TRANS: %1$s is the sending user's long name, $2$s is the StatusNet sitename,
|
||||||
|
@ -194,7 +194,7 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase
|
|||||||
$actor = ActivityUtils::child($element, 'actor', Activity::SPEC);
|
$actor = ActivityUtils::child($element, 'actor', Activity::SPEC);
|
||||||
|
|
||||||
$this->assertFalse(is_null($author));
|
$this->assertFalse(is_null($author));
|
||||||
$this->assertFalse(is_null($actor));
|
$this->assertTrue(is_null($actor)); // <activity:actor> is obsolete, no longer added
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAuthorContent()
|
public function testAuthorContent()
|
||||||
@ -213,6 +213,9 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals($this->author1->uri, ActivityUtils::childContent($author, 'uri'));
|
$this->assertEquals($this->author1->uri, ActivityUtils::childContent($author, 'uri'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We no longer create <activity:actor> entries, they have merged to <atom:author>
|
||||||
|
*/
|
||||||
public function testActorContent()
|
public function testActorContent()
|
||||||
{
|
{
|
||||||
$notice = $this->_fakeNotice();
|
$notice = $this->_fakeNotice();
|
||||||
@ -225,8 +228,7 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$actor = ActivityUtils::child($element, 'actor', Activity::SPEC);
|
$actor = ActivityUtils::child($element, 'actor', Activity::SPEC);
|
||||||
|
|
||||||
$this->assertEquals($this->author1->uri, ActivityUtils::childContent($actor, 'id'));
|
$this->assertEquals($actor, null);
|
||||||
$this->assertEquals($this->author1->nickname, ActivityUtils::childContent($actor, 'title'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testReplyLink()
|
public function testReplyLink()
|
||||||
|
@ -33,9 +33,14 @@ class NicknameTest extends PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
if ($expected === false) {
|
if ($expected === false) {
|
||||||
if ($expectedException) {
|
if ($expectedException) {
|
||||||
|
if ($exception) {
|
||||||
|
$stuff = get_class($exception) . ': ' . $exception->getMessage();
|
||||||
|
} else {
|
||||||
|
$stuff = var_export($exception, true);
|
||||||
|
}
|
||||||
$this->assertTrue($exception && $exception instanceof $expectedException,
|
$this->assertTrue($exception && $exception instanceof $expectedException,
|
||||||
"invalid input '$input' expected to fail with $expectedException, " .
|
"invalid input '$input' expected to fail with $expectedException, " .
|
||||||
"got " . get_class($exception) . ': ' . $exception->getMessage());
|
"got $stuff");
|
||||||
} else {
|
} else {
|
||||||
$this->assertTrue($normalized == false,
|
$this->assertTrue($normalized == false,
|
||||||
"invalid input '$input' expected to fail");
|
"invalid input '$input' expected to fail");
|
||||||
@ -104,7 +109,7 @@ class NicknameTest extends PHPUnit_Framework_TestCase
|
|||||||
array('', false, 'NicknameEmptyException'),
|
array('', false, 'NicknameEmptyException'),
|
||||||
array('___', false, 'NicknameEmptyException'),
|
array('___', false, 'NicknameEmptyException'),
|
||||||
array('eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', 'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'), // 64 chars
|
array('eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', 'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'), // 64 chars
|
||||||
array('eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee_', 'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'), // the _ will be trimmed off, remaining valid
|
array('eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee_', false, 'NicknameTooLongException'), // the _ is too long...
|
||||||
array('eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', false, 'NicknameTooLongException'), // 65 chars -- too long
|
array('eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', false, 'NicknameTooLongException'), // 65 chars -- too long
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user