aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--LICENSE2
-rw-r--r--README.md30
-rw-r--r--Zotlabs/Lib/Config.php2
-rw-r--r--Zotlabs/Lib/MarkdownSoap.php96
-rw-r--r--Zotlabs/Lib/NativeWikiPage.php58
-rw-r--r--Zotlabs/Lib/PConfig.php2
-rw-r--r--Zotlabs/Lib/System.php13
-rw-r--r--Zotlabs/Module/Connections.php4
-rw-r--r--Zotlabs/Module/Connedit.php3
-rw-r--r--Zotlabs/Module/Cover_photo.php64
-rw-r--r--Zotlabs/Module/Directory.php1
-rw-r--r--Zotlabs/Module/Editblock.php7
-rw-r--r--Zotlabs/Module/Editlayout.php1
-rw-r--r--Zotlabs/Module/Editwebpage.php6
-rw-r--r--Zotlabs/Module/Hcard.php10
-rw-r--r--Zotlabs/Module/Impel.php14
-rw-r--r--Zotlabs/Module/Item.php30
-rw-r--r--Zotlabs/Module/Layouts.php1
-rw-r--r--Zotlabs/Module/Profile_photo.php12
-rw-r--r--Zotlabs/Module/Setup.php7
-rw-r--r--Zotlabs/Module/Suggest.php4
-rw-r--r--Zotlabs/Module/Wiki.php24
-rw-r--r--Zotlabs/Render/Comanche.php17
-rw-r--r--Zotlabs/Widget/Activity.php61
-rw-r--r--Zotlabs/Widget/Admin.php68
-rw-r--r--Zotlabs/Widget/Affinity.php60
-rw-r--r--Zotlabs/Widget/Album.php106
-rw-r--r--Zotlabs/Widget/Appcategories.php49
-rw-r--r--Zotlabs/Widget/Appcloud.php13
-rw-r--r--Zotlabs/Widget/Archive.php55
-rw-r--r--Zotlabs/Widget/Bookmarkedchats.php28
-rw-r--r--Zotlabs/Widget/Catcloud_wall.php19
-rw-r--r--Zotlabs/Widget/Categories.php23
-rw-r--r--Zotlabs/Widget/Chatroom_list.php24
-rw-r--r--Zotlabs/Widget/Chatroom_members.php15
-rw-r--r--Zotlabs/Widget/Clock.php63
-rw-r--r--Zotlabs/Widget/Collections.php51
-rw-r--r--Zotlabs/Widget/Conversations.php74
-rw-r--r--Zotlabs/Widget/Cover_photo.php59
-rw-r--r--Zotlabs/Widget/Design_tools.php21
-rw-r--r--Zotlabs/Widget/Dirsort.php11
-rw-r--r--Zotlabs/Widget/Dirtags.php13
-rw-r--r--Zotlabs/Widget/Eventstools.php19
-rw-r--r--Zotlabs/Widget/Filer.php36
-rw-r--r--Zotlabs/Widget/Findpeople.php12
-rw-r--r--Zotlabs/Widget/Follow.php37
-rw-r--r--Zotlabs/Widget/Forums.php97
-rw-r--r--Zotlabs/Widget/Fullprofile.php16
-rw-r--r--Zotlabs/Widget/Helpindex.php45
-rw-r--r--Zotlabs/Widget/Item.php54
-rw-r--r--Zotlabs/Widget/Mailmenu.php36
-rw-r--r--Zotlabs/Widget/Menu_preview.php16
-rw-r--r--Zotlabs/Widget/Notes.php23
-rw-r--r--Zotlabs/Widget/Photo.php55
-rw-r--r--Zotlabs/Widget/Photo_albums.php25
-rw-r--r--Zotlabs/Widget/Photo_rand.php66
-rw-r--r--Zotlabs/Widget/Profile.php13
-rw-r--r--Zotlabs/Widget/Pubsites.php16
-rw-r--r--Zotlabs/Widget/Random_block.php46
-rw-r--r--Zotlabs/Widget/Rating.php67
-rw-r--r--Zotlabs/Widget/Savedsearch.php91
-rw-r--r--Zotlabs/Widget/Settings_menu.php137
-rw-r--r--Zotlabs/Widget/Shortprofile.php18
-rw-r--r--Zotlabs/Widget/Sitesearch.php38
-rw-r--r--Zotlabs/Widget/Suggestedchats.php37
-rw-r--r--Zotlabs/Widget/Suggestions.php58
-rw-r--r--Zotlabs/Widget/Tagcloud.php33
-rw-r--r--Zotlabs/Widget/Tagcloud_wall.php20
-rw-r--r--Zotlabs/Widget/Tasklist.php30
-rw-r--r--Zotlabs/Widget/Vcard.php12
-rw-r--r--Zotlabs/Widget/Website_portation_tools.php22
-rw-r--r--Zotlabs/Widget/Wiki_list.php23
-rw-r--r--Zotlabs/Widget/Wiki_page_history.php27
-rw-r--r--Zotlabs/Widget/Wiki_pages.php66
-rw-r--r--Zotlabs/Widget/Zcard.php11
-rwxr-xr-xboot.php197
-rw-r--r--composer.json3
-rw-r--r--composer.lock406
-rw-r--r--doc/about/about.bb (renamed from doc/about/about_hubzilla.bb)11
-rw-r--r--doc/about/project.bb (renamed from doc/about/hubzilla_project.bb)0
-rw-r--r--doc/database/db_account.bb1
-rw-r--r--doc/toc.html4
-rw-r--r--doc/tutorials/personal_channel.html10
-rw-r--r--include/attach.php10
-rw-r--r--include/bbcode.php1
-rw-r--r--include/channel.php24
-rwxr-xr-xinclude/dba/dba_pdo.php14
-rw-r--r--include/event.php10
-rw-r--r--include/help.php2
-rw-r--r--include/import.php34
-rwxr-xr-xinclude/items.php269
-rw-r--r--include/markdown.php431
-rw-r--r--include/network.php595
-rw-r--r--include/photo/photo_driver.php88
-rw-r--r--include/photos.php89
-rw-r--r--include/text.php46
-rw-r--r--include/widgets.php1778
-rw-r--r--install/schema_mysql.sql41
-rw-r--r--install/schema_postgres.sql41
-rw-r--r--library/oauth2/.gitignore5
-rw-r--r--library/oauth2/.travis.yml30
-rw-r--r--library/oauth2/phpunit.xml25
-rw-r--r--util/hmessages.po3931
-rw-r--r--util/typo.php25
-rw-r--r--vendor/autoload.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/CHANGELOG.md (renamed from library/oauth2/CHANGELOG.md)30
-rw-r--r--vendor/bshaffer/oauth2-server-php/LICENSE (renamed from library/oauth2/LICENSE)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/README.md (renamed from library/oauth2/README.md)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/composer.json34
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php (renamed from library/oauth2/src/OAuth2/Autoloader.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php (renamed from library/oauth2/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php (renamed from library/oauth2/src/OAuth2/ClientAssertionType/HttpBasic.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php (renamed from library/oauth2/src/OAuth2/Controller/AuthorizeController.php)7
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php (renamed from library/oauth2/src/OAuth2/Controller/AuthorizeControllerInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php (renamed from library/oauth2/src/OAuth2/Controller/ResourceController.php)2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php (renamed from library/oauth2/src/OAuth2/Controller/ResourceControllerInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php (renamed from library/oauth2/src/OAuth2/Controller/TokenController.php)35
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php (renamed from library/oauth2/src/OAuth2/Controller/TokenControllerInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php (renamed from library/oauth2/src/OAuth2/Encryption/EncryptionInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/FirebaseJwt.php (renamed from library/oauth2/src/OAuth2/Encryption/FirebaseJwt.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php (renamed from library/oauth2/src/OAuth2/Encryption/Jwt.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php (renamed from library/oauth2/src/OAuth2/GrantType/AuthorizationCode.php)4
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php (renamed from library/oauth2/src/OAuth2/GrantType/ClientCredentials.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php (renamed from library/oauth2/src/OAuth2/GrantType/GrantTypeInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php (renamed from library/oauth2/src/OAuth2/GrantType/JwtBearer.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php (renamed from library/oauth2/src/OAuth2/GrantType/RefreshToken.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php (renamed from library/oauth2/src/OAuth2/GrantType/UserCredentials.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php (renamed from library/oauth2/src/OAuth2/OpenID/Controller/AuthorizeController.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php (renamed from library/oauth2/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php (renamed from library/oauth2/src/OAuth2/OpenID/Controller/UserInfoController.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php (renamed from library/oauth2/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php (renamed from library/oauth2/src/OAuth2/OpenID/GrantType/AuthorizationCode.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php (renamed from library/oauth2/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php (renamed from library/oauth2/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php (renamed from library/oauth2/src/OAuth2/OpenID/ResponseType/CodeIdToken.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdTokenInterface.php (renamed from library/oauth2/src/OAuth2/OpenID/ResponseType/CodeIdTokenInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php (renamed from library/oauth2/src/OAuth2/OpenID/ResponseType/IdToken.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php (renamed from library/oauth2/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php (renamed from library/oauth2/src/OAuth2/OpenID/ResponseType/IdTokenToken.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenTokenInterface.php (renamed from library/oauth2/src/OAuth2/OpenID/ResponseType/IdTokenTokenInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php (renamed from library/oauth2/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php (renamed from library/oauth2/src/OAuth2/OpenID/Storage/UserClaimsInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php (renamed from library/oauth2/src/OAuth2/Request.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php (renamed from library/oauth2/src/OAuth2/RequestInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php (renamed from library/oauth2/src/OAuth2/Response.php)2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php (renamed from library/oauth2/src/OAuth2/ResponseInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php (renamed from library/oauth2/src/OAuth2/ResponseType/AccessToken.php)8
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php (renamed from library/oauth2/src/OAuth2/ResponseType/AccessTokenInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php (renamed from library/oauth2/src/OAuth2/ResponseType/AuthorizationCode.php)6
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php (renamed from library/oauth2/src/OAuth2/ResponseType/AuthorizationCodeInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php (renamed from library/oauth2/src/OAuth2/ResponseType/JwtAccessToken.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php (renamed from library/oauth2/src/OAuth2/ResponseType/ResponseTypeInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php (renamed from library/oauth2/src/OAuth2/Scope.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php (renamed from library/oauth2/src/OAuth2/ScopeInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php (renamed from library/oauth2/src/OAuth2/Server.php)99
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php (renamed from library/oauth2/src/OAuth2/Storage/AccessTokenInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php (renamed from library/oauth2/src/OAuth2/Storage/AuthorizationCodeInterface.php)2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php (renamed from library/oauth2/src/OAuth2/Storage/Cassandra.php)2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/ClientCredentialsInterface.php (renamed from library/oauth2/src/OAuth2/Storage/ClientCredentialsInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/ClientInterface.php (renamed from library/oauth2/src/OAuth2/Storage/ClientInterface.php)0
-rwxr-xr-xvendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php (renamed from library/oauth2/src/OAuth2/Storage/CouchbaseDB.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php (renamed from library/oauth2/src/OAuth2/Storage/DynamoDB.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php (renamed from library/oauth2/src/OAuth2/Storage/JwtAccessToken.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessTokenInterface.php (renamed from library/oauth2/src/OAuth2/Storage/JwtAccessTokenInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtBearerInterface.php (renamed from library/oauth2/src/OAuth2/Storage/JwtBearerInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php (renamed from library/oauth2/src/OAuth2/Storage/Memory.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Mongo.php (renamed from library/oauth2/src/OAuth2/Storage/Mongo.php)53
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/MongoDB.php380
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php (renamed from library/oauth2/src/OAuth2/Storage/Pdo.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php (renamed from library/oauth2/src/OAuth2/Storage/PublicKeyInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Redis.php (renamed from library/oauth2/src/OAuth2/Storage/Redis.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/RefreshTokenInterface.php (renamed from library/oauth2/src/OAuth2/Storage/RefreshTokenInterface.php)2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/ScopeInterface.php (renamed from library/oauth2/src/OAuth2/Storage/ScopeInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php (renamed from library/oauth2/src/OAuth2/Storage/UserCredentialsInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/TokenType/Bearer.php (renamed from library/oauth2/src/OAuth2/TokenType/Bearer.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/TokenType/Mac.php (renamed from library/oauth2/src/OAuth2/TokenType/Mac.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/TokenType/TokenTypeInterface.php (renamed from library/oauth2/src/OAuth2/TokenType/TokenTypeInterface.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php (renamed from library/oauth2/test/OAuth2/AutoloadTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php (renamed from library/oauth2/test/OAuth2/Controller/AuthorizeControllerTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php (renamed from library/oauth2/test/OAuth2/Controller/ResourceControllerTest.php)3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php (renamed from library/oauth2/test/OAuth2/Controller/TokenControllerTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php (renamed from library/oauth2/test/OAuth2/Encryption/FirebaseJwtTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php (renamed from library/oauth2/test/OAuth2/Encryption/JwtTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php (renamed from library/oauth2/test/OAuth2/GrantType/AuthorizationCodeTest.php)16
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php (renamed from library/oauth2/test/OAuth2/GrantType/ClientCredentialsTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php (renamed from library/oauth2/test/OAuth2/GrantType/ImplicitTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php (renamed from library/oauth2/test/OAuth2/GrantType/JwtBearerTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php (renamed from library/oauth2/test/OAuth2/GrantType/RefreshTokenTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php (renamed from library/oauth2/test/OAuth2/GrantType/UserCredentialsTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php (renamed from library/oauth2/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php (renamed from library/oauth2/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php (renamed from library/oauth2/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php (renamed from library/oauth2/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php (renamed from library/oauth2/test/OAuth2/OpenID/ResponseType/IdTokenTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php (renamed from library/oauth2/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Storage/AuthorizationCodeTest.php (renamed from library/oauth2/test/OAuth2/OpenID/Storage/AuthorizationCodeTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Storage/UserClaimsTest.php (renamed from library/oauth2/test/OAuth2/OpenID/Storage/UserClaimsTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php (renamed from library/oauth2/test/OAuth2/RequestTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php (renamed from library/oauth2/test/OAuth2/ResponseTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php (renamed from library/oauth2/test/OAuth2/ResponseType/AccessTokenTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php (renamed from library/oauth2/test/OAuth2/ResponseType/JwtAccessTokenTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php (renamed from library/oauth2/test/OAuth2/ScopeTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php (renamed from library/oauth2/test/OAuth2/ServerTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/AccessTokenTest.php (renamed from library/oauth2/test/OAuth2/Storage/AccessTokenTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/AuthorizationCodeTest.php (renamed from library/oauth2/test/OAuth2/Storage/AuthorizationCodeTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/ClientCredentialsTest.php (renamed from library/oauth2/test/OAuth2/Storage/ClientCredentialsTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/ClientTest.php (renamed from library/oauth2/test/OAuth2/Storage/ClientTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/DynamoDBTest.php (renamed from library/oauth2/test/OAuth2/Storage/DynamoDBTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/JwtAccessTokenTest.php (renamed from library/oauth2/test/OAuth2/Storage/JwtAccessTokenTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/JwtBearerTest.php (renamed from library/oauth2/test/OAuth2/Storage/JwtBearerTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php (renamed from library/oauth2/test/OAuth2/Storage/PdoTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PublicKeyTest.php (renamed from library/oauth2/test/OAuth2/Storage/PublicKeyTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/RefreshTokenTest.php (renamed from library/oauth2/test/OAuth2/Storage/RefreshTokenTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/ScopeTest.php (renamed from library/oauth2/test/OAuth2/Storage/ScopeTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/UserCredentialsTest.php (renamed from library/oauth2/test/OAuth2/Storage/UserCredentialsTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php (renamed from library/oauth2/test/OAuth2/TokenType/BearerTest.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/bootstrap.php (renamed from library/oauth2/test/bootstrap.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/cleanup.php (renamed from library/oauth2/test/cleanup.php)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/config/keys/id_rsa (renamed from library/oauth2/test/config/keys/id_rsa)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/config/keys/id_rsa.pub (renamed from library/oauth2/test/config/keys/id_rsa.pub)0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/config/storage.json (renamed from library/oauth2/test/config/storage.json)7
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php (renamed from library/oauth2/test/lib/OAuth2/Request/TestRequest.php)0
-rwxr-xr-xvendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php (renamed from library/oauth2/test/lib/OAuth2/Storage/BaseTest.php)2
-rwxr-xr-xvendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php (renamed from library/oauth2/test/lib/OAuth2/Storage/Bootstrap.php)103
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/NullStorage.php (renamed from library/oauth2/test/lib/OAuth2/Storage/NullStorage.php)0
-rw-r--r--vendor/composer/ClassLoader.php48
-rw-r--r--vendor/composer/LICENSE444
-rw-r--r--vendor/composer/autoload_classmap.php616
-rw-r--r--vendor/composer/autoload_namespaces.php1
-rw-r--r--vendor/composer/autoload_real.php35
-rw-r--r--vendor/composer/installed.json657
-rw-r--r--vendor/sabre/dav/.travis.yml7
-rw-r--r--vendor/sabre/dav/CHANGELOG.md56
-rw-r--r--vendor/sabre/dav/README.md2
-rwxr-xr-x[-rw-r--r--]vendor/sabre/dav/bin/build.php0
-rwxr-xr-x[-rw-r--r--]vendor/sabre/dav/bin/googlecode_upload.py0
-rwxr-xr-x[-rw-r--r--]vendor/sabre/dav/bin/migrateto20.php0
-rwxr-xr-x[-rw-r--r--]vendor/sabre/dav/bin/migrateto21.php0
-rwxr-xr-x[-rw-r--r--]vendor/sabre/dav/bin/migrateto30.php0
-rwxr-xr-x[-rw-r--r--]vendor/sabre/dav/bin/migrateto32.php0
-rwxr-xr-x[-rw-r--r--]vendor/sabre/dav/bin/sabredav.php0
-rw-r--r--vendor/sabre/dav/composer.json4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php6
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Backend/PDO.php68
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Backend/SharingSupport.php6
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Backend/SimplePDO.php14
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Backend/SubscriptionSupport.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Calendar.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/CalendarHome.php8
-rw-r--r--vendor/sabre/dav/lib/CalDAV/CalendarObject.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/CalendarQueryValidator.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/CalendarRoot.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Exception/InvalidComponentType.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/ICSExportPlugin.php6
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Notifications/Collection.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Notifications/INode.php8
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Notifications/Node.php12
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Notifications/Plugin.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Plugin.php10
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Principal/ProxyRead.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Principal/ProxyWrite.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Schedule/IMipPlugin.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Schedule/Inbox.php6
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Schedule/Outbox.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php33
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Schedule/SchedulingObject.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/SharingPlugin.php3
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Subscriptions/Plugin.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Subscriptions/Subscription.php12
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Filter/CalendarData.php8
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Filter/CompFilter.php8
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Filter/ParamFilter.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Filter/PropFilter.php8
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Notification/Invite.php10
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Notification/InviteReply.php6
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Notification/NotificationInterface.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Notification/SystemStatus.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Property/AllowedSharingModes.php8
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Property/EmailAddressSet.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Property/Invite.php13
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Property/ScheduleCalendarTransp.php10
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarComponentSet.php8
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarData.php8
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCollationSet.php6
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php6
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php8
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Request/FreeBusyQueryReport.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Request/InviteReply.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Request/MkCalendar.php6
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Request/Share.php2
-rw-r--r--vendor/sabre/dav/lib/CardDAV/AddressBook.php2
-rw-r--r--vendor/sabre/dav/lib/CardDAV/AddressBookHome.php2
-rw-r--r--vendor/sabre/dav/lib/CardDAV/AddressBookRoot.php2
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php2
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Backend/PDO.php6
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Card.php2
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Plugin.php19
-rw-r--r--vendor/sabre/dav/lib/CardDAV/VCFExportPlugin.php4
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Xml/Filter/AddressData.php8
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Xml/Filter/ParamFilter.php6
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Xml/Filter/PropFilter.php6
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php6
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedCollationSet.php4
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookMultiGetReport.php2
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php13
-rw-r--r--vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractDigest.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Auth/Backend/PDO.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Auth/Plugin.php6
-rw-r--r--vendor/sabre/dav/lib/DAV/Browser/GuessContentType.php4
-rw-r--r--vendor/sabre/dav/lib/DAV/Browser/MapGetToPropFind.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Browser/Plugin.php62
-rw-r--r--vendor/sabre/dav/lib/DAV/Browser/PropFindAll.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Client.php6
-rw-r--r--vendor/sabre/dav/lib/DAV/Collection.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/CorePlugin.php30
-rw-r--r--vendor/sabre/dav/lib/DAV/Exception/InvalidResourceType.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/FS/Node.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/File.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/IFile.php4
-rw-r--r--vendor/sabre/dav/lib/DAV/IMoveTarget.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Locks/Backend/PDO.php4
-rw-r--r--vendor/sabre/dav/lib/DAV/Locks/Plugin.php6
-rw-r--r--vendor/sabre/dav/lib/DAV/MkCol.php1
-rw-r--r--vendor/sabre/dav/lib/DAV/Mount/Plugin.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Node.php4
-rw-r--r--vendor/sabre/dav/lib/DAV/PartialUpdate/Plugin.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/PropFind.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/BackendInterface.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/PDO.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/PropertyStorage/Plugin.php13
-rw-r--r--vendor/sabre/dav/lib/DAV/Server.php101
-rw-r--r--vendor/sabre/dav/lib/DAV/Sharing/Plugin.php4
-rw-r--r--vendor/sabre/dav/lib/DAV/Sync/Plugin.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/TemporaryFileFilterPlugin.php8
-rw-r--r--vendor/sabre/dav/lib/DAV/Version.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Element/Prop.php6
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Element/Response.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Element/Sharee.php4
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Property/Complex.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Property/GetLastModified.php8
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Property/Href.php10
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Property/Invite.php6
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Property/LocalHref.php4
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Property/ResourceType.php4
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Property/ShareAccess.php6
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Property/SupportedLock.php8
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Property/SupportedMethodSet.php4
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Property/SupportedReportSet.php4
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Request/Lock.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Request/MkCol.php6
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Request/PropFind.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Request/PropPatch.php10
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Request/ShareResource.php4
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Request/SyncCollectionReport.php8
-rw-r--r--vendor/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php2
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Exception/NotRecognizedPrincipal.php2
-rw-r--r--vendor/sabre/dav/lib/DAVACL/FS/Collection.php4
-rw-r--r--vendor/sabre/dav/lib/DAVACL/FS/File.php2
-rw-r--r--vendor/sabre/dav/lib/DAVACL/FS/HomeCollection.php2
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Plugin.php38
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Principal.php2
-rw-r--r--vendor/sabre/dav/lib/DAVACL/PrincipalBackend/BackendInterface.php2
-rw-r--r--vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php8
-rw-r--r--vendor/sabre/dav/lib/DAVACL/PrincipalCollection.php2
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Xml/Property/Acl.php6
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Xml/Property/AclRestrictions.php6
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Xml/Property/CurrentUserPrivilegeSet.php6
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php4
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Xml/Property/SupportedPrivilegeSet.php11
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php6
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php2
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php6
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php4
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php4
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php14
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php3
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php4
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php6
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php4
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php51
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php6
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php13
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php5
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php10
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php6
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Exception/LockedTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php8
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php6
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php3
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php7
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php5
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php8
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php7
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php5
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php2
-rw-r--r--vendor/sabre/http/.travis.yml4
-rw-r--r--vendor/sabre/http/CHANGELOG.md8
-rw-r--r--vendor/sabre/http/LICENSE2
-rw-r--r--vendor/sabre/http/composer.json1
-rw-r--r--vendor/sabre/http/lib/Message.php12
-rw-r--r--vendor/sabre/http/lib/MessageDecoratorTrait.php7
-rw-r--r--vendor/sabre/http/lib/MessageInterface.php3
-rw-r--r--vendor/sabre/http/lib/Request.php2
-rw-r--r--vendor/sabre/http/lib/Response.php3
-rw-r--r--vendor/sabre/http/lib/ResponseInterface.php2
-rw-r--r--vendor/sabre/http/lib/URLUtil.php2
-rw-r--r--vendor/sabre/http/lib/Util.php2
-rw-r--r--vendor/sabre/http/lib/Version.php2
-rw-r--r--vendor/sabre/http/lib/functions.php4
-rw-r--r--vendor/sabre/uri/.travis.yml2
-rw-r--r--vendor/sabre/uri/CHANGELOG.md23
-rw-r--r--vendor/sabre/uri/LICENSE2
-rw-r--r--vendor/sabre/uri/README.md8
-rw-r--r--vendor/sabre/uri/composer.json4
-rw-r--r--vendor/sabre/uri/lib/InvalidUriException.php17
-rw-r--r--vendor/sabre/uri/lib/Version.php2
-rw-r--r--vendor/sabre/uri/lib/functions.php99
-rw-r--r--vendor/sabre/vobject/.travis.yml3
-rw-r--r--vendor/sabre/vobject/CHANGELOG.md18
-rwxr-xr-xvendor/sabre/vobject/bin/fetch_windows_zones.php2
-rw-r--r--vendor/sabre/vobject/composer.json4
-rw-r--r--vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php8
-rw-r--r--vendor/sabre/vobject/lib/Component/VAlarm.php4
-rw-r--r--vendor/sabre/vobject/lib/Component/VCalendar.php112
-rw-r--r--vendor/sabre/vobject/lib/Component/VCard.php44
-rw-r--r--vendor/sabre/vobject/lib/DateTimeParser.php14
-rw-r--r--vendor/sabre/vobject/lib/FreeBusyGenerator.php6
-rw-r--r--vendor/sabre/vobject/lib/Parameter.php2
-rw-r--r--vendor/sabre/vobject/lib/Parser/Json.php2
-rw-r--r--vendor/sabre/vobject/lib/Parser/MimeDir.php4
-rw-r--r--vendor/sabre/vobject/lib/Parser/XML.php22
-rw-r--r--vendor/sabre/vobject/lib/Property/ICalendar/Duration.php2
-rw-r--r--vendor/sabre/vobject/lib/Property/ICalendar/Period.php2
-rw-r--r--vendor/sabre/vobject/lib/Property/ICalendar/Recur.php48
-rw-r--r--vendor/sabre/vobject/lib/Property/Text.php4
-rw-r--r--vendor/sabre/vobject/lib/Property/Uri.php2
-rw-r--r--vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php24
-rw-r--r--vendor/sabre/vobject/lib/Recur/EventIterator.php6
-rw-r--r--vendor/sabre/vobject/lib/Recur/RRuleIterator.php93
-rw-r--r--vendor/sabre/vobject/lib/TimeZoneUtil.php10
-rw-r--r--vendor/sabre/vobject/lib/Version.php2
-rw-r--r--vendor/sabre/vobject/lib/timezonedata/lotuszones.php158
-rw-r--r--vendor/sabre/vobject/lib/timezonedata/windowszones.php32
-rw-r--r--view/theme/redbasic/css/style.css2
-rw-r--r--view/theme/redbasic/php/theme.php2
-rwxr-xr-xview/tpl/admin_site.tpl3
-rwxr-xr-xview/tpl/install_settings.tpl1
-rw-r--r--view/tpl/wiki.tpl3
458 files changed, 7516 insertions, 7795 deletions
diff --git a/LICENSE b/LICENSE
index 25c4bf1a3..bb0e40327 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2017 the Hubzilla Community
+Copyright (c) 2010-2017 Mike Macgirvin
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/README.md b/README.md
index 54f80bebe..01524f8c8 100644
--- a/README.md
+++ b/README.md
@@ -1,29 +1,5 @@
-![Hubzilla](images/hubzilla-banner.png)
-Hubzilla - Community Server
-===========================
+red
+===
-<p align="center" markdown="1">
-<em><a href="https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt">Installing Hubzilla</a></em>
-</p>
-
-
-**What is Hubzilla?**
-
-Hubzilla is a general purpose communication server integrated with a web publishing system and a decentralised permission system. If this sounds like a bunch of technical mumbo-jumbo to you, just think of it as an independent platform for sharing stuff online.
-
-Hubzilla contains some social network bits, some cloud storage bits, some blog and forum bits, and some content management bits. These are all integrated within a common privacy framework - and it is all decentralised.
-
-Everything you publish or share can be restricted to those channels and people you wish to share them with; and these permissions work completely invisibly - even with channels on different servers or other communications services.
-
-Migration and live backups of your connections, settings, and everything you publish are built-in, so you never need worry about server failure.
-
-Hubzilla is completely decentralised and open source, for you modify or adapt to your needs and desires. Plugins, themes, and numerous configuration options extend the overall capabilities to do anything you can imagine.
-
-
-**Who Are We?**
-
-The Hubzilla community consists of passionate volunteers creating an open source commons of decentralised services which are highly integrated and can rival the feature set of large centralised providers. We do our best to provide ethical software which places you in control of your online communications and privacy expectations.
-
-
-[![Build Status](https://travis-ci.org/redmatrix/hubzilla.svg)](https://travis-ci.org/redmatrix/hubzilla)
+This is red. \ No newline at end of file
diff --git a/Zotlabs/Lib/Config.php b/Zotlabs/Lib/Config.php
index 5625a3f79..6e042feba 100644
--- a/Zotlabs/Lib/Config.php
+++ b/Zotlabs/Lib/Config.php
@@ -53,7 +53,7 @@ class Config {
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
- if(get_config($family, $key) === false || (! self::get_from_storage($family, $key))) {
+ if(self::Get($family, $key) === false || (! self::get_from_storage($family, $key))) {
$ret = q("INSERT INTO config ( cat, k, v ) VALUES ( '%s', '%s', '%s' ) ",
dbesc($family),
dbesc($key),
diff --git a/Zotlabs/Lib/MarkdownSoap.php b/Zotlabs/Lib/MarkdownSoap.php
new file mode 100644
index 000000000..8cc18d513
--- /dev/null
+++ b/Zotlabs/Lib/MarkdownSoap.php
@@ -0,0 +1,96 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+/**
+ * MarkdownSoap
+ * Purify Markdown for storage
+ * $x = new MarkdownSoap($string_to_be_cleansed);
+ * $text = $x->clean();
+ *
+ * What this does:
+ * 1. extracts code blocks and privately escapes them from processing
+ * 2. Run html purifier on the content
+ * 3. put back the code blocks
+ * 4. run htmlspecialchars on the entire content for safe storage
+ *
+ * At render time:
+ * $markdown = \Zotlabs\Lib\MarkdownSoap::unescape($text);
+ * $html = \Michelf\MarkdownExtra::DefaultTransform($markdown);
+ */
+
+
+
+class MarkdownSoap {
+
+ private $token;
+
+ private $str;
+
+ function __construct($s) {
+ $this->str = $s;
+ $this->token = random_string(20);
+ }
+
+
+ function clean() {
+
+ $x = $this->extract_code($this->str);
+
+ $x = $this->purify($x);
+
+ $x = $this->putback_code($x);
+
+ $x = $this->escape($x);
+
+ return $x;
+ }
+
+ function extract_code($s) {
+
+ $text = preg_replace_callback('{
+ (?:\n\n|\A\n?)
+ ( # $1 = the code block -- one or more lines, starting with a space/tab
+ (?>
+ [ ]{'.'4'.'} # Lines must start with a tab or a tab-width of spaces
+ .*\n+
+ )+
+ )
+ ((?=^[ ]{0,'.'4'.'}\S)|\Z) # Lookahead for non-space at line-start, or end of doc
+ }xm',
+ [ $this , 'encode_code' ], $s);
+
+ return $text;
+ }
+
+ function encode_code($matches) {
+ return $this->token . ';' . base64_encode($matches[0]) . ';' ;
+ }
+
+ function decode_code($matches) {
+ return base64_decode($matches[1]);
+ }
+
+ function putback_code($s) {
+ $text = preg_replace_callback('{' . $this->token . '\;(.*?)\;}xm',[ $this, 'decode_code' ], $s);
+ return $text;
+ }
+
+ function purify($s) {
+ $s = str_replace("\n",'<br>',$s);
+ $s = str_replace("\t",'&nbsp;&nbsp;&nbsp;&nbsp;',$s);
+ $s = str_replace(' ','&nbsp;',$s);
+ $s = purify_html($s);
+ $s = str_replace('&nbsp;'," ",$s);
+ $s = str_replace(['<br>','<br />'],["\n","\n"],$s);
+ return $s;
+ }
+
+ function escape($s) {
+ return htmlspecialchars($s,ENT_QUOTES);
+ }
+
+ static public function unescape($s) {
+ return htmlspecialchars_decode($s,ENT_QUOTES);
+ }
+}
diff --git a/Zotlabs/Lib/NativeWikiPage.php b/Zotlabs/Lib/NativeWikiPage.php
index 941ade90c..3d6da7779 100644
--- a/Zotlabs/Lib/NativeWikiPage.php
+++ b/Zotlabs/Lib/NativeWikiPage.php
@@ -307,34 +307,6 @@ class NativeWikiPage {
return null;
}
-
-
- static public function prepare_content($s) {
-
- $text = preg_replace_callback('{
- (?:\n\n|\A\n?)
- ( # $1 = the code block -- one or more lines, starting with a space/tab
- (?>
- [ ]{'.'4'.'} # Lines must start with a tab or a tab-width of spaces
- .*\n+
- )+
- )
- ((?=^[ ]{0,'.'4'.'}\S)|\Z) # Lookahead for non-space at line-start, or end of doc
- }xm',
- 'self::nwiki_prepare_content_callback', $s);
-
- return $text;
- }
-
- static public function nwiki_prepare_content_callback($matches) {
- $codeblock = $matches[1];
-
- $codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES, UTF8, false);
- return "\n\n" . $codeblock ;
- }
-
-
-
static public function save_page($arr) {
$pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : '');
@@ -351,12 +323,6 @@ class NativeWikiPage {
}
$mimetype = $w['mimeType'];
- if($mimetype === 'text/markdown') {
- $content = purify_html(Zlib\NativeWikiPage::prepare_content($content));
- }
- else {
- $content = escape_tags($content);
- }
// fetch the most recently saved revision.
@@ -375,6 +341,7 @@ class NativeWikiPage {
$item['author_xchan'] = $observer_hash;
$item['revision'] = (($arr['revision']) ? intval($arr['revision']) + 1 : intval($item['revision']) + 1);
$item['edited'] = datetime_convert();
+ $item['mimetype'] = $mimetype;
if($item['iconfig'] && is_array($item['iconfig']) && count($item['iconfig'])) {
for($x = 0; $x < count($item['iconfig']); $x ++) {
@@ -542,6 +509,29 @@ class NativeWikiPage {
}
return $s;
}
+
+ static public function render_page_history($arr) {
+
+ $pageUrlName = ((array_key_exists('pageUrlName', $arr)) ? $arr['pageUrlName'] : '');
+ $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
+
+ $pageHistory = self::page_history([
+ 'channel_id' => \App::$profile_uid,
+ 'observer_hash' => get_observer_hash(),
+ 'resource_id' => $resource_id,
+ 'pageUrlName' => $pageUrlName
+ ]);
+
+ return replace_macros(get_markup_template('nwiki_page_history.tpl'), array(
+ '$pageHistory' => $pageHistory['history'],
+ '$permsWrite' => $arr['permsWrite'],
+ '$name_lbl' => t('Name'),
+ '$msg_label' => t('Message','wiki_history')
+ ));
+
+ }
+
+
/**
* Replace the instances of the string [toc] with a list element that will be populated by
diff --git a/Zotlabs/Lib/PConfig.php b/Zotlabs/Lib/PConfig.php
index d70697fbc..25478e764 100644
--- a/Zotlabs/Lib/PConfig.php
+++ b/Zotlabs/Lib/PConfig.php
@@ -119,7 +119,7 @@ class PConfig {
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
- if(get_pconfig($uid, $family, $key) === false) {
+ if(self::Get($uid, $family, $key) === false) {
if(! array_key_exists($uid, \App::$config))
\App::$config[$uid] = array();
if(! array_key_exists($family, \App::$config[$uid]))
diff --git a/Zotlabs/Lib/System.php b/Zotlabs/Lib/System.php
index 306c90f4a..3d5b18506 100644
--- a/Zotlabs/Lib/System.php
+++ b/Zotlabs/Lib/System.php
@@ -54,12 +54,8 @@ class System {
return 'https://github.com/redmatrix/hubzilla';
}
-
-
static public function get_server_role() {
- if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['server_role'])
- return \App::$config['system']['server_role'];
- return 'standard';
+ return 'pro';
}
static public function get_std_version() {
@@ -72,11 +68,8 @@ class System {
if(get_directory_realm() != DIRECTORY_REALM)
return true;
-
- foreach(['hubzilla','zap'] as $t) {
- if(stristr($p,$t))
- return true;
- }
+ if(in_array(strtolower($p),['hubzilla','zap','red']))
+ return true;
return false;
}
}
diff --git a/Zotlabs/Module/Connections.php b/Zotlabs/Module/Connections.php
index e8a92e8b7..b079ae860 100644
--- a/Zotlabs/Module/Connections.php
+++ b/Zotlabs/Module/Connections.php
@@ -5,10 +5,6 @@ namespace Zotlabs\Module;
require_once('include/socgraph.php');
require_once('include/selectors.php');
require_once('include/group.php');
-require_once('include/contact_widgets.php');
-require_once('include/zot.php');
-require_once('include/widgets.php');
-
class Connections extends \Zotlabs\Web\Controller {
diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php
index 5b7c23028..72bd3e86e 100644
--- a/Zotlabs/Module/Connedit.php
+++ b/Zotlabs/Module/Connedit.php
@@ -11,9 +11,6 @@ namespace Zotlabs\Module;
require_once('include/socgraph.php');
require_once('include/selectors.php');
require_once('include/group.php');
-require_once('include/contact_widgets.php');
-require_once('include/zot.php');
-require_once('include/widgets.php');
require_once('include/photos.php');
diff --git a/Zotlabs/Module/Cover_photo.php b/Zotlabs/Module/Cover_photo.php
index 72ec1020d..47bce6c2b 100644
--- a/Zotlabs/Module/Cover_photo.php
+++ b/Zotlabs/Module/Cover_photo.php
@@ -23,19 +23,17 @@ require_once('include/channel.php');
class Cover_photo extends \Zotlabs\Web\Controller {
function init() {
-
if(! local_channel()) {
return;
}
$channel = \App::get_channel();
- profile_load($channel['channel_address']);
-
+ profile_load($channel['channel_address']);
}
- /* @brief Evaluate posted values
+ /**
+ * @brief Evaluate posted values
*
- * @param $a Current application
* @return void
*
*/
@@ -130,8 +128,15 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$aid = get_account_id();
- $p = array('aid' => $aid, 'uid' => local_channel(), 'resource_id' => $base_image['resource_id'],
- 'filename' => $base_image['filename'], 'album' => t('Cover Photos'));
+ $p = [
+ 'aid' => $aid,
+ 'uid' => local_channel(),
+ 'resource_id' => $base_image['resource_id'],
+ 'filename' => $base_image['filename'],
+ 'album' => t('Cover Photos'),
+ 'os_path' => $base_image['os_path'],
+ 'display_path' => $base_image['display_path']
+ ];
$p['imgscale'] = 7;
$p['photo_usage'] = PHOTO_COVER;
@@ -195,11 +200,10 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$os_storage = false;
foreach($i as $ii) {
- $smallest = intval($ii['imgscale']);
+ $smallest = intval($ii['imgscale']);
$os_storage = intval($ii['os_storage']);
- $imagedata = $ii['content'];
- $filetype = $ii['mimetype'];
-
+ $imagedata = $ii['content'];
+ $filetype = $ii['mimetype'];
}
}
@@ -263,10 +267,10 @@ class Cover_photo extends \Zotlabs\Web\Controller {
}
- /* @brief Generate content of profile-photo view
+ /**
+ * @brief Generate content of profile-photo view
*
- * @param $a Current application
- * @return void
+ * @return string
*
*/
@@ -350,15 +354,15 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$tpl = get_markup_template('cover_photo.tpl');
$o .= replace_macros($tpl,array(
- '$user' => \App::$channel['channel_address'],
- '$lbl_upfile' => t('Upload File:'),
- '$lbl_profiles' => t('Select a profile:'),
- '$title' => t('Upload Cover Photo'),
- '$submit' => t('Upload'),
- '$profiles' => $profiles,
+ '$user' => \App::$channel['channel_address'],
+ '$lbl_upfile' => t('Upload File:'),
+ '$lbl_profiles' => t('Select a profile:'),
+ '$title' => t('Upload Cover Photo'),
+ '$submit' => t('Upload'),
+ '$profiles' => $profiles,
'$form_security_token' => get_form_security_token("cover_photo"),
- // FIXME - yuk
- '$select' => sprintf('%s %s', t('or'), ($newuser) ? '<a href="' . z_root() . '">' . t('skip this step') . '</a>' : '<a href="'. z_root() . '/photos/' . \App::$channel['channel_address'] . '">' . t('select a photo from your photo albums') . '</a>')
+ /// @FIXME - yuk
+ '$select' => sprintf('%s %s', t('or'), ($newuser) ? '<a href="' . z_root() . '">' . t('skip this step') . '</a>' : '<a href="'. z_root() . '/photos/' . \App::$channel['channel_address'] . '">' . t('select a photo from your photo albums') . '</a>')
));
call_hooks('cover_photo_content_end', $o);
@@ -370,14 +374,14 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$resolution = 3;
$tpl = get_markup_template("cropcover.tpl");
$o .= replace_macros($tpl,array(
- '$filename' => $filename,
- '$profile' => intval($_REQUEST['profile']),
- '$resource' => \App::$data['imagecrop'] . '-3',
- '$image_url' => z_root() . '/photo/' . $filename,
- '$title' => t('Crop Image'),
- '$desc' => t('Please adjust the image cropping for optimum viewing.'),
+ '$filename' => $filename,
+ '$profile' => intval($_REQUEST['profile']),
+ '$resource' => \App::$data['imagecrop'] . '-3',
+ '$image_url' => z_root() . '/photo/' . $filename,
+ '$title' => t('Crop Image'),
+ '$desc' => t('Please adjust the image cropping for optimum viewing.'),
'$form_security_token' => get_form_security_token("cover_photo"),
- '$done' => t('Done Editing')
+ '$done' => t('Done Editing')
));
return $o;
}
@@ -393,8 +397,6 @@ class Cover_photo extends \Zotlabs\Web\Controller {
*
*/
-
-
function cover_photo_crop_ui_head(&$a, $ph, $hash, $smallest){
$max_length = get_config('system','max_image_length');
diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php
index 59ae88857..edcf43cd6 100644
--- a/Zotlabs/Module/Directory.php
+++ b/Zotlabs/Module/Directory.php
@@ -4,7 +4,6 @@ namespace Zotlabs\Module;
require_once('include/socgraph.php');
require_once('include/dir_fns.php');
-require_once('include/widgets.php');
require_once('include/bbcode.php');
diff --git a/Zotlabs/Module/Editblock.php b/Zotlabs/Module/Editblock.php
index 654e2251d..8a7e87a09 100644
--- a/Zotlabs/Module/Editblock.php
+++ b/Zotlabs/Module/Editblock.php
@@ -98,6 +98,11 @@ class Editblock extends \Zotlabs\Web\Controller {
$mimetype = $itm[0]['mimetype'];
+ $content = $itm[0]['body'];
+ if($itm[0]['mimetype'] === 'text/markdown')
+ $content = \Zotlabs\Lib\MarkdownSoap::unescape($itm[0]['body']);
+
+
$rp = 'blocks/' . $channel['channel_address'];
$x = array(
@@ -117,7 +122,7 @@ class Editblock extends \Zotlabs\Web\Controller {
'ptyp' => $itm[0]['type'],
'mimeselect' => true,
'mimetype' => $itm[0]['mimetype'],
- 'body' => undo_post_tagging($itm[0]['body']),
+ 'body' => undo_post_tagging($content),
'post_id' => $post_id,
'visitor' => true,
'title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
diff --git a/Zotlabs/Module/Editlayout.php b/Zotlabs/Module/Editlayout.php
index ea637fcba..3d6a79507 100644
--- a/Zotlabs/Module/Editlayout.php
+++ b/Zotlabs/Module/Editlayout.php
@@ -119,6 +119,7 @@ class Editlayout extends \Zotlabs\Web\Controller {
'hide_weblink' => true,
'hide_attach' => true,
'hide_preview' => true,
+ 'disable_comments' => true,
'ptyp' => $itm[0]['obj_type'],
'body' => undo_post_tagging($itm[0]['body']),
'post_id' => $post_id,
diff --git a/Zotlabs/Module/Editwebpage.php b/Zotlabs/Module/Editwebpage.php
index 97f4a32ff..03b2aeab9 100644
--- a/Zotlabs/Module/Editwebpage.php
+++ b/Zotlabs/Module/Editwebpage.php
@@ -129,6 +129,10 @@ class Editwebpage extends \Zotlabs\Web\Controller {
}
$layout = $itm[0]['layout_mid'];
+
+ $content = $itm[0]['body'];
+ if($itm[0]['mimetype'] === 'text/markdown')
+ $content = \Zotlabs\Lib\MarkdownSoap::unescape($itm[0]['body']);
$rp = 'webpages/' . $which;
@@ -145,7 +149,7 @@ class Editwebpage extends \Zotlabs\Web\Controller {
'hide_location' => true,
'hide_voting' => true,
'ptyp' => $itm[0]['type'],
- 'body' => undo_post_tagging($itm[0]['body']),
+ 'body' => undo_post_tagging($content),
'post_id' => $post_id,
'visitor' => ($is_owner) ? true : false,
'acl' => populate_acl($itm[0],false,\Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')),
diff --git a/Zotlabs/Module/Hcard.php b/Zotlabs/Module/Hcard.php
index ec9181f6a..13097939e 100644
--- a/Zotlabs/Module/Hcard.php
+++ b/Zotlabs/Module/Hcard.php
@@ -59,12 +59,10 @@ class Hcard extends \Zotlabs\Web\Controller {
}
- function get() {
-
- require_once('include/widgets.php');
- return widget_profile(array());
-
-
+ function get() {
+
+ $x = new \Zotlabs\Widget\Profile();
+ return $x->widget(array());
}
diff --git a/Zotlabs/Module/Impel.php b/Zotlabs/Module/Impel.php
index 197d9f859..77f488d26 100644
--- a/Zotlabs/Module/Impel.php
+++ b/Zotlabs/Module/Impel.php
@@ -144,18 +144,8 @@ class Impel extends \Zotlabs\Web\Controller {
// Verify ability to use html or php!!!
- $execflag = false;
-
- if($arr['mimetype'] === 'application/x-php') {
- $z = q("select account_id, account_roles, channel_pageflags from account left join channel on channel_account_id = account_id where channel_id = %d limit 1",
- intval(local_channel())
- );
-
- if($z && (($z[0]['account_roles'] & ACCOUNT_ROLE_ALLOWCODE) || ($z[0]['channel_pageflags'] & PAGE_ALLOWCODE))) {
- $execflag = true;
- }
- }
-
+ $execflag = ((intval($channel['channel_id']) == intval(local_channel()) && ($channel['channel_pageflags'] & PAGE_ALLOWCODE)) ? true : false);
+
$i = q("select id, edited, item_deleted from item where mid = '%s' and uid = %d limit 1",
dbesc($arr['mid']),
intval(local_channel())
diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php
index 6f54d3bb1..71f410b2a 100644
--- a/Zotlabs/Module/Item.php
+++ b/Zotlabs/Module/Item.php
@@ -471,24 +471,16 @@ class Item extends \Zotlabs\Web\Controller {
if(! $mimetype)
$mimetype = 'text/bbcode';
+
+ $execflag = ((intval($uid) == intval($profile_uid)
+ && ($channel['channel_pageflags'] & PAGE_ALLOWCODE)) ? true : false);
+
if($preview) {
- $body = z_input_filter($profile_uid,$body,$mimetype);
+ $body = z_input_filter($body,$mimetype,$execflag);
}
-
// Verify ability to use html or php!!!
- $execflag = false;
-
- $z = q("select account_id, account_roles, channel_pageflags from account left join channel on channel_account_id = account_id where channel_id = %d limit 1",
- intval($profile_uid)
- );
- if($z && (($z[0]['account_roles'] & ACCOUNT_ROLE_ALLOWCODE) || ($z[0]['channel_pageflags'] & PAGE_ALLOWCODE))) {
- if($uid && (get_account_id() == $z[0]['account_id'])) {
- $execflag = true;
- }
- }
-
$gacl = $acl->get();
$str_contact_allow = $gacl['allow_cid'];
$str_group_allow = $gacl['allow_gid'];
@@ -852,18 +844,6 @@ class Item extends \Zotlabs\Web\Controller {
if(mb_strlen($datarray['title']) > 255)
$datarray['title'] = mb_substr($datarray['title'],0,255);
- if(array_key_exists('item_private',$datarray) && $datarray['item_private']) {
-
- $datarray['body'] = trim(z_input_filter($datarray['uid'],$datarray['body'],$datarray['mimetype']));
-
- if($uid) {
- if($channel['channel_hash'] === $datarray['author_xchan']) {
- $datarray['sig'] = base64url_encode(rsa_sign($datarray['body'],$channel['channel_prvkey']));
- $datarray['item_verified'] = 1;
- }
- }
- }
-
if($webpage) {
Zlib\IConfig::Set($datarray,'system', webpage_to_namespace($webpage),
(($pagetitle) ? $pagetitle : substr($datarray['mid'],0,16)),true);
diff --git a/Zotlabs/Module/Layouts.php b/Zotlabs/Module/Layouts.php
index c07f65ce1..34d754029 100644
--- a/Zotlabs/Module/Layouts.php
+++ b/Zotlabs/Module/Layouts.php
@@ -125,6 +125,7 @@ class Layouts extends \Zotlabs\Web\Controller {
'hide_weblink' => true,
'hide_attach' => true,
'hide_preview' => true,
+ 'disable_comments' => true,
'ptlabel' => t('Layout Name'),
'profile_uid' => intval($owner),
'expanded' => true,
diff --git a/Zotlabs/Module/Profile_photo.php b/Zotlabs/Module/Profile_photo.php
index 438580917..e8f0e5186 100644
--- a/Zotlabs/Module/Profile_photo.php
+++ b/Zotlabs/Module/Profile_photo.php
@@ -108,11 +108,13 @@ class Profile_photo extends \Zotlabs\Web\Controller {
$aid = get_account_id();
$p = [
- 'aid' => $aid,
- 'uid' => local_channel(),
- 'resource_id' => $base_image['resource_id'],
- 'filename' => $base_image['filename'],
- 'album' => t('Profile Photos')
+ 'aid' => $aid,
+ 'uid' => local_channel(),
+ 'resource_id' => $base_image['resource_id'],
+ 'filename' => $base_image['filename'],
+ 'album' => t('Profile Photos'),
+ 'os_path' => $base_image['os_path'],
+ 'display_path' => $base_image['display_path']
];
$p['imgscale'] = PHOTO_RES_PROFILE_300;
diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php
index 9c688af01..e114dfc0b 100644
--- a/Zotlabs/Module/Setup.php
+++ b/Zotlabs/Module/Setup.php
@@ -324,11 +324,6 @@ class Setup extends \Zotlabs\Web\Controller {
$siteurl = trim($_POST['siteurl']);
$timezone = ((x($_POST,'timezone')) ? ($_POST['timezone']) : 'America/Los_Angeles');
- $server_roles = [
- 'basic' => t('Basic/Minimal Social Networking'),
- 'standard' => t('Standard Configuration (default)'),
- 'pro' => t('Professional')
- ];
$tpl = get_markup_template('install_settings.tpl');
$o .= replace_macros($tpl, array(
@@ -348,8 +343,6 @@ class Setup extends \Zotlabs\Web\Controller {
'$siteurl' => array('siteurl', t('Website URL'), z_root(), t('Please use SSL (https) URL if available.')),
- '$server_role' => array('server_role', t("Server Configuration/Role"), 'standard','',$server_roles),
-
'$timezone' => array('timezone', t('Please select a default timezone for your website'), $timezone, '', get_timezones()),
'$baseurl' => z_root(),
diff --git a/Zotlabs/Module/Suggest.php b/Zotlabs/Module/Suggest.php
index 367308d90..2a69145ed 100644
--- a/Zotlabs/Module/Suggest.php
+++ b/Zotlabs/Module/Suggest.php
@@ -3,8 +3,6 @@ namespace Zotlabs\Module;
require_once('include/socgraph.php');
require_once('include/contact_widgets.php');
-require_once('include/widgets.php');
-
class Suggest extends \Zotlabs\Web\Controller {
@@ -23,7 +21,7 @@ class Suggest extends \Zotlabs\Web\Controller {
}
- function get() {
+ function get() {
$o = '';
if(! local_channel()) {
diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php
index 42de8db50..28e8fe328 100644
--- a/Zotlabs/Module/Wiki.php
+++ b/Zotlabs/Module/Wiki.php
@@ -237,13 +237,16 @@ class Wiki extends \Zotlabs\Web\Controller {
$rawContent = htmlspecialchars_decode(json_decode($p['content']),ENT_COMPAT);
+ $rawContent = $p['content'];
+
$content = ($p['content'] !== '' ? $rawContent : '"# New page\n"');
// Render the Markdown-formatted page content in HTML
if($mimeType == 'text/bbcode') {
$renderedContent = Zlib\NativeWikiPage::convert_links(zidify_links(smilies(bbcode($content))), argv(0) . '/' . argv(1) . '/' . $wikiUrlName);
}
else {
- $html = Zlib\NativeWikiPage::generate_toc(zidify_text(purify_html(MarkdownExtra::defaultTransform(Zlib\NativeWikiPage::bbcode($content)))));
+ $content = Zlib\MarkdownSoap::unescape($content);
+ $html = Zlib\NativeWikiPage::generate_toc(zidify_text(MarkdownExtra::defaultTransform(Zlib\NativeWikiPage::bbcode($content))));
$renderedContent = Zlib\NativeWikiPage::convert_links($html, argv(0) . '/' . argv(1) . '/' . $wikiUrlName);
}
$showPageControls = $wiki_editor;
@@ -327,8 +330,13 @@ class Wiki extends \Zotlabs\Web\Controller {
$html = Zlib\NativeWikiPage::convert_links(zidify_links(smilies(bbcode($content))),$wikiURL);
}
else {
- $content = Zlib\NativeWikiPage::bbcode($content);
- $html = Zlib\NativeWikiPage::generate_toc(zidify_text(purify_html(MarkdownExtra::defaultTransform($content))));
+
+ $bb = Zlib\NativeWikiPage::bbcode($content);
+ $x = new ZLib\MarkdownSoap($bb);
+ $md = $x->clean();
+ $md = ZLib\MarkdownSoap::unescape($md);
+ $html = MarkdownExtra::defaultTransform($md);
+ $html = Zlib\NativeWikiPage::generate_toc(zidify_text($html));
$html = Zlib\NativeWikiPage::convert_links($html,$wikiURL);
}
json_return_and_die(array('html' => $html, 'success' => true));
@@ -453,7 +461,11 @@ class Wiki extends \Zotlabs\Web\Controller {
json_return_and_die(array('pages' => null, 'message' => 'Permission denied.', 'success' => false));
}
- $page_list_html = widget_wiki_pages(array(
+ // @FIXME - we shouldn't invoke this if it isn't in the PDL or has been over-ridden
+
+ $x = new \Zotlabs\Widget\Wiki_pages();
+
+ $page_list_html = $x->widget(array(
'resource_id' => $resource_id,
'refresh' => true,
'channel' => argv(1)));
@@ -511,7 +523,6 @@ class Wiki extends \Zotlabs\Web\Controller {
$resource_id = $_POST['resource_id'];
$pageUrlName = $_POST['name'];
-
// Determine if observer has permission to read content
$perms = Zlib\NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash);
@@ -520,11 +531,12 @@ class Wiki extends \Zotlabs\Web\Controller {
json_return_and_die(array('historyHTML' => '', 'message' => 'Permission denied.', 'success' => false));
}
- $historyHTML = widget_wiki_page_history(array(
+ $historyHTML = \Zotlabs\Lib\NativeWikiPage::render_page_history(array(
'resource_id' => $resource_id,
'pageUrlName' => $pageUrlName,
'permsWrite' => $perms['write']
));
+
json_return_and_die(array('historyHTML' => $historyHTML, 'message' => '', 'success' => true));
}
diff --git a/Zotlabs/Render/Comanche.php b/Zotlabs/Render/Comanche.php
index 5826063fd..5c1ca7d10 100644
--- a/Zotlabs/Render/Comanche.php
+++ b/Zotlabs/Render/Comanche.php
@@ -4,8 +4,6 @@ namespace Zotlabs\Render;
require_once('include/security.php');
require_once('include/menu.php');
-require_once('include/widgets.php');
-
class Comanche {
@@ -410,6 +408,21 @@ class Comanche {
}
}
+ $clsname = ucfirst($name);
+ $nsname = "\\Zotlabs\\Widget\\" . $clsname;
+
+ if(file_exists('Zotlabs/SiteWidget/' . $clsname . '.php'))
+ require_once('Zotlabs/SiteWidget/' . $clsname . '.php');
+ elseif(file_exists('Zotlabs/Widget/' . $clsname . '.php'))
+ require_once('Zotlabs/Widget/' . $clsname . '.php');
+ if(class_exists($nsname)) {
+ $x = new $nsname;
+ $f = 'widget';
+ if(method_exists($x,$f)) {
+ return $x->$f($vars);
+ }
+ }
+
$func = 'widget_' . trim($name);
if(! function_exists($func)) {
diff --git a/Zotlabs/Widget/Activity.php b/Zotlabs/Widget/Activity.php
new file mode 100644
index 000000000..72a27bdf1
--- /dev/null
+++ b/Zotlabs/Widget/Activity.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Activity {
+
+ function widget($arr) {
+
+ if(! local_channel())
+ return '';
+
+ $o = '';
+
+ if(is_array($arr) && array_key_exists('limit',$arr))
+ $limit = " limit " . intval($limit) . " ";
+ else
+ $limit = '';
+
+ $perms_sql = item_permissions_sql(local_channel()) . item_normal();
+
+ $r = q("select author_xchan from item where item_unseen = 1 and uid = %d $perms_sql",
+ intval(local_channel())
+ );
+
+ $contributors = [];
+ $arr = [];
+
+ if($r) {
+ foreach($r as $rv) {
+ if(array_key_exists($rv['author_xchan'],$contributors)) {
+ $contributors[$rv['author_xchan']] ++;
+ }
+ else {
+ $contributors[$rv['author_xchan']] = 1;
+ }
+ }
+ foreach($contributors as $k => $v) {
+ $arr[] = [ 'author_xchan' => $k, 'total' => $v ];
+ }
+ usort($arr,'total_sort');
+ xchan_query($arr);
+ }
+
+ $x = [ 'entries' => $arr ];
+ call_hooks('activity_widget',$x);
+ $arr = $x['entries'];
+
+ if($arr) {
+ $o .= '<div class="widget">';
+ $o .= '<h3>' . t('Activity','widget') . '</h3><ul class="nav nav-pills nav-stacked">';
+
+ foreach($arr as $rv) {
+ $o .= '<li><a href="network?f=&xchan=' . urlencode($rv['author_xchan']) . '" ><span class="badge pull-right">' . ((intval($rv['total'])) ? intval($rv['total']) : '') . '</span><img src="' . $rv['author']['xchan_photo_s'] . '" style="width: 16px; height: 16px;" /> ' . $rv['author']['xchan_name'] . '</a></li>';
+ }
+ $o .= '</ul></div>';
+ }
+ return $o;
+ }
+
+}
+
diff --git a/Zotlabs/Widget/Admin.php b/Zotlabs/Widget/Admin.php
new file mode 100644
index 000000000..a761eebe3
--- /dev/null
+++ b/Zotlabs/Widget/Admin.php
@@ -0,0 +1,68 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Admin {
+
+ function widget($arr) {
+
+ /*
+ * Side bar links
+ */
+
+ if(! is_site_admin()) {
+ return '';
+ }
+
+ $o = '';
+
+ // array( url, name, extra css classes )
+
+ $aside = [
+ 'site' => array(z_root() . '/admin/site/', t('Site'), 'site'),
+ 'accounts' => array(z_root() . '/admin/accounts/', t('Accounts'), 'accounts', 'pending-update', t('Member registrations waiting for confirmation')),
+ 'channels' => array(z_root() . '/admin/channels/', t('Channels'), 'channels'),
+ 'security' => array(z_root() . '/admin/security/', t('Security'), 'security'),
+ 'features' => array(z_root() . '/admin/features/', t('Features'), 'features'),
+ 'plugins' => array(z_root() . '/admin/plugins/', t('Plugins'), 'plugins'),
+ 'themes' => array(z_root() . '/admin/themes/', t('Themes'), 'themes'),
+ 'queue' => array(z_root() . '/admin/queue', t('Inspect queue'), 'queue'),
+ 'profs' => array(z_root() . '/admin/profs', t('Profile Fields'), 'profs'),
+ 'dbsync' => array(z_root() . '/admin/dbsync/', t('DB updates'), 'dbsync')
+ ];
+
+ /* get plugins admin page */
+
+ $r = q("SELECT * FROM addon WHERE plugin_admin = 1");
+
+ $plugins = array();
+ if($r) {
+ foreach ($r as $h){
+ $plugin = $h['aname'];
+ $plugins[] = array(z_root() . '/admin/plugins/' . $plugin, $plugin, 'plugin');
+ // temp plugins with admin
+ \App::$plugins_admin[] = $plugin;
+ }
+ }
+
+ $logs = array(z_root() . '/admin/logs/', t('Logs'), 'logs');
+
+ $arr = array('links' => $aside,'plugins' => $plugins,'logs' => $logs);
+ call_hooks('admin_aside',$arr);
+
+ $o .= replace_macros(get_markup_template('admin_aside.tpl'), array(
+ '$admin' => $aside,
+ '$admtxt' => t('Admin'),
+ '$plugadmtxt' => t('Plugin Features'),
+ '$plugins' => $plugins,
+ '$logtxt' => t('Logs'),
+ '$logs' => $logs,
+ '$h_pending' => t('Member registrations waiting for confirmation'),
+ '$admurl'=> z_root() . '/admin/'
+ ));
+
+ return $o;
+
+ }
+}
+
diff --git a/Zotlabs/Widget/Affinity.php b/Zotlabs/Widget/Affinity.php
new file mode 100644
index 000000000..439ba1f33
--- /dev/null
+++ b/Zotlabs/Widget/Affinity.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Affinity {
+
+ function widget($arr) {
+
+ if(! local_channel())
+ return '';
+
+ // Get default cmin value from pconfig, but allow GET parameter to override
+ $cmin = intval(get_pconfig(local_channel(),'affinity','cmin'));
+ $cmin = (($cmin) ? $cmin : 0);
+ $cmin = ((x($_REQUEST,'cmin')) ? intval($_REQUEST['cmin']) : $cmin);
+
+ // Get default cmax value from pconfig, but allow GET parameter to override
+ $cmax = intval(get_pconfig(local_channel(),'affinity','cmax'));
+ $cmax = (($cmax) ? $cmax : 99);
+ $cmax = ((x($_REQUEST,'cmax')) ? intval($_REQUEST['cmax']) : $cmax);
+
+
+ if(feature_enabled(local_channel(),'affinity')) {
+
+ $labels = array(
+ t('Me'),
+ t('Family'),
+ t('Friends'),
+ t('Acquaintances'),
+ t('All')
+ );
+ call_hooks('affinity_labels',$labels);
+ $label_str = '';
+
+ if($labels) {
+ foreach($labels as $l) {
+ if($label_str) {
+ $label_str .= ", '|'";
+ $label_str .= ", '" . $l . "'";
+ }
+ else
+ $label_str .= "'" . $l . "'";
+ }
+ }
+
+ $tpl = get_markup_template('main_slider.tpl');
+ $x = replace_macros($tpl,array(
+ '$val' => $cmin . ',' . $cmax,
+ '$refresh' => t('Refresh'),
+ '$labels' => $label_str,
+ ));
+
+ $arr = array('html' => $x);
+ call_hooks('main_slider',$arr);
+ return $arr['html'];
+ }
+ return '';
+ }
+}
+ \ No newline at end of file
diff --git a/Zotlabs/Widget/Album.php b/Zotlabs/Widget/Album.php
new file mode 100644
index 000000000..f359e6d0f
--- /dev/null
+++ b/Zotlabs/Widget/Album.php
@@ -0,0 +1,106 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/attach.php');
+
+class Album {
+
+ function widget($args) {
+
+
+ $owner_uid = \App::$profile_uid;
+ $sql_extra = permissions_sql($owner_uid);
+
+
+ if(! perm_is_allowed($owner_uid,get_observer_hash(),'view_storage'))
+ return '';
+
+ if($args['album'])
+ $album = $args['album'];
+ if($args['title'])
+ $title = $args['title'];
+
+ /**
+ * This may return incorrect permissions if you have multiple directories of the same name.
+ * It is a limitation of the photo table using a name for a photo album instead of a folder hash
+ */
+
+ if($album) {
+ $x = q("select hash from attach where filename = '%s' and uid = %d limit 1",
+ dbesc($album),
+ intval($owner_uid)
+ );
+ if($x) {
+ $y = attach_can_view_folder($owner_uid,get_observer_hash(),$x[0]['hash']);
+ if(! $y)
+ return '';
+ }
+ }
+
+ $order = 'DESC';
+
+ $r = q("SELECT p.resource_id, p.id, p.filename, p.mimetype, p.imgscale, p.description, p.created FROM photo p INNER JOIN
+ (SELECT resource_id, max(imgscale) imgscale FROM photo WHERE uid = %d AND album = '%s' AND imgscale <= 4 AND photo_usage IN ( %d, %d ) $sql_extra GROUP BY resource_id) ph
+ ON (p.resource_id = ph.resource_id AND p.imgscale = ph.imgscale)
+ ORDER BY created $order ",
+ intval($owner_uid),
+ dbesc($album),
+ intval(PHOTO_NORMAL),
+ intval(PHOTO_PROFILE)
+ );
+
+ //edit album name
+ $album_edit = null;
+
+ $photos = array();
+ if($r) {
+ $twist = 'rotright';
+ foreach($r as $rr) {
+
+ if($twist == 'rotright')
+ $twist = 'rotleft';
+ else
+ $twist = 'rotright';
+
+ $ext = $phototypes[$rr['mimetype']];
+
+ $imgalt_e = $rr['filename'];
+ $desc_e = $rr['description'];
+
+ $imagelink = (z_root() . '/photos/' . \App::$profile['channel_address'] . '/image/' . $rr['resource_id']);
+
+
+ $photos[] = array(
+ 'id' => $rr['id'],
+ 'twist' => ' ' . $twist . rand(2,4),
+ 'link' => $imagelink,
+ 'title' => t('View Photo'),
+ 'src' => z_root() . '/photo/' . $rr['resource_id'] . '-' . $rr['imgscale'] . '.' .$ext,
+ 'alt' => $imgalt_e,
+ 'desc'=> $desc_e,
+ 'ext' => $ext,
+ 'hash'=> $rr['resource_id'],
+ 'unknown' => t('Unknown')
+ );
+ }
+ }
+
+
+ $tpl = get_markup_template('photo_album.tpl');
+ $o .= replace_macros($tpl, array(
+ '$photos' => $photos,
+ '$album' => (($title) ? $title : $album),
+ '$album_id' => rand(),
+ '$album_edit' => array(t('Edit Album'), $album_edit),
+ '$can_post' => false,
+ '$upload' => array(t('Upload'), z_root() . '/photos/' . \App::$profile['channel_address'] . '/upload/' . bin2hex($album)),
+ '$order' => false,
+ '$upload_form' => $upload_form,
+ '$usage' => $usage_message
+ ));
+
+ return $o;
+ }
+}
+
diff --git a/Zotlabs/Widget/Appcategories.php b/Zotlabs/Widget/Appcategories.php
new file mode 100644
index 000000000..490ec1abc
--- /dev/null
+++ b/Zotlabs/Widget/Appcategories.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Appcategories {
+
+ function widget($arr) {
+
+ if(! local_channel())
+ return '';
+
+ $selected = ((x($_REQUEST,'cat')) ? htmlspecialchars($_REQUEST['cat'],ENT_COMPAT,'UTF-8') : '');
+
+ // @FIXME ??? $srchurl undefined here - commented out until is reviewed
+ //$srchurl = rtrim(preg_replace('/cat\=[^\&].*?(\&|$)/is','',$srchurl),'&');
+ //$srchurl = str_replace(array('?f=','&f='),array('',''),$srchurl);
+
+ // Leaving this line which negates the effect of the two invalid lines prior
+ $srchurl = z_root() . '/apps';
+
+ $terms = array();
+
+ $r = q("select distinct(term.term)
+ from term join app on term.oid = app.id
+ where app_channel = %d
+ and term.uid = app_channel
+ and term.otype = %d
+ and term.term != 'nav_featured_app'
+ order by term.term asc",
+ intval(local_channel()),
+ intval(TERM_OBJ_APP)
+ );
+
+ if($r) {
+ foreach($r as $rr)
+ $terms[] = array('name' => $rr['term'], 'selected' => (($selected == $rr['term']) ? 'selected' : ''));
+
+ return replace_macros(get_markup_template('categories_widget.tpl'),array(
+ '$title' => t('Categories'),
+ '$desc' => '',
+ '$sel_all' => (($selected == '') ? 'selected' : ''),
+ '$all' => t('Everything'),
+ '$terms' => $terms,
+ '$base' => $srchurl,
+
+ ));
+ }
+ }
+}
diff --git a/Zotlabs/Widget/Appcloud.php b/Zotlabs/Widget/Appcloud.php
new file mode 100644
index 000000000..2a4671eee
--- /dev/null
+++ b/Zotlabs/Widget/Appcloud.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Appcloud {
+
+ function widget($arr) {
+ if(! local_channel())
+ return '';
+ return app_tagblock(z_root() . '/apps');
+ }
+}
+
diff --git a/Zotlabs/Widget/Archive.php b/Zotlabs/Widget/Archive.php
new file mode 100644
index 000000000..c151ca563
--- /dev/null
+++ b/Zotlabs/Widget/Archive.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+
+class Archive {
+
+ function widget($arr) {
+
+ $o = '';
+
+ if(! \App::$profile_uid) {
+ return '';
+ }
+
+ $uid = \App::$profile_uid;
+
+ if(! feature_enabled($uid,'archives'))
+ return '';
+
+ if(! perm_is_allowed($uid,get_observer_hash(),'view_stream'))
+ return '';
+
+ $wall = ((array_key_exists('wall', $arr)) ? intval($arr['wall']) : 0);
+ $style = ((array_key_exists('style', $arr)) ? $arr['style'] : 'select');
+ $showend = ((get_pconfig($uid,'system','archive_show_end_date')) ? true : false);
+ $mindate = get_pconfig($uid,'system','archive_mindate');
+ $visible_years = get_pconfig($uid,'system','archive_visible_years');
+ if(! $visible_years)
+ $visible_years = 5;
+
+ $url = z_root() . '/' . \App::$cmd;
+
+ $ret = list_post_dates($uid,$wall,$mindate);
+
+ if(! count($ret))
+ return '';
+
+ $cutoff_year = intval(datetime_convert('',date_default_timezone_get(),'now','Y')) - $visible_years;
+ $cutoff = ((array_key_exists($cutoff_year,$ret))? true : false);
+
+ $o = replace_macros(get_markup_template('posted_date_widget.tpl'),array(
+ '$title' => t('Archives'),
+ '$size' => $visible_years,
+ '$cutoff_year' => $cutoff_year,
+ '$cutoff' => $cutoff,
+ '$url' => $url,
+ '$style' => $style,
+ '$showend' => $showend,
+ '$dates' => $ret
+ ));
+ return $o;
+ }
+}
+
diff --git a/Zotlabs/Widget/Bookmarkedchats.php b/Zotlabs/Widget/Bookmarkedchats.php
new file mode 100644
index 000000000..d64bbdb4b
--- /dev/null
+++ b/Zotlabs/Widget/Bookmarkedchats.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Bookmarkedchats {
+
+ function widget($arr) {
+
+ if(! feature_enabled(\App::$profile['profile_uid'],'ajaxchat'))
+ return '';
+
+ $h = get_observer_hash();
+ if(! $h)
+ return;
+ $r = q("select xchat_url, xchat_desc from xchat where xchat_xchan = '%s' order by xchat_desc",
+ dbesc($h)
+ );
+ if($r) {
+ for($x = 0; $x < count($r); $x ++) {
+ $r[$x]['xchat_url'] = zid($r[$x]['xchat_url']);
+ }
+ }
+ return replace_macros(get_markup_template('bookmarkedchats.tpl'),array(
+ '$header' => t('Bookmarked Chatrooms'),
+ '$rooms' => $r
+ ));
+ }
+}
diff --git a/Zotlabs/Widget/Catcloud_wall.php b/Zotlabs/Widget/Catcloud_wall.php
new file mode 100644
index 000000000..3795987cc
--- /dev/null
+++ b/Zotlabs/Widget/Catcloud_wall.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Catcloud_wall {
+
+ function widget($arr) {
+
+ if((! \App::$profile['profile_uid']) || (! \App::$profile['channel_hash']))
+ return '';
+ if(! perm_is_allowed(\App::$profile['profile_uid'], get_observer_hash(), 'view_stream'))
+ return '';
+
+ $limit = ((array_key_exists('limit',$arr)) ? intval($arr['limit']) : 50);
+
+ return catblock(\App::$profile['profile_uid'], $limit, '', \App::$profile['channel_hash'], 'wall');
+ }
+
+}
diff --git a/Zotlabs/Widget/Categories.php b/Zotlabs/Widget/Categories.php
new file mode 100644
index 000000000..d1dcfda93
--- /dev/null
+++ b/Zotlabs/Widget/Categories.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/contact_widgets.php');
+
+class Categories {
+
+ function widget($arr) {
+
+ if((! \App::$profile['profile_uid'])
+ || (! perm_is_allowed(\App::$profile['profile_uid'],get_observer_hash(),'view_stream'))) {
+ return '';
+ }
+
+ $cat = ((x($_REQUEST,'cat')) ? htmlspecialchars($_REQUEST['cat'],ENT_COMPAT,'UTF-8') : '');
+ $srchurl = \App::$query_string;
+ $srchurl = rtrim(preg_replace('/cat\=[^\&].*?(\&|$)/is','',$srchurl),'&');
+ $srchurl = str_replace(array('?f=','&f='),array('',''),$srchurl);
+
+ return categories_widget($srchurl, $cat);
+ }
+}
diff --git a/Zotlabs/Widget/Chatroom_list.php b/Zotlabs/Widget/Chatroom_list.php
new file mode 100644
index 000000000..e2aad0e05
--- /dev/null
+++ b/Zotlabs/Widget/Chatroom_list.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Chatroom_list {
+
+ function widget($arr) {
+
+ if(! \App::$profile)
+ return '';
+
+ $r = \Zotlabs\Lib\Chatroom::roomlist(\App::$profile['profile_uid']);
+
+ if($r) {
+ return replace_macros(get_markup_template('chatroomlist.tpl'), array(
+ '$header' => t('Chatrooms'),
+ '$baseurl' => z_root(),
+ '$nickname' => \App::$profile['channel_address'],
+ '$items' => $r,
+ '$overview' => t('Overview')
+ ));
+ }
+ }
+}
diff --git a/Zotlabs/Widget/Chatroom_members.php b/Zotlabs/Widget/Chatroom_members.php
new file mode 100644
index 000000000..8ed77fb3c
--- /dev/null
+++ b/Zotlabs/Widget/Chatroom_members.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Chatroom_members {
+
+ // The actual contents are filled in via AJAX
+
+ function widget() {
+ return replace_macros(get_markup_template('chatroom_members.tpl'), array(
+ '$header' => t('Chat Members')
+ ));
+ }
+
+}
diff --git a/Zotlabs/Widget/Clock.php b/Zotlabs/Widget/Clock.php
new file mode 100644
index 000000000..b63b5f748
--- /dev/null
+++ b/Zotlabs/Widget/Clock.php
@@ -0,0 +1,63 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Clock {
+
+ function widget($arr) {
+
+ $miltime = 0;
+ if(isset($arr['military']) && $arr['military'])
+ $miltime = 1;
+
+ $o = <<< EOT
+<div class="widget">
+<h3 class="clockface"></h3>
+<script>
+
+var timerID = null
+var timerRunning = false
+
+function stopclock(){
+ if(timerRunning)
+ clearTimeout(timerID)
+ timerRunning = false
+}
+
+function startclock(){
+ stopclock()
+ showtime()
+}
+
+function showtime(){
+ var now = new Date()
+ var hours = now.getHours()
+ var minutes = now.getMinutes()
+ var seconds = now.getSeconds()
+ var military = $miltime
+ var timeValue = ""
+ if(military)
+ timeValue = hours
+ else
+ timeValue = ((hours > 12) ? hours - 12 : hours)
+ timeValue += ((minutes < 10) ? ":0" : ":") + minutes
+// timeValue += ((seconds < 10) ? ":0" : ":") + seconds
+ if(! military)
+ timeValue += (hours >= 12) ? " P.M." : " A.M."
+ $('.clockface').html(timeValue)
+ timerID = setTimeout("showtime()",1000)
+ timerRunning = true
+}
+
+$(document).ready(function() {
+ startclock();
+});
+
+</script>
+</div>
+EOT;
+
+ return $o;
+ }
+}
+
diff --git a/Zotlabs/Widget/Collections.php b/Zotlabs/Widget/Collections.php
new file mode 100644
index 000000000..d2b29679a
--- /dev/null
+++ b/Zotlabs/Widget/Collections.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/group.php');
+
+class Collections {
+
+ function widget($args) {
+
+ $mode = ((array_key_exists('mode',$args)) ? $args['mode'] : 'conversation');
+ switch($mode) {
+ case 'conversation':
+ $every = argv(0);
+ $each = argv(0);
+ $edit = true;
+ $current = $_REQUEST['gid'];
+ $abook_id = 0;
+ $wmode = 0;
+ break;
+ case 'connections':
+ $every = 'connections';
+ $each = 'group';
+ $edit = true;
+ $current = $_REQUEST['gid'];
+ $abook_id = 0;
+ $wmode = 0;
+ case 'groups':
+ $every = 'connections';
+ $each = argv(0);
+ $edit = false;
+ $current = intval(argv(1));
+ $abook_id = 0;
+ $wmode = 1;
+ break;
+ case 'abook':
+ $every = 'connections';
+ $each = 'group';
+ $edit = false;
+ $current = 0;
+ $abook_id = \App::$poi['abook_xchan'];
+ $wmode = 1;
+ break;
+ default:
+ return '';
+ break;
+ }
+
+ return group_side($every, $each, $edit, $current, $abook_id, $wmode);
+ }
+}
diff --git a/Zotlabs/Widget/Conversations.php b/Zotlabs/Widget/Conversations.php
new file mode 100644
index 000000000..c1f1eff16
--- /dev/null
+++ b/Zotlabs/Widget/Conversations.php
@@ -0,0 +1,74 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Conversations {
+
+ function widget($arr) {
+
+ if (! local_channel())
+ return;
+
+ 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, \App::$pager['start'], \App::$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'], 'c'),
+ '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
+ ));
+
+ }
+ return $o;
+ }
+} \ No newline at end of file
diff --git a/Zotlabs/Widget/Cover_photo.php b/Zotlabs/Widget/Cover_photo.php
new file mode 100644
index 000000000..d2eb1be92
--- /dev/null
+++ b/Zotlabs/Widget/Cover_photo.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Cover_photo {
+
+ function widget($arr) {
+
+ require_once('include/channel.php');
+ $o = '';
+
+ if(\App::$module == 'channel' && $_REQUEST['mid'])
+ return '';
+
+ $channel_id = 0;
+ if(array_key_exists('channel_id', $arr) && intval($arr['channel_id']))
+ $channel_id = intval($arr['channel_id']);
+ if(! $channel_id)
+ $channel_id = \App::$profile_uid;
+ if(! $channel_id)
+ return '';
+
+ $channel = channelx_by_n($channel_id);
+
+ if(array_key_exists('style', $arr) && isset($arr['style']))
+ $style = $arr['style'];
+ else
+ $style = 'width:100%; height: auto;';
+
+ // ensure they can't sneak in an eval(js) function
+
+ if(strpbrk($style,'(\'"<>') !== false)
+ $style = '';
+
+ if(array_key_exists('title', $arr) && isset($arr['title']))
+ $title = $arr['title'];
+ else
+ $title = $channel['channel_name'];
+
+ if(array_key_exists('subtitle', $arr) && isset($arr['subtitle']))
+ $subtitle = $arr['subtitle'];
+ else
+ $subtitle = str_replace('@','&#x40;',$channel['xchan_addr']);
+
+ $c = get_cover_photo($channel_id,'html');
+
+ if($c) {
+ $photo_html = (($style) ? str_replace('alt=',' style="' . $style . '" alt=',$c) : $c);
+
+ $o = replace_macros(get_markup_template('cover_photo_widget.tpl'),array(
+ '$photo_html' => $photo_html,
+ '$title' => $title,
+ '$subtitle' => $subtitle,
+ '$hovertitle' => t('Click to show more'),
+ ));
+ }
+ return $o;
+ }
+}
diff --git a/Zotlabs/Widget/Design_tools.php b/Zotlabs/Widget/Design_tools.php
new file mode 100644
index 000000000..8ab6a235d
--- /dev/null
+++ b/Zotlabs/Widget/Design_tools.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Design_tools {
+
+ function widget($arr) {
+
+ // mod menu doesn't load a profile. For any modules which load a profile, check it.
+ // otherwise local_channel() is sufficient for permissions.
+
+ if(\App::$profile['profile_uid'])
+ if((\App::$profile['profile_uid'] != local_channel()) && (! \App::$is_sys))
+ return '';
+
+ if(! local_channel())
+ return '';
+
+ return design_tools();
+ }
+} \ No newline at end of file
diff --git a/Zotlabs/Widget/Dirsort.php b/Zotlabs/Widget/Dirsort.php
new file mode 100644
index 000000000..e75a00e50
--- /dev/null
+++ b/Zotlabs/Widget/Dirsort.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/dir_fns.php');
+
+class Dirsort {
+ function widget($arr) {
+ return dir_sort_links();
+ }
+}
diff --git a/Zotlabs/Widget/Dirtags.php b/Zotlabs/Widget/Dirtags.php
new file mode 100644
index 000000000..f211d5942
--- /dev/null
+++ b/Zotlabs/Widget/Dirtags.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/dir_fns.php');
+
+class Dirtags {
+
+ function widget($arr) {
+ return dir_tagblock(z_root() . '/directory', null);
+ }
+
+}
diff --git a/Zotlabs/Widget/Eventstools.php b/Zotlabs/Widget/Eventstools.php
new file mode 100644
index 000000000..7efd3f72e
--- /dev/null
+++ b/Zotlabs/Widget/Eventstools.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Eventstools {
+
+ function widget($arr) {
+
+ if(! local_channel())
+ return;
+
+ return replace_macros(get_markup_template('events_tools_side.tpl'), array(
+ '$title' => t('Events Tools'),
+ '$export' => t('Export Calendar'),
+ '$import' => t('Import Calendar'),
+ '$submit' => t('Submit')
+ ));
+ }
+}
diff --git a/Zotlabs/Widget/Filer.php b/Zotlabs/Widget/Filer.php
new file mode 100644
index 000000000..5d6f96a87
--- /dev/null
+++ b/Zotlabs/Widget/Filer.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/contact_widgets.php');
+
+class Filer {
+
+ function widget($arr) {
+ if(! local_channel())
+ return '';
+
+
+ $selected = ((x($_REQUEST,'file')) ? $_REQUEST['file'] : '');
+
+ $terms = array();
+ $r = q("select distinct term from term where uid = %d and ttype = %d order by term asc",
+ intval(local_channel()),
+ intval(TERM_FILE)
+ );
+ if(! $r)
+ return;
+
+ foreach($r as $rr)
+ $terms[] = array('name' => $rr['term'], 'selected' => (($selected == $rr['term']) ? 'selected' : ''));
+
+ return replace_macros(get_markup_template('fileas_widget.tpl'),array(
+ '$title' => t('Saved Folders'),
+ '$desc' => '',
+ '$sel_all' => (($selected == '') ? 'selected' : ''),
+ '$all' => t('Everything'),
+ '$terms' => $terms,
+ '$base' => z_root() . '/' . \App::$cmd
+ ));
+ }
+}
diff --git a/Zotlabs/Widget/Findpeople.php b/Zotlabs/Widget/Findpeople.php
new file mode 100644
index 000000000..f450b96ae
--- /dev/null
+++ b/Zotlabs/Widget/Findpeople.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/contact_widgets.php');
+
+class Findpeople {
+ function widget($arr) {
+ return findpeople_widget();
+ }
+}
+
diff --git a/Zotlabs/Widget/Follow.php b/Zotlabs/Widget/Follow.php
new file mode 100644
index 000000000..c4aecc8e1
--- /dev/null
+++ b/Zotlabs/Widget/Follow.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+
+class Follow {
+
+ function widget($args) {
+ if(! local_channel())
+ return '';
+
+ $uid = \App::$channel['channel_id'];
+ $r = q("select count(*) as total from abook where abook_channel = %d and abook_self = 0 ",
+ intval($uid)
+ );
+
+ if($r)
+ $total_channels = $r[0]['total'];
+
+ $limit = service_class_fetch($uid,'total_channels');
+ if($limit !== false) {
+ $abook_usage_message = sprintf( t("You have %1$.0f of %2$.0f allowed connections."), $total_channels, $limit);
+ }
+ else {
+ $abook_usage_message = '';
+ }
+
+ return replace_macros(get_markup_template('follow.tpl'),array(
+ '$connect' => t('Add New Connection'),
+ '$desc' => t('Enter channel address'),
+ '$hint' => t('Examples: bob@example.com, https://example.com/barbara'),
+ '$follow' => t('Connect'),
+ '$abook_usage_message' => $abook_usage_message
+ ));
+ }
+}
+
diff --git a/Zotlabs/Widget/Forums.php b/Zotlabs/Widget/Forums.php
new file mode 100644
index 000000000..5f04a9fcc
--- /dev/null
+++ b/Zotlabs/Widget/Forums.php
@@ -0,0 +1,97 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Forums {
+
+ function widget($arr) {
+
+ if(! local_channel())
+ return '';
+
+ $o = '';
+
+ if(is_array($arr) && array_key_exists('limit',$arr))
+ $limit = " limit " . intval($limit) . " ";
+ else
+ $limit = '';
+
+ $unseen = 0;
+ if(is_array($arr) && array_key_exists('unseen',$arr) && intval($arr['unseen']))
+ $unseen = 1;
+
+ $perms_sql = item_permissions_sql(local_channel()) . item_normal();
+
+ $xf = false;
+
+ $x1 = q("select xchan from abconfig where chan = %d and cat = 'their_perms' and k = 'send_stream' and v = '0'",
+ intval(local_channel())
+ );
+ if($x1) {
+ $xc = ids_to_querystr($x1,'xchan',true);
+ $x2 = q("select xchan from abconfig where chan = %d and cat = 'their_perms' and k = 'tag_deliver' and v = '1' and xchan in (" . $xc . ") ",
+ intval(local_channel())
+ );
+ if($x2)
+ $xf = ids_to_querystr($x2,'xchan',true);
+ }
+
+ $sql_extra = (($xf) ? " and ( xchan_hash in (" . $xf . ") or xchan_pubforum = 1 ) " : " and xchan_pubforum = 1 ");
+
+ $r1 = q("select abook_id, xchan_hash, xchan_name, xchan_url, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash where xchan_deleted = 0 and abook_channel = %d $sql_extra order by xchan_name $limit ",
+ intval(local_channel())
+ );
+ if(! $r1)
+ return $o;
+
+ $str = '';
+
+ // Trying to cram all this into a single query with joins and the proper group by's is tough.
+ // There also should be a way to update this via ajax.
+
+ for($x = 0; $x < count($r1); $x ++) {
+ $r = q("select sum(item_unseen) as unseen from item where owner_xchan = '%s' and uid = %d and item_unseen = 1 $perms_sql ",
+ dbesc($r1[$x]['xchan_hash']),
+ intval(local_channel())
+ );
+ if($r)
+ $r1[$x]['unseen'] = $r[0]['unseen'];
+
+ /**
+ * @FIXME
+ * This SQL makes the counts correct when you get forum posts arriving from different routes/sources
+ * (like personal channels). However the network query for these posts doesn't yet include this
+ * correction and it makes the SQL for that query pretty hairy so this is left as a future exercise.
+ * It may make more sense in that query to look for the mention in the body rather than another join,
+ * but that makes it very inefficient.
+ *
+ $r = q("select sum(item_unseen) as unseen from item left join term on oid = id where otype = %d and owner_xchan != '%s' and item.uid = %d and url = '%s' and ttype = %d $perms_sql ",
+ intval(TERM_OBJ_POST),
+ dbesc($r1[$x]['xchan_hash']),
+ intval(local_channel()),
+ dbesc($r1[$x]['xchan_url']),
+ intval(TERM_MENTION)
+ );
+ if($r)
+ $r1[$x]['unseen'] = ((array_key_exists('unseen',$r1[$x])) ? $r1[$x]['unseen'] + $r[0]['unseen'] : $r[0]['unseen']);
+ *
+ * end @FIXME
+ */
+
+ }
+
+ if($r1) {
+ $o .= '<div class="widget">';
+ $o .= '<h3>' . t('Forums') . '</h3><ul class="nav nav-pills nav-stacked">';
+
+ foreach($r1 as $rr) {
+ if($unseen && (! intval($rr['unseen'])))
+ continue;
+ $o .= '<li><a href="network?f=&pf=1&cid=' . $rr['abook_id'] . '" ><span class="badge pull-right">' . ((intval($rr['unseen'])) ? intval($rr['unseen']) : '') . '</span><img src="' . $rr['xchan_photo_s'] . '" style="width: 16px; height: 16px;" /> ' . $rr['xchan_name'] . '</a></li>';
+ }
+ $o .= '</ul></div>';
+ }
+ return $o;
+
+ }
+}
diff --git a/Zotlabs/Widget/Fullprofile.php b/Zotlabs/Widget/Fullprofile.php
new file mode 100644
index 000000000..d7340ef40
--- /dev/null
+++ b/Zotlabs/Widget/Fullprofile.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Fullprofile {
+
+ function widget($arr) {
+
+ if(! \App::$profile['profile_uid'])
+ return;
+
+ $block = observer_prohibited();
+
+ return profile_sidebar(\App::$profile, $block);
+ }
+}
diff --git a/Zotlabs/Widget/Helpindex.php b/Zotlabs/Widget/Helpindex.php
new file mode 100644
index 000000000..62cecce1f
--- /dev/null
+++ b/Zotlabs/Widget/Helpindex.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Helpindex {
+
+ function widget($arr) {
+
+ $o .= '<div class="widget">';
+
+ $level_0 = get_help_content('sitetoc');
+ if(! $level_0)
+ $level_0 = get_help_content('toc');
+
+ $level_0 = preg_replace('/\<ul(.*?)\>/','<ul class="nav nav-pills nav-stacked">',$level_0);
+
+ $levels = array();
+
+
+ if(argc() > 2) {
+ $path = '';
+ for($x = 1; $x < argc(); $x ++) {
+ $path .= argv($x) . '/';
+ $y = get_help_content($path . 'sitetoc');
+ if(! $y)
+ $y = get_help_content($path . 'toc');
+ if($y)
+ $levels[] = preg_replace('/\<ul(.*?)\>/','<ul class="nav nav-pills nav-stacked">',$y);
+ }
+ }
+
+ if($level_0)
+ $o .= $level_0;
+ if($levels) {
+ foreach($levels as $l) {
+ $o .= '<br /><br />';
+ $o .= $l;
+ }
+ }
+
+ $o .= '</div>';
+
+ return $o;
+ }
+}
diff --git a/Zotlabs/Widget/Item.php b/Zotlabs/Widget/Item.php
new file mode 100644
index 000000000..273d5649c
--- /dev/null
+++ b/Zotlabs/Widget/Item.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/security.php');
+
+class Item {
+
+ function widget($arr) {
+
+ $channel_id = 0;
+ if(array_key_exists('channel_id',$arr) && intval($arr['channel_id']))
+ $channel_id = intval($arr['channel_id']);
+ if(! $channel_id)
+ $channel_id = \App::$profile_uid;
+ if(! $channel_id)
+ return '';
+
+
+ if((! $arr['mid']) && (! $arr['title']))
+ return '';
+
+ if(! perm_is_allowed($channel_id, get_observer_hash(), 'view_pages'))
+ return '';
+
+ $sql_extra = item_permissions_sql($channel_id);
+
+ if($arr['title']) {
+ $r = q("select item.* from item left join iconfig on item.id = iconfig.iid
+ where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s'
+ and iconfig.k = 'WEBPAGE' and item_type = %d $sql_options $revision limit 1",
+ intval($channel_id),
+ dbesc($arr['title']),
+ intval(ITEM_TYPE_WEBPAGE)
+ );
+ }
+ else {
+ $r = q("select * from item where mid = '%s' and uid = %d and item_type = "
+ . intval(ITEM_TYPE_WEBPAGE) . " $sql_extra limit 1",
+ dbesc($arr['mid']),
+ intval($channel_id)
+ );
+ }
+
+ if(! $r)
+ return '';
+
+ xchan_query($r);
+ $r = fetch_post_tags($r, true);
+
+ $o = prepare_page($r[0]);
+ return $o;
+ }
+}
diff --git a/Zotlabs/Widget/Mailmenu.php b/Zotlabs/Widget/Mailmenu.php
new file mode 100644
index 000000000..512f7d9c0
--- /dev/null
+++ b/Zotlabs/Widget/Mailmenu.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Mailmenu {
+
+ function widget($arr) {
+
+ if (! local_channel())
+ return;
+
+ return replace_macros(get_markup_template('message_side.tpl'), array(
+ '$title' => t('Private Mail Menu'),
+ '$combined' => array(
+ 'label' => t('Combined View'),
+ 'url' => z_root() . '/mail/combined',
+ 'sel' => (argv(1) == 'combined'),
+ ),
+ '$inbox' => array(
+ 'label' => t('Inbox'),
+ 'url' => z_root() . '/mail/inbox',
+ 'sel' => (argv(1) == 'inbox'),
+ ),
+ '$outbox' => array(
+ 'label' => t('Outbox'),
+ 'url' => z_root() . '/mail/outbox',
+ 'sel' => (argv(1) == 'outbox'),
+ ),
+ '$new' => array(
+ 'label' => t('New Message'),
+ 'url' => z_root() . '/mail/new',
+ 'sel'=> (argv(1) == 'new'),
+ )
+ ));
+ }
+}
diff --git a/Zotlabs/Widget/Menu_preview.php b/Zotlabs/Widget/Menu_preview.php
new file mode 100644
index 000000000..51218f6cf
--- /dev/null
+++ b/Zotlabs/Widget/Menu_preview.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/menu.php');
+
+class Menu_preview {
+
+ function widget($arr) {
+ if(! \App::$data['menu_item'])
+ return;
+
+ return menu_render(\App::$data['menu_item']);
+ }
+
+}
diff --git a/Zotlabs/Widget/Notes.php b/Zotlabs/Widget/Notes.php
new file mode 100644
index 000000000..5c83a550f
--- /dev/null
+++ b/Zotlabs/Widget/Notes.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Notes {
+
+ function widget($arr) {
+ if(! local_channel())
+ return '';
+ if(! feature_enabled(local_channel(),'private_notes'))
+ return '';
+
+ $text = get_pconfig(local_channel(),'notes','text');
+
+ $o = replace_macros(get_markup_template('notes.tpl'), array(
+ '$banner' => t('Notes'),
+ '$text' => $text,
+ '$save' => t('Save'),
+ ));
+
+ return $o;
+ }
+}
diff --git a/Zotlabs/Widget/Photo.php b/Zotlabs/Widget/Photo.php
new file mode 100644
index 000000000..10031f028
--- /dev/null
+++ b/Zotlabs/Widget/Photo.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+
+class Photo {
+
+
+ /**
+ * @brief Widget to display a single photo.
+ *
+ * @param array $arr associative array with
+ * * \e string \b src URL of photo; URL must be an http or https URL
+ * * \e boolean \b zrl use zid in URL
+ * * \e string \b style CSS string
+ *
+ * @return string with parsed HTML
+ */
+
+ function widget($arr) {
+
+ $style = $zrl = false;
+
+ if(array_key_exists('src', $arr) && isset($arr['src']))
+ $url = $arr['src'];
+
+ if(strpos($url, 'http') !== 0)
+ return '';
+
+ if(array_key_exists('style', $arr) && isset($arr['style']))
+ $style = $arr['style'];
+
+ // ensure they can't sneak in an eval(js) function
+
+ if(strpbrk($style, '(\'"<>' ) !== false)
+ $style = '';
+
+ if(array_key_exists('zrl', $arr) && isset($arr['zrl']))
+ $zrl = (($arr['zrl']) ? true : false);
+
+ if($zrl)
+ $url = zid($url);
+
+ $o = '<div class="widget">';
+
+ $o .= '<img ' . (($zrl) ? ' class="zrl" ' : '')
+ . (($style) ? ' style="' . $style . '"' : '')
+ . ' src="' . $url . '" alt="' . t('photo/image') . '">';
+
+ $o .= '</div>';
+
+ return $o;
+ }
+}
+
diff --git a/Zotlabs/Widget/Photo_albums.php b/Zotlabs/Widget/Photo_albums.php
new file mode 100644
index 000000000..2a746e492
--- /dev/null
+++ b/Zotlabs/Widget/Photo_albums.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/photos.php');
+
+class Photo_albums {
+
+ function widget($arr) {
+
+ if(! \App::$profile['profile_uid'])
+ return '';
+
+ $channelx = channelx_by_n(\App::$profile['profile_uid']);
+
+ if((! $channelx) || (! perm_is_allowed(\App::$profile['profile_uid'], get_observer_hash(), 'view_storage')))
+ return '';
+
+ $sortkey = ((array_key_exists('sortkey',$arr)) ? $arr['sortkey'] : 'album');
+ $direction = ((array_key_exists('direction',$arr)) ? $arr['direction'] : 'asc');
+
+ return photos_album_widget($channelx, \App::get_observer(),$sortkey,$direction);
+ }
+}
+
diff --git a/Zotlabs/Widget/Photo_rand.php b/Zotlabs/Widget/Photo_rand.php
new file mode 100644
index 000000000..af80a3b9f
--- /dev/null
+++ b/Zotlabs/Widget/Photo_rand.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/photos.php');
+
+class Photo_rand {
+
+ function widget($arr) {
+
+ $style = false;
+
+ if(array_key_exists('album', $arr) && isset($arr['album']))
+ $album = $arr['album'];
+ else
+ $album = '';
+
+ $channel_id = 0;
+ if(array_key_exists('channel_id', $arr) && intval($arr['channel_id']))
+ $channel_id = intval($arr['channel_id']);
+ if(! $channel_id)
+ $channel_id = \App::$profile_uid;
+ if(! $channel_id)
+ return '';
+
+ $scale = ((array_key_exists('scale',$arr)) ? intval($arr['scale']) : 0);
+
+ $ret = photos_list_photos(array('channel_id' => $channel_id),\App::get_observer(),$album);
+
+ $filtered = array();
+ if($ret['success'] && $ret['photos'])
+ foreach($ret['photos'] as $p)
+ if($p['imgscale'] == $scale)
+ $filtered[] = $p['src'];
+
+ if($filtered) {
+ $e = mt_rand(0, count($filtered) - 1);
+ $url = $filtered[$e];
+ }
+
+ if(strpos($url, 'http') !== 0)
+ return '';
+
+ if(array_key_exists('style', $arr) && isset($arr['style']))
+ $style = $arr['style'];
+
+ // ensure they can't sneak in an eval(js) function
+
+ if(strpos($style,'(') !== false)
+ return '';
+
+ $url = zid($url);
+
+ $o = '<div class="widget">';
+
+ $o .= '<img class="zrl" '
+ . (($style) ? ' style="' . $style . '"' : '')
+ . ' src="' . $url . '" alt="' . t('photo/image') . '">';
+
+ $o .= '</div>';
+
+ return $o;
+ }
+}
+
+
diff --git a/Zotlabs/Widget/Profile.php b/Zotlabs/Widget/Profile.php
new file mode 100644
index 000000000..bffd910b6
--- /dev/null
+++ b/Zotlabs/Widget/Profile.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+
+class Profile {
+
+ function widget($args) {
+ $block = observer_prohibited();
+ return profile_sidebar(\App::$profile, $block, true);
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Widget/Pubsites.php b/Zotlabs/Widget/Pubsites.php
new file mode 100644
index 000000000..958ba68c2
--- /dev/null
+++ b/Zotlabs/Widget/Pubsites.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Pubsites {
+
+ // used by site ratings pages to provide a return link
+
+ function widget($arr) {
+ if(\App::$poi)
+ return;
+ return '<div class="widget"><ul class="nav nav-pills"><li><a href="pubsites">' . t('Public Hubs') . '</a></li></ul></div>';
+ }
+}
+
+
diff --git a/Zotlabs/Widget/Random_block.php b/Zotlabs/Widget/Random_block.php
new file mode 100644
index 000000000..465a51f97
--- /dev/null
+++ b/Zotlabs/Widget/Random_block.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Random_block {
+
+ function widget($arr) {
+
+ $channel_id = 0;
+ if(array_key_exists('channel_id',$arr) && intval($arr['channel_id']))
+ $channel_id = intval($arr['channel_id']);
+ if(! $channel_id)
+ $channel_id = \App::$profile_uid;
+ if(! $channel_id)
+ return '';
+
+ if(array_key_exists('contains',$arr))
+ $contains = $arr['contains'];
+
+ $o = '';
+
+ require_once('include/security.php');
+ $sql_options = item_permissions_sql($channel_id);
+
+ $randfunc = db_getfunc('RAND');
+
+ $r = q("select item.* from item left join iconfig on item.id = iconfig.iid
+ where item.uid = %d and iconfig.cat = 'system' and iconfig.v like '%s' and iconfig.k = 'BUILDBLOCK' and
+ item_type = %d $sql_options order by $randfunc limit 1",
+ intval($channel_id),
+ dbesc('%' . $contains . '%'),
+ intval(ITEM_TYPE_BLOCK)
+ );
+
+ if($r) {
+ $o = '<div class="widget bblock">';
+ if($r[0]['title'])
+ $o .= '<h3>' . $r[0]['title'] . '</h3>';
+
+ $o .= prepare_text($r[0]['body'],$r[0]['mimetype']);
+ $o .= '</div>';
+ }
+
+ return $o;
+ }
+}
diff --git a/Zotlabs/Widget/Rating.php b/Zotlabs/Widget/Rating.php
new file mode 100644
index 000000000..5e09f457b
--- /dev/null
+++ b/Zotlabs/Widget/Rating.php
@@ -0,0 +1,67 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Rating {
+
+ function widget($arr) {
+
+
+ $rating_enabled = get_config('system','rating_enabled');
+ if(! $rating_enabled) {
+ return;
+ }
+
+ if($arr['target'])
+ $hash = $arr['target'];
+ else
+ $hash = \App::$poi['xchan_hash'];
+
+ if(! $hash)
+ return;
+
+ $url = '';
+ $remote = false;
+
+ if(remote_channel() && ! local_channel()) {
+ $ob = \App::get_observer();
+ if($ob && $ob['xchan_url']) {
+ $p = parse_url($ob['xchan_url']);
+ if($p) {
+ $url = $p['scheme'] . '://' . $p['host'] . (($p['port']) ? ':' . $p['port'] : '');
+ $url .= '/rate?f=&target=' . urlencode($hash);
+ }
+ $remote = true;
+ }
+ }
+
+ $self = false;
+
+ if(local_channel()) {
+ $channel = \App::get_channel();
+
+ if($hash == $channel['channel_hash'])
+ $self = true;
+
+ head_add_js('ratings.js');
+ }
+
+
+ $o = '<div class="widget">';
+ $o .= '<h3>' . t('Rating Tools') . '</h3>';
+
+ if((($remote) || (local_channel())) && (! $self)) {
+ if($remote)
+ $o .= '<a class="btn btn-block btn-primary btn-sm" href="' . $url . '"><i class="fa fa-pencil"></i> ' . t('Rate Me') . '</a>';
+ else
+ $o .= '<div class="btn btn-block btn-primary btn-sm" onclick="doRatings(\'' . $hash . '\'); return false;"><i class="fa fa-pencil"></i> ' . t('Rate Me') . '</div>';
+ }
+
+ $o .= '<a class="btn btn-block btn-default btn-sm" href="ratings/' . $hash . '"><i class="fa fa-eye"></i> ' . t('View Ratings') . '</a>';
+ $o .= '</div>';
+
+ return $o;
+
+ }
+}
+
diff --git a/Zotlabs/Widget/Savedsearch.php b/Zotlabs/Widget/Savedsearch.php
new file mode 100644
index 000000000..378c27139
--- /dev/null
+++ b/Zotlabs/Widget/Savedsearch.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Savedsearch {
+
+ function widget($arr) {
+
+ if((! local_channel()) || (! feature_enabled(local_channel(),'savedsearch')))
+ return '';
+
+ $search = ((x($_GET,'netsearch')) ? $_GET['netsearch'] : '');
+ if(! $search)
+ $search = ((x($_GET,'search')) ? $_GET['search'] : '');
+
+ if(x($_GET,'searchsave') && $search) {
+ $r = q("select * from term where uid = %d and ttype = %d and term = '%s' limit 1",
+ intval(local_channel()),
+ intval(TERM_SAVEDSEARCH),
+ dbesc($search)
+ );
+ if(! $r) {
+ q("insert into term ( uid,ttype,term ) values ( %d, %d, '%s') ",
+ intval(local_channel()),
+ intval(TERM_SAVEDSEARCH),
+ dbesc($search)
+ );
+ }
+ }
+
+ if(x($_GET,'searchremove') && $search) {
+ q("delete from term where uid = %d and ttype = %d and term = '%s'",
+ intval(local_channel()),
+ intval(TERM_SAVEDSEARCH),
+ dbesc($search)
+ );
+ $search = '';
+ }
+
+ $srchurl = \App::$query_string;
+
+ $srchurl = rtrim(preg_replace('/searchsave\=[^\&].*?(\&|$)/is','',$srchurl),'&');
+ $hasq = ((strpos($srchurl,'?') !== false) ? true : false);
+ $srchurl = rtrim(preg_replace('/searchremove\=[^\&].*?(\&|$)/is','',$srchurl),'&');
+
+ $srchurl = rtrim(preg_replace('/search\=[^\&].*?(\&|$)/is','',$srchurl),'&');
+ $srchurl = rtrim(preg_replace('/submit\=[^\&].*?(\&|$)/is','',$srchurl),'&');
+ $srchurl = str_replace(array('?f=','&f='),array('',''),$srchurl);
+
+
+ $hasq = ((strpos($srchurl,'?') !== false) ? true : false);
+ $hasamp = ((strpos($srchurl,'&') !== false) ? true : false);
+
+ if(($hasamp) && (! $hasq))
+ $srchurl = substr($srchurl,0,strpos($srchurl,'&')) . '?f=&' . substr($srchurl,strpos($srchurl,'&')+1);
+
+ $o = '';
+
+ $r = q("select tid,term from term WHERE uid = %d and ttype = %d ",
+ intval(local_channel()),
+ intval(TERM_SAVEDSEARCH)
+ );
+
+ $saved = array();
+
+ if(count($r)) {
+ foreach($r as $rr) {
+ $saved[] = array(
+ 'id' => $rr['tid'],
+ 'term' => $rr['term'],
+ 'dellink' => z_root() . '/' . $srchurl . (($hasq || $hasamp) ? '' : '?f=') . '&amp;searchremove=1&amp;search=' . urlencode($rr['term']),
+ 'srchlink' => z_root() . '/' . $srchurl . (($hasq || $hasamp) ? '' : '?f=') . '&amp;search=' . urlencode($rr['term']),
+ 'displayterm' => htmlspecialchars($rr['term'], ENT_COMPAT,'UTF-8'),
+ 'encodedterm' => urlencode($rr['term']),
+ 'delete' => t('Remove term'),
+ 'selected' => ($search==$rr['term']),
+ );
+ }
+ }
+
+ $tpl = get_markup_template("saved_searches.tpl");
+ $o = replace_macros($tpl, array(
+ '$title' => t('Saved Searches'),
+ '$add' => t('add'),
+ '$searchbox' => searchbox($search, 'netsearch-box', $srchurl . (($hasq) ? '' : '?f='), true),
+ '$saved' => $saved,
+ ));
+
+ return $o;
+ }
+}
diff --git a/Zotlabs/Widget/Settings_menu.php b/Zotlabs/Widget/Settings_menu.php
new file mode 100644
index 000000000..753390c23
--- /dev/null
+++ b/Zotlabs/Widget/Settings_menu.php
@@ -0,0 +1,137 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Settings_menu {
+
+ function widget($arr) {
+
+ if(! local_channel())
+ return;
+
+
+ $channel = \App::get_channel();
+
+ $abook_self_id = 0;
+
+ // Retrieve the 'self' address book entry for use in the auto-permissions link
+
+ $role = get_pconfig(local_channel(),'system','permissions_role');
+
+ $abk = q("select abook_id from abook where abook_channel = %d and abook_self = 1 limit 1",
+ intval(local_channel())
+ );
+ if($abk)
+ $abook_self_id = $abk[0]['abook_id'];
+
+ $x = q("select count(*) as total from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0 ",
+ dbesc($channel['channel_hash'])
+ );
+
+ $hublocs = (($x && $x[0]['total'] > 1) ? true : false);
+
+ $tabs = array(
+ array(
+ 'label' => t('Account settings'),
+ 'url' => z_root().'/settings/account',
+ 'selected' => ((argv(1) === 'account') ? 'active' : ''),
+ ),
+
+ array(
+ 'label' => t('Channel settings'),
+ 'url' => z_root().'/settings/channel',
+ 'selected' => ((argv(1) === 'channel') ? 'active' : ''),
+ ),
+
+ );
+
+ if(get_account_techlevel() > 0 && get_features()) {
+ $tabs[] = array(
+ 'label' => t('Additional features'),
+ 'url' => z_root().'/settings/features',
+ 'selected' => ((argv(1) === 'features') ? 'active' : ''),
+ );
+ }
+
+ $tabs[] = array(
+ 'label' => t('Feature/Addon settings'),
+ 'url' => z_root().'/settings/featured',
+ 'selected' => ((argv(1) === 'featured') ? 'active' : ''),
+ );
+
+ $tabs[] = array(
+ 'label' => t('Display settings'),
+ 'url' => z_root().'/settings/display',
+ 'selected' => ((argv(1) === 'display') ? 'active' : ''),
+ );
+
+ if($hublocs) {
+ $tabs[] = array(
+ 'label' => t('Manage locations'),
+ 'url' => z_root() . '/locs',
+ 'selected' => ((argv(1) === 'locs') ? 'active' : ''),
+ );
+ }
+
+ $tabs[] = array(
+ 'label' => t('Export channel'),
+ 'url' => z_root() . '/uexport',
+ 'selected' => ''
+ );
+
+ $tabs[] = array(
+ 'label' => t('Connected apps'),
+ 'url' => z_root() . '/settings/oauth',
+ 'selected' => ((argv(1) === 'oauth') ? 'active' : ''),
+ );
+
+ if(get_account_techlevel() > 2) {
+ $tabs[] = array(
+ 'label' => t('Guest Access Tokens'),
+ 'url' => z_root() . '/settings/tokens',
+ 'selected' => ((argv(1) === 'tokens') ? 'active' : ''),
+ );
+ }
+
+ if(feature_enabled(local_channel(),'permcats')) {
+ $tabs[] = array(
+ 'label' => t('Permission Groups'),
+ 'url' => z_root() . '/settings/permcats',
+ 'selected' => ((argv(1) === 'permcats') ? 'active' : ''),
+ );
+ }
+
+
+ if($role === false || $role === 'custom') {
+ $tabs[] = array(
+ 'label' => t('Connection Default Permissions'),
+ 'url' => z_root() . '/connedit/' . $abook_self_id,
+ 'selected' => ''
+ );
+ }
+
+ if(feature_enabled(local_channel(),'premium_channel')) {
+ $tabs[] = array(
+ 'label' => t('Premium Channel Settings'),
+ 'url' => z_root() . '/connect/' . $channel['channel_address'],
+ 'selected' => ''
+ );
+ }
+
+ if(feature_enabled(local_channel(),'channel_sources')) {
+ $tabs[] = array(
+ 'label' => t('Channel Sources'),
+ 'url' => z_root() . '/sources',
+ 'selected' => ''
+ );
+ }
+
+ $tabtpl = get_markup_template("generic_links_widget.tpl");
+ return replace_macros($tabtpl, array(
+ '$title' => t('Settings'),
+ '$class' => 'settings-widget',
+ '$items' => $tabs,
+ ));
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Widget/Shortprofile.php b/Zotlabs/Widget/Shortprofile.php
new file mode 100644
index 000000000..9c2a46e75
--- /dev/null
+++ b/Zotlabs/Widget/Shortprofile.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Shortprofile {
+
+ function widget($arr) {
+
+ if(! \App::$profile['profile_uid'])
+ return;
+
+ $block = observer_prohibited();
+
+ return profile_sidebar(\App::$profile, $block, true, true);
+ }
+
+}
+
diff --git a/Zotlabs/Widget/Sitesearch.php b/Zotlabs/Widget/Sitesearch.php
new file mode 100644
index 000000000..b3a25d76a
--- /dev/null
+++ b/Zotlabs/Widget/Sitesearch.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+
+class Sitesearch {
+
+ function widget($arr) {
+
+ $search = ((x($_GET,'search')) ? $_GET['search'] : '');
+
+ $srchurl = \App::$query_string;
+
+ $srchurl = rtrim(preg_replace('/search\=[^\&].*?(\&|$)/is','',$srchurl),'&');
+ $srchurl = rtrim(preg_replace('/submit\=[^\&].*?(\&|$)/is','',$srchurl),'&');
+ $srchurl = str_replace(array('?f=','&f='),array('',''),$srchurl);
+
+
+ $hasq = ((strpos($srchurl,'?') !== false) ? true : false);
+ $hasamp = ((strpos($srchurl,'&') !== false) ? true : false);
+
+ if(($hasamp) && (! $hasq))
+ $srchurl = substr($srchurl,0,strpos($srchurl,'&')) . '?f=&' . substr($srchurl,strpos($srchurl,'&')+1);
+
+ $o = '';
+
+ $saved = array();
+
+ $tpl = get_markup_template("sitesearch.tpl");
+ $o = replace_macros($tpl, array(
+ '$title' => t('Search'),
+ '$searchbox' => searchbox($search, 'netsearch-box', $srchurl . (($hasq) ? '' : '?f='), false),
+ '$saved' => $saved,
+ ));
+
+ return $o;
+ }
+}
diff --git a/Zotlabs/Widget/Suggestedchats.php b/Zotlabs/Widget/Suggestedchats.php
new file mode 100644
index 000000000..7df42944d
--- /dev/null
+++ b/Zotlabs/Widget/Suggestedchats.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Suggestedchats {
+
+ function widget($arr) {
+
+ if(! feature_enabled(\App::$profile['profile_uid'],'ajaxchat'))
+ return '';
+
+ // There are reports that this tool does not ever remove chatrooms on dead sites,
+ // and also will happily link to private chats which you cannot enter.
+ // For those reasons, it will be disabled until somebody decides it's worth
+ // fixing and comes up with a plan for doing so.
+
+ return '';
+
+ // probably should restrict this to your friends, but then the widget will only work
+ // if you are logged in locally.
+
+ $h = get_observer_hash();
+ if(! $h)
+ return;
+ $r = q("select xchat_url, xchat_desc, count(xchat_xchan) as total from xchat group by xchat_url, xchat_desc order by total desc, xchat_desc limit 24");
+ if($r) {
+ for($x = 0; $x < count($r); $x ++) {
+ $r[$x]['xchat_url'] = zid($r[$x]['xchat_url']);
+ }
+ }
+ return replace_macros(get_markup_template('bookmarkedchats.tpl'),array(
+ '$header' => t('Suggested Chatrooms'),
+ '$rooms' => $r
+ ));
+ }
+}
+
diff --git a/Zotlabs/Widget/Suggestions.php b/Zotlabs/Widget/Suggestions.php
new file mode 100644
index 000000000..5fb3d3e8b
--- /dev/null
+++ b/Zotlabs/Widget/Suggestions.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/socgraph.php');
+
+
+class Suggestions {
+
+ function widget($arr) {
+
+ if((! local_channel()) || (! feature_enabled(local_channel(),'suggest')))
+ return '';
+
+
+ $r = suggestion_query(local_channel(),get_observer_hash(),0,20);
+
+ if(! $r) {
+ return;
+ }
+
+ $arr = array();
+
+ // Get two random entries from the top 20 returned.
+ // We'll grab the first one and the one immediately following.
+ // This will throw some entropy intot he situation so you won't
+ // be looking at the same two mug shots every time the widget runs
+
+ $index = ((count($r) > 2) ? mt_rand(0,count($r) - 2) : 0);
+
+ for($x = $index; $x <= ($index+1); $x ++) {
+ $rr = $r[$x];
+ if(! $rr['xchan_url'])
+ break;
+
+ $connlnk = z_root() . '/follow/?url=' . $rr['xchan_addr'];
+
+ $arr[] = array(
+ 'url' => chanlink_url($rr['xchan_url']),
+ 'profile' => $rr['xchan_url'],
+ 'name' => $rr['xchan_name'],
+ 'photo' => $rr['xchan_photo_m'],
+ 'ignlnk' => z_root() . '/directory?ignore=' . $rr['xchan_hash'],
+ 'conntxt' => t('Connect'),
+ 'connlnk' => $connlnk,
+ 'ignore' => t('Ignore/Hide')
+ );
+ }
+
+ $o = replace_macros(get_markup_template('suggest_widget.tpl'),array(
+ '$title' => t('Suggestions'),
+ '$more' => t('See more...'),
+ '$entries' => $arr
+ ));
+
+ return $o;
+ }
+}
diff --git a/Zotlabs/Widget/Tagcloud.php b/Zotlabs/Widget/Tagcloud.php
new file mode 100644
index 000000000..cf7a4932e
--- /dev/null
+++ b/Zotlabs/Widget/Tagcloud.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+// @FIXME The problem with this widget is that we don't have a search function for webpages
+// that we can send the links to. Then we should also provide an option to search webpages
+// and conversations.
+
+class Tagcloud {
+
+ function widget($args) {
+
+ $o = '';
+ $uid = \App::$profile_uid;
+ $count = ((x($args,'count')) ? intval($args['count']) : 24);
+ $flags = 0;
+ $type = TERM_CATEGORY;
+
+ // @FIXME there exists no $authors variable
+ $r = tagadelic($uid, $count, $authors, $owner, $flags, ITEM_TYPE_WEBPAGE, $type);
+
+ // @FIXME this should use a template
+
+ if($r) {
+ $o = '<div class="tagblock widget"><h3>' . t('Categories') . '</h3><div class="tags" align="center">';
+ foreach($r as $rv) {
+ $o .= '<span class="tag' . $rv[2] . '">' . $rv[0] .' </span> ' . "\r\n";
+ }
+ $o .= '</div></div>';
+ }
+ return $o;
+ }
+}
diff --git a/Zotlabs/Widget/Tagcloud_wall.php b/Zotlabs/Widget/Tagcloud_wall.php
new file mode 100644
index 000000000..7cff6ce09
--- /dev/null
+++ b/Zotlabs/Widget/Tagcloud_wall.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Tagcloud_wall {
+
+ function widget($arr) {
+
+ if((! \App::$profile['profile_uid']) || (! \App::$profile['channel_hash']))
+ return '';
+ if(! perm_is_allowed(\App::$profile['profile_uid'], get_observer_hash(), 'view_stream'))
+ return '';
+
+ $limit = ((array_key_exists('limit', $arr)) ? intval($arr['limit']) : 50);
+ if(feature_enabled(\App::$profile['profile_uid'], 'tagadelic'))
+ return wtagblock(\App::$profile['profile_uid'], $limit, '', \App::$profile['channel_hash'], 'wall');
+
+ return '';
+ }
+}
diff --git a/Zotlabs/Widget/Tasklist.php b/Zotlabs/Widget/Tasklist.php
new file mode 100644
index 000000000..6f7a8aaed
--- /dev/null
+++ b/Zotlabs/Widget/Tasklist.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+require_once('include/event.php');
+
+class Tasklist {
+
+ function widget($arr) {
+
+ if (! local_channel())
+ return;
+
+ $o .= '<script>var tasksShowAll = 0; $(document).ready(function() { tasksFetch(); $("#tasklist-new-form").submit(function(event) { event.preventDefault(); $.post( "tasks/new", $("#tasklist-new-form").serialize(), function(data) { tasksFetch(); $("#tasklist-new-summary").val(""); } ); return false; } )});</script>';
+ $o .= '<script>function taskComplete(id) { $.post("tasks/complete/"+id, function(data) { tasksFetch();}); }
+ function tasksFetch() {
+ $.get("tasks/fetch" + ((tasksShowAll) ? "/all" : ""), function(data) {
+ $(".tasklist-tasks").html(data.html);
+ });
+ }
+ </script>';
+
+ $o .= '<div class="widget">' . '<h3>' . t('Tasks') . '</h3><div class="tasklist-tasks">';
+ $o .= '</div><form id="tasklist-new-form" action="" ><input id="tasklist-new-summary" type="text" name="summary" value="" /></form>';
+ $o .= '</div>';
+ return $o;
+
+ }
+}
+
diff --git a/Zotlabs/Widget/Vcard.php b/Zotlabs/Widget/Vcard.php
new file mode 100644
index 000000000..cab05dfdd
--- /dev/null
+++ b/Zotlabs/Widget/Vcard.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Vcard {
+
+ function widget($arr) {
+ return vcard_from_xchan('', \App::get_observer());
+ }
+
+}
+
diff --git a/Zotlabs/Widget/Website_portation_tools.php b/Zotlabs/Widget/Website_portation_tools.php
new file mode 100644
index 000000000..1cf3bb78a
--- /dev/null
+++ b/Zotlabs/Widget/Website_portation_tools.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+
+class Website_portation_tools {
+
+ function widget($arr) {
+
+ // mod menu doesn't load a profile. For any modules which load a profile, check it.
+ // otherwise local_channel() is sufficient for permissions.
+
+ if(\App::$profile['profile_uid'])
+ if((\App::$profile['profile_uid'] != local_channel()) && (! \App::$is_sys))
+ return '';
+
+ if(! local_channel())
+ return '';
+
+ return website_portation_tools();
+ }
+}
diff --git a/Zotlabs/Widget/Wiki_list.php b/Zotlabs/Widget/Wiki_list.php
new file mode 100644
index 000000000..62f32dbf0
--- /dev/null
+++ b/Zotlabs/Widget/Wiki_list.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Wiki_list {
+
+ function widget($arr) {
+
+ $channel = channelx_by_n(\App::$profile_uid);
+
+ $wikis = \Zotlabs\Lib\NativeWiki::listwikis($channel,get_observer_hash());
+
+ if($wikis) {
+ return replace_macros(get_markup_template('wikilist_widget.tpl'), array(
+ '$header' => t('Wiki List'),
+ '$channel' => $channel['channel_address'],
+ '$wikis' => $wikis['wikis']
+ ));
+ }
+ return '';
+ }
+
+}
diff --git a/Zotlabs/Widget/Wiki_page_history.php b/Zotlabs/Widget/Wiki_page_history.php
new file mode 100644
index 000000000..dcec9a037
--- /dev/null
+++ b/Zotlabs/Widget/Wiki_page_history.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Wiki_page_history {
+
+ function widget($arr) {
+
+ $pageUrlName = ((array_key_exists('pageUrlName', $arr)) ? $arr['pageUrlName'] : '');
+ $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
+
+ $pageHistory = \Zotlabs\Lib\NativeWikiPage::page_history([
+ 'channel_id' => \App::$profile_uid,
+ 'observer_hash' => get_observer_hash(),
+ 'resource_id' => $resource_id,
+ 'pageUrlName' => $pageUrlName
+ ]);
+
+ return replace_macros(get_markup_template('nwiki_page_history.tpl'), array(
+ '$pageHistory' => $pageHistory['history'],
+ '$permsWrite' => $arr['permsWrite'],
+ '$name_lbl' => t('Name'),
+ '$msg_label' => t('Message','wiki_history')
+ ));
+
+ }
+}
diff --git a/Zotlabs/Widget/Wiki_pages.php b/Zotlabs/Widget/Wiki_pages.php
new file mode 100644
index 000000000..f992b3f93
--- /dev/null
+++ b/Zotlabs/Widget/Wiki_pages.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+
+class Wiki_pages {
+
+ function widget($arr) {
+
+ $channelname = ((array_key_exists('channel',$arr)) ? $arr['channel'] : '');
+ $c = channelx_by_nick($channelname);
+
+ if(! $c)
+ $c = \App::get_channel();
+
+ if(! $c)
+ return '';
+
+ $wikiname = '';
+ if(array_key_exists('refresh', $arr)) {
+ $not_refresh = (($arr['refresh']=== true) ? false : true);
+ }
+ else {
+ $not_refresh = true;
+ }
+
+ $pages = array();
+ if(! array_key_exists('resource_id', $arr)) {
+ $hide = true;
+ }
+ else {
+ $p = \Zotlabs\Lib\NativeWikiPage::page_list($c['channel_id'],get_observer_hash(),$arr['resource_id']);
+
+ if($p['pages']) {
+ $pages = $p['pages'];
+ $w = $p['wiki'];
+ // Wiki item record is $w['wiki']
+ $wikiname = $w['urlName'];
+ if (!$wikiname) {
+ $wikiname = '';
+ }
+ }
+ }
+
+
+ $can_create = perm_is_allowed(\App::$profile['uid'],get_observer_hash(),'write_wiki');
+
+ $can_delete = ((local_channel() && (local_channel() == \App::$profile['uid'])) ? true : false);
+
+ return replace_macros(get_markup_template('wiki_page_list.tpl'), array(
+ '$hide' => $hide,
+ '$resource_id' => $arr['resource_id'],
+ '$not_refresh' => $not_refresh,
+ '$header' => t('Wiki Pages'),
+ '$channel' => $channelname,
+ '$wikiname' => $wikiname,
+ '$pages' => $pages,
+ '$canadd' => $can_create,
+ '$candel' => $can_delete,
+ '$addnew' => t('Add new page'),
+ '$pageName' => array('pageName', t('Page name')),
+ ));
+ }
+}
+
+
diff --git a/Zotlabs/Widget/Zcard.php b/Zotlabs/Widget/Zcard.php
new file mode 100644
index 000000000..12e53eaab
--- /dev/null
+++ b/Zotlabs/Widget/Zcard.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Zcard {
+
+ function widget($args) {
+ $channel = channelx_by_n(\App::$profile_uid);
+ return get_zcard($channel,get_observer_hash(),array('width' => 875));
+ }
+}
diff --git a/boot.php b/boot.php
index 36e08c77a..9ebc7e5b6 100755
--- a/boot.php
+++ b/boot.php
@@ -5,14 +5,13 @@
*/
/**
- * Hubzilla.
*
- * Hubzilla is an open source decentralised communications
+ * This is an open source decentralised communications
* platform combined with a decentralised identity/authentication framework
* wrapped in an extensible content management system, providing website designers
* the ability to embed fully decentralised communications and social tools
* into many traditional website designs (blogs, forums, small business
- * websites, charitable organisations, etc.). Hubzilla also provides DNS mobility
+ * websites, charitable organisations, etc.). Also provided is DNS mobility
* and internet scale privacy/access control.
*
* This allows any individual website to participate in a matrix of linked
@@ -49,8 +48,8 @@ require_once('include/xchan.php');
require_once('include/hubloc.php');
-define ( 'PLATFORM_NAME', 'hubzilla' );
-define ( 'STD_VERSION', '2.3' );
+define ( 'PLATFORM_NAME', 'red' );
+define ( 'STD_VERSION', '5.2' );
define ( 'ZOT_REVISION', '1.2' );
define ( 'DB_UPDATE_VERSION', 1188 );
@@ -126,7 +125,9 @@ define ( 'LANGUAGE_DETECT_MIN_CONFIDENCE', 0.01 );
* either more or less restrictive.
*/
-define ( 'STORAGE_DEFAULT_PERMISSIONS', 0770 );
+if(! defined('STORAGE_DEFAULT_PERMISSIONS')) {
+ define ( 'STORAGE_DEFAULT_PERMISSIONS', 0770 );
+}
/**
@@ -149,12 +150,6 @@ define ( 'MAX_IMAGE_LENGTH', -1 );
/**
- * Not yet used
- */
-
-define ( 'DEFAULT_DB_ENGINE', 'MyISAM' );
-
-/**
* log levels
*/
@@ -166,14 +161,6 @@ define ( 'LOGGER_ALL', 4 );
/**
- * Server roles
- */
-
-define ( 'SERVER_ROLE_BASIC', 0x0001 );
-define ( 'SERVER_ROLE_STANDARD', 0x0002 );
-define ( 'SERVER_ROLE_PRO', 0x0004 );
-
-/**
* registration policies
*/
@@ -192,15 +179,6 @@ define ( 'ACCESS_FREE', 2 );
define ( 'ACCESS_TIERED', 3 );
/**
- * relationship types
- */
-
-define ( 'CONTACT_IS_FOLLOWER', 1);
-define ( 'CONTACT_IS_SHARING', 2);
-define ( 'CONTACT_IS_FRIEND', 3);
-
-
-/**
* DB update return values
*/
@@ -527,14 +505,6 @@ define ( 'ACTIVITY_OBJ_LOCATION',NAMESPACE_ZOT . '/activity/location' );
define ( 'ACTIVITY_OBJ_FILE', NAMESPACE_ZOT . '/activity/file' );
/**
- * item weight for query ordering
- */
-
-define ( 'GRAVITY_PARENT', 0);
-define ( 'GRAVITY_LIKE', 3);
-define ( 'GRAVITY_COMMENT', 6);
-
-/**
* Account Flags
*/
@@ -549,7 +519,6 @@ define ( 'ACCOUNT_PENDING', 0x0010 );
* Account roles
*/
-define ( 'ACCOUNT_ROLE_ALLOWCODE', 0x0001 );
define ( 'ACCOUNT_ROLE_SYSTEM', 0x0002 );
define ( 'ACCOUNT_ROLE_DEVELOPER', 0x0004 );
define ( 'ACCOUNT_ROLE_ADMIN', 0x1000 );
@@ -559,16 +528,16 @@ define ( 'ACCOUNT_ROLE_ADMIN', 0x1000 );
*/
define ( 'ITEM_VISIBLE', 0x0000);
-//define ( 'ITEM_HIDDEN', 0x0001);
+define ( 'ITEM_HIDDEN', 0x0001);
define ( 'ITEM_BLOCKED', 0x0002);
define ( 'ITEM_MODERATED', 0x0004);
define ( 'ITEM_SPAM', 0x0008);
-//define ( 'ITEM_DELETED', 0x0010);
+define ( 'ITEM_DELETED', 0x0010);
define ( 'ITEM_UNPUBLISHED', 0x0020);
-//define ( 'ITEM_WEBPAGE', 0x0040); // is a static web page, not a conversational item
+define ( 'ITEM_WEBPAGE', 0x0040); // is a static web page, not a conversational item
define ( 'ITEM_DELAYED_PUBLISH', 0x0080);
define ( 'ITEM_BUILDBLOCK', 0x0100); // Named thusly to make sure nobody confuses this with ITEM_BLOCKED
-//define ( 'ITEM_PDL', 0x0200); // Page Description Language - e.g. Comanche
+define ( 'ITEM_PDL', 0x0200); // Page Description Language - e.g. Comanche
define ( 'ITEM_BUG', 0x0400); // Is a bug, can be used by the internal bug tracker
define ( 'ITEM_PENDING_REMOVE', 0x0800); // deleted, notification period has lapsed
define ( 'ITEM_DOC', 0x1000); // hubzilla only, define here so that item import does the right thing
@@ -620,26 +589,18 @@ function sys_boot() {
$a->convert();
- if(defined('UNO')) {
- if(UNO)
- App::$config['system']['server_role'] = 'basic';
- else
- App::$config['system']['server_role'] = 'standard';
- }
-
- if(! (array_key_exists('server_role',App::$config['system']) && App::$config['system']['server_role']))
- App::$config['system']['server_role'] = 'standard';
+ App::$config['system']['server_role'] = 'pro';
App::$timezone = ((App::$config['system']['timezone']) ? App::$config['system']['timezone'] : 'UTC');
date_default_timezone_set(App::$timezone);
if(! defined('DEFAULT_PLATFORM_ICON')) {
- define( 'DEFAULT_PLATFORM_ICON', '/images/hz-32.png' );
+ define( 'DEFAULT_PLATFORM_ICON', '/images/rm-32.png' );
}
if(! defined('DEFAULT_NOTIFY_ICON')) {
- define( 'DEFAULT_NOTIFY_ICON', '/images/hz-white-32.png' );
+ define( 'DEFAULT_NOTIFY_ICON', '/images/rm-32.png' );
}
if(! defined('CRYPTO_ALGORITHM')) {
@@ -727,6 +688,7 @@ function startup() {
* which is now static (although currently constructed at startup). We are only converting
* 'system' config settings.
*/
+
class miniApp {
public $config = array('system' => array());
@@ -755,7 +717,6 @@ class miniApp {
class App {
public static $install = false; // true if we are installing the software
- public static $role = 0; // server role (constant, not the string)
public static $account = null; // account record of the logged-in account
public static $channel = null; // channel record of the current channel of the logged-in account
public static $observer = null; // xchan record of the page observer
@@ -1030,36 +991,10 @@ class App {
}
}
- public static function get_role() {
- if(! self::$role)
- return self::set_role();
- return self::$role;
- }
-
- public static function set_role() {
- $role_str = \Zotlabs\Lib\System::get_server_role();
- switch($role_str) {
- case 'basic':
- $role = SERVER_ROLE_BASIC;
- break;
- case 'pro':
- $role = SERVER_ROLE_PRO;
- break;
- case 'standard':
- default:
- $role = SERVER_ROLE_STANDARD;
- break;
- }
- self::$role = $role;
- return $role;
- }
-
-
public static function get_scheme() {
return self::$scheme;
}
-
public static function get_hostname() {
return self::$hostname;
}
@@ -1173,24 +1108,25 @@ class App {
* since the code added by the modules frequently depends on it
* being first
*/
- $tpl = get_markup_template('head.tpl');
- self::$page['htmlhead'] = replace_macros($tpl, array(
- '$preload_images' => $preload_images,
- '$user_scalable' => $user_scalable,
- '$query' => urlencode(self::$query_string),
- '$baseurl' => self::get_baseurl(),
- '$local_channel' => local_channel(),
- '$metas' => self::$meta->get(),
- '$plugins' => $x['header'],
- '$update_interval' => $interval,
- 'osearch' => sprintf( t('Search %1$s (%2$s)','opensearch'), Zotlabs\Lib\System::get_site_name(), t('$Projectname','opensearch')),
- '$head_css' => head_get_css(),
- '$head_js' => head_get_js(),
- '$linkrel' => head_get_links(),
- '$js_strings' => js_strings(),
- '$zid' => get_my_address(),
- '$channel_id' => self::$profile['uid'],
- )) . self::$page['htmlhead'];
+
+ self::$page['htmlhead'] = replace_macros(get_markup_template('head.tpl'),
+ [
+ '$preload_images' => $preload_images,
+ '$user_scalable' => $user_scalable,
+ '$query' => urlencode(self::$query_string),
+ '$baseurl' => self::get_baseurl(),
+ '$local_channel' => local_channel(),
+ '$metas' => self::$meta->get(),
+ '$plugins' => $x['header'],
+ '$update_interval' => $interval,
+ '$head_css' => head_get_css(),
+ '$head_js' => head_get_js(),
+ '$linkrel' => head_get_links(),
+ '$js_strings' => js_strings(),
+ '$zid' => get_my_address(),
+ '$channel_id' => self::$profile['uid']
+ ]
+ ) . self::$page['htmlhead'];
// always put main.js at the end
self::$page['htmlhead'] .= head_get_main_js();
@@ -1203,11 +1139,13 @@ class App {
* @param string $name
*/
public static function register_template_engine($class, $name = '') {
- if ($name === ""){
- $v = get_class_vars( $class );
- if(x($v, "name")) $name = $v['name'];
+ if(! $name) {
+ $v = get_class_vars($class);
+ if(x($v, "name")) {
+ $name = $v['name'];
+ }
}
- if ($name === ""){
+ if (! $name) {
echo "template engine <tt>$class</tt> cannot be registered without a name.\n";
killme();
}
@@ -1223,19 +1161,21 @@ class App {
* @return object Template Engine instance
*/
public static function template_engine($name = ''){
- if ($name !== "") {
+ if($name !== '') {
$template_engine = $name;
- } else {
+ }
+ else {
$template_engine = 'smarty3';
- if (x(self::$theme, 'template_engine')) {
+ if(x(self::$theme, 'template_engine')) {
$template_engine = self::$theme['template_engine'];
}
}
- if (isset(self::$template_engines[$template_engine])){
+ if(isset(self::$template_engines[$template_engine])){
if(isset(self::$template_engine_instance[$template_engine])){
return self::$template_engine_instance[$template_engine];
- } else {
+ }
+ else {
$class = self::$template_engines[$template_engine];
$obj = new $class;
self::$template_engine_instance[$template_engine] = $obj;
@@ -1243,7 +1183,8 @@ class App {
}
}
- echo "template engine <tt>$template_engine</tt> is not registered!\n"; killme();
+ echo "template engine <tt>$template_engine</tt> is not registered!\n";
+ killme();
}
/**
@@ -1824,18 +1765,6 @@ function local_channel() {
}
/**
- * local_user() got deprecated and replaced by local_channel().
- *
- * @deprecated since v2.1, use local_channel()
- * @see local_channel()
- */
-function local_user() {
- logger('local_user() is DEPRECATED, use local_channel()');
- return local_channel();
-}
-
-
-/**
* @brief Returns a xchan_hash (visitor_id) of remote authenticated visitor
* or false.
*
@@ -1857,18 +1786,6 @@ function remote_channel() {
}
/**
- * remote_user() got deprecated and replaced by remote_channel().
- *
- * @deprecated since v2.1, use remote_channel()
- * @see remote_channel()
- */
-function remote_user() {
- logger('remote_user() is DEPRECATED, use remote_channel()');
- return remote_channel();
-}
-
-
-/**
* Contents of $s are displayed prominently on the page the next time
* a page is loaded. Usually used for errors or alerts.
*
@@ -2357,7 +2274,7 @@ function construct_page(&$a) {
}
/**
- * @brief Returns Hubzilla's root directory.
+ * @brief Returns appplication root directory.
*
* @return string
*/
@@ -2373,7 +2290,7 @@ function appdirpath() {
function head_set_icon($icon) {
App::$data['pageicon'] = $icon;
-// logger('head_set_icon: ' . $icon);
+
}
/**
@@ -2449,10 +2366,10 @@ function z_get_temp_dir() {
function z_check_cert() {
if(strpos(z_root(),'https://') !== false) {
- $x = z_fetch_url(z_root() . '/siteinfo/json');
+ $x = z_fetch_url(z_root() . '/siteinfo.json');
if(! $x['success']) {
$recurse = 0;
- $y = z_fetch_url(z_root() . '/siteinfo/json',false,$recurse,array('novalidate' => true));
+ $y = z_fetch_url(z_root() . '/siteinfo.json',false,$recurse,array('novalidate' => true));
if($y['success'])
cert_bad_email();
}
@@ -2463,9 +2380,9 @@ function z_check_cert() {
/**
* @brief Send email to admin if server has an invalid certificate.
*
- * If a Hubzilla hub is available over https it must have a publicly valid
- * certificate.
+ * If a hub is available over https it must have a publicly valid certificate.
*/
+
function cert_bad_email() {
$email_tpl = get_intltext_template("cert_bad_eml.tpl");
@@ -2475,7 +2392,7 @@ function cert_bad_email() {
'$error' => t('Website SSL certificate is not valid. Please correct.')
));
- $subject = email_header_encode(sprintf(t('[hubzilla] Website SSL error for %s'), App::get_hostname()));
+ $subject = email_header_encode(sprintf(t('[$Projectname] Website SSL error for %s'), App::get_hostname()));
mail(App::$config['system']['admin_email'], $subject, $email_msg,
'From: Administrator' . '@' . App::get_hostname() . "\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n"
@@ -2598,7 +2515,7 @@ function check_cron_broken() {
'$lastdate' => (($d)? $d : t('never'))
));
- $subject = email_header_encode(sprintf(t('[hubzilla] Cron tasks not running on %s'), App::get_hostname()));
+ $subject = email_header_encode(sprintf(t('[$Projectname] Cron tasks not running on %s'), App::get_hostname()));
mail(App::$config['system']['admin_email'], $subject, $email_msg,
'From: Administrator' . '@' . App::get_hostname() . "\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n"
diff --git a/composer.json b/composer.json
index 868a89d19..4e54720ff 100644
--- a/composer.json
+++ b/composer.json
@@ -30,7 +30,8 @@
"ext-openssl" : "*",
"sabre/dav" : "~3.2",
"michelf/php-markdown" : "^1.7",
- "pixel418/markdownify": "^2.2"
+ "pixel418/markdownify": "^2.2",
+ "bshaffer/oauth2-server-php": "~1.8"
},
"require-dev" : {
"php" : ">=7.0",
diff --git a/composer.lock b/composer.lock
index 7541448f2..c9c4eb230 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,9 +4,66 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "content-hash": "0b382a501597bf5f59a5f22e85954cbe",
+ "hash": "46492fdee6fa6ef4ef6612a0f0006c2b",
+ "content-hash": "b0d4055ddb064eafb50cf58cf939e1e5",
"packages": [
{
+ "name": "bshaffer/oauth2-server-php",
+ "version": "v1.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/bshaffer/oauth2-server-php.git",
+ "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/8856aed1a98d6da596ae3f9b8095b5c7a1581697",
+ "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "~2.8",
+ "firebase/php-jwt": "~2.2",
+ "mongodb/mongodb": "^1.1",
+ "predis/predis": "dev-master",
+ "thobbs/phpcassa": "dev-master"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
+ "firebase/php-jwt": "~1.1 is required to use MondoDB storage",
+ "predis/predis": "Required to use Redis storage",
+ "thobbs/phpcassa": "Required to use Cassandra storage"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "OAuth2": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brent Shaffer",
+ "email": "bshafs@gmail.com",
+ "homepage": "http://brentertainment.com"
+ }
+ ],
+ "description": "OAuth2 Server for PHP",
+ "homepage": "http://github.com/bshaffer/oauth2-server-php",
+ "keywords": [
+ "auth",
+ "oauth",
+ "oauth2"
+ ],
+ "time": "2017-01-06 23:20:00"
+ },
+ {
"name": "michelf/php-markdown",
"version": "1.7.0",
"source": {
@@ -55,7 +112,7 @@
"keywords": [
"markdown"
],
- "time": "2016-10-29T18:58:20+00:00"
+ "time": "2016-10-29 18:58:20"
},
{
"name": "pixel418/markdownify",
@@ -111,7 +168,7 @@
"markdown",
"markdownify"
],
- "time": "2016-09-21T13:01:43+00:00"
+ "time": "2016-09-21 13:01:43"
},
{
"name": "psr/log",
@@ -158,20 +215,20 @@
"psr",
"psr-3"
],
- "time": "2016-10-10T12:19:37+00:00"
+ "time": "2016-10-10 12:19:37"
},
{
"name": "sabre/dav",
- "version": "3.2.0",
+ "version": "3.2.2",
"source": {
"type": "git",
"url": "https://github.com/fruux/sabre-dav.git",
- "reference": "5b9737cc2f0182e368d14c80df7f6b2d77dc1457"
+ "reference": "e987775e619728f12205606c9cc3ee565ffb1516"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fruux/sabre-dav/zipball/5b9737cc2f0182e368d14c80df7f6b2d77dc1457",
- "reference": "5b9737cc2f0182e368d14c80df7f6b2d77dc1457",
+ "url": "https://api.github.com/repos/fruux/sabre-dav/zipball/e987775e619728f12205606c9cc3ee565ffb1516",
+ "reference": "e987775e619728f12205606c9cc3ee565ffb1516",
"shasum": ""
},
"require": {
@@ -195,8 +252,8 @@
"require-dev": {
"evert/phpdoc-md": "~0.1.0",
"monolog/monolog": "^1.18",
- "phpunit/phpunit": "> 4.8, <=6.0.0",
- "sabre/cs": "~0.0.5"
+ "phpunit/phpunit": "> 4.8, <6.0.0",
+ "sabre/cs": "^1.0.0"
},
"suggest": {
"ext-curl": "*",
@@ -241,7 +298,7 @@
"framework",
"iCalendar"
],
- "time": "2016-06-28T02:44:05+00:00"
+ "time": "2017-02-15 03:06:08"
},
{
"name": "sabre/event",
@@ -298,23 +355,24 @@
"promise",
"signal"
],
- "time": "2015-11-05T20:14:39+00:00"
+ "time": "2015-11-05 20:14:39"
},
{
"name": "sabre/http",
- "version": "4.2.1",
+ "version": "4.2.2",
"source": {
"type": "git",
"url": "https://github.com/fruux/sabre-http.git",
- "reference": "2e93bc8321524c67be4ca5b8415daebd4c8bf85e"
+ "reference": "dd50e7260356f4599d40270826f9548b23efa204"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fruux/sabre-http/zipball/2e93bc8321524c67be4ca5b8415daebd4c8bf85e",
- "reference": "2e93bc8321524c67be4ca5b8415daebd4c8bf85e",
+ "url": "https://api.github.com/repos/fruux/sabre-http/zipball/dd50e7260356f4599d40270826f9548b23efa204",
+ "reference": "dd50e7260356f4599d40270826f9548b23efa204",
"shasum": ""
},
"require": {
+ "ext-ctype": "*",
"ext-mbstring": "*",
"php": ">=5.4",
"sabre/event": ">=1.0.0,<4.0.0",
@@ -353,28 +411,28 @@
"keywords": [
"http"
],
- "time": "2016-01-06T23:00:08+00:00"
+ "time": "2017-01-02 19:38:42"
},
{
"name": "sabre/uri",
- "version": "1.1.0",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/fruux/sabre-uri.git",
- "reference": "9012116434d84ef6e5e37a89dfdbfbe2204a8704"
+ "reference": "ada354d83579565949d80b2e15593c2371225e61"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fruux/sabre-uri/zipball/9012116434d84ef6e5e37a89dfdbfbe2204a8704",
- "reference": "9012116434d84ef6e5e37a89dfdbfbe2204a8704",
+ "url": "https://api.github.com/repos/fruux/sabre-uri/zipball/ada354d83579565949d80b2e15593c2371225e61",
+ "reference": "ada354d83579565949d80b2e15593c2371225e61",
"shasum": ""
},
"require": {
"php": ">=5.4.7"
},
"require-dev": {
- "phpunit/phpunit": "*",
- "sabre/cs": "~0.0.1"
+ "phpunit/phpunit": ">=4.0,<6.0",
+ "sabre/cs": "~1.0.0"
},
"type": "library",
"autoload": {
@@ -404,30 +462,30 @@
"uri",
"url"
],
- "time": "2016-03-08T02:29:27+00:00"
+ "time": "2017-02-20 19:59:28"
},
{
"name": "sabre/vobject",
- "version": "4.1.1",
+ "version": "4.1.2",
"source": {
"type": "git",
"url": "https://github.com/fruux/sabre-vobject.git",
- "reference": "a3a59b06947f122af2d45d52b72172cdc1efd68f"
+ "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fruux/sabre-vobject/zipball/a3a59b06947f122af2d45d52b72172cdc1efd68f",
- "reference": "a3a59b06947f122af2d45d52b72172cdc1efd68f",
+ "url": "https://api.github.com/repos/fruux/sabre-vobject/zipball/d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
+ "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": ">=5.5",
- "sabre/xml": "~1.1"
+ "sabre/xml": ">=1.5 <3.0"
},
"require-dev": {
"phpunit/phpunit": "*",
- "sabre/cs": "~0.0.3"
+ "sabre/cs": "^1.0.0"
},
"suggest": {
"hoa/bench": "If you would like to run the benchmark scripts"
@@ -501,7 +559,7 @@
"xCal",
"xCard"
],
- "time": "2016-07-15T19:52:17+00:00"
+ "time": "2016-12-06 04:14:09"
},
{
"name": "sabre/xml",
@@ -564,7 +622,7 @@
"dom",
"xml"
],
- "time": "2016-10-09T22:57:52+00:00"
+ "time": "2016-10-09 22:57:52"
}
],
"packages-dev": [
@@ -648,7 +706,7 @@
"symfony",
"testing"
],
- "time": "2016-12-25T13:43:52+00:00"
+ "time": "2016-12-25 13:43:52"
},
{
"name": "behat/gherkin",
@@ -707,7 +765,7 @@
"gherkin",
"parser"
],
- "time": "2016-10-30T11:50:56+00:00"
+ "time": "2016-10-30 11:50:56"
},
{
"name": "behat/mink",
@@ -765,7 +823,7 @@
"testing",
"web"
],
- "time": "2016-03-05T08:26:18+00:00"
+ "time": "2016-03-05 08:26:18"
},
{
"name": "behat/mink-browserkit-driver",
@@ -821,7 +879,7 @@
"browser",
"testing"
],
- "time": "2016-03-05T08:59:47+00:00"
+ "time": "2016-03-05 08:59:47"
},
{
"name": "behat/mink-extension",
@@ -880,7 +938,7 @@
"test",
"web"
],
- "time": "2016-02-15T07:55:18+00:00"
+ "time": "2016-02-15 07:55:18"
},
{
"name": "behat/mink-goutte-driver",
@@ -935,7 +993,7 @@
"headless",
"testing"
],
- "time": "2016-03-05T09:04:22+00:00"
+ "time": "2016-03-05 09:04:22"
},
{
"name": "behat/transliterator",
@@ -975,7 +1033,7 @@
"slug",
"transliterator"
],
- "time": "2015-09-28T16:26:35+00:00"
+ "time": "2015-09-28 16:26:35"
},
{
"name": "container-interop/container-interop",
@@ -1006,7 +1064,7 @@
],
"description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
"homepage": "https://github.com/container-interop/container-interop",
- "time": "2017-02-14T19:40:03+00:00"
+ "time": "2017-02-14 19:40:03"
},
{
"name": "doctrine/instantiator",
@@ -1060,7 +1118,7 @@
"constructor",
"instantiate"
],
- "time": "2015-06-14T21:17:01+00:00"
+ "time": "2015-06-14 21:17:01"
},
{
"name": "fabpot/goutte",
@@ -1109,7 +1167,7 @@
"keywords": [
"scraper"
],
- "time": "2017-01-03T13:21:43+00:00"
+ "time": "2017-01-03 13:21:43"
},
{
"name": "guzzlehttp/guzzle",
@@ -1171,7 +1229,7 @@
"rest",
"web service"
],
- "time": "2017-02-28T22:50:30+00:00"
+ "time": "2017-02-28 22:50:30"
},
{
"name": "guzzlehttp/promises",
@@ -1222,7 +1280,7 @@
"keywords": [
"promise"
],
- "time": "2016-12-20T10:07:11+00:00"
+ "time": "2016-12-20 10:07:11"
},
{
"name": "guzzlehttp/psr7",
@@ -1287,7 +1345,7 @@
"uri",
"url"
],
- "time": "2017-02-27T10:51:17+00:00"
+ "time": "2017-02-27 10:51:17"
},
{
"name": "myclabs/deep-copy",
@@ -1329,7 +1387,7 @@
"object",
"object graph"
],
- "time": "2017-01-26T22:05:40+00:00"
+ "time": "2017-01-26 22:05:40"
},
{
"name": "php-mock/php-mock",
@@ -1390,7 +1448,7 @@
"test",
"test double"
],
- "time": "2017-02-17T20:52:52+00:00"
+ "time": "2017-02-17 20:52:52"
},
{
"name": "php-mock/php-mock-integration",
@@ -1443,7 +1501,7 @@
"test",
"test double"
],
- "time": "2017-02-17T21:31:34+00:00"
+ "time": "2017-02-17 21:31:34"
},
{
"name": "php-mock/php-mock-phpunit",
@@ -1494,7 +1552,7 @@
"test",
"test double"
],
- "time": "2017-02-17T22:44:38+00:00"
+ "time": "2017-02-17 22:44:38"
},
{
"name": "phpdocumentor/reflection-common",
@@ -1548,7 +1606,7 @@
"reflection",
"static analysis"
],
- "time": "2015-12-27T11:43:31+00:00"
+ "time": "2015-12-27 11:43:31"
},
{
"name": "phpdocumentor/reflection-docblock",
@@ -1593,7 +1651,7 @@
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2016-09-30T07:12:33+00:00"
+ "time": "2016-09-30 07:12:33"
},
{
"name": "phpdocumentor/type-resolver",
@@ -1640,7 +1698,7 @@
"email": "me@mikevanriel.com"
}
],
- "time": "2016-11-25T06:54:22+00:00"
+ "time": "2016-11-25 06:54:22"
},
{
"name": "phpspec/prophecy",
@@ -1703,20 +1761,20 @@
"spy",
"stub"
],
- "time": "2017-03-02T20:05:34+00:00"
+ "time": "2017-03-02 20:05:34"
},
{
"name": "phpunit/php-code-coverage",
- "version": "5.0.2",
+ "version": "5.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "531553c4795a1df54114342d68ca337d5d81c8a0"
+ "reference": "4e99e1c4f9b05cbf4d6e84b100b3ff4107cf8cd1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/531553c4795a1df54114342d68ca337d5d81c8a0",
- "reference": "531553c4795a1df54114342d68ca337d5d81c8a0",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4e99e1c4f9b05cbf4d6e84b100b3ff4107cf8cd1",
+ "reference": "4e99e1c4f9b05cbf4d6e84b100b3ff4107cf8cd1",
"shasum": ""
},
"require": {
@@ -1766,7 +1824,7 @@
"testing",
"xunit"
],
- "time": "2017-03-01T09:14:18+00:00"
+ "time": "2017-03-06 14:22:16"
},
{
"name": "phpunit/php-file-iterator",
@@ -1813,7 +1871,7 @@
"filesystem",
"iterator"
],
- "time": "2016-10-03T07:40:28+00:00"
+ "time": "2016-10-03 07:40:28"
},
{
"name": "phpunit/php-text-template",
@@ -1854,7 +1912,7 @@
"keywords": [
"template"
],
- "time": "2015-06-21T13:50:34+00:00"
+ "time": "2015-06-21 13:50:34"
},
{
"name": "phpunit/php-timer",
@@ -1903,7 +1961,7 @@
"keywords": [
"timer"
],
- "time": "2017-02-26T11:10:40+00:00"
+ "time": "2017-02-26 11:10:40"
},
{
"name": "phpunit/php-token-stream",
@@ -1952,20 +2010,20 @@
"keywords": [
"tokenizer"
],
- "time": "2017-02-27T10:12:30+00:00"
+ "time": "2017-02-27 10:12:30"
},
{
"name": "phpunit/phpunit",
- "version": "6.0.8",
+ "version": "6.0.9",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "47ee3fa1bca5c50f1d25105201eb20df777bd7b6"
+ "reference": "9bd36d990884d8fb3313232e0002ed4cdf79f428"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/47ee3fa1bca5c50f1d25105201eb20df777bd7b6",
- "reference": "47ee3fa1bca5c50f1d25105201eb20df777bd7b6",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9bd36d990884d8fb3313232e0002ed4cdf79f428",
+ "reference": "9bd36d990884d8fb3313232e0002ed4cdf79f428",
"shasum": ""
},
"require": {
@@ -1976,18 +2034,18 @@
"ext-xml": "*",
"myclabs/deep-copy": "^1.3",
"php": "^7.0",
- "phpspec/prophecy": "^1.6.2",
+ "phpspec/prophecy": "^1.7",
"phpunit/php-code-coverage": "^5.0",
"phpunit/php-file-iterator": "^1.4",
"phpunit/php-text-template": "^1.2",
"phpunit/php-timer": "^1.0.6",
"phpunit/phpunit-mock-objects": "^4.0",
- "sebastian/comparator": "^1.2.4 || ^2.0",
+ "sebastian/comparator": "^2.0",
"sebastian/diff": "^1.2",
"sebastian/environment": "^2.0",
- "sebastian/exporter": "^2.0 || ^3.0",
+ "sebastian/exporter": "^3.0",
"sebastian/global-state": "^1.1 || ^2.0",
- "sebastian/object-enumerator": "^2.0 || ^3.0",
+ "sebastian/object-enumerator": "^3.0.2",
"sebastian/resource-operations": "^1.0",
"sebastian/version": "^2.0"
},
@@ -2034,7 +2092,7 @@
"testing",
"xunit"
],
- "time": "2017-03-02T15:24:03+00:00"
+ "time": "2017-03-15 13:04:13"
},
{
"name": "phpunit/phpunit-mock-objects",
@@ -2093,7 +2151,7 @@
"mock",
"xunit"
],
- "time": "2017-03-03T06:30:20+00:00"
+ "time": "2017-03-03 06:30:20"
},
{
"name": "psr/container",
@@ -2142,7 +2200,7 @@
"container-interop",
"psr"
],
- "time": "2017-02-14T16:28:37+00:00"
+ "time": "2017-02-14 16:28:37"
},
{
"name": "psr/http-message",
@@ -2192,7 +2250,7 @@
"request",
"response"
],
- "time": "2016-08-06T14:39:51+00:00"
+ "time": "2016-08-06 14:39:51"
},
{
"name": "sebastian/code-unit-reverse-lookup",
@@ -2237,7 +2295,7 @@
],
"description": "Looks up which function or method a line of code belongs to",
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
- "time": "2017-03-04T06:30:41+00:00"
+ "time": "2017-03-04 06:30:41"
},
{
"name": "sebastian/comparator",
@@ -2301,7 +2359,7 @@
"compare",
"equality"
],
- "time": "2017-03-03T06:26:08+00:00"
+ "time": "2017-03-03 06:26:08"
},
{
"name": "sebastian/diff",
@@ -2353,7 +2411,7 @@
"keywords": [
"diff"
],
- "time": "2015-12-08T07:14:41+00:00"
+ "time": "2015-12-08 07:14:41"
},
{
"name": "sebastian/environment",
@@ -2403,7 +2461,7 @@
"environment",
"hhvm"
],
- "time": "2016-11-26T07:53:53+00:00"
+ "time": "2016-11-26 07:53:53"
},
{
"name": "sebastian/exporter",
@@ -2470,7 +2528,7 @@
"export",
"exporter"
],
- "time": "2017-03-03T06:25:06+00:00"
+ "time": "2017-03-03 06:25:06"
},
{
"name": "sebastian/global-state",
@@ -2521,24 +2579,25 @@
"keywords": [
"global state"
],
- "time": "2015-10-12T03:26:01+00:00"
+ "time": "2015-10-12 03:26:01"
},
{
"name": "sebastian/object-enumerator",
- "version": "3.0.0",
+ "version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "de6e32f7192dfea2e4bedc892434f4830b5c5794"
+ "reference": "31dd3379d16446c5d86dec32ab1ad1f378581ad8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/de6e32f7192dfea2e4bedc892434f4830b5c5794",
- "reference": "de6e32f7192dfea2e4bedc892434f4830b5c5794",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/31dd3379d16446c5d86dec32ab1ad1f378581ad8",
+ "reference": "31dd3379d16446c5d86dec32ab1ad1f378581ad8",
"shasum": ""
},
"require": {
"php": "^7.0",
+ "sebastian/object-reflector": "^1.0",
"sebastian/recursion-context": "^3.0"
},
"require-dev": {
@@ -2567,7 +2626,52 @@
],
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
- "time": "2017-03-03T06:21:01+00:00"
+ "time": "2017-03-12 15:17:29"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "2201553542d60d25db9c5b2c54330df776648008"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/2201553542d60d25db9c5b2c54330df776648008",
+ "reference": "2201553542d60d25db9c5b2c54330df776648008",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "time": "2017-03-12 15:10:22"
},
{
"name": "sebastian/recursion-context",
@@ -2620,7 +2724,7 @@
],
"description": "Provides functionality to recursively process PHP variables",
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2017-03-03T06:23:57+00:00"
+ "time": "2017-03-03 06:23:57"
},
{
"name": "sebastian/resource-operations",
@@ -2662,7 +2766,7 @@
],
"description": "Provides a list of PHP built-in functions that operate on resources",
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
- "time": "2015-07-28T20:34:47+00:00"
+ "time": "2015-07-28 20:34:47"
},
{
"name": "sebastian/version",
@@ -2705,20 +2809,20 @@
],
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
"homepage": "https://github.com/sebastianbergmann/version",
- "time": "2016-10-03T07:35:21+00:00"
+ "time": "2016-10-03 07:35:21"
},
{
"name": "symfony/browser-kit",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "394a2475a3a89089353fde5714a7f402fbb83880"
+ "reference": "2fe0caa60c1a1dfeefd0425741182687a9b382b8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/394a2475a3a89089353fde5714a7f402fbb83880",
- "reference": "394a2475a3a89089353fde5714a7f402fbb83880",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/2fe0caa60c1a1dfeefd0425741182687a9b382b8",
+ "reference": "2fe0caa60c1a1dfeefd0425741182687a9b382b8",
"shasum": ""
},
"require": {
@@ -2762,20 +2866,20 @@
],
"description": "Symfony BrowserKit Component",
"homepage": "https://symfony.com",
- "time": "2017-01-31T21:49:23+00:00"
+ "time": "2017-02-21 09:12:04"
},
{
"name": "symfony/class-loader",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/class-loader.git",
- "reference": "2847d56f518ad5721bf85aa9174b3aa3fd12aa03"
+ "reference": "c29a5bc6ca14cfff1f5e3d7781ed74b6e898d2b9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/class-loader/zipball/2847d56f518ad5721bf85aa9174b3aa3fd12aa03",
- "reference": "2847d56f518ad5721bf85aa9174b3aa3fd12aa03",
+ "url": "https://api.github.com/repos/symfony/class-loader/zipball/c29a5bc6ca14cfff1f5e3d7781ed74b6e898d2b9",
+ "reference": "c29a5bc6ca14cfff1f5e3d7781ed74b6e898d2b9",
"shasum": ""
},
"require": {
@@ -2818,20 +2922,20 @@
],
"description": "Symfony ClassLoader Component",
"homepage": "https://symfony.com",
- "time": "2017-01-21T17:06:35+00:00"
+ "time": "2017-02-18 17:28:00"
},
{
"name": "symfony/config",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "9f99453e77771e629af8a25eeb0a6c4ed1e19da2"
+ "reference": "741d6d4cd1414d67d48eb71aba6072b46ba740c2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/9f99453e77771e629af8a25eeb0a6c4ed1e19da2",
- "reference": "9f99453e77771e629af8a25eeb0a6c4ed1e19da2",
+ "url": "https://api.github.com/repos/symfony/config/zipball/741d6d4cd1414d67d48eb71aba6072b46ba740c2",
+ "reference": "741d6d4cd1414d67d48eb71aba6072b46ba740c2",
"shasum": ""
},
"require": {
@@ -2874,20 +2978,20 @@
],
"description": "Symfony Config Component",
"homepage": "https://symfony.com",
- "time": "2017-02-14T16:27:43+00:00"
+ "time": "2017-03-01 18:18:25"
},
{
"name": "symfony/console",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "0e5e6899f82230fcb1153bcaf0e106ffaa44b870"
+ "reference": "28fb243a2b5727774ca309ec2d92da240f1af0dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/0e5e6899f82230fcb1153bcaf0e106ffaa44b870",
- "reference": "0e5e6899f82230fcb1153bcaf0e106ffaa44b870",
+ "url": "https://api.github.com/repos/symfony/console/zipball/28fb243a2b5727774ca309ec2d92da240f1af0dd",
+ "reference": "28fb243a2b5727774ca309ec2d92da240f1af0dd",
"shasum": ""
},
"require": {
@@ -2937,20 +3041,20 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
- "time": "2017-02-16T14:07:22+00:00"
+ "time": "2017-03-06 19:30:27"
},
{
"name": "symfony/css-selector",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "f0e628f04fc055c934b3211cfabdb1c59eefbfaa"
+ "reference": "a48f13dc83c168f1253a5d2a5a4fb46c36244c4c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/f0e628f04fc055c934b3211cfabdb1c59eefbfaa",
- "reference": "f0e628f04fc055c934b3211cfabdb1c59eefbfaa",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/a48f13dc83c168f1253a5d2a5a4fb46c36244c4c",
+ "reference": "a48f13dc83c168f1253a5d2a5a4fb46c36244c4c",
"shasum": ""
},
"require": {
@@ -2990,20 +3094,20 @@
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
- "time": "2017-01-02T20:32:22+00:00"
+ "time": "2017-02-21 09:12:04"
},
{
"name": "symfony/debug",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
- "reference": "9b98854cb45bc59d100b7d4cc4cf9e05f21026b9"
+ "reference": "b90c9f91ad8ac37d9f114e369042d3226b34dc1a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/9b98854cb45bc59d100b7d4cc4cf9e05f21026b9",
- "reference": "9b98854cb45bc59d100b7d4cc4cf9e05f21026b9",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/b90c9f91ad8ac37d9f114e369042d3226b34dc1a",
+ "reference": "b90c9f91ad8ac37d9f114e369042d3226b34dc1a",
"shasum": ""
},
"require": {
@@ -3047,20 +3151,20 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
- "time": "2017-02-16T16:34:18+00:00"
+ "time": "2017-02-18 17:28:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "130aa55b8ed7e6d0d75b0ed37256cec687a22f41"
+ "reference": "74e0935e414ad33d5e82074212c0eedb4681a691"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/130aa55b8ed7e6d0d75b0ed37256cec687a22f41",
- "reference": "130aa55b8ed7e6d0d75b0ed37256cec687a22f41",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/74e0935e414ad33d5e82074212c0eedb4681a691",
+ "reference": "74e0935e414ad33d5e82074212c0eedb4681a691",
"shasum": ""
},
"require": {
@@ -3110,20 +3214,20 @@
],
"description": "Symfony DependencyInjection Component",
"homepage": "https://symfony.com",
- "time": "2017-02-16T22:46:52+00:00"
+ "time": "2017-03-05 00:06:55"
},
{
"name": "symfony/dom-crawler",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "b814b41373fc4e535aff8c765abe39545216f391"
+ "reference": "403944e294cf4ceb3b8447f54cbad88ea7b99cee"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b814b41373fc4e535aff8c765abe39545216f391",
- "reference": "b814b41373fc4e535aff8c765abe39545216f391",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/403944e294cf4ceb3b8447f54cbad88ea7b99cee",
+ "reference": "403944e294cf4ceb3b8447f54cbad88ea7b99cee",
"shasum": ""
},
"require": {
@@ -3166,20 +3270,20 @@
],
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
- "time": "2017-01-21T17:14:11+00:00"
+ "time": "2017-02-21 09:12:04"
},
{
"name": "symfony/event-dispatcher",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "9137eb3a3328e413212826d63eeeb0217836e2b6"
+ "reference": "b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9137eb3a3328e413212826d63eeeb0217836e2b6",
- "reference": "9137eb3a3328e413212826d63eeeb0217836e2b6",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d",
+ "reference": "b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d",
"shasum": ""
},
"require": {
@@ -3226,20 +3330,20 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
- "time": "2017-01-02T20:32:22+00:00"
+ "time": "2017-02-21 09:12:04"
},
{
"name": "symfony/filesystem",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "a0c6ef2dc78d33b58d91d3a49f49797a184d06f4"
+ "reference": "bc0f17bed914df2cceb989972c3b996043c4da4a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/a0c6ef2dc78d33b58d91d3a49f49797a184d06f4",
- "reference": "a0c6ef2dc78d33b58d91d3a49f49797a184d06f4",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/bc0f17bed914df2cceb989972c3b996043c4da4a",
+ "reference": "bc0f17bed914df2cceb989972c3b996043c4da4a",
"shasum": ""
},
"require": {
@@ -3275,7 +3379,7 @@
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
- "time": "2017-01-08T20:47:33+00:00"
+ "time": "2017-03-06 19:30:27"
},
{
"name": "symfony/polyfill-mbstring",
@@ -3334,20 +3438,20 @@
"portable",
"shim"
],
- "time": "2016-11-14T01:06:16+00:00"
+ "time": "2016-11-14 01:06:16"
},
{
"name": "symfony/translation",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "d6825c6bb2f1da13f564678f9f236fe8242c0029"
+ "reference": "0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/d6825c6bb2f1da13f564678f9f236fe8242c0029",
- "reference": "d6825c6bb2f1da13f564678f9f236fe8242c0029",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690",
+ "reference": "0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690",
"shasum": ""
},
"require": {
@@ -3360,7 +3464,7 @@
"require-dev": {
"psr/log": "~1.0",
"symfony/config": "~2.8|~3.0",
- "symfony/intl": "~2.8|~3.0",
+ "symfony/intl": "^2.8.18|^3.2.5",
"symfony/yaml": "~2.8|~3.0"
},
"suggest": {
@@ -3398,20 +3502,20 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
- "time": "2017-02-16T22:46:52+00:00"
+ "time": "2017-03-04 12:23:14"
},
{
"name": "symfony/yaml",
- "version": "v3.2.4",
+ "version": "v3.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "9724c684646fcb5387d579b4bfaa63ee0b0c64c8"
+ "reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/9724c684646fcb5387d579b4bfaa63ee0b0c64c8",
- "reference": "9724c684646fcb5387d579b4bfaa63ee0b0c64c8",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/093e416ad096355149e265ea2e4cc1f9ee40ab1a",
+ "reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a",
"shasum": ""
},
"require": {
@@ -3453,7 +3557,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
- "time": "2017-02-16T22:46:52+00:00"
+ "time": "2017-03-07 16:47:02"
},
{
"name": "webmozart/assert",
@@ -3503,7 +3607,7 @@
"check",
"validate"
],
- "time": "2016-11-23T20:04:58+00:00"
+ "time": "2016-11-23 20:04:58"
}
],
"aliases": [],
diff --git a/doc/about/about_hubzilla.bb b/doc/about/about.bb
index e9485ffa6..2affe2cba 100644
--- a/doc/about/about_hubzilla.bb
+++ b/doc/about/about.bb
@@ -1,7 +1,7 @@
-[h3]What is Hubzilla?[/h3]
+[h3]What is $Projectname?[/h3]
$Projectname is a [b]free and open source[/b] set of web applications and services running on a special kind of web server, called a "hub", that can connect to other hubs in a decentralised network we like to call "the grid", providing sophisticated communications, identity, and access control services which work together seamlessly across domains and independent websites. It allows anybody to publicly or [b]privately[/b] publish content via "channels", which are the fundamental, cryptographically secured identities that provide authentication independently of the hubs which host them. This revolutionary liberation of online identity from individual servers and domains is called "nomadic identity", and it is powered by the Zot protocol, a new framework for decentralised access control with fine-grained, extensible permissions.
-[h3]Right... so what is Hubzilla?[/h3]
+[h3]Right... so what is $Projectname?[/h3]
From the practical perspective of hub members who use the software, $Projectname offers a variety of familiar, integrated web apps and services, including:
[ul]
[li]social networking discussion threads[/li]
@@ -15,14 +15,9 @@ While all of these apps and services can be found in other software packages, on
[h3]Software Stack[/h3]
The $Projectname software stack is a relatively standard webserver application written primarily in PHP/MySQL and [url=https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt]requiring little more than a web server, a MySQL-compatible database, and the PHP scripting language[/url]. It is designed to be easily installable by those with basic website administration skills on typical shared hosting platforms with a broad range of computing hardware. It is also easily extended via plugins and themes and other third-party tools.
-[h3]Additional Resources and Links[/h3]
-[list][*][url=http://hubzilla.org]Hubzilla project website[/url]
-[*][url=https://github.com/redmatrix/hubzilla]Hubzilla core code repository[/url]
-[*][url=https://github.com/redmatrix/hubzilla-addons]Hubzilla official addons repository[/url][/list]
-
[h3]Glossary[/h3]
[dl terms="b"]
-[*= hub] An instance of the Hubzilla software running on a standard web server
+[*= hub] An instance of this software running on a standard web server
[*= grid] The global network of hubs that exchange information with each other using the Zot protocol.
diff --git a/doc/about/hubzilla_project.bb b/doc/about/project.bb
index 7a584687d..7a584687d 100644
--- a/doc/about/hubzilla_project.bb
+++ b/doc/about/project.bb
diff --git a/doc/database/db_account.bb b/doc/database/db_account.bb
index 354f2d3a8..35d7a9eb3 100644
--- a/doc/database/db_account.bb
+++ b/doc/database/db_account.bb
@@ -58,7 +58,6 @@ define ( 'ACCOUNT_PENDING', 0x0010 );
* Account roles
*/
-define ( 'ACCOUNT_ROLE_ALLOWCODE', 0x0001 ); // 1 - this account can create content with PHP/Javascript
define ( 'ACCOUNT_ROLE_SYSTEM', 0x0002 ); // 2 - this is the special system account
define ( 'ACCOUNT_ROLE_DEVELOPER', 0x0004 );
define ( 'ACCOUNT_ROLE_ADMIN', 0x1000 ); // 4096 - this account is an administrator
diff --git a/doc/toc.html b/doc/toc.html
index 3c9c5c299..285794689 100644
--- a/doc/toc.html
+++ b/doc/toc.html
@@ -7,8 +7,8 @@
</div>
<div id="about" class="panel-collapse collapse in">
<ul class="list-group">
- <li class="doco-list-group-item"><a href="/help/about/about_hubzilla">About Hubzilla</a></li>
- <li class="doco-list-group-item"><a href="/help/about/hubzilla_project">Hubzilla project</a></li>
+ <li class="doco-list-group-item"><a href="/help/about/about">About</a></li>
+ <li class="doco-list-group-item"><a href="/help/about/project">Project</a></li>
<li class="doco-list-group-item"><a href="/help/about/about_hub">About this hub</a></li>
</ul>
</div>
diff --git a/doc/tutorials/personal_channel.html b/doc/tutorials/personal_channel.html
index f2ad87077..9dbc2aaec 100644
--- a/doc/tutorials/personal_channel.html
+++ b/doc/tutorials/personal_channel.html
@@ -6,7 +6,7 @@ to a personal channel in a natural way.</p>
<h3 id="Create_a_new_channel">Create a new channel</h3>
<p>When you log in for the first time after registering, you must create a channel.
-(Alternatively you can load https://grid.reticu.li/new_channel)</p>
+(Alternatively you can visit https://your_website/new_channel)</p>
<p><img class="img-responsive" src="/help/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png" alt="image"></p>
@@ -76,7 +76,7 @@ so you can specify exactly who can access this post.</p>
<h3 id="Use_an_uploaded_image_as_a_channel_cover_photo">Use an uploaded image as a channel cover photo</h3>
<p>One way to add some pizzazz your channel is to add a cover photo that visitors will
-see when they load your channel page. Hubzilla's integrated cloud file system
+see when they load your channel page. The integrated cloud file system
allows you to choose an existing photo for this purpose.</p>
<p>Visit your photos in the <strong>Photos</strong> app</p>
@@ -99,9 +99,9 @@ channel page will fade in as you scroll down.</p>
<h3 id="Make_a_connection">Make a connection</h3>
-<p>Making connections between channels to share things is what Hubzilla is all about.
+<p>Making connections between channels to share things is what social communications are all about.
Making a connection is simple. If you do not already know how to reach a channel's home
-page, you might try a directory search by opening the <strong>Directory</strong> link on the right
+page, you might try a directory search by opening the <strong>Directory</strong> link from the menu on the right
side of the top navbar.</p>
<p><img class="img-responsive" src="/help/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png" alt="image"></p>
@@ -160,4 +160,4 @@ editor by pressing the edit button beside the <strong>Delete</strong> button.</p
<p><img class="img-responsive" src="/help/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png" alt="image"></p>
- \ No newline at end of file
+
diff --git a/include/attach.php b/include/attach.php
index 79313ab1a..cbcdbc399 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -702,11 +702,11 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
$os_relpath .= $folder_hash . '/';
}
- $os_relpath .= $hash;
+ $os_relpath .= $hash;
+ $os_relpath = ltrim($os_relpath,'/');
- // not yet used
- $os_path = '';
- $display_path = '';
+ $os_path = $os_relpath;
+ $display_path = $pathname . '/' . $filename;
if($src)
@file_put_contents($os_basepath . $os_relpath,@file_get_contents($src));
@@ -810,7 +810,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
if($is_photo) {
- $args = array( 'source' => $source, 'visible' => $visible, 'resource_id' => $hash, 'album' => basename($pathname), 'os_path' => $os_basepath . $os_relpath, 'filename' => $filename, 'getimagesize' => $gis, 'directory' => $direct, 'options' => $options );
+ $args = array( 'source' => $source, 'visible' => $visible, 'resource_id' => $hash, 'album' => basename($pathname), 'os_syspath' => $os_basepath . $os_relpath, 'os_path' => $os_path, 'display_path' => $display_path, 'filename' => $filename, 'getimagesize' => $gis, 'directory' => $direct, 'options' => $options );
if($arr['contact_allow'])
$args['contact_allow'] = $arr['contact_allow'];
if($arr['group_allow'])
diff --git a/include/bbcode.php b/include/bbcode.php
index c0033f280..5aa61760f 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -1174,6 +1174,7 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false)
$Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/ism",$sub,$Text);
+ $Text = preg_replace("/\event\](.*?)\[\/event\]/ism",'',$Text);
$Text = preg_replace("/\[event\-summary\](.*?)\[\/event\-summary\]/ism",'',$Text);
$Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/ism",'',$Text);
$Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/ism",'',$Text);
diff --git a/include/channel.php b/include/channel.php
index b838f8393..f88a2f8aa 100644
--- a/include/channel.php
+++ b/include/channel.php
@@ -1193,11 +1193,6 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
else
$tpl = get_markup_template('profile_vcard.tpl');
- require_once('include/widgets.php');
-
-// if(! feature_enabled($profile['uid'],'hide_rating'))
- $z = widget_rating(array('target' => $profile['channel_hash']));
-
$o .= replace_macros($tpl, array(
'$zcard' => $zcard,
'$profile' => $profile,
@@ -1211,7 +1206,7 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
'$chanmenu' => $channel_menu,
'$diaspora' => $diaspora,
'$reddress' => $reddress,
- '$rating' => $z,
+ '$rating' => '',
'$contact_block' => $contact_block,
'$editmenu' => profile_edit_menu($profile['uid'])
));
@@ -2252,3 +2247,20 @@ function channel_remove($channel_id, $local = true, $unset_session=false) {
}
}
+
+/*
+ * This checks if a channel is allowed to publish executable code.
+ * It is up to the caller to determine if the observer or local_channel
+ * is in fact the resource owner whose channel_id is being checked
+ */
+
+function channel_codeallowed($channel_id) {
+
+ if(! intval($channel_id))
+ return false;
+
+ $x = channelx_by_n($channel_id);
+ if(($x) && ($x['channel_pageflags'] & PAGE_ALLOWCODE))
+ return true;
+ return false;
+} \ No newline at end of file
diff --git a/include/dba/dba_pdo.php b/include/dba/dba_pdo.php
index f76e6cdd7..f119d8926 100755
--- a/include/dba/dba_pdo.php
+++ b/include/dba/dba_pdo.php
@@ -74,19 +74,19 @@ class dba_pdo extends dba_driver {
return $result;
}
- if($this->debug) {
- db_logger('dba_pdo: DEBUG: ' . printable($sql) . ' returned ' . count($result) . ' results.', LOGGER_NORMAL, LOG_INFO);
- }
-
$r = array();
if($result) {
foreach($result as $x) {
$r[] = $x;
}
- if($this->debug) {
- db_logger('dba_pdo: ' . printable(print_r($r,true)), LOGGER_NORMAL, LOG_INFO);
- }
}
+
+ if($this->debug) {
+ db_logger('dba_pdo: DEBUG: ' . printable($sql) . ' returned ' . count($r) . ' results.', LOGGER_NORMAL, LOG_INFO);
+ db_logger('dba_pdo: ' . printable(print_r($r,true)), LOGGER_NORMAL, LOG_INFO);
+ }
+
+
return (($this->error) ? false : $r);
}
diff --git a/include/event.php b/include/event.php
index a9634d7a5..001bd7dd3 100644
--- a/include/event.php
+++ b/include/event.php
@@ -210,6 +210,10 @@ function format_event_bbcode($ev) {
$o = '';
+ if($ev['event_vdata']) {
+ $o .= '[event]' . $ev['event_vdata'] . '[/event]';
+ }
+
if($ev['summary'])
$o .= '[event-summary]' . $ev['summary'] . '[/event-summary]';
@@ -610,7 +614,7 @@ function parse_vobject($ical, $type) {
$ev['etype'] = $type;
$dtstart = $ical->DTSTART->getDateTime();
- $ev['adjust'] = (($ical->DTSTART->isFloating()) ? 1 : 0);
+ $ev['adjust'] = (($ical->DTSTART->isFloating()) ? 0 : 1);
$ev['dtstart'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
$dtstart->format(\DateTime::W3C));
@@ -751,7 +755,7 @@ function event_import_ical($ical, $uid) {
}
$dtstart = $ical->DTSTART->getDateTime();
- $ev['adjust'] = (($ical->DTSTART->isFloating()) ? 1 : 0);
+ $ev['adjust'] = (($ical->DTSTART->isFloating()) ? 0 : 1);
// logger('dtstart: ' . var_export($dtstart,true));
@@ -854,7 +858,7 @@ function event_import_ical_task($ical, $uid) {
$dtstart = $ical->DTSTART->getDateTime();
- $ev['adjust'] = (($ical->DTSTART->isFloating()) ? 1 : 0);
+ $ev['adjust'] = (($ical->DTSTART->isFloating()) ? 0 : 1);
// logger('dtstart: ' . var_export($dtstart,true));
diff --git a/include/help.php b/include/help.php
index e4725575d..ab31e9400 100644
--- a/include/help.php
+++ b/include/help.php
@@ -57,7 +57,7 @@ function get_help_content($tocpath = false) {
if(! $text) {
$doctype = 'bbcode';
$text = load_doc_file('doc/main.bb');
- goaway('/help/about/about_hubzilla');
+ goaway('/help/about/about');
\App::$page['title'] = t('Help');
}
diff --git a/include/import.php b/include/import.php
index 5c73b7ca3..bbe930864 100644
--- a/include/import.php
+++ b/include/import.php
@@ -534,16 +534,8 @@ function sync_chatrooms($channel,$chatrooms) {
function import_items($channel,$items,$sync = false,$relocate = null) {
if($channel && $items) {
- $allow_code = false;
- $r = q("select account_id, account_roles, channel_pageflags from account left join channel on channel_account_id = account_id
- where channel_id = %d limit 1",
- intval($channel['channel_id'])
- );
- if($r) {
- if(($r[0]['account_roles'] & ACCOUNT_ROLE_ALLOWCODE) || ($r[0]['channel_pageflags'] & PAGE_ALLOWCODE)) {
- $allow_code = true;
- }
- }
+
+ $allow_code = channel_codeallowed($channel['channel_id']);
$deliver = false; // Don't deliver any messages or notifications when importing
@@ -1358,28 +1350,8 @@ function import_webpage_element($element, $channel, $type) {
}
// Verify ability to use html or php!!!
- $execflag = false;
- if($arr['mimetype'] === 'application/x-php' || $arr['mimetype'] === 'text/html') {
- $z = q("select account_id, account_roles, channel_pageflags from account "
- . "left join channel on channel_account_id = account_id where channel_id = %d limit 1",
- intval(local_channel())
- );
- if($z && (($z[0]['account_roles'] & ACCOUNT_ROLE_ALLOWCODE) || ($z[0]['channel_pageflags'] & PAGE_ALLOWCODE))) {
- $execflag = true;
- }
- else {
- logger('Unable to import element "' . $name .'" because AllowCode permission is denied.');
- notice( t('Unable to import element "' . $name .'" because AllowCode permission is denied.') . EOL);
- $element['import_success'] = 0;
- return $element;
- }
- }
-
-// $z = q("select * from iconfig where v = '%s' and k = '%s' and cat = 'system' limit 1",
-// dbesc($name),
-// dbesc($namespace)
-// );
+ $execflag = channel_codeallowed(local_channel());
$i = q("select id, edited, item_deleted from item where mid = '%s' and uid = %d limit 1",
dbesc($arr['mid']),
diff --git a/include/items.php b/include/items.php
index 36445a46b..3d0f380b4 100755
--- a/include/items.php
+++ b/include/items.php
@@ -248,8 +248,6 @@ function can_comment_on_post($observer_xchan, $item) {
}
if(strstr($item['comment_policy'],'network:') && strstr($item['comment_policy'],'red'))
return true;
- if(strstr($item['comment_policy'],'network:') && strstr($item['comment_policy'],'diaspora'))
- return true;
if(strstr($item['comment_policy'],'site:') && strstr($item['comment_policy'],App::get_hostname()))
return true;
@@ -336,18 +334,6 @@ function post_activity_item($arr,$allow_code = false,$deliver = true) {
if(! array_key_exists('mimetype',$arr))
$arr['mimetype'] = 'text/bbcode';
- if(array_key_exists('item_private',$arr) && $arr['item_private']) {
-
- $arr['body'] = trim(z_input_filter($arr['uid'],$arr['body'],$arr['mimetype']));
-
- if($channel) {
- if($channel['channel_hash'] === $arr['author_xchan']) {
- $arr['sig'] = base64url_encode(rsa_sign($arr['body'],$channel['channel_prvkey']));
- $arr['item_verified'] = 1;
- }
- }
- }
-
$arr['mid'] = ((x($arr,'mid')) ? $arr['mid'] : item_message_id());
$arr['parent_mid'] = ((x($arr,'parent_mid')) ? $arr['parent_mid'] : $arr['mid']);
$arr['thr_parent'] = ((x($arr,'thr_parent')) ? $arr['thr_parent'] : $arr['mid']);
@@ -542,12 +528,7 @@ function get_item_elements($x,$allow_code = false) {
$arr = array();
- if($allow_code)
- $arr['body'] = $x['body'];
- else
- $arr['body'] = (($x['body']) ? htmlspecialchars($x['body'],ENT_COMPAT,'UTF-8',false) : '');
-
- $key = get_config('system','pubkey');
+ $arr['body'] = $x['body'];
$maxlen = get_max_import_size();
@@ -602,11 +583,6 @@ function get_item_elements($x,$allow_code = false) {
$arr['sig'] = (($x['signature']) ? htmlspecialchars($x['signature'], ENT_COMPAT,'UTF-8',false) : '');
- if(array_key_exists('diaspora_signature',$x) && is_array($x['diaspora_signature']))
- $x['diaspora_signature'] = json_encode($x['diaspora_signature']);
-
- $arr['diaspora_meta'] = (($x['diaspora_signature']) ? $x['diaspora_signature'] : '');
-
$arr['obj'] = activity_sanitise($x['object']);
$arr['target'] = activity_sanitise($x['target']);
@@ -659,7 +635,17 @@ function get_item_elements($x,$allow_code = false) {
return array();
}
+ // Check signature on the body text received.
+ // This presents an issue that we aren't verifying the text that is actually displayed
+ // on this site. We are however verifying the received text was exactly as received.
+ // We have every right to strip content that poses a security risk. You are welcome to
+ // create a plugin to verify the content after filtering if this offends you.
+
if($arr['sig']) {
+
+ // check the supplied signature against the supplied content.
+ // Note that we will purify the content which could change it.
+
$r = q("select xchan_pubkey from xchan where xchan_hash = '%s' limit 1",
dbesc($arr['author_xchan'])
);
@@ -669,6 +655,14 @@ function get_item_elements($x,$allow_code = false) {
logger('get_item_elements: message verification failed.');
}
+ // if the input is markdown, remove one level of html escaping.
+ // It will be re-applied in item_store() and/or item_store_update().
+ // Do this after signature checking as the original signature
+ // was generated on the escaped content.
+
+ if($arr['mimetype'] === 'text/markdown')
+ $arr['body'] = \Zotlabs\Lib\MarkdownSoap::unescape($arr['body']);
+
if(array_key_exists('revision',$x)) {
// extended export encoding
@@ -771,8 +765,6 @@ function import_author_xchan($x) {
if((! array_key_exists('network', $x)) || ($x['network'] === 'zot')) {
$y = import_author_zot($x);
}
- if(! $y)
- $y = import_author_diaspora($x);
if($x['network'] === 'rss') {
$y = import_author_rss($x);
@@ -786,36 +778,6 @@ function import_author_xchan($x) {
}
/**
- * @brief Imports an author from Diaspora.
- *
- * @param array $x an associative array with
- * * \e string \b address
- * @return boolean|string false on error, otherwise xchan_hash of the new entry
- */
-function import_author_diaspora($x) {
- if(! $x['address'])
- return false;
-
- $r = q("select * from xchan where xchan_addr = '%s' limit 1",
- dbesc($x['address'])
- );
- if($r) {
- logger('in_cache: ' . $x['address'], LOGGER_DATA);
- return $r[0]['xchan_hash'];
- }
-
- if(discover_by_webbie($x['address'])) {
- $r = q("select xchan_hash from xchan where xchan_addr = '%s' limit 1",
- dbesc($x['address'])
- );
- if($r)
- return $r[0]['xchan_hash'];
- }
-
- return false;
-}
-
-/**
* @brief Imports an author from a RSS feed.
*
* @param array $x an associative array with
@@ -824,6 +786,7 @@ function import_author_diaspora($x) {
* * \e string \b guid
* @return boolean|string
*/
+
function import_author_rss($x) {
if(! $x['url'])
return false;
@@ -1037,17 +1000,7 @@ function encode_item($item,$mirror = false) {
if($item['iconfig'])
$x['meta'] = encode_item_meta($item['iconfig'],$mirror);
- if($item['diaspora_meta']) {
- $z = json_decode($item['diaspora_meta'],true);
- if($z) {
- if(is_array($z) && array_key_exists('iv',$z))
- $x['diaspora_signature'] = crypto_unencapsulate($z,$key);
- else
- $x['diaspora_signature'] = $z;
- if(! is_array($z))
- logger('encode_item: diaspora meta is not an array: ' . print_r($z,true));
- }
- }
+
logger('encode_item: ' . print_r($x,true), LOGGER_DATA);
return $x;
@@ -1326,7 +1279,6 @@ function encode_mail($item,$extended = false) {
$x['message_parent'] = $item['parent_mid'];
$x['created'] = $item['created'];
$x['expires'] = $item['expires'];
- $x['diaspora_meta'] = $item['diaspora_meta'];
$x['title'] = $item['title'];
$x['body'] = $item['body'];
$x['from'] = encode_item_xchan($item['from']);
@@ -1456,6 +1408,26 @@ function get_profile_elements($x) {
}
+
+
+function item_sign(&$item) {
+
+ if(array_key_exists('sig',$item) && $item['sig'])
+ return;
+
+ $r = q("select channel_prvkey from channel where channel_id = %d and channel_hash = '%s' ",
+ intval($item['uid']),
+ dbesc($item['author_xchan'])
+ );
+ if(! $r)
+ return;
+
+ $item['sig'] = base64url_encode(rsa_sign($item['body'],$r[0]['channel_prvkey']));
+ $item['item_verified'] = 1;
+
+}
+
+
/**
* @brief
*
@@ -1519,7 +1491,6 @@ function item_store($arr, $allow_exec = false, $deliver = true) {
$arr['title'] = ((array_key_exists('title',$arr) && strlen($arr['title'])) ? trim($arr['title']) : '');
$arr['body'] = ((array_key_exists('body',$arr) && strlen($arr['body'])) ? trim($arr['body']) : '');
- $arr['diaspora_meta'] = ((x($arr,'diaspora_meta')) ? $arr['diaspora_meta'] : '');
$arr['allow_cid'] = ((x($arr,'allow_cid')) ? trim($arr['allow_cid']) : '');
$arr['allow_gid'] = ((x($arr,'allow_gid')) ? trim($arr['allow_gid']) : '');
$arr['deny_cid'] = ((x($arr,'deny_cid')) ? trim($arr['deny_cid']) : '');
@@ -1533,35 +1504,30 @@ function item_store($arr, $allow_exec = false, $deliver = true) {
// obsolete, but needed so as not to throw not-null constraints on some database driveres
$arr['item_flags'] = ((x($arr,'item_flags')) ? intval($arr['item_flags']) : 0 );
- // only detect language if we have text content, and if the post is private but not yet
- // obscured, make it so.
- if((! array_key_exists('item_obscured',$arr)) || $arr['item_obscured'] == 0) {
- $arr['lang'] = detect_language($arr['body']);
- // apply the input filter here - if it is obscured it has been filtered already
- $arr['body'] = trim(z_input_filter($arr['uid'],$arr['body'],$arr['mimetype']));
+ $arr['lang'] = detect_language($arr['body']);
- if(local_channel() && (local_channel() == $arr['uid']) && (! $arr['sig'])) {
- $channel = App::get_channel();
- if($channel['channel_hash'] === $arr['author_xchan']) {
- $arr['sig'] = base64url_encode(rsa_sign($arr['body'],$channel['channel_prvkey']));
- $arr['item_verified'] = 1;
- }
- }
+ // apply the input filter here
- $allowed_languages = get_pconfig($arr['uid'],'system','allowed_languages');
+ $arr['body'] = trim(z_input_filter($arr['body'],$arr['mimetype'],$allow_exec));
- if((is_array($allowed_languages)) && ($arr['lang']) && (! array_key_exists($arr['lang'],$allowed_languages))) {
- $translate = array('item' => $arr, 'from' => $arr['lang'], 'to' => $allowed_languages, 'translated' => false);
- call_hooks('item_translate', $translate);
- if((! $translate['translated']) && (intval(get_pconfig($arr['uid'],'system','reject_disallowed_languages')))) {
- logger('item_store: language ' . $arr['lang'] . ' not accepted for uid ' . $arr['uid']);
- $ret['message'] = 'language not accepted';
- return $ret;
- }
- $arr = $translate['item'];
+ item_sign($arr);
+
+ if(! array_key_exists('sig',$arr))
+ $arr['sig'] = '';
+
+ $allowed_languages = get_pconfig($arr['uid'],'system','allowed_languages');
+
+ if((is_array($allowed_languages)) && ($arr['lang']) && (! array_key_exists($arr['lang'],$allowed_languages))) {
+ $translate = array('item' => $arr, 'from' => $arr['lang'], 'to' => $allowed_languages, 'translated' => false);
+ call_hooks('item_translate', $translate);
+ if((! $translate['translated']) && (intval(get_pconfig($arr['uid'],'system','reject_disallowed_languages')))) {
+ logger('item_store: language ' . $arr['lang'] . ' not accepted for uid ' . $arr['uid']);
+ $ret['message'] = 'language not accepted';
+ return $ret;
}
+ $arr = $translate['item'];
}
if((x($arr,'obj')) && is_array($arr['obj'])) {
@@ -1957,33 +1923,25 @@ function item_store_update($arr,$allow_exec = false, $deliver = true) {
return $ret;
}
- if((! array_key_exists('item_obscured', $arr)) || $arr['item_obscured'] == 0) {
+ $arr['lang'] = detect_language($arr['body']);
- $arr['lang'] = detect_language($arr['body']);
+ // apply the input filter here
- // apply the input filter here - if it is obscured it has been filtered already
- $arr['body'] = trim(z_input_filter($arr['uid'],$arr['body'],$arr['mimetype']));
+ $arr['body'] = trim(z_input_filter($arr['body'],$arr['mimetype'],$allow_exec));
- if(local_channel() && (local_channel() == $arr['uid']) && (! $arr['sig'])) {
- $channel = App::get_channel();
- if($channel['channel_hash'] === $arr['author_xchan']) {
- $arr['sig'] = base64url_encode(rsa_sign($arr['body'],$channel['channel_prvkey']));
- $arr['item_verified'] = 1;
- }
- }
+ item_sign($arr);
- $allowed_languages = get_pconfig($arr['uid'],'system','allowed_languages');
+ $allowed_languages = get_pconfig($arr['uid'],'system','allowed_languages');
- if((is_array($allowed_languages)) && ($arr['lang']) && (! array_key_exists($arr['lang'],$allowed_languages))) {
- $translate = array('item' => $arr, 'from' => $arr['lang'], 'to' => $allowed_languages, 'translated' => false);
- call_hooks('item_translate', $translate);
- if((! $translate['translated']) && (intval(get_pconfig($arr['uid'],'system','reject_disallowed_languages')))) {
- logger('item_store: language ' . $arr['lang'] . ' not accepted for uid ' . $arr['uid']);
- $ret['message'] = 'language not accepted';
- return $ret;
- }
- $arr = $translate['item'];
+ if((is_array($allowed_languages)) && ($arr['lang']) && (! array_key_exists($arr['lang'],$allowed_languages))) {
+ $translate = array('item' => $arr, 'from' => $arr['lang'], 'to' => $allowed_languages, 'translated' => false);
+ call_hooks('item_translate', $translate);
+ if((! $translate['translated']) && (intval(get_pconfig($arr['uid'],'system','reject_disallowed_languages')))) {
+ logger('item_store: language ' . $arr['lang'] . ' not accepted for uid ' . $arr['uid']);
+ $ret['message'] = 'language not accepted';
+ return $ret;
}
+ $arr = $translate['item'];
}
if((x($arr,'obj')) && is_array($arr['obj'])) {
@@ -2029,7 +1987,7 @@ function item_store_update($arr,$allow_exec = false, $deliver = true) {
$arr['changed'] = $orig[0]['changed'];
$arr['route'] = ((array_key_exists('route',$arr)) ? trim($arr['route']) : $orig[0]['route']);
- $arr['diaspora_meta'] = ((x($arr,'diaspora_meta')) ? $arr['diaspora_meta'] : $orig[0]['diaspora_meta']);
+
$arr['location'] = ((x($arr,'location')) ? notags(trim($arr['location'])) : $orig[0]['location']);
$arr['coord'] = ((x($arr,'coord')) ? notags(trim($arr['coord'])) : $orig[0]['coord']);
$arr['verb'] = ((x($arr,'verb')) ? notags(trim($arr['verb'])) : $orig[0]['verb']);
@@ -2188,55 +2146,6 @@ function item_store_update($arr,$allow_exec = false, $deliver = true) {
-function store_diaspora_comment_sig($datarray, $channel, $parent_item, $post_id, $walltowall = false) {
-
- // We won't be able to sign Diaspora comments for authenticated visitors
- // - we don't have their private key
-
- // since Diaspora doesn't handle edits we can only do this for the original text and not update it.
-
- require_once('include/markdown.php');
- $signed_body = bb2diaspora_itembody($datarray,$walltowall);
-
- if($walltowall) {
- logger('wall to wall comment',LOGGER_DEBUG);
- // post will come across with the owner's identity. Throw a preamble onto the post to indicate the true author.
- $signed_body = "\n\n"
- . '![' . $datarray['author']['xchan_name'] . '](' . $datarray['author']['xchan_photo_m'] . ')'
- . '[' . $datarray['author']['xchan_name'] . '](' . $datarray['author']['xchan_url'] . ')' . "\n\n"
- . $signed_body;
- }
-
- logger('storing diaspora comment signature',LOGGER_DEBUG);
-
- $diaspora_handle = channel_reddress($channel);
-
- $signed_text = $datarray['mid'] . ';' . $parent_item['mid'] . ';' . $signed_body . ';' . $diaspora_handle;
-
-
- if( $channel && $channel['channel_prvkey'] )
- $authorsig = base64_encode(rsa_sign($signed_text, $channel['channel_prvkey'], 'sha256'));
- else
- $authorsig = '';
-
- $x = array('signer' => $diaspora_handle, 'body' => $signed_body, 'signed_text' => $signed_text, 'signature' => $authorsig);
-
- $y = json_encode($x);
-
- $r = q("update item set diaspora_meta = '%s' where id = %d",
- dbesc($y),
- intval($post_id)
- );
-
-
- if(! $r)
- logger('store_diaspora_comment_sig: DB write failed');
-
- return;
-}
-
-
-
function send_status_notifications($post_id,$item) {
// only send notifications for comments
@@ -3773,7 +3682,7 @@ function zot_feed($uid,$observer_hash,$arr) {
if(! is_sys_channel($uid))
$sql_extra = item_permissions_sql($uid,$observer_hash);
- $limit = " LIMIT 100 ";
+ $limit = " LIMIT 5000 ";
if($mindate > NULL_DATE) {
$sql_extra .= " and ( created > '$mindate' or changed > '$mindate' ) ";
@@ -3785,15 +3694,7 @@ function zot_feed($uid,$observer_hash,$arr) {
}
- $items = array();
-
- /** @FIXME re-unite these SQL statements. There is no need for them to be separate. The mySQL is convoluted with misuse of group by. As it stands, there is a slight difference where the postgres version doesn't remove the duplicate parents up to 100. In practice this doesn't matter. It could be made to match behavior by adding "distinct on (parent) " to the front of the selection list, at a not-worth-it performance penalty (page temp results to disk). duplicates are still ignored in the in() clause, you just get less than 100 parents if there are many children. */
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $groupby = '';
- } else {
- $groupby = 'GROUP BY parent';
- }
+ $items = [];
$item_normal = item_normal();
@@ -3802,7 +3703,7 @@ function zot_feed($uid,$observer_hash,$arr) {
WHERE uid != %d
$item_normal
AND item_wall = 1
- and item_private = 0 $sql_extra $groupby ORDER BY created ASC $limit",
+ and item_private = 0 $sql_extra ORDER BY created ASC $limit",
intval($uid)
);
}
@@ -3810,19 +3711,25 @@ function zot_feed($uid,$observer_hash,$arr) {
$r = q("SELECT parent, created, postopts from item
WHERE uid = %d $item_normal
AND item_wall = 1
- $sql_extra $groupby ORDER BY created ASC $limit",
+ $sql_extra ORDER BY created ASC $limit",
intval($uid)
);
}
+ $parents = [];
+
if($r) {
- for($x = 0; $x < count($r); $x ++) {
- if(strpos($r[$x]['postopts'],'nodeliver') !== false) {
- unset($r[$x]);
- }
+ foreach($r as $rv) {
+ if(array_key_exists($rv['parent'],$parents))
+ continue;
+ if(strpos($rv['postopts'],'nodeliver') !== false)
+ continue;
+ $parents[$rv['parent']] = $rv;
+ if(count($parents) > 200)
+ break;
}
- $parents_str = ids_to_querystr($r,'parent');
+ $parents_str = ids_to_querystr($parents,'parent');
$sys_query = ((is_sys_channel($uid)) ? $sql_extra : '');
$item_normal = item_normal();
diff --git a/include/markdown.php b/include/markdown.php
index 7e1f1c42c..841540357 100644
--- a/include/markdown.php
+++ b/include/markdown.php
@@ -81,70 +81,6 @@ function share_unshield($m) {
return str_replace($m[1], base64url_decode($x), $m[0]);
}
-
-function diaspora_mention_callback($matches) {
-
- $webbie = $matches[2] . '@' . $matches[3];
- $link = '';
- if($webbie) {
- $r = q("select * from hubloc left join xchan on hubloc_hash = xchan_hash where hubloc_addr = '%s' limit 1",
- dbesc($webbie)
- );
- if(! $r) {
- $x = discover_by_webbie($webbie);
- if($x) {
- $r = q("select * from hubloc left join xchan on hubloc_hash = xchan_hash where hubloc_addr = '%s' limit 1",
- dbesc($webbie)
- );
- }
- }
- if($r)
- $link = $r[0]['xchan_url'];
- }
- if(! $link)
- $link = 'https://' . $matches[3] . '/u/' . $matches[2];
-
- if($r && $r[0]['hubloc_network'] === 'zot')
- return '@[zrl=' . $link . ']' . trim($matches[1]) . ((substr($matches[0],-1,1) === '+') ? '+' : '') . '[/zrl]' ;
- else
- return '@[url=' . $link . ']' . trim($matches[1]) . ((substr($matches[0],-1,1) === '+') ? '+' : '') . '[/url]' ;
-
-}
-
-function diaspora_mention_callback2($matches) {
-
- $webbie = $matches[1] . '@' . $matches[2];
- $link = '';
- if($webbie) {
- $r = q("select * from hubloc left join xchan on hubloc_hash = xchan_hash where hubloc_addr = '%s' limit 1",
- dbesc($webbie)
- );
- if(! $r) {
- $x = discover_by_webbie($webbie);
- if($x) {
- $r = q("select * from hubloc left join xchan on hubloc_hash = xchan_hash where hubloc_addr = '%s' limit 1",
- dbesc($webbie)
- );
- }
- }
- if($r)
- $link = $r[0]['xchan_url'];
- }
-
- $name = (($r) ? $r[0]['xchan_name'] : $matches[1]);
-
- if(! $link)
- $link = 'https://' . $matches[2] . '/u/' . $matches[1];
-
- if($r && $r[0]['hubloc_network'] === 'zot')
- return '@[zrl=' . $link . ']' . trim($name) . ((substr($matches[0],-1,1) === '+') ? '+' : '') . '[/zrl]' ;
- else
- return '@[url=' . $link . ']' . trim($name) . ((substr($matches[0],-1,1) === '+') ? '+' : '') . '[/url]' ;
-
-}
-
-
-
/**
* @brief
*
@@ -157,28 +93,29 @@ function diaspora_mention_callback2($matches) {
* @param boolean $use_zrl default false
* @return string
*/
-function markdown_to_bb($s, $use_zrl = false) {
- $s = str_replace("&#xD;","\r",$s);
- $s = str_replace("&#xD;\n&gt;","",$s);
+function markdown_to_bb($s, $use_zrl = false, $options = []) {
+
if(is_array($s)) {
btlogger('markdown_to_bb called with array. ' . print_r($s,true), LOGGER_NORMAL, LOG_WARNING);
return '';
}
+
+ $s = str_replace("&#xD;","\r",$s);
+ $s = str_replace("&#xD;\n&gt;","",$s);
+
$s = html_entity_decode($s,ENT_COMPAT,'UTF-8');
// if empty link text replace with the url
$s = preg_replace("/\[\]\((.*?)\)/ism",'[$1]($1)',$s);
- // first try plustags
+ $x = [ 'text' => $s , 'zrl' => $use_zrl, 'options' => $options ];
- $s = preg_replace_callback('/\@\{(.+?)\; (.+?)\@(.+?)\}\+/','diaspora_mention_callback',$s);
- $s = preg_replace_callback('/\@\{(.+?)\; (.+?)\@(.+?)\}/','diaspora_mention_callback',$s);
+ call_hooks('markdown_to_bb_init',$x);
- $s = preg_replace_callback('/\@\{(.+?)\@(.+?)\}\+/','diaspora_mention_callback2',$s);
- $s = preg_replace_callback('/\@\{(.+?)\@(.+?)\}/','diaspora_mention_callback2',$s);
+ $s = $x['text'];
// Escaping the hash tags - doesn't always seem to work
// $s = preg_replace('/\#([^\s\#])/','\\#$1',$s);
@@ -193,9 +130,6 @@ function markdown_to_bb($s, $use_zrl = false) {
$s = html2bbcode($s);
- // protect the recycle symbol from turning into a tag, but without unescaping angles and naked ampersands
- $s = str_replace('&#x2672;',html_entity_decode('&#x2672;',ENT_QUOTES,'UTF-8'),$s);
-
// Convert everything that looks like a link to a link
if($use_zrl) {
$s = str_replace(array('[img','/img]'),array('[zmg','/zmg]'),$s);
@@ -217,350 +151,3 @@ function markdown_to_bb($s, $use_zrl = false) {
}
-function stripdcode_br_cb($s) {
- return '[code]' . str_replace('<br />', "\n\t", $s[1]) . '[/code]';
-}
-
-
-//////////////////////
-// The following "diaspora_ul" and "diaspora_ol" are only appropriate for the
-// pre-Markdownify conversion. If Markdownify isn't used, use the non-Markdownify
-// versions below
-//////////////////////
-/*
-function diaspora_ul($s) {
- // Replace "[*]" followed by any number (including zero) of
- // spaces by "* " to match Diaspora's list format
- if( strpos($s[0], "[list]") === 0 )
- return '<ul class="listbullet" style="list-style-type: circle;">' . preg_replace("/\[\*\]( *)/", "* ", $s[1]) . '</ul>';
- elseif( strpos($s[0], "[ul]") === 0 )
- return '<ul class="listbullet" style="list-style-type: circle;">' . preg_replace("/\[\*\]( *)/", "* ", $s[1]) . '</ul>';
- else
- return $s[0];
-}
-
-
-function diaspora_ol($s) {
- // A hack: Diaspora will create a properly-numbered ordered list even
- // if you use '1.' for each element of the list, like:
- // 1. First element
- // 1. Second element
- // 1. Third element
- if( strpos($s[0], "[list=1]") === 0 )
- return '<ul class="listdecimal" style="list-style-type: decimal;">' . preg_replace("/\[\*\]( *)/", "1. ", $s[1]) . '</ul>';
- elseif( strpos($s[0], "[list=i]") === 0 )
- return '<ul class="listlowerroman" style="list-style-type: lower-roman;">' . preg_replace("/\[\*\]( *)/", "1. ", $s[1]) . '</ul>';
- elseif( strpos($s[0], "[list=I]") === 0 )
- return '<ul class="listupperroman" style="list-style-type: upper-roman;">' . preg_replace("/\[\*\]( *)/", "1. ", $s[1]) . '</ul>';
- elseif( strpos($s[0], "[list=a]") === 0 )
- return '<ul class="listloweralpha" style="list-style-type: lower-alpha;">' . preg_replace("/\[\*\]( *)/", "1. ", $s[1]) . '</ul>';
- elseif( strpos($s[0], "[list=A]") === 0 )
- return '<ul class="listupperalpha" style="list-style-type: upper-alpha;">' . preg_replace("/\[\*\]( *)/", "1. ", $s[1]) . '</ul>';
- elseif( strpos($s[0], "[ol]") === 0 )
- return '<ul class="listdecimal" style="list-style-type: decimal;">' . preg_replace("/\[\*\]( *)/", "1. ", $s[1]) . '</ul>';
- else
- return $s[0];
-}
-*/
-
-//////////////////////
-// Non-Markdownify versions of "diaspora_ol" and "diaspora_ul"
-//////////////////////
-/**
- * @brief
- *
- * Replace "[\\*]" followed by any number (including zero) of
- * spaces by "* " to match Diaspora's list format.
- *
- * @param string $s
- * @return string
- */
-function diaspora_ul($s) {
- return preg_replace("/\[\\\\\*\]( *)/", "* ", $s[1]);
-}
-
-/**
- * @brief
- *
- * A hack: Diaspora will create a properly-numbered ordered list even
- * if you use '1.' for each element of the list, like:
- * \code
- * 1. First element
- * 1. Second element
- * 1. Third element
- * \endcode
- * @param string $s
- * @return string
- */
-function diaspora_ol($s) {
- return preg_replace("/\[\\\\\*\]( *)/", "1. ", $s[1]);
-}
-
-function bb2dmention_callback($match) {
-
- $r = q("select xchan_addr from xchan where xchan_url = '%s'",
- dbesc($match[2])
- );
-
- if($r)
- return '@{' . $match[3] . ' ; ' . $r[0]['xchan_addr'] . '}';
-
- return '@' . $match[3];
-}
-
-
-function bb2diaspora_itemwallwall(&$item,$uplink = false) {
-
- // We will provide wallwall (embedded author on the Diaspora side) if
- // 1. It is a wall-to-wall post
- // 2. A comment arrived which has no Diaspora signature info
-
-
- $wallwall = false;
- $author_exists = true;
-
- if(! array_key_exists('author',$item)) {
- $author_exists = false;
- logger('bb2diaspora_itemwallwall: no author');
- $r = q("select * from xchan where xchan_hash = '%s' limit 1",
- dbesc($item['author_xchan'])
- );
- if($r)
- $item['author'] = $r[0];
- }
-
- $has_meta = false;
- if($item['diaspora_meta'] || get_iconfig($item,'diaspora','fields'))
- $has_meta = true;
-
- if($item['author_xchan'] != $item['owner_xchan']) {
- if($item['mid'] == $item['parent_mid'])
- $wallwall = true;
- else {
- if(! $has_meta) {
- $wallwall = true;
- }
- }
- }
-
- if($uplink)
- $wallwall = true;
-
- if(($wallwall) && (is_array($item['author'])) && $item['author']['xchan_url'] && $item['author']['xchan_name'] && $item['author']['xchan_photo_s']) {
- logger('bb2diaspora_itemwallwall: wall to wall post',LOGGER_DEBUG);
- // post will come across with the owner's identity. Throw a preamble onto the post to indicate the true author.
- $item['body'] = "\n\n"
- . '[quote]'
- . '[img]' . $item['author']['xchan_photo_s'] . '[/img]'
- . ' '
- . '[url=' . $item['author']['xchan_url'] . '][b]' . $item['author']['xchan_name'] . '[/b][/url]' . "\n\n"
- . $item['body']
- . '[/quote]';
- }
-
- // $item['author'] might cause a surprise further down the line if it wasn't expected to be here.
-
- if(! $author_exists)
- unset($item['author']);
-}
-
-
-function bb2diaspora_itembody($item, $force_update = false, $have_channel = false, $uplink = false) {
-
- if(! get_iconfig($item,'diaspora','fields')) {
- $force_update = true;
- }
-
- $matches = array();
-
- if(($item['diaspora_meta']) && (! $force_update)) {
- $diaspora_meta = json_decode($item['diaspora_meta'],true);
- if($diaspora_meta) {
- if(array_key_exists('iv',$diaspora_meta)) {
- $key = get_config('system','prvkey');
- $meta = json_decode(crypto_unencapsulate($diaspora_meta,$key),true);
- }
- else {
- $meta = $diaspora_meta;
- }
- if($meta) {
- logger('bb2diaspora_itembody: cached ');
- $newitem = $item;
- $newitem['body'] = $meta['body'];
- return $newitem['body'];
- }
- }
- }
-
- create_export_photo_body($item);
-
- $newitem = $item;
-
- if(array_key_exists('item_obscured',$item) && intval($item['item_obscured'])) {
- $key = get_config('system','prvkey');
- $b = json_decode($item['body'],true);
- // if called from diaspora_process_outbound, this decoding has already been done.
- // Everything else that calls us will not yet be decoded.
- if($b && is_array($b) && array_key_exists('iv',$b)) {
- $newitem['title'] = (($item['title']) ? crypto_unencapsulate(json_decode($item['title'],true),$key) : '');
- $newitem['body'] = (($item['body']) ? crypto_unencapsulate(json_decode($item['body'],true),$key) : '');
- }
- }
-
- if(! $have_channel)
- bb2diaspora_itemwallwall($newitem,$uplink);
-
- $title = $newitem['title'];
- $body = preg_replace('/\#\^http/i', 'http', $newitem['body']);
-
- // protect tags and mentions from hijacking
-
- if(intval(get_pconfig($item['uid'],'system','prevent_tag_hijacking'))) {
- $new_tag = html_entity_decode('&#x22d5;',ENT_COMPAT,'UTF-8');
- $new_mention = html_entity_decode('&#xff20;',ENT_COMPAT,'UTF-8');
-
- // #-tags
- $body = preg_replace('/\#\[url/i', $new_tag . '[url', $body);
- $body = preg_replace('/\#\[zrl/i', $new_tag . '[zrl', $body);
- // @-mentions
- $body = preg_replace('/\@\!?\[url/i', $new_mention . '[url', $body);
- $body = preg_replace('/\@\!?\[zrl/i', $new_mention . '[zrl', $body);
- }
-
- // remove multiple newlines
- do {
- $oldbody = $body;
- $body = str_replace("\n\n\n", "\n\n", $body);
- } while ($oldbody != $body);
-
- $body = bb2diaspora($body);
-
- if(strlen($title))
- $body = "## " . $title . "\n\n" . $body;
-
- if($item['attach']) {
- $cnt = preg_match_all('/href=\"(.*?)\"(.*?)title=\"(.*?)\"/ism', $item['attach'], $matches, PREG_SET_ORDER);
- if($cnt) {
- $body .= "\n" . t('Attachments:') . "\n";
- foreach($matches as $mtch) {
- $body .= '[' . $mtch[3] . '](' . $mtch[1] . ')' . "\n";
- }
- }
- }
-
-// logger('bb2diaspora_itembody : ' . $body, LOGGER_DATA);
-
- return html_entity_decode($body);
-}
-
-function bb2diaspora($Text, $preserve_nl = false, $fordiaspora = true) {
-
- // Re-enabling the converter again.
- // The bbcode parser now handles youtube-links (and the other stuff) correctly.
- // Additionally the html code is now fixed so that lists are now working.
-
- /*
- * Transform #tags, strip off the [url] and replace spaces with underscore
- */
- $Text = preg_replace_callback('/#\[([zu])rl\=(\w+.*?)\](\w+.*?)\[\/[(zu)]rl\]/i', create_function('$match',
- 'return \'#\'. str_replace(\' \', \'_\', $match[3]);'
- ), $Text);
-
- $Text = preg_replace('/#\^\[([zu])rl\=(\w+.*?)\](\w+.*?)\[\/([zu])rl\]/i', '[$1rl=$2]$3[/$4rl]', $Text);
-
- $Text = preg_replace_callback('/\@\!?\[([zu])rl\=(\w+.*?)\](\w+.*?)\[\/([zu])rl\]/i', 'bb2dmention_callback', $Text);
-
- // strip map tags, as the rendering is performed in bbcode() and the resulting output
- // is not compatible with Diaspora (at least in the case of openstreetmap and probably
- // due to the inclusion of an html iframe)
-
- $Text = preg_replace("/\[map\=(.*?)\]/ism", '$1', $Text);
- $Text = preg_replace("/\[map\](.*?)\[\/map\]/ism", '$1', $Text);
-
- // Converting images with size parameters to simple images. Markdown doesn't know it.
- $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $Text);
-
- // the following was added on 10-January-2012 due to an inability of Diaspora's
- // new javascript markdown processor to handle links with images as the link "text"
- // It is not optimal and may be removed if this ability is restored in the future
- //if ($fordiaspora)
- // $Text = preg_replace("/\[url\=([^\[\]]*)\]\s*\[img\](.*?)\[\/img\]\s*\[\/url\]/ism",
- // "[url]$1[/url]\n[img]$2[/img]", $Text);
-
- // Convert it to HTML - don't try oembed
- $Text = bbcode($Text, $preserve_nl, false);
-
- // Markdownify does not preserve previously escaped html entities such as <> and &.
-
- $Text = str_replace(array('&lt;','&gt;','&amp;'),array('&_lt_;','&_gt_;','&_amp_;'),$Text);
-
- // Now convert HTML to Markdown
- $md = new Converter(Converter::LINK_AFTER_CONTENT, false, false);
- $Text = $md->parseString($Text);
-
-
- // It also adds backslashes to our attempt at getting around the html entity preservation for some weird reason.
-
- $Text = str_replace(array('&\\_lt\\_;','&\\_gt\\_;','&\\_amp\\_;'),array('&lt;','&gt;','&amp;'),$Text);
-
- // If the text going into bbcode() has a plain URL in it, i.e.
- // with no [url] tags around it, it will come out of parseString()
- // looking like: <http://url.com>, which gets removed by strip_tags().
- // So take off the angle brackets of any such URL
- $Text = preg_replace("/<http(.*?)>/is", "http$1", $Text);
-
- // Remove empty zrl links
- $Text = preg_replace("/\[zrl\=\].*?\[\/zrl\]/is", "", $Text);
-
- // Remove all unconverted tags
- $Text = strip_tags($Text);
-
- // Remove any leading or trailing whitespace, as this will mess up
- // the Diaspora signature verification and cause the item to disappear
-
- $Text = trim($Text);
-
- call_hooks('bb2diaspora', $Text);
-
- return $Text;
-}
-
-function unescape_underscores_in_links($m) {
- $y = str_replace('\\_','_', $m[2]);
- return('[' . $m[1] . '](' . $y . ')');
-}
-
-function format_event_diaspora($ev) {
-
- if(! ((is_array($ev)) && count($ev)))
- return '';
-
- $bd_format = t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM
-
- $o = t('$Projectname event notification:') . "\n";
-
- $o .= '**' . (($ev['summary']) ? bb2diaspora($ev['summary']) : bb2diaspora($ev['desc'])) . '**' . "\n";
-
- $o .= t('Starts:') . ' ' . '['
- . (($ev['adjust']) ? day_translate(datetime_convert('UTC', 'UTC',
- $ev['start'] , $bd_format ))
- : day_translate(datetime_convert('UTC', 'UTC',
- $ev['start'] , $bd_format)))
- . '](' . z_root() . '/localtime/?f=&time=' . urlencode(datetime_convert('UTC','UTC',$ev['start'])) . ")\n";
-
- if(! $ev['nofinish'])
- $o .= t('Finishes:') . ' ' . '['
- . (($ev['adjust']) ? day_translate(datetime_convert('UTC', 'UTC',
- $ev['finish'] , $bd_format ))
- : day_translate(datetime_convert('UTC', 'UTC',
- $ev['finish'] , $bd_format )))
- . '](' . z_root() . '/localtime/?f=&time=' . urlencode(datetime_convert('UTC','UTC',$ev['finish'])) . ")\n";
-
- if(strlen($ev['location']))
- $o .= t('Location:') . bb2diaspora($ev['location'])
- . "\n";
-
- $o .= "\n";
-
- return $o;
-}
diff --git a/include/network.php b/include/network.php
index 6d1a05e9f..bce59d38c 100644
--- a/include/network.php
+++ b/include/network.php
@@ -984,40 +984,6 @@ function email_header_encode($in_str, $charset = 'UTF-8') {
return $out_str;
}
-function email_send($addr, $subject, $headers, $item) {
- //$headers .= 'MIME-Version: 1.0' . "\n";
- //$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
- //$headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n";
- //$headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
-
- $part = uniqid("", true);
-
- $html = prepare_body($item);
-
- $headers .= "Mime-Version: 1.0\n";
- $headers .= 'Content-Type: multipart/alternative; boundary="=_'.$part.'"'."\n\n";
-
- $body = "\n--=_".$part."\n";
- $body .= "Content-Transfer-Encoding: 8bit\n";
- $body .= "Content-Type: text/plain; charset=utf-8; format=flowed\n\n";
-
- $body .= html2plain($html)."\n";
-
- $body .= "--=_".$part."\n";
- $body .= "Content-Transfer-Encoding: 8bit\n";
- $body .= "Content-Type: text/html; charset=utf-8\n\n";
-
- $body .= '<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">'.$html."</body></html>\n";
-
- $body .= "--=_".$part."--";
-
- //$message = '<html><body>' . $html . '</body></html>';
- //$message = html2plain($html);
- logger('notifier: email delivery to ' . $addr);
- mail($addr, $subject, $body, $headers);
-}
-
-
function discover_by_url($url,$arr = null) {
require_once('library/HTML5/Parser.php');
@@ -1027,10 +993,10 @@ function discover_by_url($url,$arr = null) {
if(! $arr)
return false;
$network = (($arr['network']) ? $arr['network'] : 'unknown');
- $name = (($arr['name']) ? $arr['name'] : 'unknown');
- $photo = (($arr['photo']) ? $arr['photo'] : '');
- $addr = (($arr['addr']) ? $arr['addr'] : '');
- $guid = $url;
+ $name = (($arr['name']) ? $arr['name'] : 'unknown');
+ $photo = (($arr['photo']) ? $arr['photo'] : '');
+ $addr = (($arr['addr']) ? $arr['addr'] : '');
+ $guid = $url;
}
$profile = $url;
@@ -1067,8 +1033,8 @@ function discover_by_url($url,$arr = null) {
if($feed->error())
logger('probe_url: scrape_feed: Error parsing XML: ' . $feed->error());
- $name = unxmlify(trim($feed->get_title()));
- $photo = $feed->get_image_url();
+ $name = unxmlify(trim($feed->get_title()));
+ $photo = $feed->get_image_url();
$author = $feed->get_author();
if($author) {
@@ -1172,23 +1138,11 @@ function discover_by_url($url,$arr = null) {
function discover_by_webbie($webbie) {
- require_once('library/HTML5/Parser.php');
- $result = array();
+ $result = [];
$network = null;
- $diaspora = false;
- $gnusoc = false;
- $dfrn = false;
-
- $has_salmon = false;
- $salmon_key = false;
- $atom_feed = false;
- $diaspora_base = '';
- $diaspora_guid = '';
- $diaspora_key = '';
-
$webbie = strtolower($webbie);
$x = webfinger_rfc7033($webbie,true);
@@ -1214,21 +1168,6 @@ function discover_by_webbie($webbie) {
}
}
}
- if($link['rel'] == NAMESPACE_DFRN) {
- $dfrn = $link['href'];
- }
- if($link['rel'] == 'magic-public-key') {
- if(substr($link['href'],0,5) === 'data:') {
- $salmon_key = convert_salmon_key($link['href']);
- }
- }
- if($link['rel'] == 'salmon') {
- $has_salmon = true;
- $salmon = $link['href'];
- }
- if($link['rel'] == 'http://schemas.google.com/g/2010#updates-from') {
- $atom_feed = $link['href'];
- }
}
}
}
@@ -1240,287 +1179,9 @@ function discover_by_webbie($webbie) {
if($arr['success'])
return true;
- $aliases = array();
-
- // Now let's make some decisions on what we may need
- // to obtain further info
-
- $probe_atom = false;
- $probe_old = false;
- $probe_hcard = false;
-
- $address = '';
- $location = '';
- $nickname = '';
- $fullname = '';
- $avatar = '';
- $pubkey = '';
-
- if(is_array($x)) {
- if(array_key_exists('address',$x))
- $address = $x['address'];
- if(array_key_exists('location',$x))
- $location = $x['location'];
- if(array_key_exists('nickname',$x))
- $nickname = $x['nickname'];
- }
-
- if(! $x)
- $probe_old = true;
-
-
- if((! $dfrn) && (! $has_salmon))
- $probe_old = true;
-
- if($probe_old) {
- $y = old_webfinger($webbie);
- if($y) {
- logger('old_webfinger: ' . print_r($x,true));
- foreach($y as $link) {
- if($link['@attributes']['rel'] === NAMESPACE_DFRN)
- $dfrn = unamp($link['@attributes']['href']);
- if($link['@attributes']['rel'] === 'salmon')
- $notify = unamp($link['@attributes']['href']);
- if($link['@attributes']['rel'] === NAMESPACE_FEED)
- $poll = unamp($link['@attributes']['href']);
- if($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard')
- $hcard = unamp($link['@attributes']['href']);
- if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page')
- $profile = unamp($link['@attributes']['href']);
- if($link['@attributes']['rel'] === 'http://portablecontacts.net/spec/1.0')
- $poco = unamp($link['@attributes']['href']);
- if($link['@attributes']['rel'] === 'http://joindiaspora.com/seed_location') {
- $diaspora_base = unamp($link['@attributes']['href']);
- $diaspora = true;
- }
- if($link['@attributes']['rel'] === 'http://joindiaspora.com/guid') {
- $diaspora_guid = unamp($link['@attributes']['href']);
- $diaspora = true;
- }
- if($link['@attributes']['rel'] === 'diaspora-public-key') {
- $diaspora_key = base64_decode(unamp($link['@attributes']['href']));
- if(strstr($diaspora_key,'RSA '))
- $pubkey = rsatopem($diaspora_key);
- else
- $pubkey = $diaspora_key;
- $diaspora = true;
- }
- if($link['@attributes']['rel'] == 'magic-public-key') {
- if(substr($link['@attributes']['href'],0,5) === 'data:') {
- $salmon_key = convert_salmon_key($link['@attributes']['href']);
- }
- }
- if($link['@attributes']['rel'] == 'salmon') {
- $has_salmon = true;
- $salmon = $link['@attributes']['href'];
- }
-
- if($link['@attributes']['rel'] == 'http://schemas.google.com/g/2010#updates-from') {
- $atom_feed = $link['@attributes']['href'];
- }
- if($link['@attributes']['rel'] === 'alias') {
- $aliases[] = $link['@attributes']['href'];
- }
- if($link['@attributes']['rel'] === 'subject') {
- $subject = $link['@attributes']['href'];
- }
- }
- }
- }
-
- if($subject || $aliases) {
- if(strpos($webbie,'@')) {
- $rhs = substr($webbie,strpos($webbie,'@')+1);
- }
- else {
- $m = parse_url($webbie);
- if($m) {
- $rhs = $m['host'] . (($m['port']) ? ':' . $m['port'] : '');
- }
- }
-
- $v = array('subject' => $subject,'aliases' => $aliases);
- $address = find_webfinger_address($v,$rhs);
- $location = find_webfinger_location($v,$rhs);
- if($address)
- $nickname = substr($address,0,strpos($address,'@'));
-
- }
-
- if($salmon_key && $has_salmon && $atom_feed && (! $dfrn) && (! $diaspora)) {
- $gnusoc = true;
- $probe_atom = true;
- }
-
- if(! $pubkey)
- $pubkey = $salmon_key;
-
- if(($dfrn || $diaspora) && $hcard)
- $probe_hcard = true;
-
- if(! $fullname)
- $fullname = $nickname;
-
- if($probe_atom) {
- $k = z_fetch_url($atom_feed);
- if($k['success'])
- $feed_meta = feed_meta($k['body']);
- if($feed_meta) {
-
- // stash any discovered pubsubhubbub hubs in case we need to follow them
- // this will save an expensive lookup later
-
- if($feed_meta['hubs'] && $address) {
- set_xconfig($address,'system','push_hubs',$feed_meta['hubs']);
- set_xconfig($address,'system','feed_url',$atom_feed);
- }
- if($feed_meta['author']['author_name']) {
- $fullname = $feed_meta['author']['author_name'];
- }
- if(! $avatar) {
- if($feed_meta['author']['author_photo'])
- $avatar = $feed_meta['author']['author_photo'];
- }
-
- // for GNU-social over-ride any url aliases we may have picked up in webfinger
- // The author.uri element in the feed is likely to be more accurate
-
- if($gnusoc && $feed_meta['author']['author_uri'])
- $location = $feed_meta['author']['author_uri'];
- }
- }
- else {
- if($probe_hcard) {
- $vcard = scrape_vcard($hcard);
- if($vcard) {
- logger('vcard: ' . print_r($vcard,true), LOGGER_DATA);
- if($vcard['fn'])
- $fullname = $vcard['fn'];
- if($vcard['photo'] && (strpos($vcard['photo'],'http') !== 0))
- $vcard['photo'] = $diaspora_base . '/' . $vcard['photo'];
- if(($vcard['public_key']) && (! $pubkey)) {
- $diaspora_key = $vcard['public_key'];
- if(strstr($diaspora_key,'RSA '))
- $pubkey = rsatopem($diaspora_key);
- else
- $pubkey = $diaspora_key;
- }
- if(! $avatar)
- $avatar = $vcard['photo'];
- if($diaspora) {
- if(($vcard['uid']) && (! $diaspora_guid))
- $diaspora_guid = $vcard['uid'];
- if(($vcard['url']) && (! $diaspora_base))
- $diaspora_base = $vcard['url'];
-
-
-
-
- }
-
- }
- }
- }
-
- if(($profile) && (! $location))
- $location = $profile;
-
- if($location) {
- $m = parse_url($location);
- $base = $m['scheme'] . '://' . $m['host'];
- $host = $m['host'];
- }
-
-
- if($diaspora && $diaspora_base && $diaspora_guid) {
- if($dfrn)
- $network = 'friendica-over-diaspora';
- else
- $network = 'diaspora';
-
- $base = trim($diaspora_base,'/');
- $notify = $base . '/receive';
-
- }
- else {
- if($gnusoc) {
- $network = 'gnusoc';
- $notify = $salmon;
- }
- }
-
-
- logger('network: ' . $network);
- logger('address: ' . $address);
- logger('fullname: ' . $fullname);
- logger('pubkey: ' . $pubkey);
- logger('location: ' . $location);
-
-
-
- // if we have everything we need, let's create the records
-
- if($network && $address && $fullname && $pubkey && $location) {
- $r = q("select * from xchan where xchan_hash = '%s' limit 1",
- dbesc($address)
- );
- if($r) {
- $r = q("update xchan set xchan_name = '%s', xchan_network = '%s', xchan_name_date = '%s' where xchan_hash = '%s'",
- dbesc($fullname),
- dbesc($network),
- dbesc(datetime_convert()),
- dbesc($address)
- );
- }
- else {
- $r = xchan_store_lowlevel(
- [
- 'xchan_hash' => $address,
- 'xchan_guid' => (($diaspora_guid) ? $diaspora_guid : $location),
- 'xchan_pubkey' => $pubkey,
- 'xchan_addr' => $address,
- 'xchan_url' => $location,
- 'xchan_name' => $fullname,
- 'xchan_name_date' => datetime_convert(),
- 'xchan_network' => $network
- ]
- );
- }
-
- $r = q("select * from hubloc where hubloc_hash = '%s' limit 1",
- dbesc($address)
- );
-
- if(! $r) {
- $r = hubloc_store_lowlevel(
- [
- 'hubloc_guid' => (($diaspora_guid) ? $diaspora_guid : $location),
- 'hubloc_hash' => $address,
- 'hubloc_addr' => $address,
- 'hubloc_network' => $network,
- 'hubloc_url' => $base,
- 'hubloc_host' => $host,
- 'hubloc_callback' => $notify,
- 'hubloc_updated' => datetime_convert(),
- 'hubloc_primary' => 1
- ]
- );
- }
- $photos = import_xchan_photo($avatar,$address);
- $r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
- dbescdate(datetime_convert()),
- dbesc($photos[0]),
- dbesc($photos[1]),
- dbesc($photos[2]),
- dbesc($photos[3]),
- dbesc($address)
- );
- return true;
- }
return false;
-}
-
+}
function webfinger_rfc7033($webbie,$zot = false) {
@@ -1547,88 +1208,13 @@ function webfinger_rfc7033($webbie,$zot = false) {
if($s['success']) {
$j = json_decode($s['body'],true);
-
- // We could have a number of URL aliases and webbies
- // make an executive decision about the most likely "best" of each
- // by comparing against some examples from known networks we're likely to encounter.
- // Otherwise we have to store every alias that we may ever encounter and
- // validate every URL we ever find against every possible alias
-
- // @fixme pump.io is going to be a real bugger since it doesn't return subject or aliases
- // or provide lookup by url
-
- $j['address'] = find_webfinger_address($j,$rhs);
- $j['location'] = find_webfinger_location($j,$rhs);
- if($j['address'])
- $j['nickname'] = substr($j['address'],0,strpos($j['address'],'@'));
- }
- else
- return false;
-
- return($j);
-}
-
-function find_webfinger_address($j,$rhs) {
- if(is_array($j) && ($j)) {
- if(strpos($j['subject'],'acct:') !== false && strpos($j['subject'],'@' . $rhs))
- return str_replace('acct:','',$j['subject']);
- if($j['aliases']) {
- foreach($j['aliases'] as $alias) {
- if(strpos($alias,'acct:') !== false && strpos($alias,'@' . $rhs)) {
- return str_replace('acct:','',$alias);
- }
- }
- }
- }
- return '';
-}
-
-
-function find_webfinger_location($j,$rhs) {
- if(is_array($j) && ($j)) {
- if(strpos($j['subject'],'http') === 0) {
- $x = match_webfinger_location($j['subject'],$rhs);
- if($x)
- return $x;
- }
- if($j['aliases']) {
- foreach($j['aliases'] as $alias) {
- if(strpos($alias,'http') === 0) {
- $x = match_webfinger_location($alias,$rhs);
- if($x)
- return($x);
- }
- }
- }
+ return($j);
}
- return '';
-}
-function match_webfinger_location($s,$h) {
-
- // GNU-social and the older StatusNet - the $host/user/123 form doesn't work
- if(preg_match('|' . $h . '/index.php/user/([0-9]*?)$|',$s))
- return $s;
- // Redmatrix / hubzilla
- if(preg_match('|' . $h . '/channel/|',$s))
- return $s;
- // Friendica
- if(preg_match('|' . $h . '/profile/|',$s))
- return $s;
+ return false;
- $arr = array('test' => $s, 'host' => $h, 'success' => false);
- call_hooks('match_webfinger_location',$arr);
- if($arr['success'])
- return $s;
- return '';
}
-
-
-
-
-
-
function old_webfinger($webbie) {
$host = '';
@@ -1696,9 +1282,6 @@ function fetch_xrd_links($url) {
if ((! $xml) || (! stristr($xml,'<xrd')))
return array();
- // fix diaspora's bad xml
- $xml = str_replace(array('href=&quot;','&quot;/>'),array('href="','"/>'),$xml);
-
$h = parse_xml_string($xml);
if(! $h)
return array();
@@ -1738,85 +1321,6 @@ function fetch_xrd_links($url) {
}
-function scrape_vcard($url) {
-
- $ret = array();
-
- logger('scrape_vcard: url=' . $url);
-
- $x = z_fetch_url($url);
- if(! $x['success'])
- return $ret;
-
- $s = $x['body'];
-
- if(! $s)
- return $ret;
-
- $headers = $x['header'];
- $lines = explode("\n",$headers);
- if(count($lines)) {
- foreach($lines as $line) {
- // don't try and run feeds through the html5 parser
- if(stristr($line,'content-type:') && ((stristr($line,'application/atom+xml')) || (stristr($line,'application/rss+xml'))))
- return ret;
- }
- }
-
- try {
- $dom = HTML5_Parser::parse($s);
- } catch (DOMException $e) {
- logger('scrape_vcard: parse error: ' . $e);
- }
-
- if(! $dom)
- return $ret;
-
- // Pull out hCard profile elements
-
- $largest_photo = 0;
-
- $items = $dom->getElementsByTagName('*');
- foreach($items as $item) {
- if(attribute_contains($item->getAttribute('class'), 'vcard')) {
- $level2 = $item->getElementsByTagName('*');
- foreach($level2 as $x) {
- if(attribute_contains($x->getAttribute('id'),'pod_location'))
- $ret['pod_location'] = $x->textContent;
- if(attribute_contains($x->getAttribute('class'),'fn'))
- $ret['fn'] = $x->textContent;
- if(attribute_contains($x->getAttribute('class'),'uid'))
- $ret['uid'] = $x->textContent;
- if(attribute_contains($x->getAttribute('class'),'nickname'))
- $ret['nick'] = $x->textContent;
- if(attribute_contains($x->getAttribute('class'),'searchable'))
- $ret['searchable'] = $x->textContent;
- if(attribute_contains($x->getAttribute('class'),'key'))
- $ret['public_key'] = $x->textContent;
- if(attribute_contains($x->getAttribute('class'),'given_name'))
- $ret['given_name'] = $x->textContent;
- if(attribute_contains($x->getAttribute('class'),'family_name'))
- $ret['family_name'] = $x->textContent;
- if(attribute_contains($x->getAttribute('class'),'url'))
- $ret['url'] = $x->textContent;
-
- if((attribute_contains($x->getAttribute('class'),'photo'))
- || (attribute_contains($x->getAttribute('class'),'avatar'))) {
- $size = intval($x->getAttribute('width'));
- if(($size > $largest_photo) || (! $largest_photo)) {
- $ret['photo'] = $x->getAttribute('src');
- $largest_photo = $size;
- }
- }
- }
- }
- }
-
- return $ret;
-}
-
-
-
function scrape_feed($url) {
$ret = array();
@@ -1910,31 +1414,6 @@ function scrape_feed($url) {
}
-
-function service_plink($contact, $guid) {
-
- $plink = '';
-
- $m = parse_url($contact['xchan_url']);
- if($m) {
- $url = $m['scheme'] . '://' . $m['host'] . (($m['port']) ? ':' . $m['port'] : '');
- }
- else
- $url = 'https://' . substr($contact['xchan_addr'],strpos($contact['xchan_addr'],'@')+1);
-
- $handle = substr($contact['xchan_addr'], 0, strpos($contact['xchan_addr'],'@'));
-
- if($contact['xchan_network'] === 'diaspora')
- $plink = $url . '/posts/' . $guid;
- if($contact['xchan_network'] === 'friendica-over-diaspora')
- $plink = $url . '/display/' . $handle . '/' . $guid;
- if($contact['xchan_network'] === 'zot')
- $plink = $url . '/channel/' . $handle . '?f=&mid=' . $guid;
-
- return $plink;
-}
-
-
function format_and_send_email($sender,$xchan,$item) {
$title = $item['title'];
@@ -1944,7 +1423,7 @@ function format_and_send_email($sender,$xchan,$item) {
$htmlversion = bbcode(str_replace(array("\\r","\\n"), array("","<br />\n"),$body));
- $banner = t('$Projectname Notification');
+ $banner = t('$Projectname Notification');
$product = t('$projectname'); // PLATFORM_NAME;
$siteurl = z_root();
$thanks = t('Thank You,');
@@ -2132,33 +1611,33 @@ function get_site_info() {
- $data = Array(
- 'version' => $version,
- 'version_tag' => $tag,
- 'server_role' => Zotlabs\Lib\System::get_server_role(),
- 'commit' => $commit,
- 'url' => z_root(),
- 'plugins' => $visible_plugins,
- 'register_policy' => $register_policy[get_config('system','register_policy')],
- 'invitation_only' => intval(get_config('system','invitation_only')),
- 'directory_mode' => $directory_mode[get_config('system','directory_mode')],
- 'language' => get_config('system','language'),
- 'rss_connections' => intval(get_config('system','feed_contacts')),
- 'expiration' => $site_expire,
+ $data = [
+ 'url' => z_root(),
+ 'platform' => Zotlabs\Lib\System::get_platform_name(),
+ 'site_name' => (($site_name) ? $site_name : ''),
+ 'version' => $version,
+ 'version_tag' => $tag,
+ 'server_role' => Zotlabs\Lib\System::get_server_role(),
+ 'commit' => $commit,
+ 'plugins' => $visible_plugins,
+ 'register_policy' => $register_policy[get_config('system','register_policy')],
+ 'invitation_only' => intval(get_config('system','invitation_only')),
+ 'directory_mode' => $directory_mode[get_config('system','directory_mode')],
+ 'language' => get_config('system','language'),
+ 'rss_connections' => intval(get_config('system','feed_contacts')),
+ 'expiration' => $site_expire,
'default_service_restrictions' => $service_class,
- 'locked_features' => $locked_features,
- 'admin' => $admin,
- 'site_name' => (($site_name) ? $site_name : ''),
- 'platform' => Zotlabs\Lib\System::get_platform_name(),
- 'dbdriver' => DBA::$dba->getdriver(),
- 'lastpoll' => get_config('system','lastpoll'),
- 'info' => (($site_info) ? $site_info : ''),
- 'channels_total' => $channels_total_stat,
- 'channels_active_halfyear' => $channels_active_halfyear_stat,
- 'channels_active_monthly' => $channels_active_monthly_stat,
- 'local_posts' => $local_posts_stat,
- 'hide_in_statistics' => $hide_in_statistics
- );
+ 'locked_features' => $locked_features,
+ 'admin' => $admin,
+ 'dbdriver' => DBA::$dba->getdriver(),
+ 'lastpoll' => get_config('system','lastpoll'),
+ 'info' => (($site_info) ? $site_info : ''),
+ 'channels_total' => $channels_total_stat,
+ 'channels_active_halfyear' => $channels_active_halfyear_stat,
+ 'channels_active_monthly' => $channels_active_monthly_stat,
+ 'local_posts' => $local_posts_stat,
+ 'hide_in_statistics' => $hide_in_statistics
+ ];
return $data;
}
diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php
index c8b3c3782..923e34dbe 100644
--- a/include/photo/photo_driver.php
+++ b/include/photo/photo_driver.php
@@ -380,7 +380,7 @@ abstract class photo_driver {
dbesc($p['album']),
intval($this->getHeight()),
intval($this->getWidth()),
- (intval($p['os_storage']) ? dbescbin($p['os_path']) : dbescbin($this->imageString())),
+ (intval($p['os_storage']) ? dbescbin($p['os_syspath']) : dbescbin($this->imageString())),
intval($p['os_storage']),
intval(strlen($this->imageString())),
intval($p['imgscale']),
@@ -411,7 +411,7 @@ abstract class photo_driver {
dbesc($p['album']),
intval($this->getHeight()),
intval($this->getWidth()),
- (intval($p['os_storage']) ? dbescbin($p['os_path']) : dbescbin($this->imageString())),
+ (intval($p['os_storage']) ? dbescbin($p['os_syspath']) : dbescbin($this->imageString())),
intval($p['os_storage']),
intval(strlen($this->imageString())),
intval($p['imgscale']),
@@ -429,90 +429,6 @@ abstract class photo_driver {
return $r;
}
-
- // should be obsolete now
-
- public function store($aid, $uid, $xchan, $rid, $filename, $album, $scale, $usage = PHOTO_NORMAL, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') {
-
- $x = q("select id from photo where resource_id = '%s' and uid = %d and xchan = '%s' and imgscale = %d limit 1",
- dbesc($rid),
- intval($uid),
- dbesc($xchan),
- intval($scale)
- );
- if(count($x)) {
- $r = q("UPDATE photo
- set aid = %d,
- uid = %d,
- xchan = '%s',
- resource_id = '%s',
- created = '%s',
- edited = '%s',
- filename = '%s',
- mimetype = '%s',
- album = '%s',
- height = %d,
- width = %d,
- content = '%s',
- filesize = %d,
- imgscale = %d,
- photo_usage = %d,
- allow_cid = '%s',
- allow_gid = '%s',
- deny_cid = '%s',
- deny_gid = '%s'
- where id = %d",
-
- intval($aid),
- intval($uid),
- dbesc($xchan),
- dbesc($rid),
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
- dbesc(basename($filename)),
- dbesc($this->getType()),
- dbesc($album),
- intval($this->getHeight()),
- intval($this->getWidth()),
- dbescbin($this->imageString()),
- intval(strlen($this->imageString())),
- intval($scale),
- intval($photo_usage),
- dbesc($allow_cid),
- dbesc($allow_gid),
- dbesc($deny_cid),
- dbesc($deny_gid),
- intval($x[0]['id'])
- );
- }
- else {
- $r = q("INSERT INTO photo
- ( aid, uid, xchan, resource_id, created, edited, filename, mimetype, album, height, width, content, filesize, imgscale, photo_usage, allow_cid, allow_gid, deny_cid, deny_gid )
- VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s' )",
- intval($aid),
- intval($uid),
- dbesc($xchan),
- dbesc($rid),
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
- dbesc(basename($filename)),
- dbesc($this->getType()),
- dbesc($album),
- intval($this->getHeight()),
- intval($this->getWidth()),
- dbescbin($this->imageString()),
- intval(strlen($this->imageString())),
- intval($scale),
- intval($photo_usage),
- dbesc($allow_cid),
- dbesc($allow_gid),
- dbesc($deny_cid),
- dbesc($deny_gid)
- );
- }
- return $r;
- }
-
}
diff --git a/include/photos.php b/include/photos.php
index c0f7dc8c4..b4d297bfd 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -17,6 +17,7 @@ require_once('include/text.php');
* @param array $args
* @return array
*/
+
function photo_upload($channel, $observer, $args) {
$ret = array('success' => false);
@@ -28,9 +29,6 @@ function photo_upload($channel, $observer, $args) {
return $ret;
}
-
-//call_hooks('photo_upload_begin', $args);
-
/*
* Determine the album to use
*/
@@ -67,8 +65,8 @@ function photo_upload($channel, $observer, $args) {
$os_storage = 0;
- if($args['os_path'] && $args['getimagesize']) {
- $imagedata = @file_get_contents($args['os_path']);
+ if($args['os_syspath'] && $args['getimagesize']) {
+ $imagedata = @file_get_contents($args['os_syspath']);
$filename = $args['filename'];
$filesize = strlen($imagedata);
// this is going to be deleted if it exists
@@ -90,8 +88,6 @@ function photo_upload($channel, $observer, $args) {
} else {
$f = array('src' => '', 'filename' => '', 'filesize' => 0, 'type' => '');
-// call_hooks('photo_upload_file',$f);
-
if (x($f,'src') && x($f,'filesize')) {
$src = $f['src'];
$filename = $f['filename'];
@@ -153,7 +149,7 @@ function photo_upload($channel, $observer, $args) {
return $ret;
}
- $exif = $ph->orient(($args['os_path']) ? $args['os_path'] : $src);
+ $exif = $ph->orient(($args['os_syspath']) ? $args['os_syspath'] : $src);
@unlink($src);
@@ -180,7 +176,8 @@ function photo_upload($channel, $observer, $args) {
'filename' => $filename, 'album' => $album, 'imgscale' => 0, 'photo_usage' => PHOTO_NORMAL,
'allow_cid' => $ac['allow_cid'], 'allow_gid' => $ac['allow_gid'],
'deny_cid' => $ac['deny_cid'], 'deny_gid' => $ac['deny_gid'],
- 'os_storage' => $os_storage, 'os_path' => $args['os_path']
+ 'os_storage' => $os_storage, 'os_syspath' => $args['os_syspath'],
+ 'os_path' => $args['os_path'], 'display_path' => $args['display_path']
);
if($args['created'])
$p['created'] = $args['created'];
@@ -205,7 +202,7 @@ function photo_upload($channel, $observer, $args) {
$errors = true;
unset($p['os_storage']);
- unset($p['os_path']);
+ unset($p['os_syspath']);
if(($width > 1024 || $height > 1024) && (! $errors))
$ph->scaleImage(1024);
@@ -336,19 +333,13 @@ function photo_upload($channel, $observer, $args) {
if($item['mid'] === $item['parent_mid']) {
$item['body'] = $summary;
+ $item['mimetype'] = 'text/bbcode';
$item['obj_type'] = ACTIVITY_OBJ_PHOTO;
$item['obj'] = json_encode($object);
$item['tgt_type'] = ACTIVITY_OBJ_ALBUM;
$item['target'] = json_encode($target);
- if($item['author_xchan'] === $channel['channel_hash']) {
- $item['sig'] = base64url_encode(rsa_sign($item['body'],$channel['channel_prvkey']));
- $item['item_verified'] = 1;
- }
- else {
- $item['sig'] = '';
- }
$force = true;
}
@@ -374,37 +365,37 @@ function photo_upload($channel, $observer, $args) {
else {
$mid = item_message_id();
- $arr = array();
-
- if($lat && $lon)
- $arr['coord'] = $lat . ' ' . $lon;
+ $arr = [
+ 'aid' => $account_id,
+ 'uid' => $channel_id,
+ 'mid' => $mid,
+ 'parent_mid' => $mid,
+ 'item_hidden' => $item_hidden,
+ 'resource_type' => 'photo',
+ 'resource_id' => $photo_hash,
+ 'owner_xchan' => $channel['channel_hash'],
+ 'author_xchan' => $observer['xchan_hash'],
+ 'title' => $title,
+ 'allow_cid' => $ac['allow_cid'],
+ 'allow_gid' => $ac['allow_gid'],
+ 'deny_cid' => $ac['deny_cid'],
+ 'deny_gid' => $ac['deny_gid'],
+ 'verb' => ACTIVITY_POST,
+ 'obj_type' => ACTIVITY_OBJ_PHOTO,
+ 'obj' => json_encode($object),
+ 'tgt_type' => ACTIVITY_OBJ_ALBUM,
+ 'target' => json_encode($target),
+ 'item_wall' => $visible,
+ 'item_origin' => 1,
+ 'item_thread_top' => 1,
+ 'item_private' => intval($acl->is_private()),
+ 'body' => $summary
+ ];
- $arr['aid'] = $account_id;
- $arr['uid'] = $channel_id;
- $arr['mid'] = $mid;
- $arr['parent_mid'] = $mid;
- $arr['item_hidden'] = $item_hidden;
- $arr['resource_type'] = 'photo';
- $arr['resource_id'] = $photo_hash;
- $arr['owner_xchan'] = $channel['channel_hash'];
- $arr['author_xchan'] = $observer['xchan_hash'];
- $arr['title'] = $title;
- $arr['allow_cid'] = $ac['allow_cid'];
- $arr['allow_gid'] = $ac['allow_gid'];
- $arr['deny_cid'] = $ac['deny_cid'];
- $arr['deny_gid'] = $ac['deny_gid'];
- $arr['verb'] = ACTIVITY_POST;
- $arr['obj_type'] = ACTIVITY_OBJ_PHOTO;
- $arr['obj'] = json_encode($object);
- $arr['tgt_type'] = ACTIVITY_OBJ_ALBUM;
- $arr['target'] = json_encode($target);
- $arr['item_wall'] = 1;
- $arr['item_origin'] = 1;
- $arr['item_thread_top'] = 1;
- $arr['item_private'] = intval($acl->is_private());
$arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . urlencode($arr['mid']);
- $arr['body'] = $summary;
+ if($lat && $lon)
+ $arr['coord'] = $lat . ' ' . $lon;
// this one is tricky because the item and the photo have the same permissions, those of the photo.
// Use the channel read_stream permissions to get the correct public_policy for the item and recalculate the
@@ -451,6 +442,7 @@ function photo_upload($channel, $observer, $args) {
* * \e boolean \b success
* * \e array \b albums
*/
+
function photos_albums_list($channel, $observer, $sort_key = 'album', $direction = 'asc') {
$channel_id = $channel['channel_id'];
@@ -531,6 +523,7 @@ function photos_album_widget($channelx,$observer,$sortkey = 'album',$direction =
* @param string $album default empty
* @return boolean|array
*/
+
function photos_list_photos($channel, $observer, $album = '') {
$channel_id = $channel['channel_id'];
@@ -570,6 +563,7 @@ function photos_list_photos($channel, $observer, $album = '') {
* @param string $album name of the album
* @return boolean
*/
+
function photos_album_exists($channel_id, $album) {
$r = q("SELECT id FROM photo WHERE album = '%s' AND uid = %d limit 1",
dbesc($album),
@@ -589,6 +583,7 @@ function photos_album_exists($channel_id, $album) {
* @param string $newname The new name of the album
* @return bool|array
*/
+
function photos_album_rename($channel_id, $oldname, $newname) {
return q("UPDATE photo SET album = '%s' WHERE album = '%s' AND uid = %d",
dbesc($newname),
@@ -607,6 +602,7 @@ function photos_album_rename($channel_id, $oldname, $newname) {
* @param string $remote_xchan
* @return string|boolean
*/
+
function photos_album_get_db_idstr($channel_id, $album, $remote_xchan = '') {
if ($remote_xchan) {
@@ -642,6 +638,7 @@ function photos_album_get_db_idstr($channel_id, $album, $remote_xchan = '') {
* @param boolean $visible default false
* @return int item_id
*/
+
function photos_create_item($channel, $creator_hash, $photo, $visible = false) {
// Create item container
@@ -697,7 +694,7 @@ function getGps($exifCoord, $hemi) {
function getGpstimestamp($exifCoord) {
- $hours = count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0;
+ $hours = count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0;
$minutes = count($exifCoord) > 1 ? gps2Num($exifCoord[1]) : 0;
$seconds = count($exifCoord) > 2 ? gps2Num($exifCoord[2]) : 0;
diff --git a/include/text.php b/include/text.php
index 9d76f9d78..500c87ad5 100644
--- a/include/text.php
+++ b/include/text.php
@@ -3,6 +3,7 @@
* @file include/text.php
*/
+use \Zotlabs\Lib as Zlib;
use \Michelf\MarkdownExtra;
require_once("include/bbcode.php");
@@ -89,12 +90,10 @@ function escape_tags($string) {
}
-function z_input_filter($channel_id,$s,$type = 'text/bbcode') {
+function z_input_filter($s,$type = 'text/bbcode',$allow_code = false) {
if($type === 'text/bbcode')
return escape_tags($s);
- if($type === 'text/markdown')
- return escape_tags($s);
if($type == 'text/plain')
return escape_tags($s);
if($type == 'application/x-pdl')
@@ -104,15 +103,15 @@ function z_input_filter($channel_id,$s,$type = 'text/bbcode') {
return $s;
}
- $r = q("select account_id, account_roles, channel_pageflags from account left join channel on channel_account_id = account_id where channel_id = %d limit 1",
- intval($channel_id)
- );
- if($r) {
- if(($r[0]['account_roles'] & ACCOUNT_ROLE_ALLOWCODE) || ($r[0]['channel_pageflags'] & PAGE_ALLOWCODE)) {
- if(local_channel() && (get_account_id() == $r[0]['account_id'])) {
- return $s;
- }
- }
+ if($allow_code) {
+ if($type === 'text/markdown')
+ return htmlspecialchars($s,ENT_QUOTES);
+ return $s;
+ }
+
+ if($type === 'text/markdown') {
+ $x = new Zlib\MarkdownSoap($s);
+ return $x->clean();
}
if($type === 'text/html')
@@ -1183,8 +1182,7 @@ function list_smilies() {
':coffee',
':facepalm',
':like',
- ':dislike',
- ':hubzilla'
+ ':dislike'
);
$icons = array(
@@ -1219,8 +1217,7 @@ function list_smilies() {
'<img class="smiley" src="' . z_root() . '/images/emoticons/coffee.gif" alt=":coffee" />',
'<img class="smiley" src="' . z_root() . '/images/emoticons/smiley-facepalm.gif" alt=":facepalm" />',
'<img class="smiley" src="' . z_root() . '/images/emoticons/like.gif" alt=":like" />',
- '<img class="smiley" src="' . z_root() . '/images/emoticons/dislike.gif" alt=":dislike" />',
- '<img class="smiley" src="' . z_root() . '/images/hz-16.png" alt=":hubzilla" />',
+ '<img class="smiley" src="' . z_root() . '/images/emoticons/dislike.gif" alt=":dislike" />'
);
@@ -1642,6 +1639,7 @@ function prepare_text($text, $content_type = 'text/bbcode', $cache = false) {
break;
case 'text/markdown':
+ $text = Zlib\MarkdownSoap::unescape($text);
$s = MarkdownExtra::defaultTransform($text);
break;
@@ -1797,23 +1795,9 @@ function mimetype_select($channel_id, $current = 'text/bbcode') {
);
- if(App::$is_sys) {
+ if((App::$is_sys) || (channel_codeallowed($channel_id) && $channel_id == local_channel())){
$x[] = 'application/x-php';
}
- else {
- $r = q("select account_id, account_roles, channel_pageflags from account left join channel on account_id = channel_account_id where
- channel_id = %d limit 1",
- intval($channel_id)
- );
-
- if($r) {
- if(($r[0]['account_roles'] & ACCOUNT_ROLE_ALLOWCODE) || ($r[0]['channel_pageflags'] & PAGE_ALLOWCODE)) {
- if(local_channel() && get_account_id() == $r[0]['account_id']) {
- $x[] = 'application/x-php';
- }
- }
- }
- }
foreach($x as $y) {
$selected = (($y == $current) ? ' selected="selected" ' : '');
diff --git a/include/widgets.php b/include/widgets.php
deleted file mode 100644
index f05c7c0ee..000000000
--- a/include/widgets.php
+++ /dev/null
@@ -1,1778 +0,0 @@
-<?php
-/**
- * @file include/widgets.php
- *
- * @brief This file contains the widgets.
- */
-
-require_once('include/dir_fns.php');
-require_once('include/contact_widgets.php');
-require_once('include/attach.php');
-
-
-function widget_profile($args) {
-
- $block = observer_prohibited();
- return profile_sidebar(App::$profile, $block, true);
-}
-
-function widget_zcard($args) {
-
- $block = observer_prohibited();
- $channel = channelx_by_n(App::$profile_uid);
- return get_zcard($channel,get_observer_hash(),array('width' => 875));
-}
-
-
-
-
-// FIXME The problem with the next widget is that we don't have a search function for webpages that we can send the links to.
-// Then we should also provide an option to search webpages and conversations.
-
-function widget_tagcloud($args) {
-
- $o = '';
- //$tab = 0;
-
- $uid = App::$profile_uid;
- $count = ((x($args,'count')) ? intval($args['count']) : 24);
- $flags = 0;
- $type = TERM_CATEGORY;
-
- // FIXME there exists no $authors variable
- $r = tagadelic($uid, $count, $authors, $owner, $flags, ITEM_TYPE_WEBPAGE, $type);
-
- if($r) {
- $o = '<div class="tagblock widget"><h3>' . t('Categories') . '</h3><div class="tags" align="center">';
- foreach($r as $rr) {
- $o .= '<span class="tag'.$rr[2].'">'.$rr[0].'</span> ' . "\r\n";
- }
- $o .= '</div></div>';
- }
- return $o;
-}
-
-function widget_collections($args) {
- require_once('include/group.php');
-
- $mode = ((array_key_exists('mode',$args)) ? $args['mode'] : 'conversation');
- switch($mode) {
- case 'conversation':
- $every = argv(0);
- $each = argv(0);
- $edit = true;
- $current = $_REQUEST['gid'];
- $abook_id = 0;
- $wmode = 0;
- break;
- case 'connections':
- $every = 'connections';
- $each = 'group';
- $edit = true;
- $current = $_REQUEST['gid'];
- $abook_id = 0;
- $wmode = 0;
- case 'groups':
- $every = 'connections';
- $each = argv(0);
- $edit = false;
- $current = intval(argv(1));
- $abook_id = 0;
- $wmode = 1;
- break;
- case 'abook':
- $every = 'connections';
- $each = 'group';
- $edit = false;
- $current = 0;
- $abook_id = App::$poi['abook_xchan'];
- $wmode = 1;
- break;
- default:
- return '';
- break;
- }
-
- return group_side($every, $each, $edit, $current, $abook_id, $wmode);
-}
-
-function widget_suggestions($arr) {
-
- if((! local_channel()) || (! feature_enabled(local_channel(),'suggest')))
- return '';
-
- require_once('include/socgraph.php');
-
- $r = suggestion_query(local_channel(),get_observer_hash(),0,20);
-
- if(! $r) {
- return;
- }
-
- $arr = array();
-
- // Get two random entries from the top 20 returned.
- // We'll grab the first one and the one immediately following.
- // This will throw some entropy intot he situation so you won't
- // be looking at the same two mug shots every time the widget runs
-
- $index = ((count($r) > 2) ? mt_rand(0,count($r) - 2) : 0);
-
- for($x = $index; $x <= ($index+1); $x ++) {
- $rr = $r[$x];
- if(! $rr['xchan_url'])
- break;
-
- $connlnk = z_root() . '/follow/?url=' . $rr['xchan_addr'];
-
- $arr[] = array(
- 'url' => chanlink_url($rr['xchan_url']),
- 'profile' => $rr['xchan_url'],
- 'name' => $rr['xchan_name'],
- 'photo' => $rr['xchan_photo_m'],
- 'ignlnk' => z_root() . '/directory?ignore=' . $rr['xchan_hash'],
- 'conntxt' => t('Connect'),
- 'connlnk' => $connlnk,
- 'ignore' => t('Ignore/Hide')
- );
- }
-
- $o = replace_macros(get_markup_template('suggest_widget.tpl'),array(
- '$title' => t('Suggestions'),
- '$more' => t('See more...'),
- '$entries' => $arr
- ));
-
- return $o;
-}
-
-
-function widget_follow($args) {
- if(! local_channel())
- return '';
-
- $uid = App::$channel['channel_id'];
- $r = q("select count(*) as total from abook where abook_channel = %d and abook_self = 0 ",
- intval($uid)
- );
- if($r)
- $total_channels = $r[0]['total'];
- $limit = service_class_fetch($uid,'total_channels');
- if($limit !== false) {
- $abook_usage_message = sprintf( t("You have %1$.0f of %2$.0f allowed connections."), $total_channels, $limit);
- }
- else {
- $abook_usage_message = '';
- }
- return replace_macros(get_markup_template('follow.tpl'),array(
- '$connect' => t('Add New Connection'),
- '$desc' => t('Enter channel address'),
- '$hint' => t('Examples: bob@example.com, https://example.com/barbara'),
- '$follow' => t('Connect'),
- '$abook_usage_message' => $abook_usage_message
- ));
-}
-
-
-function widget_notes($arr) {
- if(! local_channel())
- return '';
- if(! feature_enabled(local_channel(),'private_notes'))
- return '';
-
- $text = get_pconfig(local_channel(),'notes','text');
-
- $o = replace_macros(get_markup_template('notes.tpl'), array(
- '$banner' => t('Notes'),
- '$text' => $text,
- '$save' => t('Save'),
- ));
-
- return $o;
-}
-
-
-function widget_savedsearch($arr) {
- if((! local_channel()) || (! feature_enabled(local_channel(),'savedsearch')))
- return '';
-
- $search = ((x($_GET,'netsearch')) ? $_GET['netsearch'] : '');
- if(! $search)
- $search = ((x($_GET,'search')) ? $_GET['search'] : '');
-
- if(x($_GET,'searchsave') && $search) {
- $r = q("select * from term where uid = %d and ttype = %d and term = '%s' limit 1",
- intval(local_channel()),
- intval(TERM_SAVEDSEARCH),
- dbesc($search)
- );
- if(! $r) {
- q("insert into term ( uid,ttype,term ) values ( %d, %d, '%s') ",
- intval(local_channel()),
- intval(TERM_SAVEDSEARCH),
- dbesc($search)
- );
- }
- }
-
- if(x($_GET,'searchremove') && $search) {
- q("delete from term where uid = %d and ttype = %d and term = '%s'",
- intval(local_channel()),
- intval(TERM_SAVEDSEARCH),
- dbesc($search)
- );
- $search = '';
- }
-
- $srchurl = App::$query_string;
-
- $srchurl = rtrim(preg_replace('/searchsave\=[^\&].*?(\&|$)/is','',$srchurl),'&');
- $hasq = ((strpos($srchurl,'?') !== false) ? true : false);
- $srchurl = rtrim(preg_replace('/searchremove\=[^\&].*?(\&|$)/is','',$srchurl),'&');
-
- $srchurl = rtrim(preg_replace('/search\=[^\&].*?(\&|$)/is','',$srchurl),'&');
- $srchurl = rtrim(preg_replace('/submit\=[^\&].*?(\&|$)/is','',$srchurl),'&');
- $srchurl = str_replace(array('?f=','&f='),array('',''),$srchurl);
-
-
- $hasq = ((strpos($srchurl,'?') !== false) ? true : false);
- $hasamp = ((strpos($srchurl,'&') !== false) ? true : false);
-
- if(($hasamp) && (! $hasq))
- $srchurl = substr($srchurl,0,strpos($srchurl,'&')) . '?f=&' . substr($srchurl,strpos($srchurl,'&')+1);
-
- $o = '';
-
- $r = q("select tid,term from term WHERE uid = %d and ttype = %d ",
- intval(local_channel()),
- intval(TERM_SAVEDSEARCH)
- );
-
- $saved = array();
-
- if(count($r)) {
- foreach($r as $rr) {
- $saved[] = array(
- 'id' => $rr['tid'],
- 'term' => $rr['term'],
- 'dellink' => z_root() . '/' . $srchurl . (($hasq || $hasamp) ? '' : '?f=') . '&amp;searchremove=1&amp;search=' . urlencode($rr['term']),
- 'srchlink' => z_root() . '/' . $srchurl . (($hasq || $hasamp) ? '' : '?f=') . '&amp;search=' . urlencode($rr['term']),
- 'displayterm' => htmlspecialchars($rr['term'], ENT_COMPAT,'UTF-8'),
- 'encodedterm' => urlencode($rr['term']),
- 'delete' => t('Remove term'),
- 'selected' => ($search==$rr['term']),
- );
- }
- }
-
- $tpl = get_markup_template("saved_searches.tpl");
- $o = replace_macros($tpl, array(
- '$title' => t('Saved Searches'),
- '$add' => t('add'),
- '$searchbox' => searchbox($search, 'netsearch-box', $srchurl . (($hasq) ? '' : '?f='), true),
- '$saved' => $saved,
- ));
-
- return $o;
-}
-
-function widget_sitesearch($arr) {
-
- $search = ((x($_GET,'search')) ? $_GET['search'] : '');
-
- $srchurl = App::$query_string;
-
- $srchurl = rtrim(preg_replace('/search\=[^\&].*?(\&|$)/is','',$srchurl),'&');
- $srchurl = rtrim(preg_replace('/submit\=[^\&].*?(\&|$)/is','',$srchurl),'&');
- $srchurl = str_replace(array('?f=','&f='),array('',''),$srchurl);
-
-
- $hasq = ((strpos($srchurl,'?') !== false) ? true : false);
- $hasamp = ((strpos($srchurl,'&') !== false) ? true : false);
-
- if(($hasamp) && (! $hasq))
- $srchurl = substr($srchurl,0,strpos($srchurl,'&')) . '?f=&' . substr($srchurl,strpos($srchurl,'&')+1);
-
- $o = '';
-
- $saved = array();
-
- $tpl = get_markup_template("sitesearch.tpl");
- $o = replace_macros($tpl, array(
- '$title' => t('Search'),
- '$searchbox' => searchbox($search, 'netsearch-box', $srchurl . (($hasq) ? '' : '?f='), false),
- '$saved' => $saved,
- ));
-
- return $o;
-}
-
-
-
-
-
-function widget_filer($arr) {
- if(! local_channel())
- return '';
-
-
- $selected = ((x($_REQUEST,'file')) ? $_REQUEST['file'] : '');
-
- $terms = array();
- $r = q("select distinct term from term where uid = %d and ttype = %d order by term asc",
- intval(local_channel()),
- intval(TERM_FILE)
- );
- if(! $r)
- return;
-
- foreach($r as $rr)
- $terms[] = array('name' => $rr['term'], 'selected' => (($selected == $rr['term']) ? 'selected' : ''));
-
- return replace_macros(get_markup_template('fileas_widget.tpl'),array(
- '$title' => t('Saved Folders'),
- '$desc' => '',
- '$sel_all' => (($selected == '') ? 'selected' : ''),
- '$all' => t('Everything'),
- '$terms' => $terms,
- '$base' => z_root() . '/' . App::$cmd
- ));
-}
-
-function widget_archive($arr) {
-
- $o = '';
-
- if(! App::$profile_uid) {
- return '';
- }
-
- $uid = App::$profile_uid;
-
- if(! feature_enabled($uid,'archives'))
- return '';
-
- if(! perm_is_allowed($uid,get_observer_hash(),'view_stream'))
- return '';
-
- $wall = ((array_key_exists('wall', $arr)) ? intval($arr['wall']) : 0);
- $style = ((array_key_exists('style', $arr)) ? $arr['style'] : 'select');
- $showend = ((get_pconfig($uid,'system','archive_show_end_date')) ? true : false);
- $mindate = get_pconfig($uid,'system','archive_mindate');
- $visible_years = get_pconfig($uid,'system','archive_visible_years');
- if(! $visible_years)
- $visible_years = 5;
-
- $url = z_root() . '/' . App::$cmd;
-
- $ret = list_post_dates($uid,$wall,$mindate);
-
- if(! count($ret))
- return '';
-
- $cutoff_year = intval(datetime_convert('',date_default_timezone_get(),'now','Y')) - $visible_years;
- $cutoff = ((array_key_exists($cutoff_year,$ret))? true : false);
-
- $o = replace_macros(get_markup_template('posted_date_widget.tpl'),array(
- '$title' => t('Archives'),
- '$size' => $visible_years,
- '$cutoff_year' => $cutoff_year,
- '$cutoff' => $cutoff,
- '$url' => $url,
- '$style' => $style,
- '$showend' => $showend,
- '$dates' => $ret
- ));
- return $o;
-}
-
-
-function widget_fullprofile($arr) {
-
- if(! App::$profile['profile_uid'])
- return;
-
- $block = observer_prohibited();
-
- return profile_sidebar(App::$profile, $block);
-}
-
-function widget_shortprofile($arr) {
-
- if(! App::$profile['profile_uid'])
- return;
-
- $block = observer_prohibited();
-
- return profile_sidebar(App::$profile, $block, true, true);
-}
-
-
-function widget_categories($arr) {
-
-
- if(App::$profile['profile_uid'] && (! perm_is_allowed(App::$profile['profile_uid'],get_observer_hash(),'view_stream')))
- return '';
-
- $cat = ((x($_REQUEST,'cat')) ? htmlspecialchars($_REQUEST['cat'],ENT_COMPAT,'UTF-8') : '');
- $srchurl = App::$query_string;
- $srchurl = rtrim(preg_replace('/cat\=[^\&].*?(\&|$)/is','',$srchurl),'&');
- $srchurl = str_replace(array('?f=','&f='),array('',''),$srchurl);
-
- return categories_widget($srchurl, $cat);
-
-}
-
-function widget_appcategories($arr) {
-
- if(! local_channel())
- return '';
-
- $selected = ((x($_REQUEST,'cat')) ? htmlspecialchars($_REQUEST['cat'],ENT_COMPAT,'UTF-8') : '');
-
- $srchurl = rtrim(preg_replace('/cat\=[^\&].*?(\&|$)/is','',$srchurl),'&');
- $srchurl = str_replace(array('?f=','&f='),array('',''),$srchurl);
-
- $srchurl = z_root() . '/apps';
-
- $terms = array();
-
- $r = q("select distinct(term.term)
- from term join app on term.oid = app.id
- where app_channel = %d
- and term.uid = app_channel
- and term.otype = %d
- and term.term != 'nav_featured_app'
- order by term.term asc",
- intval(local_channel()),
- intval(TERM_OBJ_APP)
- );
- if($r) {
- foreach($r as $rr)
- $terms[] = array('name' => $rr['term'], 'selected' => (($selected == $rr['term']) ? 'selected' : ''));
-
- return replace_macros(get_markup_template('categories_widget.tpl'),array(
- '$title' => t('Categories'),
- '$desc' => '',
- '$sel_all' => (($selected == '') ? 'selected' : ''),
- '$all' => t('Everything'),
- '$terms' => $terms,
- '$base' => $srchurl,
-
- ));
- }
-
-
-
-}
-
-
-
-function widget_appcloud($arr) {
- if(! local_channel())
- return '';
- return app_tagblock(z_root() . '/apps');
-}
-
-
-function widget_tagcloud_wall($arr) {
-
-
- if((! App::$profile['profile_uid']) || (! App::$profile['channel_hash']))
- return '';
- if(! perm_is_allowed(App::$profile['profile_uid'], get_observer_hash(), 'view_stream'))
- return '';
-
- $limit = ((array_key_exists('limit', $arr)) ? intval($arr['limit']) : 50);
- if(feature_enabled(App::$profile['profile_uid'], 'tagadelic'))
- return wtagblock(App::$profile['profile_uid'], $limit, '', App::$profile['channel_hash'], 'wall');
-
- return '';
-}
-
-function widget_catcloud_wall($arr) {
-
-
- if((! App::$profile['profile_uid']) || (! App::$profile['channel_hash']))
- return '';
- if(! perm_is_allowed(App::$profile['profile_uid'], get_observer_hash(), 'view_stream'))
- return '';
-
- $limit = ((array_key_exists('limit',$arr)) ? intval($arr['limit']) : 50);
-
- return catblock(App::$profile['profile_uid'], $limit, '', App::$profile['channel_hash'], 'wall');
-}
-
-
-function widget_affinity($arr) {
-
- if(! local_channel())
- return '';
-
- // Get default cmin value from pconfig, but allow GET parameter to override
- $cmin = intval(get_pconfig(local_channel(),'affinity','cmin'));
- $cmin = (($cmin) ? $cmin : 0);
- $cmin = ((x($_REQUEST,'cmin')) ? intval($_REQUEST['cmin']) : $cmin);
-
- // Get default cmax value from pconfig, but allow GET parameter to override
- $cmax = intval(get_pconfig(local_channel(),'affinity','cmax'));
- $cmax = (($cmax) ? $cmax : 99);
- $cmax = ((x($_REQUEST,'cmax')) ? intval($_REQUEST['cmax']) : $cmax);
-
-
- if(feature_enabled(local_channel(),'affinity')) {
-
- $labels = array(
- t('Me'),
- t('Family'),
- t('Friends'),
- t('Acquaintances'),
- t('All')
- );
- call_hooks('affinity_labels',$labels);
- $label_str = '';
-
- if($labels) {
- foreach($labels as $l) {
- if($label_str) {
- $label_str .= ", '|'";
- $label_str .= ", '" . $l . "'";
- }
- else
- $label_str .= "'" . $l . "'";
- }
- }
-
- $tpl = get_markup_template('main_slider.tpl');
- $x = replace_macros($tpl,array(
- '$val' => $cmin . ',' . $cmax,
- '$refresh' => t('Refresh'),
- '$labels' => $label_str,
- ));
- $arr = array('html' => $x);
- call_hooks('main_slider',$arr);
- return $arr['html'];
- }
-
- return '';
-}
-
-
-function widget_settings_menu($arr) {
-
- if(! local_channel())
- return;
-
-
- $channel = App::get_channel();
-
- $abook_self_id = 0;
-
- // Retrieve the 'self' address book entry for use in the auto-permissions link
-
- $role = get_pconfig(local_channel(),'system','permissions_role');
-
- $abk = q("select abook_id from abook where abook_channel = %d and abook_self = 1 limit 1",
- intval(local_channel())
- );
- if($abk)
- $abook_self_id = $abk[0]['abook_id'];
-
- $x = q("select count(*) as total from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0 ",
- dbesc($channel['channel_hash'])
- );
-
- $hublocs = (($x && $x[0]['total'] > 1) ? true : false);
-
- $tabs = array(
- array(
- 'label' => t('Account settings'),
- 'url' => z_root().'/settings/account',
- 'selected' => ((argv(1) === 'account') ? 'active' : ''),
- ),
-
- array(
- 'label' => t('Channel settings'),
- 'url' => z_root().'/settings/channel',
- 'selected' => ((argv(1) === 'channel') ? 'active' : ''),
- ),
-
- );
-
- if(get_account_techlevel() > 0 && get_features()) {
- $tabs[] = array(
- 'label' => t('Additional features'),
- 'url' => z_root().'/settings/features',
- 'selected' => ((argv(1) === 'features') ? 'active' : ''),
- );
- }
-
- $tabs[] = array(
- 'label' => t('Feature/Addon settings'),
- 'url' => z_root().'/settings/featured',
- 'selected' => ((argv(1) === 'featured') ? 'active' : ''),
- );
-
- $tabs[] = array(
- 'label' => t('Display settings'),
- 'url' => z_root().'/settings/display',
- 'selected' => ((argv(1) === 'display') ? 'active' : ''),
- );
-
- if($hublocs) {
- $tabs[] = array(
- 'label' => t('Manage locations'),
- 'url' => z_root() . '/locs',
- 'selected' => ((argv(1) === 'locs') ? 'active' : ''),
- );
- }
-
- $tabs[] = array(
- 'label' => t('Export channel'),
- 'url' => z_root() . '/uexport',
- 'selected' => ''
- );
-
- $tabs[] = array(
- 'label' => t('Connected apps'),
- 'url' => z_root() . '/settings/oauth',
- 'selected' => ((argv(1) === 'oauth') ? 'active' : ''),
- );
-
- if(get_account_techlevel() > 2) {
- $tabs[] = array(
- 'label' => t('Guest Access Tokens'),
- 'url' => z_root() . '/settings/tokens',
- 'selected' => ((argv(1) === 'tokens') ? 'active' : ''),
- );
- }
-
- if(feature_enabled(local_channel(),'permcats')) {
- $tabs[] = array(
- 'label' => t('Permission Groups'),
- 'url' => z_root() . '/settings/permcats',
- 'selected' => ((argv(1) === 'permcats') ? 'active' : ''),
- );
- }
-
-
- if($role === false || $role === 'custom') {
- $tabs[] = array(
- 'label' => t('Connection Default Permissions'),
- 'url' => z_root() . '/connedit/' . $abook_self_id,
- 'selected' => ''
- );
- }
-
- if(feature_enabled(local_channel(),'premium_channel')) {
- $tabs[] = array(
- 'label' => t('Premium Channel Settings'),
- 'url' => z_root() . '/connect/' . $channel['channel_address'],
- 'selected' => ''
- );
- }
-
- if(feature_enabled(local_channel(),'channel_sources')) {
- $tabs[] = array(
- 'label' => t('Channel Sources'),
- 'url' => z_root() . '/sources',
- 'selected' => ''
- );
- }
-
- $tabtpl = get_markup_template("generic_links_widget.tpl");
- return replace_macros($tabtpl, array(
- '$title' => t('Settings'),
- '$class' => 'settings-widget',
- '$items' => $tabs,
- ));
-}
-
-
-function widget_mailmenu($arr) {
- if (! local_channel())
- return;
-
-
- return replace_macros(get_markup_template('message_side.tpl'), array(
- '$title' => t('Private Mail Menu'),
- '$combined'=>array(
- 'label' => t('Combined View'),
- 'url' => z_root() . '/mail/combined',
- 'sel' => (argv(1) == 'combined'),
- ),
- '$inbox'=>array(
- 'label' => t('Inbox'),
- 'url' => z_root() . '/mail/inbox',
- 'sel' => (argv(1) == 'inbox'),
- ),
- '$outbox'=>array(
- 'label' => t('Outbox'),
- 'url' => z_root() . '/mail/outbox',
- 'sel' => (argv(1) == 'outbox'),
- ),
- '$new'=>array(
- 'label' => t('New Message'),
- 'url' => z_root() . '/mail/new',
- 'sel'=> (argv(1) == 'new'),
- )
- ));
-}
-
-
-function widget_conversations($arr) {
- if (! local_channel())
- return;
-
- 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, App::$pager['start'], App::$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'], 'c'),
- '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_eventstools($arr) {
- if (! local_channel())
- return;
-
- return replace_macros(get_markup_template('events_tools_side.tpl'), array(
- '$title' => t('Events Tools'),
- '$export' => t('Export Calendar'),
- '$import' => t('Import Calendar'),
- '$submit' => t('Submit')
- ));
-}
-
-function widget_design_tools($arr) {
-
- // mod menu doesn't load a profile. For any modules which load a profile, check it.
- // otherwise local_channel() is sufficient for permissions.
-
- if(App::$profile['profile_uid'])
- if((App::$profile['profile_uid'] != local_channel()) && (! App::$is_sys))
- return '';
-
- if(! local_channel())
- return '';
-
- return design_tools();
-}
-
-function widget_website_portation_tools($arr) {
-
- // mod menu doesn't load a profile. For any modules which load a profile, check it.
- // otherwise local_channel() is sufficient for permissions.
-
- if(App::$profile['profile_uid'])
- if((App::$profile['profile_uid'] != local_channel()) && (! App::$is_sys))
- return '';
-
- if(! local_channel())
- return '';
-
- return website_portation_tools();
-}
-
-function widget_findpeople($arr) {
- return findpeople_widget();
-}
-
-
-function widget_photo_albums($arr) {
-
- if(! App::$profile['profile_uid'])
- return '';
- $channelx = channelx_by_n(App::$profile['profile_uid']);
- if((! $channelx) || (! perm_is_allowed(App::$profile['profile_uid'], get_observer_hash(), 'view_storage')))
- return '';
- require_once('include/photos.php');
- $sortkey = ((array_key_exists('sortkey',$arr)) ? $arr['sortkey'] : 'album');
- $direction = ((array_key_exists('direction',$arr)) ? $arr['direction'] : 'asc');
-
- return photos_album_widget($channelx, App::get_observer(),$sortkey,$direction);
-}
-
-
-function widget_vcard($arr) {
- return vcard_from_xchan('', App::get_observer());
-}
-
-
-/*
- * The following directory widgets are only useful on the directory page
- */
-
-
-function widget_dirsort($arr) {
- return dir_sort_links();
-}
-
-function widget_dirtags($arr) {
- return dir_tagblock(z_root() . '/directory', null);
-}
-
-function widget_menu_preview($arr) {
- if(! App::$data['menu_item'])
- return;
- require_once('include/menu.php');
-
- return menu_render(App::$data['menu_item']);
-}
-
-function widget_chatroom_list($arr) {
-
-
- $r = Zotlabs\Lib\Chatroom::roomlist(App::$profile['profile_uid']);
-
- if($r) {
- return replace_macros(get_markup_template('chatroomlist.tpl'), array(
- '$header' => t('Chatrooms'),
- '$baseurl' => z_root(),
- '$nickname' => App::$profile['channel_address'],
- '$items' => $r,
- '$overview' => t('Overview')
- ));
- }
-}
-
-function widget_chatroom_members() {
- $o = replace_macros(get_markup_template('chatroom_members.tpl'), array(
- '$header' => t('Chat Members')
- ));
-
- return $o;
-}
-
-function widget_wiki_list($arr) {
-
- $channel = channelx_by_n(App::$profile_uid);
-
- $wikis = Zotlabs\Lib\NativeWiki::listwikis($channel,get_observer_hash());
-
- if($wikis) {
- return replace_macros(get_markup_template('wikilist_widget.tpl'), array(
- '$header' => t('Wiki List'),
- '$channel' => $channel['channel_address'],
- '$wikis' => $wikis['wikis']
- ));
- }
- return '';
-}
-
-function widget_wiki_pages($arr) {
-
- $channelname = ((array_key_exists('channel',$arr)) ? $arr['channel'] : '');
- $c = channelx_by_nick($channelname);
-
- $wikiname = '';
- if (array_key_exists('refresh', $arr)) {
- $not_refresh = (($arr['refresh']=== true) ? false : true);
- } else {
- $not_refresh = true;
- }
- $pages = array();
- if (! array_key_exists('resource_id', $arr)) {
- $hide = true;
- } else {
- $p = Zotlabs\Lib\NativeWikiPage::page_list($c['channel_id'],get_observer_hash(),$arr['resource_id']);
-
- if($p['pages']) {
- $pages = $p['pages'];
- $w = $p['wiki'];
- // Wiki item record is $w['wiki']
- $wikiname = $w['urlName'];
- if (!$wikiname) {
- $wikiname = '';
- }
- }
- }
- $can_create = perm_is_allowed(\App::$profile['uid'],get_observer_hash(),'write_wiki');
-
- $can_delete = ((local_channel() && (local_channel() == \App::$profile['uid'])) ? true : false);
-
- return replace_macros(get_markup_template('wiki_page_list.tpl'), array(
- '$hide' => $hide,
- '$resource_id' => $arr['resource_id'],
- '$not_refresh' => $not_refresh,
- '$header' => t('Wiki Pages'),
- '$channel' => $channelname,
- '$wikiname' => $wikiname,
- '$pages' => $pages,
- '$canadd' => $can_create,
- '$candel' => $can_delete,
- '$addnew' => t('Add new page'),
- '$pageName' => array('pageName', t('Page name')),
- ));
-}
-
-function widget_wiki_page_history($arr) {
-
- $pageUrlName = ((array_key_exists('pageUrlName', $arr)) ? $arr['pageUrlName'] : '');
- $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
-
- $pageHistory = Zotlabs\Lib\NativeWikiPage::page_history(array('channel_id' => App::$profile_uid, 'observer_hash' => get_observer_hash(), 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
- return replace_macros(get_markup_template('nwiki_page_history.tpl'), array(
- '$pageHistory' => $pageHistory['history'],
- '$permsWrite' => $arr['permsWrite'],
- '$name_lbl' => t('Name'),
- '$msg_label' => t('Message','wiki_history')
- ));
-
-}
-
-function widget_bookmarkedchats($arr) {
-
- if(! feature_enabled(App::$profile['profile_uid'],'ajaxchat'))
- return '';
-
- $h = get_observer_hash();
- if(! $h)
- return;
- $r = q("select xchat_url, xchat_desc from xchat where xchat_xchan = '%s' order by xchat_desc",
- dbesc($h)
- );
- if($r) {
- for($x = 0; $x < count($r); $x ++) {
- $r[$x]['xchat_url'] = zid($r[$x]['xchat_url']);
- }
- }
- return replace_macros(get_markup_template('bookmarkedchats.tpl'),array(
- '$header' => t('Bookmarked Chatrooms'),
- '$rooms' => $r
- ));
-}
-
-function widget_suggestedchats($arr) {
-
- if(! feature_enabled(App::$profile['profile_uid'],'ajaxchat'))
- return '';
-
- // There are reports that this tool does not ever remove chatrooms on dead sites,
- // and also will happily link to private chats which you cannot enter.
- // For those reasons, it will be disabled until somebody decides it's worth
- // fixing and comes up with a plan for doing so.
-
- return '';
-
-
- // probably should restrict this to your friends, but then the widget will only work
- // if you are logged in locally.
-
- $h = get_observer_hash();
- if(! $h)
- return;
- $r = q("select xchat_url, xchat_desc, count(xchat_xchan) as total from xchat group by xchat_url, xchat_desc order by total desc, xchat_desc limit 24");
- if($r) {
- for($x = 0; $x < count($r); $x ++) {
- $r[$x]['xchat_url'] = zid($r[$x]['xchat_url']);
- }
- }
- return replace_macros(get_markup_template('bookmarkedchats.tpl'),array(
- '$header' => t('Suggested Chatrooms'),
- '$rooms' => $r
- ));
-}
-
-function widget_item($arr) {
-
- $channel_id = 0;
- if(array_key_exists('channel_id',$arr) && intval($arr['channel_id']))
- $channel_id = intval($arr['channel_id']);
- if(! $channel_id)
- $channel_id = App::$profile_uid;
- if(! $channel_id)
- return '';
-
-
- if((! $arr['mid']) && (! $arr['title']))
- return '';
-
- if(! perm_is_allowed($channel_id, get_observer_hash(), 'view_pages'))
- return '';
-
- require_once('include/security.php');
- $sql_extra = item_permissions_sql($channel_id);
-
- if($arr['title']) {
- $r = q("select item.* from item left join iconfig on item.id = iconfig.iid
- where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s'
- and iconfig.k = 'WEBPAGE' and item_type = %d $sql_options $revision limit 1",
- intval($channel_id),
- dbesc($arr['title']),
- intval(ITEM_TYPE_WEBPAGE)
- );
- }
- else {
- $r = q("select * from item where mid = '%s' and uid = %d and item_type = " . intval(ITEM_TYPE_WEBPAGE) . " $sql_extra limit 1",
- dbesc($arr['mid']),
- intval($channel_id)
- );
- }
-
- if(! $r)
- return '';
-
- xchan_query($r);
- $r = fetch_post_tags($r, true);
-
- $o = prepare_page($r[0]);
- return $o;
-}
-
-function widget_clock($arr) {
-
- $miltime = 0;
- if(isset($arr['military']) && $arr['military'])
- $miltime = 1;
-
-$o = <<< EOT
-<div class="widget">
-<h3 class="clockface"></h3>
-<script>
-
-var timerID = null
-var timerRunning = false
-
-function stopclock(){
- if(timerRunning)
- clearTimeout(timerID)
- timerRunning = false
-}
-
-function startclock(){
- stopclock()
- showtime()
-}
-
-function showtime(){
- var now = new Date()
- var hours = now.getHours()
- var minutes = now.getMinutes()
- var seconds = now.getSeconds()
- var military = $miltime
- var timeValue = ""
- if(military)
- timeValue = hours
- else
- timeValue = ((hours > 12) ? hours - 12 : hours)
- timeValue += ((minutes < 10) ? ":0" : ":") + minutes
-// timeValue += ((seconds < 10) ? ":0" : ":") + seconds
- if(! military)
- timeValue += (hours >= 12) ? " P.M." : " A.M."
- $('.clockface').html(timeValue)
- timerID = setTimeout("showtime()",1000)
- timerRunning = true
-}
-
-$(document).ready(function() {
- startclock();
-});
-
-</script>
-</div>
-EOT;
-return $o;
-
-}
-
-/**
- * @brief Widget to display a single photo.
- *
- * @param array $arr associative array with
- * * \e string \b src URL of photo; URL must be an http or https URL
- * * \e boolean \b zrl use zid in URL
- * * \e string \b style CSS string
- *
- * @return string with parsed HTML
- */
-function widget_photo($arr) {
-
- $style = $zrl = false;
-
- if(array_key_exists('src', $arr) && isset($arr['src']))
- $url = $arr['src'];
-
- if(strpos($url, 'http') !== 0)
- return '';
-
- if(array_key_exists('style', $arr) && isset($arr['style']))
- $style = $arr['style'];
-
- // ensure they can't sneak in an eval(js) function
-
- if(strpbrk($style, '(\'"<>') !== false)
- $style = '';
-
- if(array_key_exists('zrl', $arr) && isset($arr['zrl']))
- $zrl = (($arr['zrl']) ? true : false);
-
- if($zrl)
- $url = zid($url);
-
- $o = '<div class="widget">';
-
- $o .= '<img ' . (($zrl) ? ' class="zrl" ' : '')
- . (($style) ? ' style="' . $style . '"' : '')
- . ' src="' . $url . '" alt="' . t('photo/image') . '">';
-
- $o .= '</div>';
-
- return $o;
-}
-
-
-function widget_cover_photo($arr) {
-
- require_once('include/channel.php');
- $o = '';
-
- if(App::$module == 'channel' && $_REQUEST['mid'])
- return '';
-
- $channel_id = 0;
- if(array_key_exists('channel_id', $arr) && intval($arr['channel_id']))
- $channel_id = intval($arr['channel_id']);
- if(! $channel_id)
- $channel_id = App::$profile_uid;
- if(! $channel_id)
- return '';
-
- $channel = channelx_by_n($channel_id);
-
- if(array_key_exists('style', $arr) && isset($arr['style']))
- $style = $arr['style'];
- else
- $style = 'width:100%; height: auto;';
-
- // ensure they can't sneak in an eval(js) function
-
- if(strpbrk($style,'(\'"<>') !== false)
- $style = '';
-
- if(array_key_exists('title', $arr) && isset($arr['title']))
- $title = $arr['title'];
- else
- $title = $channel['channel_name'];
-
- if(array_key_exists('subtitle', $arr) && isset($arr['subtitle']))
- $subtitle = $arr['subtitle'];
- else
- $subtitle = str_replace('@','&#x40;',$channel['xchan_addr']);
-
- $c = get_cover_photo($channel_id,'html');
-
- if($c) {
- $photo_html = (($style) ? str_replace('alt=',' style="' . $style . '" alt=',$c) : $c);
-
- $o = replace_macros(get_markup_template('cover_photo_widget.tpl'),array(
- '$photo_html' => $photo_html,
- '$title' => $title,
- '$subtitle' => $subtitle,
- '$hovertitle' => t('Click to show more'),
- ));
- }
- return $o;
-}
-
-
-function widget_photo_rand($arr) {
-
- require_once('include/photos.php');
- $style = false;
-
- if(array_key_exists('album', $arr) && isset($arr['album']))
- $album = $arr['album'];
- else
- $album = '';
-
- $channel_id = 0;
- if(array_key_exists('channel_id', $arr) && intval($arr['channel_id']))
- $channel_id = intval($arr['channel_id']);
- if(! $channel_id)
- $channel_id = App::$profile_uid;
- if(! $channel_id)
- return '';
-
- $scale = ((array_key_exists('scale',$arr)) ? intval($arr['scale']) : 0);
-
- $ret = photos_list_photos(array('channel_id' => $channel_id),App::get_observer(),$album);
-
- $filtered = array();
- if($ret['success'] && $ret['photos'])
- foreach($ret['photos'] as $p)
- if($p['imgscale'] == $scale)
- $filtered[] = $p['src'];
-
- if($filtered) {
- $e = mt_rand(0, count($filtered) - 1);
- $url = $filtered[$e];
- }
-
- if(strpos($url, 'http') !== 0)
- return '';
-
- if(array_key_exists('style', $arr) && isset($arr['style']))
- $style = $arr['style'];
-
- // ensure they can't sneak in an eval(js) function
-
- if(strpos($style,'(') !== false)
- return '';
-
- $url = zid($url);
-
- $o = '<div class="widget">';
-
- $o .= '<img class="zrl" '
- . (($style) ? ' style="' . $style . '"' : '')
- . ' src="' . $url . '" alt="' . t('photo/image') . '">';
-
- $o .= '</div>';
-
- return $o;
-}
-
-
-function widget_random_block($arr) {
-
- $channel_id = 0;
- if(array_key_exists('channel_id',$arr) && intval($arr['channel_id']))
- $channel_id = intval($arr['channel_id']);
- if(! $channel_id)
- $channel_id = App::$profile_uid;
- if(! $channel_id)
- return '';
-
- if(array_key_exists('contains',$arr))
- $contains = $arr['contains'];
-
- $o = '';
-
- require_once('include/security.php');
- $sql_options = item_permissions_sql($channel_id);
-
- $randfunc = db_getfunc('RAND');
-
- $r = q("select item.* from item left join iconfig on item.id = iconfig.iid
- where item.uid = %d and iconfig.cat = 'system' and iconfig.v like '%s' and iconfig.k = 'BUILDBLOCK' and
- item_type = %d $sql_options order by $randfunc limit 1",
- intval($channel_id),
- dbesc('%' . $contains . '%'),
- intval(ITEM_TYPE_BLOCK)
- );
-
- if($r) {
- $o = '<div class="widget bblock">';
- if($r[0]['title'])
- $o .= '<h3>' . $r[0]['title'] . '</h3>';
-
- $o .= prepare_text($r[0]['body'],$r[0]['mimetype']);
- $o .= '</div>';
- }
-
- return $o;
-}
-
-
-function widget_rating($arr) {
-
-
- $rating_enabled = get_config('system','rating_enabled');
- if(! $rating_enabled) {
- return;
- }
-
- if($arr['target'])
- $hash = $arr['target'];
- else
- $hash = App::$poi['xchan_hash'];
-
- if(! $hash)
- return;
-
- $url = '';
- $remote = false;
-
- if(remote_channel() && ! local_channel()) {
- $ob = App::get_observer();
- if($ob && $ob['xchan_url']) {
- $p = parse_url($ob['xchan_url']);
- if($p) {
- $url = $p['scheme'] . '://' . $p['host'] . (($p['port']) ? ':' . $p['port'] : '');
- $url .= '/rate?f=&target=' . urlencode($hash);
- }
- $remote = true;
- }
- }
-
- $self = false;
-
- if(local_channel()) {
- $channel = App::get_channel();
-
- if($hash == $channel['channel_hash'])
- $self = true;
-
- head_add_js('ratings.js');
-
- }
-
-
- $o = '<div class="widget">';
- $o .= '<h3>' . t('Rating Tools') . '</h3>';
-
- if((($remote) || (local_channel())) && (! $self)) {
- if($remote)
- $o .= '<a class="btn btn-block btn-primary btn-sm" href="' . $url . '"><i class="fa fa-pencil"></i> ' . t('Rate Me') . '</a>';
- else
- $o .= '<div class="btn btn-block btn-primary btn-sm" onclick="doRatings(\'' . $hash . '\'); return false;"><i class="fa fa-pencil"></i> ' . t('Rate Me') . '</div>';
- }
-
- $o .= '<a class="btn btn-block btn-default btn-sm" href="ratings/' . $hash . '"><i class="fa fa-eye"></i> ' . t('View Ratings') . '</a>';
- $o .= '</div>';
-
- return $o;
-
-}
-
-// used by site ratings pages to provide a return link
-function widget_pubsites($arr) {
- if(App::$poi)
- return;
- return '<div class="widget"><ul class="nav nav-pills"><li><a href="pubsites">' . t('Public Hubs') . '</a></li></ul></div>';
-}
-
-
-function widget_forums($arr) {
-
- if(! local_channel())
- return '';
-
- $o = '';
-
- if(is_array($arr) && array_key_exists('limit',$arr))
- $limit = " limit " . intval($limit) . " ";
- else
- $limit = '';
-
- $unseen = 0;
- if(is_array($arr) && array_key_exists('unseen',$arr) && intval($arr['unseen']))
- $unseen = 1;
-
- $perms_sql = item_permissions_sql(local_channel()) . item_normal();
-
- $xf = false;
-
- $x1 = q("select xchan from abconfig where chan = %d and cat = 'their_perms' and k = 'send_stream' and v = '0'",
- intval(local_channel())
- );
- if($x1) {
- $xc = ids_to_querystr($x1,'xchan',true);
- $x2 = q("select xchan from abconfig where chan = %d and cat = 'their_perms' and k = 'tag_deliver' and v = '1' and xchan in (" . $xc . ") ",
- intval(local_channel())
- );
- if($x2)
- $xf = ids_to_querystr($x2,'xchan',true);
- }
-
- $sql_extra = (($xf) ? " and ( xchan_hash in (" . $xf . ") or xchan_pubforum = 1 ) " : " and xchan_pubforum = 1 ");
-
- $r1 = q("select abook_id, xchan_hash, xchan_name, xchan_url, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash where xchan_deleted = 0 and abook_channel = %d $sql_extra order by xchan_name $limit ",
- intval(local_channel())
- );
- if(! $r1)
- return $o;
-
- $str = '';
-
- // Trying to cram all this into a single query with joins and the proper group by's is tough.
- // There also should be a way to update this via ajax.
-
- for($x = 0; $x < count($r1); $x ++) {
- $r = q("select sum(item_unseen) as unseen from item where owner_xchan = '%s' and uid = %d and item_unseen = 1 $perms_sql ",
- dbesc($r1[$x]['xchan_hash']),
- intval(local_channel())
- );
- if($r)
- $r1[$x]['unseen'] = $r[0]['unseen'];
-
-/**
- * @FIXME
- * This SQL makes the counts correct when you get forum posts arriving from different routes/sources
- * (like personal channels). However the network query for these posts doesn't yet include this
- * correction and it makes the SQL for that query pretty hairy so this is left as a future exercise.
- * It may make more sense in that query to look for the mention in the body rather than another join,
- * but that makes it very inefficient.
- *
- $r = q("select sum(item_unseen) as unseen from item left join term on oid = id where otype = %d and owner_xchan != '%s' and item.uid = %d and url = '%s' and ttype = %d $perms_sql ",
- intval(TERM_OBJ_POST),
- dbesc($r1[$x]['xchan_hash']),
- intval(local_channel()),
- dbesc($r1[$x]['xchan_url']),
- intval(TERM_MENTION)
- );
- if($r)
- $r1[$x]['unseen'] = ((array_key_exists('unseen',$r1[$x])) ? $r1[$x]['unseen'] + $r[0]['unseen'] : $r[0]['unseen']);
- *
- * end @FIXME
- */
-
- }
-
- if($r1) {
- $o .= '<div class="widget">';
- $o .= '<h3>' . t('Forums') . '</h3><ul class="nav nav-pills nav-stacked">';
-
- foreach($r1 as $rr) {
- if($unseen && (! intval($rr['unseen'])))
- continue;
- $o .= '<li><a href="network?f=&pf=1&cid=' . $rr['abook_id'] . '" ><span class="badge pull-right">' . ((intval($rr['unseen'])) ? intval($rr['unseen']) : '') . '</span><img src="' . $rr['xchan_photo_s'] . '" style="width: 16px; height: 16px;" /> ' . $rr['xchan_name'] . '</a></li>';
- }
- $o .= '</ul></div>';
- }
- return $o;
-
-}
-
-
-function widget_activity($arr) {
-
- if(! local_channel())
- return '';
-
- $o = '';
-
- if(is_array($arr) && array_key_exists('limit',$arr))
- $limit = " limit " . intval($limit) . " ";
- else
- $limit = '';
-
- $perms_sql = item_permissions_sql(local_channel()) . item_normal();
-
- $r = q("select author_xchan from item where item_unseen = 1 and uid = %d $perms_sql",
- intval(local_channel())
- );
-
- $contributors = [];
- $arr = [];
-
- if($r) {
- foreach($r as $rv) {
- if(array_key_exists($rv['author_xchan'],$contributors)) {
- $contributors[$rv['author_xchan']] ++;
- }
- else {
- $contributors[$rv['author_xchan']] = 1;
- }
- }
- foreach($contributors as $k => $v) {
- $arr[] = [ 'author_xchan' => $k, 'total' => $v ];
- }
- usort($arr,'total_sort');
- xchan_query($arr);
- }
-
- $x = [ 'entries' => $arr ];
- call_hooks('activity_widget',$x);
- $arr = $x['entries'];
-
- if($arr) {
- $o .= '<div class="widget">';
- $o .= '<h3>' . t('Activity','widget') . '</h3><ul class="nav nav-pills nav-stacked">';
-
- foreach($arr as $rv) {
- $o .= '<li><a href="network?f=&xchan=' . urlencode($rv['author_xchan']) . '" ><span class="badge pull-right">' . ((intval($rv['total'])) ? intval($rv['total']) : '') . '</span><img src="' . $rv['author']['xchan_photo_s'] . '" style="width: 16px; height: 16px;" /> ' . $rv['author']['xchan_name'] . '</a></li>';
- }
- $o .= '</ul></div>';
- }
- return $o;
-
-}
-
-
-
-
-function widget_tasklist($arr) {
-
- if (! local_channel())
- return;
-
- require_once('include/event.php');
- $o .= '<script>var tasksShowAll = 0; $(document).ready(function() { tasksFetch(); $("#tasklist-new-form").submit(function(event) { event.preventDefault(); $.post( "tasks/new", $("#tasklist-new-form").serialize(), function(data) { tasksFetch(); $("#tasklist-new-summary").val(""); } ); return false; } )});</script>';
- $o .= '<script>function taskComplete(id) { $.post("tasks/complete/"+id, function(data) { tasksFetch();}); }
- function tasksFetch() {
- $.get("tasks/fetch" + ((tasksShowAll) ? "/all" : ""), function(data) {
- $(".tasklist-tasks").html(data.html);
- });
- }
- </script>';
-
- $o .= '<div class="widget">' . '<h3>' . t('Tasks') . '</h3><div class="tasklist-tasks">';
- $o .= '</div><form id="tasklist-new-form" action="" ><input id="tasklist-new-summary" type="text" name="summary" value="" /></form>';
- $o .= '</div>';
- return $o;
-
-}
-
-
-function widget_helpindex($arr) {
-
- $o .= '<div class="widget">';
-
- $level_0 = get_help_content('sitetoc');
- if(! $level_0)
- $level_0 = get_help_content('toc');
-
- $level_0 = preg_replace('/\<ul(.*?)\>/','<ul class="nav nav-pills nav-stacked">',$level_0);
-
- $levels = array();
-
-
- if(argc() > 2) {
- $path = '';
- for($x = 1; $x < argc(); $x ++) {
- $path .= argv($x) . '/';
- $y = get_help_content($path . 'sitetoc');
- if(! $y)
- $y = get_help_content($path . 'toc');
- if($y)
- $levels[] = preg_replace('/\<ul(.*?)\>/','<ul class="nav nav-pills nav-stacked">',$y);
- }
- }
-
- if($level_0)
- $o .= $level_0;
- if($levels) {
- foreach($levels as $l) {
- $o .= '<br /><br />';
- $o .= $l;
- }
- }
-
- $o .= '</div>';
-
- return $o;
-
-}
-
-
-
-function widget_admin($arr) {
-
- /*
- * Side bar links
- */
-
- if(! is_site_admin()) {
- return '';
- }
-
- $o = '';
-
- // array( url, name, extra css classes )
-
- $aside = array(
- 'site' => array(z_root() . '/admin/site/', t('Site'), 'site'),
- 'accounts' => array(z_root() . '/admin/accounts/', t('Accounts'), 'accounts', 'pending-update', t('Member registrations waiting for confirmation')),
- 'channels' => array(z_root() . '/admin/channels/', t('Channels'), 'channels'),
- 'security' => array(z_root() . '/admin/security/', t('Security'), 'security'),
- 'features' => array(z_root() . '/admin/features/', t('Features'), 'features'),
- 'plugins' => array(z_root() . '/admin/plugins/', t('Plugins'), 'plugins'),
- 'themes' => array(z_root() . '/admin/themes/', t('Themes'), 'themes'),
- 'queue' => array(z_root() . '/admin/queue', t('Inspect queue'), 'queue'),
- 'profs' => array(z_root() . '/admin/profs', t('Profile Fields'), 'profs'),
- 'dbsync' => array(z_root() . '/admin/dbsync/', t('DB updates'), 'dbsync')
-
- );
-
- /* get plugins admin page */
-
- $r = q("SELECT * FROM addon WHERE plugin_admin = 1");
-
- $plugins = array();
- if($r) {
- foreach ($r as $h){
- $plugin = $h['aname'];
- $plugins[] = array(z_root() . '/admin/plugins/' . $plugin, $plugin, 'plugin');
- // temp plugins with admin
- App::$plugins_admin[] = $plugin;
- }
- }
-
- $logs = array(z_root() . '/admin/logs/', t('Logs'), 'logs');
-
- $arr = array('links' => $aside,'plugins' => $plugins,'logs' => $logs);
- call_hooks('admin_aside',$arr);
-
- $o .= replace_macros(get_markup_template('admin_aside.tpl'), array(
- '$admin' => $aside,
- '$admtxt' => t('Admin'),
- '$plugadmtxt' => t('Plugin Features'),
- '$plugins' => $plugins,
- '$logtxt' => t('Logs'),
- '$logs' => $logs,
- '$h_pending' => t('Member registrations waiting for confirmation'),
- '$admurl'=> z_root() . '/admin/'
- ));
-
- return $o;
-
-}
-
-
-
-function widget_album($args) {
-
- $owner_uid = App::$profile_uid;
- $sql_extra = permissions_sql($owner_uid);
-
-
- if(! perm_is_allowed($owner_uid,get_observer_hash(),'view_storage'))
- return '';
-
- if($args['album'])
- $album = $args['album'];
- if($args['title'])
- $title = $args['title'];
-
- /**
- * This may return incorrect permissions if you have multiple directories of the same name.
- * It is a limitation of the photo table using a name for a photo album instead of a folder hash
- */
-
- if($album) {
- $x = q("select hash from attach where filename = '%s' and uid = %d limit 1",
- dbesc($album),
- intval($owner_uid)
- );
- if($x) {
- $y = attach_can_view_folder($owner_uid,get_observer_hash(),$x[0]['hash']);
- if(! $y)
- return '';
- }
- }
-
- $order = 'DESC';
-
- $r = q("SELECT p.resource_id, p.id, p.filename, p.mimetype, p.imgscale, p.description, p.created FROM photo p INNER JOIN
- (SELECT resource_id, max(imgscale) imgscale FROM photo WHERE uid = %d AND album = '%s' AND imgscale <= 4 AND photo_usage IN ( %d, %d ) $sql_extra GROUP BY resource_id) ph
- ON (p.resource_id = ph.resource_id AND p.imgscale = ph.imgscale)
- ORDER BY created $order ",
- intval($owner_uid),
- dbesc($album),
- intval(PHOTO_NORMAL),
- intval(PHOTO_PROFILE)
- );
-
- //edit album name
- $album_edit = null;
-
- $photos = array();
- if($r) {
- $twist = 'rotright';
- foreach($r as $rr) {
-
- if($twist == 'rotright')
- $twist = 'rotleft';
- else
- $twist = 'rotright';
-
- $ext = $phototypes[$rr['mimetype']];
-
- $imgalt_e = $rr['filename'];
- $desc_e = $rr['description'];
-
- $imagelink = (z_root() . '/photos/' . App::$profile['channel_address'] . '/image/' . $rr['resource_id']);
-
-
- $photos[] = array(
- 'id' => $rr['id'],
- 'twist' => ' ' . $twist . rand(2,4),
- 'link' => $imagelink,
- 'title' => t('View Photo'),
- 'src' => z_root() . '/photo/' . $rr['resource_id'] . '-' . $rr['imgscale'] . '.' .$ext,
- 'alt' => $imgalt_e,
- 'desc'=> $desc_e,
- 'ext' => $ext,
- 'hash'=> $rr['resource_id'],
- 'unknown' => t('Unknown')
- );
- }
- }
-
-
- $tpl = get_markup_template('photo_album.tpl');
- $o .= replace_macros($tpl, array(
- '$photos' => $photos,
- '$album' => (($title) ? $title : $album),
- '$album_id' => rand(),
- '$album_edit' => array(t('Edit Album'), $album_edit),
- '$can_post' => false,
- '$upload' => array(t('Upload'), z_root() . '/photos/' . App::$profile['channel_address'] . '/upload/' . bin2hex($album)),
- '$order' => false,
- '$upload_form' => $upload_form,
- '$usage' => $usage_message
- ));
-
- return $o;
-}
-
diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql
index be5317722..f3d46fa73 100644
--- a/install/schema_mysql.sql
+++ b/install/schema_mysql.sql
@@ -18,8 +18,6 @@ CREATE TABLE IF NOT EXISTS `abook` (
`abook_account` int(10) unsigned NOT NULL DEFAULT '0',
`abook_channel` int(10) unsigned NOT NULL DEFAULT '0',
`abook_xchan` char(255) NOT NULL DEFAULT '',
- `abook_my_perms` int(11) NOT NULL DEFAULT '0',
- `abook_their_perms` int(11) NOT NULL DEFAULT '0',
`abook_closeness` tinyint(3) unsigned NOT NULL DEFAULT '99',
`abook_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`abook_updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -42,8 +40,6 @@ CREATE TABLE IF NOT EXISTS `abook` (
KEY `abook_account` (`abook_account`),
KEY `abook_channel` (`abook_channel`),
KEY `abook_xchan` (`abook_xchan`),
- KEY `abook_my_perms` (`abook_my_perms`),
- KEY `abook_their_perms` (`abook_their_perms`),
KEY `abook_closeness` (`abook_closeness`),
KEY `abook_created` (`abook_created`),
KEY `abook_updated` (`abook_updated`),
@@ -266,24 +262,6 @@ CREATE TABLE IF NOT EXISTS `channel` (
`channel_allow_gid` mediumtext NOT NULL,
`channel_deny_cid` mediumtext NOT NULL,
`channel_deny_gid` mediumtext NOT NULL,
- `channel_r_stream` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_r_profile` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_r_photos` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_r_abook` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_w_stream` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_w_wall` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_w_tagwall` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_w_comment` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_w_mail` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_w_photos` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_w_chat` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_a_delegate` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_r_storage` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_w_storage` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_r_pages` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_w_pages` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_a_republish` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_w_like` int(10) unsigned NOT NULL DEFAULT '0',
`channel_removed` tinyint(1) NOT NULL DEFAULT '0',
`channel_system` tinyint(1) NOT NULL DEFAULT '0',
`channel_moved` char(255) NOT NULL DEFAULT '',
@@ -300,29 +278,11 @@ CREATE TABLE IF NOT EXISTS `channel` (
KEY `channel_max_anon_mail` (`channel_max_anon_mail`),
KEY `channel_max_friend_req` (`channel_max_friend_req`),
KEY `channel_default_gid` (`channel_default_group`),
- KEY `channel_r_stream` (`channel_r_stream`),
- KEY `channel_r_profile` (`channel_r_profile`),
- KEY `channel_r_photos` (`channel_r_photos`),
- KEY `channel_r_abook` (`channel_r_abook`),
- KEY `channel_w_stream` (`channel_w_stream`),
- KEY `channel_w_wall` (`channel_w_wall`),
- KEY `channel_w_tagwall` (`channel_w_tagwall`),
- KEY `channel_w_comment` (`channel_w_comment`),
- KEY `channel_w_mail` (`channel_w_mail`),
- KEY `channel_w_photos` (`channel_w_photos`),
- KEY `channel_w_chat` (`channel_w_chat`),
KEY `channel_guid` (`channel_guid`),
KEY `channel_hash` (`channel_hash`),
KEY `channel_expire_days` (`channel_expire_days`),
- KEY `channel_a_delegate` (`channel_a_delegate`),
- KEY `channel_r_storage` (`channel_r_storage`),
- KEY `channel_w_storage` (`channel_w_storage`),
- KEY `channel_r_pages` (`channel_r_pages`),
- KEY `channel_w_pages` (`channel_w_pages`),
KEY `channel_deleted` (`channel_deleted`),
- KEY `channel_a_republish` (`channel_a_republish`),
KEY `channel_dirdate` (`channel_dirdate`),
- KEY `channel_w_like` (`channel_w_like`),
KEY `channel_removed` (`channel_removed`),
KEY `channel_system` (`channel_system`),
KEY `channel_lastpost` (`channel_lastpost`),
@@ -622,7 +582,6 @@ CREATE TABLE IF NOT EXISTS `item` (
`resource_type` char(16) NOT NULL DEFAULT '',
`attach` mediumtext NOT NULL,
`sig` text NOT NULL,
- `diaspora_meta` mediumtext NOT NULL,
`location` char(255) NOT NULL DEFAULT '',
`coord` char(255) NOT NULL DEFAULT '',
`public_policy` char(255) NOT NULL DEFAULT '',
diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql
index e78425828..4488d8271 100644
--- a/install/schema_postgres.sql
+++ b/install/schema_postgres.sql
@@ -16,8 +16,6 @@ CREATE TABLE "abook" (
"abook_account" bigint NOT NULL,
"abook_channel" bigint NOT NULL,
"abook_xchan" text NOT NULL DEFAULT '',
- "abook_my_perms" bigint NOT NULL DEFAULT '0',
- "abook_their_perms" bigint NOT NULL DEFAULT '0',
"abook_closeness" numeric(3) NOT NULL DEFAULT '99',
"abook_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"abook_updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -41,8 +39,6 @@ CREATE TABLE "abook" (
create index "abook_account" on abook ("abook_account");
create index "abook_channel" on abook ("abook_channel");
create index "abook_xchan" on abook ("abook_xchan");
- create index "abook_my_perms" on abook ("abook_my_perms");
- create index "abook_their_perms" on abook ("abook_their_perms");
create index "abook_closeness" on abook ("abook_closeness");
create index "abook_created" on abook ("abook_created");
create index "abook_updated" on abook ("abook_updated");
@@ -259,24 +255,6 @@ CREATE TABLE "channel" (
"channel_allow_gid" text ,
"channel_deny_cid" text ,
"channel_deny_gid" text ,
- "channel_r_stream" bigint NOT NULL DEFAULT '128',
- "channel_r_profile" bigint NOT NULL DEFAULT '128',
- "channel_r_photos" bigint NOT NULL DEFAULT '128',
- "channel_r_abook" bigint NOT NULL DEFAULT '128',
- "channel_w_stream" bigint NOT NULL DEFAULT '128',
- "channel_w_wall" bigint NOT NULL DEFAULT '128',
- "channel_w_tagwall" bigint NOT NULL DEFAULT '128',
- "channel_w_comment" bigint NOT NULL DEFAULT '128',
- "channel_w_mail" bigint NOT NULL DEFAULT '128',
- "channel_w_photos" bigint NOT NULL DEFAULT '128',
- "channel_w_chat" bigint NOT NULL DEFAULT '128',
- "channel_a_delegate" bigint NOT NULL DEFAULT '0',
- "channel_r_storage" bigint NOT NULL DEFAULT '128',
- "channel_w_storage" bigint NOT NULL DEFAULT '128',
- "channel_r_pages" bigint NOT NULL DEFAULT '128',
- "channel_w_pages" bigint NOT NULL DEFAULT '128',
- "channel_a_republish" bigint NOT NULL DEFAULT '128',
- "channel_w_like" bigint NOT NULL DEFAULT '128',
"channel_removed" smallint NOT NULL DEFAULT '0',
"channel_system" smallint NOT NULL DEFAULT '0',
"channel_moved" text NOT NULL DEFAULT '',
@@ -294,28 +272,10 @@ create index "channel_pageflags" on channel ("channel_pageflags");
create index "channel_max_anon_mail" on channel ("channel_max_anon_mail");
create index "channel_max_friend_req" on channel ("channel_max_friend_req");
create index "channel_default_gid" on channel ("channel_default_group");
-create index "channel_r_stream" on channel ("channel_r_stream");
-create index "channel_r_profile" on channel ("channel_r_profile");
-create index "channel_r_photos" on channel ("channel_r_photos");
-create index "channel_r_abook" on channel ("channel_r_abook");
-create index "channel_w_stream" on channel ("channel_w_stream");
-create index "channel_w_wall" on channel ("channel_w_wall");
-create index "channel_w_tagwall" on channel ("channel_w_tagwall");
-create index "channel_w_comment" on channel ("channel_w_comment");
-create index "channel_w_mail" on channel ("channel_w_mail");
-create index "channel_w_photos" on channel ("channel_w_photos");
-create index "channel_w_chat" on channel ("channel_w_chat");
create index "channel_guid" on channel ("channel_guid");
create index "channel_hash" on channel ("channel_hash");
create index "channel_expire_days" on channel ("channel_expire_days");
-create index "channel_a_delegate" on channel ("channel_a_delegate");
-create index "channel_r_storage" on channel ("channel_r_storage");
-create index "channel_w_storage" on channel ("channel_w_storage");
-create index "channel_r_pages" on channel ("channel_r_pages");
-create index "channel_w_pages" on channel ("channel_w_pages");
create index "channel_deleted" on channel ("channel_deleted");
-create index "channel_a_republish" on channel ("channel_a_republish");
-create index "channel_w_like" on channel ("channel_w_like");
create index "channel_dirdate" on channel ("channel_dirdate");
create index "channel_lastpost" on channel ("channel_lastpost");
create index "channel_removed" on channel ("channel_removed");
@@ -609,7 +569,6 @@ CREATE TABLE "item" (
"resource_type" varchar(16) NOT NULL DEFAULT '',
"attach" text NOT NULL,
"sig" text NOT NULL DEFAULT '',
- "diaspora_meta" text NOT NULL DEFAULT '',
"location" text NOT NULL DEFAULT '',
"coord" text NOT NULL DEFAULT '',
"public_policy" text NOT NULL DEFAULT '',
diff --git a/library/oauth2/.gitignore b/library/oauth2/.gitignore
deleted file mode 100644
index c43a667d4..000000000
--- a/library/oauth2/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-# Test Files #
-test/config/test.sqlite
-vendor
-composer.lock
-.idea
diff --git a/library/oauth2/.travis.yml b/library/oauth2/.travis.yml
deleted file mode 100644
index dd4aae4a6..000000000
--- a/library/oauth2/.travis.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-language: php
-sudo: false
-cache:
- directories:
- - $HOME/.composer/cache
- - vendor
-php:
-- 5.3
-- 5.4
-- 5.5
-- 5.6
-- 7
-- hhvm
-env:
- global:
- - SKIP_MONGO_TESTS=1
- - secure: Bc5ZqvZ1YYpoPZNNuU2eCB8DS6vBYrAdfBtTenBs5NSxzb+Vjven4kWakbzaMvZjb/Ib7Uph7DGuOtJXpmxnvBXPLd707LZ89oFWN/yqQlZKCcm8iErvJCB5XL+/ONHj2iPdR242HJweMcat6bMCwbVWoNDidjtWMH0U2mYFy3M=
- - secure: R3bXlymyFiY2k2jf7+fv/J8i34wtXTkmD4mCr5Ps/U+vn9axm2VtvR2Nj+r7LbRjn61gzFE/xIVjYft/wOyBOYwysrfriydrnRVS0owh6y+7EyOyQWbRX11vVQMf8o31QCQE5BY58V5AJZW3MjoOL0FVlTgySJiJvdw6Pv18v+E=
-services:
-- mongodb
-- redis-server
-- cassandra
-before_install:
-- phpenv config-rm xdebug.ini || return 0
-install:
-- composer install --no-interaction
-before_script:
-- psql -c 'create database oauth2_server_php;' -U postgres
-after_script:
-- php test/cleanup.php
diff --git a/library/oauth2/phpunit.xml b/library/oauth2/phpunit.xml
deleted file mode 100644
index e36403f0a..000000000
--- a/library/oauth2/phpunit.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit backupGlobals="false"
- backupStaticAttributes="false"
- colors="true"
- convertErrorsToExceptions="true"
- convertNoticesToExceptions="true"
- convertWarningsToExceptions="true"
- processIsolation="false"
- stopOnFailure="false"
- syntaxCheck="false"
- bootstrap="test/bootstrap.php"
->
- <testsuites>
- <testsuite name="Oauth2 Test Suite">
- <directory>./test/OAuth2/</directory>
- </testsuite>
- </testsuites>
-
- <filter>
- <whitelist>
- <directory suffix=".php">./src/OAuth2/</directory>
- </whitelist>
- </filter>
-</phpunit>
diff --git a/util/hmessages.po b/util/hmessages.po
index 796a53de2..b2f18043c 100644
--- a/util/hmessages.po
+++ b/util/hmessages.po
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: 2.3\n"
+"Project-Id-Version: 5.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-03-10 00:05-0800\n"
+"POT-Creation-Date: 2017-03-17 00:04-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -89,7 +89,7 @@ msgstr ""
#: ../../Zotlabs/Access/PermissionRoles.php:270
#: ../../Zotlabs/Module/Register.php:213 ../../Zotlabs/Module/Profiles.php:798
-#: ../../Zotlabs/Module/Connedit.php:925
+#: ../../Zotlabs/Module/Connedit.php:922
#: ../../Zotlabs/Module/New_channel.php:132
#: ../../Zotlabs/Module/Settings/Channel.php:463
#: ../../extend/addon/addon/cdav/cdav.php:277
@@ -183,7 +183,7 @@ msgstr ""
msgid "parent"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:130 ../../include/text.php:2684
+#: ../../Zotlabs/Storage/Browser.php:130 ../../include/text.php:2670
msgid "Collection"
msgstr ""
@@ -210,11 +210,11 @@ msgstr ""
#: ../../Zotlabs/Storage/Browser.php:163 ../../Zotlabs/Module/Photos.php:784
#: ../../Zotlabs/Module/Photos.php:1244
#: ../../Zotlabs/Module/Embedphotos.php:145 ../../Zotlabs/Lib/Apps.php:561
-#: ../../Zotlabs/Lib/Apps.php:639
+#: ../../Zotlabs/Lib/Apps.php:639 ../../Zotlabs/Widget/Album.php:84
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:745
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:746
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:753
-#: ../../include/conversation.php:1177 ../../include/widgets.php:1757
+#: ../../include/conversation.php:1177
msgid "Unknown"
msgstr ""
@@ -233,9 +233,9 @@ msgstr ""
#: ../../Zotlabs/Storage/Browser.php:228 ../../Zotlabs/Storage/Browser.php:330
#: ../../Zotlabs/Module/Profiles.php:801 ../../Zotlabs/Module/Webpages.php:243
-#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/Connedit.php:928
+#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/Connedit.php:925
#: ../../Zotlabs/Module/New_channel.php:147
-#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Layouts.php:184
+#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Layouts.php:185
#: ../../extend/addon/addon/cdav/include/widgets.php:127
#: ../../extend/addon/addon/cdav/include/widgets.php:164
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1151
@@ -243,26 +243,25 @@ msgid "Create"
msgstr ""
#: ../../Zotlabs/Storage/Browser.php:229 ../../Zotlabs/Storage/Browser.php:332
-#: ../../Zotlabs/Module/Cover_photo.php:357
-#: ../../Zotlabs/Module/Profile_photo.php:421
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:423
#: ../../Zotlabs/Module/Photos.php:811 ../../Zotlabs/Module/Photos.php:1368
-#: ../../Zotlabs/Module/Embedphotos.php:157
+#: ../../Zotlabs/Module/Embedphotos.php:157 ../../Zotlabs/Widget/Album.php:97
#: ../../extend/addon/addon/cdav/include/widgets.php:132
#: ../../extend/addon/addon/cdav/include/widgets.php:168
-#: ../../include/widgets.php:1770
msgid "Upload"
msgstr ""
#: ../../Zotlabs/Storage/Browser.php:233 ../../Zotlabs/Module/Chat.php:248
#: ../../Zotlabs/Module/Admin/Channels.php:159
-#: ../../Zotlabs/Module/Connedit.php:913 ../../Zotlabs/Module/Wiki.php:171
+#: ../../Zotlabs/Module/Wiki.php:171 ../../Zotlabs/Module/Connedit.php:910
#: ../../Zotlabs/Module/Sharedwithme.php:99
#: ../../Zotlabs/Module/Settings/Oauth.php:89
#: ../../Zotlabs/Module/Settings/Oauth.php:115
+#: ../../Zotlabs/Widget/Wiki_page_history.php:22
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1136
#: ../../extend/addon/addon/rendezvous/rendezvous.php:172
#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:156
-#: ../../include/widgets.php:976
msgid "Name"
msgstr ""
@@ -272,7 +271,7 @@ msgid "Type"
msgstr ""
#: ../../Zotlabs/Storage/Browser.php:235
-#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1398
+#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1397
msgid "Size"
msgstr ""
@@ -282,16 +281,16 @@ msgid "Last Modified"
msgstr ""
#: ../../Zotlabs/Storage/Browser.php:238
-#: ../../Zotlabs/Module/Editblock.php:109
-#: ../../Zotlabs/Module/Connections.php:300
-#: ../../Zotlabs/Module/Connections.php:320
+#: ../../Zotlabs/Module/Editblock.php:114
+#: ../../Zotlabs/Module/Connections.php:296
+#: ../../Zotlabs/Module/Connections.php:316
#: ../../Zotlabs/Module/Admin/Profs.php:154
#: ../../Zotlabs/Module/Webpages.php:244
#: ../../Zotlabs/Module/Editlayout.php:114
-#: ../../Zotlabs/Module/Editwebpage.php:145 ../../Zotlabs/Module/Menu.php:112
+#: ../../Zotlabs/Module/Editwebpage.php:147 ../../Zotlabs/Module/Menu.php:112
#: ../../Zotlabs/Module/Editpost.php:85 ../../Zotlabs/Module/Wiki.php:164
-#: ../../Zotlabs/Module/Wiki.php:271 ../../Zotlabs/Module/Blocks.php:160
-#: ../../Zotlabs/Module/Layouts.php:192
+#: ../../Zotlabs/Module/Wiki.php:280 ../../Zotlabs/Module/Blocks.php:160
+#: ../../Zotlabs/Module/Layouts.php:193
#: ../../Zotlabs/Module/Settings/Oauth.php:149
#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Lib/ThreadItem.php:106
#: ../../Zotlabs/Lib/Apps.php:357
@@ -300,21 +299,21 @@ msgstr ""
#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:149
#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:251
#: ../../include/page_widgets.php:9 ../../include/page_widgets.php:39
-#: ../../include/channel.php:1044 ../../include/channel.php:1048
-#: ../../include/menu.php:113
+#: ../../include/menu.php:113 ../../include/channel.php:1044
+#: ../../include/channel.php:1048
msgid "Edit"
msgstr ""
#: ../../Zotlabs/Storage/Browser.php:239 ../../Zotlabs/Module/Profiles.php:803
-#: ../../Zotlabs/Module/Editblock.php:134
-#: ../../Zotlabs/Module/Connections.php:271
+#: ../../Zotlabs/Module/Editblock.php:139
+#: ../../Zotlabs/Module/Connections.php:267
#: ../../Zotlabs/Module/Admin/Profs.php:155
#: ../../Zotlabs/Module/Admin/Accounts.php:173
#: ../../Zotlabs/Module/Admin/Channels.php:149
#: ../../Zotlabs/Module/Webpages.php:246
-#: ../../Zotlabs/Module/Editlayout.php:137
-#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177
-#: ../../Zotlabs/Module/Connedit.php:661 ../../Zotlabs/Module/Connedit.php:930
+#: ../../Zotlabs/Module/Editlayout.php:138
+#: ../../Zotlabs/Module/Editwebpage.php:172 ../../Zotlabs/Module/Group.php:177
+#: ../../Zotlabs/Module/Connedit.php:658 ../../Zotlabs/Module/Connedit.php:927
#: ../../Zotlabs/Module/Blocks.php:162
#: ../../Zotlabs/Module/Settings/Oauth.php:150
#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Photos.php:1174
@@ -372,13 +371,14 @@ msgstr ""
#: ../../Zotlabs/Web/WebServer.php:128
#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Chat.php:98
#: ../../Zotlabs/Module/Chat.php:103 ../../Zotlabs/Module/Register.php:77
-#: ../../Zotlabs/Module/Setup.php:212 ../../Zotlabs/Module/Message.php:18
+#: ../../Zotlabs/Module/Item.php:220 ../../Zotlabs/Module/Item.php:230
+#: ../../Zotlabs/Module/Item.php:1037 ../../Zotlabs/Module/Message.php:18
#: ../../Zotlabs/Module/Profiles.php:198 ../../Zotlabs/Module/Profiles.php:635
#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Bookmarks.php:61
#: ../../Zotlabs/Module/Editblock.php:67 ../../Zotlabs/Module/Page.php:35
-#: ../../Zotlabs/Module/Page.php:91 ../../Zotlabs/Module/Connections.php:33
-#: ../../Zotlabs/Module/Cover_photo.php:277
-#: ../../Zotlabs/Module/Cover_photo.php:290
+#: ../../Zotlabs/Module/Page.php:91 ../../Zotlabs/Module/Connections.php:29
+#: ../../Zotlabs/Module/Cover_photo.php:281
+#: ../../Zotlabs/Module/Cover_photo.php:294
#: ../../Zotlabs/Module/Webpages.php:116
#: ../../Zotlabs/Module/Editlayout.php:67
#: ../../Zotlabs/Module/Editlayout.php:90
@@ -388,27 +388,26 @@ msgstr ""
#: ../../Zotlabs/Module/Editwebpage.php:126
#: ../../Zotlabs/Module/Network.php:15 ../../Zotlabs/Module/Menu.php:78
#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Locs.php:87
-#: ../../Zotlabs/Module/Filestorage.php:23
+#: ../../Zotlabs/Module/Setup.php:212 ../../Zotlabs/Module/Filestorage.php:23
#: ../../Zotlabs/Module/Filestorage.php:78
#: ../../Zotlabs/Module/Filestorage.php:93
#: ../../Zotlabs/Module/Filestorage.php:120
#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Group.php:13
#: ../../Zotlabs/Module/Block.php:26 ../../Zotlabs/Module/Block.php:76
-#: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Connedit.php:388
-#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/Item.php:220
-#: ../../Zotlabs/Module/Item.php:230 ../../Zotlabs/Module/Item.php:1067
+#: ../../Zotlabs/Module/Wiki.php:50 ../../Zotlabs/Module/Wiki.php:215
+#: ../../Zotlabs/Module/Wiki.php:320 ../../Zotlabs/Module/Manage.php:10
+#: ../../Zotlabs/Module/Connedit.php:385 ../../Zotlabs/Module/Mitem.php:115
#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Invite.php:17
#: ../../Zotlabs/Module/Invite.php:94 ../../Zotlabs/Module/New_channel.php:77
#: ../../Zotlabs/Module/New_channel.php:104
#: ../../Zotlabs/Module/Notifications.php:11 ../../Zotlabs/Module/Poke.php:137
-#: ../../Zotlabs/Module/Wiki.php:50 ../../Zotlabs/Module/Wiki.php:215
-#: ../../Zotlabs/Module/Wiki.php:311 ../../Zotlabs/Module/Like.php:181
-#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Mail.php:164
-#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
-#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
-#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Rate.php:113
-#: ../../Zotlabs/Module/Profile_photo.php:278
-#: ../../Zotlabs/Module/Profile_photo.php:291
+#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Mood.php:116
+#: ../../Zotlabs/Module/Mail.php:164 ../../Zotlabs/Module/Blocks.php:73
+#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Layouts.php:71
+#: ../../Zotlabs/Module/Layouts.php:78 ../../Zotlabs/Module/Layouts.php:89
+#: ../../Zotlabs/Module/Rate.php:113
+#: ../../Zotlabs/Module/Profile_photo.php:280
+#: ../../Zotlabs/Module/Profile_photo.php:293
#: ../../Zotlabs/Module/Appman.php:82 ../../Zotlabs/Module/Common.php:39
#: ../../Zotlabs/Module/Regmod.php:21 ../../Zotlabs/Module/Pdledit.php:29
#: ../../Zotlabs/Module/Events.php:271
@@ -416,33 +415,31 @@ msgstr ""
#: ../../Zotlabs/Module/Sharedwithme.php:11
#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Sources.php:74
#: ../../Zotlabs/Module/Channel.php:115 ../../Zotlabs/Module/Channel.php:245
-#: ../../Zotlabs/Module/Channel.php:285 ../../Zotlabs/Module/Suggest.php:30
+#: ../../Zotlabs/Module/Channel.php:285 ../../Zotlabs/Module/Suggest.php:28
#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294
#: ../../Zotlabs/Module/Thing.php:335
#: ../../Zotlabs/Module/Viewconnections.php:28
#: ../../Zotlabs/Module/Viewconnections.php:33
#: ../../Zotlabs/Module/Photos.php:73 ../../Zotlabs/Module/Profile.php:83
#: ../../Zotlabs/Module/Profile.php:100 ../../Zotlabs/Lib/Chatroom.php:137
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:55
#: ../../extend/addon/addon/keepout/keepout.php:36
#: ../../extend/addon/addon/pumpio/pumpio.php:40
#: ../../extend/addon/addon/openid/Mod_Id.php:53
-#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:58
#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:194
#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:291
-#: ../../include/items.php:3350 ../../include/attach.php:144
-#: ../../include/attach.php:191 ../../include/attach.php:255
-#: ../../include/attach.php:269 ../../include/attach.php:276
-#: ../../include/attach.php:343 ../../include/attach.php:357
-#: ../../include/attach.php:364 ../../include/attach.php:441
-#: ../../include/attach.php:908 ../../include/attach.php:979
-#: ../../include/attach.php:1137 ../../include/photos.php:27
+#: ../../include/photos.php:28 ../../include/items.php:3360
+#: ../../include/attach.php:144 ../../include/attach.php:191
+#: ../../include/attach.php:255 ../../include/attach.php:269
+#: ../../include/attach.php:276 ../../include/attach.php:343
+#: ../../include/attach.php:357 ../../include/attach.php:364
+#: ../../include/attach.php:441 ../../include/attach.php:908
+#: ../../include/attach.php:979 ../../include/attach.php:1137
msgid "Permission denied."
msgstr ""
#: ../../Zotlabs/Web/Router.php:146 ../../Zotlabs/Module/Page.php:94
#: ../../Zotlabs/Module/Block.php:79 ../../Zotlabs/Module/Display.php:122
-#: ../../Zotlabs/Lib/NativeWikiPage.php:522 ../../include/help.php:68
+#: ../../Zotlabs/Lib/NativeWikiPage.php:489 ../../include/help.php:68
msgid "Page not found."
msgstr ""
@@ -484,7 +481,6 @@ msgid "Room not found"
msgstr ""
#: ../../Zotlabs/Module/Chat.php:194 ../../Zotlabs/Module/Chat.php:239
-#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:350
#: ../../Zotlabs/Module/Profiles.php:726 ../../Zotlabs/Module/Connect.php:98
#: ../../Zotlabs/Module/Admin/Features.php:66
#: ../../Zotlabs/Module/Admin/Logs.php:84
@@ -496,15 +492,17 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Site.php:268
#: ../../Zotlabs/Module/Admin/Plugins.php:438
#: ../../Zotlabs/Module/Admin/Themes.php:158 ../../Zotlabs/Module/Locs.php:121
+#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:350
#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Group.php:85
-#: ../../Zotlabs/Module/Cal.php:342 ../../Zotlabs/Module/Import_items.php:122
-#: ../../Zotlabs/Module/Connedit.php:893 ../../Zotlabs/Module/Mitem.php:243
+#: ../../Zotlabs/Module/Cal.php:342 ../../Zotlabs/Module/Wiki.php:168
+#: ../../Zotlabs/Module/Import_items.php:122
+#: ../../Zotlabs/Module/Connedit.php:890 ../../Zotlabs/Module/Mitem.php:243
#: ../../Zotlabs/Module/Invite.php:149 ../../Zotlabs/Module/Poke.php:186
-#: ../../Zotlabs/Module/Wiki.php:168 ../../Zotlabs/Module/Pconfig.php:107
-#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Mail.php:413
-#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Appman.php:134
-#: ../../Zotlabs/Module/Pdledit.php:74 ../../Zotlabs/Module/Events.php:493
-#: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149
+#: ../../Zotlabs/Module/Pconfig.php:107 ../../Zotlabs/Module/Mood.php:139
+#: ../../Zotlabs/Module/Mail.php:413 ../../Zotlabs/Module/Rate.php:166
+#: ../../Zotlabs/Module/Appman.php:134 ../../Zotlabs/Module/Pdledit.php:74
+#: ../../Zotlabs/Module/Events.php:493 ../../Zotlabs/Module/Sources.php:114
+#: ../../Zotlabs/Module/Sources.php:149
#: ../../Zotlabs/Module/Settings/Features.php:47
#: ../../Zotlabs/Module/Settings/Oauth.php:87
#: ../../Zotlabs/Module/Settings/Account.php:118
@@ -518,11 +516,10 @@ msgstr ""
#: ../../Zotlabs/Module/Photos.php:1053 ../../Zotlabs/Module/Photos.php:1093
#: ../../Zotlabs/Module/Photos.php:1211 ../../Zotlabs/Module/Xchan.php:15
#: ../../Zotlabs/Lib/ThreadItem.php:731
+#: ../../Zotlabs/Widget/Eventstools.php:16
#: ../../extend/addon/addon/chords/Mod_Chords.php:60
-#: ../../extend/addon/addon/diaspora/diaspora.php:714
#: ../../extend/addon/addon/dwpost/dwpost.php:89
#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:124
-#: ../../extend/addon/addon/friendica/friendica.php:128
#: ../../extend/addon/addon/frphotos/frphotos.php:96
#: ../../extend/addon/addon/hubwall/hubwall.php:95
#: ../../extend/addon/addon/ijpost/ijpost.php:89
@@ -563,8 +560,7 @@ msgstr ""
#: ../../extend/addon/addon/likebanner/likebanner.php:57
#: ../../extend/addon/addon/mailtest/mailtest.php:100
#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:153
-#: ../../extend/addon/addon/gnusoc/gnusoc.php:133
-#: ../../include/widgets.php:801 ../../include/js_strings.php:22
+#: ../../include/js_strings.php:22
#: ../../view/theme/redbasic/php/config.php:106
msgid "Submit"
msgstr ""
@@ -600,8 +596,8 @@ msgstr ""
msgid "Encrypt text"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Editblock.php:111
-#: ../../Zotlabs/Module/Editwebpage.php:146 ../../Zotlabs/Module/Mail.php:287
+#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Editblock.php:116
+#: ../../Zotlabs/Module/Editwebpage.php:148 ../../Zotlabs/Module/Mail.php:287
#: ../../Zotlabs/Module/Mail.php:412 ../../include/conversation.php:1295
msgid "Insert web link"
msgstr ""
@@ -623,7 +619,7 @@ msgid "Expiration of chats (minutes)"
msgstr ""
#: ../../Zotlabs/Module/Chat.php:232 ../../Zotlabs/Module/Filestorage.php:152
-#: ../../Zotlabs/Module/Connedit.php:683 ../../Zotlabs/Module/Thing.php:313
+#: ../../Zotlabs/Module/Connedit.php:680 ../../Zotlabs/Module/Thing.php:313
#: ../../Zotlabs/Module/Thing.php:363 ../../Zotlabs/Module/Photos.php:657
#: ../../Zotlabs/Module/Photos.php:1042 ../../include/acl_selectors.php:218
msgid "Permissions"
@@ -639,7 +635,7 @@ msgid "No chatrooms available"
msgstr ""
#: ../../Zotlabs/Module/Chat.php:253 ../../Zotlabs/Module/Profiles.php:834
-#: ../../Zotlabs/Module/Manage.php:143 ../../Zotlabs/Module/Wiki.php:167
+#: ../../Zotlabs/Module/Wiki.php:167 ../../Zotlabs/Module/Manage.php:143
#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:152
msgid "Create New"
msgstr ""
@@ -784,7 +780,7 @@ msgid "Membership on this site is by invitation only."
msgstr ""
#: ../../Zotlabs/Module/Register.php:270 ../../include/nav.php:162
-#: ../../boot.php:1687
+#: ../../boot.php:1671
msgid "Register"
msgstr ""
@@ -799,449 +795,38 @@ msgstr ""
msgid "Fetching URL returns error: %1$s"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:176
-msgid "$Projectname Server - Setup"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:180
-msgid "Could not connect to database."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:184
-msgid ""
-"Could not connect to specified site URL. Possible SSL certificate or DNS "
-"issue."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:191
-msgid "Could not create table."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:196
-msgid "Your site database has been installed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:200
-msgid ""
-"You may need to import the file \"install/schema_xxx.sql\" manually using a "
-"database client."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:201 ../../Zotlabs/Module/Setup.php:263
-#: ../../Zotlabs/Module/Setup.php:743
-msgid "Please see the file \"install/INSTALL.txt\"."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:260
-msgid "System check"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:264 ../../Zotlabs/Module/Cal.php:337
-#: ../../Zotlabs/Module/Cal.php:344 ../../Zotlabs/Module/Events.php:690
-#: ../../Zotlabs/Module/Events.php:699 ../../Zotlabs/Module/Photos.php:944
-#: ../../extend/addon/addon/cdav/Mod_Cdav.php:847
-msgid "Next"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:265
-msgid "Check again"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:287
-msgid "Database connection"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:288
-msgid ""
-"In order to install $Projectname we need to know how to connect to your "
-"database."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:289
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:290
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:294
-msgid "Database Server Name"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:294
-msgid "Default is 127.0.0.1"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:295
-msgid "Database Port"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:295
-msgid "Communication port number - use 0 for default"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:296
-msgid "Database Login Name"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:297
-msgid "Database Login Password"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:298
-msgid "Database Name"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:299
-msgid "Database Type"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:342
-msgid "Site administrator email address"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:342
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:344
-msgid "Website URL"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:344
-msgid "Please use SSL (https) URL if available."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:303 ../../Zotlabs/Module/Setup.php:346
-msgid "Please select a default timezone for your website"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:331
-msgid "Site settings"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:385
-msgid "PHP version 5.5 or greater is required."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:386
-msgid "PHP version"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:402
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:403
-msgid ""
-"If you don't have a command line version of PHP installed on server, you "
-"will not be able to run background polling via cron."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:407
-msgid "PHP executable path"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:407
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:412
-msgid "Command line PHP"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:422
-msgid ""
-"Unable to check command line PHP, as shell_exec() is disabled. This is "
-"required."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:425
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:426
-msgid "This is required for message delivery to work."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:429
-msgid "PHP register_argc_argv"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:447
-#, php-format
-msgid ""
-"Your max allowed total upload size is set to %s. Maximum size of one file to "
-"upload is set to %s. You are allowed to upload up to %d files at once."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:452
-msgid "You can adjust these settings in the server php.ini file."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:454
-msgid "PHP upload limits"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:477
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:478
-msgid ""
-"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
-"installation.php\"."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:481
-msgid "Generate encryption keys"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:498
-msgid "libCurl PHP module"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:499
-msgid "GD graphics PHP module"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:500
-msgid "OpenSSL PHP module"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:501
-msgid "PDO database PHP module"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:502
-msgid "mb_string PHP module"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:503
-msgid "xml PHP module"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:509
-msgid "Apache mod_rewrite module"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:507
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:513 ../../Zotlabs/Module/Setup.php:516
-msgid "exec"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:513
-msgid ""
-"Error: exec is required but is either not installed or has been disabled in "
-"php.ini"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:519 ../../Zotlabs/Module/Setup.php:522
-msgid "shell_exec"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:519
-msgid ""
-"Error: shell_exec is required but is either not installed or has been "
-"disabled in php.ini"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:527
-msgid "Error: libCURL PHP module required but not installed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:531
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:535
-msgid "Error: openssl PHP module required but not installed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:539
-msgid "Error: PDO database PHP module required but not installed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:543
-msgid "Error: mb_string PHP module required but not installed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:547
-msgid "Error: xml PHP module required for DAV but not installed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:565
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\" "
-"in the top folder of your web server and it is unable to do so."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:566
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:567
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named .htconfig.php in your Red top folder."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:568
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation. "
-"Please see the file \"install/INSTALL.txt\" for instructions."
+#: ../../Zotlabs/Module/Item.php:184
+msgid "Unable to locate original post."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:571
-msgid ".htconfig.php is writable"
+#: ../../Zotlabs/Module/Item.php:450
+msgid "Empty post discarded."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:585
-msgid ""
-"This software uses the Smarty3 template engine to render its web views. "
-"Smarty3 compiles templates to PHP to speed up rendering."
+#: ../../Zotlabs/Module/Item.php:824
+msgid "Duplicate post suppressed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:586
-#, php-format
-msgid ""
-"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the top level web folder."
+#: ../../Zotlabs/Module/Item.php:954
+msgid "System error. Post not saved."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:587 ../../Zotlabs/Module/Setup.php:608
-msgid ""
-"Please ensure that the user that your web server runs as (e.g. www-data) has "
-"write access to this folder."
+#: ../../Zotlabs/Module/Item.php:1084
+msgid "Unable to obtain post information from database."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:588
+#: ../../Zotlabs/Module/Item.php:1091
#, php-format
-msgid ""
-"Note: as a security measure, you should give the web server write access to "
-"%s only--not the template files (.tpl) that it contains."
+msgid "You have reached your limit of %1$.0f top level posts."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:591
+#: ../../Zotlabs/Module/Item.php:1098
#, php-format
-msgid "%s is writable"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:607
-msgid ""
-"This software uses the store directory to save uploaded files. The web "
-"server needs to have write access to the store directory under the top level "
-"web folder"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:611
-msgid "store is writable"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:644
-msgid ""
-"SSL certificate cannot be validated. Fix certificate or disable https access "
-"to this site."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:645
-msgid ""
-"If you have https access to your website or allow connections to TCP port "
-"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
-"NOT use self-signed certificates!"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:646
-msgid ""
-"This restriction is incorporated because public posts from you may for "
-"example contain references to images on your own hub."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:647
-msgid ""
-"If your certificate is not recognized, members of other sites (who may "
-"themselves have valid certificates) will get a warning message on their own "
-"site complaining about security issues."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:648
-msgid ""
-"This can cause usability issues elsewhere (not just on your own site) so we "
-"must insist on this requirement."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:649
-msgid ""
-"Providers are available that issue free certificates which are browser-valid."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:651
-msgid ""
-"If you are confident that the certificate is valid and signed by a trusted "
-"authority, check to see if you have failed to install an intermediate cert. "
-"These are not normally required by browsers, but are required for server-to-"
-"server communications."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:653
-msgid "SSL certificate validation"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:659
-msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
-"Test: "
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:662
-msgid "Url rewrite is working"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:676
-msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:700
-#: ../../extend/addon/addon/cdav/cdav.php:41
-#: ../../extend/addon/addon/rendezvous/rendezvous.php:401
-msgid "Errors encountered creating database tables."
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:741
-msgid "<h1>What next</h1>"
-msgstr ""
-
-#: ../../Zotlabs/Module/Setup.php:742
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
+msgid "You have reached your limit of %1$.0f webpages."
msgstr ""
#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:184
#: ../../Zotlabs/Module/Profiles.php:241 ../../Zotlabs/Module/Profiles.php:659
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:62
msgid "Profile not found."
msgstr ""
@@ -1316,7 +901,7 @@ msgstr ""
#: ../../Zotlabs/Module/Profiles.php:502 ../../Zotlabs/Module/Profiles.php:793
#: ../../Zotlabs/Module/Admin/Channels.php:160
-#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Connedit.php:920
+#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Connedit.php:917
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1143
msgid "Address"
msgstr ""
@@ -1340,20 +925,18 @@ msgstr ""
#: ../../Zotlabs/Module/Profiles.php:681
#: ../../Zotlabs/Module/Admin/Site.php:226 ../../Zotlabs/Module/Menu.php:100
#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Filestorage.php:160
-#: ../../Zotlabs/Module/Filestorage.php:168
-#: ../../Zotlabs/Module/Connedit.php:402 ../../Zotlabs/Module/Connedit.php:786
+#: ../../Zotlabs/Module/Filestorage.php:168 ../../Zotlabs/Module/Wiki.php:179
+#: ../../Zotlabs/Module/Connedit.php:399 ../../Zotlabs/Module/Connedit.php:783
#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:163
#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
-#: ../../Zotlabs/Module/Api.php:97 ../../Zotlabs/Module/Wiki.php:179
-#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
-#: ../../Zotlabs/Module/Removeme.php:63
+#: ../../Zotlabs/Module/Api.php:97 ../../Zotlabs/Module/Events.php:470
+#: ../../Zotlabs/Module/Events.php:471 ../../Zotlabs/Module/Removeme.php:63
#: ../../Zotlabs/Module/Settings/Display.php:103
#: ../../Zotlabs/Module/Settings/Channel.php:294
#: ../../Zotlabs/Module/Photos.php:652
#: ../../extend/addon/addon/dwpost/dwpost.php:73
#: ../../extend/addon/addon/dwpost/dwpost.php:85
#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120
-#: ../../extend/addon/addon/friendica/dfrn_request.php:865
#: ../../extend/addon/addon/ijpost/ijpost.php:73
#: ../../extend/addon/addon/ijpost/ijpost.php:85
#: ../../extend/addon/addon/jappixmini/jappixmini.php:309
@@ -1398,26 +981,25 @@ msgstr ""
#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:164
#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:111
-#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1710
+#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1694
msgid "No"
msgstr ""
#: ../../Zotlabs/Module/Profiles.php:681
#: ../../Zotlabs/Module/Admin/Site.php:228 ../../Zotlabs/Module/Menu.php:100
#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Filestorage.php:160
-#: ../../Zotlabs/Module/Filestorage.php:168
-#: ../../Zotlabs/Module/Connedit.php:402 ../../Zotlabs/Module/Mitem.php:162
+#: ../../Zotlabs/Module/Filestorage.php:168 ../../Zotlabs/Module/Wiki.php:179
+#: ../../Zotlabs/Module/Connedit.php:399 ../../Zotlabs/Module/Mitem.php:162
#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240
#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Api.php:96
-#: ../../Zotlabs/Module/Wiki.php:179 ../../Zotlabs/Module/Events.php:470
-#: ../../Zotlabs/Module/Events.php:471 ../../Zotlabs/Module/Removeme.php:63
+#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
+#: ../../Zotlabs/Module/Removeme.php:63
#: ../../Zotlabs/Module/Settings/Display.php:103
#: ../../Zotlabs/Module/Settings/Channel.php:294
#: ../../Zotlabs/Module/Photos.php:652
#: ../../extend/addon/addon/dwpost/dwpost.php:73
#: ../../extend/addon/addon/dwpost/dwpost.php:85
#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120
-#: ../../extend/addon/addon/friendica/dfrn_request.php:865
#: ../../extend/addon/addon/ijpost/ijpost.php:73
#: ../../extend/addon/addon/ijpost/ijpost.php:85
#: ../../extend/addon/addon/jappixmini/jappixmini.php:309
@@ -1462,7 +1044,7 @@ msgstr ""
#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:164
#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:111
-#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1710
+#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1694
msgid "Yes"
msgstr ""
@@ -1578,7 +1160,7 @@ msgstr ""
msgid "Postal/Zip code"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:760 ../../Zotlabs/Module/Connedit.php:938
+#: ../../Zotlabs/Module/Profiles.php:760 ../../Zotlabs/Module/Connedit.php:935
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1161
msgid "Country"
msgstr ""
@@ -1664,7 +1246,7 @@ msgstr ""
msgid "Communications"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:789 ../../Zotlabs/Module/Connedit.php:916
+#: ../../Zotlabs/Module/Profiles.php:789 ../../Zotlabs/Module/Connedit.php:913
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1139
msgid "Phone"
msgstr ""
@@ -1672,7 +1254,7 @@ msgstr ""
#: ../../Zotlabs/Module/Profiles.php:790
#: ../../Zotlabs/Module/Admin/Accounts.php:169
#: ../../Zotlabs/Module/Admin/Accounts.php:181
-#: ../../Zotlabs/Module/Connedit.php:917
+#: ../../Zotlabs/Module/Connedit.php:914
#: ../../extend/addon/addon/redred/redred.php:107
#: ../../extend/addon/addon/rtof/rtof.php:93
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1140
@@ -1682,56 +1264,56 @@ msgstr ""
msgid "Email"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:791 ../../Zotlabs/Module/Connedit.php:918
+#: ../../Zotlabs/Module/Profiles.php:791 ../../Zotlabs/Module/Connedit.php:915
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1141
msgid "Instant messenger"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:792 ../../Zotlabs/Module/Connedit.php:919
+#: ../../Zotlabs/Module/Profiles.php:792 ../../Zotlabs/Module/Connedit.php:916
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1142
msgid "Website"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:794 ../../Zotlabs/Module/Connedit.php:921
+#: ../../Zotlabs/Module/Profiles.php:794 ../../Zotlabs/Module/Connedit.php:918
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1144
msgid "Note"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:795 ../../Zotlabs/Module/Connedit.php:922
+#: ../../Zotlabs/Module/Profiles.php:795 ../../Zotlabs/Module/Connedit.php:919
#: ../../extend/addon/addon/cdav/cdav.php:270
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1145
#: ../../include/connections.php:668
msgid "Mobile"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:796 ../../Zotlabs/Module/Connedit.php:923
+#: ../../Zotlabs/Module/Profiles.php:796 ../../Zotlabs/Module/Connedit.php:920
#: ../../extend/addon/addon/cdav/cdav.php:271
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1146
#: ../../include/connections.php:669
msgid "Home"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:797 ../../Zotlabs/Module/Connedit.php:924
+#: ../../Zotlabs/Module/Profiles.php:797 ../../Zotlabs/Module/Connedit.php:921
#: ../../extend/addon/addon/cdav/cdav.php:274
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1147
#: ../../include/connections.php:672
msgid "Work"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:799 ../../Zotlabs/Module/Connedit.php:926
+#: ../../Zotlabs/Module/Profiles.php:799 ../../Zotlabs/Module/Connedit.php:923
#: ../../extend/addon/addon/jappixmini/jappixmini.php:368
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1149
msgid "Add Contact"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:800 ../../Zotlabs/Module/Connedit.php:927
+#: ../../Zotlabs/Module/Profiles.php:800 ../../Zotlabs/Module/Connedit.php:924
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1150
msgid "Add Field"
msgstr ""
#: ../../Zotlabs/Module/Profiles.php:802
#: ../../Zotlabs/Module/Admin/Plugins.php:453
-#: ../../Zotlabs/Module/Connedit.php:929
+#: ../../Zotlabs/Module/Connedit.php:926
#: ../../Zotlabs/Module/Settings/Oauth.php:42
#: ../../Zotlabs/Module/Settings/Oauth.php:113 ../../Zotlabs/Lib/Apps.php:348
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1152
@@ -1741,12 +1323,11 @@ msgstr ""
#: ../../Zotlabs/Module/Profiles.php:804
#: ../../Zotlabs/Module/Admin/Plugins.php:423
#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88
-#: ../../Zotlabs/Module/Connedit.php:931 ../../Zotlabs/Module/Wiki.php:261
-#: ../../Zotlabs/Module/Wiki.php:286
+#: ../../Zotlabs/Module/Wiki.php:270 ../../Zotlabs/Module/Wiki.php:295
+#: ../../Zotlabs/Module/Connedit.php:928
#: ../../Zotlabs/Module/Settings/Oauth.php:88
#: ../../Zotlabs/Module/Settings/Oauth.php:114
#: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138
-#: ../../extend/addon/addon/friendica/dfrn_request.php:879
#: ../../extend/addon/addon/js_upload/js_upload.php:46
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:866
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1154
@@ -1760,8 +1341,8 @@ msgstr ""
msgid "Profile Image"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:833 ../../include/channel.php:1044
-#: ../../include/nav.php:105
+#: ../../Zotlabs/Module/Profiles.php:833 ../../include/nav.php:105
+#: ../../include/channel.php:1044
msgid "Edit Profiles"
msgstr ""
@@ -1857,7 +1438,7 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Themes.php:72
#: ../../Zotlabs/Module/Filestorage.php:32 ../../Zotlabs/Module/Display.php:35
#: ../../Zotlabs/Module/Viewsrc.php:24 ../../Zotlabs/Module/Thing.php:89
-#: ../../include/items.php:3271
+#: ../../include/items.php:3281
msgid "Item not found."
msgstr ""
@@ -1948,16 +1529,16 @@ msgstr ""
msgid "Item not found"
msgstr ""
-#: ../../Zotlabs/Module/Editblock.php:108 ../../Zotlabs/Module/Blocks.php:97
+#: ../../Zotlabs/Module/Editblock.php:113 ../../Zotlabs/Module/Blocks.php:97
#: ../../Zotlabs/Module/Blocks.php:155
msgid "Block Name"
msgstr ""
-#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1406
+#: ../../Zotlabs/Module/Editblock.php:129 ../../include/conversation.php:1406
msgid "Title (optional)"
msgstr ""
-#: ../../Zotlabs/Module/Editblock.php:133
+#: ../../Zotlabs/Module/Editblock.php:138
msgid "Edit Block"
msgstr ""
@@ -1991,8 +1572,8 @@ msgstr ""
#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin/Profs.php:74
#: ../../Zotlabs/Module/Admin/Profs.php:94 ../../Zotlabs/Module/Rbmark.php:32
-#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/widgets.php:188
-#: ../../include/text.php:1011 ../../include/text.php:1023
+#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Widget/Notes.php:18
+#: ../../include/text.php:1010 ../../include/text.php:1022
msgid "Save"
msgstr ""
@@ -2016,266 +1597,266 @@ msgstr ""
msgid "posted an event"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:56
-#: ../../Zotlabs/Module/Connections.php:161
-#: ../../Zotlabs/Module/Connections.php:250
+#: ../../Zotlabs/Module/Connections.php:52
+#: ../../Zotlabs/Module/Connections.php:157
+#: ../../Zotlabs/Module/Connections.php:246
msgid "Blocked"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:61
-#: ../../Zotlabs/Module/Connections.php:168
-#: ../../Zotlabs/Module/Connections.php:249
+#: ../../Zotlabs/Module/Connections.php:57
+#: ../../Zotlabs/Module/Connections.php:164
+#: ../../Zotlabs/Module/Connections.php:245
msgid "Ignored"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:66
-#: ../../Zotlabs/Module/Connections.php:182
-#: ../../Zotlabs/Module/Connections.php:248
+#: ../../Zotlabs/Module/Connections.php:62
+#: ../../Zotlabs/Module/Connections.php:178
+#: ../../Zotlabs/Module/Connections.php:244
msgid "Hidden"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:71
-#: ../../Zotlabs/Module/Connections.php:175
-#: ../../Zotlabs/Module/Connections.php:247
+#: ../../Zotlabs/Module/Connections.php:67
+#: ../../Zotlabs/Module/Connections.php:171
+#: ../../Zotlabs/Module/Connections.php:243
msgid "Archived"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:76
-#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
+#: ../../Zotlabs/Module/Connections.php:72
+#: ../../Zotlabs/Module/Connections.php:82 ../../Zotlabs/Module/Menu.php:116
#: ../../include/conversation.php:1724
msgid "New"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:92
-#: ../../Zotlabs/Module/Connections.php:107
-#: ../../Zotlabs/Module/Connedit.php:720 ../../include/widgets.php:530
+#: ../../Zotlabs/Module/Connections.php:88
+#: ../../Zotlabs/Module/Connections.php:103
+#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Widget/Affinity.php:30
msgid "All"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:138
+#: ../../Zotlabs/Module/Connections.php:134
msgid "New Connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:141
+#: ../../Zotlabs/Module/Connections.php:137
msgid "Show pending (new) connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:145
+#: ../../Zotlabs/Module/Connections.php:141
#: ../../Zotlabs/Module/Profperm.php:140
msgid "All Connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:148
+#: ../../Zotlabs/Module/Connections.php:144
msgid "Show all connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:164
+#: ../../Zotlabs/Module/Connections.php:160
msgid "Only show blocked connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:171
+#: ../../Zotlabs/Module/Connections.php:167
msgid "Only show ignored connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:178
+#: ../../Zotlabs/Module/Connections.php:174
msgid "Only show archived connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:185
+#: ../../Zotlabs/Module/Connections.php:181
msgid "Only show hidden connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:246
+#: ../../Zotlabs/Module/Connections.php:242
msgid "Pending approval"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:262
+#: ../../Zotlabs/Module/Connections.php:258
#, php-format
msgid "%1$s [%2$s]"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:263
+#: ../../Zotlabs/Module/Connections.php:259
msgid "Edit connection"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:264
+#: ../../Zotlabs/Module/Connections.php:260
msgid "Delete connection"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:273
+#: ../../Zotlabs/Module/Connections.php:269
msgid "Channel address"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:275
+#: ../../Zotlabs/Module/Connections.php:271
msgid "Network"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:278
+#: ../../Zotlabs/Module/Connections.php:274
msgid "Call"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:280
+#: ../../Zotlabs/Module/Connections.php:276
msgid "Status"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:282
+#: ../../Zotlabs/Module/Connections.php:278
msgid "Connected"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:284
+#: ../../Zotlabs/Module/Connections.php:280
msgid "Approve connection"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:285
+#: ../../Zotlabs/Module/Connections.php:281
#: ../../Zotlabs/Module/Admin/Accounts.php:171
msgid "Approve"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:286
+#: ../../Zotlabs/Module/Connections.php:282
msgid "Ignore connection"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:287
-#: ../../Zotlabs/Module/Connedit.php:637
+#: ../../Zotlabs/Module/Connections.php:283
+#: ../../Zotlabs/Module/Connedit.php:634
msgid "Ignore"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:288
+#: ../../Zotlabs/Module/Connections.php:284
msgid "Recent activity"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:312 ../../Zotlabs/Lib/Apps.php:216
-#: ../../include/text.php:940 ../../include/nav.php:203
+#: ../../Zotlabs/Module/Connections.php:308 ../../Zotlabs/Lib/Apps.php:216
+#: ../../include/nav.php:203 ../../include/text.php:939
msgid "Connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:316 ../../Zotlabs/Module/Search.php:44
-#: ../../Zotlabs/Lib/Apps.php:237 ../../include/widgets.php:302
-#: ../../include/text.php:1010 ../../include/text.php:1022
-#: ../../include/nav.php:180 ../../include/acl_selectors.php:213
+#: ../../Zotlabs/Module/Connections.php:312 ../../Zotlabs/Module/Search.php:44
+#: ../../Zotlabs/Lib/Apps.php:237 ../../Zotlabs/Widget/Sitesearch.php:31
+#: ../../include/nav.php:180 ../../include/text.php:1009
+#: ../../include/text.php:1021 ../../include/acl_selectors.php:213
msgid "Search"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:317
+#: ../../Zotlabs/Module/Connections.php:313
msgid "Search your connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:318
+#: ../../Zotlabs/Module/Connections.php:314
msgid "Connections search"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:319
-#: ../../Zotlabs/Module/Directory.php:392
-#: ../../Zotlabs/Module/Directory.php:397 ../../include/contact_widgets.php:23
+#: ../../Zotlabs/Module/Connections.php:315
+#: ../../Zotlabs/Module/Directory.php:391
+#: ../../Zotlabs/Module/Directory.php:396 ../../include/contact_widgets.php:23
msgid "Find"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:58
+#: ../../Zotlabs/Module/Cover_photo.php:56
#: ../../Zotlabs/Module/Profile_photo.php:61
msgid "Image uploaded but image cropping failed."
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:134
-#: ../../Zotlabs/Module/Cover_photo.php:181
+#: ../../Zotlabs/Module/Cover_photo.php:136
+#: ../../Zotlabs/Module/Cover_photo.php:186
msgid "Cover Photos"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:154
-#: ../../Zotlabs/Module/Profile_photo.php:135
+#: ../../Zotlabs/Module/Cover_photo.php:159
+#: ../../Zotlabs/Module/Profile_photo.php:137
msgid "Image resize failed."
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:168
-#: ../../Zotlabs/Module/Profile_photo.php:201 ../../include/photos.php:149
+#: ../../Zotlabs/Module/Cover_photo.php:173
+#: ../../Zotlabs/Module/Profile_photo.php:203 ../../include/photos.php:145
msgid "Unable to process image"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:192
-#: ../../Zotlabs/Module/Profile_photo.php:236
+#: ../../Zotlabs/Module/Cover_photo.php:197
+#: ../../Zotlabs/Module/Profile_photo.php:238
msgid "Image upload failed."
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:210
-#: ../../Zotlabs/Module/Profile_photo.php:255
+#: ../../Zotlabs/Module/Cover_photo.php:214
+#: ../../Zotlabs/Module/Profile_photo.php:257
msgid "Unable to process image."
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4181
+#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4189
msgid "female"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4182
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4190
#, php-format
msgid "%1$s updated her %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4183
+#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4191
msgid "male"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4184
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4192
#, php-format
msgid "%1$s updated his %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4186
+#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4194
#, php-format
msgid "%1$s updated their %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1764
+#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:1759
msgid "cover photo"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:303
-#: ../../Zotlabs/Module/Cover_photo.php:318
-#: ../../Zotlabs/Module/Profile_photo.php:316
-#: ../../Zotlabs/Module/Profile_photo.php:363
+#: ../../Zotlabs/Module/Cover_photo.php:307
+#: ../../Zotlabs/Module/Cover_photo.php:322
+#: ../../Zotlabs/Module/Profile_photo.php:318
+#: ../../Zotlabs/Module/Profile_photo.php:365
msgid "Photo not available."
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:354
-#: ../../Zotlabs/Module/Profile_photo.php:418
+#: ../../Zotlabs/Module/Cover_photo.php:358
+#: ../../Zotlabs/Module/Profile_photo.php:420
msgid "Upload File:"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:355
-#: ../../Zotlabs/Module/Profile_photo.php:419
+#: ../../Zotlabs/Module/Cover_photo.php:359
+#: ../../Zotlabs/Module/Profile_photo.php:421
msgid "Select a profile:"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:356
+#: ../../Zotlabs/Module/Cover_photo.php:360
msgid "Upload Cover Photo"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:427
+#: ../../Zotlabs/Module/Cover_photo.php:365
+#: ../../Zotlabs/Module/Profile_photo.php:429
#: ../../Zotlabs/Module/Settings/Channel.php:404
msgid "or"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:427
+#: ../../Zotlabs/Module/Cover_photo.php:365
+#: ../../Zotlabs/Module/Profile_photo.php:429
msgid "skip this step"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:427
+#: ../../Zotlabs/Module/Cover_photo.php:365
+#: ../../Zotlabs/Module/Profile_photo.php:429
msgid "select a photo from your photo albums"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:377
-#: ../../Zotlabs/Module/Profile_photo.php:446
+#: ../../Zotlabs/Module/Cover_photo.php:381
+#: ../../Zotlabs/Module/Profile_photo.php:448
msgid "Crop Image"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:378
-#: ../../Zotlabs/Module/Profile_photo.php:447
+#: ../../Zotlabs/Module/Cover_photo.php:382
+#: ../../Zotlabs/Module/Profile_photo.php:449
msgid "Please adjust the image cropping for optimum viewing."
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:380
-#: ../../Zotlabs/Module/Profile_photo.php:449
+#: ../../Zotlabs/Module/Cover_photo.php:384
+#: ../../Zotlabs/Module/Profile_photo.php:451
msgid "Done Editing"
msgstr ""
@@ -2304,8 +1885,8 @@ msgstr ""
msgid "Log settings updated."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../include/widgets.php:1661
-#: ../../include/widgets.php:1671
+#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../Zotlabs/Widget/Admin.php:48
+#: ../../Zotlabs/Widget/Admin.php:58
msgid "Logs"
msgstr ""
@@ -2378,7 +1959,7 @@ msgstr ""
msgid "Edit Profile Field"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../include/widgets.php:1642
+#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../Zotlabs/Widget/Admin.php:30
msgid "Profile Fields"
msgstr ""
@@ -2430,7 +2011,8 @@ msgid ""
"embedded content from that site is explicitly blocked."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Security.php:87 ../../include/widgets.php:1637
+#: ../../Zotlabs/Module/Admin/Security.php:87
+#: ../../Zotlabs/Widget/Admin.php:25
msgid "Security"
msgstr ""
@@ -2588,7 +2170,8 @@ msgid "Account '%s' unblocked"
msgstr ""
#: ../../Zotlabs/Module/Admin/Accounts.php:165
-#: ../../Zotlabs/Module/Admin/Accounts.php:178 ../../include/widgets.php:1635
+#: ../../Zotlabs/Module/Admin/Accounts.php:178
+#: ../../Zotlabs/Widget/Admin.php:23
msgid "Accounts"
msgstr ""
@@ -2614,12 +2197,12 @@ msgid "Deny"
msgstr ""
#: ../../Zotlabs/Module/Admin/Accounts.php:174
-#: ../../Zotlabs/Module/Connedit.php:629
+#: ../../Zotlabs/Module/Connedit.php:626
msgid "Block"
msgstr ""
#: ../../Zotlabs/Module/Admin/Accounts.php:175
-#: ../../Zotlabs/Module/Connedit.php:629
+#: ../../Zotlabs/Module/Connedit.php:626
msgid "Unblock"
msgstr ""
@@ -2709,7 +2292,8 @@ msgstr ""
msgid "Channel '%s' code disallowed"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Channels.php:146 ../../include/widgets.php:1636
+#: ../../Zotlabs/Module/Admin/Channels.php:146
+#: ../../Zotlabs/Widget/Admin.php:24
msgid "Channels"
msgstr ""
@@ -2822,7 +2406,7 @@ msgstr ""
msgid "Site settings updated."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:159 ../../include/text.php:2920
+#: ../../Zotlabs/Module/Admin/Site.php:159 ../../include/text.php:2906
msgid "Default"
msgstr ""
@@ -2901,7 +2485,7 @@ msgstr ""
msgid "Wizard - I probably know more than you do"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:267 ../../include/widgets.php:1634
+#: ../../Zotlabs/Module/Admin/Site.php:267 ../../Zotlabs/Widget/Admin.php:22
msgid "Site"
msgstr ""
@@ -3215,7 +2799,8 @@ msgid "Enable"
msgstr ""
#: ../../Zotlabs/Module/Admin/Plugins.php:342
-#: ../../Zotlabs/Module/Admin/Plugins.php:437 ../../include/widgets.php:1639
+#: ../../Zotlabs/Module/Admin/Plugins.php:437
+#: ../../Zotlabs/Widget/Admin.php:27
msgid "Plugins"
msgstr ""
@@ -3226,7 +2811,7 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Plugins.php:344
#: ../../Zotlabs/Module/Admin/Themes.php:125 ../../Zotlabs/Lib/Apps.php:223
-#: ../../include/widgets.php:685 ../../include/nav.php:225
+#: ../../Zotlabs/Widget/Settings_menu.php:131 ../../include/nav.php:225
msgid "Settings"
msgstr ""
@@ -3328,7 +2913,7 @@ msgid "Screenshot"
msgstr ""
#: ../../Zotlabs/Module/Admin/Themes.php:123
-#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../include/widgets.php:1640
+#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../Zotlabs/Widget/Admin.php:28
msgid "Themes"
msgstr ""
@@ -3362,7 +2947,7 @@ msgid "Webpages"
msgstr ""
#: ../../Zotlabs/Module/Webpages.php:245 ../../Zotlabs/Module/Blocks.php:161
-#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Photos.php:1073
+#: ../../Zotlabs/Module/Layouts.php:194 ../../Zotlabs/Module/Photos.php:1073
#: ../../extend/addon/addon/cdav/include/widgets.php:123
#: ../../include/conversation.php:1378
msgid "Share"
@@ -3370,7 +2955,7 @@ msgstr ""
#: ../../Zotlabs/Module/Webpages.php:250 ../../Zotlabs/Module/Pubsites.php:59
#: ../../Zotlabs/Module/Wiki.php:166 ../../Zotlabs/Module/Blocks.php:166
-#: ../../Zotlabs/Module/Layouts.php:197 ../../Zotlabs/Module/Events.php:694
+#: ../../Zotlabs/Module/Layouts.php:198 ../../Zotlabs/Module/Events.php:694
#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:151
#: ../../include/page_widgets.php:42
msgid "View"
@@ -3395,13 +2980,13 @@ msgid "Page Title"
msgstr ""
#: ../../Zotlabs/Module/Webpages.php:255 ../../Zotlabs/Module/Menu.php:114
-#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Layouts.php:190
+#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Layouts.php:191
#: ../../include/page_widgets.php:47
msgid "Created"
msgstr ""
#: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Module/Menu.php:115
-#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191
+#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:192
#: ../../include/page_widgets.php:48
msgid "Edited"
msgstr ""
@@ -3426,25 +3011,25 @@ msgstr ""
msgid "Import complete."
msgstr ""
-#: ../../Zotlabs/Module/Editlayout.php:127
-#: ../../Zotlabs/Module/Layouts.php:128 ../../Zotlabs/Module/Layouts.php:188
+#: ../../Zotlabs/Module/Editlayout.php:128
+#: ../../Zotlabs/Module/Layouts.php:129 ../../Zotlabs/Module/Layouts.php:189
msgid "Layout Name"
msgstr ""
-#: ../../Zotlabs/Module/Editlayout.php:128
-#: ../../Zotlabs/Module/Layouts.php:131
+#: ../../Zotlabs/Module/Editlayout.php:129
+#: ../../Zotlabs/Module/Layouts.php:132
msgid "Layout Description (Optional)"
msgstr ""
-#: ../../Zotlabs/Module/Editlayout.php:136
+#: ../../Zotlabs/Module/Editlayout.php:137
msgid "Edit Layout"
msgstr ""
-#: ../../Zotlabs/Module/Editwebpage.php:142
+#: ../../Zotlabs/Module/Editwebpage.php:144
msgid "Page link"
msgstr ""
-#: ../../Zotlabs/Module/Editwebpage.php:169
+#: ../../Zotlabs/Module/Editwebpage.php:171
msgid "Edit Webpage"
msgstr ""
@@ -3533,7 +3118,7 @@ msgstr ""
msgid "Submit and proceed"
msgstr ""
-#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2273
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2259
msgid "Menus"
msgstr ""
@@ -3654,7 +3239,7 @@ msgstr ""
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr ""
-#: ../../Zotlabs/Module/Pubsites.php:24 ../../include/widgets.php:1401
+#: ../../Zotlabs/Module/Pubsites.php:24 ../../Zotlabs/Widget/Pubsites.php:12
msgid "Public Hubs"
msgstr ""
@@ -3696,6 +3281,446 @@ msgstr ""
msgid "Rate"
msgstr ""
+#: ../../Zotlabs/Module/Setup.php:176
+msgid "$Projectname Server - Setup"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:180
+msgid "Could not connect to database."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:184
+msgid ""
+"Could not connect to specified site URL. Possible SSL certificate or DNS "
+"issue."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:191
+msgid "Could not create table."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:196
+msgid "Your site database has been installed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:200
+msgid ""
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:201 ../../Zotlabs/Module/Setup.php:263
+#: ../../Zotlabs/Module/Setup.php:743
+msgid "Please see the file \"install/INSTALL.txt\"."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:260
+msgid "System check"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:264 ../../Zotlabs/Module/Cal.php:337
+#: ../../Zotlabs/Module/Cal.php:344 ../../Zotlabs/Module/Events.php:690
+#: ../../Zotlabs/Module/Events.php:699 ../../Zotlabs/Module/Photos.php:944
+#: ../../extend/addon/addon/cdav/Mod_Cdav.php:847
+msgid "Next"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:265
+msgid "Check again"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:287
+msgid "Database connection"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:288
+msgid ""
+"In order to install $Projectname we need to know how to connect to your "
+"database."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:289
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:290
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:294
+msgid "Database Server Name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:294
+msgid "Default is 127.0.0.1"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:295
+msgid "Database Port"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:295
+msgid "Communication port number - use 0 for default"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:296
+msgid "Database Login Name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:297
+msgid "Database Login Password"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:298
+msgid "Database Name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:299
+msgid "Database Type"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:342
+msgid "Site administrator email address"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:342
+msgid ""
+"Your account email address must match this in order to use the web admin "
+"panel."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:344
+msgid "Website URL"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:344
+msgid "Please use SSL (https) URL if available."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:303 ../../Zotlabs/Module/Setup.php:346
+msgid "Please select a default timezone for your website"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:331
+msgid "Site settings"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:385
+msgid "PHP version 5.5 or greater is required."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:386
+msgid "PHP version"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:402
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:403
+msgid ""
+"If you don't have a command line version of PHP installed on server, you "
+"will not be able to run background polling via cron."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:407
+msgid "PHP executable path"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:407
+msgid ""
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:412
+msgid "Command line PHP"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:422
+msgid ""
+"Unable to check command line PHP, as shell_exec() is disabled. This is "
+"required."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:425
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:426
+msgid "This is required for message delivery to work."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:429
+msgid "PHP register_argc_argv"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:447
+#, php-format
+msgid ""
+"Your max allowed total upload size is set to %s. Maximum size of one file to "
+"upload is set to %s. You are allowed to upload up to %d files at once."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:452
+msgid "You can adjust these settings in the server php.ini file."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:454
+msgid "PHP upload limits"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:477
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:478
+msgid ""
+"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
+"installation.php\"."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:481
+msgid "Generate encryption keys"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:498
+msgid "libCurl PHP module"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:499
+msgid "GD graphics PHP module"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:500
+msgid "OpenSSL PHP module"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:501
+msgid "PDO database PHP module"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:502
+msgid "mb_string PHP module"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:503
+msgid "xml PHP module"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:509
+msgid "Apache mod_rewrite module"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:507
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:513 ../../Zotlabs/Module/Setup.php:516
+msgid "exec"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:513
+msgid ""
+"Error: exec is required but is either not installed or has been disabled in "
+"php.ini"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:519 ../../Zotlabs/Module/Setup.php:522
+msgid "shell_exec"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:519
+msgid ""
+"Error: shell_exec is required but is either not installed or has been "
+"disabled in php.ini"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:527
+msgid "Error: libCURL PHP module required but not installed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:531
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:535
+msgid "Error: openssl PHP module required but not installed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:539
+msgid "Error: PDO database PHP module required but not installed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:543
+msgid "Error: mb_string PHP module required but not installed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:547
+msgid "Error: xml PHP module required for DAV but not installed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:565
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\" "
+"in the top folder of your web server and it is unable to do so."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:566
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:567
+msgid ""
+"At the end of this procedure, we will give you a text to save in a file "
+"named .htconfig.php in your Red top folder."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:568
+msgid ""
+"You can alternatively skip this procedure and perform a manual installation. "
+"Please see the file \"install/INSTALL.txt\" for instructions."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:571
+msgid ".htconfig.php is writable"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:585
+msgid ""
+"This software uses the Smarty3 template engine to render its web views. "
+"Smarty3 compiles templates to PHP to speed up rendering."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:586
+#, php-format
+msgid ""
+"In order to store these compiled templates, the web server needs to have "
+"write access to the directory %s under the top level web folder."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:587 ../../Zotlabs/Module/Setup.php:608
+msgid ""
+"Please ensure that the user that your web server runs as (e.g. www-data) has "
+"write access to this folder."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:588
+#, php-format
+msgid ""
+"Note: as a security measure, you should give the web server write access to "
+"%s only--not the template files (.tpl) that it contains."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:591
+#, php-format
+msgid "%s is writable"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:607
+msgid ""
+"This software uses the store directory to save uploaded files. The web "
+"server needs to have write access to the store directory under the top level "
+"web folder"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:611
+msgid "store is writable"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:644
+msgid ""
+"SSL certificate cannot be validated. Fix certificate or disable https access "
+"to this site."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:645
+msgid ""
+"If you have https access to your website or allow connections to TCP port "
+"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
+"NOT use self-signed certificates!"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:646
+msgid ""
+"This restriction is incorporated because public posts from you may for "
+"example contain references to images on your own hub."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:647
+msgid ""
+"If your certificate is not recognized, members of other sites (who may "
+"themselves have valid certificates) will get a warning message on their own "
+"site complaining about security issues."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:648
+msgid ""
+"This can cause usability issues elsewhere (not just on your own site) so we "
+"must insist on this requirement."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:649
+msgid ""
+"Providers are available that issue free certificates which are browser-valid."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:651
+msgid ""
+"If you are confident that the certificate is valid and signed by a trusted "
+"authority, check to see if you have failed to install an intermediate cert. "
+"These are not normally required by browsers, but are required for server-to-"
+"server communications."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:653
+msgid "SSL certificate validation"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:659
+msgid ""
+"Url rewrite in .htaccess is not working. Check your server configuration."
+"Test: "
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:662
+msgid "Url rewrite is working"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:676
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:700
+#: ../../extend/addon/addon/cdav/cdav.php:41
+#: ../../extend/addon/addon/rendezvous/rendezvous.php:401
+msgid "Errors encountered creating database tables."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:741
+msgid "<h1>What next</h1>"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:742
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
+msgstr ""
+
#: ../../Zotlabs/Module/Apps.php:45 ../../include/nav.php:178
msgid "Apps"
msgstr ""
@@ -3790,7 +3815,7 @@ msgid "Could not create privacy group."
msgstr ""
#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141
-#: ../../include/items.php:3804
+#: ../../include/items.php:3812
msgid "Privacy group not found."
msgstr ""
@@ -3924,11 +3949,11 @@ msgid "Previous"
msgstr ""
#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Events.php:691
-#: ../../include/channel.php:1370
+#: ../../include/channel.php:1365
msgid "Export"
msgstr ""
-#: ../../Zotlabs/Module/Cal.php:341 ../../include/text.php:2296
+#: ../../Zotlabs/Module/Cal.php:341 ../../include/text.php:2282
msgid "Import"
msgstr ""
@@ -3937,30 +3962,180 @@ msgstr ""
msgid "Today"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:203
-msgid "webpage"
+#: ../../Zotlabs/Module/Wiki.php:30
+msgid "Profile Unavailable."
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:209
-msgid "block"
+#: ../../Zotlabs/Module/Wiki.php:44
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:40
+msgid "Not found"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:206
-msgid "layout"
+#: ../../Zotlabs/Module/Wiki.php:68
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:60
+msgid "Invalid channel"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:212
-msgid "menu"
+#: ../../Zotlabs/Module/Wiki.php:159
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:144
+#: ../../include/conversation.php:1900
+msgid "Wikis"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:191
-#, php-format
-msgid "%s element installed"
+#: ../../Zotlabs/Module/Wiki.php:165
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:150
+msgid "Download"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:194
-#, php-format
-msgid "%s element installation failed"
+#: ../../Zotlabs/Module/Wiki.php:169
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:154
+msgid "Wiki name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:170
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:155
+msgid "Content type"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:179
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:164
+msgid "Create a status post for this wiki"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:204
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:183
+msgid "Wiki not found"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:228
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:208
+msgid "Rename page"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:232
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:212
+msgid "Error retrieving page content"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:268
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:241
+msgid "Revision Comparison"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:269
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:242
+msgid "Revert"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:273
+msgid "Short description of your changes (optional)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:280
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:251
+msgid "Source"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:288
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:259
+msgid "New page name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:293
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:264
+#: ../../include/conversation.php:1299
+msgid "Embed image from photo albums"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:294
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:265
+#: ../../include/conversation.php:1393
+msgid "Embed an image from your albums"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:296
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:267
+#: ../../include/conversation.php:1395 ../../include/conversation.php:1442
+msgid "OK"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:297
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:268
+#: ../../include/conversation.php:1335
+msgid "Choose images to embed"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:298
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:269
+#: ../../include/conversation.php:1336
+msgid "Choose an album"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:299
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:270
+msgid "Choose a different album"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:300
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:271
+#: ../../include/conversation.php:1338
+msgid "Error getting album list"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:301
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:272
+#: ../../include/conversation.php:1339
+msgid "Error getting photo link"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:302
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:273
+#: ../../include/conversation.php:1340
+msgid "Error getting album"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:369
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:337
+msgid "Error creating wiki. Invalid name."
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:381
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:348
+msgid "Wiki created, but error creating Home page."
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:388
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:353
+msgid "Error creating wiki"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:400
+msgid "Wiki delete permission denied."
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:410
+msgid "Error deleting wiki"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:436
+#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:400
+msgid "New page created"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:555
+msgid "Cannot delete Home"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:619
+msgid "Current Revision"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:619
+msgid "Selected Revision"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:669
+msgid "You must be authenticated."
msgstr ""
#: ../../Zotlabs/Module/Import_items.php:42 ../../Zotlabs/Module/Import.php:57
@@ -4052,330 +4227,331 @@ msgstr ""
msgid "Post successful."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:82
+#: ../../Zotlabs/Module/Connedit.php:79
msgid "Could not access contact record."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:112
+#: ../../Zotlabs/Module/Connedit.php:109
msgid "Could not locate selected profile."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:249
+#: ../../Zotlabs/Module/Connedit.php:246
msgid "Connection updated."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:251
+#: ../../Zotlabs/Module/Connedit.php:248
msgid "Failed to update connection record."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:301
+#: ../../Zotlabs/Module/Connedit.php:298
msgid "is now connected to"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:434
+#: ../../Zotlabs/Module/Connedit.php:431
msgid "Could not access address book record."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:482
+#: ../../Zotlabs/Module/Connedit.php:479
msgid "Refresh failed - channel is currently unavailable."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:497 ../../Zotlabs/Module/Connedit.php:506
-#: ../../Zotlabs/Module/Connedit.php:515 ../../Zotlabs/Module/Connedit.php:524
-#: ../../Zotlabs/Module/Connedit.php:537
+#: ../../Zotlabs/Module/Connedit.php:494 ../../Zotlabs/Module/Connedit.php:503
+#: ../../Zotlabs/Module/Connedit.php:512 ../../Zotlabs/Module/Connedit.php:521
+#: ../../Zotlabs/Module/Connedit.php:534
msgid "Unable to set address book parameters."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:561
+#: ../../Zotlabs/Module/Connedit.php:558
msgid "Connection has been removed."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:601 ../../Zotlabs/Lib/Apps.php:228
+#: ../../Zotlabs/Module/Connedit.php:598 ../../Zotlabs/Lib/Apps.php:228
#: ../../extend/addon/addon/openclipatar/openclipatar.php:57
#: ../../include/conversation.php:936 ../../include/conversation.php:1049
#: ../../include/nav.php:103
msgid "View Profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:604
+#: ../../Zotlabs/Module/Connedit.php:601
#, php-format
msgid "View %s's profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:608
+#: ../../Zotlabs/Module/Connedit.php:605
msgid "Refresh Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:611
+#: ../../Zotlabs/Module/Connedit.php:608
msgid "Fetch updated permissions"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:615
+#: ../../Zotlabs/Module/Connedit.php:612
msgid "Refresh Photo"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:618
+#: ../../Zotlabs/Module/Connedit.php:615
msgid "Fetch updated photo"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:622
+#: ../../Zotlabs/Module/Connedit.php:619
msgid "Recent Activity"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:625
+#: ../../Zotlabs/Module/Connedit.php:622
msgid "View recent posts and comments"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:632
+#: ../../Zotlabs/Module/Connedit.php:629
msgid "Block (or Unblock) all communications with this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:633
+#: ../../Zotlabs/Module/Connedit.php:630
msgid "This connection is blocked!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:637
+#: ../../Zotlabs/Module/Connedit.php:634
msgid "Unignore"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:640
+#: ../../Zotlabs/Module/Connedit.php:637
msgid "Ignore (or Unignore) all inbound communications from this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:641
+#: ../../Zotlabs/Module/Connedit.php:638
msgid "This connection is ignored!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:645
+#: ../../Zotlabs/Module/Connedit.php:642
msgid "Unarchive"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:645
+#: ../../Zotlabs/Module/Connedit.php:642
msgid "Archive"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:648
+#: ../../Zotlabs/Module/Connedit.php:645
msgid ""
"Archive (or Unarchive) this connection - mark channel dead but keep content"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:649
+#: ../../Zotlabs/Module/Connedit.php:646
msgid "This connection is archived!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:653
+#: ../../Zotlabs/Module/Connedit.php:650
msgid "Unhide"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:653
+#: ../../Zotlabs/Module/Connedit.php:650
msgid "Hide"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:656
+#: ../../Zotlabs/Module/Connedit.php:653
msgid "Hide or Unhide this connection from your other connections"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:657
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "This connection is hidden!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:664
+#: ../../Zotlabs/Module/Connedit.php:661
msgid "Delete this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:672
+#: ../../Zotlabs/Module/Connedit.php:669
msgid "Fetch Vcard"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:675
+#: ../../Zotlabs/Module/Connedit.php:672
msgid "Fetch electronic calling card for this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:686
+#: ../../Zotlabs/Module/Connedit.php:683
msgid "Open Individual Permissions section by default"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:709
+#: ../../Zotlabs/Module/Connedit.php:706
msgid "Affinity"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:712
+#: ../../Zotlabs/Module/Connedit.php:709
msgid "Open Set Affinity section by default"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:716 ../../include/widgets.php:526
+#: ../../Zotlabs/Module/Connedit.php:713 ../../Zotlabs/Widget/Affinity.php:26
msgid "Me"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:717 ../../include/widgets.php:527
+#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Widget/Affinity.php:27
msgid "Family"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:718
+#: ../../Zotlabs/Module/Connedit.php:715
#: ../../Zotlabs/Module/Settings/Channel.php:62
#: ../../Zotlabs/Module/Settings/Channel.php:66
#: ../../Zotlabs/Module/Settings/Channel.php:67
#: ../../Zotlabs/Module/Settings/Channel.php:70
#: ../../Zotlabs/Module/Settings/Channel.php:81
-#: ../../include/selectors.php:123 ../../include/widgets.php:528
+#: ../../Zotlabs/Widget/Affinity.php:28 ../../include/selectors.php:123
#: ../../include/channel.php:408 ../../include/channel.php:409
#: ../../include/channel.php:416
msgid "Friends"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:719 ../../include/widgets.php:529
+#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Widget/Affinity.php:29
msgid "Acquaintances"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:746
+#: ../../Zotlabs/Module/Connedit.php:743
msgid "Filter"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:749
+#: ../../Zotlabs/Module/Connedit.php:746
msgid "Open Custom Filter section by default"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:786
+#: ../../Zotlabs/Module/Connedit.php:783
msgid "Approve this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:786
+#: ../../Zotlabs/Module/Connedit.php:783
msgid "Accept connection to allow communication"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:791
+#: ../../Zotlabs/Module/Connedit.php:788
msgid "Set Affinity"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:794
+#: ../../Zotlabs/Module/Connedit.php:791
msgid "Set Profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:797
+#: ../../Zotlabs/Module/Connedit.php:794
msgid "Set Affinity & Profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:855
+#: ../../Zotlabs/Module/Connedit.php:852
msgid "none"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:858 ../../include/widgets.php:661
+#: ../../Zotlabs/Module/Connedit.php:855
+#: ../../Zotlabs/Widget/Settings_menu.php:107
msgid "Connection Default Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:858 ../../include/items.php:3837
+#: ../../Zotlabs/Module/Connedit.php:855 ../../include/items.php:3845
#, php-format
msgid "Connection: %s"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:859
+#: ../../Zotlabs/Module/Connedit.php:856
msgid "Apply these permissions automatically"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:859
+#: ../../Zotlabs/Module/Connedit.php:856
msgid "Connection requests will be approved without your interaction"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:860
+#: ../../Zotlabs/Module/Connedit.php:857
msgid "Permission role"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:861
+#: ../../Zotlabs/Module/Connedit.php:858
msgid "Add permission role"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:867
+#: ../../Zotlabs/Module/Connedit.php:864
msgid "This connection's primary address is"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:868
+#: ../../Zotlabs/Module/Connedit.php:865
msgid "Available locations:"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:872
+#: ../../Zotlabs/Module/Connedit.php:869
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:873
+#: ../../Zotlabs/Module/Connedit.php:870
msgid "Connection Tools"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:875
+#: ../../Zotlabs/Module/Connedit.php:872
msgid "Slide to adjust your degree of friendship"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:876 ../../Zotlabs/Module/Rate.php:155
+#: ../../Zotlabs/Module/Connedit.php:873 ../../Zotlabs/Module/Rate.php:155
#: ../../include/js_strings.php:20
msgid "Rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:877
+#: ../../Zotlabs/Module/Connedit.php:874
msgid "Slide to adjust your rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:878 ../../Zotlabs/Module/Connedit.php:883
+#: ../../Zotlabs/Module/Connedit.php:875 ../../Zotlabs/Module/Connedit.php:880
msgid "Optionally explain your rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:880
+#: ../../Zotlabs/Module/Connedit.php:877
msgid "Custom Filter"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:881
+#: ../../Zotlabs/Module/Connedit.php:878
msgid "Only import posts with this text"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:881 ../../Zotlabs/Module/Connedit.php:882
+#: ../../Zotlabs/Module/Connedit.php:878 ../../Zotlabs/Module/Connedit.php:879
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:882
+#: ../../Zotlabs/Module/Connedit.php:879
msgid "Do not import posts with this text"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:884
+#: ../../Zotlabs/Module/Connedit.php:881
msgid "This information is public!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:889
+#: ../../Zotlabs/Module/Connedit.php:886
msgid "Connection Pending Approval"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:892
+#: ../../Zotlabs/Module/Connedit.php:889
#: ../../Zotlabs/Module/Settings/Permcats.php:107
#: ../../Zotlabs/Module/Settings/Tokens.php:163
msgid "inherited"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:894
+#: ../../Zotlabs/Module/Connedit.php:891
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:896
+#: ../../Zotlabs/Module/Connedit.php:893
#: ../../Zotlabs/Module/Settings/Tokens.php:160
msgid "Their Settings"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:897
+#: ../../Zotlabs/Module/Connedit.php:894
#: ../../Zotlabs/Module/Settings/Permcats.php:105
#: ../../Zotlabs/Module/Settings/Tokens.php:161
msgid "My Settings"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:899
+#: ../../Zotlabs/Module/Connedit.php:896
#: ../../Zotlabs/Module/Settings/Permcats.php:110
#: ../../Zotlabs/Module/Settings/Tokens.php:166
msgid "Individual Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:900
+#: ../../Zotlabs/Module/Connedit.php:897
#: ../../Zotlabs/Module/Settings/Permcats.php:111
#: ../../Zotlabs/Module/Settings/Tokens.php:167
msgid ""
@@ -4384,7 +4560,7 @@ msgid ""
"individual settings. You can <strong>not</strong> change those settings here."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:901
+#: ../../Zotlabs/Module/Connedit.php:898
msgid ""
"Some permissions may be inherited from your channel's <a href=\"settings"
"\"><strong>privacy settings</strong></a>, which have higher priority than "
@@ -4392,51 +4568,51 @@ msgid ""
"any impact unless the inherited setting changes."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:902
+#: ../../Zotlabs/Module/Connedit.php:899
msgid "Last update:"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:911
+#: ../../Zotlabs/Module/Connedit.php:908
msgid "Details"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:914
+#: ../../Zotlabs/Module/Connedit.php:911
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1137
msgid "Organisation"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:915
+#: ../../Zotlabs/Module/Connedit.php:912
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1138
#: ../../include/page_widgets.php:46
msgid "Title"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:932
+#: ../../Zotlabs/Module/Connedit.php:929
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1155
msgid "P.O. Box"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:933
+#: ../../Zotlabs/Module/Connedit.php:930
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1156
msgid "Additional"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:934
+#: ../../Zotlabs/Module/Connedit.php:931
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1157
msgid "Street"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:935
+#: ../../Zotlabs/Module/Connedit.php:932
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1158
msgid "Locality"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:936
+#: ../../Zotlabs/Module/Connedit.php:933
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1159
msgid "Region"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:937
+#: ../../Zotlabs/Module/Connedit.php:934
#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1160
msgid "ZIP Code"
msgstr ""
@@ -4567,10 +4743,9 @@ msgid "No ratings"
msgstr ""
#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Search.php:17
-#: ../../Zotlabs/Module/Directory.php:64 ../../Zotlabs/Module/Display.php:22
+#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:22
#: ../../Zotlabs/Module/Viewconnections.php:23
#: ../../Zotlabs/Module/Photos.php:508
-#: ../../extend/addon/addon/friendica/dfrn_request.php:794
msgid "Public access denied."
msgstr ""
@@ -4600,38 +4775,30 @@ msgstr ""
msgid "System Notifications"
msgstr ""
-#: ../../Zotlabs/Module/Item.php:184
-msgid "Unable to locate original post."
-msgstr ""
-
-#: ../../Zotlabs/Module/Item.php:450
-msgid "Empty post discarded."
-msgstr ""
-
-#: ../../Zotlabs/Module/Item.php:492
-msgid "Executable content type not permitted to this channel."
+#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:203
+msgid "webpage"
msgstr ""
-#: ../../Zotlabs/Module/Item.php:842
-msgid "Duplicate post suppressed."
+#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:209
+msgid "block"
msgstr ""
-#: ../../Zotlabs/Module/Item.php:984
-msgid "System error. Post not saved."
+#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:206
+msgid "layout"
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1114
-msgid "Unable to obtain post information from database."
+#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:212
+msgid "menu"
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1121
+#: ../../Zotlabs/Module/Impel.php:181
#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
+msgid "%s element installed"
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1128
+#: ../../Zotlabs/Module/Impel.php:184
#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
+msgid "%s element installation failed"
msgstr ""
#: ../../Zotlabs/Module/Api.php:72 ../../Zotlabs/Module/Api.php:93
@@ -4818,182 +4985,6 @@ msgstr ""
msgid "Search results for: %s"
msgstr ""
-#: ../../Zotlabs/Module/Wiki.php:30
-msgid "Profile Unavailable."
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:44
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:40
-msgid "Not found"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:68
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:60
-msgid "Invalid channel"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:159
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:144
-#: ../../include/conversation.php:1900
-msgid "Wikis"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:165
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:150
-msgid "Download"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:169
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:154
-msgid "Wiki name"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:170
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:155
-msgid "Content type"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:179
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:164
-msgid "Create a status post for this wiki"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:204
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:183
-msgid "Wiki not found"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:228
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:208
-msgid "Rename page"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:232
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:212
-msgid "Error retrieving page content"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:259
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:241
-msgid "Revision Comparison"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:260
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:242
-msgid "Revert"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:264
-msgid "Short description of your changes (optional)"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:271
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:251
-msgid "Source"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:279
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:259
-msgid "New page name"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:284
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:264
-#: ../../include/conversation.php:1299
-msgid "Embed image from photo albums"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:285
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:265
-#: ../../include/conversation.php:1393
-msgid "Embed an image from your albums"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:287
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:267
-#: ../../include/conversation.php:1395 ../../include/conversation.php:1442
-msgid "OK"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:288
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:268
-#: ../../include/conversation.php:1335
-msgid "Choose images to embed"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:289
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:269
-#: ../../include/conversation.php:1336
-msgid "Choose an album"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:290
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:270
-msgid "Choose a different album"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:291
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:271
-#: ../../include/conversation.php:1338
-msgid "Error getting album list"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:292
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:272
-#: ../../include/conversation.php:1339
-msgid "Error getting photo link"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:293
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:273
-#: ../../include/conversation.php:1340
-msgid "Error getting album"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:357
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:337
-msgid "Error creating wiki. Invalid name."
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:369
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:348
-msgid "Wiki created, but error creating Home page."
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:376
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:353
-msgid "Error creating wiki"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:388
-msgid "Wiki delete permission denied."
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:398
-msgid "Error deleting wiki"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:424
-#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:400
-msgid "New page created"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:539
-msgid "Cannot delete Home"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:603
-msgid "Current Revision"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:603
-msgid "Selected Revision"
-msgstr ""
-
-#: ../../Zotlabs/Module/Wiki.php:653
-msgid "You must be authenticated."
-msgstr ""
-
#: ../../Zotlabs/Module/Like.php:19
msgid "Like/Dislike"
msgstr ""
@@ -5031,27 +5022,23 @@ msgstr ""
#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87
#: ../../Zotlabs/Module/Tagger.php:47
-#: ../../extend/addon/addon/diaspora/inbound.php:1794
#: ../../extend/addon/addon/redphotos/redphotohelper.php:74
-#: ../../include/conversation.php:120 ../../include/text.php:1942
+#: ../../include/conversation.php:120 ../../include/text.php:1928
msgid "photo"
msgstr ""
#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87
-#: ../../extend/addon/addon/diaspora/inbound.php:1794
-#: ../../include/conversation.php:148 ../../include/text.php:1948
+#: ../../include/conversation.php:148 ../../include/text.php:1934
msgid "status"
msgstr ""
#: ../../Zotlabs/Module/Like.php:372 ../../Zotlabs/Module/Events.php:260
#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:1145
-#: ../../include/conversation.php:123 ../../include/text.php:1945
+#: ../../include/conversation.php:123 ../../include/text.php:1931
msgid "event"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:419
-#: ../../extend/addon/addon/diaspora/inbound.php:1823
-#: ../../include/conversation.php:164
+#: ../../Zotlabs/Module/Like.php:419 ../../include/conversation.php:164
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr ""
@@ -5243,7 +5230,7 @@ msgstr ""
msgid "Your message for %s (%s):"
msgstr ""
-#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2272
+#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2258
msgid "Blocks"
msgstr ""
@@ -5251,25 +5238,25 @@ msgstr ""
msgid "Block Title"
msgstr ""
-#: ../../Zotlabs/Module/Layouts.php:183 ../../include/text.php:2274
+#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2260
msgid "Layouts"
msgstr ""
-#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Lib/Apps.php:232
+#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:232
#: ../../include/help.php:55 ../../include/help.php:61
#: ../../include/nav.php:174 ../../include/nav.php:288
msgid "Help"
msgstr ""
-#: ../../Zotlabs/Module/Layouts.php:185
+#: ../../Zotlabs/Module/Layouts.php:186
msgid "Comanche page description language help"
msgstr ""
-#: ../../Zotlabs/Module/Layouts.php:189
+#: ../../Zotlabs/Module/Layouts.php:190
msgid "Layout Description"
msgstr ""
-#: ../../Zotlabs/Module/Layouts.php:194
+#: ../../Zotlabs/Module/Layouts.php:195
msgid "Download PDL file"
msgstr ""
@@ -5291,28 +5278,28 @@ msgid "Optionally explain your rating (this information is public)"
msgstr ""
#: ../../Zotlabs/Module/Profile_photo.php:115
-#: ../../Zotlabs/Module/Profile_photo.php:224
+#: ../../Zotlabs/Module/Profile_photo.php:226
#: ../../Zotlabs/Module/Photos.php:97 ../../Zotlabs/Module/Photos.php:729
-#: ../../include/photo/photo_driver.php:730
+#: ../../include/photo/photo_driver.php:646
msgid "Profile Photos"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:194
+#: ../../Zotlabs/Module/Profile_photo.php:196
#: ../../extend/addon/addon/openclipatar/openclipatar.php:298
msgid ""
"Shift-reload the page or clear browser cache if the new photo does not "
"display immediately."
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:420
+#: ../../Zotlabs/Module/Profile_photo.php:422
msgid "Use Photo for Profile"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:420
+#: ../../Zotlabs/Module/Profile_photo.php:422
msgid "Upload Profile Photo"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:421
+#: ../../Zotlabs/Module/Profile_photo.php:423
#: ../../extend/addon/addon/openclipatar/openclipatar.php:182
#: ../../extend/addon/addon/openclipatar/openclipatar.php:194
msgid "Use"
@@ -5451,115 +5438,115 @@ msgid ""
"or restore these in date order (oldest first)."
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:246
+#: ../../Zotlabs/Module/Directory.php:245
#, php-format
msgid "%d rating"
msgid_plural "%d ratings"
msgstr[0] ""
msgstr[1] ""
-#: ../../Zotlabs/Module/Directory.php:257
+#: ../../Zotlabs/Module/Directory.php:256
msgid "Gender: "
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:259
+#: ../../Zotlabs/Module/Directory.php:258
msgid "Status: "
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:261
+#: ../../Zotlabs/Module/Directory.php:260
msgid "Homepage: "
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:310 ../../include/channel.php:1298
+#: ../../Zotlabs/Module/Directory.php:309 ../../include/channel.php:1293
msgid "Age:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:315 ../../include/event.php:52
+#: ../../Zotlabs/Module/Directory.php:314 ../../include/event.php:52
#: ../../include/event.php:84 ../../include/channel.php:1134
msgid "Location:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:321
+#: ../../Zotlabs/Module/Directory.php:320
msgid "Description:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:326 ../../include/channel.php:1314
+#: ../../Zotlabs/Module/Directory.php:325 ../../include/channel.php:1309
msgid "Hometown:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:328 ../../include/channel.php:1322
+#: ../../Zotlabs/Module/Directory.php:327 ../../include/channel.php:1317
msgid "About:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:329 ../../Zotlabs/Module/Suggest.php:56
+#: ../../Zotlabs/Module/Directory.php:328 ../../Zotlabs/Module/Suggest.php:54
+#: ../../Zotlabs/Widget/Suggestions.php:44 ../../Zotlabs/Widget/Follow.php:32
#: ../../include/connections.php:110 ../../include/conversation.php:938
-#: ../../include/conversation.php:1069 ../../include/widgets.php:134
-#: ../../include/widgets.php:171 ../../include/channel.php:1119
+#: ../../include/conversation.php:1069 ../../include/channel.php:1119
msgid "Connect"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:330
+#: ../../Zotlabs/Module/Directory.php:329
msgid "Public Forum:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:333
+#: ../../Zotlabs/Module/Directory.php:332
msgid "Keywords: "
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:336
+#: ../../Zotlabs/Module/Directory.php:335
msgid "Don't suggest"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:338
+#: ../../Zotlabs/Module/Directory.php:337
msgid "Common connections:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:387
+#: ../../Zotlabs/Module/Directory.php:386
msgid "Global Directory"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:387
+#: ../../Zotlabs/Module/Directory.php:386
msgid "Local Directory"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:393
+#: ../../Zotlabs/Module/Directory.php:392
msgid "Finding:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:396 ../../Zotlabs/Module/Suggest.php:64
+#: ../../Zotlabs/Module/Directory.php:395 ../../Zotlabs/Module/Suggest.php:62
#: ../../include/contact_widgets.php:24
msgid "Channel Suggestions"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:398
+#: ../../Zotlabs/Module/Directory.php:397
msgid "next page"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:398
+#: ../../Zotlabs/Module/Directory.php:397
msgid "previous page"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:399
+#: ../../Zotlabs/Module/Directory.php:398
msgid "Sort options"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:400
+#: ../../Zotlabs/Module/Directory.php:399
msgid "Alphabetic"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:401
+#: ../../Zotlabs/Module/Directory.php:400
msgid "Reverse Alphabetic"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:402
+#: ../../Zotlabs/Module/Directory.php:401
msgid "Newest to Oldest"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:403
+#: ../../Zotlabs/Module/Directory.php:402
msgid "Oldest to Newest"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:420
+#: ../../Zotlabs/Module/Directory.php:419
msgid "No entries (some entries may be hidden)."
msgstr ""
@@ -5587,7 +5574,7 @@ msgid ""
"Password reset failed."
msgstr ""
-#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1714
+#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1698
msgid "Password Reset"
msgstr ""
@@ -5736,7 +5723,7 @@ msgstr ""
msgid "Profile Visibility Editor"
msgstr ""
-#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1367
+#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1362
msgid "Profile"
msgstr ""
@@ -5959,8 +5946,8 @@ msgstr ""
msgid "*"
msgstr ""
-#: ../../Zotlabs/Module/Sources.php:96 ../../include/widgets.php:677
-#: ../../include/features.php:213
+#: ../../Zotlabs/Module/Sources.php:96
+#: ../../Zotlabs/Widget/Settings_menu.php:123 ../../include/features.php:213
msgid "Channel Sources"
msgstr ""
@@ -6025,13 +6012,13 @@ msgstr ""
msgid "Insufficient permissions. Request redirected to profile page."
msgstr ""
-#: ../../Zotlabs/Module/Suggest.php:39
+#: ../../Zotlabs/Module/Suggest.php:37
msgid ""
"No suggestions available. If this is a new site, please try again in 24 "
"hours."
msgstr ""
-#: ../../Zotlabs/Module/Suggest.php:58 ../../include/widgets.php:136
+#: ../../Zotlabs/Module/Suggest.php:56 ../../Zotlabs/Widget/Suggestions.php:46
msgid "Ignore/Hide"
msgstr ""
@@ -6039,15 +6026,15 @@ msgstr ""
msgid "Authentication failed."
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:75 ../../include/channel.php:1989
+#: ../../Zotlabs/Module/Rmagic.php:75 ../../include/channel.php:1984
msgid "Remote Authentication"
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:1990
+#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:1985
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:1991
+#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:1986
msgid "Authenticate"
msgstr ""
@@ -6382,7 +6369,8 @@ msgid ""
"Examples:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Tokens.php:150 ../../include/widgets.php:644
+#: ../../Zotlabs/Module/Settings/Tokens.php:150
+#: ../../Zotlabs/Widget/Settings_menu.php:90
msgid "Guest Access Tokens"
msgstr ""
@@ -6466,7 +6454,7 @@ msgid "Basic Settings"
msgstr ""
#: ../../Zotlabs/Module/Settings/Channel.php:482
-#: ../../include/channel.php:1255
+#: ../../include/channel.php:1250
msgid "Full Name:"
msgstr ""
@@ -6772,7 +6760,7 @@ msgid "Firefox Share $Projectname provider"
msgstr ""
#: ../../Zotlabs/Module/Settings/Channel.php:578
-msgid "Start calendar week on monday"
+msgid "Start calendar week on Monday"
msgstr ""
#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98
@@ -6849,7 +6837,7 @@ msgid "post"
msgstr ""
#: ../../Zotlabs/Module/Tagger.php:57 ../../include/conversation.php:150
-#: ../../include/text.php:1950
+#: ../../include/text.php:1936
msgid "comment"
msgstr ""
@@ -6881,7 +6869,6 @@ msgid "No channel. Import failed."
msgstr ""
#: ../../Zotlabs/Module/Import.php:467
-#: ../../extend/addon/addon/diaspora/import_diaspora.php:142
msgid "Import completed."
msgstr ""
@@ -7024,12 +7011,12 @@ msgid "Show Oldest First"
msgstr ""
#: ../../Zotlabs/Module/Photos.php:778 ../../Zotlabs/Module/Photos.php:1335
-#: ../../Zotlabs/Module/Embedphotos.php:139 ../../include/widgets.php:1751
+#: ../../Zotlabs/Module/Embedphotos.php:139 ../../Zotlabs/Widget/Album.php:78
msgid "View Photo"
msgstr ""
#: ../../Zotlabs/Module/Photos.php:809
-#: ../../Zotlabs/Module/Embedphotos.php:155 ../../include/widgets.php:1768
+#: ../../Zotlabs/Module/Embedphotos.php:155 ../../Zotlabs/Widget/Album.php:95
msgid "Edit Album"
msgstr ""
@@ -7168,7 +7155,7 @@ msgstr ""
#: ../../Zotlabs/Module/Photos.php:1131 ../../Zotlabs/Lib/ThreadItem.php:190
#: ../../include/taxonomy.php:403 ../../include/conversation.php:1952
-#: ../../include/channel.php:1273
+#: ../../include/channel.php:1268
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
@@ -7255,10 +7242,7 @@ msgstr ""
msgid "$Projectname Notification"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:61
-#: ../../extend/addon/addon/diaspora/util.php:218
-#: ../../extend/addon/addon/diaspora/util.php:231
-#: ../../extend/addon/addon/diaspora/p.php:46 ../../include/network.php:1427
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1427
msgid "$projectname"
msgstr ""
@@ -7729,69 +7713,6 @@ msgstr ""
msgid "Video"
msgstr ""
-#: ../../Zotlabs/Lib/NativeWikiPage.php:31
-#: ../../Zotlabs/Lib/NativeWikiPage.php:72
-msgid "(No Title)"
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:86
-msgid "Wiki page create failed."
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:99
-msgid "Wiki not found."
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:110
-msgid "Destination name already exists"
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:136
-#: ../../Zotlabs/Lib/NativeWikiPage.php:365
-msgid "Page not found"
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:166
-msgid "Error reading page content"
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:350
-#: ../../Zotlabs/Lib/NativeWikiPage.php:403
-#: ../../Zotlabs/Lib/NativeWikiPage.php:470
-#: ../../Zotlabs/Lib/NativeWikiPage.php:511
-msgid "Error reading wiki"
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:391
-msgid "Page update failed."
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:425
-msgid "Nothing deleted"
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:491
-msgid "Compare: object not found."
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:497
-msgid "Page updated"
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:500
-msgid "Untitled"
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:506
-msgid "Wiki resource_id required for git commit"
-msgstr ""
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:577
-#: ../../extend/addon/addon/gitwiki/gitwiki_backend.php:579
-#: ../../include/bbcode.php:610 ../../include/bbcode.php:756
-msgid "Different viewers will see this text differently"
-msgstr ""
-
#: ../../Zotlabs/Lib/Permcat.php:58
msgctxt "permcat"
msgid "default"
@@ -7842,7 +7763,7 @@ msgid "Suggest Channels"
msgstr ""
#: ../../Zotlabs/Lib/Apps.php:220 ../../include/nav.php:130
-#: ../../boot.php:1706
+#: ../../boot.php:1690
msgid "Login"
msgstr ""
@@ -7892,7 +7813,7 @@ msgstr ""
msgid "Invite"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:242 ../../include/widgets.php:1638
+#: ../../Zotlabs/Lib/Apps.php:242 ../../Zotlabs/Widget/Admin.php:26
msgid "Features"
msgstr ""
@@ -7928,10 +7849,330 @@ msgstr ""
msgid "Remove from app-tray"
msgstr ""
+#: ../../Zotlabs/Lib/NativeWikiPage.php:31
+#: ../../Zotlabs/Lib/NativeWikiPage.php:72
+msgid "(No Title)"
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:86
+msgid "Wiki page create failed."
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:99
+msgid "Wiki not found."
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:110
+msgid "Destination name already exists"
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:136
+#: ../../Zotlabs/Lib/NativeWikiPage.php:331
+msgid "Page not found"
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:166
+msgid "Error reading page content"
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:322
+#: ../../Zotlabs/Lib/NativeWikiPage.php:370
+#: ../../Zotlabs/Lib/NativeWikiPage.php:437
+#: ../../Zotlabs/Lib/NativeWikiPage.php:478
+msgid "Error reading wiki"
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:358
+msgid "Page update failed."
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:392
+msgid "Nothing deleted"
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:458
+msgid "Compare: object not found."
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:464
+msgid "Page updated"
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:467
+msgid "Untitled"
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:473
+msgid "Wiki resource_id required for git commit"
+msgstr ""
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:544
+#: ../../extend/addon/addon/gitwiki/gitwiki_backend.php:579
+#: ../../include/bbcode.php:610 ../../include/bbcode.php:756
+msgid "Different viewers will see this text differently"
+msgstr ""
+
#: ../../Zotlabs/Lib/NativeWiki.php:128
msgid "Wiki files deleted successfully"
msgstr ""
+#: ../../Zotlabs/Widget/Notes.php:16
+msgid "Notes"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Cover_photo.php:54
+msgid "Click to show more"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Tagcloud.php:25
+#: ../../Zotlabs/Widget/Appcategories.php:39 ../../include/taxonomy.php:188
+#: ../../include/taxonomy.php:270 ../../include/contact_widgets.php:91
+msgid "Categories"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Photo_rand.php:58 ../../Zotlabs/Widget/Photo.php:48
+msgid "photo/image"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Suggestions.php:51
+msgid "Suggestions"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Suggestions.php:52
+msgid "See more..."
+msgstr ""
+
+#: ../../Zotlabs/Widget/Follow.php:22
+#, php-format
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr ""
+
+#: ../../Zotlabs/Widget/Follow.php:29
+msgid "Add New Connection"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Follow.php:30
+msgid "Enter channel address"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Follow.php:31
+msgid "Examples: bob@example.com, https://example.com/barbara"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Savedsearch.php:75
+msgid "Remove term"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:301
+msgid "Saved Searches"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Savedsearch.php:84 ../../include/group.php:336
+msgid "add"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53
+#: ../../include/features.php:390
+msgid "Saved Folders"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Filer.php:31 ../../Zotlabs/Widget/Appcategories.php:42
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
+msgid "Everything"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Archive.php:43
+msgid "Archives"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Rating.php:51
+msgid "Rating Tools"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57
+msgid "Rate Me"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Rating.php:60
+msgid "View Ratings"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Bookmarkedchats.php:24
+msgid "Bookmarked Chatrooms"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Suggestedchats.php:32
+msgid "Suggested Chatrooms"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Affinity.php:49
+msgid "Refresh"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Settings_menu.php:35
+msgid "Account settings"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Settings_menu.php:41
+msgid "Channel settings"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Settings_menu.php:50
+msgid "Additional features"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Settings_menu.php:57
+msgid "Feature/Addon settings"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Settings_menu.php:63
+msgid "Display settings"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Settings_menu.php:70
+msgid "Manage locations"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Settings_menu.php:77
+msgid "Export channel"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Settings_menu.php:83
+msgid "Connected apps"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Settings_menu.php:98 ../../include/features.php:153
+msgid "Permission Groups"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Settings_menu.php:115
+msgid "Premium Channel Settings"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Mailmenu.php:13
+msgid "Private Mail Menu"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Mailmenu.php:15
+msgid "Combined View"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Mailmenu.php:20 ../../include/nav.php:213
+msgid "Inbox"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Mailmenu.php:25 ../../include/nav.php:214
+msgid "Outbox"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Mailmenu.php:30 ../../include/nav.php:215
+msgid "New Message"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Conversations.php:17
+#: ../../Zotlabs/Widget/Conversations.php:29
+msgid "Conversations"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Conversations.php:21
+msgid "Received Messages"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Conversations.php:25
+msgid "Sent Messages"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Conversations.php:39
+msgid "No messages."
+msgstr ""
+
+#: ../../Zotlabs/Widget/Conversations.php:57
+msgid "Delete conversation"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Eventstools.php:13
+msgid "Events Tools"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Eventstools.php:14
+msgid "Export Calendar"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Eventstools.php:15
+msgid "Import Calendar"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Chatroom_list.php:16
+#: ../../include/conversation.php:1866 ../../include/conversation.php:1869
+msgid "Chatrooms"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Chatroom_list.php:20
+msgid "Overview"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Chatroom_members.php:11
+msgid "Chat Members"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Wiki_list.php:15
+#: ../../extend/addon/addon/gitwiki/gitwiki.php:95
+msgid "Wiki List"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Wiki_pages.php:55
+#: ../../extend/addon/addon/gitwiki/gitwiki.php:76
+msgid "Wiki Pages"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Wiki_pages.php:61
+#: ../../extend/addon/addon/gitwiki/gitwiki.php:81
+msgid "Add new page"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Wiki_pages.php:62
+#: ../../extend/addon/addon/gitwiki/gitwiki.php:82
+msgid "Page name"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Activity.php:50
+msgctxt "widget"
+msgid "Activity"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Wiki_page_history.php:23
+msgctxt "wiki_history"
+msgid "Message"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Tasklist.php:23
+msgid "Tasks"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60
+msgid "Member registrations waiting for confirmation"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Admin.php:29
+msgid "Inspect queue"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Admin.php:31
+msgid "DB updates"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:233
+msgid "Admin"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Admin.php:56
+msgid "Plugin Features"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Forums.php:85
+msgid "Forums"
+msgstr ""
+
#: ../../extend/addon/addon/adultphotoflag/adultphotoflag.php:24
msgid "Flag Adult Photos"
msgstr ""
@@ -7988,39 +8229,6 @@ msgstr ""
msgid "Quick Reference"
msgstr ""
-#: ../../extend/addon/addon/diaspora/diaspora.php:677
-msgid "Diaspora Protocol Settings updated."
-msgstr ""
-
-#: ../../extend/addon/addon/diaspora/diaspora.php:696
-msgid "Enable the Diaspora protocol for this channel"
-msgstr ""
-
-#: ../../extend/addon/addon/diaspora/diaspora.php:700
-msgid "Allow any Diaspora member to comment on your public posts"
-msgstr ""
-
-#: ../../extend/addon/addon/diaspora/diaspora.php:704
-msgid "Prevent your hashtags from being redirected to other sites"
-msgstr ""
-
-#: ../../extend/addon/addon/diaspora/diaspora.php:709
-msgid "Followed hashtags (comma separated, do not include the #)"
-msgstr ""
-
-#: ../../extend/addon/addon/diaspora/diaspora.php:714
-msgid "Diaspora Protocol Settings"
-msgstr ""
-
-#: ../../extend/addon/addon/diaspora/import_diaspora.php:16
-msgid "No username found in import file."
-msgstr ""
-
-#: ../../extend/addon/addon/diaspora/import_diaspora.php:41
-#: ../../include/import.php:51
-msgid "Unable to create a unique channel address. Import failed."
-msgstr ""
-
#: ../../extend/addon/addon/dirstats/dirstats.php:94
msgid "Hubzilla Directory Stats"
msgstr ""
@@ -8241,316 +8449,6 @@ msgstr ""
msgid "Flattr Widget Settings"
msgstr ""
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:118
-msgid "Contact not found."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:119
-msgid ""
-"This may occasionally happen if contact was requested by both persons and it "
-"has already been approved."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:238
-msgid "Response from remote site was not understood."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:247
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:252
-msgid "Unexpected response from remote site: "
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:261
-msgid "Confirmation completed successfully."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:263
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:277
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:284
-msgid "Remote site reported: "
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:275
-msgid "Temporary failure. Please wait and try again."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:282
-msgid "Introduction failed or was revoked."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:428
-msgid "Unable to set contact photo."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:485
-#, php-format
-msgid "%1$s is now friends with %2$s"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:570
-#, php-format
-msgid "No user record found for '%s' "
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:580
-msgid "Our site encryption key is apparently messed up."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:591
-msgid "Empty site URL was provided or URL could not be decrypted by us."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:612
-msgid "Contact record was not found for you on our site."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:626
-#, php-format
-msgid "Site public key not available in contact record for URL %s."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:646
-msgid ""
-"The ID provided by your system is a duplicate on our system. It should work "
-"if you try again."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:657
-msgid "Unable to set your contact credentials on our system."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:724
-msgid "Unable to update your contact profile details on our system"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:751
-#: ../../extend/addon/addon/friendica/dfrn_request.php:749
-msgid "[Name Withheld]"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_confirm.php:796
-#, php-format
-msgid "%1$s has joined %2$s"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_poll.php:103
-#: ../../extend/addon/addon/friendica/dfrn_poll.php:536
-#, php-format
-msgid "%1$s welcomes %2$s"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:102
-msgid "This introduction has already been accepted."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:123
-#: ../../extend/addon/addon/friendica/dfrn_request.php:528
-msgid "Profile location is not valid or does not contain profile information."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:128
-#: ../../extend/addon/addon/friendica/dfrn_request.php:533
-msgid "Warning: profile location has no identifiable owner name."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:130
-#: ../../extend/addon/addon/friendica/dfrn_request.php:535
-msgid "Warning: profile location has no profile photo."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:133
-#: ../../extend/addon/addon/friendica/dfrn_request.php:538
-#, php-format
-msgid "%d required parameter was not found at the given location"
-msgid_plural "%d required parameters were not found at the given location"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:180
-msgid "Introduction complete."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:224
-msgid "Unrecoverable protocol error."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:252
-msgid "Profile unavailable."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:277
-#, php-format
-msgid "%s has received too many connection requests today."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:278
-msgid "Spam protection measures have been invoked."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:279
-msgid "Friends are advised to please try again in 24 hours."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:341
-msgid "Invalid locator"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:350
-msgid "Invalid email address."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:377
-msgid "This account has not been configured for email. Request failed."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:473
-msgid "Unable to resolve your name at the provided location."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:486
-msgid "You have already introduced yourself here."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:490
-#, php-format
-msgid "Apparently you are already friends with %s."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:511
-msgid "Invalid profile URL."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:517
-msgid "Disallowed profile URL."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:587
-msgid "Failed to update contact record."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:608
-msgid "Your introduction has been sent."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:662
-msgid "Please login to confirm introduction."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:676
-msgid ""
-"Incorrect identity currently logged in. Please login to <strong>this</"
-"strong> profile."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:690
-#: ../../extend/addon/addon/friendica/dfrn_request.php:707
-msgid "Confirm"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:702
-msgid "Hide this contact"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:705
-#, php-format
-msgid "Welcome home %s."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:706
-#, php-format
-msgid "Please confirm your introduction/connection request to %s."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:836
-msgid ""
-"Please enter your 'Identity Address' from one of the following supported "
-"communications networks:"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:857
-#, php-format
-msgid ""
-"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>."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:862
-msgid "Friend/Connection Request"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:863
-msgid ""
-"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
-"testuser@identi.ca"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:864
-msgid "Please answer the following:"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:865
-#, php-format
-msgid "Does %s know you?"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:869
-msgid "Add a personal note:"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:871
-#: ../../include/network.php:1744 ../../include/network.php:1745
-msgid "Friendica"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:872
-msgid "StatusNet/Federated Social Web"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:873
-#: ../../include/network.php:1750
-msgid "Diaspora"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:874
-#, php-format
-msgid ""
-" - please do not use this form. Instead, enter %s into your Diaspora search "
-"bar."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:875
-msgid "Your Identity Address:"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/dfrn_request.php:878
-msgid "Submit Request"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/friendica.php:113
-#: ../../extend/addon/addon/gnusoc/gnusoc.php:118
-msgid "GNU-Social Protocol Settings updated."
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/friendica.php:124
-msgid "Enable the (experimental) GNU-Social protocol for this channel"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/friendica.php:128
-#: ../../extend/addon/addon/gnusoc/gnusoc.php:133
-msgid "GNU-Social Protocol Settings"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/friendica.php:185
-#: ../../extend/addon/addon/gnusoc/gnusoc.php:323
-msgid "Follow"
-msgstr ""
-
-#: ../../extend/addon/addon/friendica/friendica.php:188
-#: ../../extend/addon/addon/gnusoc/gnusoc.php:326
-#, php-format
-msgid "%1$s is now following %2$s"
-msgstr ""
-
#: ../../extend/addon/addon/frphotos/frphotos.php:91
msgid "Friendica Photo Album Import"
msgstr ""
@@ -8662,7 +8560,7 @@ msgid "IRC Chatroom"
msgstr ""
#: ../../extend/addon/addon/jappixmini/jappixmini.php:305
-#: ../../include/channel.php:1139 ../../include/channel.php:1301
+#: ../../include/channel.php:1139 ../../include/channel.php:1296
msgid "Status:"
msgstr ""
@@ -9198,7 +9096,7 @@ msgid "Page to load after image selection."
msgstr ""
#: ../../extend/addon/addon/openclipatar/openclipatar.php:58
-#: ../../include/channel.php:1048 ../../include/nav.php:107
+#: ../../include/nav.php:107 ../../include/channel.php:1048
msgid "Edit Profile"
msgstr ""
@@ -10593,25 +10491,6 @@ msgstr ""
msgid "Login failed."
msgstr ""
-#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:44
-#, php-format
-msgid "Reconnecting %d connections"
-msgstr ""
-
-#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:63
-msgid "Diaspora Reconnect"
-msgstr ""
-
-#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:65
-msgid ""
-"Use this form to re-establish Diaspora connections which were initially made "
-"from a different hub."
-msgstr ""
-
-#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:70
-msgid "Reconnect"
-msgstr ""
-
#: ../../extend/addon/addon/mailtest/mailtest.php:19
msgid "Send test email"
msgstr ""
@@ -10773,37 +10652,13 @@ msgstr ""
msgid "Error downloading wiki: "
msgstr ""
-#: ../../extend/addon/addon/gitwiki/gitwiki.php:76
-#: ../../include/widgets.php:956
-msgid "Wiki Pages"
-msgstr ""
-
-#: ../../extend/addon/addon/gitwiki/gitwiki.php:81
-#: ../../include/widgets.php:962
-msgid "Add new page"
-msgstr ""
-
-#: ../../extend/addon/addon/gitwiki/gitwiki.php:82
-#: ../../include/widgets.php:963
-msgid "Page name"
-msgstr ""
-
-#: ../../extend/addon/addon/gitwiki/gitwiki.php:95
-#: ../../include/widgets.php:913
-msgid "Wiki List"
-msgstr ""
-
-#: ../../extend/addon/addon/gnusoc/gnusoc.php:129
-msgid "Enable the GNU-Social protocol for this channel"
-msgstr ""
-
-#: ../../extend/addon/addon/opensearch/opensearch.php:26 ../../boot.php:1143
+#: ../../extend/addon/addon/opensearch/opensearch.php:26
#, php-format
msgctxt "opensearch"
msgid "Search %1$s (%2$s)"
msgstr ""
-#: ../../extend/addon/addon/opensearch/opensearch.php:28 ../../boot.php:1143
+#: ../../extend/addon/addon/opensearch/opensearch.php:28
msgctxt "opensearch"
msgid "$Projectname"
msgstr ""
@@ -10893,14 +10748,6 @@ msgstr ""
msgid "This action is not available under your subscription plan."
msgstr ""
-#: ../../include/help.php:33
-msgid "Help:"
-msgstr ""
-
-#: ../../include/help.php:65
-msgid "Not Found"
-msgstr ""
-
#: ../../include/zot.php:649
msgid "Invalid data packet"
msgstr ""
@@ -10918,12 +10765,6 @@ msgstr ""
msgid "invalid target signature"
msgstr ""
-#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270
-#: ../../include/contact_widgets.php:91 ../../include/widgets.php:46
-#: ../../include/widgets.php:455
-msgid "Categories"
-msgstr ""
-
#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249
msgid "Tags"
msgstr ""
@@ -11012,7 +10853,7 @@ msgstr ""
msgid "YYYY-MM-DD or MM-DD"
msgstr ""
-#: ../../include/datetime.php:286 ../../boot.php:2555
+#: ../../include/datetime.php:286 ../../boot.php:2515
msgid "never"
msgstr ""
@@ -11338,73 +11179,29 @@ msgstr ""
msgid "%1$s's bookmarks"
msgstr ""
-#: ../../include/items.php:807 ../../include/items.php:854
-msgid "(Unknown)"
-msgstr ""
-
-#: ../../include/items.php:1045
-msgid "Visible to anybody on the internet."
-msgstr ""
-
-#: ../../include/items.php:1047
-msgid "Visible to you only."
-msgstr ""
-
-#: ../../include/items.php:1049
-msgid "Visible to anybody in this network."
-msgstr ""
-
-#: ../../include/items.php:1051
-msgid "Visible to anybody authenticated."
-msgstr ""
-
-#: ../../include/items.php:1053
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr ""
-
-#: ../../include/items.php:1055
-msgid "Visible to all connections."
-msgstr ""
-
-#: ../../include/items.php:1057
-msgid "Visible to approved connections."
-msgstr ""
-
-#: ../../include/items.php:1059
-msgid "Visible to specific connections."
-msgstr ""
-
-#: ../../include/items.php:3820
-msgid "Privacy group is empty."
-msgstr ""
-
-#: ../../include/items.php:3827
-#, php-format
-msgid "Privacy group: %s"
+#: ../../include/help.php:33
+msgid "Help:"
msgstr ""
-#: ../../include/items.php:3839
-msgid "Connection not found."
+#: ../../include/help.php:65
+msgid "Not Found"
msgstr ""
-#: ../../include/items.php:4188
-msgid "profile photo"
+#: ../../include/import.php:30
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
msgstr ""
-#: ../../include/items.php:4384
-#, php-format
-msgid "[Edited %s]"
+#: ../../include/import.php:51
+msgid "Unable to create a unique channel address. Import failed."
msgstr ""
-#: ../../include/items.php:4384
-msgctxt "edit_activity"
-msgid "Post"
+#: ../../include/import.php:90
+msgid "Channel clone failed. Import failed."
msgstr ""
-#: ../../include/items.php:4384
-msgctxt "edit_activity"
-msgid "Comment"
+#: ../../include/import.php:100
+msgid "Cloned channel not found. Import failed."
msgstr ""
#: ../../include/conversation.php:204
@@ -11417,8 +11214,8 @@ msgstr ""
msgid "%1$s poked %2$s"
msgstr ""
-#: ../../include/conversation.php:243 ../../include/text.php:1098
-#: ../../include/text.php:1103
+#: ../../include/conversation.php:243 ../../include/text.php:1097
+#: ../../include/text.php:1102
msgid "poked"
msgstr ""
@@ -11636,7 +11433,7 @@ msgstr ""
msgid "Profile Details"
msgstr ""
-#: ../../include/conversation.php:1839 ../../include/photos.php:515
+#: ../../include/conversation.php:1839 ../../include/photos.php:507
msgid "Photo Albums"
msgstr ""
@@ -11644,11 +11441,6 @@ msgstr ""
msgid "Files and Storage"
msgstr ""
-#: ../../include/conversation.php:1866 ../../include/conversation.php:1869
-#: ../../include/widgets.php:888
-msgid "Chatrooms"
-msgstr ""
-
#: ../../include/conversation.php:1879
msgid "Bookmarks"
msgstr ""
@@ -11742,16 +11534,6 @@ msgstr ""
msgid "Advanced example: name=fred and country=iceland"
msgstr ""
-#: ../../include/contact_widgets.php:53 ../../include/widgets.php:333
-#: ../../include/features.php:390
-msgid "Saved Folders"
-msgstr ""
-
-#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
-#: ../../include/widgets.php:336 ../../include/widgets.php:458
-msgid "Everything"
-msgstr ""
-
#: ../../include/contact_widgets.php:122
#, php-format
msgid "%d connection in common"
@@ -11763,219 +11545,148 @@ msgstr[1] ""
msgid "show more"
msgstr ""
-#: ../../include/widgets.php:141
-msgid "Suggestions"
-msgstr ""
-
-#: ../../include/widgets.php:142
-msgid "See more..."
-msgstr ""
-
-#: ../../include/widgets.php:162
-#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr ""
-
-#: ../../include/widgets.php:168
-msgid "Add New Connection"
-msgstr ""
-
-#: ../../include/widgets.php:169
-msgid "Enter channel address"
-msgstr ""
-
-#: ../../include/widgets.php:170
-msgid "Examples: bob@example.com, https://example.com/barbara"
-msgstr ""
-
-#: ../../include/widgets.php:186
-msgid "Notes"
-msgstr ""
-
-#: ../../include/widgets.php:262
-msgid "Remove term"
-msgstr ""
-
-#: ../../include/widgets.php:270 ../../include/features.php:301
-msgid "Saved Searches"
-msgstr ""
-
-#: ../../include/widgets.php:271 ../../include/group.php:336
-msgid "add"
-msgstr ""
-
-#: ../../include/widgets.php:377
-msgid "Archives"
-msgstr ""
-
-#: ../../include/widgets.php:549
-msgid "Refresh"
-msgstr ""
-
-#: ../../include/widgets.php:589
-msgid "Account settings"
-msgstr ""
-
-#: ../../include/widgets.php:595
-msgid "Channel settings"
-msgstr ""
-
-#: ../../include/widgets.php:604
-msgid "Additional features"
-msgstr ""
-
-#: ../../include/widgets.php:611
-msgid "Feature/Addon settings"
-msgstr ""
-
-#: ../../include/widgets.php:617
-msgid "Display settings"
-msgstr ""
-
-#: ../../include/widgets.php:624
-msgid "Manage locations"
+#: ../../include/nav.php:88
+msgid "Remote authentication"
msgstr ""
-#: ../../include/widgets.php:631
-msgid "Export channel"
+#: ../../include/nav.php:88
+msgid "Click to authenticate to your home hub"
msgstr ""
-#: ../../include/widgets.php:637
-msgid "Connected apps"
+#: ../../include/nav.php:99 ../../include/nav.php:140 ../../boot.php:1689
+msgid "Logout"
msgstr ""
-#: ../../include/widgets.php:652 ../../include/features.php:153
-msgid "Permission Groups"
+#: ../../include/nav.php:99 ../../include/nav.php:140
+msgid "End this session"
msgstr ""
-#: ../../include/widgets.php:669
-msgid "Premium Channel Settings"
+#: ../../include/nav.php:103
+msgid "Your profile page"
msgstr ""
-#: ../../include/widgets.php:698
-msgid "Private Mail Menu"
+#: ../../include/nav.php:105
+msgid "Manage/Edit profiles"
msgstr ""
-#: ../../include/widgets.php:700
-msgid "Combined View"
+#: ../../include/nav.php:107
+msgid "Edit your profile"
msgstr ""
-#: ../../include/widgets.php:705 ../../include/nav.php:213
-msgid "Inbox"
+#: ../../include/nav.php:130
+msgid "Sign in"
msgstr ""
-#: ../../include/widgets.php:710 ../../include/nav.php:214
-msgid "Outbox"
+#: ../../include/nav.php:155
+msgid "Take me home"
msgstr ""
-#: ../../include/widgets.php:715 ../../include/nav.php:215
-msgid "New Message"
+#: ../../include/nav.php:157
+msgid "Log me out of this site"
msgstr ""
-#: ../../include/widgets.php:732 ../../include/widgets.php:744
-msgid "Conversations"
+#: ../../include/nav.php:162
+msgid "Create an account"
msgstr ""
-#: ../../include/widgets.php:736
-msgid "Received Messages"
+#: ../../include/nav.php:174
+msgid "Help and documentation"
msgstr ""
-#: ../../include/widgets.php:740
-msgid "Sent Messages"
+#: ../../include/nav.php:178
+msgid "Applications, utilities, links, games"
msgstr ""
-#: ../../include/widgets.php:754
-msgid "No messages."
+#: ../../include/nav.php:180
+msgid "Search site @name, #tag, ?docs, content"
msgstr ""
-#: ../../include/widgets.php:772
-msgid "Delete conversation"
+#: ../../include/nav.php:182
+msgid "Channel Directory"
msgstr ""
-#: ../../include/widgets.php:798
-msgid "Events Tools"
+#: ../../include/nav.php:194
+msgid "Your grid"
msgstr ""
-#: ../../include/widgets.php:799
-msgid "Export Calendar"
+#: ../../include/nav.php:195
+msgid "View your network/grid"
msgstr ""
-#: ../../include/widgets.php:800
-msgid "Import Calendar"
+#: ../../include/nav.php:196
+msgid "Mark all grid notifications seen"
msgstr ""
-#: ../../include/widgets.php:892
-msgid "Overview"
+#: ../../include/nav.php:198
+msgid "Channel home"
msgstr ""
-#: ../../include/widgets.php:899
-msgid "Chat Members"
+#: ../../include/nav.php:199
+msgid "View your channel home"
msgstr ""
-#: ../../include/widgets.php:977
-msgctxt "wiki_history"
-msgid "Message"
+#: ../../include/nav.php:200
+msgid "Mark all channel notifications seen"
msgstr ""
-#: ../../include/widgets.php:999
-msgid "Bookmarked Chatrooms"
+#: ../../include/nav.php:206
+msgid "Notices"
msgstr ""
-#: ../../include/widgets.php:1030
-msgid "Suggested Chatrooms"
+#: ../../include/nav.php:206
+msgid "Notifications"
msgstr ""
-#: ../../include/widgets.php:1175 ../../include/widgets.php:1287
-msgid "photo/image"
+#: ../../include/nav.php:207
+msgid "View all notifications"
msgstr ""
-#: ../../include/widgets.php:1230
-msgid "Click to show more"
+#: ../../include/nav.php:210
+msgid "Private mail"
msgstr ""
-#: ../../include/widgets.php:1381
-msgid "Rating Tools"
+#: ../../include/nav.php:211
+msgid "View your private messages"
msgstr ""
-#: ../../include/widgets.php:1385 ../../include/widgets.php:1387
-msgid "Rate Me"
+#: ../../include/nav.php:212
+msgid "Mark all private messages seen"
msgstr ""
-#: ../../include/widgets.php:1390
-msgid "View Ratings"
+#: ../../include/nav.php:218
+msgid "Event Calendar"
msgstr ""
-#: ../../include/widgets.php:1483
-msgid "Forums"
+#: ../../include/nav.php:219
+msgid "View events"
msgstr ""
-#: ../../include/widgets.php:1540
-msgctxt "widget"
-msgid "Activity"
+#: ../../include/nav.php:220
+msgid "Mark all events seen"
msgstr ""
-#: ../../include/widgets.php:1569
-msgid "Tasks"
+#: ../../include/nav.php:223
+msgid "Manage Your Channels"
msgstr ""
-#: ../../include/widgets.php:1635 ../../include/widgets.php:1673
-msgid "Member registrations waiting for confirmation"
+#: ../../include/nav.php:225
+msgid "Account/Channel Settings"
msgstr ""
-#: ../../include/widgets.php:1641
-msgid "Inspect queue"
+#: ../../include/nav.php:233
+msgid "Site Setup and Configuration"
msgstr ""
-#: ../../include/widgets.php:1643
-msgid "DB updates"
+#: ../../include/nav.php:297
+msgid "@name, #tag, ?doc, content"
msgstr ""
-#: ../../include/widgets.php:1668 ../../include/nav.php:233
-msgid "Admin"
+#: ../../include/nav.php:298
+msgid "Please wait..."
msgstr ""
-#: ../../include/widgets.php:1669
-msgid "Plugin Features"
+#: ../../include/nav.php:300
+msgid "Add Apps"
msgstr ""
#: ../../include/js_strings.php:5
@@ -12118,19 +11829,19 @@ msgstr ""
msgid "timeago.numbers"
msgstr ""
-#: ../../include/js_strings.php:45 ../../include/text.php:1315
+#: ../../include/js_strings.php:45 ../../include/text.php:1314
msgid "January"
msgstr ""
-#: ../../include/js_strings.php:46 ../../include/text.php:1315
+#: ../../include/js_strings.php:46 ../../include/text.php:1314
msgid "February"
msgstr ""
-#: ../../include/js_strings.php:47 ../../include/text.php:1315
+#: ../../include/js_strings.php:47 ../../include/text.php:1314
msgid "March"
msgstr ""
-#: ../../include/js_strings.php:48 ../../include/text.php:1315
+#: ../../include/js_strings.php:48 ../../include/text.php:1314
msgid "April"
msgstr ""
@@ -12139,31 +11850,31 @@ msgctxt "long"
msgid "May"
msgstr ""
-#: ../../include/js_strings.php:50 ../../include/text.php:1315
+#: ../../include/js_strings.php:50 ../../include/text.php:1314
msgid "June"
msgstr ""
-#: ../../include/js_strings.php:51 ../../include/text.php:1315
+#: ../../include/js_strings.php:51 ../../include/text.php:1314
msgid "July"
msgstr ""
-#: ../../include/js_strings.php:52 ../../include/text.php:1315
+#: ../../include/js_strings.php:52 ../../include/text.php:1314
msgid "August"
msgstr ""
-#: ../../include/js_strings.php:53 ../../include/text.php:1315
+#: ../../include/js_strings.php:53 ../../include/text.php:1314
msgid "September"
msgstr ""
-#: ../../include/js_strings.php:54 ../../include/text.php:1315
+#: ../../include/js_strings.php:54 ../../include/text.php:1314
msgid "October"
msgstr ""
-#: ../../include/js_strings.php:55 ../../include/text.php:1315
+#: ../../include/js_strings.php:55 ../../include/text.php:1314
msgid "November"
msgstr ""
-#: ../../include/js_strings.php:56 ../../include/text.php:1315
+#: ../../include/js_strings.php:56 ../../include/text.php:1314
msgid "December"
msgstr ""
@@ -12216,31 +11927,31 @@ msgstr ""
msgid "Dec"
msgstr ""
-#: ../../include/js_strings.php:69 ../../include/text.php:1311
+#: ../../include/js_strings.php:69 ../../include/text.php:1310
msgid "Sunday"
msgstr ""
-#: ../../include/js_strings.php:70 ../../include/text.php:1311
+#: ../../include/js_strings.php:70 ../../include/text.php:1310
msgid "Monday"
msgstr ""
-#: ../../include/js_strings.php:71 ../../include/text.php:1311
+#: ../../include/js_strings.php:71 ../../include/text.php:1310
msgid "Tuesday"
msgstr ""
-#: ../../include/js_strings.php:72 ../../include/text.php:1311
+#: ../../include/js_strings.php:72 ../../include/text.php:1310
msgid "Wednesday"
msgstr ""
-#: ../../include/js_strings.php:73 ../../include/text.php:1311
+#: ../../include/js_strings.php:73 ../../include/text.php:1310
msgid "Thursday"
msgstr ""
-#: ../../include/js_strings.php:74 ../../include/text.php:1311
+#: ../../include/js_strings.php:74 ../../include/text.php:1310
msgid "Friday"
msgstr ""
-#: ../../include/js_strings.php:75 ../../include/text.php:1311
+#: ../../include/js_strings.php:75 ../../include/text.php:1310
msgid "Saturday"
msgstr ""
@@ -12313,184 +12024,263 @@ msgstr ""
msgid "This Website Only"
msgstr ""
-#: ../../include/text.php:461
+#: ../../include/network.php:756
+msgid "view full size"
+msgstr ""
+
+#: ../../include/network.php:1490
+msgid "No Subject"
+msgstr ""
+
+#: ../../include/network.php:1744 ../../include/network.php:1745
+msgid "Friendica"
+msgstr ""
+
+#: ../../include/network.php:1746
+msgid "OStatus"
+msgstr ""
+
+#: ../../include/network.php:1747
+msgid "GNU-Social"
+msgstr ""
+
+#: ../../include/network.php:1748
+msgid "RSS/Atom"
+msgstr ""
+
+#: ../../include/network.php:1750
+msgid "Diaspora"
+msgstr ""
+
+#: ../../include/network.php:1751
+msgid "Facebook"
+msgstr ""
+
+#: ../../include/network.php:1752
+msgid "Zot"
+msgstr ""
+
+#: ../../include/network.php:1753
+msgid "LinkedIn"
+msgstr ""
+
+#: ../../include/network.php:1754
+msgid "XMPP/IM"
+msgstr ""
+
+#: ../../include/network.php:1755
+msgid "MySpace"
+msgstr ""
+
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr ""
+
+#: ../../include/group.php:268
+msgid "Add new connections to this privacy group"
+msgstr ""
+
+#: ../../include/group.php:309
+msgid "edit"
+msgstr ""
+
+#: ../../include/group.php:331 ../../include/features.php:292
+msgid "Privacy Groups"
+msgstr ""
+
+#: ../../include/group.php:332
+msgid "Edit group"
+msgstr ""
+
+#: ../../include/group.php:333
+msgid "Add privacy group"
+msgstr ""
+
+#: ../../include/group.php:334
+msgid "Channels not in any privacy group"
+msgstr ""
+
+#: ../../include/text.php:460
msgid "prev"
msgstr ""
-#: ../../include/text.php:463
+#: ../../include/text.php:462
msgid "first"
msgstr ""
-#: ../../include/text.php:492
+#: ../../include/text.php:491
msgid "last"
msgstr ""
-#: ../../include/text.php:495
+#: ../../include/text.php:494
msgid "next"
msgstr ""
-#: ../../include/text.php:506
+#: ../../include/text.php:505
msgid "older"
msgstr ""
-#: ../../include/text.php:508
+#: ../../include/text.php:507
msgid "newer"
msgstr ""
-#: ../../include/text.php:928
+#: ../../include/text.php:927
msgid "No connections"
msgstr ""
-#: ../../include/text.php:953
+#: ../../include/text.php:952
#, php-format
msgid "View all %s connections"
msgstr ""
-#: ../../include/text.php:1098 ../../include/text.php:1103
+#: ../../include/text.php:1097 ../../include/text.php:1102
msgid "poke"
msgstr ""
-#: ../../include/text.php:1104
+#: ../../include/text.php:1103
msgid "ping"
msgstr ""
-#: ../../include/text.php:1104
+#: ../../include/text.php:1103
msgid "pinged"
msgstr ""
-#: ../../include/text.php:1105
+#: ../../include/text.php:1104
msgid "prod"
msgstr ""
-#: ../../include/text.php:1105
+#: ../../include/text.php:1104
msgid "prodded"
msgstr ""
-#: ../../include/text.php:1106
+#: ../../include/text.php:1105
msgid "slap"
msgstr ""
-#: ../../include/text.php:1106
+#: ../../include/text.php:1105
msgid "slapped"
msgstr ""
-#: ../../include/text.php:1107
+#: ../../include/text.php:1106
msgid "finger"
msgstr ""
-#: ../../include/text.php:1107
+#: ../../include/text.php:1106
msgid "fingered"
msgstr ""
-#: ../../include/text.php:1108
+#: ../../include/text.php:1107
msgid "rebuff"
msgstr ""
-#: ../../include/text.php:1108
+#: ../../include/text.php:1107
msgid "rebuffed"
msgstr ""
-#: ../../include/text.php:1120
+#: ../../include/text.php:1119
msgid "happy"
msgstr ""
-#: ../../include/text.php:1121
+#: ../../include/text.php:1120
msgid "sad"
msgstr ""
-#: ../../include/text.php:1122
+#: ../../include/text.php:1121
msgid "mellow"
msgstr ""
-#: ../../include/text.php:1123
+#: ../../include/text.php:1122
msgid "tired"
msgstr ""
-#: ../../include/text.php:1124
+#: ../../include/text.php:1123
msgid "perky"
msgstr ""
-#: ../../include/text.php:1125
+#: ../../include/text.php:1124
msgid "angry"
msgstr ""
-#: ../../include/text.php:1126
+#: ../../include/text.php:1125
msgid "stupefied"
msgstr ""
-#: ../../include/text.php:1127
+#: ../../include/text.php:1126
msgid "puzzled"
msgstr ""
-#: ../../include/text.php:1128
+#: ../../include/text.php:1127
msgid "interested"
msgstr ""
-#: ../../include/text.php:1129
+#: ../../include/text.php:1128
msgid "bitter"
msgstr ""
-#: ../../include/text.php:1130
+#: ../../include/text.php:1129
msgid "cheerful"
msgstr ""
-#: ../../include/text.php:1131
+#: ../../include/text.php:1130
msgid "alive"
msgstr ""
-#: ../../include/text.php:1132
+#: ../../include/text.php:1131
msgid "annoyed"
msgstr ""
-#: ../../include/text.php:1133
+#: ../../include/text.php:1132
msgid "anxious"
msgstr ""
-#: ../../include/text.php:1134
+#: ../../include/text.php:1133
msgid "cranky"
msgstr ""
-#: ../../include/text.php:1135
+#: ../../include/text.php:1134
msgid "disturbed"
msgstr ""
-#: ../../include/text.php:1136
+#: ../../include/text.php:1135
msgid "frustrated"
msgstr ""
-#: ../../include/text.php:1137
+#: ../../include/text.php:1136
msgid "depressed"
msgstr ""
-#: ../../include/text.php:1138
+#: ../../include/text.php:1137
msgid "motivated"
msgstr ""
-#: ../../include/text.php:1139
+#: ../../include/text.php:1138
msgid "relaxed"
msgstr ""
-#: ../../include/text.php:1140
+#: ../../include/text.php:1139
msgid "surprised"
msgstr ""
-#: ../../include/text.php:1315
+#: ../../include/text.php:1314
msgid "May"
msgstr ""
-#: ../../include/text.php:1392 ../../include/text.php:1396
+#: ../../include/text.php:1391 ../../include/text.php:1395
msgid "Unknown Attachment"
msgstr ""
-#: ../../include/text.php:1398
+#: ../../include/text.php:1397
msgid "unknown"
msgstr ""
-#: ../../include/text.php:1434
+#: ../../include/text.php:1433
msgid "remove category"
msgstr ""
-#: ../../include/text.php:1511
+#: ../../include/text.php:1510
msgid "remove from file"
msgstr ""
@@ -12502,111 +12292,150 @@ msgstr ""
msgid "You can create your own with the layouts tool"
msgstr ""
-#: ../../include/text.php:1822
+#: ../../include/text.php:1808
msgid "Page content type"
msgstr ""
-#: ../../include/text.php:1955
+#: ../../include/text.php:1941
msgid "activity"
msgstr ""
-#: ../../include/text.php:2269
+#: ../../include/text.php:2255
msgid "Design Tools"
msgstr ""
-#: ../../include/text.php:2275
+#: ../../include/text.php:2261
msgid "Pages"
msgstr ""
-#: ../../include/text.php:2297
+#: ../../include/text.php:2283
msgid "Import website..."
msgstr ""
-#: ../../include/text.php:2298
+#: ../../include/text.php:2284
msgid "Select folder to import"
msgstr ""
-#: ../../include/text.php:2299
+#: ../../include/text.php:2285
msgid "Import from a zipped folder:"
msgstr ""
-#: ../../include/text.php:2300
+#: ../../include/text.php:2286
msgid "Import from cloud files:"
msgstr ""
-#: ../../include/text.php:2301
+#: ../../include/text.php:2287
msgid "/cloud/channel/path/to/folder"
msgstr ""
-#: ../../include/text.php:2302
+#: ../../include/text.php:2288
msgid "Enter path to website files"
msgstr ""
-#: ../../include/text.php:2303
+#: ../../include/text.php:2289
msgid "Select folder"
msgstr ""
-#: ../../include/text.php:2304
+#: ../../include/text.php:2290
msgid "Export website..."
msgstr ""
-#: ../../include/text.php:2305
+#: ../../include/text.php:2291
msgid "Export to a zip file"
msgstr ""
-#: ../../include/text.php:2306
+#: ../../include/text.php:2292
msgid "website.zip"
msgstr ""
-#: ../../include/text.php:2307
+#: ../../include/text.php:2293
msgid "Enter a name for the zip file."
msgstr ""
-#: ../../include/text.php:2308
+#: ../../include/text.php:2294
msgid "Export to cloud files"
msgstr ""
-#: ../../include/text.php:2309
+#: ../../include/text.php:2295
msgid "/path/to/export/folder"
msgstr ""
-#: ../../include/text.php:2310
+#: ../../include/text.php:2296
msgid "Enter a path to a cloud files destination."
msgstr ""
-#: ../../include/text.php:2311
+#: ../../include/text.php:2297
msgid "Specify folder"
msgstr ""
-#: ../../include/group.php:26
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
+#: ../../include/photos.php:111
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
msgstr ""
-#: ../../include/group.php:268
-msgid "Add new connections to this privacy group"
+#: ../../include/photos.php:118
+msgid "Image file is empty."
msgstr ""
-#: ../../include/group.php:309
-msgid "edit"
+#: ../../include/photos.php:257
+msgid "Photo storage failed."
msgstr ""
-#: ../../include/group.php:331 ../../include/features.php:292
-msgid "Privacy Groups"
+#: ../../include/photos.php:297
+msgid "a new photo"
msgstr ""
-#: ../../include/group.php:332
-msgid "Edit group"
+#: ../../include/photos.php:301
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
msgstr ""
-#: ../../include/group.php:333
-msgid "Add privacy group"
+#: ../../include/photos.php:511
+msgid "Upload New Photos"
msgstr ""
-#: ../../include/group.php:334
-msgid "Channels not in any privacy group"
+#: ../../include/bbcode.php:134 ../../include/bbcode.php:1040
+#: ../../include/bbcode.php:1043 ../../include/bbcode.php:1048
+#: ../../include/bbcode.php:1051 ../../include/bbcode.php:1054
+#: ../../include/bbcode.php:1057 ../../include/bbcode.php:1062
+#: ../../include/bbcode.php:1065 ../../include/bbcode.php:1070
+#: ../../include/bbcode.php:1073 ../../include/bbcode.php:1076
+#: ../../include/bbcode.php:1079
+msgid "Image/photo"
+msgstr ""
+
+#: ../../include/bbcode.php:173 ../../include/bbcode.php:1090
+msgid "Encrypted content"
+msgstr ""
+
+#: ../../include/bbcode.php:189
+#, php-format
+msgid "Install %s element: "
+msgstr ""
+
+#: ../../include/bbcode.php:193
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr ""
+
+#: ../../include/bbcode.php:272
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr ""
+
+#: ../../include/bbcode.php:349 ../../include/bbcode.php:357
+msgid "Click to open/close"
+msgstr ""
+
+#: ../../include/bbcode.php:357
+msgid "spoiler"
+msgstr ""
+
+#: ../../include/bbcode.php:1028
+msgid "$1 wrote:"
msgstr ""
#: ../../include/channel.php:33
@@ -12654,11 +12483,11 @@ msgstr ""
msgid "Visible to everybody"
msgstr ""
-#: ../../include/channel.php:1138 ../../include/channel.php:1257
+#: ../../include/channel.php:1138 ../../include/channel.php:1252
msgid "Gender:"
msgstr ""
-#: ../../include/channel.php:1140 ../../include/channel.php:1312
+#: ../../include/channel.php:1140 ../../include/channel.php:1307
msgid "Homepage:"
msgstr ""
@@ -12666,202 +12495,100 @@ msgstr ""
msgid "Online Now"
msgstr ""
-#: ../../include/channel.php:1262
+#: ../../include/channel.php:1257
msgid "Like this channel"
msgstr ""
-#: ../../include/channel.php:1286
+#: ../../include/channel.php:1281
msgid "j F, Y"
msgstr ""
-#: ../../include/channel.php:1287
+#: ../../include/channel.php:1282
msgid "j F"
msgstr ""
-#: ../../include/channel.php:1294
+#: ../../include/channel.php:1289
msgid "Birthday:"
msgstr ""
-#: ../../include/channel.php:1307
+#: ../../include/channel.php:1302
#, php-format
msgid "for %1$d %2$s"
msgstr ""
-#: ../../include/channel.php:1310
+#: ../../include/channel.php:1305
msgid "Sexual Preference:"
msgstr ""
-#: ../../include/channel.php:1316
+#: ../../include/channel.php:1311
msgid "Tags:"
msgstr ""
-#: ../../include/channel.php:1318
+#: ../../include/channel.php:1313
msgid "Political Views:"
msgstr ""
-#: ../../include/channel.php:1320
+#: ../../include/channel.php:1315
msgid "Religion:"
msgstr ""
-#: ../../include/channel.php:1324
+#: ../../include/channel.php:1319
msgid "Hobbies/Interests:"
msgstr ""
-#: ../../include/channel.php:1326
+#: ../../include/channel.php:1321
msgid "Likes:"
msgstr ""
-#: ../../include/channel.php:1328
+#: ../../include/channel.php:1323
msgid "Dislikes:"
msgstr ""
-#: ../../include/channel.php:1330
+#: ../../include/channel.php:1325
msgid "Contact information and Social Networks:"
msgstr ""
-#: ../../include/channel.php:1332
+#: ../../include/channel.php:1327
msgid "My other channels:"
msgstr ""
-#: ../../include/channel.php:1334
+#: ../../include/channel.php:1329
msgid "Musical interests:"
msgstr ""
-#: ../../include/channel.php:1336
+#: ../../include/channel.php:1331
msgid "Books, literature:"
msgstr ""
-#: ../../include/channel.php:1338
+#: ../../include/channel.php:1333
msgid "Television:"
msgstr ""
-#: ../../include/channel.php:1340
+#: ../../include/channel.php:1335
msgid "Film/dance/culture/entertainment:"
msgstr ""
-#: ../../include/channel.php:1342
+#: ../../include/channel.php:1337
msgid "Love/Romance:"
msgstr ""
-#: ../../include/channel.php:1344
+#: ../../include/channel.php:1339
msgid "Work/employment:"
msgstr ""
-#: ../../include/channel.php:1346
+#: ../../include/channel.php:1341
msgid "School/education:"
msgstr ""
-#: ../../include/channel.php:1369
+#: ../../include/channel.php:1364
msgid "Like this thing"
msgstr ""
-#: ../../include/channel.php:2103
+#: ../../include/channel.php:2098
#, php-format
msgid "User '%s' deleted"
msgstr ""
-#: ../../include/network.php:756
-msgid "view full size"
-msgstr ""
-
-#: ../../include/network.php:1490
-msgid "No Subject"
-msgstr ""
-
-#: ../../include/network.php:1746
-msgid "OStatus"
-msgstr ""
-
-#: ../../include/network.php:1747
-msgid "GNU-Social"
-msgstr ""
-
-#: ../../include/network.php:1748
-msgid "RSS/Atom"
-msgstr ""
-
-#: ../../include/network.php:1751
-msgid "Facebook"
-msgstr ""
-
-#: ../../include/network.php:1752
-msgid "Zot"
-msgstr ""
-
-#: ../../include/network.php:1753
-msgid "LinkedIn"
-msgstr ""
-
-#: ../../include/network.php:1754
-msgid "XMPP/IM"
-msgstr ""
-
-#: ../../include/network.php:1755
-msgid "MySpace"
-msgstr ""
-
-#: ../../include/attach.php:250 ../../include/attach.php:338
-msgid "Item was not found."
-msgstr ""
-
-#: ../../include/attach.php:499
-msgid "No source file."
-msgstr ""
-
-#: ../../include/attach.php:521
-msgid "Cannot locate file to replace"
-msgstr ""
-
-#: ../../include/attach.php:539
-msgid "Cannot locate file to revise/update"
-msgstr ""
-
-#: ../../include/attach.php:670
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr ""
-
-#: ../../include/attach.php:684
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr ""
-
-#: ../../include/attach.php:854
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr ""
-
-#: ../../include/attach.php:867
-msgid "Stored file could not be verified. Upload failed."
-msgstr ""
-
-#: ../../include/attach.php:922 ../../include/attach.php:938
-msgid "Path not available."
-msgstr ""
-
-#: ../../include/attach.php:984 ../../include/attach.php:1142
-msgid "Empty pathname"
-msgstr ""
-
-#: ../../include/attach.php:1010
-msgid "duplicate filename or path"
-msgstr ""
-
-#: ../../include/attach.php:1032
-msgid "Path not found."
-msgstr ""
-
-#: ../../include/attach.php:1096
-msgid "mkdir failed."
-msgstr ""
-
-#: ../../include/attach.php:1100
-msgid "database storage failed."
-msgstr ""
-
-#: ../../include/attach.php:1148
-msgid "Empty path"
-msgstr ""
-
#: ../../include/message.php:32
msgid "Unable to determine sender."
msgstr ""
@@ -12878,202 +12605,83 @@ msgstr ""
msgid "Stored post could not be verified."
msgstr ""
-#: ../../include/nav.php:88
-msgid "Remote authentication"
-msgstr ""
-
-#: ../../include/nav.php:88
-msgid "Click to authenticate to your home hub"
-msgstr ""
-
-#: ../../include/nav.php:99 ../../include/nav.php:140 ../../boot.php:1705
-msgid "Logout"
-msgstr ""
-
-#: ../../include/nav.php:99 ../../include/nav.php:140
-msgid "End this session"
-msgstr ""
-
-#: ../../include/nav.php:103
-msgid "Your profile page"
-msgstr ""
-
-#: ../../include/nav.php:105
-msgid "Manage/Edit profiles"
-msgstr ""
-
-#: ../../include/nav.php:107
-msgid "Edit your profile"
-msgstr ""
-
-#: ../../include/nav.php:130
-msgid "Sign in"
-msgstr ""
-
-#: ../../include/nav.php:155
-msgid "Get me home"
-msgstr ""
-
-#: ../../include/nav.php:157
-msgid "Log me out of this site"
-msgstr ""
-
-#: ../../include/nav.php:162
-msgid "Create an account"
-msgstr ""
-
-#: ../../include/nav.php:174
-msgid "Help and documentation"
-msgstr ""
-
-#: ../../include/nav.php:178
-msgid "Applications, utilities, links, games"
-msgstr ""
-
-#: ../../include/nav.php:180
-msgid "Search site @name, #tag, ?docs, content"
-msgstr ""
-
-#: ../../include/nav.php:182
-msgid "Channel Directory"
-msgstr ""
-
-#: ../../include/nav.php:194
-msgid "Your grid"
-msgstr ""
-
-#: ../../include/nav.php:195
-msgid "View your network/grid"
-msgstr ""
-
-#: ../../include/nav.php:196
-msgid "Mark all grid notifications seen"
-msgstr ""
-
-#: ../../include/nav.php:198
-msgid "Channel home"
-msgstr ""
-
-#: ../../include/nav.php:199
-msgid "View your channel home"
-msgstr ""
-
-#: ../../include/nav.php:200
-msgid "Mark all channel notifications seen"
-msgstr ""
-
-#: ../../include/nav.php:206
-msgid "Notices"
-msgstr ""
-
-#: ../../include/nav.php:206
-msgid "Notifications"
-msgstr ""
-
-#: ../../include/nav.php:207
-msgid "View all notifications"
-msgstr ""
-
-#: ../../include/nav.php:210
-msgid "Private mail"
+#: ../../include/security.php:117
+msgid "guest:"
msgstr ""
-#: ../../include/nav.php:211
-msgid "View your private messages"
+#: ../../include/security.php:532
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
msgstr ""
-#: ../../include/nav.php:212
-msgid "Mark all private messages seen"
+#: ../../include/items.php:808 ../../include/items.php:855
+msgid "(Unknown)"
msgstr ""
-#: ../../include/nav.php:218
-msgid "Event Calendar"
+#: ../../include/items.php:1046
+msgid "Visible to anybody on the internet."
msgstr ""
-#: ../../include/nav.php:219
-msgid "View events"
+#: ../../include/items.php:1048
+msgid "Visible to you only."
msgstr ""
-#: ../../include/nav.php:220
-msgid "Mark all events seen"
+#: ../../include/items.php:1050
+msgid "Visible to anybody in this network."
msgstr ""
-#: ../../include/nav.php:223
-msgid "Manage Your Channels"
+#: ../../include/items.php:1052
+msgid "Visible to anybody authenticated."
msgstr ""
-#: ../../include/nav.php:225
-msgid "Account/Channel Settings"
+#: ../../include/items.php:1054
+#, php-format
+msgid "Visible to anybody on %s."
msgstr ""
-#: ../../include/nav.php:233
-msgid "Site Setup and Configuration"
+#: ../../include/items.php:1056
+msgid "Visible to all connections."
msgstr ""
-#: ../../include/nav.php:297
-msgid "@name, #tag, ?doc, content"
+#: ../../include/items.php:1058
+msgid "Visible to approved connections."
msgstr ""
-#: ../../include/nav.php:298
-msgid "Please wait..."
+#: ../../include/items.php:1060
+msgid "Visible to specific connections."
msgstr ""
-#: ../../include/nav.php:300
-msgid "Add Apps"
+#: ../../include/items.php:3828
+msgid "Privacy group is empty."
msgstr ""
-#: ../../include/photos.php:115
+#: ../../include/items.php:3835
#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr ""
-
-#: ../../include/photos.php:122
-msgid "Image file is empty."
+msgid "Privacy group: %s"
msgstr ""
-#: ../../include/photos.php:260
-msgid "Photo storage failed."
+#: ../../include/items.php:3847
+msgid "Connection not found."
msgstr ""
-#: ../../include/photos.php:300
-msgid "a new photo"
+#: ../../include/items.php:4196
+msgid "profile photo"
msgstr ""
-#: ../../include/photos.php:304
+#: ../../include/items.php:4392
#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr ""
-
-#: ../../include/photos.php:519
-msgid "Upload New Photos"
-msgstr ""
-
-#: ../../include/security.php:117
-msgid "guest:"
-msgstr ""
-
-#: ../../include/security.php:532
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr ""
-
-#: ../../include/import.php:30
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr ""
-
-#: ../../include/import.php:90
-msgid "Channel clone failed. Import failed."
+msgid "[Edited %s]"
msgstr ""
-#: ../../include/import.php:100
-msgid "Cloned channel not found. Import failed."
+#: ../../include/items.php:4392
+msgctxt "edit_activity"
+msgid "Post"
msgstr ""
-#: ../../include/import.php:1373
-msgid "Unable to import element \""
+#: ../../include/items.php:4392
+msgctxt "edit_activity"
+msgid "Comment"
msgstr ""
#: ../../include/acl_selectors.php:208
@@ -13128,6 +12736,68 @@ msgstr ""
msgid "%1$s has an updated %2$s, changing %3$s."
msgstr ""
+#: ../../include/attach.php:250 ../../include/attach.php:338
+msgid "Item was not found."
+msgstr ""
+
+#: ../../include/attach.php:499
+msgid "No source file."
+msgstr ""
+
+#: ../../include/attach.php:521
+msgid "Cannot locate file to replace"
+msgstr ""
+
+#: ../../include/attach.php:539
+msgid "Cannot locate file to revise/update"
+msgstr ""
+
+#: ../../include/attach.php:670
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr ""
+
+#: ../../include/attach.php:684
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr ""
+
+#: ../../include/attach.php:854
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr ""
+
+#: ../../include/attach.php:867
+msgid "Stored file could not be verified. Upload failed."
+msgstr ""
+
+#: ../../include/attach.php:922 ../../include/attach.php:938
+msgid "Path not available."
+msgstr ""
+
+#: ../../include/attach.php:984 ../../include/attach.php:1142
+msgid "Empty pathname"
+msgstr ""
+
+#: ../../include/attach.php:1010
+msgid "duplicate filename or path"
+msgstr ""
+
+#: ../../include/attach.php:1032
+msgid "Path not found."
+msgstr ""
+
+#: ../../include/attach.php:1096
+msgid "mkdir failed."
+msgstr ""
+
+#: ../../include/attach.php:1100
+msgid "database storage failed."
+msgstr ""
+
+#: ../../include/attach.php:1148
+msgid "Empty path"
+msgstr ""
+
#: ../../include/permissions.php:35
msgid "Can view my normal stream and posts"
msgstr ""
@@ -13525,49 +13195,6 @@ msgstr ""
msgid "Embedding disabled"
msgstr ""
-#: ../../include/bbcode.php:134 ../../include/bbcode.php:1040
-#: ../../include/bbcode.php:1043 ../../include/bbcode.php:1048
-#: ../../include/bbcode.php:1051 ../../include/bbcode.php:1054
-#: ../../include/bbcode.php:1057 ../../include/bbcode.php:1062
-#: ../../include/bbcode.php:1065 ../../include/bbcode.php:1070
-#: ../../include/bbcode.php:1073 ../../include/bbcode.php:1076
-#: ../../include/bbcode.php:1079
-msgid "Image/photo"
-msgstr ""
-
-#: ../../include/bbcode.php:173 ../../include/bbcode.php:1090
-msgid "Encrypted content"
-msgstr ""
-
-#: ../../include/bbcode.php:189
-#, php-format
-msgid "Install %s element: "
-msgstr ""
-
-#: ../../include/bbcode.php:193
-#, php-format
-msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr ""
-
-#: ../../include/bbcode.php:272
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr ""
-
-#: ../../include/bbcode.php:349 ../../include/bbcode.php:357
-msgid "Click to open/close"
-msgstr ""
-
-#: ../../include/bbcode.php:357
-msgid "spoiler"
-msgstr ""
-
-#: ../../include/bbcode.php:1028
-msgid "$1 wrote:"
-msgstr ""
-
#: ../../util/nconfig.php:34
msgid "Source channel not found."
msgstr ""
@@ -13704,54 +13331,54 @@ msgstr ""
msgid "Set size of followup author photos"
msgstr ""
-#: ../../boot.php:1479
+#: ../../boot.php:1463
#, php-format
msgid "Update %s failed. See error logs."
msgstr ""
-#: ../../boot.php:1482
+#: ../../boot.php:1466
#, php-format
msgid "Update Error at %s"
msgstr ""
-#: ../../boot.php:1686
+#: ../../boot.php:1670
msgid "Create an account to access services and applications"
msgstr ""
-#: ../../boot.php:1708
+#: ../../boot.php:1692
msgid "Login/Email"
msgstr ""
-#: ../../boot.php:1709
+#: ../../boot.php:1693
msgid "Password"
msgstr ""
-#: ../../boot.php:1710
+#: ../../boot.php:1694
msgid "Remember me"
msgstr ""
-#: ../../boot.php:1713
+#: ../../boot.php:1697
msgid "Forgot your password?"
msgstr ""
-#: ../../boot.php:2277
+#: ../../boot.php:2237
msgid "toggle mobile"
msgstr ""
-#: ../../boot.php:2432
+#: ../../boot.php:2392
msgid "Website SSL certificate is not valid. Please correct."
msgstr ""
-#: ../../boot.php:2435
+#: ../../boot.php:2395
#, php-format
-msgid "[hubzilla] Website SSL error for %s"
+msgid "[$Projectname] Website SSL error for %s"
msgstr ""
-#: ../../boot.php:2554
+#: ../../boot.php:2514
msgid "Cron/Scheduled tasks not running."
msgstr ""
-#: ../../boot.php:2558
+#: ../../boot.php:2518
#, php-format
-msgid "[hubzilla] Cron tasks not running on %s"
+msgid "[$Projectname] Cron tasks not running on %s"
msgstr ""
diff --git a/util/typo.php b/util/typo.php
index f9c9e5353..a8d363340 100644
--- a/util/typo.php
+++ b/util/typo.php
@@ -28,17 +28,18 @@
include_once($file);
}
- echo "Directory: include/RedDAV\n";
- $files = glob('include/RedDAV/*.php');
+ echo "Directory: include/photo\n";
+ $files = glob('include/photo/*.php');
foreach($files as $file) {
echo $file . "\n";
include_once($file);
}
+
echo "Directory: Zotlabs\n";
$files = glob('Zotlabs/*/*.php');
foreach($files as $file) {
- if(strpos($file,'SiteModule') === false) {
+ if((strpos($file,'SiteModule') === false) || (strpos($file,'SiteWidget') === false)) {
echo $file . "\n";
include_once($file);
}
@@ -51,21 +52,6 @@
include_once($file);
}
-
- echo "Directory: include/photo\n";
- $files = glob('include/photo/*.php');
- foreach($files as $file) {
- echo $file . "\n";
- include_once($file);
- }
-
-// echo "Directory: mod\n";
-// $files = glob('mod/*.php');
-// foreach($files as $file) {
-// echo $file . "\n";
-// include_once($file);
-// }
-
echo "Directory: addon\n";
$dirs = glob('addon/*');
@@ -93,6 +79,5 @@
foreach($files as $file) {
echo $file . "\n";
- passthru($phpath . ' util/typohelper.php ' . $file);
-// include_once($file);
+ passthru($phpath . ' util/typohelper.php ' . $file);
}
diff --git a/vendor/autoload.php b/vendor/autoload.php
index 8b4926c3d..063a1b7e1 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -2,6 +2,6 @@
// autoload.php @generated by Composer
-require_once __DIR__ . '/composer/autoload_real.php';
+require_once __DIR__ . '/composer' . '/autoload_real.php';
return ComposerAutoloaderInit7b34d7e50a62201ec5d5e526a5b8b35d::getLoader();
diff --git a/library/oauth2/CHANGELOG.md b/vendor/bshaffer/oauth2-server-php/CHANGELOG.md
index 03d925e06..4fddd72c9 100644
--- a/library/oauth2/CHANGELOG.md
+++ b/vendor/bshaffer/oauth2-server-php/CHANGELOG.md
@@ -8,6 +8,23 @@ To see the files changed for a given bug, go to https://github.com/bshaffer/oaut
To get the diff between two versions, go to https://github.com/bshaffer/oauth2-server-php/compare/v1.0...v1.1
To get the diff for a specific change, go to https://github.com/bshaffer/oauth2-server-php/commit/XXX where XXX is the change hash
+* 1.9.0 (2016-01-06)
+
+ PR: https://github.com/bshaffer/oauth2-server-php/pull/788
+
+ * bug #645 - Allow null for client_secret
+ * bug #651 - Fix bug in isPublicClient of Cassandra Storage
+ * bug #670 - Bug in client's scope restriction
+ * bug #672 - Implemented method to override the password hashing algorithm
+ * bug #698 - Fix Token Response's Content-Type to application/json
+ * bug #729 - Ensures unsetAccessToken and unsetRefreshToken return a bool
+ * bug #749 - Fix UserClaims for CodeIdToken
+ * bug #784 - RFC6750 compatibility
+ * bug #776 - Fix "redirect_uri_mismatch" for URIs with encoded characters
+ * bug #759 - no access token supplied to resource controller results in empty request body
+ * bug #773 - Use OpenSSL random method before attempting Mcrypt's.
+ * bug #790 - Add mongo db
+
* 1.8.0 (2015-09-18)
PR: https://github.com/bshaffer/oauth2-server-php/pull/643
@@ -93,6 +110,19 @@ To get the diff for a specific change, go to https://github.com/bshaffer/oauth2-
* bug #333 fixes Pdo storage for getClientKey
* bug #336 fixes Redis storage for expireAuthorizationCode
+* 1.3 (2014-02-27)
+
+ PR: https://github.com/bshaffer/oauth2-server-php/pull/325
+
+ * bug #311 adds cassandra storage
+ * bug #298 fixes response code for user credentials grant type
+ * bug #318 adds 'use_crypto_tokens' config to Server class for better DX
+ * bug #320 pass client_id to getDefaultScope
+ * bug #324 better feedback when running tests
+ * bug #335 adds support for non-expiring refresh tokens
+ * bug #333 fixes Pdo storage for getClientKey
+ * bug #336 fixes Redis storage for expireAuthorizationCode
+
* 1.2 (2014-01-03)
PR: https://github.com/bshaffer/oauth2-server-php/pull/288
diff --git a/library/oauth2/LICENSE b/vendor/bshaffer/oauth2-server-php/LICENSE
index d7ece8467..d7ece8467 100644
--- a/library/oauth2/LICENSE
+++ b/vendor/bshaffer/oauth2-server-php/LICENSE
diff --git a/library/oauth2/README.md b/vendor/bshaffer/oauth2-server-php/README.md
index 4ceda6cf9..4ceda6cf9 100644
--- a/library/oauth2/README.md
+++ b/vendor/bshaffer/oauth2-server-php/README.md
diff --git a/vendor/bshaffer/oauth2-server-php/composer.json b/vendor/bshaffer/oauth2-server-php/composer.json
new file mode 100644
index 000000000..561699f5e
--- /dev/null
+++ b/vendor/bshaffer/oauth2-server-php/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "bshaffer/oauth2-server-php",
+ "description":"OAuth2 Server for PHP",
+ "keywords":["oauth","oauth2","auth"],
+ "type":"library",
+ "license":"MIT",
+ "authors":[
+ {
+ "name":"Brent Shaffer",
+ "email": "bshafs@gmail.com",
+ "homepage":"http://brentertainment.com"
+ }
+ ],
+ "homepage": "http://github.com/bshaffer/oauth2-server-php",
+ "autoload": {
+ "psr-0": { "OAuth2": "src/" }
+ },
+ "require":{
+ "php":">=5.3.9"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "~2.8",
+ "firebase/php-jwt": "~2.2",
+ "predis/predis": "dev-master",
+ "thobbs/phpcassa": "dev-master",
+ "mongodb/mongodb": "^1.1"
+ },
+ "suggest": {
+ "predis/predis": "Required to use Redis storage",
+ "thobbs/phpcassa": "Required to use Cassandra storage",
+ "aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
+ "firebase/php-jwt": "~1.1 is required to use MondoDB storage"
+ }
+}
diff --git a/library/oauth2/src/OAuth2/Autoloader.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php
index ecfb6ba75..ecfb6ba75 100644
--- a/library/oauth2/src/OAuth2/Autoloader.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php
diff --git a/library/oauth2/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php
index 29c7171b5..29c7171b5 100644
--- a/library/oauth2/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php
diff --git a/library/oauth2/src/OAuth2/ClientAssertionType/HttpBasic.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php
index 0ecb7e18d..0ecb7e18d 100644
--- a/library/oauth2/src/OAuth2/ClientAssertionType/HttpBasic.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php
diff --git a/library/oauth2/src/OAuth2/Controller/AuthorizeController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php
index a9a722587..ea7f54a87 100644
--- a/library/oauth2/src/OAuth2/Controller/AuthorizeController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php
@@ -126,6 +126,11 @@ class AuthorizeController implements AuthorizeControllerInterface
return $params;
}
+ /**
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool
+ */
public function validateAuthorizeRequest(RequestInterface $request, ResponseInterface $response)
{
// Make sure a valid client id was supplied (we can not redirect because we were unable to verify the URI)
@@ -333,7 +338,7 @@ class AuthorizeController implements AuthorizeControllerInterface
return false; // if either one is missing, assume INVALID
}
- $registered_uris = explode(' ', $registeredUriString);
+ $registered_uris = preg_split('/\s+/', $registeredUriString);
foreach ($registered_uris as $registered_uri) {
if ($this->config['require_exact_redirect_uri']) {
// the input uri is validated against the registered uri using exact match
diff --git a/library/oauth2/src/OAuth2/Controller/AuthorizeControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php
index fa07ae8d2..fa07ae8d2 100644
--- a/library/oauth2/src/OAuth2/Controller/AuthorizeControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php
diff --git a/library/oauth2/src/OAuth2/Controller/ResourceController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php
index e8588188f..3cfaaaf12 100644
--- a/library/oauth2/src/OAuth2/Controller/ResourceController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php
@@ -83,7 +83,7 @@ class ResourceController implements ResourceControllerInterface
} elseif (!isset($token["expires"]) || !isset($token["client_id"])) {
$response->setError(401, 'malformed_token', 'Malformed token (missing "expires")');
} elseif (time() > $token["expires"]) {
- $response->setError(401, 'expired_token', 'The access token provided has expired');
+ $response->setError(401, 'invalid_token', 'The access token provided has expired');
} else {
return $token;
}
diff --git a/library/oauth2/src/OAuth2/Controller/ResourceControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php
index 611421935..611421935 100644
--- a/library/oauth2/src/OAuth2/Controller/ResourceControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php
diff --git a/library/oauth2/src/OAuth2/Controller/TokenController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php
index 42dab892f..5d2d731fe 100644
--- a/library/oauth2/src/OAuth2/Controller/TokenController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php
@@ -12,14 +12,33 @@ use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
/**
- * @see OAuth2\Controller\TokenControllerInterface
+ * @see \OAuth2\Controller\TokenControllerInterface
*/
class TokenController implements TokenControllerInterface
{
+ /**
+ * @var AccessTokenInterface
+ */
protected $accessToken;
+
+ /**
+ * @var array
+ */
protected $grantTypes;
+
+ /**
+ * @var ClientAssertionTypeInterface
+ */
protected $clientAssertionType;
+
+ /**
+ * @var Scope|ScopeInterface
+ */
protected $scopeUtil;
+
+ /**
+ * @var ClientInterface
+ */
protected $clientStorage;
public function __construct(AccessTokenInterface $accessToken, ClientInterface $clientStorage, array $grantTypes = array(), ClientAssertionTypeInterface $clientAssertionType = null, ScopeInterface $scopeUtil = null)
@@ -64,11 +83,11 @@ class TokenController implements TokenControllerInterface
* This would be called from the "/token" endpoint as defined in the spec.
* You can call your endpoint whatever you want.
*
- * @param $request - RequestInterface
- * Request object to grant access token
+ * @param RequestInterface $request Request object to grant access token
+ * @param ResponseInterface $response
*
- * @throws InvalidArgumentException
- * @throws LogicException
+ * @throws \InvalidArgumentException
+ * @throws \LogicException
*
* @see http://tools.ietf.org/html/rfc6749#section-4
* @see http://tools.ietf.org/html/rfc6749#section-10.6
@@ -208,10 +227,8 @@ class TokenController implements TokenControllerInterface
/**
* addGrantType
*
- * @param grantType - OAuth2\GrantTypeInterface
- * the grant type to add for the specified identifier
- * @param identifier - string
- * a string passed in as "grant_type" in the response that will call this grantType
+ * @param GrantTypeInterface $grantType the grant type to add for the specified identifier
+ * @param string $identifier a string passed in as "grant_type" in the response that will call this grantType
*/
public function addGrantType(GrantTypeInterface $grantType, $identifier = null)
{
diff --git a/library/oauth2/src/OAuth2/Controller/TokenControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php
index 72d72570f..72d72570f 100644
--- a/library/oauth2/src/OAuth2/Controller/TokenControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php
diff --git a/library/oauth2/src/OAuth2/Encryption/EncryptionInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php
index 2d336c664..2d336c664 100644
--- a/library/oauth2/src/OAuth2/Encryption/EncryptionInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php
diff --git a/library/oauth2/src/OAuth2/Encryption/FirebaseJwt.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/FirebaseJwt.php
index 1b527e0a0..1b527e0a0 100644
--- a/library/oauth2/src/OAuth2/Encryption/FirebaseJwt.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/FirebaseJwt.php
diff --git a/library/oauth2/src/OAuth2/Encryption/Jwt.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php
index ee576e643..ee576e643 100644
--- a/library/oauth2/src/OAuth2/Encryption/Jwt.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php
diff --git a/library/oauth2/src/OAuth2/GrantType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php
index e8995204c..cae9f787d 100644
--- a/library/oauth2/src/OAuth2/GrantType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php
@@ -17,7 +17,7 @@ class AuthorizationCode implements GrantTypeInterface
protected $authCode;
/**
- * @param OAuth2\Storage\AuthorizationCodeInterface $storage REQUIRED Storage class for retrieving authorization code information
+ * @param \OAuth2\Storage\AuthorizationCodeInterface $storage REQUIRED Storage class for retrieving authorization code information
*/
public function __construct(AuthorizationCodeInterface $storage)
{
@@ -49,7 +49,7 @@ class AuthorizationCode implements GrantTypeInterface
* @uri - http://tools.ietf.org/html/rfc6749#section-4.1.3
*/
if (isset($authCode['redirect_uri']) && $authCode['redirect_uri']) {
- if (!$request->request('redirect_uri') || urldecode($request->request('redirect_uri')) != $authCode['redirect_uri']) {
+ if (!$request->request('redirect_uri') || urldecode($request->request('redirect_uri')) != urldecode($authCode['redirect_uri'])) {
$response->setError(400, 'redirect_uri_mismatch', "The redirect URI is missing or do not match", "#section-4.1.3");
return false;
diff --git a/library/oauth2/src/OAuth2/GrantType/ClientCredentials.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php
index f953e4e8d..f953e4e8d 100644
--- a/library/oauth2/src/OAuth2/GrantType/ClientCredentials.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php
diff --git a/library/oauth2/src/OAuth2/GrantType/GrantTypeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php
index 98489e9c1..98489e9c1 100644
--- a/library/oauth2/src/OAuth2/GrantType/GrantTypeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php
diff --git a/library/oauth2/src/OAuth2/GrantType/JwtBearer.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php
index bb11a6954..bb11a6954 100644
--- a/library/oauth2/src/OAuth2/GrantType/JwtBearer.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php
diff --git a/library/oauth2/src/OAuth2/GrantType/RefreshToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php
index e55385222..e55385222 100644
--- a/library/oauth2/src/OAuth2/GrantType/RefreshToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php
diff --git a/library/oauth2/src/OAuth2/GrantType/UserCredentials.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php
index f165538ba..f165538ba 100644
--- a/library/oauth2/src/OAuth2/GrantType/UserCredentials.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php
diff --git a/library/oauth2/src/OAuth2/OpenID/Controller/AuthorizeController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php
index c9b5c6af7..c9b5c6af7 100644
--- a/library/oauth2/src/OAuth2/OpenID/Controller/AuthorizeController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php
diff --git a/library/oauth2/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php
index 1e231d844..1e231d844 100644
--- a/library/oauth2/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php
diff --git a/library/oauth2/src/OAuth2/OpenID/Controller/UserInfoController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php
index 30cb942d0..30cb942d0 100644
--- a/library/oauth2/src/OAuth2/OpenID/Controller/UserInfoController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php
diff --git a/library/oauth2/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php
index a89049d49..a89049d49 100644
--- a/library/oauth2/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php
diff --git a/library/oauth2/src/OAuth2/OpenID/GrantType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php
index 8ed1edc26..8ed1edc26 100644
--- a/library/oauth2/src/OAuth2/OpenID/GrantType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php
diff --git a/library/oauth2/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php
index 8971954c5..8971954c5 100644
--- a/library/oauth2/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php
diff --git a/library/oauth2/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php
index ea4779255..ea4779255 100644
--- a/library/oauth2/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php
diff --git a/library/oauth2/src/OAuth2/OpenID/ResponseType/CodeIdToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php
index ac7764d6c..ac7764d6c 100644
--- a/library/oauth2/src/OAuth2/OpenID/ResponseType/CodeIdToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php
diff --git a/library/oauth2/src/OAuth2/OpenID/ResponseType/CodeIdTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdTokenInterface.php
index 629adcca8..629adcca8 100644
--- a/library/oauth2/src/OAuth2/OpenID/ResponseType/CodeIdTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdTokenInterface.php
diff --git a/library/oauth2/src/OAuth2/OpenID/ResponseType/IdToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php
index 97777fbf2..97777fbf2 100644
--- a/library/oauth2/src/OAuth2/OpenID/ResponseType/IdToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php
diff --git a/library/oauth2/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php
index 0bd2f8391..0bd2f8391 100644
--- a/library/oauth2/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php
diff --git a/library/oauth2/src/OAuth2/OpenID/ResponseType/IdTokenToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php
index f0c59799b..f0c59799b 100644
--- a/library/oauth2/src/OAuth2/OpenID/ResponseType/IdTokenToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php
diff --git a/library/oauth2/src/OAuth2/OpenID/ResponseType/IdTokenTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenTokenInterface.php
index ac13e2032..ac13e2032 100644
--- a/library/oauth2/src/OAuth2/OpenID/ResponseType/IdTokenTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenTokenInterface.php
diff --git a/library/oauth2/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php
index 51dd867ec..51dd867ec 100644
--- a/library/oauth2/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php
diff --git a/library/oauth2/src/OAuth2/OpenID/Storage/UserClaimsInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php
index f230bef9e..f230bef9e 100644
--- a/library/oauth2/src/OAuth2/OpenID/Storage/UserClaimsInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php
diff --git a/library/oauth2/src/OAuth2/Request.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php
index c92cee821..c92cee821 100644
--- a/library/oauth2/src/OAuth2/Request.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php
diff --git a/library/oauth2/src/OAuth2/RequestInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php
index 8a70d5fad..8a70d5fad 100644
--- a/library/oauth2/src/OAuth2/RequestInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php
diff --git a/library/oauth2/src/OAuth2/Response.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php
index d8eabe79e..fc1e62a98 100644
--- a/library/oauth2/src/OAuth2/Response.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php
@@ -176,7 +176,7 @@ class Response implements ResponseInterface
{
switch ($format) {
case 'json':
- return json_encode($this->parameters);
+ return $this->parameters ? json_encode($this->parameters) : '';
case 'xml':
// this only works for single-level arrays
$xml = new \SimpleXMLElement('<response/>');
diff --git a/library/oauth2/src/OAuth2/ResponseInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php
index c99b5f7d1..c99b5f7d1 100644
--- a/library/oauth2/src/OAuth2/ResponseInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php
diff --git a/library/oauth2/src/OAuth2/ResponseType/AccessToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php
index b235ad0c5..98f51218f 100644
--- a/library/oauth2/src/OAuth2/ResponseType/AccessToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php
@@ -114,14 +114,14 @@ class AccessToken implements AccessTokenInterface
*/
protected function generateAccessToken()
{
- if (function_exists('mcrypt_create_iv')) {
- $randomData = mcrypt_create_iv(20, MCRYPT_DEV_URANDOM);
+ if (function_exists('openssl_random_pseudo_bytes')) {
+ $randomData = openssl_random_pseudo_bytes(20);
if ($randomData !== false && strlen($randomData) === 20) {
return bin2hex($randomData);
}
}
- if (function_exists('openssl_random_pseudo_bytes')) {
- $randomData = openssl_random_pseudo_bytes(20);
+ if (function_exists('mcrypt_create_iv')) {
+ $randomData = mcrypt_create_iv(20, MCRYPT_DEV_URANDOM);
if ($randomData !== false && strlen($randomData) === 20) {
return bin2hex($randomData);
}
diff --git a/library/oauth2/src/OAuth2/ResponseType/AccessTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php
index 4bd3928d8..4bd3928d8 100644
--- a/library/oauth2/src/OAuth2/ResponseType/AccessTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php
diff --git a/library/oauth2/src/OAuth2/ResponseType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php
index 6a305fd75..52aeb4be5 100644
--- a/library/oauth2/src/OAuth2/ResponseType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php
@@ -85,10 +85,10 @@ class AuthorizationCode implements AuthorizationCodeInterface
protected function generateAuthorizationCode()
{
$tokenLen = 40;
- if (function_exists('mcrypt_create_iv')) {
- $randomData = mcrypt_create_iv(100, MCRYPT_DEV_URANDOM);
- } elseif (function_exists('openssl_random_pseudo_bytes')) {
+ if (function_exists('openssl_random_pseudo_bytes')) {
$randomData = openssl_random_pseudo_bytes(100);
+ } elseif (function_exists('mcrypt_create_iv')) {
+ $randomData = mcrypt_create_iv(100, MCRYPT_DEV_URANDOM);
} elseif (@file_exists('/dev/urandom')) { // Get 100 bytes of random data
$randomData = file_get_contents('/dev/urandom', false, null, 0, 100) . uniqid(mt_rand(), true);
} else {
diff --git a/library/oauth2/src/OAuth2/ResponseType/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php
index df777e221..df777e221 100644
--- a/library/oauth2/src/OAuth2/ResponseType/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php
diff --git a/library/oauth2/src/OAuth2/ResponseType/JwtAccessToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php
index 3942fe41e..3942fe41e 100644
--- a/library/oauth2/src/OAuth2/ResponseType/JwtAccessToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php
diff --git a/library/oauth2/src/OAuth2/ResponseType/ResponseTypeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php
index f8e26a5b0..f8e26a5b0 100644
--- a/library/oauth2/src/OAuth2/ResponseType/ResponseTypeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php
diff --git a/library/oauth2/src/OAuth2/Scope.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php
index c44350bfd..c44350bfd 100644
--- a/library/oauth2/src/OAuth2/Scope.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php
diff --git a/library/oauth2/src/OAuth2/ScopeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php
index 5b60f9aee..5b60f9aee 100644
--- a/library/oauth2/src/OAuth2/ScopeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php
diff --git a/library/oauth2/src/OAuth2/Server.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php
index 171a4f069..9cfcb83a5 100644
--- a/library/oauth2/src/OAuth2/Server.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php
@@ -47,20 +47,50 @@ class Server implements ResourceControllerInterface,
UserInfoControllerInterface
{
// misc properties
+ /**
+ * @var Response
+ */
protected $response;
+
+ /**
+ * @var array
+ */
protected $config;
+
+ /**
+ * @var array
+ */
protected $storages;
// servers
+ /**
+ * @var AuthorizeControllerInterface
+ */
protected $authorizeController;
+
+ /**
+ * @var TokenControllerInterface
+ */
protected $tokenController;
+
+ /**
+ * @var ResourceControllerInterface
+ */
protected $resourceController;
+
+ /**
+ * @var UserInfoControllerInterface
+ */
protected $userInfoController;
// config classes
protected $grantTypes;
protected $responseTypes;
protected $tokenType;
+
+ /**
+ * @var ScopeInterface
+ */
protected $scopeUtil;
protected $clientAssertionType;
@@ -92,9 +122,9 @@ class Server implements ResourceControllerInterface,
* @param array $grantTypes An array of OAuth2\GrantType\GrantTypeInterface to use for granting access tokens
* @param array $responseTypes Response types to use. array keys should be "code" and and "token" for
* Access Token and Authorization Code response types
- * @param OAuth2\TokenType\TokenTypeInterface $tokenType The token type object to use. Valid token types are "bearer" and "mac"
- * @param OAuth2\ScopeInterface $scopeUtil The scope utility class to use to validate scope
- * @param OAuth2\ClientAssertionType\ClientAssertionTypeInterface $clientAssertionType The method in which to verify the client identity. Default is HttpBasic
+ * @param \OAuth2\TokenType\TokenTypeInterface $tokenType The token type object to use. Valid token types are "bearer" and "mac"
+ * @param \OAuth2\ScopeInterface $scopeUtil The scope utility class to use to validate scope
+ * @param \OAuth2\ClientAssertionType\ClientAssertionTypeInterface $clientAssertionType The method in which to verify the client identity. Default is HttpBasic
*
* @ingroup oauth2_section_7
*/
@@ -180,6 +210,8 @@ class Server implements ResourceControllerInterface,
/**
* every getter deserves a setter
+ *
+ * @param AuthorizeControllerInterface $authorizeController
*/
public function setAuthorizeController(AuthorizeControllerInterface $authorizeController)
{
@@ -188,6 +220,8 @@ class Server implements ResourceControllerInterface,
/**
* every getter deserves a setter
+ *
+ * @param TokenControllerInterface $tokenController
*/
public function setTokenController(TokenControllerInterface $tokenController)
{
@@ -196,6 +230,8 @@ class Server implements ResourceControllerInterface,
/**
* every getter deserves a setter
+ *
+ * @param ResourceControllerInterface $resourceController
*/
public function setResourceController(ResourceControllerInterface $resourceController)
{
@@ -204,6 +240,8 @@ class Server implements ResourceControllerInterface,
/**
* every getter deserves a setter
+ *
+ * @param UserInfoControllerInterface $userInfoController
*/
public function setUserInfoController(UserInfoControllerInterface $userInfoController)
{
@@ -214,14 +252,16 @@ class Server implements ResourceControllerInterface,
* Return claims about the authenticated end-user.
* This would be called from the "/UserInfo" endpoint as defined in the spec.
*
- * @param $request - OAuth2\RequestInterface
+ * @param $request - \OAuth2\RequestInterface
* Request object to grant access token
*
- * @param $response - OAuth2\ResponseInterface
+ * @param $response - \OAuth2\ResponseInterface
* Response object containing error messages (failure) or user claims (success)
*
- * @throws InvalidArgumentException
- * @throws LogicException
+ * @return ResponseInterface
+ *
+ * @throws \InvalidArgumentException
+ * @throws \LogicException
*
* @see http://openid.net/specs/openid-connect-core-1_0.html#UserInfo
*/
@@ -238,14 +278,16 @@ class Server implements ResourceControllerInterface,
* This would be called from the "/token" endpoint as defined in the spec.
* Obviously, you can call your endpoint whatever you want.
*
- * @param $request - OAuth2\RequestInterface
+ * @param $request - \OAuth2\RequestInterface
* Request object to grant access token
*
- * @param $response - OAuth2\ResponseInterface
+ * @param $response - \OAuth2\ResponseInterface
* Response object containing error messages (failure) or access token (success)
*
- * @throws InvalidArgumentException
- * @throws LogicException
+ * @return ResponseInterface
+ *
+ * @throws \InvalidArgumentException
+ * @throws \LogicException
*
* @see http://tools.ietf.org/html/rfc6749#section-4
* @see http://tools.ietf.org/html/rfc6749#section-10.6
@@ -306,11 +348,14 @@ class Server implements ResourceControllerInterface,
* list of space-delimited strings.
* - state: (optional) An opaque value used by the client to maintain
* state between the request and callback.
+ * @param ResponseInterface $response
* @param $is_authorized
* TRUE or FALSE depending on whether the user authorized the access.
* @param $user_id
* Identifier of user who authorized the client
*
+ * @return Response
+ *
* @see http://tools.ietf.org/html/rfc6749#section-4
*
* @ingroup oauth2_section_4
@@ -464,6 +509,8 @@ class Server implements ResourceControllerInterface,
/**
* every getter deserves a setter
+ *
+ * @param ScopeInterface $scopeUtil
*/
public function setScopeUtil($scopeUtil)
{
@@ -473,7 +520,7 @@ class Server implements ResourceControllerInterface,
protected function createDefaultAuthorizeController()
{
if (!isset($this->storages['client'])) {
- throw new \LogicException("You must supply a storage object implementing OAuth2\Storage\ClientInterface to use the authorize server");
+ throw new \LogicException('You must supply a storage object implementing \OAuth2\Storage\ClientInterface to use the authorize server');
}
if (0 == count($this->responseTypes)) {
$this->responseTypes = $this->getDefaultResponseTypes();
@@ -505,7 +552,7 @@ class Server implements ResourceControllerInterface,
foreach ($this->grantTypes as $grantType) {
if (!$grantType instanceof ClientAssertionTypeInterface) {
if (!isset($this->storages['client_credentials'])) {
- throw new \LogicException("You must supply a storage object implementing OAuth2\Storage\ClientCredentialsInterface to use the token server");
+ throw new \LogicException('You must supply a storage object implementing OAuth2\Storage\ClientCredentialsInterface to use the token server');
}
$config = array_intersect_key($this->config, array_flip(explode(' ', 'allow_credentials_in_request_body allow_public_clients')));
$this->clientAssertionType = new HttpBasic($this->storages['client_credentials'], $config);
@@ -515,7 +562,7 @@ class Server implements ResourceControllerInterface,
}
if (!isset($this->storages['client'])) {
- throw new \LogicException("You must supply a storage object implementing OAuth2\Storage\ClientInterface to use the token server");
+ throw new \LogicException('You must supply a storage object implementing OAuth2\Storage\ClientInterface to use the token server');
}
$accessTokenResponseType = $this->getAccessTokenResponseType();
@@ -531,7 +578,7 @@ class Server implements ResourceControllerInterface,
$this->storages['access_token'] = $this->createDefaultJwtAccessTokenStorage();
}
} elseif (!isset($this->storages['access_token'])) {
- throw new \LogicException("You must supply a storage object implementing OAuth2\Storage\AccessTokenInterface or use JwtAccessTokens to use the resource server");
+ throw new \LogicException('You must supply a storage object implementing OAuth2\Storage\AccessTokenInterface or use JwtAccessTokens to use the resource server');
}
if (!$this->tokenType) {
@@ -551,11 +598,11 @@ class Server implements ResourceControllerInterface,
$this->storages['access_token'] = $this->createDefaultJwtAccessTokenStorage();
}
} elseif (!isset($this->storages['access_token'])) {
- throw new \LogicException("You must supply a storage object implementing OAuth2\Storage\AccessTokenInterface or use JwtAccessTokens to use the UserInfo server");
+ throw new \LogicException('You must supply a storage object implementing OAuth2\Storage\AccessTokenInterface or use JwtAccessTokens to use the UserInfo server');
}
if (!isset($this->storages['user_claims'])) {
- throw new \LogicException("You must supply a storage object implementing OAuth2\OpenID\Storage\UserClaimsInterface to use the UserInfo server");
+ throw new \LogicException('You must supply a storage object implementing OAuth2\OpenID\Storage\UserClaimsInterface to use the UserInfo server');
}
if (!$this->tokenType) {
@@ -593,7 +640,7 @@ class Server implements ResourceControllerInterface,
$config = array_intersect_key($this->config, array_flip(explode(' ', 'enforce_redirect auth_code_lifetime')));
if ($this->config['use_openid_connect']) {
if (!$this->storages['authorization_code'] instanceof OpenIDAuthorizationCodeInterface) {
- throw new \LogicException("Your authorization_code storage must implement OAuth2\OpenID\Storage\AuthorizationCodeInterface to work when 'use_openid_connect' is true");
+ throw new \LogicException('Your authorization_code storage must implement OAuth2\OpenID\Storage\AuthorizationCodeInterface to work when "use_openid_connect" is true');
}
$responseTypes['code'] = new OpenIDAuthorizationCodeResponseType($this->storages['authorization_code'], $config);
$responseTypes['code id_token'] = new CodeIdToken($responseTypes['code'], $responseTypes['id_token']);
@@ -603,7 +650,7 @@ class Server implements ResourceControllerInterface,
}
if (count($responseTypes) == 0) {
- throw new \LogicException("You must supply an array of response_types in the constructor or implement a OAuth2\Storage\AuthorizationCodeInterface storage object or set 'allow_implicit' to true and implement a OAuth2\Storage\AccessTokenInterface storage object");
+ throw new \LogicException('You must supply an array of response_types in the constructor or implement a OAuth2\Storage\AuthorizationCodeInterface storage object or set "allow_implicit" to true and implement a OAuth2\Storage\AccessTokenInterface storage object');
}
return $responseTypes;
@@ -630,7 +677,7 @@ class Server implements ResourceControllerInterface,
if (isset($this->storages['authorization_code'])) {
if ($this->config['use_openid_connect']) {
if (!$this->storages['authorization_code'] instanceof OpenIDAuthorizationCodeInterface) {
- throw new \LogicException("Your authorization_code storage must implement OAuth2\OpenID\Storage\AuthorizationCodeInterface to work when 'use_openid_connect' is true");
+ throw new \LogicException('Your authorization_code storage must implement OAuth2\OpenID\Storage\AuthorizationCodeInterface to work when "use_openid_connect" is true');
}
$grantTypes['authorization_code'] = new OpenIDAuthorizationCodeGrantType($this->storages['authorization_code']);
} else {
@@ -639,7 +686,7 @@ class Server implements ResourceControllerInterface,
}
if (count($grantTypes) == 0) {
- throw new \LogicException("Unable to build default grant types - You must supply an array of grant_types in the constructor");
+ throw new \LogicException('Unable to build default grant types - You must supply an array of grant_types in the constructor');
}
return $grantTypes;
@@ -682,7 +729,7 @@ class Server implements ResourceControllerInterface,
protected function createDefaultJwtAccessTokenStorage()
{
if (!isset($this->storages['public_key'])) {
- throw new \LogicException("You must supply a storage object implementing OAuth2\Storage\PublicKeyInterface to use crypto tokens");
+ throw new \LogicException('You must supply a storage object implementing OAuth2\Storage\PublicKeyInterface to use crypto tokens');
}
$tokenStorage = null;
if (!empty($this->config['store_encrypted_token_string']) && isset($this->storages['access_token'])) {
@@ -698,7 +745,7 @@ class Server implements ResourceControllerInterface,
protected function createDefaultJwtAccessTokenResponseType()
{
if (!isset($this->storages['public_key'])) {
- throw new \LogicException("You must supply a storage object implementing OAuth2\Storage\PublicKeyInterface to use crypto tokens");
+ throw new \LogicException('You must supply a storage object implementing OAuth2\Storage\PublicKeyInterface to use crypto tokens');
}
$tokenStorage = null;
@@ -719,7 +766,7 @@ class Server implements ResourceControllerInterface,
protected function createDefaultAccessTokenResponseType()
{
if (!isset($this->storages['access_token'])) {
- throw new \LogicException("You must supply a response type implementing OAuth2\ResponseType\AccessTokenInterface, or a storage object implementing OAuth2\Storage\AccessTokenInterface to use the token server");
+ throw new \LogicException('You must supply a response type implementing OAuth2\ResponseType\AccessTokenInterface, or a storage object implementing OAuth2\Storage\AccessTokenInterface to use the token server');
}
$refreshStorage = null;
@@ -736,10 +783,10 @@ class Server implements ResourceControllerInterface,
protected function createDefaultIdTokenResponseType()
{
if (!isset($this->storages['user_claims'])) {
- throw new \LogicException("You must supply a storage object implementing OAuth2\OpenID\Storage\UserClaimsInterface to use openid connect");
+ throw new \LogicException('You must supply a storage object implementing OAuth2\OpenID\Storage\UserClaimsInterface to use openid connect');
}
if (!isset($this->storages['public_key'])) {
- throw new \LogicException("You must supply a storage object implementing OAuth2\Storage\PublicKeyInterface to use openid connect");
+ throw new \LogicException('You must supply a storage object implementing OAuth2\Storage\PublicKeyInterface to use openid connect');
}
$config = array_intersect_key($this->config, array_flip(explode(' ', 'issuer id_lifetime')));
diff --git a/library/oauth2/src/OAuth2/Storage/AccessTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php
index 1819158af..1819158af 100644
--- a/library/oauth2/src/OAuth2/Storage/AccessTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php
diff --git a/library/oauth2/src/OAuth2/Storage/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php
index 3beb0e437..edc7c70e5 100644
--- a/library/oauth2/src/OAuth2/Storage/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php
@@ -71,7 +71,7 @@ interface AuthorizationCodeInterface
public function setAuthorizationCode($code, $client_id, $user_id, $redirect_uri, $expires, $scope = null);
/**
- * once an Authorization Code is used, it must be exipired
+ * once an Authorization Code is used, it must be expired
*
* @see http://tools.ietf.org/html/rfc6749#section-4.1.2
*
diff --git a/library/oauth2/src/OAuth2/Storage/Cassandra.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php
index 602e8a058..c5048c08d 100644
--- a/library/oauth2/src/OAuth2/Storage/Cassandra.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php
@@ -240,7 +240,7 @@ class Cassandra implements AuthorizationCodeInterface,
return false;
}
- return empty($client['client_secret']);;
+ return empty($client['client_secret']);
}
/* ClientInterface */
diff --git a/library/oauth2/src/OAuth2/Storage/ClientCredentialsInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/ClientCredentialsInterface.php
index 3318c6966..3318c6966 100644
--- a/library/oauth2/src/OAuth2/Storage/ClientCredentialsInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/ClientCredentialsInterface.php
diff --git a/library/oauth2/src/OAuth2/Storage/ClientInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/ClientInterface.php
index 09a5bffc1..09a5bffc1 100644
--- a/library/oauth2/src/OAuth2/Storage/ClientInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/ClientInterface.php
diff --git a/library/oauth2/src/OAuth2/Storage/CouchbaseDB.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php
index 1eb55f027..1eb55f027 100755
--- a/library/oauth2/src/OAuth2/Storage/CouchbaseDB.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php
diff --git a/library/oauth2/src/OAuth2/Storage/DynamoDB.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php
index 8347ab258..8347ab258 100644
--- a/library/oauth2/src/OAuth2/Storage/DynamoDB.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php
diff --git a/library/oauth2/src/OAuth2/Storage/JwtAccessToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php
index 75b49d301..75b49d301 100644
--- a/library/oauth2/src/OAuth2/Storage/JwtAccessToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php
diff --git a/library/oauth2/src/OAuth2/Storage/JwtAccessTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessTokenInterface.php
index 3abb2aa2d..3abb2aa2d 100644
--- a/library/oauth2/src/OAuth2/Storage/JwtAccessTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessTokenInterface.php
diff --git a/library/oauth2/src/OAuth2/Storage/JwtBearerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtBearerInterface.php
index c83aa72ea..c83aa72ea 100644
--- a/library/oauth2/src/OAuth2/Storage/JwtBearerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtBearerInterface.php
diff --git a/library/oauth2/src/OAuth2/Storage/Memory.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php
index 42d833ccb..42d833ccb 100644
--- a/library/oauth2/src/OAuth2/Storage/Memory.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php
diff --git a/library/oauth2/src/OAuth2/Storage/Mongo.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Mongo.php
index cef35e5e9..eea06e315 100644
--- a/library/oauth2/src/OAuth2/Storage/Mongo.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Mongo.php
@@ -22,6 +22,7 @@ class Mongo implements AuthorizationCodeInterface,
UserCredentialsInterface,
RefreshTokenInterface,
JwtBearerInterface,
+ PublicKeyInterface,
OpenIDAuthorizationCodeInterface
{
protected $db;
@@ -46,6 +47,7 @@ class Mongo implements AuthorizationCodeInterface,
'refresh_token_table' => 'oauth_refresh_tokens',
'code_table' => 'oauth_authorization_codes',
'user_table' => 'oauth_users',
+ 'key_table' => 'oauth_keys',
'jwt_table' => 'oauth_jwt',
), $config);
}
@@ -336,4 +338,55 @@ class Mongo implements AuthorizationCodeInterface,
//TODO: Needs mongodb implementation.
throw new \Exception('setJti() for the MongoDB driver is currently unimplemented.');
}
+
+ public function getPublicKey($client_id = null)
+ {
+ if ($client_id) {
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => $client_id
+ ));
+ if ($result) {
+ return $result['public_key'];
+ }
+ }
+
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => null
+ ));
+ return is_null($result) ? false : $result['public_key'];
+ }
+
+ public function getPrivateKey($client_id = null)
+ {
+ if ($client_id) {
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => $client_id
+ ));
+ if ($result) {
+ return $result['private_key'];
+ }
+ }
+
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => null
+ ));
+ return is_null($result) ? false : $result['private_key'];
+ }
+
+ public function getEncryptionAlgorithm($client_id = null)
+ {
+ if ($client_id) {
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => $client_id
+ ));
+ if ($result) {
+ return $result['encryption_algorithm'];
+ }
+ }
+
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => null
+ ));
+ return is_null($result) ? 'RS256' : $result['encryption_algorithm'];
+ }
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/MongoDB.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/MongoDB.php
new file mode 100644
index 000000000..64f740fc1
--- /dev/null
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/MongoDB.php
@@ -0,0 +1,380 @@
+<?php
+
+namespace OAuth2\Storage;
+
+use MongoDB\Client;
+use MongoDB\Database;
+use OAuth2\OpenID\Storage\AuthorizationCodeInterface as OpenIDAuthorizationCodeInterface;
+
+/**
+ * Simple MongoDB storage for all storage types
+ *
+ * NOTE: This class is meant to get users started
+ * quickly. If your application requires further
+ * customization, extend this class or create your own.
+ *
+ * NOTE: Passwords are stored in plaintext, which is never
+ * a good idea. Be sure to override this for your application
+ *
+ * @author Julien Chaumond <chaumond@gmail.com>
+ */
+class MongoDB implements AuthorizationCodeInterface,
+ UserCredentialsInterface,
+ AccessTokenInterface,
+ ClientCredentialsInterface,
+ RefreshTokenInterface,
+ JwtBearerInterface,
+ PublicKeyInterface,
+ OpenIDAuthorizationCodeInterface
+{
+ protected $db;
+ protected $config;
+
+ public function __construct($connection, $config = array())
+ {
+ if ($connection instanceof Database) {
+ $this->db = $connection;
+ } else {
+ if (!is_array($connection)) {
+ throw new \InvalidArgumentException('First argument to OAuth2\Storage\Mongo must be an instance of MongoDB\Database or a configuration array');
+ }
+ $server = sprintf('mongodb://%s:%d', $connection['host'], $connection['port']);
+ $m = new Client($server);
+ $this->db = $m->selectDatabase($connection['database']);
+ }
+ $this->config = array_merge(array(
+ 'client_table' => 'oauth_clients',
+ 'access_token_table' => 'oauth_access_tokens',
+ 'refresh_token_table' => 'oauth_refresh_tokens',
+ 'code_table' => 'oauth_authorization_codes',
+ 'user_table' => 'oauth_users',
+ 'jwt_table' => 'oauth_jwt',
+ 'jti_table' => 'oauth_jti',
+ 'scope_table' => 'oauth_scopes',
+ 'key_table' => 'oauth_keys',
+ ), $config);
+ }
+
+ /* ClientCredentialsInterface */
+ public function checkClientCredentials($client_id, $client_secret = null)
+ {
+ if ($result = $this->collection('client_table')->findOne(array('client_id' => $client_id))) {
+ return $result['client_secret'] == $client_secret;
+ }
+ return false;
+ }
+
+ public function isPublicClient($client_id)
+ {
+ if (!$result = $this->collection('client_table')->findOne(array('client_id' => $client_id))) {
+ return false;
+ }
+ return empty($result['client_secret']);
+ }
+
+ /* ClientInterface */
+ public function getClientDetails($client_id)
+ {
+ $result = $this->collection('client_table')->findOne(array('client_id' => $client_id));
+ return is_null($result) ? false : $result;
+ }
+
+ public function setClientDetails($client_id, $client_secret = null, $redirect_uri = null, $grant_types = null, $scope = null, $user_id = null)
+ {
+ if ($this->getClientDetails($client_id)) {
+ $result = $this->collection('client_table')->updateOne(
+ array('client_id' => $client_id),
+ array('$set' => array(
+ 'client_secret' => $client_secret,
+ 'redirect_uri' => $redirect_uri,
+ 'grant_types' => $grant_types,
+ 'scope' => $scope,
+ 'user_id' => $user_id,
+ ))
+ );
+ return $result->getMatchedCount() > 0;
+ }
+ $client = array(
+ 'client_id' => $client_id,
+ 'client_secret' => $client_secret,
+ 'redirect_uri' => $redirect_uri,
+ 'grant_types' => $grant_types,
+ 'scope' => $scope,
+ 'user_id' => $user_id,
+ );
+ $result = $this->collection('client_table')->insertOne($client);
+ return $result->getInsertedCount() > 0;
+ }
+
+ public function checkRestrictedGrantType($client_id, $grant_type)
+ {
+ $details = $this->getClientDetails($client_id);
+ if (isset($details['grant_types'])) {
+ $grant_types = explode(' ', $details['grant_types']);
+ return in_array($grant_type, $grant_types);
+ }
+ // if grant_types are not defined, then none are restricted
+ return true;
+ }
+
+ /* AccessTokenInterface */
+ public function getAccessToken($access_token)
+ {
+ $token = $this->collection('access_token_table')->findOne(array('access_token' => $access_token));
+ return is_null($token) ? false : $token;
+ }
+
+ public function setAccessToken($access_token, $client_id, $user_id, $expires, $scope = null)
+ {
+ // if it exists, update it.
+ if ($this->getAccessToken($access_token)) {
+ $result = $this->collection('access_token_table')->updateOne(
+ array('access_token' => $access_token),
+ array('$set' => array(
+ 'client_id' => $client_id,
+ 'expires' => $expires,
+ 'user_id' => $user_id,
+ 'scope' => $scope
+ ))
+ );
+ return $result->getMatchedCount() > 0;
+ }
+ $token = array(
+ 'access_token' => $access_token,
+ 'client_id' => $client_id,
+ 'expires' => $expires,
+ 'user_id' => $user_id,
+ 'scope' => $scope
+ );
+ $result = $this->collection('access_token_table')->insertOne($token);
+ return $result->getInsertedCount() > 0;
+ }
+
+ public function unsetAccessToken($access_token)
+ {
+ $result = $this->collection('access_token_table')->deleteOne(array(
+ 'access_token' => $access_token
+ ));
+ return $result->getDeletedCount() > 0;
+ }
+
+ /* AuthorizationCodeInterface */
+ public function getAuthorizationCode($code)
+ {
+ $code = $this->collection('code_table')->findOne(array(
+ 'authorization_code' => $code
+ ));
+ return is_null($code) ? false : $code;
+ }
+
+ public function setAuthorizationCode($code, $client_id, $user_id, $redirect_uri, $expires, $scope = null, $id_token = null)
+ {
+ // if it exists, update it.
+ if ($this->getAuthorizationCode($code)) {
+ $result = $this->collection('code_table')->updateOne(
+ array('authorization_code' => $code),
+ array('$set' => array(
+ 'client_id' => $client_id,
+ 'user_id' => $user_id,
+ 'redirect_uri' => $redirect_uri,
+ 'expires' => $expires,
+ 'scope' => $scope,
+ 'id_token' => $id_token,
+ ))
+ );
+ return $result->getMatchedCount() > 0;
+ }
+ $token = array(
+ 'authorization_code' => $code,
+ 'client_id' => $client_id,
+ 'user_id' => $user_id,
+ 'redirect_uri' => $redirect_uri,
+ 'expires' => $expires,
+ 'scope' => $scope,
+ 'id_token' => $id_token,
+ );
+ $result = $this->collection('code_table')->insertOne($token);
+ return $result->getInsertedCount() > 0;
+ }
+
+ public function expireAuthorizationCode($code)
+ {
+ $result = $this->collection('code_table')->deleteOne(array(
+ 'authorization_code' => $code
+ ));
+ return $result->getDeletedCount() > 0;
+ }
+
+ /* UserCredentialsInterface */
+ public function checkUserCredentials($username, $password)
+ {
+ if ($user = $this->getUser($username)) {
+ return $this->checkPassword($user, $password);
+ }
+ return false;
+ }
+
+ public function getUserDetails($username)
+ {
+ if ($user = $this->getUser($username)) {
+ $user['user_id'] = $user['username'];
+ }
+ return $user;
+ }
+
+ /* RefreshTokenInterface */
+ public function getRefreshToken($refresh_token)
+ {
+ $token = $this->collection('refresh_token_table')->findOne(array(
+ 'refresh_token' => $refresh_token
+ ));
+ return is_null($token) ? false : $token;
+ }
+
+ public function setRefreshToken($refresh_token, $client_id, $user_id, $expires, $scope = null)
+ {
+ $token = array(
+ 'refresh_token' => $refresh_token,
+ 'client_id' => $client_id,
+ 'user_id' => $user_id,
+ 'expires' => $expires,
+ 'scope' => $scope
+ );
+ $result = $this->collection('refresh_token_table')->insertOne($token);
+ return $result->getInsertedCount() > 0;
+ }
+
+ public function unsetRefreshToken($refresh_token)
+ {
+ $result = $this->collection('refresh_token_table')->deleteOne(array(
+ 'refresh_token' => $refresh_token
+ ));
+ return $result->getDeletedCount() > 0;
+ }
+
+ // plaintext passwords are bad! Override this for your application
+ protected function checkPassword($user, $password)
+ {
+ return $user['password'] == $password;
+ }
+
+ public function getUser($username)
+ {
+ $result = $this->collection('user_table')->findOne(array('username' => $username));
+ return is_null($result) ? false : $result;
+ }
+
+ public function setUser($username, $password, $firstName = null, $lastName = null)
+ {
+ if ($this->getUser($username)) {
+ $result = $this->collection('user_table')->updateOne(
+ array('username' => $username),
+ array('$set' => array(
+ 'password' => $password,
+ 'first_name' => $firstName,
+ 'last_name' => $lastName
+ ))
+ );
+
+ return $result->getMatchedCount() > 0;
+ }
+
+ $user = array(
+ 'username' => $username,
+ 'password' => $password,
+ 'first_name' => $firstName,
+ 'last_name' => $lastName
+ );
+ $result = $this->collection('user_table')->insertOne($user);
+ return $result->getInsertedCount() > 0;
+ }
+
+ public function getClientKey($client_id, $subject)
+ {
+ $result = $this->collection('jwt_table')->findOne(array(
+ 'client_id' => $client_id,
+ 'subject' => $subject
+ ));
+ return is_null($result) ? false : $result['key'];
+ }
+
+ public function getClientScope($client_id)
+ {
+ if (!$clientDetails = $this->getClientDetails($client_id)) {
+ return false;
+ }
+ if (isset($clientDetails['scope'])) {
+ return $clientDetails['scope'];
+ }
+ return null;
+ }
+
+ public function getJti($client_id, $subject, $audience, $expires, $jti)
+ {
+ //TODO: Needs mongodb implementation.
+ throw new \Exception('getJti() for the MongoDB driver is currently unimplemented.');
+ }
+
+ public function setJti($client_id, $subject, $audience, $expires, $jti)
+ {
+ //TODO: Needs mongodb implementation.
+ throw new \Exception('setJti() for the MongoDB driver is currently unimplemented.');
+ }
+
+ public function getPublicKey($client_id = null)
+ {
+ if ($client_id) {
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => $client_id
+ ));
+ if ($result) {
+ return $result['public_key'];
+ }
+ }
+
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => null
+ ));
+ return is_null($result) ? false : $result['public_key'];
+ }
+
+ public function getPrivateKey($client_id = null)
+ {
+ if ($client_id) {
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => $client_id
+ ));
+ if ($result) {
+ return $result['private_key'];
+ }
+ }
+
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => null
+ ));
+ return is_null($result) ? false : $result['private_key'];
+ }
+
+ public function getEncryptionAlgorithm($client_id = null)
+ {
+ if ($client_id) {
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => $client_id
+ ));
+ if ($result) {
+ return $result['encryption_algorithm'];
+ }
+ }
+
+ $result = $this->collection('key_table')->findOne(array(
+ 'client_id' => null
+ ));
+ return is_null($result) ? 'RS256' : $result['encryption_algorithm'];
+ }
+
+ // Helper function to access a MongoDB collection by `type`:
+ protected function collection($name)
+ {
+ return $this->db->{$this->config[$name]};
+ }
+} \ No newline at end of file
diff --git a/library/oauth2/src/OAuth2/Storage/Pdo.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php
index ae5107e29..ae5107e29 100644
--- a/library/oauth2/src/OAuth2/Storage/Pdo.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php
diff --git a/library/oauth2/src/OAuth2/Storage/PublicKeyInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php
index 108418d3a..108418d3a 100644
--- a/library/oauth2/src/OAuth2/Storage/PublicKeyInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php
diff --git a/library/oauth2/src/OAuth2/Storage/Redis.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Redis.php
index e6294e22d..e6294e22d 100644
--- a/library/oauth2/src/OAuth2/Storage/Redis.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Redis.php
diff --git a/library/oauth2/src/OAuth2/Storage/RefreshTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/RefreshTokenInterface.php
index 0273f2125..e6407e440 100644
--- a/library/oauth2/src/OAuth2/Storage/RefreshTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/RefreshTokenInterface.php
@@ -74,7 +74,7 @@ interface RefreshTokenInterface
* and provide a descriptive fail message.
*
* @param $refresh_token
- * Refresh token to be expirse.
+ * Refresh token to be expired.
*
* @ingroup oauth2_section_6
*/
diff --git a/library/oauth2/src/OAuth2/Storage/ScopeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/ScopeInterface.php
index a8292269b..a8292269b 100644
--- a/library/oauth2/src/OAuth2/Storage/ScopeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/ScopeInterface.php
diff --git a/library/oauth2/src/OAuth2/Storage/UserCredentialsInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php
index 6e0fd7bad..6e0fd7bad 100644
--- a/library/oauth2/src/OAuth2/Storage/UserCredentialsInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php
diff --git a/library/oauth2/src/OAuth2/TokenType/Bearer.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/TokenType/Bearer.php
index 8ac8596ac..8ac8596ac 100644
--- a/library/oauth2/src/OAuth2/TokenType/Bearer.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/TokenType/Bearer.php
diff --git a/library/oauth2/src/OAuth2/TokenType/Mac.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/TokenType/Mac.php
index fe6a86aa6..fe6a86aa6 100644
--- a/library/oauth2/src/OAuth2/TokenType/Mac.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/TokenType/Mac.php
diff --git a/library/oauth2/src/OAuth2/TokenType/TokenTypeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/TokenType/TokenTypeInterface.php
index ad77d4a25..ad77d4a25 100644
--- a/library/oauth2/src/OAuth2/TokenType/TokenTypeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/TokenType/TokenTypeInterface.php
diff --git a/library/oauth2/test/OAuth2/AutoloadTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php
index 5901bdc42..5901bdc42 100644
--- a/library/oauth2/test/OAuth2/AutoloadTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php
diff --git a/library/oauth2/test/OAuth2/Controller/AuthorizeControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php
index 3bfc760e4..3bfc760e4 100644
--- a/library/oauth2/test/OAuth2/Controller/AuthorizeControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php
diff --git a/library/oauth2/test/OAuth2/Controller/ResourceControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php
index ee6d96ff8..b277514a5 100644
--- a/library/oauth2/test/OAuth2/Controller/ResourceControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php
@@ -20,6 +20,7 @@ class ResourceControllerTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($response->getStatusCode(), 401);
$this->assertNull($response->getParameter('error'));
$this->assertNull($response->getParameter('error_description'));
+ $this->assertEquals('', $response->getResponseBody());
}
public function testMalformedHeader()
@@ -100,7 +101,7 @@ class ResourceControllerTest extends \PHPUnit_Framework_TestCase
$this->assertFalse($allow);
$this->assertEquals($response->getStatusCode(), 401);
- $this->assertEquals($response->getParameter('error'), 'expired_token');
+ $this->assertEquals($response->getParameter('error'), 'invalid_token');
$this->assertEquals($response->getParameter('error_description'), 'The access token provided has expired');
}
diff --git a/library/oauth2/test/OAuth2/Controller/TokenControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php
index 4a217bd55..4a217bd55 100644
--- a/library/oauth2/test/OAuth2/Controller/TokenControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php
diff --git a/library/oauth2/test/OAuth2/Encryption/FirebaseJwtTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php
index d34136767..d34136767 100644
--- a/library/oauth2/test/OAuth2/Encryption/FirebaseJwtTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php
diff --git a/library/oauth2/test/OAuth2/Encryption/JwtTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php
index 214eebac8..214eebac8 100644
--- a/library/oauth2/test/OAuth2/Encryption/JwtTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php
diff --git a/library/oauth2/test/OAuth2/GrantType/AuthorizationCodeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php
index 740989635..356b8e53c 100644
--- a/library/oauth2/test/OAuth2/GrantType/AuthorizationCodeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php
@@ -93,6 +93,22 @@ class AuthorizationCodeTest extends \PHPUnit_Framework_TestCase
$this->assertArrayHasKey('access_token', $token);
}
+ public function testValidRedirectUri()
+ {
+ $server = $this->getTestServer();
+ $request = TestRequest::createPost(array(
+ 'grant_type' => 'authorization_code', // valid grant type
+ 'client_id' => 'Test Client ID', // valid client id
+ 'redirect_uri' => 'http://brentertainment.com/voil%C3%A0', // valid client id
+ 'client_secret' => 'TestSecret', // valid client secret
+ 'code' => 'testcode-redirect-uri', // valid code
+ ));
+ $token = $server->grantAccessToken($request, new Response());
+
+ $this->assertNotNull($token);
+ $this->assertArrayHasKey('access_token', $token);
+ }
+
public function testValidCodeNoScope()
{
$server = $this->getTestServer();
diff --git a/library/oauth2/test/OAuth2/GrantType/ClientCredentialsTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php
index f0d46ccb3..f0d46ccb3 100644
--- a/library/oauth2/test/OAuth2/GrantType/ClientCredentialsTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php
diff --git a/library/oauth2/test/OAuth2/GrantType/ImplicitTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php
index a47aae3e8..a47aae3e8 100644
--- a/library/oauth2/test/OAuth2/GrantType/ImplicitTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php
diff --git a/library/oauth2/test/OAuth2/GrantType/JwtBearerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php
index 0a6c4b827..0a6c4b827 100644
--- a/library/oauth2/test/OAuth2/GrantType/JwtBearerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php
diff --git a/library/oauth2/test/OAuth2/GrantType/RefreshTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php
index a458aad8a..a458aad8a 100644
--- a/library/oauth2/test/OAuth2/GrantType/RefreshTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php
diff --git a/library/oauth2/test/OAuth2/GrantType/UserCredentialsTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php
index 18943d055..18943d055 100644
--- a/library/oauth2/test/OAuth2/GrantType/UserCredentialsTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php
diff --git a/library/oauth2/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php
index 46de936d8..46de936d8 100644
--- a/library/oauth2/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php
diff --git a/library/oauth2/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php
index b1b687077..b1b687077 100644
--- a/library/oauth2/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php
diff --git a/library/oauth2/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php
index 776002d1e..776002d1e 100644
--- a/library/oauth2/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php
diff --git a/library/oauth2/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php
index b0311434a..b0311434a 100644
--- a/library/oauth2/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php
diff --git a/library/oauth2/test/OAuth2/OpenID/ResponseType/IdTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php
index e772f6be4..e772f6be4 100644
--- a/library/oauth2/test/OAuth2/OpenID/ResponseType/IdTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php
diff --git a/library/oauth2/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php
index bc564d37b..bc564d37b 100644
--- a/library/oauth2/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php
diff --git a/library/oauth2/test/OAuth2/OpenID/Storage/AuthorizationCodeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Storage/AuthorizationCodeTest.php
index bdfb085e3..bdfb085e3 100644
--- a/library/oauth2/test/OAuth2/OpenID/Storage/AuthorizationCodeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Storage/AuthorizationCodeTest.php
diff --git a/library/oauth2/test/OAuth2/OpenID/Storage/UserClaimsTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Storage/UserClaimsTest.php
index 840f6c566..840f6c566 100644
--- a/library/oauth2/test/OAuth2/OpenID/Storage/UserClaimsTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Storage/UserClaimsTest.php
diff --git a/library/oauth2/test/OAuth2/RequestTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php
index 10db3215c..10db3215c 100644
--- a/library/oauth2/test/OAuth2/RequestTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php
diff --git a/library/oauth2/test/OAuth2/ResponseTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
index b8149005d..b8149005d 100644
--- a/library/oauth2/test/OAuth2/ResponseTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
diff --git a/library/oauth2/test/OAuth2/ResponseType/AccessTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php
index 0ed1c82fc..0ed1c82fc 100644
--- a/library/oauth2/test/OAuth2/ResponseType/AccessTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php
diff --git a/library/oauth2/test/OAuth2/ResponseType/JwtAccessTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php
index 51b01a927..51b01a927 100644
--- a/library/oauth2/test/OAuth2/ResponseType/JwtAccessTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php
diff --git a/library/oauth2/test/OAuth2/ScopeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php
index 99f9cf6eb..99f9cf6eb 100644
--- a/library/oauth2/test/OAuth2/ScopeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php
diff --git a/library/oauth2/test/OAuth2/ServerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php
index 747e120f5..747e120f5 100644
--- a/library/oauth2/test/OAuth2/ServerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/AccessTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/AccessTokenTest.php
index b34e0bfc0..b34e0bfc0 100644
--- a/library/oauth2/test/OAuth2/Storage/AccessTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/AccessTokenTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/AuthorizationCodeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/AuthorizationCodeTest.php
index 2d901b501..2d901b501 100644
--- a/library/oauth2/test/OAuth2/Storage/AuthorizationCodeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/AuthorizationCodeTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/ClientCredentialsTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/ClientCredentialsTest.php
index 15289af30..15289af30 100644
--- a/library/oauth2/test/OAuth2/Storage/ClientCredentialsTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/ClientCredentialsTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/ClientTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/ClientTest.php
index 6a5cc0b49..6a5cc0b49 100644
--- a/library/oauth2/test/OAuth2/Storage/ClientTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/ClientTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/DynamoDBTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/DynamoDBTest.php
index 2147f0914..2147f0914 100644
--- a/library/oauth2/test/OAuth2/Storage/DynamoDBTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/DynamoDBTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/JwtAccessTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/JwtAccessTokenTest.php
index a6acbea1f..a6acbea1f 100644
--- a/library/oauth2/test/OAuth2/Storage/JwtAccessTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/JwtAccessTokenTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/JwtBearerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/JwtBearerTest.php
index d0ab9b899..d0ab9b899 100644
--- a/library/oauth2/test/OAuth2/Storage/JwtBearerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/JwtBearerTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/PdoTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php
index 57eb39072..57eb39072 100644
--- a/library/oauth2/test/OAuth2/Storage/PdoTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/PublicKeyTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PublicKeyTest.php
index f85195870..f85195870 100644
--- a/library/oauth2/test/OAuth2/Storage/PublicKeyTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PublicKeyTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/RefreshTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/RefreshTokenTest.php
index 314c93195..314c93195 100644
--- a/library/oauth2/test/OAuth2/Storage/RefreshTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/RefreshTokenTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/ScopeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/ScopeTest.php
index fd1edeb93..fd1edeb93 100644
--- a/library/oauth2/test/OAuth2/Storage/ScopeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/ScopeTest.php
diff --git a/library/oauth2/test/OAuth2/Storage/UserCredentialsTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/UserCredentialsTest.php
index 65655a6b2..65655a6b2 100644
--- a/library/oauth2/test/OAuth2/Storage/UserCredentialsTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/UserCredentialsTest.php
diff --git a/library/oauth2/test/OAuth2/TokenType/BearerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php
index a2e000e22..a2e000e22 100644
--- a/library/oauth2/test/OAuth2/TokenType/BearerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php
diff --git a/library/oauth2/test/bootstrap.php b/vendor/bshaffer/oauth2-server-php/test/bootstrap.php
index 0a4af0716..0a4af0716 100644
--- a/library/oauth2/test/bootstrap.php
+++ b/vendor/bshaffer/oauth2-server-php/test/bootstrap.php
diff --git a/library/oauth2/test/cleanup.php b/vendor/bshaffer/oauth2-server-php/test/cleanup.php
index 8663a901b..8663a901b 100644
--- a/library/oauth2/test/cleanup.php
+++ b/vendor/bshaffer/oauth2-server-php/test/cleanup.php
diff --git a/library/oauth2/test/config/keys/id_rsa b/vendor/bshaffer/oauth2-server-php/test/config/keys/id_rsa
index e8b9eff2d..e8b9eff2d 100644
--- a/library/oauth2/test/config/keys/id_rsa
+++ b/vendor/bshaffer/oauth2-server-php/test/config/keys/id_rsa
diff --git a/library/oauth2/test/config/keys/id_rsa.pub b/vendor/bshaffer/oauth2-server-php/test/config/keys/id_rsa.pub
index 1ac15f5eb..1ac15f5eb 100644
--- a/library/oauth2/test/config/keys/id_rsa.pub
+++ b/vendor/bshaffer/oauth2-server-php/test/config/keys/id_rsa.pub
diff --git a/library/oauth2/test/config/storage.json b/vendor/bshaffer/oauth2-server-php/test/config/storage.json
index a31d3bca2..52d3f2399 100644
--- a/library/oauth2/test/config/storage.json
+++ b/vendor/bshaffer/oauth2-server-php/test/config/storage.json
@@ -32,6 +32,13 @@
"redirect_uri": "",
"expires": "9999999999",
"id_token": "test_id_token"
+ },
+ "testcode-redirect-uri": {
+ "client_id": "Test Client ID",
+ "user_id": "",
+ "redirect_uri": "http://brentertainment.com/voil%C3%A0",
+ "expires": "9999999999",
+ "id_token": "IDTOKEN"
}
},
"client_credentials" : {
diff --git a/library/oauth2/test/lib/OAuth2/Request/TestRequest.php b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php
index 7bbce28a4..7bbce28a4 100644
--- a/library/oauth2/test/lib/OAuth2/Request/TestRequest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php
diff --git a/library/oauth2/test/lib/OAuth2/Storage/BaseTest.php b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php
index 921d52500..f0b1274a2 100755
--- a/library/oauth2/test/lib/OAuth2/Storage/BaseTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php
@@ -11,6 +11,7 @@ abstract class BaseTest extends \PHPUnit_Framework_TestCase
$mysql = Bootstrap::getInstance()->getMysqlPdo();
$postgres = Bootstrap::getInstance()->getPostgresPdo();
$mongo = Bootstrap::getInstance()->getMongo();
+ $mongoDb = Bootstrap::getInstance()->getMongoDB();
$redis = Bootstrap::getInstance()->getRedisStorage();
$cassandra = Bootstrap::getInstance()->getCassandraStorage();
$dynamodb = Bootstrap::getInstance()->getDynamoDbStorage();
@@ -25,6 +26,7 @@ abstract class BaseTest extends \PHPUnit_Framework_TestCase
array($mysql),
array($postgres),
array($mongo),
+ array($mongoDb),
array($redis),
array($cassandra),
array($dynamodb),
diff --git a/library/oauth2/test/lib/OAuth2/Storage/Bootstrap.php b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
index 4ac9022b1..3d7bdd4e9 100755
--- a/library/oauth2/test/lib/OAuth2/Storage/Bootstrap.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
@@ -11,6 +11,7 @@ class Bootstrap
private $sqlite;
private $postgres;
private $mongo;
+ private $mongoDb;
private $redis;
private $cassandra;
private $configDir;
@@ -137,13 +138,12 @@ class Bootstrap
public function getMongo()
{
if (!$this->mongo) {
- $skipMongo = $this->getEnvVar('SKIP_MONGO_TESTS');
- if (!$skipMongo && class_exists('MongoClient')) {
+ if (class_exists('MongoClient')) {
$mongo = new \MongoClient('mongodb://localhost:27017', array('connect' => false));
if ($this->testMongoConnection($mongo)) {
- $db = $mongo->oauth2_server_php;
- $this->removeMongoDb($db);
- $this->createMongoDb($db);
+ $db = $mongo->oauth2_server_php_legacy;
+ $this->removeMongo($db);
+ $this->createMongo($db);
$this->mongo = new Mongo($db);
} else {
@@ -157,6 +157,28 @@ class Bootstrap
return $this->mongo;
}
+ public function getMongoDb()
+ {
+ if (!$this->mongoDb) {
+ if (class_exists('MongoDB\Client')) {
+ $mongoDb = new \MongoDB\Client('mongodb://localhost:27017');
+ if ($this->testMongoDBConnection($mongoDb)) {
+ $db = $mongoDb->oauth2_server_php;
+ $this->removeMongoDb($db);
+ $this->createMongoDb($db);
+
+ $this->mongoDb = new MongoDB($db);
+ } else {
+ $this->mongoDb = new NullStorage('MongoDB', 'Unable to connect to mongo server on "localhost:27017"');
+ }
+ } else {
+ $this->mongoDb = new NullStorage('MongoDB', 'Missing MongoDB php extension. Please install mongodb.so');
+ }
+ }
+
+ return $this->mongoDb;
+ }
+
private function testMongoConnection(\MongoClient $mongo)
{
try {
@@ -168,6 +190,11 @@ class Bootstrap
return true;
}
+ private function testMongoDBConnection(\MongoDB\Client $mongo)
+ {
+ return true;
+ }
+
public function getCouchbase()
{
if (!$this->couchbase) {
@@ -442,7 +469,7 @@ class Bootstrap
$cb->delete('oauth_refresh_tokens-refreshtoken');
}
- private function createMongoDb(\MongoDB $db)
+ private function createMongo(\MongoDB $db)
{
$db->oauth_clients->insert(array(
'client_id' => "oauth_test_client",
@@ -468,13 +495,70 @@ class Bootstrap
'email_verified' => true,
));
+ $db->oauth_keys->insert(array(
+ 'client_id' => null,
+ 'public_key' => $this->getTestPublicKey(),
+ 'private_key' => $this->getTestPrivateKey(),
+ 'encryption_algorithm' => 'RS256'
+ ));
+
$db->oauth_jwt->insert(array(
'client_id' => 'oauth_test_client',
- 'key' => $this->getTestPublicKey(),
+ 'key' => $this->getTestPublicKey(),
'subject' => 'test_subject',
));
}
+ public function removeMongo(\MongoDB $db)
+ {
+ $db->drop();
+ }
+
+ private function createMongoDB(\MongoDB\Database $db)
+ {
+ $db->oauth_clients->insertOne(array(
+ 'client_id' => "oauth_test_client",
+ 'client_secret' => "testpass",
+ 'redirect_uri' => "http://example.com",
+ 'grant_types' => 'implicit password'
+ ));
+
+ $db->oauth_access_tokens->insertOne(array(
+ 'access_token' => "testtoken",
+ 'client_id' => "Some Client"
+ ));
+
+ $db->oauth_authorization_codes->insertOne(array(
+ 'authorization_code' => "testcode",
+ 'client_id' => "Some Client"
+ ));
+
+ $db->oauth_users->insertOne(array(
+ 'username' => 'testuser',
+ 'password' => 'password',
+ 'email' => 'testuser@test.com',
+ 'email_verified' => true,
+ ));
+
+ $db->oauth_keys->insertOne(array(
+ 'client_id' => null,
+ 'public_key' => $this->getTestPublicKey(),
+ 'private_key' => $this->getTestPrivateKey(),
+ 'encryption_algorithm' => 'RS256'
+ ));
+
+ $db->oauth_jwt->insertOne(array(
+ 'client_id' => 'oauth_test_client',
+ 'key' => $this->getTestPublicKey(),
+ 'subject' => 'test_subject',
+ ));
+ }
+
+ public function removeMongoDB(\MongoDB\Database $db)
+ {
+ $db->drop();
+ }
+
private function createRedisDb(Redis $storage)
{
$storage->setClientDetails("oauth_test_client", "testpass", "http://example.com", 'implicit password');
@@ -500,11 +584,6 @@ class Bootstrap
$storage->setClientKey('oauth_test_client', $this->getTestPublicKey(), 'test_subject');
}
- public function removeMongoDb(\MongoDB $db)
- {
- $db->drop();
- }
-
public function getTestPublicKey()
{
return file_get_contents(__DIR__.'/../../../config/keys/id_rsa.pub');
diff --git a/library/oauth2/test/lib/OAuth2/Storage/NullStorage.php b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/NullStorage.php
index 6caa62068..6caa62068 100644
--- a/library/oauth2/test/lib/OAuth2/Storage/NullStorage.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/NullStorage.php
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index 4626994fd..ff6ecfb82 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -53,9 +53,8 @@ class ClassLoader
private $useIncludePath = false;
private $classMap = array();
+
private $classMapAuthoritative = false;
- private $missingClasses = array();
- private $apcuPrefix;
public function getPrefixes()
{
@@ -273,26 +272,6 @@ class ClassLoader
}
/**
- * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
- *
- * @param string|null $apcuPrefix
- */
- public function setApcuPrefix($apcuPrefix)
- {
- $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
- }
-
- /**
- * The APCu prefix in use, or null if APCu caching is not enabled.
- *
- * @return string|null
- */
- public function getApcuPrefix()
- {
- return $this->apcuPrefix;
- }
-
- /**
* Registers this instance as an autoloader.
*
* @param bool $prepend Whether to prepend the autoloader or not
@@ -334,34 +313,29 @@ class ClassLoader
*/
public function findFile($class)
{
+ // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
+ if ('\\' == $class[0]) {
+ $class = substr($class, 1);
+ }
+
// class map lookup
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
- if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+ if ($this->classMapAuthoritative) {
return false;
}
- if (null !== $this->apcuPrefix) {
- $file = apcu_fetch($this->apcuPrefix.$class, $hit);
- if ($hit) {
- return $file;
- }
- }
$file = $this->findFileWithExtension($class, '.php');
// Search for Hack files if we are running on HHVM
- if (false === $file && defined('HHVM_VERSION')) {
+ if ($file === null && defined('HHVM_VERSION')) {
$file = $this->findFileWithExtension($class, '.hh');
}
- if (null !== $this->apcuPrefix) {
- apcu_add($this->apcuPrefix.$class, $file);
- }
-
- if (false === $file) {
+ if ($file === null) {
// Remember that this class does not exist.
- $this->missingClasses[$class] = true;
+ return $this->classMap[$class] = false;
}
return $file;
@@ -425,8 +399,6 @@ class ClassLoader
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
return $file;
}
-
- return false;
}
}
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
index 1a2812488..ee274f1d3 100644
--- a/vendor/composer/LICENSE
+++ b/vendor/composer/LICENSE
@@ -1,21 +1,433 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Composer
+Upstream-Contact: Jordi Boggiano <j.boggiano@seld.be>
+Source: https://github.com/composer/composer
-Copyright (c) 2016 Nils Adermann, Jordi Boggiano
+Files: *
+Copyright: 2016, Nils Adermann <naderman@naderman.de>
+ 2016, Jordi Boggiano <j.boggiano@seld.be>
+License: Expat
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
+Files: res/cacert.pem
+Copyright: 2015, Mozilla Foundation
+License: MPL-2.0
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+Files: src/Composer/Util/RemoteFilesystem.php
+ src/Composer/Util/TlsHelper.php
+Copyright: 2016, Nils Adermann <naderman@naderman.de>
+ 2016, Jordi Boggiano <j.boggiano@seld.be>
+ 2013, Evan Coury <me@evancoury.com>
+License: Expat and BSD-2-Clause
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
+License: BSD-2-Clause
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+ .
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ .
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+License: Expat
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is furnished
+ to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+
+License: MPL-2.0
+ 1. Definitions
+ --------------
+ .
+ 1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+ .
+ 1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+ .
+ 1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+ .
+ 1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+ .
+ 1.5. "Incompatible With Secondary Licenses"
+ means
+ .
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+ .
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+ .
+ 1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+ .
+ 1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+ .
+ 1.8. "License"
+ means this document.
+ .
+ 1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+ .
+ 1.10. "Modifications"
+ means any of the following:
+ .
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+ .
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+ .
+ 1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+ .
+ 1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+ .
+ 1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+ .
+ 1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+ .
+ 2. License Grants and Conditions
+ --------------------------------
+ .
+ 2.1. Grants
+ .
+ Each Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+ .
+ (a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+ .
+ (b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+ .
+ 2.2. Effective Date
+ .
+ The licenses granted in Section 2.1 with respect to any Contribution
+ become effective for each Contribution on the date the Contributor first
+ distributes such Contribution.
+ .
+ 2.3. Limitations on Grant Scope
+ .
+ The licenses granted in this Section 2 are the only rights granted under
+ this License. No additional rights or licenses will be implied from the
+ distribution or licensing of Covered Software under this License.
+ Notwithstanding Section 2.1(b) above, no patent license is granted by a
+ Contributor:
+ .
+ (a) for any code that a Contributor has removed from Covered Software;
+ or
+ .
+ (b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+ .
+ (c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+ .
+ This License does not grant any rights in the trademarks, service marks,
+ or logos of any Contributor (except as may be necessary to comply with
+ the notice requirements in Section 3.4).
+ .
+ 2.4. Subsequent Licenses
+ .
+ No Contributor makes additional grants as a result of Your choice to
+ distribute the Covered Software under a subsequent version of this
+ License (see Section 10.2) or under the terms of a Secondary License (if
+ permitted under the terms of Section 3.3).
+ .
+ 2.5. Representation
+ .
+ Each Contributor represents that the Contributor believes its
+ Contributions are its original creation(s) or it has sufficient rights
+ to grant the rights to its Contributions conveyed by this License.
+ .
+ 2.6. Fair Use
+ .
+ This License is not intended to limit any rights You have under
+ applicable copyright doctrines of fair use, fair dealing, or other
+ equivalents.
+ .
+ 2.7. Conditions
+ .
+ Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+ in Section 2.1.
+ .
+ 3. Responsibilities
+ -------------------
+ .
+ 3.1. Distribution of Source Form
+ .
+ All distribution of Covered Software in Source Code Form, including any
+ Modifications that You create or to which You contribute, must be under
+ the terms of this License. You must inform recipients that the Source
+ Code Form of the Covered Software is governed by the terms of this
+ License, and how they can obtain a copy of this License. You may not
+ attempt to alter or restrict the recipients' rights in the Source Code
+ Form.
+ .
+ 3.2. Distribution of Executable Form
+ .
+ If You distribute Covered Software in Executable Form then:
+ .
+ (a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+ .
+ (b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+ .
+ 3.3. Distribution of a Larger Work
+ .
+ You may create and distribute a Larger Work under terms of Your choice,
+ provided that You also comply with the requirements of this License for
+ the Covered Software. If the Larger Work is a combination of Covered
+ Software with a work governed by one or more Secondary Licenses, and the
+ Covered Software is not Incompatible With Secondary Licenses, this
+ License permits You to additionally distribute such Covered Software
+ under the terms of such Secondary License(s), so that the recipient of
+ the Larger Work may, at their option, further distribute the Covered
+ Software under the terms of either this License or such Secondary
+ License(s).
+ .
+ 3.4. Notices
+ .
+ You may not remove or alter the substance of any license notices
+ (including copyright notices, patent notices, disclaimers of warranty,
+ or limitations of liability) contained within the Source Code Form of
+ the Covered Software, except that You may alter any license notices to
+ the extent required to remedy known factual inaccuracies.
+ .
+ 3.5. Application of Additional Terms
+ .
+ You may choose to offer, and to charge a fee for, warranty, support,
+ indemnity or liability obligations to one or more recipients of Covered
+ Software. However, You may do so only on Your own behalf, and not on
+ behalf of any Contributor. You must make it absolutely clear that any
+ such warranty, support, indemnity, or liability obligation is offered by
+ You alone, and You hereby agree to indemnify every Contributor for any
+ liability incurred by such Contributor as a result of warranty, support,
+ indemnity or liability terms You offer. You may include additional
+ disclaimers of warranty and limitations of liability specific to any
+ jurisdiction.
+ .
+ 4. Inability to Comply Due to Statute or Regulation
+ ---------------------------------------------------
+ .
+ If it is impossible for You to comply with any of the terms of this
+ License with respect to some or all of the Covered Software due to
+ statute, judicial order, or regulation then You must: (a) comply with
+ the terms of this License to the maximum extent possible; and (b)
+ describe the limitations and the code they affect. Such description must
+ be placed in a text file included with all distributions of the Covered
+ Software under this License. Except to the extent prohibited by statute
+ or regulation, such description must be sufficiently detailed for a
+ recipient of ordinary skill to be able to understand it.
+ .
+ 5. Termination
+ --------------
+ .
+ 5.1. The rights granted under this License will terminate automatically
+ if You fail to comply with any of its terms. However, if You become
+ compliant, then the rights granted under this License from a particular
+ Contributor are reinstated (a) provisionally, unless and until such
+ Contributor explicitly and finally terminates Your grants, and (b) on an
+ ongoing basis, if such Contributor fails to notify You of the
+ non-compliance by some reasonable means prior to 60 days after You have
+ come back into compliance. Moreover, Your grants from a particular
+ Contributor are reinstated on an ongoing basis if such Contributor
+ notifies You of the non-compliance by some reasonable means, this is the
+ first time You have received notice of non-compliance with this License
+ from such Contributor, and You become compliant prior to 30 days after
+ Your receipt of the notice.
+ .
+ 5.2. If You initiate litigation against any entity by asserting a patent
+ infringement claim (excluding declaratory judgment actions,
+ counter-claims, and cross-claims) alleging that a Contributor Version
+ directly or indirectly infringes any patent, then the rights granted to
+ You by any and all Contributors for the Covered Software under Section
+ 2.1 of this License shall terminate.
+ .
+ 5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+ end user license agreements (excluding distributors and resellers) which
+ have been validly granted by You or Your distributors under this License
+ prior to termination shall survive termination.
+ .
+ ************************************************************************
+ * *
+ * 6. Disclaimer of Warranty *
+ * ------------------------- *
+ * *
+ * Covered Software is provided under this License on an "as is" *
+ * basis, without warranty of any kind, either expressed, implied, or *
+ * statutory, including, without limitation, warranties that the *
+ * Covered Software is free of defects, merchantable, fit for a *
+ * particular purpose or non-infringing. The entire risk as to the *
+ * quality and performance of the Covered Software is with You. *
+ * Should any Covered Software prove defective in any respect, You *
+ * (not any Contributor) assume the cost of any necessary servicing, *
+ * repair, or correction. This disclaimer of warranty constitutes an *
+ * essential part of this License. No use of any Covered Software is *
+ * authorized under this License except under this disclaimer. *
+ * *
+ ************************************************************************
+ .
+ ************************************************************************
+ * *
+ * 7. Limitation of Liability *
+ * -------------------------- *
+ * *
+ * Under no circumstances and under no legal theory, whether tort *
+ * (including negligence), contract, or otherwise, shall any *
+ * Contributor, or anyone who distributes Covered Software as *
+ * permitted above, be liable to You for any direct, indirect, *
+ * special, incidental, or consequential damages of any character *
+ * including, without limitation, damages for lost profits, loss of *
+ * goodwill, work stoppage, computer failure or malfunction, or any *
+ * and all other commercial damages or losses, even if such party *
+ * shall have been informed of the possibility of such damages. This *
+ * limitation of liability shall not apply to liability for death or *
+ * personal injury resulting from such party's negligence to the *
+ * extent applicable law prohibits such limitation. Some *
+ * jurisdictions do not allow the exclusion or limitation of *
+ * incidental or consequential damages, so this exclusion and *
+ * limitation may not apply to You. *
+ * *
+ ************************************************************************
+ .
+ 8. Litigation
+ -------------
+ .
+ Any litigation relating to this License may be brought only in the
+ courts of a jurisdiction where the defendant maintains its principal
+ place of business and such litigation shall be governed by laws of that
+ jurisdiction, without reference to its conflict-of-law provisions.
+ Nothing in this Section shall prevent a party's ability to bring
+ cross-claims or counter-claims.
+ .
+ 9. Miscellaneous
+ ----------------
+ .
+ This License represents the complete agreement concerning the subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. Any law or regulation which provides
+ that the language of a contract shall be construed against the drafter
+ shall not be used to construe this License against a Contributor.
+ .
+ 10. Versions of the License
+ ---------------------------
+ .
+ 10.1. New Versions
+ .
+ Mozilla Foundation is the license steward. Except as provided in Section
+ 10.3, no one other than the license steward has the right to modify or
+ publish new versions of this License. Each version will be given a
+ distinguishing version number.
+ .
+ 10.2. Effect of New Versions
+ .
+ You may distribute the Covered Software under the terms of the version
+ of the License under which You originally received the Covered Software,
+ or under the terms of any subsequent version published by the license
+ steward.
+ .
+ 10.3. Modified Versions
+ .
+ If you create software not governed by this License, and you want to
+ create a new license for such software, you may create and use a
+ modified version of this License if you rename the license and remove
+ any references to the name of the license steward (except to note that
+ such modified license differs from this License).
+ .
+ 10.4. Distributing Source Code Form that is Incompatible With Secondary
+ Licenses
+ .
+ If You choose to distribute Source Code Form that is Incompatible With
+ Secondary Licenses under the terms of this version of the License, the
+ notice described in Exhibit B of this License must be attached.
+ .
+ Exhibit A - Source Code Form License Notice
+ -------------------------------------------
+ .
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ .
+ If it is not possible or desirable to put the notice in a particular
+ file, then You may include the notice in a location (such as a LICENSE
+ file in a relevant directory) where a recipient would be likely to look
+ for such a notice.
+ .
+ You may add additional accurate notices of copyright ownership.
+ .
+ Exhibit B - "Incompatible With Secondary Licenses" Notice
+ ---------------------------------------------------------
+ .
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 28ef0d2bf..7a91153b0 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -6,620 +6,4 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
- 'Hubzilla\\Import\\Import' => $baseDir . '/include/Import/Importer.php',
- 'Markdownify\\Converter' => $vendorDir . '/pixel418/markdownify/src/Converter.php',
- 'Markdownify\\ConverterExtra' => $vendorDir . '/pixel418/markdownify/src/ConverterExtra.php',
- 'Markdownify\\Parser' => $vendorDir . '/pixel418/markdownify/src/Parser.php',
- 'Michelf\\Markdown' => $vendorDir . '/michelf/php-markdown/Michelf/Markdown.php',
- 'Michelf\\MarkdownExtra' => $vendorDir . '/michelf/php-markdown/Michelf/MarkdownExtra.php',
- 'Michelf\\MarkdownInterface' => $vendorDir . '/michelf/php-markdown/Michelf/MarkdownInterface.php',
- 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php',
- 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php',
- 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php',
- 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareInterface.php',
- 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareTrait.php',
- 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php',
- 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php',
- 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php',
- 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
- 'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
- 'Sabre\\CalDAV\\Backend\\AbstractBackend' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php',
- 'Sabre\\CalDAV\\Backend\\BackendInterface' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/BackendInterface.php',
- 'Sabre\\CalDAV\\Backend\\NotificationSupport' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php',
- 'Sabre\\CalDAV\\Backend\\PDO' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/PDO.php',
- 'Sabre\\CalDAV\\Backend\\SchedulingSupport' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/SchedulingSupport.php',
- 'Sabre\\CalDAV\\Backend\\SharingSupport' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/SharingSupport.php',
- 'Sabre\\CalDAV\\Backend\\SimplePDO' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/SimplePDO.php',
- 'Sabre\\CalDAV\\Backend\\SubscriptionSupport' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/SubscriptionSupport.php',
- 'Sabre\\CalDAV\\Backend\\SyncSupport' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/SyncSupport.php',
- 'Sabre\\CalDAV\\Calendar' => $vendorDir . '/sabre/dav/lib/CalDAV/Calendar.php',
- 'Sabre\\CalDAV\\CalendarHome' => $vendorDir . '/sabre/dav/lib/CalDAV/CalendarHome.php',
- 'Sabre\\CalDAV\\CalendarObject' => $vendorDir . '/sabre/dav/lib/CalDAV/CalendarObject.php',
- 'Sabre\\CalDAV\\CalendarQueryValidator' => $vendorDir . '/sabre/dav/lib/CalDAV/CalendarQueryValidator.php',
- 'Sabre\\CalDAV\\CalendarRoot' => $vendorDir . '/sabre/dav/lib/CalDAV/CalendarRoot.php',
- 'Sabre\\CalDAV\\Exception\\InvalidComponentType' => $vendorDir . '/sabre/dav/lib/CalDAV/Exception/InvalidComponentType.php',
- 'Sabre\\CalDAV\\ICSExportPlugin' => $vendorDir . '/sabre/dav/lib/CalDAV/ICSExportPlugin.php',
- 'Sabre\\CalDAV\\ICalendar' => $vendorDir . '/sabre/dav/lib/CalDAV/ICalendar.php',
- 'Sabre\\CalDAV\\ICalendarObject' => $vendorDir . '/sabre/dav/lib/CalDAV/ICalendarObject.php',
- 'Sabre\\CalDAV\\ICalendarObjectContainer' => $vendorDir . '/sabre/dav/lib/CalDAV/ICalendarObjectContainer.php',
- 'Sabre\\CalDAV\\ISharedCalendar' => $vendorDir . '/sabre/dav/lib/CalDAV/ISharedCalendar.php',
- 'Sabre\\CalDAV\\Notifications\\Collection' => $vendorDir . '/sabre/dav/lib/CalDAV/Notifications/Collection.php',
- 'Sabre\\CalDAV\\Notifications\\ICollection' => $vendorDir . '/sabre/dav/lib/CalDAV/Notifications/ICollection.php',
- 'Sabre\\CalDAV\\Notifications\\INode' => $vendorDir . '/sabre/dav/lib/CalDAV/Notifications/INode.php',
- 'Sabre\\CalDAV\\Notifications\\Node' => $vendorDir . '/sabre/dav/lib/CalDAV/Notifications/Node.php',
- 'Sabre\\CalDAV\\Notifications\\Plugin' => $vendorDir . '/sabre/dav/lib/CalDAV/Notifications/Plugin.php',
- 'Sabre\\CalDAV\\Plugin' => $vendorDir . '/sabre/dav/lib/CalDAV/Plugin.php',
- 'Sabre\\CalDAV\\Principal\\Collection' => $vendorDir . '/sabre/dav/lib/CalDAV/Principal/Collection.php',
- 'Sabre\\CalDAV\\Principal\\IProxyRead' => $vendorDir . '/sabre/dav/lib/CalDAV/Principal/IProxyRead.php',
- 'Sabre\\CalDAV\\Principal\\IProxyWrite' => $vendorDir . '/sabre/dav/lib/CalDAV/Principal/IProxyWrite.php',
- 'Sabre\\CalDAV\\Principal\\ProxyRead' => $vendorDir . '/sabre/dav/lib/CalDAV/Principal/ProxyRead.php',
- 'Sabre\\CalDAV\\Principal\\ProxyWrite' => $vendorDir . '/sabre/dav/lib/CalDAV/Principal/ProxyWrite.php',
- 'Sabre\\CalDAV\\Principal\\User' => $vendorDir . '/sabre/dav/lib/CalDAV/Principal/User.php',
- 'Sabre\\CalDAV\\Schedule\\IInbox' => $vendorDir . '/sabre/dav/lib/CalDAV/Schedule/IInbox.php',
- 'Sabre\\CalDAV\\Schedule\\IMipPlugin' => $vendorDir . '/sabre/dav/lib/CalDAV/Schedule/IMipPlugin.php',
- 'Sabre\\CalDAV\\Schedule\\IOutbox' => $vendorDir . '/sabre/dav/lib/CalDAV/Schedule/IOutbox.php',
- 'Sabre\\CalDAV\\Schedule\\ISchedulingObject' => $vendorDir . '/sabre/dav/lib/CalDAV/Schedule/ISchedulingObject.php',
- 'Sabre\\CalDAV\\Schedule\\Inbox' => $vendorDir . '/sabre/dav/lib/CalDAV/Schedule/Inbox.php',
- 'Sabre\\CalDAV\\Schedule\\Outbox' => $vendorDir . '/sabre/dav/lib/CalDAV/Schedule/Outbox.php',
- 'Sabre\\CalDAV\\Schedule\\Plugin' => $vendorDir . '/sabre/dav/lib/CalDAV/Schedule/Plugin.php',
- 'Sabre\\CalDAV\\Schedule\\SchedulingObject' => $vendorDir . '/sabre/dav/lib/CalDAV/Schedule/SchedulingObject.php',
- 'Sabre\\CalDAV\\SharedCalendar' => $vendorDir . '/sabre/dav/lib/CalDAV/SharedCalendar.php',
- 'Sabre\\CalDAV\\SharingPlugin' => $vendorDir . '/sabre/dav/lib/CalDAV/SharingPlugin.php',
- 'Sabre\\CalDAV\\Subscriptions\\ISubscription' => $vendorDir . '/sabre/dav/lib/CalDAV/Subscriptions/ISubscription.php',
- 'Sabre\\CalDAV\\Subscriptions\\Plugin' => $vendorDir . '/sabre/dav/lib/CalDAV/Subscriptions/Plugin.php',
- 'Sabre\\CalDAV\\Subscriptions\\Subscription' => $vendorDir . '/sabre/dav/lib/CalDAV/Subscriptions/Subscription.php',
- 'Sabre\\CalDAV\\Xml\\Filter\\CalendarData' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Filter/CalendarData.php',
- 'Sabre\\CalDAV\\Xml\\Filter\\CompFilter' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Filter/CompFilter.php',
- 'Sabre\\CalDAV\\Xml\\Filter\\ParamFilter' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Filter/ParamFilter.php',
- 'Sabre\\CalDAV\\Xml\\Filter\\PropFilter' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Filter/PropFilter.php',
- 'Sabre\\CalDAV\\Xml\\Notification\\Invite' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Notification/Invite.php',
- 'Sabre\\CalDAV\\Xml\\Notification\\InviteReply' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Notification/InviteReply.php',
- 'Sabre\\CalDAV\\Xml\\Notification\\NotificationInterface' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Notification/NotificationInterface.php',
- 'Sabre\\CalDAV\\Xml\\Notification\\SystemStatus' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Notification/SystemStatus.php',
- 'Sabre\\CalDAV\\Xml\\Property\\AllowedSharingModes' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Property/AllowedSharingModes.php',
- 'Sabre\\CalDAV\\Xml\\Property\\EmailAddressSet' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Property/EmailAddressSet.php',
- 'Sabre\\CalDAV\\Xml\\Property\\Invite' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Property/Invite.php',
- 'Sabre\\CalDAV\\Xml\\Property\\ScheduleCalendarTransp' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Property/ScheduleCalendarTransp.php',
- 'Sabre\\CalDAV\\Xml\\Property\\SupportedCalendarComponentSet' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarComponentSet.php',
- 'Sabre\\CalDAV\\Xml\\Property\\SupportedCalendarData' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarData.php',
- 'Sabre\\CalDAV\\Xml\\Property\\SupportedCollationSet' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Property/SupportedCollationSet.php',
- 'Sabre\\CalDAV\\Xml\\Request\\CalendarMultiGetReport' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php',
- 'Sabre\\CalDAV\\Xml\\Request\\CalendarQueryReport' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php',
- 'Sabre\\CalDAV\\Xml\\Request\\FreeBusyQueryReport' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Request/FreeBusyQueryReport.php',
- 'Sabre\\CalDAV\\Xml\\Request\\InviteReply' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Request/InviteReply.php',
- 'Sabre\\CalDAV\\Xml\\Request\\MkCalendar' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Request/MkCalendar.php',
- 'Sabre\\CalDAV\\Xml\\Request\\Share' => $vendorDir . '/sabre/dav/lib/CalDAV/Xml/Request/Share.php',
- 'Sabre\\CardDAV\\AddressBook' => $vendorDir . '/sabre/dav/lib/CardDAV/AddressBook.php',
- 'Sabre\\CardDAV\\AddressBookHome' => $vendorDir . '/sabre/dav/lib/CardDAV/AddressBookHome.php',
- 'Sabre\\CardDAV\\AddressBookRoot' => $vendorDir . '/sabre/dav/lib/CardDAV/AddressBookRoot.php',
- 'Sabre\\CardDAV\\Backend\\AbstractBackend' => $vendorDir . '/sabre/dav/lib/CardDAV/Backend/AbstractBackend.php',
- 'Sabre\\CardDAV\\Backend\\BackendInterface' => $vendorDir . '/sabre/dav/lib/CardDAV/Backend/BackendInterface.php',
- 'Sabre\\CardDAV\\Backend\\PDO' => $vendorDir . '/sabre/dav/lib/CardDAV/Backend/PDO.php',
- 'Sabre\\CardDAV\\Backend\\SyncSupport' => $vendorDir . '/sabre/dav/lib/CardDAV/Backend/SyncSupport.php',
- 'Sabre\\CardDAV\\Card' => $vendorDir . '/sabre/dav/lib/CardDAV/Card.php',
- 'Sabre\\CardDAV\\IAddressBook' => $vendorDir . '/sabre/dav/lib/CardDAV/IAddressBook.php',
- 'Sabre\\CardDAV\\ICard' => $vendorDir . '/sabre/dav/lib/CardDAV/ICard.php',
- 'Sabre\\CardDAV\\IDirectory' => $vendorDir . '/sabre/dav/lib/CardDAV/IDirectory.php',
- 'Sabre\\CardDAV\\Plugin' => $vendorDir . '/sabre/dav/lib/CardDAV/Plugin.php',
- 'Sabre\\CardDAV\\VCFExportPlugin' => $vendorDir . '/sabre/dav/lib/CardDAV/VCFExportPlugin.php',
- 'Sabre\\CardDAV\\Xml\\Filter\\AddressData' => $vendorDir . '/sabre/dav/lib/CardDAV/Xml/Filter/AddressData.php',
- 'Sabre\\CardDAV\\Xml\\Filter\\ParamFilter' => $vendorDir . '/sabre/dav/lib/CardDAV/Xml/Filter/ParamFilter.php',
- 'Sabre\\CardDAV\\Xml\\Filter\\PropFilter' => $vendorDir . '/sabre/dav/lib/CardDAV/Xml/Filter/PropFilter.php',
- 'Sabre\\CardDAV\\Xml\\Property\\SupportedAddressData' => $vendorDir . '/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php',
- 'Sabre\\CardDAV\\Xml\\Property\\SupportedCollationSet' => $vendorDir . '/sabre/dav/lib/CardDAV/Xml/Property/SupportedCollationSet.php',
- 'Sabre\\CardDAV\\Xml\\Request\\AddressBookMultiGetReport' => $vendorDir . '/sabre/dav/lib/CardDAV/Xml/Request/AddressBookMultiGetReport.php',
- 'Sabre\\CardDAV\\Xml\\Request\\AddressBookQueryReport' => $vendorDir . '/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php',
- 'Sabre\\DAVACL\\ACLTrait' => $vendorDir . '/sabre/dav/lib/DAVACL/ACLTrait.php',
- 'Sabre\\DAVACL\\AbstractPrincipalCollection' => $vendorDir . '/sabre/dav/lib/DAVACL/AbstractPrincipalCollection.php',
- 'Sabre\\DAVACL\\Exception\\AceConflict' => $vendorDir . '/sabre/dav/lib/DAVACL/Exception/AceConflict.php',
- 'Sabre\\DAVACL\\Exception\\NeedPrivileges' => $vendorDir . '/sabre/dav/lib/DAVACL/Exception/NeedPrivileges.php',
- 'Sabre\\DAVACL\\Exception\\NoAbstract' => $vendorDir . '/sabre/dav/lib/DAVACL/Exception/NoAbstract.php',
- 'Sabre\\DAVACL\\Exception\\NotRecognizedPrincipal' => $vendorDir . '/sabre/dav/lib/DAVACL/Exception/NotRecognizedPrincipal.php',
- 'Sabre\\DAVACL\\Exception\\NotSupportedPrivilege' => $vendorDir . '/sabre/dav/lib/DAVACL/Exception/NotSupportedPrivilege.php',
- 'Sabre\\DAVACL\\FS\\Collection' => $vendorDir . '/sabre/dav/lib/DAVACL/FS/Collection.php',
- 'Sabre\\DAVACL\\FS\\File' => $vendorDir . '/sabre/dav/lib/DAVACL/FS/File.php',
- 'Sabre\\DAVACL\\FS\\HomeCollection' => $vendorDir . '/sabre/dav/lib/DAVACL/FS/HomeCollection.php',
- 'Sabre\\DAVACL\\IACL' => $vendorDir . '/sabre/dav/lib/DAVACL/IACL.php',
- 'Sabre\\DAVACL\\IPrincipal' => $vendorDir . '/sabre/dav/lib/DAVACL/IPrincipal.php',
- 'Sabre\\DAVACL\\IPrincipalCollection' => $vendorDir . '/sabre/dav/lib/DAVACL/IPrincipalCollection.php',
- 'Sabre\\DAVACL\\Plugin' => $vendorDir . '/sabre/dav/lib/DAVACL/Plugin.php',
- 'Sabre\\DAVACL\\Principal' => $vendorDir . '/sabre/dav/lib/DAVACL/Principal.php',
- 'Sabre\\DAVACL\\PrincipalBackend\\AbstractBackend' => $vendorDir . '/sabre/dav/lib/DAVACL/PrincipalBackend/AbstractBackend.php',
- 'Sabre\\DAVACL\\PrincipalBackend\\BackendInterface' => $vendorDir . '/sabre/dav/lib/DAVACL/PrincipalBackend/BackendInterface.php',
- 'Sabre\\DAVACL\\PrincipalBackend\\CreatePrincipalSupport' => $vendorDir . '/sabre/dav/lib/DAVACL/PrincipalBackend/CreatePrincipalSupport.php',
- 'Sabre\\DAVACL\\PrincipalBackend\\PDO' => $vendorDir . '/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php',
- 'Sabre\\DAVACL\\PrincipalCollection' => $vendorDir . '/sabre/dav/lib/DAVACL/PrincipalCollection.php',
- 'Sabre\\DAVACL\\Xml\\Property\\Acl' => $vendorDir . '/sabre/dav/lib/DAVACL/Xml/Property/Acl.php',
- 'Sabre\\DAVACL\\Xml\\Property\\AclRestrictions' => $vendorDir . '/sabre/dav/lib/DAVACL/Xml/Property/AclRestrictions.php',
- 'Sabre\\DAVACL\\Xml\\Property\\CurrentUserPrivilegeSet' => $vendorDir . '/sabre/dav/lib/DAVACL/Xml/Property/CurrentUserPrivilegeSet.php',
- 'Sabre\\DAVACL\\Xml\\Property\\Principal' => $vendorDir . '/sabre/dav/lib/DAVACL/Xml/Property/Principal.php',
- 'Sabre\\DAVACL\\Xml\\Property\\SupportedPrivilegeSet' => $vendorDir . '/sabre/dav/lib/DAVACL/Xml/Property/SupportedPrivilegeSet.php',
- 'Sabre\\DAVACL\\Xml\\Request\\AclPrincipalPropSetReport' => $vendorDir . '/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php',
- 'Sabre\\DAVACL\\Xml\\Request\\ExpandPropertyReport' => $vendorDir . '/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php',
- 'Sabre\\DAVACL\\Xml\\Request\\PrincipalMatchReport' => $vendorDir . '/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php',
- 'Sabre\\DAVACL\\Xml\\Request\\PrincipalPropertySearchReport' => $vendorDir . '/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php',
- 'Sabre\\DAVACL\\Xml\\Request\\PrincipalSearchPropertySetReport' => $vendorDir . '/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php',
- 'Sabre\\DAV\\Auth\\Backend\\AbstractBasic' => $vendorDir . '/sabre/dav/lib/DAV/Auth/Backend/AbstractBasic.php',
- 'Sabre\\DAV\\Auth\\Backend\\AbstractBearer' => $vendorDir . '/sabre/dav/lib/DAV/Auth/Backend/AbstractBearer.php',
- 'Sabre\\DAV\\Auth\\Backend\\AbstractDigest' => $vendorDir . '/sabre/dav/lib/DAV/Auth/Backend/AbstractDigest.php',
- 'Sabre\\DAV\\Auth\\Backend\\Apache' => $vendorDir . '/sabre/dav/lib/DAV/Auth/Backend/Apache.php',
- 'Sabre\\DAV\\Auth\\Backend\\BackendInterface' => $vendorDir . '/sabre/dav/lib/DAV/Auth/Backend/BackendInterface.php',
- 'Sabre\\DAV\\Auth\\Backend\\BasicCallBack' => $vendorDir . '/sabre/dav/lib/DAV/Auth/Backend/BasicCallBack.php',
- 'Sabre\\DAV\\Auth\\Backend\\File' => $vendorDir . '/sabre/dav/lib/DAV/Auth/Backend/File.php',
- 'Sabre\\DAV\\Auth\\Backend\\PDO' => $vendorDir . '/sabre/dav/lib/DAV/Auth/Backend/PDO.php',
- 'Sabre\\DAV\\Auth\\Plugin' => $vendorDir . '/sabre/dav/lib/DAV/Auth/Plugin.php',
- 'Sabre\\DAV\\Browser\\GuessContentType' => $vendorDir . '/sabre/dav/lib/DAV/Browser/GuessContentType.php',
- 'Sabre\\DAV\\Browser\\HtmlOutput' => $vendorDir . '/sabre/dav/lib/DAV/Browser/HtmlOutput.php',
- 'Sabre\\DAV\\Browser\\HtmlOutputHelper' => $vendorDir . '/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php',
- 'Sabre\\DAV\\Browser\\MapGetToPropFind' => $vendorDir . '/sabre/dav/lib/DAV/Browser/MapGetToPropFind.php',
- 'Sabre\\DAV\\Browser\\Plugin' => $vendorDir . '/sabre/dav/lib/DAV/Browser/Plugin.php',
- 'Sabre\\DAV\\Browser\\PropFindAll' => $vendorDir . '/sabre/dav/lib/DAV/Browser/PropFindAll.php',
- 'Sabre\\DAV\\Client' => $vendorDir . '/sabre/dav/lib/DAV/Client.php',
- 'Sabre\\DAV\\Collection' => $vendorDir . '/sabre/dav/lib/DAV/Collection.php',
- 'Sabre\\DAV\\CorePlugin' => $vendorDir . '/sabre/dav/lib/DAV/CorePlugin.php',
- 'Sabre\\DAV\\Exception' => $vendorDir . '/sabre/dav/lib/DAV/Exception.php',
- 'Sabre\\DAV\\Exception\\BadRequest' => $vendorDir . '/sabre/dav/lib/DAV/Exception/BadRequest.php',
- 'Sabre\\DAV\\Exception\\Conflict' => $vendorDir . '/sabre/dav/lib/DAV/Exception/Conflict.php',
- 'Sabre\\DAV\\Exception\\ConflictingLock' => $vendorDir . '/sabre/dav/lib/DAV/Exception/ConflictingLock.php',
- 'Sabre\\DAV\\Exception\\Forbidden' => $vendorDir . '/sabre/dav/lib/DAV/Exception/Forbidden.php',
- 'Sabre\\DAV\\Exception\\InsufficientStorage' => $vendorDir . '/sabre/dav/lib/DAV/Exception/InsufficientStorage.php',
- 'Sabre\\DAV\\Exception\\InvalidResourceType' => $vendorDir . '/sabre/dav/lib/DAV/Exception/InvalidResourceType.php',
- 'Sabre\\DAV\\Exception\\InvalidSyncToken' => $vendorDir . '/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php',
- 'Sabre\\DAV\\Exception\\LengthRequired' => $vendorDir . '/sabre/dav/lib/DAV/Exception/LengthRequired.php',
- 'Sabre\\DAV\\Exception\\LockTokenMatchesRequestUri' => $vendorDir . '/sabre/dav/lib/DAV/Exception/LockTokenMatchesRequestUri.php',
- 'Sabre\\DAV\\Exception\\Locked' => $vendorDir . '/sabre/dav/lib/DAV/Exception/Locked.php',
- 'Sabre\\DAV\\Exception\\MethodNotAllowed' => $vendorDir . '/sabre/dav/lib/DAV/Exception/MethodNotAllowed.php',
- 'Sabre\\DAV\\Exception\\NotAuthenticated' => $vendorDir . '/sabre/dav/lib/DAV/Exception/NotAuthenticated.php',
- 'Sabre\\DAV\\Exception\\NotFound' => $vendorDir . '/sabre/dav/lib/DAV/Exception/NotFound.php',
- 'Sabre\\DAV\\Exception\\NotImplemented' => $vendorDir . '/sabre/dav/lib/DAV/Exception/NotImplemented.php',
- 'Sabre\\DAV\\Exception\\PaymentRequired' => $vendorDir . '/sabre/dav/lib/DAV/Exception/PaymentRequired.php',
- 'Sabre\\DAV\\Exception\\PreconditionFailed' => $vendorDir . '/sabre/dav/lib/DAV/Exception/PreconditionFailed.php',
- 'Sabre\\DAV\\Exception\\ReportNotSupported' => $vendorDir . '/sabre/dav/lib/DAV/Exception/ReportNotSupported.php',
- 'Sabre\\DAV\\Exception\\RequestedRangeNotSatisfiable' => $vendorDir . '/sabre/dav/lib/DAV/Exception/RequestedRangeNotSatisfiable.php',
- 'Sabre\\DAV\\Exception\\ServiceUnavailable' => $vendorDir . '/sabre/dav/lib/DAV/Exception/ServiceUnavailable.php',
- 'Sabre\\DAV\\Exception\\TooManyMatches' => $vendorDir . '/sabre/dav/lib/DAV/Exception/TooManyMatches.php',
- 'Sabre\\DAV\\Exception\\UnsupportedMediaType' => $vendorDir . '/sabre/dav/lib/DAV/Exception/UnsupportedMediaType.php',
- 'Sabre\\DAV\\FSExt\\Directory' => $vendorDir . '/sabre/dav/lib/DAV/FSExt/Directory.php',
- 'Sabre\\DAV\\FSExt\\File' => $vendorDir . '/sabre/dav/lib/DAV/FSExt/File.php',
- 'Sabre\\DAV\\FS\\Directory' => $vendorDir . '/sabre/dav/lib/DAV/FS/Directory.php',
- 'Sabre\\DAV\\FS\\File' => $vendorDir . '/sabre/dav/lib/DAV/FS/File.php',
- 'Sabre\\DAV\\FS\\Node' => $vendorDir . '/sabre/dav/lib/DAV/FS/Node.php',
- 'Sabre\\DAV\\File' => $vendorDir . '/sabre/dav/lib/DAV/File.php',
- 'Sabre\\DAV\\ICollection' => $vendorDir . '/sabre/dav/lib/DAV/ICollection.php',
- 'Sabre\\DAV\\IExtendedCollection' => $vendorDir . '/sabre/dav/lib/DAV/IExtendedCollection.php',
- 'Sabre\\DAV\\IFile' => $vendorDir . '/sabre/dav/lib/DAV/IFile.php',
- 'Sabre\\DAV\\IMoveTarget' => $vendorDir . '/sabre/dav/lib/DAV/IMoveTarget.php',
- 'Sabre\\DAV\\IMultiGet' => $vendorDir . '/sabre/dav/lib/DAV/IMultiGet.php',
- 'Sabre\\DAV\\INode' => $vendorDir . '/sabre/dav/lib/DAV/INode.php',
- 'Sabre\\DAV\\IProperties' => $vendorDir . '/sabre/dav/lib/DAV/IProperties.php',
- 'Sabre\\DAV\\IQuota' => $vendorDir . '/sabre/dav/lib/DAV/IQuota.php',
- 'Sabre\\DAV\\Locks\\Backend\\AbstractBackend' => $vendorDir . '/sabre/dav/lib/DAV/Locks/Backend/AbstractBackend.php',
- 'Sabre\\DAV\\Locks\\Backend\\BackendInterface' => $vendorDir . '/sabre/dav/lib/DAV/Locks/Backend/BackendInterface.php',
- 'Sabre\\DAV\\Locks\\Backend\\File' => $vendorDir . '/sabre/dav/lib/DAV/Locks/Backend/File.php',
- 'Sabre\\DAV\\Locks\\Backend\\PDO' => $vendorDir . '/sabre/dav/lib/DAV/Locks/Backend/PDO.php',
- 'Sabre\\DAV\\Locks\\LockInfo' => $vendorDir . '/sabre/dav/lib/DAV/Locks/LockInfo.php',
- 'Sabre\\DAV\\Locks\\Plugin' => $vendorDir . '/sabre/dav/lib/DAV/Locks/Plugin.php',
- 'Sabre\\DAV\\MkCol' => $vendorDir . '/sabre/dav/lib/DAV/MkCol.php',
- 'Sabre\\DAV\\Mount\\Plugin' => $vendorDir . '/sabre/dav/lib/DAV/Mount/Plugin.php',
- 'Sabre\\DAV\\Node' => $vendorDir . '/sabre/dav/lib/DAV/Node.php',
- 'Sabre\\DAV\\PartialUpdate\\IPatchSupport' => $vendorDir . '/sabre/dav/lib/DAV/PartialUpdate/IPatchSupport.php',
- 'Sabre\\DAV\\PartialUpdate\\Plugin' => $vendorDir . '/sabre/dav/lib/DAV/PartialUpdate/Plugin.php',
- 'Sabre\\DAV\\PropFind' => $vendorDir . '/sabre/dav/lib/DAV/PropFind.php',
- 'Sabre\\DAV\\PropPatch' => $vendorDir . '/sabre/dav/lib/DAV/PropPatch.php',
- 'Sabre\\DAV\\PropertyStorage\\Backend\\BackendInterface' => $vendorDir . '/sabre/dav/lib/DAV/PropertyStorage/Backend/BackendInterface.php',
- 'Sabre\\DAV\\PropertyStorage\\Backend\\PDO' => $vendorDir . '/sabre/dav/lib/DAV/PropertyStorage/Backend/PDO.php',
- 'Sabre\\DAV\\PropertyStorage\\Plugin' => $vendorDir . '/sabre/dav/lib/DAV/PropertyStorage/Plugin.php',
- 'Sabre\\DAV\\Server' => $vendorDir . '/sabre/dav/lib/DAV/Server.php',
- 'Sabre\\DAV\\ServerPlugin' => $vendorDir . '/sabre/dav/lib/DAV/ServerPlugin.php',
- 'Sabre\\DAV\\Sharing\\ISharedNode' => $vendorDir . '/sabre/dav/lib/DAV/Sharing/ISharedNode.php',
- 'Sabre\\DAV\\Sharing\\Plugin' => $vendorDir . '/sabre/dav/lib/DAV/Sharing/Plugin.php',
- 'Sabre\\DAV\\SimpleCollection' => $vendorDir . '/sabre/dav/lib/DAV/SimpleCollection.php',
- 'Sabre\\DAV\\SimpleFile' => $vendorDir . '/sabre/dav/lib/DAV/SimpleFile.php',
- 'Sabre\\DAV\\StringUtil' => $vendorDir . '/sabre/dav/lib/DAV/StringUtil.php',
- 'Sabre\\DAV\\Sync\\ISyncCollection' => $vendorDir . '/sabre/dav/lib/DAV/Sync/ISyncCollection.php',
- 'Sabre\\DAV\\Sync\\Plugin' => $vendorDir . '/sabre/dav/lib/DAV/Sync/Plugin.php',
- 'Sabre\\DAV\\TemporaryFileFilterPlugin' => $vendorDir . '/sabre/dav/lib/DAV/TemporaryFileFilterPlugin.php',
- 'Sabre\\DAV\\Tree' => $vendorDir . '/sabre/dav/lib/DAV/Tree.php',
- 'Sabre\\DAV\\UUIDUtil' => $vendorDir . '/sabre/dav/lib/DAV/UUIDUtil.php',
- 'Sabre\\DAV\\Version' => $vendorDir . '/sabre/dav/lib/DAV/Version.php',
- 'Sabre\\DAV\\Xml\\Element\\Prop' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Element/Prop.php',
- 'Sabre\\DAV\\Xml\\Element\\Response' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Element/Response.php',
- 'Sabre\\DAV\\Xml\\Element\\Sharee' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Element/Sharee.php',
- 'Sabre\\DAV\\Xml\\Property\\Complex' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Property/Complex.php',
- 'Sabre\\DAV\\Xml\\Property\\GetLastModified' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Property/GetLastModified.php',
- 'Sabre\\DAV\\Xml\\Property\\Href' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Property/Href.php',
- 'Sabre\\DAV\\Xml\\Property\\Invite' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Property/Invite.php',
- 'Sabre\\DAV\\Xml\\Property\\LocalHref' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Property/LocalHref.php',
- 'Sabre\\DAV\\Xml\\Property\\LockDiscovery' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Property/LockDiscovery.php',
- 'Sabre\\DAV\\Xml\\Property\\ResourceType' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Property/ResourceType.php',
- 'Sabre\\DAV\\Xml\\Property\\ShareAccess' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Property/ShareAccess.php',
- 'Sabre\\DAV\\Xml\\Property\\SupportedLock' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Property/SupportedLock.php',
- 'Sabre\\DAV\\Xml\\Property\\SupportedMethodSet' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Property/SupportedMethodSet.php',
- 'Sabre\\DAV\\Xml\\Property\\SupportedReportSet' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Property/SupportedReportSet.php',
- 'Sabre\\DAV\\Xml\\Request\\Lock' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Request/Lock.php',
- 'Sabre\\DAV\\Xml\\Request\\MkCol' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Request/MkCol.php',
- 'Sabre\\DAV\\Xml\\Request\\PropFind' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Request/PropFind.php',
- 'Sabre\\DAV\\Xml\\Request\\PropPatch' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Request/PropPatch.php',
- 'Sabre\\DAV\\Xml\\Request\\ShareResource' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Request/ShareResource.php',
- 'Sabre\\DAV\\Xml\\Request\\SyncCollectionReport' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Request/SyncCollectionReport.php',
- 'Sabre\\DAV\\Xml\\Response\\MultiStatus' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php',
- 'Sabre\\DAV\\Xml\\Service' => $vendorDir . '/sabre/dav/lib/DAV/Xml/Service.php',
- 'Sabre\\Event\\EventEmitter' => $vendorDir . '/sabre/event/lib/EventEmitter.php',
- 'Sabre\\Event\\EventEmitterInterface' => $vendorDir . '/sabre/event/lib/EventEmitterInterface.php',
- 'Sabre\\Event\\EventEmitterTrait' => $vendorDir . '/sabre/event/lib/EventEmitterTrait.php',
- 'Sabre\\Event\\Loop\\Loop' => $vendorDir . '/sabre/event/lib/Loop/Loop.php',
- 'Sabre\\Event\\Promise' => $vendorDir . '/sabre/event/lib/Promise.php',
- 'Sabre\\Event\\PromiseAlreadyResolvedException' => $vendorDir . '/sabre/event/lib/PromiseAlreadyResolvedException.php',
- 'Sabre\\Event\\Version' => $vendorDir . '/sabre/event/lib/Version.php',
- 'Sabre\\HTTP\\Auth\\AWS' => $vendorDir . '/sabre/http/lib/Auth/AWS.php',
- 'Sabre\\HTTP\\Auth\\AbstractAuth' => $vendorDir . '/sabre/http/lib/Auth/AbstractAuth.php',
- 'Sabre\\HTTP\\Auth\\Basic' => $vendorDir . '/sabre/http/lib/Auth/Basic.php',
- 'Sabre\\HTTP\\Auth\\Bearer' => $vendorDir . '/sabre/http/lib/Auth/Bearer.php',
- 'Sabre\\HTTP\\Auth\\Digest' => $vendorDir . '/sabre/http/lib/Auth/Digest.php',
- 'Sabre\\HTTP\\Client' => $vendorDir . '/sabre/http/lib/Client.php',
- 'Sabre\\HTTP\\ClientException' => $vendorDir . '/sabre/http/lib/ClientException.php',
- 'Sabre\\HTTP\\ClientHttpException' => $vendorDir . '/sabre/http/lib/ClientHttpException.php',
- 'Sabre\\HTTP\\HttpException' => $vendorDir . '/sabre/http/lib/HttpException.php',
- 'Sabre\\HTTP\\Message' => $vendorDir . '/sabre/http/lib/Message.php',
- 'Sabre\\HTTP\\MessageDecoratorTrait' => $vendorDir . '/sabre/http/lib/MessageDecoratorTrait.php',
- 'Sabre\\HTTP\\MessageInterface' => $vendorDir . '/sabre/http/lib/MessageInterface.php',
- 'Sabre\\HTTP\\Request' => $vendorDir . '/sabre/http/lib/Request.php',
- 'Sabre\\HTTP\\RequestDecorator' => $vendorDir . '/sabre/http/lib/RequestDecorator.php',
- 'Sabre\\HTTP\\RequestInterface' => $vendorDir . '/sabre/http/lib/RequestInterface.php',
- 'Sabre\\HTTP\\Response' => $vendorDir . '/sabre/http/lib/Response.php',
- 'Sabre\\HTTP\\ResponseDecorator' => $vendorDir . '/sabre/http/lib/ResponseDecorator.php',
- 'Sabre\\HTTP\\ResponseInterface' => $vendorDir . '/sabre/http/lib/ResponseInterface.php',
- 'Sabre\\HTTP\\Sapi' => $vendorDir . '/sabre/http/lib/Sapi.php',
- 'Sabre\\HTTP\\URLUtil' => $vendorDir . '/sabre/http/lib/URLUtil.php',
- 'Sabre\\HTTP\\Util' => $vendorDir . '/sabre/http/lib/Util.php',
- 'Sabre\\HTTP\\Version' => $vendorDir . '/sabre/http/lib/Version.php',
- 'Sabre\\Uri\\Version' => $vendorDir . '/sabre/uri/lib/Version.php',
- 'Sabre\\VObject\\BirthdayCalendarGenerator' => $vendorDir . '/sabre/vobject/lib/BirthdayCalendarGenerator.php',
- 'Sabre\\VObject\\Cli' => $vendorDir . '/sabre/vobject/lib/Cli.php',
- 'Sabre\\VObject\\Component' => $vendorDir . '/sabre/vobject/lib/Component.php',
- 'Sabre\\VObject\\Component\\Available' => $vendorDir . '/sabre/vobject/lib/Component/Available.php',
- 'Sabre\\VObject\\Component\\VAlarm' => $vendorDir . '/sabre/vobject/lib/Component/VAlarm.php',
- 'Sabre\\VObject\\Component\\VAvailability' => $vendorDir . '/sabre/vobject/lib/Component/VAvailability.php',
- 'Sabre\\VObject\\Component\\VCalendar' => $vendorDir . '/sabre/vobject/lib/Component/VCalendar.php',
- 'Sabre\\VObject\\Component\\VCard' => $vendorDir . '/sabre/vobject/lib/Component/VCard.php',
- 'Sabre\\VObject\\Component\\VEvent' => $vendorDir . '/sabre/vobject/lib/Component/VEvent.php',
- 'Sabre\\VObject\\Component\\VFreeBusy' => $vendorDir . '/sabre/vobject/lib/Component/VFreeBusy.php',
- 'Sabre\\VObject\\Component\\VJournal' => $vendorDir . '/sabre/vobject/lib/Component/VJournal.php',
- 'Sabre\\VObject\\Component\\VTimeZone' => $vendorDir . '/sabre/vobject/lib/Component/VTimeZone.php',
- 'Sabre\\VObject\\Component\\VTodo' => $vendorDir . '/sabre/vobject/lib/Component/VTodo.php',
- 'Sabre\\VObject\\DateTimeParser' => $vendorDir . '/sabre/vobject/lib/DateTimeParser.php',
- 'Sabre\\VObject\\Document' => $vendorDir . '/sabre/vobject/lib/Document.php',
- 'Sabre\\VObject\\ElementList' => $vendorDir . '/sabre/vobject/lib/ElementList.php',
- 'Sabre\\VObject\\EofException' => $vendorDir . '/sabre/vobject/lib/EofException.php',
- 'Sabre\\VObject\\FreeBusyData' => $vendorDir . '/sabre/vobject/lib/FreeBusyData.php',
- 'Sabre\\VObject\\FreeBusyGenerator' => $vendorDir . '/sabre/vobject/lib/FreeBusyGenerator.php',
- 'Sabre\\VObject\\ITip\\Broker' => $vendorDir . '/sabre/vobject/lib/ITip/Broker.php',
- 'Sabre\\VObject\\ITip\\ITipException' => $vendorDir . '/sabre/vobject/lib/ITip/ITipException.php',
- 'Sabre\\VObject\\ITip\\Message' => $vendorDir . '/sabre/vobject/lib/ITip/Message.php',
- 'Sabre\\VObject\\ITip\\SameOrganizerForAllComponentsException' => $vendorDir . '/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php',
- 'Sabre\\VObject\\InvalidDataException' => $vendorDir . '/sabre/vobject/lib/InvalidDataException.php',
- 'Sabre\\VObject\\Node' => $vendorDir . '/sabre/vobject/lib/Node.php',
- 'Sabre\\VObject\\PHPUnitAssertions' => $vendorDir . '/sabre/vobject/lib/PHPUnitAssertions.php',
- 'Sabre\\VObject\\Parameter' => $vendorDir . '/sabre/vobject/lib/Parameter.php',
- 'Sabre\\VObject\\ParseException' => $vendorDir . '/sabre/vobject/lib/ParseException.php',
- 'Sabre\\VObject\\Parser\\Json' => $vendorDir . '/sabre/vobject/lib/Parser/Json.php',
- 'Sabre\\VObject\\Parser\\MimeDir' => $vendorDir . '/sabre/vobject/lib/Parser/MimeDir.php',
- 'Sabre\\VObject\\Parser\\Parser' => $vendorDir . '/sabre/vobject/lib/Parser/Parser.php',
- 'Sabre\\VObject\\Parser\\XML' => $vendorDir . '/sabre/vobject/lib/Parser/XML.php',
- 'Sabre\\VObject\\Parser\\XML\\Element\\KeyValue' => $vendorDir . '/sabre/vobject/lib/Parser/XML/Element/KeyValue.php',
- 'Sabre\\VObject\\Property' => $vendorDir . '/sabre/vobject/lib/Property.php',
- 'Sabre\\VObject\\Property\\Binary' => $vendorDir . '/sabre/vobject/lib/Property/Binary.php',
- 'Sabre\\VObject\\Property\\Boolean' => $vendorDir . '/sabre/vobject/lib/Property/Boolean.php',
- 'Sabre\\VObject\\Property\\FlatText' => $vendorDir . '/sabre/vobject/lib/Property/FlatText.php',
- 'Sabre\\VObject\\Property\\FloatValue' => $vendorDir . '/sabre/vobject/lib/Property/FloatValue.php',
- 'Sabre\\VObject\\Property\\ICalendar\\CalAddress' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/CalAddress.php',
- 'Sabre\\VObject\\Property\\ICalendar\\Date' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/Date.php',
- 'Sabre\\VObject\\Property\\ICalendar\\DateTime' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/DateTime.php',
- 'Sabre\\VObject\\Property\\ICalendar\\Duration' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/Duration.php',
- 'Sabre\\VObject\\Property\\ICalendar\\Period' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/Period.php',
- 'Sabre\\VObject\\Property\\ICalendar\\Recur' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/Recur.php',
- 'Sabre\\VObject\\Property\\IntegerValue' => $vendorDir . '/sabre/vobject/lib/Property/IntegerValue.php',
- 'Sabre\\VObject\\Property\\Text' => $vendorDir . '/sabre/vobject/lib/Property/Text.php',
- 'Sabre\\VObject\\Property\\Time' => $vendorDir . '/sabre/vobject/lib/Property/Time.php',
- 'Sabre\\VObject\\Property\\Unknown' => $vendorDir . '/sabre/vobject/lib/Property/Unknown.php',
- 'Sabre\\VObject\\Property\\Uri' => $vendorDir . '/sabre/vobject/lib/Property/Uri.php',
- 'Sabre\\VObject\\Property\\UtcOffset' => $vendorDir . '/sabre/vobject/lib/Property/UtcOffset.php',
- 'Sabre\\VObject\\Property\\VCard\\Date' => $vendorDir . '/sabre/vobject/lib/Property/VCard/Date.php',
- 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime' => $vendorDir . '/sabre/vobject/lib/Property/VCard/DateAndOrTime.php',
- 'Sabre\\VObject\\Property\\VCard\\DateTime' => $vendorDir . '/sabre/vobject/lib/Property/VCard/DateTime.php',
- 'Sabre\\VObject\\Property\\VCard\\LanguageTag' => $vendorDir . '/sabre/vobject/lib/Property/VCard/LanguageTag.php',
- 'Sabre\\VObject\\Property\\VCard\\TimeStamp' => $vendorDir . '/sabre/vobject/lib/Property/VCard/TimeStamp.php',
- 'Sabre\\VObject\\Reader' => $vendorDir . '/sabre/vobject/lib/Reader.php',
- 'Sabre\\VObject\\Recur\\EventIterator' => $vendorDir . '/sabre/vobject/lib/Recur/EventIterator.php',
- 'Sabre\\VObject\\Recur\\MaxInstancesExceededException' => $vendorDir . '/sabre/vobject/lib/Recur/MaxInstancesExceededException.php',
- 'Sabre\\VObject\\Recur\\NoInstancesException' => $vendorDir . '/sabre/vobject/lib/Recur/NoInstancesException.php',
- 'Sabre\\VObject\\Recur\\RDateIterator' => $vendorDir . '/sabre/vobject/lib/Recur/RDateIterator.php',
- 'Sabre\\VObject\\Recur\\RRuleIterator' => $vendorDir . '/sabre/vobject/lib/Recur/RRuleIterator.php',
- 'Sabre\\VObject\\Settings' => $vendorDir . '/sabre/vobject/lib/Settings.php',
- 'Sabre\\VObject\\Splitter\\ICalendar' => $vendorDir . '/sabre/vobject/lib/Splitter/ICalendar.php',
- 'Sabre\\VObject\\Splitter\\SplitterInterface' => $vendorDir . '/sabre/vobject/lib/Splitter/SplitterInterface.php',
- 'Sabre\\VObject\\Splitter\\VCard' => $vendorDir . '/sabre/vobject/lib/Splitter/VCard.php',
- 'Sabre\\VObject\\StringUtil' => $vendorDir . '/sabre/vobject/lib/StringUtil.php',
- 'Sabre\\VObject\\TimeZoneUtil' => $vendorDir . '/sabre/vobject/lib/TimeZoneUtil.php',
- 'Sabre\\VObject\\UUIDUtil' => $vendorDir . '/sabre/vobject/lib/UUIDUtil.php',
- 'Sabre\\VObject\\VCardConverter' => $vendorDir . '/sabre/vobject/lib/VCardConverter.php',
- 'Sabre\\VObject\\Version' => $vendorDir . '/sabre/vobject/lib/Version.php',
- 'Sabre\\VObject\\Writer' => $vendorDir . '/sabre/vobject/lib/Writer.php',
- 'Sabre\\Xml\\ContextStackTrait' => $vendorDir . '/sabre/xml/lib/ContextStackTrait.php',
- 'Sabre\\Xml\\Element' => $vendorDir . '/sabre/xml/lib/Element.php',
- 'Sabre\\Xml\\Element\\Base' => $vendorDir . '/sabre/xml/lib/Element/Base.php',
- 'Sabre\\Xml\\Element\\Cdata' => $vendorDir . '/sabre/xml/lib/Element/Cdata.php',
- 'Sabre\\Xml\\Element\\Elements' => $vendorDir . '/sabre/xml/lib/Element/Elements.php',
- 'Sabre\\Xml\\Element\\KeyValue' => $vendorDir . '/sabre/xml/lib/Element/KeyValue.php',
- 'Sabre\\Xml\\Element\\Uri' => $vendorDir . '/sabre/xml/lib/Element/Uri.php',
- 'Sabre\\Xml\\Element\\XmlFragment' => $vendorDir . '/sabre/xml/lib/Element/XmlFragment.php',
- 'Sabre\\Xml\\LibXMLException' => $vendorDir . '/sabre/xml/lib/LibXMLException.php',
- 'Sabre\\Xml\\ParseException' => $vendorDir . '/sabre/xml/lib/ParseException.php',
- 'Sabre\\Xml\\Reader' => $vendorDir . '/sabre/xml/lib/Reader.php',
- 'Sabre\\Xml\\Service' => $vendorDir . '/sabre/xml/lib/Service.php',
- 'Sabre\\Xml\\Version' => $vendorDir . '/sabre/xml/lib/Version.php',
- 'Sabre\\Xml\\Writer' => $vendorDir . '/sabre/xml/lib/Writer.php',
- 'Sabre\\Xml\\XmlDeserializable' => $vendorDir . '/sabre/xml/lib/XmlDeserializable.php',
- 'Sabre\\Xml\\XmlSerializable' => $vendorDir . '/sabre/xml/lib/XmlSerializable.php',
- 'Zotlabs\\Access\\AccessList' => $baseDir . '/Zotlabs/Access/AccessList.php',
- 'Zotlabs\\Access\\PermissionLimits' => $baseDir . '/Zotlabs/Access/PermissionLimits.php',
- 'Zotlabs\\Access\\PermissionRoles' => $baseDir . '/Zotlabs/Access/PermissionRoles.php',
- 'Zotlabs\\Access\\Permissions' => $baseDir . '/Zotlabs/Access/Permissions.php',
- 'Zotlabs\\Daemon\\Addon' => $baseDir . '/Zotlabs/Daemon/Addon.php',
- 'Zotlabs\\Daemon\\Checksites' => $baseDir . '/Zotlabs/Daemon/Checksites.php',
- 'Zotlabs\\Daemon\\Cli_suggest' => $baseDir . '/Zotlabs/Daemon/Cli_suggest.php',
- 'Zotlabs\\Daemon\\Cron' => $baseDir . '/Zotlabs/Daemon/Cron.php',
- 'Zotlabs\\Daemon\\Cron_daily' => $baseDir . '/Zotlabs/Daemon/Cron_daily.php',
- 'Zotlabs\\Daemon\\Cron_weekly' => $baseDir . '/Zotlabs/Daemon/Cron_weekly.php',
- 'Zotlabs\\Daemon\\Cronhooks' => $baseDir . '/Zotlabs/Daemon/Cronhooks.php',
- 'Zotlabs\\Daemon\\CurlAuth' => $baseDir . '/Zotlabs/Daemon/CurlAuth.php',
- 'Zotlabs\\Daemon\\Deliver' => $baseDir . '/Zotlabs/Daemon/Deliver.php',
- 'Zotlabs\\Daemon\\Deliver_hooks' => $baseDir . '/Zotlabs/Daemon/Deliver_hooks.php',
- 'Zotlabs\\Daemon\\Directory' => $baseDir . '/Zotlabs/Daemon/Directory.php',
- 'Zotlabs\\Daemon\\Expire' => $baseDir . '/Zotlabs/Daemon/Expire.php',
- 'Zotlabs\\Daemon\\Externals' => $baseDir . '/Zotlabs/Daemon/Externals.php',
- 'Zotlabs\\Daemon\\Gprobe' => $baseDir . '/Zotlabs/Daemon/Gprobe.php',
- 'Zotlabs\\Daemon\\Importdoc' => $baseDir . '/Zotlabs/Daemon/Importdoc.php',
- 'Zotlabs\\Daemon\\Master' => $baseDir . '/Zotlabs/Daemon/Master.php',
- 'Zotlabs\\Daemon\\Notifier' => $baseDir . '/Zotlabs/Daemon/Notifier.php',
- 'Zotlabs\\Daemon\\Onedirsync' => $baseDir . '/Zotlabs/Daemon/Onedirsync.php',
- 'Zotlabs\\Daemon\\Onepoll' => $baseDir . '/Zotlabs/Daemon/Onepoll.php',
- 'Zotlabs\\Daemon\\Poller' => $baseDir . '/Zotlabs/Daemon/Poller.php',
- 'Zotlabs\\Daemon\\Queue' => $baseDir . '/Zotlabs/Daemon/Queue.php',
- 'Zotlabs\\Daemon\\Ratenotif' => $baseDir . '/Zotlabs/Daemon/Ratenotif.php',
- 'Zotlabs\\Extend\\Hook' => $baseDir . '/Zotlabs/Extend/Hook.php',
- 'Zotlabs\\Identity\\BasicId\\BasicId' => $baseDir . '/Zotlabs/Identity/BasicId.php',
- 'Zotlabs\\Identity\\ProfilePhoto\\ProfilePhoto' => $baseDir . '/Zotlabs/Identity/ProfilePhoto.php',
- 'Zotlabs\\Lib\\AConfig' => $baseDir . '/Zotlabs/Lib/AConfig.php',
- 'Zotlabs\\Lib\\AbConfig' => $baseDir . '/Zotlabs/Lib/AbConfig.php',
- 'Zotlabs\\Lib\\Api_router' => $baseDir . '/Zotlabs/Lib/Api_router.php',
- 'Zotlabs\\Lib\\Apps' => $baseDir . '/Zotlabs/Lib/Apps.php',
- 'Zotlabs\\Lib\\Cache' => $baseDir . '/Zotlabs/Lib/Cache.php',
- 'Zotlabs\\Lib\\Chatroom' => $baseDir . '/Zotlabs/Lib/Chatroom.php',
- 'Zotlabs\\Lib\\Config' => $baseDir . '/Zotlabs/Lib/Config.php',
- 'Zotlabs\\Lib\\Enotify' => $baseDir . '/Zotlabs/Lib/Enotify.php',
- 'Zotlabs\\Lib\\ExtendedZip' => $baseDir . '/Zotlabs/Lib/ExtendedZip.php',
- 'Zotlabs\\Lib\\IConfig' => $baseDir . '/Zotlabs/Lib/IConfig.php',
- 'Zotlabs\\Lib\\NativeWiki' => $baseDir . '/Zotlabs/Lib/NativeWiki.php',
- 'Zotlabs\\Lib\\NativeWikiPage' => $baseDir . '/Zotlabs/Lib/NativeWikiPage.php',
- 'Zotlabs\\Lib\\PConfig' => $baseDir . '/Zotlabs/Lib/PConfig.php',
- 'Zotlabs\\Lib\\Permcat' => $baseDir . '/Zotlabs/Lib/Permcat.php',
- 'Zotlabs\\Lib\\PermissionDescription' => $baseDir . '/Zotlabs/Lib/PermissionDescription.php',
- 'Zotlabs\\Lib\\ProtoDriver' => $baseDir . '/Zotlabs/Lib/ProtoDriver.php',
- 'Zotlabs\\Lib\\SuperCurl' => $baseDir . '/Zotlabs/Lib/SuperCurl.php',
- 'Zotlabs\\Lib\\System' => $baseDir . '/Zotlabs/Lib/System.php',
- 'Zotlabs\\Lib\\Techlevels' => $baseDir . '/Zotlabs/Lib/Techlevels.php',
- 'Zotlabs\\Lib\\ThreadItem' => $baseDir . '/Zotlabs/Lib/ThreadItem.php',
- 'Zotlabs\\Lib\\ThreadStream' => $baseDir . '/Zotlabs/Lib/ThreadStream.php',
- 'Zotlabs\\Lib\\XConfig' => $baseDir . '/Zotlabs/Lib/XConfig.php',
- 'Zotlabs\\Lib\\ZotDriver' => $baseDir . '/Zotlabs/Lib/ZotDriver.php',
- 'Zotlabs\\Module\\Achievements' => $baseDir . '/Zotlabs/Module/Achievements.php',
- 'Zotlabs\\Module\\Acl' => $baseDir . '/Zotlabs/Module/Acl.php',
- 'Zotlabs\\Module\\Admin' => $baseDir . '/Zotlabs/Module/Admin.php',
- 'Zotlabs\\Module\\Admin\\Account_edit' => $baseDir . '/Zotlabs/Module/Admin/Account_edit.php',
- 'Zotlabs\\Module\\Admin\\Accounts' => $baseDir . '/Zotlabs/Module/Admin/Accounts.php',
- 'Zotlabs\\Module\\Admin\\Channels' => $baseDir . '/Zotlabs/Module/Admin/Channels.php',
- 'Zotlabs\\Module\\Admin\\Dbsync' => $baseDir . '/Zotlabs/Module/Admin/Dbsync.php',
- 'Zotlabs\\Module\\Admin\\Features' => $baseDir . '/Zotlabs/Module/Admin/Features.php',
- 'Zotlabs\\Module\\Admin\\Logs' => $baseDir . '/Zotlabs/Module/Admin/Logs.php',
- 'Zotlabs\\Module\\Admin\\Plugins' => $baseDir . '/Zotlabs/Module/Admin/Plugins.php',
- 'Zotlabs\\Module\\Admin\\Profs' => $baseDir . '/Zotlabs/Module/Admin/Profs.php',
- 'Zotlabs\\Module\\Admin\\Queue' => $baseDir . '/Zotlabs/Module/Admin/Queue.php',
- 'Zotlabs\\Module\\Admin\\Security' => $baseDir . '/Zotlabs/Module/Admin/Security.php',
- 'Zotlabs\\Module\\Admin\\Site' => $baseDir . '/Zotlabs/Module/Admin/Site.php',
- 'Zotlabs\\Module\\Admin\\Themes' => $baseDir . '/Zotlabs/Module/Admin/Themes.php',
- 'Zotlabs\\Module\\Api' => $baseDir . '/Zotlabs/Module/Api.php',
- 'Zotlabs\\Module\\Appman' => $baseDir . '/Zotlabs/Module/Appman.php',
- 'Zotlabs\\Module\\Apps' => $baseDir . '/Zotlabs/Module/Apps.php',
- 'Zotlabs\\Module\\Attach' => $baseDir . '/Zotlabs/Module/Attach.php',
- 'Zotlabs\\Module\\Authtest' => $baseDir . '/Zotlabs/Module/Authtest.php',
- 'Zotlabs\\Module\\Block' => $baseDir . '/Zotlabs/Module/Block.php',
- 'Zotlabs\\Module\\Blocks' => $baseDir . '/Zotlabs/Module/Blocks.php',
- 'Zotlabs\\Module\\Bookmarks' => $baseDir . '/Zotlabs/Module/Bookmarks.php',
- 'Zotlabs\\Module\\Branchtopic' => $baseDir . '/Zotlabs/Module/Branchtopic.php',
- 'Zotlabs\\Module\\Cal' => $baseDir . '/Zotlabs/Module/Cal.php',
- 'Zotlabs\\Module\\Channel' => $baseDir . '/Zotlabs/Module/Channel.php',
- 'Zotlabs\\Module\\Chanview' => $baseDir . '/Zotlabs/Module/Chanview.php',
- 'Zotlabs\\Module\\Chat' => $baseDir . '/Zotlabs/Module/Chat.php',
- 'Zotlabs\\Module\\Chatsvc' => $baseDir . '/Zotlabs/Module/Chatsvc.php',
- 'Zotlabs\\Module\\Cloud' => $baseDir . '/Zotlabs/Module/Cloud.php',
- 'Zotlabs\\Module\\Common' => $baseDir . '/Zotlabs/Module/Common.php',
- 'Zotlabs\\Module\\Connect' => $baseDir . '/Zotlabs/Module/Connect.php',
- 'Zotlabs\\Module\\Connections' => $baseDir . '/Zotlabs/Module/Connections.php',
- 'Zotlabs\\Module\\Connedit' => $baseDir . '/Zotlabs/Module/Connedit.php',
- 'Zotlabs\\Module\\Contactgroup' => $baseDir . '/Zotlabs/Module/Contactgroup.php',
- 'Zotlabs\\Module\\Cover_photo' => $baseDir . '/Zotlabs/Module/Cover_photo.php',
- 'Zotlabs\\Module\\Dav' => $baseDir . '/Zotlabs/Module/Dav.php',
- 'Zotlabs\\Module\\Directory' => $baseDir . '/Zotlabs/Module/Directory.php',
- 'Zotlabs\\Module\\Dirsearch' => $baseDir . '/Zotlabs/Module/Dirsearch.php',
- 'Zotlabs\\Module\\Display' => $baseDir . '/Zotlabs/Module/Display.php',
- 'Zotlabs\\Module\\Dreport' => $baseDir . '/Zotlabs/Module/Dreport.php',
- 'Zotlabs\\Module\\Editblock' => $baseDir . '/Zotlabs/Module/Editblock.php',
- 'Zotlabs\\Module\\Editlayout' => $baseDir . '/Zotlabs/Module/Editlayout.php',
- 'Zotlabs\\Module\\Editpost' => $baseDir . '/Zotlabs/Module/Editpost.php',
- 'Zotlabs\\Module\\Editwebpage' => $baseDir . '/Zotlabs/Module/Editwebpage.php',
- 'Zotlabs\\Module\\Embedphotos' => $baseDir . '/Zotlabs/Module/Embedphotos.php',
- 'Zotlabs\\Module\\Events' => $baseDir . '/Zotlabs/Module/Events.php',
- 'Zotlabs\\Module\\Fbrowser' => $baseDir . '/Zotlabs/Module/Fbrowser.php',
- 'Zotlabs\\Module\\Feed' => $baseDir . '/Zotlabs/Module/Feed.php',
- 'Zotlabs\\Module\\Fhublocs' => $baseDir . '/Zotlabs/Module/Fhublocs.php',
- 'Zotlabs\\Module\\File_upload' => $baseDir . '/Zotlabs/Module/File_upload.php',
- 'Zotlabs\\Module\\Filer' => $baseDir . '/Zotlabs/Module/Filer.php',
- 'Zotlabs\\Module\\Filerm' => $baseDir . '/Zotlabs/Module/Filerm.php',
- 'Zotlabs\\Module\\Filestorage' => $baseDir . '/Zotlabs/Module/Filestorage.php',
- 'Zotlabs\\Module\\Follow' => $baseDir . '/Zotlabs/Module/Follow.php',
- 'Zotlabs\\Module\\Getfile' => $baseDir . '/Zotlabs/Module/Getfile.php',
- 'Zotlabs\\Module\\Group' => $baseDir . '/Zotlabs/Module/Group.php',
- 'Zotlabs\\Module\\Hcard' => $baseDir . '/Zotlabs/Module/Hcard.php',
- 'Zotlabs\\Module\\Help' => $baseDir . '/Zotlabs/Module/Help.php',
- 'Zotlabs\\Module\\Home' => $baseDir . '/Zotlabs/Module/Home.php',
- 'Zotlabs\\Module\\Hostxrd' => $baseDir . '/Zotlabs/Module/Hostxrd.php',
- 'Zotlabs\\Module\\Impel' => $baseDir . '/Zotlabs/Module/Impel.php',
- 'Zotlabs\\Module\\Import' => $baseDir . '/Zotlabs/Module/Import.php',
- 'Zotlabs\\Module\\Import_items' => $baseDir . '/Zotlabs/Module/Import_items.php',
- 'Zotlabs\\Module\\Invite' => $baseDir . '/Zotlabs/Module/Invite.php',
- 'Zotlabs\\Module\\Item' => $baseDir . '/Zotlabs/Module/Item.php',
- 'Zotlabs\\Module\\Lang' => $baseDir . '/Zotlabs/Module/Lang.php',
- 'Zotlabs\\Module\\Layouts' => $baseDir . '/Zotlabs/Module/Layouts.php',
- 'Zotlabs\\Module\\Like' => $baseDir . '/Zotlabs/Module/Like.php',
- 'Zotlabs\\Module\\Linkinfo' => $baseDir . '/Zotlabs/Module/Linkinfo.php',
- 'Zotlabs\\Module\\Lockview' => $baseDir . '/Zotlabs/Module/Lockview.php',
- 'Zotlabs\\Module\\Locs' => $baseDir . '/Zotlabs/Module/Locs.php',
- 'Zotlabs\\Module\\Login' => $baseDir . '/Zotlabs/Module/Login.php',
- 'Zotlabs\\Module\\Lostpass' => $baseDir . '/Zotlabs/Module/Lostpass.php',
- 'Zotlabs\\Module\\Magic' => $baseDir . '/Zotlabs/Module/Magic.php',
- 'Zotlabs\\Module\\Mail' => $baseDir . '/Zotlabs/Module/Mail.php',
- 'Zotlabs\\Module\\Manage' => $baseDir . '/Zotlabs/Module/Manage.php',
- 'Zotlabs\\Module\\Menu' => $baseDir . '/Zotlabs/Module/Menu.php',
- 'Zotlabs\\Module\\Message' => $baseDir . '/Zotlabs/Module/Message.php',
- 'Zotlabs\\Module\\Mitem' => $baseDir . '/Zotlabs/Module/Mitem.php',
- 'Zotlabs\\Module\\Mood' => $baseDir . '/Zotlabs/Module/Mood.php',
- 'Zotlabs\\Module\\Network' => $baseDir . '/Zotlabs/Module/Network.php',
- 'Zotlabs\\Module\\New_channel' => $baseDir . '/Zotlabs/Module/New_channel.php',
- 'Zotlabs\\Module\\Nojs' => $baseDir . '/Zotlabs/Module/Nojs.php',
- 'Zotlabs\\Module\\Notes' => $baseDir . '/Zotlabs/Module/Notes.php',
- 'Zotlabs\\Module\\Notifications' => $baseDir . '/Zotlabs/Module/Notifications.php',
- 'Zotlabs\\Module\\Notify' => $baseDir . '/Zotlabs/Module/Notify.php',
- 'Zotlabs\\Module\\Oembed' => $baseDir . '/Zotlabs/Module/Oembed.php',
- 'Zotlabs\\Module\\Oep' => $baseDir . '/Zotlabs/Module/Oep.php',
- 'Zotlabs\\Module\\Oexchange' => $baseDir . '/Zotlabs/Module/Oexchange.php',
- 'Zotlabs\\Module\\Online' => $baseDir . '/Zotlabs/Module/Online.php',
- 'Zotlabs\\Module\\Page' => $baseDir . '/Zotlabs/Module/Page.php',
- 'Zotlabs\\Module\\Pconfig' => $baseDir . '/Zotlabs/Module/Pconfig.php',
- 'Zotlabs\\Module\\Pdledit' => $baseDir . '/Zotlabs/Module/Pdledit.php',
- 'Zotlabs\\Module\\Permcat' => $baseDir . '/Zotlabs/Module/Permcat.php',
- 'Zotlabs\\Module\\Photo' => $baseDir . '/Zotlabs/Module/Photo.php',
- 'Zotlabs\\Module\\Photos' => $baseDir . '/Zotlabs/Module/Photos.php',
- 'Zotlabs\\Module\\Ping' => $baseDir . '/Zotlabs/Module/Ping.php',
- 'Zotlabs\\Module\\Poco' => $baseDir . '/Zotlabs/Module/Poco.php',
- 'Zotlabs\\Module\\Poke' => $baseDir . '/Zotlabs/Module/Poke.php',
- 'Zotlabs\\Module\\Post' => $baseDir . '/Zotlabs/Module/Post.php',
- 'Zotlabs\\Module\\Prate' => $baseDir . '/Zotlabs/Module/Prate.php',
- 'Zotlabs\\Module\\Pretheme' => $baseDir . '/Zotlabs/Module/Pretheme.php',
- 'Zotlabs\\Module\\Probe' => $baseDir . '/Zotlabs/Module/Probe.php',
- 'Zotlabs\\Module\\Profile' => $baseDir . '/Zotlabs/Module/Profile.php',
- 'Zotlabs\\Module\\Profile_photo' => $baseDir . '/Zotlabs/Module/Profile_photo.php',
- 'Zotlabs\\Module\\Profiles' => $baseDir . '/Zotlabs/Module/Profiles.php',
- 'Zotlabs\\Module\\Profperm' => $baseDir . '/Zotlabs/Module/Profperm.php',
- 'Zotlabs\\Module\\Pubsites' => $baseDir . '/Zotlabs/Module/Pubsites.php',
- 'Zotlabs\\Module\\Pubstream' => $baseDir . '/Zotlabs/Module/Pubstream.php',
- 'Zotlabs\\Module\\Randprof' => $baseDir . '/Zotlabs/Module/Randprof.php',
- 'Zotlabs\\Module\\Rate' => $baseDir . '/Zotlabs/Module/Rate.php',
- 'Zotlabs\\Module\\Ratings' => $baseDir . '/Zotlabs/Module/Ratings.php',
- 'Zotlabs\\Module\\Ratingsearch' => $baseDir . '/Zotlabs/Module/Ratingsearch.php',
- 'Zotlabs\\Module\\Rbmark' => $baseDir . '/Zotlabs/Module/Rbmark.php',
- 'Zotlabs\\Module\\React' => $baseDir . '/Zotlabs/Module/React.php',
- 'Zotlabs\\Module\\Regdir' => $baseDir . '/Zotlabs/Module/Regdir.php',
- 'Zotlabs\\Module\\Register' => $baseDir . '/Zotlabs/Module/Register.php',
- 'Zotlabs\\Module\\Regmod' => $baseDir . '/Zotlabs/Module/Regmod.php',
- 'Zotlabs\\Module\\Regver' => $baseDir . '/Zotlabs/Module/Regver.php',
- 'Zotlabs\\Module\\Removeaccount' => $baseDir . '/Zotlabs/Module/Removeaccount.php',
- 'Zotlabs\\Module\\Removeme' => $baseDir . '/Zotlabs/Module/Removeme.php',
- 'Zotlabs\\Module\\Rmagic' => $baseDir . '/Zotlabs/Module/Rmagic.php',
- 'Zotlabs\\Module\\Rpost' => $baseDir . '/Zotlabs/Module/Rpost.php',
- 'Zotlabs\\Module\\Search' => $baseDir . '/Zotlabs/Module/Search.php',
- 'Zotlabs\\Module\\Search_ac' => $baseDir . '/Zotlabs/Module/Search_ac.php',
- 'Zotlabs\\Module\\Service_limits' => $baseDir . '/Zotlabs/Module/Service_limits.php',
- 'Zotlabs\\Module\\Settings' => $baseDir . '/Zotlabs/Module/Settings.php',
- 'Zotlabs\\Module\\Settings\\Account' => $baseDir . '/Zotlabs/Module/Settings/Account.php',
- 'Zotlabs\\Module\\Settings\\Channel' => $baseDir . '/Zotlabs/Module/Settings/Channel.php',
- 'Zotlabs\\Module\\Settings\\Display' => $baseDir . '/Zotlabs/Module/Settings/Display.php',
- 'Zotlabs\\Module\\Settings\\Featured' => $baseDir . '/Zotlabs/Module/Settings/Featured.php',
- 'Zotlabs\\Module\\Settings\\Features' => $baseDir . '/Zotlabs/Module/Settings/Features.php',
- 'Zotlabs\\Module\\Settings\\Oauth' => $baseDir . '/Zotlabs/Module/Settings/Oauth.php',
- 'Zotlabs\\Module\\Settings\\Permcats' => $baseDir . '/Zotlabs/Module/Settings/Permcats.php',
- 'Zotlabs\\Module\\Settings\\Tokens' => $baseDir . '/Zotlabs/Module/Settings/Tokens.php',
- 'Zotlabs\\Module\\Setup' => $baseDir . '/Zotlabs/Module/Setup.php',
- 'Zotlabs\\Module\\Share' => $baseDir . '/Zotlabs/Module/Share.php',
- 'Zotlabs\\Module\\Sharedwithme' => $baseDir . '/Zotlabs/Module/Sharedwithme.php',
- 'Zotlabs\\Module\\Siteinfo' => $baseDir . '/Zotlabs/Module/Siteinfo.php',
- 'Zotlabs\\Module\\Siteinfo_json' => $baseDir . '/Zotlabs/Module/Siteinfo_json.php',
- 'Zotlabs\\Module\\Sitelist' => $baseDir . '/Zotlabs/Module/Sitelist.php',
- 'Zotlabs\\Module\\Smilies' => $baseDir . '/Zotlabs/Module/Smilies.php',
- 'Zotlabs\\Module\\Snap' => $baseDir . '/Zotlabs/Module/Snap.php',
- 'Zotlabs\\Module\\Sources' => $baseDir . '/Zotlabs/Module/Sources.php',
- 'Zotlabs\\Module\\Sslify' => $baseDir . '/Zotlabs/Module/Sslify.php',
- 'Zotlabs\\Module\\Starred' => $baseDir . '/Zotlabs/Module/Starred.php',
- 'Zotlabs\\Module\\Subthread' => $baseDir . '/Zotlabs/Module/Subthread.php',
- 'Zotlabs\\Module\\Suggest' => $baseDir . '/Zotlabs/Module/Suggest.php',
- 'Zotlabs\\Module\\Tagger' => $baseDir . '/Zotlabs/Module/Tagger.php',
- 'Zotlabs\\Module\\Tagrm' => $baseDir . '/Zotlabs/Module/Tagrm.php',
- 'Zotlabs\\Module\\Tasks' => $baseDir . '/Zotlabs/Module/Tasks.php',
- 'Zotlabs\\Module\\Theme_info' => $baseDir . '/Zotlabs/Module/Theme_info.php',
- 'Zotlabs\\Module\\Thing' => $baseDir . '/Zotlabs/Module/Thing.php',
- 'Zotlabs\\Module\\Toggle_mobile' => $baseDir . '/Zotlabs/Module/Toggle_mobile.php',
- 'Zotlabs\\Module\\Toggle_safesearch' => $baseDir . '/Zotlabs/Module/Toggle_safesearch.php',
- 'Zotlabs\\Module\\Uexport' => $baseDir . '/Zotlabs/Module/Uexport.php',
- 'Zotlabs\\Module\\Update_channel' => $baseDir . '/Zotlabs/Module/Update_channel.php',
- 'Zotlabs\\Module\\Update_display' => $baseDir . '/Zotlabs/Module/Update_display.php',
- 'Zotlabs\\Module\\Update_home' => $baseDir . '/Zotlabs/Module/Update_home.php',
- 'Zotlabs\\Module\\Update_network' => $baseDir . '/Zotlabs/Module/Update_network.php',
- 'Zotlabs\\Module\\Update_pubstream' => $baseDir . '/Zotlabs/Module/Update_pubstream.php',
- 'Zotlabs\\Module\\Update_search' => $baseDir . '/Zotlabs/Module/Update_search.php',
- 'Zotlabs\\Module\\View' => $baseDir . '/Zotlabs/Module/View.php',
- 'Zotlabs\\Module\\Viewconnections' => $baseDir . '/Zotlabs/Module/Viewconnections.php',
- 'Zotlabs\\Module\\Viewsrc' => $baseDir . '/Zotlabs/Module/Viewsrc.php',
- 'Zotlabs\\Module\\Wall_attach' => $baseDir . '/Zotlabs/Module/Wall_attach.php',
- 'Zotlabs\\Module\\Wall_upload' => $baseDir . '/Zotlabs/Module/Wall_upload.php',
- 'Zotlabs\\Module\\Webfinger' => $baseDir . '/Zotlabs/Module/Webfinger.php',
- 'Zotlabs\\Module\\Webpages' => $baseDir . '/Zotlabs/Module/Webpages.php',
- 'Zotlabs\\Module\\Well_known' => $baseDir . '/Zotlabs/Module/Well_known.php',
- 'Zotlabs\\Module\\Wfinger' => $baseDir . '/Zotlabs/Module/Wfinger.php',
- 'Zotlabs\\Module\\Wiki' => $baseDir . '/Zotlabs/Module/Wiki.php',
- 'Zotlabs\\Module\\Xchan' => $baseDir . '/Zotlabs/Module/Xchan.php',
- 'Zotlabs\\Module\\Xpoco' => $baseDir . '/Zotlabs/Module/Xpoco.php',
- 'Zotlabs\\Module\\Xrd' => $baseDir . '/Zotlabs/Module/Xrd.php',
- 'Zotlabs\\Module\\Xref' => $baseDir . '/Zotlabs/Module/Xref.php',
- 'Zotlabs\\Module\\Zfinger' => $baseDir . '/Zotlabs/Module/Zfinger.php',
- 'Zotlabs\\Module\\Zotfeed' => $baseDir . '/Zotlabs/Module/Zotfeed.php',
- 'Zotlabs\\Module\\Zping' => $baseDir . '/Zotlabs/Module/Zping.php',
- 'Zotlabs\\Render\\Comanche' => $baseDir . '/Zotlabs/Render/Comanche.php',
- 'Zotlabs\\Render\\SimpleTemplate' => $baseDir . '/Zotlabs/Render/SimpleTemplate.php',
- 'Zotlabs\\Render\\SmartyInterface' => $baseDir . '/Zotlabs/Render/SmartyInterface.php',
- 'Zotlabs\\Render\\SmartyTemplate' => $baseDir . '/Zotlabs/Render/SmartyTemplate.php',
- 'Zotlabs\\Render\\TemplateEngine' => $baseDir . '/Zotlabs/Render/TemplateEngine.php',
- 'Zotlabs\\Render\\Theme' => $baseDir . '/Zotlabs/Render/Theme.php',
- 'Zotlabs\\Storage\\BasicAuth' => $baseDir . '/Zotlabs/Storage/BasicAuth.php',
- 'Zotlabs\\Storage\\Browser' => $baseDir . '/Zotlabs/Storage/Browser.php',
- 'Zotlabs\\Storage\\CalDAVClient' => $baseDir . '/Zotlabs/Storage/CalDAVClient.php',
- 'Zotlabs\\Storage\\Directory' => $baseDir . '/Zotlabs/Storage/Directory.php',
- 'Zotlabs\\Storage\\File' => $baseDir . '/Zotlabs/Storage/File.php',
- 'Zotlabs\\Storage\\GitRepo' => $baseDir . '/Zotlabs/Storage/GitRepo.php',
- 'Zotlabs\\Text\\Tagadelic' => $baseDir . '/Zotlabs/Text/Tagadelic.php',
- 'Zotlabs\\Web\\CheckJS' => $baseDir . '/Zotlabs/Web/CheckJS.php',
- 'Zotlabs\\Web\\Controller' => $baseDir . '/Zotlabs/Web/Controller.php',
- 'Zotlabs\\Web\\HTTPHeaders' => $baseDir . '/Zotlabs/Web/HTTPHeaders.php',
- 'Zotlabs\\Web\\HttpMeta' => $baseDir . '/Zotlabs/Web/HttpMeta.php',
- 'Zotlabs\\Web\\Router' => $baseDir . '/Zotlabs/Web/Router.php',
- 'Zotlabs\\Web\\Session' => $baseDir . '/Zotlabs/Web/Session.php',
- 'Zotlabs\\Web\\SessionHandler' => $baseDir . '/Zotlabs/Web/SessionHandler.php',
- 'Zotlabs\\Web\\SubModule' => $baseDir . '/Zotlabs/Web/SubModule.php',
- 'Zotlabs\\Web\\WebServer' => $baseDir . '/Zotlabs/Web/WebServer.php',
- 'Zotlabs\\Zot\\Auth' => $baseDir . '/Zotlabs/Zot/Auth.php',
- 'Zotlabs\\Zot\\DReport' => $baseDir . '/Zotlabs/Zot/DReport.php',
- 'Zotlabs\\Zot\\Finger' => $baseDir . '/Zotlabs/Zot/Finger.php',
- 'Zotlabs\\Zot\\IHandler' => $baseDir . '/Zotlabs/Zot/IHandler.php',
- 'Zotlabs\\Zot\\Receiver' => $baseDir . '/Zotlabs/Zot/Receiver.php',
- 'Zotlabs\\Zot\\Verify' => $baseDir . '/Zotlabs/Zot/Verify.php',
- 'Zotlabs\\Zot\\ZotHandler' => $baseDir . '/Zotlabs/Zot/ZotHandler.php',
);
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
index 01914946c..d880bb6f5 100644
--- a/vendor/composer/autoload_namespaces.php
+++ b/vendor/composer/autoload_namespaces.php
@@ -6,5 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
+ 'OAuth2' => array($vendorDir . '/bshaffer/oauth2-server-php/src'),
'Michelf' => array($vendorDir . '/michelf/php-markdown'),
);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index bcae78e29..6200547d3 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -23,35 +23,24 @@ class ComposerAutoloaderInit7b34d7e50a62201ec5d5e526a5b8b35d
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit7b34d7e50a62201ec5d5e526a5b8b35d', 'loadClassLoader'));
- $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
- if ($useStaticLoader) {
- require_once __DIR__ . '/autoload_static.php';
-
- call_user_func(\Composer\Autoload\ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d::getInitializer($loader));
- } else {
- $map = require __DIR__ . '/autoload_namespaces.php';
- foreach ($map as $namespace => $path) {
- $loader->set($namespace, $path);
- }
+ $map = require __DIR__ . '/autoload_namespaces.php';
+ foreach ($map as $namespace => $path) {
+ $loader->set($namespace, $path);
+ }
- $map = require __DIR__ . '/autoload_psr4.php';
- foreach ($map as $namespace => $path) {
- $loader->setPsr4($namespace, $path);
- }
+ $map = require __DIR__ . '/autoload_psr4.php';
+ foreach ($map as $namespace => $path) {
+ $loader->setPsr4($namespace, $path);
+ }
- $classMap = require __DIR__ . '/autoload_classmap.php';
- if ($classMap) {
- $loader->addClassMap($classMap);
- }
+ $classMap = require __DIR__ . '/autoload_classmap.php';
+ if ($classMap) {
+ $loader->addClassMap($classMap);
}
$loader->register(true);
- if ($useStaticLoader) {
- $includeFiles = Composer\Autoload\ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d::$files;
- } else {
- $includeFiles = require __DIR__ . '/autoload_files.php';
- }
+ $includeFiles = require __DIR__ . '/autoload_files.php';
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire7b34d7e50a62201ec5d5e526a5b8b35d($fileIdentifier, $file);
}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 0fb88e5a1..1a0de2cb8 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1,157 +1,5 @@
[
{
- "name": "sabre/uri",
- "version": "1.1.0",
- "version_normalized": "1.1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/fruux/sabre-uri.git",
- "reference": "9012116434d84ef6e5e37a89dfdbfbe2204a8704"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/fruux/sabre-uri/zipball/9012116434d84ef6e5e37a89dfdbfbe2204a8704",
- "reference": "9012116434d84ef6e5e37a89dfdbfbe2204a8704",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.7"
- },
- "require-dev": {
- "phpunit/phpunit": "*",
- "sabre/cs": "~0.0.1"
- },
- "time": "2016-03-08T02:29:27+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "files": [
- "lib/functions.php"
- ],
- "psr-4": {
- "Sabre\\Uri\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Evert Pot",
- "email": "me@evertpot.com",
- "homepage": "http://evertpot.com/",
- "role": "Developer"
- }
- ],
- "description": "Functions for making sense out of URIs.",
- "homepage": "http://sabre.io/uri/",
- "keywords": [
- "rfc3986",
- "uri",
- "url"
- ]
- },
- {
- "name": "sabre/vobject",
- "version": "4.1.1",
- "version_normalized": "4.1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/fruux/sabre-vobject.git",
- "reference": "a3a59b06947f122af2d45d52b72172cdc1efd68f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/fruux/sabre-vobject/zipball/a3a59b06947f122af2d45d52b72172cdc1efd68f",
- "reference": "a3a59b06947f122af2d45d52b72172cdc1efd68f",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "php": ">=5.5",
- "sabre/xml": "~1.1"
- },
- "require-dev": {
- "phpunit/phpunit": "*",
- "sabre/cs": "~0.0.3"
- },
- "suggest": {
- "hoa/bench": "If you would like to run the benchmark scripts"
- },
- "time": "2016-07-15T19:52:17+00:00",
- "bin": [
- "bin/vobject",
- "bin/generate_vcards"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Sabre\\VObject\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Evert Pot",
- "email": "me@evertpot.com",
- "homepage": "http://evertpot.com/",
- "role": "Developer"
- },
- {
- "name": "Dominik Tobschall",
- "email": "dominik@fruux.com",
- "homepage": "http://tobschall.de/",
- "role": "Developer"
- },
- {
- "name": "Ivan Enderlin",
- "email": "ivan.enderlin@hoa-project.net",
- "homepage": "http://mnt.io/",
- "role": "Developer"
- }
- ],
- "description": "The VObject library for PHP allows you to easily parse and manipulate iCalendar and vCard objects",
- "homepage": "http://sabre.io/vobject/",
- "keywords": [
- "availability",
- "freebusy",
- "iCalendar",
- "ical",
- "ics",
- "jCal",
- "jCard",
- "recurrence",
- "rfc2425",
- "rfc2426",
- "rfc2739",
- "rfc4770",
- "rfc5545",
- "rfc5546",
- "rfc6321",
- "rfc6350",
- "rfc6351",
- "rfc6474",
- "rfc6638",
- "rfc6715",
- "rfc6868",
- "vCalendar",
- "vCard",
- "vcf",
- "xCal",
- "xCard"
- ]
- },
- {
"name": "sabre/event",
"version": "3.0.0",
"version_normalized": "3.0.0.0",
@@ -173,7 +21,7 @@
"phpunit/phpunit": "*",
"sabre/cs": "~0.0.4"
},
- "time": "2015-11-05T20:14:39+00:00",
+ "time": "2015-11-05 20:14:39",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -211,148 +59,6 @@
]
},
{
- "name": "sabre/http",
- "version": "4.2.1",
- "version_normalized": "4.2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/fruux/sabre-http.git",
- "reference": "2e93bc8321524c67be4ca5b8415daebd4c8bf85e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/fruux/sabre-http/zipball/2e93bc8321524c67be4ca5b8415daebd4c8bf85e",
- "reference": "2e93bc8321524c67be4ca5b8415daebd4c8bf85e",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "php": ">=5.4",
- "sabre/event": ">=1.0.0,<4.0.0",
- "sabre/uri": "~1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.3",
- "sabre/cs": "~0.0.1"
- },
- "suggest": {
- "ext-curl": " to make http requests with the Client class"
- },
- "time": "2016-01-06T23:00:08+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "files": [
- "lib/functions.php"
- ],
- "psr-4": {
- "Sabre\\HTTP\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Evert Pot",
- "email": "me@evertpot.com",
- "homepage": "http://evertpot.com/",
- "role": "Developer"
- }
- ],
- "description": "The sabre/http library provides utilities for dealing with http requests and responses. ",
- "homepage": "https://github.com/fruux/sabre-http",
- "keywords": [
- "http"
- ]
- },
- {
- "name": "sabre/dav",
- "version": "3.2.0",
- "version_normalized": "3.2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/fruux/sabre-dav.git",
- "reference": "5b9737cc2f0182e368d14c80df7f6b2d77dc1457"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/fruux/sabre-dav/zipball/5b9737cc2f0182e368d14c80df7f6b2d77dc1457",
- "reference": "5b9737cc2f0182e368d14c80df7f6b2d77dc1457",
- "shasum": ""
- },
- "require": {
- "ext-ctype": "*",
- "ext-date": "*",
- "ext-dom": "*",
- "ext-iconv": "*",
- "ext-mbstring": "*",
- "ext-pcre": "*",
- "ext-simplexml": "*",
- "ext-spl": "*",
- "lib-libxml": ">=2.7.0",
- "php": ">=5.5.0",
- "psr/log": "^1.0",
- "sabre/event": ">=2.0.0, <4.0.0",
- "sabre/http": "^4.2.1",
- "sabre/uri": "^1.0.1",
- "sabre/vobject": "^4.1.0",
- "sabre/xml": "^1.4.0"
- },
- "require-dev": {
- "evert/phpdoc-md": "~0.1.0",
- "monolog/monolog": "^1.18",
- "phpunit/phpunit": "> 4.8, <=6.0.0",
- "sabre/cs": "~0.0.5"
- },
- "suggest": {
- "ext-curl": "*",
- "ext-pdo": "*"
- },
- "time": "2016-06-28T02:44:05+00:00",
- "bin": [
- "bin/sabredav",
- "bin/naturalselection"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Sabre\\DAV\\": "lib/DAV/",
- "Sabre\\DAVACL\\": "lib/DAVACL/",
- "Sabre\\CalDAV\\": "lib/CalDAV/",
- "Sabre\\CardDAV\\": "lib/CardDAV/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Evert Pot",
- "email": "me@evertpot.com",
- "homepage": "http://evertpot.com/",
- "role": "Developer"
- }
- ],
- "description": "WebDAV Framework for PHP",
- "homepage": "http://sabre.io/",
- "keywords": [
- "CalDAV",
- "CardDAV",
- "WebDAV",
- "framework",
- "iCalendar"
- ]
- },
- {
"name": "sabre/xml",
"version": "1.5.0",
"version_normalized": "1.5.0.0",
@@ -379,7 +85,7 @@
"phpunit/phpunit": "*",
"sabre/cs": "~1.0.0"
},
- "time": "2016-10-09T22:57:52+00:00",
+ "time": "2016-10-09 22:57:52",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -435,7 +141,7 @@
"require": {
"php": ">=5.3.0"
},
- "time": "2016-10-10T12:19:37+00:00",
+ "time": "2016-10-10 12:19:37",
"type": "library",
"extra": {
"branch-alias": {
@@ -484,7 +190,7 @@
"require": {
"php": ">=5.3.0"
},
- "time": "2016-10-29T18:58:20+00:00",
+ "time": "2016-10-29 18:58:20",
"type": "library",
"extra": {
"branch-alias": {
@@ -540,7 +246,7 @@
"require-dev": {
"phpunit/phpunit": "^4.8"
},
- "time": "2016-09-21T13:01:43+00:00",
+ "time": "2016-09-21 13:01:43",
"type": "lib",
"installation-source": "dist",
"autoload": {
@@ -576,5 +282,358 @@
"markdown",
"markdownify"
]
+ },
+ {
+ "name": "bshaffer/oauth2-server-php",
+ "version": "v1.9.0",
+ "version_normalized": "1.9.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/bshaffer/oauth2-server-php.git",
+ "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/8856aed1a98d6da596ae3f9b8095b5c7a1581697",
+ "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "~2.8",
+ "firebase/php-jwt": "~2.2",
+ "mongodb/mongodb": "^1.1",
+ "predis/predis": "dev-master",
+ "thobbs/phpcassa": "dev-master"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
+ "firebase/php-jwt": "~1.1 is required to use MondoDB storage",
+ "predis/predis": "Required to use Redis storage",
+ "thobbs/phpcassa": "Required to use Cassandra storage"
+ },
+ "time": "2017-01-06 23:20:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "OAuth2": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brent Shaffer",
+ "email": "bshafs@gmail.com",
+ "homepage": "http://brentertainment.com"
+ }
+ ],
+ "description": "OAuth2 Server for PHP",
+ "homepage": "http://github.com/bshaffer/oauth2-server-php",
+ "keywords": [
+ "auth",
+ "oauth",
+ "oauth2"
+ ]
+ },
+ {
+ "name": "sabre/uri",
+ "version": "1.2.1",
+ "version_normalized": "1.2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fruux/sabre-uri.git",
+ "reference": "ada354d83579565949d80b2e15593c2371225e61"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fruux/sabre-uri/zipball/ada354d83579565949d80b2e15593c2371225e61",
+ "reference": "ada354d83579565949d80b2e15593c2371225e61",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.7"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=4.0,<6.0",
+ "sabre/cs": "~1.0.0"
+ },
+ "time": "2017-02-20 19:59:28",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "lib/functions.php"
+ ],
+ "psr-4": {
+ "Sabre\\Uri\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Evert Pot",
+ "email": "me@evertpot.com",
+ "homepage": "http://evertpot.com/",
+ "role": "Developer"
+ }
+ ],
+ "description": "Functions for making sense out of URIs.",
+ "homepage": "http://sabre.io/uri/",
+ "keywords": [
+ "rfc3986",
+ "uri",
+ "url"
+ ]
+ },
+ {
+ "name": "sabre/vobject",
+ "version": "4.1.2",
+ "version_normalized": "4.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fruux/sabre-vobject.git",
+ "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fruux/sabre-vobject/zipball/d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
+ "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "php": ">=5.5",
+ "sabre/xml": ">=1.5 <3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "*",
+ "sabre/cs": "^1.0.0"
+ },
+ "suggest": {
+ "hoa/bench": "If you would like to run the benchmark scripts"
+ },
+ "time": "2016-12-06 04:14:09",
+ "bin": [
+ "bin/vobject",
+ "bin/generate_vcards"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Sabre\\VObject\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Evert Pot",
+ "email": "me@evertpot.com",
+ "homepage": "http://evertpot.com/",
+ "role": "Developer"
+ },
+ {
+ "name": "Dominik Tobschall",
+ "email": "dominik@fruux.com",
+ "homepage": "http://tobschall.de/",
+ "role": "Developer"
+ },
+ {
+ "name": "Ivan Enderlin",
+ "email": "ivan.enderlin@hoa-project.net",
+ "homepage": "http://mnt.io/",
+ "role": "Developer"
+ }
+ ],
+ "description": "The VObject library for PHP allows you to easily parse and manipulate iCalendar and vCard objects",
+ "homepage": "http://sabre.io/vobject/",
+ "keywords": [
+ "availability",
+ "freebusy",
+ "iCalendar",
+ "ical",
+ "ics",
+ "jCal",
+ "jCard",
+ "recurrence",
+ "rfc2425",
+ "rfc2426",
+ "rfc2739",
+ "rfc4770",
+ "rfc5545",
+ "rfc5546",
+ "rfc6321",
+ "rfc6350",
+ "rfc6351",
+ "rfc6474",
+ "rfc6638",
+ "rfc6715",
+ "rfc6868",
+ "vCalendar",
+ "vCard",
+ "vcf",
+ "xCal",
+ "xCard"
+ ]
+ },
+ {
+ "name": "sabre/http",
+ "version": "4.2.2",
+ "version_normalized": "4.2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fruux/sabre-http.git",
+ "reference": "dd50e7260356f4599d40270826f9548b23efa204"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fruux/sabre-http/zipball/dd50e7260356f4599d40270826f9548b23efa204",
+ "reference": "dd50e7260356f4599d40270826f9548b23efa204",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "ext-mbstring": "*",
+ "php": ">=5.4",
+ "sabre/event": ">=1.0.0,<4.0.0",
+ "sabre/uri": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.3",
+ "sabre/cs": "~0.0.1"
+ },
+ "suggest": {
+ "ext-curl": " to make http requests with the Client class"
+ },
+ "time": "2017-01-02 19:38:42",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "lib/functions.php"
+ ],
+ "psr-4": {
+ "Sabre\\HTTP\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Evert Pot",
+ "email": "me@evertpot.com",
+ "homepage": "http://evertpot.com/",
+ "role": "Developer"
+ }
+ ],
+ "description": "The sabre/http library provides utilities for dealing with http requests and responses. ",
+ "homepage": "https://github.com/fruux/sabre-http",
+ "keywords": [
+ "http"
+ ]
+ },
+ {
+ "name": "sabre/dav",
+ "version": "3.2.2",
+ "version_normalized": "3.2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fruux/sabre-dav.git",
+ "reference": "e987775e619728f12205606c9cc3ee565ffb1516"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fruux/sabre-dav/zipball/e987775e619728f12205606c9cc3ee565ffb1516",
+ "reference": "e987775e619728f12205606c9cc3ee565ffb1516",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "ext-date": "*",
+ "ext-dom": "*",
+ "ext-iconv": "*",
+ "ext-mbstring": "*",
+ "ext-pcre": "*",
+ "ext-simplexml": "*",
+ "ext-spl": "*",
+ "lib-libxml": ">=2.7.0",
+ "php": ">=5.5.0",
+ "psr/log": "^1.0",
+ "sabre/event": ">=2.0.0, <4.0.0",
+ "sabre/http": "^4.2.1",
+ "sabre/uri": "^1.0.1",
+ "sabre/vobject": "^4.1.0",
+ "sabre/xml": "^1.4.0"
+ },
+ "require-dev": {
+ "evert/phpdoc-md": "~0.1.0",
+ "monolog/monolog": "^1.18",
+ "phpunit/phpunit": "> 4.8, <6.0.0",
+ "sabre/cs": "^1.0.0"
+ },
+ "suggest": {
+ "ext-curl": "*",
+ "ext-pdo": "*"
+ },
+ "time": "2017-02-15 03:06:08",
+ "bin": [
+ "bin/sabredav",
+ "bin/naturalselection"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Sabre\\DAV\\": "lib/DAV/",
+ "Sabre\\DAVACL\\": "lib/DAVACL/",
+ "Sabre\\CalDAV\\": "lib/CalDAV/",
+ "Sabre\\CardDAV\\": "lib/CardDAV/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Evert Pot",
+ "email": "me@evertpot.com",
+ "homepage": "http://evertpot.com/",
+ "role": "Developer"
+ }
+ ],
+ "description": "WebDAV Framework for PHP",
+ "homepage": "http://sabre.io/",
+ "keywords": [
+ "CalDAV",
+ "CardDAV",
+ "WebDAV",
+ "framework",
+ "iCalendar"
+ ]
}
]
diff --git a/vendor/sabre/dav/.travis.yml b/vendor/sabre/dav/.travis.yml
index a9189c981..85637048a 100644
--- a/vendor/sabre/dav/.travis.yml
+++ b/vendor/sabre/dav/.travis.yml
@@ -2,7 +2,9 @@ language: php
php:
- 5.5
- 5.6
- - 7
+ - 7.0
+ - 7.1
+
env:
matrix:
@@ -19,7 +21,6 @@ before_script:
- mysql -e 'create database sabredav_test'
- psql -c "create database sabredav_test" -U postgres
- psql -c "create user sabredav with PASSWORD 'sabredav';GRANT ALL PRIVILEGES ON DATABASE sabredav_test TO sabredav" -U postgres
- - phpenv config-rm xdebug.ini; true
# - composer self-update
- composer update --prefer-dist $LOWEST_DEPS
@@ -28,7 +29,7 @@ before_script:
script:
- ./bin/phpunit --configuration tests/phpunit.xml.dist $TEST_DEPS
- - ./bin/sabre-cs-fixer fix lib/ --dry-run --diff
+ - ./bin/sabre-cs-fixer fix . --dry-run --diff
cache:
directories:
diff --git a/vendor/sabre/dav/CHANGELOG.md b/vendor/sabre/dav/CHANGELOG.md
index d8a3898c3..0bccc995c 100644
--- a/vendor/sabre/dav/CHANGELOG.md
+++ b/vendor/sabre/dav/CHANGELOG.md
@@ -1,6 +1,28 @@
ChangeLog
=========
+3.2.2 (2017-02-14)
+------------------
+
+* #943: Fix CardDAV XML reporting bug, which was affecting several CardDAV
+ clients. Bug was introduced in 3.2.1.
+* The zip release ships with [sabre/vobject 4.1.2][vobj],
+ [sabre/http 4.2.2][http], [sabre/event 3.0.0][evnt],
+ [sabre/uri 1.2.0][uri] and [sabre/xml 1.5.0][xml].
+
+
+3.2.1 (2017-01-28)
+------------------
+
+* #877: Fix for syncing large calendars when using the Sqlite PDO backend.
+ (@theseer).
+* #889 Added support for filtering vCard properties in the addressbook-query
+ REPORT (@DeepDiver1975).
+* The zip release ships with [sabre/vobject 4.1.2][vobj],
+ [sabre/http 4.2.2][http], [sabre/event 3.0.0][evnt],
+ [sabre/uri 1.2.0][uri] and [sabre/xml 1.5.0][xml].
+
+
3.2.0 (2016-06-27)
------------------
@@ -88,6 +110,9 @@ ChangeLog
------------------
* Fixed: Creating a new calendar on some MySQL configurations caused an error.
+* #889 Added support for filtering vCard properties in the addressbook-query
+ REPORT (@DeepDiver1975).
+
3.1.4 (2016-05-28)
@@ -200,6 +225,13 @@ ChangeLog
[sabre/uri 1.0.1][uri] and [sabre/xml 1.1.0][xml].
+3.0.10 (2016-??-??)
+------------------
+
+* #889 Added support for filtering vCard properties in the addressbook-query
+ REPORT (@DeepDiver1975).
+
+
3.0.9 (2016-04-06)
------------------
@@ -463,11 +495,13 @@ ChangeLog
* #193: Fix `Sabre\DAV\FSExt\Directory::getQuotaInfo()` on windows.
-2.1.11 (2016-??-??)
+2.1.11 (2016-10-06)
-------------------
* #805: It wasn't possible to create calendars that hold events, journals and
todos using MySQL, because the `components` column was 1 byte too small.
+* The zip release ships with [sabre/vobject 3.5.3][vobj],
+ [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
2.1.10 (2016-03-10)
@@ -475,6 +509,8 @@ ChangeLog
* #784: Sync logs for address books were not correctly cleaned up after
deleting them.
+* The zip release ships with [sabre/vobject 3.5.0][vobj],
+ [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
2.1.9 (2016-01-25)
@@ -627,7 +663,7 @@ ChangeLog
* Added: Automatically converting between vCard 3, 4 and jCard using the
`Accept:` header, in CardDAV reports, and automatically converting from
jCard to vCard upon `PUT`. It's important to note that your backends _may_
- now recieve both vCard 3.0 and 4.0.
+ now receive both vCard 3.0 and 4.0.
* Added: #444. Collections can now opt-in to support high-speed `MOVE`.
* Changed: PropertyStorage backends now have a `move` method.
* Added: `beforeMove`, and `afterMove` events.
@@ -812,7 +848,7 @@ ChangeLog
* Added: Support for the `{DAV:}supported-method-set` property server-wide.
* Making it easier for implementors to override how the CardDAV addressbook
home is located.
-* Fixed: Issue #422 Preconditions were not being set on PUT on non-existant
+* Fixed: Issue #422 Preconditions were not being set on PUT on non-existent
files. Not really a chance for data-loss, but incorrect nevertheless.
* Fixed: Issue #428: Etag check with `If:` fails if the target is a collection.
* Fixed: Issues #430, #431, #433: Locks plugin didn't not properly release
@@ -1024,7 +1060,7 @@ ChangeLog
* Added: Sharee's can now also read out the list of invites for a shared
calendar.
* Added: The Proxy principal classes now both implement an interface, for
- greater flexiblity.
+ greater flexibility.
1.7.13 (2014-07-28)
@@ -1042,7 +1078,7 @@ ChangeLog
Sabre_DAV_PartialUpdate_IFile interface is now deprecated and will be removed
in a future version.
* Fixed: Restoring old setting after changing libxml_disable_entity_loader.
-* Fixed: Issue #422: Preconditions were not being set on PUT on non-existant
+* Fixed: Issue #422: Preconditions were not being set on PUT on non-existent
files. Not really a chance for data-loss, but incorrect nevertheless.
* Fixed: Issue #427: Now checking preconditions on DELETE requests.
* Fixed: Issue #428: Etag check with If: fails if the target is a collection.
@@ -1121,7 +1157,7 @@ ChangeLog
------------------
* The zip release ships with sabre/vobject 2.0.5.
-* Changed: To be compatibile with MS Office 2011 for Mac, a workaround was
+* Changed: To be compatible with MS Office 2011 for Mac, a workaround was
removed that was added to support old versions of Windows XP (pre-SP3).
Indeed! We needed a crazy workaround to work with one MS product in the past,
and we can't keep that workaround to be compatible with another MS product.
@@ -1129,7 +1165,7 @@ ChangeLog
* Fixed: Range requests now work for non-seekable streams. (Thanks Alfred
Klomp).
* Fixed: Changed serialization of {DAV:}getlastmodified and {DAV:}supportedlock
- to improve compatiblity with MS Office 2011 for Mac.
+ to improve compatibility with MS Office 2011 for Mac.
* Changed: reverted the automatic translation of 'DAV:' xml namespaces to
'urn:DAV' when parsing files. Issues were reported with libxml 2.6.32, on a
relatively recent debian release, so we'll wait till 2015 to take this one out
@@ -2006,7 +2042,7 @@ ChangeLog
-------------------
* Fixed: Issue 34: Invalid Lock-Token header response.
-* Added: Issue 35: Addign SabreDAV version to HTTP OPTIONS responses.
+* Added: Issue 35: Adding SabreDAV version to HTTP OPTIONS responses.
1.0.9 (2010-03-19)
@@ -2220,7 +2256,7 @@ ChangeLog
* Added: Simple HTML directory plugin, for browser access.
* Added: Server class now sends back standard pre-condition error xml bodies.
This was new since RFC4918.
-* Added: Sabre_DAV_Tree_Aggregrate, which can 'host' multiple Tree objects into
+* Added: Sabre_DAV_Tree_Aggregate, which can 'host' multiple Tree objects into
one.
* Added: simple basis for HTTP REPORT method. This method is not used yet, but
can be used by plugins to add reports.
@@ -2237,7 +2273,7 @@ ChangeLog
8.2.
* Fixed: TemporaryFileFilter now lets through GET's if they actually exist on
the backend. (r274)
-* FIxed: Some methods didn't get passed through in the FilterTree (r283).
+* Fixed: Some methods didn't get passed through in the FilterTree (r283).
* Fixed: LockManager is now slightly more complex, Tree classes slightly less.
(r287)
diff --git a/vendor/sabre/dav/README.md b/vendor/sabre/dav/README.md
index 8edcd4073..86a0fe9a6 100644
--- a/vendor/sabre/dav/README.md
+++ b/vendor/sabre/dav/README.md
@@ -10,6 +10,7 @@ Full documentation can be found on the website:
http://sabre.io/
+
Build status
------------
@@ -30,6 +31,7 @@ Documentation
* [Introduction](http://sabre.io/dav/).
* [Installation](http://sabre.io/dav/install/).
+
Made at fruux
-------------
diff --git a/vendor/sabre/dav/bin/build.php b/vendor/sabre/dav/bin/build.php
index c4ba20941..c4ba20941 100644..100755
--- a/vendor/sabre/dav/bin/build.php
+++ b/vendor/sabre/dav/bin/build.php
diff --git a/vendor/sabre/dav/bin/googlecode_upload.py b/vendor/sabre/dav/bin/googlecode_upload.py
index caafd5ded..caafd5ded 100644..100755
--- a/vendor/sabre/dav/bin/googlecode_upload.py
+++ b/vendor/sabre/dav/bin/googlecode_upload.py
diff --git a/vendor/sabre/dav/bin/migrateto20.php b/vendor/sabre/dav/bin/migrateto20.php
index 77236804f..77236804f 100644..100755
--- a/vendor/sabre/dav/bin/migrateto20.php
+++ b/vendor/sabre/dav/bin/migrateto20.php
diff --git a/vendor/sabre/dav/bin/migrateto21.php b/vendor/sabre/dav/bin/migrateto21.php
index c81ee5cca..c81ee5cca 100644..100755
--- a/vendor/sabre/dav/bin/migrateto21.php
+++ b/vendor/sabre/dav/bin/migrateto21.php
diff --git a/vendor/sabre/dav/bin/migrateto30.php b/vendor/sabre/dav/bin/migrateto30.php
index 9ca77c13c..9ca77c13c 100644..100755
--- a/vendor/sabre/dav/bin/migrateto30.php
+++ b/vendor/sabre/dav/bin/migrateto30.php
diff --git a/vendor/sabre/dav/bin/migrateto32.php b/vendor/sabre/dav/bin/migrateto32.php
index 7567aeb60..7567aeb60 100644..100755
--- a/vendor/sabre/dav/bin/migrateto32.php
+++ b/vendor/sabre/dav/bin/migrateto32.php
diff --git a/vendor/sabre/dav/bin/sabredav.php b/vendor/sabre/dav/bin/sabredav.php
index 950075d1a..950075d1a 100644..100755
--- a/vendor/sabre/dav/bin/sabredav.php
+++ b/vendor/sabre/dav/bin/sabredav.php
diff --git a/vendor/sabre/dav/composer.json b/vendor/sabre/dav/composer.json
index f85d9655e..fca0e07fb 100644
--- a/vendor/sabre/dav/composer.json
+++ b/vendor/sabre/dav/composer.json
@@ -32,9 +32,9 @@
"psr/log": "^1.0"
},
"require-dev" : {
- "phpunit/phpunit" : "> 4.8, <=6.0.0",
+ "phpunit/phpunit" : "> 4.8, <6.0.0",
"evert/phpdoc-md" : "~0.1.0",
- "sabre/cs" : "~0.0.5",
+ "sabre/cs" : "^1.0.0",
"monolog/monolog": "^1.18"
},
"suggest" : {
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php b/vendor/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php
index d58b4a46e..311b1c415 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php
@@ -2,8 +2,8 @@
namespace Sabre\CalDAV\Backend;
-use Sabre\VObject;
use Sabre\CalDAV;
+use Sabre\VObject;
/**
* Abstract Calendaring backend. Extend this class to create your own backends.
@@ -26,9 +26,9 @@ abstract class AbstractBackend implements BackendInterface {
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
- * Read the PropPatch documenation for more info and examples.
+ * Read the PropPatch documentation for more info and examples.
*
- * @param string $path
+ * @param mixed $calendarId
* @param \Sabre\DAV\PropPatch $propPatch
* @return void
*/
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php b/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php
index 9c00a89ef..bf2ef27a0 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php
@@ -49,8 +49,8 @@ interface NotificationSupport extends BackendInterface {
* If the user chose to accept the share, this method should return the
* newly created calendar url.
*
- * @param string href The sharee who is replying (often a mailto: address)
- * @param int status One of the SharingPlugin::STATUS_* constants
+ * @param string $href The sharee who is replying (often a mailto: address)
+ * @param int $status One of the SharingPlugin::STATUS_* constants
* @param string $calendarUri The url to the calendar thats being shared
* @param string $inReplyTo The unique id this message is a response to
* @param string $summary A description of the reply
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php b/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php
index 95f1d49a6..458440588 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php
@@ -5,8 +5,8 @@ namespace Sabre\CalDAV\Backend;
use Sabre\CalDAV;
use Sabre\DAV;
use Sabre\DAV\Exception\Forbidden;
-use Sabre\VObject;
use Sabre\DAV\Xml\Element\Sharee;
+use Sabre\VObject;
/**
* PDO CalDAV backend
@@ -296,7 +296,7 @@ SQL
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
- * Read the PropPatch documenation for more info and examples.
+ * Read the PropPatch documentation for more info and examples.
*
* @param mixed $calendarId
* @param \Sabre\DAV\PropPatch $propPatch
@@ -481,13 +481,13 @@ SQL
if (!$row) return null;
return [
- 'id' => $row['id'],
- 'uri' => $row['uri'],
- 'lastmodified' => (int)$row['lastmodified'],
- 'etag' => '"' . $row['etag'] . '"',
- 'size' => (int)$row['size'],
- 'calendardata' => $row['calendardata'],
- 'component' => strtolower($row['componenttype']),
+ 'id' => $row['id'],
+ 'uri' => $row['uri'],
+ 'lastmodified' => (int)$row['lastmodified'],
+ 'etag' => '"' . $row['etag'] . '"',
+ 'size' => (int)$row['size'],
+ 'calendardata' => $row['calendardata'],
+ 'component' => strtolower($row['componenttype']),
];
}
@@ -511,27 +511,29 @@ SQL
}
list($calendarId, $instanceId) = $calendarId;
- $query = 'SELECT id, uri, lastmodified, etag, calendarid, size, calendardata, componenttype FROM ' . $this->calendarObjectTableName . ' WHERE calendarid = ? AND uri IN (';
- // Inserting a whole bunch of question marks
- $query .= implode(',', array_fill(0, count($uris), '?'));
- $query .= ')';
+ $result = [];
+ foreach (array_chunk($uris, 900) as $chunk) {
+ $query = 'SELECT id, uri, lastmodified, etag, calendarid, size, calendardata, componenttype FROM ' . $this->calendarObjectTableName . ' WHERE calendarid = ? AND uri IN (';
+ // Inserting a whole bunch of question marks
+ $query .= implode(',', array_fill(0, count($chunk), '?'));
+ $query .= ')';
- $stmt = $this->pdo->prepare($query);
- $stmt->execute(array_merge([$calendarId], $uris));
+ $stmt = $this->pdo->prepare($query);
+ $stmt->execute(array_merge([$calendarId], $chunk));
- $result = [];
- while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
+ while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
- $result[] = [
- 'id' => $row['id'],
- 'uri' => $row['uri'],
- 'lastmodified' => (int)$row['lastmodified'],
- 'etag' => '"' . $row['etag'] . '"',
- 'size' => (int)$row['size'],
- 'calendardata' => $row['calendardata'],
- 'component' => strtolower($row['componenttype']),
- ];
+ $result[] = [
+ 'id' => $row['id'],
+ 'uri' => $row['uri'],
+ 'lastmodified' => (int)$row['lastmodified'],
+ 'etag' => '"' . $row['etag'] . '"',
+ 'size' => (int)$row['size'],
+ 'calendardata' => $row['calendardata'],
+ 'component' => strtolower($row['componenttype']),
+ ];
+ }
}
return $result;
@@ -686,7 +688,7 @@ SQL
}
}
-
+
// Ensure Occurence values are positive
if ($firstOccurence < 0) $firstOccurence = 0;
if ($lastOccurence < 0) $lastOccurence = 0;
@@ -769,7 +771,7 @@ SQL
* Note that especially time-range-filters may be difficult to parse. A
* time-range filter specified on a VEVENT must for instance also handle
* recurrence rules correctly.
- * A good example of how to interprete all these filters can also simply
+ * A good example of how to interpret all these filters can also simply
* be found in \Sabre\CalDAV\CalendarQueryFilter. This class is as correct
* as possible, so it gives you a good idea on what type of stuff you need
* to think of.
@@ -969,7 +971,7 @@ SQL;
// Current synctoken
$stmt = $this->pdo->prepare('SELECT synctoken FROM ' . $this->calendarTableName . ' WHERE id = ?');
- $stmt->execute([ $calendarId ]);
+ $stmt->execute([$calendarId]);
$currentToken = $stmt->fetchColumn(0);
if (is_null($currentToken)) return null;
@@ -1181,7 +1183,7 @@ SQL;
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
- * Read the PropPatch documenation for more info and examples.
+ * Read the PropPatch documentation for more info and examples.
*
* @param mixed $subscriptionId
* @param \Sabre\DAV\PropPatch $propPatch
@@ -1327,7 +1329,7 @@ SQL;
function createSchedulingObject($principalUri, $objectUri, $objectData) {
$stmt = $this->pdo->prepare('INSERT INTO ' . $this->schedulingObjectTableName . ' (principaluri, calendardata, uri, lastmodified, etag, size) VALUES (?, ?, ?, ?, ?, ?)');
- $stmt->execute([$principalUri, $objectData, $objectUri, time(), md5($objectData), strlen($objectData) ]);
+ $stmt->execute([$principalUri, $objectData, $objectUri, time(), md5($objectData), strlen($objectData)]);
}
@@ -1483,7 +1485,7 @@ SQL;
'inviteStatus' => (int)$row['share_invitestatus'],
'properties' =>
!empty($row['share_displayname'])
- ? [ '{DAV:}displayname' => $row['share_displayname'] ]
+ ? ['{DAV:}displayname' => $row['share_displayname']]
: [],
'principal' => $row['principaluri'],
]);
@@ -1502,7 +1504,7 @@ SQL;
*/
function setPublishStatus($calendarId, $value) {
- throw new \Sabre\DAV\Exception\NotImplemented('Not implemented');
+ throw new DAV\Exception\NotImplemented('Not implemented');
}
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/SharingSupport.php b/vendor/sabre/dav/lib/CalDAV/Backend/SharingSupport.php
index 8b6e074e0..278ec2564 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/SharingSupport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/SharingSupport.php
@@ -11,9 +11,9 @@ namespace Sabre\CalDAV\Backend;
* 1. Return shared calendars for users.
* 2. For every calendar, return calendar-resource-uri. This strings is a URI or
* relative URI reference that must be unique for every calendar, but
- * identical for every instance of the same shared calenar.
- * 3. For every calenar, you must return a share-access element. This element
- * should contain one of the Sabre\DAV\Sharing\Plugin:ACCESS_* contants and
+ * identical for every instance of the same shared calendar.
+ * 3. For every calendar, you must return a share-access element. This element
+ * should contain one of the Sabre\DAV\Sharing\Plugin:ACCESS_* constants and
* indicates the access level the user has.
*
* @copyright Copyright (C) fruux GmbH (https://fruux.com/)
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/SimplePDO.php b/vendor/sabre/dav/lib/CalDAV/Backend/SimplePDO.php
index f8238ea9a..d21f7f916 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/SimplePDO.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/SimplePDO.php
@@ -8,7 +8,7 @@ use Sabre\DAV;
/**
* Simple PDO CalDAV backend.
*
- * This class is basically the most minmum example to get a caldav backend up
+ * This class is basically the most minimum example to get a caldav backend up
* and running. This class uses the following schema (MySQL example):
*
* CREATE TABLE simple_calendars (
@@ -209,12 +209,12 @@ class SimplePDO extends AbstractBackend {
if (!$row) return null;
return [
- 'id' => $row['id'],
- 'uri' => $row['uri'],
- 'etag' => '"' . md5($row['calendardata']) . '"',
- 'calendarid' => $calendarId,
- 'size' => strlen($row['calendardata']),
- 'calendardata' => $row['calendardata'],
+ 'id' => $row['id'],
+ 'uri' => $row['uri'],
+ 'etag' => '"' . md5($row['calendardata']) . '"',
+ 'calendarid' => $calendarId,
+ 'size' => strlen($row['calendardata']),
+ 'calendardata' => $row['calendardata'],
];
}
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/SubscriptionSupport.php b/vendor/sabre/dav/lib/CalDAV/Backend/SubscriptionSupport.php
index a39289f5e..d77a2fe0f 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/SubscriptionSupport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/SubscriptionSupport.php
@@ -70,7 +70,7 @@ interface SubscriptionSupport extends BackendInterface {
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
- * Read the PropPatch documenation for more info and examples.
+ * Read the PropPatch documentation for more info and examples.
*
* @param mixed $subscriptionId
* @param \Sabre\DAV\PropPatch $propPatch
diff --git a/vendor/sabre/dav/lib/CalDAV/Calendar.php b/vendor/sabre/dav/lib/CalDAV/Calendar.php
index 90ace0d21..7467900cc 100644
--- a/vendor/sabre/dav/lib/CalDAV/Calendar.php
+++ b/vendor/sabre/dav/lib/CalDAV/Calendar.php
@@ -3,8 +3,8 @@
namespace Sabre\CalDAV;
use Sabre\DAV;
-use Sabre\DAVACL;
use Sabre\DAV\PropPatch;
+use Sabre\DAVACL;
/**
* This object represents a CalDAV calendar.
diff --git a/vendor/sabre/dav/lib/CalDAV/CalendarHome.php b/vendor/sabre/dav/lib/CalDAV/CalendarHome.php
index 0a4bfb68f..ffd7f72fb 100644
--- a/vendor/sabre/dav/lib/CalDAV/CalendarHome.php
+++ b/vendor/sabre/dav/lib/CalDAV/CalendarHome.php
@@ -27,7 +27,7 @@ class CalendarHome implements DAV\IExtendedCollection, DAVACL\IACL {
/**
* CalDAV backend
*
- * @var Sabre\CalDAV\Backend\BackendInterface
+ * @var Backend\BackendInterface
*/
protected $caldavBackend;
@@ -42,7 +42,7 @@ class CalendarHome implements DAV\IExtendedCollection, DAVACL\IACL {
* Constructor
*
* @param Backend\BackendInterface $caldavBackend
- * @param mixed $userUri
+ * @param array $principalInfo
*/
function __construct(Backend\BackendInterface $caldavBackend, $principalInfo) {
@@ -334,8 +334,8 @@ class CalendarHome implements DAV\IExtendedCollection, DAVACL\IACL {
* This method should return the url of the newly created calendar if the
* share was accepted.
*
- * @param string href The sharee who is replying (often a mailto: address)
- * @param int status One of the SharingPlugin::STATUS_* constants
+ * @param string $href The sharee who is replying (often a mailto: address)
+ * @param int $status One of the SharingPlugin::STATUS_* constants
* @param string $calendarUri The url to the calendar thats being shared
* @param string $inReplyTo The unique id this message is a response to
* @param string $summary A description of the reply
diff --git a/vendor/sabre/dav/lib/CalDAV/CalendarObject.php b/vendor/sabre/dav/lib/CalDAV/CalendarObject.php
index 001b35112..9d6532a35 100644
--- a/vendor/sabre/dav/lib/CalDAV/CalendarObject.php
+++ b/vendor/sabre/dav/lib/CalDAV/CalendarObject.php
@@ -16,7 +16,7 @@ class CalendarObject extends \Sabre\DAV\File implements ICalendarObject, \Sabre\
/**
* Sabre\CalDAV\Backend\BackendInterface
*
- * @var Sabre\CalDAV\Backend\AbstractBackend
+ * @var Backend\AbstractBackend
*/
protected $caldavBackend;
diff --git a/vendor/sabre/dav/lib/CalDAV/CalendarQueryValidator.php b/vendor/sabre/dav/lib/CalDAV/CalendarQueryValidator.php
index f3c7524d2..df8008fe2 100644
--- a/vendor/sabre/dav/lib/CalDAV/CalendarQueryValidator.php
+++ b/vendor/sabre/dav/lib/CalDAV/CalendarQueryValidator.php
@@ -2,8 +2,8 @@
namespace Sabre\CalDAV;
-use Sabre\VObject;
use DateTime;
+use Sabre\VObject;
/**
* CalendarQuery Validator
@@ -25,7 +25,7 @@ class CalendarQueryValidator {
*
* The list of filters must be formatted as parsed by \Sabre\CalDAV\CalendarQueryParser
*
- * @param VObject\Component $vObject
+ * @param VObject\Component\VCalendar $vObject
* @param array $filters
* @return bool
*/
diff --git a/vendor/sabre/dav/lib/CalDAV/CalendarRoot.php b/vendor/sabre/dav/lib/CalDAV/CalendarRoot.php
index 0ac50e41d..1d6b2ac9f 100644
--- a/vendor/sabre/dav/lib/CalDAV/CalendarRoot.php
+++ b/vendor/sabre/dav/lib/CalDAV/CalendarRoot.php
@@ -22,7 +22,7 @@ class CalendarRoot extends \Sabre\DAVACL\AbstractPrincipalCollection {
/**
* CalDAV backend
*
- * @var Sabre\CalDAV\Backend\BackendInterface
+ * @var Backend\BackendInterface
*/
protected $caldavBackend;
diff --git a/vendor/sabre/dav/lib/CalDAV/Exception/InvalidComponentType.php b/vendor/sabre/dav/lib/CalDAV/Exception/InvalidComponentType.php
index 5ce8a93f5..7aff2edab 100644
--- a/vendor/sabre/dav/lib/CalDAV/Exception/InvalidComponentType.php
+++ b/vendor/sabre/dav/lib/CalDAV/Exception/InvalidComponentType.php
@@ -2,8 +2,8 @@
namespace Sabre\CalDAV\Exception;
-use Sabre\DAV;
use Sabre\CalDAV;
+use Sabre\DAV;
/**
* InvalidComponentType
diff --git a/vendor/sabre/dav/lib/CalDAV/ICSExportPlugin.php b/vendor/sabre/dav/lib/CalDAV/ICSExportPlugin.php
index a3a824c71..fc8b971f3 100644
--- a/vendor/sabre/dav/lib/CalDAV/ICSExportPlugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/ICSExportPlugin.php
@@ -2,13 +2,13 @@
namespace Sabre\CalDAV;
+use DateTime;
use DateTimeZone;
use Sabre\DAV;
-use Sabre\VObject;
+use Sabre\DAV\Exception\BadRequest;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
-use Sabre\DAV\Exception\BadRequest;
-use DateTime;
+use Sabre\VObject;
/**
* ICS Exporter
diff --git a/vendor/sabre/dav/lib/CalDAV/Notifications/Collection.php b/vendor/sabre/dav/lib/CalDAV/Notifications/Collection.php
index 5fda61dfa..557832a5a 100644
--- a/vendor/sabre/dav/lib/CalDAV/Notifications/Collection.php
+++ b/vendor/sabre/dav/lib/CalDAV/Notifications/Collection.php
@@ -2,8 +2,8 @@
namespace Sabre\CalDAV\Notifications;
-use Sabre\DAV;
use Sabre\CalDAV;
+use Sabre\DAV;
use Sabre\DAVACL;
/**
@@ -27,7 +27,7 @@ class Collection extends DAV\Collection implements ICollection, DAVACL\IACL {
/**
* The notification backend
*
- * @var Sabre\CalDAV\Backend\NotificationSupport
+ * @var CalDAV\Backend\NotificationSupport
*/
protected $caldavBackend;
diff --git a/vendor/sabre/dav/lib/CalDAV/Notifications/INode.php b/vendor/sabre/dav/lib/CalDAV/Notifications/INode.php
index f9986b714..783b92be9 100644
--- a/vendor/sabre/dav/lib/CalDAV/Notifications/INode.php
+++ b/vendor/sabre/dav/lib/CalDAV/Notifications/INode.php
@@ -2,6 +2,8 @@
namespace Sabre\CalDAV\Notifications;
+use Sabre\CalDAV\Xml\Notification\NotificationInterface;
+
/**
* This node represents a single notification.
*
@@ -20,16 +22,16 @@ interface INode {
/**
* This method must return an xml element, using the
- * Sabre\CalDAV\Notifications\INotificationType classes.
+ * Sabre\CalDAV\Xml\Notification\NotificationInterface classes.
*
- * @return INotificationType
+ * @return NotificationInterface
*/
function getNotificationType();
/**
* Returns the etag for the notification.
*
- * The etag must be surrounded by litteral double-quotes.
+ * The etag must be surrounded by literal double-quotes.
*
* @return string
*/
diff --git a/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php b/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php
index 11df0c94b..ad7ddf8f5 100644
--- a/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php
+++ b/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php
@@ -2,9 +2,9 @@
namespace Sabre\CalDAV\Notifications;
-use Sabre\DAV;
use Sabre\CalDAV;
use Sabre\CalDAV\Xml\Notification\NotificationInterface;
+use Sabre\DAV;
use Sabre\DAVACL;
/**
@@ -25,14 +25,14 @@ class Node extends DAV\File implements INode, DAVACL\IACL {
/**
* The notification backend
*
- * @var Sabre\CalDAV\Backend\NotificationSupport
+ * @var CalDAV\Backend\NotificationSupport
*/
protected $caldavBackend;
/**
* The actual notification
*
- * @var Sabre\CalDAV\Notifications\INotificationType
+ * @var NotificationInterface
*/
protected $notification;
@@ -61,7 +61,7 @@ class Node extends DAV\File implements INode, DAVACL\IACL {
/**
* Returns the path name for this notification
*
- * @return id
+ * @return string
*/
function getName() {
@@ -84,9 +84,9 @@ class Node extends DAV\File implements INode, DAVACL\IACL {
/**
* This method must return an xml element, using the
- * Sabre\CalDAV\Notifications\INotificationType classes.
+ * Sabre\CalDAV\Xml\Notification\NotificationInterface classes.
*
- * @return INotificationType
+ * @return NotificationInterface
*/
function getNotificationType() {
diff --git a/vendor/sabre/dav/lib/CalDAV/Notifications/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Notifications/Plugin.php
index 546bf927f..e742351f5 100644
--- a/vendor/sabre/dav/lib/CalDAV/Notifications/Plugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/Notifications/Plugin.php
@@ -3,10 +3,10 @@
namespace Sabre\CalDAV\Notifications;
use Sabre\DAV;
-use Sabre\DAV\PropFind;
use Sabre\DAV\INode as BaseINode;
-use Sabre\DAV\ServerPlugin;
+use Sabre\DAV\PropFind;
use Sabre\DAV\Server;
+use Sabre\DAV\ServerPlugin;
use Sabre\DAVACL;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
diff --git a/vendor/sabre/dav/lib/CalDAV/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Plugin.php
index 71ba75206..def11d52d 100644
--- a/vendor/sabre/dav/lib/CalDAV/Plugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/Plugin.php
@@ -9,11 +9,11 @@ use Sabre\DAV\INode;
use Sabre\DAV\MkCol;
use Sabre\DAV\Xml\Property\LocalHref;
use Sabre\DAVACL;
-use Sabre\VObject;
use Sabre\HTTP;
-use Sabre\Uri;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
+use Sabre\Uri;
+use Sabre\VObject;
/**
* CalDAV plugin
@@ -302,8 +302,8 @@ class Plugin extends DAV\ServerPlugin {
$this->server->createCollection($path, new MkCol($resourceType, $properties));
- $this->server->httpResponse->setStatus(201);
- $this->server->httpResponse->setHeader('Content-Length', 0);
+ $response->setStatus(201);
+ $response->setHeader('Content-Length', 0);
// This breaks the method chain.
return false;
@@ -926,7 +926,7 @@ class Plugin extends DAV\ServerPlugin {
);
}
- // We use an extra variable to allow event handles to tell us wether
+ // We use an extra variable to allow event handles to tell us whether
// the object was modified or not.
//
// This helps us determine if we need to re-serialize the object.
diff --git a/vendor/sabre/dav/lib/CalDAV/Principal/ProxyRead.php b/vendor/sabre/dav/lib/CalDAV/Principal/ProxyRead.php
index 93f0fe095..e3881831e 100644
--- a/vendor/sabre/dav/lib/CalDAV/Principal/ProxyRead.php
+++ b/vendor/sabre/dav/lib/CalDAV/Principal/ProxyRead.php
@@ -2,8 +2,8 @@
namespace Sabre\CalDAV\Principal;
-use Sabre\DAVACL;
use Sabre\DAV;
+use Sabre\DAVACL;
/**
* ProxyRead principal
@@ -84,8 +84,8 @@ class ProxyRead implements IProxyRead {
/**
* Renames the node
*
- * @throws DAV\Exception\Forbidden
* @param string $name The new name
+ * @throws DAV\Exception\Forbidden
* @return void
*/
function setName($name) {
diff --git a/vendor/sabre/dav/lib/CalDAV/Principal/ProxyWrite.php b/vendor/sabre/dav/lib/CalDAV/Principal/ProxyWrite.php
index 8124c05e0..43dd9bf07 100644
--- a/vendor/sabre/dav/lib/CalDAV/Principal/ProxyWrite.php
+++ b/vendor/sabre/dav/lib/CalDAV/Principal/ProxyWrite.php
@@ -2,8 +2,8 @@
namespace Sabre\CalDAV\Principal;
-use Sabre\DAVACL;
use Sabre\DAV;
+use Sabre\DAVACL;
/**
* ProxyWrite principal
@@ -84,8 +84,8 @@ class ProxyWrite implements IProxyWrite {
/**
* Renames the node
*
- * @throws DAV\Exception\Forbidden
* @param string $name The new name
+ * @throws DAV\Exception\Forbidden
* @return void
*/
function setName($name) {
diff --git a/vendor/sabre/dav/lib/CalDAV/Schedule/IMipPlugin.php b/vendor/sabre/dav/lib/CalDAV/Schedule/IMipPlugin.php
index ffb1fe45b..6f5acb29a 100644
--- a/vendor/sabre/dav/lib/CalDAV/Schedule/IMipPlugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/Schedule/IMipPlugin.php
@@ -181,7 +181,7 @@ class IMipPlugin extends DAV\ServerPlugin {
return [
'name' => $this->getPluginName(),
- 'description' => 'Email delivery (rfc6037) for CalDAV scheduling',
+ 'description' => 'Email delivery (rfc6047) for CalDAV scheduling',
'link' => 'http://sabre.io/dav/scheduling/',
];
diff --git a/vendor/sabre/dav/lib/CalDAV/Schedule/Inbox.php b/vendor/sabre/dav/lib/CalDAV/Schedule/Inbox.php
index 6b374ea3f..81b017307 100644
--- a/vendor/sabre/dav/lib/CalDAV/Schedule/Inbox.php
+++ b/vendor/sabre/dav/lib/CalDAV/Schedule/Inbox.php
@@ -2,10 +2,10 @@
namespace Sabre\CalDAV\Schedule;
-use Sabre\DAV;
use Sabre\CalDAV;
-use Sabre\DAVACL;
use Sabre\CalDAV\Backend;
+use Sabre\DAV;
+use Sabre\DAVACL;
use Sabre\VObject;
/**
@@ -83,7 +83,7 @@ class Inbox extends DAV\Collection implements IInbox {
* Data will either be supplied as a stream resource, or in certain cases
* as a string. Keep in mind that you may have to support either.
*
- * After succesful creation of the file, you may choose to return the ETag
+ * After successful creation of the file, you may choose to return the ETag
* of the new file here.
*
* The returned ETag must be surrounded by double-quotes (The quotes should
diff --git a/vendor/sabre/dav/lib/CalDAV/Schedule/Outbox.php b/vendor/sabre/dav/lib/CalDAV/Schedule/Outbox.php
index 29eefa744..888ea3086 100644
--- a/vendor/sabre/dav/lib/CalDAV/Schedule/Outbox.php
+++ b/vendor/sabre/dav/lib/CalDAV/Schedule/Outbox.php
@@ -2,8 +2,8 @@
namespace Sabre\CalDAV\Schedule;
-use Sabre\DAV;
use Sabre\CalDAV;
+use Sabre\DAV;
use Sabre\DAVACL;
/**
diff --git a/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php
index 47511140f..0b991e619 100644
--- a/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php
@@ -3,29 +3,28 @@
namespace Sabre\CalDAV\Schedule;
use DateTimeZone;
+use Sabre\CalDAV\ICalendar;
+use Sabre\CalDAV\ICalendarObject;
+use Sabre\CalDAV\Xml\Property\ScheduleCalendarTransp;
+use Sabre\DAV\Exception\BadRequest;
+use Sabre\DAV\Exception\Forbidden;
+use Sabre\DAV\Exception\NotFound;
+use Sabre\DAV\Exception\NotImplemented;
+use Sabre\DAV\INode;
+use Sabre\DAV\PropFind;
+use Sabre\DAV\PropPatch;
use Sabre\DAV\Server;
use Sabre\DAV\ServerPlugin;
use Sabre\DAV\Sharing;
-use Sabre\DAV\PropFind;
-use Sabre\DAV\PropPatch;
-use Sabre\DAV\INode;
-use Sabre\DAV\Xml\Property\Href;
use Sabre\DAV\Xml\Property\LocalHref;
+use Sabre\DAVACL;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
use Sabre\VObject;
-use Sabre\VObject\Reader;
use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\ITip;
use Sabre\VObject\ITip\Message;
-use Sabre\DAVACL;
-use Sabre\CalDAV\ICalendar;
-use Sabre\CalDAV\ICalendarObject;
-use Sabre\CalDAV\Xml\Property\ScheduleCalendarTransp;
-use Sabre\DAV\Exception\NotFound;
-use Sabre\DAV\Exception\Forbidden;
-use Sabre\DAV\Exception\BadRequest;
-use Sabre\DAV\Exception\NotImplemented;
+use Sabre\VObject\Reader;
/**
* CalDAV scheduling plugin.
@@ -377,7 +376,7 @@ class Plugin extends ServerPlugin {
/**
* This method is responsible for delivering the ITip message.
*
- * @param ITip\Message $itipMessage
+ * @param ITip\Message $iTipMessage
* @return void
*/
function deliver(ITip\Message $iTipMessage) {
@@ -890,8 +889,8 @@ class Plugin extends ServerPlugin {
* * 3.7;description
*
* @param string $email address
- * @param DateTimeInterface $start
- * @param DateTimeInterface $end
+ * @param \DateTimeInterface $start
+ * @param \DateTimeInterface $end
* @param VObject\Component $request
* @return array
*/
@@ -1059,7 +1058,7 @@ class Plugin extends ServerPlugin {
return [
'name' => $this->getPluginName(),
- 'description' => 'Adds calendar-auto-schedule, as defined in rf6868',
+ 'description' => 'Adds calendar-auto-schedule, as defined in rfc6638',
'link' => 'http://sabre.io/dav/scheduling/',
];
diff --git a/vendor/sabre/dav/lib/CalDAV/Schedule/SchedulingObject.php b/vendor/sabre/dav/lib/CalDAV/Schedule/SchedulingObject.php
index 6d9d3d5ec..0cd05a965 100644
--- a/vendor/sabre/dav/lib/CalDAV/Schedule/SchedulingObject.php
+++ b/vendor/sabre/dav/lib/CalDAV/Schedule/SchedulingObject.php
@@ -42,7 +42,7 @@ class SchedulingObject extends \Sabre\CalDAV\CalendarObject implements IScheduli
* * lastmodified - (optional) format as a unix timestamp.
* * acl - (optional) Use this to override the default ACL for the node.
*
- * @param Backend\BackendInterface $caldavBackend
+ * @param Backend\SchedulingSupport $caldavBackend
* @param array $objectData
*/
function __construct(Backend\SchedulingSupport $caldavBackend, array $objectData) {
diff --git a/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php b/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php
index 6f7df02bc..5cce79678 100644
--- a/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php
@@ -3,7 +3,6 @@
namespace Sabre\CalDAV;
use Sabre\DAV;
-use Sabre\DAV\Xml\Property\Href;
use Sabre\DAV\Xml\Property\LocalHref;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
@@ -29,7 +28,7 @@ class SharingPlugin extends DAV\ServerPlugin {
/**
* Reference to SabreDAV server object.
*
- * @var Sabre\DAV\Server
+ * @var DAV\Server
*/
protected $server;
diff --git a/vendor/sabre/dav/lib/CalDAV/Subscriptions/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Subscriptions/Plugin.php
index 7abbfb1f9..877d96c6c 100644
--- a/vendor/sabre/dav/lib/CalDAV/Subscriptions/Plugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/Subscriptions/Plugin.php
@@ -4,8 +4,8 @@ namespace Sabre\CalDAV\Subscriptions;
use Sabre\DAV\INode;
use Sabre\DAV\PropFind;
-use Sabre\DAV\ServerPlugin;
use Sabre\DAV\Server;
+use Sabre\DAV\ServerPlugin;
/**
* This plugin adds calendar-subscription support to your CalDAV server.
diff --git a/vendor/sabre/dav/lib/CalDAV/Subscriptions/Subscription.php b/vendor/sabre/dav/lib/CalDAV/Subscriptions/Subscription.php
index 3bb3451f3..6a1851ed8 100644
--- a/vendor/sabre/dav/lib/CalDAV/Subscriptions/Subscription.php
+++ b/vendor/sabre/dav/lib/CalDAV/Subscriptions/Subscription.php
@@ -2,12 +2,12 @@
namespace Sabre\CalDAV\Subscriptions;
+use Sabre\CalDAV\Backend\SubscriptionSupport;
use Sabre\DAV\Collection;
-use Sabre\DAV\Xml\Property\Href;
use Sabre\DAV\PropPatch;
-use Sabre\DAVACL\IACL;
+use Sabre\DAV\Xml\Property\Href;
use Sabre\DAVACL\ACLTrait;
-use Sabre\CalDAV\Backend\SubscriptionSupport;
+use Sabre\DAVACL\IACL;
/**
* Subscription Node
@@ -25,7 +25,7 @@ class Subscription extends Collection implements ISubscription, IACL {
/**
* caldavBackend
*
- * @var SupportsSubscriptions
+ * @var SubscriptionSupport
*/
protected $caldavBackend;
@@ -40,7 +40,7 @@ class Subscription extends Collection implements ISubscription, IACL {
* Constructor
*
* @param SubscriptionSupport $caldavBackend
- * @param array $calendarInfo
+ * @param array $subscriptionInfo
*/
function __construct(SubscriptionSupport $caldavBackend, array $subscriptionInfo) {
@@ -104,7 +104,7 @@ class Subscription extends Collection implements ISubscription, IACL {
/**
* Returns an array with all the child nodes
*
- * @return DAV\INode[]
+ * @return \Sabre\DAV\INode[]
*/
function getChildren() {
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CalendarData.php b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CalendarData.php
index 9babcf15c..9669be304 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CalendarData.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CalendarData.php
@@ -2,11 +2,11 @@
namespace Sabre\CalDAV\Xml\Filter;
-use Sabre\Xml\Reader;
-use Sabre\Xml\XmlDeserializable;
-use Sabre\DAV\Exception\BadRequest;
use Sabre\CalDAV\Plugin;
+use Sabre\DAV\Exception\BadRequest;
use Sabre\VObject\DateTimeParser;
+use Sabre\Xml\Reader;
+use Sabre\Xml\XmlDeserializable;
/**
* CalendarData parser.
@@ -30,7 +30,7 @@ class CalendarData implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CompFilter.php b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CompFilter.php
index c9b27dbfd..c21ede66b 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CompFilter.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CompFilter.php
@@ -2,11 +2,11 @@
namespace Sabre\CalDAV\Xml\Filter;
-use Sabre\Xml\Reader;
-use Sabre\Xml\XmlDeserializable;
-use Sabre\DAV\Exception\BadRequest;
use Sabre\CalDAV\Plugin;
+use Sabre\DAV\Exception\BadRequest;
use Sabre\VObject\DateTimeParser;
+use Sabre\Xml\Reader;
+use Sabre\Xml\XmlDeserializable;
/**
* CompFilter parser.
@@ -27,7 +27,7 @@ class CompFilter implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/ParamFilter.php b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/ParamFilter.php
index eb7f564df..bf422cf05 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/ParamFilter.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/ParamFilter.php
@@ -2,9 +2,9 @@
namespace Sabre\CalDAV\Xml\Filter;
+use Sabre\CalDAV\Plugin;
use Sabre\Xml\Reader;
use Sabre\Xml\XmlDeserializable;
-use Sabre\CalDAV\Plugin;
/**
* PropFilter parser.
@@ -25,7 +25,7 @@ class ParamFilter implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/PropFilter.php b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/PropFilter.php
index 4c2e1b172..db9207295 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/PropFilter.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/PropFilter.php
@@ -2,11 +2,11 @@
namespace Sabre\CalDAV\Xml\Filter;
-use Sabre\Xml\Reader;
-use Sabre\Xml\XmlDeserializable;
-use Sabre\DAV\Exception\BadRequest;
use Sabre\CalDAV\Plugin;
+use Sabre\DAV\Exception\BadRequest;
use Sabre\VObject\DateTimeParser;
+use Sabre\Xml\Reader;
+use Sabre\Xml\XmlDeserializable;
/**
* PropFilter parser.
@@ -27,7 +27,7 @@ class PropFilter implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/Invite.php b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/Invite.php
index 1ca64f3e8..92a9ac7b7 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/Invite.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/Invite.php
@@ -2,10 +2,10 @@
namespace Sabre\CalDAV\Xml\Notification;
-use Sabre\Xml\Writer;
-use Sabre\CalDAV\SharingPlugin as SharingPlugin;
use Sabre\CalDAV;
+use Sabre\CalDAV\SharingPlugin as SharingPlugin;
use Sabre\DAV;
+use Sabre\Xml\Writer;
/**
* This class represents the cs:invite-notification notification element.
@@ -107,7 +107,7 @@ class Invite implements NotificationInterface {
/**
* The list of supported components
*
- * @var Sabre\CalDAV\Property\SupportedCalendarComponentSet
+ * @var CalDAV\Xml\Property\SupportedCalendarComponentSet
*/
protected $supportedComponents;
@@ -166,12 +166,12 @@ class Invite implements NotificationInterface {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/InviteReply.php b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/InviteReply.php
index 51bfc178a..f4b10a396 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/InviteReply.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/InviteReply.php
@@ -2,10 +2,10 @@
namespace Sabre\CalDAV\Xml\Notification;
-use Sabre\Xml\Writer;
use Sabre\CalDAV;
use Sabre\CalDAV\SharingPlugin;
use Sabre\DAV;
+use Sabre\Xml\Writer;
/**
* This class represents the cs:invite-reply notification element.
@@ -117,12 +117,12 @@ class InviteReply implements NotificationInterface {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/NotificationInterface.php b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/NotificationInterface.php
index 1c08f12fd..b98f9c888 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/NotificationInterface.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/NotificationInterface.php
@@ -2,8 +2,8 @@
namespace Sabre\CalDAV\Xml\Notification;
-use Sabre\Xml\XmlSerializable;
use Sabre\Xml\Writer;
+use Sabre\Xml\XmlSerializable;
/**
* This interface reflects a single notification type.
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/SystemStatus.php b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/SystemStatus.php
index d41702e07..8c945dd68 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/SystemStatus.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/SystemStatus.php
@@ -2,8 +2,8 @@
namespace Sabre\CalDAV\Xml\Notification;
-use Sabre\Xml\Writer;
use Sabre\CalDAV\Plugin;
+use Sabre\Xml\Writer;
/**
* SystemStatus notification
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/AllowedSharingModes.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/AllowedSharingModes.php
index c2a2d565e..54e5a116a 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/AllowedSharingModes.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/AllowedSharingModes.php
@@ -2,9 +2,9 @@
namespace Sabre\CalDAV\Xml\Property;
-use Sabre\Xml\XmlSerializable;
-use Sabre\Xml\Writer;
use Sabre\CalDAV\Plugin;
+use Sabre\Xml\Writer;
+use Sabre\Xml\XmlSerializable;
/**
* AllowedSharingModes
@@ -53,12 +53,12 @@ class AllowedSharingModes implements XmlSerializable {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/EmailAddressSet.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/EmailAddressSet.php
index f577a9919..fc6f1d505 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/EmailAddressSet.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/EmailAddressSet.php
@@ -49,12 +49,12 @@ class EmailAddressSet implements XmlSerializable {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/Invite.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/Invite.php
index 40ff6b936..4f33c464c 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/Invite.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/Invite.php
@@ -2,10 +2,11 @@
namespace Sabre\CalDAV\Xml\Property;
-use Sabre\Xml\XmlSerializable;
-use Sabre\Xml\Writer;
use Sabre\CalDAV\Plugin;
use Sabre\DAV;
+use Sabre\DAV\Xml\Element\Sharee;
+use Sabre\Xml\Writer;
+use Sabre\Xml\XmlSerializable;
/**
* Invite property
@@ -51,12 +52,12 @@ class Invite implements XmlSerializable {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
@@ -75,7 +76,7 @@ class Invite implements XmlSerializable {
foreach ($this->sharees as $sharee) {
- if ($sharee->access === \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER) {
+ if ($sharee->access === DAV\Sharing\Plugin::ACCESS_SHAREDOWNER) {
$writer->startElement($cs . 'organizer');
} else {
$writer->startElement($cs . 'user');
@@ -109,7 +110,7 @@ class Invite implements XmlSerializable {
}
- $href = new \Sabre\DAV\Xml\Property\Href($sharee->href);
+ $href = new DAV\Xml\Property\Href($sharee->href);
$href->xmlSerialize($writer);
if (isset($sharee->properties['{DAV:}displayname'])) {
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/ScheduleCalendarTransp.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/ScheduleCalendarTransp.php
index a82b8eff7..10c20be55 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/ScheduleCalendarTransp.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/ScheduleCalendarTransp.php
@@ -2,11 +2,11 @@
namespace Sabre\CalDAV\Xml\Property;
+use Sabre\CalDAV\Plugin;
+use Sabre\Xml\Deserializer;
use Sabre\Xml\Element;
use Sabre\Xml\Reader;
-use Sabre\Xml\Deserializer;
use Sabre\Xml\Writer;
-use Sabre\CalDAV\Plugin;
/**
* schedule-calendar-transp property.
@@ -62,12 +62,12 @@ class ScheduleCalendarTransp implements Element {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
@@ -96,7 +96,7 @@ class ScheduleCalendarTransp implements Element {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarComponentSet.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarComponentSet.php
index 7a26e767e..7fc25c5f0 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarComponentSet.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarComponentSet.php
@@ -2,11 +2,11 @@
namespace Sabre\CalDAV\Xml\Property;
+use Sabre\CalDAV\Plugin;
use Sabre\Xml\Element;
use Sabre\Xml\ParseException;
use Sabre\Xml\Reader;
use Sabre\Xml\Writer;
-use Sabre\CalDAV\Plugin;
/**
* SupportedCalendarComponentSet property.
@@ -55,12 +55,12 @@ class SupportedCalendarComponentSet implements Element {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
@@ -88,7 +88,7 @@ class SupportedCalendarComponentSet implements Element {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarData.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarData.php
index b0c407fd6..d123ba4c0 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarData.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarData.php
@@ -2,9 +2,9 @@
namespace Sabre\CalDAV\Xml\Property;
-use Sabre\Xml\XmlSerializable;
-use Sabre\Xml\Writer;
use Sabre\CalDAV\Plugin;
+use Sabre\Xml\Writer;
+use Sabre\Xml\XmlSerializable;
/**
* Supported-calendar-data property
@@ -23,12 +23,12 @@ use Sabre\CalDAV\Plugin;
class SupportedCalendarData implements XmlSerializable {
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCollationSet.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCollationSet.php
index 71de25a62..af10860d0 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCollationSet.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCollationSet.php
@@ -2,9 +2,9 @@
namespace Sabre\CalDAV\Xml\Property;
+use Sabre\CalDAV\Plugin;
use Sabre\Xml\Writer;
use Sabre\Xml\XmlSerializable;
-use Sabre\CalDAV\Plugin;
/**
* supported-collation-set property
@@ -22,12 +22,12 @@ use Sabre\CalDAV\Plugin;
class SupportedCollationSet implements XmlSerializable {
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php
index 79b3bb3ac..6d3c5d508 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php
@@ -2,10 +2,10 @@
namespace Sabre\CalDAV\Xml\Request;
-use Sabre\Xml\XmlDeserializable;
-use Sabre\Xml\Reader;
use Sabre\CalDAV\Plugin;
use Sabre\Uri;
+use Sabre\Xml\Reader;
+use Sabre\Xml\XmlDeserializable;
/**
* CalendarMultiGetReport request parser.
@@ -64,7 +64,7 @@ class CalendarMultiGetReport implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php
index 848a4dc46..e0b1c7950 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php
@@ -2,10 +2,10 @@
namespace Sabre\CalDAV\Xml\Request;
-use Sabre\Xml\XmlDeserializable;
-use Sabre\Xml\Reader;
-use Sabre\DAV\Exception\BadRequest;
use Sabre\CalDAV\Plugin;
+use Sabre\DAV\Exception\BadRequest;
+use Sabre\Xml\Reader;
+use Sabre\Xml\XmlDeserializable;
/**
* CalendarQueryReport request parser.
@@ -64,7 +64,7 @@ class CalendarQueryReport implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/FreeBusyQueryReport.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/FreeBusyQueryReport.php
index e3b27d08e..0f6c1e074 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/FreeBusyQueryReport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/FreeBusyQueryReport.php
@@ -38,7 +38,7 @@ class FreeBusyQueryReport implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/InviteReply.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/InviteReply.php
index 2ecf6c2bb..db32cc6a5 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/InviteReply.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/InviteReply.php
@@ -6,9 +6,9 @@ use Sabre\CalDAV\Plugin;
use Sabre\CalDAV\SharingPlugin;
use Sabre\DAV;
use Sabre\DAV\Exception\BadRequest;
+use Sabre\Xml\Element\KeyValue;
use Sabre\Xml\Reader;
use Sabre\Xml\XmlDeserializable;
-use Sabre\Xml\Element\KeyValue;
/**
* Invite-reply POST request parser
@@ -82,7 +82,7 @@ class InviteReply implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/MkCalendar.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/MkCalendar.php
index 7b745db55..ce7fafde9 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/MkCalendar.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/MkCalendar.php
@@ -39,7 +39,7 @@ class MkCalendar implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
@@ -62,8 +62,8 @@ class MkCalendar implements XmlDeserializable {
$self = new self();
$elementMap = $reader->elementMap;
- $elementMap['{DAV:}prop'] = 'Sabre\DAV\Xml\Element\Prop';
- $elementMap['{DAV:}set'] = 'Sabre\Xml\Element\KeyValue';
+ $elementMap['{DAV:}prop'] = 'Sabre\DAV\Xml\Element\Prop';
+ $elementMap['{DAV:}set'] = 'Sabre\Xml\Element\KeyValue';
$elems = $reader->parseInnerTree($elementMap);
foreach ($elems as $elem) {
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/Share.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/Share.php
index b5d9a133c..e0bd8e0af 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/Share.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/Share.php
@@ -41,7 +41,7 @@ class Share implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CardDAV/AddressBook.php b/vendor/sabre/dav/lib/CardDAV/AddressBook.php
index 6dd098618..c9d28a091 100644
--- a/vendor/sabre/dav/lib/CardDAV/AddressBook.php
+++ b/vendor/sabre/dav/lib/CardDAV/AddressBook.php
@@ -60,7 +60,7 @@ class AddressBook extends DAV\Collection implements IAddressBook, DAV\IPropertie
* Returns a card
*
* @param string $name
- * @return \ICard
+ * @return Card
*/
function getChild($name) {
diff --git a/vendor/sabre/dav/lib/CardDAV/AddressBookHome.php b/vendor/sabre/dav/lib/CardDAV/AddressBookHome.php
index 888a44a40..d770c0ffe 100644
--- a/vendor/sabre/dav/lib/CardDAV/AddressBookHome.php
+++ b/vendor/sabre/dav/lib/CardDAV/AddressBookHome.php
@@ -127,7 +127,7 @@ class AddressBookHome extends DAV\Collection implements DAV\IExtendedCollection,
*
* @param string $name
* @todo needs optimizing
- * @return \AddressBook
+ * @return AddressBook
*/
function getChild($name) {
diff --git a/vendor/sabre/dav/lib/CardDAV/AddressBookRoot.php b/vendor/sabre/dav/lib/CardDAV/AddressBookRoot.php
index 4a33df4ec..a9f1183da 100644
--- a/vendor/sabre/dav/lib/CardDAV/AddressBookRoot.php
+++ b/vendor/sabre/dav/lib/CardDAV/AddressBookRoot.php
@@ -18,7 +18,7 @@ class AddressBookRoot extends DAVACL\AbstractPrincipalCollection {
/**
* Principal Backend
*
- * @var Sabre\DAVACL\PrincipalBackend\BackendInteface
+ * @var DAVACL\PrincipalBackend\BackendInterface
*/
protected $principalBackend;
diff --git a/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php b/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php
index 54e42b899..18c0c0a99 100644
--- a/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php
+++ b/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php
@@ -46,7 +46,7 @@ interface BackendInterface {
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
- * Read the PropPatch documenation for more info and examples.
+ * Read the PropPatch documentation for more info and examples.
*
* @param string $addressBookId
* @param \Sabre\DAV\PropPatch $propPatch
diff --git a/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php b/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php
index 7c3feff93..13487e9da 100644
--- a/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php
+++ b/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php
@@ -93,7 +93,7 @@ class PDO extends AbstractBackend implements SyncSupport {
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
- * Read the PropPatch documenation for more info and examples.
+ * Read the PropPatch documentation for more info and examples.
*
* @param string $addressBookId
* @param \Sabre\DAV\PropPatch $propPatch
@@ -240,7 +240,7 @@ class PDO extends AbstractBackend implements SyncSupport {
}
/**
- * Returns a specfic card.
+ * Returns a specific card.
*
* The same set of properties must be returned as with getCards. The only
* exception is that 'carddata' is absolutely required.
@@ -466,7 +466,7 @@ class PDO extends AbstractBackend implements SyncSupport {
// Current synctoken
$stmt = $this->pdo->prepare('SELECT synctoken FROM ' . $this->addressBooksTableName . ' WHERE id = ?');
- $stmt->execute([ $addressBookId ]);
+ $stmt->execute([$addressBookId]);
$currentToken = $stmt->fetchColumn(0);
if (is_null($currentToken)) return null;
diff --git a/vendor/sabre/dav/lib/CardDAV/Card.php b/vendor/sabre/dav/lib/CardDAV/Card.php
index 0a040be6b..42a2d7b6a 100644
--- a/vendor/sabre/dav/lib/CardDAV/Card.php
+++ b/vendor/sabre/dav/lib/CardDAV/Card.php
@@ -2,8 +2,8 @@
namespace Sabre\CardDAV;
-use Sabre\DAVACL;
use Sabre\DAV;
+use Sabre\DAVACL;
/**
* The Card object represents a single Card from an addressbook
diff --git a/vendor/sabre/dav/lib/CardDAV/Plugin.php b/vendor/sabre/dav/lib/CardDAV/Plugin.php
index 0507df100..272ae71fa 100644
--- a/vendor/sabre/dav/lib/CardDAV/Plugin.php
+++ b/vendor/sabre/dav/lib/CardDAV/Plugin.php
@@ -43,7 +43,7 @@ class Plugin extends DAV\ServerPlugin {
/**
* Server class
*
- * @var Sabre\DAV\Server
+ * @var DAV\Server
*/
protected $server;
@@ -490,7 +490,8 @@ class Plugin extends DAV\ServerPlugin {
$props[200]['{' . self::NS_CARDDAV . '}address-data'] = $this->convertVCard(
$props[200]['{' . self::NS_CARDDAV . '}address-data'],
- $vcardType
+ $vcardType,
+ $report->addressDataProperties
);
}
@@ -845,14 +846,26 @@ class Plugin extends DAV\ServerPlugin {
*
* @param string|resource $data
* @param string $target
+ * @param array $propertiesFilter
* @return string
*/
- protected function convertVCard($data, $target) {
+ protected function convertVCard($data, $target, array $propertiesFilter = null) {
if (is_resource($data)) {
$data = stream_get_contents($data);
}
$input = VObject\Reader::read($data);
+ if (!empty($propertiesFilter)) {
+ $propertiesFilter = array_merge(['UID', 'VERSION', 'FN'], $propertiesFilter);
+ $keys = array_unique(array_map(function($child) {
+ return $child->name;
+ }, $input->children()));
+ $keys = array_diff($keys, $propertiesFilter);
+ foreach ($keys as $key) {
+ unset($input->$key);
+ }
+ $data = $input->serialize();
+ }
$output = null;
try {
diff --git a/vendor/sabre/dav/lib/CardDAV/VCFExportPlugin.php b/vendor/sabre/dav/lib/CardDAV/VCFExportPlugin.php
index d015589ad..2d61db6ac 100644
--- a/vendor/sabre/dav/lib/CardDAV/VCFExportPlugin.php
+++ b/vendor/sabre/dav/lib/CardDAV/VCFExportPlugin.php
@@ -3,9 +3,9 @@
namespace Sabre\CardDAV;
use Sabre\DAV;
-use Sabre\VObject;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
+use Sabre\VObject;
/**
* VCF Exporter
@@ -24,7 +24,7 @@ class VCFExportPlugin extends DAV\ServerPlugin {
/**
* Reference to Server class
*
- * @var Sabre\DAV\Server
+ * @var DAV\Server
*/
protected $server;
diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/AddressData.php b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/AddressData.php
index 34028db85..a130cd61d 100644
--- a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/AddressData.php
+++ b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/AddressData.php
@@ -26,7 +26,7 @@ class AddressData implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
@@ -51,7 +51,11 @@ class AddressData implements XmlDeserializable {
'version' => $reader->getAttribute('version') ?: '3.0',
];
- $reader->next();
+ $elems = (array)$reader->parseInnerTree();
+ $result['addressDataProperties'] = array_map(function($element) {
+ return $element['attributes']['name'];
+ }, $elems);
+
return $result;
}
diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/ParamFilter.php b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/ParamFilter.php
index 9646ae3e6..936e26917 100644
--- a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/ParamFilter.php
+++ b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/ParamFilter.php
@@ -2,10 +2,10 @@
namespace Sabre\CardDAV\Xml\Filter;
+use Sabre\CardDAV\Plugin;
+use Sabre\DAV\Exception\BadRequest;
use Sabre\Xml\Element;
use Sabre\Xml\Reader;
-use Sabre\DAV\Exception\BadRequest;
-use Sabre\CardDAV\Plugin;
/**
* ParamFilter parser.
@@ -26,7 +26,7 @@ abstract class ParamFilter implements Element {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/PropFilter.php b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/PropFilter.php
index c162da160..d7799429d 100644
--- a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/PropFilter.php
+++ b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/PropFilter.php
@@ -2,10 +2,10 @@
namespace Sabre\CardDAV\Xml\Filter;
+use Sabre\CardDAV\Plugin;
+use Sabre\DAV\Exception\BadRequest;
use Sabre\Xml\Reader;
use Sabre\Xml\XmlDeserializable;
-use Sabre\DAV\Exception\BadRequest;
-use Sabre\CardDAV\Plugin;
/**
* PropFilter parser.
@@ -26,7 +26,7 @@ class PropFilter implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php
index 6ff57b6e3..aecd8a09f 100644
--- a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php
+++ b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php
@@ -2,9 +2,9 @@
namespace Sabre\CardDAV\Xml\Property;
+use Sabre\CardDAV\Plugin;
use Sabre\Xml\Writer;
use Sabre\Xml\XmlSerializable;
-use Sabre\CardDAV\Plugin;
/**
* Supported-address-data property
@@ -49,12 +49,12 @@ class SupportedAddressData implements XmlSerializable {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedCollationSet.php b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedCollationSet.php
index 1fc064900..778aa2b64 100644
--- a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedCollationSet.php
+++ b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedCollationSet.php
@@ -18,12 +18,12 @@ use Sabre\Xml\XmlSerializable;
class SupportedCollationSet implements XmlSerializable {
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookMultiGetReport.php b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookMultiGetReport.php
index c97c5eb4f..0115a0107 100644
--- a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookMultiGetReport.php
+++ b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookMultiGetReport.php
@@ -54,7 +54,7 @@ class AddressBookMultiGetReport implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php
index a68ac5800..09fad008a 100644
--- a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php
+++ b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php
@@ -2,10 +2,10 @@
namespace Sabre\CardDAV\Xml\Request;
+use Sabre\CardDAV\Plugin;
+use Sabre\DAV\Exception\BadRequest;
use Sabre\Xml\Reader;
use Sabre\Xml\XmlDeserializable;
-use Sabre\DAV\Exception\BadRequest;
-use Sabre\CardDAV\Plugin;
/**
* AddressBookQueryReport request parser.
@@ -29,6 +29,13 @@ class AddressBookQueryReport implements XmlDeserializable {
public $properties;
/**
+ * An array with requested vcard properties.
+ *
+ * @var array
+ */
+ public $addressDataProperties = [];
+
+ /**
* List of property/component filters.
*
* This is an array with filters. Every item is a property filter. Every
@@ -92,7 +99,7 @@ class AddressBookQueryReport implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractDigest.php b/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractDigest.php
index 85c5f30d5..4b47f56c9 100644
--- a/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractDigest.php
+++ b/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractDigest.php
@@ -2,8 +2,8 @@
namespace Sabre\DAV\Auth\Backend;
-use Sabre\HTTP;
use Sabre\DAV;
+use Sabre\HTTP;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
diff --git a/vendor/sabre/dav/lib/DAV/Auth/Backend/PDO.php b/vendor/sabre/dav/lib/DAV/Auth/Backend/PDO.php
index 76ad89391..c2f6de974 100644
--- a/vendor/sabre/dav/lib/DAV/Auth/Backend/PDO.php
+++ b/vendor/sabre/dav/lib/DAV/Auth/Backend/PDO.php
@@ -31,7 +31,7 @@ class PDO extends AbstractDigest {
*
* If the filename argument is passed in, it will parse out the specified file fist.
*
- * @param PDO $pdo
+ * @param \PDO $pdo
*/
function __construct(\PDO $pdo) {
diff --git a/vendor/sabre/dav/lib/DAV/Auth/Plugin.php b/vendor/sabre/dav/lib/DAV/Auth/Plugin.php
index 4b5f35ac3..bbb5d180d 100644
--- a/vendor/sabre/dav/lib/DAV/Auth/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Auth/Plugin.php
@@ -2,11 +2,11 @@
namespace Sabre\DAV\Auth;
-use Sabre\HTTP\RequestInterface;
-use Sabre\HTTP\ResponseInterface;
use Sabre\DAV\Exception\NotAuthenticated;
use Sabre\DAV\Server;
use Sabre\DAV\ServerPlugin;
+use Sabre\HTTP\RequestInterface;
+use Sabre\HTTP\ResponseInterface;
/**
* This plugin provides Authentication for a WebDAV server.
@@ -181,7 +181,7 @@ class Plugin extends ServerPlugin {
*
* If login was not successful, the second item in the array will contain a
* an array with strings. The strings are a list of reasons why login was
- * unsuccesful. For every auth backend there will be one reason, so usually
+ * unsuccessful. For every auth backend there will be one reason, so usually
* there's just one.
*
* @param RequestInterface $request
diff --git a/vendor/sabre/dav/lib/DAV/Browser/GuessContentType.php b/vendor/sabre/dav/lib/DAV/Browser/GuessContentType.php
index 01cddc230..3ba2aee25 100644
--- a/vendor/sabre/dav/lib/DAV/Browser/GuessContentType.php
+++ b/vendor/sabre/dav/lib/DAV/Browser/GuessContentType.php
@@ -2,10 +2,10 @@
namespace Sabre\DAV\Browser;
-use Sabre\HTTP\URLUtil;
use Sabre\DAV;
-use Sabre\DAV\PropFind;
use Sabre\DAV\Inode;
+use Sabre\DAV\PropFind;
+use Sabre\HTTP\URLUtil;
/**
* GuessContentType plugin
diff --git a/vendor/sabre/dav/lib/DAV/Browser/MapGetToPropFind.php b/vendor/sabre/dav/lib/DAV/Browser/MapGetToPropFind.php
index 38ee63bcd..61327c49a 100644
--- a/vendor/sabre/dav/lib/DAV/Browser/MapGetToPropFind.php
+++ b/vendor/sabre/dav/lib/DAV/Browser/MapGetToPropFind.php
@@ -21,7 +21,7 @@ class MapGetToPropFind extends DAV\ServerPlugin {
/**
* reference to server class
*
- * @var Sabre\DAV\Server
+ * @var DAV\Server
*/
protected $server;
diff --git a/vendor/sabre/dav/lib/DAV/Browser/Plugin.php b/vendor/sabre/dav/lib/DAV/Browser/Plugin.php
index 49359a045..545ad5633 100644
--- a/vendor/sabre/dav/lib/DAV/Browser/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Browser/Plugin.php
@@ -4,9 +4,9 @@ namespace Sabre\DAV\Browser;
use Sabre\DAV;
use Sabre\DAV\MkCol;
-use Sabre\HTTP\URLUtil;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
+use Sabre\HTTP\URLUtil;
/**
* Browser Plugin
@@ -26,7 +26,7 @@ class Plugin extends DAV\ServerPlugin {
/**
* reference to server class
*
- * @var Sabre\DAV\Server
+ * @var DAV\Server
*/
protected $server;
@@ -112,7 +112,7 @@ class Plugin extends DAV\ServerPlugin {
$getVars = $request->getQueryParameters();
// CSP headers
- $this->server->httpResponse->setHeader('Content-Security-Policy', "default-src 'none'; img-src 'self'; style-src 'self'; font-src 'self';");
+ $response->setHeader('Content-Security-Policy', "default-src 'none'; img-src 'self'; style-src 'self'; font-src 'self';");
$sabreAction = isset($getVars['sabreAction']) ? $getVars['sabreAction'] : null;
@@ -317,7 +317,7 @@ class Plugin extends DAV\ServerPlugin {
$buttonActions = '';
if ($subProps['subNode'] instanceof DAV\IFile) {
- $buttonActions = '<a href="' . $this->escapeHTML($subProps['fullPath']) . '?sabreAction=info"><span class="oi" data-glyph="info"></span></a>';
+ $buttonActions = '<a href="' . $this->escapeHTML($subProps['fullPath']) . '?sabreAction=info"><span class="oi" data-glyph="info"></span></a>';
}
$this->server->emit('browserButtonActions', [$subProps['fullPath'], $subProps['subNode'], &$buttonActions]);
@@ -414,11 +414,14 @@ class Plugin extends DAV\ServerPlugin {
*
* @param string $title
* @param string $path
- * @return void
+ * @return string
*/
function generateHeader($title, $path = null) {
- $version = DAV\Version::VERSION;
+ $version = '';
+ if (DAV\Server::$exposeVersion) {
+ $version = DAV\Version::VERSION;
+ }
$vars = [
'title' => $this->escapeHTML($title),
@@ -475,7 +478,10 @@ HTML;
*/
function generateFooter() {
- $version = DAV\Version::VERSION;
+ $version = '';
+ if (DAV\Server::$exposeVersion) {
+ $version = DAV\Version::VERSION;
+ }
return <<<HTML
<footer>Generated by SabreDAV $version (c)2007-2016 <a href="http://sabre.io/">http://sabre.io/</a></footer>
</body>
@@ -506,23 +512,21 @@ HTML;
if (get_class($node) === 'Sabre\\DAV\\SimpleCollection')
return;
- ob_start();
- echo '<form method="post" action="">
- <h3>Create new folder</h3>
- <input type="hidden" name="sabreAction" value="mkcol" />
- <label>Name:</label> <input type="text" name="name" /><br />
- <input type="submit" value="create" />
- </form>
- <form method="post" action="" enctype="multipart/form-data">
- <h3>Upload file</h3>
- <input type="hidden" name="sabreAction" value="put" />
- <label>Name (optional):</label> <input type="text" name="name" /><br />
- <label>File:</label> <input type="file" name="file" /><br />
- <input type="submit" value="upload" />
- </form>
- ';
-
- $output .= ob_get_clean();
+ $output .= <<<HTML
+<form method="post" action="">
+<h3>Create new folder</h3>
+<input type="hidden" name="sabreAction" value="mkcol" />
+<label>Name:</label> <input type="text" name="name" /><br />
+<input type="submit" value="create" />
+</form>
+<form method="post" action="" enctype="multipart/form-data">
+<h3>Upload file</h3>
+<input type="hidden" name="sabreAction" value="put" />
+<label>Name (optional):</label> <input type="text" name="name" /><br />
+<label>File:</label> <input type="file" name="file" /><br />
+<input type="submit" value="upload" />
+</form>
+HTML;
}
@@ -543,8 +547,8 @@ HTML;
* This method returns a local pathname to an asset.
*
* @param string $assetName
- * @return string
* @throws DAV\Exception\NotFound
+ * @return string
*/
protected function getLocalAssetPath($assetName) {
@@ -575,9 +579,9 @@ HTML;
// Rudimentary mime type detection
$mime = 'application/octet-stream';
$map = [
- 'ico' => 'image/vnd.microsoft.icon',
- 'png' => 'image/png',
- 'css' => 'text/css',
+ 'ico' => 'image/vnd.microsoft.icon',
+ 'png' => 'image/png',
+ 'css' => 'text/css',
];
$ext = substr($assetName, strrpos($assetName, '.') + 1);
@@ -623,7 +627,7 @@ HTML;
* Maps a resource type to a human-readable string and icon.
*
* @param array $resourceTypes
- * @param INode $node
+ * @param DAV\INode $node
* @return array
*/
private function mapResourceType(array $resourceTypes, $node) {
diff --git a/vendor/sabre/dav/lib/DAV/Browser/PropFindAll.php b/vendor/sabre/dav/lib/DAV/Browser/PropFindAll.php
index 1ac439672..c14b7f2f9 100644
--- a/vendor/sabre/dav/lib/DAV/Browser/PropFindAll.php
+++ b/vendor/sabre/dav/lib/DAV/Browser/PropFindAll.php
@@ -28,7 +28,7 @@ class PropFindAll extends PropFind {
/**
* Handles a specific property.
*
- * This method checks wether the specified property was requested in this
+ * This method checks whether the specified property was requested in this
* PROPFIND request, and if so, it will call the callback and use the
* return value for it's value.
*
diff --git a/vendor/sabre/dav/lib/DAV/Client.php b/vendor/sabre/dav/lib/DAV/Client.php
index 08d5d4702..175ad1bc4 100644
--- a/vendor/sabre/dav/lib/DAV/Client.php
+++ b/vendor/sabre/dav/lib/DAV/Client.php
@@ -231,7 +231,7 @@ class Client extends HTTP\Client {
$response = $this->send($request);
if ((int)$response->getStatus() >= 400) {
- throw new \Sabre\HTTP\ClientHttpException($response);
+ throw new HTTP\ClientHttpException($response);
}
$result = $this->parseMultiStatus($response->getBodyAsString());
@@ -281,7 +281,7 @@ class Client extends HTTP\Client {
$response = $this->send($request);
if ($response->getStatus() >= 400) {
- throw new \Sabre\HTTP\ClientHttpException($response);
+ throw new HTTP\ClientHttpException($response);
}
if ($response->getStatus() === 207) {
@@ -303,7 +303,7 @@ class Client extends HTTP\Client {
}
if ($errorProperties) {
- throw new \Sabre\HTTP\ClientException('PROPPATCH failed. The following properties errored: ' . implode(', ', $errorProperties));
+ throw new HTTP\ClientException('PROPPATCH failed. The following properties errored: ' . implode(', ', $errorProperties));
}
}
return true;
diff --git a/vendor/sabre/dav/lib/DAV/Collection.php b/vendor/sabre/dav/lib/DAV/Collection.php
index a46bcc342..35c90b5af 100644
--- a/vendor/sabre/dav/lib/DAV/Collection.php
+++ b/vendor/sabre/dav/lib/DAV/Collection.php
@@ -68,7 +68,7 @@ abstract class Collection extends Node implements ICollection {
* Data will either be supplied as a stream resource, or in certain cases
* as a string. Keep in mind that you may have to support either.
*
- * After succesful creation of the file, you may choose to return the ETag
+ * After successful creation of the file, you may choose to return the ETag
* of the new file here.
*
* The returned ETag must be surrounded by double-quotes (The quotes should
diff --git a/vendor/sabre/dav/lib/DAV/CorePlugin.php b/vendor/sabre/dav/lib/DAV/CorePlugin.php
index a1b052915..676cdd04a 100644
--- a/vendor/sabre/dav/lib/DAV/CorePlugin.php
+++ b/vendor/sabre/dav/lib/DAV/CorePlugin.php
@@ -165,7 +165,7 @@ class CorePlugin extends ServerPlugin {
} else {
$start = $nodeSize - $range[1];
- $end = $nodeSize - 1;
+ $end = $nodeSize - 1;
if ($start < 0) $start = 0;
@@ -194,7 +194,7 @@ class CorePlugin extends ServerPlugin {
$response->setBody($body);
}
- // Sending back false will interupt the event chain and tell the server
+ // Sending back false will interrupt the event chain and tell the server
// we've handled this method.
return false;
@@ -224,7 +224,7 @@ class CorePlugin extends ServerPlugin {
$response->setHeader('Content-Length', '0');
$response->setStatus(200);
- // Sending back false will interupt the event chain and tell the server
+ // Sending back false will interrupt the event chain and tell the server
// we've handled this method.
return false;
@@ -264,7 +264,7 @@ class CorePlugin extends ServerPlugin {
$response->setHeader('X-Sabre-Real-Status', $e->getHTTPCode());
}
- // Sending back false will interupt the event chain and tell the server
+ // Sending back false will interrupt the event chain and tell the server
// we've handled this method.
return false;
@@ -290,7 +290,7 @@ class CorePlugin extends ServerPlugin {
$response->setStatus(204);
$response->setHeader('Content-Length', '0');
- // Sending back false will interupt the event chain and tell the server
+ // Sending back false will interrupt the event chain and tell the server
// we've handled this method.
return false;
@@ -333,7 +333,7 @@ class CorePlugin extends ServerPlugin {
// The only two options for the depth of a propfind is 0 or 1 - as long as depth infinity is not enabled
if (!$this->server->enablePropfindDepthInfinity && $depth != 0) $depth = 1;
- $newProperties = $this->server->getPropertiesForPath($path, $propFindXml->properties, $depth);
+ $newProperties = $this->server->getPropertiesIteratorForPath($path, $propFindXml->properties, $depth);
// This is a multi-status response
$response->setStatus(207);
@@ -355,7 +355,7 @@ class CorePlugin extends ServerPlugin {
$data = $this->server->generateMultiStatus($newProperties, $minimal);
$response->setBody($data);
- // Sending back false will interupt the event chain and tell the server
+ // Sending back false will interrupt the event chain and tell the server
// we've handled this method.
return false;
@@ -390,7 +390,7 @@ class CorePlugin extends ServerPlugin {
if ($prefer['return'] === 'minimal') {
// If return-minimal is specified, we only have to check if the
- // request was succesful, and don't need to return the
+ // request was successful, and don't need to return the
// multi-status.
$ok = true;
foreach ($result as $prop => $code) {
@@ -427,7 +427,7 @@ class CorePlugin extends ServerPlugin {
$this->server->generateMultiStatus([$multiStatus])
);
- // Sending back false will interupt the event chain and tell the server
+ // Sending back false will interrupt the event chain and tell the server
// we've handled this method.
return false;
@@ -533,7 +533,7 @@ class CorePlugin extends ServerPlugin {
}
- // Sending back false will interupt the event chain and tell the server
+ // Sending back false will interrupt the event chain and tell the server
// we've handled this method.
return false;
@@ -602,7 +602,7 @@ class CorePlugin extends ServerPlugin {
$response->setStatus(201);
}
- // Sending back false will interupt the event chain and tell the server
+ // Sending back false will interrupt the event chain and tell the server
// we've handled this method.
return false;
@@ -653,7 +653,7 @@ class CorePlugin extends ServerPlugin {
$response->setHeader('Content-Length', '0');
$response->setStatus($moveInfo['destinationExists'] ? 204 : 201);
- // Sending back false will interupt the event chain and tell the server
+ // Sending back false will interrupt the event chain and tell the server
// we've handled this method.
return false;
@@ -688,7 +688,7 @@ class CorePlugin extends ServerPlugin {
$response->setHeader('Content-Length', '0');
$response->setStatus($copyInfo['destinationExists'] ? 204 : 201);
- // Sending back false will interupt the event chain and tell the server
+ // Sending back false will interrupt the event chain and tell the server
// we've handled this method.
return false;
@@ -722,7 +722,7 @@ class CorePlugin extends ServerPlugin {
}
- // Sending back false will interupt the event chain and tell the server
+ // Sending back false will interrupt the event chain and tell the server
// we've handled this method.
return false;
@@ -740,7 +740,7 @@ class CorePlugin extends ServerPlugin {
*/
function propPatchProtectedPropertyCheck($path, PropPatch $propPatch) {
- // Comparing the mutation list to the list of propetected properties.
+ // Comparing the mutation list to the list of protected properties.
$mutations = $propPatch->getMutations();
$protected = array_intersect(
diff --git a/vendor/sabre/dav/lib/DAV/Exception/InvalidResourceType.php b/vendor/sabre/dav/lib/DAV/Exception/InvalidResourceType.php
index 505fe5c10..6324d9f3a 100644
--- a/vendor/sabre/dav/lib/DAV/Exception/InvalidResourceType.php
+++ b/vendor/sabre/dav/lib/DAV/Exception/InvalidResourceType.php
@@ -19,7 +19,7 @@ class InvalidResourceType extends Forbidden {
/**
* This method allows the exception to include additional information into the WebDAV error response
*
- * @param DAV\Server $server
+ * @param \Sabre\DAV\Server $server
* @param \DOMElement $errorNode
* @return void
*/
diff --git a/vendor/sabre/dav/lib/DAV/FS/Node.php b/vendor/sabre/dav/lib/DAV/FS/Node.php
index 831c11911..424718f96 100644
--- a/vendor/sabre/dav/lib/DAV/FS/Node.php
+++ b/vendor/sabre/dav/lib/DAV/FS/Node.php
@@ -43,7 +43,7 @@ abstract class Node implements DAV\INode {
*/
function getName() {
- list(, $name) = URLUtil::splitPath($this->path);
+ list(, $name) = URLUtil::splitPath($this->path);
return $name;
}
diff --git a/vendor/sabre/dav/lib/DAV/File.php b/vendor/sabre/dav/lib/DAV/File.php
index 675956b22..5161fbd51 100644
--- a/vendor/sabre/dav/lib/DAV/File.php
+++ b/vendor/sabre/dav/lib/DAV/File.php
@@ -19,7 +19,7 @@ abstract class File extends Node implements IFile {
*
* The data argument is a readable stream resource.
*
- * After a succesful put operation, you may choose to return an ETag. The
+ * After a successful put operation, you may choose to return an ETag. The
* etag must always be surrounded by double-quotes. These quotes must
* appear in the actual string you're returning.
*
diff --git a/vendor/sabre/dav/lib/DAV/IFile.php b/vendor/sabre/dav/lib/DAV/IFile.php
index 37e7cd33c..19d8d8637 100644
--- a/vendor/sabre/dav/lib/DAV/IFile.php
+++ b/vendor/sabre/dav/lib/DAV/IFile.php
@@ -20,7 +20,7 @@ interface IFile extends INode {
*
* The data argument is a readable stream resource.
*
- * After a succesful put operation, you may choose to return an ETag. The
+ * After a successful put operation, you may choose to return an ETag. The
* etag must always be surrounded by double-quotes. These quotes must
* appear in the actual string you're returning.
*
@@ -32,7 +32,7 @@ interface IFile extends INode {
* different object on a subsequent GET you are strongly recommended to not
* return an ETag, and just return null.
*
- * @param resource|data $data
+ * @param resource|string $data
* @return string|null
*/
function put($data);
diff --git a/vendor/sabre/dav/lib/DAV/IMoveTarget.php b/vendor/sabre/dav/lib/DAV/IMoveTarget.php
index f0f67bc26..92fde1d5c 100644
--- a/vendor/sabre/dav/lib/DAV/IMoveTarget.php
+++ b/vendor/sabre/dav/lib/DAV/IMoveTarget.php
@@ -7,7 +7,7 @@ namespace Sabre\DAV;
* nodes may be moved into this collection".
*
* The benefit of this, is that sabre/dav will by default perform a move, by
- * tranfersing an entire directory tree, copying every collection, and deleting
+ * transferring an entire directory tree, copying every collection, and deleting
* every item.
*
* If a backend supports a better optimized move operation, this can trigger
diff --git a/vendor/sabre/dav/lib/DAV/Locks/Backend/PDO.php b/vendor/sabre/dav/lib/DAV/Locks/Backend/PDO.php
index a01d9bae4..510f266f7 100644
--- a/vendor/sabre/dav/lib/DAV/Locks/Backend/PDO.php
+++ b/vendor/sabre/dav/lib/DAV/Locks/Backend/PDO.php
@@ -33,7 +33,7 @@ class PDO extends AbstractBackend {
/**
* Constructor
*
- * @param PDO $pdo
+ * @param \PDO $pdo
*/
function __construct(\PDO $pdo) {
@@ -102,7 +102,7 @@ class PDO extends AbstractBackend {
$lockInfo->created = $row['created'];
$lockInfo->scope = $row['scope'];
$lockInfo->depth = $row['depth'];
- $lockInfo->uri = $row['uri'];
+ $lockInfo->uri = $row['uri'];
$lockList[] = $lockInfo;
}
diff --git a/vendor/sabre/dav/lib/DAV/Locks/Plugin.php b/vendor/sabre/dav/lib/DAV/Locks/Plugin.php
index 4855b7076..41a3bf3fa 100644
--- a/vendor/sabre/dav/lib/DAV/Locks/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Locks/Plugin.php
@@ -25,14 +25,14 @@ class Plugin extends DAV\ServerPlugin {
/**
* locksBackend
*
- * @var Backend\Backend\Interface
+ * @var Backend\BackendInterface
*/
protected $locksBackend;
/**
* server
*
- * @var Sabre\DAV\Server
+ * @var DAV\Server
*/
protected $server;
@@ -256,7 +256,7 @@ class Plugin extends DAV\ServerPlugin {
$response->setStatus($newFile ? 201 : 200);
$response->setBody($this->generateLockResponse($lockInfo));
- // Returning false will interupt the event chain and mark this method
+ // Returning false will interrupt the event chain and mark this method
// as 'handled'.
return false;
diff --git a/vendor/sabre/dav/lib/DAV/MkCol.php b/vendor/sabre/dav/lib/DAV/MkCol.php
index c79055418..042e14bca 100644
--- a/vendor/sabre/dav/lib/DAV/MkCol.php
+++ b/vendor/sabre/dav/lib/DAV/MkCol.php
@@ -61,6 +61,7 @@ class MkCol extends PropPatch {
* checked.
*
* @param string|string[] $resourceType
+ * @return bool
*/
function hasResourceType($resourceType) {
diff --git a/vendor/sabre/dav/lib/DAV/Mount/Plugin.php b/vendor/sabre/dav/lib/DAV/Mount/Plugin.php
index 8e06acb9f..dc923ad85 100644
--- a/vendor/sabre/dav/lib/DAV/Mount/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Mount/Plugin.php
@@ -20,7 +20,7 @@ class Plugin extends DAV\ServerPlugin {
/**
* Reference to Server class
*
- * @var Sabre\DAV\Server
+ * @var DAV\Server
*/
protected $server;
diff --git a/vendor/sabre/dav/lib/DAV/Node.php b/vendor/sabre/dav/lib/DAV/Node.php
index ba270e8f9..ef6eea18e 100644
--- a/vendor/sabre/dav/lib/DAV/Node.php
+++ b/vendor/sabre/dav/lib/DAV/Node.php
@@ -29,7 +29,7 @@ abstract class Node implements INode {
/**
* Deletes the current node
*
- * @throws Sabre\DAV\Exception\Forbidden
+ * @throws Exception\Forbidden
* @return void
*/
function delete() {
@@ -41,8 +41,8 @@ abstract class Node implements INode {
/**
* Renames the node
*
- * @throws Sabre\DAV\Exception\Forbidden
* @param string $name The new name
+ * @throws Exception\Forbidden
* @return void
*/
function setName($name) {
diff --git a/vendor/sabre/dav/lib/DAV/PartialUpdate/Plugin.php b/vendor/sabre/dav/lib/DAV/PartialUpdate/Plugin.php
index 24ba970b1..9c129d705 100644
--- a/vendor/sabre/dav/lib/DAV/PartialUpdate/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/PartialUpdate/Plugin.php
@@ -29,7 +29,7 @@ class Plugin extends DAV\ServerPlugin {
/**
* Reference to server
*
- * @var Sabre\DAV\Server
+ * @var DAV\Server
*/
protected $server;
diff --git a/vendor/sabre/dav/lib/DAV/PropFind.php b/vendor/sabre/dav/lib/DAV/PropFind.php
index 8ae6b6cfd..0940a1ce2 100644
--- a/vendor/sabre/dav/lib/DAV/PropFind.php
+++ b/vendor/sabre/dav/lib/DAV/PropFind.php
@@ -72,7 +72,7 @@ class PropFind {
/**
* Handles a specific property.
*
- * This method checks wether the specified property was requested in this
+ * This method checks whether the specified property was requested in this
* PROPFIND request, and if so, it will call the callback and use the
* return value for it's value.
*
diff --git a/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/BackendInterface.php b/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/BackendInterface.php
index 31ecafdb2..b15d7fef9 100644
--- a/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/BackendInterface.php
+++ b/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/BackendInterface.php
@@ -23,7 +23,7 @@ interface BackendInterface {
* This method received a PropFind object, which contains all the
* information about the properties that need to be fetched.
*
- * Ususually you would just want to call 'get404Properties' on this object,
+ * Usually you would just want to call 'get404Properties' on this object,
* as this will give you the _exact_ list of properties that need to be
* fetched, and haven't yet.
*
diff --git a/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/PDO.php b/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/PDO.php
index 2fe843884..6f3f1feaf 100644
--- a/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/PDO.php
+++ b/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/PDO.php
@@ -66,7 +66,7 @@ class PDO implements BackendInterface {
* This method received a PropFind object, which contains all the
* information about the properties that need to be fetched.
*
- * Ususually you would just want to call 'get404Properties' on this object,
+ * Usually you would just want to call 'get404Properties' on this object,
* as this will give you the _exact_ list of properties that need to be
* fetched, and haven't yet.
*
diff --git a/vendor/sabre/dav/lib/DAV/PropertyStorage/Plugin.php b/vendor/sabre/dav/lib/DAV/PropertyStorage/Plugin.php
index 0c28b7882..a66a14113 100644
--- a/vendor/sabre/dav/lib/DAV/PropertyStorage/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/PropertyStorage/Plugin.php
@@ -2,11 +2,11 @@
namespace Sabre\DAV\PropertyStorage;
+use Sabre\DAV\INode;
+use Sabre\DAV\PropFind;
+use Sabre\DAV\PropPatch;
use Sabre\DAV\Server;
use Sabre\DAV\ServerPlugin;
-use Sabre\DAV\PropPatch;
-use Sabre\DAV\PropFind;
-use Sabre\DAV\INode;
/**
* PropertyStorage Plugin.
@@ -30,7 +30,7 @@ class Plugin extends ServerPlugin {
* paths, you can use a pathFilter to do this.
*
* The pathFilter should be a callable. The callable retrieves a path as
- * its argument, and should return true or false wether it allows
+ * its argument, and should return true or false whether it allows
* properties to be stored.
*
* @var callable
@@ -38,6 +38,11 @@ class Plugin extends ServerPlugin {
public $pathFilter;
/**
+ * @var Backend\BackendInterface
+ */
+ public $backend;
+
+ /**
* Creates the plugin
*
* @param Backend\BackendInterface $backend
diff --git a/vendor/sabre/dav/lib/DAV/Server.php b/vendor/sabre/dav/lib/DAV/Server.php
index 024b7a557..6805ec0b0 100644
--- a/vendor/sabre/dav/lib/DAV/Server.php
+++ b/vendor/sabre/dav/lib/DAV/Server.php
@@ -2,16 +2,16 @@
namespace Sabre\DAV;
+use Psr\Log\LoggerAwareInterface;
+use Psr\Log\LoggerAwareTrait;
+use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
use Sabre\Event\EventEmitter;
use Sabre\HTTP;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
use Sabre\HTTP\URLUtil;
use Sabre\Uri;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
-use Psr\Log\LoggerInterface;
-use Psr\Log\NullLogger;
/**
* Main DAV server class
@@ -37,7 +37,7 @@ class Server extends EventEmitter implements LoggerAwareInterface {
/**
* The tree object
*
- * @var Sabre\DAV\Tree
+ * @var Tree
*/
public $tree;
@@ -51,21 +51,21 @@ class Server extends EventEmitter implements LoggerAwareInterface {
/**
* httpResponse
*
- * @var Sabre\HTTP\Response
+ * @var HTTP\Response
*/
public $httpResponse;
/**
* httpRequest
*
- * @var Sabre\HTTP\Request
+ * @var HTTP\Request
*/
public $httpRequest;
/**
* PHP HTTP Sapi
*
- * @var Sabre\HTTP\Sapi
+ * @var HTTP\Sapi
*/
public $sapi;
@@ -437,7 +437,7 @@ class Server extends EventEmitter implements LoggerAwareInterface {
}
/**
- * Returns the PSR-3 logger objcet.
+ * Returns the PSR-3 logger object.
*
* @return LoggerInterface
*/
@@ -455,7 +455,7 @@ class Server extends EventEmitter implements LoggerAwareInterface {
*
* @param RequestInterface $request
* @param ResponseInterface $response
- * @param $sendResponse Whether to send the HTTP response to the DAV client.
+ * @param bool $sendResponse Whether to send the HTTP response to the DAV client.
* @return void
*/
function invokeMethod(RequestInterface $request, ResponseInterface $response, $sendResponse = true) {
@@ -681,18 +681,18 @@ class Server extends EventEmitter implements LoggerAwareInterface {
// can be true or false
'respond-async' => false,
// Could be set to 'representation' or 'minimal'.
- 'return' => null,
+ 'return' => null,
// Used as a timeout, is usually a number.
- 'wait' => null,
+ 'wait' => null,
// can be 'strict' or 'lenient'.
- 'handling' => false,
+ 'handling' => false,
];
if ($prefer = $this->httpRequest->getHeader('Prefer')) {
$result = array_merge(
$result,
- \Sabre\HTTP\parsePrefer($prefer)
+ HTTP\parsePrefer($prefer)
);
} elseif ($this->httpRequest->getHeader('Brief') == 't') {
@@ -794,6 +794,7 @@ class Server extends EventEmitter implements LoggerAwareInterface {
*
* @param string $path
* @param array $propertyNames
+ * @return array
*/
function getProperties($path, $propertyNames) {
@@ -877,12 +878,14 @@ class Server extends EventEmitter implements LoggerAwareInterface {
/**
* Small helper to support PROPFIND with DEPTH_INFINITY.
*
- * @param array[] $propFindRequests
* @param PropFind $propFind
- * @return void
+ * @param array $yieldFirst
+ * @return \Iterator
*/
- private function addPathNodesRecursively(&$propFindRequests, PropFind $propFind) {
-
+ private function generatePathNodes(PropFind $propFind, array $yieldFirst = null) {
+ if ($yieldFirst !== null) {
+ yield $yieldFirst;
+ }
$newDepth = $propFind->getDepth();
$path = $propFind->getPath();
@@ -900,13 +903,15 @@ class Server extends EventEmitter implements LoggerAwareInterface {
}
$subPropFind->setPath($subPath);
- $propFindRequests[] = [
+ yield [
$subPropFind,
$childNode
];
if (($newDepth === self::DEPTH_INFINITY || $newDepth >= 1) && $childNode instanceof ICollection) {
- $this->addPathNodesRecursively($propFindRequests, $subPropFind);
+ foreach ($this->generatePathNodes($subPropFind) as $subItem) {
+ yield $subItem;
+ }
}
}
@@ -925,9 +930,31 @@ class Server extends EventEmitter implements LoggerAwareInterface {
* @param array $propertyNames
* @param int $depth
* @return array
+ *
+ * @deprecated Use getPropertiesIteratorForPath() instead (as it's more memory efficient)
+ * @see getPropertiesIteratorForPath()
*/
function getPropertiesForPath($path, $propertyNames = [], $depth = 0) {
+ return iterator_to_array($this->getPropertiesIteratorForPath($path, $propertyNames, $depth));
+
+ }
+ /**
+ * Returns a list of properties for a given path
+ *
+ * The path that should be supplied should have the baseUrl stripped out
+ * The list of properties should be supplied in Clark notation. If the list is empty
+ * 'allprops' is assumed.
+ *
+ * If a depth of 1 is requested child elements will also be returned.
+ *
+ * @param string $path
+ * @param array $propertyNames
+ * @param int $depth
+ * @return \Iterator
+ */
+ function getPropertiesIteratorForPath($path, $propertyNames = [], $depth = 0) {
+
// The only two options for the depth of a propfind is 0 or 1 - as long as depth infinity is not enabled
if (!$this->enablePropfindDepthInfinity && $depth != 0) $depth = 1;
@@ -944,11 +971,9 @@ class Server extends EventEmitter implements LoggerAwareInterface {
]];
if (($depth > 0 || $depth === self::DEPTH_INFINITY) && $parentNode instanceof ICollection) {
- $this->addPathNodesRecursively($propFindRequests, $propFind);
+ $propFindRequests = $this->generatePathNodes(clone $propFind, current($propFindRequests));
}
- $returnPropertyList = [];
-
foreach ($propFindRequests as $propFindRequest) {
list($propFind, $node) = $propFindRequest;
@@ -965,13 +990,11 @@ class Server extends EventEmitter implements LoggerAwareInterface {
if (in_array('{DAV:}collection', $resourceType) || in_array('{DAV:}principal', $resourceType)) {
$result['href'] .= '/';
}
- $returnPropertyList[] = $result;
+ yield $result;
}
}
- return $returnPropertyList;
-
}
/**
@@ -1430,7 +1453,7 @@ class Server extends EventEmitter implements LoggerAwareInterface {
// Plugins are responsible for validating all the tokens.
// If a plugin deemed a token 'valid', it will set 'validToken' to
// true.
- $this->emit('validateTokens', [ $request, &$ifConditions ]);
+ $this->emit('validateTokens', [$request, &$ifConditions]);
// Now we're going to analyze the result.
@@ -1450,7 +1473,7 @@ class Server extends EventEmitter implements LoggerAwareInterface {
if (!$token['etag']) {
$etagValid = true;
}
- // Checking the ETag, only if the token was already deamed
+ // Checking the ETag, only if the token was already deemed
// valid and there is one.
if ($token['etag'] && $tokenValid) {
@@ -1626,13 +1649,18 @@ class Server extends EventEmitter implements LoggerAwareInterface {
*
* If 'strip404s' is set to true, all 404 responses will be removed.
*
- * @param array $fileProperties The list with nodes
- * @param bool strip404s
+ * @param array|\Traversable $fileProperties The list with nodes
+ * @param bool $strip404s
* @return string
*/
- function generateMultiStatus(array $fileProperties, $strip404s = false) {
+ function generateMultiStatus($fileProperties, $strip404s = false) {
- $xml = [];
+ $w = $this->xml->getWriter();
+ $w->openMemory();
+ $w->contextUri = $this->baseUri;
+ $w->startDocument();
+
+ $w->startElement('{DAV:}multistatus');
foreach ($fileProperties as $entry) {
@@ -1645,13 +1673,14 @@ class Server extends EventEmitter implements LoggerAwareInterface {
ltrim($href, '/'),
$entry
);
- $xml[] = [
+ $w->write([
'name' => '{DAV:}response',
'value' => $response
- ];
-
+ ]);
}
- return $this->xml->write('{DAV:}multistatus', $xml, $this->baseUri);
+ $w->endElement();
+
+ return $w->outputMemory();
}
diff --git a/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php b/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php
index 354d06a56..ef5702c57 100644
--- a/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php
@@ -8,8 +8,8 @@ use Sabre\DAV\INode;
use Sabre\DAV\PropFind;
use Sabre\DAV\Server;
use Sabre\DAV\ServerPlugin;
-use Sabre\DAV\Xml\Property;
use Sabre\DAV\Xml\Element\Sharee;
+use Sabre\DAV\Xml\Property;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
@@ -40,7 +40,7 @@ class Plugin extends ServerPlugin {
/**
* Reference to SabreDAV server object.
*
- * @var Sabre\DAV\Server
+ * @var Server
*/
protected $server;
diff --git a/vendor/sabre/dav/lib/DAV/Sync/Plugin.php b/vendor/sabre/dav/lib/DAV/Sync/Plugin.php
index 4a141c72b..8e4b1aa64 100644
--- a/vendor/sabre/dav/lib/DAV/Sync/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Sync/Plugin.php
@@ -3,8 +3,8 @@
namespace Sabre\DAV\Sync;
use Sabre\DAV;
-use Sabre\HTTP\RequestInterface;
use Sabre\DAV\Xml\Request\SyncCollectionReport;
+use Sabre\HTTP\RequestInterface;
/**
* This plugin all WebDAV-sync capabilities to the Server.
diff --git a/vendor/sabre/dav/lib/DAV/TemporaryFileFilterPlugin.php b/vendor/sabre/dav/lib/DAV/TemporaryFileFilterPlugin.php
index c5b8aa1ca..7b453d105 100644
--- a/vendor/sabre/dav/lib/DAV/TemporaryFileFilterPlugin.php
+++ b/vendor/sabre/dav/lib/DAV/TemporaryFileFilterPlugin.php
@@ -14,7 +14,7 @@ use Sabre\HTTP\URLUtil;
* a WebDAV share as a disk.
*
* It will intercept these files and place them in a separate directory.
- * these files are not deleted automatically, so it is adviceable to
+ * these files are not deleted automatically, so it is advisable to
* delete these after they are not accessed for 24 hours.
*
* Currently it supports:
@@ -51,7 +51,7 @@ class TemporaryFileFilterPlugin extends ServerPlugin {
/**
* A reference to the main Server class
*
- * @var Sabre\DAV\Server
+ * @var \Sabre\DAV\Server
*/
protected $server;
@@ -134,12 +134,12 @@ class TemporaryFileFilterPlugin extends ServerPlugin {
*
* @param string $uri
* @param resource $data
- * @param DAV\ICollection $parentNode
+ * @param ICollection $parent
* @param bool $modified Should be set to true, if this event handler
* changed &$data.
* @return bool
*/
- function beforeCreateFile($uri, $data, $parent, $modified) {
+ function beforeCreateFile($uri, $data, ICollection $parent, $modified) {
if ($tempPath = $this->isTempFile($uri)) {
diff --git a/vendor/sabre/dav/lib/DAV/Version.php b/vendor/sabre/dav/lib/DAV/Version.php
index 2fda85db8..89918e5bc 100644
--- a/vendor/sabre/dav/lib/DAV/Version.php
+++ b/vendor/sabre/dav/lib/DAV/Version.php
@@ -14,6 +14,6 @@ class Version {
/**
* Full version number
*/
- const VERSION = '3.2.0';
+ const VERSION = '3.2.2';
}
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Element/Prop.php b/vendor/sabre/dav/lib/DAV/Xml/Element/Prop.php
index db5332c50..71ef03e3f 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Element/Prop.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Element/Prop.php
@@ -3,8 +3,8 @@
namespace Sabre\DAV\Xml\Element;
use Sabre\DAV\Xml\Property\Complex;
-use Sabre\Xml\XmlDeserializable;
use Sabre\Xml\Reader;
+use Sabre\Xml\XmlDeserializable;
/**
* This class is responsible for decoding the {DAV:}prop element as it appears
@@ -22,7 +22,7 @@ class Prop implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
@@ -90,7 +90,7 @@ class Prop implements XmlDeserializable {
if (array_key_exists($name, $reader->elementMap)) {
$deserializer = $reader->elementMap[$name];
if (is_subclass_of($deserializer, 'Sabre\\Xml\\XmlDeserializable')) {
- $value = call_user_func([ $deserializer, 'xmlDeserialize' ], $reader);
+ $value = call_user_func([$deserializer, 'xmlDeserialize'], $reader);
} elseif (is_callable($deserializer)) {
$value = call_user_func($deserializer, $reader);
} else {
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Element/Response.php b/vendor/sabre/dav/lib/DAV/Xml/Element/Response.php
index 97a2bb59f..ce97ae943 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Element/Response.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Element/Response.php
@@ -160,7 +160,7 @@ class Response implements Element {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Element/Sharee.php b/vendor/sabre/dav/lib/DAV/Xml/Element/Sharee.php
index dcfd7bd2e..e187bf11c 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Element/Sharee.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Element/Sharee.php
@@ -105,7 +105,7 @@ class Sharee implements Element {
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
@@ -146,7 +146,7 @@ class Sharee implements Element {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/Complex.php b/vendor/sabre/dav/lib/DAV/Xml/Property/Complex.php
index 1d9202082..258806e4a 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Property/Complex.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Property/Complex.php
@@ -20,7 +20,7 @@ class Complex extends XmlFragment {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/GetLastModified.php b/vendor/sabre/dav/lib/DAV/Xml/Property/GetLastModified.php
index 2db47269f..101a0f0c9 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Property/GetLastModified.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Property/GetLastModified.php
@@ -2,12 +2,12 @@
namespace Sabre\DAV\Xml\Property;
+use DateTime;
+use DateTimeZone;
+use Sabre\HTTP;
use Sabre\Xml\Element;
use Sabre\Xml\Reader;
use Sabre\Xml\Writer;
-use Sabre\HTTP;
-use DateTime;
-use DateTimeZone;
/**
* This property represents the {DAV:}getlastmodified property.
@@ -83,7 +83,7 @@ class GetLastModified implements Element {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/Href.php b/vendor/sabre/dav/lib/DAV/Xml/Property/Href.php
index 0027f72e1..6c4f11b87 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Property/Href.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Property/Href.php
@@ -4,10 +4,10 @@ namespace Sabre\DAV\Xml\Property;
use Sabre\DAV\Browser\HtmlOutput;
use Sabre\DAV\Browser\HtmlOutputHelper;
+use Sabre\Uri;
use Sabre\Xml\Element;
use Sabre\Xml\Reader;
use Sabre\Xml\Writer;
-use Sabre\Uri;
/**
* Href property
@@ -40,7 +40,7 @@ class Href implements Element, HtmlOutput {
* If auto-prefix is set to false, the hrefs will be treated as absolute
* and not relative to the servers base uri.
*
- * @param string|string[] $href
+ * @param string|string[] $hrefs
*/
function __construct($hrefs) {
@@ -74,12 +74,12 @@ class Href implements Element, HtmlOutput {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
@@ -128,7 +128,7 @@ class Href implements Element, HtmlOutput {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/Invite.php b/vendor/sabre/dav/lib/DAV/Xml/Property/Invite.php
index 0616ff113..6adad3650 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Property/Invite.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Property/Invite.php
@@ -2,9 +2,9 @@
namespace Sabre\DAV\Xml\Property;
-use Sabre\DAV\Sharing\Sharee;
-use Sabre\Xml\XmlSerializable;
+use Sabre\DAV\Xml\Element\Sharee;
use Sabre\Xml\Writer;
+use Sabre\Xml\XmlSerializable;
/**
* This class represents the {DAV:}invite property.
@@ -46,7 +46,7 @@ class Invite implements XmlSerializable {
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/LocalHref.php b/vendor/sabre/dav/lib/DAV/Xml/Property/LocalHref.php
index 76a27b95d..00d2fa708 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Property/LocalHref.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Property/LocalHref.php
@@ -8,7 +8,7 @@ use Sabre\HTTP;
* LocalHref property
*
* Like the Href property, this element represents {DAV:}href. The difference
- * is that this is used stricly for paths on the server. The LocalHref property
+ * is that this is used strictly for paths on the server. The LocalHref property
* will prepare the path so it's a valid URI.
*
* These two objects behave identically:
@@ -32,7 +32,7 @@ class LocalHref extends Href {
* If auto-prefix is set to false, the hrefs will be treated as absolute
* and not relative to the servers base uri.
*
- * @param string|string[] $href
+ * @param string|string[] $hrefs
*/
function __construct($hrefs) {
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/ResourceType.php b/vendor/sabre/dav/lib/DAV/Xml/Property/ResourceType.php
index 302888321..ce640ff32 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Property/ResourceType.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Property/ResourceType.php
@@ -28,7 +28,7 @@ class ResourceType extends Element\Elements implements HtmlOutput {
*
* The resourcetype must be specified in clark-notation
*
- * @param array|string|null $resourceType
+ * @param array|string|null $resourceTypes
*/
function __construct($resourceTypes = null) {
@@ -77,7 +77,7 @@ class ResourceType extends Element\Elements implements HtmlOutput {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/ShareAccess.php b/vendor/sabre/dav/lib/DAV/Xml/Property/ShareAccess.php
index a3fc6b0e1..939062f76 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Property/ShareAccess.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Property/ShareAccess.php
@@ -2,8 +2,8 @@
namespace Sabre\DAV\Xml\Property;
-use Sabre\DAV\Sharing\Plugin as SharingPlugin;
use Sabre\DAV\Exception\BadRequest;
+use Sabre\DAV\Sharing\Plugin as SharingPlugin;
use Sabre\Xml\Element;
use Sabre\Xml\Reader;
use Sabre\Xml\Writer;
@@ -62,7 +62,7 @@ class ShareAccess implements Element {
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
@@ -102,7 +102,7 @@ class ShareAccess implements Element {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedLock.php b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedLock.php
index f6d01aa37..677fdde4b 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedLock.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedLock.php
@@ -21,12 +21,12 @@ use Sabre\Xml\XmlSerializable;
class SupportedLock implements XmlSerializable {
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
@@ -43,11 +43,11 @@ class SupportedLock implements XmlSerializable {
$writer->writeElement('{DAV:}lockentry', [
'{DAV:}lockscope' => ['{DAV:}exclusive' => null],
- '{DAV:}locktype' => ['{DAV:}write' => null],
+ '{DAV:}locktype' => ['{DAV:}write' => null],
]);
$writer->writeElement('{DAV:}lockentry', [
'{DAV:}lockscope' => ['{DAV:}shared' => null],
- '{DAV:}locktype' => ['{DAV:}write' => null],
+ '{DAV:}locktype' => ['{DAV:}write' => null],
]);
}
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedMethodSet.php b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedMethodSet.php
index 7641f3739..1a3878ef7 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedMethodSet.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedMethodSet.php
@@ -67,12 +67,12 @@ class SupportedMethodSet implements XmlSerializable, HtmlOutput {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedReportSet.php b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedReportSet.php
index ebf27300d..96383ec96 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedReportSet.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedReportSet.php
@@ -98,12 +98,12 @@ class SupportedReportSet implements XmlSerializable, HtmlOutput {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/Lock.php b/vendor/sabre/dav/lib/DAV/Xml/Request/Lock.php
index 76df98d13..c315a9a45 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Request/Lock.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Request/Lock.php
@@ -38,7 +38,7 @@ class Lock implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/MkCol.php b/vendor/sabre/dav/lib/DAV/Xml/Request/MkCol.php
index 5db239061..9490bf58c 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Request/MkCol.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Request/MkCol.php
@@ -40,7 +40,7 @@ class MkCol implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
@@ -63,8 +63,8 @@ class MkCol implements XmlDeserializable {
$self = new self();
$elementMap = $reader->elementMap;
- $elementMap['{DAV:}prop'] = 'Sabre\DAV\Xml\Element\Prop';
- $elementMap['{DAV:}set'] = 'Sabre\Xml\Element\KeyValue';
+ $elementMap['{DAV:}prop'] = 'Sabre\DAV\Xml\Element\Prop';
+ $elementMap['{DAV:}set'] = 'Sabre\Xml\Element\KeyValue';
$elementMap['{DAV:}remove'] = 'Sabre\Xml\Element\KeyValue';
$elems = $reader->parseInnerTree($elementMap);
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/PropFind.php b/vendor/sabre/dav/lib/DAV/Xml/Request/PropFind.php
index ad3ad7c43..f1b5b6fdc 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Request/PropFind.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Request/PropFind.php
@@ -36,7 +36,7 @@ class PropFind implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/PropPatch.php b/vendor/sabre/dav/lib/DAV/Xml/Request/PropPatch.php
index 07a05f887..821b9e047 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Request/PropPatch.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Request/PropPatch.php
@@ -29,12 +29,12 @@ class PropPatch implements Element {
public $properties = [];
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
@@ -68,7 +68,7 @@ class PropPatch implements Element {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
@@ -91,8 +91,8 @@ class PropPatch implements Element {
$self = new self();
$elementMap = $reader->elementMap;
- $elementMap['{DAV:}prop'] = 'Sabre\DAV\Xml\Element\Prop';
- $elementMap['{DAV:}set'] = 'Sabre\Xml\Element\KeyValue';
+ $elementMap['{DAV:}prop'] = 'Sabre\DAV\Xml\Element\Prop';
+ $elementMap['{DAV:}set'] = 'Sabre\Xml\Element\KeyValue';
$elementMap['{DAV:}remove'] = 'Sabre\Xml\Element\KeyValue';
$elems = $reader->parseInnerTree($elementMap);
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/ShareResource.php b/vendor/sabre/dav/lib/DAV/Xml/Request/ShareResource.php
index 965e5857c..526a4eb6f 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Request/ShareResource.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Request/ShareResource.php
@@ -2,9 +2,9 @@
namespace Sabre\DAV\Xml\Request;
+use Sabre\DAV\Xml\Element\Sharee;
use Sabre\Xml\Reader;
use Sabre\Xml\XmlDeserializable;
-use Sabre\DAV\Xml\Element\Sharee;
/**
* ShareResource request parser.
@@ -40,7 +40,7 @@ class ShareResource implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/SyncCollectionReport.php b/vendor/sabre/dav/lib/DAV/Xml/Request/SyncCollectionReport.php
index 3092ada47..830293a01 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Request/SyncCollectionReport.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Request/SyncCollectionReport.php
@@ -2,10 +2,10 @@
namespace Sabre\DAV\Xml\Request;
+use Sabre\DAV\Exception\BadRequest;
+use Sabre\Xml\Element\KeyValue;
use Sabre\Xml\Reader;
use Sabre\Xml\XmlDeserializable;
-use Sabre\Xml\Element\KeyValue;
-use Sabre\DAV\Exception\BadRequest;
/**
* SyncCollection request parser.
@@ -51,7 +51,7 @@ class SyncCollectionReport implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
@@ -75,7 +75,7 @@ class SyncCollectionReport implements XmlDeserializable {
$reader->pushContext();
- $reader->elementMap['{DAV:}prop'] = 'Sabre\Xml\Element\Elements';
+ $reader->elementMap['{DAV:}prop'] = 'Sabre\Xml\Element\Elements';
$elems = KeyValue::xmlDeserialize($reader);
$reader->popContext();
diff --git a/vendor/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php b/vendor/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php
index 16a3d4a68..cf5a0453b 100644
--- a/vendor/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php
+++ b/vendor/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php
@@ -99,7 +99,7 @@ class MultiStatus implements Element {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAVACL/Exception/NotRecognizedPrincipal.php b/vendor/sabre/dav/lib/DAVACL/Exception/NotRecognizedPrincipal.php
index 4349bf101..d7ae188ae 100644
--- a/vendor/sabre/dav/lib/DAVACL/Exception/NotRecognizedPrincipal.php
+++ b/vendor/sabre/dav/lib/DAVACL/Exception/NotRecognizedPrincipal.php
@@ -5,7 +5,7 @@ namespace Sabre\DAVACL\Exception;
use Sabre\DAV;
/**
- * If a client tried to set a privilege assigned to a non-existant principal,
+ * If a client tried to set a privilege assigned to a non-existent principal,
* this exception will be thrown.
*
* @copyright Copyright (C) fruux GmbH (https://fruux.com/)
diff --git a/vendor/sabre/dav/lib/DAVACL/FS/Collection.php b/vendor/sabre/dav/lib/DAVACL/FS/Collection.php
index 1c08b43b1..b4fe7a1b0 100644
--- a/vendor/sabre/dav/lib/DAVACL/FS/Collection.php
+++ b/vendor/sabre/dav/lib/DAVACL/FS/Collection.php
@@ -2,11 +2,11 @@
namespace Sabre\DAVACL\FS;
+use Sabre\DAV\Exception\Forbidden;
+use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\FSExt\Directory as BaseCollection;
use Sabre\DAVACL\ACLTrait;
use Sabre\DAVACL\IACL;
-use Sabre\DAV\Exception\Forbidden;
-use Sabre\DAV\Exception\NotFound;
/**
* This is an ACL-enabled collection.
diff --git a/vendor/sabre/dav/lib/DAVACL/FS/File.php b/vendor/sabre/dav/lib/DAVACL/FS/File.php
index 387597bf7..aaf2ae148 100644
--- a/vendor/sabre/dav/lib/DAVACL/FS/File.php
+++ b/vendor/sabre/dav/lib/DAVACL/FS/File.php
@@ -3,8 +3,8 @@
namespace Sabre\DAVACL\FS;
use Sabre\DAV\FSExt\File as BaseFile;
-use Sabre\DAVACL\IACL;
use Sabre\DAVACL\ACLTrait;
+use Sabre\DAVACL\IACL;
/**
* This is an ACL-enabled file node.
diff --git a/vendor/sabre/dav/lib/DAVACL/FS/HomeCollection.php b/vendor/sabre/dav/lib/DAVACL/FS/HomeCollection.php
index 9e21353ea..201235e5a 100644
--- a/vendor/sabre/dav/lib/DAVACL/FS/HomeCollection.php
+++ b/vendor/sabre/dav/lib/DAVACL/FS/HomeCollection.php
@@ -72,7 +72,7 @@ class HomeCollection extends AbstractPrincipalCollection implements IACL {
* supplied by the authentication backend.
*
* @param array $principalInfo
- * @return \Sabre\DAVACL\INode
+ * @return \Sabre\DAV\INode
*/
function getChildForPrincipal(array $principalInfo) {
diff --git a/vendor/sabre/dav/lib/DAVACL/Plugin.php b/vendor/sabre/dav/lib/DAVACL/Plugin.php
index 8e912309e..a2aa118d7 100644
--- a/vendor/sabre/dav/lib/DAVACL/Plugin.php
+++ b/vendor/sabre/dav/lib/DAVACL/Plugin.php
@@ -3,11 +3,12 @@
namespace Sabre\DAVACL;
use Sabre\DAV;
-use Sabre\DAV\INode;
-use Sabre\DAV\Xml\Property\Href;
use Sabre\DAV\Exception\BadRequest;
-use Sabre\DAV\Exception\NotFound;
+use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\Exception\NotAuthenticated;
+use Sabre\DAV\Exception\NotFound;
+use Sabre\DAV\INode;
+use Sabre\DAV\Xml\Property\Href;
use Sabre\DAVACL\Exception\NeedPrivileges;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
@@ -53,7 +54,7 @@ class Plugin extends DAV\ServerPlugin {
/**
* Reference to server object.
*
- * @var Sabre\DAV\Server
+ * @var DAV\Server
*/
protected $server;
@@ -228,14 +229,14 @@ class Plugin extends DAV\ServerPlugin {
/**
* Returns the standard users' principal.
*
- * This is one authorative principal url for the current user.
+ * This is one authoritative principal url for the current user.
* This method will return null if the user wasn't logged in.
*
* @return string|null
*/
function getCurrentUserPrincipal() {
- /** @var $authPlugin Sabre\DAV\Auth\Plugin */
+ /** @var $authPlugin \Sabre\DAV\Auth\Plugin */
$authPlugin = $this->server->getPlugin('auth');
if (!$authPlugin) {
return null;
@@ -283,8 +284,7 @@ class Plugin extends DAV\ServerPlugin {
*
* These rules are used for all nodes that don't implement the IACL interface.
*
- * @param array $acl
- * @return void
+ * @return array
*/
function getDefaultAcl() {
@@ -299,7 +299,7 @@ class Plugin extends DAV\ServerPlugin {
* set of rules allow anyone to do anything, as long as they are
* authenticated.
*
- * var array
+ * @var array
*/
protected $defaultAcl = [
[
@@ -321,7 +321,7 @@ class Plugin extends DAV\ServerPlugin {
/**
* Returns all the principal groups the specified principal is a member of.
*
- * @param string $principal
+ * @param string $mainPrincipal
* @return array
*/
function getPrincipalMembership($mainPrincipal) {
@@ -365,7 +365,7 @@ class Plugin extends DAV\ServerPlugin {
/**
* Find out of a principal equals another principal.
*
- * This is a quick way to find out wether a principal URI is part of a
+ * This is a quick way to find out whether a principal URI is part of a
* group, or any subgroups.
*
* The first argument is the principal URI you want to check against. For
@@ -373,10 +373,10 @@ class Plugin extends DAV\ServerPlugin {
* which you want to find out of it is the same as the first principal, or
* in a member of the first principal's group or subgroups.
*
- * So the arguments are not interchangable. If principal A is in group B,
+ * So the arguments are not interchangeable. If principal A is in group B,
* passing 'B', 'A' will yield true, but 'A', 'B' is false.
*
- * If the sceond argument is not passed, we will use the current user
+ * If the second argument is not passed, we will use the current user
* principal.
*
* @param string $checkPrincipal
@@ -412,8 +412,8 @@ class Plugin extends DAV\ServerPlugin {
* ]
* ]
*
- * Privileges can be nested using "aggregrates". Doing so means that
- * if you assign someone the aggregrating privilege, all the
+ * Privileges can be nested using "aggregates". Doing so means that
+ * if you assign someone the aggregating privilege, all the
* sub-privileges will automatically be granted.
*
* Marking a privilege as abstract means that the privilege cannot be
@@ -484,7 +484,7 @@ class Plugin extends DAV\ServerPlugin {
],
],
];
- if ($node instanceof \Sabre\DAV\ICollection) {
+ if ($node instanceof DAV\ICollection) {
$supportedPrivileges['{DAV:}write']['aggregates']['{DAV:}bind'] = [
'abstract' => false,
'aggregates' => [],
@@ -494,7 +494,7 @@ class Plugin extends DAV\ServerPlugin {
'aggregates' => [],
];
}
- if ($node instanceof \Sabre\DAVACL\IACL) {
+ if ($node instanceof IACL) {
$supportedPrivileges['{DAV:}write']['aggregates']['{DAV:}write-acl'] = [
'abstract' => false,
'aggregates' => [],
@@ -980,8 +980,6 @@ class Plugin extends DAV\ServerPlugin {
*
* @param DAV\PropFind $propFind
* @param DAV\INode $node
- * @param array $requestedProperties
- * @param array $returnedProperties
* @TODO really should be broken into multiple methods, or even a class.
* @return bool
*/
@@ -1423,7 +1421,7 @@ class Plugin extends DAV\ServerPlugin {
];
}
- // Replacing the property with its expannded form.
+ // Replacing the property with its expanded form.
$node[200][$propertyName] = $childProps;
}
diff --git a/vendor/sabre/dav/lib/DAVACL/Principal.php b/vendor/sabre/dav/lib/DAVACL/Principal.php
index 6ebb30907..d7db94999 100644
--- a/vendor/sabre/dav/lib/DAVACL/Principal.php
+++ b/vendor/sabre/dav/lib/DAVACL/Principal.php
@@ -41,7 +41,7 @@ class Principal extends DAV\Node implements IPrincipal, DAV\IProperties, IACL {
/**
* Creates the principal object
*
- * @param IPrincipalBackend $principalBackend
+ * @param PrincipalBackend\BackendInterface $principalBackend
* @param array $principalProperties
*/
function __construct(PrincipalBackend\BackendInterface $principalBackend, array $principalProperties = []) {
diff --git a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/BackendInterface.php b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/BackendInterface.php
index 2cb83071a..40b6e33ea 100644
--- a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/BackendInterface.php
+++ b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/BackendInterface.php
@@ -53,7 +53,7 @@ interface BackendInterface {
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
- * Read the PropPatch documenation for more info and examples.
+ * Read the PropPatch documentation for more info and examples.
*
* @param string $path
* @param \Sabre\DAV\PropPatch $propPatch
diff --git a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php
index a491dc88f..eb0df888b 100644
--- a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php
+++ b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php
@@ -11,7 +11,7 @@ use Sabre\HTTP\URLUtil;
*
*
* This backend assumes all principals are in a single collection. The default collection
- * is 'principals/', but this can be overriden.
+ * is 'principals/', but this can be overridden.
*
* @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
@@ -65,7 +65,7 @@ class PDO extends AbstractBackend implements CreatePrincipalSupport {
/**
* Sets up the backend.
*
- * @param PDO $pdo
+ * @param \PDO $pdo
*/
function __construct(\PDO $pdo) {
@@ -171,7 +171,7 @@ class PDO extends AbstractBackend implements CreatePrincipalSupport {
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
- * Read the PropPatch documenation for more info and examples.
+ * Read the PropPatch documentation for more info and examples.
*
* @param string $path
* @param DAV\PropPatch $propPatch
@@ -307,7 +307,7 @@ class PDO extends AbstractBackend implements CreatePrincipalSupport {
case "mailto":
$query = 'SELECT uri FROM ' . $this->tableName . ' WHERE lower(email)=lower(?)';
$stmt = $this->pdo->prepare($query);
- $stmt->execute([ $value ]);
+ $stmt->execute([$value]);
while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
// Checking if the principal is in the prefix
diff --git a/vendor/sabre/dav/lib/DAVACL/PrincipalCollection.php b/vendor/sabre/dav/lib/DAVACL/PrincipalCollection.php
index d8a90153a..ee5b88a90 100644
--- a/vendor/sabre/dav/lib/DAVACL/PrincipalCollection.php
+++ b/vendor/sabre/dav/lib/DAVACL/PrincipalCollection.php
@@ -57,7 +57,7 @@ class PrincipalCollection extends AbstractPrincipalCollection implements IExtend
*
* @param string $name
* @param MkCol $mkCol
- * @throws Exception\InvalidResourceType
+ * @throws InvalidResourceType
* @return void
*/
function createExtendedCollection($name, MkCol $mkCol) {
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Acl.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Acl.php
index 9f5e40df1..0e1c30ccf 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Acl.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Acl.php
@@ -78,12 +78,12 @@ class Acl implements Element, HtmlOutput {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
@@ -149,7 +149,7 @@ class Acl implements Element, HtmlOutput {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/AclRestrictions.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/AclRestrictions.php
index f669cc5e1..8d5854c23 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/AclRestrictions.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/AclRestrictions.php
@@ -2,8 +2,8 @@
namespace Sabre\DAVACL\Xml\Property;
-use Sabre\Xml\XmlSerializable;
use Sabre\Xml\Writer;
+use Sabre\Xml\XmlSerializable;
/**
* AclRestrictions property
@@ -17,12 +17,12 @@ use Sabre\Xml\Writer;
class AclRestrictions implements XmlSerializable {
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/CurrentUserPrivilegeSet.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/CurrentUserPrivilegeSet.php
index 0a95eb2b7..74c09cee1 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/CurrentUserPrivilegeSet.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/CurrentUserPrivilegeSet.php
@@ -41,12 +41,12 @@ class CurrentUserPrivilegeSet implements Element, HtmlOutput {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
@@ -99,7 +99,7 @@ class CurrentUserPrivilegeSet implements Element, HtmlOutput {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php
index d32249d8b..04d22165d 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php
@@ -85,12 +85,12 @@ class Principal extends DAV\Xml\Property\Href {
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/SupportedPrivilegeSet.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/SupportedPrivilegeSet.php
index 55e7783ae..b963cc8c3 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/SupportedPrivilegeSet.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/SupportedPrivilegeSet.php
@@ -4,8 +4,8 @@ namespace Sabre\DAVACL\Xml\Property;
use Sabre\DAV\Browser\HtmlOutput;
use Sabre\DAV\Browser\HtmlOutputHelper;
-use Sabre\Xml\XmlSerializable;
use Sabre\Xml\Writer;
+use Sabre\Xml\XmlSerializable;
/**
* SupportedPrivilegeSet property
@@ -53,12 +53,12 @@ class SupportedPrivilegeSet implements XmlSerializable, HtmlOutput {
}
/**
- * The xmlSerialize metod is called during xml writing.
+ * The xmlSerialize method is called during xml writing.
*
* Use the $writer argument to write its own xml serialization.
*
* An important note: do _not_ create a parent element. Any element
- * implementing XmlSerializble should only ever write what's considered
+ * implementing XmlSerializable should only ever write what's considered
* its 'inner xml'.
*
* The parent of the current element is responsible for writing a
@@ -73,7 +73,7 @@ class SupportedPrivilegeSet implements XmlSerializable, HtmlOutput {
*/
function xmlSerialize(Writer $writer) {
- $this->serializePriv($writer, '{DAV:}all', [ 'aggregates' => $this->privileges]);
+ $this->serializePriv($writer, '{DAV:}all', ['aggregates' => $this->privileges]);
}
@@ -114,7 +114,7 @@ class SupportedPrivilegeSet implements XmlSerializable, HtmlOutput {
ob_start();
echo "<ul class=\"tree\">";
- $traverse('{DAV:}all', [ 'aggregates' => $this->getValue() ]);
+ $traverse('{DAV:}all', ['aggregates' => $this->getValue()]);
echo "</ul>\n";
return ob_get_clean();
@@ -129,6 +129,7 @@ class SupportedPrivilegeSet implements XmlSerializable, HtmlOutput {
* This is a recursive function.
*
* @param Writer $writer
+ * @param string $privName
* @param array $privilege
* @return void
*/
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php
index f01c1e6ab..0aa2f29a5 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php
@@ -2,9 +2,9 @@
namespace Sabre\DAVACL\Xml\Request;
-use Sabre\Xml\XmlDeserializable;
-use Sabre\Xml\Reader;
use Sabre\Xml\Deserializer;
+use Sabre\Xml\Reader;
+use Sabre\Xml\XmlDeserializable;
/**
* AclPrincipalPropSet request parser.
@@ -24,7 +24,7 @@ class AclPrincipalPropSetReport implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php
index 3f535e301..a9938ba5b 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php
@@ -35,7 +35,7 @@ class ExpandPropertyReport implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php
index 5c4e88189..1be15ab2d 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php
@@ -2,9 +2,9 @@
namespace Sabre\DAVACL\Xml\Request;
-use Sabre\Xml\XmlDeserializable;
-use Sabre\Xml\Reader;
use Sabre\Xml\Deserializer;
+use Sabre\Xml\Reader;
+use Sabre\Xml\XmlDeserializable;
/**
* PrincipalMatchReport request parser.
@@ -55,7 +55,7 @@ class PrincipalMatchReport implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php
index 1e7aa4481..b0cf0e408 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php
@@ -2,9 +2,9 @@
namespace Sabre\DAVACL\Xml\Request;
+use Sabre\DAV\Exception\BadRequest;
use Sabre\Xml\Reader;
use Sabre\Xml\XmlDeserializable;
-use Sabre\DAV\Exception\BadRequest;
/**
* PrincipalSearchPropertySetReport request parser.
@@ -56,7 +56,7 @@ class PrincipalPropertySearchReport implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php
index ade157b19..64d1f7f86 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php
@@ -2,9 +2,9 @@
namespace Sabre\DAVACL\Xml\Request;
+use Sabre\DAV\Exception\BadRequest;
use Sabre\Xml\Reader;
use Sabre\Xml\XmlDeserializable;
-use Sabre\DAV\Exception\BadRequest;
/**
* PrincipalSearchPropertySetReport request parser.
@@ -23,7 +23,7 @@ class PrincipalSearchPropertySetReport implements XmlDeserializable {
/**
* The deserialize method is called during xml parsing.
*
- * This method is called statictly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php
index 2a00f7925..406dbe0e8 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php
@@ -280,7 +280,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
],
];
- $result = $backend->getMultipleCalendarObjects($returnedId, [ 'id-1', 'id-2' ]);
+ $result = $backend->getMultipleCalendarObjects($returnedId, ['id-1', 'id-2']);
foreach ($check as $index => $props) {
@@ -441,7 +441,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
/**
* @depends testCreateCalendarObject
*/
- function testCreateCalendarObjectInfiniteReccurence() {
+ function testCreateCalendarObjectInfiniteRecurrence() {
$backend = new PDO($this->pdo);
$returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
@@ -470,7 +470,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
/**
* @depends testCreateCalendarObject
*/
- function testCreateCalendarObjectEndingReccurence() {
+ function testCreateCalendarObjectEndingRecurrence() {
$backend = new PDO($this->pdo);
$returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
@@ -1246,8 +1246,8 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$calendar['id'],
[
new Sharee([
- 'href' => 'mailto:user@example.org',
- 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_NOACCESS,
+ 'href' => 'mailto:user@example.org',
+ 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_NOACCESS,
])
]
);
@@ -1263,8 +1263,8 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$calendar['id'],
[
new Sharee([
- 'href' => 'principals/user2',
- 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_NOACCESS,
+ 'href' => 'principals/user2',
+ 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_NOACCESS,
])
]
);
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php
index d4dcc07dc..cc665cd8f 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php
@@ -2,8 +2,8 @@
namespace Sabre\CalDAV\Backend;
-use Sabre\DAV;
use Sabre\CalDAV;
+use Sabre\DAV;
class Mock extends AbstractBackend {
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php
index 0d98922ff..c92cde661 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php
@@ -114,7 +114,7 @@ class CalendarObjectTest extends \PHPUnit_Framework_TestCase {
$obj = $children[0];
$obj->delete();
- $children2 = $this->calendar->getChildren();
+ $children2 = $this->calendar->getChildren();
$this->assertEquals(count($children) - 1, count($children2));
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php
index 4c2558a9b..f3305163b 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php
@@ -21,6 +21,9 @@ ICS;
}
/**
+ * @param string $icalObject
+ * @param array $filters
+ * @param int $outcome
* @dataProvider provider
*/
function testValid($icalObject, $filters, $outcome) {
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php
index 7a756774f..7604c7f4c 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php
@@ -11,11 +11,11 @@ require_once 'Sabre/HTTP/ResponseMock.php';
class FreeBusyReportTest extends \PHPUnit_Framework_TestCase {
/**
- * @var Sabre\CalDAV\Plugin
+ * @var Plugin
*/
protected $plugin;
/**
- * @var Sabre\DAV\Server
+ * @var DAV\Server
*/
protected $server;
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php
index 9719529fb..75412577e 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php
@@ -3,9 +3,9 @@
namespace Sabre\CalDAV;
use Sabre\DAV;
+use Sabre\DAVACL;
use Sabre\HTTP;
use Sabre\VObject;
-use Sabre\DAVACL;
class ICSExportPluginTest extends \Sabre\DAVServerTest {
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php
index 8d538dee5..859f6aa0c 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php
@@ -2,11 +2,11 @@
namespace Sabre\CalDAV;
-use Sabre\DAVACL;
-use Sabre\DAV;
-use Sabre\HTTP;
use DateTime;
use DateTimeZone;
+use Sabre\DAV;
+use Sabre\DAVACL;
+use Sabre\HTTP;
class PluginTest extends \PHPUnit_Framework_TestCase {
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php
index 6e9e88419..9589176a3 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php
@@ -194,8 +194,8 @@ RRR;
$this->assertEquals(
[
new Sharee([
- 'href' => 'mailto:joe@example.org',
- 'properties' => [
+ 'href' => 'mailto:joe@example.org',
+ 'properties' => [
'{DAV:}displayname' => 'Joe Shmoe',
],
'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READWRITE,
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php
index 2c3171bf3..f8da38a16 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php
@@ -2,8 +2,8 @@
namespace Sabre\CardDAV;
-use Sabre\HTTP;
use Sabre\DAV;
+use Sabre\HTTP;
require_once 'Sabre/CardDAV/AbstractPluginTest.php';
require_once 'Sabre/HTTP/ResponseMock.php';
@@ -288,14 +288,14 @@ class AddressBookQueryTest extends AbstractPluginTest {
);
$request->setBody(
-'<?xml version="1.0"?>
+ '<?xml version="1.0"?>
<c:addressbook-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:carddav">
<d:prop>
<c:address-data content-type="application/vcard+json" />
<d:getetag />
</d:prop>
</c:addressbook-query>'
- );
+ );
$response = new HTTP\ResponseMock();
@@ -305,6 +305,51 @@ class AddressBookQueryTest extends AbstractPluginTest {
$this->server->exec();
$this->assertEquals(415, $response->status, 'Incorrect status code. Full response body:' . $response->body);
+ }
+
+ function testAddressBookProperties() {
+
+ $request = new HTTP\Request(
+ 'REPORT',
+ '/addressbooks/user1/book3',
+ ['Depth' => '1']
+ );
+
+ $request->setBody(
+ '<?xml version="1.0"?>
+<c:addressbook-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:carddav">
+ <d:prop>
+ <c:address-data>
+ <c:prop name="FN"/>
+ <c:prop name="BDAY"/>
+ </c:address-data>
+ <d:getetag />
+ </d:prop>
+</c:addressbook-query>'
+ );
+
+ $response = new HTTP\ResponseMock();
+
+ $this->server->httpRequest = $request;
+ $this->server->httpResponse = $response;
+
+ $this->server->exec();
+
+ $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body);
+
+ // using the client for parsing
+ $client = new DAV\Client(['baseUri' => '/']);
+
+ $result = $client->parseMultiStatus($response->body);
+
+ $this->assertEquals([
+ '/addressbooks/user1/book3/card3' => [
+ 200 => [
+ '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nFN:Test-Card\nEMAIL;TYPE=home:bar@example.org\nEND:VCARD") . '"',
+ '{urn:ietf:params:xml:ns:carddav}address-data' => "BEGIN:VCARD\r\nVERSION:3.0\r\nUID:12345\r\nFN:Test-Card\r\nEND:VCARD\r\n",
+ ],
+ ],
+ ], $result);
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php
index 1a36fd10c..1f0064dd3 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php
@@ -85,7 +85,7 @@ class AddressBookTest extends \PHPUnit_Framework_TestCase {
function testDelete() {
$this->ab->delete();
- $this->assertEquals([], $this->backend->addressBooks);
+ $this->assertEquals(1, count($this->backend->addressBooks));
}
@@ -175,7 +175,7 @@ class AddressBookTest extends \PHPUnit_Framework_TestCase {
$backend = new Backend\PDO(
$this->getPDO()
);
- $ab = new AddressBook($backend, [ 'id' => 1, '{DAV:}sync-token' => 2]);
+ $ab = new AddressBook($backend, ['id' => 1, '{DAV:}sync-token' => 2]);
$this->assertEquals(2, $ab->getSyncToken());
}
@@ -187,7 +187,7 @@ class AddressBookTest extends \PHPUnit_Framework_TestCase {
$backend = new Backend\PDO(
$this->getPDO()
);
- $ab = new AddressBook($backend, [ 'id' => 1, '{http://sabredav.org/ns}sync-token' => 2]);
+ $ab = new AddressBook($backend, ['id' => 1, '{http://sabredav.org/ns}sync-token' => 2]);
$this->assertEquals(2, $ab->getSyncToken());
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
index 840b898e8..8638dc74a 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
@@ -20,6 +20,12 @@ class Mock extends AbstractBackend {
'principaluri' => 'principals/user1',
'{DAV:}displayname' => 'd-name',
],
+ [
+ 'id' => 'bar',
+ 'uri' => 'book3',
+ 'principaluri' => 'principals/user1',
+ '{DAV:}displayname' => 'd-name',
+ ],
];
$card2 = fopen('php://memory', 'r+');
@@ -30,6 +36,9 @@ class Mock extends AbstractBackend {
'card1' => "BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD",
'card2' => $card2,
],
+ 'bar' => [
+ 'card3' => "BEGIN:VCARD\nVERSION:3.0\nUID:12345\nFN:Test-Card\nEMAIL;TYPE=home:bar@example.org\nEND:VCARD",
+ ],
];
}
@@ -58,7 +67,7 @@ class Mock extends AbstractBackend {
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
- * Read the PropPatch documenation for more info and examples.
+ * Read the PropPatch documentation for more info and examples.
*
* @param string $addressBookId
* @param \Sabre\DAV\PropPatch $propPatch
@@ -117,7 +126,7 @@ class Mock extends AbstractBackend {
* calculating them. If they are specified, you can also ommit carddata.
* This may speed up certain requests, especially with large cards.
*
- * @param mixed $addressbookId
+ * @param mixed $addressBookId
* @return array
*/
function getCards($addressBookId) {
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php
index d79239d0f..2d57c6ae7 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php
@@ -2,8 +2,8 @@
namespace Sabre\CardDAV;
-use Sabre\HTTP;
use Sabre\DAV;
+use Sabre\HTTP;
require_once 'Sabre/HTTP/ResponseMock.php';
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php
index 0ba4fd669..d4bc48098 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php
@@ -2,8 +2,8 @@
namespace Sabre\CardDAV;
-use Sabre\HTTP;
use Sabre\DAV\PropFind;
+use Sabre\HTTP;
class SogoStripContentTypeTest extends \Sabre\DAVServerTest {
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php
index 57ac21b4a..03c468f86 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php
@@ -7,6 +7,11 @@ require_once 'Sabre/CardDAV/AbstractPluginTest.php';
class ValidateFilterTest extends AbstractPluginTest {
/**
+ * @param string $input
+ * @param array $filters
+ * @param string $test
+ * @param bool $result
+ * @param string|null $message
* @dataProvider data
*/
function testFilter($input, $filters, $test, $result, $message = null) {
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php
index dda8a0c37..acba2cfc8 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php
@@ -3,8 +3,8 @@
namespace Sabre\CardDAV;
use Sabre\DAV;
-use Sabre\HTTP;
use Sabre\DAVACL;
+use Sabre\HTTP;
require_once 'Sabre/HTTP/ResponseMock.php';
@@ -293,10 +293,10 @@ VCF;
$response = $this->request($request, 204);
$expected = [
- 'uri' => 'blabla.vcf',
- 'carddata' => $body,
- 'size' => strlen($body),
- 'etag' => '"' . md5($body) . '"',
+ 'uri' => 'blabla.vcf',
+ 'carddata' => $body,
+ 'size' => strlen($body),
+ 'etag' => '"' . md5($body) . '"',
];
$this->assertEquals($expected, $this->cardBackend->getCard('addressbook1', 'blabla.vcf'));
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php
index b30b3f143..369bc249e 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php
@@ -76,6 +76,8 @@ class Mock implements BackendInterface {
* append your own WWW-Authenticate header instead of overwriting the
* existing one.
*
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
* @return void
*/
function challenge(RequestInterface $request, ResponseInterface $response) {
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php
index b566dd757..743446127 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php
@@ -2,8 +2,8 @@
namespace Sabre\DAV\Auth;
-use Sabre\HTTP;
use Sabre\DAV;
+use Sabre\HTTP;
class PluginTest extends \PHPUnit_Framework_TestCase {
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php
index 4cf27dfaa..687f61e2f 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php
@@ -224,7 +224,7 @@ XML;
XML;
$client->response = new Response(207, [], $responseBody);
- $result = $client->propPatch('foo', ['{DAV:}displayname' => 'hi', '{urn:zim}gir' => null], 1);
+ $result = $client->propPatch('foo', ['{DAV:}displayname' => 'hi', '{urn:zim}gir' => null]);
$this->assertTrue($result);
$request = $client->request;
$this->assertEquals('PROPPATCH', $request->getMethod());
@@ -246,7 +246,7 @@ XML;
]);
$client->response = new Response(403, [], '');
- $client->propPatch('foo', ['{DAV:}displayname' => 'hi', '{urn:zim}gir' => null], 1);
+ $client->propPatch('foo', ['{DAV:}displayname' => 'hi', '{urn:zim}gir' => null]);
}
@@ -276,7 +276,7 @@ XML;
XML;
$client->response = new Response(207, [], $responseBody);
- $client->propPatch('foo', ['{DAV:}displayname' => 'hi', '{urn:zim}gir' => null], 1);
+ $client->propPatch('foo', ['{DAV:}displayname' => 'hi', '{urn:zim}gir' => null]);
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Exception/LockedTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Exception/LockedTest.php
index 8788475cb..174a561b5 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Exception/LockedTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Exception/LockedTest.php
@@ -2,8 +2,8 @@
namespace Sabre\DAV\Exception;
-use Sabre\DAV;
use DOMDocument;
+use Sabre\DAV;
class LockedTest extends \PHPUnit_Framework_TestCase {
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php b/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php
index edd09e634..ba2cf3dc1 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php
@@ -99,7 +99,7 @@ class Issue33Test extends \PHPUnit_Framework_TestCase {
$server->sapi = new HTTP\SapiMock();
$server->exec();
- $this->assertTrue(file_exists(SABRE_TEMPDIR . '/issue33/' . urldecode('%C3%A0fo%C3%B3')));
+ $this->assertTrue(file_exists(SABRE_TEMPDIR . '/issue33/' . urldecode('%C3%A0fo%C3%B3')));
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php
index f08f19da5..1111db5b5 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php
@@ -2,8 +2,8 @@
namespace Sabre\DAV\Locks;
-use Sabre\HTTP;
use Sabre\DAV;
+use Sabre\HTTP;
require_once 'Sabre/HTTP/ResponseMock.php';
require_once 'Sabre/TestUtil.php';
@@ -112,9 +112,9 @@ class MSWordTest extends \PHPUnit_Framework_TestCase {
function getPutRequest($lockToken) {
$request = HTTP\Sapi::createFromServerArray([
- 'REQUEST_METHOD' => 'PUT',
- 'REQUEST_URI' => '/Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx',
- 'HTTP_IF' => 'If: (' . $lockToken . ')',
+ 'REQUEST_METHOD' => 'PUT',
+ 'REQUEST_URI' => '/Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx',
+ 'HTTP_IF' => 'If: (' . $lockToken . ')',
]);
$request->setBody('FAKE BODY');
return $request;
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php
index 6511d4e7d..dbbf6757a 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php
@@ -2,8 +2,8 @@
namespace Sabre\DAV\Locks;
-use Sabre\HTTP;
use Sabre\DAV;
+use Sabre\HTTP;
require_once 'Sabre/DAV/AbstractServer.php';
@@ -168,7 +168,7 @@ class PluginTest extends DAV\AbstractServer {
$this->response = new HTTP\ResponseMock();
$this->server->httpResponse = $this->response;
- $request = new HTTP\Request('LOCK', '/test.txt', ['If' => '(' . $lockToken . ')' ]);
+ $request = new HTTP\Request('LOCK', '/test.txt', ['If' => '(' . $lockToken . ')']);
$request->setBody('');
$this->server->httpRequest = $request;
@@ -203,7 +203,7 @@ class PluginTest extends DAV\AbstractServer {
$this->response = new HTTP\ResponseMock();
$this->server->httpResponse = $this->response;
- $request = new HTTP\Request('LOCK', '/test.txt', ['If' => '(' . $lockToken . 'foobar) (<opaquelocktoken:anotherbadtoken>)' ]);
+ $request = new HTTP\Request('LOCK', '/test.txt', ['If' => '(' . $lockToken . 'foobar) (<opaquelocktoken:anotherbadtoken>)']);
$request->setBody('');
$this->server->httpRequest = $request;
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php b/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php
index 6ccab4f66..fded5e474 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php
@@ -30,6 +30,7 @@ class Collection extends DAV\Collection {
*
* @param string $name
* @param array $children
+ * @param Collection $parent
* @return void
*/
function __construct($name, array $children = [], Collection $parent = null) {
@@ -122,6 +123,8 @@ class Collection extends DAV\Collection {
/**
* Adds an already existing node to this collection.
+ *
+ * @param \Sabre\DAV\INode $node
*/
function addNode(\Sabre\DAV\INode $node) {
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php b/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php
index 23855e3c5..a624b6b6b 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php
@@ -24,7 +24,9 @@ class File extends DAV\File {
* Creates the object
*
* @param string $name
- * @param array $children
+ * @param resource $contents
+ * @param Collection $parent
+ * @param int $lastModified
* @return void
*/
function __construct($name, $contents, Collection $parent = null, $lastModified = -1) {
@@ -57,6 +59,7 @@ class File extends DAV\File {
/**
* Changes the name of the node.
*
+ * @param string $name
* @return void
*/
function setName($name) {
@@ -70,7 +73,7 @@ class File extends DAV\File {
*
* The data argument is a readable stream resource.
*
- * After a succesful put operation, you may choose to return an ETag. The
+ * After a successful put operation, you may choose to return an ETag. The
* etag must always be surrounded by double-quotes. These quotes must
* appear in the actual string you're returning.
*
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php
index ca8ca3f6e..2c6274173 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php
@@ -38,6 +38,11 @@ class SpecificationTest extends \PHPUnit_Framework_TestCase {
}
/**
+ * @param string $headerValue
+ * @param string $httpStatus
+ * @param string $endResult
+ * @param int $contentLength
+ *
* @dataProvider data
*/
function testUpdateRange($headerValue, $httpStatus, $endResult, $contentLength = 4) {
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php
index 4c576f108..42759647a 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php
@@ -39,8 +39,8 @@ class ServerEventsTest extends AbstractServer {
$this->server->on('afterResponse', [$mock, 'afterResponseCallback']);
$this->server->httpRequest = HTTP\Sapi::createFromServerArray([
- 'REQUEST_METHOD' => 'GET',
- 'REQUEST_URI' => '/test.txt',
+ 'REQUEST_METHOD' => 'GET',
+ 'REQUEST_URI' => '/test.txt',
]);
$this->server->exec();
@@ -118,8 +118,8 @@ class ServerEventsTest extends AbstractServer {
);
} catch (Exception $e) {}
- $this->assertEquals(2, $k);
-
+ // Fun fact, PHP 7.1 changes the order when sorting-by-callback.
+ $this->assertTrue($k >= 2 && $k <= 3);
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php
index bafbef6e4..81224d687 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php
@@ -144,7 +144,7 @@ class ServerRangeTest extends \Sabre\DAVServerTest {
'Content-Length' => [4],
'Content-Range' => ['bytes 2-5/12'],
// 'ETag' => ['"' . md5('Test contents') . '"'],
- 'Last-Modified' => [$this->lastModified],
+ 'Last-Modified' => [$this->lastModified],
],
$response->getHeaders()
);
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php b/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php
index 8888f0276..e98fe9048 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php
@@ -5,6 +5,13 @@ namespace Sabre\DAV;
class StringUtilTest extends \PHPUnit_Framework_TestCase {
/**
+ * @param string $haystack
+ * @param string $needle
+ * @param string $collation
+ * @param string $matchType
+ * @param string $result
+ * @throws Exception\BadRequest
+ *
* @dataProvider dataset
*/
function testTextMatch($haystack, $needle, $collation, $matchType, $result) {
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php
index ad33200c8..e719e38d5 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php
@@ -200,8 +200,8 @@ class TreeFileTester extends File implements IProperties {
* To update specific properties, call the 'handle' method on this object.
* Read the PropPatch documentation for more information.
*
- * @param array $mutations
- * @return bool|array
+ * @param PropPatch $propPatch
+ * @return void
*/
function propPatch(PropPatch $propPatch) {
@@ -220,6 +220,7 @@ class TreeMultiGetTester extends TreeDirectoryTester implements IMultiGet {
*
* If any children are not found, you do not have to return them.
*
+ * @param array $paths
* @return array
*/
function getMultipleChildren(array $paths) {
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php
index afb094a39..1464f4c26 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php
@@ -128,7 +128,7 @@ class Mock extends AbstractBackend {
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
- * Read the PropPatch documenation for more info and examples.
+ * Read the PropPatch documentation for more info and examples.
*
* @param string $path
* @param \Sabre\DAV\PropPatch $propPatch
diff --git a/vendor/sabre/http/.travis.yml b/vendor/sabre/http/.travis.yml
index 490e42e1e..8ae84d90f 100644
--- a/vendor/sabre/http/.travis.yml
+++ b/vendor/sabre/http/.travis.yml
@@ -4,6 +4,7 @@ php:
- 5.5
- 5.6
- 7
+ - 7.1
- hhvm
matrix:
@@ -16,7 +17,8 @@ env:
before_script:
- - composer self-update
+ - rm -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini
+# - composer self-update
- composer update --prefer-source $PREFER_LOWEST
script:
diff --git a/vendor/sabre/http/CHANGELOG.md b/vendor/sabre/http/CHANGELOG.md
index 9a751d8fb..63d85afe3 100644
--- a/vendor/sabre/http/CHANGELOG.md
+++ b/vendor/sabre/http/CHANGELOG.md
@@ -1,19 +1,25 @@
ChangeLog
=========
+4.2.2 (2017-01-02)
+------------------
+
+* #72: Handling clients that send invalid `Content-Length` headers.
+
+
4.2.1 (2016-01-06)
------------------
* #56: `getBodyAsString` now returns at most as many bytes as the contents of
the `Content-Length` header. This allows users to pass much larger strings
without having to copy and truncate them.
+* The client now sets a default `User-Agent` header identifying this library.
4.2.0 (2016-01-04)
------------------
* This package now supports sabre/event 3.0.
-* The client now sets a default `User-Agent` header identifying this library.
4.1.0 (2015-09-04)
diff --git a/vendor/sabre/http/LICENSE b/vendor/sabre/http/LICENSE
index 19812ad7a..864041b22 100644
--- a/vendor/sabre/http/LICENSE
+++ b/vendor/sabre/http/LICENSE
@@ -1,4 +1,4 @@
-Copyright (C) 2009-2016 fruux GmbH (https://fruux.com/)
+Copyright (C) 2009-2017 fruux GmbH (https://fruux.com/)
All rights reserved.
diff --git a/vendor/sabre/http/composer.json b/vendor/sabre/http/composer.json
index b061194cf..507d5d28d 100644
--- a/vendor/sabre/http/composer.json
+++ b/vendor/sabre/http/composer.json
@@ -7,6 +7,7 @@
"require" : {
"php" : ">=5.4",
"ext-mbstring" : "*",
+ "ext-ctype" : "*",
"sabre/event" : ">=1.0.0,<4.0.0",
"sabre/uri" : "~1.0"
},
diff --git a/vendor/sabre/http/lib/Message.php b/vendor/sabre/http/lib/Message.php
index 5c6887d8a..45bd18398 100644
--- a/vendor/sabre/http/lib/Message.php
+++ b/vendor/sabre/http/lib/Message.php
@@ -75,12 +75,11 @@ abstract class Message implements MessageInterface {
return '';
}
$contentLength = $this->getHeader('Content-Length');
- if (null === $contentLength) {
- return stream_get_contents($body);
- } else {
+ if (is_int($contentLength) || ctype_digit($contentLength)) {
return stream_get_contents($body, $contentLength);
+ } else {
+ return stream_get_contents($body);
}
-
}
/**
@@ -189,7 +188,7 @@ abstract class Message implements MessageInterface {
/**
* Updates a HTTP header.
*
- * The case-sensitity of the name value must be retained as-is.
+ * The case-sensitivity of the name value must be retained as-is.
*
* If the header already existed, it will be overwritten.
*
@@ -270,10 +269,11 @@ abstract class Message implements MessageInterface {
/**
* Removes a HTTP header.
*
- * The specified header name must be treated as case-insenstive.
+ * The specified header name must be treated as case-insensitive.
* This method should return true if the header was successfully deleted,
* and false if the header did not exist.
*
+ * @param string $name
* @return bool
*/
function removeHeader($name) {
diff --git a/vendor/sabre/http/lib/MessageDecoratorTrait.php b/vendor/sabre/http/lib/MessageDecoratorTrait.php
index f104af38d..1cb32da22 100644
--- a/vendor/sabre/http/lib/MessageDecoratorTrait.php
+++ b/vendor/sabre/http/lib/MessageDecoratorTrait.php
@@ -144,7 +144,7 @@ trait MessageDecoratorTrait {
/**
* Updates a HTTP header.
*
- * The case-sensitity of the name value must be retained as-is.
+ * The case-sensitivity of the name value must be retained as-is.
*
* If the header already existed, it will be overwritten.
*
@@ -210,15 +210,16 @@ trait MessageDecoratorTrait {
/**
* Removes a HTTP header.
*
- * The specified header name must be treated as case-insenstive.
+ * The specified header name must be treated as case-insensitive.
* This method should return true if the header was successfully deleted,
* and false if the header did not exist.
*
+ * @param string $name
* @return bool
*/
function removeHeader($name) {
- $this->inner->removeHeader($name);
+ return $this->inner->removeHeader($name);
}
diff --git a/vendor/sabre/http/lib/MessageInterface.php b/vendor/sabre/http/lib/MessageInterface.php
index 55d8485c1..df55beb2f 100644
--- a/vendor/sabre/http/lib/MessageInterface.php
+++ b/vendor/sabre/http/lib/MessageInterface.php
@@ -44,7 +44,7 @@ interface MessageInterface {
/**
* Updates the body resource with a new stream.
*
- * @param resource $body
+ * @param resource|string $body
* @return void
*/
function setBody($body);
@@ -153,6 +153,7 @@ interface MessageInterface {
* This method should return true if the header was successfully deleted,
* and false if the header did not exist.
*
+ * @param string $name
* @return bool
*/
function removeHeader($name);
diff --git a/vendor/sabre/http/lib/Request.php b/vendor/sabre/http/lib/Request.php
index 8bcaf32a6..dfa3d5b48 100644
--- a/vendor/sabre/http/lib/Request.php
+++ b/vendor/sabre/http/lib/Request.php
@@ -301,7 +301,7 @@ class Request extends Message implements RequestInterface {
foreach ($value as $v) {
if ($key === 'Authorization') {
list($v) = explode(' ', $v, 2);
- $v .= ' REDACTED';
+ $v .= ' REDACTED';
}
$out .= $key . ": " . $v . "\r\n";
}
diff --git a/vendor/sabre/http/lib/Response.php b/vendor/sabre/http/lib/Response.php
index d2ba6d40d..01920d8d9 100644
--- a/vendor/sabre/http/lib/Response.php
+++ b/vendor/sabre/http/lib/Response.php
@@ -100,7 +100,6 @@ class Response extends Message implements ResponseInterface {
* @param string|int $status
* @param array $headers
* @param resource $body
- * @return void
*/
function __construct($status = null, array $headers = null, $body = null) {
@@ -145,7 +144,7 @@ class Response extends Message implements ResponseInterface {
* added.
*
* @param string|int $status
- * @throws \InvalidArgumentExeption
+ * @throws \InvalidArgumentException
* @return void
*/
function setStatus($status) {
diff --git a/vendor/sabre/http/lib/ResponseInterface.php b/vendor/sabre/http/lib/ResponseInterface.php
index c0ecc35ae..411cdc06c 100644
--- a/vendor/sabre/http/lib/ResponseInterface.php
+++ b/vendor/sabre/http/lib/ResponseInterface.php
@@ -37,7 +37,7 @@ interface ResponseInterface extends MessageInterface {
* added.
*
* @param string|int $status
- * @throws \InvalidArgumentExeption
+ * @throws \InvalidArgumentException
* @return void
*/
function setStatus($status);
diff --git a/vendor/sabre/http/lib/URLUtil.php b/vendor/sabre/http/lib/URLUtil.php
index 474856348..85c0e1150 100644
--- a/vendor/sabre/http/lib/URLUtil.php
+++ b/vendor/sabre/http/lib/URLUtil.php
@@ -10,7 +10,7 @@ use Sabre\URI;
* Note: this class is deprecated. All its functionality moved to functions.php
* or sabre\uri.
*
- * @deprectated
+ * @deprecated
* @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
diff --git a/vendor/sabre/http/lib/Util.php b/vendor/sabre/http/lib/Util.php
index 83bde50a4..e3f13a645 100644
--- a/vendor/sabre/http/lib/Util.php
+++ b/vendor/sabre/http/lib/Util.php
@@ -31,7 +31,7 @@ class Util {
* Deprecated! Use negotiateContentType.
*
* @deprecated Use \Sabre\HTTP\NegotiateContentType
- * @param string|null $acceptHeader
+ * @param string|null $acceptHeaderValue
* @param array $availableOptions
* @return string|null
*/
diff --git a/vendor/sabre/http/lib/Version.php b/vendor/sabre/http/lib/Version.php
index 789ee4543..a5a427405 100644
--- a/vendor/sabre/http/lib/Version.php
+++ b/vendor/sabre/http/lib/Version.php
@@ -14,6 +14,6 @@ class Version {
/**
* Full version number
*/
- const VERSION = '4.2.1';
+ const VERSION = '4.2.2';
}
diff --git a/vendor/sabre/http/lib/functions.php b/vendor/sabre/http/lib/functions.php
index 1ec123f2e..d94119623 100644
--- a/vendor/sabre/http/lib/functions.php
+++ b/vendor/sabre/http/lib/functions.php
@@ -79,7 +79,7 @@ function toDate(DateTime $dateTime) {
// We need to clone it, as we don't want to affect the existing
// DateTime.
$dateTime = clone $dateTime;
- $dateTime->setTimeZone(new \DateTimeZone('GMT'));
+ $dateTime->setTimezone(new \DateTimeZone('GMT'));
return $dateTime->format('D, d M Y H:i:s \G\M\T');
}
@@ -216,7 +216,7 @@ function negotiateContentType($acceptHeaderValue, array $availableOptions) {
* Parameters are currently discarded. There's no known prefer value that
* uses them.
*
- * @param string|string[] $header
+ * @param string|string[] $input
* @return array
*/
function parsePrefer($input) {
diff --git a/vendor/sabre/uri/.travis.yml b/vendor/sabre/uri/.travis.yml
index f7d1a0657..75c8270df 100644
--- a/vendor/sabre/uri/.travis.yml
+++ b/vendor/sabre/uri/.travis.yml
@@ -3,8 +3,8 @@ php:
- 5.4
- 5.5
- 5.6
- - hhvm
- 7
+ - 7.1
script:
- ./bin/phpunit --configuration tests/phpunit.xml.dist
diff --git a/vendor/sabre/uri/CHANGELOG.md b/vendor/sabre/uri/CHANGELOG.md
index 9fa510dc2..92aaa7507 100644
--- a/vendor/sabre/uri/CHANGELOG.md
+++ b/vendor/sabre/uri/CHANGELOG.md
@@ -1,6 +1,29 @@
ChangeLog
=========
+1.2.1 (2017-02-20)
+------------------
+
+* #16: Correctly parse urls that are only a fragment `#`.
+
+
+1.2.0 (2016-12-06)
+------------------
+
+* Now throwing `InvalidUriException` if a uri passed to the `parse` function
+ is invalid or could not be parsed.
+* #11: Fix support for URIs that start with a triple slash. PHP's `parse_uri()`
+ doesn't support them, so we now have a pure-php fallback in case it fails.
+* #9: Fix support for relative URI's that have a non-uri encoded colon `:` in
+ them.
+
+
+1.1.1 (2016-10-27)
+------------------
+
+* #10: Correctly support file:// URIs in the build() method. (@yuloh)
+
+
1.1.0 (2016-03-07)
------------------
diff --git a/vendor/sabre/uri/LICENSE b/vendor/sabre/uri/LICENSE
index 9a3a91946..087996be7 100644
--- a/vendor/sabre/uri/LICENSE
+++ b/vendor/sabre/uri/LICENSE
@@ -1,4 +1,4 @@
-Copyright (C) 2014-2016 fruux GmbH (https://fruux.com/)
+Copyright (C) 2014-2017 fruux GmbH (https://fruux.com/)
All rights reserved.
diff --git a/vendor/sabre/uri/README.md b/vendor/sabre/uri/README.md
index 76f55d8e4..aa21bfe06 100644
--- a/vendor/sabre/uri/README.md
+++ b/vendor/sabre/uri/README.md
@@ -25,14 +25,6 @@ Further reading
* [Usage][8]
-Build status
-------------
-
-| branch | status |
-| ------ | ------ |
-| master | [![Build Status](https://travis-ci.org/fruux/sabre-uri.svg?branch=master)](https://travis-ci.org/fruux/sabre-uri) |
-
-
Questions?
----------
diff --git a/vendor/sabre/uri/composer.json b/vendor/sabre/uri/composer.json
index 7b48acb71..49d69e723 100644
--- a/vendor/sabre/uri/composer.json
+++ b/vendor/sabre/uri/composer.json
@@ -32,8 +32,8 @@
}
},
"require-dev": {
- "sabre/cs": "~0.0.1",
- "phpunit/phpunit" : "*"
+ "sabre/cs": "~1.0.0",
+ "phpunit/phpunit" : ">=4.0,<6.0"
},
"config" : {
"bin-dir" : "bin/"
diff --git a/vendor/sabre/uri/lib/InvalidUriException.php b/vendor/sabre/uri/lib/InvalidUriException.php
new file mode 100644
index 000000000..0385fd462
--- /dev/null
+++ b/vendor/sabre/uri/lib/InvalidUriException.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Sabre\Uri;
+
+/**
+ * Invalid Uri
+ *
+ * This is thrown when an attempt was made to use Sabre\Uri parse a uri that
+ * it could not.
+ *
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
+ * @author Evert Pot (https://evertpot.com/)
+ * @license http://sabre.io/license/
+ */
+class InvalidUriException extends \Exception {
+
+}
diff --git a/vendor/sabre/uri/lib/Version.php b/vendor/sabre/uri/lib/Version.php
index 88678d4d5..fa544538b 100644
--- a/vendor/sabre/uri/lib/Version.php
+++ b/vendor/sabre/uri/lib/Version.php
@@ -14,6 +14,6 @@ class Version {
/**
* Full version number
*/
- const VERSION = '1.1.0';
+ const VERSION = '1.2.1';
}
diff --git a/vendor/sabre/uri/lib/functions.php b/vendor/sabre/uri/lib/functions.php
index 06181aef0..39b4a6f08 100644
--- a/vendor/sabre/uri/lib/functions.php
+++ b/vendor/sabre/uri/lib/functions.php
@@ -45,8 +45,8 @@ function resolve($basePath, $newPath) {
$newParts = [];
$newParts['scheme'] = $pick('scheme');
- $newParts['host'] = $pick('host');
- $newParts['port'] = $pick('port');
+ $newParts['host'] = $pick('host');
+ $newParts['port'] = $pick('port');
$path = '';
if ($delta['path']) {
@@ -193,8 +193,13 @@ function parse($uri) {
$uri
);
+ $result = parse_url($uri);
+ if (!$result) {
+ $result = _parse_fallback($uri);
+ }
+
return
- parse_url($uri) + [
+ $result + [
'scheme' => null,
'host' => null,
'path' => null,
@@ -233,7 +238,7 @@ function build(array $parts) {
$uri = $parts['scheme'] . ':';
}
- if ($authority) {
+ if ($authority || (!empty($parts['scheme']) && $parts['scheme'] === 'file')) {
// No scheme, but there is a host.
$uri .= '//' . $authority;
@@ -280,3 +285,89 @@ function split($path) {
return [null,null];
}
+
+/**
+ * This function is another implementation of parse_url, except this one is
+ * fully written in PHP.
+ *
+ * The reason is that the PHP bug team is not willing to admit that there are
+ * bugs in the parse_url implementation.
+ *
+ * This function is only called if the main parse method fails. It's pretty
+ * crude and probably slow, so the original parse_url is usually preferred.
+ *
+ * @param string $uri
+ * @return array
+ */
+function _parse_fallback($uri) {
+
+ // Normally a URI must be ASCII, however. However, often it's not and
+ // parse_url might corrupt these strings.
+ //
+ // For that reason we take any non-ascii characters from the uri and
+ // uriencode them first.
+ $uri = preg_replace_callback(
+ '/[^[:ascii:]]/u',
+ function($matches) {
+ return rawurlencode($matches[0]);
+ },
+ $uri
+ );
+
+ $result = [
+ 'scheme' => null,
+ 'host' => null,
+ 'port' => null,
+ 'user' => null,
+ 'path' => null,
+ 'fragment' => null,
+ 'query' => null,
+ ];
+
+ if (preg_match('% ^([A-Za-z][A-Za-z0-9+-\.]+): %x', $uri, $matches)) {
+
+ $result['scheme'] = $matches[1];
+ // Take what's left.
+ $uri = substr($uri, strlen($result['scheme']) + 1);
+
+ }
+
+ // Taking off a fragment part
+ if (strpos($uri, '#') !== false) {
+ list($uri, $result['fragment']) = explode('#', $uri, 2);
+ }
+ // Taking off the query part
+ if (strpos($uri, '?') !== false) {
+ list($uri, $result['query']) = explode('?', $uri, 2);
+ }
+
+ if (substr($uri, 0, 3) === '///') {
+ // The triple slash uris are a bit unusual, but we have special handling
+ // for them.
+ $result['path'] = substr($uri, 2);
+ $result['host'] = '';
+ } elseif (substr($uri, 0, 2) === '//') {
+ // Uris that have an authority part.
+ $regex = '
+ %^
+ //
+ (?: (?<user> [^:@]+) (: (?<pass> [^@]+)) @)?
+ (?<host> ( [^:/]* | \[ [^\]]+ \] ))
+ (?: : (?<port> [0-9]+))?
+ (?<path> / .*)?
+ $%x
+ ';
+ if (!preg_match($regex, $uri, $matches)) {
+ throw new InvalidUriException('Invalid, or could not parse URI');
+ }
+ if ($matches['host']) $result['host'] = $matches['host'];
+ if ($matches['port']) $result['port'] = (int)$matches['port'];
+ if (isset($matches['path'])) $result['path'] = $matches['path'];
+ if ($matches['user']) $result['user'] = $matches['user'];
+ if ($matches['pass']) $result['pass'] = $matches['pass'];
+ } else {
+ $result['path'] = $uri;
+ }
+
+ return $result;
+}
diff --git a/vendor/sabre/vobject/.travis.yml b/vendor/sabre/vobject/.travis.yml
index b7266a878..3c5b32157 100644
--- a/vendor/sabre/vobject/.travis.yml
+++ b/vendor/sabre/vobject/.travis.yml
@@ -2,7 +2,8 @@ language: php
php:
- 5.5
- 5.6
- - 7
+ - 7.0
+ - 7.1
sudo: false
diff --git a/vendor/sabre/vobject/CHANGELOG.md b/vendor/sabre/vobject/CHANGELOG.md
index 4c72680f8..c8f4cb4be 100644
--- a/vendor/sabre/vobject/CHANGELOG.md
+++ b/vendor/sabre/vobject/CHANGELOG.md
@@ -1,6 +1,22 @@
ChangeLog
=========
+4.1.2 (2016-12-15)
+------------------
+
+* #340: Support for `BYYEARDAY` recurrence when `FREQ=YEARLY`. (@PHPGangsta)
+* #341: Support for `BYWEEKNO` recurrence when `FREQ=YEARLY`. (@PHPGangsta)
+* Updated to the latest windows timezone data mappings.
+* #344: Auto-detecting more Outlook 365-generated timezone identifiers.
+ (@jpirkey)
+* #348: `FreeBusyGenerator` can now accept streams.
+* Support sabre/xml 1.5 and 2.0.
+* #355: Support `DateTimeInterface` in more places where only `DateTime` was
+ supported. (@gharlan).
+* #351: Fixing an inclusive/exclusive problem with `isInTimeRange` and
+ `fastForward` with all-day events. (@strokyl, thanks you are brilliant).
+
+
4.1.1 (2016-07-15)
------------------
@@ -143,7 +159,7 @@ ChangeLog
and `IntegerValue` to allow PHP 7 compatibility.
-3.5.3 (????-??-??)
+3.5.3 (2016-10-06)
------------------
* #331: Fix dealing with multiple overridden instances falling on the same
diff --git a/vendor/sabre/vobject/bin/fetch_windows_zones.php b/vendor/sabre/vobject/bin/fetch_windows_zones.php
index 1b1fdc37c..3f2a00f7a 100755
--- a/vendor/sabre/vobject/bin/fetch_windows_zones.php
+++ b/vendor/sabre/vobject/bin/fetch_windows_zones.php
@@ -36,7 +36,7 @@ fwrite($f, " *\n");
fwrite($f, " * Last update: " . date(DATE_W3C) . "\n");
fwrite($f, " * Source: " . $windowsZonesUrl . "\n");
fwrite($f, " *\n");
-fwrite($f, " * @copyright Copyright (C) 2011-2015 fruux GmbH (https://fruux.com/).\n");
+fwrite($f, " * @copyright Copyright (C) fruux GmbH (https://fruux.com/).\n");
fwrite($f, " * @license http://sabre.io/license/ Modified BSD License\n");
fwrite($f, " */\n");
fwrite($f, "\n");
diff --git a/vendor/sabre/vobject/composer.json b/vendor/sabre/vobject/composer.json
index bd6348a82..cfa4a712d 100644
--- a/vendor/sabre/vobject/composer.json
+++ b/vendor/sabre/vobject/composer.json
@@ -34,11 +34,11 @@
"require" : {
"php" : ">=5.5",
"ext-mbstring" : "*",
- "sabre/xml" : "~1.1"
+ "sabre/xml" : ">=1.5 <3.0"
},
"require-dev" : {
"phpunit/phpunit" : "*",
- "sabre/cs" : "~0.0.3"
+ "sabre/cs" : "^1.0.0"
},
"suggest" : {
diff --git a/vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php b/vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php
index afa41ab1c..553912249 100644
--- a/vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php
+++ b/vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php
@@ -159,10 +159,10 @@ class BirthdayCalendarGenerator {
// Create event.
$event = $calendar->add('VEVENT', [
- 'SUMMARY' => sprintf($this->format, $object->FN->getValue()),
- 'DTSTART' => new \DateTime($object->BDAY->getValue()),
- 'RRULE' => 'FREQ=YEARLY',
- 'TRANSP' => 'TRANSPARENT',
+ 'SUMMARY' => sprintf($this->format, $object->FN->getValue()),
+ 'DTSTART' => new \DateTime($object->BDAY->getValue()),
+ 'RRULE' => 'FREQ=YEARLY',
+ 'TRANSP' => 'TRANSPARENT',
]);
// add VALUE=date
diff --git a/vendor/sabre/vobject/lib/Component/VAlarm.php b/vendor/sabre/vobject/lib/Component/VAlarm.php
index 8cbd572e6..faa8a5e74 100644
--- a/vendor/sabre/vobject/lib/Component/VAlarm.php
+++ b/vendor/sabre/vobject/lib/Component/VAlarm.php
@@ -2,10 +2,10 @@
namespace Sabre\VObject\Component;
+use DateTimeImmutable;
+use DateTimeInterface;
use Sabre\VObject;
use Sabre\VObject\InvalidDataException;
-use DateTimeInterface;
-use DateTimeImmutable;
/**
* VAlarm component.
diff --git a/vendor/sabre/vobject/lib/Component/VCalendar.php b/vendor/sabre/vobject/lib/Component/VCalendar.php
index 988db9dc2..1b3137d38 100644
--- a/vendor/sabre/vobject/lib/Component/VCalendar.php
+++ b/vendor/sabre/vobject/lib/Component/VCalendar.php
@@ -6,10 +6,10 @@ use DateTimeInterface;
use DateTimeZone;
use Sabre\VObject;
use Sabre\VObject\Component;
+use Sabre\VObject\InvalidDataException;
use Sabre\VObject\Property;
use Sabre\VObject\Recur\EventIterator;
use Sabre\VObject\Recur\NoInstancesException;
-use Sabre\VObject\InvalidDataException;
/**
* The VCalendar component.
@@ -54,21 +54,21 @@ class VCalendar extends VObject\Document {
* @var array
*/
static $valueMap = [
- 'BINARY' => 'Sabre\\VObject\\Property\\Binary',
- 'BOOLEAN' => 'Sabre\\VObject\\Property\\Boolean',
- 'CAL-ADDRESS' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress',
- 'DATE' => 'Sabre\\VObject\\Property\\ICalendar\\Date',
- 'DATE-TIME' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
- 'FLOAT' => 'Sabre\\VObject\\Property\\FloatValue',
- 'INTEGER' => 'Sabre\\VObject\\Property\\IntegerValue',
- 'PERIOD' => 'Sabre\\VObject\\Property\\ICalendar\\Period',
- 'RECUR' => 'Sabre\\VObject\\Property\\ICalendar\\Recur',
- 'TEXT' => 'Sabre\\VObject\\Property\\Text',
- 'TIME' => 'Sabre\\VObject\\Property\\Time',
- 'UNKNOWN' => 'Sabre\\VObject\\Property\\Unknown', // jCard / jCal-only.
- 'URI' => 'Sabre\\VObject\\Property\\Uri',
- 'UTC-OFFSET' => 'Sabre\\VObject\\Property\\UtcOffset',
+ 'BINARY' => 'Sabre\\VObject\\Property\\Binary',
+ 'BOOLEAN' => 'Sabre\\VObject\\Property\\Boolean',
+ 'CAL-ADDRESS' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress',
+ 'DATE' => 'Sabre\\VObject\\Property\\ICalendar\\Date',
+ 'DATE-TIME' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
+ 'FLOAT' => 'Sabre\\VObject\\Property\\FloatValue',
+ 'INTEGER' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'PERIOD' => 'Sabre\\VObject\\Property\\ICalendar\\Period',
+ 'RECUR' => 'Sabre\\VObject\\Property\\ICalendar\\Recur',
+ 'TEXT' => 'Sabre\\VObject\\Property\\Text',
+ 'TIME' => 'Sabre\\VObject\\Property\\Time',
+ 'UNKNOWN' => 'Sabre\\VObject\\Property\\Unknown', // jCard / jCal-only.
+ 'URI' => 'Sabre\\VObject\\Property\\Uri',
+ 'UTC-OFFSET' => 'Sabre\\VObject\\Property\\UtcOffset',
];
/**
@@ -78,40 +78,40 @@ class VCalendar extends VObject\Document {
*/
static $propertyMap = [
// Calendar properties
- 'CALSCALE' => 'Sabre\\VObject\\Property\\FlatText',
- 'METHOD' => 'Sabre\\VObject\\Property\\FlatText',
- 'PRODID' => 'Sabre\\VObject\\Property\\FlatText',
- 'VERSION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'CALSCALE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'METHOD' => 'Sabre\\VObject\\Property\\FlatText',
+ 'PRODID' => 'Sabre\\VObject\\Property\\FlatText',
+ 'VERSION' => 'Sabre\\VObject\\Property\\FlatText',
// Component properties
- 'ATTACH' => 'Sabre\\VObject\\Property\\Uri',
- 'CATEGORIES' => 'Sabre\\VObject\\Property\\Text',
- 'CLASS' => 'Sabre\\VObject\\Property\\FlatText',
- 'COMMENT' => 'Sabre\\VObject\\Property\\FlatText',
- 'DESCRIPTION' => 'Sabre\\VObject\\Property\\FlatText',
- 'GEO' => 'Sabre\\VObject\\Property\\FloatValue',
- 'LOCATION' => 'Sabre\\VObject\\Property\\FlatText',
- 'PERCENT-COMPLETE' => 'Sabre\\VObject\\Property\\IntegerValue',
- 'PRIORITY' => 'Sabre\\VObject\\Property\\IntegerValue',
- 'RESOURCES' => 'Sabre\\VObject\\Property\\Text',
- 'STATUS' => 'Sabre\\VObject\\Property\\FlatText',
- 'SUMMARY' => 'Sabre\\VObject\\Property\\FlatText',
+ 'ATTACH' => 'Sabre\\VObject\\Property\\Uri',
+ 'CATEGORIES' => 'Sabre\\VObject\\Property\\Text',
+ 'CLASS' => 'Sabre\\VObject\\Property\\FlatText',
+ 'COMMENT' => 'Sabre\\VObject\\Property\\FlatText',
+ 'DESCRIPTION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'GEO' => 'Sabre\\VObject\\Property\\FloatValue',
+ 'LOCATION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'PERCENT-COMPLETE' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'PRIORITY' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'RESOURCES' => 'Sabre\\VObject\\Property\\Text',
+ 'STATUS' => 'Sabre\\VObject\\Property\\FlatText',
+ 'SUMMARY' => 'Sabre\\VObject\\Property\\FlatText',
// Date and Time Component Properties
- 'COMPLETED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'DTEND' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'DUE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'DTSTART' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
- 'FREEBUSY' => 'Sabre\\VObject\\Property\\ICalendar\\Period',
- 'TRANSP' => 'Sabre\\VObject\\Property\\FlatText',
+ 'COMPLETED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DTEND' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DUE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DTSTART' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
+ 'FREEBUSY' => 'Sabre\\VObject\\Property\\ICalendar\\Period',
+ 'TRANSP' => 'Sabre\\VObject\\Property\\FlatText',
// Time Zone Component Properties
- 'TZID' => 'Sabre\\VObject\\Property\\FlatText',
- 'TZNAME' => 'Sabre\\VObject\\Property\\FlatText',
- 'TZOFFSETFROM' => 'Sabre\\VObject\\Property\\UtcOffset',
- 'TZOFFSETTO' => 'Sabre\\VObject\\Property\\UtcOffset',
- 'TZURL' => 'Sabre\\VObject\\Property\\Uri',
+ 'TZID' => 'Sabre\\VObject\\Property\\FlatText',
+ 'TZNAME' => 'Sabre\\VObject\\Property\\FlatText',
+ 'TZOFFSETFROM' => 'Sabre\\VObject\\Property\\UtcOffset',
+ 'TZOFFSETTO' => 'Sabre\\VObject\\Property\\UtcOffset',
+ 'TZURL' => 'Sabre\\VObject\\Property\\Uri',
// Relationship Component Properties
'ATTENDEE' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress',
@@ -123,15 +123,15 @@ class VCalendar extends VObject\Document {
'UID' => 'Sabre\\VObject\\Property\\FlatText',
// Recurrence Component Properties
- 'EXDATE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'RDATE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'RRULE' => 'Sabre\\VObject\\Property\\ICalendar\\Recur',
- 'EXRULE' => 'Sabre\\VObject\\Property\\ICalendar\\Recur', // Deprecated since rfc5545
+ 'EXDATE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'RDATE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'RRULE' => 'Sabre\\VObject\\Property\\ICalendar\\Recur',
+ 'EXRULE' => 'Sabre\\VObject\\Property\\ICalendar\\Recur', // Deprecated since rfc5545
// Alarm Component Properties
- 'ACTION' => 'Sabre\\VObject\\Property\\FlatText',
- 'REPEAT' => 'Sabre\\VObject\\Property\\IntegerValue',
- 'TRIGGER' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
+ 'ACTION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'REPEAT' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'TRIGGER' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
// Change Management Component Properties
'CREATED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
@@ -143,13 +143,13 @@ class VCalendar extends VObject\Document {
'REQUEST-STATUS' => 'Sabre\\VObject\\Property\\Text',
// Additions from draft-daboo-valarm-extensions-04
- 'ALARM-AGENT' => 'Sabre\\VObject\\Property\\Text',
- 'ACKNOWLEDGED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'PROXIMITY' => 'Sabre\\VObject\\Property\\Text',
- 'DEFAULT-ALARM' => 'Sabre\\VObject\\Property\\Boolean',
+ 'ALARM-AGENT' => 'Sabre\\VObject\\Property\\Text',
+ 'ACKNOWLEDGED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'PROXIMITY' => 'Sabre\\VObject\\Property\\Text',
+ 'DEFAULT-ALARM' => 'Sabre\\VObject\\Property\\Boolean',
// Additions from draft-daboo-calendar-availability-05
- 'BUSYTYPE' => 'Sabre\\VObject\\Property\\Text',
+ 'BUSYTYPE' => 'Sabre\\VObject\\Property\\Text',
];
diff --git a/vendor/sabre/vobject/lib/Component/VCard.php b/vendor/sabre/vobject/lib/Component/VCard.php
index 3c05191a9..4f620de10 100644
--- a/vendor/sabre/vobject/lib/Component/VCard.php
+++ b/vendor/sabre/vobject/lib/Component/VCard.php
@@ -74,19 +74,19 @@ class VCard extends VObject\Document {
static $propertyMap = [
// vCard 2.1 properties and up
- 'N' => 'Sabre\\VObject\\Property\\Text',
- 'FN' => 'Sabre\\VObject\\Property\\FlatText',
- 'PHOTO' => 'Sabre\\VObject\\Property\\Binary',
- 'BDAY' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
- 'ADR' => 'Sabre\\VObject\\Property\\Text',
- 'LABEL' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
- 'TEL' => 'Sabre\\VObject\\Property\\FlatText',
- 'EMAIL' => 'Sabre\\VObject\\Property\\FlatText',
- 'MAILER' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
- 'GEO' => 'Sabre\\VObject\\Property\\FlatText',
- 'TITLE' => 'Sabre\\VObject\\Property\\FlatText',
- 'ROLE' => 'Sabre\\VObject\\Property\\FlatText',
- 'LOGO' => 'Sabre\\VObject\\Property\\Binary',
+ 'N' => 'Sabre\\VObject\\Property\\Text',
+ 'FN' => 'Sabre\\VObject\\Property\\FlatText',
+ 'PHOTO' => 'Sabre\\VObject\\Property\\Binary',
+ 'BDAY' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
+ 'ADR' => 'Sabre\\VObject\\Property\\Text',
+ 'LABEL' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
+ 'TEL' => 'Sabre\\VObject\\Property\\FlatText',
+ 'EMAIL' => 'Sabre\\VObject\\Property\\FlatText',
+ 'MAILER' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
+ 'GEO' => 'Sabre\\VObject\\Property\\FlatText',
+ 'TITLE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'ROLE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'LOGO' => 'Sabre\\VObject\\Property\\Binary',
// 'AGENT' => 'Sabre\\VObject\\Property\\', // Todo: is an embedded vCard. Probably rare, so
// not supported at the moment
'ORG' => 'Sabre\\VObject\\Property\\Text',
@@ -107,13 +107,13 @@ class VCard extends VObject\Document {
'CLASS' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
// rfc2739 properties
- 'FBURL' => 'Sabre\\VObject\\Property\\Uri',
- 'CAPURI' => 'Sabre\\VObject\\Property\\Uri',
- 'CALURI' => 'Sabre\\VObject\\Property\\Uri',
- 'CALADRURI' => 'Sabre\\VObject\\Property\\Uri',
+ 'FBURL' => 'Sabre\\VObject\\Property\\Uri',
+ 'CAPURI' => 'Sabre\\VObject\\Property\\Uri',
+ 'CALURI' => 'Sabre\\VObject\\Property\\Uri',
+ 'CALADRURI' => 'Sabre\\VObject\\Property\\Uri',
// rfc4770 properties
- 'IMPP' => 'Sabre\\VObject\\Property\\Uri',
+ 'IMPP' => 'Sabre\\VObject\\Property\\Uri',
// vCard 4.0 properties
'SOURCE' => 'Sabre\\VObject\\Property\\Uri',
@@ -127,9 +127,9 @@ class VCard extends VObject\Document {
'RELATED' => 'Sabre\\VObject\\Property\\Uri',
// rfc6474 properties
- 'BIRTHPLACE' => 'Sabre\\VObject\\Property\\FlatText',
- 'DEATHPLACE' => 'Sabre\\VObject\\Property\\FlatText',
- 'DEATHDATE' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
+ 'BIRTHPLACE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'DEATHPLACE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'DEATHDATE' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
// rfc6715 properties
'EXPERTISE' => 'Sabre\\VObject\\Property\\FlatText',
@@ -368,7 +368,7 @@ class VCard extends VObject\Document {
// FN is commented out, because it's already handled by the
// validate function, which may also try to repair it.
// 'FN' => '+',
- 'UID' => '?',
+ 'UID' => '?',
];
}
diff --git a/vendor/sabre/vobject/lib/DateTimeParser.php b/vendor/sabre/vobject/lib/DateTimeParser.php
index 443bbb660..f9a802d25 100644
--- a/vendor/sabre/vobject/lib/DateTimeParser.php
+++ b/vendor/sabre/vobject/lib/DateTimeParser.php
@@ -2,9 +2,9 @@
namespace Sabre\VObject;
+use DateInterval;
use DateTimeImmutable;
use DateTimeZone;
-use DateInterval;
/**
* DateTimeParser.
@@ -509,7 +509,7 @@ class DateTimeParser {
static function parseVCardDateAndOrTime($date) {
// \d{8}|\d{4}-\d\d|--\d\d(\d\d)?|---\d\d
- $valueDate = '/^(?J)(?:' .
+ $valueDate = '/^(?J)(?:' .
'(?<year>\d{4})(?<month>\d\d)(?<date>\d\d)' .
'|(?<year>\d{4})-(?<month>\d\d)' .
'|--(?<month>\d\d)(?<date>\d\d)?' .
@@ -517,7 +517,7 @@ class DateTimeParser {
')$/';
// (\d\d(\d\d(\d\d)?)?|-\d\d(\d\d)?|--\d\d)(Z|[+\-]\d\d(\d\d)?)?
- $valueTime = '/^(?J)(?:' .
+ $valueTime = '/^(?J)(?:' .
'((?<hour>\d\d)((?<minute>\d\d)(?<second>\d\d)?)?' .
'|-(?<minute>\d\d)(?<second>\d\d)?' .
'|--(?<second>\d\d))' .
@@ -554,12 +554,12 @@ class DateTimeParser {
];
// The $valueDateTime expression has a bug with (?J) so we simulate it.
- $parts['date0'] = &$parts['date'];
- $parts['date1'] = &$parts['date'];
- $parts['date2'] = &$parts['date'];
+ $parts['date0'] = &$parts['date'];
+ $parts['date1'] = &$parts['date'];
+ $parts['date2'] = &$parts['date'];
$parts['month0'] = &$parts['month'];
$parts['month1'] = &$parts['month'];
- $parts['year0'] = &$parts['year'];
+ $parts['year0'] = &$parts['year'];
foreach ($parts as $part => &$value) {
if (!empty($matches[$part])) {
diff --git a/vendor/sabre/vobject/lib/FreeBusyGenerator.php b/vendor/sabre/vobject/lib/FreeBusyGenerator.php
index e33621090..e30b136c4 100644
--- a/vendor/sabre/vobject/lib/FreeBusyGenerator.php
+++ b/vendor/sabre/vobject/lib/FreeBusyGenerator.php
@@ -2,8 +2,8 @@
namespace Sabre\VObject;
-use DateTimeInterface;
use DateTimeImmutable;
+use DateTimeInterface;
use DateTimeZone;
use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\Recur\EventIterator;
@@ -152,7 +152,7 @@ class FreeBusyGenerator {
$this->objects = [];
foreach ($objects as $object) {
- if (is_string($object)) {
+ if (is_string($object) || is_resource($object)) {
$this->objects[] = Reader::read($object);
} elseif ($object instanceof Component) {
$this->objects[] = $object;
@@ -292,7 +292,7 @@ class FreeBusyGenerator {
list($higherStart, $higherEnd) = $higherVavail->getEffectiveStartEnd();
if (
(is_null($higherStart) || $higherStart < $compStart) &&
- (is_null($higherEnd) || $higherEnd > $compEnd)
+ (is_null($higherEnd) || $higherEnd > $compEnd)
) {
// Component is fully covered by a higher priority
diff --git a/vendor/sabre/vobject/lib/Parameter.php b/vendor/sabre/vobject/lib/Parameter.php
index 270643eab..a99a33eec 100644
--- a/vendor/sabre/vobject/lib/Parameter.php
+++ b/vendor/sabre/vobject/lib/Parameter.php
@@ -2,8 +2,8 @@
namespace Sabre\VObject;
-use Sabre\Xml;
use ArrayIterator;
+use Sabre\Xml;
/**
* VObject Parameter.
diff --git a/vendor/sabre/vobject/lib/Parser/Json.php b/vendor/sabre/vobject/lib/Parser/Json.php
index 370c981a8..a77258a2e 100644
--- a/vendor/sabre/vobject/lib/Parser/Json.php
+++ b/vendor/sabre/vobject/lib/Parser/Json.php
@@ -4,8 +4,8 @@ namespace Sabre\VObject\Parser;
use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\Component\VCard;
-use Sabre\VObject\ParseException;
use Sabre\VObject\EofException;
+use Sabre\VObject\ParseException;
/**
* Json Parser.
diff --git a/vendor/sabre/vobject/lib/Parser/MimeDir.php b/vendor/sabre/vobject/lib/Parser/MimeDir.php
index 6a7f9317b..fa75a1a3b 100644
--- a/vendor/sabre/vobject/lib/Parser/MimeDir.php
+++ b/vendor/sabre/vobject/lib/Parser/MimeDir.php
@@ -2,12 +2,12 @@
namespace Sabre\VObject\Parser;
-use Sabre\VObject\ParseException;
-use Sabre\VObject\EofException;
use Sabre\VObject\Component;
use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\Component\VCard;
use Sabre\VObject\Document;
+use Sabre\VObject\EofException;
+use Sabre\VObject\ParseException;
/**
* MimeDir parser.
diff --git a/vendor/sabre/vobject/lib/Parser/XML.php b/vendor/sabre/vobject/lib/Parser/XML.php
index 060a7fe2e..5ac423984 100644
--- a/vendor/sabre/vobject/lib/Parser/XML.php
+++ b/vendor/sabre/vobject/lib/Parser/XML.php
@@ -20,7 +20,7 @@ use Sabre\Xml as SabreXml;
*/
class XML extends Parser {
- const XCAL_NAMESPACE = 'urn:ietf:params:xml:ns:icalendar-2.0';
+ const XCAL_NAMESPACE = 'urn:ietf:params:xml:ns:icalendar-2.0';
const XCARD_NAMESPACE = 'urn:ietf:params:xml:ns:vcard-4.0';
/**
@@ -100,7 +100,7 @@ class XML extends Parser {
foreach ($this->input['value'] as &$vCard) {
$this->root = new VCard(['version' => '4.0'], false);
- $this->pointer = &$vCard;
+ $this->pointer = &$vCard;
$this->parseVCardComponents($this->root);
// We just parse the first <vcard /> element.
@@ -172,10 +172,10 @@ class XML extends Parser {
list($namespace, $tagName) = SabreXml\Service::parseClarkNotation($xmlProperty['name']);
- $propertyName = $tagName;
- $propertyValue = [];
+ $propertyName = $tagName;
+ $propertyValue = [];
$propertyParameters = [];
- $propertyType = 'text';
+ $propertyType = 'text';
// A property which is not part of the standard.
if ($namespace !== self::XCAL_NAMESPACE
@@ -253,8 +253,8 @@ class XML extends Parser {
switch ($propertyNameExtended) {
case 'xcal:geo':
- $propertyType = 'float';
- $propertyValue['latitude'] = 0;
+ $propertyType = 'float';
+ $propertyValue['latitude'] = 0;
$propertyValue['longitude'] = 0;
foreach ($xmlProperty['value'] as $xmlRequestChild) {
@@ -296,7 +296,7 @@ class XML extends Parser {
if ('period' === $tagName) {
$propertyParameters['value'] = 'PERIOD';
- $propertyValue[] = implode('/', $specialChild['value']);
+ $propertyValue[] = implode('/', $specialChild['value']);
}
else {
@@ -306,7 +306,7 @@ class XML extends Parser {
break;
default:
- $propertyType = static::getTagName($xmlProperty['value'][0]['name']);
+ $propertyType = static::getTagName($xmlProperty['value'][0]['name']);
foreach ($xmlProperty['value'] as $value) {
$propertyValue[] = $value['value'];
@@ -343,7 +343,7 @@ class XML extends Parser {
foreach ($components as $component) {
- $componentName = static::getTagName($component['name']);
+ $componentName = static::getTagName($component['name']);
$currentComponent = $this->root->createComponent(
$componentName,
null,
@@ -404,7 +404,7 @@ class XML extends Parser {
$reader->elementMap['{' . self::XCAL_NAMESPACE . '}recur']
= 'Sabre\VObject\Parser\XML\Element\KeyValue';
$reader->xml($input);
- $input = $reader->parse();
+ $input = $reader->parse();
}
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php b/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php
index 66d366960..7b7e1ce8e 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php
@@ -2,8 +2,8 @@
namespace Sabre\VObject\Property\ICalendar;
-use Sabre\VObject\Property;
use Sabre\VObject\DateTimeParser;
+use Sabre\VObject\Property;
/**
* Duration property.
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Period.php b/vendor/sabre/vobject/lib/Property/ICalendar/Period.php
index a4561d929..d35b425aa 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/Period.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/Period.php
@@ -2,8 +2,8 @@
namespace Sabre\VObject\Property\ICalendar;
-use Sabre\VObject\Property;
use Sabre\VObject\DateTimeParser;
+use Sabre\VObject\Property;
use Sabre\Xml;
/**
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php b/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
index 8392a5cc1..434b77088 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
@@ -287,6 +287,54 @@ class Recur extends Property {
}
}
}
+ // if there is no valid entry left, remove the whole value
+ if (is_array($value) && empty($values[$key])) {
+ unset($values[$key]);
+ }
+ } elseif ($key == 'BYWEEKNO') {
+ $byWeekNo = (array)$value;
+ foreach ($byWeekNo as $i => $v) {
+ if (!is_numeric($v) || (int)$v < -53 || (int)$v == 0 || (int)$v > 53) {
+ $warnings[] = [
+ 'level' => $repair ? 1 : 3,
+ 'message' => 'BYWEEKNO in RRULE must have value(s) from -53 to -1, or 1 to 53!',
+ 'node' => $this
+ ];
+ if ($repair) {
+ if (is_array($value)) {
+ unset($values[$key][$i]);
+ } else {
+ unset($values[$key]);
+ }
+ }
+ }
+ }
+ // if there is no valid entry left, remove the whole value
+ if (is_array($value) && empty($values[$key])) {
+ unset($values[$key]);
+ }
+ } elseif ($key == 'BYYEARDAY') {
+ $byYearDay = (array)$value;
+ foreach ($byYearDay as $i => $v) {
+ if (!is_numeric($v) || (int)$v < -366 || (int)$v == 0 || (int)$v > 366) {
+ $warnings[] = [
+ 'level' => $repair ? 1 : 3,
+ 'message' => 'BYYEARDAY in RRULE must have value(s) from -366 to -1, or 1 to 366!',
+ 'node' => $this
+ ];
+ if ($repair) {
+ if (is_array($value)) {
+ unset($values[$key][$i]);
+ } else {
+ unset($values[$key]);
+ }
+ }
+ }
+ }
+ // if there is no valid entry left, remove the whole value
+ if (is_array($value) && empty($values[$key])) {
+ unset($values[$key]);
+ }
}
}
diff --git a/vendor/sabre/vobject/lib/Property/Text.php b/vendor/sabre/vobject/lib/Property/Text.php
index abc17563f..476dcde4d 100644
--- a/vendor/sabre/vobject/lib/Property/Text.php
+++ b/vendor/sabre/vobject/lib/Property/Text.php
@@ -2,10 +2,10 @@
namespace Sabre\VObject\Property;
-use Sabre\VObject\Property;
use Sabre\VObject\Component;
-use Sabre\VObject\Parser\MimeDir;
use Sabre\VObject\Document;
+use Sabre\VObject\Parser\MimeDir;
+use Sabre\VObject\Property;
use Sabre\Xml;
/**
diff --git a/vendor/sabre/vobject/lib/Property/Uri.php b/vendor/sabre/vobject/lib/Property/Uri.php
index 58e676e60..88fcfaab8 100644
--- a/vendor/sabre/vobject/lib/Property/Uri.php
+++ b/vendor/sabre/vobject/lib/Property/Uri.php
@@ -2,8 +2,8 @@
namespace Sabre\VObject\Property;
-use Sabre\VObject\Property;
use Sabre\VObject\Parameter;
+use Sabre\VObject\Property;
/**
* URI property.
diff --git a/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php b/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php
index 650e19cbf..3b4ae3bb5 100644
--- a/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php
+++ b/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php
@@ -2,9 +2,9 @@
namespace Sabre\VObject\Property\VCard;
-use DateTimeInterface;
-use DateTimeImmutable;
use DateTime;
+use DateTimeImmutable;
+use DateTimeInterface;
use Sabre\VObject\DateTimeParser;
use Sabre\VObject\InvalidDataException;
use Sabre\VObject\Property;
@@ -45,7 +45,7 @@ class DateAndOrTime extends Property {
/**
* Sets a multi-valued property.
*
- * You may also specify DateTime objects here.
+ * You may also specify DateTimeInterface objects here.
*
* @param array $parts
*
@@ -56,7 +56,7 @@ class DateAndOrTime extends Property {
if (count($parts) > 1) {
throw new \InvalidArgumentException('Only one value allowed');
}
- if (isset($parts[0]) && $parts[0] instanceof \DateTime) {
+ if (isset($parts[0]) && $parts[0] instanceof DateTimeInterface) {
$this->setDateTime($parts[0]);
} else {
parent::setParts($parts);
@@ -69,15 +69,15 @@ class DateAndOrTime extends Property {
*
* This may be either a single, or multiple strings in an array.
*
- * Instead of strings, you may also use DateTime here.
+ * Instead of strings, you may also use DateTimeInterface here.
*
- * @param string|array|\DateTime $value
+ * @param string|array|DateTimeInterface $value
*
* @return void
*/
function setValue($value) {
- if ($value instanceof \DateTime) {
+ if ($value instanceof DateTimeInterface) {
$this->setDateTime($value);
} else {
parent::setValue($value);
@@ -261,8 +261,8 @@ class DateAndOrTime extends Property {
protected function xmlSerializeValue(Xml\Writer $writer) {
$valueType = strtolower($this->getValueType());
- $parts = DateTimeParser::parseVCardDateAndOrTime($this->getValue());
- $value = '';
+ $parts = DateTimeParser::parseVCardDateAndOrTime($this->getValue());
+ $value = '';
// $d = defined
$d = function($part) use ($parts) {
@@ -280,7 +280,7 @@ class DateAndOrTime extends Property {
// value-date = element date {
// xsd:string { pattern = "\d{8}|\d{4}-\d\d|--\d\d(\d\d)?|---\d\d" }
// }
- if (($d('year') || $d('month') || $d('date'))
+ if (($d('year') || $d('month') || $d('date'))
&& (!$d('hour') && !$d('minute') && !$d('second') && !$d('timezone'))) {
if ($d('year') && $d('month') && $d('date')) {
@@ -298,8 +298,8 @@ class DateAndOrTime extends Property {
// xsd:string { pattern = "(\d\d(\d\d(\d\d)?)?|-\d\d(\d\d?)|--\d\d)"
// ~ "(Z|[+\-]\d\d(\d\d)?)?" }
// }
- } elseif ((!$d('year') && !$d('month') && !$d('date'))
- && ($d('hour') || $d('minute') || $d('second'))) {
+ } elseif ((!$d('year') && !$d('month') && !$d('date'))
+ && ($d('hour') || $d('minute') || $d('second'))) {
if ($d('hour')) {
$value .= $r('hour') . $r('minute') . $r('second');
diff --git a/vendor/sabre/vobject/lib/Recur/EventIterator.php b/vendor/sabre/vobject/lib/Recur/EventIterator.php
index f91c336bc..d313305a0 100644
--- a/vendor/sabre/vobject/lib/Recur/EventIterator.php
+++ b/vendor/sabre/vobject/lib/Recur/EventIterator.php
@@ -2,9 +2,9 @@
namespace Sabre\VObject\Recur;
-use DateTimeZone;
use DateTimeImmutable;
use DateTimeInterface;
+use DateTimeZone;
use InvalidArgumentException;
use Sabre\VObject\Component;
use Sabre\VObject\Component\VEvent;
@@ -43,6 +43,8 @@ use Sabre\VObject\Settings;
* * BYSETPOS
* * FREQ=YEARLY
* * BYMONTH
+ * * BYYEARDAY
+ * * BYWEEKNO
* * BYMONTHDAY (only if BYMONTH is also set)
* * BYDAY (only if BYMONTH is also set)
*
@@ -407,7 +409,7 @@ class EventIterator implements \Iterator {
*/
function fastForward(DateTimeInterface $dateTime) {
- while ($this->valid() && $this->getDtEnd() < $dateTime) {
+ while ($this->valid() && $this->getDtEnd() <= $dateTime) {
$this->next();
}
diff --git a/vendor/sabre/vobject/lib/Recur/RRuleIterator.php b/vendor/sabre/vobject/lib/Recur/RRuleIterator.php
index 4c89f3ce4..20f34ef42 100644
--- a/vendor/sabre/vobject/lib/Recur/RRuleIterator.php
+++ b/vendor/sabre/vobject/lib/Recur/RRuleIterator.php
@@ -2,8 +2,8 @@
namespace Sabre\VObject\Recur;
-use DateTimeInterface;
use DateTimeImmutable;
+use DateTimeInterface;
use Iterator;
use Sabre\VObject\DateTimeParser;
use Sabre\VObject\InvalidDataException;
@@ -374,8 +374,8 @@ class RRuleIterator implements Iterator {
$currentHour = $this->currentDate->format('G');
} while (
- ($this->byDay && !in_array($currentDay, $recurrenceDays)) ||
- ($this->byHour && !in_array($currentHour, $recurrenceHours)) ||
+ ($this->byDay && !in_array($currentDay, $recurrenceDays)) ||
+ ($this->byHour && !in_array($currentHour, $recurrenceHours)) ||
($this->byMonth && !in_array($currentMonth, $recurrenceMonths))
);
@@ -537,6 +537,83 @@ class RRuleIterator implements Iterator {
}
+ if ($this->byWeekNo !== null) { // byWeekNo is an array with values from -53 to -1, or 1 to 53
+ $dayOffsets = [];
+ if ($this->byDay) {
+ foreach ($this->byDay as $byDay) {
+ $dayOffsets[] = $this->dayMap[$byDay];
+ }
+ } else { // default is Monday
+ $dayOffsets[] = 1;
+ }
+
+ $currentYear = $this->currentDate->format('Y');
+
+ while (true) {
+ $checkDates = [];
+
+ // loop through all WeekNo and Days to check all the combinations
+ foreach ($this->byWeekNo as $byWeekNo) {
+ foreach ($dayOffsets as $dayOffset) {
+ $date = clone $this->currentDate;
+ $date->setISODate($currentYear, $byWeekNo, $dayOffset);
+
+ if ($date > $this->currentDate) {
+ $checkDates[] = $date;
+ }
+ }
+ }
+
+ if (count($checkDates) > 0) {
+ $this->currentDate = min($checkDates);
+ return;
+ }
+
+ // if there is no date found, check the next year
+ $currentYear += $this->interval;
+ }
+ }
+
+ if ($this->byYearDay !== null) { // byYearDay is an array with values from -366 to -1, or 1 to 366
+ $dayOffsets = [];
+ if ($this->byDay) {
+ foreach ($this->byDay as $byDay) {
+ $dayOffsets[] = $this->dayMap[$byDay];
+ }
+ } else { // default is Monday-Sunday
+ $dayOffsets = [1,2,3,4,5,6,7];
+ }
+
+ $currentYear = $this->currentDate->format('Y');
+
+ while (true) {
+ $checkDates = [];
+
+ // loop through all YearDay and Days to check all the combinations
+ foreach ($this->byYearDay as $byYearDay) {
+ $date = clone $this->currentDate;
+ $date->setDate($currentYear, 1, 1);
+ if ($byYearDay > 0) {
+ $date->add(new \DateInterval('P' . $byYearDay . 'D'));
+ } else {
+ $date->sub(new \DateInterval('P' . abs($byYearDay) . 'D'));
+ }
+
+ if ($date > $this->currentDate && in_array($date->format('N'), $dayOffsets)) {
+ $checkDates[] = $date;
+ }
+ }
+
+ if (count($checkDates) > 0) {
+ $this->currentDate = min($checkDates);
+ return;
+ }
+
+ // if there is no date found, check the next year
+ $currentYear += $this->interval;
+ }
+ }
+
// The easiest form
$this->currentDate = $this->currentDate->modify('+' . $this->interval . ' years');
return;
@@ -710,10 +787,20 @@ class RRuleIterator implements Iterator {
case 'BYYEARDAY' :
$this->byYearDay = (array)$value;
+ foreach ($this->byYearDay as $byYearDay) {
+ if (!is_numeric($byYearDay) || (int)$byYearDay < -366 || (int)$byYearDay == 0 || (int)$byYearDay > 366) {
+ throw new InvalidDataException('BYYEARDAY in RRULE must have value(s) from 1 to 366, or -366 to -1!');
+ }
+ }
break;
case 'BYWEEKNO' :
$this->byWeekNo = (array)$value;
+ foreach ($this->byWeekNo as $byWeekNo) {
+ if (!is_numeric($byWeekNo) || (int)$byWeekNo < -53 || (int)$byWeekNo == 0 || (int)$byWeekNo > 53) {
+ throw new InvalidDataException('BYWEEKNO in RRULE must have value(s) from 1 to 53, or -53 to -1!');
+ }
+ }
break;
case 'BYMONTH' :
diff --git a/vendor/sabre/vobject/lib/TimeZoneUtil.php b/vendor/sabre/vobject/lib/TimeZoneUtil.php
index 2a95ae898..925183e8d 100644
--- a/vendor/sabre/vobject/lib/TimeZoneUtil.php
+++ b/vendor/sabre/vobject/lib/TimeZoneUtil.php
@@ -165,6 +165,16 @@ class TimeZoneUtil {
return new \DateTimeZone(self::$map[$tzid]);
}
+ // Some Microsoft products prefix the offset first, so let's strip that off
+ // and see if it is our tzid map. We don't want to check for this first just
+ // in case there are overrides in our tzid map.
+ if (preg_match('/^\((UTC|GMT)(\+|\-)[\d]{2}\:[\d]{2}\) (.*)/', $tzid, $matches)) {
+ $tzidAlternate = $matches[3];
+ if (isset(self::$map[$tzidAlternate])) {
+ return new \DateTimeZone(self::$map[$tzidAlternate]);
+ }
+ }
+
// Maybe the author was hyper-lazy and just included an offset. We
// support it, but we aren't happy about it.
if (preg_match('/^GMT(\+|-)([0-9]{4})$/', $tzid, $matches)) {
diff --git a/vendor/sabre/vobject/lib/Version.php b/vendor/sabre/vobject/lib/Version.php
index ca9f21960..346e2044d 100644
--- a/vendor/sabre/vobject/lib/Version.php
+++ b/vendor/sabre/vobject/lib/Version.php
@@ -14,6 +14,6 @@ class Version {
/**
* Full version number.
*/
- const VERSION = '4.1.1';
+ const VERSION = '4.1.2';
}
diff --git a/vendor/sabre/vobject/lib/timezonedata/lotuszones.php b/vendor/sabre/vobject/lib/timezonedata/lotuszones.php
index 7d0785f04..79d555a92 100644
--- a/vendor/sabre/vobject/lib/timezonedata/lotuszones.php
+++ b/vendor/sabre/vobject/lib/timezonedata/lotuszones.php
@@ -17,85 +17,85 @@ return [
'Mexico Standard Time 2' => 'America/Chihuahua',
'Mountain' => 'America/Denver',
// 'Mountain Standard Time' => 'America/Chihuahua', // conflict with windows timezones.
- 'US Mountain' => 'America/Phoenix',
- 'Canada Central' => 'America/Edmonton',
- 'Central America' => 'America/Guatemala',
- 'Central' => 'America/Chicago',
+ 'US Mountain' => 'America/Phoenix',
+ 'Canada Central' => 'America/Edmonton',
+ 'Central America' => 'America/Guatemala',
+ 'Central' => 'America/Chicago',
// 'Central Standard Time' => 'America/Mexico_City', // conflict with windows timezones.
- 'Mexico' => 'America/Mexico_City',
- 'Eastern' => 'America/New_York',
- 'SA Pacific' => 'America/Bogota',
- 'US Eastern' => 'America/Indiana/Indianapolis',
- 'Venezuela' => 'America/Caracas',
- 'Atlantic' => 'America/Halifax',
- 'Central Brazilian' => 'America/Manaus',
- 'Pacific SA' => 'America/Santiago',
- 'SA Western' => 'America/La_Paz',
- 'Newfoundland' => 'America/St_Johns',
- 'Argentina' => 'America/Argentina/Buenos_Aires',
- 'E. South America' => 'America/Belem',
- 'Greenland' => 'America/Godthab',
- 'Montevideo' => 'America/Montevideo',
- 'SA Eastern' => 'America/Belem',
+ 'Mexico' => 'America/Mexico_City',
+ 'Eastern' => 'America/New_York',
+ 'SA Pacific' => 'America/Bogota',
+ 'US Eastern' => 'America/Indiana/Indianapolis',
+ 'Venezuela' => 'America/Caracas',
+ 'Atlantic' => 'America/Halifax',
+ 'Central Brazilian' => 'America/Manaus',
+ 'Pacific SA' => 'America/Santiago',
+ 'SA Western' => 'America/La_Paz',
+ 'Newfoundland' => 'America/St_Johns',
+ 'Argentina' => 'America/Argentina/Buenos_Aires',
+ 'E. South America' => 'America/Belem',
+ 'Greenland' => 'America/Godthab',
+ 'Montevideo' => 'America/Montevideo',
+ 'SA Eastern' => 'America/Belem',
// 'Mid-Atlantic' => 'Etc/GMT-2', // conflict with windows timezones.
- 'Azores' => 'Atlantic/Azores',
- 'Cape Verde' => 'Atlantic/Cape_Verde',
- 'Greenwich' => 'Atlantic/Reykjavik', // No I'm serious.. Greenwich is not GMT.
- 'Morocco' => 'Africa/Casablanca',
- 'Central Europe' => 'Europe/Prague',
- 'Central European' => 'Europe/Sarajevo',
- 'Romance' => 'Europe/Paris',
- 'W. Central Africa' => 'Africa/Lagos', // Best guess
- 'W. Europe' => 'Europe/Amsterdam',
- 'E. Europe' => 'Europe/Minsk',
- 'Egypt' => 'Africa/Cairo',
- 'FLE' => 'Europe/Helsinki',
- 'GTB' => 'Europe/Athens',
- 'Israel' => 'Asia/Jerusalem',
- 'Jordan' => 'Asia/Amman',
- 'Middle East' => 'Asia/Beirut',
- 'Namibia' => 'Africa/Windhoek',
- 'South Africa' => 'Africa/Harare',
- 'Arab' => 'Asia/Kuwait',
- 'Arabic' => 'Asia/Baghdad',
- 'E. Africa' => 'Africa/Nairobi',
- 'Georgian' => 'Asia/Tbilisi',
- 'Russian' => 'Europe/Moscow',
- 'Iran' => 'Asia/Tehran',
- 'Arabian' => 'Asia/Muscat',
- 'Armenian' => 'Asia/Yerevan',
- 'Azerbijan' => 'Asia/Baku',
- 'Caucasus' => 'Asia/Yerevan',
- 'Mauritius' => 'Indian/Mauritius',
- 'Afghanistan' => 'Asia/Kabul',
- 'Ekaterinburg' => 'Asia/Yekaterinburg',
- 'Pakistan' => 'Asia/Karachi',
- 'West Asia' => 'Asia/Tashkent',
- 'India' => 'Asia/Calcutta',
- 'Sri Lanka' => 'Asia/Colombo',
- 'Nepal' => 'Asia/Kathmandu',
- 'Central Asia' => 'Asia/Dhaka',
- 'N. Central Asia' => 'Asia/Almaty',
- 'Myanmar' => 'Asia/Rangoon',
- 'North Asia' => 'Asia/Krasnoyarsk',
- 'SE Asia' => 'Asia/Bangkok',
- 'China' => 'Asia/Shanghai',
- 'North Asia East' => 'Asia/Irkutsk',
- 'Singapore' => 'Asia/Singapore',
- 'Taipei' => 'Asia/Taipei',
- 'W. Australia' => 'Australia/Perth',
- 'Korea' => 'Asia/Seoul',
- 'Tokyo' => 'Asia/Tokyo',
- 'Yakutsk' => 'Asia/Yakutsk',
- 'AUS Central' => 'Australia/Darwin',
- 'Cen. Australia' => 'Australia/Adelaide',
- 'AUS Eastern' => 'Australia/Sydney',
- 'E. Australia' => 'Australia/Brisbane',
- 'Tasmania' => 'Australia/Hobart',
- 'Vladivostok' => 'Asia/Vladivostok',
- 'West Pacific' => 'Pacific/Guam',
- 'Central Pacific' => 'Asia/Magadan',
- 'Fiji' => 'Pacific/Fiji',
- 'New Zealand' => 'Pacific/Auckland',
- 'Tonga' => 'Pacific/Tongatapu',
+ 'Azores' => 'Atlantic/Azores',
+ 'Cape Verde' => 'Atlantic/Cape_Verde',
+ 'Greenwich' => 'Atlantic/Reykjavik', // No I'm serious.. Greenwich is not GMT.
+ 'Morocco' => 'Africa/Casablanca',
+ 'Central Europe' => 'Europe/Prague',
+ 'Central European' => 'Europe/Sarajevo',
+ 'Romance' => 'Europe/Paris',
+ 'W. Central Africa' => 'Africa/Lagos', // Best guess
+ 'W. Europe' => 'Europe/Amsterdam',
+ 'E. Europe' => 'Europe/Minsk',
+ 'Egypt' => 'Africa/Cairo',
+ 'FLE' => 'Europe/Helsinki',
+ 'GTB' => 'Europe/Athens',
+ 'Israel' => 'Asia/Jerusalem',
+ 'Jordan' => 'Asia/Amman',
+ 'Middle East' => 'Asia/Beirut',
+ 'Namibia' => 'Africa/Windhoek',
+ 'South Africa' => 'Africa/Harare',
+ 'Arab' => 'Asia/Kuwait',
+ 'Arabic' => 'Asia/Baghdad',
+ 'E. Africa' => 'Africa/Nairobi',
+ 'Georgian' => 'Asia/Tbilisi',
+ 'Russian' => 'Europe/Moscow',
+ 'Iran' => 'Asia/Tehran',
+ 'Arabian' => 'Asia/Muscat',
+ 'Armenian' => 'Asia/Yerevan',
+ 'Azerbijan' => 'Asia/Baku',
+ 'Caucasus' => 'Asia/Yerevan',
+ 'Mauritius' => 'Indian/Mauritius',
+ 'Afghanistan' => 'Asia/Kabul',
+ 'Ekaterinburg' => 'Asia/Yekaterinburg',
+ 'Pakistan' => 'Asia/Karachi',
+ 'West Asia' => 'Asia/Tashkent',
+ 'India' => 'Asia/Calcutta',
+ 'Sri Lanka' => 'Asia/Colombo',
+ 'Nepal' => 'Asia/Kathmandu',
+ 'Central Asia' => 'Asia/Dhaka',
+ 'N. Central Asia' => 'Asia/Almaty',
+ 'Myanmar' => 'Asia/Rangoon',
+ 'North Asia' => 'Asia/Krasnoyarsk',
+ 'SE Asia' => 'Asia/Bangkok',
+ 'China' => 'Asia/Shanghai',
+ 'North Asia East' => 'Asia/Irkutsk',
+ 'Singapore' => 'Asia/Singapore',
+ 'Taipei' => 'Asia/Taipei',
+ 'W. Australia' => 'Australia/Perth',
+ 'Korea' => 'Asia/Seoul',
+ 'Tokyo' => 'Asia/Tokyo',
+ 'Yakutsk' => 'Asia/Yakutsk',
+ 'AUS Central' => 'Australia/Darwin',
+ 'Cen. Australia' => 'Australia/Adelaide',
+ 'AUS Eastern' => 'Australia/Sydney',
+ 'E. Australia' => 'Australia/Brisbane',
+ 'Tasmania' => 'Australia/Hobart',
+ 'Vladivostok' => 'Asia/Vladivostok',
+ 'West Pacific' => 'Pacific/Guam',
+ 'Central Pacific' => 'Asia/Magadan',
+ 'Fiji' => 'Pacific/Fiji',
+ 'New Zealand' => 'Pacific/Auckland',
+ 'Tonga' => 'Pacific/Tongatapu',
];
diff --git a/vendor/sabre/vobject/lib/timezonedata/windowszones.php b/vendor/sabre/vobject/lib/timezonedata/windowszones.php
index ac69847cc..29f3a6cb8 100644
--- a/vendor/sabre/vobject/lib/timezonedata/windowszones.php
+++ b/vendor/sabre/vobject/lib/timezonedata/windowszones.php
@@ -3,28 +3,33 @@
/**
* Automatically generated timezone file
*
- * Last update: 2015-07-27T16:56:36-04:00
+ * Last update: 2016-08-24T17:35:38-04:00
* Source: http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml
*
- * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
+ * @copyright Copyright (C) 2011-2015 fruux GmbH (https://fruux.com/).
* @license http://sabre.io/license/ Modified BSD License
*/
-return [
+return [
'AUS Central Standard Time' => 'Australia/Darwin',
'AUS Eastern Standard Time' => 'Australia/Sydney',
'Afghanistan Standard Time' => 'Asia/Kabul',
'Alaskan Standard Time' => 'America/Anchorage',
+ 'Aleutian Standard Time' => 'America/Adak',
+ 'Altai Standard Time' => 'Asia/Barnaul',
'Arab Standard Time' => 'Asia/Riyadh',
'Arabian Standard Time' => 'Asia/Dubai',
'Arabic Standard Time' => 'Asia/Baghdad',
'Argentina Standard Time' => 'America/Buenos_Aires',
+ 'Astrakhan Standard Time' => 'Europe/Astrakhan',
'Atlantic Standard Time' => 'America/Halifax',
+ 'Aus Central W. Standard Time' => 'Australia/Eucla',
'Azerbaijan Standard Time' => 'Asia/Baku',
'Azores Standard Time' => 'Atlantic/Azores',
'Bahia Standard Time' => 'America/Bahia',
'Bangladesh Standard Time' => 'Asia/Dhaka',
'Belarus Standard Time' => 'Europe/Minsk',
+ 'Bougainville Standard Time' => 'Pacific/Bougainville',
'Canada Central Standard Time' => 'America/Regina',
'Cape Verde Standard Time' => 'Atlantic/Cape_Verde',
'Caucasus Standard Time' => 'Asia/Yerevan',
@@ -37,11 +42,15 @@ return [
'Central Pacific Standard Time' => 'Pacific/Guadalcanal',
'Central Standard Time' => 'America/Chicago',
'Central Standard Time (Mexico)' => 'America/Mexico_City',
+ 'Chatham Islands Standard Time' => 'Pacific/Chatham',
'China Standard Time' => 'Asia/Shanghai',
+ 'Cuba Standard Time' => 'America/Havana',
'Dateline Standard Time' => 'Etc/GMT+12',
'E. Africa Standard Time' => 'Africa/Nairobi',
'E. Australia Standard Time' => 'Australia/Brisbane',
+ 'E. Europe Standard Time' => 'Europe/Chisinau',
'E. South America Standard Time' => 'America/Sao_Paulo',
+ 'Easter Island Standard Time' => 'Pacific/Easter',
'Eastern Standard Time' => 'America/New_York',
'Eastern Standard Time (Mexico)' => 'America/Cancun',
'Egypt Standard Time' => 'Africa/Cairo',
@@ -53,6 +62,7 @@ return [
'Georgian Standard Time' => 'Asia/Tbilisi',
'Greenland Standard Time' => 'America/Godthab',
'Greenwich Standard Time' => 'Atlantic/Reykjavik',
+ 'Haiti Standard Time' => 'America/Port-au-Prince',
'Hawaiian Standard Time' => 'Pacific/Honolulu',
'India Standard Time' => 'Asia/Calcutta',
'Iran Standard Time' => 'Asia/Tehran',
@@ -62,7 +72,9 @@ return [
'Korea Standard Time' => 'Asia/Seoul',
'Libya Standard Time' => 'Africa/Tripoli',
'Line Islands Standard Time' => 'Pacific/Kiritimati',
+ 'Lord Howe Standard Time' => 'Australia/Lord_Howe',
'Magadan Standard Time' => 'Asia/Magadan',
+ 'Marquesas Standard Time' => 'Pacific/Marquesas',
'Mauritius Standard Time' => 'Indian/Mauritius',
'Middle East Standard Time' => 'Asia/Beirut',
'Montevideo Standard Time' => 'America/Montevideo',
@@ -75,11 +87,13 @@ return [
'Nepal Standard Time' => 'Asia/Katmandu',
'New Zealand Standard Time' => 'Pacific/Auckland',
'Newfoundland Standard Time' => 'America/St_Johns',
+ 'Norfolk Standard Time' => 'Pacific/Norfolk',
'North Asia East Standard Time' => 'Asia/Irkutsk',
'North Asia Standard Time' => 'Asia/Krasnoyarsk',
+ 'North Korea Standard Time' => 'Asia/Pyongyang',
'Pacific SA Standard Time' => 'America/Santiago',
'Pacific Standard Time' => 'America/Los_Angeles',
- 'Pacific Standard Time (Mexico)' => 'America/Santa_Isabel',
+ 'Pacific Standard Time (Mexico)' => 'America/Tijuana',
'Pakistan Standard Time' => 'Asia/Karachi',
'Paraguay Standard Time' => 'America/Asuncion',
'Romance Standard Time' => 'Europe/Paris',
@@ -91,6 +105,8 @@ return [
'SA Pacific Standard Time' => 'America/Bogota',
'SA Western Standard Time' => 'America/La_Paz',
'SE Asia Standard Time' => 'Asia/Bangkok',
+ 'Saint Pierre Standard Time' => 'America/Miquelon',
+ 'Sakhalin Standard Time' => 'Asia/Sakhalin',
'Samoa Standard Time' => 'Pacific/Apia',
'Singapore Standard Time' => 'Asia/Singapore',
'South Africa Standard Time' => 'Africa/Johannesburg',
@@ -98,14 +114,20 @@ return [
'Syria Standard Time' => 'Asia/Damascus',
'Taipei Standard Time' => 'Asia/Taipei',
'Tasmania Standard Time' => 'Australia/Hobart',
+ 'Tocantins Standard Time' => 'America/Araguaina',
'Tokyo Standard Time' => 'Asia/Tokyo',
+ 'Tomsk Standard Time' => 'Asia/Tomsk',
'Tonga Standard Time' => 'Pacific/Tongatapu',
+ 'Transbaikal Standard Time' => 'Asia/Chita',
'Turkey Standard Time' => 'Europe/Istanbul',
+ 'Turks And Caicos Standard Time' => 'America/Grand_Turk',
'US Eastern Standard Time' => 'America/Indianapolis',
'US Mountain Standard Time' => 'America/Phoenix',
'UTC' => 'Etc/GMT',
'UTC+12' => 'Etc/GMT-12',
'UTC-02' => 'Etc/GMT+2',
+ 'UTC-08' => 'Etc/GMT+8',
+ 'UTC-09' => 'Etc/GMT+9',
'UTC-11' => 'Etc/GMT+11',
'Ulaanbaatar Standard Time' => 'Asia/Ulaanbaatar',
'Venezuela Standard Time' => 'America/Caracas',
@@ -113,7 +135,9 @@ return [
'W. Australia Standard Time' => 'Australia/Perth',
'W. Central Africa Standard Time' => 'Africa/Lagos',
'W. Europe Standard Time' => 'Europe/Berlin',
+ 'W. Mongolia Standard Time' => 'Asia/Hovd',
'West Asia Standard Time' => 'Asia/Tashkent',
+ 'West Bank Standard Time' => 'Asia/Hebron',
'West Pacific Standard Time' => 'Pacific/Port_Moresby',
'Yakutsk Standard Time' => 'Asia/Yakutsk',
];
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index c632dbc74..1c185a5d5 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -1104,7 +1104,7 @@ a.rconnect:hover, a.rateme:hover, div.rateme:hover {
.contact-block-content {
margin-top: 10px;
}
-.contact-block-img.archived, .app-deleted {
+.contact-block-img.archived, .app-deleted, .dim {
opacity: 0.3;
filter:alpha(opacity=30);
}
diff --git a/view/theme/redbasic/php/theme.php b/view/theme/redbasic/php/theme.php
index 95d5a2001..c76e77cf1 100644
--- a/view/theme/redbasic/php/theme.php
+++ b/view/theme/redbasic/php/theme.php
@@ -5,7 +5,7 @@
* * Description: Hubzilla standard theme
* * Version: 2.0
* * MinVersion: 2.2RC
- * * MaxVersion: 3.0
+ * * MaxVersion: 6.0
* * Author: Fabrixxm
* * Maintainer: Mike Macgirvin
* * Maintainer: Mario Vavti
diff --git a/view/tpl/admin_site.tpl b/view/tpl/admin_site.tpl
index 0bb3ceb15..1cdb4a56b 100755
--- a/view/tpl/admin_site.tpl
+++ b/view/tpl/admin_site.tpl
@@ -71,9 +71,6 @@
{{include file="field_select.tpl" field=$access_policy}}
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>
- <h3>{{$upload}}</h3>
- {{include file="field_input.tpl" field=$maximagesize}}
-
<h3>{{$corporate}}</h3>
{{include file="field_checkbox.tpl" field=$verify_email}}
{{include file="field_checkbox.tpl" field=$feed_contacts}}
diff --git a/view/tpl/install_settings.tpl b/view/tpl/install_settings.tpl
index f7a0108a8..62dcbb8b3 100755
--- a/view/tpl/install_settings.tpl
+++ b/view/tpl/install_settings.tpl
@@ -19,7 +19,6 @@
{{include file="field_input.tpl" field=$adminmail}}
{{include file="field_input.tpl" field=$siteurl}}
-{{include file="field_select.tpl" field=$server_role}}
{{include file="field_select_grouped.tpl" field=$timezone}}
diff --git a/view/tpl/wiki.tpl b/view/tpl/wiki.tpl
index ea31c23a3..dbf8b9285 100644
--- a/view/tpl/wiki.tpl
+++ b/view/tpl/wiki.tpl
@@ -107,7 +107,8 @@
<script>
window.wiki_resource_id = '{{$resource_id}}';
window.wiki_page_name = '{{$page}}';
- window.wiki_page_content = `{{$content}}`;
+// window.wiki_page_content = "{{$content|escape:'javascript'}}";
+ window.wiki_page_content = {{$content}};
window.wiki_page_commit = '{{$commit}}';
$("#generic-modal-ok-{{$wikiModalID}}").removeClass('btn-primary');