Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge

This commit is contained in:
zotlabs 2017-05-05 16:58:46 -07:00
commit f840082aae
29 changed files with 766 additions and 2599 deletions

View File

@ -318,6 +318,7 @@ class Import extends \Zotlabs\Web\Controller {
unset($abook['abconfig']);
unset($abook['abook_their_perms']);
unset($abook['abook_my_perms']);
unset($abook['abook_not_here']);
$abook['abook_account'] = $account_id;
$abook['abook_channel'] = $channel['channel_id'];
@ -347,7 +348,7 @@ class Import extends \Zotlabs\Web\Controller {
continue;
}
create_table_from_array('abook',$abook);
abook_store_lowlevel($abook);
$friends ++;
if(intval($abook['abook_feed']))

View File

@ -53,7 +53,7 @@ define ( 'PLATFORM_NAME', 'red' );
define ( 'STD_VERSION', '5.3' );
define ( 'ZOT_REVISION', '1.2' );
define ( 'DB_UPDATE_VERSION', 1190 );
define ( 'DB_UPDATE_VERSION', 1191 );
define ( 'PROJECT_BASE', __DIR__ );

View File

@ -33,7 +33,7 @@
"pixel418/markdownify": "^2.2",
"bshaffer/oauth2-server-php": "^1.9",
"ezyang/htmlpurifier": "^4.9",
"simplepie/simplepie": ">=1.4.4 || dev-master"
"simplepie/simplepie": "~1.5"
},
"require-dev" : {
"php" : ">=7.0",

126
composer.lock generated
View File

@ -4,7 +4,7 @@
"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": "9842014a99ac4e654bc7bfd6061d6f60",
"content-hash": "21511c39f481ecdc20210f885d840787",
"packages": [
{
"name": "bshaffer/oauth2-server-php",
@ -62,6 +62,53 @@
],
"time": "2017-01-06T23:20:00+00:00"
},
{
"name": "ezyang/htmlpurifier",
"version": "v4.9.2",
"source": {
"type": "git",
"url": "https://github.com/ezyang/htmlpurifier.git",
"reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4",
"reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4",
"shasum": ""
},
"require": {
"php": ">=5.2"
},
"require-dev": {
"simpletest/simpletest": "^1.1"
},
"type": "library",
"autoload": {
"psr-0": {
"HTMLPurifier": "library/"
},
"files": [
"library/HTMLPurifier.composer.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL"
],
"authors": [
{
"name": "Edward Z. Yang",
"email": "admin@htmlpurifier.org",
"homepage": "http://ezyang.com"
}
],
"description": "Standards compliant HTML filter written in PHP",
"homepage": "http://htmlpurifier.org/",
"keywords": [
"html"
],
"time": "2017-03-13T06:30:53+00:00"
},
{
"name": "michelf/php-markdown",
"version": "1.7.0",
@ -218,16 +265,16 @@
},
{
"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": {
@ -251,8 +298,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": "*",
@ -297,7 +344,7 @@
"framework",
"iCalendar"
],
"time": "2016-06-28T02:44:05+00:00"
"time": "2017-02-15T03:06:08+00:00"
},
{
"name": "sabre/event",
@ -621,6 +668,69 @@
"xml"
],
"time": "2016-10-09T22:57:52+00:00"
},
{
"name": "simplepie/simplepie",
"version": "1.5",
"source": {
"type": "git",
"url": "https://github.com/simplepie/simplepie.git",
"reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/simplepie/simplepie/zipball/5de5551953f95feef12cf355a7a26a70f94aa3ab",
"reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "~4 || ~5"
},
"suggest": {
"mf2/mf2": "Microformat module that allows for parsing HTML for microformats"
},
"type": "library",
"autoload": {
"psr-0": {
"SimplePie": "library"
}
},
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Ryan Parman",
"homepage": "http://ryanparman.com/",
"role": "Creator, alumnus developer"
},
{
"name": "Geoffrey Sneddon",
"homepage": "http://gsnedders.com/",
"role": "Alumnus developer"
},
{
"name": "Ryan McCue",
"email": "me@ryanmccue.info",
"homepage": "http://ryanmccue.info/",
"role": "Developer"
}
],
"description": "A simple Atom/RSS parsing library for PHP",
"homepage": "http://simplepie.org/",
"keywords": [
"atom",
"feeds",
"rss"
],
"support": {
"source": "https://github.com/simplepie/simplepie/tree/1.5",
"issues": "https://github.com/simplepie/simplepie/issues"
},
"time": "2017-04-17T07:29:31+00:00"
}
],
"packages-dev": [

View File

@ -182,4 +182,5 @@ even if we have had our occasional disagreements.
[li]Simó Albert i Beltran[/li]
[li]Manuel Reva[/li]
[li]Manuel Jiménez Friaza[/li]
[li]Gustav Wall aka "neue medienordnung plus"[/li]
[/list]

View File

@ -57,8 +57,9 @@ function identity_check_service_class($account_id) {
* Plugins can set additional policies such as full name requirements, character
* sets, multi-byte length, etc.
*
* @hooks validate_channelname
* * \e array \b name
* @param string $name
*
* @returns nil return if name is valid, or string describing the error state.
*/
function validate_channelname($name) {
@ -69,7 +70,7 @@ function validate_channelname($name) {
if (strlen($name) > 255)
return t('Name too long');
$arr = array('name' => $name);
$arr = ['name' => $name];
call_hooks('validate_channelname', $arr);
if (x($arr, 'message'))
@ -464,7 +465,6 @@ function create_identity($arr) {
* if true, set this default unconditionally
* if $force is false only do this if there is no existing default
*/
function set_default_login_identity($account_id, $channel_id, $force = true) {
$r = q("select account_default_channel from account where account_id = %d limit 1",
intval($account_id)
@ -479,12 +479,29 @@ function set_default_login_identity($account_id, $channel_id, $force = true) {
}
}
/**
* @brief Return an array with default list of sections to export.
*
* @hooks get_default_export_sections
* * \e array \b sections
* @return array with default section names to export
*/
function get_default_export_sections() {
$sections = [ 'channel', 'connections', 'config', 'apps', 'chatrooms', 'events', 'webpages', 'mail', 'wikis' ];
$sections = [
'channel',
'connections',
'config',
'apps',
'chatrooms',
'events',
'webpages',
'mail',
'wikis'
];
$cb = [ 'sections' => $sections ];
call_hooks('get_default_export_sections', $cb);
return $cb['sections'];
}
@ -494,15 +511,17 @@ function get_default_export_sections() {
* which would be necessary to create a nomadic identity clone. This includes
* most channel resources and connection information with the exception of content.
*
* @hooks identity_basic_export
* * \e int \b channel_id
* * \e array \b sections
* * \e array \b data
* @param int $channel_id
* Channel_id to export
* @param boolean $items
* Include channel posts (wall items), default false
*
* @param array $sections (optional)
* Which sections to include in the export, default see get_default_export_sections()
* @returns array
* See function for details
*/
function identity_basic_export($channel_id, $sections = null) {
/*
@ -550,7 +569,6 @@ function identity_basic_export($channel_id, $sections = null) {
if($r)
$ret['profile'] = $r;
$r = q("select mimetype, content, os_storage from photo
where imgscale = 4 and photo_usage = %d and uid = %d limit 1",
intval(PHOTO_PROFILE),
@ -606,7 +624,6 @@ function identity_basic_export($channel_id, $sections = null) {
);
if($r)
$ret['group_member'] = $r;
}
if(in_array('config',$sections)) {
@ -642,7 +659,6 @@ function identity_basic_export($channel_id, $sections = null) {
if($r)
$ret['likes'] = $r;
}
if(in_array('apps',$sections)) {
@ -668,7 +684,6 @@ function identity_basic_export($channel_id, $sections = null) {
$ret['chatroom'] = $r;
}
if(in_array('events',$sections)) {
$r = q("select * from event where uid = %d",
intval($channel_id)
@ -708,7 +723,6 @@ function identity_basic_export($channel_id, $sections = null) {
$r = fetch_post_tags($r,true);
foreach($r as $rr)
$ret['webpages'][] = encode_item($rr,true);
}
}
@ -1376,15 +1390,15 @@ function get_my_address() {
}
/**
* @brief
* @brief Add visitor's zid to our xchan and attempt authentication.
*
* If somebody arrives at our site using a zid, add their xchan to our DB if we don't have it already.
* If somebody arrives at our site using a zid, add their xchan to our DB if we
* don't have it already.
* And if they aren't already authenticated here, attempt reverse magic auth.
*
*
* @hooks 'zid_init'
* string 'zid' - their zid
* string 'url' - the destination url
* @hooks zid_init
* * \e string \b zid - their zid
* * \e string \b url - the destination url
*/
function zid_init() {
$tmp_str = get_my_address();
@ -1413,12 +1427,9 @@ function zid_init() {
}
/**
* @brief
*
* If somebody arrives at our site using a zat, authenticate them
* @brief If somebody arrives at our site using a zat, authenticate them.
*
*/
function zat_init() {
if(local_channel() || remote_channel())
return;
@ -1430,7 +1441,6 @@ function zat_init() {
$xchan = atoken_xchan($r[0]);
atoken_login($xchan);
}
}
@ -1463,7 +1473,7 @@ function get_theme_uid() {
*
* @param int $size
* one of (300, 80, 48)
* @returns string
* @returns string with path to profile photo
*/
function get_default_profile_photo($size = 300) {
$scheme = get_config('system','default_profile_photo');
@ -1956,7 +1966,6 @@ function channel_manual_conv_update($channel_id) {
$x = get_config('system','manual_conversation_update', 1);
return intval($x);
}
@ -2124,17 +2133,26 @@ function account_remove($account_id,$local = true,$unset_session=true) {
}
/**
* @brief Removes a channel.
*
* @hooks channel_remove
* * \e array \b entry from channel tabel for $channel_id
* @param int $channel_id
* @param boolean $local default true
* @param boolean $unset_session default false
*/
function channel_remove($channel_id, $local = true, $unset_session = false) {
if(! $channel_id)
return;
logger('Removing channel: ' . $channel_id);
logger('channel_remove: local only: ' . intval($local));
logger('local only: ' . intval($local));
$r = q("select * from channel where channel_id = %d limit 1", intval($channel_id));
if(! $r) {
logger('channel_remove: channel not found: ' . $channel_id);
logger('channel not found: ' . $channel_id);
return;
}
@ -2159,7 +2177,6 @@ function channel_remove($channel_id, $local = true, $unset_session=false) {
dbesc($channel['channel_hash'])
);
$r = q("update xchan set xchan_deleted = 1 where xchan_hash = '%s'",
dbesc($channel['channel_hash'])
);
@ -2192,8 +2209,7 @@ function channel_remove($channel_id, $local = true, $unset_session=false) {
q("DELETE FROM profile WHERE uid = %d", intval($channel_id));
q("DELETE FROM pconfig WHERE uid = %d", intval($channel_id));
// @FIXME At this stage we need to remove the file resources located under /store/$nickname
/// @FIXME At this stage we need to remove the file resources located under /store/$nickname
q("delete from abook where abook_xchan = '%s' and abook_self = 1 ",
dbesc($channel['channel_hash'])
@ -2267,23 +2283,25 @@ function channel_remove($channel_id, $local = true, $unset_session=false) {
App::$session->nuke();
goaway(z_root());
}
}
/*
* This checks if a channel is allowed to publish executable code.
/**
* @brief 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
* is in fact the resource owner whose channel_id is being checked.
*
* @param int $channel_id
* @return boolean
*/
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;
}

View File

@ -23,6 +23,7 @@ function abook_store_lowlevel($arr) {
'abook_unconnected' => ((array_key_exists('abook_unconnected',$arr)) ? $arr['abook_unconnected'] : 0),
'abook_self' => ((array_key_exists('abook_self',$arr)) ? $arr['abook_self'] : 0),
'abook_feed' => ((array_key_exists('abook_feed',$arr)) ? $arr['abook_feed'] : 0),
'abook_not_here' => ((array_key_exists('abook_not_here',$arr)) ? $arr['abook_not_here'] : 0),
'abook_profile' => ((array_key_exists('abook_profile',$arr)) ? $arr['abook_profile'] : ''),
'abook_incl' => ((array_key_exists('abook_incl',$arr)) ? $arr['abook_incl'] : ''),
'abook_excl' => ((array_key_exists('abook_excl',$arr)) ? $arr['abook_excl'] : ''),

View File

@ -742,7 +742,7 @@ function encode_rel_links($links) {
* @param $importer
* The contact_record (joined to user_record) of the local user who owns this
* relationship. It is this person's stuff that is going to be updated.
* @param array $contact[in,out]
* @param[in,out] array $contact
* The person who is sending us stuff. If not set, we MAY be processing a "follow" activity
* from an external network and MAY create an appropriate contact record. Otherwise, we MUST
* have a contact record.
@ -1232,8 +1232,11 @@ function handle_feed($uid, $abook_id, $url) {
/**
* @brief Return a XML tag with author information.
*
* @hooks \b atom_author Possibility to add further tags to returned XML string
* * \e string The created XML tag as a string without closing tag
* @param string $tag The XML tag to create
* @param string $name Name of the author
* @param string $nick preferred username
* @param string $name displayed name of the author
* @param string $uri
* @param int $h image height
* @param int $w image width

View File

@ -181,7 +181,7 @@ function import_profiles($channel, $profiles) {
* @param array $channel
* @param array $hublocs
* @param unknown $seize
* @param boolean $moving
* @param boolean $moving (optional) default false
*/
function import_hublocs($channel, $hublocs, $seize, $moving = false) {
@ -585,7 +585,7 @@ function sync_chatrooms($channel, $chatrooms) {
*
* @param array $channel where to import to
* @param array $items
* @param boolean $sync
* @param boolean $sync default false
* @param array $relocate default null
*/
function import_items($channel, $items, $sync = false, $relocate = null) {
@ -648,8 +648,12 @@ function sync_items($channel, $items, $relocate = null) {
import_items($channel, $items, true, $relocate);
}
/**
* @brief
*
* @param array $channel A channel array.
* @param array $itemids
*/
function import_item_ids($channel, $itemids) {
if($channel && $itemids) {
foreach($itemids as $i) {
@ -973,6 +977,7 @@ function import_conv($channel,$convs) {
*
* @param array $channel
* @param array $mails
* @param boolean $sync (optional) default false
*/
function import_mail($channel, $mails, $sync = false) {
if($channel && $mails) {
@ -1267,7 +1272,7 @@ function sync_files($channel, $files) {
*
* Replaces $old key with $new key in $arr.
*
* @param array[in,out] $arr The array where to work on
* @param[in,out] array &$arr The array where to work on
* @param string $old The old key in the array
* @param string $new The new key in the array
*/

View File

@ -296,6 +296,8 @@ function add_source_route($iid, $hash) {
* or other processing is performed.
*
* @param array $arr
* @param boolean $allow_code (optional) default false
* @param boolean $deliver (optional) default true
* @returns array
* * \e boolean \b success true or false
* * \e array \b activity the resulting activity if successful

View File

@ -43,7 +43,7 @@ EOT;
require_once('include/conversation.php');
$is_owner = (((local_channel()) && (App::$profile['profile_uid'] == local_channel())) ? true : false);
$navapps[] = channel_apps($is_owner, App::$profile['channel_address']);
$channel_apps[] = channel_apps($is_owner, App::$profile['channel_address']);
$myident = (($channel) ? $channel['xchan_addr'] : '');
@ -258,7 +258,7 @@ EOT;
usort($syslist,'Zotlabs\\Lib\\Apps::app_name_compare');
foreach($syslist as $app) {
$navapps[] = Zlib\Apps::app_render($app,'nav');
$nav_apps[] = Zlib\Apps::app_render($app,'nav');
}
$tpl = get_markup_template('nav.tpl');
@ -276,8 +276,10 @@ EOT;
'$powered_by' => $powered_by,
'$help' => t('@name, #tag, ?doc, content'),
'$pleasewait' => t('Please wait...'),
'$navapps' => $navapps,
'$addapps' => t('Add Apps')
'$nav_apps' => $nav_apps,
'$channel_apps' => $channel_apps,
'$addapps' => t('Add Apps'),
'$sysapps_toggle' => t('Toggle System Apps')
));
if(x($_SESSION, 'reload_avatar') && $observer) {

View File

@ -774,9 +774,9 @@ function activity_match($haystack,$needle) {
}
/**
* @brief Pull out all #hashtags and @person tags from $s.
* @brief Pull out all \#hashtags and \@person tags from $s.
*
* We also get @person@domain.com - which would make
* We also get \@person\@domain.com - which would make
* the regex quite complicated as tags can also
* end a sentence. So we'll run through our results
* and strip the period from any tags which end with one.
@ -2114,7 +2114,7 @@ function ids_to_querystr($arr,$idx = 'id',$quote = false) {
* If $abook is true also include the abook info. This is needed in the API to
* save extra per item lookups there.
*
* @param array[in,out] &$items
* @param[in,out] array &$items
* @param boolean $abook If true also include the abook info
* @param number $effective_uid
*/
@ -2210,10 +2210,10 @@ function magic_link($s) {
}
/**
* if $escape is true, dbesc() each element before adding quotes
* @brief If $escape is true, dbesc() each element before adding quotes.
*
* @param array[in,out] &$arr
* @param boolean $escape default false
* @param[in,out] array &$arr
* @param boolean $escape (optional) default false
*/
function stringify_array_elms(&$arr, $escape = false) {
for($x = 0; $x < count($arr); $x ++)
@ -2224,7 +2224,6 @@ function stringify_array_elms(&$arr, $escape = false) {
* @brief Indents a flat JSON string to make it more human-readable.
*
* @param string $json The original JSON string to process.
*
* @return string Indented version of the original JSON string.
*/
function jindent($json) {

View File

@ -3226,12 +3226,10 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
}
$disallowed = array('abook_id','abook_account','abook_channel','abook_rating','abook_rating_text');
$disallowed = array('abook_id','abook_account','abook_channel','abook_rating','abook_rating_text','abook_not_here');
foreach($arr['abook'] as $abook) {
$abconfig = null;
if(array_key_exists('abconfig',$abook) && is_array($abook['abconfig']) && count($abook['abconfig']))

View File

@ -32,6 +32,7 @@ CREATE TABLE IF NOT EXISTS `abook` (
`abook_unconnected` tinyint(4) NOT NULL DEFAULT '0',
`abook_self` tinyint(4) NOT NULL DEFAULT '0',
`abook_feed` tinyint(4) NOT NULL DEFAULT '0',
`abook_not_here` tinyint(4) NOT NULL DEFAULT '0',
`abook_profile` char(64) NOT NULL DEFAULT '',
`abook_incl` TEXT NOT NULL DEFAULT '',
`abook_excl` TEXT NOT NULL DEFAULT '',
@ -54,6 +55,7 @@ CREATE TABLE IF NOT EXISTS `abook` (
KEY `abook_pending` (`abook_pending`),
KEY `abook_unconnected` (`abook_unconnected`),
KEY `abook_self` (`abook_self`),
KEY `abook_not_here` (`abook_not_here`),
KEY `abook_feed` (`abook_feed`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

View File

@ -30,6 +30,7 @@ CREATE TABLE "abook" (
"abook_unconnected" smallint NOT NULL DEFAULT '0',
"abook_self" smallint NOT NULL DEFAULT '0',
"abook_feed" smallint NOT NULL DEFAULT '0',
"abook_not_here" smallint NOT NULL DEFAULT '0',
"abook_profile" char(64) NOT NULL DEFAULT '',
"abook_incl" TEXT NOT NULL DEFAULT '',
"abook_excl" TEXT NOT NULL DEFAULT '',
@ -51,6 +52,7 @@ CREATE TABLE "abook" (
create index "abook_unconnected" on abook ("abook_unconnected");
create index "abook_self" on abook ("abook_self");
create index "abook_feed" on abook ("abook_feed");
create index "abook_not_here" on abook ("abook_not_here");
create index "abook_profile" on abook ("abook_profile");
create index "abook_dob" on abook ("abook_dob");
create index "abook_connected" on abook ("abook_connected");

View File

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1190 );
define( 'UPDATE_VERSION' , 1191 );
/**
*
@ -2532,3 +2532,12 @@ function update_r1189() {
}
function update_r1190() {
$r1 = q("alter table abook add abook_not_here int(11) not null default '0' ");
$r2 = q("create index abook_not_here on abook (abook_not_here)");
if($r1 && $r2)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}

View File

@ -32,3 +32,6 @@ DOT_IMAGE_FORMAT = svg
INTERACTIVE_SVG = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = NO
# fix @var (https://bugzilla.gnome.org/show_bug.cgi?id=626105)
#INPUT_FILTER = "sed -e 's/@var\s/@see /'"
INPUT_FILTER = "php util/Doxygen_phpvarfilter.php"

View File

@ -0,0 +1,18 @@
<?php
/**
* @file Doxygen_phpvarfilter.php
* @brief A Doxygen INPUT_FILTER to parse \@var member variable documentation.
*
* An input filter for Doxygen to parse \@var class member variable documentation,
* so it is a bit more compatible how anybody else interpretes it.
*
* @see http://stackoverflow.com/questions/4325224/doxygen-how-to-describe-class-member-variables-in-php/8472180#8472180
*/
$source = file_get_contents($argv[1]);
$regexp = '#\@var\s+([^\s]+)([^/]+)/\s+(var|public|protected|private)\s+(\$[^\s;=]+)#';
$replac = '${2} */ ${3} ${1} ${4}';
$source = preg_replace($regexp, $replac, $source);
echo $source;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,369 +1,27 @@
[
{
"name": "sabre/event",
"version": "3.0.0",
"version_normalized": "3.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/fruux/sabre-event.git",
"reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fruux/sabre-event/zipball/831d586f5a442dceacdcf5e9c4c36a4db99a3534",
"reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534",
"shasum": ""
},
"require": {
"php": ">=5.5"
},
"require-dev": {
"phpunit/phpunit": "*",
"sabre/cs": "~0.0.4"
},
"time": "2015-11-05 20:14:39",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Sabre\\Event\\": "lib/"
},
"files": [
"lib/coroutine.php",
"lib/Loop/functions.php",
"lib/Promise/functions.php"
]
},
"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": "sabre/event is a library for lightweight event-based programming",
"homepage": "http://sabre.io/event/",
"keywords": [
"EventEmitter",
"async",
"events",
"hooks",
"plugin",
"promise",
"signal"
]
},
{
"name": "sabre/xml",
"version": "1.5.0",
"version_normalized": "1.5.0.0",
"source": {
"type": "git",
"url": "https://github.com/fruux/sabre-xml.git",
"reference": "59b20e5bbace9912607481634f97d05a776ffca7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fruux/sabre-xml/zipball/59b20e5bbace9912607481634f97d05a776ffca7",
"reference": "59b20e5bbace9912607481634f97d05a776ffca7",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-xmlreader": "*",
"ext-xmlwriter": "*",
"lib-libxml": ">=2.6.20",
"php": ">=5.5.5",
"sabre/uri": ">=1.0,<3.0.0"
},
"require-dev": {
"phpunit/phpunit": "*",
"sabre/cs": "~1.0.0"
},
"time": "2016-10-09 22:57:52",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Sabre\\Xml\\": "lib/"
},
"files": [
"lib/Deserializer/functions.php",
"lib/Serializer/functions.php"
]
},
"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": "Markus Staab",
"email": "markus.staab@redaxo.de",
"role": "Developer"
}
],
"description": "sabre/xml is an XML library that you may not hate.",
"homepage": "https://sabre.io/xml/",
"keywords": [
"XMLReader",
"XMLWriter",
"dom",
"xml"
]
},
{
"name": "psr/log",
"version": "1.0.2",
"version_normalized": "1.0.2.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"time": "2016-10-10 12:19:37",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
]
},
{
"name": "michelf/php-markdown",
"version": "1.7.0",
"version_normalized": "1.7.0.0",
"source": {
"type": "git",
"url": "https://github.com/michelf/php-markdown.git",
"reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/1f51cc520948f66cd2af8cbc45a5ee175e774220",
"reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"time": "2016-10-29 18:58:20",
"type": "library",
"extra": {
"branch-alias": {
"dev-lib": "1.4.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"Michelf": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Michel Fortin",
"email": "michel.fortin@michelf.ca",
"homepage": "https://michelf.ca/",
"role": "Developer"
},
{
"name": "John Gruber",
"homepage": "https://daringfireball.net/"
}
],
"description": "PHP Markdown",
"homepage": "https://michelf.ca/projects/php-markdown/",
"keywords": [
"markdown"
]
},
{
"name": "pixel418/markdownify",
"version": "v2.2.1",
"version_normalized": "2.2.1.0",
"source": {
"type": "git",
"url": "https://github.com/Elephant418/Markdownify.git",
"reference": "0160677f04c784550dd10fd72fdf3994967db848"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Elephant418/Markdownify/zipball/0160677f04c784550dd10fd72fdf3994967db848",
"reference": "0160677f04c784550dd10fd72fdf3994967db848",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8"
},
"time": "2016-09-21 13:01:43",
"type": "lib",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Markdownify\\": "src",
"Test\\Markdownify\\": "test"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL"
],
"authors": [
{
"name": "Peter Kruithof",
"email": "pkruithof@gmail.com",
"homepage": "http://pkruithof.tumblr.com/"
},
{
"name": "Milian Wolff",
"email": "mail@milianw.de",
"homepage": "http://milianw.de"
},
{
"name": "Thomas Zilliox",
"email": "hello@tzi.fr",
"homepage": "http://tzi.fr"
}
],
"description": "The HTML to Markdown converter for PHP ",
"homepage": "https://github.com/elephant418/Markdownify",
"keywords": [
"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",
"version": "1.1.0",
"version_normalized": "1.1.0.0",
"source": {
"type": "git",
"url": "https://github.com/fruux/sabre-uri.git",
"reference": "ada354d83579565949d80b2e15593c2371225e61"
"reference": "9012116434d84ef6e5e37a89dfdbfbe2204a8704"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fruux/sabre-uri/zipball/ada354d83579565949d80b2e15593c2371225e61",
"reference": "ada354d83579565949d80b2e15593c2371225e61",
"url": "https://api.github.com/repos/fruux/sabre-uri/zipball/9012116434d84ef6e5e37a89dfdbfbe2204a8704",
"reference": "9012116434d84ef6e5e37a89dfdbfbe2204a8704",
"shasum": ""
},
"require": {
"php": ">=5.4.7"
},
"require-dev": {
"phpunit/phpunit": ">=4.0,<6.0",
"sabre/cs": "~1.0.0"
"phpunit/phpunit": "*",
"sabre/cs": "~0.0.1"
},
"time": "2017-02-20 19:59:28",
"time": "2016-03-08T02:29:27+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -396,32 +54,32 @@
},
{
"name": "sabre/vobject",
"version": "4.1.2",
"version_normalized": "4.1.2.0",
"version": "4.1.1",
"version_normalized": "4.1.1.0",
"source": {
"type": "git",
"url": "https://github.com/fruux/sabre-vobject.git",
"reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c"
"reference": "a3a59b06947f122af2d45d52b72172cdc1efd68f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fruux/sabre-vobject/zipball/d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
"reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
"url": "https://api.github.com/repos/fruux/sabre-vobject/zipball/a3a59b06947f122af2d45d52b72172cdc1efd68f",
"reference": "a3a59b06947f122af2d45d52b72172cdc1efd68f",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": ">=5.5",
"sabre/xml": ">=1.5 <3.0"
"sabre/xml": "~1.1"
},
"require-dev": {
"phpunit/phpunit": "*",
"sabre/cs": "^1.0.0"
"sabre/cs": "~0.0.3"
},
"suggest": {
"hoa/bench": "If you would like to run the benchmark scripts"
},
"time": "2016-12-06 04:14:09",
"time": "2016-07-15T19:52:17+00:00",
"bin": [
"bin/vobject",
"bin/generate_vcards"
@ -494,22 +152,80 @@
]
},
{
"name": "sabre/http",
"version": "4.2.2",
"version_normalized": "4.2.2.0",
"name": "sabre/event",
"version": "3.0.0",
"version_normalized": "3.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/fruux/sabre-http.git",
"reference": "dd50e7260356f4599d40270826f9548b23efa204"
"url": "https://github.com/fruux/sabre-event.git",
"reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fruux/sabre-http/zipball/dd50e7260356f4599d40270826f9548b23efa204",
"reference": "dd50e7260356f4599d40270826f9548b23efa204",
"url": "https://api.github.com/repos/fruux/sabre-event/zipball/831d586f5a442dceacdcf5e9c4c36a4db99a3534",
"reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534",
"shasum": ""
},
"require": {
"php": ">=5.5"
},
"require-dev": {
"phpunit/phpunit": "*",
"sabre/cs": "~0.0.4"
},
"time": "2015-11-05T20:14:39+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Sabre\\Event\\": "lib/"
},
"files": [
"lib/coroutine.php",
"lib/Loop/functions.php",
"lib/Promise/functions.php"
]
},
"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": "sabre/event is a library for lightweight event-based programming",
"homepage": "http://sabre.io/event/",
"keywords": [
"EventEmitter",
"async",
"events",
"hooks",
"plugin",
"promise",
"signal"
]
},
{
"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-ctype": "*",
"ext-mbstring": "*",
"php": ">=5.4",
"sabre/event": ">=1.0.0,<4.0.0",
@ -522,7 +238,7 @@
"suggest": {
"ext-curl": " to make http requests with the Client class"
},
"time": "2017-01-02 19:38:42",
"time": "2016-01-06T23:00:08+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -552,67 +268,43 @@
]
},
{
"name": "sabre/dav",
"version": "3.2.2",
"version_normalized": "3.2.2.0",
"name": "sabre/xml",
"version": "1.5.0",
"version_normalized": "1.5.0.0",
"source": {
"type": "git",
"url": "https://github.com/fruux/sabre-dav.git",
"reference": "e987775e619728f12205606c9cc3ee565ffb1516"
"url": "https://github.com/fruux/sabre-xml.git",
"reference": "59b20e5bbace9912607481634f97d05a776ffca7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fruux/sabre-dav/zipball/e987775e619728f12205606c9cc3ee565ffb1516",
"reference": "e987775e619728f12205606c9cc3ee565ffb1516",
"url": "https://api.github.com/repos/fruux/sabre-xml/zipball/59b20e5bbace9912607481634f97d05a776ffca7",
"reference": "59b20e5bbace9912607481634f97d05a776ffca7",
"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"
"ext-xmlreader": "*",
"ext-xmlwriter": "*",
"lib-libxml": ">=2.6.20",
"php": ">=5.5.5",
"sabre/uri": ">=1.0,<3.0.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"
"phpunit/phpunit": "*",
"sabre/cs": "~1.0.0"
},
"suggest": {
"ext-curl": "*",
"ext-pdo": "*"
},
"time": "2017-02-15 03:06:08",
"bin": [
"bin/sabredav",
"bin/naturalselection"
],
"time": "2016-10-09T22:57:52+00:00",
"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/"
}
"Sabre\\Xml\\": "lib/"
},
"files": [
"lib/Deserializer/functions.php",
"lib/Serializer/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -624,16 +316,180 @@
"email": "me@evertpot.com",
"homepage": "http://evertpot.com/",
"role": "Developer"
},
{
"name": "Markus Staab",
"email": "markus.staab@redaxo.de",
"role": "Developer"
}
],
"description": "WebDAV Framework for PHP",
"homepage": "http://sabre.io/",
"description": "sabre/xml is an XML library that you may not hate.",
"homepage": "https://sabre.io/xml/",
"keywords": [
"CalDAV",
"CardDAV",
"WebDAV",
"framework",
"iCalendar"
"XMLReader",
"XMLWriter",
"dom",
"xml"
]
},
{
"name": "psr/log",
"version": "1.0.2",
"version_normalized": "1.0.2.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"time": "2016-10-10T12:19:37+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
]
},
{
"name": "michelf/php-markdown",
"version": "1.7.0",
"version_normalized": "1.7.0.0",
"source": {
"type": "git",
"url": "https://github.com/michelf/php-markdown.git",
"reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/1f51cc520948f66cd2af8cbc45a5ee175e774220",
"reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"time": "2016-10-29T18:58:20+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-lib": "1.4.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"Michelf": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Michel Fortin",
"email": "michel.fortin@michelf.ca",
"homepage": "https://michelf.ca/",
"role": "Developer"
},
{
"name": "John Gruber",
"homepage": "https://daringfireball.net/"
}
],
"description": "PHP Markdown",
"homepage": "https://michelf.ca/projects/php-markdown/",
"keywords": [
"markdown"
]
},
{
"name": "pixel418/markdownify",
"version": "v2.2.1",
"version_normalized": "2.2.1.0",
"source": {
"type": "git",
"url": "https://github.com/Elephant418/Markdownify.git",
"reference": "0160677f04c784550dd10fd72fdf3994967db848"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Elephant418/Markdownify/zipball/0160677f04c784550dd10fd72fdf3994967db848",
"reference": "0160677f04c784550dd10fd72fdf3994967db848",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8"
},
"time": "2016-09-21T13:01:43+00:00",
"type": "lib",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Markdownify\\": "src",
"Test\\Markdownify\\": "test"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL"
],
"authors": [
{
"name": "Peter Kruithof",
"email": "pkruithof@gmail.com",
"homepage": "http://pkruithof.tumblr.com/"
},
{
"name": "Milian Wolff",
"email": "mail@milianw.de",
"homepage": "http://milianw.de"
},
{
"name": "Thomas Zilliox",
"email": "hello@tzi.fr",
"homepage": "http://tzi.fr"
}
],
"description": "The HTML to Markdown converter for PHP ",
"homepage": "https://github.com/elephant418/Markdownify",
"keywords": [
"markdown",
"markdownify"
]
},
{
@ -745,17 +601,17 @@
},
{
"name": "simplepie/simplepie",
"version": "dev-master",
"version_normalized": "9999999-dev",
"version": "1.5",
"version_normalized": "1.5.0.0",
"source": {
"type": "git",
"url": "https://github.com/simplepie/simplepie.git",
"reference": "59e7204610d3a8989822eba1c0cbf1d1680bd10d"
"reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/simplepie/simplepie/zipball/59e7204610d3a8989822eba1c0cbf1d1680bd10d",
"reference": "59e7204610d3a8989822eba1c0cbf1d1680bd10d",
"url": "https://api.github.com/repos/simplepie/simplepie/zipball/5de5551953f95feef12cf355a7a26a70f94aa3ab",
"reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab",
"shasum": ""
},
"require": {
@ -767,7 +623,7 @@
"suggest": {
"mf2/mf2": "Microformat module that allows for parsing HTML for microformats"
},
"time": "2017-04-06T03:36:48+00:00",
"time": "2017-04-17T07:29:31+00:00",
"type": "library",
"installation-source": "source",
"autoload": {
@ -804,8 +660,93 @@
"rss"
],
"support": {
"source": "https://github.com/simplepie/simplepie/tree/master",
"source": "https://github.com/simplepie/simplepie/tree/1.5",
"issues": "https://github.com/simplepie/simplepie/issues"
}
},
{
"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-15T03:06:08+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"
]
}
]

View File

@ -5,7 +5,7 @@
* A PHP-Based RSS and Atom Feed Framework.
* Takes the hard work out of managing a complete RSS/Atom solution.
*
* Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
* Copyright (c) 2004-2017, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
@ -33,8 +33,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* @package SimplePie
* @version 1.4.3
* @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue
* @version 1.5
* @copyright 2004-2017 Ryan Parman, Geoffrey Sneddon, Ryan McCue
* @author Ryan Parman
* @author Geoffrey Sneddon
* @author Ryan McCue
@ -50,7 +50,7 @@ define('SIMPLEPIE_NAME', 'SimplePie');
/**
* SimplePie Version
*/
define('SIMPLEPIE_VERSION', '1.4.3');
define('SIMPLEPIE_VERSION', '1.5');
/**
* SimplePie Build

View File

@ -56,7 +56,7 @@ class SimplePie_Category
/**
* Category identifier
*
* @var string
* @var string|null
* @see get_term
*/
var $term;
@ -64,7 +64,7 @@ class SimplePie_Category
/**
* Categorization scheme identifier
*
* @var string
* @var string|null
* @see get_scheme()
*/
var $scheme;
@ -72,23 +72,36 @@ class SimplePie_Category
/**
* Human readable label
*
* @var string
* @var string|null
* @see get_label()
*/
var $label;
/**
* Category type
*
* category for <category>
* subject for <dc:subject>
*
* @var string|null
* @see get_type()
*/
var $type;
/**
* Constructor, used to input the data
*
* @param string $term
* @param string $scheme
* @param string $label
* @param string|null $term
* @param string|null $scheme
* @param string|null $label
* @param string|null $type
*/
public function __construct($term = null, $scheme = null, $label = null)
public function __construct($term = null, $scheme = null, $label = null, $type = null)
{
$this->term = $term;
$this->scheme = $scheme;
$this->label = $label;
$this->type = $type;
}
/**
@ -108,16 +121,9 @@ class SimplePie_Category
* @return string|null
*/
public function get_term()
{
if ($this->term !== null)
{
return $this->term;
}
else
{
return null;
}
}
/**
* Get the categorization scheme identifier
@ -125,32 +131,33 @@ class SimplePie_Category
* @return string|null
*/
public function get_scheme()
{
if ($this->scheme !== null)
{
return $this->scheme;
}
else
{
return null;
}
}
/**
* Get the human readable label
*
* @param bool $strict
* @return string|null
*/
public function get_label()
public function get_label($strict = false)
{
if ($this->label !== null)
{
return $this->label;
}
else
if ($this->label === null && $strict !== true)
{
return $this->get_term();
}
return $this->label;
}
/**
* Get the category type
*
* @return string|null
*/
public function get_type()
{
return $this->type;
}
}

View File

@ -206,9 +206,10 @@ class SimplePie_Item
*
* @since Beta 2
* @param boolean $hash Should we force using a hash instead of the supplied ID?
* @return string
* @param string|false $fn User-supplied function to generate an hash
* @return string|null
*/
public function get_id($hash = false, $fn = '')
public function get_id($hash = false, $fn = 'md5')
{
if (!$hash)
{
@ -237,7 +238,15 @@ class SimplePie_Item
return $this->sanitize($this->data['attribs'][SIMPLEPIE_NAMESPACE_RDF]['about'], SIMPLEPIE_CONSTRUCT_TEXT);
}
}
if ($fn === '' || !is_callable($fn)) $fn = 'md5';
if ($fn === false)
{
return null;
}
elseif (!is_callable($fn))
{
trigger_error('User-supplied function $fn must be callable', E_USER_WARNING);
$fn = 'md5';
}
return call_user_func($fn,
$this->get_permalink().$this->get_title().$this->get_content());
}
@ -460,7 +469,8 @@ class SimplePie_Item
{
$categories = array();
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
$type = 'category';
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, $type) as $category)
{
$term = null;
$scheme = null;
@ -477,9 +487,9 @@ class SimplePie_Item
{
$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_HTML);
}
$categories[] = $this->registry->create('Category', array($term, $scheme, $label));
$categories[] = $this->registry->create('Category', array($term, $scheme, $label, $type));
}
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, $type) as $category)
{
// This is really the label, but keep this as the term also for BC.
// Label will also work on retrieving because that falls back to term.
@ -492,15 +502,17 @@ class SimplePie_Item
{
$scheme = null;
}
$categories[] = $this->registry->create('Category', array($term, $scheme, null));
$categories[] = $this->registry->create('Category', array($term, $scheme, null, $type));
}
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
$type = 'subject';
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, $type) as $category)
{
$categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null));
$categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null, $type));
}
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, $type) as $category)
{
$categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null));
$categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null, $type));
}
if (!empty($categories))

View File

@ -55,6 +55,12 @@ nav .dropdown-menu {
overflow: auto;
}
#navbar-collapse-2.collapsing .dropdown-header,
#navbar-collapse-2.show .dropdown-header {
padding: 0.5rem 0.1rem;
}
.navbar-inverse .navbar-toggler {
color: rgba(255,255,255,1);
}

View File

@ -13751,3 +13751,19 @@ msgstr "Cron-Aufgaben laufen nicht."
#, php-format
msgid "[hubzilla] Cron tasks not running on %s"
msgstr "[hubzilla] Cron-Aufgaben für %s laufen nicht"
#: ../../addon/demohub/demohub.php:41
msgid "Welcome to the Hubzilla demo hub!"
msgstr "Willkommen auf dem Hubzilla demo Hub!"
#: ../../addon/demohub/demohub.php:42
msgid "This demo hub is designed to give you a chance to explore some of the features offered by the Hubzilla platform. The activities of the fictional characters illustrate only a few of the ways communities can use Hubzilla to collaborate and connect."
msgstr "Dieser demo Hub (Hubzilla-Knoten) ist konzipiert, um Ihnen eine Chance zu geben, einige Features der Hubzilla-Platform kennenzulernen. Die fiktive Aktivitäten illustrieren nur einige von vielen Möglichkeiten, die den Communities für die Kommunikation und Zusammenarbeit im Hubzilla-Netzwerk zur Verfügung stehen."
#: ../../addon/demohub/demohub.php:45
msgid "To really grasp what Hubzilla is offering in terms of nomadic identity and decentralized access control, you have to try it for yourself. Run your own hub or register on an open hub. You can always clone your channels and migrate to another hub later. With Hubzilla, <i>you</i> not only own your <b>data</b>, but your <b>identity</b> as well!</p><p>The demo resets every ten minutes, which may interrupt your session. Simply reload the page as necessary. You can return to this dialog using the blue info button in the navbar."
msgstr "Sie können selbst in der Praxis testen, welche Möglichkeiten Ihnen im Hubzilla-Netzwerk mit Nomadic Identity und mit dem dezentralen Zugang. Richten Sie einen eigenen Hubzilla-Knoten ein oder registrieren Sie sich auf einem offenen Hub. Sie können dann Ihren Kanal klonen oder mit diesem Kanal auf einen anderen Hub umziehen. Mit Hubzilla kontrollieren Sie Ihre Daten, aber auch Ihre Identität!</p><p>Die Demoinstanz wird im 10-Minuten-Takt zurückgesetzt, wobei Ihre Hubzilla-Sitzung evtl. unterbrochen wird. Laden Sie die Website #^https://demo.hubzilla.org/ einfach neu, um fortzufahren. Sie können dieses Dialog-Fenster mit einem Klick auf das blaue [i]-Symbol rechts oben in der Navigationsleiste."
#: ../../addon/demohub/demohub.php:52
msgid "Explore"
msgstr "Erforschen"

View File

@ -886,7 +886,8 @@ a .drop-icons:hover {
color: #FF0000;
}
.lockview {
.lockview,
.sys-apps-toggle {
cursor: pointer;
}

View File

@ -64,4 +64,4 @@
<div class="clear"></div>
</form>
</div>
<div id="comment-edit-preview-{{$id}}" class="comment-edit-preview"></div>
<div id="comment-edit-preview-{{$id}}" class="comment-edit-preview mt-4"></div>

View File

@ -188,10 +188,22 @@
{{/if}}
<li class="nav-item dropdown" id="app-menu">
<a class="nav-link" href="#" data-toggle="dropdown"><i class="fa fa-fw fa-bars"></i></a>
<div class="dropdown-menu dropdown-menu-right">
{{foreach $navapps as $navapp}}
{{$navapp}}
<div id="dropdown-menu" class="dropdown-menu dropdown-menu-right">
{{if $channel_apps.0}}
{{foreach $channel_apps as $channel_app}}
{{$channel_app}}
{{/foreach}}
<div class="dropdown-header sys-apps-toggle" onclick="$('#dropdown-menu').click(function(e) { e.stopPropagation(); }); openClose('sys_apps');">
{{$sysapps_toggle}}
</div>
<div id="sys_apps" style="display:none;">
{{/if}}
{{foreach $nav_apps as $nav_app}}
{{$nav_app}}
{{/foreach}}
{{if $channel_apps.0}}
</div>
{{/if}}
{{if $localuser}}
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="/apps"><i class="generic-icons-nav fa fa-fw fa-plus-circle"></i>{{$addapps}}</a>
@ -202,9 +214,21 @@
</div>
<div class="collapse d-md-none" id="navbar-collapse-2">
<div class="navbar-nav mr-auto">
{{foreach $navapps as $navapp}}
{{$navapp|replace:'dropdown-item':'nav-link'}}
{{if $channel_apps.0}}
{{foreach $channel_apps as $channel_app}}
{{$channel_app|replace:'dropdown-item':'nav-link'}}
{{/foreach}}
<div class="dropdown-header sys-apps-toggle" onclick="openClose('sys-apps-collapsed');">
{{$sysapps_toggle}}
</div>
<div id="sys-apps-collapsed" style="display:none;">
{{/if}}
{{foreach $nav_apps as $nav_app}}
{{$nav_app|replace:'dropdown-item':'nav-link'}}
{{/foreach}}
{{if $channel_apps.0}}
</div>
{{/if}}
{{if $localuser}}
<div class="dropdown-divider"></div>
<a class="nav-link" href="/apps"><i class="generic-icons-nav fa fa-fw fa-plus-circle"></i>{{$addapps}}</a>