From 16e4e94b293035ab73e00c5d6cd68f54797e23cd Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Tue, 19 Jan 2016 18:11:40 +0100 Subject: [PATCH 001/485] rework autocomplete: initial commit --- js/autocomplete.js | 192 +++ js/fk.autocomplete.js | 2 +- js/main.js | 2 +- library/jquery-textcomplete/LICENSE | 21 + .../jquery.textcomplete.js | 1104 +++++++++++++++++ view/templates/display-head.tpl | 4 +- view/templates/head.tpl | 4 +- view/templates/jot-header.tpl | 2 +- 8 files changed, 1325 insertions(+), 6 deletions(-) create mode 100644 js/autocomplete.js create mode 100644 library/jquery-textcomplete/LICENSE create mode 100644 library/jquery-textcomplete/jquery.textcomplete.js diff --git a/js/autocomplete.js b/js/autocomplete.js new file mode 100644 index 0000000000..aa4494b714 --- /dev/null +++ b/js/autocomplete.js @@ -0,0 +1,192 @@ +/** + * Red people autocomplete + * + * require jQuery, jquery.textcomplete + */ +function contact_search(term, callback, backend_url, type) { + + // Check if there is a cached result that contains the same information we would get with a full server-side search + var bt = backend_url+type; + if(!(bt in contact_search.cache)) contact_search.cache[bt] = {}; + + var lterm = term.toLowerCase(); // Ignore case + for(var t in contact_search.cache[bt]) { + if(lterm.indexOf(t) >= 0) { // A more broad search has been performed already, so use those results + // Filter old results locally + var matching = contact_search.cache[bt][t].filter(function (x) { return (x.name.toLowerCase().indexOf(lterm) >= 0 || (typeof x.nick !== 'undefined' && x.nick.toLowerCase().indexOf(lterm) >= 0)); }); // Need to check that nick exists because groups don't have one + matching.unshift({taggable:false, text: term, replace: term}); + setTimeout(function() { callback(matching); } , 1); // Use "pseudo-thread" to avoid some problems + return; + } + } + + var postdata = { + start:0, + count:100, + search:term, + type:type, + }; + + + $.ajax({ + type:'POST', + url: backend_url, + data: postdata, + dataType: 'json', + success: function(data){ + // Cache results if we got them all (more information would not improve results) + // data.count represents the maximum number of items + if(data.items.length -1 < data.count) { + contact_search.cache[bt][lterm] = data.items; + } + var items = data.items.slice(0); + items.unshift({taggable:false, text: term, replace: term}); + callback(items); + }, + }).fail(function () {callback([]); }); // Callback must be invoked even if something went wrong. +} +contact_search.cache = {}; + + +function contact_format(item) { + // Show contact information if not explicitly told to show something else + if(typeof item.text === 'undefined') { + var desc = ((item.label) ? item.nick + ' ' + item.label : item.nick); + if(typeof desc === 'undefined') desc = ''; + if(desc) desc = ' ('+desc+')'; + return "
{2}{3}
".format(item.taggable, item.photo, item.name, desc, item.link); + } + else + return "
" + item.text + "
"; +} + +function editor_replace(item) { + if(typeof item.replace !== 'undefined') { + return '$1$2' + item.replace; + } + + // $2 ensures that prefix (@,@!) is preserved + var id = item.id; + // 16 chars of hash should be enough. Full hash could be used if it can be done in a visually appealing way. + // 16 chars is also the minimum length in the backend (otherwise it's interpreted as a local id). + if(id.length > 16) + id = item.id.substring(0,16); + + return '$1$2' + item.nick.replace(' ', '') + '+' + id + ' '; +} + +function basic_replace(item) { + if(typeof item.replace !== 'undefined') + return '$1'+item.replace; + + return '$1'+item.name+' '; +} + +function trim_replace(item) { + if(typeof item.replace !== 'undefined') + return '$1'+item.replace; + + return '$1'+item.name; +} + + +function submit_form(e) { + $(e).parents('form').submit(); +} + +/** + * jQuery plugin 'editor_autocomplete' + */ +(function( $ ) { + $.fn.editor_autocomplete = function(backend_url) { + + // Autocomplete contacts + contacts = { + match: /(^|\s)(@\!*)([^ \n]+)$/, + index: 3, + search: function(term, callback) { contact_search(term, callback, backend_url, 'c'); }, + replace: editor_replace, + template: contact_format, + }; + + smilies = { + match: /(^|\s)(:[a-z]{2,})$/, + index: 2, + search: function(term, callback) { $.getJSON('/smilies/json').done(function(data) { callback($.map(data, function(entry) { return entry.text.indexOf(term) === 0 ? entry : null; })); }); }, + template: function(item) { return item.icon + item.text; }, + replace: function(item) { return "$1" + item.text + ' '; }, + }; + this.attr('autocomplete','off'); + this.textcomplete([contacts,smilies], {className:'acpopup', zIndex:1020}); + }; +})( jQuery ); + +/** + * jQuery plugin 'search_autocomplete' + */ +(function( $ ) { + $.fn.search_autocomplete = function(backend_url) { + // Autocomplete contacts + contacts = { + match: /(^@)([^\n]{2,})$/, + index: 2, + search: function(term, callback) { contact_search(term, callback, backend_url, 'x'); }, + replace: basic_replace, + template: contact_format, + }; + this.attr('autocomplete', 'off'); + var a = this.textcomplete([contacts], {className:'acpopup', maxCount:100, zIndex: 1020, appendTo:'nav'}); + a.on('textComplete:select', function(e, value, strategy) { submit_form(this); }); + }; +})( jQuery ); + +(function( $ ) { + $.fn.contact_autocomplete = function(backend_url, typ, autosubmit, onselect) { + if(typeof typ === 'undefined') typ = ''; + if(typeof autosubmit === 'undefined') autosubmit = false; + + // Autocomplete contacts + contacts = { + match: /(^)([^\n]+)$/, + index: 2, + search: function(term, callback) { contact_search(term, callback, backend_url, typ); }, + replace: basic_replace, + template: contact_format, + }; + + this.attr('autocomplete','off'); + var a = this.textcomplete([contacts], {className:'acpopup', zIndex:1020}); + + if(autosubmit) + a.on('textComplete:select', function(e,value,strategy) { submit_form(this); }); + + if(typeof onselect !== 'undefined') + a.on('textComplete:select', function(e, value, strategy) { onselect(value); }); + }; +})( jQuery ); + + +(function( $ ) { + $.fn.name_autocomplete = function(backend_url, typ, autosubmit, onselect) { + if(typeof typ === 'undefined') typ = ''; + if(typeof autosubmit === 'undefined') autosubmit = false; + + // Autocomplete contacts + names = { + match: /(^)([^\n]+)$/, + index: 2, + search: function(term, callback) { contact_search(term, callback, backend_url, typ); }, + replace: trim_replace, + template: contact_format, + }; + + this.attr('autocomplete','off'); + var a = this.textcomplete([names], {className:'acpopup', zIndex:1020}); + + if(autosubmit) + a.on('textComplete:select', function(e,value,strategy) { submit_form(this); }); + + if(typeof onselect !== 'undefined') + a.on('textComplete:select', function(e, value, strategy) { onselect(value); }); + }; +})( jQuery ); diff --git a/js/fk.autocomplete.js b/js/fk.autocomplete.js index 6010578ab7..d7c81276bb 100644 --- a/js/fk.autocomplete.js +++ b/js/fk.autocomplete.js @@ -86,7 +86,7 @@ ACPopup.prototype._search = function(){ if (data.tot>0){ that.cont.show(); $(data.items).each(function(){ - var html = "{1} ({2})".format(this.photo, this.name, this.nick); + var html = " {1} ({2})".format(this.photo, this.name, this.addr); var nick = this.nick.replace(' ',''); if (this.id!=='') nick += '+' + this.id; that.add(html, nick + ' - ' + this.link); diff --git a/js/main.js b/js/main.js index 2e65ef2316..1c1d07d526 100644 --- a/js/main.js +++ b/js/main.js @@ -493,7 +493,7 @@ $('body').css('cursor', 'auto'); } /* autocomplete @nicknames */ - $(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl"); + $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl"); // setup videos, since VideoJS won't take care of any loaded via AJAX if(typeof videojs != 'undefined') videojs.autoSetup(); diff --git a/library/jquery-textcomplete/LICENSE b/library/jquery-textcomplete/LICENSE new file mode 100644 index 0000000000..4848bd6377 --- /dev/null +++ b/library/jquery-textcomplete/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013-2014 Yuku Takahashi + +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. diff --git a/library/jquery-textcomplete/jquery.textcomplete.js b/library/jquery-textcomplete/jquery.textcomplete.js new file mode 100644 index 0000000000..3df84f3b43 --- /dev/null +++ b/library/jquery-textcomplete/jquery.textcomplete.js @@ -0,0 +1,1104 @@ +/*! + * jQuery.textcomplete + * + * Repository: https://github.com/yuku-t/jquery-textcomplete + * License: MIT (https://github.com/yuku-t/jquery-textcomplete/blob/master/LICENSE) + * Author: Yuku Takahashi + */ + +if (typeof jQuery === 'undefined') { + throw new Error('jQuery.textcomplete requires jQuery'); +} + ++function ($) { + 'use strict'; + + var warn = function (message) { + if (console.warn) { console.warn(message); } + }; + + $.fn.textcomplete = function (strategies, option) { + var args = Array.prototype.slice.call(arguments); + return this.each(function () { + var $this = $(this); + var completer = $this.data('textComplete'); + if (!completer) { + completer = new $.fn.textcomplete.Completer(this, option || {}); + $this.data('textComplete', completer); + } + if (typeof strategies === 'string') { + if (!completer) return; + args.shift() + completer[strategies].apply(completer, args); + if (strategies === 'destroy') { + $this.removeData('textComplete'); + } + } else { + // For backward compatibility. + // TODO: Remove at v0.4 + $.each(strategies, function (obj) { + $.each(['header', 'footer', 'placement', 'maxCount'], function (name) { + if (obj[name]) { + completer.option[name] = obj[name]; + warn(name + 'as a strategy param is deprecated. Use option.'); + delete obj[name]; + } + }); + }); + completer.register($.fn.textcomplete.Strategy.parse(strategies)); + } + }); + }; + +}(jQuery); + ++function ($) { + 'use strict'; + + // Exclusive execution control utility. + // + // func - The function to be locked. It is executed with a function named + // `free` as the first argument. Once it is called, additional + // execution are ignored until the free is invoked. Then the last + // ignored execution will be replayed immediately. + // + // Examples + // + // var lockedFunc = lock(function (free) { + // setTimeout(function { free(); }, 1000); // It will be free in 1 sec. + // console.log('Hello, world'); + // }); + // lockedFunc(); // => 'Hello, world' + // lockedFunc(); // none + // lockedFunc(); // none + // // 1 sec past then + // // => 'Hello, world' + // lockedFunc(); // => 'Hello, world' + // lockedFunc(); // none + // + // Returns a wrapped function. + var lock = function (func) { + var locked, queuedArgsToReplay; + + return function () { + // Convert arguments into a real array. + var args = Array.prototype.slice.call(arguments); + if (locked) { + // Keep a copy of this argument list to replay later. + // OK to overwrite a previous value because we only replay + // the last one. + queuedArgsToReplay = args; + return; + } + locked = true; + var self = this; + args.unshift(function replayOrFree() { + if (queuedArgsToReplay) { + // Other request(s) arrived while we were locked. + // Now that the lock is becoming available, replay + // the latest such request, then call back here to + // unlock (or replay another request that arrived + // while this one was in flight). + var replayArgs = queuedArgsToReplay; + queuedArgsToReplay = undefined; + replayArgs.unshift(replayOrFree); + func.apply(self, replayArgs); + } else { + locked = false; + } + }); + func.apply(this, args); + }; + }; + + var isString = function (obj) { + return Object.prototype.toString.call(obj) === '[object String]'; + }; + + var uniqueId = 0; + + function Completer(element, option) { + this.$el = $(element); + this.id = 'textcomplete' + uniqueId++; + this.strategies = []; + this.views = []; + this.option = $.extend({}, Completer._getDefaults(), option); + + if (!this.$el.is('input[type=text]') && !this.$el.is('textarea') && !element.isContentEditable && element.contentEditable != 'true') { + throw new Error('textcomplete must be called on a Textarea or a ContentEditable.'); + } + + if (element === document.activeElement) { + // element has already been focused. Initialize view objects immediately. + this.initialize() + } else { + // Initialize view objects lazily. + var self = this; + this.$el.one('focus.' + this.id, function () { self.initialize(); }); + } + } + + Completer._getDefaults = function () { + if (!Completer.DEFAULTS) { + Completer.DEFAULTS = { + appendTo: $('body'), + zIndex: '100' + }; + } + + return Completer.DEFAULTS; + } + + $.extend(Completer.prototype, { + // Public properties + // ----------------- + + id: null, + option: null, + strategies: null, + adapter: null, + dropdown: null, + $el: null, + + // Public methods + // -------------- + + initialize: function () { + var element = this.$el.get(0); + // Initialize view objects. + this.dropdown = new $.fn.textcomplete.Dropdown(element, this, this.option); + var Adapter, viewName; + if (this.option.adapter) { + Adapter = this.option.adapter; + } else { + if (this.$el.is('textarea') || this.$el.is('input[type=text]')) { + viewName = typeof element.selectionEnd === 'number' ? 'Textarea' : 'IETextarea'; + } else { + viewName = 'ContentEditable'; + } + Adapter = $.fn.textcomplete[viewName]; + } + this.adapter = new Adapter(element, this, this.option); + }, + + destroy: function () { + this.$el.off('.' + this.id); + if (this.adapter) { + this.adapter.destroy(); + } + if (this.dropdown) { + this.dropdown.destroy(); + } + this.$el = this.adapter = this.dropdown = null; + }, + + // Invoke textcomplete. + trigger: function (text, skipUnchangedTerm) { + if (!this.dropdown) { this.initialize(); } + text != null || (text = this.adapter.getTextFromHeadToCaret()); + var searchQuery = this._extractSearchQuery(text); + if (searchQuery.length) { + var term = searchQuery[1]; + // Ignore shift-key, ctrl-key and so on. + if (skipUnchangedTerm && this._term === term) { return; } + this._term = term; + this._search.apply(this, searchQuery); + } else { + this._term = null; + this.dropdown.deactivate(); + } + }, + + fire: function (eventName) { + var args = Array.prototype.slice.call(arguments, 1); + this.$el.trigger(eventName, args); + return this; + }, + + register: function (strategies) { + Array.prototype.push.apply(this.strategies, strategies); + }, + + // Insert the value into adapter view. It is called when the dropdown is clicked + // or selected. + // + // value - The selected element of the array callbacked from search func. + // strategy - The Strategy object. + select: function (value, strategy) { + this.adapter.select(value, strategy); + this.fire('change').fire('textComplete:select', value, strategy); + this.adapter.focus(); + }, + + // Private properties + // ------------------ + + _clearAtNext: true, + _term: null, + + // Private methods + // --------------- + + // Parse the given text and extract the first matching strategy. + // + // Returns an array including the strategy, the query term and the match + // object if the text matches an strategy; otherwise returns an empty array. + _extractSearchQuery: function (text) { + for (var i = 0; i < this.strategies.length; i++) { + var strategy = this.strategies[i]; + var context = strategy.context(text); + if (context || context === '') { + if (isString(context)) { text = context; } + var match = text.match(strategy.match); + if (match) { return [strategy, match[strategy.index], match]; } + } + } + return [] + }, + + // Call the search method of selected strategy.. + _search: lock(function (free, strategy, term, match) { + var self = this; + strategy.search(term, function (data, stillSearching) { + if (!self.dropdown.shown) { + self.dropdown.activate(); + self.dropdown.setPosition(self.adapter.getCaretPosition()); + } + if (self._clearAtNext) { + // The first callback in the current lock. + self.dropdown.clear(); + self._clearAtNext = false; + } + self.dropdown.render(self._zip(data, strategy)); + if (!stillSearching) { + // The last callback in the current lock. + free(); + self._clearAtNext = true; // Call dropdown.clear at the next time. + } + }, match); + }), + + // Build a parameter for Dropdown#render. + // + // Examples + // + // this._zip(['a', 'b'], 's'); + // //=> [{ value: 'a', strategy: 's' }, { value: 'b', strategy: 's' }] + _zip: function (data, strategy) { + return $.map(data, function (value) { + return { value: value, strategy: strategy }; + }); + } + }); + + $.fn.textcomplete.Completer = Completer; +}(jQuery); + ++function ($) { + 'use strict'; + + var include = function (zippedData, datum) { + var i, elem; + var idProperty = datum.strategy.idProperty + for (i = 0; i < zippedData.length; i++) { + elem = zippedData[i]; + if (elem.strategy !== datum.strategy) continue; + if (idProperty) { + if (elem.value[idProperty] === datum.value[idProperty]) return true; + } else { + if (elem.value === datum.value) return true; + } + } + return false; + }; + + var dropdownViews = {}; + $(document).on('click', function (e) { + var id = e.originalEvent && e.originalEvent.keepTextCompleteDropdown; + $.each(dropdownViews, function (key, view) { + if (key !== id) { view.deactivate(); } + }); + }); + + // Dropdown view + // ============= + + // Construct Dropdown object. + // + // element - Textarea or contenteditable element. + function Dropdown(element, completer, option) { + this.$el = Dropdown.findOrCreateElement(option); + this.completer = completer; + this.id = completer.id + 'dropdown'; + this._data = []; // zipped data. + this.$inputEl = $(element); + this.option = option; + + // Override setPosition method. + if (option.listPosition) { this.setPosition = option.listPosition; } + if (option.height) { this.$el.height(option.height); } + var self = this; + $.each(['maxCount', 'placement', 'footer', 'header', 'className'], function (_i, name) { + if (option[name] != null) { self[name] = option[name]; } + }); + this._bindEvents(element); + dropdownViews[this.id] = this; + } + + $.extend(Dropdown, { + // Class methods + // ------------- + + findOrCreateElement: function (option) { + var $parent = option.appendTo; + if (!($parent instanceof $)) { $parent = $($parent); } + var $el = $parent.children('.dropdown-menu') + if (!$el.length) { + $el = $('').css({ + display: 'none', + left: 0, + position: 'absolute', + zIndex: option.zIndex + }).appendTo($parent); + } + return $el; + } + }); + + $.extend(Dropdown.prototype, { + // Public properties + // ----------------- + + $el: null, // jQuery object of ul.dropdown-menu element. + $inputEl: null, // jQuery object of target textarea. + completer: null, + footer: null, + header: null, + id: null, + maxCount: 10, + placement: '', + shown: false, + data: [], // Shown zipped data. + className: '', + + // Public methods + // -------------- + + destroy: function () { + // Don't remove $el because it may be shared by several textcompletes. + this.deactivate(); + + this.$el.off('.' + this.id); + this.$inputEl.off('.' + this.id); + this.clear(); + this.$el = this.$inputEl = this.completer = null; + delete dropdownViews[this.id] + }, + + render: function (zippedData) { + var contentsHtml = this._buildContents(zippedData); + var unzippedData = $.map(this.data, function (d) { return d.value; }); + if (this.data.length) { + this._renderHeader(unzippedData); + this._renderFooter(unzippedData); + if (contentsHtml) { + this._renderContents(contentsHtml); + this._activateIndexedItem(); + } + this._setScroll(); + } else if (this.shown) { + this.deactivate(); + } + }, + + setPosition: function (position) { + this.$el.css(this._applyPlacement(position)); + + // Make the dropdown fixed if the input is also fixed + // This can't be done during init, as textcomplete may be used on multiple elements on the same page + // Because the same dropdown is reused behind the scenes, we need to recheck every time the dropdown is showed + var position = 'absolute'; + // Check if input or one of its parents has positioning we need to care about + this.$inputEl.add(this.$inputEl.parents()).each(function() { + if($(this).css('position') === 'absolute') // The element has absolute positioning, so it's all OK + return false; + if($(this).css('position') === 'fixed') { + position = 'fixed'; + return false; + } + }); + this.$el.css({ position: position }); // Update positioning + + return this; + }, + + clear: function () { + this.$el.html(''); + this.data = []; + this._index = 0; + this._$header = this._$footer = null; + }, + + activate: function () { + if (!this.shown) { + this.clear(); + this.$el.show(); + if (this.className) { this.$el.addClass(this.className); } + this.completer.fire('textComplete:show'); + this.shown = true; + } + return this; + }, + + deactivate: function () { + if (this.shown) { + this.$el.hide(); + if (this.className) { this.$el.removeClass(this.className); } + this.completer.fire('textComplete:hide'); + this.shown = false; + } + return this; + }, + + isUp: function (e) { + return e.keyCode === 38 || (e.ctrlKey && e.keyCode === 80); // UP, Ctrl-P + }, + + isDown: function (e) { + return e.keyCode === 40 || (e.ctrlKey && e.keyCode === 78); // DOWN, Ctrl-N + }, + + isEnter: function (e) { + var modifiers = e.ctrlKey || e.altKey || e.metaKey || e.shiftKey; + return !modifiers && (e.keyCode === 13 || e.keyCode === 9 || (this.option.completeOnSpace === true && e.keyCode === 32)) // ENTER, TAB + }, + + isPageup: function (e) { + return e.keyCode === 33; // PAGEUP + }, + + isPagedown: function (e) { + return e.keyCode === 34; // PAGEDOWN + }, + + // Private properties + // ------------------ + + _data: null, // Currently shown zipped data. + _index: null, + _$header: null, + _$footer: null, + + // Private methods + // --------------- + + _bindEvents: function () { + this.$el.on('mousedown.' + this.id, '.textcomplete-item', $.proxy(this._onClick, this)) + this.$el.on('mouseover.' + this.id, '.textcomplete-item', $.proxy(this._onMouseover, this)); + this.$inputEl.on('keydown.' + this.id, $.proxy(this._onKeydown, this)); + }, + + _onClick: function (e) { + var $el = $(e.target); + e.preventDefault(); + e.originalEvent.keepTextCompleteDropdown = this.id; + if (!$el.hasClass('textcomplete-item')) { + $el = $el.closest('.textcomplete-item'); + } + var datum = this.data[parseInt($el.data('index'), 10)]; + this.completer.select(datum.value, datum.strategy); + var self = this; + // Deactive at next tick to allow other event handlers to know whether + // the dropdown has been shown or not. + setTimeout(function () { self.deactivate(); }, 0); + }, + + // Activate hovered item. + _onMouseover: function (e) { + var $el = $(e.target); + e.preventDefault(); + if (!$el.hasClass('textcomplete-item')) { + $el = $el.closest('.textcomplete-item'); + } + this._index = parseInt($el.data('index'), 10); + this._activateIndexedItem(); + }, + + _onKeydown: function (e) { + if (!this.shown) { return; } + if (this.isUp(e)) { + e.preventDefault(); + this._up(); + } else if (this.isDown(e)) { + e.preventDefault(); + this._down(); + } else if (this.isEnter(e)) { + e.preventDefault(); + this._enter(); + } else if (this.isPageup(e)) { + e.preventDefault(); + this._pageup(); + } else if (this.isPagedown(e)) { + e.preventDefault(); + this._pagedown(); + } + }, + + _up: function () { + if (this._index === 0) { + this._index = this.data.length - 1; + } else { + this._index -= 1; + } + this._activateIndexedItem(); + this._setScroll(); + }, + + _down: function () { + if (this._index === this.data.length - 1) { + this._index = 0; + } else { + this._index += 1; + } + this._activateIndexedItem(); + this._setScroll(); + }, + + _enter: function () { + var datum = this.data[parseInt(this._getActiveElement().data('index'), 10)]; + this.completer.select(datum.value, datum.strategy); + this._setScroll(); + }, + + _pageup: function () { + var target = 0; + var threshold = this._getActiveElement().position().top - this.$el.innerHeight(); + this.$el.children().each(function (i) { + if ($(this).position().top + $(this).outerHeight() > threshold) { + target = i; + return false; + } + }); + this._index = target; + this._activateIndexedItem(); + this._setScroll(); + }, + + _pagedown: function () { + var target = this.data.length - 1; + var threshold = this._getActiveElement().position().top + this.$el.innerHeight(); + this.$el.children().each(function (i) { + if ($(this).position().top > threshold) { + target = i; + return false + } + }); + this._index = target; + this._activateIndexedItem(); + this._setScroll(); + }, + + _activateIndexedItem: function () { + this.$el.find('.textcomplete-item.active').removeClass('active'); + this._getActiveElement().addClass('active'); + }, + + _getActiveElement: function () { + return this.$el.children('.textcomplete-item:nth(' + this._index + ')'); + }, + + _setScroll: function () { + var $activeEl = this._getActiveElement(); + var itemTop = $activeEl.position().top; + var itemHeight = $activeEl.outerHeight(); + var visibleHeight = this.$el.innerHeight(); + var visibleTop = this.$el.scrollTop(); + if (this._index === 0 || this._index == this.data.length - 1 || itemTop < 0) { + this.$el.scrollTop(itemTop + visibleTop); + } else if (itemTop + itemHeight > visibleHeight) { + this.$el.scrollTop(itemTop + itemHeight + visibleTop - visibleHeight); + } + }, + + _buildContents: function (zippedData) { + var datum, i, index; + var html = ''; + for (i = 0; i < zippedData.length; i++) { + if (this.data.length === this.maxCount) break; + datum = zippedData[i]; + if (include(this.data, datum)) { continue; } + index = this.data.length; + this.data.push(datum); + html += '
  • '; + html += datum.strategy.template(datum.value); + html += '
  • '; + } + return html; + }, + + _renderHeader: function (unzippedData) { + if (this.header) { + if (!this._$header) { + this._$header = $('
  • ').prependTo(this.$el); + } + var html = $.isFunction(this.header) ? this.header(unzippedData) : this.header; + this._$header.html(html); + } + }, + + _renderFooter: function (unzippedData) { + if (this.footer) { + if (!this._$footer) { + this._$footer = $('').appendTo(this.$el); + } + var html = $.isFunction(this.footer) ? this.footer(unzippedData) : this.footer; + this._$footer.html(html); + } + }, + + _renderContents: function (html) { + if (this._$footer) { + this._$footer.before(html); + } else { + this.$el.append(html); + } + }, + + _applyPlacement: function (position) { + // If the 'placement' option set to 'top', move the position above the element. + if (this.placement.indexOf('top') !== -1) { + // Overwrite the position object to set the 'bottom' property instead of the top. + position = { + top: 'auto', + bottom: this.$el.parent().height() - position.top + position.lineHeight, + left: position.left + }; + } else { + position.bottom = 'auto'; + delete position.lineHeight; + } + if (this.placement.indexOf('absleft') !== -1) { + position.left = 0; + } else if (this.placement.indexOf('absright') !== -1) { + position.right = 0; + position.left = 'auto'; + } + return position; + } + }); + + $.fn.textcomplete.Dropdown = Dropdown; +}(jQuery); + ++function ($) { + 'use strict'; + + // Memoize a search function. + var memoize = function (func) { + var memo = {}; + return function (term, callback) { + if (memo[term]) { + callback(memo[term]); + } else { + func.call(this, term, function (data) { + memo[term] = (memo[term] || []).concat(data); + callback.apply(null, arguments); + }); + } + }; + }; + + function Strategy(options) { + $.extend(this, options); + if (this.cache) { this.search = memoize(this.search); } + } + + Strategy.parse = function (optionsArray) { + return $.map(optionsArray, function (options) { + return new Strategy(options); + }); + }; + + $.extend(Strategy.prototype, { + // Public properties + // ----------------- + + // Required + match: null, + replace: null, + search: null, + + // Optional + cache: false, + context: function () { return true; }, + index: 2, + template: function (obj) { return obj; }, + idProperty: null + }); + + $.fn.textcomplete.Strategy = Strategy; + +}(jQuery); + ++function ($) { + 'use strict'; + + var now = Date.now || function () { return new Date().getTime(); }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // `wait` msec. + // + // This utility function was originally implemented at Underscore.js. + var debounce = function (func, wait) { + var timeout, args, context, timestamp, result; + var later = function () { + var last = now() - timestamp; + if (last < wait) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + result = func.apply(context, args); + context = args = null; + } + }; + + return function () { + context = this; + args = arguments; + timestamp = now(); + if (!timeout) { + timeout = setTimeout(later, wait); + } + return result; + }; + }; + + function Adapter () {} + + $.extend(Adapter.prototype, { + // Public properties + // ----------------- + + id: null, // Identity. + completer: null, // Completer object which creates it. + el: null, // Textarea element. + $el: null, // jQuery object of the textarea. + option: null, + + // Public methods + // -------------- + + initialize: function (element, completer, option) { + this.el = element; + this.$el = $(element); + this.id = completer.id + this.constructor.name; + this.completer = completer; + this.option = option; + + if (this.option.debounce) { + this._onKeyup = debounce(this._onKeyup, this.option.debounce); + } + + this._bindEvents(); + }, + + destroy: function () { + this.$el.off('.' + this.id); // Remove all event handlers. + this.$el = this.el = this.completer = null; + }, + + // Update the element with the given value and strategy. + // + // value - The selected object. It is one of the item of the array + // which was callbacked from the search function. + // strategy - The Strategy associated with the selected value. + select: function (/* value, strategy */) { + throw new Error('Not implemented'); + }, + + // Returns the caret's relative coordinates from body's left top corner. + // + // FIXME: Calculate the left top corner of `this.option.appendTo` element. + getCaretPosition: function () { + var position = this._getCaretRelativePosition(); + var offset = this.$el.offset(); + position.top += offset.top; + position.left += offset.left; + return position; + }, + + // Focus on the element. + focus: function () { + this.$el.focus(); + }, + + // Private methods + // --------------- + + _bindEvents: function () { + this.$el.on('keyup.' + this.id, $.proxy(this._onKeyup, this)); + }, + + _onKeyup: function (e) { + if (this._skipSearch(e)) { return; } + this.completer.trigger(this.getTextFromHeadToCaret(), true); + }, + + // Suppress searching if it returns true. + _skipSearch: function (clickEvent) { + switch (clickEvent.keyCode) { + case 40: // DOWN + case 38: // UP + return true; + } + if (clickEvent.ctrlKey) switch (clickEvent.keyCode) { + case 78: // Ctrl-N + case 80: // Ctrl-P + return true; + } + } + }); + + $.fn.textcomplete.Adapter = Adapter; +}(jQuery); + ++function ($) { + 'use strict'; + + // Textarea adapter + // ================ + // + // Managing a textarea. It doesn't know a Dropdown. + function Textarea(element, completer, option) { + this.initialize(element, completer, option); + } + + Textarea.DIV_PROPERTIES = { + left: -9999, + position: 'absolute', + top: 0, + whiteSpace: 'pre-wrap' + } + + Textarea.COPY_PROPERTIES = [ + 'border-width', 'font-family', 'font-size', 'font-style', 'font-variant', + 'font-weight', 'height', 'letter-spacing', 'word-spacing', 'line-height', + 'text-decoration', 'text-align', 'width', 'padding-top', 'padding-right', + 'padding-bottom', 'padding-left', 'margin-top', 'margin-right', + 'margin-bottom', 'margin-left', 'border-style', 'box-sizing', 'tab-size' + ]; + + $.extend(Textarea.prototype, $.fn.textcomplete.Adapter.prototype, { + // Public methods + // -------------- + + // Update the textarea with the given value and strategy. + select: function (value, strategy) { + var pre = this.getTextFromHeadToCaret(); + var post = this.el.value.substring(this.el.selectionEnd); + var newSubstr = strategy.replace(value); + if ($.isArray(newSubstr)) { + post = newSubstr[1] + post; + newSubstr = newSubstr[0]; + } + pre = pre.replace(strategy.match, newSubstr); + this.$el.val(pre + post); + this.el.selectionStart = this.el.selectionEnd = pre.length; + }, + + // Private methods + // --------------- + + // Returns the caret's relative coordinates from textarea's left top corner. + // + // Browser native API does not provide the way to know the position of + // caret in pixels, so that here we use a kind of hack to accomplish + // the aim. First of all it puts a dummy div element and completely copies + // the textarea's style to the element, then it inserts the text and a + // span element into the textarea. + // Consequently, the span element's position is the thing what we want. + _getCaretRelativePosition: function () { + var dummyDiv = $('
    ').css(this._copyCss()) + .text(this.getTextFromHeadToCaret()); + var span = $('').text('.').appendTo(dummyDiv); + this.$el.before(dummyDiv); + var position = span.position(); + position.top += span.height() - this.$el.scrollTop(); + position.lineHeight = span.height(); + dummyDiv.remove(); + return position; + }, + + _copyCss: function () { + return $.extend({ + // Set 'scroll' if a scrollbar is being shown; otherwise 'auto'. + overflow: this.el.scrollHeight > this.el.offsetHeight ? 'scroll' : 'auto' + }, Textarea.DIV_PROPERTIES, this._getStyles()); + }, + + _getStyles: (function ($) { + var color = $('
    ').css(['color']).color; + if (typeof color !== 'undefined') { + return function () { + return this.$el.css(Textarea.COPY_PROPERTIES); + }; + } else { // jQuery < 1.8 + return function () { + var $el = this.$el; + var styles = {}; + $.each(Textarea.COPY_PROPERTIES, function (i, property) { + styles[property] = $el.css(property); + }); + return styles; + }; + } + })($), + + getTextFromHeadToCaret: function () { + return this.el.value.substring(0, this.el.selectionEnd); + } + }); + + $.fn.textcomplete.Textarea = Textarea; +}(jQuery); + ++function ($) { + 'use strict'; + + var sentinelChar = '吶'; + + function IETextarea(element, completer, option) { + this.initialize(element, completer, option); + $('' + sentinelChar + '').css({ + position: 'absolute', + top: -9999, + left: -9999 + }).insertBefore(element); + } + + $.extend(IETextarea.prototype, $.fn.textcomplete.Textarea.prototype, { + // Public methods + // -------------- + + select: function (value, strategy) { + var pre = this.getTextFromHeadToCaret(); + var post = this.el.value.substring(pre.length); + var newSubstr = strategy.replace(value); + if ($.isArray(newSubstr)) { + post = newSubstr[1] + post; + newSubstr = newSubstr[0]; + } + pre = pre.replace(strategy.match, newSubstr); + this.$el.val(pre + post); + this.el.focus(); + var range = this.el.createTextRange(); + range.collapse(true); + range.moveEnd('character', pre.length); + range.moveStart('character', pre.length); + range.select(); + }, + + getTextFromHeadToCaret: function () { + this.el.focus(); + var range = document.selection.createRange(); + range.moveStart('character', -this.el.value.length); + var arr = range.text.split(sentinelChar) + return arr.length === 1 ? arr[0] : arr[1]; + } + }); + + $.fn.textcomplete.IETextarea = IETextarea; +}(jQuery); + +// NOTE: TextComplete plugin has contenteditable support but it does not work +// fine especially on old IEs. +// Any pull requests are REALLY welcome. + ++function ($) { + 'use strict'; + + // ContentEditable adapter + // ======================= + // + // Adapter for contenteditable elements. + function ContentEditable (element, completer, option) { + this.initialize(element, completer, option); + } + + $.extend(ContentEditable.prototype, $.fn.textcomplete.Adapter.prototype, { + // Public methods + // -------------- + + // Update the content with the given value and strategy. + // When an dropdown item is selected, it is executed. + select: function (value, strategy) { + var pre = this.getTextFromHeadToCaret(); + var sel = window.getSelection() + var range = sel.getRangeAt(0); + var selection = range.cloneRange(); + selection.selectNodeContents(range.startContainer); + var content = selection.toString(); + var post = content.substring(range.startOffset); + var newSubstr = strategy.replace(value); + if ($.isArray(newSubstr)) { + post = newSubstr[1] + post; + newSubstr = newSubstr[0]; + } + pre = pre.replace(strategy.match, newSubstr); + range.selectNodeContents(range.startContainer); + range.deleteContents(); + var node = document.createTextNode(pre + post); + range.insertNode(node); + range.setStart(node, pre.length); + range.collapse(true); + sel.removeAllRanges(); + sel.addRange(range); + }, + + // Private methods + // --------------- + + // Returns the caret's relative position from the contenteditable's + // left top corner. + // + // Examples + // + // this._getCaretRelativePosition() + // //=> { top: 18, left: 200, lineHeight: 16 } + // + // Dropdown's position will be decided using the result. + _getCaretRelativePosition: function () { + var range = window.getSelection().getRangeAt(0).cloneRange(); + var node = document.createElement('span'); + range.insertNode(node); + range.selectNodeContents(node); + range.deleteContents(); + var $node = $(node); + var position = $node.offset(); + position.left -= this.$el.offset().left; + position.top += $node.height() - this.$el.offset().top; + position.lineHeight = $node.height(); + var dir = this.$el.attr('dir') || this.$el.css('direction'); + if (dir === 'rtl') { position.left -= this.listView.$el.width(); } + return position; + }, + + // Returns the string between the first character and the caret. + // Completer will be triggered with the result for start autocompleting. + // + // Example + // + // // Suppose the html is 'hello wor|ld' and | is the caret. + // this.getTextFromHeadToCaret() + // // => ' wor' // not 'hello wor' + getTextFromHeadToCaret: function () { + var range = window.getSelection().getRangeAt(0); + var selection = range.cloneRange(); + selection.selectNodeContents(range.startContainer); + return selection.toString().substring(0, range.startOffset); + } + }); + + $.fn.textcomplete.ContentEditable = ContentEditable; +}(jQuery); diff --git a/view/templates/display-head.tpl b/view/templates/display-head.tpl index 2050cdec0f..9a96a23988 100644 --- a/view/templates/display-head.tpl +++ b/view/templates/display-head.tpl @@ -1,9 +1,9 @@ diff --git a/view/templates/head.tpl b/view/templates/head.tpl index 17c459c4d8..129e5cfd25 100644 --- a/view/templates/head.tpl +++ b/view/templates/head.tpl @@ -33,7 +33,9 @@ - + + + diff --git a/view/templates/jot-header.tpl b/view/templates/jot-header.tpl index 647f261c45..84ce88a881 100644 --- a/view/templates/jot-header.tpl +++ b/view/templates/jot-header.tpl @@ -12,7 +12,7 @@ function initEditor(cb){ if(plaintext == 'none') { $("#profile-jot-text-loading").hide(); $("#profile-jot-text").css({ 'height': 200, 'color': '#000' }); - $("#profile-jot-text").contact_autocomplete(baseurl+"/acl"); + $("#profile-jot-text").editor_autocomplete(baseurl+"/acl"); editor = true; $("a#jot-perms-icon").colorbox({ 'inline' : true, From c42922f25f34f7d34fa50bc743680169542ac4a5 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 20 Jan 2016 03:34:22 +0100 Subject: [PATCH 002/485] rework autocomplete: make remote and local search work --- include/acl_selectors.php | 75 +++++++++++++++++++++++++++++++++++++++ include/dir_fns.php | 36 +++++++++++++++++++ include/nav.php | 8 +++++ 3 files changed, 119 insertions(+) create mode 100644 include/dir_fns.php diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 69181b7359..19197981e0 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -545,6 +545,26 @@ function acl_lookup(&$a, $out_type = 'json') { intval(local_user()) ); } + elseif($type == 'x') { + $r = navbar_complete($a); + $contacts = array(); + if($r) { + foreach($r as $g) { + $contacts[] = array( + "photo" => $g['photo'], + "name" => $g['name'], + "nick" => (x($g['addr']) ? $g['addr'] : $g['url']), + ); + } + } + $o = array( + 'start' => $start, + 'count' => $count, + 'items' => $contacts, + ); + echo json_encode($o); + killme(); + } else $r = array(); @@ -655,3 +675,58 @@ function acl_lookup(&$a, $out_type = 'json') { killme(); } +function navbar_complete(&$a) { + +// logger('navbar_complete'); + + if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) { + return; + } + + $local = get_config('system','poco_local_search'); + $local = true; + + $search = $prefix.notags(trim($_REQUEST['search'])); + if(! $search || mb_strlen($search) < 2) + return array(); + + $star = false; + $address = false; + + if(substr($search,0,1) === '@') + $search = substr($search,1); + + if(substr($search,0,1) === '*') { + $star = true; + $search = substr($search,1); + } + + if(strpos($search,'@') !== false) { + $address = true; + } + + if($local) { + require_once("include/dir_fns.php"); + $x = dirsearch_autocomplete($search); + return $x; + } + + if(! $local) { + require_once("include/dir_fns.php"); + $url = $directory['url'] . '/dirsearch'; + + + $p = (($a->pager['page'] != 1) ? '&p=' . $a->pager['page'] : ''); + + + $x = z_fetch_url(get_server().'/lsearch?f=' . $p . '&search=' . urlencode($search)); + if($x['success']) { + $t = 0; + $j = json_decode($x['body'],true); + if($j && $j['results']) { + return $j['results']; + } + } + } + return; +} \ No newline at end of file diff --git a/include/dir_fns.php b/include/dir_fns.php new file mode 100644 index 0000000000..a362732b7b --- /dev/null +++ b/include/dir_fns.php @@ -0,0 +1,36 @@ + 0 OR (NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND + ((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)))) AND + (`gcontact`.`url` REGEXP '%s' OR `gcontact`.`name` REGEXP '%s' OR `gcontact`.`nick` REGEXP '%s' + ) + GROUP BY `gcontact`.`nurl` + ORDER BY `gcontact`.`updated` DESC ", + intval(local_user()), dbesc(CONTACT_IS_SHARING), dbesc(CONTACT_IS_FRIEND), + dbesc(NETWORK_DFRN), dbesc($ostatus), dbesc($diaspora), + dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search))); + return $results; + } + +} \ No newline at end of file diff --git a/include/nav.php b/include/nav.php index 6512d35609..0261ab7d66 100644 --- a/include/nav.php +++ b/include/nav.php @@ -11,10 +11,18 @@ function nav(&$a) { if(!(x($a->page,'nav'))) $a->page['nav'] = ''; + $base = z_root(); /** * Placeholder div for popup panel */ + $a->page['htmlhead'] .= <<< EOT + + +EOT; $a->page['nav'] .= '' ; $nav_info = nav_info($a); From e3475bd5876b3a5b60506840738deec232e64d57 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Thu, 21 Jan 2016 13:28:29 +0100 Subject: [PATCH 003/485] rework autocomplete: css work --- js/autocomplete.js | 171 ++++++++++++++++++- view/global.css | 57 ++++++- view/templates/msg-header.tpl | 2 +- view/templates/wallmsg-header.tpl | 2 +- view/theme/duepuntozero/style.css | 16 +- view/theme/frost-mobile/js/main.js | 2 +- view/theme/frost-mobile/js/theme.js | 4 +- view/theme/frost-mobile/style.css | 58 +++++++ view/theme/frost-mobile/templates/end.tpl | 3 +- view/theme/frost/js/main.js | 2 +- view/theme/frost/js/theme.js | 6 +- view/theme/frost/style.css | 65 ++++++- view/theme/frost/templates/end.tpl | 3 +- view/theme/quattro/dark/style.css | 17 +- view/theme/quattro/green/style.css | 17 +- view/theme/quattro/lilac/style.css | 23 ++- view/theme/quattro/quattro.less | 12 +- view/theme/smoothly/style.css | 13 +- view/theme/smoothly/templates/jot-header.tpl | 2 +- view/theme/vier/style.css | 21 ++- 20 files changed, 460 insertions(+), 36 deletions(-) diff --git a/js/autocomplete.js b/js/autocomplete.js index aa4494b714..1f7df011d3 100644 --- a/js/autocomplete.js +++ b/js/autocomplete.js @@ -1,10 +1,14 @@ /** - * Red people autocomplete + * Friendica people autocomplete * * require jQuery, jquery.textcomplete */ function contact_search(term, callback, backend_url, type) { + // Check if there is a conversation id to include the unkonwn contacts of the conversation + var conv_id = document.activeElement.id.match(/\d+$/); + + // Check if there is a cached result that contains the same information we would get with a full server-side search var bt = backend_url+type; if(!(bt in contact_search.cache)) contact_search.cache[bt] = {}; @@ -27,6 +31,9 @@ function contact_search(term, callback, backend_url, type) { type:type, }; + if(conv_id !== null) + postdata['conversation'] = conv_id[0]; + $.ajax({ type:'POST', @@ -54,7 +61,7 @@ function contact_format(item) { var desc = ((item.label) ? item.nick + ' ' + item.label : item.nick); if(typeof desc === 'undefined') desc = ''; if(desc) desc = ' ('+desc+')'; - return "
    {2}{3}
    ".format(item.taggable, item.photo, item.name, desc, item.link); + return "
    {2}{3}
    ".format(item.taggable, item.photo, item.name, desc, item.link); } else return "
    " + item.text + "
    "; @@ -190,3 +197,163 @@ function submit_form(e) { a.on('textComplete:select', function(e, value, strategy) { onselect(value); }); }; })( jQuery ); + + +/** + * Friendica people autocomplete legacy + * code which is needed for tinymce + * + * require jQuery, jquery.textareas + */ + +function ACPopup(elm,backend_url){ + this.idsel=-1; + this.element = elm; + this.searchText=""; + this.ready=true; + this.kp_timer = false; + this.url = backend_url; + + this.conversation_id = null; + var conv_id = this.element.id.match(/\d+$/); + if (conv_id) this.conversation_id = conv_id[0]; + console.log("ACPopup elm id",this.element.id,"conversation",this.conversation_id); + + var w = 530; + var h = 130; + + + if(tinyMCE.activeEditor == null) { + style = $(elm).offset(); + w = $(elm).width(); + h = $(elm).height(); + } + else { + // I can't find an "official" way to get the element who get all + // this fraking thing that is tinyMCE. + // This code will broke again at some point... + var container = $(tinyMCE.activeEditor.getContainer()).find("table"); + style = $(container).offset(); + w = $(container).width(); + h = $(container).height(); + } + + style.top=style.top+h; + style.width = w; + style.position = 'absolute'; + /* style['max-height'] = '150px'; + style.border = '1px solid red'; + style.background = '#cccccc'; + + style.overflow = 'auto'; + style['z-index'] = '100000'; + */ + style.display = 'none'; + + this.cont = $("
    "); + this.cont.css(style); + + $("body").append(this.cont); + } + +ACPopup.prototype.close = function(){ + $(this.cont).remove(); + this.ready=false; +} +ACPopup.prototype.search = function(text){ + var that = this; + this.searchText=text; + if (this.kp_timer) clearTimeout(this.kp_timer); + this.kp_timer = setTimeout( function(){that._search();}, 500); +} + +ACPopup.prototype._search = function(){ + console.log("_search"); + var that = this; + var postdata = { + start:0, + count:100, + search:this.searchText, + type:'c', + conversation: this.conversation_id, + } + + $.ajax({ + type:'POST', + url: this.url, + data: postdata, + dataType: 'json', + success:function(data){ + that.cont.html(""); + if (data.tot>0){ + that.cont.show(); + $(data.items).each(function(){ + var html = "{1} ({2})".format(this.photo, this.name, this.nick); + var nick = this.nick.replace(' ',''); + if (this.id!=='') nick += '+' + this.id; + that.add(html, nick + ' - ' + this.link); + }); + } else { + that.cont.hide(); + } + } + }); + +} + +ACPopup.prototype.add = function(label, value){ + var that=this; + var elm = $("
    "+label+"
    "); + elm.click(function(e){ + t = $(this).attr('title').replace(new RegExp(' \- .*'),''); + if(typeof(that.element.container) === "undefined") { + el=$(that.element); + sel = el.getSelection(); + sel.start = sel.start- that.searchText.length; + el.setSelection(sel.start,sel.end).replaceSelectedText(t+' ').collapseSelection(false); + that.close(); + } + else { + txt = tinyMCE.activeEditor.getContent(); + // alert(that.searchText + ':' + t); + newtxt = txt.replace('@' + that.searchText,'@' + t +' '); + tinyMCE.activeEditor.setContent(newtxt); + tinyMCE.activeEditor.focus(); + that.close(); + } + }); + $(this.cont).append(elm); +} + +ACPopup.prototype.onkey = function(event){ + if (event.keyCode == '13') { + if(this.idsel>-1) { + this.cont.children()[this.idsel].click(); + event.preventDefault(); + } + else + this.close(); + } + if (event.keyCode == '38') { //cursor up + cmax = this.cont.children().size()-1; + this.idsel--; + if (this.idsel<0) this.idsel=cmax; + event.preventDefault(); + } + if (event.keyCode == '40' || event.keyCode == '9') { //cursor down + cmax = this.cont.children().size()-1; + this.idsel++; + if (this.idsel>cmax) this.idsel=0; + event.preventDefault(); + } + + if (event.keyCode == '38' || event.keyCode == '40' || event.keyCode == '9') { + this.cont.children().removeClass('selected'); + $(this.cont.children()[this.idsel]).addClass('selected'); + } + + if (event.keyCode == '27') { //ESC + this.close(); + } +} + diff --git a/view/global.css b/view/global.css index 8646bf8e44..ff2810292c 100644 --- a/view/global.css +++ b/view/global.css @@ -177,12 +177,67 @@ key { display: inline; background-color: #eee; color: #666; padding:0.2em; font- /* fields help text */ .field .field_help { - clear: left; + clear: left; } /* notifications unseen */ .notify-unseen { background-color: #cceeFF; } +/* autocomplete popup */ + +ul.acpopup { + list-style: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; +} +nav .acpopup { + width: 290px; + margin-left: -35px; + max-height: 450px; + max-width: 300px; + overflow-y: auto; + overflow-x: hidden; + margin-top: 0px; +} +img.acpopup-img { + float: left; + width: 36px; + height: 36px; + margin-right: 5px; + vertical-align: middle; +} +.acpopup-contactname { + padding-top: 2px; + font-weight: bold; + line-height: 1em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; +} +.acpopup-sub-text { + color: #777; + font-size: 0.833em; + line-height: 1em; + overflow: hidden; + text-overflow: ellipsis; + display: block; +} +.textcomplete-item a { + color: inherit; + overflow: hidden; + text-overflow: ellipsis; + clear: both; + white-space: nowrap; + padding: 3px 20px; + display: block; +} +.textcomplete-item a:hover { + text-decoration: none; +} + /* plain text editor upload/select popup */ .fbrowser .path a { padding: 5px; } diff --git a/view/templates/msg-header.tpl b/view/templates/msg-header.tpl index 86598bbf6c..9b1a92ef5f 100644 --- a/view/templates/msg-header.tpl +++ b/view/templates/msg-header.tpl @@ -44,7 +44,7 @@ if(plaintext != 'none') { }); } else - $("#prvmail-text").contact_autocomplete(baseurl+"/acl"); + $("#prvmail-text").editor_autocomplete(baseurl+"/acl"); diff --git a/view/templates/wallmsg-header.tpl b/view/templates/wallmsg-header.tpl index f03f496fe2..2d4cd23797 100644 --- a/view/templates/wallmsg-header.tpl +++ b/view/templates/wallmsg-header.tpl @@ -44,7 +44,7 @@ if(plaintext != 'none') { }); } else - $("#prvmail-text").contact_autocomplete(baseurl+"/acl"); + $("#prvmail-text").editor_autocomplete(baseurl+"/acl"); diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index c004eb53d0..e5cc39046d 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -144,7 +144,7 @@ nav #banner #logo-text a:hover { text-decoration: none; } height: 15px; margin-top: 67px; margin-right: 2px; - //padding: 6px 10px; + /*padding: 6px 10px;*/ padding: 6px 3px; float: left; bottom: 140px; @@ -244,7 +244,7 @@ section { display:block; float:left; padding: 0.4em; - //margin-right: 1em; + /*margin-right: 1em;*/ margin-right: 3px ; } .tab.active { @@ -3288,6 +3288,12 @@ aside input[type='text'] { /* autocomplete popup */ .acpopup { + background-color:#ffffff; + overflow:auto; + z-index:100000; + border:1px solid #cccccc; +} +.acpopup-mce { max-height:150px; background-color:#ffffff; overflow:auto; @@ -3306,6 +3312,12 @@ aside input[type='text'] { .acpopupitem.selected { color: #FFFFFF; background: #3465A4; } +.textcomplete-item.active { + color: #FFFFFF; background: #3465A4; +} +.active a .acpopup-sub-text { + color: #fff; +} /* popup notifications */ div.jGrowl div.notice { diff --git a/view/theme/frost-mobile/js/main.js b/view/theme/frost-mobile/js/main.js index 9eac71be83..d24e41e8c6 100644 --- a/view/theme/frost-mobile/js/main.js +++ b/view/theme/frost-mobile/js/main.js @@ -389,7 +389,7 @@ $('body').css('cursor', 'auto'); } /* autocomplete @nicknames */ - $(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl"); + $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl"); // setup videos, since VideoJS won't take care of any loaded via AJAX if(typeof videojs != 'undefined') videojs.autoSetup(); diff --git a/view/theme/frost-mobile/js/theme.js b/view/theme/frost-mobile/js/theme.js index 8133c602c8..c021370874 100644 --- a/view/theme/frost-mobile/js/theme.js +++ b/view/theme/frost-mobile/js/theme.js @@ -121,7 +121,7 @@ $(document).ready(function() { a.setOptions({ params: { type: 'a' }}); break; case 'display-head': - $(".comment-wwedit-wrapper textarea").contact_autocomplete(baseurl+"/acl"); + $(".comment-wwedit-wrapper textarea").editor_autocomplete(baseurl+"/acl"); break; default: break; @@ -286,7 +286,7 @@ function initEditor(cb){ if(plaintext == 'none') { // $("#profile-jot-text-loading").hide(); $("#profile-jot-text").css({ 'height': 200, 'color': '#000' }); - $("#profile-jot-text").contact_autocomplete(baseurl+"/acl"); + $("#profile-jot-text").editor_autocomplete(baseurl+"/acl"); editor = true; /* $("a#jot-perms-icon").colorbox({ 'inline' : true, diff --git a/view/theme/frost-mobile/style.css b/view/theme/frost-mobile/style.css index 400b23c10b..24373eda54 100644 --- a/view/theme/frost-mobile/style.css +++ b/view/theme/frost-mobile/style.css @@ -4160,6 +4160,64 @@ aside input[type='text'] { .acpopupitem.selected { color: #FFFFFF; background: #3465A4; } +ul.acpopup { + list-style: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; +} +nav .acpopup { + width: 290px; + margin-left: -35px; + max-height: 450px; + max-width: 300px; + overflow-y: auto; + overflow-x: hidden; + margin-top: 0px; +} +img.acpopup-img { + float: left; + width: 36px; + height: 36px; + margin-right: 5px; + vertical-align: middle; +} +.acpopup-contactname { + padding-top: 2px; + font-weight: bold; + line-height: 1em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; +} +.acpopup-sub-text { + color: #777; + font-size: 0.833em; + line-height: 1em; + overflow: hidden; + text-overflow: ellipsis; + display: block; +} +.textcomplete-item a { + color: inherit; + overflow: hidden; + text-overflow: ellipsis; + clear: both; + white-space: nowrap; + padding: 3px 20px; + display: block; +} +.textcomplete-item a:hover { + text-decoration: none; +} +.textcomplete-item.active { + color: #FFFFFF; background: #3465A4; +} +.active a .acpopup-sub-text { + color: #fff; +} /* popup notifications */ div.jGrowl div.notice { diff --git a/view/theme/frost-mobile/templates/end.tpl b/view/theme/frost-mobile/templates/end.tpl index 8d4b26bdcb..c1acbfb2a6 100644 --- a/view/theme/frost-mobile/templates/end.tpl +++ b/view/theme/frost-mobile/templates/end.tpl @@ -7,7 +7,8 @@ - + + diff --git a/view/theme/frost/js/main.js b/view/theme/frost/js/main.js index 5483ad6bc3..733064b30d 100644 --- a/view/theme/frost/js/main.js +++ b/view/theme/frost/js/main.js @@ -402,7 +402,7 @@ $('body').css('cursor', 'auto'); } /* autocomplete @nicknames */ - $(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl"); + $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl"); collapseHeight(); diff --git a/view/theme/frost/js/theme.js b/view/theme/frost/js/theme.js index a14a034bc1..4418c1f3c4 100644 --- a/view/theme/frost/js/theme.js +++ b/view/theme/frost/js/theme.js @@ -232,7 +232,7 @@ $(document).ready(function() { a.setOptions({ params: { type: 'a' }}); break; case 'display-head': - $(".comment-wwedit-wrapper textarea").contact_autocomplete(baseurl+"/acl"); + $(".comment-wwedit-wrapper textarea").editor_autocomplete(baseurl+"/acl"); break; default: break; @@ -587,7 +587,7 @@ function initEditor(cb){ plaintextFn : function() { $("#profile-jot-text-loading").hide(); $("#profile-jot-text").css({ 'height': 200, 'color': '#000' }); - $("#profile-jot-text").contact_autocomplete(baseurl+"/acl"); + $("#profile-jot-text").editor_autocomplete(baseurl+"/acl"); $(".jothidden").show(); if (typeof cb!="undefined") cb(); } @@ -660,7 +660,7 @@ function msgInitEditor() { }); }, plaintextFn : function() { - $("#prvmail-text").contact_autocomplete(baseurl+"/acl"); + $("#prvmail-text").editor_autocomplete(baseurl+"/acl"); } } InitMCEEditor(editorData); diff --git a/view/theme/frost/style.css b/view/theme/frost/style.css index 3dd400c76b..fe07ad2651 100644 --- a/view/theme/frost/style.css +++ b/view/theme/frost/style.css @@ -4010,13 +4010,15 @@ aside input[type='text'] { /* autocomplete popup */ -.acpopup { - max-height:150px; +.acpopup, .acpopup-mce { background-color:#ffffff; overflow:auto; z-index:100000; border:1px solid #cccccc; } +.acpopup-mce { + max-height:150px; +} .acpopupitem { background-color:#ffffff; padding: 4px; clear:left; @@ -4030,6 +4032,65 @@ aside input[type='text'] { color: #FFFFFF; background: #3465A4; } +ul.acpopup { + list-style: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; +} +nav .acpopup { + width: 290px; + margin-left: -35px; + max-height: 450px; + max-width: 300px; + overflow-y: auto; + overflow-x: hidden; + margin-top: 0px; +} +img.acpopup-img { + float: left; + width: 36px; + height: 36px; + margin-right: 5px; + vertical-align: middle; +} +.acpopup-contactname { + padding-top: 2px; + font-weight: bold; + line-height: 1em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; +} +.acpopup-sub-text { + color: #777; + font-size: 0.833em; + line-height: 1em; + overflow: hidden; + text-overflow: ellipsis; + display: block; +} +.textcomplete-item a { + color: inherit; + overflow: hidden; + text-overflow: ellipsis; + clear: both; + white-space: nowrap; + padding: 3px 20px; + display: block; +} +.textcomplete-item a:hover { + text-decoration: none; +} +.textcomplete-item.active { + color: #FFFFFF; background: #3465A4; +} +.active a .acpopup-sub-text { + color: #fff; +} + /* popup notifications */ div.jGrowl div.notice { background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center; diff --git a/view/theme/frost/templates/end.tpl b/view/theme/frost/templates/end.tpl index 4242f80c81..e864a9498d 100644 --- a/view/theme/frost/templates/end.tpl +++ b/view/theme/frost/templates/end.tpl @@ -19,7 +19,8 @@ - + + diff --git a/view/theme/quattro/dark/style.css b/view/theme/quattro/dark/style.css index 847017ee5b..04e7a2ad54 100644 --- a/view/theme/quattro/dark/style.css +++ b/view/theme/quattro/dark/style.css @@ -463,7 +463,7 @@ a:hover { text-decoration: underline; } blockquote { - background: #FFFFFF; + background: #ffffff; padding: 1em; margin-left: 1em; border-left: 1em solid #e6e6e6; @@ -744,8 +744,12 @@ ul.menu-popup .toolbar a:hover { } /* autocomplete popup */ .autocomplete, -.acpopup { +.acpopup-mce { max-height: 150px; +} +.autocomplete, +.acpopup-mce, +.acpopup { background-color: #ffffff; color: #2d2d2d; border: 1px solid #364e59; @@ -774,6 +778,15 @@ ul.menu-popup .toolbar a:hover { .acpopupitem.selected { background-color: #bdcdd4; } +.textcomplete-item { + color: #2d2d2d; +} +.textcomplete-item a:hover { + color: #2d2d2d; +} +.textcomplete-item.active { + background-color: #bdcdd4; +} #nav-notifications-menu { width: 400px; max-height: 550px; diff --git a/view/theme/quattro/green/style.css b/view/theme/quattro/green/style.css index 4cfcb59273..13f328d026 100644 --- a/view/theme/quattro/green/style.css +++ b/view/theme/quattro/green/style.css @@ -463,7 +463,7 @@ a:hover { text-decoration: underline; } blockquote { - background: #FFFFFF; + background: #ffffff; padding: 1em; margin-left: 1em; border-left: 1em solid #e6e6e6; @@ -744,8 +744,12 @@ ul.menu-popup .toolbar a:hover { } /* autocomplete popup */ .autocomplete, -.acpopup { +.acpopup-mce { max-height: 150px; +} +.autocomplete, +.acpopup-mce, +.acpopup { background-color: #ffffff; color: #2d2d2d; border: 1px solid #364e59; @@ -774,6 +778,15 @@ ul.menu-popup .toolbar a:hover { .acpopupitem.selected { background-color: #ccff42; } +.textcomplete-item { + color: #2d2d2d; +} +.textcomplete-item a:hover { + color: #2d2d2d; +} +.textcomplete-item.active { + background-color: #ccff42; +} #nav-notifications-menu { width: 400px; max-height: 550px; diff --git a/view/theme/quattro/lilac/style.css b/view/theme/quattro/lilac/style.css index 2ff7cfcb0c..5ad7e20284 100644 --- a/view/theme/quattro/lilac/style.css +++ b/view/theme/quattro/lilac/style.css @@ -420,7 +420,7 @@ body { font-family: Liberation Sans, helvetica, arial, clean, sans-serif; font-size: 11px; - background-color: #F6ECF9; + background-color: #f6ecf9; color: #2d2d2d; margin: 50px 0 0 0; display: table; @@ -463,7 +463,7 @@ a:hover { text-decoration: underline; } blockquote { - background: #FFFFFF; + background: #ffffff; padding: 1em; margin-left: 1em; border-left: 1em solid #e6e6e6; @@ -744,8 +744,12 @@ ul.menu-popup .toolbar a:hover { } /* autocomplete popup */ .autocomplete, -.acpopup { +.acpopup-mce { max-height: 150px; +} +.autocomplete, +.acpopup-mce, +.acpopup { background-color: #ffffff; color: #2d2d2d; border: 1px solid #364e59; @@ -774,6 +778,15 @@ ul.menu-popup .toolbar a:hover { .acpopupitem.selected { background-color: #c0a3c7; } +.textcomplete-item { + color: #2d2d2d; +} +.textcomplete-item a:hover { + color: #2d2d2d; +} +.textcomplete-item.active { + background-color: #c0a3c7; +} #nav-notifications-menu { width: 400px; max-height: 550px; @@ -1753,7 +1766,7 @@ span[id^="showmore-wrap"] { height: 20px; width: 500px; font-weight: bold; - border: 1px solid #F6ECF9; + border: 1px solid #f6ecf9; } #jot #jot-title:-webkit-input-placeholder { font-weight: normal; @@ -1780,7 +1793,7 @@ span[id^="showmore-wrap"] { margin: 0; height: 20px; width: 200px; - border: 1px solid #F6ECF9; + border: 1px solid #f6ecf9; } #jot #jot-category:hover { border: 1px solid #999999; diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less index 681cfcc374..3360ce3373 100644 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -265,9 +265,10 @@ ul.menu-popup { } /* autocomplete popup */ +.autocomplete, .acpopup-mce { max-height:150px; } .autocomplete, +.acpopup-mce, .acpopup { - max-height:150px; background-color:@MenuBg; color: @Menu; border:1px solid @MenuBorder; @@ -291,6 +292,15 @@ ul.menu-popup { background-color: @MenuItemHoverBg; } } +.textcomplete-item { + color: @MenuItem; + a:hover{ + color: @MenuItem; + } + &.active{ + background-color: @MenuItemHoverBg; + } +} #nav-notifications-menu { diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index b9f094932d..1415949606 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -4353,8 +4353,7 @@ ul.menu-popup { } /* autocomplete popup */ -.acpopup { - max-height: 150px; +.acpopup, acpopup-mce { overflow: auto; z-index: 100000; color: #2e3436; @@ -4371,6 +4370,10 @@ ul.menu-popup { -webkit-box-shadow: 0 0 8px #BDBDBD; } +.acpopup-mce { + max-height: 150px; +} + .acpopupitem { color: #2e3436; padding: 4px; @@ -4381,7 +4384,7 @@ ul.menu-popup { margin-right: 4px; } -.acpopupitem.selected { +.acpopupitem.selected, .textcomplete-item.active { color: #efefef; background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); @@ -4390,6 +4393,10 @@ ul.menu-popup { order-bottom: none; } +.textcomplete-item a:hover, .textcomplete-item a:hover .acpopup-sub-text, .textcomplete-item.active a .acpopup-sub-text { + color: #efefef; +} + .qcomment { opacity: 0.8; filter: alpha(opacity=0); diff --git a/view/theme/smoothly/templates/jot-header.tpl b/view/theme/smoothly/templates/jot-header.tpl index f096d25823..8b2666f0f3 100644 --- a/view/theme/smoothly/templates/jot-header.tpl +++ b/view/theme/smoothly/templates/jot-header.tpl @@ -12,7 +12,7 @@ function initEditor(cb){ if(plaintext == 'none') { $("#profile-jot-text-loading").hide(); $("#profile-jot-text").css({ 'height': 200, 'color': '#000' }); - $("#profile-jot-text").contact_autocomplete(baseurl+"/acl"); + $("#profile-jot-text").editor_autocomplete(baseurl+"/acl"); $(".jothidden").show(); editor = true; $("a#jot-perms-icon").colorbox({ diff --git a/view/theme/vier/style.css b/view/theme/vier/style.css index defeec7023..ddf3df1dee 100644 --- a/view/theme/vier/style.css +++ b/view/theme/vier/style.css @@ -430,7 +430,7 @@ code { .sidebar-group-li:hover, #sidebar-new-group:hover, #sidebar-edit-groups:hover,#forum-widget-collapse:hover, #sidebar-ungrouped:hover, .side-link:hover, .nets-ul li:hover, #forumlist-sidebar li:hover, #forumlist-sidebar-right li:hover, .nets-all:hover, .saved-search-li:hover, li.tool:hover, .admin.link:hover, aside h4 a:hover, right_aside h4 a:hover, #message-new:hover, -#sidebar-photos-albums li:hover, .photos-upload-link:hover { +#sidebar-photos-albums li:hover, .photos-upload-link:hover, .textcomplete-item.active { /* background-color: #ddd; */ /* background-color: #e5e5e5; */ background-color: #F5F5F5; @@ -900,15 +900,18 @@ ul.menu-popup .empty { color: #9eabb0; } /* autocomplete popup */ -.acpopup { - max-height: 150px; + +.acpopup, .acpopup-mce { background-color: #ffffff; - color: #2d2d2d; border: 1px solid #MenuBorder; overflow: auto; z-index: 100000; box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); } +acpopup-mce { + color: #2d2d2d; + max-height: 150px; +} .acpopupitem { color: #2d2d2d; padding: 4px; @@ -921,6 +924,16 @@ ul.menu-popup .empty { .acpopupitem.selected { background-color: #bdcdd4; } +.textcomplete-item { + float: none; +} +.textcomplete-item a { + color: #737373; +} +.textcomplete-item a:hover { + padding: 3px 20px; +} + #nav-notifications-menu { width: 400px; max-height: 550px; From 39a849c113de16a4e1f09a9b197cd2491cf4d6fa Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Fri, 22 Jan 2016 17:47:48 +0100 Subject: [PATCH 004/485] rework autocomplete: new ac for poke, contacts, prv_messages --- include/acl_selectors.php | 43 +- library/jquery_ac/README | 4 - library/jquery_ac/friendica.complete.js | 395 ------------------ library/jquery_ac/friendica.complete.min.js | 10 - library/jquery_ac/jquery-1.3.2.min.js | 19 - library/jquery_ac/jquery.autocomplete-min.js | 11 - library/jquery_ac/jquery.autocomplete.js | 390 ----------------- library/jquery_ac/shadow.png | Bin 3403 -> 0 bytes library/jquery_ac/styles.css | 6 - view/templates/contacts-head.tpl | 27 +- view/templates/head.tpl | 1 - view/templates/message-head.tpl | 20 +- view/templates/poke_head.tpl | 20 +- view/theme/frost-mobile/js/theme.js | 26 +- .../frost-mobile/templates/contacts-end.tpl | 3 - .../frost-mobile/templates/message-end.tpl | 3 - view/theme/frost/js/theme.js | 26 +- view/theme/frost/templates/contacts-end.tpl | 3 - view/theme/frost/templates/message-end.tpl | 3 - 19 files changed, 63 insertions(+), 947 deletions(-) delete mode 100644 library/jquery_ac/README delete mode 100644 library/jquery_ac/friendica.complete.js delete mode 100644 library/jquery_ac/friendica.complete.min.js delete mode 100644 library/jquery_ac/jquery-1.3.2.min.js delete mode 100644 library/jquery_ac/jquery.autocomplete-min.js delete mode 100644 library/jquery_ac/jquery.autocomplete.js delete mode 100644 library/jquery_ac/shadow.png delete mode 100644 library/jquery_ac/styles.css diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 19197981e0..d78393aeee 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -257,7 +257,7 @@ function prune_deadguys($arr) { if(! $arr) return $arr; $str = dbesc(implode(',',$arr)); - $r = q("select id from contact where id in ( " . $str . ") and blocked = 0 and pending = 0 and archive = 0 "); + $r = q("SELECT `id` FROM `contact` WHERE `id` IN ( " . $str . ") AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 "); if($r) { $ret = array(); foreach($r as $rr) @@ -399,7 +399,7 @@ function acl_lookup(&$a, $out_type = 'json') { $type = (x($_REQUEST,'type')?$_REQUEST['type']:""); $conv_id = (x($_REQUEST,'conversation')?$_REQUEST['conversation']:null); - // For use with jquery.autocomplete for private mail completion + // For use with jquery.textcomplete for private mail completion if(x($_REQUEST,'query') && strlen($_REQUEST['query'])) { if(! $type) @@ -428,6 +428,7 @@ function acl_lookup(&$a, $out_type = 'json') { $sql_extra2 .= " ".unavailable_networks(); + // autocomplete for editor mentions if ($type=='' || $type=='c'){ $r = q("SELECT COUNT(*) AS c FROM `contact` WHERE `uid` = %d AND `self` = 0 @@ -476,7 +477,7 @@ function acl_lookup(&$a, $out_type = 'json') { if ($type=='' || $type=='g'){ - $r = q("SELECT `group`.`id`, `group`.`name`, GROUP_CONCAT(DISTINCT `group_member`.`contact-id` SEPARATOR ',') as uids + $r = q("SELECT `group`.`id`, `group`.`name`, GROUP_CONCAT(DISTINCT `group_member`.`contact-id` SEPARATOR ',') AS uids FROM `group`,`group_member` WHERE `group`.`deleted` = 0 AND `group`.`uid` = %d AND `group_member`.`gid`=`group`.`id` @@ -505,7 +506,7 @@ function acl_lookup(&$a, $out_type = 'json') { if ($type==''){ - $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, forum FROM `contact` + $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != '' AND NOT (`network` IN ('%s', '%s')) $sql_extra2 @@ -516,7 +517,7 @@ function acl_lookup(&$a, $out_type = 'json') { } elseif ($type=='c'){ - $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, forum FROM `contact` + $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != '' AND NOT (`network` IN ('%s')) $sql_extra2 @@ -546,6 +547,7 @@ function acl_lookup(&$a, $out_type = 'json') { ); } elseif($type == 'x') { + // autocomplete for global contact search (e.g. navbar search) $r = navbar_complete($a); $contacts = array(); if($r) { @@ -569,25 +571,6 @@ function acl_lookup(&$a, $out_type = 'json') { $r = array(); - if($type == 'm' || $type == 'a') { - $x = array(); - $x['query'] = $search; - $x['photos'] = array(); - $x['links'] = array(); - $x['suggestions'] = array(); - $x['data'] = array(); - if(count($r)) { - foreach($r as $g) { - $x['photos'][] = proxy_url($g['micro'], false, PROXY_SIZE_MICRO); - $x['links'][] = $g['url']; - $x['suggestions'][] = htmlentities($g['name']); - $x['data'][] = intval($g['id']); - } - } - echo json_encode($x); - killme(); - } - if(count($r)) { foreach($r as $g){ $contacts[] = array( @@ -611,14 +594,10 @@ function acl_lookup(&$a, $out_type = 'json') { function _contact_link($i){ return dbesc($i['link']); } $known_contacts = array_map(_contact_link, $contacts); $unknow_contacts=array(); - $r = q("select - `author-avatar`,`author-name`,`author-link` - from item where parent=%d - and ( - `author-name` LIKE '%%%s%%' OR - `author-link` LIKE '%%%s%%' - ) and - `author-link` NOT IN ('%s') + $r = q("SELECT `author-avatar`,`author-name`,`author-link` + FROM `item` WHERE `parent` = %d + AND (`author-name` LIKE '%%%s%%' OR `author-link` LIKE '%%%s%%') + AND `author-link` NOT IN ('%s') GROUP BY `author-link` ORDER BY `author-name` ASC ", diff --git a/library/jquery_ac/README b/library/jquery_ac/README deleted file mode 100644 index 422e3d70b2..0000000000 --- a/library/jquery_ac/README +++ /dev/null @@ -1,4 +0,0 @@ -This is jquery.autocomplete from - -http://www.devbridge.com/projects/autocomplete/jquery/ - diff --git a/library/jquery_ac/friendica.complete.js b/library/jquery_ac/friendica.complete.js deleted file mode 100644 index 81eba564e1..0000000000 --- a/library/jquery_ac/friendica.complete.js +++ /dev/null @@ -1,395 +0,0 @@ -/** -* Ajax Autocomplete for jQuery, version 1.1.3 -* (c) 2010 Tomas Kirda -* -* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. -* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/ -* -* Last Review: 04/19/2010 -* Heavily modified for contact completion in Friendica (add photos, hover tips. etc.) 11-May-2012 mike@macgirvin.com -*/ - -/*jslint onevar: true, evil: true, nomen: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */ -/*global window: true, document: true, clearInterval: true, setInterval: true, jQuery: true */ - -(function($) { - - var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); - - function fnFormatResult(value, data, currentValue) { - var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')'; - return value.replace(new RegExp(pattern, 'gi'), '$1<\/strong>'); - } - - function Autocomplete(el, options) { - this.el = $(el); - this.el.attr('autocomplete', 'off'); - this.suggestions = []; - this.data = []; - this.badQueries = []; - this.selectedIndex = -1; - this.currentValue = this.el.val(); - this.intervalId = 0; - this.cachedResponse = []; - this.onChangeInterval = null; - this.ignoreValueChange = false; - this.serviceUrl = options.serviceUrl; - this.isLocal = false; - this.options = { - autoSubmit: false, - minChars: 1, - maxHeight: 300, - deferRequestBy: 0, - width: 0, - highlight: true, - params: {}, - fnFormatResult: fnFormatResult, - delimiter: null, - zIndex: 9999 - }; - this.initialize(); - this.setOptions(options); - } - - $.fn.autocomplete = function(options) { - return new Autocomplete(this.get(0)||$(''), options); - }; - - - Autocomplete.prototype = { - - killerFn: null, - - initialize: function() { - - var me, uid, autocompleteElId; - me = this; - uid = Math.floor(Math.random()*0x100000).toString(16); - autocompleteElId = 'Autocomplete_' + uid; - - this.killerFn = function(e) { - if ($(e.target).parents('.autocomplete').size() === 0) { - me.killSuggestions(); - me.disableKillerFn(); - } - }; - - if (!this.options.width) { this.options.width = this.el.width(); } - this.mainContainerId = 'AutocompleteContainter_' + uid; - - $('
    ').appendTo('body'); - - this.container = $('#' + autocompleteElId); - this.fixPosition(); - if (window.opera) { - this.el.keypress(function(e) { me.onKeyPress(e); }); - } else { - this.el.keydown(function(e) { me.onKeyPress(e); }); - } - this.el.keyup(function(e) { me.onKeyUp(e); }); - this.el.blur(function() { me.enableKillerFn(); }); - this.el.focus(function() { me.fixPosition(); }); - }, - - setOptions: function(options){ - var o = this.options; - $.extend(o, options); - if(o.lookup){ - this.isLocal = true; - if($.isArray(o.lookup)){ o.lookup = { suggestions:o.lookup, data:[] }; } - } - $('#'+this.mainContainerId).css({ zIndex:o.zIndex }); - this.container.css({ maxHeight: o.maxHeight + 'px', width:o.width }); - }, - - clearCache: function(){ - this.cachedResponse = []; - this.badQueries = []; - }, - - disable: function(){ - this.disabled = true; - }, - - enable: function(){ - this.disabled = false; - }, - - fixPosition: function() { - var offset = this.el.offset(); - $('#' + this.mainContainerId).css({ top: (offset.top + this.el.innerHeight()) + 'px', left: offset.left + 'px' }); - }, - - enableKillerFn: function() { - var me = this; - $(document).bind('click', me.killerFn); - }, - - disableKillerFn: function() { - var me = this; - $(document).unbind('click', me.killerFn); - }, - - killSuggestions: function() { - var me = this; - this.stopKillSuggestions(); - this.intervalId = window.setInterval(function() { me.hide(); me.stopKillSuggestions(); }, 300); - }, - - stopKillSuggestions: function() { - window.clearInterval(this.intervalId); - }, - - onKeyPress: function(e) { - if (this.disabled || !this.enabled) { return; } - // return will exit the function - // and event will not be prevented - switch (e.keyCode) { - case 27: //KEY_ESC: - this.el.val(this.currentValue); - this.hide(); - break; - case 9: //KEY_TAB: - case 13: //KEY_RETURN: - if (this.selectedIndex === -1) { - this.hide(); - return; - } - this.select(this.selectedIndex); - if(e.keyCode === 9){ return; } - break; - case 38: //KEY_UP: - this.moveUp(); - break; - case 40: //KEY_DOWN: - this.moveDown(); - break; - default: - return; - } - e.stopImmediatePropagation(); - e.preventDefault(); - }, - - onKeyUp: function(e) { - if(this.disabled){ return; } - switch (e.keyCode) { - case 38: //KEY_UP: - case 40: //KEY_DOWN: - return; - } - clearInterval(this.onChangeInterval); - if (this.currentValue !== this.el.val()) { - if (this.options.deferRequestBy > 0) { - // Defer lookup in case when value changes very quickly: - var me = this; - this.onChangeInterval = setInterval(function() { me.onValueChange(); }, this.options.deferRequestBy); - } else { - this.onValueChange(); - } - } - }, - - onValueChange: function() { - clearInterval(this.onChangeInterval); - this.currentValue = this.el.val(); - var q = this.getQuery(this.currentValue); - this.selectedIndex = -1; - if (this.ignoreValueChange) { - this.ignoreValueChange = false; - return; - } - if (q === '' || q.length < this.options.minChars) { - this.hide(); - } else { - this.getSuggestions(q); - } - }, - - getQuery: function(val) { - var d, arr; - d = this.options.delimiter; - if (!d) { return $.trim(val); } - arr = val.split(d); - return $.trim(arr[arr.length - 1]); - }, - - getSuggestionsLocal: function(q) { - var ret, arr, len, val, i; - arr = this.options.lookup; - len = arr.suggestions.length; - ret = { suggestions:[], data:[] }; - q = q.toLowerCase(); - for(i=0; i< len; i++){ - val = arr.suggestions[i]; - if(val.toLowerCase().indexOf(q) === 0){ - ret.suggestions.push(val); - ret.data.push(arr.data[i]); - } - } - return ret; - }, - - getSuggestions: function(q) { - var cr, me; - cr = this.isLocal ? this.getSuggestionsLocal(q) : this.cachedResponse[q]; - if (cr && $.isArray(cr.suggestions)) { - this.suggestions = cr.suggestions; - this.data = cr.data; - this.suggest(); - } else if (!this.isBadQuery(q)) { - me = this; - me.options.params.query = q; - $.get(this.serviceUrl, me.options.params, function(txt) { me.processResponse(txt); }, 'text'); - } - }, - - isBadQuery: function(q) { - var i = this.badQueries.length; - while (i--) { - if (q.indexOf(this.badQueries[i]) === 0) { return true; } - } - return false; - }, - - hide: function() { - this.enabled = false; - this.selectedIndex = -1; - this.container.hide(); - }, - - suggest: function() { - if (this.suggestions.length === 0) { - this.hide(); - return; - } - - var me, len, div, f, v, i, s, mOver, mClick, l, img; - me = this; - len = this.suggestions.length; - f = this.options.fnFormatResult; - v = this.getQuery(this.currentValue); - mOver = function(xi) { return function() { me.activate(xi); }; }; - mClick = function(xi) { return function() { me.select(xi); }; }; - this.container.hide().empty(); - for (i = 0; i < len; i++) { - s = this.suggestions[i]; - l = this.links[i]; - img = '' + s + ' '; - div = $((me.selectedIndex === i ? '
    ' + img + f(s, this.data[i], v) + '
    '); - div.mouseover(mOver(i)); - div.click(mClick(i)); - this.container.append(div); - } - this.enabled = true; - this.container.show(); - }, - - processResponse: function(text) { - var response; - try { - response = eval('(' + text + ')'); - } catch (err) { return; } - if (!$.isArray(response.data)) { response.data = []; } - if(!this.options.noCache){ - this.cachedResponse[response.query] = response; - if (response.suggestions.length === 0) { this.badQueries.push(response.query); } - } - if (response.query === this.getQuery(this.currentValue)) { - this.photos = response.photos; - this.links = response.links; - this.suggestions = response.suggestions; - this.data = response.data; - this.suggest(); - } - }, - - activate: function(index) { - var divs, activeItem; - divs = this.container.children(); - // Clear previous selection: - if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) { - $(divs.get(this.selectedIndex)).removeClass(); - } - this.selectedIndex = index; - if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) { - activeItem = divs.get(this.selectedIndex); - $(activeItem).addClass('selected'); - } - return activeItem; - }, - - deactivate: function(div, index) { - div.className = ''; - if (this.selectedIndex === index) { this.selectedIndex = -1; } - }, - - select: function(i) { - var selectedValue, f; - selectedValue = this.suggestions[i]; - if (selectedValue) { - this.el.val(selectedValue); - if (this.options.autoSubmit) { - f = this.el.parents('form'); - if (f.length > 0) { f.get(0).submit(); } - } - this.ignoreValueChange = true; - this.hide(); - this.onSelect(i); - } - }, - - moveUp: function() { - if (this.selectedIndex === -1) { return; } - if (this.selectedIndex === 0) { - this.container.children().get(0).className = ''; - this.selectedIndex = -1; - this.el.val(this.currentValue); - return; - } - this.adjustScroll(this.selectedIndex - 1); - }, - - moveDown: function() { - if (this.selectedIndex === (this.suggestions.length - 1)) { return; } - this.adjustScroll(this.selectedIndex + 1); - }, - - adjustScroll: function(i) { - var activeItem, offsetTop, upperBound, lowerBound; - activeItem = this.activate(i); - offsetTop = activeItem.offsetTop; - upperBound = this.container.scrollTop(); - lowerBound = upperBound + this.options.maxHeight - 25; - if (offsetTop < upperBound) { - this.container.scrollTop(offsetTop); - } else if (offsetTop > lowerBound) { - this.container.scrollTop(offsetTop - this.options.maxHeight + 25); - } - this.el.val(this.getValue(this.suggestions[i])); - }, - - onSelect: function(i) { - var me, fn, s, d; - me = this; - fn = me.options.onSelect; - s = me.suggestions[i]; - d = me.data[i]; - me.el.val(me.getValue(s)); - if ($.isFunction(fn)) { fn(s, d, me.el); } - }, - - getValue: function(value){ - var del, currVal, arr, me; - me = this; - del = me.options.delimiter; - if (!del) { return value; } - currVal = me.currentValue; - arr = currVal.split(del); - if (arr.length === 1) { return value; } - return currVal.substr(0, currVal.length - arr[arr.length - 1].length) + value; - } - - }; - -}(jQuery)); diff --git a/library/jquery_ac/friendica.complete.min.js b/library/jquery_ac/friendica.complete.min.js deleted file mode 100644 index c879832eb4..0000000000 --- a/library/jquery_ac/friendica.complete.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/** -* Ajax Autocomplete for jQuery, version 1.1.3 -* (c) 2010 Tomas Kirda -* -* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. -* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/ -* -* Last Review: 04/19/2010 -* Heavily modified for contact completion in Friendica (add photos, hover tips. etc.) 11-May-2012 mike@macgirvin.com -*//*jslint onevar: true, evil: true, nomen: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true *//*global window: true, document: true, clearInterval: true, setInterval: true, jQuery: true */(function($){function fnFormatResult(value,data,currentValue){var pattern="("+currentValue.replace(reEscape,"\\$1")+")";return value.replace(new RegExp(pattern,"gi"),"$1")}function Autocomplete(el,options){this.el=$(el),this.el.attr("autocomplete","off"),this.suggestions=[],this.data=[],this.badQueries=[],this.selectedIndex=-1,this.currentValue=this.el.val(),this.intervalId=0,this.cachedResponse=[],this.onChangeInterval=null,this.ignoreValueChange=!1,this.serviceUrl=options.serviceUrl,this.isLocal=!1,this.options={autoSubmit:!1,minChars:1,maxHeight:300,deferRequestBy:0,width:0,highlight:!0,params:{},fnFormatResult:fnFormatResult,delimiter:null,zIndex:9999},this.initialize(),this.setOptions(options)}var reEscape=new RegExp("(\\"+["/",".","*","+","?","|","(",")","[","]","{","}","\\"].join("|\\")+")","g");$.fn.autocomplete=function(options){return new Autocomplete(this.get(0)||$(""),options)},Autocomplete.prototype={killerFn:null,initialize:function(){var me,uid,autocompleteElId;me=this,uid=Math.floor(Math.random()*1048576).toString(16),autocompleteElId="Autocomplete_"+uid,this.killerFn=function(e){$(e.target).parents(".autocomplete").size()===0&&(me.killSuggestions(),me.disableKillerFn())},this.options.width||(this.options.width=this.el.width()),this.mainContainerId="AutocompleteContainter_"+uid,$('
    ').appendTo("body"),this.container=$("#"+autocompleteElId),this.fixPosition(),window.opera?this.el.keypress(function(e){me.onKeyPress(e)}):this.el.keydown(function(e){me.onKeyPress(e)}),this.el.keyup(function(e){me.onKeyUp(e)}),this.el.blur(function(){me.enableKillerFn()}),this.el.focus(function(){me.fixPosition()})},setOptions:function(options){var o=this.options;$.extend(o,options),o.lookup&&(this.isLocal=!0,$.isArray(o.lookup)&&(o.lookup={suggestions:o.lookup,data:[]})),$("#"+this.mainContainerId).css({zIndex:o.zIndex}),this.container.css({maxHeight:o.maxHeight+"px",width:o.width})},clearCache:function(){this.cachedResponse=[],this.badQueries=[]},disable:function(){this.disabled=!0},enable:function(){this.disabled=!1},fixPosition:function(){var offset=this.el.offset();$("#"+this.mainContainerId).css({top:offset.top+this.el.innerHeight()+"px",left:offset.left+"px"})},enableKillerFn:function(){var me=this;$(document).bind("click",me.killerFn)},disableKillerFn:function(){var me=this;$(document).unbind("click",me.killerFn)},killSuggestions:function(){var me=this;this.stopKillSuggestions(),this.intervalId=window.setInterval(function(){me.hide(),me.stopKillSuggestions()},300)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},onKeyPress:function(e){if(this.disabled||!this.enabled)return;switch(e.keyCode){case 27:this.el.val(this.currentValue),this.hide();break;case 9:case 13:if(this.selectedIndex===-1){this.hide();return}this.select(this.selectedIndex);if(e.keyCode===9)return;break;case 38:this.moveUp();break;case 40:this.moveDown();break;default:return}e.stopImmediatePropagation(),e.preventDefault()},onKeyUp:function(e){if(this.disabled)return;switch(e.keyCode){case 38:case 40:return}clearInterval(this.onChangeInterval);if(this.currentValue!==this.el.val())if(this.options.deferRequestBy>0){var me=this;this.onChangeInterval=setInterval(function(){me.onValueChange()},this.options.deferRequestBy)}else this.onValueChange()},onValueChange:function(){clearInterval(this.onChangeInterval),this.currentValue=this.el.val();var q=this.getQuery(this.currentValue);this.selectedIndex=-1;if(this.ignoreValueChange){this.ignoreValueChange=!1;return}q===""||q.length ',div=$((me.selectedIndex===i?'
    '+img+f(s,this.data[i],v)+"
    "),div.mouseover(mOver(i)),div.click(mClick(i)),this.container.append(div);this.enabled=!0,this.container.show()},processResponse:function(text){var response;try{response=eval("("+text+")")}catch(err){return}$.isArray(response.data)||(response.data=[]),this.options.noCache||(this.cachedResponse[response.query]=response,response.suggestions.length===0&&this.badQueries.push(response.query)),response.query===this.getQuery(this.currentValue)&&(this.photos=response.photos,this.links=response.links,this.suggestions=response.suggestions,this.data=response.data,this.suggest())},activate:function(index){var divs,activeItem;return divs=this.container.children(),this.selectedIndex!==-1&&divs.length>this.selectedIndex&&$(divs.get(this.selectedIndex)).removeClass(),this.selectedIndex=index,this.selectedIndex!==-1&&divs.length>this.selectedIndex&&(activeItem=divs.get(this.selectedIndex),$(activeItem).addClass("selected")),activeItem},deactivate:function(div,index){div.className="",this.selectedIndex===index&&(this.selectedIndex=-1)},select:function(i){var selectedValue,f;selectedValue=this.suggestions[i],selectedValue&&(this.el.val(selectedValue),this.options.autoSubmit&&(f=this.el.parents("form"),f.length>0&&f.get(0).submit()),this.ignoreValueChange=!0,this.hide(),this.onSelect(i))},moveUp:function(){if(this.selectedIndex===-1)return;if(this.selectedIndex===0){this.container.children().get(0).className="",this.selectedIndex=-1,this.el.val(this.currentValue);return}this.adjustScroll(this.selectedIndex-1)},moveDown:function(){if(this.selectedIndex===this.suggestions.length-1)return;this.adjustScroll(this.selectedIndex+1)},adjustScroll:function(i){var activeItem,offsetTop,upperBound,lowerBound;activeItem=this.activate(i),offsetTop=activeItem.offsetTop,upperBound=this.container.scrollTop(),lowerBound=upperBound+this.options.maxHeight-25,offsetToplowerBound&&this.container.scrollTop(offsetTop-this.options.maxHeight+25),this.el.val(this.getValue(this.suggestions[i]))},onSelect:function(i){var me,fn,s,d;me=this,fn=me.options.onSelect,s=me.suggestions[i],d=me.data[i],me.el.val(me.getValue(s)),$.isFunction(fn)&&fn(s,d,me.el)},getValue:function(value){var del,currVal,arr,me;return me=this,del=me.options.delimiter,del?(currVal=me.currentValue,arr=currVal.split(del),arr.length===1?value:currVal.substr(0,currVal.length-arr[arr.length-1].length)+value):value}}})(jQuery); \ No newline at end of file diff --git a/library/jquery_ac/jquery-1.3.2.min.js b/library/jquery_ac/jquery-1.3.2.min.js deleted file mode 100644 index b1ae21d8b2..0000000000 --- a/library/jquery_ac/jquery-1.3.2.min.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * jQuery JavaScript Library v1.3.2 - * http://jquery.com/ - * - * Copyright (c) 2009 John Resig - * Dual licensed under the MIT and GPL licenses. - * http://docs.jquery.com/License - * - * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) - * Revision: 6246 - */ -(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
    "]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
    ","
    "]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); -/* - * Sizzle CSS Selector Engine - v0.9.3 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

    ";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
    ";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
    ").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
    ';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/library/jquery_ac/jquery.autocomplete-min.js b/library/jquery_ac/jquery.autocomplete-min.js deleted file mode 100644 index 7018fd00aa..0000000000 --- a/library/jquery_ac/jquery.autocomplete-min.js +++ /dev/null @@ -1,11 +0,0 @@ -/** -* Ajax Autocomplete for jQuery, version 1.1.3 -* (c) 2010 Tomas Kirda -* -* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. -* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/ -* -* Last Review: 04/19/2010 -*/ - -(function(d){function l(b,a,c){a="("+c.replace(m,"\\$1")+")";return b.replace(new RegExp(a,"gi"),"$1")}function i(b,a){this.el=d(b);this.el.attr("autocomplete","off");this.suggestions=[];this.data=[];this.badQueries=[];this.selectedIndex=-1;this.currentValue=this.el.val();this.intervalId=0;this.cachedResponse=[];this.onChangeInterval=null;this.ignoreValueChange=false;this.serviceUrl=a.serviceUrl;this.isLocal=false;this.options={autoSubmit:false,minChars:1,maxHeight:300,deferRequestBy:0, width:0,highlight:true,params:{},fnFormatResult:l,delimiter:null,zIndex:9999};this.initialize();this.setOptions(a)}var m=new RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)","g");d.fn.autocomplete=function(b){return new i(this.get(0)||d(""),b)};i.prototype={killerFn:null,initialize:function(){var b,a,c;b=this;a=Math.floor(Math.random()*1048576).toString(16);c="Autocomplete_"+a;this.killerFn=function(e){if(d(e.target).parents(".autocomplete").size()===0){b.killSuggestions(); b.disableKillerFn()}};if(!this.options.width)this.options.width=this.el.width();this.mainContainerId="AutocompleteContainter_"+a;d('
    ').appendTo("body");this.container=d("#"+c);this.fixPosition();window.opera?this.el.keypress(function(e){b.onKeyPress(e)}):this.el.keydown(function(e){b.onKeyPress(e)});this.el.keyup(function(e){b.onKeyUp(e)}); this.el.blur(function(){b.enableKillerFn()});this.el.focus(function(){b.fixPosition()})},setOptions:function(b){var a=this.options;d.extend(a,b);if(a.lookup){this.isLocal=true;if(d.isArray(a.lookup))a.lookup={suggestions:a.lookup,data:[]}}d("#"+this.mainContainerId).css({zIndex:a.zIndex});this.container.css({maxHeight:a.maxHeight+"px",width:a.width})},clearCache:function(){this.cachedResponse=[];this.badQueries=[]},disable:function(){this.disabled=true},enable:function(){this.disabled=false},fixPosition:function(){var b= this.el.offset();d("#"+this.mainContainerId).css({top:b.top+this.el.innerHeight()+"px",left:b.left+"px"})},enableKillerFn:function(){d(document).bind("click",this.killerFn)},disableKillerFn:function(){d(document).unbind("click",this.killerFn)},killSuggestions:function(){var b=this;this.stopKillSuggestions();this.intervalId=window.setInterval(function(){b.hide();b.stopKillSuggestions()},300)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},onKeyPress:function(b){if(!(this.disabled|| !this.enabled)){switch(b.keyCode){case 27:this.el.val(this.currentValue);this.hide();break;case 9:case 13:if(this.selectedIndex===-1){this.hide();return}this.select(this.selectedIndex);if(b.keyCode===9)return;break;case 38:this.moveUp();break;case 40:this.moveDown();break;default:return}b.stopImmediatePropagation();b.preventDefault()}},onKeyUp:function(b){if(!this.disabled){switch(b.keyCode){case 38:case 40:return}clearInterval(this.onChangeInterval);if(this.currentValue!==this.el.val())if(this.options.deferRequestBy> 0){var a=this;this.onChangeInterval=setInterval(function(){a.onValueChange()},this.options.deferRequestBy)}else this.onValueChange()}},onValueChange:function(){clearInterval(this.onChangeInterval);this.currentValue=this.el.val();var b=this.getQuery(this.currentValue);this.selectedIndex=-1;if(this.ignoreValueChange)this.ignoreValueChange=false;else b===""||b.length'+e(c,this.data[f],g)+"
    ");c.mouseover(j(f));c.click(k(f));this.container.append(c)}this.enabled=true;this.container.show()}},processResponse:function(b){var a;try{a=eval("("+b+")")}catch(c){return}if(!d.isArray(a.data))a.data=[];if(!this.options.noCache){this.cachedResponse[a.query]= a;a.suggestions.length===0&&this.badQueries.push(a.query)}if(a.query===this.getQuery(this.currentValue)){this.suggestions=a.suggestions;this.data=a.data;this.suggest()}},activate:function(b){var a,c;a=this.container.children();this.selectedIndex!==-1&&a.length>this.selectedIndex&&d(a.get(this.selectedIndex)).removeClass();this.selectedIndex=b;if(this.selectedIndex!==-1&&a.length>this.selectedIndex){c=a.get(this.selectedIndex);d(c).addClass("selected")}return c},deactivate:function(b,a){b.className= "";if(this.selectedIndex===a)this.selectedIndex=-1},select:function(b){var a;if(a=this.suggestions[b]){this.el.val(a);if(this.options.autoSubmit){a=this.el.parents("form");a.length>0&&a.get(0).submit()}this.ignoreValueChange=true;this.hide();this.onSelect(b)}},moveUp:function(){if(this.selectedIndex!==-1)if(this.selectedIndex===0){this.container.children().get(0).className="";this.selectedIndex=-1;this.el.val(this.currentValue)}else this.adjustScroll(this.selectedIndex-1)},moveDown:function(){this.selectedIndex!== this.suggestions.length-1&&this.adjustScroll(this.selectedIndex+1)},adjustScroll:function(b){var a,c,e;a=this.activate(b).offsetTop;c=this.container.scrollTop();e=c+this.options.maxHeight-25;if(ae&&this.container.scrollTop(a-this.options.maxHeight+25);this.el.val(this.getValue(this.suggestions[b]))},onSelect:function(b){var a,c;a=this.options.onSelect;c=this.suggestions[b];b=this.data[b];this.el.val(this.getValue(c));d.isFunction(a)&&a(c,b,this.el)},getValue:function(b){var a, c;a=this.options.delimiter;if(!a)return b;c=this.currentValue;a=c.split(a);if(a.length===1)return b;return c.substr(0,c.length-a[a.length-1].length)+b}}})(jQuery); \ No newline at end of file diff --git a/library/jquery_ac/jquery.autocomplete.js b/library/jquery_ac/jquery.autocomplete.js deleted file mode 100644 index 6a7ce87872..0000000000 --- a/library/jquery_ac/jquery.autocomplete.js +++ /dev/null @@ -1,390 +0,0 @@ -/** -* Ajax Autocomplete for jQuery, version 1.1.3 -* (c) 2010 Tomas Kirda -* -* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. -* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/ -* -* Last Review: 04/19/2010 -*/ - -/*jslint onevar: true, evil: true, nomen: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */ -/*global window: true, document: true, clearInterval: true, setInterval: true, jQuery: true */ - -(function($) { - - var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); - - function fnFormatResult(value, data, currentValue) { - var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')'; - return value.replace(new RegExp(pattern, 'gi'), '$1<\/strong>'); - } - - function Autocomplete(el, options) { - this.el = $(el); - this.el.attr('autocomplete', 'off'); - this.suggestions = []; - this.data = []; - this.badQueries = []; - this.selectedIndex = -1; - this.currentValue = this.el.val(); - this.intervalId = 0; - this.cachedResponse = []; - this.onChangeInterval = null; - this.ignoreValueChange = false; - this.serviceUrl = options.serviceUrl; - this.isLocal = false; - this.options = { - autoSubmit: false, - minChars: 1, - maxHeight: 300, - deferRequestBy: 0, - width: 0, - highlight: true, - params: {}, - fnFormatResult: fnFormatResult, - delimiter: null, - zIndex: 9999 - }; - this.initialize(); - this.setOptions(options); - } - - $.fn.autocomplete = function(options) { - return new Autocomplete(this.get(0)||$(''), options); - }; - - - Autocomplete.prototype = { - - killerFn: null, - - initialize: function() { - - var me, uid, autocompleteElId; - me = this; - uid = Math.floor(Math.random()*0x100000).toString(16); - autocompleteElId = 'Autocomplete_' + uid; - - this.killerFn = function(e) { - if ($(e.target).parents('.autocomplete').size() === 0) { - me.killSuggestions(); - me.disableKillerFn(); - } - }; - - if (!this.options.width) { this.options.width = this.el.width(); } - this.mainContainerId = 'AutocompleteContainter_' + uid; - - $('
    ').appendTo('body'); - - this.container = $('#' + autocompleteElId); - this.fixPosition(); - if (window.opera) { - this.el.keypress(function(e) { me.onKeyPress(e); }); - } else { - this.el.keydown(function(e) { me.onKeyPress(e); }); - } - this.el.keyup(function(e) { me.onKeyUp(e); }); - this.el.blur(function() { me.enableKillerFn(); }); - this.el.focus(function() { me.fixPosition(); }); - }, - - setOptions: function(options){ - var o = this.options; - $.extend(o, options); - if(o.lookup){ - this.isLocal = true; - if($.isArray(o.lookup)){ o.lookup = { suggestions:o.lookup, data:[] }; } - } - $('#'+this.mainContainerId).css({ zIndex:o.zIndex }); - this.container.css({ maxHeight: o.maxHeight + 'px', width:o.width }); - }, - - clearCache: function(){ - this.cachedResponse = []; - this.badQueries = []; - }, - - disable: function(){ - this.disabled = true; - }, - - enable: function(){ - this.disabled = false; - }, - - fixPosition: function() { - var offset = this.el.offset(); - $('#' + this.mainContainerId).css({ top: (offset.top + this.el.innerHeight()) + 'px', left: offset.left + 'px' }); - }, - - enableKillerFn: function() { - var me = this; - $(document).bind('click', me.killerFn); - }, - - disableKillerFn: function() { - var me = this; - $(document).unbind('click', me.killerFn); - }, - - killSuggestions: function() { - var me = this; - this.stopKillSuggestions(); - this.intervalId = window.setInterval(function() { me.hide(); me.stopKillSuggestions(); }, 300); - }, - - stopKillSuggestions: function() { - window.clearInterval(this.intervalId); - }, - - onKeyPress: function(e) { - if (this.disabled || !this.enabled) { return; } - // return will exit the function - // and event will not be prevented - switch (e.keyCode) { - case 27: //KEY_ESC: - this.el.val(this.currentValue); - this.hide(); - break; - case 9: //KEY_TAB: - case 13: //KEY_RETURN: - if (this.selectedIndex === -1) { - this.hide(); - return; - } - this.select(this.selectedIndex); - if(e.keyCode === 9){ return; } - break; - case 38: //KEY_UP: - this.moveUp(); - break; - case 40: //KEY_DOWN: - this.moveDown(); - break; - default: - return; - } - e.stopImmediatePropagation(); - e.preventDefault(); - }, - - onKeyUp: function(e) { - if(this.disabled){ return; } - switch (e.keyCode) { - case 38: //KEY_UP: - case 40: //KEY_DOWN: - return; - } - clearInterval(this.onChangeInterval); - if (this.currentValue !== this.el.val()) { - if (this.options.deferRequestBy > 0) { - // Defer lookup in case when value changes very quickly: - var me = this; - this.onChangeInterval = setInterval(function() { me.onValueChange(); }, this.options.deferRequestBy); - } else { - this.onValueChange(); - } - } - }, - - onValueChange: function() { - clearInterval(this.onChangeInterval); - this.currentValue = this.el.val(); - var q = this.getQuery(this.currentValue); - this.selectedIndex = -1; - if (this.ignoreValueChange) { - this.ignoreValueChange = false; - return; - } - if (q === '' || q.length < this.options.minChars) { - this.hide(); - } else { - this.getSuggestions(q); - } - }, - - getQuery: function(val) { - var d, arr; - d = this.options.delimiter; - if (!d) { return $.trim(val); } - arr = val.split(d); - return $.trim(arr[arr.length - 1]); - }, - - getSuggestionsLocal: function(q) { - var ret, arr, len, val, i; - arr = this.options.lookup; - len = arr.suggestions.length; - ret = { suggestions:[], data:[] }; - q = q.toLowerCase(); - for(i=0; i< len; i++){ - val = arr.suggestions[i]; - if(val.toLowerCase().indexOf(q) === 0){ - ret.suggestions.push(val); - ret.data.push(arr.data[i]); - } - } - return ret; - }, - - getSuggestions: function(q) { - var cr, me; - cr = this.isLocal ? this.getSuggestionsLocal(q) : this.cachedResponse[q]; - if (cr && $.isArray(cr.suggestions)) { - this.suggestions = cr.suggestions; - this.data = cr.data; - this.suggest(); - } else if (!this.isBadQuery(q)) { - me = this; - me.options.params.query = q; - $.get(this.serviceUrl, me.options.params, function(txt) { me.processResponse(txt); }, 'text'); - } - }, - - isBadQuery: function(q) { - var i = this.badQueries.length; - while (i--) { - if (q.indexOf(this.badQueries[i]) === 0) { return true; } - } - return false; - }, - - hide: function() { - this.enabled = false; - this.selectedIndex = -1; - this.container.hide(); - }, - - suggest: function() { - if (this.suggestions.length === 0) { - this.hide(); - return; - } - - var me, len, div, f, v, i, s, mOver, mClick; - me = this; - len = this.suggestions.length; - f = this.options.fnFormatResult; - v = this.getQuery(this.currentValue); - mOver = function(xi) { return function() { me.activate(xi); }; }; - mClick = function(xi) { return function() { me.select(xi); }; }; - this.container.hide().empty(); - for (i = 0; i < len; i++) { - s = this.suggestions[i]; - div = $((me.selectedIndex === i ? '
    ' + f(s, this.data[i], v) + '
    '); - div.mouseover(mOver(i)); - div.click(mClick(i)); - this.container.append(div); - } - this.enabled = true; - this.container.show(); - }, - - processResponse: function(text) { - var response; - try { - response = eval('(' + text + ')'); - } catch (err) { return; } - if (!$.isArray(response.data)) { response.data = []; } - if(!this.options.noCache){ - this.cachedResponse[response.query] = response; - if (response.suggestions.length === 0) { this.badQueries.push(response.query); } - } - if (response.query === this.getQuery(this.currentValue)) { - this.suggestions = response.suggestions; - this.data = response.data; - this.suggest(); - } - }, - - activate: function(index) { - var divs, activeItem; - divs = this.container.children(); - // Clear previous selection: - if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) { - $(divs.get(this.selectedIndex)).removeClass(); - } - this.selectedIndex = index; - if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) { - activeItem = divs.get(this.selectedIndex); - $(activeItem).addClass('selected'); - } - return activeItem; - }, - - deactivate: function(div, index) { - div.className = ''; - if (this.selectedIndex === index) { this.selectedIndex = -1; } - }, - - select: function(i) { - var selectedValue, f; - selectedValue = this.suggestions[i]; - if (selectedValue) { - this.el.val(selectedValue); - if (this.options.autoSubmit) { - f = this.el.parents('form'); - if (f.length > 0) { f.get(0).submit(); } - } - this.ignoreValueChange = true; - this.hide(); - this.onSelect(i); - } - }, - - moveUp: function() { - if (this.selectedIndex === -1) { return; } - if (this.selectedIndex === 0) { - this.container.children().get(0).className = ''; - this.selectedIndex = -1; - this.el.val(this.currentValue); - return; - } - this.adjustScroll(this.selectedIndex - 1); - }, - - moveDown: function() { - if (this.selectedIndex === (this.suggestions.length - 1)) { return; } - this.adjustScroll(this.selectedIndex + 1); - }, - - adjustScroll: function(i) { - var activeItem, offsetTop, upperBound, lowerBound; - activeItem = this.activate(i); - offsetTop = activeItem.offsetTop; - upperBound = this.container.scrollTop(); - lowerBound = upperBound + this.options.maxHeight - 25; - if (offsetTop < upperBound) { - this.container.scrollTop(offsetTop); - } else if (offsetTop > lowerBound) { - this.container.scrollTop(offsetTop - this.options.maxHeight + 25); - } - this.el.val(this.getValue(this.suggestions[i])); - }, - - onSelect: function(i) { - var me, fn, s, d; - me = this; - fn = me.options.onSelect; - s = me.suggestions[i]; - d = me.data[i]; - me.el.val(me.getValue(s)); - if ($.isFunction(fn)) { fn(s, d, me.el); } - }, - - getValue: function(value){ - var del, currVal, arr, me; - me = this; - del = me.options.delimiter; - if (!del) { return value; } - currVal = me.currentValue; - arr = currVal.split(del); - if (arr.length === 1) { return value; } - return currVal.substr(0, currVal.length - arr[arr.length - 1].length) + value; - } - - }; - -}(jQuery)); diff --git a/library/jquery_ac/shadow.png b/library/jquery_ac/shadow.png deleted file mode 100644 index a2561df971728d988424100c74c817916eca1979..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3403 zcmeAS@N?(olHy`uVBq!ia0y~yV738bR}L1Sh{z?w93Z7#;u=xnT$Gwvl9`{U5R#dj z$`F!Ks$i<%mYSqsWME*TU}$J%1Vly(x&~$j21QvmX+Ul4C7!;n>{pmr1x4l8+mz-4 zg*Xd5B8wRqxP?HN@zUM8KR`j2bVpxD28NCO+HqZdXMAQjaPeGm)a##I4DP>8^|Q}*osX?x zu(w4E^8SQ>2<4nWJ;;$Ch1?$dLgm)?6;Yr9_CdHMW*W(@x+ip*R06EH_T4pml(Y0_%+Z_b^VZki z+Ig-L)GH{z-FHJSJv;l^O{dMW8|Geryoiy(edpWebG3Q>oX-o7q}^hCpz*y@X6IS? ZpGWQ1{0Pup3+%oyc)I$ztaD0e0swh%>OlYi diff --git a/library/jquery_ac/styles.css b/library/jquery_ac/styles.css deleted file mode 100644 index e056d5cf9c..0000000000 --- a/library/jquery_ac/styles.css +++ /dev/null @@ -1,6 +0,0 @@ - -.autocomplete-w1 { background:url(img/shadow.png) no-repeat bottom right; position:absolute; top:0px; left:0px; margin:8px 0 0 6px; /* IE6 fix: */ _background:none; _margin:0; } -.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; } -.autocomplete .selected { background:#F0F0F0; } -.autocomplete div { padding:2px 5px; white-space:nowrap; } -.autocomplete strong { font-weight:normal; color:#3399FF; } diff --git a/view/templates/contacts-head.tpl b/view/templates/contacts-head.tpl index f054fdce27..25055d405b 100644 --- a/view/templates/contacts-head.tpl +++ b/view/templates/contacts-head.tpl @@ -1,18 +1,19 @@ - - - diff --git a/view/templates/head.tpl b/view/templates/head.tpl index 129e5cfd25..afb7c1df27 100644 --- a/view/templates/head.tpl +++ b/view/templates/head.tpl @@ -35,7 +35,6 @@ - diff --git a/view/templates/message-head.tpl b/view/templates/message-head.tpl index 875664628d..49f268c42b 100644 --- a/view/templates/message-head.tpl +++ b/view/templates/message-head.tpl @@ -1,18 +1,8 @@ - - - - diff --git a/view/templates/poke_head.tpl b/view/templates/poke_head.tpl index 6e30eb7fee..7de98d2212 100644 --- a/view/templates/poke_head.tpl +++ b/view/templates/poke_head.tpl @@ -1,18 +1,8 @@ - - \ No newline at end of file + diff --git a/view/theme/frost-mobile/js/theme.js b/view/theme/frost-mobile/js/theme.js index c021370874..7d7e8259c6 100644 --- a/view/theme/frost-mobile/js/theme.js +++ b/view/theme/frost-mobile/js/theme.js @@ -103,22 +103,24 @@ $(document).ready(function() { switch(window.autocompleteType) { case 'msg-header': - var a = $("#recip").autocomplete({ - serviceUrl: baseurl + '/acl', - minChars: 2, - width: 350, - onSelect: function(value,data) { - $("#recip-complete").val(data); - } + $("#recip").name_autocomplete(baseurl + '/acl', '', false, function(data) { + $("#recip-complete").val(data.id); }); break; case 'contacts-head': - var a = $("#contacts-search").autocomplete({ - serviceUrl: baseurl + '/acl', - minChars: 2, - width: 350, + $("#contacts-search").contact_autocomplete(baseurl + '/acl', 'a', true); + + + $("#contacts-search").keyup(function(event){ + if(event.keyCode == 13){ + $("#contacts-search").click(); + } + }); + $(".autocomplete-w1 .selected").keyup(function(event){ + if(event.keyCode == 13){ + $("#contacts-search").click(); + } }); - a.setOptions({ params: { type: 'a' }}); break; case 'display-head': $(".comment-wwedit-wrapper textarea").editor_autocomplete(baseurl+"/acl"); diff --git a/view/theme/frost-mobile/templates/contacts-end.tpl b/view/theme/frost-mobile/templates/contacts-end.tpl index 5416f872c8..139597f9cb 100644 --- a/view/theme/frost-mobile/templates/contacts-end.tpl +++ b/view/theme/frost-mobile/templates/contacts-end.tpl @@ -1,5 +1,2 @@ - - - diff --git a/view/theme/frost-mobile/templates/message-end.tpl b/view/theme/frost-mobile/templates/message-end.tpl index 5416f872c8..139597f9cb 100644 --- a/view/theme/frost-mobile/templates/message-end.tpl +++ b/view/theme/frost-mobile/templates/message-end.tpl @@ -1,5 +1,2 @@ - - - diff --git a/view/theme/frost/js/theme.js b/view/theme/frost/js/theme.js index 4418c1f3c4..fc1bb643c0 100644 --- a/view/theme/frost/js/theme.js +++ b/view/theme/frost/js/theme.js @@ -214,22 +214,24 @@ $(document).ready(function() { switch(window.autocompleteType) { case 'msg-header': - var a = $("#recip").autocomplete({ - serviceUrl: baseurl + '/acl', - minChars: 2, - width: 350, - onSelect: function(value,data) { - $("#recip-complete").val(data); - } + $("#recip").name_autocomplete(baseurl + '/acl', '', false, function(data) { + $("#recip-complete").val(data.id); }); break; case 'contacts-head': - var a = $("#contacts-search").autocomplete({ - serviceUrl: baseurl + '/acl', - minChars: 2, - width: 350, + $("#contacts-search").contact_autocomplete(baseurl + '/acl', 'a', true); + + + $("#contacts-search").keyup(function(event){ + if(event.keyCode == 13){ + $("#contacts-search").click(); + } + }); + $(".autocomplete-w1 .selected").keyup(function(event){ + if(event.keyCode == 13){ + $("#contacts-search").click(); + } }); - a.setOptions({ params: { type: 'a' }}); break; case 'display-head': $(".comment-wwedit-wrapper textarea").editor_autocomplete(baseurl+"/acl"); diff --git a/view/theme/frost/templates/contacts-end.tpl b/view/theme/frost/templates/contacts-end.tpl index 5416f872c8..139597f9cb 100644 --- a/view/theme/frost/templates/contacts-end.tpl +++ b/view/theme/frost/templates/contacts-end.tpl @@ -1,5 +1,2 @@ - - - diff --git a/view/theme/frost/templates/message-end.tpl b/view/theme/frost/templates/message-end.tpl index 5416f872c8..139597f9cb 100644 --- a/view/theme/frost/templates/message-end.tpl +++ b/view/theme/frost/templates/message-end.tpl @@ -1,5 +1,2 @@ - - - From d0ade828c05545e45ce129c05090fa795d0376c1 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sun, 24 Jan 2016 19:56:23 +0100 Subject: [PATCH 005/485] rework autocomplete: some cleanup and docu --- include/acl_selectors.php | 45 ++++++++---------- include/dir_fns.php | 18 ++++++-- include/nav.php | 59 +++++++++++------------- view/global.css | 2 - view/templates/message-head.tpl | 2 +- view/templates/nav_head.tpl | 0 view/theme/vier/breathe.css | 2 +- view/theme/vier/narrow.css | 2 +- view/theme/vier/plus.css | 2 +- view/theme/vier/shadow.css | 4 +- view/theme/vier/style.css | 64 ++++++++++++++------------ view/theme/vier/templates/nav.tpl | 4 +- view/theme/vier/templates/nav_head.tpl | 6 +++ 13 files changed, 107 insertions(+), 103 deletions(-) create mode 100644 view/templates/nav_head.tpl create mode 100644 view/theme/vier/templates/nav_head.tpl diff --git a/include/acl_selectors.php b/include/acl_selectors.php index d78393aeee..46f737e4c2 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -1,13 +1,15 @@ pager['page'] != 1) ? '&p=' . $a->pager['page'] : ''); - $x = z_fetch_url(get_server().'/lsearch?f=' . $p . '&search=' . urlencode($search)); if($x['success']) { diff --git a/include/dir_fns.php b/include/dir_fns.php index a362732b7b..2e39e7ddbf 100644 --- a/include/dir_fns.php +++ b/include/dir_fns.php @@ -1,11 +1,20 @@ page,'nav'))) $a->page['nav'] = ''; - $base = z_root(); - /** + $a->page['htmlhead'] .= replace_macros(get_markup_template('nav_head.tpl'), array()); + + /* * Placeholder div for popup panel */ - $a->page['htmlhead'] .= <<< EOT - - -EOT; $a->page['nav'] .= '' ; $nav_info = nav_info($a); - /** + /* * Build the page */ @@ -37,12 +31,13 @@ EOT; '$baseurl' => $a->get_baseurl(), '$sitelocation' => $nav_info['sitelocation'], '$nav' => $nav_info['nav'], - '$banner' => $nav_info['banner'], + '$banner' => $nav_info['banner'], '$emptynotifications' => t('Nothing new here'), '$userinfo' => $nav_info['userinfo'], - '$sel' => $a->nav_sel, + '$sel' => $a->nav_sel, '$apps' => $a->apps, - '$clear_notifs' => t('Clear notifications') + '$clear_notifs' => t('Clear notifications'), + '$search_hint' => t('@name, !forum, #tags, content') )); call_hooks('page_header', $a->page['nav']); @@ -53,7 +48,7 @@ function nav_info(&$a) { $ssl_state = ((local_user()) ? true : false); - /** + /* * * Our network is distributed, and as you visit friends some of the * sites look exactly the same - it isn't always easy to know where you are. @@ -69,7 +64,7 @@ function nav_info(&$a) { // nav links: array of array('href', 'text', 'extra css classes', 'title') $nav = Array(); - /** + /* * Display login or logout */ @@ -100,7 +95,7 @@ function nav_info(&$a) { } - /** + /* * "Home" should also take you home from an authenticated remote profile connection */ @@ -151,7 +146,7 @@ function nav_info(&$a) { $nav['about'] = Array('friendica', t('Information'), "", t('Information about this friendica instance')); - /** + /* * * The following nav links are only show to logged in users * @@ -195,7 +190,7 @@ function nav_info(&$a) { $nav['contacts'] = array('contacts', t('Contacts'),"", t('Manage/edit friends and contacts')); } - /** + /* * Admin page */ if (is_site_admin()){ @@ -206,7 +201,7 @@ function nav_info(&$a) { $nav['navigation'] = array('navigation/', t('Navigation'), "", t('Site map')); - /** + /* * * Provide a banner/logo/whatever * @@ -229,26 +224,26 @@ function nav_info(&$a) { } -/* +/** * Set a menu item in navbar as selected * */ function nav_set_selected($item){ $a = get_app(); - $a->nav_sel = array( + $a->nav_sel = array( 'community' => null, - 'network' => null, - 'home' => null, - 'profiles' => null, + 'network' => null, + 'home' => null, + 'profiles' => null, 'introductions' => null, 'notifications' => null, - 'messages' => null, - 'directory' => null, - 'settings' => null, - 'contacts' => null, - 'manage' => null, - 'events' => null, - 'register' => null, + 'messages' => null, + 'directory' => null, + 'settings' => null, + 'contacts' => null, + 'manage' => null, + 'events' => null, + 'register' => null, ); $a->nav_sel[$item] = 'selected'; } diff --git a/view/global.css b/view/global.css index ff2810292c..7fa9947d30 100644 --- a/view/global.css +++ b/view/global.css @@ -184,7 +184,6 @@ key { display: inline; background-color: #eee; color: #666; padding:0.2em; font- .notify-unseen { background-color: #cceeFF; } /* autocomplete popup */ - ul.acpopup { list-style: none; float: left; @@ -194,7 +193,6 @@ ul.acpopup { } nav .acpopup { width: 290px; - margin-left: -35px; max-height: 450px; max-width: 300px; overflow-y: auto; diff --git a/view/templates/message-head.tpl b/view/templates/message-head.tpl index 49f268c42b..3fabebc0d2 100644 --- a/view/templates/message-head.tpl +++ b/view/templates/message-head.tpl @@ -1,7 +1,7 @@ From 9fba5041a0ee79b551df81441fdac4f75bcaded2 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sat, 30 Jan 2016 16:42:46 +0100 Subject: [PATCH 006/485] rework autocomplete: update query-textcomplete --- .../jquery.textcomplete.js | 281 +++++++++++++----- 1 file changed, 202 insertions(+), 79 deletions(-) diff --git a/library/jquery-textcomplete/jquery.textcomplete.js b/library/jquery-textcomplete/jquery.textcomplete.js index 3df84f3b43..2003101750 100644 --- a/library/jquery-textcomplete/jquery.textcomplete.js +++ b/library/jquery-textcomplete/jquery.textcomplete.js @@ -1,3 +1,16 @@ +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof module === "object" && module.exports) { + var $ = require('jquery'); + module.exports = factory($); + } else { + // Browser globals + factory(jQuery); + } +}(function (jQuery) { + /*! * jQuery.textcomplete * @@ -17,13 +30,18 @@ if (typeof jQuery === 'undefined') { if (console.warn) { console.warn(message); } }; + var id = 1; + $.fn.textcomplete = function (strategies, option) { var args = Array.prototype.slice.call(arguments); return this.each(function () { + var self = this; var $this = $(this); var completer = $this.data('textComplete'); if (!completer) { - completer = new $.fn.textcomplete.Completer(this, option || {}); + option || (option = {}); + option._oid = id++; // unique object id + completer = new $.fn.textcomplete.Completer(this, option); $this.data('textComplete', completer); } if (typeof strategies === 'string') { @@ -45,7 +63,10 @@ if (typeof jQuery === 'undefined') { } }); }); - completer.register($.fn.textcomplete.Strategy.parse(strategies)); + completer.register($.fn.textcomplete.Strategy.parse(strategies, { + el: self, + $el: $this + })); } }); }; @@ -115,6 +136,10 @@ if (typeof jQuery === 'undefined') { return Object.prototype.toString.call(obj) === '[object String]'; }; + var isFunction = function (obj) { + return Object.prototype.toString.call(obj) === '[object Function]'; + }; + var uniqueId = 0; function Completer(element, option) { @@ -224,8 +249,10 @@ if (typeof jQuery === 'undefined') { // // value - The selected element of the array callbacked from search func. // strategy - The Strategy object. - select: function (value, strategy) { - this.adapter.select(value, strategy); + // e - Click or keydown event object. + select: function (value, strategy, e) { + this._term = null; + this.adapter.select(value, strategy, e); this.fire('change').fire('textComplete:select', value, strategy); this.adapter.focus(); }, @@ -248,8 +275,9 @@ if (typeof jQuery === 'undefined') { var strategy = this.strategies[i]; var context = strategy.context(text); if (context || context === '') { + var matchRegexp = isFunction(strategy.match) ? strategy.match(text) : strategy.match; if (isString(context)) { text = context; } - var match = text.match(strategy.match); + var match = text.match(matchRegexp); if (match) { return [strategy, match[strategy.index], match]; } } } @@ -262,14 +290,14 @@ if (typeof jQuery === 'undefined') { strategy.search(term, function (data, stillSearching) { if (!self.dropdown.shown) { self.dropdown.activate(); - self.dropdown.setPosition(self.adapter.getCaretPosition()); } if (self._clearAtNext) { // The first callback in the current lock. self.dropdown.clear(); self._clearAtNext = false; } - self.dropdown.render(self._zip(data, strategy)); + self.dropdown.setPosition(self.adapter.getCaretPosition()); + self.dropdown.render(self._zip(data, strategy, term)); if (!stillSearching) { // The last callback in the current lock. free(); @@ -284,9 +312,9 @@ if (typeof jQuery === 'undefined') { // // this._zip(['a', 'b'], 's'); // //=> [{ value: 'a', strategy: 's' }, { value: 'b', strategy: 's' }] - _zip: function (data, strategy) { + _zip: function (data, strategy, term) { return $.map(data, function (value) { - return { value: value, strategy: strategy }; + return { value: value, strategy: strategy, term: term }; }); } }); @@ -297,6 +325,8 @@ if (typeof jQuery === 'undefined') { +function ($) { 'use strict'; + var $window = $(window); + var include = function (zippedData, datum) { var i, elem; var idProperty = datum.strategy.idProperty @@ -320,6 +350,16 @@ if (typeof jQuery === 'undefined') { }); }); + var commands = { + SKIP_DEFAULT: 0, + KEY_UP: 1, + KEY_DOWN: 2, + KEY_ENTER: 3, + KEY_PAGEUP: 4, + KEY_PAGEDOWN: 5, + KEY_ESCAPE: 6 + }; + // Dropdown view // ============= @@ -327,7 +367,7 @@ if (typeof jQuery === 'undefined') { // // element - Textarea or contenteditable element. function Dropdown(element, completer, option) { - this.$el = Dropdown.findOrCreateElement(option); + this.$el = Dropdown.createElement(option); this.completer = completer; this.id = completer.id + 'dropdown'; this._data = []; // zipped data. @@ -338,7 +378,7 @@ if (typeof jQuery === 'undefined') { if (option.listPosition) { this.setPosition = option.listPosition; } if (option.height) { this.$el.height(option.height); } var self = this; - $.each(['maxCount', 'placement', 'footer', 'header', 'className'], function (_i, name) { + $.each(['maxCount', 'placement', 'footer', 'header', 'noResultsMessage', 'className'], function (_i, name) { if (option[name] != null) { self[name] = option[name]; } }); this._bindEvents(element); @@ -349,18 +389,19 @@ if (typeof jQuery === 'undefined') { // Class methods // ------------- - findOrCreateElement: function (option) { + createElement: function (option) { var $parent = option.appendTo; if (!($parent instanceof $)) { $parent = $($parent); } - var $el = $parent.children('.dropdown-menu') - if (!$el.length) { - $el = $('').css({ + var $el = $('
      ') + .addClass('dropdown-menu textcomplete-dropdown') + .attr('id', 'textcomplete-dropdown-' + option._oid) + .css({ display: 'none', left: 0, position: 'absolute', zIndex: option.zIndex - }).appendTo($parent); - } + }) + .appendTo($parent); return $el; } }); @@ -403,23 +444,26 @@ if (typeof jQuery === 'undefined') { this._renderFooter(unzippedData); if (contentsHtml) { this._renderContents(contentsHtml); + this._fitToBottom(); this._activateIndexedItem(); } this._setScroll(); + } else if (this.noResultsMessage) { + this._renderNoResultsMessage(unzippedData); } else if (this.shown) { this.deactivate(); } }, - setPosition: function (position) { - this.$el.css(this._applyPlacement(position)); + setPosition: function (pos) { + this.$el.css(this._applyPlacement(pos)); // Make the dropdown fixed if the input is also fixed // This can't be done during init, as textcomplete may be used on multiple elements on the same page // Because the same dropdown is reused behind the scenes, we need to recheck every time the dropdown is showed var position = 'absolute'; // Check if input or one of its parents has positioning we need to care about - this.$inputEl.add(this.$inputEl.parents()).each(function() { + this.$inputEl.add(this.$inputEl.parents()).each(function() { if($(this).css('position') === 'absolute') // The element has absolute positioning, so it's all OK return false; if($(this).css('position') === 'fixed') { @@ -436,7 +480,7 @@ if (typeof jQuery === 'undefined') { this.$el.html(''); this.data = []; this._index = 0; - this._$header = this._$footer = null; + this._$header = this._$footer = this._$noResultsMessage = null; }, activate: function () { @@ -481,19 +525,25 @@ if (typeof jQuery === 'undefined') { return e.keyCode === 34; // PAGEDOWN }, + isEscape: function (e) { + return e.keyCode === 27; // ESCAPE + }, + // Private properties // ------------------ _data: null, // Currently shown zipped data. _index: null, _$header: null, + _$noResultsMessage: null, _$footer: null, // Private methods // --------------- _bindEvents: function () { - this.$el.on('mousedown.' + this.id, '.textcomplete-item', $.proxy(this._onClick, this)) + this.$el.on('mousedown.' + this.id, '.textcomplete-item', $.proxy(this._onClick, this)); + this.$el.on('touchstart.' + this.id, '.textcomplete-item', $.proxy(this._onClick, this)); this.$el.on('mouseover.' + this.id, '.textcomplete-item', $.proxy(this._onMouseover, this)); this.$inputEl.on('keydown.' + this.id, $.proxy(this._onKeydown, this)); }, @@ -506,11 +556,16 @@ if (typeof jQuery === 'undefined') { $el = $el.closest('.textcomplete-item'); } var datum = this.data[parseInt($el.data('index'), 10)]; - this.completer.select(datum.value, datum.strategy); + this.completer.select(datum.value, datum.strategy, e); var self = this; // Deactive at next tick to allow other event handlers to know whether // the dropdown has been shown or not. - setTimeout(function () { self.deactivate(); }, 0); + setTimeout(function () { + self.deactivate(); + if (e.type === 'touchstart') { + self.$inputEl.focus(); + } + }, 0); }, // Activate hovered item. @@ -526,21 +581,58 @@ if (typeof jQuery === 'undefined') { _onKeydown: function (e) { if (!this.shown) { return; } + + var command; + + if ($.isFunction(this.option.onKeydown)) { + command = this.option.onKeydown(e, commands); + } + + if (command == null) { + command = this._defaultKeydown(e); + } + + switch (command) { + case commands.KEY_UP: + e.preventDefault(); + this._up(); + break; + case commands.KEY_DOWN: + e.preventDefault(); + this._down(); + break; + case commands.KEY_ENTER: + e.preventDefault(); + this._enter(e); + break; + case commands.KEY_PAGEUP: + e.preventDefault(); + this._pageup(); + break; + case commands.KEY_PAGEDOWN: + e.preventDefault(); + this._pagedown(); + break; + case commands.KEY_ESCAPE: + e.preventDefault(); + this.deactivate(); + break; + } + }, + + _defaultKeydown: function (e) { if (this.isUp(e)) { - e.preventDefault(); - this._up(); + return commands.KEY_UP; } else if (this.isDown(e)) { - e.preventDefault(); - this._down(); + return commands.KEY_DOWN; } else if (this.isEnter(e)) { - e.preventDefault(); - this._enter(); + return commands.KEY_ENTER; } else if (this.isPageup(e)) { - e.preventDefault(); - this._pageup(); + return commands.KEY_PAGEUP; } else if (this.isPagedown(e)) { - e.preventDefault(); - this._pagedown(); + return commands.KEY_PAGEDOWN; + } else if (this.isEscape(e)) { + return commands.KEY_ESCAPE; } }, @@ -564,10 +656,10 @@ if (typeof jQuery === 'undefined') { this._setScroll(); }, - _enter: function () { + _enter: function (e) { var datum = this.data[parseInt(this._getActiveElement().data('index'), 10)]; - this.completer.select(datum.value, datum.strategy); - this._setScroll(); + this.completer.select(datum.value, datum.strategy, e); + this.deactivate(); }, _pageup: function () { @@ -630,7 +722,7 @@ if (typeof jQuery === 'undefined') { index = this.data.length; this.data.push(datum); html += '
    • '; - html += datum.strategy.template(datum.value); + html += datum.strategy.template(datum.value, datum.term); html += '
    • '; } return html; @@ -656,6 +748,16 @@ if (typeof jQuery === 'undefined') { } }, + _renderNoResultsMessage: function (unzippedData) { + if (this.noResultsMessage) { + if (!this._$noResultsMessage) { + this._$noResultsMessage = $('
    • ').appendTo(this.$el); + } + var html = $.isFunction(this.noResultsMessage) ? this.noResultsMessage(unzippedData) : this.noResultsMessage; + this._$noResultsMessage.html(html); + } + }, + _renderContents: function (html) { if (this._$footer) { this._$footer.before(html); @@ -664,7 +766,15 @@ if (typeof jQuery === 'undefined') { } }, - _applyPlacement: function (position) { + _fitToBottom: function() { + var windowScrollBottom = $window.scrollTop() + $window.height(); + var height = this.$el.height(); + if ((this.$el.position().top + height) > windowScrollBottom) { + this.$el.offset({top: windowScrollBottom - height}); + } + }, + + _applyPlacement: function (position) { // If the 'placement' option set to 'top', move the position above the element. if (this.placement.indexOf('top') !== -1) { // Overwrite the position object to set the 'bottom' property instead of the top. @@ -688,6 +798,7 @@ if (typeof jQuery === 'undefined') { }); $.fn.textcomplete.Dropdown = Dropdown; + $.extend($.fn.textcomplete, commands); }(jQuery); +function ($) { @@ -713,9 +824,12 @@ if (typeof jQuery === 'undefined') { if (this.cache) { this.search = memoize(this.search); } } - Strategy.parse = function (optionsArray) { - return $.map(optionsArray, function (options) { - return new Strategy(options); + Strategy.parse = function (strategiesArray, params) { + return $.map(strategiesArray, function (strategy) { + var strategyObj = new Strategy(strategy); + strategyObj.el = params.el; + strategyObj.$el = params.$el; + return strategyObj; }); }; @@ -848,6 +962,7 @@ if (typeof jQuery === 'undefined') { // Suppress searching if it returns true. _skipSearch: function (clickEvent) { switch (clickEvent.keyCode) { + case 13: // ENTER case 40: // DOWN case 38: // UP return true; @@ -894,17 +1009,19 @@ if (typeof jQuery === 'undefined') { // -------------- // Update the textarea with the given value and strategy. - select: function (value, strategy) { + select: function (value, strategy, e) { var pre = this.getTextFromHeadToCaret(); var post = this.el.value.substring(this.el.selectionEnd); - var newSubstr = strategy.replace(value); - if ($.isArray(newSubstr)) { - post = newSubstr[1] + post; - newSubstr = newSubstr[0]; + var newSubstr = strategy.replace(value, e); + if (typeof newSubstr !== 'undefined') { + if ($.isArray(newSubstr)) { + post = newSubstr[1] + post; + newSubstr = newSubstr[0]; + } + pre = pre.replace(strategy.match, newSubstr); + this.$el.val(pre + post); + this.el.selectionStart = this.el.selectionEnd = pre.length; } - pre = pre.replace(strategy.match, newSubstr); - this.$el.val(pre + post); - this.el.selectionStart = this.el.selectionEnd = pre.length; }, // Private methods @@ -981,22 +1098,24 @@ if (typeof jQuery === 'undefined') { // Public methods // -------------- - select: function (value, strategy) { + select: function (value, strategy, e) { var pre = this.getTextFromHeadToCaret(); var post = this.el.value.substring(pre.length); - var newSubstr = strategy.replace(value); - if ($.isArray(newSubstr)) { - post = newSubstr[1] + post; - newSubstr = newSubstr[0]; + var newSubstr = strategy.replace(value, e); + if (typeof newSubstr !== 'undefined') { + if ($.isArray(newSubstr)) { + post = newSubstr[1] + post; + newSubstr = newSubstr[0]; + } + pre = pre.replace(strategy.match, newSubstr); + this.$el.val(pre + post); + this.el.focus(); + var range = this.el.createTextRange(); + range.collapse(true); + range.moveEnd('character', pre.length); + range.moveStart('character', pre.length); + range.select(); } - pre = pre.replace(strategy.match, newSubstr); - this.$el.val(pre + post); - this.el.focus(); - var range = this.el.createTextRange(); - range.collapse(true); - range.moveEnd('character', pre.length); - range.moveStart('character', pre.length); - range.select(); }, getTextFromHeadToCaret: function () { @@ -1032,7 +1151,7 @@ if (typeof jQuery === 'undefined') { // Update the content with the given value and strategy. // When an dropdown item is selected, it is executed. - select: function (value, strategy) { + select: function (value, strategy, e) { var pre = this.getTextFromHeadToCaret(); var sel = window.getSelection() var range = sel.getRangeAt(0); @@ -1040,20 +1159,22 @@ if (typeof jQuery === 'undefined') { selection.selectNodeContents(range.startContainer); var content = selection.toString(); var post = content.substring(range.startOffset); - var newSubstr = strategy.replace(value); - if ($.isArray(newSubstr)) { - post = newSubstr[1] + post; - newSubstr = newSubstr[0]; + var newSubstr = strategy.replace(value, e); + if (typeof newSubstr !== 'undefined') { + if ($.isArray(newSubstr)) { + post = newSubstr[1] + post; + newSubstr = newSubstr[0]; + } + pre = pre.replace(strategy.match, newSubstr); + range.selectNodeContents(range.startContainer); + range.deleteContents(); + var node = document.createTextNode(pre + post); + range.insertNode(node); + range.setStart(node, pre.length); + range.collapse(true); + sel.removeAllRanges(); + sel.addRange(range); } - pre = pre.replace(strategy.match, newSubstr); - range.selectNodeContents(range.startContainer); - range.deleteContents(); - var node = document.createTextNode(pre + post); - range.insertNode(node); - range.setStart(node, pre.length); - range.collapse(true); - sel.removeAllRanges(); - sel.addRange(range); }, // Private methods @@ -1079,8 +1200,7 @@ if (typeof jQuery === 'undefined') { position.left -= this.$el.offset().left; position.top += $node.height() - this.$el.offset().top; position.lineHeight = $node.height(); - var dir = this.$el.attr('dir') || this.$el.css('direction'); - if (dir === 'rtl') { position.left -= this.listView.$el.width(); } + $node.remove(); return position; }, @@ -1102,3 +1222,6 @@ if (typeof jQuery === 'undefined') { $.fn.textcomplete.ContentEditable = ContentEditable; }(jQuery); + +return jQuery; +})); From 5f7c5e6ab66ff0340a33ea1f2f8b02ee83991d2d Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Mon, 1 Feb 2016 17:43:12 +0100 Subject: [PATCH 007/485] rework autocomplete: Access list of smilies over JSON --- include/network.php | 15 ++++ include/smilies.php | 179 ++++++++++++++++++++++++++++++++++++++++++++ include/text.php | 157 +------------------------------------- mod/smilies.php | 20 ++++- 4 files changed, 215 insertions(+), 156 deletions(-) create mode 100644 include/smilies.php diff --git a/include/network.php b/include/network.php index c6379e407b..84f1297e03 100644 --- a/include/network.php +++ b/include/network.php @@ -1344,3 +1344,18 @@ function short_link($url) { } return $slinky->short(); }}; + +/** + * @brief Encodes content to json + * + * This function encodes an array to json format + * and adds an application/json HTTP header to the output. + * After finishing the process is getting killed. + * + * @param array $x + */ +function json_return_and_die($x) { + header("content-type: application/json"); + echo json_encode($x); + killme(); +} diff --git a/include/smilies.php b/include/smilies.php new file mode 100644 index 0000000000..7b3feefca8 --- /dev/null +++ b/include/smilies.php @@ -0,0 +1,179 @@ + smilie shortcut + * 'icons' => icon in html + * + * @hook smilie ('texts' => smilies texts array, 'icons' => smilies html array) + */ + public static function list_smilies() { + + $texts = array( + '<3', + '</3', + '<\\3', + ':-)', + ';-)', + ':-(', + ':-P', + ':-p', + ':-"', + ':-"', + ':-x', + ':-X', + ':-D', + '8-|', + '8-O', + ':-O', + '\\o/', + 'o.O', + 'O.o', + 'o_O', + 'O_o', + ":'(", + ":-!", + ":-/", + ":-[", + "8-)", + ':beer', + ':homebrew', + ':coffee', + ':facepalm', + ':like', + ':dislike', + '~friendica', + 'red#', + 'red#matrix' + + ); + + $icons = array( + '<3', + '</3', + '<\\3', + ':-)', + ';-)', + ':-(', + ':-P', + ':-p', + ':-\', + ':-\', + ':-x', + ':-X', + ':-D', + '8-|', + '8-O', + ':-O', + '\\o/', + 'o.O', + 'O.o', + 'o_O', + 'O_o', + ':\'(', + ':-!', + ':-/', + ':-[', + '8-)', + ':beer', + ':homebrew', + ':coffee', + ':facepalm', + ':like', + ':dislike', + '~friendica ~friendica', + 'redredmatrix', + 'redredmatrix' + ); + + $params = array('texts' => $texts, 'icons' => $icons); + call_hooks('smilie', $params); + + return $params; + + } + + /** + * @brief Replaces text emoticons with graphical images + * + * It is expected that this function will be called using HTML text. + * We will escape text between HTML pre and code blocks from being + * processed. + * + * At a higher level, the bbcode [nosmile] tag can be used to prevent this + * function from being executed by the prepare_text() routine when preparing + * bbcode source for HTML display + * + * @param string $s + * @param boolean $sample + * + * @return string + */ + public static function replace($s, $sample = false) { + if(intval(get_config('system','no_smilies')) + || (local_user() && intval(get_pconfig(local_user(),'system','no_smilies')))) + return $s; + + $s = preg_replace_callback('/
      (.*?)<\/pre>/ism','self::smile_encode',$s);
      +		$s = preg_replace_callback('/(.*?)<\/code>/ism','self::smile_encode',$s);
      +
      +		$params = self::list_smilies();
      +		$params['string'] = $s;
      +
      +		if($sample) {
      +			$s = '
      '; + for($x = 0; $x < count($params['texts']); $x ++) { + $s .= '
      ' . $params['texts'][$x] . '
      ' . $params['icons'][$x] . '
      '; + } + } + else { + $params['string'] = preg_replace_callback('/<(3+)/','self::preg_heart',$params['string']); + $s = str_replace($params['texts'],$params['icons'],$params['string']); + } + + $s = preg_replace_callback('/
      (.*?)<\/pre>/ism','self::smile_decode',$s);
      +		$s = preg_replace_callback('/(.*?)<\/code>/ism','self::smile_decode',$s);
      +
      +		return $s;
      +	}
      +
      +	private function smile_encode($m) {
      +		return(str_replace($m[1],base64url_encode($m[1]),$m[0]));
      +	}
      +
      +	private function smile_decode($m) {
      +		return(str_replace($m[1],base64url_decode($m[1]),$m[0]));
      +	}
      +
      +
      +	/**
      +	 * @brief expand <3333 to the correct number of hearts
      +	 *
      +	 * @param string $x
      +	 * @return string
      +	 */
      +	private function preg_heart($x) {
      +		if(strlen($x[1]) == 1)
      +			return $x[0];
      +		$t = '';
      +		for($cnt = 0; $cnt < strlen($x[1]); $cnt ++)
      +			$t .= '<3';
      +		$r =  str_replace($x[0],$t,$x[0]);
      +		return $r;
      +	}
      +
      +}
      diff --git a/include/text.php b/include/text.php
      index 4f3af5aee8..eb8dde40cb 100644
      --- a/include/text.php
      +++ b/include/text.php
      @@ -2,6 +2,7 @@
       
       require_once("include/template_processor.php");
       require_once("include/friendica_smarty.php");
      +require_once("include/smilies.php");
       require_once("include/map.php");
       require_once("mod/proxy.php");
       
      @@ -1079,160 +1080,6 @@ function get_mood_verbs() {
       	return $arr;
       }
       
      -
      -
      -if(! function_exists('smilies')) {
      -/**
      - * Replaces text emoticons with graphical images
      - *
      - * It is expected that this function will be called using HTML text.
      - * We will escape text between HTML pre and code blocks from being
      - * processed.
      - *
      - * At a higher level, the bbcode [nosmile] tag can be used to prevent this
      - * function from being executed by the prepare_text() routine when preparing
      - * bbcode source for HTML display
      - *
      - * @param string $s
      - * @param boolean $sample
      - * @return string
      - * @hook smilie ('texts' => smilies texts array, 'icons' => smilies html array, 'string' => $s)
      - */
      -function smilies($s, $sample = false) {
      -	$a = get_app();
      -
      -	if(intval(get_config('system','no_smilies'))
      -		|| (local_user() && intval(get_pconfig(local_user(),'system','no_smilies'))))
      -		return $s;
      -
      -	$s = preg_replace_callback('/
      (.*?)<\/pre>/ism','smile_encode',$s);
      -	$s = preg_replace_callback('/(.*?)<\/code>/ism','smile_encode',$s);
      -
      -	$texts =  array(
      -		'<3',
      -		'</3',
      -		'<\\3',
      -		':-)',
      -		';-)',
      -		':-(',
      -		':-P',
      -		':-p',
      -		':-"',
      -		':-"',
      -		':-x',
      -		':-X',
      -		':-D',
      -		'8-|',
      -		'8-O',
      -		':-O',
      -		'\\o/',
      -		'o.O',
      -		'O.o',
      -		'o_O',
      -		'O_o',
      -		":'(",
      -		":-!",
      -		":-/",
      -		":-[",
      -		"8-)",
      -		':beer',
      -		':homebrew',
      -		':coffee',
      -		':facepalm',
      -		':like',
      -		':dislike',
      -		'~friendica',
      -		'red#',
      -		'red#matrix'
      -
      -	);
      -
      -	$icons = array(
      -		'<3',
      -		'</3',
      -		'<\\3',
      -		':-)',
      -		';-)',
      -		':-(',
      -		':-P',
      -		':-p',
      -		':-\',
      -		':-\',
      -		':-x',
      -		':-X',
      -		':-D',
      -		'8-|',
      -		'8-O',
      -		':-O',
      -		'\\o/',
      -		'o.O',
      -		'O.o',
      -		'o_O',
      -		'O_o',
      -		':\'(',
      -		':-!',
      -		':-/',
      -		':-[',
      -		'8-)',
      -		':beer',
      -		':homebrew',
      -		':coffee',
      -		':facepalm',
      -		':like',
      -		':dislike',
      -		'~friendica ~friendica',
      -		'redredmatrix',
      -		'redredmatrix'
      -	);
      -
      -	$params = array('texts' => $texts, 'icons' => $icons, 'string' => $s);
      -	call_hooks('smilie', $params);
      -
      -	if($sample) {
      -		$s = '
      '; - for($x = 0; $x < count($params['texts']); $x ++) { - $s .= '
      ' . $params['texts'][$x] . '
      ' . $params['icons'][$x] . '
      '; - } - } - else { - $params['string'] = preg_replace_callback('/<(3+)/','preg_heart',$params['string']); - $s = str_replace($params['texts'],$params['icons'],$params['string']); - } - - $s = preg_replace_callback('/
      (.*?)<\/pre>/ism','smile_decode',$s);
      -	$s = preg_replace_callback('/(.*?)<\/code>/ism','smile_decode',$s);
      -
      -	return $s;
      -
      -}}
      -
      -function smile_encode($m) {
      -	return(str_replace($m[1],base64url_encode($m[1]),$m[0]));
      -}
      -
      -function smile_decode($m) {
      -	return(str_replace($m[1],base64url_decode($m[1]),$m[0]));
      -}
      -
      -
      -/**
      - * expand <3333 to the correct number of hearts
      - *
      - * @param string $x
      - * @return string
      - */
      -function preg_heart($x) {
      -	$a = get_app();
      -	if(strlen($x[1]) == 1)
      -		return $x[0];
      -	$t = '';
      -	for($cnt = 0; $cnt < strlen($x[1]); $cnt ++)
      -		$t .= '<3';
      -	$r =  str_replace($x[0],$t,$x[0]);
      -	return $r;
      -}
      -
      -
       if(! function_exists('day_translate')) {
       /**
        * Translate days and months names
      @@ -1549,7 +1396,7 @@ function prepare_text($text) {
       	if(stristr($text,'[nosmile]'))
       		$s = bbcode($text);
       	else
      -		$s = smilies(bbcode($text));
      +		$s = smilies::replace(bbcode($text));
       
       	return trim($s);
       }}
      diff --git a/mod/smilies.php b/mod/smilies.php
      index c47f95da76..5a157e3686 100644
      --- a/mod/smilies.php
      +++ b/mod/smilies.php
      @@ -1,3 +1,21 @@
       argv[1]==="json"){
      +		$tmp = smilies::list_smilies();
      +		$results = array();
      +		for($i = 0; $i < count($tmp['texts']); $i++) {
      +			$results[] = array('text' => $tmp['texts'][$i], 'icon' => $tmp['icons'][$i]);
      +		}
      +		json_return_and_die($results);
      +	}
      +	else {
      +		return smilies('',true);
      +	}
      +}
      
      From aee94b38c174f0e182d6d14309ef3f4aef2563b0 Mon Sep 17 00:00:00 2001
      From: rabuzarus <>
      Date: Mon, 1 Feb 2016 18:21:29 +0100
      Subject: [PATCH 008/485] rework autocomplete: add class dir and static
       function
      
      ---
       include/acl_selectors.php        |  4 +-
       include/dir_fns.php              | 74 +++++++++++++++++---------------
       view/templates/contacts-head.tpl | 12 ------
       3 files changed, 42 insertions(+), 48 deletions(-)
      
      diff --git a/include/acl_selectors.php b/include/acl_selectors.php
      index 46f737e4c2..b5c43e38e6 100644
      --- a/include/acl_selectors.php
      +++ b/include/acl_selectors.php
      @@ -659,7 +659,7 @@ function acl_lookup(&$a, $out_type = 'json') {
        * @brief Searching for global contacts for autocompletion
        * 
        * @param App $a
      - * @return type
      + * @return array
        */
       function navbar_complete(&$a) {
       
      @@ -682,7 +682,7 @@ function navbar_complete(&$a) {
       		$search = substr($search,1);
       
       	if($localsearch) {
      -		$x = dirsearch_global_by_name($search);
      +		$x = dir::global_search_by_name($search);
       		return $x;
       	}
       
      diff --git a/include/dir_fns.php b/include/dir_fns.php
      index 2e39e7ddbf..b85cb5b2d0 100644
      --- a/include/dir_fns.php
      +++ b/include/dir_fns.php
      @@ -2,45 +2,51 @@
       
       /**
        * @file include/dir_fns.php
      - * @brief Functions for directory
        */
       
      +
       /**
      - * @brief Search global contact table by nick or name
      - *  * 
      - * @param string $search
      - * @return array
      + * @brief This class handels directory related functions
        */
      -function dirsearch_global_by_name($search) {
      +class dir {
       
      -	if($search) {
      -		// check supported networks
      -		if (get_config('system','diaspora_enabled'))
      -			$diaspora = NETWORK_DIASPORA;
      -		else
      -			$diaspora = NETWORK_DFRN;
      +	/**
      +	 * @brief Search global contact table by nick or name
      +	 *  * 
      +	 * @param string $search Name or nick
      +	 * @return array
      +	 */
      +	public static function global_search_by_name($search) {
       
      -		if (!get_config('system','ostatus_disabled'))
      -			$ostatus = NETWORK_OSTATUS;
      -		else
      -			$ostatus = NETWORK_DFRN;
      +		if($search) {
      +			// check supported networks
      +			if (get_config('system','diaspora_enabled'))
      +				$diaspora = NETWORK_DIASPORA;
      +			else
      +				$diaspora = NETWORK_DFRN;
      +
      +			if (!get_config('system','ostatus_disabled'))
      +				$ostatus = NETWORK_OSTATUS;
      +			else
      +				$ostatus = NETWORK_DFRN;
      +
      +			$results = q("SELECT `contact`.`id` AS `cid`, `gcontact`.`url`, `gcontact`.`name`, `gcontact`.`nick`, `gcontact`.`photo`,
      +							`gcontact`.`network`, `gcontact`.`keywords`, `gcontact`.`addr`
      +						FROM `gcontact`
      +						LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl`
      +							AND `contact`.`uid` = %d AND NOT `contact`.`blocked`
      +							AND NOT `contact`.`pending` AND `contact`.`rel` IN ('%s', '%s')
      +						WHERE (`contact`.`id` > 0 OR (NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND
      +						((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)))) AND
      +						(`gcontact`.`url` REGEXP '%s' OR `gcontact`.`name` REGEXP '%s' OR `gcontact`.`nick` REGEXP '%s'
      +							) 
      +							GROUP BY `gcontact`.`nurl`
      +							ORDER BY `gcontact`.`updated` DESC ",
      +						intval(local_user()), dbesc(CONTACT_IS_SHARING), dbesc(CONTACT_IS_FRIEND),
      +						dbesc(NETWORK_DFRN), dbesc($ostatus), dbesc($diaspora),
      +						dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)));
      +			return $results;
      +		}
       
      -		$results = q("SELECT `contact`.`id` AS `cid`, `gcontact`.`url`, `gcontact`.`name`, `gcontact`.`nick`, `gcontact`.`photo`,
      -						`gcontact`.`network`, `gcontact`.`keywords`, `gcontact`.`addr`
      -					FROM `gcontact`
      -					LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl`
      -						AND `contact`.`uid` = %d AND NOT `contact`.`blocked`
      -						AND NOT `contact`.`pending` AND `contact`.`rel` IN ('%s', '%s')
      -					WHERE (`contact`.`id` > 0 OR (NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND
      -					((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)))) AND
      -					(`gcontact`.`url` REGEXP '%s' OR `gcontact`.`name` REGEXP '%s' OR `gcontact`.`nick` REGEXP '%s'
      -						) 
      -						GROUP BY `gcontact`.`nurl`
      -						ORDER BY `gcontact`.`updated` DESC ",
      -					intval(local_user()), dbesc(CONTACT_IS_SHARING), dbesc(CONTACT_IS_FRIEND),
      -					dbesc(NETWORK_DFRN), dbesc($ostatus), dbesc($diaspora),
      -					dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)));
      -		return $results;
       	}
      -		
      -}
      \ No newline at end of file
      +}
      diff --git a/view/templates/contacts-head.tpl b/view/templates/contacts-head.tpl
      index 25055d405b..ea562233f4 100644
      --- a/view/templates/contacts-head.tpl
      +++ b/view/templates/contacts-head.tpl
      @@ -2,18 +2,6 @@
       
       
      
      From 00e319faa269801e9ffe1f60ad1b4d74946522c7 Mon Sep 17 00:00:00 2001
      From: rabuzarus <>
      Date: Mon, 1 Feb 2016 18:22:26 +0100
      Subject: [PATCH 009/485] rework autocomplete: add bbcode autocompletion to
       editor
      
      ---
       js/autocomplete.js | 25 +++++++++++++++++++++----
       1 file changed, 21 insertions(+), 4 deletions(-)
      
      diff --git a/js/autocomplete.js b/js/autocomplete.js
      index 1f7df011d3..6c75f17ca6 100644
      --- a/js/autocomplete.js
      +++ b/js/autocomplete.js
      @@ -1,8 +1,15 @@
       /**
      - * Friendica people autocomplete
      + * @brief Friendica people autocomplete
        *
        * require jQuery, jquery.textcomplete
      + * 
      + * for further documentation look at:
      + * http://yuku-t.com/jquery-textcomplete/
      + * 
      + * https://github.com/yuku-t/jquery-textcomplete/blob/master/doc/how_to_use.md
        */
      +
      +
       function contact_search(term, callback, backend_url, type) {
       
       	// Check if there is a conversation id to include the unkonwn contacts of the conversation
      @@ -107,6 +114,9 @@ function submit_form(e) {
       (function( $ ) {
       	$.fn.editor_autocomplete = function(backend_url) {
       
      +		// list of supported bbtags
      +		var bbelements = ['b', 'u', 'i', 'img', 'url', 'quote', 'code', 'spoiler', 'audio', 'video', 'youtube', 'map', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 's', 'o', 'list', 'center', 'nosmile', 'vimeo' ];
      +
       		// Autocomplete contacts
       		contacts = {
       			match: /(^|\s)(@\!*)([^ \n]+)$/,
      @@ -119,12 +129,19 @@ function submit_form(e) {
       		smilies = {
       			match: /(^|\s)(:[a-z]{2,})$/,
       			index: 2,
      -			search: function(term, callback) { $.getJSON('/smilies/json').done(function(data) { callback($.map(data, function(entry) { return entry.text.indexOf(term) === 0 ? entry : null; })); }); },
      -			template: function(item) { return item.icon + item.text; },
      +			search: function(term, callback) { $.getJSON('smilies/json').done(function(data) { callback($.map(data, function(entry) { return entry.text.indexOf(term) === 0 ? entry : null; })); }); },
      +			template: function(item) { return item.icon + ' ' + item.text; },
       			replace: function(item) { return "$1" + item.text + ' '; },
       		};
      +
      +		bbtags = {
      +			match: /\[(\w*)$/,
      +			index: 1,
      +			search: function (term, callback) { callback($.map(bbelements, function (element) { return element.indexOf(term) === 0 ? element : null; })); },
      +			replace: function (element) { return ['[' + element + ']', '[/' + element + ']']; },
      +		};
       		this.attr('autocomplete','off');
      -		this.textcomplete([contacts,smilies], {className:'acpopup', zIndex:1020});
      +		this.textcomplete([contacts,smilies, bbtags], {className:'acpopup', zIndex:1020});
       	};
       })( jQuery );
       
      
      From aff775e55c51fa2745656bb2e2607f1c5710e56f Mon Sep 17 00:00:00 2001
      From: rabuzarus <>
      Date: Tue, 2 Feb 2016 22:33:14 +0100
      Subject: [PATCH 010/485] rework autocomplete: add NavBar forum search
      
      ---
       include/acl_selectors.php | 14 ++++++++------
       include/dir_fns.php       | 14 ++++++++++----
       js/autocomplete.js        | 21 +++++++++++++++++----
       3 files changed, 35 insertions(+), 14 deletions(-)
      
      diff --git a/include/acl_selectors.php b/include/acl_selectors.php
      index b5c43e38e6..9e1a2642a4 100644
      --- a/include/acl_selectors.php
      +++ b/include/acl_selectors.php
      @@ -395,11 +395,12 @@ function acl_lookup(&$a, $out_type = 'json') {
       	if(!local_user())
       		return "";
       
      -	$start = (x($_REQUEST,'start')?$_REQUEST['start']:0);
      -	$count = (x($_REQUEST,'count')?$_REQUEST['count']:100);
      -	$search = (x($_REQUEST,'search')?$_REQUEST['search']:"");
      -	$type = (x($_REQUEST,'type')?$_REQUEST['type']:"");
      -	$conv_id = (x($_REQUEST,'conversation')?$_REQUEST['conversation']:null);
      +	$start	=	(x($_REQUEST,'start')		? $_REQUEST['start']		: 0);
      +	$count	=	(x($_REQUEST,'count')		? $_REQUEST['count']		: 100);
      +	$search	 =	(x($_REQUEST,'search')		? $_REQUEST['search']		: "");
      +	$type	=	(x($_REQUEST,'type')		? $_REQUEST['type']		: "");
      +	$mode	=	(x($_REQUEST,'mode')		? $_REQUEST['mode']		: "");
      +	$conv_id =	(x($_REQUEST,'conversation')	? $_REQUEST['conversation']	: null);
       
       	// For use with jquery.textcomplete for private mail completion
       
      @@ -673,6 +674,7 @@ function navbar_complete(&$a) {
       	$localsearch = get_config('system','poco_local_search');
       
       	$search = $prefix.notags(trim($_REQUEST['search']));
      +	$mode = $_REQUEST['mode'];
       
       	// don't search if search term has less than 2 characters
       	if(! $search || mb_strlen($search) < 2)
      @@ -682,7 +684,7 @@ function navbar_complete(&$a) {
       		$search = substr($search,1);
       
       	if($localsearch) {
      -		$x = dir::global_search_by_name($search);
      +		$x = dir::global_search_by_name($search, $mode);
       		return $x;
       	}
       
      diff --git a/include/dir_fns.php b/include/dir_fns.php
      index b85cb5b2d0..d258058763 100644
      --- a/include/dir_fns.php
      +++ b/include/dir_fns.php
      @@ -14,9 +14,10 @@ class dir {
       	 * @brief Search global contact table by nick or name
       	 *  * 
       	 * @param string $search Name or nick
      +	 * @param string $mode Search mode 
       	 * @return array
       	 */
      -	public static function global_search_by_name($search) {
      +	public static function global_search_by_name($search, $mode = '') {
       
       		if($search) {
       			// check supported networks
      @@ -30,6 +31,12 @@ class dir {
       			else
       				$ostatus = NETWORK_DFRN;
       
      +			// check if fo
      +			if($mode === "community")
      +				$extra_sql = " AND `community`";
      +			else
      +				$extra_sql = "";
      +
       			$results = q("SELECT `contact`.`id` AS `cid`, `gcontact`.`url`, `gcontact`.`name`, `gcontact`.`nick`, `gcontact`.`photo`,
       							`gcontact`.`network`, `gcontact`.`keywords`, `gcontact`.`addr`
       						FROM `gcontact`
      @@ -38,13 +45,12 @@ class dir {
       							AND NOT `contact`.`pending` AND `contact`.`rel` IN ('%s', '%s')
       						WHERE (`contact`.`id` > 0 OR (NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND
       						((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)))) AND
      -						(`gcontact`.`url` REGEXP '%s' OR `gcontact`.`name` REGEXP '%s' OR `gcontact`.`nick` REGEXP '%s'
      -							) 
      +						(`gcontact`.`name` REGEXP '%s' OR `gcontact`.`nick` REGEXP '%s') $extra_sql
       							GROUP BY `gcontact`.`nurl`
       							ORDER BY `gcontact`.`updated` DESC ",
       						intval(local_user()), dbesc(CONTACT_IS_SHARING), dbesc(CONTACT_IS_FRIEND),
       						dbesc(NETWORK_DFRN), dbesc($ostatus), dbesc($diaspora),
      -						dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)));
      +						dbesc(escape_tags($search)), dbesc(escape_tags($search)));
       			return $results;
       		}
       
      diff --git a/js/autocomplete.js b/js/autocomplete.js
      index 6c75f17ca6..aa8b6836c5 100644
      --- a/js/autocomplete.js
      +++ b/js/autocomplete.js
      @@ -10,12 +10,11 @@
        */
       
       
      -function contact_search(term, callback, backend_url, type) {
      +function contact_search(term, callback, backend_url, type, mode) {
       
       	// Check if there is a conversation id to include the unkonwn contacts of the conversation
       	var conv_id = document.activeElement.id.match(/\d+$/);
       
      -
       	// Check if there is a cached result that contains the same information we would get with a full server-side search
       	var bt = backend_url+type;
       	if(!(bt in contact_search.cache)) contact_search.cache[bt] = {};
      @@ -41,6 +40,9 @@ function contact_search(term, callback, backend_url, type) {
       	if(conv_id !== null)
       		postdata['conversation'] = conv_id[0];
       
      +	if(mode !== null)
      +		postdata['mode'] = mode;
      +
       
       	$.ajax({
       		type:'POST',
      @@ -126,6 +128,7 @@ function submit_form(e) {
       			template: contact_format,
       		};
       
      +		// Autocomplete smilies e.g. ":like"
       		smilies = {
       			match: /(^|\s)(:[a-z]{2,})$/,
       			index: 2,
      @@ -134,6 +137,7 @@ function submit_form(e) {
       			replace: function(item) { return "$1" + item.text + ' '; },
       		};
       
      +		// Autocomplete BBTags
       		bbtags = {
       			match: /\[(\w*)$/,
       			index: 1,
      @@ -154,12 +158,21 @@ function submit_form(e) {
       		contacts = {
       			match: /(^@)([^\n]{2,})$/,
       			index: 2,
      -			search: function(term, callback) { contact_search(term, callback, backend_url, 'x'); },
      +			search: function(term, callback) { contact_search(term, callback, backend_url, 'x', 'contact'); },
      +			replace: basic_replace,
      +			template: contact_format,
      +		};
      +
      +		// Autocomplete forum accounts
      +		community = {
      +			match: /(^!)([^\n]{2,})$/,
      +			index: 2,
      +			search: function(term, callback) { contact_search(term, callback, backend_url, 'x', 'community'); },
       			replace: basic_replace,
       			template: contact_format,
       		};
       		this.attr('autocomplete', 'off');
      -		var a = this.textcomplete([contacts], {className:'acpopup', maxCount:100, zIndex: 1020, appendTo:'nav'});
      +		var a = this.textcomplete([contacts, community], {className:'acpopup', maxCount:100, zIndex: 1020, appendTo:'#nav-search-box'});
       		a.on('textComplete:select', function(e, value, strategy) { submit_form(this); });
       	};
       })( jQuery );
      
      From ad5be2901e131ec28356c7bdbb3cd0f748ffaa54 Mon Sep 17 00:00:00 2001
      From: rabuzarus <>
      Date: Wed, 3 Feb 2016 00:25:33 +0100
      Subject: [PATCH 011/485] rework autocomplete: some styling if contact is forum
      
      ---
       include/acl_selectors.php | 11 +++++++----
       include/dir_fns.php       |  2 +-
       js/autocomplete.js        |  5 +++--
       view/theme/vier/style.css | 11 +++++++++++
       4 files changed, 22 insertions(+), 7 deletions(-)
      
      diff --git a/include/acl_selectors.php b/include/acl_selectors.php
      index 9e1a2642a4..99848aa193 100644
      --- a/include/acl_selectors.php
      +++ b/include/acl_selectors.php
      @@ -509,7 +509,7 @@ function acl_lookup(&$a, $out_type = 'json') {
       
       	if ($type==''){
       
      -		$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum` FROM `contact`
      +		$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact`
       			WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
       			AND NOT (`network` IN ('%s', '%s'))
       			$sql_extra2
      @@ -520,7 +520,7 @@ function acl_lookup(&$a, $out_type = 'json') {
       	}
       	elseif ($type=='c'){
       
      -		$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum` FROM `contact`
      +		$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact`
       			WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
       			AND NOT (`network` IN ('%s'))
       			$sql_extra2
      @@ -542,7 +542,7 @@ function acl_lookup(&$a, $out_type = 'json') {
       		);
       	}
       	elseif($type == 'a') {
      -		$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
      +		$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact`
       			WHERE `uid` = %d AND `pending` = 0
       			$sql_extra2
       			ORDER BY `name` ASC ",
      @@ -559,6 +559,9 @@ function acl_lookup(&$a, $out_type = 'json') {
       					"photo"    => $g['photo'],
       					"name"     => $g['name'],
       					"nick"     => (x($g['addr']) ? $g['addr'] : $g['url']),
      +					"network" => $g['network'],
      +					"link" => $g['url'],
      +					"forum"	   => (x($g['community']) ? 1 : 0),
       				);
       			}
       		}
      @@ -584,7 +587,7 @@ function acl_lookup(&$a, $out_type = 'json') {
       				"network" => $g['network'],
       				"link" => $g['url'],
       				"nick" => htmlentities(($g['attag']) ? $g['attag'] : $g['nick']),
      -				"forum" => $g['forum']
      +				"forum" => ((x($g['forum']) || x($g['prv'])) ? 1 : 0),
       			);
       		}
       	}
      diff --git a/include/dir_fns.php b/include/dir_fns.php
      index d258058763..5f018ed8cf 100644
      --- a/include/dir_fns.php
      +++ b/include/dir_fns.php
      @@ -38,7 +38,7 @@ class dir {
       				$extra_sql = "";
       
       			$results = q("SELECT `contact`.`id` AS `cid`, `gcontact`.`url`, `gcontact`.`name`, `gcontact`.`nick`, `gcontact`.`photo`,
      -							`gcontact`.`network`, `gcontact`.`keywords`, `gcontact`.`addr`
      +							`gcontact`.`network`, `gcontact`.`keywords`, `gcontact`.`addr`, `gcontact`.`community`
       						FROM `gcontact`
       						LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl`
       							AND `contact`.`uid` = %d AND NOT `contact`.`blocked`
      diff --git a/js/autocomplete.js b/js/autocomplete.js
      index aa8b6836c5..f31161ff83 100644
      --- a/js/autocomplete.js
      +++ b/js/autocomplete.js
      @@ -24,7 +24,7 @@ function contact_search(term, callback, backend_url, type, mode) {
       		if(lterm.indexOf(t) >= 0) { // A more broad search has been performed already, so use those results
       			// Filter old results locally
       			var matching = contact_search.cache[bt][t].filter(function (x) { return (x.name.toLowerCase().indexOf(lterm) >= 0 || (typeof x.nick !== 'undefined' && x.nick.toLowerCase().indexOf(lterm) >= 0)); }); // Need to check that nick exists because groups don't have one
      -			matching.unshift({taggable:false, text: term, replace: term});
      +			matching.unshift({forum:false, text: term, replace: term});
       			setTimeout(function() { callback(matching); } , 1); // Use "pseudo-thread" to avoid some problems
       			return;
       		}
      @@ -68,9 +68,10 @@ function contact_format(item) {
       	// Show contact information if not explicitly told to show something else
       	if(typeof item.text === 'undefined') {
       		var desc = ((item.label) ? item.nick + ' ' + item.label : item.nick);
      +		var forum = ((item.forum) ? 'forum' : '');
       		if(typeof desc === 'undefined') desc = '';
       		if(desc) desc = ' ('+desc+')';
      -		return "
      {2}{3}
      ".format(item.taggable, item.photo, item.name, desc, item.link); + return "
      {2}{3}
      ".format(forum, item.photo, item.name, desc, item.link); } else return "
      " + item.text + "
      "; diff --git a/view/theme/vier/style.css b/view/theme/vier/style.css index a7b15c581b..7a73e03e83 100644 --- a/view/theme/vier/style.css +++ b/view/theme/vier/style.css @@ -935,8 +935,19 @@ nav .acpopup { color: #737373; } .textcomplete-item a:hover { + color: #000; padding: 3px 20px; } +.textcomplete-item a .forum, .forum .acpopup-sub-text { + color: #36C; + opacity: 0.8; +} +.textcomplete-item a .forum:hover { + opacity: 1.0; +} +img.acpopup-img { + border-radius: 4px; +} #nav-notifications-menu { width: 400px; From 30c375d238af79795937b8df046abe9f0ee63db9 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Fri, 5 Feb 2016 14:26:22 +0100 Subject: [PATCH 012/485] rework autocomplete: polishing class and methods naming --- include/{dir_fns.php => DirSearch.php} | 4 ++-- include/{smilies.php => Smilies.php} | 18 +++++++++--------- include/acl_selectors.php | 4 ++-- include/text.php | 4 ++-- mod/smilies.php | 4 ++-- 5 files changed, 17 insertions(+), 17 deletions(-) rename include/{dir_fns.php => DirSearch.php} (97%) rename include/{smilies.php => Smilies.php} (92%) diff --git a/include/dir_fns.php b/include/DirSearch.php similarity index 97% rename from include/dir_fns.php rename to include/DirSearch.php index 5f018ed8cf..a6a0b59fcb 100644 --- a/include/dir_fns.php +++ b/include/DirSearch.php @@ -1,14 +1,14 @@ smilies texts array, 'icons' => smilies html array) */ - public static function list_smilies() { + public static function get_list() { $texts = array( '<3', @@ -128,10 +128,10 @@ class smilies { || (local_user() && intval(get_pconfig(local_user(),'system','no_smilies')))) return $s; - $s = preg_replace_callback('/
      (.*?)<\/pre>/ism','self::smile_encode',$s);
      -		$s = preg_replace_callback('/(.*?)<\/code>/ism','self::smile_encode',$s);
      +		$s = preg_replace_callback('/
      (.*?)<\/pre>/ism','self::encode',$s);
      +		$s = preg_replace_callback('/(.*?)<\/code>/ism','self::encode',$s);
       
      -		$params = self::list_smilies();
      +		$params = self::get_list();
       		$params['string'] = $s;
       
       		if($sample) {
      @@ -145,17 +145,17 @@ class smilies {
       			$s = str_replace($params['texts'],$params['icons'],$params['string']);
       		}
       
      -		$s = preg_replace_callback('/
      (.*?)<\/pre>/ism','self::smile_decode',$s);
      -		$s = preg_replace_callback('/(.*?)<\/code>/ism','self::smile_decode',$s);
      +		$s = preg_replace_callback('/
      (.*?)<\/pre>/ism','self::decode',$s);
      +		$s = preg_replace_callback('/(.*?)<\/code>/ism','self::decode',$s);
       
       		return $s;
       	}
       
      -	private function smile_encode($m) {
      +	private function encode($m) {
       		return(str_replace($m[1],base64url_encode($m[1]),$m[0]));
       	}
       
      -	private function smile_decode($m) {
      +	private function decode($m) {
       		return(str_replace($m[1],base64url_decode($m[1]),$m[0]));
       	}
       
      diff --git a/include/acl_selectors.php b/include/acl_selectors.php
      index 99848aa193..4a35fd0f08 100644
      --- a/include/acl_selectors.php
      +++ b/include/acl_selectors.php
      @@ -6,7 +6,7 @@
       
       require_once("include/contact_selectors.php");
       require_once("include/contact_widgets.php");
      -require_once("include/dir_fns.php");
      +require_once("include/DirSearch.php");
       require_once("include/features.php");
       require_once("mod/proxy.php");
       
      @@ -687,7 +687,7 @@ function navbar_complete(&$a) {
       		$search = substr($search,1);
       
       	if($localsearch) {
      -		$x = dir::global_search_by_name($search, $mode);
      +		$x = DirSearch::global_search_by_name($search, $mode);
       		return $x;
       	}
       
      diff --git a/include/text.php b/include/text.php
      index eb8dde40cb..e14930b102 100644
      --- a/include/text.php
      +++ b/include/text.php
      @@ -2,7 +2,7 @@
       
       require_once("include/template_processor.php");
       require_once("include/friendica_smarty.php");
      -require_once("include/smilies.php");
      +require_once("include/Smilies.php");
       require_once("include/map.php");
       require_once("mod/proxy.php");
       
      @@ -1396,7 +1396,7 @@ function prepare_text($text) {
       	if(stristr($text,'[nosmile]'))
       		$s = bbcode($text);
       	else
      -		$s = smilies::replace(bbcode($text));
      +		$s = Smilies::replace(bbcode($text));
       
       	return trim($s);
       }}
      diff --git a/mod/smilies.php b/mod/smilies.php
      index 5a157e3686..b3d86cb3fe 100644
      --- a/mod/smilies.php
      +++ b/mod/smilies.php
      @@ -4,11 +4,11 @@
        * @file mod/smilies.php
        */
       
      -require_once("include/smilies.php");
      +require_once("include/Smilies.php");
       
       function smilies_content(&$a) {
       	if ($a->argv[1]==="json"){
      -		$tmp = smilies::list_smilies();
      +		$tmp = Smilies::get_list();
       		$results = array();
       		for($i = 0; $i < count($tmp['texts']); $i++) {
       			$results[] = array('text' => $tmp['texts'][$i], 'icon' => $tmp['icons'][$i]);
      
      From e5c7a0cf9369f39abcd8ef75e6edfb6c2b2b241a Mon Sep 17 00:00:00 2001
      From: Olivier Mehani 
      Date: Tue, 9 Feb 2016 10:04:48 +0000
      Subject: [PATCH 013/485] Enable SSL on standard and well-known HTTP headers
      
      Look for the `Forwarded` header with `proto=https`, as specified
      in RFC7239 (strictly expecting no whitespace around the = sign).
      This also add similar support for `X-Forwarded-Proto: https`,
      `Front-End-Https: on` and `X-Forwarded-Ssl: on` (all case-sensitive).
      
      Also add some documentation about this, and an NginX configuration
      example, in INSTALL.txt
      
      This should fix #757.
      
      Signed-off-by: Olivier Mehani 
      ---
       INSTALL.txt | 31 ++++++++++++++++++++++++++++++-
       boot.php    | 11 ++++++++---
       2 files changed, 38 insertions(+), 4 deletions(-)
      
      diff --git a/INSTALL.txt b/INSTALL.txt
      index 7726bdb0d7..71671af3f1 100644
      --- a/INSTALL.txt
      +++ b/INSTALL.txt
      @@ -136,8 +136,37 @@ $a->config['system']['addon'] = 'js_upload,poormancron';
       
       and save your changes.
       
      +9. (Optional) Reverse-proxying and HTTPS
      +
      +Friendica looks for some well-known HTTP headers indicating a reverse-proxy
      +terminating an HTTPS connection. While the standard from RFC 7239 specifies
      +the use of the `Forwaded` header.
      +
      +    Forwarded: for=192.0.2.1; proto=https; by=192.0.2.2
      +
      +Friendica also supports a number on non-standard headers in common use.
      +
      +
      +    X-Forwarded-Proto: https
      +
      +    Front-End-Https: on
      +
      +    X-Forwarded-Ssl: on
      +
      +It is however preferable to use the standard approach if configuring a new server.
      +In Nginx, this can be done as follows (assuming Friendica runs on port 8080).
      +
      +    location / {
      +            if ( $scheme != https ) {		# Force Redirect to HTTPS
      +                    return 302 https://$host$uri;
      +            }
      +            proxy_pass http://localhost:8080;
      +            proxy_redirect off;
      +            proxy_set_header Host $host;
      +            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      +            proxy_set_header Forwarded "for=$proxy_add_x_forwarded_for; proto=$scheme";
      +    }
       
      - 
       #####################################################################
       
       		If things don't work...
      diff --git a/boot.php b/boot.php
      index dd70040c64..6a2acaa35e 100644
      --- a/boot.php
      +++ b/boot.php
      @@ -582,10 +582,15 @@ class App {
       
       
       		$this->scheme = 'http';
      -		if(x($_SERVER,'HTTPS') && $_SERVER['HTTPS'])
      -			$this->scheme = 'https';
      -		elseif(x($_SERVER,'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443))
      +		if((x($_SERVER,'HTTPS') && $_SERVER['HTTPS']) ||
      +		   (x($_SERVER['HTTP_FORWARDED']) && preg_match("/proto=https/", $_SERVER['HTTP_FORWARDED'])) ||
      +		   (x($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') ||
      +		   (x($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') ||
      +		   (x($_SERVER['FRONT_END_HTTPS']) && $_SERVER['FRONT_END_HTTPS'] == 'on') ||
      +		   (x($_SERVER,'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443)) // XXX: reasonable assumption, but isn't this hardcoding too much?
      +		   ) {
       			$this->scheme = 'https';
      +		   }
       
       		if(x($_SERVER,'SERVER_NAME')) {
       			$this->hostname = $_SERVER['SERVER_NAME'];
      
      From 69865ea843ac346a89d5ba428015b324b074e91e Mon Sep 17 00:00:00 2001
      From: rabuzarus 
      Date: Wed, 17 Feb 2016 19:33:23 +0100
      Subject: [PATCH 014/485] Initial commit
      
      ---
       LICENSE   | 661 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
       README.md |   2 +
       2 files changed, 663 insertions(+)
       create mode 100644 LICENSE
       create mode 100644 README.md
      
      diff --git a/LICENSE b/LICENSE
      new file mode 100644
      index 0000000000..dbbe355815
      --- /dev/null
      +++ b/LICENSE
      @@ -0,0 +1,661 @@
      +                    GNU AFFERO GENERAL PUBLIC LICENSE
      +                       Version 3, 19 November 2007
      +
      + Copyright (C) 2007 Free Software Foundation, Inc. 
      + Everyone is permitted to copy and distribute verbatim copies
      + of this license document, but changing it is not allowed.
      +
      +                            Preamble
      +
      +  The GNU Affero General Public License is a free, copyleft license for
      +software and other kinds of works, specifically designed to ensure
      +cooperation with the community in the case of network server software.
      +
      +  The licenses for most software and other practical works are designed
      +to take away your freedom to share and change the works.  By contrast,
      +our General Public Licenses are intended to guarantee your freedom to
      +share and change all versions of a program--to make sure it remains free
      +software for all its users.
      +
      +  When we speak of free software, we are referring to freedom, not
      +price.  Our General Public Licenses are designed to make sure that you
      +have the freedom to distribute copies of free software (and charge for
      +them if you wish), that you receive source code or can get it if you
      +want it, that you can change the software or use pieces of it in new
      +free programs, and that you know you can do these things.
      +
      +  Developers that use our General Public Licenses protect your rights
      +with two steps: (1) assert copyright on the software, and (2) offer
      +you this License which gives you legal permission to copy, distribute
      +and/or modify the software.
      +
      +  A secondary benefit of defending all users' freedom is that
      +improvements made in alternate versions of the program, if they
      +receive widespread use, become available for other developers to
      +incorporate.  Many developers of free software are heartened and
      +encouraged by the resulting cooperation.  However, in the case of
      +software used on network servers, this result may fail to come about.
      +The GNU General Public License permits making a modified version and
      +letting the public access it on a server without ever releasing its
      +source code to the public.
      +
      +  The GNU Affero General Public License is designed specifically to
      +ensure that, in such cases, the modified source code becomes available
      +to the community.  It requires the operator of a network server to
      +provide the source code of the modified version running there to the
      +users of that server.  Therefore, public use of a modified version, on
      +a publicly accessible server, gives the public access to the source
      +code of the modified version.
      +
      +  An older license, called the Affero General Public License and
      +published by Affero, was designed to accomplish similar goals.  This is
      +a different license, not a version of the Affero GPL, but Affero has
      +released a new version of the Affero GPL which permits relicensing under
      +this license.
      +
      +  The precise terms and conditions for copying, distribution and
      +modification follow.
      +
      +                       TERMS AND CONDITIONS
      +
      +  0. Definitions.
      +
      +  "This License" refers to version 3 of the GNU Affero General Public License.
      +
      +  "Copyright" also means copyright-like laws that apply to other kinds of
      +works, such as semiconductor masks.
      +
      +  "The Program" refers to any copyrightable work licensed under this
      +License.  Each licensee is addressed as "you".  "Licensees" and
      +"recipients" may be individuals or organizations.
      +
      +  To "modify" a work means to copy from or adapt all or part of the work
      +in a fashion requiring copyright permission, other than the making of an
      +exact copy.  The resulting work is called a "modified version" of the
      +earlier work or a work "based on" the earlier work.
      +
      +  A "covered work" means either the unmodified Program or a work based
      +on the Program.
      +
      +  To "propagate" a work means to do anything with it that, without
      +permission, would make you directly or secondarily liable for
      +infringement under applicable copyright law, except executing it on a
      +computer or modifying a private copy.  Propagation includes copying,
      +distribution (with or without modification), making available to the
      +public, and in some countries other activities as well.
      +
      +  To "convey" a work means any kind of propagation that enables other
      +parties to make or receive copies.  Mere interaction with a user through
      +a computer network, with no transfer of a copy, is not conveying.
      +
      +  An interactive user interface displays "Appropriate Legal Notices"
      +to the extent that it includes a convenient and prominently visible
      +feature that (1) displays an appropriate copyright notice, and (2)
      +tells the user that there is no warranty for the work (except to the
      +extent that warranties are provided), that licensees may convey the
      +work under this License, and how to view a copy of this License.  If
      +the interface presents a list of user commands or options, such as a
      +menu, a prominent item in the list meets this criterion.
      +
      +  1. Source Code.
      +
      +  The "source code" for a work means the preferred form of the work
      +for making modifications to it.  "Object code" means any non-source
      +form of a work.
      +
      +  A "Standard Interface" means an interface that either is an official
      +standard defined by a recognized standards body, or, in the case of
      +interfaces specified for a particular programming language, one that
      +is widely used among developers working in that language.
      +
      +  The "System Libraries" of an executable work include anything, other
      +than the work as a whole, that (a) is included in the normal form of
      +packaging a Major Component, but which is not part of that Major
      +Component, and (b) serves only to enable use of the work with that
      +Major Component, or to implement a Standard Interface for which an
      +implementation is available to the public in source code form.  A
      +"Major Component", in this context, means a major essential component
      +(kernel, window system, and so on) of the specific operating system
      +(if any) on which the executable work runs, or a compiler used to
      +produce the work, or an object code interpreter used to run it.
      +
      +  The "Corresponding Source" for a work in object code form means all
      +the source code needed to generate, install, and (for an executable
      +work) run the object code and to modify the work, including scripts to
      +control those activities.  However, it does not include the work's
      +System Libraries, or general-purpose tools or generally available free
      +programs which are used unmodified in performing those activities but
      +which are not part of the work.  For example, Corresponding Source
      +includes interface definition files associated with source files for
      +the work, and the source code for shared libraries and dynamically
      +linked subprograms that the work is specifically designed to require,
      +such as by intimate data communication or control flow between those
      +subprograms and other parts of the work.
      +
      +  The Corresponding Source need not include anything that users
      +can regenerate automatically from other parts of the Corresponding
      +Source.
      +
      +  The Corresponding Source for a work in source code form is that
      +same work.
      +
      +  2. Basic Permissions.
      +
      +  All rights granted under this License are granted for the term of
      +copyright on the Program, and are irrevocable provided the stated
      +conditions are met.  This License explicitly affirms your unlimited
      +permission to run the unmodified Program.  The output from running a
      +covered work is covered by this License only if the output, given its
      +content, constitutes a covered work.  This License acknowledges your
      +rights of fair use or other equivalent, as provided by copyright law.
      +
      +  You may make, run and propagate covered works that you do not
      +convey, without conditions so long as your license otherwise remains
      +in force.  You may convey covered works to others for the sole purpose
      +of having them make modifications exclusively for you, or provide you
      +with facilities for running those works, provided that you comply with
      +the terms of this License in conveying all material for which you do
      +not control copyright.  Those thus making or running the covered works
      +for you must do so exclusively on your behalf, under your direction
      +and control, on terms that prohibit them from making any copies of
      +your copyrighted material outside their relationship with you.
      +
      +  Conveying under any other circumstances is permitted solely under
      +the conditions stated below.  Sublicensing is not allowed; section 10
      +makes it unnecessary.
      +
      +  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
      +
      +  No covered work shall be deemed part of an effective technological
      +measure under any applicable law fulfilling obligations under article
      +11 of the WIPO copyright treaty adopted on 20 December 1996, or
      +similar laws prohibiting or restricting circumvention of such
      +measures.
      +
      +  When you convey a covered work, you waive any legal power to forbid
      +circumvention of technological measures to the extent such circumvention
      +is effected by exercising rights under this License with respect to
      +the covered work, and you disclaim any intention to limit operation or
      +modification of the work as a means of enforcing, against the work's
      +users, your or third parties' legal rights to forbid circumvention of
      +technological measures.
      +
      +  4. Conveying Verbatim Copies.
      +
      +  You may convey verbatim copies of the Program's source code as you
      +receive it, in any medium, provided that you conspicuously and
      +appropriately publish on each copy an appropriate copyright notice;
      +keep intact all notices stating that this License and any
      +non-permissive terms added in accord with section 7 apply to the code;
      +keep intact all notices of the absence of any warranty; and give all
      +recipients a copy of this License along with the Program.
      +
      +  You may charge any price or no price for each copy that you convey,
      +and you may offer support or warranty protection for a fee.
      +
      +  5. Conveying Modified Source Versions.
      +
      +  You may convey a work based on the Program, or the modifications to
      +produce it from the Program, in the form of source code under the
      +terms of section 4, provided that you also meet all of these conditions:
      +
      +    a) The work must carry prominent notices stating that you modified
      +    it, and giving a relevant date.
      +
      +    b) The work must carry prominent notices stating that it is
      +    released under this License and any conditions added under section
      +    7.  This requirement modifies the requirement in section 4 to
      +    "keep intact all notices".
      +
      +    c) You must license the entire work, as a whole, under this
      +    License to anyone who comes into possession of a copy.  This
      +    License will therefore apply, along with any applicable section 7
      +    additional terms, to the whole of the work, and all its parts,
      +    regardless of how they are packaged.  This License gives no
      +    permission to license the work in any other way, but it does not
      +    invalidate such permission if you have separately received it.
      +
      +    d) If the work has interactive user interfaces, each must display
      +    Appropriate Legal Notices; however, if the Program has interactive
      +    interfaces that do not display Appropriate Legal Notices, your
      +    work need not make them do so.
      +
      +  A compilation of a covered work with other separate and independent
      +works, which are not by their nature extensions of the covered work,
      +and which are not combined with it such as to form a larger program,
      +in or on a volume of a storage or distribution medium, is called an
      +"aggregate" if the compilation and its resulting copyright are not
      +used to limit the access or legal rights of the compilation's users
      +beyond what the individual works permit.  Inclusion of a covered work
      +in an aggregate does not cause this License to apply to the other
      +parts of the aggregate.
      +
      +  6. Conveying Non-Source Forms.
      +
      +  You may convey a covered work in object code form under the terms
      +of sections 4 and 5, provided that you also convey the
      +machine-readable Corresponding Source under the terms of this License,
      +in one of these ways:
      +
      +    a) Convey the object code in, or embodied in, a physical product
      +    (including a physical distribution medium), accompanied by the
      +    Corresponding Source fixed on a durable physical medium
      +    customarily used for software interchange.
      +
      +    b) Convey the object code in, or embodied in, a physical product
      +    (including a physical distribution medium), accompanied by a
      +    written offer, valid for at least three years and valid for as
      +    long as you offer spare parts or customer support for that product
      +    model, to give anyone who possesses the object code either (1) a
      +    copy of the Corresponding Source for all the software in the
      +    product that is covered by this License, on a durable physical
      +    medium customarily used for software interchange, for a price no
      +    more than your reasonable cost of physically performing this
      +    conveying of source, or (2) access to copy the
      +    Corresponding Source from a network server at no charge.
      +
      +    c) Convey individual copies of the object code with a copy of the
      +    written offer to provide the Corresponding Source.  This
      +    alternative is allowed only occasionally and noncommercially, and
      +    only if you received the object code with such an offer, in accord
      +    with subsection 6b.
      +
      +    d) Convey the object code by offering access from a designated
      +    place (gratis or for a charge), and offer equivalent access to the
      +    Corresponding Source in the same way through the same place at no
      +    further charge.  You need not require recipients to copy the
      +    Corresponding Source along with the object code.  If the place to
      +    copy the object code is a network server, the Corresponding Source
      +    may be on a different server (operated by you or a third party)
      +    that supports equivalent copying facilities, provided you maintain
      +    clear directions next to the object code saying where to find the
      +    Corresponding Source.  Regardless of what server hosts the
      +    Corresponding Source, you remain obligated to ensure that it is
      +    available for as long as needed to satisfy these requirements.
      +
      +    e) Convey the object code using peer-to-peer transmission, provided
      +    you inform other peers where the object code and Corresponding
      +    Source of the work are being offered to the general public at no
      +    charge under subsection 6d.
      +
      +  A separable portion of the object code, whose source code is excluded
      +from the Corresponding Source as a System Library, need not be
      +included in conveying the object code work.
      +
      +  A "User Product" is either (1) a "consumer product", which means any
      +tangible personal property which is normally used for personal, family,
      +or household purposes, or (2) anything designed or sold for incorporation
      +into a dwelling.  In determining whether a product is a consumer product,
      +doubtful cases shall be resolved in favor of coverage.  For a particular
      +product received by a particular user, "normally used" refers to a
      +typical or common use of that class of product, regardless of the status
      +of the particular user or of the way in which the particular user
      +actually uses, or expects or is expected to use, the product.  A product
      +is a consumer product regardless of whether the product has substantial
      +commercial, industrial or non-consumer uses, unless such uses represent
      +the only significant mode of use of the product.
      +
      +  "Installation Information" for a User Product means any methods,
      +procedures, authorization keys, or other information required to install
      +and execute modified versions of a covered work in that User Product from
      +a modified version of its Corresponding Source.  The information must
      +suffice to ensure that the continued functioning of the modified object
      +code is in no case prevented or interfered with solely because
      +modification has been made.
      +
      +  If you convey an object code work under this section in, or with, or
      +specifically for use in, a User Product, and the conveying occurs as
      +part of a transaction in which the right of possession and use of the
      +User Product is transferred to the recipient in perpetuity or for a
      +fixed term (regardless of how the transaction is characterized), the
      +Corresponding Source conveyed under this section must be accompanied
      +by the Installation Information.  But this requirement does not apply
      +if neither you nor any third party retains the ability to install
      +modified object code on the User Product (for example, the work has
      +been installed in ROM).
      +
      +  The requirement to provide Installation Information does not include a
      +requirement to continue to provide support service, warranty, or updates
      +for a work that has been modified or installed by the recipient, or for
      +the User Product in which it has been modified or installed.  Access to a
      +network may be denied when the modification itself materially and
      +adversely affects the operation of the network or violates the rules and
      +protocols for communication across the network.
      +
      +  Corresponding Source conveyed, and Installation Information provided,
      +in accord with this section must be in a format that is publicly
      +documented (and with an implementation available to the public in
      +source code form), and must require no special password or key for
      +unpacking, reading or copying.
      +
      +  7. Additional Terms.
      +
      +  "Additional permissions" are terms that supplement the terms of this
      +License by making exceptions from one or more of its conditions.
      +Additional permissions that are applicable to the entire Program shall
      +be treated as though they were included in this License, to the extent
      +that they are valid under applicable law.  If additional permissions
      +apply only to part of the Program, that part may be used separately
      +under those permissions, but the entire Program remains governed by
      +this License without regard to the additional permissions.
      +
      +  When you convey a copy of a covered work, you may at your option
      +remove any additional permissions from that copy, or from any part of
      +it.  (Additional permissions may be written to require their own
      +removal in certain cases when you modify the work.)  You may place
      +additional permissions on material, added by you to a covered work,
      +for which you have or can give appropriate copyright permission.
      +
      +  Notwithstanding any other provision of this License, for material you
      +add to a covered work, you may (if authorized by the copyright holders of
      +that material) supplement the terms of this License with terms:
      +
      +    a) Disclaiming warranty or limiting liability differently from the
      +    terms of sections 15 and 16 of this License; or
      +
      +    b) Requiring preservation of specified reasonable legal notices or
      +    author attributions in that material or in the Appropriate Legal
      +    Notices displayed by works containing it; or
      +
      +    c) Prohibiting misrepresentation of the origin of that material, or
      +    requiring that modified versions of such material be marked in
      +    reasonable ways as different from the original version; or
      +
      +    d) Limiting the use for publicity purposes of names of licensors or
      +    authors of the material; or
      +
      +    e) Declining to grant rights under trademark law for use of some
      +    trade names, trademarks, or service marks; or
      +
      +    f) Requiring indemnification of licensors and authors of that
      +    material by anyone who conveys the material (or modified versions of
      +    it) with contractual assumptions of liability to the recipient, for
      +    any liability that these contractual assumptions directly impose on
      +    those licensors and authors.
      +
      +  All other non-permissive additional terms are considered "further
      +restrictions" within the meaning of section 10.  If the Program as you
      +received it, or any part of it, contains a notice stating that it is
      +governed by this License along with a term that is a further
      +restriction, you may remove that term.  If a license document contains
      +a further restriction but permits relicensing or conveying under this
      +License, you may add to a covered work material governed by the terms
      +of that license document, provided that the further restriction does
      +not survive such relicensing or conveying.
      +
      +  If you add terms to a covered work in accord with this section, you
      +must place, in the relevant source files, a statement of the
      +additional terms that apply to those files, or a notice indicating
      +where to find the applicable terms.
      +
      +  Additional terms, permissive or non-permissive, may be stated in the
      +form of a separately written license, or stated as exceptions;
      +the above requirements apply either way.
      +
      +  8. Termination.
      +
      +  You may not propagate or modify a covered work except as expressly
      +provided under this License.  Any attempt otherwise to propagate or
      +modify it is void, and will automatically terminate your rights under
      +this License (including any patent licenses granted under the third
      +paragraph of section 11).
      +
      +  However, if you cease all violation of this License, then your
      +license from a particular copyright holder is reinstated (a)
      +provisionally, unless and until the copyright holder explicitly and
      +finally terminates your license, and (b) permanently, if the copyright
      +holder fails to notify you of the violation by some reasonable means
      +prior to 60 days after the cessation.
      +
      +  Moreover, your license from a particular copyright holder is
      +reinstated permanently if the copyright holder notifies you of the
      +violation by some reasonable means, this is the first time you have
      +received notice of violation of this License (for any work) from that
      +copyright holder, and you cure the violation prior to 30 days after
      +your receipt of the notice.
      +
      +  Termination of your rights under this section does not terminate the
      +licenses of parties who have received copies or rights from you under
      +this License.  If your rights have been terminated and not permanently
      +reinstated, you do not qualify to receive new licenses for the same
      +material under section 10.
      +
      +  9. Acceptance Not Required for Having Copies.
      +
      +  You are not required to accept this License in order to receive or
      +run a copy of the Program.  Ancillary propagation of a covered work
      +occurring solely as a consequence of using peer-to-peer transmission
      +to receive a copy likewise does not require acceptance.  However,
      +nothing other than this License grants you permission to propagate or
      +modify any covered work.  These actions infringe copyright if you do
      +not accept this License.  Therefore, by modifying or propagating a
      +covered work, you indicate your acceptance of this License to do so.
      +
      +  10. Automatic Licensing of Downstream Recipients.
      +
      +  Each time you convey a covered work, the recipient automatically
      +receives a license from the original licensors, to run, modify and
      +propagate that work, subject to this License.  You are not responsible
      +for enforcing compliance by third parties with this License.
      +
      +  An "entity transaction" is a transaction transferring control of an
      +organization, or substantially all assets of one, or subdividing an
      +organization, or merging organizations.  If propagation of a covered
      +work results from an entity transaction, each party to that
      +transaction who receives a copy of the work also receives whatever
      +licenses to the work the party's predecessor in interest had or could
      +give under the previous paragraph, plus a right to possession of the
      +Corresponding Source of the work from the predecessor in interest, if
      +the predecessor has it or can get it with reasonable efforts.
      +
      +  You may not impose any further restrictions on the exercise of the
      +rights granted or affirmed under this License.  For example, you may
      +not impose a license fee, royalty, or other charge for exercise of
      +rights granted under this License, and you may not initiate litigation
      +(including a cross-claim or counterclaim in a lawsuit) alleging that
      +any patent claim is infringed by making, using, selling, offering for
      +sale, or importing the Program or any portion of it.
      +
      +  11. Patents.
      +
      +  A "contributor" is a copyright holder who authorizes use under this
      +License of the Program or a work on which the Program is based.  The
      +work thus licensed is called the contributor's "contributor version".
      +
      +  A contributor's "essential patent claims" are all patent claims
      +owned or controlled by the contributor, whether already acquired or
      +hereafter acquired, that would be infringed by some manner, permitted
      +by this License, of making, using, or selling its contributor version,
      +but do not include claims that would be infringed only as a
      +consequence of further modification of the contributor version.  For
      +purposes of this definition, "control" includes the right to grant
      +patent sublicenses in a manner consistent with the requirements of
      +this License.
      +
      +  Each contributor grants you a non-exclusive, worldwide, royalty-free
      +patent license under the contributor's essential patent claims, to
      +make, use, sell, offer for sale, import and otherwise run, modify and
      +propagate the contents of its contributor version.
      +
      +  In the following three paragraphs, a "patent license" is any express
      +agreement or commitment, however denominated, not to enforce a patent
      +(such as an express permission to practice a patent or covenant not to
      +sue for patent infringement).  To "grant" such a patent license to a
      +party means to make such an agreement or commitment not to enforce a
      +patent against the party.
      +
      +  If you convey a covered work, knowingly relying on a patent license,
      +and the Corresponding Source of the work is not available for anyone
      +to copy, free of charge and under the terms of this License, through a
      +publicly available network server or other readily accessible means,
      +then you must either (1) cause the Corresponding Source to be so
      +available, or (2) arrange to deprive yourself of the benefit of the
      +patent license for this particular work, or (3) arrange, in a manner
      +consistent with the requirements of this License, to extend the patent
      +license to downstream recipients.  "Knowingly relying" means you have
      +actual knowledge that, but for the patent license, your conveying the
      +covered work in a country, or your recipient's use of the covered work
      +in a country, would infringe one or more identifiable patents in that
      +country that you have reason to believe are valid.
      +
      +  If, pursuant to or in connection with a single transaction or
      +arrangement, you convey, or propagate by procuring conveyance of, a
      +covered work, and grant a patent license to some of the parties
      +receiving the covered work authorizing them to use, propagate, modify
      +or convey a specific copy of the covered work, then the patent license
      +you grant is automatically extended to all recipients of the covered
      +work and works based on it.
      +
      +  A patent license is "discriminatory" if it does not include within
      +the scope of its coverage, prohibits the exercise of, or is
      +conditioned on the non-exercise of one or more of the rights that are
      +specifically granted under this License.  You may not convey a covered
      +work if you are a party to an arrangement with a third party that is
      +in the business of distributing software, under which you make payment
      +to the third party based on the extent of your activity of conveying
      +the work, and under which the third party grants, to any of the
      +parties who would receive the covered work from you, a discriminatory
      +patent license (a) in connection with copies of the covered work
      +conveyed by you (or copies made from those copies), or (b) primarily
      +for and in connection with specific products or compilations that
      +contain the covered work, unless you entered into that arrangement,
      +or that patent license was granted, prior to 28 March 2007.
      +
      +  Nothing in this License shall be construed as excluding or limiting
      +any implied license or other defenses to infringement that may
      +otherwise be available to you under applicable patent law.
      +
      +  12. No Surrender of Others' Freedom.
      +
      +  If conditions are imposed on you (whether by court order, agreement or
      +otherwise) that contradict the conditions of this License, they do not
      +excuse you from the conditions of this License.  If you cannot convey a
      +covered work so as to satisfy simultaneously your obligations under this
      +License and any other pertinent obligations, then as a consequence you may
      +not convey it at all.  For example, if you agree to terms that obligate you
      +to collect a royalty for further conveying from those to whom you convey
      +the Program, the only way you could satisfy both those terms and this
      +License would be to refrain entirely from conveying the Program.
      +
      +  13. Remote Network Interaction; Use with the GNU General Public License.
      +
      +  Notwithstanding any other provision of this License, if you modify the
      +Program, your modified version must prominently offer all users
      +interacting with it remotely through a computer network (if your version
      +supports such interaction) an opportunity to receive the Corresponding
      +Source of your version by providing access to the Corresponding Source
      +from a network server at no charge, through some standard or customary
      +means of facilitating copying of software.  This Corresponding Source
      +shall include the Corresponding Source for any work covered by version 3
      +of the GNU General Public License that is incorporated pursuant to the
      +following paragraph.
      +
      +  Notwithstanding any other provision of this License, you have
      +permission to link or combine any covered work with a work licensed
      +under version 3 of the GNU General Public License into a single
      +combined work, and to convey the resulting work.  The terms of this
      +License will continue to apply to the part which is the covered work,
      +but the work with which it is combined will remain governed by version
      +3 of the GNU General Public License.
      +
      +  14. Revised Versions of this License.
      +
      +  The Free Software Foundation may publish revised and/or new versions of
      +the GNU Affero General Public License from time to time.  Such new versions
      +will be similar in spirit to the present version, but may differ in detail to
      +address new problems or concerns.
      +
      +  Each version is given a distinguishing version number.  If the
      +Program specifies that a certain numbered version of the GNU Affero General
      +Public License "or any later version" applies to it, you have the
      +option of following the terms and conditions either of that numbered
      +version or of any later version published by the Free Software
      +Foundation.  If the Program does not specify a version number of the
      +GNU Affero General Public License, you may choose any version ever published
      +by the Free Software Foundation.
      +
      +  If the Program specifies that a proxy can decide which future
      +versions of the GNU Affero General Public License can be used, that proxy's
      +public statement of acceptance of a version permanently authorizes you
      +to choose that version for the Program.
      +
      +  Later license versions may give you additional or different
      +permissions.  However, no additional obligations are imposed on any
      +author or copyright holder as a result of your choosing to follow a
      +later version.
      +
      +  15. Disclaimer of Warranty.
      +
      +  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
      +APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
      +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
      +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
      +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
      +PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
      +IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
      +ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
      +
      +  16. Limitation of Liability.
      +
      +  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
      +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
      +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
      +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
      +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
      +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
      +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
      +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
      +SUCH DAMAGES.
      +
      +  17. Interpretation of Sections 15 and 16.
      +
      +  If the disclaimer of warranty and limitation of liability provided
      +above cannot be given local legal effect according to their terms,
      +reviewing courts shall apply local law that most closely approximates
      +an absolute waiver of all civil liability in connection with the
      +Program, unless a warranty or assumption of liability accompanies a
      +copy of the Program in return for a fee.
      +
      +                     END OF TERMS AND CONDITIONS
      +
      +            How to Apply These Terms to Your New Programs
      +
      +  If you develop a new program, and you want it to be of the greatest
      +possible use to the public, the best way to achieve this is to make it
      +free software which everyone can redistribute and change under these terms.
      +
      +  To do so, attach the following notices to the program.  It is safest
      +to attach them to the start of each source file to most effectively
      +state the exclusion of warranty; and each file should have at least
      +the "copyright" line and a pointer to where the full notice is found.
      +
      +    
      +    Copyright (C)   
      +
      +    This program is free software: you can redistribute it and/or modify
      +    it under the terms of the GNU Affero General Public License as published
      +    by the Free Software Foundation, either version 3 of the License, or
      +    (at your option) any later version.
      +
      +    This program is distributed in the hope that it will be useful,
      +    but WITHOUT ANY WARRANTY; without even the implied warranty of
      +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      +    GNU Affero General Public License for more details.
      +
      +    You should have received a copy of the GNU Affero General Public License
      +    along with this program.  If not, see .
      +
      +Also add information on how to contact you by electronic and paper mail.
      +
      +  If your software can interact with users remotely through a computer
      +network, you should also make sure that it provides a way for users to
      +get its source.  For example, if your program is a web application, its
      +interface could display a "Source" link that leads users to an archive
      +of the code.  There are many ways you could offer source, and different
      +solutions will be better for different programs; see section 13 for the
      +specific requirements.
      +
      +  You should also get your employer (if you work as a programmer) or school,
      +if any, to sign a "copyright disclaimer" for the program, if necessary.
      +For more information on this, and how to apply and follow the GNU AGPL, see
      +.
      diff --git a/README.md b/README.md
      new file mode 100644
      index 0000000000..dfba0278ee
      --- /dev/null
      +++ b/README.md
      @@ -0,0 +1,2 @@
      +# frio
      +A bootstrap based theme for friendica
      
      From a3960bda371c8083bad2ed422169282fed004d24 Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Sat, 27 Feb 2016 23:54:17 +0100
      Subject: [PATCH 015/485] New Diaspora code
      
      ---
       include/diaspora.php  |  37 +++
       include/diaspora2.php | 638 ++++++++++++++++++++++++++++++++++++++++++
       2 files changed, 675 insertions(+)
       create mode 100644 include/diaspora2.php
      
      diff --git a/include/diaspora.php b/include/diaspora.php
      index 93fe2a472f..9dbbeabbcf 100644
      --- a/include/diaspora.php
      +++ b/include/diaspora.php
      @@ -58,6 +58,8 @@ function diaspora_dispatch($importer,$msg,$attempt=1) {
       		return;
       	}
       
      +	$data = $msg;
      +
       	// php doesn't like dashes in variable names
       
       	$msg['message'] = str_replace(
      @@ -74,48 +76,83 @@ function diaspora_dispatch($importer,$msg,$attempt=1) {
       
       
       	if($xmlbase->request) {
      +		$tempfile = tempnam(get_temppath(), "diaspora-request");
      +		file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_request($importer,$xmlbase->request);
       	}
       	elseif($xmlbase->status_message) {
      +		//$tempfile = tempnam(get_temppath(), "diaspora-status_message");
      +		//file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_post($importer,$xmlbase->status_message,$msg);
       	}
       	elseif($xmlbase->profile) {
      +		//$tempfile = tempnam(get_temppath(), "diaspora-profile");
      +		//file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_profile($importer,$xmlbase->profile,$msg);
       	}
       	elseif($xmlbase->comment) {
      +		//$tempfile = tempnam(get_temppath(), "diaspora-comment");
      +		//file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_comment($importer,$xmlbase->comment,$msg);
       	}
       	elseif($xmlbase->like) {
      +		//$tempfile = tempnam(get_temppath(), "diaspora-like");
      +		//file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_like($importer,$xmlbase->like,$msg);
       	}
       	elseif($xmlbase->asphoto) {
      +		$tempfile = tempnam(get_temppath(), "diaspora-asphoto");
      +		file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_asphoto($importer,$xmlbase->asphoto,$msg);
       	}
       	elseif($xmlbase->reshare) {
      +		//$tempfile = tempnam(get_temppath(), "diaspora-reshare");
      +		//file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_reshare($importer,$xmlbase->reshare,$msg);
       	}
       	elseif($xmlbase->retraction) {
      +		$tempfile = tempnam(get_temppath(), "diaspora-retraction");
      +		file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_retraction($importer,$xmlbase->retraction,$msg);
       	}
       	elseif($xmlbase->signed_retraction) {
      +		$tempfile = tempnam(get_temppath(), "diaspora-signed_retraction");
      +		file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_signed_retraction($importer,$xmlbase->signed_retraction,$msg);
       	}
       	elseif($xmlbase->relayable_retraction) {
      +		//$tempfile = tempnam(get_temppath(), "diaspora-relayable_retraction");
      +		//file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg);
       	}
       	elseif($xmlbase->photo) {
      +		//$tempfile = tempnam(get_temppath(), "diaspora-photo");
      +		//file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_photo($importer,$xmlbase->photo,$msg,$attempt);
       	}
       	elseif($xmlbase->conversation) {
      +		$tempfile = tempnam(get_temppath(), "diaspora-conversation");
      +		file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_conversation($importer,$xmlbase->conversation,$msg);
       	}
       	elseif($xmlbase->message) {
      +		$tempfile = tempnam(get_temppath(), "diaspora-message");
      +		file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_message($importer,$xmlbase->message,$msg);
       	}
       	elseif($xmlbase->participation) {
      +		//$tempfile = tempnam(get_temppath(), "diaspora-participation");
      +		//file_put_contents($tempfile, json_encode($data));
      +		$ret = diaspora_participation($importer,$xmlbase->participation);
      +	}
      +	elseif($xmlbase->poll_participation) {
      +		$tempfile = tempnam(get_temppath(), "diaspora-poll_participation");
      +		file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_participation($importer,$xmlbase->participation);
       	}
       	else {
      +		$tempfile = tempnam(get_temppath(), "diaspora-unknown");
      +		file_put_contents($tempfile, json_encode($data));
       		logger('diaspora_dispatch: unknown message type: ' . print_r($xmlbase,true));
       	}
       	return $ret;
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      new file mode 100644
      index 0000000000..690e54aa41
      --- /dev/null
      +++ b/include/diaspora2.php
      @@ -0,0 +1,638 @@
      + $value) {
      +			$root = new SimpleXMLElement('<'.$key.'/>');
      +			array_to_xml($value, $root);
      +
      +			$dom = dom_import_simplexml($root)->ownerDocument;
      +			$dom->formatOutput = true;
      +			return $dom->saveXML();
      +		}
      +	}
      +
      +	foreach($array as $key => $value) {
      +		if (!is_array($value) AND !is_numeric($key))
      +			$xml->addChild($key, $value);
      +		elseif (is_array($value))
      +			array_to_xml($value, $xml->addChild($key));
      +	}
      +}
      +
      +/**
      + * @brief This class contain functions to create and send DFRN XML files
      + *
      + */
      +class diaspora {
      +
      +	public static function dispatch_public($msg) {
      +
      +		$enabled = intval(get_config("system", "diaspora_enabled"));
      +		if (!$enabled) {
      +			logger('diaspora is disabled');
      +			return false;
      +		}
      +
      +		// Use a dummy importer to import the data for the public copy
      +		$importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE);
      +		self::dispatch($importer,$msg);
      +
      +		// Now distribute it to the followers
      +		$r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN
      +			(SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s')
      +			AND NOT `account_expired` AND NOT `account_removed`",
      +			dbesc(NETWORK_DIASPORA),
      +			dbesc($msg["author"])
      +		);
      +		if(count($r)) {
      +			foreach($r as $rr) {
      +				logger("delivering to: ".$rr["username"]);
      +				self::dispatch($rr,$msg);
      +			}
      +		} else
      +			logger("No subscribers for ".$msg["author"]." ".print_r($msg, true));
      +	}
      +
      +	public static function dispatch($importer, $msg) {
      +
      +		// The sender is the handle of the contact that sent the message.
      +		// This will often be different with relayed messages (for example "like" and "comment")
      +		$sender = $msg->author;
      +
      +		if (!diaspora::valid_posting($msg, $fields)) {
      +			logger("Invalid posting");
      +			return false;
      +		}
      +
      +		$type = $fields->getName();
      +
      +		switch ($type) {
      +			case "account_deletion":
      +				return self::import_account_deletion($importer, $fields);
      +
      +			case "comment":
      +				return self::import_comment($importer, $sender, $fields);
      +
      +			case "conversation":
      +				return self::import_conversation($importer, $fields);
      +
      +			case "like":
      +				return self::import_like($importer, $sender, $fields);
      +
      +			case "message":
      +				return self::import_message($importer, $fields);
      +
      +			case "participation":
      +				return self::import_participation($importer, $fields);
      +
      +			case "photo":
      +				return self::import_photo($importer, $fields);
      +
      +			case "poll_participation":
      +				return self::import_poll_participation($importer, $fields);
      +
      +			case "profile":
      +				return self::import_profile($importer, $fields);
      +
      +			case "request":
      +				return self::import_request($importer, $fields);
      +
      +			case "reshare":
      +				return self::import_reshare($importer, $fields);
      +
      +			case "retraction":
      +				return self::import_retraction($importer, $fields);
      +
      +			case "status_message":
      +				return self::import_status_message($importer, $fields);
      +
      +			default:
      +				logger("Unknown message type ".$type);
      +				return false;
      +		}
      +
      +		return true;
      +	}
      +
      +	/**
      +	 * @brief Checks if a posting is valid and fetches the data fields.
      +	 *
      +	 * This function does not only check the signature.
      +	 * It also does the conversion between the old and the new diaspora format.
      +	 *
      +	 * @param array $msg Array with the XML, the sender handle and the sender signature
      +	 * @param object $fields SimpleXML object that contains the posting
      +	 *
      +	 * @return bool Is the posting valid?
      +	 */
      +	private function valid_posting($msg, &$fields) {
      +
      +		$data = parse_xml_string($msg->message, false);
      +
      +		$first_child = $data->getName();
      +
      +		if ($data->getName() == "XML") {
      +			$oldXML = true;
      +			foreach ($data->post->children() as $child)
      +				$element = $child;
      +		} else {
      +			$oldXML = false;
      +			$element = $data;
      +		}
      +
      +		$type = $element->getName();
      +
      +		if (in_array($type, array("signed_retraction", "relayable_retraction")))
      +			$type = "retraction";
      +
      +		$fields = new SimpleXMLElement("<".$type."/>");
      +
      +		$signed_data = "";
      +
      +		foreach ($element->children() AS $fieldname => $data) {
      +
      +			if ($oldXML) {
      +				// Translation for the old XML structure
      +				if ($fieldname == "diaspora_handle")
      +					$fieldname = "author";
      +
      +				if ($fieldname == "participant_handles")
      +					$fieldname = "participants";
      +
      +				if (in_array($type, array("like", "participation"))) {
      +					if ($fieldname == "target_type")
      +						$fieldname = "parent_type";
      +				}
      +
      +				if ($fieldname == "sender_handle")
      +					$fieldname = "author";
      +
      +				if ($fieldname == "recipient_handle")
      +					$fieldname = "recipient";
      +
      +				if ($fieldname == "root_diaspora_id")
      +					$fieldname = "root_author";
      +
      +				if ($type == "retraction") {
      +					if ($fieldname == "post_guid")
      +						$fieldname = "target_guid";
      +
      +					if ($fieldname == "type")
      +						$fieldname = "target_type";
      +				}
      +			}
      +
      +			if ($fieldname == "author_signature")
      +				$author_signature = base64_decode($data);
      +			elseif ($fieldname == "parent_author_signature")
      +				$parent_author_signature = base64_decode($data);
      +			elseif ($fieldname != "target_author_signature") {
      +				if ($signed_data != "") {
      +					$signed_data .= ";";
      +					$signed_data_parent .= ";";
      +				}
      +
      +				$signed_data .= $data;
      +				$fields->$fieldname = $data;
      +			}
      +		}
      +
      +		if (in_array($type, array("status_message", "reshare")))
      +			if ($msg->author != $fields->author) {
      +				logger("Message handle is not the same as envelope sender. Quitting this message.");
      +				return false;
      +			}
      +
      +		if (!in_array($type, array("comment", "conversation", "message", "like")))
      +			return true;
      +
      +		if (!isset($author_signature))
      +			return false;
      +
      +		if (isset($parent_author_signature)) {
      +			$key = self::get_key($msg->author);
      +
      +			if (!rsa_verify($signed_data, $parent_author_signature, $key, "sha256"))
      +				return false;
      +		}
      +
      +		$key = self::get_key($fields->author);
      +
      +		return rsa_verify($signed_data, $author_signature, $key, "sha256");
      +	}
      +
      +	private function get_key($handle) {
      +		logger("Fetching diaspora key for: ".$handle);
      +
      +		$r = self::get_person_by_handle($handle);
      +		if($r)
      +			return $r["pubkey"];
      +
      +		return "";
      +	}
      +
      +	private function get_person_by_handle($handle) {
      +
      +		$r = q("SELECT * FROM `fcontact` WHERE `network` = '%s' AND `addr` = '%s' LIMIT 1",
      +			dbesc(NETWORK_DIASPORA),
      +			dbesc($handle)
      +		);
      +		if (count($r)) {
      +			$person = $r[0];
      +			logger("In cache ".print_r($r,true), LOGGER_DEBUG);
      +
      +			// update record occasionally so it doesn't get stale
      +			$d = strtotime($person["updated"]." +00:00");
      +			if ($d < strtotime("now - 14 days"))
      +				$update = true;
      +		}
      +
      +		if (!$person OR $update) {
      +			logger("create or refresh", LOGGER_DEBUG);
      +			$r = probe_url($handle, PROBE_DIASPORA);
      +
      +			// Note that Friendica contacts will return a "Diaspora person"
      +			// if Diaspora connectivity is enabled on their server
      +			if (count($r) AND ($r["network"] === NETWORK_DIASPORA)) {
      +				self::add_fcontact($r, $update);
      +				$person = $r;
      +			}
      +		}
      +		return $person;
      +	}
      +
      +	private function add_fcontact($arr, $update = false) {
      +		/// @todo Remove this function from include/network.php
      +
      +		if($update) {
      +			$r = q("UPDATE `fcontact` SET
      +					`name` = '%s',
      +					`photo` = '%s',
      +					`request` = '%s',
      +					`nick` = '%s',
      +					`addr` = '%s',
      +					`batch` = '%s',
      +					`notify` = '%s',
      +					`poll` = '%s',
      +					`confirm` = '%s',
      +					`alias` = '%s',
      +					`pubkey` = '%s',
      +					`updated` = '%s'
      +				WHERE `url` = '%s' AND `network` = '%s'",
      +					dbesc($arr["name"]),
      +					dbesc($arr["photo"]),
      +					dbesc($arr["request"]),
      +					dbesc($arr["nick"]),
      +					dbesc($arr["addr"]),
      +					dbesc($arr["batch"]),
      +					dbesc($arr["notify"]),
      +					dbesc($arr["poll"]),
      +					dbesc($arr["confirm"]),
      +					dbesc($arr["alias"]),
      +					dbesc($arr["pubkey"]),
      +					dbesc(datetime_convert()),
      +					dbesc($arr["url"]),
      +					dbesc($arr["network"])
      +				);
      +		} else {
      +			$r = q("INSERT INTO `fcontact` (`url`,`name`,`photo`,`request`,`nick`,`addr`,
      +					`batch`, `notify`,`poll`,`confirm`,`network`,`alias`,`pubkey`,`updated`)
      +				VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
      +					dbesc($arr["url"]),
      +					dbesc($arr["name"]),
      +					dbesc($arr["photo"]),
      +					dbesc($arr["request"]),
      +					dbesc($arr["nick"]),
      +					dbesc($arr["addr"]),
      +					dbesc($arr["batch"]),
      +					dbesc($arr["notify"]),
      +					dbesc($arr["poll"]),
      +					dbesc($arr["confirm"]),
      +					dbesc($arr["network"]),
      +					dbesc($arr["alias"]),
      +					dbesc($arr["pubkey"]),
      +					dbesc(datetime_convert())
      +				);
      +		}
      +
      +		return $r;
      +	}
      +
      +	private function get_contact_by_handle($uid, $handle) {
      +		$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1",
      +			intval($uid),
      +			dbesc($handle)
      +		);
      +
      +		if ($r AND count($r))
      +			return $r[0];
      +
      +		$handle_parts = explode("@", $handle);
      +		$nurl_sql = '%%://' . $handle_parts[1] . '%%/profile/' . $handle_parts[0];
      +		$r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` LIKE '%s' LIMIT 1",
      +			dbesc(NETWORK_DFRN),
      +			intval($uid),
      +			dbesc($nurl_sql)
      +		);
      +		if($r AND count($r))
      +			return $r[0];
      +
      +		return false;
      +	}
      +
      +/*
      +function DiasporaFetchGuid($item) {
      +        preg_replace_callback("&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi",
      +                function ($match) use ($item){
      +                        return(DiasporaFetchGuidSub($match, $item));
      +                },$item["body"]);
      +}
      +
      +function DiasporaFetchGuidSub($match, $item) {
      +        $a = get_app();
      +
      +        if (!diaspora_store_by_guid($match[1], $item["author-link"]))
      +                diaspora_store_by_guid($match[1], $item["owner-link"]);
      +}
      +
      +function diaspora_store_by_guid($guid, $server, $uid = 0) {
      +        require_once("include/Contact.php");
      +
      +        $serverparts = parse_url($server);
      +        $server = $serverparts["scheme"]."://".$serverparts["host"];
      +
      +        logger("Trying to fetch item ".$guid." from ".$server, LOGGER_DEBUG);
      +
      +        $item = diaspora_fetch_message($guid, $server);
      +
      +        if (!$item)
      +                return false;
      +
      +        logger("Successfully fetched item ".$guid." from ".$server, LOGGER_DEBUG);
      +
      +        $body = $item["body"];
      +        $str_tags = $item["tag"];
      +        $app = $item["app"];
      +        $created = $item["created"];
      +        $author = $item["author"];
      +        $guid = $item["guid"];
      +        $private = $item["private"];
      +        $object = $item["object"];
      +        $objecttype = $item["object-type"];
      +
      +        $message_id = $author.':'.$guid;
      +        $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +                intval($uid),
      +                dbesc($guid)
      +        );
      +        if(count($r))
      +                return $r[0]["id"];
      +
      +        $person = find_diaspora_person_by_handle($author);
      +
      +        $contact_id = get_contact($person['url'], $uid);
      +
      +        $contacts = q("SELECT * FROM `contact` WHERE `id` = %d", intval($contact_id));
      +        $importers = q("SELECT * FROM `user` WHERE `uid` = %d", intval($uid));
      +
      +        if ($contacts AND $importers)
      +                if(!diaspora_post_allow($importers[0],$contacts[0], false)) {
      +                        logger('Ignoring author '.$person['url'].' for uid '.$uid);
      +                        return false;
      +                } else
      +                        logger('Author '.$person['url'].' is allowed for uid '.$uid);
      +
      +        $datarray = array();
      +        $datarray['uid'] = $uid;
      +        $datarray['contact-id'] = $contact_id;
      +        $datarray['wall'] = 0;
      +        $datarray['network'] = NETWORK_DIASPORA;
      +        $datarray['guid'] = $guid;
      +        $datarray['uri'] = $datarray['parent-uri'] = $message_id;
      +        $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created);
      +        $datarray['private'] = $private;
      +        $datarray['parent'] = 0;
      +        $datarray['plink'] = diaspora_plink($author, $guid);
      +        $datarray['author-name'] = $person['name'];
      +        $datarray['author-link'] = $person['url'];
      +        $datarray['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']);
      +        $datarray['owner-name'] = $datarray['author-name'];
      +        $datarray['owner-link'] = $datarray['author-link'];
      +        $datarray['owner-avatar'] = $datarray['author-avatar'];
      +        $datarray['body'] = $body;
      +        $datarray['tag'] = $str_tags;
      +        $datarray['app']  = $app;
      +        $datarray['visible'] = ((strlen($body)) ? 1 : 0);
      +        $datarray['object'] = $object;
      +        $datarray['object-type'] = $objecttype;
      +
      +        if ($datarray['contact-id'] == 0)
      +                return false;
      +
      +        DiasporaFetchGuid($datarray);
      +        $message_id = item_store($datarray);
      +
      +        /// @TODO
      +        /// Looking if there is some subscribe mechanism in Diaspora to get all comments for this post
      +
      +        return $message_id;
      +}
      +*/
      +
      +	private function import_account_deletion($importer, $data) {
      +		return true;
      +	}
      +
      +	private function import_comment($importer, $sender, $data) {
      +		$guid = notags(unxmlify($data->guid));
      +		$parent_guid = notags(unxmlify($data->parent_guid));
      +		$text = unxmlify($data->text);
      +		$author = notags(unxmlify($data->author));
      +
      +		$contact = self::get_contact_by_handle($importer["uid"], $sender);
      +		if (!$contact) {
      +			logger("cannot find contact for sender: ".$sender);
      +			return false;
      +		}
      +/*
      +        if(! diaspora_post_allow($importer,$contact, true)) {
      +                logger('diaspora_comment: Ignoring this author.');
      +                return 202;
      +        }
      +
      +        $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +                intval($importer['uid']),
      +                dbesc($guid)
      +        );
      +        if(count($r)) {
      +                logger('diaspora_comment: our comment just got relayed back to us (or there was a guid collision) : ' . $guid);
      +                return;
      +        }
      +
      +        $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +                intval($importer['uid']),
      +                dbesc($parent_guid)
      +        );
      +
      +        if(!count($r)) {
      +                $result = diaspora_store_by_guid($parent_guid, $contact['url'], $importer['uid']);
      +
      +                if (!$result) {
      +                        $person = find_diaspora_person_by_handle($diaspora_handle);
      +                        $result = diaspora_store_by_guid($parent_guid, $person['url'], $importer['uid']);
      +                }
      +
      +                if ($result) {
      +                        logger("Fetched missing item ".$parent_guid." - result: ".$result, LOGGER_DEBUG);
      +
      +                        $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +                                intval($importer['uid']),
      +                                dbesc($parent_guid)
      +                        );
      +                }
      +        }
      +
      +        if(! count($r)) {
      +                logger('diaspora_comment: parent item not found: parent: ' . $parent_guid . ' item: ' . $guid);
      +                return;
      +        }
      +        $parent_item = $r[0];
      +
      +        // Find the original comment author information.
      +        // We need this to make sure we display the comment author
      +        // information (name and avatar) correctly.
      +        if(strcasecmp($diaspora_handle,$msg['author']) == 0)
      +                $person = $contact;
      +        else {
      +                $person = find_diaspora_person_by_handle($diaspora_handle);
      +
      +                if(! is_array($person)) {
      +                        logger('diaspora_comment: unable to find author details');
      +                        return;
      +                }
      +        }
      +
      +        // Fetch the contact id - if we know this contact
      +        $r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
      +                dbesc(normalise_link($person['url'])), intval($importer['uid']));
      +        if ($r) {
      +                $cid = $r[0]['id'];
      +                $network = $r[0]['network'];
      +        } else {
      +                $cid = $contact['id'];
      +                $network = NETWORK_DIASPORA;
      +        }
      +
      +        $body = diaspora2bb($text);
      +        $message_id = $diaspora_handle . ':' . $guid;
      +
      +        $datarray = array();
      +
      +        $datarray['uid'] = $importer['uid'];
      +        $datarray['contact-id'] = $cid;
      +        $datarray['type'] = 'remote-comment';
      +        $datarray['wall'] = $parent_item['wall'];
      +        $datarray['network']  = $network;
      +        $datarray['verb'] = ACTIVITY_POST;
      +        $datarray['gravity'] = GRAVITY_COMMENT;
      +        $datarray['guid'] = $guid;
      +        $datarray['uri'] = $message_id;
      +        $datarray['parent-uri'] = $parent_item['uri'];
      +
      +        // No timestamps for comments? OK, we'll the use current time.
      +        $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert();
      +        $datarray['private'] = $parent_item['private'];
      +
      +        $datarray['owner-name'] = $parent_item['owner-name'];
      +        $datarray['owner-link'] = $parent_item['owner-link'];
      +        $datarray['owner-avatar'] = $parent_item['owner-avatar'];
      +
      +        $datarray['author-name'] = $person['name'];
      +        $datarray['author-link'] = $person['url'];
      +        $datarray['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']);
      +        $datarray['body'] = $body;
      +        $datarray["object"] = json_encode($xml);
      +        $datarray["object-type"] = ACTIVITY_OBJ_COMMENT;
      +
      +        // We can't be certain what the original app is if the message is relayed.
      +        if(($parent_item['origin']) && (! $parent_author_signature))
      +                $datarray['app']  = 'Diaspora';
      +
      +        DiasporaFetchGuid($datarray);
      +        $message_id = item_store($datarray);
      +
      +        $datarray['id'] = $message_id;
      +
      +        // If we are the origin of the parent we store the original signature and notify our followers
      +        if($parent_item['origin']) {
      +                $author_signature_base64 = base64_encode($author_signature);
      +                $author_signature_base64 = diaspora_repair_signature($author_signature_base64, $diaspora_handle);
      +
      +                q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
      +                        intval($message_id),
      +                        dbesc($signed_data),
      +                        dbesc($author_signature_base64),
      +                        dbesc($diaspora_handle)
      +                );
      +
      +                // notify others
      +                proc_run('php','include/notifier.php','comment-import',$message_id);
      +        }
      +*/
      +		return true;
      +	}
      +
      +	private function import_conversation($importer, $data) {
      +		return true;
      +	}
      +
      +	private function import_like($importer, $sender, $data) {
      +		return true;
      +	}
      +
      +	private function import_message($importer, $data) {
      +		return true;
      +	}
      +
      +	private function import_participation($importer, $data) {
      +		return true;
      +	}
      +
      +	private function import_photo($importer, $data) {
      +		return true;
      +	}
      +
      +	private function import_poll_participation($importer, $data) {
      +		return true;
      +	}
      +
      +	private function import_profile($importer, $data) {
      +		return true;
      +	}
      +
      +	private function import_request($importer, $data) {
      +		return true;
      +	}
      +
      +	private function import_reshare($importer, $data) {
      +		return true;
      +	}
      +
      +	private function import_retraction($importer, $data) {
      +		return true;
      +	}
      +
      +	private function import_status_message($importer, $data) {
      +		return true;
      +	}
      +}
      +?>
      
      From c02b54997e84667f195ee3ddf0c809a863fab294 Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Sun, 28 Feb 2016 19:05:23 +0100
      Subject: [PATCH 016/485] Like and Comment could work (partially)
      
      ---
       include/diaspora2.php | 589 ++++++++++++++++++++++++++----------------
       1 file changed, 372 insertions(+), 217 deletions(-)
      
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index 690e54aa41..e6e2d74bf6 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -4,8 +4,9 @@
        * @brief The implementation of the diaspora protocol
        */
       
      -require_once("include/diaspora.php");
      +require_once("include/bb2diaspora.php");
       require_once("include/Scrape.php");
      +require_once("include/Contact.php");
       
       function array_to_xml($array, &$xml) {
       
      @@ -66,7 +67,7 @@ class diaspora {
       
       		// The sender is the handle of the contact that sent the message.
       		// This will often be different with relayed messages (for example "like" and "comment")
      -		$sender = $msg->author;
      +		$sender = $msg["author"];
       
       		if (!diaspora::valid_posting($msg, $fields)) {
       			logger("Invalid posting");
      @@ -80,12 +81,14 @@ class diaspora {
       				return self::import_account_deletion($importer, $fields);
       
       			case "comment":
      -				return self::import_comment($importer, $sender, $fields);
      +				return true;
      +			//	return self::import_comment($importer, $sender, $fields);
       
       			case "conversation":
       				return self::import_conversation($importer, $fields);
       
       			case "like":
      +			//	return true;
       				return self::import_like($importer, $sender, $fields);
       
       			case "message":
      @@ -136,7 +139,7 @@ class diaspora {
       	 */
       	private function valid_posting($msg, &$fields) {
       
      -		$data = parse_xml_string($msg->message, false);
      +		$data = parse_xml_string($msg["message"], false);
       
       		$first_child = $data->getName();
       
      @@ -202,12 +205,13 @@ class diaspora {
       				}
       
       				$signed_data .= $data;
      -				$fields->$fieldname = $data;
       			}
      +			if (!in_array($fieldname, array("parent_author_signature", "target_author_signature")))
      +				$fields->$fieldname = $data;
       		}
       
       		if (in_array($type, array("status_message", "reshare")))
      -			if ($msg->author != $fields->author) {
      +			if ($msg["author"] != $fields->author) {
       				logger("Message handle is not the same as envelope sender. Quitting this message.");
       				return false;
       			}
      @@ -219,7 +223,7 @@ class diaspora {
       			return false;
       
       		if (isset($parent_author_signature)) {
      -			$key = self::get_key($msg->author);
      +			$key = self::get_key($msg["author"]);
       
       			if (!rsa_verify($signed_data, $parent_author_signature, $key, "sha256"))
       				return false;
      @@ -349,104 +353,166 @@ class diaspora {
       		return false;
       	}
       
      +	private function fetch_guid($item) {
      +		preg_replace_callback("&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi",
      +			function ($match) use ($item){
      +				return(self::fetch_guid_sub($match, $item));
      +			},$item["body"]);
      +	}
      +
      +	private function fetch_guid_sub($match, $item) {
      +		$a = get_app();
      +
      +		if (!self::store_by_guid($match[1], $item["author-link"]))
      +			self::store_by_guid($match[1], $item["owner-link"]);
      +	}
      +
      +	private function store_by_guid($guid, $server, $uid = 0) {
      +		$serverparts = parse_url($server);
      +		$server = $serverparts["scheme"]."://".$serverparts["host"];
      +
      +		logger("Trying to fetch item ".$guid." from ".$server, LOGGER_DEBUG);
      +
      +/// @todo		$item = self::fetch_message($guid, $server);
      +
      +		if (!$item)
      +			return false;
      +
      +		logger("Successfully fetched item ".$guid." from ".$server, LOGGER_DEBUG);
      +
      +// @todo - neue Funktion import_status... nutzen
      +print_r($item);
      +die();
      +		return self::import_status_message($importer, $data);
      +
       /*
      -function DiasporaFetchGuid($item) {
      -        preg_replace_callback("&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi",
      -                function ($match) use ($item){
      -                        return(DiasporaFetchGuidSub($match, $item));
      -                },$item["body"]);
      -}
      +		$body = $item["body"];
      +		$str_tags = $item["tag"];
      +		$app = $item["app"];
      +		$created = $item["created"];
      +		$author = $item["author"];
      +		$guid = $item["guid"];
      +		$private = $item["private"];
      +		$object = $item["object"];
      +		$objecttype = $item["object-type"];
       
      -function DiasporaFetchGuidSub($match, $item) {
      -        $a = get_app();
      +		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +			intval($uid),
      +			dbesc($guid)
      +		);
      +		if(count($r))
      +			return $r[0]["id"];
       
      -        if (!diaspora_store_by_guid($match[1], $item["author-link"]))
      -                diaspora_store_by_guid($match[1], $item["owner-link"]);
      -}
      +		$person = self::get_person_by_handle($author);
       
      -function diaspora_store_by_guid($guid, $server, $uid = 0) {
      -        require_once("include/Contact.php");
      +		$contact_id = get_contact($person["url"], $uid);
       
      -        $serverparts = parse_url($server);
      -        $server = $serverparts["scheme"]."://".$serverparts["host"];
      +		$contacts = q("SELECT * FROM `contact` WHERE `id` = %d", intval($contact_id));
      +		$importers = q("SELECT * FROM `user` WHERE `uid` = %d", intval($uid));
       
      -        logger("Trying to fetch item ".$guid." from ".$server, LOGGER_DEBUG);
      +		if ($contacts AND $importers)
      +			if (!self::post_allow($importers[0],$contacts[0], false)) {
      +				logger("Ignoring author ".$person["url"]." for uid ".$uid);
      +				return false;
      +			} else
      +				logger("Author ".$person["url"]." is allowed for uid ".$uid);
       
      -        $item = diaspora_fetch_message($guid, $server);
      +		$datarray = array();
      +		$datarray["uid"] = $uid;
      +		$datarray["contact-id"] = $contact_id;
      +		$datarray["wall"] = 0;
      +		$datarray["network"] = NETWORK_DIASPORA;
      +		$datarray["guid"] = $guid;
      +		$datarray["uri"] = $datarray["parent-uri"] = $author.":".$guid;
      +		$datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert('UTC','UTC',$created);
      +		$datarray["private"] = $private;
      +		$datarray["parent"] = 0;
      +		$datarray["plink"] = self::plink($author, $guid);
      +		$datarray["author-name"] = $person["name"];
      +		$datarray["author-link"] = $person["url"];
      +		$datarray["author-avatar"] = ((x($person,'thumb')) ? $person["thumb"] : $person["photo"]);
      +		$datarray["owner-name"] = $datarray["author-name"];
      +		$datarray["owner-link"] = $datarray["author-link"];
      +		$datarray["owner-avatar"] = $datarray["author-avatar"];
      +		$datarray["body"] = $body;
      +		$datarray["tag"] = $str_tags;
      +		$datarray["app"]  = $app;
      +		$datarray["visible"] = ((strlen($body)) ? 1 : 0);
      +		$datarray["object"] = $object;
      +		$datarray["object-type"] = $objecttype;
       
      -        if (!$item)
      -                return false;
      +		if ($datarray["contact-id"] == 0)
      +			return false;
       
      -        logger("Successfully fetched item ".$guid." from ".$server, LOGGER_DEBUG);
      +		self::fetch_guid($datarray);
      +		$message_id = item_store($datarray);
       
      -        $body = $item["body"];
      -        $str_tags = $item["tag"];
      -        $app = $item["app"];
      -        $created = $item["created"];
      -        $author = $item["author"];
      -        $guid = $item["guid"];
      -        $private = $item["private"];
      -        $object = $item["object"];
      -        $objecttype = $item["object-type"];
      +		/// @TODO
      +		/// Looking if there is some subscribe mechanism in Diaspora to get all comments for this post
       
      -        $message_id = $author.':'.$guid;
      -        $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      -                intval($uid),
      -                dbesc($guid)
      -        );
      -        if(count($r))
      -                return $r[0]["id"];
      -
      -        $person = find_diaspora_person_by_handle($author);
      -
      -        $contact_id = get_contact($person['url'], $uid);
      -
      -        $contacts = q("SELECT * FROM `contact` WHERE `id` = %d", intval($contact_id));
      -        $importers = q("SELECT * FROM `user` WHERE `uid` = %d", intval($uid));
      -
      -        if ($contacts AND $importers)
      -                if(!diaspora_post_allow($importers[0],$contacts[0], false)) {
      -                        logger('Ignoring author '.$person['url'].' for uid '.$uid);
      -                        return false;
      -                } else
      -                        logger('Author '.$person['url'].' is allowed for uid '.$uid);
      -
      -        $datarray = array();
      -        $datarray['uid'] = $uid;
      -        $datarray['contact-id'] = $contact_id;
      -        $datarray['wall'] = 0;
      -        $datarray['network'] = NETWORK_DIASPORA;
      -        $datarray['guid'] = $guid;
      -        $datarray['uri'] = $datarray['parent-uri'] = $message_id;
      -        $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created);
      -        $datarray['private'] = $private;
      -        $datarray['parent'] = 0;
      -        $datarray['plink'] = diaspora_plink($author, $guid);
      -        $datarray['author-name'] = $person['name'];
      -        $datarray['author-link'] = $person['url'];
      -        $datarray['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']);
      -        $datarray['owner-name'] = $datarray['author-name'];
      -        $datarray['owner-link'] = $datarray['author-link'];
      -        $datarray['owner-avatar'] = $datarray['author-avatar'];
      -        $datarray['body'] = $body;
      -        $datarray['tag'] = $str_tags;
      -        $datarray['app']  = $app;
      -        $datarray['visible'] = ((strlen($body)) ? 1 : 0);
      -        $datarray['object'] = $object;
      -        $datarray['object-type'] = $objecttype;
      -
      -        if ($datarray['contact-id'] == 0)
      -                return false;
      -
      -        DiasporaFetchGuid($datarray);
      -        $message_id = item_store($datarray);
      -
      -        /// @TODO
      -        /// Looking if there is some subscribe mechanism in Diaspora to get all comments for this post
      -
      -        return $message_id;
      -}
      +		return $message_id;
       */
      +	}
      +
      +	private function post_allow($importer, $contact, $is_comment = false) {
      +
      +		// perhaps we were already sharing with this person. Now they're sharing with us.
      +		// That makes us friends.
      +		// Normally this should have handled by getting a request - but this could get lost
      +		if($contact["rel"] == CONTACT_IS_FOLLOWER && in_array($importer["page-flags"], array(PAGE_FREELOVE))) {
      +			q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
      +				intval(CONTACT_IS_FRIEND),
      +				intval($contact["id"]),
      +				intval($importer["uid"])
      +			);
      +			$contact["rel"] = CONTACT_IS_FRIEND;
      +			logger("defining user ".$contact["nick"]." as friend");
      +		}
      +
      +		if(($contact["blocked"]) || ($contact["readonly"]) || ($contact["archive"]))
      +			return false;
      +		if($contact["rel"] == CONTACT_IS_SHARING || $contact["rel"] == CONTACT_IS_FRIEND)
      +			return true;
      +		if($contact["rel"] == CONTACT_IS_FOLLOWER)
      +			if(($importer["page-flags"] == PAGE_COMMUNITY) OR $is_comment)
      +				return true;
      +
      +		// Messages for the global users are always accepted
      +		if ($importer["uid"] == 0)
      +			return true;
      +
      +		return false;
      +	}
      +
      +	private function fetch_parent_item($uid, $guid, $author, $contact) {
      +		$r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `owner-name`, `owner-link`, `owner-avatar`, `origin`
      +			FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +			intval($uid), dbesc($guid));
      +
      +		if(!count($r)) {
      +			$result = self::store_by_guid($guid, $contact["url"], $uid);
      +
      +			if (!$result) {
      +				$person = self::get_person_by_handle($author);
      +				$result = self::store_by_guid($guid, $person["url"], $uid);
      +			}
      +
      +			if ($result) {
      +				logger("Fetched missing item ".$guid." - result: ".$result, LOGGER_DEBUG);
      +
      +				$r = q("SELECT `id`, `body`, `wall`, `uri`, `private`,
      +						`owner-name`, `owner-link`, `owner-avatar`, `origin`
      +					FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +					intval($uid), dbesc($guid));
      +			}
      +		}
      +
      +		if (!count($r)) {
      +			logger("parent item not found: parent: ".$guid." item: ".$guid);
      +			return false;
      +		} else
      +			return $r[0];
      +	}
       
       	private function import_account_deletion($importer, $data) {
       		return true;
      @@ -463,132 +529,93 @@ function diaspora_store_by_guid($guid, $server, $uid = 0) {
       			logger("cannot find contact for sender: ".$sender);
       			return false;
       		}
      +
      +		if (!self::post_allow($importer,$contact, true)) {
      +			logger("Ignoring the author ".$sender);
      +			return false;
      +		}
       /*
      -        if(! diaspora_post_allow($importer,$contact, true)) {
      -                logger('diaspora_comment: Ignoring this author.');
      -                return 202;
      -        }
      -
      -        $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      -                intval($importer['uid']),
      -                dbesc($guid)
      -        );
      -        if(count($r)) {
      -                logger('diaspora_comment: our comment just got relayed back to us (or there was a guid collision) : ' . $guid);
      -                return;
      -        }
      -
      -        $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      -                intval($importer['uid']),
      -                dbesc($parent_guid)
      -        );
      -
      -        if(!count($r)) {
      -                $result = diaspora_store_by_guid($parent_guid, $contact['url'], $importer['uid']);
      -
      -                if (!$result) {
      -                        $person = find_diaspora_person_by_handle($diaspora_handle);
      -                        $result = diaspora_store_by_guid($parent_guid, $person['url'], $importer['uid']);
      -                }
      -
      -                if ($result) {
      -                        logger("Fetched missing item ".$parent_guid." - result: ".$result, LOGGER_DEBUG);
      -
      -                        $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      -                                intval($importer['uid']),
      -                                dbesc($parent_guid)
      -                        );
      -                }
      -        }
      -
      -        if(! count($r)) {
      -                logger('diaspora_comment: parent item not found: parent: ' . $parent_guid . ' item: ' . $guid);
      -                return;
      -        }
      -        $parent_item = $r[0];
      -
      -        // Find the original comment author information.
      -        // We need this to make sure we display the comment author
      -        // information (name and avatar) correctly.
      -        if(strcasecmp($diaspora_handle,$msg['author']) == 0)
      -                $person = $contact;
      -        else {
      -                $person = find_diaspora_person_by_handle($diaspora_handle);
      -
      -                if(! is_array($person)) {
      -                        logger('diaspora_comment: unable to find author details');
      -                        return;
      -                }
      -        }
      -
      -        // Fetch the contact id - if we know this contact
      -        $r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
      -                dbesc(normalise_link($person['url'])), intval($importer['uid']));
      -        if ($r) {
      -                $cid = $r[0]['id'];
      -                $network = $r[0]['network'];
      -        } else {
      -                $cid = $contact['id'];
      -                $network = NETWORK_DIASPORA;
      -        }
      -
      -        $body = diaspora2bb($text);
      -        $message_id = $diaspora_handle . ':' . $guid;
      -
      -        $datarray = array();
      -
      -        $datarray['uid'] = $importer['uid'];
      -        $datarray['contact-id'] = $cid;
      -        $datarray['type'] = 'remote-comment';
      -        $datarray['wall'] = $parent_item['wall'];
      -        $datarray['network']  = $network;
      -        $datarray['verb'] = ACTIVITY_POST;
      -        $datarray['gravity'] = GRAVITY_COMMENT;
      -        $datarray['guid'] = $guid;
      -        $datarray['uri'] = $message_id;
      -        $datarray['parent-uri'] = $parent_item['uri'];
      -
      -        // No timestamps for comments? OK, we'll the use current time.
      -        $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert();
      -        $datarray['private'] = $parent_item['private'];
      -
      -        $datarray['owner-name'] = $parent_item['owner-name'];
      -        $datarray['owner-link'] = $parent_item['owner-link'];
      -        $datarray['owner-avatar'] = $parent_item['owner-avatar'];
      -
      -        $datarray['author-name'] = $person['name'];
      -        $datarray['author-link'] = $person['url'];
      -        $datarray['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']);
      -        $datarray['body'] = $body;
      -        $datarray["object"] = json_encode($xml);
      -        $datarray["object-type"] = ACTIVITY_OBJ_COMMENT;
      -
      -        // We can't be certain what the original app is if the message is relayed.
      -        if(($parent_item['origin']) && (! $parent_author_signature))
      -                $datarray['app']  = 'Diaspora';
      -
      -        DiasporaFetchGuid($datarray);
      -        $message_id = item_store($datarray);
      -
      -        $datarray['id'] = $message_id;
      -
      -        // If we are the origin of the parent we store the original signature and notify our followers
      -        if($parent_item['origin']) {
      -                $author_signature_base64 = base64_encode($author_signature);
      -                $author_signature_base64 = diaspora_repair_signature($author_signature_base64, $diaspora_handle);
      -
      -                q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
      -                        intval($message_id),
      -                        dbesc($signed_data),
      -                        dbesc($author_signature_base64),
      -                        dbesc($diaspora_handle)
      -                );
      -
      -                // notify others
      -                proc_run('php','include/notifier.php','comment-import',$message_id);
      -        }
      +		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +			intval($importer["uid"]),
      +			dbesc($guid)
      +		);
      +		if(count($r)) {
      +			logger("The comment already exists: ".$guid);
      +			return;
      +		}
       */
      -		return true;
      +		$parent_item = self::fetch_parent_item($importer["uid"], $parent_guid, $author, $contact);
      +		if (!$parent_item)
      +			return false;
      +
      +		$person = self::get_person_by_handle($author);
      +		if (!is_array($person)) {
      +			logger("unable to find author details");
      +			return false;
      +		}
      +
      +		// Fetch the contact id - if we know this contact
      +		$r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
      +			dbesc(normalise_link($person["url"])), intval($importer["uid"]));
      +		if ($r) {
      +			$cid = $r[0]["id"];
      +			$network = $r[0]["network"];
      +		} else {
      +			$cid = $contact["id"];
      +			$network = NETWORK_DIASPORA;
      +		}
      +
      +		$body = diaspora2bb($text);
      +
      +		$datarray = array();
      +
      +		$datarray["uid"] = $importer["uid"];
      +		$datarray["contact-id"] = $cid;
      +		$datarray["type"] = 'remote-comment';
      +		$datarray["wall"] = $parent_item["wall"];
      +		$datarray["network"]  = $network;
      +		$datarray["verb"] = ACTIVITY_POST;
      +		$datarray["gravity"] = GRAVITY_COMMENT;
      +		$datarray["guid"] = $guid;
      +		$datarray["uri"] = $author.":".$guid;
      +		$datarray["parent-uri"] = $parent_item["uri"];
      +
      +		// The old Diaspora protocol doesn't have a timestamp for comments
      +		$datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert();
      +		$datarray["private"] = $parent_item["private"];
      +
      +		$datarray["owner-name"] = $contact["name"];
      +		$datarray["owner-link"] = $contact["url"];
      +		$datarray["owner-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]);
      +
      +		$datarray["author-name"] = $person["name"];
      +		$datarray["author-link"] = $person["url"];
      +		$datarray["author-avatar"] = ((x($person,"thumb")) ? $person["thumb"] : $person["photo"]);
      +		$datarray["body"] = $body;
      +		$datarray["object"] = json_encode($data);
      +		$datarray["object-type"] = ACTIVITY_OBJ_COMMENT;
      +
      +		self::fetch_guid($datarray);
      +
      +//		$message_id = item_store($datarray);
      +print_r($datarray);
      +		$datarray["id"] = $message_id;
      +
      +		// If we are the origin of the parent we store the original data and notify our followers
      +		if($message_id AND $parent_item["origin"]) {
      +
      +			// Formerly we stored the signed text, the signature and the author in different fields.
      +			// The new Diaspora protocol can have variable fields. We now store the data in correct order in a single field.
      +			q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')",
      +				intval($message_id),
      +				dbesc(json_encode($data))
      +			);
      +
      +			// notify others
      +			proc_run("php", "include/notifier.php", "comment-import", $message_id);
      +		}
      +
      +		return $message_id;
       	}
       
       	private function import_conversation($importer, $data) {
      @@ -596,6 +623,134 @@ function diaspora_store_by_guid($guid, $server, $uid = 0) {
       	}
       
       	private function import_like($importer, $sender, $data) {
      +		$positive = notags(unxmlify($data->positive));
      +		$guid = notags(unxmlify($data->guid));
      +		$parent_type = notags(unxmlify($data->parent_type));
      +		$parent_guid = notags(unxmlify($data->parent_guid));
      +		$author = notags(unxmlify($data->author));
      +
      +		// likes on comments aren't supported by Diaspora - only on posts
      +		if ($parent_type !== "Post")
      +			return false;
      +
      +		// "positive" = "false" doesn't seem to be supported by Diaspora
      +		if ($positive === "false") {
      +			logger("Received a like with positive set to 'false' - this shouldn't exist at all");
      +			return false;
      +		}
      +
      +		$contact = self::get_contact_by_handle($importer["uid"], $sender);
      +		if (!$contact) {
      +			logger("cannot find contact for sender: ".$sender);
      +			return false;
      +		}
      +
      +		if (!self::post_allow($importer,$contact, true)) {
      +			logger("Ignoring the author ".$sender);
      +			return false;
      +		}
      +/*
      +		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +			intval($importer["uid"]),
      +			dbesc($guid)
      +		);
      +		if(count($r)) {
      +			logger("The like already exists: ".$guid);
      +			return false;
      +		}
      +*/
      +		$parent_item = self::fetch_parent_item($importer["uid"], $parent_guid, $author, $contact);
      +		if (!$parent_item)
      +			return false;
      +
      +		$person = self::get_person_by_handle($author);
      +		if (!is_array($person)) {
      +			logger("unable to find author details");
      +			return false;
      +		}
      +
      +		// Fetch the contact id - if we know this contact
      +		$r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
      +			dbesc(normalise_link($person["url"])), intval($importer["uid"]));
      +		if ($r) {
      +			$cid = $r[0]["id"];
      +			$network = $r[0]["network"];
      +		} else {
      +			$cid = $contact["id"];
      +			$network = NETWORK_DIASPORA;
      +		}
      +
      +// ------------------------------------------------
      +		$objtype = ACTIVITY_OBJ_NOTE;
      +		$link = xmlify(''."\n") ;
      +		$parent_body = $parent_item["body"];
      +
      +		$obj = <<< EOT
      +
      +		
      +			$objtype
      +			1
      +			{$parent_item["uri"]}
      +			$link
      +			
      +			$parent_body
      +		
      +EOT;
      +		$bodyverb = t('%1$s likes %2$s\'s %3$s');
      +
      +		$ulink = "[url=".$contact["url"]."]".$contact["name"]."[/url]";
      +		$alink = "[url=".$parent_item["author-link"]."]".$parent_item["author-name"]."[/url]";
      +		$plink = "[url=".App::get_baseurl()."/display/".urlencode($guid)."]".t("status")."[/url]";
      +		$body = sprintf($bodyverb, $ulink, $alink, $plink);
      +// ------------------------------------------------
      +
      +		$datarray = array();
      +
      +		$datarray["uri"] = $author.":".$guid;
      +		$datarray["uid"] = $importer["uid"];
      +		$datarray["guid"] = $guid;
      +		$datarray["network"]  = $network;
      +		$datarray["contact-id"] = $cid;
      +		$datarray["type"] = "activity";
      +		$datarray["wall"] = $parent_item["wall"];
      +		$datarray["gravity"] = GRAVITY_LIKE;
      +		$datarray["parent"] = $parent_item["id"];
      +		$datarray["parent-uri"] = $parent_item["uri"];
      +
      +		$datarray["owner-name"] = $contact["name"];
      +		$datarray["owner-link"] = $contact["url"];
      +		$datarray["owner-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]);
      +
      +		$datarray["author-name"] = $person["name"];
      +		$datarray["author-link"] = $person["url"];
      +		$datarray["author-avatar"] = ((x($person,"thumb")) ? $person["thumb"] : $person["photo"]);
      +
      +		$datarray["body"] = $body;
      +		$datarray["private"] = $parent_item["private"];
      +		$datarray["verb"] = ACTIVITY_LIKE;
      +		$datarray["object-type"] = $objtype;
      +		$datarray["object"] = $obj;
      +		$datarray["visible"] = 1;
      +		$datarray["unseen"] = 1;
      +		$datarray["last-child"] = 0;
      +
      +print_r($datarray);
      +//		$message_id = item_store($datarray);
      +
      +		// If we are the origin of the parent we store the original data and notify our followers
      +		if($message_id AND $parent_item["origin"]) {
      +
      +			// Formerly we stored the signed text, the signature and the author in different fields.
      +			// The new Diaspora protocol can have variable fields. We now store the data in correct order in a single field.
      +			q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')",
      +				intval($message_id),
      +				dbesc(json_encode($data))
      +			);
      +
      +			// notify others
      +			proc_run("php", "include/notifier.php", "comment-import", $message_id);
      +		}
      +
       		return true;
       	}
       
      
      From 6d3581dac8dc5a27a18a39709fa3ae38c080c490 Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Mon, 29 Feb 2016 08:02:50 +0100
      Subject: [PATCH 017/485] "profile". "like" and "comment" could work, status
       messages only partly.
      
      ---
       include/diaspora.php  |    4 +-
       include/diaspora2.php | 1055 +++++++++++++++++++++++++++++++++--------
       2 files changed, 856 insertions(+), 203 deletions(-)
      
      diff --git a/include/diaspora.php b/include/diaspora.php
      index 9dbbeabbcf..4ec7489ca4 100644
      --- a/include/diaspora.php
      +++ b/include/diaspora.php
      @@ -116,8 +116,8 @@ function diaspora_dispatch($importer,$msg,$attempt=1) {
       		$ret = diaspora_retraction($importer,$xmlbase->retraction,$msg);
       	}
       	elseif($xmlbase->signed_retraction) {
      -		$tempfile = tempnam(get_temppath(), "diaspora-signed_retraction");
      -		file_put_contents($tempfile, json_encode($data));
      +		//$tempfile = tempnam(get_temppath(), "diaspora-signed_retraction");
      +		//file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_signed_retraction($importer,$xmlbase->signed_retraction,$msg);
       	}
       	elseif($xmlbase->relayable_retraction) {
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index e6e2d74bf6..578a496c0a 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -7,30 +7,43 @@
       require_once("include/bb2diaspora.php");
       require_once("include/Scrape.php");
       require_once("include/Contact.php");
      +require_once("include/Photo.php");
      +require_once("include/socgraph.php");
       
      -function array_to_xml($array, &$xml) {
      +class xml {
      +	function from_array($array, &$xml) {
      +
      +		if (!is_object($xml)) {
      +			foreach($array as $key => $value) {
      +				$root = new SimpleXMLElement('<'.$key.'/>');
      +				array_to_xml($value, $root);
      +
      +				$dom = dom_import_simplexml($root)->ownerDocument;
      +				$dom->formatOutput = true;
      +				return $dom->saveXML();
      +			}
      +		}
       
      -	if (!is_object($xml)) {
       		foreach($array as $key => $value) {
      -			$root = new SimpleXMLElement('<'.$key.'/>');
      -			array_to_xml($value, $root);
      -
      -			$dom = dom_import_simplexml($root)->ownerDocument;
      -			$dom->formatOutput = true;
      -			return $dom->saveXML();
      +			if (!is_array($value) AND !is_numeric($key))
      +				$xml->addChild($key, $value);
      +			elseif (is_array($value))
      +				array_to_xml($value, $xml->addChild($key));
       		}
       	}
       
      -	foreach($array as $key => $value) {
      -		if (!is_array($value) AND !is_numeric($key))
      -			$xml->addChild($key, $value);
      -		elseif (is_array($value))
      -			array_to_xml($value, $xml->addChild($key));
      +	function copy(&$source, &$target, $elementname) {
      +		if (count($source->children()) == 0)
      +			$target->addChild($elementname, $source);
      +		else {
      +			$child = $target->addChild($elementname);
      +			foreach ($source->children() AS $childfield => $childentry)
      +				self::copy($childentry, $child, $childfield);
      +		}
       	}
       }
      -
       /**
      - * @brief This class contain functions to create and send DFRN XML files
      + * @brief This class contain functions to create and send Diaspora XML files
        *
        */
       class diaspora {
      @@ -39,7 +52,7 @@ class diaspora {
       
       		$enabled = intval(get_config("system", "diaspora_enabled"));
       		if (!$enabled) {
      -			logger('diaspora is disabled');
      +			logger("diaspora is disabled");
       			return false;
       		}
       
      @@ -69,7 +82,7 @@ class diaspora {
       		// This will often be different with relayed messages (for example "like" and "comment")
       		$sender = $msg["author"];
       
      -		if (!diaspora::valid_posting($msg, $fields)) {
      +		if (!diaspora::valid_posting($msg, $fields, $data2)) {
       			logger("Invalid posting");
       			return false;
       		}
      @@ -77,34 +90,36 @@ class diaspora {
       		$type = $fields->getName();
       
       		switch ($type) {
      -			case "account_deletion":
      +			case "account_deletion": // Not implemented
       				return self::import_account_deletion($importer, $fields);
       
       			case "comment":
       				return true;
      -			//	return self::import_comment($importer, $sender, $fields);
      +				//return self::import_comment($importer, $sender, $fields);
       
       			case "conversation":
       				return self::import_conversation($importer, $fields);
       
       			case "like":
      -			//	return true;
      -				return self::import_like($importer, $sender, $fields);
      +				return true;
      +				//return self::import_like($importer, $sender, $fields);
       
       			case "message":
      -				return self::import_message($importer, $fields);
      +				return true;
      +				//return self::import_message($importer, $fields);
       
      -			case "participation":
      +			case "participation": // Not implemented
       				return self::import_participation($importer, $fields);
       
       			case "photo":
       				return self::import_photo($importer, $fields);
       
      -			case "poll_participation":
      +			case "poll_participation": // Not implemented
       				return self::import_poll_participation($importer, $fields);
       
       			case "profile":
      -				return self::import_profile($importer, $fields);
      +				return true;
      +				//return self::import_profile($importer, $fields);
       
       			case "request":
       				return self::import_request($importer, $fields);
      @@ -116,7 +131,7 @@ class diaspora {
       				return self::import_retraction($importer, $fields);
       
       			case "status_message":
      -				return self::import_status_message($importer, $fields);
      +				return self::import_status_message($importer, $fields, $msg, $data2);
       
       			default:
       				logger("Unknown message type ".$type);
      @@ -133,16 +148,20 @@ class diaspora {
       	 * It also does the conversion between the old and the new diaspora format.
       	 *
       	 * @param array $msg Array with the XML, the sender handle and the sender signature
      -	 * @param object $fields SimpleXML object that contains the posting
      +	 * @param object $fields SimpleXML object that contains the posting when it is valid
       	 *
       	 * @return bool Is the posting valid?
       	 */
      -	private function valid_posting($msg, &$fields) {
      +	private function valid_posting($msg, &$fields, &$element) {
       
       		$data = parse_xml_string($msg["message"], false);
       
      +		if (!is_object($data))
      +			return false;
      +
       		$first_child = $data->getName();
       
      +		// Is this the new or the old version?
       		if ($data->getName() == "XML") {
       			$oldXML = true;
       			foreach ($data->post->children() as $child)
      @@ -154,6 +173,8 @@ class diaspora {
       
       		$type = $element->getName();
       
      +		// All retractions are handled identically from now on.
      +		// In the new version there will only be "retraction".
       		if (in_array($type, array("signed_retraction", "relayable_retraction")))
       			$type = "retraction";
       
      @@ -161,8 +182,7 @@ class diaspora {
       
       		$signed_data = "";
       
      -		foreach ($element->children() AS $fieldname => $data) {
      -
      +		foreach ($element->children() AS $fieldname => $entry) {
       			if ($oldXML) {
       				// Translation for the old XML structure
       				if ($fieldname == "diaspora_handle")
      @@ -195,30 +215,33 @@ class diaspora {
       			}
       
       			if ($fieldname == "author_signature")
      -				$author_signature = base64_decode($data);
      +				$author_signature = base64_decode($entry);
       			elseif ($fieldname == "parent_author_signature")
      -				$parent_author_signature = base64_decode($data);
      +				$parent_author_signature = base64_decode($entry);
       			elseif ($fieldname != "target_author_signature") {
       				if ($signed_data != "") {
       					$signed_data .= ";";
       					$signed_data_parent .= ";";
       				}
       
      -				$signed_data .= $data;
      +				$signed_data .= $entry;
       			}
       			if (!in_array($fieldname, array("parent_author_signature", "target_author_signature")))
      -				$fields->$fieldname = $data;
      +				xml::copy($entry, $fields, $fieldname);
       		}
       
      -		if (in_array($type, array("status_message", "reshare")))
      +		// This is something that shouldn't happen at all.
      +		if (in_array($type, array("status_message", "reshare", "profile")))
       			if ($msg["author"] != $fields->author) {
       				logger("Message handle is not the same as envelope sender. Quitting this message.");
       				return false;
       			}
       
      +		// Only some message types have signatures. So we quit here for the other types.
       		if (!in_array($type, array("comment", "conversation", "message", "like")))
       			return true;
       
      +		// No author_signature? This is a must, so we quit.
       		if (!isset($author_signature))
       			return false;
       
      @@ -373,85 +396,57 @@ class diaspora {
       
       		logger("Trying to fetch item ".$guid." from ".$server, LOGGER_DEBUG);
       
      -/// @todo		$item = self::fetch_message($guid, $server);
      +		$msg = self::fetch_message($guid, $server);
       
      -		if (!$item)
      +		if (!$msg)
       			return false;
       
       		logger("Successfully fetched item ".$guid." from ".$server, LOGGER_DEBUG);
       
      -// @todo - neue Funktion import_status... nutzen
      -print_r($item);
      -die();
      -		return self::import_status_message($importer, $data);
      +		// Now call the dispatcher
      +		return self::dispatch_public($msg);
      +	}
       
      -/*
      -		$body = $item["body"];
      -		$str_tags = $item["tag"];
      -		$app = $item["app"];
      -		$created = $item["created"];
      -		$author = $item["author"];
      -		$guid = $item["guid"];
      -		$private = $item["private"];
      -		$object = $item["object"];
      -		$objecttype = $item["object-type"];
      +	private function fetch_message($guid, $server, $level = 0) {
       
      -		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      -			intval($uid),
      -			dbesc($guid)
      -		);
      -		if(count($r))
      -			return $r[0]["id"];
      -
      -		$person = self::get_person_by_handle($author);
      -
      -		$contact_id = get_contact($person["url"], $uid);
      -
      -		$contacts = q("SELECT * FROM `contact` WHERE `id` = %d", intval($contact_id));
      -		$importers = q("SELECT * FROM `user` WHERE `uid` = %d", intval($uid));
      -
      -		if ($contacts AND $importers)
      -			if (!self::post_allow($importers[0],$contacts[0], false)) {
      -				logger("Ignoring author ".$person["url"]." for uid ".$uid);
      -				return false;
      -			} else
      -				logger("Author ".$person["url"]." is allowed for uid ".$uid);
      -
      -		$datarray = array();
      -		$datarray["uid"] = $uid;
      -		$datarray["contact-id"] = $contact_id;
      -		$datarray["wall"] = 0;
      -		$datarray["network"] = NETWORK_DIASPORA;
      -		$datarray["guid"] = $guid;
      -		$datarray["uri"] = $datarray["parent-uri"] = $author.":".$guid;
      -		$datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert('UTC','UTC',$created);
      -		$datarray["private"] = $private;
      -		$datarray["parent"] = 0;
      -		$datarray["plink"] = self::plink($author, $guid);
      -		$datarray["author-name"] = $person["name"];
      -		$datarray["author-link"] = $person["url"];
      -		$datarray["author-avatar"] = ((x($person,'thumb')) ? $person["thumb"] : $person["photo"]);
      -		$datarray["owner-name"] = $datarray["author-name"];
      -		$datarray["owner-link"] = $datarray["author-link"];
      -		$datarray["owner-avatar"] = $datarray["author-avatar"];
      -		$datarray["body"] = $body;
      -		$datarray["tag"] = $str_tags;
      -		$datarray["app"]  = $app;
      -		$datarray["visible"] = ((strlen($body)) ? 1 : 0);
      -		$datarray["object"] = $object;
      -		$datarray["object-type"] = $objecttype;
      -
      -		if ($datarray["contact-id"] == 0)
      +		if ($level > 5)
       			return false;
       
      -		self::fetch_guid($datarray);
      -		$message_id = item_store($datarray);
      +		// This will not work if the server is not a Diaspora server
      +		$source_url = $server."/p/".$guid.".xml";
      +		$x = fetch_url($source_url);
      +		if(!$x)
      +			return false;
       
      -		/// @TODO
      -		/// Looking if there is some subscribe mechanism in Diaspora to get all comments for this post
      +		/// @todo - should maybe solved by the dispatcher
      +		$source_xml = parse_xml_string($x, false);
       
      -		return $message_id;
      -*/
      +		if (!is_object($source_xml))
      +			return false;
      +
      +		if ($source_xml->post->reshare) {
      +			// Reshare of a reshare - old Diaspora version
      +			return self::fetch_message($source_xml->post->reshare->root_guid, $server, ++$level);
      +		} elseif ($source_xml->getName() == "reshare") {
      +			// Reshare of a reshare - new Diaspora version
      +			return self::fetch_message($source_xml->root_guid, $server, ++$level);
      +		}
      +
      +		// Fetch the author - for the old and the new Diaspora version
      +		if ($source_xml->post->status_message->diaspora_handle)
      +			$author = (string)$source_xml->post->status_message->diaspora_handle;
      +		elseif ($source_xml->author)
      +			$author = (string)$source_xml->author;
      +
      +		if (!$author)
      +			return false;
      +
      +		$msg = array("message" => $x, "author" => $author);
      +
      +		// We don't really need this, but until the work is unfinished we better will keep this
      +		$msg["key"] = self::get_key($msg["author"]);
      +
      +		return $msg;
       	}
       
       	private function post_allow($importer, $contact, $is_comment = false) {
      @@ -485,7 +480,9 @@ die();
       	}
       
       	private function fetch_parent_item($uid, $guid, $author, $contact) {
      -		$r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `owner-name`, `owner-link`, `owner-avatar`, `origin`
      +		$r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `origin`,
      +				`author-name`, `author-link`, `author-avatar`,
      +				`owner-name`, `owner-link`, `owner-avatar`
       			FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
       			intval($uid), dbesc($guid));
       
      @@ -500,8 +497,9 @@ die();
       			if ($result) {
       				logger("Fetched missing item ".$guid." - result: ".$result, LOGGER_DEBUG);
       
      -				$r = q("SELECT `id`, `body`, `wall`, `uri`, `private`,
      -						`owner-name`, `owner-link`, `owner-avatar`, `origin`
      +				$r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `origin`,
      +						`author-name`, `author-link`, `author-avatar`,
      +						`owner-name`, `owner-link`, `owner-avatar`
       					FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
       					intval($uid), dbesc($guid));
       			}
      @@ -514,7 +512,49 @@ die();
       			return $r[0];
       	}
       
      +	private function get_author_contact_by_url($contact, $person, $uid) {
      +
      +		$r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
      +			dbesc(normalise_link($person["url"])), intval($uid));
      +		if ($r) {
      +			$cid = $r[0]["id"];
      +			$network = $r[0]["network"];
      +		} else {
      +			$cid = $contact["id"];
      +			$network = NETWORK_DIASPORA;
      +		}
      +
      +		return (array("cid" => $cid, "network" => $network));
      +	}
      +
      +	public static function is_redmatrix($url) {
      +		return(strstr($url, "/channel/"));
      +	}
      +
      +	private function plink($addr, $guid) {
      +	        $r = q("SELECT `url`, `nick`, `network` FROM `fcontact` WHERE `addr`='%s' LIMIT 1", dbesc($addr));
      +
      +	        // Fallback
      +	        if (!$r)
      +	                return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid;
      +
      +	        // Friendica contacts are often detected as Diaspora contacts in the "fcontact" table
      +	        // So we try another way as well.
      +	        $s = q("SELECT `network` FROM `gcontact` WHERE `nurl`='%s' LIMIT 1", dbesc(normalise_link($r[0]["url"])));
      +	        if ($s)
      +	                $r[0]["network"] = $s[0]["network"];
      +
      +	        if ($r[0]["network"] == NETWORK_DFRN)
      +	                return(str_replace("/profile/".$r[0]["nick"]."/", "/display/".$guid, $r[0]["url"]."/"));
      +
      +	        if (self::is_redmatrix($r[0]["url"]))
      +	                return $r[0]["url"]."/?f=&mid=".$guid;
      +
      +	        return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid;
      +	}
      +
       	private function import_account_deletion($importer, $data) {
      +		// Not supported by now. We are waiting for sample data
       		return true;
       	}
       
      @@ -534,16 +574,16 @@ die();
       			logger("Ignoring the author ".$sender);
       			return false;
       		}
      -/*
      +
       		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
       			intval($importer["uid"]),
       			dbesc($guid)
       		);
       		if(count($r)) {
       			logger("The comment already exists: ".$guid);
      -			return;
      +			return false;
       		}
      -*/
      +
       		$parent_item = self::fetch_parent_item($importer["uid"], $parent_guid, $author, $contact);
       		if (!$parent_item)
       			return false;
      @@ -555,51 +595,39 @@ die();
       		}
       
       		// Fetch the contact id - if we know this contact
      -		$r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
      -			dbesc(normalise_link($person["url"])), intval($importer["uid"]));
      -		if ($r) {
      -			$cid = $r[0]["id"];
      -			$network = $r[0]["network"];
      -		} else {
      -			$cid = $contact["id"];
      -			$network = NETWORK_DIASPORA;
      -		}
      -
      -		$body = diaspora2bb($text);
      +		$author_contact = self::get_author_contact_by_url($contact, $person, $importer["uid"]);
       
       		$datarray = array();
       
       		$datarray["uid"] = $importer["uid"];
      -		$datarray["contact-id"] = $cid;
      -		$datarray["type"] = 'remote-comment';
      -		$datarray["wall"] = $parent_item["wall"];
      -		$datarray["network"]  = $network;
      -		$datarray["verb"] = ACTIVITY_POST;
      -		$datarray["gravity"] = GRAVITY_COMMENT;
      -		$datarray["guid"] = $guid;
      -		$datarray["uri"] = $author.":".$guid;
      -		$datarray["parent-uri"] = $parent_item["uri"];
      +		$datarray["contact-id"] = $author_contact["cid"];
      +		$datarray["network"]  = $author_contact["network"];
       
      -		// The old Diaspora protocol doesn't have a timestamp for comments
      -		$datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert();
      -		$datarray["private"] = $parent_item["private"];
      +		$datarray["author-name"] = $person["name"];
      +		$datarray["author-link"] = $person["url"];
      +		$datarray["author-avatar"] = ((x($person,"thumb")) ? $person["thumb"] : $person["photo"]);
       
       		$datarray["owner-name"] = $contact["name"];
       		$datarray["owner-link"] = $contact["url"];
       		$datarray["owner-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]);
       
      -		$datarray["author-name"] = $person["name"];
      -		$datarray["author-link"] = $person["url"];
      -		$datarray["author-avatar"] = ((x($person,"thumb")) ? $person["thumb"] : $person["photo"]);
      -		$datarray["body"] = $body;
      -		$datarray["object"] = json_encode($data);
      +		$datarray["guid"] = $guid;
      +		$datarray["uri"] = $author.":".$guid;
      +
      +		$datarray["type"] = "remote-comment";
      +		$datarray["verb"] = ACTIVITY_POST;
      +		$datarray["gravity"] = GRAVITY_COMMENT;
      +		$datarray["parent-uri"] = $parent_item["uri"];
      +
       		$datarray["object-type"] = ACTIVITY_OBJ_COMMENT;
      +		$datarray["object"] = json_encode($data);
      +
      +		$datarray["body"] = diaspora2bb($text);
       
       		self::fetch_guid($datarray);
       
      -//		$message_id = item_store($datarray);
      -print_r($datarray);
      -		$datarray["id"] = $message_id;
      +		$message_id = item_store($datarray);
      +		// print_r($datarray);
       
       		// If we are the origin of the parent we store the original data and notify our followers
       		if($message_id AND $parent_item["origin"]) {
      @@ -622,6 +650,36 @@ print_r($datarray);
       		return true;
       	}
       
      +	private function construct_like_body($contact, $parent_item, $guid) {
      +		$bodyverb = t('%1$s likes %2$s\'s %3$s');
      +
      +		$ulink = "[url=".$contact["url"]."]".$contact["name"]."[/url]";
      +		$alink = "[url=".$parent_item["author-link"]."]".$parent_item["author-name"]."[/url]";
      +		$plink = "[url=".App::get_baseurl()."/display/".urlencode($guid)."]".t("status")."[/url]";
      +
      +		return sprintf($bodyverb, $ulink, $alink, $plink);
      +	}
      +
      +	private function construct_like_object($importer, $parent_item) {
      +		$objtype = ACTIVITY_OBJ_NOTE;
      +		$link = xmlify(''."\n") ;
      +		$parent_body = $parent_item["body"];
      +
      +		$obj = <<< EOT
      +
      +		
      +			$objtype
      +			1
      +			{$parent_item["uri"]}
      +			$link
      +			
      +			$parent_body
      +		
      +EOT;
      +
      +		return $obj;
      +	}
      +
       	private function import_like($importer, $sender, $data) {
       		$positive = notags(unxmlify($data->positive));
       		$guid = notags(unxmlify($data->guid));
      @@ -649,7 +707,7 @@ print_r($datarray);
       			logger("Ignoring the author ".$sender);
       			return false;
       		}
      -/*
      +
       		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
       			intval($importer["uid"]),
       			dbesc($guid)
      @@ -658,7 +716,7 @@ print_r($datarray);
       			logger("The like already exists: ".$guid);
       			return false;
       		}
      -*/
      +
       		$parent_item = self::fetch_parent_item($importer["uid"], $parent_guid, $author, $contact);
       		if (!$parent_item)
       			return false;
      @@ -670,72 +728,37 @@ print_r($datarray);
       		}
       
       		// Fetch the contact id - if we know this contact
      -		$r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
      -			dbesc(normalise_link($person["url"])), intval($importer["uid"]));
      -		if ($r) {
      -			$cid = $r[0]["id"];
      -			$network = $r[0]["network"];
      -		} else {
      -			$cid = $contact["id"];
      -			$network = NETWORK_DIASPORA;
      -		}
      -
      -// ------------------------------------------------
      -		$objtype = ACTIVITY_OBJ_NOTE;
      -		$link = xmlify(''."\n") ;
      -		$parent_body = $parent_item["body"];
      -
      -		$obj = <<< EOT
      -
      -		
      -			$objtype
      -			1
      -			{$parent_item["uri"]}
      -			$link
      -			
      -			$parent_body
      -		
      -EOT;
      -		$bodyverb = t('%1$s likes %2$s\'s %3$s');
      -
      -		$ulink = "[url=".$contact["url"]."]".$contact["name"]."[/url]";
      -		$alink = "[url=".$parent_item["author-link"]."]".$parent_item["author-name"]."[/url]";
      -		$plink = "[url=".App::get_baseurl()."/display/".urlencode($guid)."]".t("status")."[/url]";
      -		$body = sprintf($bodyverb, $ulink, $alink, $plink);
      -// ------------------------------------------------
      +		$author_contact = self::get_author_contact_by_url($contact, $person, $importer["uid"]);
       
       		$datarray = array();
       
      -		$datarray["uri"] = $author.":".$guid;
       		$datarray["uid"] = $importer["uid"];
      -		$datarray["guid"] = $guid;
      -		$datarray["network"]  = $network;
      -		$datarray["contact-id"] = $cid;
      -		$datarray["type"] = "activity";
      -		$datarray["wall"] = $parent_item["wall"];
      -		$datarray["gravity"] = GRAVITY_LIKE;
      -		$datarray["parent"] = $parent_item["id"];
      -		$datarray["parent-uri"] = $parent_item["uri"];
      -
      -		$datarray["owner-name"] = $contact["name"];
      -		$datarray["owner-link"] = $contact["url"];
      -		$datarray["owner-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]);
      +		$datarray["contact-id"] = $author_contact["cid"];
      +		$datarray["network"]  = $author_contact["network"];
       
       		$datarray["author-name"] = $person["name"];
       		$datarray["author-link"] = $person["url"];
       		$datarray["author-avatar"] = ((x($person,"thumb")) ? $person["thumb"] : $person["photo"]);
       
      -		$datarray["body"] = $body;
      -		$datarray["private"] = $parent_item["private"];
      -		$datarray["verb"] = ACTIVITY_LIKE;
      -		$datarray["object-type"] = $objtype;
      -		$datarray["object"] = $obj;
      -		$datarray["visible"] = 1;
      -		$datarray["unseen"] = 1;
      -		$datarray["last-child"] = 0;
      +		$datarray["owner-name"] = $contact["name"];
      +		$datarray["owner-link"] = $contact["url"];
      +		$datarray["owner-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]);
       
      -print_r($datarray);
      -//		$message_id = item_store($datarray);
      +		$datarray["guid"] = $guid;
      +		$datarray["uri"] = $author.":".$guid;
      +
      +		$datarray["type"] = "activity";
      +		$datarray["verb"] = ACTIVITY_LIKE;
      +		$datarray["gravity"] = GRAVITY_LIKE;
      +		$datarray["parent-uri"] = $parent_item["uri"];
      +
      +		$datarray["object-type"] = ACTIVITY_OBJ_NOTE;
      +		$datarray["object"] = self::construct_like_object($importer, $parent_item);
      +
      +		$datarray["body"] = self::construct_like_body($contact, $parent_item, $guid);
      +
      +		$message_id = item_store($datarray);
      +		//print_r($datarray);
       
       		// If we are the origin of the parent we store the original data and notify our followers
       		if($message_id AND $parent_item["origin"]) {
      @@ -751,10 +774,86 @@ print_r($datarray);
       			proc_run("php", "include/notifier.php", "comment-import", $message_id);
       		}
       
      -		return true;
      +		return $message_id;
       	}
       
       	private function import_message($importer, $data) {
      +		$guid = notags(unxmlify($data->guid));
      +		$parent_guid = notags(unxmlify($data->parent_guid));
      +		$text = unxmlify($data->text);
      +		$created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
      +		$author = notags(unxmlify($data->author));
      +		$conversation_guid = notags(unxmlify($data->conversation_guid));
      +
      +		$parent_uri = $author.":".$parent_guid;
      +
      +		$contact = self::get_contact_by_handle($importer["uid"], $author);
      +		if (!$contact) {
      +			logger("cannot find contact: ".$author);
      +			return false;
      +		}
      +
      +		if(($contact["rel"] == CONTACT_IS_FOLLOWER) || ($contact["blocked"]) || ($contact["readonly"])) {
      +			logger("Ignoring this author.");
      +			return false;
      +		}
      +
      +		$conversation = null;
      +
      +		$c = q("SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +			intval($importer["uid"]),
      +			dbesc($conversation_guid)
      +		);
      +		if(count($c))
      +			$conversation = $c[0];
      +		else {
      +			logger("conversation not available.");
      +			return false;
      +		}
      +
      +		$reply = 0;
      +
      +		$body = diaspora2bb($text);
      +		$message_id = $author.":".$guid;
      +
      +		$person = self::get_person_by_handle($author);
      +		if (!$person) {
      +			logger("unable to find author details");
      +			return false;
      +		}
      +
      +		$r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
      +			dbesc($message_id),
      +			intval($importer["uid"])
      +		);
      +		if(count($r)) {
      +			logger("duplicate message already delivered.", LOGGER_DEBUG);
      +			return false;
      +		}
      +
      +		q("INSERT INTO `mail` (`uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`)
      +				VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')",
      +			intval($importer["uid"]),
      +			dbesc($guid),
      +			intval($conversation["id"]),
      +			dbesc($person["name"]),
      +			dbesc($person["photo"]),
      +			dbesc($person["url"]),
      +			intval($contact["id"]),
      +			dbesc($conversation["subject"]),
      +			dbesc($body),
      +			0,
      +			1,
      +			dbesc($message_id),
      +			dbesc($parent_uri),
      +			dbesc($created_at)
      +		);
      +
      +		q("UPDATE `conv` SET `updated` = '%s' WHERE `id` = %d",
      +			dbesc(datetime_convert()),
      +			intval($conversation["id"])
      +		);
      +
       		return true;
       	}
       
      @@ -771,14 +870,445 @@ print_r($datarray);
       	}
       
       	private function import_profile($importer, $data) {
      +		$author = notags(unxmlify($data->author));
      +
      +		$contact = self::get_contact_by_handle($importer["uid"], $author);
      +		if (!$contact)
      +			return;
      +
      +		$name = unxmlify($data->first_name).((strlen($data->last_name)) ? " ".unxmlify($data->last_name) : "");
      +		$image_url = unxmlify($data->image_url);
      +		$birthday = unxmlify($data->birthday);
      +		$location = diaspora2bb(unxmlify($data->location));
      +		$about = diaspora2bb(unxmlify($data->bio));
      +		$gender = unxmlify($data->gender);
      +		$searchable = (unxmlify($data->searchable) == "true");
      +		$nsfw = (unxmlify($data->nsfw) == "true");
      +		$tags = unxmlify($data->tag_string);
      +
      +		$tags = explode("#", $tags);
      +
      +		$keywords = array();
      +		foreach ($tags as $tag) {
      +			$tag = trim(strtolower($tag));
      +			if ($tag != "")
      +				$keywords[] = $tag;
      +		}
      +
      +		$keywords = implode(", ", $keywords);
      +
      +		$handle_parts = explode("@", $author);
      +		$nick = $handle_parts[0];
      +
      +		if($name === "")
      +			$name = $handle_parts[0];
      +
      +		if( preg_match("|^https?://|", $image_url) === 0)
      +			$image_url = "http://".$handle_parts[1].$image_url;
      +
      +		update_contact_avatar($image_url, $importer["uid"], $contact["id"]);
      +
      +		// Generic birthday. We don't know the timezone. The year is irrelevant.
      +
      +		$birthday = str_replace("1000", "1901", $birthday);
      +
      +		if ($birthday != "")
      +			$birthday = datetime_convert("UTC", "UTC", $birthday, "Y-m-d");
      +
      +		// this is to prevent multiple birthday notifications in a single year
      +		// if we already have a stored birthday and the 'm-d' part hasn't changed, preserve the entry, which will preserve the notify year
      +
      +		if(substr($birthday,5) === substr($contact["bd"],5))
      +			$birthday = $contact["bd"];
      +
      +		$r = q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `addr` = '%s', `name-date` = '%s', `bd` = '%s',
      +				`location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `id` = %d AND `uid` = %d",
      +			dbesc($name),
      +			dbesc($nick),
      +			dbesc($author),
      +			dbesc(datetime_convert()),
      +			dbesc($birthday),
      +			dbesc($location),
      +			dbesc($about),
      +			dbesc($keywords),
      +			dbesc($gender),
      +			intval($contact["id"]),
      +			intval($importer["uid"])
      +		);
      +
      +		if ($searchable) {
      +			poco_check($contact["url"], $name, NETWORK_DIASPORA, $image_url, $about, $location, $gender, $keywords, "",
      +				datetime_convert(), 2, $contact["id"], $importer["uid"]);
      +		}
      +
      +		$gcontact = array("url" => $contact["url"], "network" => NETWORK_DIASPORA, "generation" => 2,
      +					"photo" => $image_url, "name" => $name, "location" => $location,
      +					"about" => $about, "birthday" => $birthday, "gender" => $gender,
      +					"addr" => $author, "nick" => $nick, "keywords" => $keywords,
      +					"hide" => !$searchable, "nsfw" => $nsfw);
      +
      +		update_gcontact($gcontact);
      +
       		return true;
       	}
       
       	private function import_request($importer, $data) {
      +print_r($data);
      +/*
      +	$author = unxmlify($xml->author);
      +	$recipient = unxmlify($xml->recipient);
      +
      +	if (!$author || !$recipient)
      +		return;
      +
      +	$contact = self::get_contact_by_handle($importer["uid"],$author);
      +
      +	if($contact) {
      +
      +		// perhaps we were already sharing with this person. Now they're sharing with us.
      +		// That makes us friends.
      +
      +		if($contact["rel"] == CONTACT_IS_FOLLOWER && in_array($importer["page-flags"], array(PAGE_FREELOVE))) {
      +			q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
      +				intval(CONTACT_IS_FRIEND),
      +				intval($contact["id"]),
      +				intval($importer["uid"])
      +			);
      +		}
      +		// send notification
      +
      +		$r = q("SELECT `hide-friends` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1",
      +			intval($importer["uid"])
      +		);
      +
      +		if((count($r)) && (!$r[0]["hide-friends"]) && (!$contact["hidden"]) && intval(get_pconfig($importer["uid"],'system','post_newfriend'))) {
      +			require_once('include/items.php');
      +
      +			$self = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
      +				intval($importer["uid"])
      +			);
      +
      +			// they are not CONTACT_IS_FOLLOWER anymore but that's what we have in the array
      +
      +			if(count($self) && $contact["rel"] == CONTACT_IS_FOLLOWER) {
      +
      +				$arr = array();
      +				$arr["uri"] = $arr["parent-uri"] = item_new_uri($a->get_hostname(), $importer["uid"]);
      +				$arr["uid"] = $importer["uid"];
      +				$arr["contact-id"] = $self[0]["id"];
      +				$arr["wall"] = 1;
      +				$arr["type"] = 'wall';
      +				$arr["gravity"] = 0;
      +				$arr["origin"] = 1;
      +				$arr["author-name"] = $arr["owner-name"] = $self[0]["name"];
      +				$arr["author-link"] = $arr["owner-link"] = $self[0]["url"];
      +				$arr["author-avatar"] = $arr["owner-avatar"] = $self[0]["thumb"];
      +				$arr["verb"] = ACTIVITY_FRIEND;
      +				$arr["object-type"] = ACTIVITY_OBJ_PERSON;
      +
      +				$A = '[url=' . $self[0]["url"] . "]' . $self[0]["name"] . '[/url]';
      +				$B = '[url=' . $contact["url"] . "]' . $contact["name"] . '[/url]';
      +				$BPhoto = '[url=' . $contact["url"] . "]' . '[img]' . $contact["thumb"] . '[/img][/url]';
      +				$arr["body"] =  sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$Bphoto;
      +
      +				$arr["object"] = '' . ACTIVITY_OBJ_PERSON . '' . $contact["name"] . ''
      +					. '' . $contact["url"] . '/' . $contact["name"] . '';
      +				$arr["object"] .= '' . xmlify('' . "\n")
      +;
      +				$arr["object"] .= xmlify('' . "\n");
      +				$arr["object"] .= '' . "\n";
      +				$arr["last-child"] = 1;
      +
      +				$arr["allow_cid"] = $user[0]["allow_cid"];
      +				$arr["allow_gid"] = $user[0]["allow_gid"];
      +				$arr["deny_cid"]  = $user[0]["deny_cid"];
      +				$arr["deny_gid"]  = $user[0]["deny_gid"];
      +
      +				$i = item_store($arr);
      +				if($i)
      +				proc_run('php',"include/notifier.php","activity","$i");
      +
      +			}
      +
      +		}
      +
      +		return;
      +	}
      +
      +	$ret = self::get_person_by_handle($author);
      +
      +
      +	if((! count($ret)) || ($ret["network"] != NETWORK_DIASPORA)) {
      +		logger('diaspora_request: Cannot resolve diaspora handle ' . $author . ' for ' . $recipient);
      +		return;
      +	}
      +
      +	$batch = (($ret["batch"]) ? $ret["batch"] : implode('/', array_slice(explode('/',$ret["url"]),0,3)) . '/receive/public');
      +
      +
      +
      +	$r = q("INSERT INTO `contact` (`uid`, `network`,`addr`,`created`,`url`,`nurl`,`batch`,`name`,`nick`,`photo`,`pubkey`,`notify`,`poll`,`blocked`,`priority`)
      +		VALUES ( %d, '%s', '%s', '%s', '%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,%d) ",
      +		intval($importer["uid"]),
      +		dbesc($ret["network"]),
      +		dbesc($ret["addr"]),
      +		datetime_convert(),
      +		dbesc($ret["url"]),
      +		dbesc(normalise_link($ret["url"])),
      +		dbesc($batch),
      +		dbesc($ret["name"]),
      +		dbesc($ret["nick"]),
      +		dbesc($ret["photo"]),
      +		dbesc($ret["pubkey"]),
      +		dbesc($ret["notify"]),
      +		dbesc($ret["poll"]),
      +		1,
      +		2
      +	);
      +
      +	// find the contact record we just created
      +
      +	$contact_record = diaspora_get_contact_by_handle($importer["uid"],$author);
      +
      +	if(! $contact_record) {
      +		logger('diaspora_request: unable to locate newly created contact record.');
      +		return;
      +	}
      +
      +	$g = q("select def_gid from user where uid = %d limit 1",
      +		intval($importer["uid"])
      +	);
      +	if($g && intval($g[0]["def_gid"])) {
      +		require_once('include/group.php');
      +		group_add_member($importer["uid"],'',$contact_record["id"],$g[0]["def_gid"]);
      +	}
      +
      +	if($importer["page-flags"] == PAGE_NORMAL) {
      +
      +		$hash = random_string() . (string) time();   // Generate a confirm_key
      +
      +		$ret = q("INSERT INTO `intro` ( `uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime` )
      +			VALUES ( %d, %d, %d, %d, '%s', '%s', '%s' )",
      +			intval($importer["uid"]),
      +			intval($contact_record["id"]),
      +			0,
      +			0,
      +			dbesc( t('Sharing notification from Diaspora network')),
      +			dbesc($hash),
      +			dbesc(datetime_convert())
      +		);
      +	}
      +	else {
      +
      +		// automatic friend approval
      +
      +		require_once('include/Photo.php');
      +
      +		update_contact_avatar($contact_record["photo"],$importer["uid"],$contact_record["id"]);
      +
      +		// technically they are sharing with us (CONTACT_IS_SHARING),
      +		// but if our page-type is PAGE_COMMUNITY or PAGE_SOAPBOX
      +		// we are going to change the relationship and make them a follower.
      +
      +		if($importer["page-flags"] == PAGE_FREELOVE)
      +			$new_relation = CONTACT_IS_FRIEND;
      +		else
      +			$new_relation = CONTACT_IS_FOLLOWER;
      +
      +		$r = q("UPDATE `contact` SET `rel` = %d,
      +			`name-date` = '%s',
      +			`uri-date` = '%s',
      +			`blocked` = 0,
      +			`pending` = 0,
      +			`writable` = 1
      +			WHERE `id` = %d
      +			",
      +			intval($new_relation),
      +			dbesc(datetime_convert()),
      +			dbesc(datetime_convert()),
      +			intval($contact_record["id"])
      +		);
      +
      +		$u = q("select * from user where uid = %d limit 1",intval($importer["uid"]));
      +		if($u)
      +			$ret = diaspora_share($u[0],$contact_record);
      +	}
      +*/
       		return true;
       	}
       
       	private function import_reshare($importer, $data) {
      +/*
      +	$guid = notags(unxmlify($xml->guid));
      +	$author = notags(unxmlify($xml->author));
      +
      +
      +	if($author != $msg["author"]) {
      +		logger('diaspora_post: Potential forgery. Message handle is not the same as envelope sender.');
      +		return 202;
      +	}
      +
      +	$contact = diaspora_get_contact_by_handle($importer["uid"],$author);
      +	if(! $contact)
      +		return;
      +
      +	if(! diaspora_post_allow($importer,$contact, false)) {
      +		logger('diaspora_reshare: Ignoring this author: ' . $author . ' ' . print_r($xml,true));
      +		return 202;
      +	}
      +
      +	$message_id = $author . ':' . $guid;
      +	$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +		intval($importer["uid"]),
      +		dbesc($guid)
      +	);
      +	if(count($r)) {
      +		logger('diaspora_reshare: message exists: ' . $guid);
      +		return;
      +	}
      +
      +	$orig_author = notags(unxmlify($xml->root_diaspora_id));
      +	$orig_guid = notags(unxmlify($xml->root_guid));
      +	$orig_url = $a->get_baseurl()."/display/".$orig_guid;
      +
      +	$create_original_post = false;
      +
      +	// Do we already have this item?
      +	$r = q("SELECT `body`, `tag`, `app`, `created`, `plink`, `object`, `object-type`, `uri` FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT 
      +`deleted` AND `body` != '' LIMIT 1",
      +		dbesc($orig_guid),
      +		dbesc(NETWORK_DIASPORA)
      +	);
      +	if(count($r)) {
      +		logger('reshared message '.$orig_guid." reshared by ".$guid.' already exists on system.');
      +
      +		// Maybe it is already a reshared item?
      +		// Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares
      +		require_once('include/api.php');
      +		if (api_share_as_retweet($r[0]))
      +			$r = array();
      +		else {
      +			$body = $r[0]["body"];
      +			$str_tags = $r[0]["tag"];
      +			$app = $r[0]["app"];
      +			$orig_created = $r[0]["created"];
      +			$orig_plink = $r[0]["plink"];
      +			$orig_uri = $r[0]["uri"];
      +			$object = $r[0]["object"];
      +			$objecttype = $r[0]["object-type"];
      +		}
      +	}
      +
      +	if (!count($r)) {
      +		$body = "";
      +		$str_tags = "";
      +		$app = "";
      +
      +		$server = 'https://'.substr($orig_author,strpos($orig_author,'@')+1);
      +		logger('1st try: reshared message '.$orig_guid." reshared by ".$guid.' will be fetched from original server: '.$server);
      +		$item = diaspora_fetch_message($orig_guid, $server);
      +
      +		if (!$item) {
      +			$server = 'https://'.substr($author,strpos($author,'@')+1);
      +			logger('2nd try: reshared message '.$orig_guid." reshared by ".$guid." will be fetched from sharer's server: ".$server);
      +			$item = diaspora_fetch_message($orig_guid, $server);
      +		}
      +		if (!$item) {
      +			$server = 'http://'.substr($orig_author,strpos($orig_author,'@')+1);
      +			logger('3rd try: reshared message '.$orig_guid." reshared by ".$guid.' will be fetched from original server: '.$server);
      +			$item = diaspora_fetch_message($orig_guid, $server);
      +		}
      +		if (!$item) {
      +			$server = 'http://'.substr($author,strpos($author,'@')+1);
      +			logger('4th try: reshared message '.$orig_guid." reshared by ".$guid." will be fetched from sharer's server: ".$server);
      +			$item = diaspora_fetch_message($orig_guid, $server);
      +		}
      +
      +		if ($item) {
      +			$body = $item["body"];
      +			$str_tags = $item["tag"];
      +			$app = $item["app"];
      +			$orig_created = $item["created"];
      +			$orig_author = $item["author"];
      +			$orig_guid = $item["guid"];
      +			$orig_plink = diaspora_plink($orig_author, $orig_guid);
      +			$orig_uri = $orig_author.':'.$orig_guid;
      +			$create_original_post = ($body != "");
      +			$object = $item["object"];
      +			$objecttype = $item["object-type"];
      +		}
      +	}
      +
      +	$plink = diaspora_plink($author, $guid);
      +
      +	$person = find_diaspora_person_by_handle($orig_author);
      +
      +	$created = unxmlify($xml->created_at);
      +	$private = ((unxmlify($xml->public) == 'false') ? 1 : 0);
      +
      +	$datarray = array();
      +
      +	$datarray["uid"] = $importer["uid"];
      +	$datarray["contact-id"] = $contact["id"];
      +	$datarray["wall"] = 0;
      +	$datarray["network"]  = NETWORK_DIASPORA;
      +	$datarray["guid"] = $guid;
      +	$datarray["uri"] = $datarray["parent-uri"] = $message_id;
      +	$datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert('UTC','UTC',$created);
      +	$datarray["private"] = $private;
      +	$datarray["parent"] = 0;
      +	$datarray["plink"] = $plink;
      +	$datarray["owner-name"] = $contact["name"];
      +	$datarray["owner-link"] = $contact["url"];
      +	$datarray["owner-avatar"] = ((x($contact,'thumb')) ? $contact["thumb"] : $contact["photo"]);
      +	      $prefix = share_header($person["name"], $person["url"], ((x($person,'thumb')) ? $person["thumb"] : $person["photo"]), $orig_guid, $orig_created, $orig_url);
      +
      +		$datarray["author-name"] = $contact["name"];
      +		$datarray["author-link"] = $contact["url"];
      +		$datarray["author-avatar"] = $contact["thumb"];
      +		$datarray["body"] = $prefix.$body."[/share]";
      +
      +	$datarray["object"] = json_encode($xml);
      +	$datarray["object-type"] = $objecttype;
      +
      +	$datarray["tag"] = $str_tags;
      +	$datarray["app"]  = $app;
      +
      +	// if empty content it might be a photo that hasn't arrived yet. If a photo arrives, we'll make it visible. (testing)
      +	$datarray["visible"] = ((strlen($body)) ? 1 : 0);
      +
      +	// Store the original item of a reshare
      +	if ($create_original_post) {
      +		require_once("include/Contact.php");
      +
      +		$datarray2 = $datarray;
      +
      +		$datarray2["uid"] = 0;
      +		$datarray2["contact-id"] = get_contact($person["url"], 0);
      +		$datarray2["guid"] = $orig_guid;
      +		$datarray2["uri"] = $datarray2["parent-uri"] = $orig_uri;
      +		$datarray2["changed"] = $datarray2["created"] = $datarray2["edited"] = $datarray2["commented"] = $datarray2["received"] = datetime_convert('UTC','UTC',$orig_created);
      +		$datarray2["parent"] = 0;
      +		$datarray2["plink"] = $orig_plink;
      +
      +		$datarray2["author-name"] = $person["name"];
      +		$datarray2["author-link"] = $person["url"];
      +		$datarray2["author-avatar"] = ((x($person,'thumb')) ? $person["thumb"] : $person["photo"]);
      +		$datarray2["owner-name"] = $datarray2["author-name"];
      +		$datarray2["owner-link"] = $datarray2["author-link"];
      +		$datarray2["owner-avatar"] = $datarray2["author-avatar"];
      +		$datarray2["body"] = $body;
      +		$datarray2["object"] = $object;
      +
      +		DiasporaFetchGuid($datarray2);
      +		$message_id = item_store($datarray2);
      +
      +		logger("Store original item ".$orig_guid." under message id ".$message_id);
      +	}
      +
      +	DiasporaFetchGuid($datarray);
      +	$message_id = item_store($datarray);
      +*/
       		return true;
       	}
       
      @@ -786,8 +1316,131 @@ print_r($datarray);
       		return true;
       	}
       
      -	private function import_status_message($importer, $data) {
      -		return true;
      +	private function import_status_message($importer, $data, $msg, $data2) {
      +
      +		$raw_message = unxmlify($data->raw_message);
      +		$guid = notags(unxmlify($data->guid));
      +		$author = notags(unxmlify($data->author));
      +		$public = notags(unxmlify($data->public));
      +		$created_at = notags(unxmlify($data->created_at));
      +		$provider_display_name = notags(unxmlify($data->provider_display_name));
      +
      +		foreach ($data->children() AS $name => $entry)
      +			if (count($entry->children()))
      +				if (!in_array($name, array("location", "photo", "poll")))
      +					die("Kinder: ".$name."\n");
      +/*
      +		if ($data->location) {
      +			print_r($location);
      +			foreach ($data->location->children() AS $fieldname => $data)
      +				echo $fieldname." - ".$data."\n";
      +			die("Location!\n");
      +		}
      +*/
      +/*
      +		if ($data->photo) {
      +			print_r($data->photo);
      +			foreach ($data->photo->children() AS $fieldname => $data)
      +				echo $fieldname." - ".$data."\n";
      +			die("Photo!\n");
      +		}
      +*/
      +
      +		if ($data->poll) {
      +			print_r($data2);
      +			print_r($data);
      +			die("poll!\n");
      +		}
      +
      +
      +		$contact = self::get_contact_by_handle($importer["uid"], $author);
      +		if (!$contact) {
      +			logger("A Contact for handle ".$author." and user ".$importer["uid"]." was not found");
      +			return false;
      +		}
      +
      +		if (!self::post_allow($importer, $contact, false)) {
      +			logger("Ignoring this author.");
      +			return false;
      +		}
      +/*
      +		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +			intval($importer["uid"]),
      +			dbesc($guid)
      +		);
      +		if(count($r)) {
      +			logger("message exists: ".$guid);
      +			return false;
      +		}
      +*/
      +		$private = (($public == "false") ? 1 : 0);
      +
      +		$body = diaspora2bb($raw_message);
      +
      +		$datarray = array();
      +
      +		if($data->photo->remote_photo_path AND $data->photo->remote_photo_name)
      +			$datarray["object-type"] = ACTIVITY_OBJ_PHOTO;
      +		else {
      +			$datarray["object-type"] = ACTIVITY_OBJ_NOTE;
      +			// Add OEmbed and other information to the body
      +			if (!self::is_redmatrix($contact["url"]))
      +				$body = add_page_info_to_body($body, false, true);
      +		}
      +
      +		$str_tags = "";
      +
      +		$cnt = preg_match_all("/@\[url=(.*?)\[\/url\]/ism", $body, $matches, PREG_SET_ORDER);
      +		if($cnt) {
      +			foreach($matches as $mtch) {
      +				if(strlen($str_tags))
      +					$str_tags .= ",";
      +				$str_tags .= "@[url=".$mtch[1]."[/url]";
      +			}
      +		}
      +		$plink = self::plink($author, $guid);
      +
      +		$datarray["uid"] = $importer["uid"];
      +		$datarray["contact-id"] = $contact["id"];
      +		$datarray["network"] = NETWORK_DIASPORA;
      +
      +		$datarray["author-name"] = $contact["name"];
      +		$datarray["author-link"] = $contact["url"];
      +		$datarray["author-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]);
      +
      +		$datarray["owner-name"] = $datarray["author-name"];
      +		$datarray["owner-link"] = $datarray["author-link"];
      +		$datarray["owner-avatar"] = $datarray["author-avatar"];
      +
      +		$datarray["guid"] = $guid;
      +		$datarray["uri"] = $datarray["parent-uri"] = $author.":".$guid;
      +
      +		$datarray["verb"] = ACTIVITY_POST;
      +		$datarray["gravity"] = GRAVITY_PARENT;
      +
      +		$datarray["object"] = json_encode($data);
      +
      +		$datarray["body"] = $body;
      +
      +		$datarray["tag"] = $str_tags;
      +		if ($provider_display_name != "")
      +			$datarray["app"] = $provider_display_name;
      +
      +		$datarray["plink"] = $plink;
      +		$datarray["private"] = $private;
      +		$datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert("UTC", "UTC", $created_at);
      +
      +		// if empty content it might be a photo that hasn't arrived yet. If a photo arrives, we'll make it visible.
      +
      +		$datarray["visible"] = ((strlen($body)) ? 1 : 0);
      +
      +		self::fetch_guid($datarray);
      +		//$message_id = item_store($datarray);
      +		print_r($datarray);
      +
      +		logger("Stored item with message id ".$message_id, LOGGER_DEBUG);
      +
      +		return $message_id;
       	}
       }
       ?>
      
      From 8bcbff30e0984f35bb3d36c22a2edbce437d6369 Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Mon, 29 Feb 2016 23:54:25 +0100
      Subject: [PATCH 018/485] Account deletion should work, status messages works -
       reshares are half done.
      
      ---
       include/diaspora2.php | 519 ++++++++++++++++++++++++++----------------
       1 file changed, 328 insertions(+), 191 deletions(-)
      
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index 578a496c0a..59514ebc76 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -58,7 +58,7 @@ class diaspora {
       
       		// Use a dummy importer to import the data for the public copy
       		$importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE);
      -		self::dispatch($importer,$msg);
      +		$item_id = self::dispatch($importer,$msg);
       
       		// Now distribute it to the followers
       		$r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN
      @@ -74,6 +74,8 @@ class diaspora {
       			}
       		} else
       			logger("No subscribers for ".$msg["author"]." ".print_r($msg, true));
      +
      +		return $item_id;
       	}
       
       	public static function dispatch($importer, $msg) {
      @@ -82,7 +84,7 @@ class diaspora {
       		// This will often be different with relayed messages (for example "like" and "comment")
       		$sender = $msg["author"];
       
      -		if (!diaspora::valid_posting($msg, $fields, $data2)) {
      +		if (!diaspora::valid_posting($msg, $fields)) {
       			logger("Invalid posting");
       			return false;
       		}
      @@ -90,8 +92,9 @@ class diaspora {
       		$type = $fields->getName();
       
       		switch ($type) {
      -			case "account_deletion": // Not implemented
      -				return self::import_account_deletion($importer, $fields);
      +			case "account_deletion":
      +				return true;
      +				//return self::import_account_deletion($importer, $fields);
       
       			case "comment":
       				return true;
      @@ -131,7 +134,8 @@ class diaspora {
       				return self::import_retraction($importer, $fields);
       
       			case "status_message":
      -				return self::import_status_message($importer, $fields, $msg, $data2);
      +				return true;
      +				//return self::import_status_message($importer, $fields, $msg, $data2);
       
       			default:
       				logger("Unknown message type ".$type);
      @@ -152,7 +156,7 @@ class diaspora {
       	 *
       	 * @return bool Is the posting valid?
       	 */
      -	private function valid_posting($msg, &$fields, &$element) {
      +	private function valid_posting($msg, &$fields) {
       
       		$data = parse_xml_string($msg["message"], false);
       
      @@ -554,7 +558,16 @@ class diaspora {
       	}
       
       	private function import_account_deletion($importer, $data) {
      -		// Not supported by now. We are waiting for sample data
      +		$author = notags(unxmlify($data->author));
      +
      +		$contact = self::get_contact_by_handle($importer["uid"], $author);
      +		if (!$contact) {
      +			logger("cannot find contact for sender: ".$sender);
      +			return false;
      +		}
      +
      +		// We now remove the contact
      +		contact_remove($contact["id"]);
       		return true;
       	}
       
      @@ -647,6 +660,167 @@ class diaspora {
       	}
       
       	private function import_conversation($importer, $data) {
      +/*
      +        $guid = notags(unxmlify($xml->guid));
      +        $subject = notags(unxmlify($xml->subject));
      +        $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
      +        $participant_handles = notags(unxmlify($xml->participant_handles));
      +        $created_at = datetime_convert('UTC','UTC',notags(unxmlify($xml->created_at)));
      +
      +        $parent_uri = $diaspora_handle . ':' . $guid;
      +
      +        $messages = $xml->message;
      +
      +        if(! count($messages)) {
      +                logger('diaspora_conversation: empty conversation');
      +                return;
      +        }
      +
      +        $contact = diaspora_get_contact_by_handle($importer['uid'],$msg['author']);
      +        if(! $contact) {
      +                logger('diaspora_conversation: cannot find contact: ' . $msg['author']);
      +                return;
      +        }
      +
      +        if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) {
      +                logger('diaspora_conversation: Ignoring this author.');
      +                return 202;
      +        }
      +
      +        $conversation = null;
      +
      +        $c = q("select * from conv where uid = %d and guid = '%s' limit 1",
      +                intval($importer['uid']),
      +                dbesc($guid)
      +        );
      +        if(count($c))
      +                $conversation = $c[0];
      +        else {
      +                $r = q("insert into conv (uid,guid,creator,created,updated,subject,recips) values(%d, '%s', '%s', '%s', '%s', '%s', '%s') ",
      +                        intval($importer['uid']),
      +                        dbesc($guid),
      +                        dbesc($diaspora_handle),
      +                        dbesc(datetime_convert('UTC','UTC',$created_at)),
      +                        dbesc(datetime_convert()),
      +                        dbesc($subject),
      +                        dbesc($participant_handles)
      +                );
      +                if($r)
      +                        $c = q("select * from conv where uid = %d and guid = '%s' limit 1",
      +                intval($importer['uid']),
      +            dbesc($guid)
      +        );
      +            if(count($c))
      +            $conversation = $c[0];
      +        }
      +        if(! $conversation) {
      +                logger('diaspora_conversation: unable to create conversation.');
      +                return;
      +        }
      +
      +        foreach($messages as $mesg) {
      +
      +                $reply = 0;
      +
      +                $msg_guid = notags(unxmlify($mesg->guid));
      +                $msg_parent_guid = notags(unxmlify($mesg->parent_guid));
      +                $msg_parent_author_signature = notags(unxmlify($mesg->parent_author_signature));
      +                $msg_author_signature = notags(unxmlify($mesg->author_signature));
      +                $msg_text = unxmlify($mesg->text);
      +                $msg_created_at = datetime_convert('UTC','UTC',notags(unxmlify($mesg->created_at)));
      +                $msg_diaspora_handle = notags(unxmlify($mesg->diaspora_handle));
      +                $msg_conversation_guid = notags(unxmlify($mesg->conversation_guid));
      +                if($msg_conversation_guid != $guid) {
      +                        logger('diaspora_conversation: message conversation guid does not belong to the current conversation. ' . $xml);
      +                        continue;
      +                }
      +
      +                $body = diaspora2bb($msg_text);
      +                $message_id = $msg_diaspora_handle . ':' . $msg_guid;
      +
      +                $author_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid;
      +
      +                $author_signature = base64_decode($msg_author_signature);
      +
      +                if(strcasecmp($msg_diaspora_handle,$msg['author']) == 0) {
      +                        $person = $contact;
      +                        $key = $msg['key'];
      +                }
      +                else {
      +                        $person = find_diaspora_person_by_handle($msg_diaspora_handle); 
      +
      +                        if(is_array($person) && x($person,'pubkey'))
      +                                $key = $person['pubkey'];
      +                        else {
      +                                logger('diaspora_conversation: unable to find author details');
      +                                continue;
      +                        }
      +                }
      +
      +                if(! rsa_verify($author_signed_data,$author_signature,$key,'sha256')) {
      +                        logger('diaspora_conversation: verification failed.');
      +                        continue;
      +                }
      +
      +                if($msg_parent_author_signature) {
      +                        $owner_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid;
      +
      +                        $parent_author_signature = base64_decode($msg_parent_author_signature);
      +
      +                        $key = $msg['key'];
      +
      +                        if(! rsa_verify($owner_signed_data,$parent_author_signature,$key,'sha256')) {
      +                                logger('diaspora_conversation: owner verification failed.');
      +                                continue;
      +                        }
      +                }
      +
      +                $r = q("select id from mail where `uri` = '%s' limit 1",
      +                        dbesc($message_id)
      +                );
      +                if(count($r)) {
      +                        logger('diaspora_conversation: duplicate message already delivered.', LOGGER_DEBUG);
      +                        continue;
      +                }
      +
      +                q("insert into mail ( `uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`) values ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')",
      +                        intval($importer['uid']),
      +                        dbesc($msg_guid),
      +                        intval($conversation['id']),
      +                        dbesc($person['name']),
      +                        dbesc($person['photo']),
      +                        dbesc($person['url']),
      +                        intval($contact['id']),
      +                        dbesc($subject),
      +                        dbesc($body),
      +                        0,
      +                        0,
      +                        dbesc($message_id),
      +                        dbesc($parent_uri),
      +                        dbesc($msg_created_at)
      +                );
      +
      +                q("update conv set updated = '%s' where id = %d",
      +                        dbesc(datetime_convert()),
      +                        intval($conversation['id'])
      +                );
      +
      +                notification(array(
      +                        'type' => NOTIFY_MAIL,
      +                        'notify_flags' => $importer['notify-flags'],
      +                        'language' => $importer['language'],
      +                        'to_name' => $importer['username'],
      +                        'to_email' => $importer['email'],
      +                        'uid' =>$importer['uid'],
      +                        'item' => array('subject' => $subject, 'body' => $body),
      +                        'source_name' => $person['name'],
      +                        'source_link' => $person['url'],
      +                        'source_photo' => $person['thumb'],
      +                        'verb' => ACTIVITY_POST,
      +                        'otype' => 'mail'
      +                ));
      +        }
      +*/
       		return true;
       	}
       
      @@ -858,14 +1032,17 @@ EOT;
       	}
       
       	private function import_participation($importer, $data) {
      +		// I'm not sure if we can fully support this message type
       		return true;
       	}
       
       	private function import_photo($importer, $data) {
      +		// There doesn't seem to be a reason for this function, since the photo data is transmitted in the status message as well
       		return true;
       	}
       
       	private function import_poll_participation($importer, $data) {
      +		// We don't support polls by now
       		return true;
       	}
       
      @@ -1138,185 +1315,156 @@ print_r($data);
       	}
       
       	private function import_reshare($importer, $data) {
      +		$root_author = notags(unxmlify($data->root_author));
      +		$root_guid = notags(unxmlify($data->root_guid));
      +		$guid = notags(unxmlify($data->guid));
      +		$author = notags(unxmlify($data->author));
      +		$public = notags(unxmlify($data->public));
      +		$created_at = notags(unxmlify($data->created_at));
      +
      +		$contact = self::get_contact_by_handle($importer["uid"], $author);
      +		if (!$contact)
      +			return false;
      +
      +		if (!self::post_allow($importer, $contact, false)) {
      +			logger("Ignoring this author: ".$author." ".print_r($data,true));
      +			return false;
      +		}
       /*
      -	$guid = notags(unxmlify($xml->guid));
      -	$author = notags(unxmlify($xml->author));
      -
      -
      -	if($author != $msg["author"]) {
      -		logger('diaspora_post: Potential forgery. Message handle is not the same as envelope sender.');
      -		return 202;
      -	}
      -
      -	$contact = diaspora_get_contact_by_handle($importer["uid"],$author);
      -	if(! $contact)
      -		return;
      -
      -	if(! diaspora_post_allow($importer,$contact, false)) {
      -		logger('diaspora_reshare: Ignoring this author: ' . $author . ' ' . print_r($xml,true));
      -		return 202;
      -	}
      -
      -	$message_id = $author . ':' . $guid;
      -	$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      -		intval($importer["uid"]),
      -		dbesc($guid)
      -	);
      -	if(count($r)) {
      -		logger('diaspora_reshare: message exists: ' . $guid);
      -		return;
      -	}
      -
      -	$orig_author = notags(unxmlify($xml->root_diaspora_id));
      -	$orig_guid = notags(unxmlify($xml->root_guid));
      -	$orig_url = $a->get_baseurl()."/display/".$orig_guid;
      -
      -	$create_original_post = false;
      -
      -	// Do we already have this item?
      -	$r = q("SELECT `body`, `tag`, `app`, `created`, `plink`, `object`, `object-type`, `uri` FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT 
      -`deleted` AND `body` != '' LIMIT 1",
      -		dbesc($orig_guid),
      -		dbesc(NETWORK_DIASPORA)
      -	);
      -	if(count($r)) {
      -		logger('reshared message '.$orig_guid." reshared by ".$guid.' already exists on system.');
      -
      -		// Maybe it is already a reshared item?
      -		// Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares
      -		require_once('include/api.php');
      -		if (api_share_as_retweet($r[0]))
      -			$r = array();
      -		else {
      -			$body = $r[0]["body"];
      -			$str_tags = $r[0]["tag"];
      -			$app = $r[0]["app"];
      -			$orig_created = $r[0]["created"];
      -			$orig_plink = $r[0]["plink"];
      -			$orig_uri = $r[0]["uri"];
      -			$object = $r[0]["object"];
      -			$objecttype = $r[0]["object-type"];
      +		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +			intval($importer["uid"]),
      +			dbesc($guid)
      +		);
      +		if(count($r)) {
      +			logger("message exists: ".$guid);
      +			return;
       		}
      -	}
      +*/
      +		$orig_author = $root_author;
      +		$orig_guid = $root_guid;
      +		$orig_url = App::get_baseurl()."/display/".$guid;
       
      -	if (!count($r)) {
      -		$body = "";
      -		$str_tags = "";
      -		$app = "";
      +		$create_original_post = false;
       
      -		$server = 'https://'.substr($orig_author,strpos($orig_author,'@')+1);
      -		logger('1st try: reshared message '.$orig_guid." reshared by ".$guid.' will be fetched from original server: '.$server);
      -		$item = diaspora_fetch_message($orig_guid, $server);
      +		// Do we already have this item?
      +		$r = q("SELECT `body`, `tag`, `app`, `created`, `plink`, `object`, `object-type`, `uri` FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1",
      +			dbesc($orig_guid),
      +			dbesc(NETWORK_DIASPORA)
      +		);
      +		if(count($r)) {
      +			logger("reshared message ".$orig_guid." reshared by ".$guid." already exists on system.");
       
      -		if (!$item) {
      -			$server = 'https://'.substr($author,strpos($author,'@')+1);
      -			logger('2nd try: reshared message '.$orig_guid." reshared by ".$guid." will be fetched from sharer's server: ".$server);
      -			$item = diaspora_fetch_message($orig_guid, $server);
      -		}
      -		if (!$item) {
      -			$server = 'http://'.substr($orig_author,strpos($orig_author,'@')+1);
      -			logger('3rd try: reshared message '.$orig_guid." reshared by ".$guid.' will be fetched from original server: '.$server);
      -			$item = diaspora_fetch_message($orig_guid, $server);
      -		}
      -		if (!$item) {
      -			$server = 'http://'.substr($author,strpos($author,'@')+1);
      -			logger('4th try: reshared message '.$orig_guid." reshared by ".$guid." will be fetched from sharer's server: ".$server);
      -			$item = diaspora_fetch_message($orig_guid, $server);
      +			// Maybe it is already a reshared item?
      +			// Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares
      +			require_once('include/api.php');
      +			if (api_share_as_retweet($r[0]))
      +				$r = array();
      +			else {
      +				$body = $r[0]["body"];
      +				$str_tags = $r[0]["tag"];
      +				$app = $r[0]["app"];
      +				$orig_created = $r[0]["created"];
      +				$orig_plink = $r[0]["plink"];
      +				$orig_uri = $r[0]["uri"];
      +				$object = $r[0]["object"];
      +				$objecttype = $r[0]["object-type"];
      +			}
       		}
       
      -		if ($item) {
      -			$body = $item["body"];
      -			$str_tags = $item["tag"];
      -			$app = $item["app"];
      -			$orig_created = $item["created"];
      -			$orig_author = $item["author"];
      -			$orig_guid = $item["guid"];
      -			$orig_plink = diaspora_plink($orig_author, $orig_guid);
      -			$orig_uri = $orig_author.':'.$orig_guid;
      -			$create_original_post = ($body != "");
      -			$object = $item["object"];
      -			$objecttype = $item["object-type"];
      +/* @todo
      +		if (!count($r)) {
      +			$body = "";
      +			$str_tags = "";
      +			$app = "";
      +
      +			$server = 'https://'.substr($orig_author,strpos($orig_author,'@')+1);
      +			logger('1st try: reshared message '.$orig_guid." reshared by ".$guid.' will be fetched from original server: '.$server);
      +			$item = self::fetch_message($orig_guid, $server);
      +
      +			if (!$item) {
      +				$server = 'https://'.substr($author,strpos($author,'@')+1);
      +				logger('2nd try: reshared message '.$orig_guid." reshared by ".$guid." will be fetched from sharer's server: ".$server);
      +				$item = diaspora_fetch_message($orig_guid, $server);
      +			}
      +			if (!$item) {
      +				$server = 'http://'.substr($orig_author,strpos($orig_author,'@')+1);
      +				logger('3rd try: reshared message '.$orig_guid." reshared by ".$guid.' will be fetched from original server: '.$server);
      +				$item = diaspora_fetch_message($orig_guid, $server);
      +			}
      +			if (!$item) {
      +				$server = 'http://'.substr($author,strpos($author,'@')+1);
      +				logger('4th try: reshared message '.$orig_guid." reshared by ".$guid." will be fetched from sharer's server: ".$server);
      +				$item = diaspora_fetch_message($orig_guid, $server);
      +			}
      +
      +			if ($item) {
      +				$body = $item["body"];
      +				$str_tags = $item["tag"];
      +				$app = $item["app"];
      +				$orig_created = $item["created"];
      +				$orig_author = $item["author"];
      +				$orig_guid = $item["guid"];
      +				$orig_plink = diaspora_plink($orig_author, $orig_guid);
      +				$orig_uri = $orig_author.":".$orig_guid;
      +				$create_original_post = ($body != "");
      +				$object = $item["object"];
      +				$objecttype = $item["object-type"];
      +			}
       		}
      -	}
      +*/
      +		$plink = self::plink($author, $guid);
       
      -	$plink = diaspora_plink($author, $guid);
      +		$person = self::get_person_by_handle($orig_author);
       
      -	$person = find_diaspora_person_by_handle($orig_author);
      +		$private = (($public == "false") ? 1 : 0);
       
      -	$created = unxmlify($xml->created_at);
      -	$private = ((unxmlify($xml->public) == 'false') ? 1 : 0);
      +		$datarray = array();
       
      -	$datarray = array();
      -
      -	$datarray["uid"] = $importer["uid"];
      -	$datarray["contact-id"] = $contact["id"];
      -	$datarray["wall"] = 0;
      -	$datarray["network"]  = NETWORK_DIASPORA;
      -	$datarray["guid"] = $guid;
      -	$datarray["uri"] = $datarray["parent-uri"] = $message_id;
      -	$datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert('UTC','UTC',$created);
      -	$datarray["private"] = $private;
      -	$datarray["parent"] = 0;
      -	$datarray["plink"] = $plink;
      -	$datarray["owner-name"] = $contact["name"];
      -	$datarray["owner-link"] = $contact["url"];
      -	$datarray["owner-avatar"] = ((x($contact,'thumb')) ? $contact["thumb"] : $contact["photo"]);
      -	      $prefix = share_header($person["name"], $person["url"], ((x($person,'thumb')) ? $person["thumb"] : $person["photo"]), $orig_guid, $orig_created, $orig_url);
      +		$datarray["uid"] = $importer["uid"];
      +		$datarray["contact-id"] = $contact["id"];
      +		$datarray["network"]  = NETWORK_DIASPORA;
       
       		$datarray["author-name"] = $contact["name"];
       		$datarray["author-link"] = $contact["url"];
      -		$datarray["author-avatar"] = $contact["thumb"];
      +		$datarray["author-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]);
      +
      +		$datarray["owner-name"] = $datarray["author-name"];
      +		$datarray["owner-link"] = $datarray["author-link"];
      +		$datarray["owner-avatar"] = $datarray["author-avatar"];
      +
      +		$datarray["guid"] = $guid;
      +		$datarray["uri"] = $datarray["parent-uri"] = $author.":".$guid;
      +
      +		$datarray["verb"] = ACTIVITY_POST;
      +		$datarray["gravity"] = GRAVITY_PARENT;
      +
      +		$datarray["object"] = json_encode($data);
      +
      +		$prefix = share_header($person["name"], $person["url"], ((x($person,'thumb')) ? $person["thumb"] : $person["photo"]),
      +					$orig_guid, $orig_created, $orig_url);
       		$datarray["body"] = $prefix.$body."[/share]";
       
      -	$datarray["object"] = json_encode($xml);
      -	$datarray["object-type"] = $objecttype;
      +		$datarray["tag"] = $str_tags;
      +		$datarray["app"]  = $app;
       
      -	$datarray["tag"] = $str_tags;
      -	$datarray["app"]  = $app;
      +		$datarray["plink"] = $plink;
      +		$datarray["private"] = $private;
      +		$datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert("UTC", "UTC", $created_at);
       
      -	// if empty content it might be a photo that hasn't arrived yet. If a photo arrives, we'll make it visible. (testing)
      -	$datarray["visible"] = ((strlen($body)) ? 1 : 0);
      +		$datarray["object-type"] = $objecttype;
       
      -	// Store the original item of a reshare
      -	if ($create_original_post) {
      -		require_once("include/Contact.php");
      +		self::fetch_guid($datarray);
      +		//$message_id = item_store($datarray);
      +		print_r($datarray);
       
      -		$datarray2 = $datarray;
      -
      -		$datarray2["uid"] = 0;
      -		$datarray2["contact-id"] = get_contact($person["url"], 0);
      -		$datarray2["guid"] = $orig_guid;
      -		$datarray2["uri"] = $datarray2["parent-uri"] = $orig_uri;
      -		$datarray2["changed"] = $datarray2["created"] = $datarray2["edited"] = $datarray2["commented"] = $datarray2["received"] = datetime_convert('UTC','UTC',$orig_created);
      -		$datarray2["parent"] = 0;
      -		$datarray2["plink"] = $orig_plink;
      -
      -		$datarray2["author-name"] = $person["name"];
      -		$datarray2["author-link"] = $person["url"];
      -		$datarray2["author-avatar"] = ((x($person,'thumb')) ? $person["thumb"] : $person["photo"]);
      -		$datarray2["owner-name"] = $datarray2["author-name"];
      -		$datarray2["owner-link"] = $datarray2["author-link"];
      -		$datarray2["owner-avatar"] = $datarray2["author-avatar"];
      -		$datarray2["body"] = $body;
      -		$datarray2["object"] = $object;
      -
      -		DiasporaFetchGuid($datarray2);
      -		$message_id = item_store($datarray2);
      -
      -		logger("Store original item ".$orig_guid." under message id ".$message_id);
      -	}
      -
      -	DiasporaFetchGuid($datarray);
      -	$message_id = item_store($datarray);
      -*/
      -		return true;
      +		return $message_id;
       	}
       
       	private function import_retraction($importer, $data) {
       		return true;
       	}
       
      -	private function import_status_message($importer, $data, $msg, $data2) {
      +	private function import_status_message($importer, $data) {
       
       		$raw_message = unxmlify($data->raw_message);
       		$guid = notags(unxmlify($data->guid));
      @@ -1325,34 +1473,6 @@ print_r($data);
       		$created_at = notags(unxmlify($data->created_at));
       		$provider_display_name = notags(unxmlify($data->provider_display_name));
       
      -		foreach ($data->children() AS $name => $entry)
      -			if (count($entry->children()))
      -				if (!in_array($name, array("location", "photo", "poll")))
      -					die("Kinder: ".$name."\n");
      -/*
      -		if ($data->location) {
      -			print_r($location);
      -			foreach ($data->location->children() AS $fieldname => $data)
      -				echo $fieldname." - ".$data."\n";
      -			die("Location!\n");
      -		}
      -*/
      -/*
      -		if ($data->photo) {
      -			print_r($data->photo);
      -			foreach ($data->photo->children() AS $fieldname => $data)
      -				echo $fieldname." - ".$data."\n";
      -			die("Photo!\n");
      -		}
      -*/
      -
      -		if ($data->poll) {
      -			print_r($data2);
      -			print_r($data);
      -			die("poll!\n");
      -		}
      -
      -
       		$contact = self::get_contact_by_handle($importer["uid"], $author);
       		if (!$contact) {
       			logger("A Contact for handle ".$author." and user ".$importer["uid"]." was not found");
      @@ -1363,7 +1483,7 @@ print_r($data);
       			logger("Ignoring this author.");
       			return false;
       		}
      -/*
      +
       		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
       			intval($importer["uid"]),
       			dbesc($guid)
      @@ -1372,11 +1492,26 @@ print_r($data);
       			logger("message exists: ".$guid);
       			return false;
       		}
      -*/
      +
      +		/// @todo enable support for polls
      +		// if ($data->poll) {
      +		//	print_r($data->poll);
      +		//	die("poll!\n");
      +		// }
      +
      +		$address = array();
      +		if ($data->location)
      +			foreach ($data->location->children() AS $fieldname => $data)
      +				$address[$fieldname] = notags(unxmlify($data));
      +
       		$private = (($public == "false") ? 1 : 0);
       
       		$body = diaspora2bb($raw_message);
       
      +		if ($data->photo)
      +			for ($i = 0; $i < count($data->photo); $i++)
      +				$body = "[img]".$data->photo[$i]->remote_photo_path.$data->photo[$i]->remote_photo_name."[/img]\n".$body;
      +
       		$datarray = array();
       
       		if($data->photo->remote_photo_path AND $data->photo->remote_photo_name)
      @@ -1430,9 +1565,11 @@ print_r($data);
       		$datarray["private"] = $private;
       		$datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert("UTC", "UTC", $created_at);
       
      -		// if empty content it might be a photo that hasn't arrived yet. If a photo arrives, we'll make it visible.
      +		if (isset($address["address"]))
      +			$datarray["location"] = $address["address"];
       
      -		$datarray["visible"] = ((strlen($body)) ? 1 : 0);
      +		if (isset($address["lat"]) AND isset($address["lng"]))
      +			$datarray["coord"] = $address["lat"]." ".$address["lng"];
       
       		self::fetch_guid($datarray);
       		//$message_id = item_store($datarray);
      
      From cb900c5742628ad437b7fc2d06d10e9999a06aaf Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Tue, 1 Mar 2016 07:57:26 +0100
      Subject: [PATCH 019/485] Reshares could work now, code is cleaned
      
      ---
       include/diaspora2.php | 356 +++++++++++++++++-------------------------
       1 file changed, 147 insertions(+), 209 deletions(-)
      
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index 59514ebc76..a1297c5193 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -4,11 +4,14 @@
        * @brief The implementation of the diaspora protocol
        */
       
      +require_once("include/items.php");
       require_once("include/bb2diaspora.php");
       require_once("include/Scrape.php");
       require_once("include/Contact.php");
       require_once("include/Photo.php");
       require_once("include/socgraph.php");
      +require_once("include/group.php");
      +require_once("include/api.php");
       
       class xml {
       	function from_array($array, &$xml) {
      @@ -380,6 +383,64 @@ class diaspora {
       		return false;
       	}
       
      +	private function post_allow($importer, $contact, $is_comment = false) {
      +
      +		// perhaps we were already sharing with this person. Now they're sharing with us.
      +		// That makes us friends.
      +		// Normally this should have handled by getting a request - but this could get lost
      +		if($contact["rel"] == CONTACT_IS_FOLLOWER && in_array($importer["page-flags"], array(PAGE_FREELOVE))) {
      +			q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
      +				intval(CONTACT_IS_FRIEND),
      +				intval($contact["id"]),
      +				intval($importer["uid"])
      +			);
      +			$contact["rel"] = CONTACT_IS_FRIEND;
      +			logger("defining user ".$contact["nick"]." as friend");
      +		}
      +
      +		if(($contact["blocked"]) || ($contact["readonly"]) || ($contact["archive"]))
      +			return false;
      +		if($contact["rel"] == CONTACT_IS_SHARING || $contact["rel"] == CONTACT_IS_FRIEND)
      +			return true;
      +		if($contact["rel"] == CONTACT_IS_FOLLOWER)
      +			if(($importer["page-flags"] == PAGE_COMMUNITY) OR $is_comment)
      +				return true;
      +
      +		// Messages for the global users are always accepted
      +		if ($importer["uid"] == 0)
      +			return true;
      +
      +		return false;
      +	}
      +
      +	private function get_allowed_contact_by_handle($importer, $handle, $is_comment = false) {
      +		$contact = self::get_contact_by_handle($importer["uid"], $handle);
      +		if (!$contact) {
      +			logger("A Contact for handle ".$handle." and user ".$importer["uid"]." was not found");
      +			return false;
      +		}
      +
      +		if (!self::post_allow($importer, $contact, false)) {
      +			logger("The handle: ".$handle." is not allowed to post to user ".$importer["uid"]);
      +			return false;
      +		}
      +		return $contact;
      +	}
      +
      +	private function message_exists($uid, $guid) {
      +		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +			intval($uid),
      +			dbesc($guid)
      +		);
      +
      +		if(count($r)) {
      +			logger("message ".$guid." already exists for user ".$uid);
      +			return false;
      +		}
      +
      +		return true;
      +	}
      +
       	private function fetch_guid($item) {
       		preg_replace_callback("&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi",
       			function ($match) use ($item){
      @@ -388,8 +449,6 @@ class diaspora {
       	}
       
       	private function fetch_guid_sub($match, $item) {
      -		$a = get_app();
      -
       		if (!self::store_by_guid($match[1], $item["author-link"]))
       			self::store_by_guid($match[1], $item["owner-link"]);
       	}
      @@ -453,36 +512,6 @@ class diaspora {
       		return $msg;
       	}
       
      -	private function post_allow($importer, $contact, $is_comment = false) {
      -
      -		// perhaps we were already sharing with this person. Now they're sharing with us.
      -		// That makes us friends.
      -		// Normally this should have handled by getting a request - but this could get lost
      -		if($contact["rel"] == CONTACT_IS_FOLLOWER && in_array($importer["page-flags"], array(PAGE_FREELOVE))) {
      -			q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
      -				intval(CONTACT_IS_FRIEND),
      -				intval($contact["id"]),
      -				intval($importer["uid"])
      -			);
      -			$contact["rel"] = CONTACT_IS_FRIEND;
      -			logger("defining user ".$contact["nick"]." as friend");
      -		}
      -
      -		if(($contact["blocked"]) || ($contact["readonly"]) || ($contact["archive"]))
      -			return false;
      -		if($contact["rel"] == CONTACT_IS_SHARING || $contact["rel"] == CONTACT_IS_FRIEND)
      -			return true;
      -		if($contact["rel"] == CONTACT_IS_FOLLOWER)
      -			if(($importer["page-flags"] == PAGE_COMMUNITY) OR $is_comment)
      -				return true;
      -
      -		// Messages for the global users are always accepted
      -		if ($importer["uid"] == 0)
      -			return true;
      -
      -		return false;
      -	}
      -
       	private function fetch_parent_item($uid, $guid, $author, $contact) {
       		$r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `origin`,
       				`author-name`, `author-link`, `author-avatar`,
      @@ -562,7 +591,7 @@ class diaspora {
       
       		$contact = self::get_contact_by_handle($importer["uid"], $author);
       		if (!$contact) {
      -			logger("cannot find contact for sender: ".$sender);
      +			logger("cannot find contact for author: ".$author);
       			return false;
       		}
       
      @@ -577,25 +606,12 @@ class diaspora {
       		$text = unxmlify($data->text);
       		$author = notags(unxmlify($data->author));
       
      -		$contact = self::get_contact_by_handle($importer["uid"], $sender);
      -		if (!$contact) {
      -			logger("cannot find contact for sender: ".$sender);
      +		$contact = self::get_allowed_contact_by_handle($importer, $sender, true);
      +		if (!$contact)
       			return false;
      -		}
       
      -		if (!self::post_allow($importer,$contact, true)) {
      -			logger("Ignoring the author ".$sender);
      +		if (self::message_exists($importer["uid"], $guid))
       			return false;
      -		}
      -
      -		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      -			intval($importer["uid"]),
      -			dbesc($guid)
      -		);
      -		if(count($r)) {
      -			logger("The comment already exists: ".$guid);
      -			return false;
      -		}
       
       		$parent_item = self::fetch_parent_item($importer["uid"], $parent_guid, $author, $contact);
       		if (!$parent_item)
      @@ -676,16 +692,9 @@ class diaspora {
                       return;
               }
       
      -        $contact = diaspora_get_contact_by_handle($importer['uid'],$msg['author']);
      -        if(! $contact) {
      -                logger('diaspora_conversation: cannot find contact: ' . $msg['author']);
      -                return;
      -        }
      -
      -        if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) {
      -                logger('diaspora_conversation: Ignoring this author.');
      -                return 202;
      -        }
      +		$contact = self::get_allowed_contact_by_handle($importer, $sender, true)
      +		if (!$contact)
      +			return false;
       
               $conversation = null;
       
      @@ -871,25 +880,12 @@ EOT;
       			return false;
       		}
       
      -		$contact = self::get_contact_by_handle($importer["uid"], $sender);
      -		if (!$contact) {
      -			logger("cannot find contact for sender: ".$sender);
      +		$contact = self::get_allowed_contact_by_handle($importer, $sender, true);
      +		if (!$contact)
       			return false;
      -		}
       
      -		if (!self::post_allow($importer,$contact, true)) {
      -			logger("Ignoring the author ".$sender);
      +		if (self::message_exists($importer["uid"], $guid))
       			return false;
      -		}
      -
      -		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      -			intval($importer["uid"]),
      -			dbesc($guid)
      -		);
      -		if(count($r)) {
      -			logger("The like already exists: ".$guid);
      -			return false;
      -		}
       
       		$parent_item = self::fetch_parent_item($importer["uid"], $parent_guid, $author, $contact);
       		if (!$parent_item)
      @@ -961,16 +957,9 @@ EOT;
       
       		$parent_uri = $author.":".$parent_guid;
       
      -		$contact = self::get_contact_by_handle($importer["uid"], $author);
      -		if (!$contact) {
      -			logger("cannot find contact: ".$author);
      +		$contact = self::get_allowed_contact_by_handle($importer, $author, true);
      +		if (!$contact)
       			return false;
      -		}
      -
      -		if(($contact["rel"] == CONTACT_IS_FOLLOWER) || ($contact["blocked"]) || ($contact["readonly"])) {
      -			logger("Ignoring this author.");
      -			return false;
      -		}
       
       		$conversation = null;
       
      @@ -1159,7 +1148,6 @@ print_r($data);
       		);
       
       		if((count($r)) && (!$r[0]["hide-friends"]) && (!$contact["hidden"]) && intval(get_pconfig($importer["uid"],'system','post_newfriend'))) {
      -			require_once('include/items.php');
       
       			$self = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
       				intval($importer["uid"])
      @@ -1170,7 +1158,7 @@ print_r($data);
       			if(count($self) && $contact["rel"] == CONTACT_IS_FOLLOWER) {
       
       				$arr = array();
      -				$arr["uri"] = $arr["parent-uri"] = item_new_uri($a->get_hostname(), $importer["uid"]);
      +				$arr["uri"] = $arr["parent-uri"] = item_new_uri(App::get_hostname(), $importer["uid"]);
       				$arr["uid"] = $importer["uid"];
       				$arr["contact-id"] = $self[0]["id"];
       				$arr["wall"] = 1;
      @@ -1256,7 +1244,6 @@ print_r($data);
       		intval($importer["uid"])
       	);
       	if($g && intval($g[0]["def_gid"])) {
      -		require_once('include/group.php');
       		group_add_member($importer["uid"],'',$contact_record["id"],$g[0]["def_gid"]);
       	}
       
      @@ -1279,8 +1266,6 @@ print_r($data);
       
       		// automatic friend approval
       
      -		require_once('include/Photo.php');
      -
       		update_contact_avatar($contact_record["photo"],$importer["uid"],$contact_record["id"]);
       
       		// technically they are sharing with us (CONTACT_IS_SHARING),
      @@ -1314,6 +1299,60 @@ print_r($data);
       		return true;
       	}
       
      +	private function get_original_item($guid, $orig_author, $author) {
      +
      +		// Do we already have this item?
      +		$r = q("SELECT `body`, `tag`, `app`, `created`, `object-type`, `uri`, `guid`,
      +				`author-name`, `author-link`, `author-avatar`
      +				FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1",
      +			dbesc($guid));
      +
      +		if(count($r)) {
      +			logger("reshared message ".$guid." already exists on system.");
      +
      +			// Maybe it is already a reshared item?
      +			// Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares
      +			if (api_share_as_retweet($r[0]))
      +				$r = array();
      +			else
      +				return $r[0];
      +		}
      +
      +		if (!count($r)) {
      +			$server = 'https://'.substr($orig_author,strpos($orig_author,'@')+1);
      +			logger("1st try: reshared message ".$guid." will be fetched from original server: ".$server);
      +			$item_id = self::store_by_guid($guid, $server);
      +
      +			if (!$item_id) {
      +				$server = 'https://'.substr($author,strpos($author,'@')+1);
      +				logger("2nd try: reshared message ".$guid." will be fetched from sharer's server: ".$server);
      +				$item = self::store_by_guid($guid, $server);
      +			}
      +			if (!$item_id) {
      +				$server = 'http://'.substr($orig_author,strpos($orig_author,'@')+1);
      +				logger("3rd try: reshared message ".$guid." will be fetched from original server: ".$server);
      +				$item = self::store_by_guid($guid, $server);
      +			}
      +			if (!$item_id) {
      +				$server = 'http://'.substr($author,strpos($author,'@')+1);
      +				logger("4th try: reshared message ".$guid." will be fetched from sharer's server: ".$server);
      +				$item = self::store_by_guid($guid, $server);
      +			}
      +
      +			if ($item_id) {
      +				$r = q("SELECT `body`, `tag`, `app`, `created`, `object-type`, `uri`, `guid`,
      +						`author-name`, `author-link`, `author-avatar`
      +					FROM `item` WHERE `id` = %d AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1",
      +					intval($item_id));
      +
      +				if ($r)
      +					return $r[0];
      +
      +			}
      +		}
      +		return false;
      +	}
      +
       	private function import_reshare($importer, $data) {
       		$root_author = notags(unxmlify($data->root_author));
       		$root_guid = notags(unxmlify($data->root_guid));
      @@ -1322,101 +1361,16 @@ print_r($data);
       		$public = notags(unxmlify($data->public));
       		$created_at = notags(unxmlify($data->created_at));
       
      -		$contact = self::get_contact_by_handle($importer["uid"], $author);
      +		$contact = self::get_allowed_contact_by_handle($importer, $author, false);
       		if (!$contact)
       			return false;
       
      -		if (!self::post_allow($importer, $contact, false)) {
      -			logger("Ignoring this author: ".$author." ".print_r($data,true));
      +//		if (self::message_exists($importer["uid"], $guid))
      +//			return false;
      +
      +		$original_item = self::get_original_item($root_guid, $root_author, $author);
      +		if (!$original_item)
       			return false;
      -		}
      -/*
      -		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      -			intval($importer["uid"]),
      -			dbesc($guid)
      -		);
      -		if(count($r)) {
      -			logger("message exists: ".$guid);
      -			return;
      -		}
      -*/
      -		$orig_author = $root_author;
      -		$orig_guid = $root_guid;
      -		$orig_url = App::get_baseurl()."/display/".$guid;
      -
      -		$create_original_post = false;
      -
      -		// Do we already have this item?
      -		$r = q("SELECT `body`, `tag`, `app`, `created`, `plink`, `object`, `object-type`, `uri` FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1",
      -			dbesc($orig_guid),
      -			dbesc(NETWORK_DIASPORA)
      -		);
      -		if(count($r)) {
      -			logger("reshared message ".$orig_guid." reshared by ".$guid." already exists on system.");
      -
      -			// Maybe it is already a reshared item?
      -			// Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares
      -			require_once('include/api.php');
      -			if (api_share_as_retweet($r[0]))
      -				$r = array();
      -			else {
      -				$body = $r[0]["body"];
      -				$str_tags = $r[0]["tag"];
      -				$app = $r[0]["app"];
      -				$orig_created = $r[0]["created"];
      -				$orig_plink = $r[0]["plink"];
      -				$orig_uri = $r[0]["uri"];
      -				$object = $r[0]["object"];
      -				$objecttype = $r[0]["object-type"];
      -			}
      -		}
      -
      -/* @todo
      -		if (!count($r)) {
      -			$body = "";
      -			$str_tags = "";
      -			$app = "";
      -
      -			$server = 'https://'.substr($orig_author,strpos($orig_author,'@')+1);
      -			logger('1st try: reshared message '.$orig_guid." reshared by ".$guid.' will be fetched from original server: '.$server);
      -			$item = self::fetch_message($orig_guid, $server);
      -
      -			if (!$item) {
      -				$server = 'https://'.substr($author,strpos($author,'@')+1);
      -				logger('2nd try: reshared message '.$orig_guid." reshared by ".$guid." will be fetched from sharer's server: ".$server);
      -				$item = diaspora_fetch_message($orig_guid, $server);
      -			}
      -			if (!$item) {
      -				$server = 'http://'.substr($orig_author,strpos($orig_author,'@')+1);
      -				logger('3rd try: reshared message '.$orig_guid." reshared by ".$guid.' will be fetched from original server: '.$server);
      -				$item = diaspora_fetch_message($orig_guid, $server);
      -			}
      -			if (!$item) {
      -				$server = 'http://'.substr($author,strpos($author,'@')+1);
      -				logger('4th try: reshared message '.$orig_guid." reshared by ".$guid." will be fetched from sharer's server: ".$server);
      -				$item = diaspora_fetch_message($orig_guid, $server);
      -			}
      -
      -			if ($item) {
      -				$body = $item["body"];
      -				$str_tags = $item["tag"];
      -				$app = $item["app"];
      -				$orig_created = $item["created"];
      -				$orig_author = $item["author"];
      -				$orig_guid = $item["guid"];
      -				$orig_plink = diaspora_plink($orig_author, $orig_guid);
      -				$orig_uri = $orig_author.":".$orig_guid;
      -				$create_original_post = ($body != "");
      -				$object = $item["object"];
      -				$objecttype = $item["object-type"];
      -			}
      -		}
      -*/
      -		$plink = self::plink($author, $guid);
      -
      -		$person = self::get_person_by_handle($orig_author);
      -
      -		$private = (($public == "false") ? 1 : 0);
       
       		$datarray = array();
       
      @@ -1440,18 +1394,18 @@ print_r($data);
       
       		$datarray["object"] = json_encode($data);
       
      -		$prefix = share_header($person["name"], $person["url"], ((x($person,'thumb')) ? $person["thumb"] : $person["photo"]),
      -					$orig_guid, $orig_created, $orig_url);
      -		$datarray["body"] = $prefix.$body."[/share]";
      +		$prefix = share_header($original_item["author-name"], $original_item["author-link"], $original_item["author-avatar"],
      +					$original_item["guid"], $original_item["created"], $original_item["uri"]);
      +		$datarray["body"] = $prefix.$original_item["body"]."[/share]";
       
      -		$datarray["tag"] = $str_tags;
      -		$datarray["app"]  = $app;
      +		$datarray["tag"] = $original_item["tag"];
      +		$datarray["app"]  = $original_item["app"];
       
      -		$datarray["plink"] = $plink;
      -		$datarray["private"] = $private;
      +		$datarray["plink"] = self::plink($author, $guid);
      +		$datarray["private"] = (($public == "false") ? 1 : 0);
       		$datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert("UTC", "UTC", $created_at);
       
      -		$datarray["object-type"] = $objecttype;
      +		$datarray["object-type"] = $original_item["object-type"];
       
       		self::fetch_guid($datarray);
       		//$message_id = item_store($datarray);
      @@ -1473,25 +1427,12 @@ print_r($data);
       		$created_at = notags(unxmlify($data->created_at));
       		$provider_display_name = notags(unxmlify($data->provider_display_name));
       
      -		$contact = self::get_contact_by_handle($importer["uid"], $author);
      -		if (!$contact) {
      -			logger("A Contact for handle ".$author." and user ".$importer["uid"]." was not found");
      +		$contact = self::get_allowed_contact_by_handle($importer, $author, false);
      +		if (!$contact)
       			return false;
      -		}
       
      -		if (!self::post_allow($importer, $contact, false)) {
      -			logger("Ignoring this author.");
      +		if (self::message_exists($importer["uid"], $guid))
       			return false;
      -		}
      -
      -		$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      -			intval($importer["uid"]),
      -			dbesc($guid)
      -		);
      -		if(count($r)) {
      -			logger("message exists: ".$guid);
      -			return false;
      -		}
       
       		/// @todo enable support for polls
       		// if ($data->poll) {
      @@ -1504,8 +1445,6 @@ print_r($data);
       			foreach ($data->location->children() AS $fieldname => $data)
       				$address[$fieldname] = notags(unxmlify($data));
       
      -		$private = (($public == "false") ? 1 : 0);
      -
       		$body = diaspora2bb($raw_message);
       
       		if ($data->photo)
      @@ -1533,7 +1472,6 @@ print_r($data);
       				$str_tags .= "@[url=".$mtch[1]."[/url]";
       			}
       		}
      -		$plink = self::plink($author, $guid);
       
       		$datarray["uid"] = $importer["uid"];
       		$datarray["contact-id"] = $contact["id"];
      @@ -1561,8 +1499,8 @@ print_r($data);
       		if ($provider_display_name != "")
       			$datarray["app"] = $provider_display_name;
       
      -		$datarray["plink"] = $plink;
      -		$datarray["private"] = $private;
      +		$datarray["plink"] = self::plink($author, $guid);
      +		$datarray["private"] = (($public == "false") ? 1 : 0);
       		$datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert("UTC", "UTC", $created_at);
       
       		if (isset($address["address"]))
      
      From 009cadf63beada12c3e53f5d60a5542321a3f470 Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Tue, 1 Mar 2016 19:10:35 +0100
      Subject: [PATCH 020/485] Just another commit message :-)
      
      ---
       include/diaspora.php  | 6 +++---
       include/diaspora2.php | 8 +++++---
       2 files changed, 8 insertions(+), 6 deletions(-)
      
      diff --git a/include/diaspora.php b/include/diaspora.php
      index 4ec7489ca4..9db9e6056e 100644
      --- a/include/diaspora.php
      +++ b/include/diaspora.php
      @@ -146,9 +146,9 @@ function diaspora_dispatch($importer,$msg,$attempt=1) {
       		$ret = diaspora_participation($importer,$xmlbase->participation);
       	}
       	elseif($xmlbase->poll_participation) {
      -		$tempfile = tempnam(get_temppath(), "diaspora-poll_participation");
      -		file_put_contents($tempfile, json_encode($data));
      -		$ret = diaspora_participation($importer,$xmlbase->participation);
      +		//$tempfile = tempnam(get_temppath(), "diaspora-poll_participation");
      +		//file_put_contents($tempfile, json_encode($data));
      +		$ret = diaspora_participation($importer,$xmlbase->poll_participation);
       	}
       	else {
       		$tempfile = tempnam(get_temppath(), "diaspora-unknown");
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index a1297c5193..e8ed80ee80 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -131,7 +131,8 @@ class diaspora {
       				return self::import_request($importer, $fields);
       
       			case "reshare":
      -				return self::import_reshare($importer, $fields);
      +				return true;
      +				//return self::import_reshare($importer, $fields);
       
       			case "retraction":
       				return self::import_retraction($importer, $fields);
      @@ -676,6 +677,8 @@ class diaspora {
       	}
       
       	private function import_conversation($importer, $data) {
      +		print_r($data);
      +		die();
       /*
               $guid = notags(unxmlify($xml->guid));
               $subject = notags(unxmlify($xml->subject));
      @@ -874,9 +877,8 @@ EOT;
       		if ($parent_type !== "Post")
       			return false;
       
      -		// "positive" = "false" doesn't seem to be supported by Diaspora
      +		// "positive" = "false" would be a Dislike - wich isn't currently supported by Diaspora
       		if ($positive === "false") {
      -			logger("Received a like with positive set to 'false' - this shouldn't exist at all");
       			return false;
       		}
       
      
      From f1dae26df8a9f46d683716b48b9b739f02824302 Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Tue, 1 Mar 2016 23:21:56 +0100
      Subject: [PATCH 021/485] Likes would now work with unlikes and with likes on
       comments.
      
      ---
       include/diaspora2.php | 48 +++++++++++++++++++++++--------------------
       1 file changed, 26 insertions(+), 22 deletions(-)
      
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index e8ed80ee80..97d22b4b97 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -104,7 +104,8 @@ class diaspora {
       				//return self::import_comment($importer, $sender, $fields);
       
       			case "conversation":
      -				return self::import_conversation($importer, $fields);
      +				return true;
      +				//return self::import_conversation($importer, $fields);
       
       			case "like":
       				return true;
      @@ -138,8 +139,8 @@ class diaspora {
       				return self::import_retraction($importer, $fields);
       
       			case "status_message":
      -				return true;
      -				//return self::import_status_message($importer, $fields, $msg, $data2);
      +				//return true;
      +				return self::import_status_message($importer, $fields);
       
       			default:
       				logger("Unknown message type ".$type);
      @@ -246,7 +247,7 @@ class diaspora {
       			}
       
       		// Only some message types have signatures. So we quit here for the other types.
      -		if (!in_array($type, array("comment", "conversation", "message", "like")))
      +		if (!in_array($type, array("comment", "message", "like")))
       			return true;
       
       		// No author_signature? This is a must, so we quit.
      @@ -691,7 +692,7 @@ class diaspora {
               $messages = $xml->message;
       
               if(! count($messages)) {
      -                logger('diaspora_conversation: empty conversation');
      +                logger('empty conversation');
                       return;
               }
       
      @@ -874,14 +875,10 @@ EOT;
       		$author = notags(unxmlify($data->author));
       
       		// likes on comments aren't supported by Diaspora - only on posts
      -		if ($parent_type !== "Post")
      +		// But maybe this will be supported in the future, so we will accept it.
      +		if (!in_array($parent_type, array("Post", "Comment")))
       			return false;
       
      -		// "positive" = "false" would be a Dislike - wich isn't currently supported by Diaspora
      -		if ($positive === "false") {
      -			return false;
      -		}
      -
       		$contact = self::get_allowed_contact_by_handle($importer, $sender, true);
       		if (!$contact)
       			return false;
      @@ -902,6 +899,13 @@ EOT;
       		// Fetch the contact id - if we know this contact
       		$author_contact = self::get_author_contact_by_url($contact, $person, $importer["uid"]);
       
      +		// "positive" = "false" would be a Dislike - wich isn't currently supported by Diaspora
      +		// We would accept this anyhow.
      +		if ($positive === "true")
      +			$verb = ACTIVITY_LIKE;
      +		else
      +			$verb = ACTIVITY_DISLIKE;
      +
       		$datarray = array();
       
       		$datarray["uid"] = $importer["uid"];
      @@ -920,7 +924,7 @@ EOT;
       		$datarray["uri"] = $author.":".$guid;
       
       		$datarray["type"] = "activity";
      -		$datarray["verb"] = ACTIVITY_LIKE;
      +		$datarray["verb"] = $verb;
       		$datarray["gravity"] = GRAVITY_LIKE;
       		$datarray["parent-uri"] = $parent_item["uri"];
       
      @@ -1429,18 +1433,18 @@ print_r($data);
       		$created_at = notags(unxmlify($data->created_at));
       		$provider_display_name = notags(unxmlify($data->provider_display_name));
       
      +		/// @todo enable support for polls
      +		if ($data->poll) {
      +			foreach ($data->poll AS $poll)
      +				print_r($poll);
      +			die("poll!\n");
      +		}
       		$contact = self::get_allowed_contact_by_handle($importer, $author, false);
       		if (!$contact)
       			return false;
       
      -		if (self::message_exists($importer["uid"], $guid))
      -			return false;
      -
      -		/// @todo enable support for polls
      -		// if ($data->poll) {
      -		//	print_r($data->poll);
      -		//	die("poll!\n");
      -		// }
      +		//if (self::message_exists($importer["uid"], $guid))
      +		//	return false;
       
       		$address = array();
       		if ($data->location)
      @@ -1450,8 +1454,8 @@ print_r($data);
       		$body = diaspora2bb($raw_message);
       
       		if ($data->photo)
      -			for ($i = 0; $i < count($data->photo); $i++)
      -				$body = "[img]".$data->photo[$i]->remote_photo_path.$data->photo[$i]->remote_photo_name."[/img]\n".$body;
      +			foreach ($data->photo AS $photo)
      +				$body = "[img]".$photo->remote_photo_path.$photo->remote_photo_name."[/img]\n".$body;
       
       		$datarray = array();
       
      
      From 66919761ab9ab60f1e6d3cac0810a6846e1e3a47 Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Wed, 2 Mar 2016 23:28:20 +0100
      Subject: [PATCH 022/485] Some work at the retractions.
      
      ---
       include/diaspora.php  |   8 +-
       include/diaspora2.php | 381 +++++++++++++++++++++++++-----------------
       2 files changed, 230 insertions(+), 159 deletions(-)
      
      diff --git a/include/diaspora.php b/include/diaspora.php
      index 9db9e6056e..0e0a860311 100644
      --- a/include/diaspora.php
      +++ b/include/diaspora.php
      @@ -116,13 +116,13 @@ function diaspora_dispatch($importer,$msg,$attempt=1) {
       		$ret = diaspora_retraction($importer,$xmlbase->retraction,$msg);
       	}
       	elseif($xmlbase->signed_retraction) {
      -		//$tempfile = tempnam(get_temppath(), "diaspora-signed_retraction");
      -		//file_put_contents($tempfile, json_encode($data));
      +		$tempfile = tempnam(get_temppath(), "diaspora-signed_retraction");
      +		file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_signed_retraction($importer,$xmlbase->signed_retraction,$msg);
       	}
       	elseif($xmlbase->relayable_retraction) {
      -		//$tempfile = tempnam(get_temppath(), "diaspora-relayable_retraction");
      -		//file_put_contents($tempfile, json_encode($data));
      +		$tempfile = tempnam(get_temppath(), "diaspora-relayable_retraction");
      +		file_put_contents($tempfile, json_encode($data));
       		$ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg);
       	}
       	elseif($xmlbase->photo) {
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index 97d22b4b97..baf117b102 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -95,11 +95,11 @@ class diaspora {
       		$type = $fields->getName();
       
       		switch ($type) {
      -			case "account_deletion":
      +			case "account_deletion": // Done
       				return true;
       				//return self::import_account_deletion($importer, $fields);
       
      -			case "comment":
      +			case "comment": // Done
       				return true;
       				//return self::import_comment($importer, $sender, $fields);
       
      @@ -107,40 +107,40 @@ class diaspora {
       				return true;
       				//return self::import_conversation($importer, $fields);
       
      -			case "like":
      +			case "like": // Done
       				return true;
       				//return self::import_like($importer, $sender, $fields);
       
      -			case "message":
      +			case "message": // Done
       				return true;
       				//return self::import_message($importer, $fields);
       
       			case "participation": // Not implemented
       				return self::import_participation($importer, $fields);
       
      -			case "photo":
      +			case "photo": // Not needed
       				return self::import_photo($importer, $fields);
       
       			case "poll_participation": // Not implemented
       				return self::import_poll_participation($importer, $fields);
       
      -			case "profile":
      +			case "profile": // Done
       				return true;
       				//return self::import_profile($importer, $fields);
       
       			case "request":
       				return self::import_request($importer, $fields);
       
      -			case "reshare":
      +			case "reshare": // Done
       				return true;
       				//return self::import_reshare($importer, $fields);
       
       			case "retraction":
       				return self::import_retraction($importer, $fields);
       
      -			case "status_message":
      -				//return true;
      -				return self::import_status_message($importer, $fields);
      +			case "status_message": // Done
      +				return true;
      +				//return self::import_status_message($importer, $fields);
       
       			default:
       				logger("Unknown message type ".$type);
      @@ -567,25 +567,25 @@ class diaspora {
       	}
       
       	private function plink($addr, $guid) {
      -	        $r = q("SELECT `url`, `nick`, `network` FROM `fcontact` WHERE `addr`='%s' LIMIT 1", dbesc($addr));
      +		$r = q("SELECT `url`, `nick`, `network` FROM `fcontact` WHERE `addr`='%s' LIMIT 1", dbesc($addr));
       
      -	        // Fallback
      -	        if (!$r)
      -	                return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid;
      +		// Fallback
      +		if (!$r)
      +			return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid;
       
      -	        // Friendica contacts are often detected as Diaspora contacts in the "fcontact" table
      -	        // So we try another way as well.
      -	        $s = q("SELECT `network` FROM `gcontact` WHERE `nurl`='%s' LIMIT 1", dbesc(normalise_link($r[0]["url"])));
      -	        if ($s)
      -	                $r[0]["network"] = $s[0]["network"];
      +		// Friendica contacts are often detected as Diaspora contacts in the "fcontact" table
      +		// So we try another way as well.
      +		$s = q("SELECT `network` FROM `gcontact` WHERE `nurl`='%s' LIMIT 1", dbesc(normalise_link($r[0]["url"])));
      +		if ($s)
      +			$r[0]["network"] = $s[0]["network"];
       
      -	        if ($r[0]["network"] == NETWORK_DFRN)
      -	                return(str_replace("/profile/".$r[0]["nick"]."/", "/display/".$guid, $r[0]["url"]."/"));
      +		if ($r[0]["network"] == NETWORK_DFRN)
      +			return(str_replace("/profile/".$r[0]["nick"]."/", "/display/".$guid, $r[0]["url"]."/"));
       
      -	        if (self::is_redmatrix($r[0]["url"]))
      -	                return $r[0]["url"]."/?f=&mid=".$guid;
      +		if (self::is_redmatrix($r[0]["url"]))
      +			return $r[0]["url"]."/?f=&mid=".$guid;
       
      -	        return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid;
      +		return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid;
       	}
       
       	private function import_account_deletion($importer, $data) {
      @@ -681,158 +681,158 @@ class diaspora {
       		print_r($data);
       		die();
       /*
      -        $guid = notags(unxmlify($xml->guid));
      -        $subject = notags(unxmlify($xml->subject));
      -        $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
      -        $participant_handles = notags(unxmlify($xml->participant_handles));
      -        $created_at = datetime_convert('UTC','UTC',notags(unxmlify($xml->created_at)));
      +	$guid = notags(unxmlify($xml->guid));
      +	$subject = notags(unxmlify($xml->subject));
      +	$diaspora_handle = notags(unxmlify($xml->diaspora_handle));
      +	$participant_handles = notags(unxmlify($xml->participant_handles));
      +	$created_at = datetime_convert('UTC','UTC',notags(unxmlify($xml->created_at)));
       
      -        $parent_uri = $diaspora_handle . ':' . $guid;
      +	$parent_uri = $diaspora_handle . ':' . $guid;
       
      -        $messages = $xml->message;
      +	$messages = $xml->message;
       
      -        if(! count($messages)) {
      -                logger('empty conversation');
      -                return;
      -        }
      +	if(! count($messages)) {
      +		logger('empty conversation');
      +		return;
      +	}
       
       		$contact = self::get_allowed_contact_by_handle($importer, $sender, true)
       		if (!$contact)
       			return false;
       
      -        $conversation = null;
      +	$conversation = null;
       
      -        $c = q("select * from conv where uid = %d and guid = '%s' limit 1",
      -                intval($importer['uid']),
      -                dbesc($guid)
      -        );
      -        if(count($c))
      -                $conversation = $c[0];
      -        else {
      -                $r = q("insert into conv (uid,guid,creator,created,updated,subject,recips) values(%d, '%s', '%s', '%s', '%s', '%s', '%s') ",
      -                        intval($importer['uid']),
      -                        dbesc($guid),
      -                        dbesc($diaspora_handle),
      -                        dbesc(datetime_convert('UTC','UTC',$created_at)),
      -                        dbesc(datetime_convert()),
      -                        dbesc($subject),
      -                        dbesc($participant_handles)
      -                );
      -                if($r)
      -                        $c = q("select * from conv where uid = %d and guid = '%s' limit 1",
      -                intval($importer['uid']),
      -            dbesc($guid)
      -        );
      -            if(count($c))
      -            $conversation = $c[0];
      -        }
      -        if(! $conversation) {
      -                logger('diaspora_conversation: unable to create conversation.');
      -                return;
      -        }
      +	$c = q("select * from conv where uid = %d and guid = '%s' limit 1",
      +		intval($importer["uid"]),
      +		dbesc($guid)
      +	);
      +	if(count($c))
      +		$conversation = $c[0];
      +	else {
      +		$r = q("insert into conv (uid,guid,creator,created,updated,subject,recips) values(%d, '%s', '%s', '%s', '%s', '%s', '%s') ",
      +			intval($importer["uid"]),
      +			dbesc($guid),
      +			dbesc($diaspora_handle),
      +			dbesc(datetime_convert('UTC','UTC',$created_at)),
      +			dbesc(datetime_convert()),
      +			dbesc($subject),
      +			dbesc($participant_handles)
      +		);
      +		if($r)
      +			$c = q("select * from conv where uid = %d and guid = '%s' limit 1",
      +		intval($importer["uid"]),
      +	    dbesc($guid)
      +	);
      +	    if(count($c))
      +	    $conversation = $c[0];
      +	}
      +	if(! $conversation) {
      +		logger('diaspora_conversation: unable to create conversation.');
      +		return;
      +	}
       
      -        foreach($messages as $mesg) {
      +	foreach($messages as $mesg) {
       
      -                $reply = 0;
      +		$reply = 0;
       
      -                $msg_guid = notags(unxmlify($mesg->guid));
      -                $msg_parent_guid = notags(unxmlify($mesg->parent_guid));
      -                $msg_parent_author_signature = notags(unxmlify($mesg->parent_author_signature));
      -                $msg_author_signature = notags(unxmlify($mesg->author_signature));
      -                $msg_text = unxmlify($mesg->text);
      -                $msg_created_at = datetime_convert('UTC','UTC',notags(unxmlify($mesg->created_at)));
      -                $msg_diaspora_handle = notags(unxmlify($mesg->diaspora_handle));
      -                $msg_conversation_guid = notags(unxmlify($mesg->conversation_guid));
      -                if($msg_conversation_guid != $guid) {
      -                        logger('diaspora_conversation: message conversation guid does not belong to the current conversation. ' . $xml);
      -                        continue;
      -                }
      +		$msg_guid = notags(unxmlify($mesg->guid));
      +		$msg_parent_guid = notags(unxmlify($mesg->parent_guid));
      +		$msg_parent_author_signature = notags(unxmlify($mesg->parent_author_signature));
      +		$msg_author_signature = notags(unxmlify($mesg->author_signature));
      +		$msg_text = unxmlify($mesg->text);
      +		$msg_created_at = datetime_convert('UTC','UTC',notags(unxmlify($mesg->created_at)));
      +		$msg_diaspora_handle = notags(unxmlify($mesg->diaspora_handle));
      +		$msg_conversation_guid = notags(unxmlify($mesg->conversation_guid));
      +		if($msg_conversation_guid != $guid) {
      +			logger('diaspora_conversation: message conversation guid does not belong to the current conversation. ' . $xml);
      +			continue;
      +		}
       
      -                $body = diaspora2bb($msg_text);
      -                $message_id = $msg_diaspora_handle . ':' . $msg_guid;
      +		$body = diaspora2bb($msg_text);
      +		$message_id = $msg_diaspora_handle . ':' . $msg_guid;
       
      -                $author_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid;
      +		$author_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid;
       
      -                $author_signature = base64_decode($msg_author_signature);
      +		$author_signature = base64_decode($msg_author_signature);
       
      -                if(strcasecmp($msg_diaspora_handle,$msg['author']) == 0) {
      -                        $person = $contact;
      -                        $key = $msg['key'];
      -                }
      -                else {
      -                        $person = find_diaspora_person_by_handle($msg_diaspora_handle); 
      +		if(strcasecmp($msg_diaspora_handle,$msg["author"]) == 0) {
      +			$person = $contact;
      +			$key = $msg["key"];
      +		}
      +		else {
      +			$person = find_diaspora_person_by_handle($msg_diaspora_handle); 
       
      -                        if(is_array($person) && x($person,'pubkey'))
      -                                $key = $person['pubkey'];
      -                        else {
      -                                logger('diaspora_conversation: unable to find author details');
      -                                continue;
      -                        }
      -                }
      +			if(is_array($person) && x($person,'pubkey'))
      +				$key = $person["pubkey"];
      +			else {
      +				logger('diaspora_conversation: unable to find author details');
      +				continue;
      +			}
      +		}
       
      -                if(! rsa_verify($author_signed_data,$author_signature,$key,'sha256')) {
      -                        logger('diaspora_conversation: verification failed.');
      -                        continue;
      -                }
      +		if(! rsa_verify($author_signed_data,$author_signature,$key,'sha256')) {
      +			logger('diaspora_conversation: verification failed.');
      +			continue;
      +		}
       
      -                if($msg_parent_author_signature) {
      -                        $owner_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid;
      +		if($msg_parent_author_signature) {
      +			$owner_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid;
       
      -                        $parent_author_signature = base64_decode($msg_parent_author_signature);
      +			$parent_author_signature = base64_decode($msg_parent_author_signature);
       
      -                        $key = $msg['key'];
      +			$key = $msg["key"];
       
      -                        if(! rsa_verify($owner_signed_data,$parent_author_signature,$key,'sha256')) {
      -                                logger('diaspora_conversation: owner verification failed.');
      -                                continue;
      -                        }
      -                }
      +			if(! rsa_verify($owner_signed_data,$parent_author_signature,$key,'sha256')) {
      +				logger('diaspora_conversation: owner verification failed.');
      +				continue;
      +			}
      +		}
       
      -                $r = q("select id from mail where `uri` = '%s' limit 1",
      -                        dbesc($message_id)
      -                );
      -                if(count($r)) {
      -                        logger('diaspora_conversation: duplicate message already delivered.', LOGGER_DEBUG);
      -                        continue;
      -                }
      +		$r = q("select id from mail where `uri` = '%s' limit 1",
      +			dbesc($message_id)
      +		);
      +		if(count($r)) {
      +			logger('diaspora_conversation: duplicate message already delivered.', LOGGER_DEBUG);
      +			continue;
      +		}
       
      -                q("insert into mail ( `uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`) values ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')",
      -                        intval($importer['uid']),
      -                        dbesc($msg_guid),
      -                        intval($conversation['id']),
      -                        dbesc($person['name']),
      -                        dbesc($person['photo']),
      -                        dbesc($person['url']),
      -                        intval($contact['id']),
      -                        dbesc($subject),
      -                        dbesc($body),
      -                        0,
      -                        0,
      -                        dbesc($message_id),
      -                        dbesc($parent_uri),
      -                        dbesc($msg_created_at)
      -                );
      +		q("insert into mail ( `uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`) values ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')",
      +			intval($importer["uid"]),
      +			dbesc($msg_guid),
      +			intval($conversation["id"]),
      +			dbesc($person["name"]),
      +			dbesc($person["photo"]),
      +			dbesc($person["url"]),
      +			intval($contact["id"]),
      +			dbesc($subject),
      +			dbesc($body),
      +			0,
      +			0,
      +			dbesc($message_id),
      +			dbesc($parent_uri),
      +			dbesc($msg_created_at)
      +		);
       
      -                q("update conv set updated = '%s' where id = %d",
      -                        dbesc(datetime_convert()),
      -                        intval($conversation['id'])
      -                );
      +		q("update conv set updated = '%s' where id = %d",
      +			dbesc(datetime_convert()),
      +			intval($conversation["id"])
      +		);
       
      -                notification(array(
      -                        'type' => NOTIFY_MAIL,
      -                        'notify_flags' => $importer['notify-flags'],
      -                        'language' => $importer['language'],
      -                        'to_name' => $importer['username'],
      -                        'to_email' => $importer['email'],
      -                        'uid' =>$importer['uid'],
      -                        'item' => array('subject' => $subject, 'body' => $body),
      -                        'source_name' => $person['name'],
      -                        'source_link' => $person['url'],
      -                        'source_photo' => $person['thumb'],
      -                        'verb' => ACTIVITY_POST,
      -                        'otype' => 'mail'
      -                ));
      -        }
      +		notification(array(
      +			'type' => NOTIFY_MAIL,
      +			'notify_flags' => $importer["notify-flags"],
      +			'language' => $importer["language"],
      +			'to_name' => $importer["username"],
      +			'to_email' => $importer["email"],
      +			'uid' =>$importer["uid"],
      +			'item' => array('subject' => $subject, 'body' => $body),
      +			'source_name' => $person["name"],
      +			'source_link' => $person["url"],
      +			'source_photo' => $person["thumb"],
      +			'verb' => ACTIVITY_POST,
      +			'otype' => 'mail'
      +		));
      +	}
       */
       		return true;
       	}
      @@ -1420,7 +1420,78 @@ print_r($data);
       		return $message_id;
       	}
       
      +	private function item_retraction($importer, $contact, $data) {
      +		$target_guid = notags(unxmlify($data->target_guid));
      +
      +		$r = q("SELECT `id`, `parent`, `parent-uri`, `author-link` FROM `item` WHERE `guid` = '%s' AND `uid` = %d AND NOT `file` LIKE '%%[%%' LIMIT 1",
      +			dbesc($target_guid),
      +			intval($importer["uid"])
      +		);
      +		if (!$r)
      +			return false;
      +
      +		// Only delete it if the author really fits
      +		if (!link_compare($r[0]["author-link"],$contact["url"]))
      +			return false;
      +
      +		// Currently we don't have a central deletion function that we could use in this case. The function "item_drop" doesn't work for that case
      +		q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '' , `title` = '' WHERE `id` = %d",
      +			dbesc(datetime_convert()),
      +			dbesc(datetime_convert()),
      +			intval($r[0]["id"])
      +		);
      +		delete_thread($r[0]["id"], $r[0]["parent-uri"]);
      +
      +		// Now check if the retraction needs to be relayed by us
      +		//
      +		// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
      +		// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
      +		// The only item with `parent` and `id` as the parent id is the parent item.
      +		$p = q("SELECT `origin` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1",
      +			intval($r[0]["parent"]),
      +			intval($r[0]["parent"])
      +		);
      +		if(count($p)) {
      +			if($p[0]["origin"]) {
      +
      +	                        // Formerly we stored the signed text, the signature and the author in different fields.
      +	                        // The new Diaspora protocol can have variable fields. We now store the data in correct order in a single field.
      +	                        q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')",
      +					intval($r[0]["id"]),
      +	                                dbesc(json_encode($data))
      +	                        );
      +
      +				// the existence of parent_author_signature would have meant the parent_author or owner
      +				// is already relaying.
      +				logger("relaying retraction");
      +
      +				proc_run("php", "include/notifier.php", "drop", $r[0]["id"]);
      +			}
      +		}
      +	}
      +
       	private function import_retraction($importer, $data) {
      +		$target_type = notags(unxmlify($data->target_type));
      +		$author = notags(unxmlify($data->author));
      +
      +		$contact = self::get_contact_by_handle($importer["uid"], $author);
      +		if (!$contact) {
      +			logger("cannot find contact for author: ".$author);
      +			return false;
      +		}
      +
      +		switch ($target_type) {
      +			case "Comment": case "Like": case "StatusMessage":
      +				self::item_retraction($importer, $contact, $data);
      +				break;
      +
      +			case "Person":
      +				contact_remove($contact["id"]);
      +				return true;
      +
      +			default:
      +				logger("Unknown target type ".$target_type);
      +		}
       		return true;
       	}
       
      @@ -1434,11 +1505,11 @@ print_r($data);
       		$provider_display_name = notags(unxmlify($data->provider_display_name));
       
       		/// @todo enable support for polls
      -		if ($data->poll) {
      -			foreach ($data->poll AS $poll)
      -				print_r($poll);
      -			die("poll!\n");
      -		}
      +		//if ($data->poll) {
      +		//	foreach ($data->poll AS $poll)
      +		//		print_r($poll);
      +		//	die("poll!\n");
      +		//}
       		$contact = self::get_allowed_contact_by_handle($importer, $author, false);
       		if (!$contact)
       			return false;
      
      From 5adecf5b50e11fb6016cc089426f74b8f930ed0b Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Wed, 2 Mar 2016 23:39:50 +0100
      Subject: [PATCH 023/485] Some beautification
      
      ---
       include/diaspora2.php | 11 ++++++-----
       1 file changed, 6 insertions(+), 5 deletions(-)
      
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index baf117b102..4d0e4c2cb8 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -1524,16 +1524,16 @@ print_r($data);
       
       		$body = diaspora2bb($raw_message);
       
      -		if ($data->photo)
      +		$datarray = array();
      +
      +		if ($data->photo) {
       			foreach ($data->photo AS $photo)
       				$body = "[img]".$photo->remote_photo_path.$photo->remote_photo_name."[/img]\n".$body;
       
      -		$datarray = array();
      -
      -		if($data->photo->remote_photo_path AND $data->photo->remote_photo_name)
       			$datarray["object-type"] = ACTIVITY_OBJ_PHOTO;
      -		else {
      +		} else {
       			$datarray["object-type"] = ACTIVITY_OBJ_NOTE;
      +
       			// Add OEmbed and other information to the body
       			if (!self::is_redmatrix($contact["url"]))
       				$body = add_page_info_to_body($body, false, true);
      @@ -1541,6 +1541,7 @@ print_r($data);
       
       		$str_tags = "";
       
      +		// This doesn't work. @todo Check if the "tag" field is filled in the "item_store" function.
       		$cnt = preg_match_all("/@\[url=(.*?)\[\/url\]/ism", $body, $matches, PREG_SET_ORDER);
       		if($cnt) {
       			foreach($matches as $mtch) {
      
      From 2edf4548dca3ff2df4765be957766af91c4930d2 Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Thu, 3 Mar 2016 23:34:17 +0100
      Subject: [PATCH 024/485] Retractions could work now.
      
      ---
       include/diaspora2.php | 170 ++++++++++++++++++++++++++----------------
       1 file changed, 105 insertions(+), 65 deletions(-)
      
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index 4d0e4c2cb8..59a5c372db 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -13,6 +13,10 @@ require_once("include/socgraph.php");
       require_once("include/group.php");
       require_once("include/api.php");
       
      +/**
      + * @brief This class contain functions to work with XML data
      + *
      + */
       class xml {
       	function from_array($array, &$xml) {
       
      @@ -45,12 +49,20 @@ class xml {
       		}
       	}
       }
      +
       /**
        * @brief This class contain functions to create and send Diaspora XML files
        *
        */
       class diaspora {
       
      +	/**
      +	 * @brief Dispatches public messages and find the fitting receivers
      +	 *
      +	 * @param array $msg The post that will be dispatched
      +	 *
      +	 * @return bool Was the message accepted?
      +	 */
       	public static function dispatch_public($msg) {
       
       		$enabled = intval(get_config("system", "diaspora_enabled"));
      @@ -81,6 +93,14 @@ class diaspora {
       		return $item_id;
       	}
       
      +	/**
      +	 * @brief Dispatches the different message types to the different functions
      +	 *
      +	 * @param array $importer Array of the importer user
      +	 * @param array $msg The post that will be dispatched
      +	 *
      +	 * @return bool Was the message accepted?
      +	 */
       	public static function dispatch($importer, $msg) {
       
       		// The sender is the handle of the contact that sent the message.
      @@ -104,8 +124,8 @@ class diaspora {
       				//return self::import_comment($importer, $sender, $fields);
       
       			case "conversation":
      -				return true;
      -				//return self::import_conversation($importer, $fields);
      +				//return true;
      +				return self::import_conversation($importer, $fields);
       
       			case "like": // Done
       				return true;
      @@ -129,18 +149,20 @@ class diaspora {
       				//return self::import_profile($importer, $fields);
       
       			case "request":
      +				//return true;
       				return self::import_request($importer, $fields);
       
       			case "reshare": // Done
       				return true;
       				//return self::import_reshare($importer, $fields);
       
      -			case "retraction":
      -				return self::import_retraction($importer, $fields);
      -
      -			case "status_message": // Done
      +			case "retraction": // Done
       				return true;
      -				//return self::import_status_message($importer, $fields);
      +				//return self::import_retraction($importer, $sender, $fields);
      +
      +			case "status_message":
      +				//return true;
      +				return self::import_status_message($importer, $fields);
       
       			default:
       				logger("Unknown message type ".$type);
      @@ -181,6 +203,7 @@ class diaspora {
       		}
       
       		$type = $element->getName();
      +		$orig_type = $type;
       
       		// All retractions are handled identically from now on.
       		// In the new version there will only be "retraction".
      @@ -235,7 +258,8 @@ class diaspora {
       
       				$signed_data .= $entry;
       			}
      -			if (!in_array($fieldname, array("parent_author_signature", "target_author_signature")))
      +			if (!in_array($fieldname, array("parent_author_signature", "target_author_signature")) OR
      +				($orig_type == "relayable_retraction"))
       				xml::copy($entry, $fields, $fieldname);
       		}
       
      @@ -266,6 +290,13 @@ class diaspora {
       		return rsa_verify($signed_data, $author_signature, $key, "sha256");
       	}
       
      +	/**
      +	 * @brief Fetches the public key for a given handle
      +	 *
      +	 * @param string $handle The handle
      +	 *
      +	 * @return string The public key
      +	 */
       	private function get_key($handle) {
       		logger("Fetching diaspora key for: ".$handle);
       
      @@ -276,6 +307,13 @@ class diaspora {
       		return "";
       	}
       
      +	/**
      +	 * @brief Fetches data for a given handle
      +	 *
      +	 * @param string $handle The handle
      +	 *
      +	 * @return array the queried data
      +	 */
       	private function get_person_by_handle($handle) {
       
       		$r = q("SELECT * FROM `fcontact` WHERE `network` = '%s' AND `addr` = '%s' LIMIT 1",
      @@ -306,6 +344,14 @@ class diaspora {
       		return $person;
       	}
       
      +	/**
      +	 * @brief Updates the fcontact table
      +	 *
      +	 * @param array $arr The fcontact data
      +	 * @param bool $update Update or insert?
      +	 *
      +	 * @return string The id of the fcontact entry
      +	 */
       	private function add_fcontact($arr, $update = false) {
       		/// @todo Remove this function from include/network.php
       
      @@ -477,13 +523,12 @@ class diaspora {
       		if ($level > 5)
       			return false;
       
      -		// This will not work if the server is not a Diaspora server
      +		// This will work for Diaspora and newer Friendica servers
       		$source_url = $server."/p/".$guid.".xml";
       		$x = fetch_url($source_url);
       		if(!$x)
       			return false;
       
      -		/// @todo - should maybe solved by the dispatcher
       		$source_xml = parse_xml_string($x, false);
       
       		if (!is_object($source_xml))
      @@ -664,7 +709,7 @@ class diaspora {
       		if($message_id AND $parent_item["origin"]) {
       
       			// Formerly we stored the signed text, the signature and the author in different fields.
      -			// The new Diaspora protocol can have variable fields. We now store the data in correct order in a single field.
      +			// We now store the raw data so that we are more flexible.
       			q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')",
       				intval($message_id),
       				dbesc(json_encode($data))
      @@ -678,6 +723,7 @@ class diaspora {
       	}
       
       	private function import_conversation($importer, $data) {
      +		// @todo
       		print_r($data);
       		die();
       /*
      @@ -934,13 +980,13 @@ EOT;
       		$datarray["body"] = self::construct_like_body($contact, $parent_item, $guid);
       
       		$message_id = item_store($datarray);
      -		//print_r($datarray);
      +		// print_r($datarray);
       
       		// If we are the origin of the parent we store the original data and notify our followers
       		if($message_id AND $parent_item["origin"]) {
       
       			// Formerly we stored the signed text, the signature and the author in different fields.
      -			// The new Diaspora protocol can have variable fields. We now store the data in correct order in a single field.
      +			// We now store the raw data so that we are more flexible.
       			q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')",
       				intval($message_id),
       				dbesc(json_encode($data))
      @@ -1125,7 +1171,8 @@ EOT;
       	}
       
       	private function import_request($importer, $data) {
      -print_r($data);
      +		// @todo
      +		print_r($data);
       /*
       	$author = unxmlify($xml->author);
       	$recipient = unxmlify($xml->recipient);
      @@ -1371,8 +1418,8 @@ print_r($data);
       		if (!$contact)
       			return false;
       
      -//		if (self::message_exists($importer["uid"], $guid))
      -//			return false;
      +		if (self::message_exists($importer["uid"], $guid))
      +			return false;
       
       		$original_item = self::get_original_item($root_guid, $root_author, $author);
       		if (!$original_item)
      @@ -1414,14 +1461,22 @@ print_r($data);
       		$datarray["object-type"] = $original_item["object-type"];
       
       		self::fetch_guid($datarray);
      -		//$message_id = item_store($datarray);
      -		print_r($datarray);
      +		$message_id = item_store($datarray);
      +		// print_r($datarray);
       
       		return $message_id;
       	}
       
       	private function item_retraction($importer, $contact, $data) {
      +		$target_type = notags(unxmlify($data->target_type));
       		$target_guid = notags(unxmlify($data->target_guid));
      +		$author = notags(unxmlify($data->author));
      +
      +		$person = self::get_person_by_handle($author);
      +		if (!is_array($person)) {
      +			logger("unable to find author detail for ".$author);
      +			return false;
      +		}
       
       		$r = q("SELECT `id`, `parent`, `parent-uri`, `author-link` FROM `item` WHERE `guid` = '%s' AND `uid` = %d AND NOT `file` LIKE '%%[%%' LIMIT 1",
       			dbesc($target_guid),
      @@ -1431,7 +1486,15 @@ print_r($data);
       			return false;
       
       		// Only delete it if the author really fits
      -		if (!link_compare($r[0]["author-link"],$contact["url"]))
      +		if (!link_compare($r[0]["author-link"],$person["url"]))
      +			return false;
      +
      +		// Check if the sender is the thread owner
      +		$p = q("SELECT `author-link`, `origin` FROM `item` WHERE `id` = %d",
      +			intval($r[0]["parent"]));
      +
      +		// Only delete it if the parent author really fits
      +		if (!link_compare($p[0]["author-link"], $contact["url"]))
       			return false;
       
       		// Currently we don't have a central deletion function that we could use in this case. The function "item_drop" doesn't work for that case
      @@ -1443,47 +1506,36 @@ print_r($data);
       		delete_thread($r[0]["id"], $r[0]["parent-uri"]);
       
       		// Now check if the retraction needs to be relayed by us
      -		//
      -		// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
      -		// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
      -		// The only item with `parent` and `id` as the parent id is the parent item.
      -		$p = q("SELECT `origin` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1",
      -			intval($r[0]["parent"]),
      -			intval($r[0]["parent"])
      -		);
      -		if(count($p)) {
      -			if($p[0]["origin"]) {
      +		if($p[0]["origin"]) {
       
      -	                        // Formerly we stored the signed text, the signature and the author in different fields.
      -	                        // The new Diaspora protocol can have variable fields. We now store the data in correct order in a single field.
      -	                        q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')",
      -					intval($r[0]["id"]),
      -	                                dbesc(json_encode($data))
      -	                        );
      +			// Formerly we stored the signed text, the signature and the author in different fields.
      +			// We now store the raw data so that we are more flexible.
      +			q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')",
      +				intval($r[0]["id"]),
      +				dbesc(json_encode($data))
      +			);
       
      -				// the existence of parent_author_signature would have meant the parent_author or owner
      -				// is already relaying.
      -				logger("relaying retraction");
      -
      -				proc_run("php", "include/notifier.php", "drop", $r[0]["id"]);
      -			}
      +			// notify others
      +			proc_run("php", "include/notifier.php", "drop", $r[0]["id"]);
       		}
       	}
       
      -	private function import_retraction($importer, $data) {
      +	private function import_retraction($importer, $sender, $data) {
       		$target_type = notags(unxmlify($data->target_type));
      -		$author = notags(unxmlify($data->author));
       
      -		$contact = self::get_contact_by_handle($importer["uid"], $author);
      +		$contact = self::get_contact_by_handle($importer["uid"], $sender);
       		if (!$contact) {
      -			logger("cannot find contact for author: ".$author);
      +			logger("cannot find contact for sender: ".$sender." and user ".$importer["uid"]);
       			return false;
       		}
       
       		switch ($target_type) {
      -			case "Comment": case "Like": case "StatusMessage":
      -				self::item_retraction($importer, $contact, $data);
      -				break;
      +			case "Comment":
      +			case "Like":
      +			case "Post": // "Post" will be supported in a future version
      +			case "Reshare":
      +			case "StatusMessage":
      +				return self::item_retraction($importer, $contact, $data);;
       
       			case "Person":
       				contact_remove($contact["id"]);
      @@ -1491,6 +1543,7 @@ print_r($data);
       
       			default:
       				logger("Unknown target type ".$target_type);
      +				return false;
       		}
       		return true;
       	}
      @@ -1514,8 +1567,8 @@ print_r($data);
       		if (!$contact)
       			return false;
       
      -		//if (self::message_exists($importer["uid"], $guid))
      -		//	return false;
      +		if (self::message_exists($importer["uid"], $guid))
      +			return false;
       
       		$address = array();
       		if ($data->location)
      @@ -1539,18 +1592,6 @@ print_r($data);
       				$body = add_page_info_to_body($body, false, true);
       		}
       
      -		$str_tags = "";
      -
      -		// This doesn't work. @todo Check if the "tag" field is filled in the "item_store" function.
      -		$cnt = preg_match_all("/@\[url=(.*?)\[\/url\]/ism", $body, $matches, PREG_SET_ORDER);
      -		if($cnt) {
      -			foreach($matches as $mtch) {
      -				if(strlen($str_tags))
      -					$str_tags .= ",";
      -				$str_tags .= "@[url=".$mtch[1]."[/url]";
      -			}
      -		}
      -
       		$datarray["uid"] = $importer["uid"];
       		$datarray["contact-id"] = $contact["id"];
       		$datarray["network"] = NETWORK_DIASPORA;
      @@ -1573,7 +1614,6 @@ print_r($data);
       
       		$datarray["body"] = $body;
       
      -		$datarray["tag"] = $str_tags;
       		if ($provider_display_name != "")
       			$datarray["app"] = $provider_display_name;
       
      @@ -1588,8 +1628,8 @@ print_r($data);
       			$datarray["coord"] = $address["lat"]." ".$address["lng"];
       
       		self::fetch_guid($datarray);
      -		//$message_id = item_store($datarray);
      -		print_r($datarray);
      +		$message_id = item_store($datarray);
      +		// print_r($datarray);
       
       		logger("Stored item with message id ".$message_id, LOGGER_DEBUG);
       
      
      From ef3620c191add50b212fc5479abc0a6d1f04db6c Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Fri, 4 Mar 2016 23:28:43 +0100
      Subject: [PATCH 025/485] Conversations should work now too.
      
      ---
       include/diaspora2.php | 282 +++++++++++++++++++++---------------------
       1 file changed, 141 insertions(+), 141 deletions(-)
      
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index 59a5c372db..b834e3deb9 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -22,7 +22,7 @@ class xml {
       
       		if (!is_object($xml)) {
       			foreach($array as $key => $value) {
      -				$root = new SimpleXMLElement('<'.$key.'/>');
      +				$root = new SimpleXMLElement("<".$key."/>");
       				array_to_xml($value, $root);
       
       				$dom = dom_import_simplexml($root)->ownerDocument;
      @@ -82,7 +82,7 @@ class diaspora {
       			dbesc(NETWORK_DIASPORA),
       			dbesc($msg["author"])
       		);
      -		if(count($r)) {
      +		if($r) {
       			foreach($r as $rr) {
       				logger("delivering to: ".$rr["username"]);
       				self::dispatch($rr,$msg);
      @@ -125,7 +125,7 @@ class diaspora {
       
       			case "conversation":
       				//return true;
      -				return self::import_conversation($importer, $fields);
      +				return self::import_conversation($importer, $msg, $fields);
       
       			case "like": // Done
       				return true;
      @@ -320,7 +320,7 @@ class diaspora {
       			dbesc(NETWORK_DIASPORA),
       			dbesc($handle)
       		);
      -		if (count($r)) {
      +		if ($r) {
       			$person = $r[0];
       			logger("In cache ".print_r($r,true), LOGGER_DEBUG);
       
      @@ -336,7 +336,7 @@ class diaspora {
       
       			// Note that Friendica contacts will return a "Diaspora person"
       			// if Diaspora connectivity is enabled on their server
      -			if (count($r) AND ($r["network"] === NETWORK_DIASPORA)) {
      +			if ($r AND ($r["network"] === NETWORK_DIASPORA)) {
       				self::add_fcontact($r, $update);
       				$person = $r;
       			}
      @@ -415,17 +415,17 @@ class diaspora {
       			dbesc($handle)
       		);
       
      -		if ($r AND count($r))
      +		if ($r)
       			return $r[0];
       
       		$handle_parts = explode("@", $handle);
      -		$nurl_sql = '%%://' . $handle_parts[1] . '%%/profile/' . $handle_parts[0];
      +		$nurl_sql = "%%://".$handle_parts[1]."%%/profile/".$handle_parts[0];
       		$r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` LIKE '%s' LIMIT 1",
       			dbesc(NETWORK_DFRN),
       			intval($uid),
       			dbesc($nurl_sql)
       		);
      -		if($r AND count($r))
      +		if($r)
       			return $r[0];
       
       		return false;
      @@ -481,7 +481,7 @@ class diaspora {
       			dbesc($guid)
       		);
       
      -		if(count($r)) {
      +		if($r) {
       			logger("message ".$guid." already exists for user ".$uid);
       			return false;
       		}
      @@ -566,7 +566,7 @@ class diaspora {
       			FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
       			intval($uid), dbesc($guid));
       
      -		if(!count($r)) {
      +		if(!$r) {
       			$result = self::store_by_guid($guid, $contact["url"], $uid);
       
       			if (!$result) {
      @@ -585,7 +585,7 @@ class diaspora {
       			}
       		}
       
      -		if (!count($r)) {
      +		if (!$r) {
       			logger("parent item not found: parent: ".$guid." item: ".$guid);
       			return false;
       		} else
      @@ -722,62 +722,10 @@ class diaspora {
       		return $message_id;
       	}
       
      -	private function import_conversation($importer, $data) {
      -		// @todo
      -		print_r($data);
      -		die();
      -/*
      -	$guid = notags(unxmlify($xml->guid));
      -	$subject = notags(unxmlify($xml->subject));
      -	$diaspora_handle = notags(unxmlify($xml->diaspora_handle));
      -	$participant_handles = notags(unxmlify($xml->participant_handles));
      -	$created_at = datetime_convert('UTC','UTC',notags(unxmlify($xml->created_at)));
      -
      -	$parent_uri = $diaspora_handle . ':' . $guid;
      -
      -	$messages = $xml->message;
      -
      -	if(! count($messages)) {
      -		logger('empty conversation');
      -		return;
      -	}
      -
      -		$contact = self::get_allowed_contact_by_handle($importer, $sender, true)
      -		if (!$contact)
      -			return false;
      -
      -	$conversation = null;
      -
      -	$c = q("select * from conv where uid = %d and guid = '%s' limit 1",
      -		intval($importer["uid"]),
      -		dbesc($guid)
      -	);
      -	if(count($c))
      -		$conversation = $c[0];
      -	else {
      -		$r = q("insert into conv (uid,guid,creator,created,updated,subject,recips) values(%d, '%s', '%s', '%s', '%s', '%s', '%s') ",
      -			intval($importer["uid"]),
      -			dbesc($guid),
      -			dbesc($diaspora_handle),
      -			dbesc(datetime_convert('UTC','UTC',$created_at)),
      -			dbesc(datetime_convert()),
      -			dbesc($subject),
      -			dbesc($participant_handles)
      -		);
      -		if($r)
      -			$c = q("select * from conv where uid = %d and guid = '%s' limit 1",
      -		intval($importer["uid"]),
      -	    dbesc($guid)
      -	);
      -	    if(count($c))
      -	    $conversation = $c[0];
      -	}
      -	if(! $conversation) {
      -		logger('diaspora_conversation: unable to create conversation.');
      -		return;
      -	}
      -
      -	foreach($messages as $mesg) {
      +	private function import_conversation_message($importer, $contact, $data, $msg, $mesg) {
      +		$guid = notags(unxmlify($data->guid));
      +		$subject = notags(unxmlify($data->subject));
      +		$author = notags(unxmlify($data->author));
       
       		$reply = 0;
       
      @@ -786,63 +734,64 @@ class diaspora {
       		$msg_parent_author_signature = notags(unxmlify($mesg->parent_author_signature));
       		$msg_author_signature = notags(unxmlify($mesg->author_signature));
       		$msg_text = unxmlify($mesg->text);
      -		$msg_created_at = datetime_convert('UTC','UTC',notags(unxmlify($mesg->created_at)));
      -		$msg_diaspora_handle = notags(unxmlify($mesg->diaspora_handle));
      +		$msg_created_at = datetime_convert("UTC", "UTC", notags(unxmlify($mesg->created_at)));
      +		$msg_author = notags(unxmlify($mesg->diaspora_handle));
       		$msg_conversation_guid = notags(unxmlify($mesg->conversation_guid));
      +
       		if($msg_conversation_guid != $guid) {
      -			logger('diaspora_conversation: message conversation guid does not belong to the current conversation. ' . $xml);
      -			continue;
      +			logger("message conversation guid does not belong to the current conversation.");
      +			return false;
       		}
       
       		$body = diaspora2bb($msg_text);
      -		$message_id = $msg_diaspora_handle . ':' . $msg_guid;
      +		$message_uri = $msg_author.":".$msg_guid;
       
      -		$author_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid;
      +		$author_signed_data = $msg_guid.";".$msg_parent_guid.";".$msg_text.";".unxmlify($mesg->created_at).";".$msg_author.";".$msg_conversation_guid;
       
       		$author_signature = base64_decode($msg_author_signature);
       
      -		if(strcasecmp($msg_diaspora_handle,$msg["author"]) == 0) {
      +		if(strcasecmp($msg_author,$msg["author"]) == 0) {
       			$person = $contact;
       			$key = $msg["key"];
      -		}
      -		else {
      -			$person = find_diaspora_person_by_handle($msg_diaspora_handle); 
      +		} else {
      +			$person = self::get_person_by_handle($msg_author);
       
      -			if(is_array($person) && x($person,'pubkey'))
      +			if (is_array($person) && x($person, "pubkey"))
       				$key = $person["pubkey"];
       			else {
      -				logger('diaspora_conversation: unable to find author details');
      -				continue;
      +				logger("unable to find author details");
      +					return false;
       			}
       		}
       
      -		if(! rsa_verify($author_signed_data,$author_signature,$key,'sha256')) {
      -			logger('diaspora_conversation: verification failed.');
      -			continue;
      +		if (!rsa_verify($author_signed_data, $author_signature, $key, "sha256")) {
      +			logger("verification failed.");
      +			return false;
       		}
       
       		if($msg_parent_author_signature) {
      -			$owner_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid;
      +			$owner_signed_data = $msg_guid.";".$msg_parent_guid.";".$msg_text.";".unxmlify($mesg->created_at).";".$msg_author.";".$msg_conversation_guid;
       
       			$parent_author_signature = base64_decode($msg_parent_author_signature);
       
       			$key = $msg["key"];
       
      -			if(! rsa_verify($owner_signed_data,$parent_author_signature,$key,'sha256')) {
      -				logger('diaspora_conversation: owner verification failed.');
      -				continue;
      +			if (!rsa_verify($owner_signed_data, $parent_author_signature, $key, "sha256")) {
      +				logger("owner verification failed.");
      +				return false;
       			}
       		}
       
      -		$r = q("select id from mail where `uri` = '%s' limit 1",
      -			dbesc($message_id)
      +		$r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' LIMIT 1",
      +			dbesc($message_uri)
       		);
      -		if(count($r)) {
      -			logger('diaspora_conversation: duplicate message already delivered.', LOGGER_DEBUG);
      -			continue;
      +		if($r) {
      +			logger("duplicate message already delivered.", LOGGER_DEBUG);
      +			return false;
       		}
       
      -		q("insert into mail ( `uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`) values ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')",
      +		q("INSERT INTO `mail` (`uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`)
      +			VALUES (%d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')",
       			intval($importer["uid"]),
       			dbesc($msg_guid),
       			intval($conversation["id"]),
      @@ -854,32 +803,86 @@ class diaspora {
       			dbesc($body),
       			0,
       			0,
      -			dbesc($message_id),
      -			dbesc($parent_uri),
      +			dbesc($message_uri),
      +			dbesc($author.":".$guid),
       			dbesc($msg_created_at)
       		);
       
      -		q("update conv set updated = '%s' where id = %d",
      +		q("UPDATE `conv` SET `updated` = '%s' WHERE `id` = %d",
       			dbesc(datetime_convert()),
       			intval($conversation["id"])
       		);
       
       		notification(array(
      -			'type' => NOTIFY_MAIL,
      -			'notify_flags' => $importer["notify-flags"],
      -			'language' => $importer["language"],
      -			'to_name' => $importer["username"],
      -			'to_email' => $importer["email"],
      -			'uid' =>$importer["uid"],
      -			'item' => array('subject' => $subject, 'body' => $body),
      -			'source_name' => $person["name"],
      -			'source_link' => $person["url"],
      -			'source_photo' => $person["thumb"],
      -			'verb' => ACTIVITY_POST,
      -			'otype' => 'mail'
      +			"type" => NOTIFY_MAIL,
      +			"notify_flags" => $importer["notify-flags"],
      +			"language" => $importer["language"],
      +			"to_name" => $importer["username"],
      +			"to_email" => $importer["email"],
      +			"uid" =>$importer["uid"],
      +			"item" => array("subject" => $subject, "body" => $body),
      +			"source_name" => $person["name"],
      +			"source_link" => $person["url"],
      +			"source_photo" => $person["thumb"],
      +			"verb" => ACTIVITY_POST,
      +			"otype" => "mail"
       		));
       	}
      -*/
      +
      +	private function import_conversation($importer, $msg, $data) {
      +		$guid = notags(unxmlify($data->guid));
      +		$subject = notags(unxmlify($data->subject));
      +		$created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
      +		$author = notags(unxmlify($data->author));
      +		$participants = notags(unxmlify($data->participants));
      +
      +		$messages = $data->message;
      +
      +		if (!count($messages)) {
      +			logger("empty conversation");
      +			return false;
      +		}
      +
      +		$contact = self::get_allowed_contact_by_handle($importer, $msg["author"], true);
      +		if (!$contact)
      +			return false;
      +
      +		$conversation = null;
      +
      +		$c = q("SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +			intval($importer["uid"]),
      +			dbesc($guid)
      +		);
      +		if($c)
      +			$conversation = $c[0];
      +		else {
      +			$r = q("INSERT INTO `conv` (`uid`, `guid`, `creator`, `created`, `updated`, `subject`, `recips`)
      +				VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s')",
      +				intval($importer["uid"]),
      +				dbesc($guid),
      +				dbesc($author),
      +				dbesc(datetime_convert("UTC", "UTC", $created_at)),
      +				dbesc(datetime_convert()),
      +				dbesc($subject),
      +				dbesc($participants)
      +			);
      +			if($r)
      +				$c = q("SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
      +					intval($importer["uid"]),
      +					dbesc($guid)
      +				);
      +
      +			if($c)
      +				$conversation = $c[0];
      +		}
      +		if (!$conversation) {
      +			logger("unable to create conversation.");
      +			return;
      +		}
      +
      +		foreach($messages as $mesg)
      +			self::import_conversation_message($importer, $contact, $data, $msg, $mesg);
      +
       		return true;
       	}
       
      @@ -1007,8 +1010,6 @@ EOT;
       		$author = notags(unxmlify($data->author));
       		$conversation_guid = notags(unxmlify($data->conversation_guid));
       
      -		$parent_uri = $author.":".$parent_guid;
      -
       		$contact = self::get_allowed_contact_by_handle($importer, $author, true);
       		if (!$contact)
       			return false;
      @@ -1019,7 +1020,7 @@ EOT;
       			intval($importer["uid"]),
       			dbesc($conversation_guid)
       		);
      -		if(count($c))
      +		if($c)
       			$conversation = $c[0];
       		else {
       			logger("conversation not available.");
      @@ -1029,7 +1030,7 @@ EOT;
       		$reply = 0;
       
       		$body = diaspora2bb($text);
      -		$message_id = $author.":".$guid;
      +		$message_uri = $author.":".$guid;
       
       		$person = self::get_person_by_handle($author);
       		if (!$person) {
      @@ -1038,10 +1039,10 @@ EOT;
       		}
       
       		$r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
      -			dbesc($message_id),
      +			dbesc($message_uri),
       			intval($importer["uid"])
       		);
      -		if(count($r)) {
      +		if($r) {
       			logger("duplicate message already delivered.", LOGGER_DEBUG);
       			return false;
       		}
      @@ -1059,8 +1060,8 @@ EOT;
       			dbesc($body),
       			0,
       			1,
      -			dbesc($message_id),
      -			dbesc($parent_uri),
      +			dbesc($message_uri),
      +			dbesc($author.":".$parent_guid),
       			dbesc($created_at)
       		);
       
      @@ -1174,8 +1175,8 @@ EOT;
       		// @todo
       		print_r($data);
       /*
      -	$author = unxmlify($xml->author);
      -	$recipient = unxmlify($xml->recipient);
      +	$author = unxmlify($data->author);
      +	$recipient = unxmlify($data->recipient);
       
       	if (!$author || !$recipient)
       		return;
      @@ -1200,7 +1201,7 @@ EOT;
       			intval($importer["uid"])
       		);
       
      -		if((count($r)) && (!$r[0]["hide-friends"]) && (!$contact["hidden"]) && intval(get_pconfig($importer["uid"],'system','post_newfriend'))) {
      +		if($r && !$r[0]["hide-friends"] && !$contact["hidden"] && intval(get_pconfig($importer["uid"],'system','post_newfriend'))) {
       
       			$self = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
       				intval($importer["uid"])
      @@ -1208,7 +1209,7 @@ EOT;
       
       			// they are not CONTACT_IS_FOLLOWER anymore but that's what we have in the array
       
      -			if(count($self) && $contact["rel"] == CONTACT_IS_FOLLOWER) {
      +			if($self && $contact["rel"] == CONTACT_IS_FOLLOWER) {
       
       				$arr = array();
       				$arr["uri"] = $arr["parent-uri"] = item_new_uri(App::get_hostname(), $importer["uid"]);
      @@ -1224,17 +1225,16 @@ EOT;
       				$arr["verb"] = ACTIVITY_FRIEND;
       				$arr["object-type"] = ACTIVITY_OBJ_PERSON;
       
      -				$A = '[url=' . $self[0]["url"] . "]' . $self[0]["name"] . '[/url]';
      -				$B = '[url=' . $contact["url"] . "]' . $contact["name"] . '[/url]';
      -				$BPhoto = '[url=' . $contact["url"] . "]' . '[img]' . $contact["thumb"] . '[/img][/url]';
      +				$A = '[url='.$self[0]["url"] . "]'.$self[0]["name"] .'[/url]';
      +				$B = '[url='.$contact["url"] . "]'.$contact["name"] .'[/url]';
      +				$BPhoto = '[url='.$contact["url"] . "]'.'[img]'.$contact["thumb"] .'[/img][/url]';
       				$arr["body"] =  sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$Bphoto;
       
      -				$arr["object"] = '' . ACTIVITY_OBJ_PERSON . '' . $contact["name"] . ''
      -					. '' . $contact["url"] . '/' . $contact["name"] . '';
      -				$arr["object"] .= '' . xmlify('' . "\n")
      -;
      -				$arr["object"] .= xmlify('' . "\n");
      -				$arr["object"] .= '' . "\n";
      +				$arr["object"] = ''. ACTIVITY_OBJ_PERSON .''.$contact["name"] .''
      +					.''.$contact["url"] .'/'.$contact["name"] .'';
      +				$arr["object"] .= ''. xmlify(''. "\n");
      +				$arr["object"] .= xmlify(''. "\n");
      +				$arr["object"] .= ''. "\n";
       				$arr["last-child"] = 1;
       
       				$arr["allow_cid"] = $user[0]["allow_cid"];
      @@ -1256,12 +1256,12 @@ EOT;
       	$ret = self::get_person_by_handle($author);
       
       
      -	if((! count($ret)) || ($ret["network"] != NETWORK_DIASPORA)) {
      -		logger('diaspora_request: Cannot resolve diaspora handle ' . $author . ' for ' . $recipient);
      +	if (!$ret || ($ret["network"] != NETWORK_DIASPORA)) {
      +		logger('Cannot resolve diaspora handle '.$author .' for '.$recipient);
       		return;
       	}
       
      -	$batch = (($ret["batch"]) ? $ret["batch"] : implode('/', array_slice(explode('/',$ret["url"]),0,3)) . '/receive/public');
      +	$batch = (($ret["batch"]) ? $ret["batch"] : implode('/', array_slice(explode('/',$ret["url"]),0,3)) .'/receive/public');
       
       
       
      @@ -1286,10 +1286,10 @@ EOT;
       
       	// find the contact record we just created
       
      -	$contact_record = diaspora_get_contact_by_handle($importer["uid"],$author);
      +	$contact_record = self::get_contact_by_handle($importer["uid"],$author);
       
       	if(! $contact_record) {
      -		logger('diaspora_request: unable to locate newly created contact record.');
      +		logger('unable to locate newly created contact record.');
       		return;
       	}
       
      @@ -1360,7 +1360,7 @@ EOT;
       				FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1",
       			dbesc($guid));
       
      -		if(count($r)) {
      +		if($r) {
       			logger("reshared message ".$guid." already exists on system.");
       
       			// Maybe it is already a reshared item?
      @@ -1371,23 +1371,23 @@ EOT;
       				return $r[0];
       		}
       
      -		if (!count($r)) {
      -			$server = 'https://'.substr($orig_author,strpos($orig_author,'@')+1);
      +		if (!$r) {
      +			$server = "https://".substr($orig_author, strpos($orig_author, "@") + 1);
       			logger("1st try: reshared message ".$guid." will be fetched from original server: ".$server);
       			$item_id = self::store_by_guid($guid, $server);
       
       			if (!$item_id) {
      -				$server = 'https://'.substr($author,strpos($author,'@')+1);
      +				$server = "https://".substr($author, strpos($author, "@") + 1);
       				logger("2nd try: reshared message ".$guid." will be fetched from sharer's server: ".$server);
       				$item = self::store_by_guid($guid, $server);
       			}
       			if (!$item_id) {
      -				$server = 'http://'.substr($orig_author,strpos($orig_author,'@')+1);
      +				$server = "http://".substr($orig_author, strpos($orig_author, "@") + 1);
       				logger("3rd try: reshared message ".$guid." will be fetched from original server: ".$server);
       				$item = self::store_by_guid($guid, $server);
       			}
       			if (!$item_id) {
      -				$server = 'http://'.substr($author,strpos($author,'@')+1);
      +				$server = "http://".substr($author, strpos($author, "@") + 1);
       				logger("4th try: reshared message ".$guid." will be fetched from sharer's server: ".$server);
       				$item = self::store_by_guid($guid, $server);
       			}
      
      From 5bbc8a14ceccf40defc37011308d2d549127f2f6 Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Sat, 5 Mar 2016 00:27:44 +0100
      Subject: [PATCH 026/485] "import" is now "receive"
      
      ---
       include/diaspora2.php | 311 +++++++++++++++++++++---------------------
       1 file changed, 157 insertions(+), 154 deletions(-)
      
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index b834e3deb9..031058ab75 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -116,53 +116,53 @@ class diaspora {
       
       		switch ($type) {
       			case "account_deletion": // Done
      -				return true;
      -				//return self::import_account_deletion($importer, $fields);
      +				//return true;
      +				return self::receive_account_deletion($importer, $fields);
       
       			case "comment": // Done
      -				return true;
      -				//return self::import_comment($importer, $sender, $fields);
      -
      -			case "conversation":
       				//return true;
      -				return self::import_conversation($importer, $msg, $fields);
      +				return self::receive_comment($importer, $sender, $fields);
      +
      +			case "conversation": // Done
      +				//return true;
      +				return self::receive_conversation($importer, $msg, $fields);
       
       			case "like": // Done
      -				return true;
      -				//return self::import_like($importer, $sender, $fields);
      +				//return true;
      +				return self::receive_like($importer, $sender, $fields);
       
       			case "message": // Done
      -				return true;
      -				//return self::import_message($importer, $fields);
      +				//return true;
      +				return self::receive_message($importer, $fields);
       
       			case "participation": // Not implemented
      -				return self::import_participation($importer, $fields);
      +				return self::receive_participation($importer, $fields);
       
       			case "photo": // Not needed
      -				return self::import_photo($importer, $fields);
      +				return self::receive_photo($importer, $fields);
       
       			case "poll_participation": // Not implemented
      -				return self::import_poll_participation($importer, $fields);
      +				return self::receive_poll_participation($importer, $fields);
       
       			case "profile": // Done
      -				return true;
      -				//return self::import_profile($importer, $fields);
      +				//return true;
      +				return self::receive_profile($importer, $fields);
       
       			case "request":
       				//return true;
      -				return self::import_request($importer, $fields);
      +				return self::receive_request($importer, $fields);
       
       			case "reshare": // Done
      -				return true;
      -				//return self::import_reshare($importer, $fields);
      +				//return true;
      +				return self::receive_reshare($importer, $fields);
       
       			case "retraction": // Done
      -				return true;
      -				//return self::import_retraction($importer, $sender, $fields);
      -
      -			case "status_message":
       				//return true;
      -				return self::import_status_message($importer, $fields);
      +				return self::receive_retraction($importer, $sender, $fields);
      +
      +			case "status_message": // Done
      +				//return true;
      +				return self::receive_status_message($importer, $fields);
       
       			default:
       				logger("Unknown message type ".$type);
      @@ -633,7 +633,7 @@ class diaspora {
       		return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid;
       	}
       
      -	private function import_account_deletion($importer, $data) {
      +	private function receive_account_deletion($importer, $data) {
       		$author = notags(unxmlify($data->author));
       
       		$contact = self::get_contact_by_handle($importer["uid"], $author);
      @@ -647,7 +647,7 @@ class diaspora {
       		return true;
       	}
       
      -	private function import_comment($importer, $sender, $data) {
      +	private function receive_comment($importer, $sender, $data) {
       		$guid = notags(unxmlify($data->guid));
       		$parent_guid = notags(unxmlify($data->parent_guid));
       		$text = unxmlify($data->text);
      @@ -722,7 +722,7 @@ class diaspora {
       		return $message_id;
       	}
       
      -	private function import_conversation_message($importer, $contact, $data, $msg, $mesg) {
      +	private function receive_conversation_message($importer, $contact, $data, $msg, $mesg) {
       		$guid = notags(unxmlify($data->guid));
       		$subject = notags(unxmlify($data->subject));
       		$author = notags(unxmlify($data->author));
      @@ -735,7 +735,14 @@ class diaspora {
       		$msg_author_signature = notags(unxmlify($mesg->author_signature));
       		$msg_text = unxmlify($mesg->text);
       		$msg_created_at = datetime_convert("UTC", "UTC", notags(unxmlify($mesg->created_at)));
      -		$msg_author = notags(unxmlify($mesg->diaspora_handle));
      +
      +		if ($mesg->diaspora_handle)
      +			$msg_author = notags(unxmlify($mesg->diaspora_handle));
      +		elseif ($mesg->author)
      +			$msg_author = notags(unxmlify($mesg->author));
      +		else
      +			return false;
      +
       		$msg_conversation_guid = notags(unxmlify($mesg->conversation_guid));
       
       		if($msg_conversation_guid != $guid) {
      @@ -829,7 +836,7 @@ class diaspora {
       		));
       	}
       
      -	private function import_conversation($importer, $msg, $data) {
      +	private function receive_conversation($importer, $msg, $data) {
       		$guid = notags(unxmlify($data->guid));
       		$subject = notags(unxmlify($data->subject));
       		$created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
      @@ -881,7 +888,7 @@ class diaspora {
       		}
       
       		foreach($messages as $mesg)
      -			self::import_conversation_message($importer, $contact, $data, $msg, $mesg);
      +			self::receive_conversation_message($importer, $contact, $data, $msg, $mesg);
       
       		return true;
       	}
      @@ -916,7 +923,7 @@ EOT;
       		return $obj;
       	}
       
      -	private function import_like($importer, $sender, $data) {
      +	private function receive_like($importer, $sender, $data) {
       		$positive = notags(unxmlify($data->positive));
       		$guid = notags(unxmlify($data->guid));
       		$parent_type = notags(unxmlify($data->parent_type));
      @@ -1002,7 +1009,7 @@ EOT;
       		return $message_id;
       	}
       
      -	private function import_message($importer, $data) {
      +	private function receive_message($importer, $data) {
       		$guid = notags(unxmlify($data->guid));
       		$parent_guid = notags(unxmlify($data->parent_guid));
       		$text = unxmlify($data->text);
      @@ -1073,22 +1080,22 @@ EOT;
       		return true;
       	}
       
      -	private function import_participation($importer, $data) {
      +	private function receive_participation($importer, $data) {
       		// I'm not sure if we can fully support this message type
       		return true;
       	}
       
      -	private function import_photo($importer, $data) {
      +	private function receive_photo($importer, $data) {
       		// There doesn't seem to be a reason for this function, since the photo data is transmitted in the status message as well
       		return true;
       	}
       
      -	private function import_poll_participation($importer, $data) {
      +	private function receive_poll_participation($importer, $data) {
       		// We don't support polls by now
       		return true;
       	}
       
      -	private function import_profile($importer, $data) {
      +	private function receive_profile($importer, $data) {
       		$author = notags(unxmlify($data->author));
       
       		$contact = self::get_contact_by_handle($importer["uid"], $author);
      @@ -1171,23 +1178,7 @@ EOT;
       		return true;
       	}
       
      -	private function import_request($importer, $data) {
      -		// @todo
      -		print_r($data);
      -/*
      -	$author = unxmlify($data->author);
      -	$recipient = unxmlify($data->recipient);
      -
      -	if (!$author || !$recipient)
      -		return;
      -
      -	$contact = self::get_contact_by_handle($importer["uid"],$author);
      -
      -	if($contact) {
      -
      -		// perhaps we were already sharing with this person. Now they're sharing with us.
      -		// That makes us friends.
      -
      +	private function receive_request_make_friend($importer, $contact) {
       		if($contact["rel"] == CONTACT_IS_FOLLOWER && in_array($importer["page-flags"], array(PAGE_FREELOVE))) {
       			q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
       				intval(CONTACT_IS_FRIEND),
      @@ -1201,9 +1192,9 @@ EOT;
       			intval($importer["uid"])
       		);
       
      -		if($r && !$r[0]["hide-friends"] && !$contact["hidden"] && intval(get_pconfig($importer["uid"],'system','post_newfriend'))) {
      +		if($r && !$r[0]["hide-friends"] && !$contact["hidden"] && intval(get_pconfig($importer["uid"], "system", "post_newfriend"))) {
       
      -			$self = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
      +			$self = q("SELECT * FROM `contact` WHERE `self` AND `uid` = %d LIMIT 1",
       				intval($importer["uid"])
       			);
       
      @@ -1225,16 +1216,16 @@ EOT;
       				$arr["verb"] = ACTIVITY_FRIEND;
       				$arr["object-type"] = ACTIVITY_OBJ_PERSON;
       
      -				$A = '[url='.$self[0]["url"] . "]'.$self[0]["name"] .'[/url]';
      -				$B = '[url='.$contact["url"] . "]'.$contact["name"] .'[/url]';
      -				$BPhoto = '[url='.$contact["url"] . "]'.'[img]'.$contact["thumb"] .'[/img][/url]';
      -				$arr["body"] =  sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$Bphoto;
      +				$A = "[url=".$self[0]["url"]."]".$self[0]["name"]."[/url]";
      +				$B = "[url=".$contact["url"]."]".$contact["name"]."[/url]";
      +				$BPhoto = "[url=".$contact["url"]."][img]".$contact["thumb"]."[/img][/url]";
      +				$arr["body"] = sprintf(t("%1$s is now friends with %2$s"), $A, $B)."\n\n\n".$Bphoto;
       
      -				$arr["object"] = ''. ACTIVITY_OBJ_PERSON .''.$contact["name"] .''
      -					.''.$contact["url"] .'/'.$contact["name"] .'';
      -				$arr["object"] .= ''. xmlify(''. "\n");
      -				$arr["object"] .= xmlify(''. "\n");
      -				$arr["object"] .= ''. "\n";
      +				$arr["object"] = "".ACTIVITY_OBJ_PERSON."".$contact["name"].""
      +					."".$contact["url"]."/".$contact["name"]."";
      +				$arr["object"] .= "".xmlify(''."\n");
      +				$arr["object"] .= xmlify(''."\n");
      +				$arr["object"] .= "\n";
       				$arr["last-child"] = 1;
       
       				$arr["allow_cid"] = $user[0]["allow_cid"];
      @@ -1244,111 +1235,123 @@ EOT;
       
       				$i = item_store($arr);
       				if($i)
      -				proc_run('php',"include/notifier.php","activity","$i");
      +					proc_run("php", "include/notifier.php", "activity", $i);
       
       			}
       
       		}
      -
      -		return;
       	}
       
      -	$ret = self::get_person_by_handle($author);
      +	private function receive_request($importer, $data) {
      +		$author = unxmlify($data->author);
      +		$recipient = unxmlify($data->recipient);
       
      +		if (!$author || !$recipient)
      +			return;
       
      -	if (!$ret || ($ret["network"] != NETWORK_DIASPORA)) {
      -		logger('Cannot resolve diaspora handle '.$author .' for '.$recipient);
      -		return;
      -	}
      +		$contact = self::get_contact_by_handle($importer["uid"],$author);
       
      -	$batch = (($ret["batch"]) ? $ret["batch"] : implode('/', array_slice(explode('/',$ret["url"]),0,3)) .'/receive/public');
      +		if($contact) {
       
      +			// perhaps we were already sharing with this person. Now they're sharing with us.
      +			// That makes us friends.
       
      +			self::receive_request_make_friend($importer, $contact);
      +			return true;
      +		}
       
      -	$r = q("INSERT INTO `contact` (`uid`, `network`,`addr`,`created`,`url`,`nurl`,`batch`,`name`,`nick`,`photo`,`pubkey`,`notify`,`poll`,`blocked`,`priority`)
      -		VALUES ( %d, '%s', '%s', '%s', '%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,%d) ",
      -		intval($importer["uid"]),
      -		dbesc($ret["network"]),
      -		dbesc($ret["addr"]),
      -		datetime_convert(),
      -		dbesc($ret["url"]),
      -		dbesc(normalise_link($ret["url"])),
      -		dbesc($batch),
      -		dbesc($ret["name"]),
      -		dbesc($ret["nick"]),
      -		dbesc($ret["photo"]),
      -		dbesc($ret["pubkey"]),
      -		dbesc($ret["notify"]),
      -		dbesc($ret["poll"]),
      -		1,
      -		2
      -	);
      +		$ret = self::get_person_by_handle($author);
       
      -	// find the contact record we just created
      +		if (!$ret || ($ret["network"] != NETWORK_DIASPORA)) {
      +			logger("Cannot resolve diaspora handle ".$author ." for ".$recipient);
      +			return false;
      +		}
       
      -	$contact_record = self::get_contact_by_handle($importer["uid"],$author);
      +		$batch = (($ret["batch"]) ? $ret["batch"] : implode("/", array_slice(explode("/", $ret["url"]), 0, 3))."/receive/public");
       
      -	if(! $contact_record) {
      -		logger('unable to locate newly created contact record.');
      -		return;
      -	}
      -
      -	$g = q("select def_gid from user where uid = %d limit 1",
      -		intval($importer["uid"])
      -	);
      -	if($g && intval($g[0]["def_gid"])) {
      -		group_add_member($importer["uid"],'',$contact_record["id"],$g[0]["def_gid"]);
      -	}
      -
      -	if($importer["page-flags"] == PAGE_NORMAL) {
      -
      -		$hash = random_string() . (string) time();   // Generate a confirm_key
      -
      -		$ret = q("INSERT INTO `intro` ( `uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime` )
      -			VALUES ( %d, %d, %d, %d, '%s', '%s', '%s' )",
      +		$r = q("INSERT INTO `contact` (`uid`, `network`,`addr`,`created`,`url`,`nurl`,`batch`,`name`,`nick`,`photo`,`pubkey`,`notify`,`poll`,`blocked`,`priority`)
      +			VALUES (%d, '%s', '%s', '%s', '%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,%d)",
       			intval($importer["uid"]),
      -			intval($contact_record["id"]),
      -			0,
      -			0,
      -			dbesc( t('Sharing notification from Diaspora network')),
      -			dbesc($hash),
      -			dbesc(datetime_convert())
      -		);
      -	}
      -	else {
      -
      -		// automatic friend approval
      -
      -		update_contact_avatar($contact_record["photo"],$importer["uid"],$contact_record["id"]);
      -
      -		// technically they are sharing with us (CONTACT_IS_SHARING),
      -		// but if our page-type is PAGE_COMMUNITY or PAGE_SOAPBOX
      -		// we are going to change the relationship and make them a follower.
      -
      -		if($importer["page-flags"] == PAGE_FREELOVE)
      -			$new_relation = CONTACT_IS_FRIEND;
      -		else
      -			$new_relation = CONTACT_IS_FOLLOWER;
      -
      -		$r = q("UPDATE `contact` SET `rel` = %d,
      -			`name-date` = '%s',
      -			`uri-date` = '%s',
      -			`blocked` = 0,
      -			`pending` = 0,
      -			`writable` = 1
      -			WHERE `id` = %d
      -			",
      -			intval($new_relation),
      -			dbesc(datetime_convert()),
      -			dbesc(datetime_convert()),
      -			intval($contact_record["id"])
      +			dbesc($ret["network"]),
      +			dbesc($ret["addr"]),
      +			datetime_convert(),
      +			dbesc($ret["url"]),
      +			dbesc(normalise_link($ret["url"])),
      +			dbesc($batch),
      +			dbesc($ret["name"]),
      +			dbesc($ret["nick"]),
      +			dbesc($ret["photo"]),
      +			dbesc($ret["pubkey"]),
      +			dbesc($ret["notify"]),
      +			dbesc($ret["poll"]),
      +			1,
      +			2
       		);
       
      -		$u = q("select * from user where uid = %d limit 1",intval($importer["uid"]));
      -		if($u)
      -			$ret = diaspora_share($u[0],$contact_record);
      -	}
      -*/
      +		// find the contact record we just created
      +
      +		$contact_record = self::get_contact_by_handle($importer["uid"],$author);
      +
      +		if (!$contact_record) {
      +			logger("unable to locate newly created contact record.");
      +			return;
      +		}
      +
      +		$g = q("SELECT `def_gid` FROM `user` WHERE `uid` = %d LIMIT 1",
      +			intval($importer["uid"])
      +		);
      +
      +		if($g && intval($g[0]["def_gid"]))
      +			group_add_member($importer["uid"], "", $contact_record["id"], $g[0]["def_gid"]);
      +
      +		if($importer["page-flags"] == PAGE_NORMAL) {
      +
      +			$hash = random_string().(string)time();   // Generate a confirm_key
      +
      +			$ret = q("INSERT INTO `intro` (`uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime`)
      +				VALUES (%d, %d, %d, %d, '%s', '%s', '%s')",
      +				intval($importer["uid"]),
      +				intval($contact_record["id"]),
      +				0,
      +				0,
      +				dbesc(t("Sharing notification from Diaspora network")),
      +				dbesc($hash),
      +				dbesc(datetime_convert())
      +			);
      +		} else {
      +
      +			// automatic friend approval
      +
      +			update_contact_avatar($contact_record["photo"],$importer["uid"],$contact_record["id"]);
      +
      +			// technically they are sharing with us (CONTACT_IS_SHARING),
      +			// but if our page-type is PAGE_COMMUNITY or PAGE_SOAPBOX
      +			// we are going to change the relationship and make them a follower.
      +
      +			if($importer["page-flags"] == PAGE_FREELOVE)
      +				$new_relation = CONTACT_IS_FRIEND;
      +			else
      +				$new_relation = CONTACT_IS_FOLLOWER;
      +
      +			$r = q("UPDATE `contact` SET `rel` = %d,
      +				`name-date` = '%s',
      +				`uri-date` = '%s',
      +				`blocked` = 0,
      +				`pending` = 0,
      +				`writable` = 1
      +				WHERE `id` = %d
      +				",
      +				intval($new_relation),
      +				dbesc(datetime_convert()),
      +				dbesc(datetime_convert()),
      +				intval($contact_record["id"])
      +			);
      +
      +			$u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer["uid"]));
      +			if($u)
      +				$ret = diaspora_share($u[0], $contact_record);
      +		}
      +
       		return true;
       	}
       
      @@ -1406,7 +1409,7 @@ EOT;
       		return false;
       	}
       
      -	private function import_reshare($importer, $data) {
      +	private function receive_reshare($importer, $data) {
       		$root_author = notags(unxmlify($data->root_author));
       		$root_guid = notags(unxmlify($data->root_guid));
       		$guid = notags(unxmlify($data->guid));
      @@ -1520,7 +1523,7 @@ EOT;
       		}
       	}
       
      -	private function import_retraction($importer, $sender, $data) {
      +	private function receive_retraction($importer, $sender, $data) {
       		$target_type = notags(unxmlify($data->target_type));
       
       		$contact = self::get_contact_by_handle($importer["uid"], $sender);
      @@ -1548,7 +1551,7 @@ EOT;
       		return true;
       	}
       
      -	private function import_status_message($importer, $data) {
      +	private function receive_status_message($importer, $data) {
       
       		$raw_message = unxmlify($data->raw_message);
       		$guid = notags(unxmlify($data->guid));
      
      From 2a4ebaa438c0e4c84e20d2567d708e472a7c7192 Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Sat, 5 Mar 2016 01:30:49 +0100
      Subject: [PATCH 027/485] Small cleanup
      
      ---
       include/diaspora2.php | 9 +++++----
       1 file changed, 5 insertions(+), 4 deletions(-)
      
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index 031058ab75..939a816f40 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -553,7 +553,6 @@ class diaspora {
       
       		$msg = array("message" => $x, "author" => $author);
       
      -		// We don't really need this, but until the work is unfinished we better will keep this
       		$msg["key"] = self::get_key($msg["author"]);
       
       		return $msg;
      @@ -736,10 +735,12 @@ class diaspora {
       		$msg_text = unxmlify($mesg->text);
       		$msg_created_at = datetime_convert("UTC", "UTC", notags(unxmlify($mesg->created_at)));
       
      -		if ($mesg->diaspora_handle)
      -			$msg_author = notags(unxmlify($mesg->diaspora_handle));
      -		elseif ($mesg->author)
      +		// "diaspora_handle" is the element name from the old version
      +		// "author" is the element name from the new version
      +		if ($mesg->author)
       			$msg_author = notags(unxmlify($mesg->author));
      +		elseif ($mesg->diaspora_handle)
      +			$msg_author = notags(unxmlify($mesg->diaspora_handle));
       		else
       			return false;
       
      
      From 71227b5d0d5a0110354ec9d5e928cdeb0a832026 Mon Sep 17 00:00:00 2001
      From: Michael Vogel 
      Date: Sun, 6 Mar 2016 00:53:30 +0100
      Subject: [PATCH 028/485] Receiving should be complete, sending partially works
      
      ---
       include/diaspora2.php | 539 ++++++++++++++++++++++++++++++++++++++----
       include/xml.php       |  39 +++
       2 files changed, 538 insertions(+), 40 deletions(-)
       create mode 100644 include/xml.php
      
      diff --git a/include/diaspora2.php b/include/diaspora2.php
      index 939a816f40..197cb1da11 100644
      --- a/include/diaspora2.php
      +++ b/include/diaspora2.php
      @@ -11,44 +11,8 @@ require_once("include/Contact.php");
       require_once("include/Photo.php");
       require_once("include/socgraph.php");
       require_once("include/group.php");
      -require_once("include/api.php");
      -
      -/**
      - * @brief This class contain functions to work with XML data
      - *
      - */
      -class xml {
      -	function from_array($array, &$xml) {
      -
      -		if (!is_object($xml)) {
      -			foreach($array as $key => $value) {
      -				$root = new SimpleXMLElement("<".$key."/>");
      -				array_to_xml($value, $root);
      -
      -				$dom = dom_import_simplexml($root)->ownerDocument;
      -				$dom->formatOutput = true;
      -				return $dom->saveXML();
      -			}
      -		}
      -
      -		foreach($array as $key => $value) {
      -			if (!is_array($value) AND !is_numeric($key))
      -				$xml->addChild($key, $value);
      -			elseif (is_array($value))
      -				array_to_xml($value, $xml->addChild($key));
      -		}
      -	}
      -
      -	function copy(&$source, &$target, $elementname) {
      -		if (count($source->children()) == 0)
      -			$target->addChild($elementname, $source);
      -		else {
      -			$child = $target->addChild($elementname);
      -			foreach ($source->children() AS $childfield => $childentry)
      -				self::copy($childentry, $child, $childfield);
      -		}
      -	}
      -}
      +require_once("include/xml.php");
      +require_once("include/datetime.php");
       
       /**
        * @brief This class contain functions to create and send Diaspora XML files
      @@ -56,6 +20,50 @@ class xml {
        */
       class diaspora {
       
      +	public static function fetch_relay() {
      +
      +		$serverdata = get_config("system", "relay_server");
      +		if ($serverdata == "")
      +			return array();
      +
      +		$relay = array();
      +
      +		$servers = explode(",", $serverdata);
      +
      +		foreach($servers AS $server) {
      +			$server = trim($server);
      +			$batch = $server."/receive/public";
      +
      +			$relais = q("SELECT `batch`, `id`, `name`,`network` FROM `contact` WHERE `uid` = 0 AND `batch` = '%s' LIMIT 1", dbesc($batch));
      +
      +			if (!$relais) {
      +				$addr = "relay@".str_replace("http://", "", normalise_link($server));
      +
      +				$r = q("INSERT INTO `contact` (`uid`, `created`, `name`, `nick`, `addr`, `url`, `nurl`, `batch`, `network`, `rel`, `blocked`, `pending`, `writable`, `name-date`, `uri-date`, `avatar-date`)
      +					VALUES (0, '%s', '%s', 'relay', '%s', '%s', '%s', '%s', '%s', %d, 0, 0, 1, '%s', '%s', '%s')",
      +					datetime_convert(),
      +					dbesc($addr),
      +					dbesc($addr),
      +					dbesc($server),
      +					dbesc(normalise_link($server)),
      +					dbesc($batch),
      +					dbesc(NETWORK_DIASPORA),
      +					intval(CONTACT_IS_FOLLOWER),
      +					dbesc(datetime_convert()),
      +					dbesc(datetime_convert()),
      +					dbesc(datetime_convert())
      +				);
      +
      +				$relais = q("SELECT `batch`, `id`, `name`,`network` FROM `contact` WHERE `uid` = 0 AND `batch` = '%s' LIMIT 1", dbesc($batch));
      +				if ($relais)
      +					$relay[] = $relais[0];
      +			} else
      +				$relay[] = $relais[0];
      +		}
      +
      +		return $relay;
      +	}
      +
       	/**
       	 * @brief Dispatches public messages and find the fitting receivers
       	 *
      @@ -1180,6 +1188,9 @@ EOT;
       	}
       
       	private function receive_request_make_friend($importer, $contact) {
      +
      +		$a = get_app();
      +
       		if($contact["rel"] == CONTACT_IS_FOLLOWER && in_array($importer["page-flags"], array(PAGE_FREELOVE))) {
       			q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
       				intval(CONTACT_IS_FRIEND),
      @@ -1204,7 +1215,7 @@ EOT;
       			if($self && $contact["rel"] == CONTACT_IS_FOLLOWER) {
       
       				$arr = array();
      -				$arr["uri"] = $arr["parent-uri"] = item_new_uri(App::get_hostname(), $importer["uid"]);
      +				$arr["uri"] = $arr["parent-uri"] = item_new_uri($a->get_hostname(), $importer["uid"]);
       				$arr["uid"] = $importer["uid"];
       				$arr["contact-id"] = $self[0]["id"];
       				$arr["wall"] = 1;
      @@ -1369,7 +1380,7 @@ EOT;
       
       			// Maybe it is already a reshared item?
       			// Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares
      -			if (api_share_as_retweet($r[0]))
      +			if (self::is_reshare($r[0]["body"]))
       				$r = array();
       			else
       				return $r[0];
      @@ -1639,5 +1650,453 @@ EOT;
       
       		return $message_id;
       	}
      +
      +	/*******************************************************************************************
      +	 * Here come all the functions that are needed to transmit data with the Diaspora protocol *
      +	 *******************************************************************************************/
      +
      +	private function get_my_handle($me) {
      +		if ($contact["addr"] != "")
      +			return $contact["addr"];
      +
      +		// Normally we should have a filled "addr" field - but in the past this wasn't the case
      +		// So - just in case - we build the the address here.
      +		return $me["nickname"]."@".substr(App::get_baseurl(), strpos(App::get_baseurl(),"://") + 3);
      +	}
      +
      +	function build_public_message($msg, $user, $contact, $prvkey, $pubkey) {
      +
      +		logger("Message: ".$msg, LOGGER_DATA);
      +
      +		$handle = self::get_my_handle($user);
      +
      +		$b64url_data = base64url_encode($msg);
      +
      +		$data = str_replace(array("\n", "\r", " ", "\t"), array("", "", "", ""), $b64url_data);
      +
      +		$type = "application/xml";
      +		$encoding = "base64url";
      +		$alg = "RSA-SHA256";
      +
      +		$signable_data = $data.".".base64url_encode($type).".".base64url_encode($encoding).".".base64url_encode($alg);
      +
      +		$signature = rsa_sign($signable_data,$prvkey);
      +		$sig = base64url_encode($signature);
      +
      +$magic_env = <<< EOT
      +
      +
      +  
      + $handle +
      + + base64url + RSA-SHA256 + $data + $sig + +
      +EOT; + + logger("magic_env: ".$magic_env, LOGGER_DATA); + return $magic_env; + } + + private function build_private_message($msg, $user, $contact, $prvkey, $pubkey) { + + logger("Message: ".$msg, LOGGER_DATA); + + // without a public key nothing will work + + if (!$pubkey) { + logger("pubkey missing: contact id: ".$contact["id"]); + return false; + } + + $inner_aes_key = random_string(32); + $b_inner_aes_key = base64_encode($inner_aes_key); + $inner_iv = random_string(16); + $b_inner_iv = base64_encode($inner_iv); + + $outer_aes_key = random_string(32); + $b_outer_aes_key = base64_encode($outer_aes_key); + $outer_iv = random_string(16); + $b_outer_iv = base64_encode($outer_iv); + + $handle = self::get_my_handle($user); + + $padded_data = pkcs5_pad($msg,16); + $inner_encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $inner_aes_key, $padded_data, MCRYPT_MODE_CBC, $inner_iv); + + $b64_data = base64_encode($inner_encrypted); + + + $b64url_data = base64url_encode($b64_data); + $data = str_replace(array("\n", "\r", " ", "\t"), array("", "", "", ""), $b64url_data); + + $type = "application/xml"; + $encoding = "base64url"; + $alg = "RSA-SHA256"; + + $signable_data = $data.".".base64url_encode($type).".".base64url_encode($encoding).".".base64url_encode($alg); + + $signature = rsa_sign($signable_data,$prvkey); + $sig = base64url_encode($signature); + +$decrypted_header = <<< EOT + + $b_inner_iv + $b_inner_aes_key + $handle + +EOT; + + $decrypted_header = pkcs5_pad($decrypted_header,16); + + $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $outer_aes_key, $decrypted_header, MCRYPT_MODE_CBC, $outer_iv); + + $outer_json = json_encode(array("iv" => $b_outer_iv, "key" => $b_outer_aes_key)); + + $encrypted_outer_key_bundle = ""; + openssl_public_encrypt($outer_json, $encrypted_outer_key_bundle, $pubkey); + + $b64_encrypted_outer_key_bundle = base64_encode($encrypted_outer_key_bundle); + + logger("outer_bundle: ".$b64_encrypted_outer_key_bundle." key: ".$pubkey, LOGGER_DATA); + + $encrypted_header_json_object = json_encode(array("aes_key" => base64_encode($encrypted_outer_key_bundle), + "ciphertext" => base64_encode($ciphertext))); + $cipher_json = base64_encode($encrypted_header_json_object); + + $encrypted_header = "".$cipher_json.""; + +$magic_env = <<< EOT + + + $encrypted_header + + base64url + RSA-SHA256 + $data + $sig + + +EOT; + + logger("magic_env: ".$magic_env, LOGGER_DATA); + return $magic_env; + } + + private function build_message($msg, $user, $contact, $prvkey, $pubkey, $public = false) { + + if ($public) + $magic_env = self::build_public_message($msg,$user,$contact,$prvkey,$pubkey); + else + $magic_env = self::build_private_message($msg,$user,$contact,$prvkey,$pubkey); + + // The data that will be transmitted is double encoded via "urlencode", strange ... + $slap = "xml=".urlencode(urlencode($magic_env)); + return $slap; + } + + private function transmit($owner, $contact, $slap, $public_batch, $queue_run=false, $guid = "") { + + $a = get_app(); + + $enabled = intval(get_config("system", "diaspora_enabled")); + if(!$enabled) + return 200; + + $logid = random_string(4); + $dest_url = (($public_batch) ? $contact["batch"] : $contact["notify"]); + if (!$dest_url) { + logger("no url for contact: ".$contact["id"]." batch mode =".$public_batch); + return 0; + } + + logger("transmit: ".$logid."-".$guid." ".$dest_url); + + if (!$queue_run && was_recently_delayed($contact["id"])) { + $return_code = 0; + } else { + if (!intval(get_config("system", "diaspora_test"))) { + post_url($dest_url."/", $slap); + $return_code = $a->get_curl_code(); + } else { + logger("test_mode"); + return 200; + } + } + + logger("transmit: ".$logid."-".$guid." returns: ".$return_code); + + if(!$return_code || (($return_code == 503) && (stristr($a->get_curl_headers(), "retry-after")))) { + logger("queue message"); + + $r = q("SELECT `id` FROM `queue` WHERE `cid` = %d AND `network` = '%s' AND `content` = '%s' AND `batch` = %d LIMIT 1", + intval($contact["id"]), + dbesc(NETWORK_DIASPORA), + dbesc($slap), + intval($public_batch) + ); + if(count($r)) { + logger("add_to_queue ignored - identical item already in queue"); + } else { + // queue message for redelivery + add_to_queue($contact["id"], NETWORK_DIASPORA, $slap, $public_batch); + } + } + + + return(($return_code) ? $return_code : (-1)); + } + + public static function send_share($me,$contact) { + $myaddr = self::get_my_handle($me); + $theiraddr = $contact["addr"]; + + $data = array("XML" => array("post" => array("request" => array( + "sender_handle" => $myaddr, + "recipient_handle" => $theiraddr + )))); + + $msg = xml::from_array($data, $xml); + + $slap = self::build_message($msg, $me, $contact, $me["prvkey"], $contact["pubkey"]); + + return(self::transmit($owner,$contact,$slap, false)); + + } + + public static function send_unshare($me,$contact) { + $myaddr = self::get_my_handle($me); + + $data = array("XML" => array("post" => array("retraction" => array( + "post_guid" => $me["guid"], + "diaspora_handle" => $myaddr, + "type" => "Person" + )))); + + $msg = xml::from_array($data, $xml); + + $slap = self::build_message($msg, $me, $contact, $me["prvkey"], $contact["pubkey"]); + + return(self::transmit($owner,$contact,$slap, false)); + } + + function is_reshare($body) { + $body = trim($body); + + // Skip if it isn't a pure repeated messages + // Does it start with a share? + if (strpos($body, "[share") > 0) + return(false); + + // Does it end with a share? + if (strlen($body) > (strrpos($body, "[/share]") + 8)) + return(false); + + $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","$1",$body); + // Skip if there is no shared message in there + if ($body == $attributes) + return(false); + + $guid = ""; + preg_match("/guid='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $guid = $matches[1]; + + preg_match('/guid="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $guid = $matches[1]; + + if ($guid != "") { + $r = q("SELECT `contact-id` FROM `item` WHERE `guid` = '%s' AND `network` IN ('%s', '%s') LIMIT 1", + dbesc($guid), NETWORK_DFRN, NETWORK_DIASPORA); + if ($r) { + $ret= array(); + $ret["root_handle"] = diaspora_handle_from_contact($r[0]["contact-id"]); + $ret["root_guid"] = $guid; + return($ret); + } + } + + $profile = ""; + preg_match("/profile='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + preg_match('/profile="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + $ret= array(); + + $ret["root_handle"] = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile); + if (($ret["root_handle"] == $profile) OR ($ret["root_handle"] == "")) + return(false); + + $link = ""; + preg_match("/link='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $link = $matches[1]; + + preg_match('/link="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $link = $matches[1]; + + $ret["root_guid"] = preg_replace("=https?://(.*)/posts/(.*)=ism", "$2", $link); + if (($ret["root_guid"] == $link) OR ($ret["root_guid"] == "")) + return(false); + return($ret); + } + + function send_status($item, $owner, $contact, $public_batch = false) { + + $myaddr = self::get_my_handle($owner); + $theiraddr = $contact["addr"]; + + $title = $item["title"]; + $body = $item["body"]; + + // convert to markdown + $body = html_entity_decode(bb2diaspora($body)); + + // Adding the title + if(strlen($title)) + $body = "## ".html_entity_decode($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"; + } + } + + + $public = (($item["private"]) ? "false" : "true"); + + $created = datetime_convert("UTC", "UTC", $item["created"], 'Y-m-d H:i:s \U\T\C'); + + // Detect a share element and do a reshare + if (!$item['private'] AND ($ret = self::is_reshare($item["body"]))) { + $message = array("root_diaspora_id" => $ret["root_handle"], + "root_guid" => $ret["root_guid"], + "guid" => $item["guid"], + "diaspora_handle" => $myaddr, + "public" => $public, + "created_at" => $created, + "provider_display_name" => $item["app"]); + + $data = array("XML" => array("post" => array("reshare" => $message))); + } else { + $location = array(); + + if ($item["location"] != "") + $location["address"] = $item["location"]; + + if ($item["coord"] != "") { + $coord = explode(" ", $item["coord"]); + $location["lat"] = $coord[0]; + $location["lng"] = $coord[1]; + } + + $message = array("raw_message" => $body, + "location" => $location, + "guid" => $item["guid"], + "diaspora_handle" => $myaddr, + "public" => $public, + "created_at" => $created, + "provider_display_name" => $item["app"]); + + if (count($location) == 0) + unset($message["location"]); + + $data = array("XML" => array("post" => array("status_message" => $message))); + } + + $msg = xml::from_array($data, $xml); + + logger("status: ".$owner["username"]." -> ".$contact["name"]." base message: ".$msg, LOGGER_DATA); + logger("send guid ".$item["guid"], LOGGER_DEBUG); + + $slap = self::build_message($msg, $owner, $contact, $owner["uprvkey"], $contact["pubkey"], $public_batch); + + $return_code = self::transmit($owner,$contact,$slap, false); + + logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); + + return $return_code; + } + + function send_mail($item,$owner,$contact) { + + $myaddr = self::get_my_handle($owner); + + $r = q("SELECT * FROM `conv` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($item["convid"]), + intval($item["uid"]) + ); + + if (!count($r)) { + logger("conversation not found."); + return; + } + $cnv = $r[0]; + + $conv = array( + "guid" => $cnv["guid"], + "subject" => $cnv["subject"], + "created_at" => datetime_convert("UTC", "UTC", $cnv['created'], 'Y-m-d H:i:s \U\T\C'), + "diaspora_handle" => $cnv["creator"], + "participant_handles" => $cnv["recips"] + ); + + $body = bb2diaspora($item["body"]); + $created = datetime_convert("UTC", "UTC", $item["created"], 'Y-m-d H:i:s \U\T\C'); + + $signed_text = $item["guid"].";".$cnv["guid"].";".$body.";".$created.";".$myaddr.";".$cnv['guid']; + + $sig = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); + + $msg = array( + "guid" => $item["guid"], + "parent_guid" => $cnv["guid"], + "parent_author_signature" => $sig, + "author_signature" => $sig, + "text" => $body, + "created_at" => $created, + "diaspora_handle" => $myaddr, + "conversation_guid" => $cnv["guid"] + ); + + if ($item["reply"]) + $data = array("XML" => array("post" => array("message" => $msg))); + else { + $message = array("guid" => $cnv["guid"], + "subject" => $cnv["subject"], + "created_at" => datetime_convert("UTC", "UTC", $cnv['created'], 'Y-m-d H:i:s \U\T\C'), + "message" => $msg, + "diaspora_handle" => $cnv["creator"], + "participant_handles" => $cnv["recips"]); + + $data = array("XML" => array("post" => array("conversation" => $message))); + } + + $xmsg = xml::from_array($data, $xml); + + logger("conversation: ".print_r($xmsg,true), LOGGER_DATA); + logger("send guid ".$item["guid"], LOGGER_DEBUG); + + $slap = self::build_message($xmsg, $owner, $contact, $owner["uprvkey"], $contact["pubkey"], false); + + $return_code = self::transmit($owner, $contact, $slap, false, false, $item["guid"]); + + logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); + + return $return_code; + } } ?> diff --git a/include/xml.php b/include/xml.php new file mode 100644 index 0000000000..e46f53acc0 --- /dev/null +++ b/include/xml.php @@ -0,0 +1,39 @@ + $value) { + $root = new SimpleXMLElement("<".$key."/>"); + self::from_array($value, $root); + + $dom = dom_import_simplexml($root)->ownerDocument; + $dom->formatOutput = true; + $xml = $dom; + return $dom->saveXML(); + } + } + + foreach($array as $key => $value) { + if (!is_array($value) AND !is_numeric($key)) + $xml->addChild($key, $value); + elseif (is_array($value)) + self::from_array($value, $xml->addChild($key)); + } + } + + function copy(&$source, &$target, $elementname) { + if (count($source->children()) == 0) + $target->addChild($elementname, $source); + else { + $child = $target->addChild($elementname); + foreach ($source->children() AS $childfield => $childentry) + self::copy($childentry, $child, $childfield); + } + } +} +?> From 6468fbb9051ab6fe09bfcaaf0f46ce03491ace4f Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 6 Mar 2016 01:37:47 +0100 Subject: [PATCH 029/485] Retraction could work now as well. --- include/diaspora2.php | 34 ++++++++++++++++++++ include/xml.php | 2 +- view/templates/diaspora_relay_retraction.tpl | 5 ++- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index 197cb1da11..c745ab8366 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -2031,6 +2031,40 @@ EOT; return $return_code; } + function send_retraction($item, $owner, $contact, $public_batch = false) { + + $myaddr = self::get_my_handle($owner); + + // Check whether the retraction is for a top-level post or whether it's a relayable + if ($item["uri"] !== $item["parent-uri"]) { + $msg_type = "relayable_retraction"; + $target_type = (($item["verb"] === ACTIVITY_LIKE) ? "Like" : "Comment"); + } else { + $msg_type = "signed_retraction"; + $target_type = "StatusMessage"; + } + + $signed_text = $item["guid"].";".$target_type; + + $message = array("target_guid" => $item['guid'], + "target_type" => $target_type, + "sender_handle" => $myaddr, + "target_author_signature" => base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'))); + + $data = array("XML" => array("post" => array($msg_type => $message))); + $msg = xml::from_array($data, $xml); + + logger("send guid ".$item["guid"], LOGGER_DEBUG); + + $slap = self::build_message($msg, $owner, $contact, $owner["uprvkey"], $contact["pubkey"], $public_batch); + + $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $item["guid"]); + + logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); + + return $return_code; + } + function send_mail($item,$owner,$contact) { $myaddr = self::get_my_handle($owner); diff --git a/include/xml.php b/include/xml.php index e46f53acc0..9c458dab12 100644 --- a/include/xml.php +++ b/include/xml.php @@ -20,7 +20,7 @@ class xml { foreach($array as $key => $value) { if (!is_array($value) AND !is_numeric($key)) - $xml->addChild($key, $value); + $xml->addChild($key, xmlify($value)); elseif (is_array($value)) self::from_array($value, $xml->addChild($key)); } diff --git a/view/templates/diaspora_relay_retraction.tpl b/view/templates/diaspora_relay_retraction.tpl index b3f97a2e13..c4b44cd05f 100644 --- a/view/templates/diaspora_relay_retraction.tpl +++ b/view/templates/diaspora_relay_retraction.tpl @@ -1,11 +1,10 @@ - - {{$type}} {{$guid}} - {{$signature}} + {{$type}} {{$handle}} + {{$signature}} From af7b028b13b411bb241dacf488b1085dbaf26780 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 6 Mar 2016 11:41:51 +0100 Subject: [PATCH 030/485] Preparation for followups --- include/diaspora2.php | 77 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 5 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index c745ab8366..ef1b1c3801 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -1664,7 +1664,7 @@ EOT; return $me["nickname"]."@".substr(App::get_baseurl(), strpos(App::get_baseurl(),"://") + 3); } - function build_public_message($msg, $user, $contact, $prvkey, $pubkey) { + private function build_public_message($msg, $user, $contact, $prvkey, $pubkey) { logger("Message: ".$msg, LOGGER_DATA); @@ -1884,7 +1884,7 @@ EOT; return(self::transmit($owner,$contact,$slap, false)); } - function is_reshare($body) { + private function is_reshare($body) { $body = trim($body); // Skip if it isn't a pure repeated messages @@ -1951,7 +1951,7 @@ EOT; return($ret); } - function send_status($item, $owner, $contact, $public_batch = false) { + public static function send_status($item, $owner, $contact, $public_batch = false) { $myaddr = self::get_my_handle($owner); $theiraddr = $contact["addr"]; @@ -2030,8 +2030,75 @@ EOT; return $return_code; } +/* + public static function diaspora_send_followup($item,$owner,$contact,$public_batch = false) { - function send_retraction($item, $owner, $contact, $public_batch = false) { + $myaddr = self::get_my_handle($owner); + + // Diaspora doesn't support threaded comments, but some + // versions of Diaspora (i.e. Diaspora-pistos) support + // likes on comments + if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) { + $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1", + dbesc($item['thr-parent']) + ); + } else { + // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always + // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. + // The only item with `parent` and `id` as the parent id is the parent item. + $p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1", + intval($item['parent']), + intval($item['parent']) + ); + } + if(count($p)) + $parent = $p[0]; + else + return; + + if($item['verb'] === ACTIVITY_LIKE) { + $tpl = get_markup_template('diaspora_like.tpl'); + $like = true; + $target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment'); + $positive = 'true'; + + if(($item['deleted'])) + logger('diaspora_send_followup: received deleted "like". Those should go to diaspora_send_retraction'); + } else { + $tpl = get_markup_template('diaspora_comment.tpl'); + $like = false; + } + + $text = html_entity_decode(bb2diaspora($item['body'])); + + // sign it + + if($like) + $signed_text = $positive . ';' . $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $myaddr; + else + $signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $myaddr; + + $authorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); + + $msg = replace_macros($tpl,array( + '$guid' => xmlify($item['guid']), + '$parent_guid' => xmlify($parent['guid']), + '$target_type' =>xmlify($target_type), + '$authorsig' => xmlify($authorsig), + '$body' => xmlify($text), + '$positive' => xmlify($positive), + '$handle' => xmlify($myaddr) + )); + + logger('diaspora_followup: base message: ' . $msg, LOGGER_DATA); + logger('send guid '.$item['guid'], LOGGER_DEBUG); + + $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch))); + + return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid'])); + } +*/ + public static function send_retraction($item, $owner, $contact, $public_batch = false) { $myaddr = self::get_my_handle($owner); @@ -2065,7 +2132,7 @@ EOT; return $return_code; } - function send_mail($item,$owner,$contact) { + public static function send_mail($item,$owner,$contact) { $myaddr = self::get_my_handle($owner); From 182bee265e3aa68bb9c85f732e8306ef28ab6b1f Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 6 Mar 2016 22:49:50 +0100 Subject: [PATCH 031/485] Sending like and comment should work now. --- include/diaspora2.php | 131 ++++++++++++++++++++++++------------------ 1 file changed, 75 insertions(+), 56 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index ef1b1c3801..0ab28d7b2c 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -2030,74 +2030,93 @@ EOT; return $return_code; } -/* - public static function diaspora_send_followup($item,$owner,$contact,$public_batch = false) { + + private function construct_like($item,$owner,$contact,$public_batch = false) { $myaddr = self::get_my_handle($owner); - // Diaspora doesn't support threaded comments, but some - // versions of Diaspora (i.e. Diaspora-pistos) support - // likes on comments - if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) { - $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1", - dbesc($item['thr-parent']) - ); - } else { - // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always - // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. - // The only item with `parent` and `id` as the parent id is the parent item. - $p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1", - intval($item['parent']), - intval($item['parent']) - ); - } - if(count($p)) - $parent = $p[0]; - else - return; + $p = q("SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1", + dbesc($item["thr-parent"]) + ); + if(!$p) + return false; - if($item['verb'] === ACTIVITY_LIKE) { - $tpl = get_markup_template('diaspora_like.tpl'); - $like = true; - $target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment'); - $positive = 'true'; + $parent = $p[0]; - if(($item['deleted'])) - logger('diaspora_send_followup: received deleted "like". Those should go to diaspora_send_retraction'); - } else { - $tpl = get_markup_template('diaspora_comment.tpl'); - $like = false; - } - - $text = html_entity_decode(bb2diaspora($item['body'])); + $target_type = ($parent["uri"] === $parent["parent-uri"] ? "Post" : "Comment"); + $positive = "true"; // sign it + $signed_text = $positive.";".$item["guid"].";".$target_type.";".$parent["guid"].";".$myaddr; - if($like) - $signed_text = $positive . ';' . $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $myaddr; - else - $signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $myaddr; + $authorsig = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); - $authorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); + $message = array("positive" => $positive, + "guid" => $item["guid"], + "target_type" => $item["guid"], + "parent_guid" => $parent["guid"], + "author_signature" => $authorsig, + "diaspora_handle" => $myaddr); - $msg = replace_macros($tpl,array( - '$guid' => xmlify($item['guid']), - '$parent_guid' => xmlify($parent['guid']), - '$target_type' =>xmlify($target_type), - '$authorsig' => xmlify($authorsig), - '$body' => xmlify($text), - '$positive' => xmlify($positive), - '$handle' => xmlify($myaddr) - )); + $data = array("XML" => array("post" => array("like" => $message))); - logger('diaspora_followup: base message: ' . $msg, LOGGER_DATA); - logger('send guid '.$item['guid'], LOGGER_DEBUG); - - $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch))); - - return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid'])); + return xml::from_array($data, $xml); } -*/ + + private function construct_comment($item,$owner,$contact,$public_batch = false) { + + $myaddr = self::get_my_handle($owner); + + $p = q("SELECT `guid` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1", + intval($item["parent"]), + intval($item["parent"]) + ); + + if (!$p) + return false; + + $parent = $p[0]; + + $text = html_entity_decode(bb2diaspora($item["body"])); + + // sign it + $signed_text = $item["guid"].";".$parent["guid"].";".$text.";".$myaddr; + + $authorsig = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); + + $message = array("guid" => $item["guid"], + "parent_guid" => $parent["guid"], + "author_signature" => $authorsig, + "text" => $text, + "diaspora_handle" => $myaddr); + + $data = array("XML" => array("post" => array("comment" => $message))); + + return xml::from_array($data, $xml); + } + + public static function send_followup($item,$owner,$contact,$public_batch = false) { + + if($item['verb'] === ACTIVITY_LIKE) + $msg = self::construct_like($item, $owner, $contact, $public_batch); + else + $msg = self::construct_comment($item, $owner, $contact, $public_batch); + + if (!$msg) + return $msg; + + logger("base message: ".$msg, LOGGER_DATA); + logger("send guid ".$item["guid"], LOGGER_DEBUG); + + $slap = self::build_message($msg, $owner, $contact, $owner["uprvkey"], $contact["pubkey"], $public_batch); + + $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $item["guid"]); + + logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); + + return $return_code; + } + public static function send_retraction($item, $owner, $contact, $public_batch = false) { $myaddr = self::get_my_handle($owner); From db15f76177fedd9620ed62518d4c11c6ac493107 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 7 Mar 2016 01:34:06 +0100 Subject: [PATCH 032/485] Relaying is nearly done --- include/diaspora2.php | 219 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 203 insertions(+), 16 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index 0ab28d7b2c..1cc6e55e3b 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -2063,32 +2063,45 @@ EOT; return xml::from_array($data, $xml); } - private function construct_comment($item,$owner,$contact,$public_batch = false) { + private function construct_comment($item,$owner,$contact,$public_batch = false, $data = null) { - $myaddr = self::get_my_handle($owner); + if (is_array($data)) + $message = $data; + else { + $myaddr = self::get_my_handle($owner); - $p = q("SELECT `guid` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1", - intval($item["parent"]), - intval($item["parent"]) - ); + $p = q("SELECT `guid` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1", + intval($item["parent"]), + intval($item["parent"]) + ); - if (!$p) - return false; + if (!$p) + return false; - $parent = $p[0]; + $parent = $p[0]; - $text = html_entity_decode(bb2diaspora($item["body"])); + $text = html_entity_decode(bb2diaspora($item["body"])); + + $message = array("guid" => $item["guid"], + "parent_guid" => $parent["guid"], + "author_signature" => "", + "text" => $text, + "diaspora_handle" => $myaddr); + } // sign it - $signed_text = $item["guid"].";".$parent["guid"].";".$text.";".$myaddr; + $sigmsg = $message; + unset($sigmsg["author_signature"]); + unset($sigmsg["parent_author_signature"]); + + $signed_text = implode(";", $sigmsg); $authorsig = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); - $message = array("guid" => $item["guid"], - "parent_guid" => $parent["guid"], - "author_signature" => $authorsig, - "text" => $text, - "diaspora_handle" => $myaddr); + if ($message["author_signature"] == "") + $message["author_signature"] = $authorsig; + else + $message["parent_author_signature"] = $authorsig; $data = array("XML" => array("post" => array("comment" => $message))); @@ -2117,6 +2130,180 @@ EOT; return $return_code; } + function send_relay($item, $owner, $contact, $public_batch = false) { + + if ($item["deleted"]) + $sql_sign_id = "retract_iid"; + else + $sql_sign_id = "iid"; + + // fetch the original signature if the relayable was created by a Diaspora + // or DFRN user. + + $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE `".$sql_sign_id."` = %d LIMIT 1", + intval($item["id"]) + ); + + if(count($r)) { + $orig_sign = $r[0]; + $signed_text = $orig_sign['signed_text']; + $authorsig = $orig_sign['signature']; + $handle = $orig_sign['signer']; + + // Split the signed text + $signed_parts = explode(";", $signed_text); + + // Remove the comment guid + $guid = array_shift($signed_parts); + + // Remove the parent guid + $parent_guid = array_shift($signed_parts); + + // Remove the handle + $handle = array_pop($signed_parts); + + // Glue the parts together + $text = implode(";", $signed_parts); + + $data = array("guid" => $guid, + "parent_guid" => $parent_guid, + "parent_author_signature" => "", + "author_signature" => $orig_sign['signature'], + "text" => implode(";", $signed_parts), + "diaspora_handle" => $handle); + } + + + $myaddr = self::get_my_handle($owner); + + if ($item['deleted']) + ; // Retraction + elseif($item['verb'] === ACTIVITY_LIKE) + $msg = self::construct_like($item, $owner, $contact, $public_batch); + else + $msg = self::construct_comment($item, $owner, $contact, $public_batch, $data); +die($msg); +/* + // Diaspora doesn't support threaded comments, but some + // versions of Diaspora (i.e. Diaspora-pistos) support + // likes on comments + if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) { + $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1", + dbesc($item['thr-parent']) + ); + } + else { + // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always + // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. + // The only item with `parent` and `id` as the parent id is the parent item. + $p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1", + intval($item['parent']), + intval($item['parent']) + ); + } + if(count($p)) + $parent = $p[0]; + else + return; + + $like = false; + $relay_retract = false; + $sql_sign_id = 'iid'; + if( $item['deleted']) { + $relay_retract = true; + + $target_type = ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment'); + + $sql_sign_id = 'retract_iid'; + $tpl = get_markup_template('diaspora_relayable_retraction.tpl'); + } + elseif($item['verb'] === ACTIVITY_LIKE) { + $like = true; + + $target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment'); +// $positive = (($item['deleted']) ? 'false' : 'true'); + $positive = 'true'; + + $tpl = get_markup_template('diaspora_like_relay.tpl'); + } + else { // item is a comment + $tpl = get_markup_template('diaspora_comment_relay.tpl'); + } + + + // fetch the original signature if the relayable was created by a Diaspora + // or DFRN user. Relayables for other networks are not supported. + + $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE " . $sql_sign_id . " = %d LIMIT 1", + intval($item['id']) + ); + if(count($r)) { + $orig_sign = $r[0]; + $signed_text = $orig_sign['signed_text']; + $authorsig = $orig_sign['signature']; + $handle = $orig_sign['signer']; + + // Split the signed text + $signed_parts = explode(";", $signed_text); + + // Remove the parent guid + array_shift($signed_parts); + + // Remove the comment guid + array_shift($signed_parts); + + // Remove the handle + array_pop($signed_parts); + + // Glue the parts together + $text = implode(";", $signed_parts); + } + else { + // This part is meant for cases where we don't have the signatur. (Which shouldn't happen with posts from Diaspora and Friendica) + // This means that the comment won't be accepted by newer Diaspora servers + + $body = $item['body']; + $text = html_entity_decode(bb2diaspora($body)); + + $handle = diaspora_handle_from_contact($item['contact-id']); + if(! $handle) + return; + + if($relay_retract) + $signed_text = $item['guid'] . ';' . $target_type; + elseif($like) + $signed_text = $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $positive . ';' . $handle; + else + $signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $handle; + + $authorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); + } + + // Sign the relayable with the top-level owner's signature + $parentauthorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); + + $msg = replace_macros($tpl,array( + '$guid' => xmlify($item['guid']), + '$parent_guid' => xmlify($parent['guid']), + '$target_type' =>xmlify($target_type), + '$authorsig' => xmlify($authorsig), + '$parentsig' => xmlify($parentauthorsig), + '$body' => xmlify($text), + '$positive' => xmlify($positive), + '$handle' => xmlify($handle) + )); + + logger('diaspora_send_relay: base message: ' . $msg, LOGGER_DATA); + logger('send guid '.$item['guid'], LOGGER_DEBUG); + + $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch))); + //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)); + + return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid'])); +*/ + } + + public static function send_retraction($item, $owner, $contact, $public_batch = false) { $myaddr = self::get_my_handle($owner); From 373beb0343738fb357b5fbddd9ec76783b003ad5 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 7 Mar 2016 08:17:21 +0100 Subject: [PATCH 033/485] Relayed Likes and relayed comments should work, code needs beautification --- include/diaspora2.php | 122 +++++++++++++++++++++++++----------------- 1 file changed, 74 insertions(+), 48 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index 1cc6e55e3b..48093cc5b9 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -1799,6 +1799,16 @@ EOT; return $slap; } + private function get_signature($owner, $message) { + $sigmsg = $message; + unset($sigmsg["author_signature"]); + unset($sigmsg["parent_author_signature"]); + + $signed_text = implode(";", $sigmsg); + + return base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); + } + private function transmit($owner, $contact, $slap, $public_batch, $queue_run=false, $guid = "") { $a = get_app(); @@ -2031,32 +2041,37 @@ EOT; return $return_code; } - private function construct_like($item,$owner,$contact,$public_batch = false) { + private function construct_like($item,$owner,$contact,$public_batch = false, $data = null) { - $myaddr = self::get_my_handle($owner); + if (is_array($data)) + $message = $data; + else { + $myaddr = self::get_my_handle($owner); - $p = q("SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1", - dbesc($item["thr-parent"]) - ); - if(!$p) - return false; + $p = q("SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1", + dbesc($item["thr-parent"])); + if(!$p) + return false; - $parent = $p[0]; + $parent = $p[0]; - $target_type = ($parent["uri"] === $parent["parent-uri"] ? "Post" : "Comment"); - $positive = "true"; + $target_type = ($parent["uri"] === $parent["parent-uri"] ? "Post" : "Comment"); + $positive = "true"; - // sign it - $signed_text = $positive.";".$item["guid"].";".$target_type.";".$parent["guid"].";".$myaddr; + $message = array("positive" => $positive, + "guid" => $item["guid"], + "target_type" => $target_type, + "parent_guid" => $parent["guid"], + "author_signature" => $authorsig, + "diaspora_handle" => $myaddr); + } - $authorsig = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); + $authorsig = self::get_signature($owner, $message); - $message = array("positive" => $positive, - "guid" => $item["guid"], - "target_type" => $item["guid"], - "parent_guid" => $parent["guid"], - "author_signature" => $authorsig, - "diaspora_handle" => $myaddr); + if ($message["author_signature"] == "") + $message["author_signature"] = $authorsig; + else + $message["parent_author_signature"] = $authorsig; $data = array("XML" => array("post" => array("like" => $message))); @@ -2089,14 +2104,7 @@ EOT; "diaspora_handle" => $myaddr); } - // sign it - $sigmsg = $message; - unset($sigmsg["author_signature"]); - unset($sigmsg["parent_author_signature"]); - - $signed_text = implode(";", $sigmsg); - - $authorsig = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); + $authorsig = self::get_signature($owner, $message); if ($message["author_signature"] == "") $message["author_signature"] = $authorsig; @@ -2153,36 +2161,56 @@ EOT; // Split the signed text $signed_parts = explode(";", $signed_text); - // Remove the comment guid - $guid = array_shift($signed_parts); + if ($item['verb'] === ACTIVITY_LIKE) { + $data = array("positive" => $signed_parts[0], + "guid" => $signed_parts[1], + "target_type" => $signed_parts[2], + "parent_guid" => $signed_parts[3], + "parent_author_signature" => "", + "author_signature" => $orig_sign['signature'], + "diaspora_handle" => $signed_parts[4]); + } else { + // Remove the comment guid + $guid = array_shift($signed_parts); - // Remove the parent guid - $parent_guid = array_shift($signed_parts); + // Remove the parent guid + $parent_guid = array_shift($signed_parts); - // Remove the handle - $handle = array_pop($signed_parts); + // Remove the handle + $handle = array_pop($signed_parts); - // Glue the parts together - $text = implode(";", $signed_parts); + // Glue the parts together + $text = implode(";", $signed_parts); - $data = array("guid" => $guid, - "parent_guid" => $parent_guid, - "parent_author_signature" => "", - "author_signature" => $orig_sign['signature'], - "text" => implode(";", $signed_parts), - "diaspora_handle" => $handle); + $data = array("guid" => $guid, + "parent_guid" => $parent_guid, + "parent_author_signature" => "", + "author_signature" => $orig_sign['signature'], + "text" => implode(";", $signed_parts), + "diaspora_handle" => $handle); + } } - - $myaddr = self::get_my_handle($owner); - if ($item['deleted']) - ; // Retraction + ; // Relayed Retraction elseif($item['verb'] === ACTIVITY_LIKE) - $msg = self::construct_like($item, $owner, $contact, $public_batch); + $msg = self::construct_like($item, $owner, $contact, $public_batch, $data); else $msg = self::construct_comment($item, $owner, $contact, $public_batch, $data); die($msg); + + logger('base message: '.$msg, LOGGER_DATA); + logger('send guid '.$item['guid'], LOGGER_DEBUG); + + $slap = self::build_message($msg,$owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch); + + $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $item['guid']); + + logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); + + return $return_code; + } + /* // Diaspora doesn't support threaded comments, but some // versions of Diaspora (i.e. Diaspora-pistos) support @@ -2301,8 +2329,6 @@ die($msg); return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid'])); */ - } - public static function send_retraction($item, $owner, $contact, $public_batch = false) { From 16eb8fd9bf705ad5d4d9f739b9264d7c8d15dace Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 7 Mar 2016 15:20:48 +0100 Subject: [PATCH 034/485] Small things ... --- include/diaspora2.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index 48093cc5b9..4c9d79912e 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -1525,7 +1525,7 @@ EOT; // Formerly we stored the signed text, the signature and the author in different fields. // We now store the raw data so that we are more flexible. - q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')", + q("INSERT INTO `sign` (`retract_iid`,`signed_text`) VALUES (%d,'%s')", intval($r[0]["id"]), dbesc(json_encode($data)) ); @@ -1552,7 +1552,7 @@ EOT; case "StatusMessage": return self::item_retraction($importer, $contact, $data);; - case "Person": + case "Person": /// @todo an "unshare" shouldn't remove the contact contact_remove($contact["id"]); return true; From 32c66246c4fcddcab30e4850d5c6b62bdfac225a Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 9 Mar 2016 19:30:04 +0100 Subject: [PATCH 035/485] Some fixes for the fetching of postings by using /p/ --- include/diaspora2.php | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index 4c9d79912e..7aa0fc6989 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -550,12 +550,15 @@ class diaspora { return self::fetch_message($source_xml->root_guid, $server, ++$level); } + $author = ""; + // Fetch the author - for the old and the new Diaspora version if ($source_xml->post->status_message->diaspora_handle) $author = (string)$source_xml->post->status_message->diaspora_handle; - elseif ($source_xml->author) + elseif ($source_xml->author AND ($source_xml->getName() == "status_message")) $author = (string)$source_xml->author; + // If this isn't a "status_message" then quit if (!$author) return false; @@ -1391,22 +1394,24 @@ EOT; logger("1st try: reshared message ".$guid." will be fetched from original server: ".$server); $item_id = self::store_by_guid($guid, $server); - if (!$item_id) { - $server = "https://".substr($author, strpos($author, "@") + 1); - logger("2nd try: reshared message ".$guid." will be fetched from sharer's server: ".$server); - $item = self::store_by_guid($guid, $server); - } if (!$item_id) { $server = "http://".substr($orig_author, strpos($orig_author, "@") + 1); - logger("3rd try: reshared message ".$guid." will be fetched from original server: ".$server); - $item = self::store_by_guid($guid, $server); + logger("2nd try: reshared message ".$guid." will be fetched from original server: ".$server); + $item_id = self::store_by_guid($guid, $server); + } + + // Deactivated by now since there is a risk that someone could manipulate postings through this method +/* if (!$item_id) { + $server = "https://".substr($author, strpos($author, "@") + 1); + logger("3rd try: reshared message ".$guid." will be fetched from sharer's server: ".$server); + $item_id = self::store_by_guid($guid, $server); } if (!$item_id) { $server = "http://".substr($author, strpos($author, "@") + 1); logger("4th try: reshared message ".$guid." will be fetched from sharer's server: ".$server); - $item = self::store_by_guid($guid, $server); + $item_id = self::store_by_guid($guid, $server); } - +*/ if ($item_id) { $r = q("SELECT `body`, `tag`, `app`, `created`, `object-type`, `uri`, `guid`, `author-name`, `author-link`, `author-avatar` From 0f65eee69567483d5b55023e53014655c38a5237 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 12 Mar 2016 19:19:20 +0100 Subject: [PATCH 036/485] Everything could work - needs some beautification and documentation --- include/diaspora2.php | 473 +++++++++++++----------------------------- 1 file changed, 142 insertions(+), 331 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index 7aa0fc6989..3d12ef5bbf 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -123,53 +123,43 @@ class diaspora { $type = $fields->getName(); switch ($type) { - case "account_deletion": // Done - //return true; + case "account_deletion": return self::receive_account_deletion($importer, $fields); - case "comment": // Done - //return true; + case "comment": return self::receive_comment($importer, $sender, $fields); - case "conversation": // Done - //return true; + case "conversation": return self::receive_conversation($importer, $msg, $fields); - case "like": // Done - //return true; + case "like": return self::receive_like($importer, $sender, $fields); - case "message": // Done - //return true; + case "message": return self::receive_message($importer, $fields); case "participation": // Not implemented return self::receive_participation($importer, $fields); - case "photo": // Not needed + case "photo": // Not implemented return self::receive_photo($importer, $fields); case "poll_participation": // Not implemented return self::receive_poll_participation($importer, $fields); - case "profile": // Done - //return true; + case "profile": return self::receive_profile($importer, $fields); case "request": - //return true; return self::receive_request($importer, $fields); - case "reshare": // Done - //return true; + case "reshare": return self::receive_reshare($importer, $fields); - case "retraction": // Done - //return true; + case "retraction": return self::receive_retraction($importer, $sender, $fields); - case "status_message": // Done - //return true; + case "status_message": return self::receive_status_message($importer, $fields); default: @@ -1364,7 +1354,7 @@ EOT; $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer["uid"])); if($u) - $ret = diaspora_share($u[0], $contact_record); + $ret = self::send_share($u[0], $contact_record); } return true; @@ -1557,8 +1547,10 @@ EOT; case "StatusMessage": return self::item_retraction($importer, $contact, $data);; - case "Person": /// @todo an "unshare" shouldn't remove the contact - contact_remove($contact["id"]); + case "Person": + /// @todo What should we do with an "unshare"? + // Removing the contact isn't correct since we still can read the public items + //contact_remove($contact["id"]); return true; default: @@ -1862,41 +1854,43 @@ EOT; } } - return(($return_code) ? $return_code : (-1)); } - public static function send_share($me,$contact) { - $myaddr = self::get_my_handle($me); - $theiraddr = $contact["addr"]; - $data = array("XML" => array("post" => array("request" => array( - "sender_handle" => $myaddr, - "recipient_handle" => $theiraddr - )))); + private function build_and_transmit($owner, $contact, $type, $message, $public_batch = false, $guid = "") { + + $data = array("XML" => array("post" => array($type => $message))); $msg = xml::from_array($data, $xml); - $slap = self::build_message($msg, $me, $contact, $me["prvkey"], $contact["pubkey"]); + logger('message: '.$msg, LOGGER_DATA); + logger('send guid '.$guid, LOGGER_DEBUG); - return(self::transmit($owner,$contact,$slap, false)); + $slap = self::build_message($msg, $owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch); +die($slap); + $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $guid); + logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); + + return $return_code; } - public static function send_unshare($me,$contact) { - $myaddr = self::get_my_handle($me); + public static function send_share($owner,$contact) { - $data = array("XML" => array("post" => array("retraction" => array( - "post_guid" => $me["guid"], - "diaspora_handle" => $myaddr, - "type" => "Person" - )))); + $message = array("sender_handle" => self::get_my_handle($owner), + "recipient_handle" => $contact["addr"]); - $msg = xml::from_array($data, $xml); + return self::build_and_transmit($owner, $contact, "request", $message); + } - $slap = self::build_message($msg, $me, $contact, $me["prvkey"], $contact["pubkey"]); + public static function send_unshare($owner,$contact) { - return(self::transmit($owner,$contact,$slap, false)); + $message = array("post_guid" => $owner["guid"], + "diaspora_handle" => self::get_my_handle($owner), + "type" => "Person"); + + return self::build_and_transmit($owner, $contact, "retraction", $message); } private function is_reshare($body) { @@ -1969,27 +1963,6 @@ EOT; public static function send_status($item, $owner, $contact, $public_batch = false) { $myaddr = self::get_my_handle($owner); - $theiraddr = $contact["addr"]; - - $title = $item["title"]; - $body = $item["body"]; - - // convert to markdown - $body = html_entity_decode(bb2diaspora($body)); - - // Adding the title - if(strlen($title)) - $body = "## ".html_entity_decode($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"; - } - } - $public = (($item["private"]) ? "false" : "true"); @@ -2005,8 +1978,27 @@ EOT; "created_at" => $created, "provider_display_name" => $item["app"]); - $data = array("XML" => array("post" => array("reshare" => $message))); + $type = "reshare"; } else { + $title = $item["title"]; + $body = $item["body"]; + + // convert to markdown + $body = html_entity_decode(bb2diaspora($body)); + + // Adding the title + if(strlen($title)) + $body = "## ".html_entity_decode($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"; + } + } + $location = array(); if ($item["location"] != "") @@ -2029,126 +2021,87 @@ EOT; if (count($location) == 0) unset($message["location"]); - $data = array("XML" => array("post" => array("status_message" => $message))); + $type = "status_message"; } - $msg = xml::from_array($data, $xml); - - logger("status: ".$owner["username"]." -> ".$contact["name"]." base message: ".$msg, LOGGER_DATA); - logger("send guid ".$item["guid"], LOGGER_DEBUG); - - $slap = self::build_message($msg, $owner, $contact, $owner["uprvkey"], $contact["pubkey"], $public_batch); - - $return_code = self::transmit($owner,$contact,$slap, false); - - logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); - - return $return_code; + return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); } - private function construct_like($item,$owner,$contact,$public_batch = false, $data = null) { + private function construct_like($item, $owner) { - if (is_array($data)) - $message = $data; - else { - $myaddr = self::get_my_handle($owner); + $myaddr = self::get_my_handle($owner); - $p = q("SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1", - dbesc($item["thr-parent"])); - if(!$p) - return false; + $p = q("SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1", + dbesc($item["thr-parent"])); + if(!$p) + return false; - $parent = $p[0]; + $parent = $p[0]; - $target_type = ($parent["uri"] === $parent["parent-uri"] ? "Post" : "Comment"); - $positive = "true"; + $target_type = ($parent["uri"] === $parent["parent-uri"] ? "Post" : "Comment"); + $positive = "true"; - $message = array("positive" => $positive, - "guid" => $item["guid"], - "target_type" => $target_type, - "parent_guid" => $parent["guid"], - "author_signature" => $authorsig, - "diaspora_handle" => $myaddr); - } - - $authorsig = self::get_signature($owner, $message); - - if ($message["author_signature"] == "") - $message["author_signature"] = $authorsig; - else - $message["parent_author_signature"] = $authorsig; - - $data = array("XML" => array("post" => array("like" => $message))); - - return xml::from_array($data, $xml); + return(array("positive" => $positive, + "guid" => $item["guid"], + "target_type" => $target_type, + "parent_guid" => $parent["guid"], + "author_signature" => $authorsig, + "diaspora_handle" => $myaddr)); } - private function construct_comment($item,$owner,$contact,$public_batch = false, $data = null) { + private function construct_comment($item, $owner) { - if (is_array($data)) - $message = $data; - else { - $myaddr = self::get_my_handle($owner); + $myaddr = self::get_my_handle($owner); - $p = q("SELECT `guid` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1", - intval($item["parent"]), - intval($item["parent"]) - ); + $p = q("SELECT `guid` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1", + intval($item["parent"]), + intval($item["parent"]) + ); - if (!$p) - return false; + if (!$p) + return false; - $parent = $p[0]; + $parent = $p[0]; - $text = html_entity_decode(bb2diaspora($item["body"])); + $text = html_entity_decode(bb2diaspora($item["body"])); - $message = array("guid" => $item["guid"], - "parent_guid" => $parent["guid"], - "author_signature" => "", - "text" => $text, - "diaspora_handle" => $myaddr); - } - - $authorsig = self::get_signature($owner, $message); - - if ($message["author_signature"] == "") - $message["author_signature"] = $authorsig; - else - $message["parent_author_signature"] = $authorsig; - - $data = array("XML" => array("post" => array("comment" => $message))); - - return xml::from_array($data, $xml); + return(array("guid" => $item["guid"], + "parent_guid" => $parent["guid"], + "author_signature" => "", + "text" => $text, + "diaspora_handle" => $myaddr)); } public static function send_followup($item,$owner,$contact,$public_batch = false) { - if($item['verb'] === ACTIVITY_LIKE) - $msg = self::construct_like($item, $owner, $contact, $public_batch); - else - $msg = self::construct_comment($item, $owner, $contact, $public_batch); + if($item['verb'] === ACTIVITY_LIKE) { + $message = self::construct_like($item, $owner); + $type = "like"; + } else { + $message = self::construct_comment($item, $owner); + $type = "comment"; + } - if (!$msg) - return $msg; + if (!$message) + return false; - logger("base message: ".$msg, LOGGER_DATA); - logger("send guid ".$item["guid"], LOGGER_DEBUG); + $message["author_signature"] = self::get_signature($owner, $message); - $slap = self::build_message($msg, $owner, $contact, $owner["uprvkey"], $contact["pubkey"], $public_batch); - - $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $item["guid"]); - - logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); - - return $return_code; + return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); } function send_relay($item, $owner, $contact, $public_batch = false) { - if ($item["deleted"]) + if ($item["deleted"]) { $sql_sign_id = "retract_iid"; - else + $type = "relayable_retraction"; + } elseif ($item['verb'] === ACTIVITY_LIKE) { $sql_sign_id = "iid"; + $type = "like"; + } else { + $sql_sign_id = "iid"; + $type = "comment"; + } // fetch the original signature if the relayable was created by a Diaspora // or DFRN user. @@ -2157,24 +2110,32 @@ EOT; intval($item["id"]) ); - if(count($r)) { - $orig_sign = $r[0]; - $signed_text = $orig_sign['signed_text']; - $authorsig = $orig_sign['signature']; - $handle = $orig_sign['signer']; + if (!$r) + return self::send_followup($item, $owner, $contact, $public_batch); + + $orig_sign = $r[0]; + + // Old way - can be removed for the master branch + if ($orig_sign['signed_text'] AND $orig_sign['signature'] AND $orig_sign['signer']) { // Split the signed text - $signed_parts = explode(";", $signed_text); + $signed_parts = explode(";", $orig_sign['signed_text']); - if ($item['verb'] === ACTIVITY_LIKE) { - $data = array("positive" => $signed_parts[0], + if ($item["deleted"]) + $message = array("parent_author_signature" => "", + "target_guid" => $signed_parts[0], + "target_type" => $signed_parts[1], + "sender_handle" => $orig_sign['signer'], + "target_author_signature" => $orig_sign['signature']); + elseif ($item['verb'] === ACTIVITY_LIKE) + $message = array("positive" => $signed_parts[0], "guid" => $signed_parts[1], "target_type" => $signed_parts[2], "parent_guid" => $signed_parts[3], "parent_author_signature" => "", "author_signature" => $orig_sign['signature'], "diaspora_handle" => $signed_parts[4]); - } else { + else { // Remove the comment guid $guid = array_shift($signed_parts); @@ -2187,154 +2148,26 @@ EOT; // Glue the parts together $text = implode(";", $signed_parts); - $data = array("guid" => $guid, + $message = array("guid" => $guid, "parent_guid" => $parent_guid, "parent_author_signature" => "", "author_signature" => $orig_sign['signature'], "text" => implode(";", $signed_parts), "diaspora_handle" => $handle); } + } else { // New way + $message = json_decode($orig_sign['signed_text']); } - if ($item['deleted']) - ; // Relayed Retraction - elseif($item['verb'] === ACTIVITY_LIKE) - $msg = self::construct_like($item, $owner, $contact, $public_batch, $data); - else - $msg = self::construct_comment($item, $owner, $contact, $public_batch, $data); -die($msg); + if ($item["deleted"]) { + $signed_text = $message["target_guid"].';'.$message["target_type"]; + $message["parent_author_signature"] = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); + } else + $message["parent_author_signature"] = self::get_signature($owner, $message); - logger('base message: '.$msg, LOGGER_DATA); - logger('send guid '.$item['guid'], LOGGER_DEBUG); - - $slap = self::build_message($msg,$owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch); - - $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $item['guid']); - - logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); - - return $return_code; + return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); } -/* - // Diaspora doesn't support threaded comments, but some - // versions of Diaspora (i.e. Diaspora-pistos) support - // likes on comments - if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) { - $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1", - dbesc($item['thr-parent']) - ); - } - else { - // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always - // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. - // The only item with `parent` and `id` as the parent id is the parent item. - $p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1", - intval($item['parent']), - intval($item['parent']) - ); - } - if(count($p)) - $parent = $p[0]; - else - return; - - $like = false; - $relay_retract = false; - $sql_sign_id = 'iid'; - if( $item['deleted']) { - $relay_retract = true; - - $target_type = ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment'); - - $sql_sign_id = 'retract_iid'; - $tpl = get_markup_template('diaspora_relayable_retraction.tpl'); - } - elseif($item['verb'] === ACTIVITY_LIKE) { - $like = true; - - $target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment'); -// $positive = (($item['deleted']) ? 'false' : 'true'); - $positive = 'true'; - - $tpl = get_markup_template('diaspora_like_relay.tpl'); - } - else { // item is a comment - $tpl = get_markup_template('diaspora_comment_relay.tpl'); - } - - - // fetch the original signature if the relayable was created by a Diaspora - // or DFRN user. Relayables for other networks are not supported. - - $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE " . $sql_sign_id . " = %d LIMIT 1", - intval($item['id']) - ); - if(count($r)) { - $orig_sign = $r[0]; - $signed_text = $orig_sign['signed_text']; - $authorsig = $orig_sign['signature']; - $handle = $orig_sign['signer']; - - // Split the signed text - $signed_parts = explode(";", $signed_text); - - // Remove the parent guid - array_shift($signed_parts); - - // Remove the comment guid - array_shift($signed_parts); - - // Remove the handle - array_pop($signed_parts); - - // Glue the parts together - $text = implode(";", $signed_parts); - } - else { - // This part is meant for cases where we don't have the signatur. (Which shouldn't happen with posts from Diaspora and Friendica) - // This means that the comment won't be accepted by newer Diaspora servers - - $body = $item['body']; - $text = html_entity_decode(bb2diaspora($body)); - - $handle = diaspora_handle_from_contact($item['contact-id']); - if(! $handle) - return; - - if($relay_retract) - $signed_text = $item['guid'] . ';' . $target_type; - elseif($like) - $signed_text = $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $positive . ';' . $handle; - else - $signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $handle; - - $authorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); - } - - // Sign the relayable with the top-level owner's signature - $parentauthorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); - - $msg = replace_macros($tpl,array( - '$guid' => xmlify($item['guid']), - '$parent_guid' => xmlify($parent['guid']), - '$target_type' =>xmlify($target_type), - '$authorsig' => xmlify($authorsig), - '$parentsig' => xmlify($parentauthorsig), - '$body' => xmlify($text), - '$positive' => xmlify($positive), - '$handle' => xmlify($handle) - )); - - logger('diaspora_send_relay: base message: ' . $msg, LOGGER_DATA); - logger('send guid '.$item['guid'], LOGGER_DEBUG); - - $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch))); - //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)); - - return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid'])); -*/ - public static function send_retraction($item, $owner, $contact, $public_batch = false) { $myaddr = self::get_my_handle($owner); @@ -2355,21 +2188,10 @@ die($msg); "sender_handle" => $myaddr, "target_author_signature" => base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'))); - $data = array("XML" => array("post" => array($msg_type => $message))); - $msg = xml::from_array($data, $xml); - - logger("send guid ".$item["guid"], LOGGER_DEBUG); - - $slap = self::build_message($msg, $owner, $contact, $owner["uprvkey"], $contact["pubkey"], $public_batch); - - $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $item["guid"]); - - logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); - - return $return_code; + return self::build_and_transmit($owner, $contact, $msg_type, $message, $public_batch, $item["guid"]); } - public static function send_mail($item,$owner,$contact) { + public static function send_mail($item, $owner, $contact) { $myaddr = self::get_my_handle($owner); @@ -2396,7 +2218,6 @@ die($msg); $created = datetime_convert("UTC", "UTC", $item["created"], 'Y-m-d H:i:s \U\T\C'); $signed_text = $item["guid"].";".$cnv["guid"].";".$body.";".$created.";".$myaddr.";".$cnv['guid']; - $sig = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); $msg = array( @@ -2410,9 +2231,10 @@ die($msg); "conversation_guid" => $cnv["guid"] ); - if ($item["reply"]) - $data = array("XML" => array("post" => array("message" => $msg))); - else { + if ($item["reply"]) { + $message = $msg; + $type = "message"; + } else { $message = array("guid" => $cnv["guid"], "subject" => $cnv["subject"], "created_at" => datetime_convert("UTC", "UTC", $cnv['created'], 'Y-m-d H:i:s \U\T\C'), @@ -2420,21 +2242,10 @@ die($msg); "diaspora_handle" => $cnv["creator"], "participant_handles" => $cnv["recips"]); - $data = array("XML" => array("post" => array("conversation" => $message))); + $type = "conversation"; } - $xmsg = xml::from_array($data, $xml); - - logger("conversation: ".print_r($xmsg,true), LOGGER_DATA); - logger("send guid ".$item["guid"], LOGGER_DEBUG); - - $slap = self::build_message($xmsg, $owner, $contact, $owner["uprvkey"], $contact["pubkey"], false); - - $return_code = self::transmit($owner, $contact, $slap, false, false, $item["guid"]); - - logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); - - return $return_code; + return self::build_and_transmit($owner, $contact, $type, $message, false, $item["guid"]); } } ?> From f978bc9cc8011ab31e9abd90519008c6248cdebb Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 13 Mar 2016 07:10:24 +0100 Subject: [PATCH 037/485] Some code cleaning, changes to the xml generation --- include/diaspora2.php | 183 ++++++++++++++++++++++++------------------ include/xml.php | 10 ++- 2 files changed, 114 insertions(+), 79 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index 3d12ef5bbf..97d5ecee9f 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -20,7 +20,7 @@ require_once("include/datetime.php"); */ class diaspora { - public static function fetch_relay() { + public static function relay_list() { $serverdata = get_config("system", "relay_server"); if ($serverdata == "") @@ -277,13 +277,13 @@ class diaspora { return false; if (isset($parent_author_signature)) { - $key = self::get_key($msg["author"]); + $key = self::key($msg["author"]); if (!rsa_verify($signed_data, $parent_author_signature, $key, "sha256")) return false; } - $key = self::get_key($fields->author); + $key = self::key($fields->author); return rsa_verify($signed_data, $author_signature, $key, "sha256"); } @@ -295,10 +295,10 @@ class diaspora { * * @return string The public key */ - private function get_key($handle) { + private function key($handle) { logger("Fetching diaspora key for: ".$handle); - $r = self::get_person_by_handle($handle); + $r = self::person_by_handle($handle); if($r) return $r["pubkey"]; @@ -312,7 +312,7 @@ class diaspora { * * @return array the queried data */ - private function get_person_by_handle($handle) { + private function person_by_handle($handle) { $r = q("SELECT * FROM `fcontact` WHERE `network` = '%s' AND `addr` = '%s' LIMIT 1", dbesc(NETWORK_DIASPORA), @@ -407,7 +407,33 @@ class diaspora { return $r; } - private function get_contact_by_handle($uid, $handle) { + public static function handle_from_contact($contact_id) { + $handle = False; + + logger("contact id is ".$contact_id, LOGGER_DEBUG); + + $r = q("SELECT `network`, `addr`, `self`, `url`, `nick` FROM `contact` WHERE `id` = %d", + intval($contact_id) + ); + if($r) { + $contact = $r[0]; + + logger("contact 'self' = ".$contact['self']." 'url' = ".$contact['url'], LOGGER_DEBUG); + + if($contact['addr'] != "") + $handle = $contact['addr']; + elseif(($contact['network'] === NETWORK_DFRN) || ($contact['self'] == 1)) { + $baseurl_start = strpos($contact['url'],'://') + 3; + $baseurl_length = strpos($contact['url'],'/profile') - $baseurl_start; // allows installations in a subdirectory--not sure how Diaspora will handle + $baseurl = substr($contact['url'], $baseurl_start, $baseurl_length); + $handle = $contact['nick'].'@'.$baseurl; + } + } + + return $handle; + } + + private function contact_by_handle($uid, $handle) { $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1", intval($uid), dbesc($handle) @@ -459,8 +485,8 @@ class diaspora { return false; } - private function get_allowed_contact_by_handle($importer, $handle, $is_comment = false) { - $contact = self::get_contact_by_handle($importer["uid"], $handle); + private function allowed_contact_by_handle($importer, $handle, $is_comment = false) { + $contact = self::contact_by_handle($importer["uid"], $handle); if (!$contact) { logger("A Contact for handle ".$handle." and user ".$importer["uid"]." was not found"); return false; @@ -505,7 +531,7 @@ class diaspora { logger("Trying to fetch item ".$guid." from ".$server, LOGGER_DEBUG); - $msg = self::fetch_message($guid, $server); + $msg = self::message($guid, $server); if (!$msg) return false; @@ -516,7 +542,7 @@ class diaspora { return self::dispatch_public($msg); } - private function fetch_message($guid, $server, $level = 0) { + private function message($guid, $server, $level = 0) { if ($level > 5) return false; @@ -534,10 +560,10 @@ class diaspora { if ($source_xml->post->reshare) { // Reshare of a reshare - old Diaspora version - return self::fetch_message($source_xml->post->reshare->root_guid, $server, ++$level); + return self::message($source_xml->post->reshare->root_guid, $server, ++$level); } elseif ($source_xml->getName() == "reshare") { // Reshare of a reshare - new Diaspora version - return self::fetch_message($source_xml->root_guid, $server, ++$level); + return self::message($source_xml->root_guid, $server, ++$level); } $author = ""; @@ -554,12 +580,12 @@ class diaspora { $msg = array("message" => $x, "author" => $author); - $msg["key"] = self::get_key($msg["author"]); + $msg["key"] = self::key($msg["author"]); return $msg; } - private function fetch_parent_item($uid, $guid, $author, $contact) { + private function parent_item($uid, $guid, $author, $contact) { $r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `origin`, `author-name`, `author-link`, `author-avatar`, `owner-name`, `owner-link`, `owner-avatar` @@ -570,7 +596,7 @@ class diaspora { $result = self::store_by_guid($guid, $contact["url"], $uid); if (!$result) { - $person = self::get_person_by_handle($author); + $person = self::person_by_handle($author); $result = self::store_by_guid($guid, $person["url"], $uid); } @@ -592,7 +618,7 @@ class diaspora { return $r[0]; } - private function get_author_contact_by_url($contact, $person, $uid) { + private function author_contact_by_url($contact, $person, $uid) { $r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1", dbesc(normalise_link($person["url"])), intval($uid)); @@ -636,7 +662,7 @@ class diaspora { private function receive_account_deletion($importer, $data) { $author = notags(unxmlify($data->author)); - $contact = self::get_contact_by_handle($importer["uid"], $author); + $contact = self::contact_by_handle($importer["uid"], $author); if (!$contact) { logger("cannot find contact for author: ".$author); return false; @@ -653,25 +679,25 @@ class diaspora { $text = unxmlify($data->text); $author = notags(unxmlify($data->author)); - $contact = self::get_allowed_contact_by_handle($importer, $sender, true); + $contact = self::allowed_contact_by_handle($importer, $sender, true); if (!$contact) return false; if (self::message_exists($importer["uid"], $guid)) return false; - $parent_item = self::fetch_parent_item($importer["uid"], $parent_guid, $author, $contact); + $parent_item = self::parent_item($importer["uid"], $parent_guid, $author, $contact); if (!$parent_item) return false; - $person = self::get_person_by_handle($author); + $person = self::person_by_handle($author); if (!is_array($person)) { logger("unable to find author details"); return false; } // Fetch the contact id - if we know this contact - $author_contact = self::get_author_contact_by_url($contact, $person, $importer["uid"]); + $author_contact = self::author_contact_by_url($contact, $person, $importer["uid"]); $datarray = array(); @@ -763,7 +789,7 @@ class diaspora { $person = $contact; $key = $msg["key"]; } else { - $person = self::get_person_by_handle($msg_author); + $person = self::person_by_handle($msg_author); if (is_array($person) && x($person, "pubkey")) $key = $person["pubkey"]; @@ -852,7 +878,7 @@ class diaspora { return false; } - $contact = self::get_allowed_contact_by_handle($importer, $msg["author"], true); + $contact = self::allowed_contact_by_handle($importer, $msg["author"], true); if (!$contact) return false; @@ -907,22 +933,17 @@ class diaspora { private function construct_like_object($importer, $parent_item) { $objtype = ACTIVITY_OBJ_NOTE; - $link = xmlify(''."\n") ; + $link = ''; $parent_body = $parent_item["body"]; - $obj = <<< EOT + $xmldata = array("object" => array("type" => $objtype, + "local" => "1", + "id" => $parent_item["uri"], + "link" => $link, + "title" => "", + "content" => $parent_body)); - - $objtype - 1 - {$parent_item["uri"]} - $link - - $parent_body - -EOT; - - return $obj; + return xml::from_array($xmldata, $xml, true); } private function receive_like($importer, $sender, $data) { @@ -937,25 +958,25 @@ EOT; if (!in_array($parent_type, array("Post", "Comment"))) return false; - $contact = self::get_allowed_contact_by_handle($importer, $sender, true); + $contact = self::allowed_contact_by_handle($importer, $sender, true); if (!$contact) return false; if (self::message_exists($importer["uid"], $guid)) return false; - $parent_item = self::fetch_parent_item($importer["uid"], $parent_guid, $author, $contact); + $parent_item = self::parent_item($importer["uid"], $parent_guid, $author, $contact); if (!$parent_item) return false; - $person = self::get_person_by_handle($author); + $person = self::person_by_handle($author); if (!is_array($person)) { logger("unable to find author details"); return false; } // Fetch the contact id - if we know this contact - $author_contact = self::get_author_contact_by_url($contact, $person, $importer["uid"]); + $author_contact = self::author_contact_by_url($contact, $person, $importer["uid"]); // "positive" = "false" would be a Dislike - wich isn't currently supported by Diaspora // We would accept this anyhow. @@ -1019,7 +1040,7 @@ EOT; $author = notags(unxmlify($data->author)); $conversation_guid = notags(unxmlify($data->conversation_guid)); - $contact = self::get_allowed_contact_by_handle($importer, $author, true); + $contact = self::allowed_contact_by_handle($importer, $author, true); if (!$contact) return false; @@ -1041,7 +1062,7 @@ EOT; $body = diaspora2bb($text); $message_uri = $author.":".$guid; - $person = self::get_person_by_handle($author); + $person = self::person_by_handle($author); if (!$person) { logger("unable to find author details"); return false; @@ -1100,7 +1121,7 @@ EOT; private function receive_profile($importer, $data) { $author = notags(unxmlify($data->author)); - $contact = self::get_contact_by_handle($importer["uid"], $author); + $contact = self::contact_by_handle($importer["uid"], $author); if (!$contact) return; @@ -1254,7 +1275,7 @@ EOT; if (!$author || !$recipient) return; - $contact = self::get_contact_by_handle($importer["uid"],$author); + $contact = self::contact_by_handle($importer["uid"],$author); if($contact) { @@ -1265,7 +1286,7 @@ EOT; return true; } - $ret = self::get_person_by_handle($author); + $ret = self::person_by_handle($author); if (!$ret || ($ret["network"] != NETWORK_DIASPORA)) { logger("Cannot resolve diaspora handle ".$author ." for ".$recipient); @@ -1295,7 +1316,7 @@ EOT; // find the contact record we just created - $contact_record = self::get_contact_by_handle($importer["uid"],$author); + $contact_record = self::contact_by_handle($importer["uid"],$author); if (!$contact_record) { logger("unable to locate newly created contact record."); @@ -1360,7 +1381,7 @@ EOT; return true; } - private function get_original_item($guid, $orig_author, $author) { + private function original_item($guid, $orig_author, $author) { // Do we already have this item? $r = q("SELECT `body`, `tag`, `app`, `created`, `object-type`, `uri`, `guid`, @@ -1424,14 +1445,14 @@ EOT; $public = notags(unxmlify($data->public)); $created_at = notags(unxmlify($data->created_at)); - $contact = self::get_allowed_contact_by_handle($importer, $author, false); + $contact = self::allowed_contact_by_handle($importer, $author, false); if (!$contact) return false; if (self::message_exists($importer["uid"], $guid)) return false; - $original_item = self::get_original_item($root_guid, $root_author, $author); + $original_item = self::original_item($root_guid, $root_author, $author); if (!$original_item) return false; @@ -1482,7 +1503,7 @@ EOT; $target_guid = notags(unxmlify($data->target_guid)); $author = notags(unxmlify($data->author)); - $person = self::get_person_by_handle($author); + $person = self::person_by_handle($author); if (!is_array($person)) { logger("unable to find author detail for ".$author); return false; @@ -1533,7 +1554,7 @@ EOT; private function receive_retraction($importer, $sender, $data) { $target_type = notags(unxmlify($data->target_type)); - $contact = self::get_contact_by_handle($importer["uid"], $sender); + $contact = self::contact_by_handle($importer["uid"], $sender); if (!$contact) { logger("cannot find contact for sender: ".$sender." and user ".$importer["uid"]); return false; @@ -1575,7 +1596,7 @@ EOT; // print_r($poll); // die("poll!\n"); //} - $contact = self::get_allowed_contact_by_handle($importer, $author, false); + $contact = self::allowed_contact_by_handle($importer, $author, false); if (!$contact) return false; @@ -1652,7 +1673,7 @@ EOT; * Here come all the functions that are needed to transmit data with the Diaspora protocol * *******************************************************************************************/ - private function get_my_handle($me) { + private function my_handle($me) { if ($contact["addr"] != "") return $contact["addr"]; @@ -1665,7 +1686,7 @@ EOT; logger("Message: ".$msg, LOGGER_DATA); - $handle = self::get_my_handle($user); + $handle = self::my_handle($user); $b64url_data = base64url_encode($msg); @@ -1694,7 +1715,7 @@ $magic_env = <<< EOT EOT; - +die($magic_env."\n"); logger("magic_env: ".$magic_env, LOGGER_DATA); return $magic_env; } @@ -1720,7 +1741,7 @@ EOT; $outer_iv = random_string(16); $b_outer_iv = base64_encode($outer_iv); - $handle = self::get_my_handle($user); + $handle = self::my_handle($user); $padded_data = pkcs5_pad($msg,16); $inner_encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $inner_aes_key, $padded_data, MCRYPT_MODE_CBC, $inner_iv); @@ -1740,14 +1761,11 @@ EOT; $signature = rsa_sign($signable_data,$prvkey); $sig = base64url_encode($signature); -$decrypted_header = <<< EOT - - $b_inner_iv - $b_inner_aes_key - $handle - -EOT; + $xmldata = array("decrypted_header" => array("iv" => $b_inner_iv, + "aes_key" => $b_inner_aes_key, + "author_id" => $handle)); + $decrypted_header = xml::from_array($xmldata, $xml, true); $decrypted_header = pkcs5_pad($decrypted_header,16); $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $outer_aes_key, $decrypted_header, MCRYPT_MODE_CBC, $outer_iv); @@ -1765,6 +1783,15 @@ EOT; "ciphertext" => base64_encode($ciphertext))); $cipher_json = base64_encode($encrypted_header_json_object); + $xml = nul; + $xmldata = array("diaspora" => array("encrypted_header" => $cipher_json, + "me:env" => array("me:encoding" => "base64url", + "me:alg" => "RSA-SHA256", + "me:data" => $data, + "me:sig" => $sig))); + $encrypted_header = xml::from_array($xmldata, $xml, true); +echo $encrypted_header."\n"; + $encrypted_header = "".$cipher_json.""; $magic_env = <<< EOT @@ -1779,6 +1806,7 @@ $magic_env = <<< EOT EOT; +die($magic_env."\n"); logger("magic_env: ".$magic_env, LOGGER_DATA); return $magic_env; @@ -1796,7 +1824,7 @@ EOT; return $slap; } - private function get_signature($owner, $message) { + private function signature($owner, $message) { $sigmsg = $message; unset($sigmsg["author_signature"]); unset($sigmsg["parent_author_signature"]); @@ -1806,7 +1834,7 @@ EOT; return base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); } - private function transmit($owner, $contact, $slap, $public_batch, $queue_run=false, $guid = "") { + public static function transmit($owner, $contact, $slap, $public_batch, $queue_run=false, $guid = "") { $a = get_app(); @@ -1878,7 +1906,7 @@ die($slap); public static function send_share($owner,$contact) { - $message = array("sender_handle" => self::get_my_handle($owner), + $message = array("sender_handle" => self::my_handle($owner), "recipient_handle" => $contact["addr"]); return self::build_and_transmit($owner, $contact, "request", $message); @@ -1887,7 +1915,7 @@ die($slap); public static function send_unshare($owner,$contact) { $message = array("post_guid" => $owner["guid"], - "diaspora_handle" => self::get_my_handle($owner), + "diaspora_handle" => self::my_handle($owner), "type" => "Person"); return self::build_and_transmit($owner, $contact, "retraction", $message); @@ -1924,7 +1952,7 @@ die($slap); dbesc($guid), NETWORK_DFRN, NETWORK_DIASPORA); if ($r) { $ret= array(); - $ret["root_handle"] = diaspora_handle_from_contact($r[0]["contact-id"]); + $ret["root_handle"] = self::handle_from_contact($r[0]["contact-id"]); $ret["root_guid"] = $guid; return($ret); } @@ -1962,7 +1990,7 @@ die($slap); public static function send_status($item, $owner, $contact, $public_batch = false) { - $myaddr = self::get_my_handle($owner); + $myaddr = self::my_handle($owner); $public = (($item["private"]) ? "false" : "true"); @@ -2029,7 +2057,7 @@ die($slap); private function construct_like($item, $owner) { - $myaddr = self::get_my_handle($owner); + $myaddr = self::my_handle($owner); $p = q("SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1", dbesc($item["thr-parent"])); @@ -2051,7 +2079,7 @@ die($slap); private function construct_comment($item, $owner) { - $myaddr = self::get_my_handle($owner); + $myaddr = self::my_handle($owner); $p = q("SELECT `guid` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1", intval($item["parent"]), @@ -2085,7 +2113,7 @@ die($slap); if (!$message) return false; - $message["author_signature"] = self::get_signature($owner, $message); + $message["author_signature"] = self::signature($owner, $message); return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); } @@ -2115,7 +2143,8 @@ die($slap); $orig_sign = $r[0]; - // Old way - can be removed for the master branch + // Old way - is used by the internal Friendica functions + /// @todo Change all signatur storing functions to the new format if ($orig_sign['signed_text'] AND $orig_sign['signature'] AND $orig_sign['signer']) { // Split the signed text @@ -2163,14 +2192,14 @@ die($slap); $signed_text = $message["target_guid"].';'.$message["target_type"]; $message["parent_author_signature"] = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); } else - $message["parent_author_signature"] = self::get_signature($owner, $message); + $message["parent_author_signature"] = self::signature($owner, $message); return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); } public static function send_retraction($item, $owner, $contact, $public_batch = false) { - $myaddr = self::get_my_handle($owner); + $myaddr = self::my_handle($owner); // Check whether the retraction is for a top-level post or whether it's a relayable if ($item["uri"] !== $item["parent-uri"]) { @@ -2193,7 +2222,7 @@ die($slap); public static function send_mail($item, $owner, $contact) { - $myaddr = self::get_my_handle($owner); + $myaddr = self::my_handle($owner); $r = q("SELECT * FROM `conv` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($item["convid"]), diff --git a/include/xml.php b/include/xml.php index 9c458dab12..91480dc03b 100644 --- a/include/xml.php +++ b/include/xml.php @@ -4,7 +4,7 @@ * */ class xml { - function from_array($array, &$xml) { + function from_array($array, &$xml, $remove_header = false) { if (!is_object($xml)) { foreach($array as $key => $value) { @@ -14,7 +14,13 @@ class xml { $dom = dom_import_simplexml($root)->ownerDocument; $dom->formatOutput = true; $xml = $dom; - return $dom->saveXML(); + + $xml_text = $dom->saveXML(); + + if ($remove_header) + $xml_text = trim(substr($xml_text, 21)); + + return $xml_text; } } From f8f19038bf43aef56aae3898324a3658e2f04c14 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 13 Mar 2016 09:57:44 +0100 Subject: [PATCH 038/485] XML generation is now improved --- include/diaspora2.php | 158 +++++++++++++++++++----------------------- include/xml.php | 42 +++++++++-- 2 files changed, 105 insertions(+), 95 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index 97d5ecee9f..da772d68bd 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -729,7 +729,6 @@ class diaspora { self::fetch_guid($datarray); $message_id = item_store($datarray); - // print_r($datarray); // If we are the origin of the parent we store the original data and notify our followers if($message_id AND $parent_item["origin"]) { @@ -1013,7 +1012,6 @@ class diaspora { $datarray["body"] = self::construct_like_body($contact, $parent_item, $guid); $message_id = item_store($datarray); - // print_r($datarray); // If we are the origin of the parent we store the original data and notify our followers if($message_id AND $parent_item["origin"]) { @@ -1493,7 +1491,6 @@ class diaspora { self::fetch_guid($datarray); $message_id = item_store($datarray); - // print_r($datarray); return $message_id; } @@ -1662,16 +1659,15 @@ class diaspora { self::fetch_guid($datarray); $message_id = item_store($datarray); - // print_r($datarray); logger("Stored item with message id ".$message_id, LOGGER_DEBUG); return $message_id; } - /******************************************************************************************* - * Here come all the functions that are needed to transmit data with the Diaspora protocol * - *******************************************************************************************/ + /****************************************************************************************** + * Here are all the functions that are needed to transmit data with the Diaspora protocol * + ******************************************************************************************/ private function my_handle($me) { if ($contact["addr"] != "") @@ -1701,21 +1697,18 @@ class diaspora { $signature = rsa_sign($signable_data,$prvkey); $sig = base64url_encode($signature); -$magic_env = <<< EOT - - -
      - $handle -
      - - base64url - RSA-SHA256 - $data - $sig - -
      -EOT; -die($magic_env."\n"); + $xmldata = array("diaspora" => array("header" => array("author_id" => $handle), + "me:env" => array("me:encoding" => "base64url", + "me:alg" => "RSA-SHA256", + "me:data" => $data, + "@attributes" => array("type" => "application/xml"), + "me:sig" => $sig))); + + $namespaces = array("" => "https://joindiaspora.com/protocol", + "me" => "http://salmon-protocol.org/ns/magic-env"); + + $magic_env = xml::from_array($xmldata, $xml, false, $namespaces); + logger("magic_env: ".$magic_env, LOGGER_DATA); return $magic_env; } @@ -1783,30 +1776,17 @@ die($magic_env."\n"); "ciphertext" => base64_encode($ciphertext))); $cipher_json = base64_encode($encrypted_header_json_object); - $xml = nul; $xmldata = array("diaspora" => array("encrypted_header" => $cipher_json, "me:env" => array("me:encoding" => "base64url", "me:alg" => "RSA-SHA256", "me:data" => $data, + "@attributes" => array("type" => "application/xml"), "me:sig" => $sig))); - $encrypted_header = xml::from_array($xmldata, $xml, true); -echo $encrypted_header."\n"; - $encrypted_header = "".$cipher_json.""; + $namespaces = array("" => "https://joindiaspora.com/protocol", + "me" => "http://salmon-protocol.org/ns/magic-env"); -$magic_env = <<< EOT - - - $encrypted_header - - base64url - RSA-SHA256 - $data - $sig - - -EOT; -die($magic_env."\n"); + $magic_env = xml::from_array($xmldata, $xml, false, $namespaces); logger("magic_env: ".$magic_env, LOGGER_DATA); return $magic_env; @@ -1896,7 +1876,7 @@ die($magic_env."\n"); logger('send guid '.$guid, LOGGER_DEBUG); $slap = self::build_message($msg, $owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch); -die($slap); + $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $guid); logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); @@ -2118,7 +2098,49 @@ die($slap); return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); } - function send_relay($item, $owner, $contact, $public_batch = false) { + private function message_from_signatur($item, $signature) { + + // Split the signed text + $signed_parts = explode(";", $signature['signed_text']); + + if ($item["deleted"]) + $message = array("parent_author_signature" => "", + "target_guid" => $signed_parts[0], + "target_type" => $signed_parts[1], + "sender_handle" => $signature['signer'], + "target_author_signature" => $signature['signature']); + elseif ($item['verb'] === ACTIVITY_LIKE) + $message = array("positive" => $signed_parts[0], + "guid" => $signed_parts[1], + "target_type" => $signed_parts[2], + "parent_guid" => $signed_parts[3], + "parent_author_signature" => "", + "author_signature" => $signature['signature'], + "diaspora_handle" => $signed_parts[4]); + else { + // Remove the comment guid + $guid = array_shift($signed_parts); + + // Remove the parent guid + $parent_guid = array_shift($signed_parts); + + // Remove the handle + $handle = array_pop($signed_parts); + + // Glue the parts together + $text = implode(";", $signed_parts); + + $message = array("guid" => $guid, + "parent_guid" => $parent_guid, + "parent_author_signature" => "", + "author_signature" => $signature['signature'], + "text" => implode(";", $signed_parts), + "diaspora_handle" => $handle); + } + return $message; + } + + public static function send_relay($item, $owner, $contact, $public_batch = false) { if ($item["deleted"]) { $sql_sign_id = "retract_iid"; @@ -2131,62 +2153,22 @@ die($slap); $type = "comment"; } - // fetch the original signature if the relayable was created by a Diaspora - // or DFRN user. + // fetch the original signature $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE `".$sql_sign_id."` = %d LIMIT 1", - intval($item["id"]) - ); + intval($item["id"])); if (!$r) return self::send_followup($item, $owner, $contact, $public_batch); - $orig_sign = $r[0]; + $signature = $r[0]; // Old way - is used by the internal Friendica functions /// @todo Change all signatur storing functions to the new format - if ($orig_sign['signed_text'] AND $orig_sign['signature'] AND $orig_sign['signer']) { - - // Split the signed text - $signed_parts = explode(";", $orig_sign['signed_text']); - - if ($item["deleted"]) - $message = array("parent_author_signature" => "", - "target_guid" => $signed_parts[0], - "target_type" => $signed_parts[1], - "sender_handle" => $orig_sign['signer'], - "target_author_signature" => $orig_sign['signature']); - elseif ($item['verb'] === ACTIVITY_LIKE) - $message = array("positive" => $signed_parts[0], - "guid" => $signed_parts[1], - "target_type" => $signed_parts[2], - "parent_guid" => $signed_parts[3], - "parent_author_signature" => "", - "author_signature" => $orig_sign['signature'], - "diaspora_handle" => $signed_parts[4]); - else { - // Remove the comment guid - $guid = array_shift($signed_parts); - - // Remove the parent guid - $parent_guid = array_shift($signed_parts); - - // Remove the handle - $handle = array_pop($signed_parts); - - // Glue the parts together - $text = implode(";", $signed_parts); - - $message = array("guid" => $guid, - "parent_guid" => $parent_guid, - "parent_author_signature" => "", - "author_signature" => $orig_sign['signature'], - "text" => implode(";", $signed_parts), - "diaspora_handle" => $handle); - } - } else { // New way - $message = json_decode($orig_sign['signed_text']); - } + if ($signature['signed_text'] AND $signature['signature'] AND $signature['signer']) + $message = self::message_from_signatur($item, $signature); + else // New way + $message = json_decode($signature['signed_text']); if ($item["deleted"]) { $signed_text = $message["target_guid"].';'.$message["target_type"]; diff --git a/include/xml.php b/include/xml.php index 91480dc03b..c2313648ce 100644 --- a/include/xml.php +++ b/include/xml.php @@ -4,12 +4,15 @@ * */ class xml { - function from_array($array, &$xml, $remove_header = false) { + function from_array($array, &$xml, $remove_header = false, $namespaces = array(), $root = true) { - if (!is_object($xml)) { + if ($root) { foreach($array as $key => $value) { + foreach ($namespaces AS $nskey => $nsvalue) + $key .= " xmlns".($nskey == "" ? "":":").$nskey.'="'.$nsvalue.'"'; + $root = new SimpleXMLElement("<".$key."/>"); - self::from_array($value, $root); + self::from_array($value, $root, $remove_header, $namespaces, false); $dom = dom_import_simplexml($root)->ownerDocument; $dom->formatOutput = true; @@ -25,10 +28,35 @@ class xml { } foreach($array as $key => $value) { - if (!is_array($value) AND !is_numeric($key)) - $xml->addChild($key, xmlify($value)); - elseif (is_array($value)) - self::from_array($value, $xml->addChild($key)); + if ($key == "@attributes") { + if (!isset($element) OR !is_array($value)) + continue; + + foreach ($value as $attr_key => $attr_value) { + $element_parts = explode(":", $attr_key); + if ((count($element_parts) > 1) AND isset($namespaces[$element_parts[0]])) + $namespace = $namespaces[$element_parts[0]]; + else + $namespace = NULL; + + $element->addAttribute ($attr_key, $attr_value, $namespace); + } + + continue; + } + + $element_parts = explode(":", $key); + if ((count($element_parts) > 1) AND isset($namespaces[$element_parts[0]])) + $namespace = $namespaces[$element_parts[0]]; + else + $namespace = NULL; + + if (!is_array($value)) + $element = $xml->addChild($key, xmlify($value), $namespace); + elseif (is_array($value)) { + $element = $xml->addChild($key, NULL, $namespace); + self::from_array($value, $element, $remove_header, $namespaces, false); + } } } From 07818a65536c1cb6373f4494245c583853e0fa95 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 13 Mar 2016 16:14:51 +0100 Subject: [PATCH 039/485] Decode function is now there as well. --- include/diaspora.php | 15 ++-- include/diaspora2.php | 168 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 174 insertions(+), 9 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 78ba520790..2b85befa8c 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -111,18 +111,18 @@ function diaspora_dispatch($importer,$msg,$attempt=1) { $ret = diaspora_reshare($importer,$xmlbase->reshare,$msg); } elseif($xmlbase->retraction) { - $tempfile = tempnam(get_temppath(), "diaspora-retraction"); - file_put_contents($tempfile, json_encode($data)); + //$tempfile = tempnam(get_temppath(), "diaspora-retraction"); + //file_put_contents($tempfile, json_encode($data)); $ret = diaspora_retraction($importer,$xmlbase->retraction,$msg); } elseif($xmlbase->signed_retraction) { - $tempfile = tempnam(get_temppath(), "diaspora-signed_retraction"); - file_put_contents($tempfile, json_encode($data)); + //$tempfile = tempnam(get_temppath(), "diaspora-signed_retraction"); + //file_put_contents($tempfile, json_encode($data)); $ret = diaspora_signed_retraction($importer,$xmlbase->signed_retraction,$msg); } elseif($xmlbase->relayable_retraction) { - $tempfile = tempnam(get_temppath(), "diaspora-relayable_retraction"); - file_put_contents($tempfile, json_encode($data)); + //$tempfile = tempnam(get_temppath(), "diaspora-relayable_retraction"); + //file_put_contents($tempfile, json_encode($data)); $ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg); } elseif($xmlbase->photo) { @@ -468,6 +468,9 @@ EOT; function diaspora_decode($importer,$xml) { + $tempfile = tempnam(get_temppath(), "diaspora-decode"); + file_put_contents($tempfile, json_encode(array("importer" => $importer, "xml" => $xml))); + $public = false; $basedom = parse_xml_string($xml); diff --git a/include/diaspora2.php b/include/diaspora2.php index da772d68bd..081eaf153a 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -64,6 +64,168 @@ class diaspora { return $relay; } + function repair_signature($signature, $handle = "", $level = 1) { + + if ($signature == "") + return ($signature); + + if (base64_encode(base64_decode(base64_decode($signature))) == base64_decode($signature)) { + $signature = base64_decode($signature); + logger("Repaired double encoded signature from Diaspora/Hubzilla handle ".$handle." - level ".$level, LOGGER_DEBUG); + + // Do a recursive call to be able to fix even multiple levels + if ($level < 10) + $signature = self::repair_signature($signature, $handle, ++$level); + } + + return($signature); + } + + /** + * @brief: Decodes incoming Diaspora message + * + * @param array $importer from user table + * @param string $xml urldecoded Diaspora salmon + * + * @return array + * 'message' -> decoded Diaspora XML message + * 'author' -> author diaspora handle + * 'key' -> author public key (converted to pkcs#8) + */ + function decode($importer, $xml) { + + $public = false; + $basedom = parse_xml_string($xml); + + if (!is_object($basedom)) + return false; + + $children = $basedom->children('https://joindiaspora.com/protocol'); + + if($children->header) { + $public = true; + $author_link = str_replace('acct:','',$children->header->author_id); + } else { + + $encrypted_header = json_decode(base64_decode($children->encrypted_header)); + + $encrypted_aes_key_bundle = base64_decode($encrypted_header->aes_key); + $ciphertext = base64_decode($encrypted_header->ciphertext); + + $outer_key_bundle = ''; + openssl_private_decrypt($encrypted_aes_key_bundle,$outer_key_bundle,$importer['prvkey']); + + $j_outer_key_bundle = json_decode($outer_key_bundle); + + $outer_iv = base64_decode($j_outer_key_bundle->iv); + $outer_key = base64_decode($j_outer_key_bundle->key); + + $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $outer_key, $ciphertext, MCRYPT_MODE_CBC, $outer_iv); + + + $decrypted = pkcs5_unpad($decrypted); + + /** + * $decrypted now contains something like + * + * + * 8e+G2+ET8l5BPuW0sVTnQw== + * UvSMb4puPeB14STkcDWq+4QE302Edu15oaprAQSkLKU= + * galaxor@diaspora.priateship.org + * + */ + + logger('decrypted: '.$decrypted, LOGGER_DEBUG); + $idom = parse_xml_string($decrypted,false); + + $inner_iv = base64_decode($idom->iv); + $inner_aes_key = base64_decode($idom->aes_key); + + $author_link = str_replace('acct:','',$idom->author_id); + } + + $dom = $basedom->children(NAMESPACE_SALMON_ME); + + // figure out where in the DOM tree our data is hiding + + if($dom->provenance->data) + $base = $dom->provenance; + elseif($dom->env->data) + $base = $dom->env; + elseif($dom->data) + $base = $dom; + + if (!$base) { + logger('unable to locate salmon data in xml'); + http_status_exit(400); + } + + + // Stash the signature away for now. We have to find their key or it won't be good for anything. + $signature = base64url_decode($base->sig); + + // unpack the data + + // strip whitespace so our data element will return to one big base64 blob + $data = str_replace(array(" ","\t","\r","\n"),array("","","",""),$base->data); + + + // stash away some other stuff for later + + $type = $base->data[0]->attributes()->type[0]; + $keyhash = $base->sig[0]->attributes()->keyhash[0]; + $encoding = $base->encoding; + $alg = $base->alg; + + + $signed_data = $data.'.'.base64url_encode($type).'.'.base64url_encode($encoding).'.'.base64url_encode($alg); + + + // decode the data + $data = base64url_decode($data); + + + if($public) + $inner_decrypted = $data; + else { + + // Decode the encrypted blob + + $inner_encrypted = base64_decode($data); + $inner_decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $inner_aes_key, $inner_encrypted, MCRYPT_MODE_CBC, $inner_iv); + $inner_decrypted = pkcs5_unpad($inner_decrypted); + } + + if (!$author_link) { + logger('Could not retrieve author URI.'); + http_status_exit(400); + } + // Once we have the author URI, go to the web and try to find their public key + // (first this will look it up locally if it is in the fcontact cache) + // This will also convert diaspora public key from pkcs#1 to pkcs#8 + + logger('Fetching key for '.$author_link); + $key = self::key($author_link); + + if (!$key) { + logger('Could not retrieve author key.'); + http_status_exit(400); + } + + $verify = rsa_verify($signed_data,$signature,$key); + + if (!$verify) { + logger('Message did not verify. Discarding.'); + http_status_exit(400); + } + + logger('Message verified.'); + + return array('message' => $inner_decrypted, 'author' => $author_link, 'key' => $key); + + } + + /** * @brief Dispatches public messages and find the fitting receivers * @@ -1287,7 +1449,7 @@ class diaspora { $ret = self::person_by_handle($author); if (!$ret || ($ret["network"] != NETWORK_DIASPORA)) { - logger("Cannot resolve diaspora handle ".$author ." for ".$recipient); + logger("Cannot resolve diaspora handle ".$author." for ".$recipient); return false; } @@ -1854,7 +2016,7 @@ class diaspora { dbesc($slap), intval($public_batch) ); - if(count($r)) { + if($r) { logger("add_to_queue ignored - identical item already in queue"); } else { // queue message for redelivery @@ -2211,7 +2373,7 @@ class diaspora { intval($item["uid"]) ); - if (!count($r)) { + if (!$r) { logger("conversation not found."); return; } From 2841aa0281442e7a5570c122d5f3d9ab3a6504a7 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 13 Mar 2016 19:47:02 +0100 Subject: [PATCH 040/485] New implementation is now live. --- include/delivery.php | 182 +++++++++++++++++++++--------------------- include/diaspora.php | 1 + include/diaspora2.php | 49 ++++++++++-- mod/receive.php | 14 ++-- 4 files changed, 144 insertions(+), 102 deletions(-) diff --git a/include/delivery.php b/include/delivery.php index e5ca0946b3..d184fe12e1 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -10,11 +10,11 @@ require_once("include/dfrn.php"); function delivery_run(&$argv, &$argc){ global $a, $db; - if(is_null($a)){ + if (is_null($a)){ $a = new App; } - if(is_null($db)) { + if (is_null($db)) { @include(".htconfig.php"); require_once("include/dba.php"); $db = new dba($db_host, $db_user, $db_pass, $db_data); @@ -32,12 +32,12 @@ function delivery_run(&$argv, &$argc){ load_hooks(); - if($argc < 3) + if ($argc < 3) return; $a->set_baseurl(get_config('system','url')); - logger('delivery: invoked: ' . print_r($argv,true), LOGGER_DEBUG); + logger('delivery: invoked: '. print_r($argv,true), LOGGER_DEBUG); $cmd = $argv[1]; $item_id = intval($argv[2]); @@ -53,7 +53,7 @@ function delivery_run(&$argv, &$argc){ dbesc($item_id), dbesc($contact_id) ); - if(! count($r)) { + if (!count($r)) { continue; } @@ -68,7 +68,7 @@ function delivery_run(&$argv, &$argc){ dbesc($contact_id) ); - if((! $item_id) || (! $contact_id)) + if (!$item_id || !$contact_id) continue; $expire = false; @@ -84,20 +84,20 @@ function delivery_run(&$argv, &$argc){ $recipients[] = $contact_id; - if($cmd === 'mail') { + if ($cmd === 'mail') { $normal_mode = false; $mail = true; $message = q("SELECT * FROM `mail` WHERE `id` = %d LIMIT 1", intval($item_id) ); - if(! count($message)){ + if (!count($message)){ return; } $uid = $message[0]['uid']; $recipients[] = $message[0]['contact-id']; $item = $message[0]; } - elseif($cmd === 'expire') { + elseif ($cmd === 'expire') { $normal_mode = false; $expire = true; $items = q("SELECT * FROM `item` WHERE `uid` = %d AND `wall` = 1 @@ -106,22 +106,22 @@ function delivery_run(&$argv, &$argc){ ); $uid = $item_id; $item_id = 0; - if(! count($items)) + if (!count($items)) continue; } - elseif($cmd === 'suggest') { + elseif ($cmd === 'suggest') { $normal_mode = false; $fsuggest = true; $suggest = q("SELECT * FROM `fsuggest` WHERE `id` = %d LIMIT 1", intval($item_id) ); - if(! count($suggest)) + if (!count($suggest)) return; $uid = $suggest[0]['uid']; $recipients[] = $suggest[0]['cid']; $item = $suggest[0]; - } elseif($cmd === 'relocate') { + } elseif ($cmd === 'relocate') { $normal_mode = false; $relocate = true; $uid = $item_id; @@ -131,7 +131,7 @@ function delivery_run(&$argv, &$argc){ intval($item_id) ); - if((! count($r)) || (! intval($r[0]['parent']))) { + if ((!count($r)) || (!intval($r[0]['parent']))) { continue; } @@ -145,32 +145,32 @@ function delivery_run(&$argv, &$argc){ intval($parent_id) ); - if(! count($items)) { + if (!count($items)) { continue; } $icontacts = null; $contacts_arr = array(); foreach($items as $item) - if(! in_array($item['contact-id'],$contacts_arr)) + if (!in_array($item['contact-id'],$contacts_arr)) $contacts_arr[] = intval($item['contact-id']); - if(count($contacts_arr)) { + if (count($contacts_arr)) { $str_contacts = implode(',',$contacts_arr); $icontacts = q("SELECT * FROM `contact` WHERE `id` IN ( $str_contacts ) " ); } - if( ! ($icontacts && count($icontacts))) + if ( !($icontacts && count($icontacts))) continue; // avoid race condition with deleting entries - if($items[0]['deleted']) { + if ($items[0]['deleted']) { foreach($items as $item) $item['deleted'] = 1; } - if((count($items) == 1) && ($items[0]['uri'] === $items[0]['parent-uri'])) { + if ((count($items) == 1) && ($items[0]['uri'] === $items[0]['parent-uri'])) { logger('delivery: top level post'); $top_level = true; } @@ -184,7 +184,7 @@ function delivery_run(&$argv, &$argc){ intval($uid) ); - if(! count($r)) + if (!count($r)) continue; $owner = $r[0]; @@ -193,7 +193,7 @@ function delivery_run(&$argv, &$argc){ $public_message = true; - if(! ($mail || $fsuggest || $relocate)) { + if (!($mail || $fsuggest || $relocate)) { require_once('include/group.php'); $parent = $items[0]; @@ -217,7 +217,7 @@ function delivery_run(&$argv, &$argc){ $localhost = $a->get_hostname(); - if(strpos($localhost,':')) + if (strpos($localhost,':')) $localhost = substr($localhost,0,strpos($localhost,':')); /** @@ -230,17 +230,17 @@ function delivery_run(&$argv, &$argc){ $relay_to_owner = false; - if((! $top_level) && ($parent['wall'] == 0) && (! $expire) && (stristr($target_item['uri'],$localhost))) { + if (!$top_level && ($parent['wall'] == 0) && !$expire && stristr($target_item['uri'],$localhost)) { $relay_to_owner = true; } - if($relay_to_owner) { + if ($relay_to_owner) { logger('followup '.$target_item["guid"], LOGGER_DEBUG); // local followup to remote post $followup = true; } - if((strlen($parent['allow_cid'])) + if ((strlen($parent['allow_cid'])) || (strlen($parent['allow_gid'])) || (strlen($parent['deny_cid'])) || (strlen($parent['deny_gid']))) { @@ -253,10 +253,10 @@ function delivery_run(&$argv, &$argc){ intval($contact_id) ); - if(count($r)) + if (count($r)) $contact = $r[0]; - if($contact['self']) + if ($contact['self']) continue; $deliver_status = 0; @@ -266,7 +266,7 @@ function delivery_run(&$argv, &$argc){ switch($contact['network']) { case NETWORK_DFRN: - logger('notifier: '.$target_item["guid"].' dfrndelivery: ' . $contact['name']); + logger('notifier: '.$target_item["guid"].' dfrndelivery: '.$contact['name']); if ($mail) { $item['body'] = fix_private_photos($item['body'],$owner['uid'],null,$message[0]['contact-id']); @@ -276,13 +276,13 @@ function delivery_run(&$argv, &$argc){ q("DELETE FROM `fsuggest` WHERE `id` = %d LIMIT 1", intval($item['id'])); } elseif ($relocate) $atom = dfrn::relocate($owner, $uid); - elseif($followup) { + elseif ($followup) { $msgitems = array(); foreach($items as $item) { // there is only one item - if(!$item['parent']) + if (!$item['parent']) continue; - if($item['id'] == $item_id) { - logger('followup: item: ' . print_r($item,true), LOGGER_DATA); + if ($item['id'] == $item_id) { + logger('followup: item: '. print_r($item,true), LOGGER_DATA); $msgitems[] = $item; } } @@ -290,19 +290,19 @@ function delivery_run(&$argv, &$argc){ } else { $msgitems = array(); foreach($items as $item) { - if(!$item['parent']) + if (!$item['parent']) continue; // private emails may be in included in public conversations. Filter them. - if(($public_message) && $item['private']) + if ($public_message && $item['private']) continue; $item_contact = get_item_contact($item,$icontacts); - if(!$item_contact) + if (!$item_contact) continue; - if($normal_mode) { - if($item_id == $item['id'] || $item['id'] == $item['parent']) { + if ($normal_mode) { + if ($item_id == $item['id'] || $item['id'] == $item['parent']) { $item["entry:comment-allow"] = true; $item["entry:cid"] = (($top_level) ? $contact['id'] : 0); $msgitems[] = $item; @@ -317,15 +317,15 @@ function delivery_run(&$argv, &$argc){ logger('notifier entry: '.$contact["url"].' '.$target_item["guid"].' entry: '.$atom, LOGGER_DEBUG); - logger('notifier: ' . $atom, LOGGER_DATA); + logger('notifier: '.$atom, LOGGER_DATA); $basepath = implode('/', array_slice(explode('/',$contact['url']),0,3)); // perform local delivery if we are on the same site - if(link_compare($basepath,$a->get_baseurl())) { + if (link_compare($basepath,$a->get_baseurl())) { $nickname = basename($contact['url']); - if($contact['issued-id']) + if ($contact['issued-id']) $sql_extra = sprintf(" AND `dfrn-id` = '%s' ", dbesc($contact['issued-id'])); else $sql_extra = sprintf(" AND `issued-id` = '%s' ", dbesc($contact['dfrn-id'])); @@ -347,10 +347,10 @@ function delivery_run(&$argv, &$argc){ dbesc($nickname) ); - if($x && count($x)) { + if ($x && count($x)) { $write_flag = ((($x[0]['rel']) && ($x[0]['rel'] != CONTACT_IS_SHARING)) ? true : false); - if((($owner['page-flags'] == PAGE_COMMUNITY) || ($write_flag)) && (! $x[0]['writable'])) { - q("update contact set writable = 1 where id = %d", + if ((($owner['page-flags'] == PAGE_COMMUNITY) || $write_flag) && !$x[0]['writable']) { + q("UPDATE `contact` SET `writable` = 1 WHERE `id` = %d", intval($x[0]['id']) ); $x[0]['writable'] = 1; @@ -370,14 +370,14 @@ function delivery_run(&$argv, &$argc){ } } - if(! was_recently_delayed($contact['id'])) + if (!was_recently_delayed($contact['id'])) $deliver_status = dfrn::deliver($owner,$contact,$atom); else $deliver_status = (-1); logger('notifier: dfrn_delivery to '.$contact["url"].' with guid '.$target_item["guid"].' returns '.$deliver_status); - if($deliver_status == (-1)) { + if ($deliver_status == (-1)) { logger('notifier: delivery failed: queuing message'); add_to_queue($contact['id'],NETWORK_DFRN,$atom); } @@ -385,9 +385,9 @@ function delivery_run(&$argv, &$argc){ case NETWORK_OSTATUS: // Do not send to otatus if we are not configured to send to public networks - if($owner['prvnets']) + if ($owner['prvnets']) break; - if(get_config('system','ostatus_disabled') || get_config('system','dfrn_only')) + if (get_config('system','ostatus_disabled') || get_config('system','dfrn_only')) break; // There is currently no code here to distribute anything to OStatus. @@ -397,67 +397,67 @@ function delivery_run(&$argv, &$argc){ case NETWORK_MAIL: case NETWORK_MAIL2: - if(get_config('system','dfrn_only')) + if (get_config('system','dfrn_only')) break; // WARNING: does not currently convert to RFC2047 header encodings, etc. $addr = $contact['addr']; - if(! strlen($addr)) + if (!strlen($addr)) break; - if($cmd === 'wall-new' || $cmd === 'comment-new') { + if ($cmd === 'wall-new' || $cmd === 'comment-new') { $it = null; - if($cmd === 'wall-new') + if ($cmd === 'wall-new') $it = $items[0]; else { $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($argv[2]), intval($uid) ); - if(count($r)) + if (count($r)) $it = $r[0]; } - if(! $it) + if (!$it) break; $local_user = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($uid) ); - if(! count($local_user)) + if (!count($local_user)) break; $reply_to = ''; $r1 = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1", intval($uid) ); - if($r1 && $r1[0]['reply_to']) + if ($r1 && $r1[0]['reply_to']) $reply_to = $r1[0]['reply_to']; $subject = (($it['title']) ? email_header_encode($it['title'],'UTF-8') : t("\x28no subject\x29")) ; // only expose our real email address to true friends - if(($contact['rel'] == CONTACT_IS_FRIEND) && (! $contact['blocked'])) { - if($reply_to) { + if (($contact['rel'] == CONTACT_IS_FRIEND) && !$contact['blocked']) { + if ($reply_to) { $headers = 'From: '.email_header_encode($local_user[0]['username'],'UTF-8').' <'.$reply_to.'>'."\n"; $headers .= 'Sender: '.$local_user[0]['email']."\n"; } else $headers = 'From: '.email_header_encode($local_user[0]['username'],'UTF-8').' <'.$local_user[0]['email'].'>'."\n"; } else - $headers = 'From: ' . email_header_encode($local_user[0]['username'],'UTF-8') . ' <' . t('noreply') . '@' . $a->get_hostname() . '>' . "\n"; + $headers = 'From: '. email_header_encode($local_user[0]['username'],'UTF-8') .' <'. t('noreply') .'@'.$a->get_hostname() .'>'. "\n"; - //if($reply_to) - // $headers .= 'Reply-to: ' . $reply_to . "\n"; + //if ($reply_to) + // $headers .= 'Reply-to: '.$reply_to . "\n"; - $headers .= 'Message-Id: <' . iri2msgid($it['uri']). '>' . "\n"; + $headers .= 'Message-Id: <'. iri2msgid($it['uri']).'>'. "\n"; //logger("Mail: uri: ".$it['uri']." parent-uri ".$it['parent-uri'], LOGGER_DEBUG); //logger("Mail: Data: ".print_r($it, true), LOGGER_DEBUG); //logger("Mail: Data: ".print_r($it, true), LOGGER_DATA); - if($it['uri'] !== $it['parent-uri']) { + if ($it['uri'] !== $it['parent-uri']) { $headers .= "References: <".iri2msgid($it["parent-uri"]).">"; // If Threading is enabled, write down the correct parent @@ -465,23 +465,23 @@ function delivery_run(&$argv, &$argc){ $headers .= " <".iri2msgid($it["thr-parent"]).">"; $headers .= "\n"; - if(!$it['title']) { + if (!$it['title']) { $r = q("SELECT `title` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($it['parent-uri']), intval($uid)); - if(count($r) AND ($r[0]['title'] != '')) + if (count($r) AND ($r[0]['title'] != '')) $subject = $r[0]['title']; else { $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($it['parent-uri']), intval($uid)); - if(count($r) AND ($r[0]['title'] != '')) + if (count($r) AND ($r[0]['title'] != '')) $subject = $r[0]['title']; } } - if(strncasecmp($subject,'RE:',3)) + if (strncasecmp($subject,'RE:',3)) $subject = 'Re: '.$subject; } email_send($addr, $subject, $headers, $it); @@ -489,60 +489,64 @@ function delivery_run(&$argv, &$argc){ break; case NETWORK_DIASPORA: - if($public_message) - $loc = 'public batch ' . $contact['batch']; + if ($public_message) + $loc = 'public batch '.$contact['batch']; else $loc = $contact['name']; - logger('delivery: diaspora batch deliver: ' . $loc); + logger('delivery: diaspora batch deliver: '.$loc); - if(get_config('system','dfrn_only') || (!get_config('system','diaspora_enabled'))) + if (get_config('system','dfrn_only') || (!get_config('system','diaspora_enabled'))) break; - if($mail) { - diaspora_send_mail($item,$owner,$contact); + if ($mail) { + diaspora::send_mail($item,$owner,$contact); + //diaspora_send_mail($item,$owner,$contact); break; } - if(!$normal_mode) + if (!$normal_mode) break; - if((! $contact['pubkey']) && (! $public_message)) + if (!$contact['pubkey'] && !$public_message) break; $unsupported_activities = array(ACTIVITY_DISLIKE, ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE); //don't transmit activities which are not supported by diaspora foreach($unsupported_activities as $act) { - if(activity_match($target_item['verb'],$act)) { + if (activity_match($target_item['verb'],$act)) { break 2; } } - if(($target_item['deleted']) && (($target_item['uri'] === $target_item['parent-uri']) || $followup)) { + if (($target_item['deleted']) && (($target_item['uri'] === $target_item['parent-uri']) || $followup)) { // top-level retraction - logger('delivery: diaspora retract: ' . $loc); + logger('delivery: diaspora retract: '.$loc); - diaspora_send_retraction($target_item,$owner,$contact,$public_message); + diaspora::send_retraction($target_item,$owner,$contact,$public_message); + //diaspora_send_retraction($target_item,$owner,$contact,$public_message); break; - } elseif($followup) { + } elseif ($followup) { // send comments and likes to owner to relay - diaspora_send_followup($target_item,$owner,$contact,$public_message); + diaspora::send_followup($target_item,$owner,$contact,$public_message); + //diaspora_send_followup($target_item,$owner,$contact,$public_message); break; - } elseif($target_item['uri'] !== $target_item['parent-uri']) { + } elseif ($target_item['uri'] !== $target_item['parent-uri']) { // we are the relay - send comments, likes and relayable_retractions to our conversants - logger('delivery: diaspora relay: ' . $loc); - - diaspora_send_relay($target_item,$owner,$contact,$public_message); + logger('delivery: diaspora relay: '.$loc); + diaspora::send_relay($target_item,$owner,$contact,$public_message); + //diaspora_send_relay($target_item,$owner,$contact,$public_message); break; - } elseif(($top_level) && (! $walltowall)) { + } elseif ($top_level && !$walltowall) { // currently no workable solution for sending walltowall - logger('delivery: diaspora status: ' . $loc); - diaspora_send_status($target_item,$owner,$contact,$public_message); + logger('delivery: diaspora status: '.$loc); + diaspora::send_status($target_item,$owner,$contact,$public_message); + //diaspora_send_status($target_item,$owner,$contact,$public_message); break; } - logger('delivery: diaspora unknown mode: ' . $contact['name']); + logger('delivery: diaspora unknown mode: '.$contact['name']); break; diff --git a/include/diaspora.php b/include/diaspora.php index 2b85befa8c..11fe2c9b57 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -15,6 +15,7 @@ require_once('include/lock.php'); require_once('include/threads.php'); require_once('mod/share.php'); require_once('include/enotify.php'); +require_once('include/diaspora2.php'); function diaspora_dispatch_public($msg) { diff --git a/include/diaspora2.php b/include/diaspora2.php index 081eaf153a..b031651675 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -284,6 +284,8 @@ class diaspora { $type = $fields->getName(); + logger("Received message type ".$type." from ".$sender." for user ".$importer["uid"], LOGGER_DEBUG); + switch ($type) { case "account_deletion": return self::receive_account_deletion($importer, $fields); @@ -654,7 +656,7 @@ class diaspora { return false; } - if (!self::post_allow($importer, $contact, false)) { + if (!self::post_allow($importer, $contact, $is_comment)) { logger("The handle: ".$handle." is not allowed to post to user ".$importer["uid"]); return false; } @@ -669,10 +671,10 @@ class diaspora { if($r) { logger("message ".$guid." already exists for user ".$uid); - return false; + return true; } - return true; + return false; } private function fetch_guid($item) { @@ -774,10 +776,12 @@ class diaspora { } if (!$r) { - logger("parent item not found: parent: ".$guid." item: ".$guid); + logger("parent item not found: parent: ".$guid." - user: ".$uid); return false; - } else + } else { + logger("parent item found: parent: ".$guid." - user: ".$uid); return $r[0]; + } } private function author_contact_by_url($contact, $person, $uid) { @@ -892,6 +896,9 @@ class diaspora { $message_id = item_store($datarray); + if ($message_id) + logger("Stored comment ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); + // If we are the origin of the parent we store the original data and notify our followers if($message_id AND $parent_item["origin"]) { @@ -1175,6 +1182,9 @@ class diaspora { $message_id = item_store($datarray); + if ($message_id) + logger("Stored like ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); + // If we are the origin of the parent we store the original data and notify our followers if($message_id AND $parent_item["origin"]) { @@ -1358,6 +1368,8 @@ class diaspora { update_gcontact($gcontact); + logger("Profile of contact ".$contact["id"]." stored for user ".$importer["uid"], LOGGER_DEBUG); + return true; } @@ -1654,6 +1666,9 @@ class diaspora { self::fetch_guid($datarray); $message_id = item_store($datarray); + if ($message_id) + logger("Stored reshare ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); + return $message_id; } @@ -1695,6 +1710,8 @@ class diaspora { ); delete_thread($r[0]["id"], $r[0]["parent-uri"]); + logger("Deleted target ".$target_guid." from user ".$importer["uid"], LOGGER_DEBUG); + // Now check if the retraction needs to be relayed by us if($p[0]["origin"]) { @@ -1822,7 +1839,8 @@ class diaspora { self::fetch_guid($datarray); $message_id = item_store($datarray); - logger("Stored item with message id ".$message_id, LOGGER_DEBUG); + if ($message_id) + logger("Stored item ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); return $message_id; } @@ -2329,8 +2347,21 @@ class diaspora { /// @todo Change all signatur storing functions to the new format if ($signature['signed_text'] AND $signature['signature'] AND $signature['signer']) $message = self::message_from_signatur($item, $signature); - else // New way - $message = json_decode($signature['signed_text']); + else {// New way + $msg = json_decode($signature['signed_text'], true); + + $message = array(); + foreach ($msg AS $field => $data) { + if (!$item["deleted"]) { + if ($field == "author") + $field = "diaspora_handle"; + if ($field == "parent_type") + $field = "target_type"; + } + + $message[$field] = $data; + } + } if ($item["deleted"]) { $signed_text = $message["target_guid"].';'.$message["target_type"]; @@ -2338,6 +2369,8 @@ class diaspora { } else $message["parent_author_signature"] = self::signature($owner, $message); + logger("Relayed data ".print_r($message, true), LOGGER_DEBUG); + return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); } diff --git a/mod/receive.php b/mod/receive.php index 95a5101675..051ea8c25c 100644 --- a/mod/receive.php +++ b/mod/receive.php @@ -53,7 +53,8 @@ function receive_post(&$a) { logger('mod-diaspora: message is okay', LOGGER_DEBUG); - $msg = diaspora_decode($importer,$xml); + $msg = diaspora::decode($importer,$xml); + //$msg = diaspora_decode($importer,$xml); logger('mod-diaspora: decoded', LOGGER_DEBUG); @@ -65,10 +66,13 @@ function receive_post(&$a) { logger('mod-diaspora: dispatching', LOGGER_DEBUG); $ret = 0; - if($public) - diaspora_dispatch_public($msg); - else - $ret = diaspora_dispatch($importer,$msg); + if($public) { + diaspora::dispatch_public($msg); + //diaspora_dispatch_public($msg); + } else { + $ret = diaspora::dispatch($importer,$msg); + //$ret = diaspora_dispatch($importer,$msg); + } http_status_exit(($ret) ? $ret : 200); // NOTREACHED From 75f5cfe63e2d84fbe55384a7b2769c55bbf423b6 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 13 Mar 2016 21:11:48 +0100 Subject: [PATCH 041/485] Retraction and reshares work --- include/diaspora2.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index b031651675..f6b8b9a704 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -1628,6 +1628,8 @@ class diaspora { if (!$original_item) return false; + $orig_url = App::get_baseurl()."/display/".$original_item["guid"]; + $datarray = array(); $datarray["uid"] = $importer["uid"]; @@ -1651,7 +1653,7 @@ class diaspora { $datarray["object"] = json_encode($data); $prefix = share_header($original_item["author-name"], $original_item["author-link"], $original_item["author-avatar"], - $original_item["guid"], $original_item["created"], $original_item["uri"]); + $original_item["guid"], $original_item["created"], $orig_url); $datarray["body"] = $prefix.$original_item["body"]."[/share]"; $datarray["tag"] = $original_item["tag"]; @@ -1691,16 +1693,20 @@ class diaspora { return false; // Only delete it if the author really fits - if (!link_compare($r[0]["author-link"],$person["url"])) + if (!link_compare($r[0]["author-link"], $person["url"])) { + logger("Item author ".$r[0]["author-link"]." doesn't fit to expected contact ".$person["url"], LOGGER_DEBUG); return false; + } // Check if the sender is the thread owner $p = q("SELECT `author-link`, `origin` FROM `item` WHERE `id` = %d", intval($r[0]["parent"])); // Only delete it if the parent author really fits - if (!link_compare($p[0]["author-link"], $contact["url"])) + if (!link_compare($p[0]["author-link"], $contact["url"]) AND !link_compare($r[0]["author-link"], $contact["url"])) { + logger("Thread author ".$p[0]["author-link"]." and item author ".$r[0]["author-link"]." don't fit to expected contact ".$contact["url"], LOGGER_DEBUG); return false; + } // Currently we don't have a central deletion function that we could use in this case. The function "item_drop" doesn't work for that case q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '' , `title` = '' WHERE `id` = %d", @@ -1736,6 +1742,8 @@ class diaspora { return false; } + logger("Got retraction for ".$target_type.", sender ".$sender." and user ".$importer["uid"], LOGGER_DEBUG); + switch ($target_type) { case "Comment": case "Like": From 9ae2b2292fd07a53f46689f778cd4630031912a7 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 14 Mar 2016 08:11:14 +0100 Subject: [PATCH 042/485] Some more function calls changed to the new class --- include/Contact.php | 2 +- include/contact_selectors.php | 2 +- include/delivery.php | 8 ++++---- include/diaspora2.php | 10 ++++++++-- include/follow.php | 2 +- include/notifier.php | 6 +++--- include/queue.php | 2 +- 7 files changed, 19 insertions(+), 13 deletions(-) diff --git a/include/Contact.php b/include/Contact.php index 3799e0b189..d76c8f826c 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -129,7 +129,7 @@ function terminate_friendship($user,$self,$contact) { } elseif($contact['network'] === NETWORK_DIASPORA) { require_once('include/diaspora.php'); - diaspora_unshare($user,$contact); + diaspora::send_unshare($user,$contact); } elseif($contact['network'] === NETWORK_DFRN) { require_once('include/dfrn.php'); diff --git a/include/contact_selectors.php b/include/contact_selectors.php index a884a6b52b..3bf68f764e 100644 --- a/include/contact_selectors.php +++ b/include/contact_selectors.php @@ -99,7 +99,7 @@ function network_to_name($s, $profile = "") { $networkname = str_replace($search,$replace,$s); - if (($s == NETWORK_DIASPORA) AND ($profile != "") AND diaspora_is_redmatrix($profile)) { + if (($s == NETWORK_DIASPORA) AND ($profile != "") AND diaspora::is_redmatrix($profile)) { $networkname = t("Hubzilla/Redmatrix"); $r = q("SELECT `gserver`.`platform` FROM `gcontact` diff --git a/include/delivery.php b/include/delivery.php index d184fe12e1..1e1dadcd93 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -522,25 +522,25 @@ function delivery_run(&$argv, &$argc){ if (($target_item['deleted']) && (($target_item['uri'] === $target_item['parent-uri']) || $followup)) { // top-level retraction - logger('delivery: diaspora retract: '.$loc); - + logger('diaspora retract: '.$loc); diaspora::send_retraction($target_item,$owner,$contact,$public_message); //diaspora_send_retraction($target_item,$owner,$contact,$public_message); break; } elseif ($followup) { // send comments and likes to owner to relay + logger('diaspora followup: '.$loc); diaspora::send_followup($target_item,$owner,$contact,$public_message); //diaspora_send_followup($target_item,$owner,$contact,$public_message); break; } elseif ($target_item['uri'] !== $target_item['parent-uri']) { // we are the relay - send comments, likes and relayable_retractions to our conversants - logger('delivery: diaspora relay: '.$loc); + logger('diaspora relay: '.$loc); diaspora::send_relay($target_item,$owner,$contact,$public_message); //diaspora_send_relay($target_item,$owner,$contact,$public_message); break; } elseif ($top_level && !$walltowall) { // currently no workable solution for sending walltowall - logger('delivery: diaspora status: '.$loc); + logger('diaspora status: '.$loc); diaspora::send_status($target_item,$owner,$contact,$public_message); //diaspora_send_status($target_item,$owner,$contact,$public_message); break; diff --git a/include/diaspora2.php b/include/diaspora2.php index f6b8b9a704..5c17754e80 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -460,6 +460,8 @@ class diaspora { * @return string The public key */ private function key($handle) { + $handle = strval($handle); + logger("Fetching diaspora key for: ".$handle); $r = self::person_by_handle($handle); @@ -1699,7 +1701,7 @@ class diaspora { } // Check if the sender is the thread owner - $p = q("SELECT `author-link`, `origin` FROM `item` WHERE `id` = %d", + $p = q("SELECT `id`, `author-link`, `origin` FROM `item` WHERE `id` = %d", intval($r[0]["parent"])); // Only delete it if the parent author really fits @@ -1716,7 +1718,7 @@ class diaspora { ); delete_thread($r[0]["id"], $r[0]["parent-uri"]); - logger("Deleted target ".$target_guid." from user ".$importer["uid"], LOGGER_DEBUG); + logger("Deleted target ".$target_guid." (".$r[0]["id"].") from user ".$importer["uid"]." parent: ".$p[0]["id"], LOGGER_DEBUG); // Now check if the retraction needs to be relayed by us if($p[0]["origin"]) { @@ -1727,6 +1729,8 @@ class diaspora { intval($r[0]["id"]), dbesc(json_encode($data)) ); + $s = q("select * from sign where retract_iid = %d", intval($r[0]["id"])); + logger("Stored signatur for item ".$r[0]["id"]." - ".print_r($s, true), LOGGER_DEBUG); // notify others proc_run("php", "include/notifier.php", "drop", $r[0]["id"]); @@ -2341,6 +2345,8 @@ class diaspora { $type = "comment"; } + logger("Got relayable data ".$type." for item ".$item["guid"]." (".$item["id"].")", LOGGER_DEBUG); + // fetch the original signature $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE `".$sql_sign_id."` = %d LIMIT 1", diff --git a/include/follow.php b/include/follow.php index 3af629536d..6eab7e12fa 100644 --- a/include/follow.php +++ b/include/follow.php @@ -303,7 +303,7 @@ function new_contact($uid,$url,$interactive = false) { } if($contact['network'] == NETWORK_DIASPORA) { require_once('include/diaspora.php'); - $ret = diaspora_share($a->user,$contact); + $ret = diaspora::send_share($a->user,$contact); logger('mod_follow: diaspora_share returns: ' . $ret); } } diff --git a/include/notifier.php b/include/notifier.php index 6c42f19c6a..e65da3adf2 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -536,7 +536,7 @@ function notifier_run(&$argv, &$argc){ if($public_message) { if (!$followup AND $top_level) - $r0 = diaspora_fetch_relay(); + $r0 = diaspora::relay_list(); else $r0 = array(); @@ -629,11 +629,11 @@ function notifier_run(&$argv, &$argc){ } // If the item was deleted, clean up the `sign` table - if($target_item['deleted']) { + /* if($target_item['deleted']) { $r = q("DELETE FROM sign where `retract_iid` = %d", intval($target_item['id']) ); - } + } */ logger('notifier: calling hooks', LOGGER_DEBUG); diff --git a/include/queue.php b/include/queue.php index 183ce0f9cd..878c149731 100644 --- a/include/queue.php +++ b/include/queue.php @@ -193,7 +193,7 @@ function queue_run(&$argv, &$argc){ case NETWORK_DIASPORA: if($contact['notify']) { logger('queue: diaspora_delivery: item '.$q_item['id'].' for '.$contact['name'].' <'.$contact['url'].'>'); - $deliver_status = diaspora_transmit($owner,$contact,$data,$public,true); + $deliver_status = diaspora::transmit($owner,$contact,$data,$public,true); if($deliver_status == (-1)) { update_queue_time($q_item['id']); From 3734555715ab780c1d951c7c9d59c91b76b17b39 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 14 Mar 2016 20:04:17 +0100 Subject: [PATCH 043/485] Conversations are working now too --- include/diaspora2.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index 5c17754e80..c0e054c384 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -918,7 +918,7 @@ class diaspora { return $message_id; } - private function receive_conversation_message($importer, $contact, $data, $msg, $mesg) { + private function receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation) { $guid = notags(unxmlify($data->guid)); $subject = notags(unxmlify($data->subject)); $author = notags(unxmlify($data->author)); @@ -1086,7 +1086,7 @@ class diaspora { } foreach($messages as $mesg) - self::receive_conversation_message($importer, $contact, $data, $msg, $mesg); + self::receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation); return true; } From 56cb6cc8972f55d82030c8c2b908b05e656640f6 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 14 Mar 2016 20:53:44 +0100 Subject: [PATCH 044/485] Removed just more old diaspora function calls. --- database.sql | 11 ------- doc/database.md | 1 - doc/database/db_dsprphotoq.md | 11 ------- include/cron.php | 4 --- include/dbstructure.php | 11 ------- include/delivery.php | 5 ---- include/diaspora2.php | 2 +- include/dsprphotoq.php | 55 ----------------------------------- include/follow.php | 2 +- mod/dfrn_confirm.php | 4 +-- mod/p.php | 6 ++-- mod/receive.php | 3 -- object/Item.php | 2 +- 13 files changed, 8 insertions(+), 109 deletions(-) delete mode 100644 doc/database/db_dsprphotoq.md delete mode 100644 include/dsprphotoq.php diff --git a/database.sql b/database.sql index 25faf0f4c0..02e5c9b378 100644 --- a/database.sql +++ b/database.sql @@ -201,17 +201,6 @@ CREATE TABLE IF NOT EXISTS `deliverq` ( PRIMARY KEY(`id`) ) DEFAULT CHARSET=utf8; --- --- TABLE dsprphotoq --- -CREATE TABLE IF NOT EXISTS `dsprphotoq` ( - `id` int(10) unsigned NOT NULL auto_increment, - `uid` int(11) NOT NULL DEFAULT 0, - `msg` mediumtext NOT NULL, - `attempt` tinyint(4) NOT NULL DEFAULT 0, - PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; - -- -- TABLE event -- diff --git a/doc/database.md b/doc/database.md index e37df05e09..f48404c17d 100644 --- a/doc/database.md +++ b/doc/database.md @@ -15,7 +15,6 @@ Database Tables | [contact](help/database/db_contact) | contact table | | [conv](help/database/db_conv) | private messages | | [deliverq](help/database/db_deliverq) | | -| [dsprphotoq](help/database/db_dsprphotoq) | | | [event](help/database/db_event) | Events | | [fcontact](help/database/db_fcontact) | friend suggestion stuff | | [ffinder](help/database/db_ffinder) | friend suggestion stuff | diff --git a/doc/database/db_dsprphotoq.md b/doc/database/db_dsprphotoq.md deleted file mode 100644 index 6af4d030e0..0000000000 --- a/doc/database/db_dsprphotoq.md +++ /dev/null @@ -1,11 +0,0 @@ -Table dsprphotoq -================ - -| Field | Description | Type | Null | Key | Default | Extra | -|---------|------------------|------------------|------|-----|---------|----------------| -| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | -| uid | | int(11) | NO | | 0 | | -| msg | | mediumtext | NO | | NULL | | -| attempt | | tinyint(4) | NO | | 0 | | - -Return to [database documentation](help/database) diff --git a/include/cron.php b/include/cron.php index db7d44be0b..60c62786e6 100644 --- a/include/cron.php +++ b/include/cron.php @@ -71,10 +71,6 @@ function cron_run(&$argv, &$argc){ proc_run('php',"include/queue.php"); - // run diaspora photo queue process in the background - - proc_run('php',"include/dsprphotoq.php"); - // run the process to discover global contacts in the background proc_run('php',"include/discover_poco.php"); diff --git a/include/dbstructure.php b/include/dbstructure.php index ddf036f2c1..e5e748bb24 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -537,17 +537,6 @@ function db_definition() { "PRIMARY" => array("id"), ) ); - $database["dsprphotoq"] = array( - "fields" => array( - "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "msg" => array("type" => "mediumtext", "not null" => "1"), - "attempt" => array("type" => "tinyint(4)", "not null" => "1", "default" => "0"), - ), - "indexes" => array( - "PRIMARY" => array("id"), - ) - ); $database["event"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), diff --git a/include/delivery.php b/include/delivery.php index 1e1dadcd93..9ac9f2391b 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -501,7 +501,6 @@ function delivery_run(&$argv, &$argc){ if ($mail) { diaspora::send_mail($item,$owner,$contact); - //diaspora_send_mail($item,$owner,$contact); break; } @@ -524,25 +523,21 @@ function delivery_run(&$argv, &$argc){ // top-level retraction logger('diaspora retract: '.$loc); diaspora::send_retraction($target_item,$owner,$contact,$public_message); - //diaspora_send_retraction($target_item,$owner,$contact,$public_message); break; } elseif ($followup) { // send comments and likes to owner to relay logger('diaspora followup: '.$loc); diaspora::send_followup($target_item,$owner,$contact,$public_message); - //diaspora_send_followup($target_item,$owner,$contact,$public_message); break; } elseif ($target_item['uri'] !== $target_item['parent-uri']) { // we are the relay - send comments, likes and relayable_retractions to our conversants logger('diaspora relay: '.$loc); diaspora::send_relay($target_item,$owner,$contact,$public_message); - //diaspora_send_relay($target_item,$owner,$contact,$public_message); break; } elseif ($top_level && !$walltowall) { // currently no workable solution for sending walltowall logger('diaspora status: '.$loc); diaspora::send_status($target_item,$owner,$contact,$public_message); - //diaspora_send_status($target_item,$owner,$contact,$public_message); break; } diff --git a/include/diaspora2.php b/include/diaspora2.php index c0e054c384..1a354e9cf2 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -2093,7 +2093,7 @@ class diaspora { return self::build_and_transmit($owner, $contact, "retraction", $message); } - private function is_reshare($body) { + public static function is_reshare($body) { $body = trim($body); // Skip if it isn't a pure repeated messages diff --git a/include/dsprphotoq.php b/include/dsprphotoq.php deleted file mode 100644 index 0d8088d4bd..0000000000 --- a/include/dsprphotoq.php +++ /dev/null @@ -1,55 +0,0 @@ - 0, "page-flags" => PAGE_FREELOVE); - else - $r = q("SELECT * FROM user WHERE uid = %d", - intval($dphoto['uid'])); - - if(!$r) { - logger("diaspora photo queue: user " . $dphoto['uid'] . " not found"); - return; - } - - $ret = diaspora_dispatch($r[0],unserialize($dphoto['msg']),$dphoto['attempt']); - q("DELETE FROM dsprphotoq WHERE id = %d", - intval($dphoto['id']) - ); - } -} - - -if (array_search(__file__,get_included_files())===0){ - dsprphotoq_run($_SERVER["argv"],$_SERVER["argc"]); - killme(); -} diff --git a/include/follow.php b/include/follow.php index 6eab7e12fa..d0411a466a 100644 --- a/include/follow.php +++ b/include/follow.php @@ -304,7 +304,7 @@ function new_contact($uid,$url,$interactive = false) { if($contact['network'] == NETWORK_DIASPORA) { require_once('include/diaspora.php'); $ret = diaspora::send_share($a->user,$contact); - logger('mod_follow: diaspora_share returns: ' . $ret); + logger('share returns: '.$ret); } } diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 68950ec285..cc09021dca 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -427,8 +427,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) { if(($contact) && ($contact['network'] === NETWORK_DIASPORA)) { require_once('include/diaspora.php'); - $ret = diaspora_share($user[0],$r[0]); - logger('mod_follow: diaspora_share returns: ' . $ret); + $ret = diaspora::send_share($user[0],$r[0]); + logger('share returns: ' . $ret); } // Send a new friend post if we are allowed to... diff --git a/mod/p.php b/mod/p.php index 92b72dc1ce..20d6cfdbaf 100644 --- a/mod/p.php +++ b/mod/p.php @@ -28,14 +28,14 @@ function p_init($a){ $post = array(); - $reshared = diaspora_is_reshare($item[0]["body"]); + $reshared = diaspora::is_reshare($item[0]["body"]); if ($reshared) { $nodename = "reshare"; $post["root_diaspora_id"] = $reshared["root_handle"]; $post["root_guid"] = $reshared["root_guid"]; $post["guid"] = $item[0]["guid"]; - $post["diaspora_handle"] = diaspora_handle_from_contact($item[0]["contact-id"]); + $post["diaspora_handle"] = diaspora::handle_from_contact($item[0]["contact-id"]); $post["public"] = (!$item[0]["private"] ? 'true':'false'); $post["created_at"] = datetime_convert('UTC','UTC',$item[0]["created"]); } else { @@ -48,7 +48,7 @@ function p_init($a){ $nodename = "status_message"; $post["raw_message"] = str_replace("&", "&", $body); $post["guid"] = $item[0]["guid"]; - $post["diaspora_handle"] = diaspora_handle_from_contact($item[0]["contact-id"]); + $post["diaspora_handle"] = diaspora::handle_from_contact($item[0]["contact-id"]); $post["public"] = (!$item[0]["private"] ? 'true':'false'); $post["created_at"] = datetime_convert('UTC','UTC',$item[0]["created"]); $post["provider_display_name"] = $item[0]["app"]; diff --git a/mod/receive.php b/mod/receive.php index 051ea8c25c..4991ac47e8 100644 --- a/mod/receive.php +++ b/mod/receive.php @@ -54,7 +54,6 @@ function receive_post(&$a) { logger('mod-diaspora: message is okay', LOGGER_DEBUG); $msg = diaspora::decode($importer,$xml); - //$msg = diaspora_decode($importer,$xml); logger('mod-diaspora: decoded', LOGGER_DEBUG); @@ -68,10 +67,8 @@ function receive_post(&$a) { $ret = 0; if($public) { diaspora::dispatch_public($msg); - //diaspora_dispatch_public($msg); } else { $ret = diaspora::dispatch($importer,$msg); - //$ret = diaspora_dispatch($importer,$msg); } http_status_exit(($ret) ? $ret : 200); diff --git a/object/Item.php b/object/Item.php index e9c96cf159..59659cdaff 100644 --- a/object/Item.php +++ b/object/Item.php @@ -324,7 +324,7 @@ class Item extends BaseObject { // Diaspora isn't able to do likes on comments - but red does if (($item["item_network"] == NETWORK_DIASPORA) AND ($indent == 'comment') AND - !diaspora_is_redmatrix($item["owner-link"]) AND isset($buttons["like"])) + !diaspora::is_redmatrix($item["owner-link"]) AND isset($buttons["like"])) unset($buttons["like"]); // Diaspora doesn't has multithreaded comments From 6f43d3a4c4f87dd282691d3e65c75b0ed99a1b3b Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 14 Mar 2016 22:10:26 +0100 Subject: [PATCH 045/485] Profile update is now working with the new function as well --- include/diaspora2.php | 86 ++++++++++++++++++++++++++++++++++- include/profile_update.php | 92 +------------------------------------- 2 files changed, 85 insertions(+), 93 deletions(-) diff --git a/include/diaspora2.php b/include/diaspora2.php index 1a354e9cf2..75cedeccd1 100644 --- a/include/diaspora2.php +++ b/include/diaspora2.php @@ -2058,7 +2058,7 @@ class diaspora { } - private function build_and_transmit($owner, $contact, $type, $message, $public_batch = false, $guid = "") { + private function build_and_transmit($owner, $contact, $type, $message, $public_batch = false, $guid = "", $spool = false) { $data = array("XML" => array("post" => array($type => $message))); @@ -2069,7 +2069,11 @@ class diaspora { $slap = self::build_message($msg, $owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch); - $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $guid); + if ($spool) { + add_to_queue($contact['id'], NETWORK_DIASPORA, $slap, $public_batch); + return true; + } else + $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $guid); logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); @@ -2467,5 +2471,83 @@ class diaspora { return self::build_and_transmit($owner, $contact, $type, $message, false, $item["guid"]); } + + public static function send_profile($uid) { + + if (!$uid) + return; + + $recips = q("SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s' + AND `uid` = %d AND `rel` != %d", + dbesc(NETWORK_DIASPORA), + intval($uid), + intval(CONTACT_IS_SHARING) + ); + if (!$recips) + return; + + $r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.*, `user`.`prvkey` AS `uprvkey`, `contact`.`addr` + FROM `profile` + INNER JOIN `user` ON `profile`.`uid` = `user`.`uid` + INNER JOIN `contact` ON `profile`.`uid` = `contact`.`uid` + WHERE `user`.`uid` = %d AND `profile`.`is-default` AND `contact`.`self` LIMIT 1", + intval($uid) + ); + + if (!$r) + return; + + $profile = $r[0]; + + $handle = $profile["addr"]; + $first = ((strpos($profile['name'],' ') + ? trim(substr($profile['name'],0,strpos($profile['name'],' '))) : $profile['name'])); + $last = (($first === $profile['name']) ? '' : trim(substr($profile['name'], strlen($first)))); + $large = App::get_baseurl().'/photo/custom/300/'.$profile['uid'].'.jpg'; + $medium = App::get_baseurl().'/photo/custom/100/'.$profile['uid'].'.jpg'; + $small = App::get_baseurl().'/photo/custom/50/' .$profile['uid'].'.jpg'; + $searchable = (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false'); + + if ($searchable === 'true') { + $dob = '1000-00-00'; + + if (($profile['dob']) && ($profile['dob'] != '0000-00-00')) + $dob = ((intval($profile['dob'])) ? intval($profile['dob']) : '1000') .'-'. datetime_convert('UTC','UTC',$profile['dob'],'m-d'); + + $about = $profile['about']; + $about = strip_tags(bbcode($about)); + + $location = formatted_location($profile); + $tags = ''; + if ($profile['pub_keywords']) { + $kw = str_replace(',',' ',$profile['pub_keywords']); + $kw = str_replace(' ',' ',$kw); + $arr = explode(' ',$profile['pub_keywords']); + if (count($arr)) { + for($x = 0; $x < 5; $x ++) { + if (trim($arr[$x])) + $tags .= '#'. trim($arr[$x]) .' '; + } + } + } + $tags = trim($tags); + } + + $message = array("diaspora_handle" => $handle, + "first_name" => $first, + "last_name" => $last, + "image_url" => $large, + "image_url_medium" => $medium, + "image_url_small" => $small, + "birthday" => $dob, + "gender" => $profile['gender'], + "bio" => $about, + "location" => $location, + "searchable" => $searchable, + "tag_string" => $tags); + + foreach($recips as $recip) + self::build_and_transmit($profile, $recip, "profile", $message, false, "", true); + } } ?> diff --git a/include/profile_update.php b/include/profile_update.php index 7cc72cc866..399150f21c 100644 --- a/include/profile_update.php +++ b/include/profile_update.php @@ -1,96 +1,6 @@ get_baseurl() . '/profile/' . $a->user['nickname']; -// if($url && strlen(get_config('system','directory'))) -// proc_run('php',"include/directory.php","$url"); - - $recips = q("SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s' - AND `uid` = %d AND `rel` != %d ", - dbesc(NETWORK_DIASPORA), - intval(local_user()), - intval(CONTACT_IS_SHARING) - ); - if(! count($recips)) - return; - - $r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.* FROM `profile` - INNER JOIN `user` ON `profile`.`uid` = `user`.`uid` - WHERE `user`.`uid` = %d AND `profile`.`is-default` = 1 LIMIT 1", - intval(local_user()) - ); - - if(! count($r)) - return; - $profile = $r[0]; - - $handle = xmlify($a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3)); - $first = xmlify(((strpos($profile['name'],' ')) - ? trim(substr($profile['name'],0,strpos($profile['name'],' '))) : $profile['name'])); - $last = xmlify((($first === $profile['name']) ? '' : trim(substr($profile['name'],strlen($first))))); - $large = xmlify($a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg'); - $medium = xmlify($a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg'); - $small = xmlify($a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg'); - $searchable = xmlify((($profile['publish'] && $profile['net-publish']) ? 'true' : 'false' )); -// $searchable = 'true'; - - if($searchable === 'true') { - $dob = '1000-00-00'; - - if(($profile['dob']) && ($profile['dob'] != '0000-00-00')) - $dob = ((intval($profile['dob'])) ? intval($profile['dob']) : '1000') . '-' . datetime_convert('UTC','UTC',$profile['dob'],'m-d'); - $gender = xmlify($profile['gender']); - $about = xmlify($profile['about']); - require_once('include/bbcode.php'); - $about = xmlify(strip_tags(bbcode($about))); - $location = formatted_location($profile); - $location = xmlify($location); - $tags = ''; - if($profile['pub_keywords']) { - $kw = str_replace(',',' ',$profile['pub_keywords']); - $kw = str_replace(' ',' ',$kw); - $arr = explode(' ',$profile['pub_keywords']); - if(count($arr)) { - for($x = 0; $x < 5; $x ++) { - if(trim($arr[$x])) - $tags .= '#' . trim($arr[$x]) . ' '; - } - } - } - $tags = xmlify(trim($tags)); - } - - $tpl = get_markup_template('diaspora_profile.tpl'); - - $msg = replace_macros($tpl,array( - '$handle' => $handle, - '$first' => $first, - '$last' => $last, - '$large' => $large, - '$medium' => $medium, - '$small' => $small, - '$dob' => $dob, - '$gender' => $gender, - '$about' => $about, - '$location' => $location, - '$searchable' => $searchable, - '$tags' => $tags - )); - logger('profile_change: ' . $msg, LOGGER_ALL); - - foreach($recips as $recip) { - $msgtosend = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$a->user,$recip,$a->user['prvkey'],$recip['pubkey'],false))); - add_to_queue($recip['id'],NETWORK_DIASPORA,$msgtosend,false); - } + diaspora::send_profile(local_user()); } From dc2e7a66b3cf9401afbc4cf425fc5a37c66d2d74 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 14 Mar 2016 23:11:43 +0100 Subject: [PATCH 046/485] The Diaspora class is now productive --- include/diaspora.php | 5338 ++++++++++++++++++----------------------- include/diaspora2.php | 2553 -------------------- 2 files changed, 2359 insertions(+), 5532 deletions(-) delete mode 100644 include/diaspora2.php diff --git a/include/diaspora.php b/include/diaspora.php index 11fe2c9b57..75cedeccd1 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1,1702 +1,927 @@ 0, "page-flags" => PAGE_FREELOVE); - $result = diaspora_dispatch($importer,$msg); - logger("Dispatcher reported ".$result, LOGGER_DEBUG); + $serverdata = get_config("system", "relay_server"); + if ($serverdata == "") + return array(); - // Now distribute it to the followers - $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN - ( SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s' ) - AND `account_expired` = 0 AND `account_removed` = 0 ", - dbesc(NETWORK_DIASPORA), - dbesc($msg['author']) - ); - if(count($r)) { - foreach($r as $rr) { - logger('diaspora_public: delivering to: ' . $rr['username']); - diaspora_dispatch($rr,$msg); + $relay = array(); + + $servers = explode(",", $serverdata); + + foreach($servers AS $server) { + $server = trim($server); + $batch = $server."/receive/public"; + + $relais = q("SELECT `batch`, `id`, `name`,`network` FROM `contact` WHERE `uid` = 0 AND `batch` = '%s' LIMIT 1", dbesc($batch)); + + if (!$relais) { + $addr = "relay@".str_replace("http://", "", normalise_link($server)); + + $r = q("INSERT INTO `contact` (`uid`, `created`, `name`, `nick`, `addr`, `url`, `nurl`, `batch`, `network`, `rel`, `blocked`, `pending`, `writable`, `name-date`, `uri-date`, `avatar-date`) + VALUES (0, '%s', '%s', 'relay', '%s', '%s', '%s', '%s', '%s', %d, 0, 0, 1, '%s', '%s', '%s')", + datetime_convert(), + dbesc($addr), + dbesc($addr), + dbesc($server), + dbesc(normalise_link($server)), + dbesc($batch), + dbesc(NETWORK_DIASPORA), + intval(CONTACT_IS_FOLLOWER), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + dbesc(datetime_convert()) + ); + + $relais = q("SELECT `batch`, `id`, `name`,`network` FROM `contact` WHERE `uid` = 0 AND `batch` = '%s' LIMIT 1", dbesc($batch)); + if ($relais) + $relay[] = $relais[0]; + } else + $relay[] = $relais[0]; } - } - else - logger('diaspora_public: no subscribers for '.$msg["author"].' '.print_r($msg, true)); -} - - -function diaspora_dispatch($importer,$msg,$attempt=1) { - - $ret = 0; - - $enabled = intval(get_config('system','diaspora_enabled')); - if(! $enabled) { - logger('mod-diaspora: disabled'); - return; + return $relay; } - $data = $msg; + function repair_signature($signature, $handle = "", $level = 1) { - // php doesn't like dashes in variable names + if ($signature == "") + return ($signature); - $msg['message'] = str_replace( - array('',''), - array('',''), - $msg['message']); + if (base64_encode(base64_decode(base64_decode($signature))) == base64_decode($signature)) { + $signature = base64_decode($signature); + logger("Repaired double encoded signature from Diaspora/Hubzilla handle ".$handle." - level ".$level, LOGGER_DEBUG); - - $parsed_xml = parse_xml_string($msg['message'],false); - - $xmlbase = $parsed_xml->post; - - logger('diaspora_dispatch: ' . print_r($xmlbase,true), LOGGER_DEBUG); - - - if($xmlbase->request) { - $tempfile = tempnam(get_temppath(), "diaspora-request"); - file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_request($importer,$xmlbase->request); - } - elseif($xmlbase->status_message) { - //$tempfile = tempnam(get_temppath(), "diaspora-status_message"); - //file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_post($importer,$xmlbase->status_message,$msg); - } - elseif($xmlbase->profile) { - //$tempfile = tempnam(get_temppath(), "diaspora-profile"); - //file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_profile($importer,$xmlbase->profile,$msg); - } - elseif($xmlbase->comment) { - //$tempfile = tempnam(get_temppath(), "diaspora-comment"); - //file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_comment($importer,$xmlbase->comment,$msg); - } - elseif($xmlbase->like) { - //$tempfile = tempnam(get_temppath(), "diaspora-like"); - //file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_like($importer,$xmlbase->like,$msg); - } - elseif($xmlbase->asphoto) { - $tempfile = tempnam(get_temppath(), "diaspora-asphoto"); - file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_asphoto($importer,$xmlbase->asphoto,$msg); - } - elseif($xmlbase->reshare) { - //$tempfile = tempnam(get_temppath(), "diaspora-reshare"); - //file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_reshare($importer,$xmlbase->reshare,$msg); - } - elseif($xmlbase->retraction) { - //$tempfile = tempnam(get_temppath(), "diaspora-retraction"); - //file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_retraction($importer,$xmlbase->retraction,$msg); - } - elseif($xmlbase->signed_retraction) { - //$tempfile = tempnam(get_temppath(), "diaspora-signed_retraction"); - //file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_signed_retraction($importer,$xmlbase->signed_retraction,$msg); - } - elseif($xmlbase->relayable_retraction) { - //$tempfile = tempnam(get_temppath(), "diaspora-relayable_retraction"); - //file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg); - } - elseif($xmlbase->photo) { - //$tempfile = tempnam(get_temppath(), "diaspora-photo"); - //file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_photo($importer,$xmlbase->photo,$msg,$attempt); - } - elseif($xmlbase->conversation) { - $tempfile = tempnam(get_temppath(), "diaspora-conversation"); - file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_conversation($importer,$xmlbase->conversation,$msg); - } - elseif($xmlbase->message) { - $tempfile = tempnam(get_temppath(), "diaspora-message"); - file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_message($importer,$xmlbase->message,$msg); - } - elseif($xmlbase->participation) { - //$tempfile = tempnam(get_temppath(), "diaspora-participation"); - //file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_participation($importer,$xmlbase->participation); - } - elseif($xmlbase->poll_participation) { - //$tempfile = tempnam(get_temppath(), "diaspora-poll_participation"); - //file_put_contents($tempfile, json_encode($data)); - $ret = diaspora_participation($importer,$xmlbase->poll_participation); - } - else { - $tempfile = tempnam(get_temppath(), "diaspora-unknown"); - file_put_contents($tempfile, json_encode($data)); - logger('diaspora_dispatch: unknown message type: ' . print_r($xmlbase,true)); - } - return $ret; -} - -function diaspora_handle_from_contact($contact_id) { - $handle = False; - - logger("diaspora_handle_from_contact: contact id is " . $contact_id, LOGGER_DEBUG); - - $r = q("SELECT network, addr, self, url, nick FROM contact WHERE id = %d", - intval($contact_id) - ); - if($r) { - $contact = $r[0]; - - logger("diaspora_handle_from_contact: contact 'self' = " . $contact['self'] . " 'url' = " . $contact['url'], LOGGER_DEBUG); - - if($contact['network'] === NETWORK_DIASPORA) { - $handle = $contact['addr']; - -// logger("diaspora_handle_from_contact: contact id is a Diaspora person, handle = " . $handle, LOGGER_DEBUG); + // Do a recursive call to be able to fix even multiple levels + if ($level < 10) + $signature = self::repair_signature($signature, $handle, ++$level); } - elseif(($contact['network'] === NETWORK_DFRN) || ($contact['self'] == 1)) { - $baseurl_start = strpos($contact['url'],'://') + 3; - $baseurl_length = strpos($contact['url'],'/profile') - $baseurl_start; // allows installations in a subdirectory--not sure how Diaspora will handle - $baseurl = substr($contact['url'], $baseurl_start, $baseurl_length); - $handle = $contact['nick'] . '@' . $baseurl; -// logger("diaspora_handle_from_contact: contact id is a DFRN person, handle = " . $handle, LOGGER_DEBUG); - } + return($signature); } - return $handle; -} + /** + * @brief: Decodes incoming Diaspora message + * + * @param array $importer from user table + * @param string $xml urldecoded Diaspora salmon + * + * @return array + * 'message' -> decoded Diaspora XML message + * 'author' -> author diaspora handle + * 'key' -> author public key (converted to pkcs#8) + */ + function decode($importer, $xml) { -function diaspora_get_contact_by_handle($uid,$handle) { - $r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `addr` = '%s' LIMIT 1", - dbesc(NETWORK_DIASPORA), - intval($uid), - dbesc($handle) - ); - if($r && count($r)) - return $r[0]; + $public = false; + $basedom = parse_xml_string($xml); - $handle_parts = explode("@", $handle); - $nurl_sql = '%%://' . $handle_parts[1] . '%%/profile/' . $handle_parts[0]; - $r = q("SELECT * FROM contact WHERE network = '%s' AND uid = %d AND nurl LIKE '%s' LIMIT 1", - dbesc(NETWORK_DFRN), - intval($uid), - dbesc($nurl_sql) - ); - if($r && count($r)) - return $r[0]; + if (!is_object($basedom)) + return false; - return false; -} + $children = $basedom->children('https://joindiaspora.com/protocol'); -function find_diaspora_person_by_handle($handle) { + if($children->header) { + $public = true; + $author_link = str_replace('acct:','',$children->header->author_id); + } else { - $person = false; - $update = false; - $got_lock = false; + $encrypted_header = json_decode(base64_decode($children->encrypted_header)); - $endlessloop = 0; - $maxloops = 10; + $encrypted_aes_key_bundle = base64_decode($encrypted_header->aes_key); + $ciphertext = base64_decode($encrypted_header->ciphertext); - do { - $r = q("select * from fcontact where network = '%s' and addr = '%s' limit 1", + $outer_key_bundle = ''; + openssl_private_decrypt($encrypted_aes_key_bundle,$outer_key_bundle,$importer['prvkey']); + + $j_outer_key_bundle = json_decode($outer_key_bundle); + + $outer_iv = base64_decode($j_outer_key_bundle->iv); + $outer_key = base64_decode($j_outer_key_bundle->key); + + $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $outer_key, $ciphertext, MCRYPT_MODE_CBC, $outer_iv); + + + $decrypted = pkcs5_unpad($decrypted); + + /** + * $decrypted now contains something like + * + * + * 8e+G2+ET8l5BPuW0sVTnQw== + * UvSMb4puPeB14STkcDWq+4QE302Edu15oaprAQSkLKU= + * galaxor@diaspora.priateship.org + * + */ + + logger('decrypted: '.$decrypted, LOGGER_DEBUG); + $idom = parse_xml_string($decrypted,false); + + $inner_iv = base64_decode($idom->iv); + $inner_aes_key = base64_decode($idom->aes_key); + + $author_link = str_replace('acct:','',$idom->author_id); + } + + $dom = $basedom->children(NAMESPACE_SALMON_ME); + + // figure out where in the DOM tree our data is hiding + + if($dom->provenance->data) + $base = $dom->provenance; + elseif($dom->env->data) + $base = $dom->env; + elseif($dom->data) + $base = $dom; + + if (!$base) { + logger('unable to locate salmon data in xml'); + http_status_exit(400); + } + + + // Stash the signature away for now. We have to find their key or it won't be good for anything. + $signature = base64url_decode($base->sig); + + // unpack the data + + // strip whitespace so our data element will return to one big base64 blob + $data = str_replace(array(" ","\t","\r","\n"),array("","","",""),$base->data); + + + // stash away some other stuff for later + + $type = $base->data[0]->attributes()->type[0]; + $keyhash = $base->sig[0]->attributes()->keyhash[0]; + $encoding = $base->encoding; + $alg = $base->alg; + + + $signed_data = $data.'.'.base64url_encode($type).'.'.base64url_encode($encoding).'.'.base64url_encode($alg); + + + // decode the data + $data = base64url_decode($data); + + + if($public) + $inner_decrypted = $data; + else { + + // Decode the encrypted blob + + $inner_encrypted = base64_decode($data); + $inner_decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $inner_aes_key, $inner_encrypted, MCRYPT_MODE_CBC, $inner_iv); + $inner_decrypted = pkcs5_unpad($inner_decrypted); + } + + if (!$author_link) { + logger('Could not retrieve author URI.'); + http_status_exit(400); + } + // Once we have the author URI, go to the web and try to find their public key + // (first this will look it up locally if it is in the fcontact cache) + // This will also convert diaspora public key from pkcs#1 to pkcs#8 + + logger('Fetching key for '.$author_link); + $key = self::key($author_link); + + if (!$key) { + logger('Could not retrieve author key.'); + http_status_exit(400); + } + + $verify = rsa_verify($signed_data,$signature,$key); + + if (!$verify) { + logger('Message did not verify. Discarding.'); + http_status_exit(400); + } + + logger('Message verified.'); + + return array('message' => $inner_decrypted, 'author' => $author_link, 'key' => $key); + + } + + + /** + * @brief Dispatches public messages and find the fitting receivers + * + * @param array $msg The post that will be dispatched + * + * @return bool Was the message accepted? + */ + public static function dispatch_public($msg) { + + $enabled = intval(get_config("system", "diaspora_enabled")); + if (!$enabled) { + logger("diaspora is disabled"); + return false; + } + + // Use a dummy importer to import the data for the public copy + $importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE); + $item_id = self::dispatch($importer,$msg); + + // Now distribute it to the followers + $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN + (SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s') + AND NOT `account_expired` AND NOT `account_removed`", + dbesc(NETWORK_DIASPORA), + dbesc($msg["author"]) + ); + if($r) { + foreach($r as $rr) { + logger("delivering to: ".$rr["username"]); + self::dispatch($rr,$msg); + } + } else + logger("No subscribers for ".$msg["author"]." ".print_r($msg, true)); + + return $item_id; + } + + /** + * @brief Dispatches the different message types to the different functions + * + * @param array $importer Array of the importer user + * @param array $msg The post that will be dispatched + * + * @return bool Was the message accepted? + */ + public static function dispatch($importer, $msg) { + + // The sender is the handle of the contact that sent the message. + // This will often be different with relayed messages (for example "like" and "comment") + $sender = $msg["author"]; + + if (!diaspora::valid_posting($msg, $fields)) { + logger("Invalid posting"); + return false; + } + + $type = $fields->getName(); + + logger("Received message type ".$type." from ".$sender." for user ".$importer["uid"], LOGGER_DEBUG); + + switch ($type) { + case "account_deletion": + return self::receive_account_deletion($importer, $fields); + + case "comment": + return self::receive_comment($importer, $sender, $fields); + + case "conversation": + return self::receive_conversation($importer, $msg, $fields); + + case "like": + return self::receive_like($importer, $sender, $fields); + + case "message": + return self::receive_message($importer, $fields); + + case "participation": // Not implemented + return self::receive_participation($importer, $fields); + + case "photo": // Not implemented + return self::receive_photo($importer, $fields); + + case "poll_participation": // Not implemented + return self::receive_poll_participation($importer, $fields); + + case "profile": + return self::receive_profile($importer, $fields); + + case "request": + return self::receive_request($importer, $fields); + + case "reshare": + return self::receive_reshare($importer, $fields); + + case "retraction": + return self::receive_retraction($importer, $sender, $fields); + + case "status_message": + return self::receive_status_message($importer, $fields); + + default: + logger("Unknown message type ".$type); + return false; + } + + return true; + } + + /** + * @brief Checks if a posting is valid and fetches the data fields. + * + * This function does not only check the signature. + * It also does the conversion between the old and the new diaspora format. + * + * @param array $msg Array with the XML, the sender handle and the sender signature + * @param object $fields SimpleXML object that contains the posting when it is valid + * + * @return bool Is the posting valid? + */ + private function valid_posting($msg, &$fields) { + + $data = parse_xml_string($msg["message"], false); + + if (!is_object($data)) + return false; + + $first_child = $data->getName(); + + // Is this the new or the old version? + if ($data->getName() == "XML") { + $oldXML = true; + foreach ($data->post->children() as $child) + $element = $child; + } else { + $oldXML = false; + $element = $data; + } + + $type = $element->getName(); + $orig_type = $type; + + // All retractions are handled identically from now on. + // In the new version there will only be "retraction". + if (in_array($type, array("signed_retraction", "relayable_retraction"))) + $type = "retraction"; + + $fields = new SimpleXMLElement("<".$type."/>"); + + $signed_data = ""; + + foreach ($element->children() AS $fieldname => $entry) { + if ($oldXML) { + // Translation for the old XML structure + if ($fieldname == "diaspora_handle") + $fieldname = "author"; + + if ($fieldname == "participant_handles") + $fieldname = "participants"; + + if (in_array($type, array("like", "participation"))) { + if ($fieldname == "target_type") + $fieldname = "parent_type"; + } + + if ($fieldname == "sender_handle") + $fieldname = "author"; + + if ($fieldname == "recipient_handle") + $fieldname = "recipient"; + + if ($fieldname == "root_diaspora_id") + $fieldname = "root_author"; + + if ($type == "retraction") { + if ($fieldname == "post_guid") + $fieldname = "target_guid"; + + if ($fieldname == "type") + $fieldname = "target_type"; + } + } + + if ($fieldname == "author_signature") + $author_signature = base64_decode($entry); + elseif ($fieldname == "parent_author_signature") + $parent_author_signature = base64_decode($entry); + elseif ($fieldname != "target_author_signature") { + if ($signed_data != "") { + $signed_data .= ";"; + $signed_data_parent .= ";"; + } + + $signed_data .= $entry; + } + if (!in_array($fieldname, array("parent_author_signature", "target_author_signature")) OR + ($orig_type == "relayable_retraction")) + xml::copy($entry, $fields, $fieldname); + } + + // This is something that shouldn't happen at all. + if (in_array($type, array("status_message", "reshare", "profile"))) + if ($msg["author"] != $fields->author) { + logger("Message handle is not the same as envelope sender. Quitting this message."); + return false; + } + + // Only some message types have signatures. So we quit here for the other types. + if (!in_array($type, array("comment", "message", "like"))) + return true; + + // No author_signature? This is a must, so we quit. + if (!isset($author_signature)) + return false; + + if (isset($parent_author_signature)) { + $key = self::key($msg["author"]); + + if (!rsa_verify($signed_data, $parent_author_signature, $key, "sha256")) + return false; + } + + $key = self::key($fields->author); + + return rsa_verify($signed_data, $author_signature, $key, "sha256"); + } + + /** + * @brief Fetches the public key for a given handle + * + * @param string $handle The handle + * + * @return string The public key + */ + private function key($handle) { + $handle = strval($handle); + + logger("Fetching diaspora key for: ".$handle); + + $r = self::person_by_handle($handle); + if($r) + return $r["pubkey"]; + + return ""; + } + + /** + * @brief Fetches data for a given handle + * + * @param string $handle The handle + * + * @return array the queried data + */ + private function person_by_handle($handle) { + + $r = q("SELECT * FROM `fcontact` WHERE `network` = '%s' AND `addr` = '%s' LIMIT 1", dbesc(NETWORK_DIASPORA), dbesc($handle) ); - if(count($r)) { + if ($r) { $person = $r[0]; - logger('find_diaspora_person_by handle: in cache ' . print_r($r,true), LOGGER_DEBUG); + logger("In cache ".print_r($r,true), LOGGER_DEBUG); // update record occasionally so it doesn't get stale - $d = strtotime($person['updated'] . ' +00:00'); - if($d < strtotime('now - 14 days')) + $d = strtotime($person["updated"]." +00:00"); + if ($d < strtotime("now - 14 days")) $update = true; } + if (!$person OR $update) { + logger("create or refresh", LOGGER_DEBUG); + $r = probe_url($handle, PROBE_DIASPORA); - // FETCHING PERSON INFORMATION FROM REMOTE SERVER - // - // If the person isn't in our 'fcontact' table, or if he/she is but - // his/her information hasn't been updated for more than 14 days, then - // we want to fetch the person's information from the remote server. - // - // Note that $person isn't changed by this block of code unless the - // person's information has been successfully fetched from the remote - // server. So if $person was 'false' to begin with (because he/she wasn't - // in the local cache), it'll stay false, and if $person held the local - // cache information to begin with, it'll keep that information. That way - // if there's a problem with the remote fetch, we can at least use our - // cached information--it's better than nothing. - - if((! $person) || ($update)) { - // Lock the function to prevent race conditions if multiple items - // come in at the same time from a person who doesn't exist in - // fcontact - // - // Don't loop forever. On the last loop, try to create the contact - // whether the function is locked or not. Maybe the locking thread - // has died or something. At any rate, a duplicate in 'fcontact' - // is a much smaller problem than a deadlocked thread - $got_lock = lock_function('find_diaspora_person_by_handle', false); - if(($endlessloop + 1) >= $maxloops) - $got_lock = true; - - if($got_lock) { - logger('find_diaspora_person_by_handle: create or refresh', LOGGER_DEBUG); - require_once('include/Scrape.php'); - $r = probe_url($handle, PROBE_DIASPORA); - - // Note that Friendica contacts can return a "Diaspora person" - // if Diaspora connectivity is enabled on their server - if((count($r)) && ($r['network'] === NETWORK_DIASPORA)) { - add_fcontact($r,$update); - $person = ($r); - } - - unlock_function('find_diaspora_person_by_handle'); - } - else { - logger('find_diaspora_person_by_handle: couldn\'t lock function', LOGGER_DEBUG); - if(! $person) - block_on_function_lock('find_diaspora_person_by_handle'); + // Note that Friendica contacts will return a "Diaspora person" + // if Diaspora connectivity is enabled on their server + if ($r AND ($r["network"] === NETWORK_DIASPORA)) { + self::add_fcontact($r, $update); + $person = $r; } } - } while((! $person) && (! $got_lock) && (++$endlessloop < $maxloops)); - // We need to try again if the person wasn't in 'fcontact' but the function was locked. - // The fact that the function was locked may mean that another process was creating the - // person's record. It could also mean another process was creating or updating an unrelated - // person. - // - // At any rate, we need to keep trying until we've either got the person or had a chance to - // try to fetch his/her remote information. But we don't want to block on locking the - // function, because if the other process is creating the record, then when we acquire the lock - // we'll dive right into creating another, duplicate record. We DO want to at least wait - // until the lock is released, so we don't flood the database with requests. - // - // If the person was in the 'fcontact' table, don't try again. It's not worth the time, since - // we do have some information for the person - - return $person; -} - - -function get_diaspora_key($uri) { - logger('Fetching diaspora key for: ' . $uri); - - $r = find_diaspora_person_by_handle($uri); - if($r) - return $r['pubkey']; - return ''; -} - - -function diaspora_pubmsg_build($msg,$user,$contact,$prvkey,$pubkey) { - $a = get_app(); - - logger('diaspora_pubmsg_build: ' . $msg, LOGGER_DATA); - - - $handle = $user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); - -// $b64_data = base64_encode($msg); -// $b64url_data = base64url_encode($b64_data); - - $b64url_data = base64url_encode($msg); - - $data = str_replace(array("\n","\r"," ","\t"),array('','','',''),$b64url_data); - - $type = 'application/xml'; - $encoding = 'base64url'; - $alg = 'RSA-SHA256'; - - $signable_data = $data . '.' . base64url_encode($type) . '.' - . base64url_encode($encoding) . '.' . base64url_encode($alg) ; - - $signature = rsa_sign($signable_data,$prvkey); - $sig = base64url_encode($signature); - -$magic_env = <<< EOT - - -
      - $handle -
      - - base64url - RSA-SHA256 - $data - $sig - -
      -EOT; - - logger('diaspora_pubmsg_build: magic_env: ' . $magic_env, LOGGER_DATA); - return $magic_env; - -} - - - - -function diaspora_msg_build($msg,$user,$contact,$prvkey,$pubkey,$public = false) { - $a = get_app(); - - if($public) - return diaspora_pubmsg_build($msg,$user,$contact,$prvkey,$pubkey); - - logger('diaspora_msg_build: ' . $msg, LOGGER_DATA); - - // without a public key nothing will work - - if(! $pubkey) { - logger('diaspora_msg_build: pubkey missing: contact id: ' . $contact['id']); - return ''; + return $person; } - $inner_aes_key = random_string(32); - $b_inner_aes_key = base64_encode($inner_aes_key); - $inner_iv = random_string(16); - $b_inner_iv = base64_encode($inner_iv); + /** + * @brief Updates the fcontact table + * + * @param array $arr The fcontact data + * @param bool $update Update or insert? + * + * @return string The id of the fcontact entry + */ + private function add_fcontact($arr, $update = false) { + /// @todo Remove this function from include/network.php - $outer_aes_key = random_string(32); - $b_outer_aes_key = base64_encode($outer_aes_key); - $outer_iv = random_string(16); - $b_outer_iv = base64_encode($outer_iv); - - $handle = $user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); - - $padded_data = pkcs5_pad($msg,16); - $inner_encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $inner_aes_key, $padded_data, MCRYPT_MODE_CBC, $inner_iv); - - $b64_data = base64_encode($inner_encrypted); - - - $b64url_data = base64url_encode($b64_data); - $data = str_replace(array("\n","\r"," ","\t"),array('','','',''),$b64url_data); - - $type = 'application/xml'; - $encoding = 'base64url'; - $alg = 'RSA-SHA256'; - - $signable_data = $data . '.' . base64url_encode($type) . '.' - . base64url_encode($encoding) . '.' . base64url_encode($alg) ; - - $signature = rsa_sign($signable_data,$prvkey); - $sig = base64url_encode($signature); - -$decrypted_header = <<< EOT - - $b_inner_iv - $b_inner_aes_key - $handle - -EOT; - - $decrypted_header = pkcs5_pad($decrypted_header,16); - - $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $outer_aes_key, $decrypted_header, MCRYPT_MODE_CBC, $outer_iv); - - $outer_json = json_encode(array('iv' => $b_outer_iv,'key' => $b_outer_aes_key)); - - $encrypted_outer_key_bundle = ''; - openssl_public_encrypt($outer_json,$encrypted_outer_key_bundle,$pubkey); - - $b64_encrypted_outer_key_bundle = base64_encode($encrypted_outer_key_bundle); - - logger('outer_bundle: ' . $b64_encrypted_outer_key_bundle . ' key: ' . $pubkey, LOGGER_DATA); - - $encrypted_header_json_object = json_encode(array('aes_key' => base64_encode($encrypted_outer_key_bundle), - 'ciphertext' => base64_encode($ciphertext))); - $cipher_json = base64_encode($encrypted_header_json_object); - - $encrypted_header = '' . $cipher_json . ''; - -$magic_env = <<< EOT - - - $encrypted_header - - base64url - RSA-SHA256 - $data - $sig - - -EOT; - - logger('diaspora_msg_build: magic_env: ' . $magic_env, LOGGER_DATA); - return $magic_env; - -} - -/** - * - * diaspora_decode($importer,$xml) - * array $importer -> from user table - * string $xml -> urldecoded Diaspora salmon - * - * Returns array - * 'message' -> decoded Diaspora XML message - * 'author' -> author diaspora handle - * 'key' -> author public key (converted to pkcs#8) - * - * Author and key are used elsewhere to save a lookup for verifying replies and likes - */ - - -function diaspora_decode($importer,$xml) { - - $tempfile = tempnam(get_temppath(), "diaspora-decode"); - file_put_contents($tempfile, json_encode(array("importer" => $importer, "xml" => $xml))); - - $public = false; - $basedom = parse_xml_string($xml); - - $children = $basedom->children('https://joindiaspora.com/protocol'); - - if($children->header) { - $public = true; - $author_link = str_replace('acct:','',$children->header->author_id); - } - else { - - $encrypted_header = json_decode(base64_decode($children->encrypted_header)); - - $encrypted_aes_key_bundle = base64_decode($encrypted_header->aes_key); - $ciphertext = base64_decode($encrypted_header->ciphertext); - - $outer_key_bundle = ''; - openssl_private_decrypt($encrypted_aes_key_bundle,$outer_key_bundle,$importer['prvkey']); - - $j_outer_key_bundle = json_decode($outer_key_bundle); - - $outer_iv = base64_decode($j_outer_key_bundle->iv); - $outer_key = base64_decode($j_outer_key_bundle->key); - - $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $outer_key, $ciphertext, MCRYPT_MODE_CBC, $outer_iv); - - - $decrypted = pkcs5_unpad($decrypted); - - /** - * $decrypted now contains something like - * - * - * 8e+G2+ET8l5BPuW0sVTnQw== - * UvSMb4puPeB14STkcDWq+4QE302Edu15oaprAQSkLKU= - -***** OBSOLETE - - * - * Ryan Hughes - * acct:galaxor@diaspora.pirateship.org - * - -***** CURRENT - - * galaxor@diaspora.priateship.org - -***** END DIFFS - - * - */ - - logger('decrypted: ' . $decrypted, LOGGER_DEBUG); - $idom = parse_xml_string($decrypted,false); - - $inner_iv = base64_decode($idom->iv); - $inner_aes_key = base64_decode($idom->aes_key); - - $author_link = str_replace('acct:','',$idom->author_id); + if($update) { + $r = q("UPDATE `fcontact` SET + `name` = '%s', + `photo` = '%s', + `request` = '%s', + `nick` = '%s', + `addr` = '%s', + `batch` = '%s', + `notify` = '%s', + `poll` = '%s', + `confirm` = '%s', + `alias` = '%s', + `pubkey` = '%s', + `updated` = '%s' + WHERE `url` = '%s' AND `network` = '%s'", + dbesc($arr["name"]), + dbesc($arr["photo"]), + dbesc($arr["request"]), + dbesc($arr["nick"]), + dbesc($arr["addr"]), + dbesc($arr["batch"]), + dbesc($arr["notify"]), + dbesc($arr["poll"]), + dbesc($arr["confirm"]), + dbesc($arr["alias"]), + dbesc($arr["pubkey"]), + dbesc(datetime_convert()), + dbesc($arr["url"]), + dbesc($arr["network"]) + ); + } else { + $r = q("INSERT INTO `fcontact` (`url`,`name`,`photo`,`request`,`nick`,`addr`, + `batch`, `notify`,`poll`,`confirm`,`network`,`alias`,`pubkey`,`updated`) + VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", + dbesc($arr["url"]), + dbesc($arr["name"]), + dbesc($arr["photo"]), + dbesc($arr["request"]), + dbesc($arr["nick"]), + dbesc($arr["addr"]), + dbesc($arr["batch"]), + dbesc($arr["notify"]), + dbesc($arr["poll"]), + dbesc($arr["confirm"]), + dbesc($arr["network"]), + dbesc($arr["alias"]), + dbesc($arr["pubkey"]), + dbesc(datetime_convert()) + ); + } + return $r; } - $dom = $basedom->children(NAMESPACE_SALMON_ME); + public static function handle_from_contact($contact_id) { + $handle = False; - // figure out where in the DOM tree our data is hiding + logger("contact id is ".$contact_id, LOGGER_DEBUG); - if($dom->provenance->data) - $base = $dom->provenance; - elseif($dom->env->data) - $base = $dom->env; - elseif($dom->data) - $base = $dom; + $r = q("SELECT `network`, `addr`, `self`, `url`, `nick` FROM `contact` WHERE `id` = %d", + intval($contact_id) + ); + if($r) { + $contact = $r[0]; - if(! $base) { - logger('mod-diaspora: unable to locate salmon data in xml '); - http_status_exit(400); + logger("contact 'self' = ".$contact['self']." 'url' = ".$contact['url'], LOGGER_DEBUG); + + if($contact['addr'] != "") + $handle = $contact['addr']; + elseif(($contact['network'] === NETWORK_DFRN) || ($contact['self'] == 1)) { + $baseurl_start = strpos($contact['url'],'://') + 3; + $baseurl_length = strpos($contact['url'],'/profile') - $baseurl_start; // allows installations in a subdirectory--not sure how Diaspora will handle + $baseurl = substr($contact['url'], $baseurl_start, $baseurl_length); + $handle = $contact['nick'].'@'.$baseurl; + } + } + + return $handle; } + private function contact_by_handle($uid, $handle) { + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1", + intval($uid), + dbesc($handle) + ); - // Stash the signature away for now. We have to find their key or it won't be good for anything. - $signature = base64url_decode($base->sig); + if ($r) + return $r[0]; - // unpack the data + $handle_parts = explode("@", $handle); + $nurl_sql = "%%://".$handle_parts[1]."%%/profile/".$handle_parts[0]; + $r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` LIKE '%s' LIMIT 1", + dbesc(NETWORK_DFRN), + intval($uid), + dbesc($nurl_sql) + ); + if($r) + return $r[0]; - // strip whitespace so our data element will return to one big base64 blob - $data = str_replace(array(" ","\t","\r","\n"),array("","","",""),$base->data); - - - // stash away some other stuff for later - - $type = $base->data[0]->attributes()->type[0]; - $keyhash = $base->sig[0]->attributes()->keyhash[0]; - $encoding = $base->encoding; - $alg = $base->alg; - - - $signed_data = $data . '.' . base64url_encode($type) . '.' . base64url_encode($encoding) . '.' . base64url_encode($alg); - - - // decode the data - $data = base64url_decode($data); - - - if($public) { - $inner_decrypted = $data; - } - else { - - // Decode the encrypted blob - - $inner_encrypted = base64_decode($data); - $inner_decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $inner_aes_key, $inner_encrypted, MCRYPT_MODE_CBC, $inner_iv); - $inner_decrypted = pkcs5_unpad($inner_decrypted); + return false; } - if(! $author_link) { - logger('mod-diaspora: Could not retrieve author URI.'); - http_status_exit(400); - } - - // Once we have the author URI, go to the web and try to find their public key - // (first this will look it up locally if it is in the fcontact cache) - // This will also convert diaspora public key from pkcs#1 to pkcs#8 - - logger('mod-diaspora: Fetching key for ' . $author_link ); - $key = get_diaspora_key($author_link); - - if(! $key) { - logger('mod-diaspora: Could not retrieve author key.'); - http_status_exit(400); - } - - $verify = rsa_verify($signed_data,$signature,$key); - - if(! $verify) { - logger('mod-diaspora: Message did not verify. Discarding.'); - http_status_exit(400); - } - - logger('mod-diaspora: Message verified.'); - - return array('message' => $inner_decrypted, 'author' => $author_link, 'key' => $key); - -} - - -function diaspora_request($importer,$xml) { - - $a = get_app(); - - $sender_handle = unxmlify($xml->sender_handle); - $recipient_handle = unxmlify($xml->recipient_handle); - - if(! $sender_handle || ! $recipient_handle) - return; - - $contact = diaspora_get_contact_by_handle($importer['uid'],$sender_handle); - - if($contact) { + private function post_allow($importer, $contact, $is_comment = false) { // perhaps we were already sharing with this person. Now they're sharing with us. // That makes us friends. - - if($contact['rel'] == CONTACT_IS_FOLLOWER && in_array($importer['page-flags'], array(PAGE_FREELOVE))) { + // Normally this should have handled by getting a request - but this could get lost + if($contact["rel"] == CONTACT_IS_FOLLOWER && in_array($importer["page-flags"], array(PAGE_FREELOVE))) { q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d", intval(CONTACT_IS_FRIEND), - intval($contact['id']), - intval($importer['uid']) + intval($contact["id"]), + intval($importer["uid"]) ); - } - // send notification - - $r = q("SELECT `hide-friends` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1", - intval($importer['uid']) - ); - - if((count($r)) && (!$r[0]['hide-friends']) && (!$contact['hidden']) && intval(get_pconfig($importer['uid'],'system','post_newfriend'))) { - require_once('include/items.php'); - - $self = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1", - intval($importer['uid']) - ); - - // they are not CONTACT_IS_FOLLOWER anymore but that's what we have in the array - - if(count($self) && $contact['rel'] == CONTACT_IS_FOLLOWER) { - - $arr = array(); - $arr['uri'] = $arr['parent-uri'] = item_new_uri($a->get_hostname(), $importer['uid']); - $arr['uid'] = $importer['uid']; - $arr['contact-id'] = $self[0]['id']; - $arr['wall'] = 1; - $arr['type'] = 'wall'; - $arr['gravity'] = 0; - $arr['origin'] = 1; - $arr['author-name'] = $arr['owner-name'] = $self[0]['name']; - $arr['author-link'] = $arr['owner-link'] = $self[0]['url']; - $arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb']; - $arr['verb'] = ACTIVITY_FRIEND; - $arr['object-type'] = ACTIVITY_OBJ_PERSON; - - $A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]'; - $B = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]'; - $BPhoto = '[url=' . $contact['url'] . ']' . '[img]' . $contact['thumb'] . '[/img][/url]'; - $arr['body'] = sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$Bphoto; - - $arr['object'] = '' . ACTIVITY_OBJ_PERSON . '' . $contact['name'] . '' - . '' . $contact['url'] . '/' . $contact['name'] . ''; - $arr['object'] .= '' . xmlify('' . "\n"); - $arr['object'] .= xmlify('' . "\n"); - $arr['object'] .= '' . "\n"; - $arr['last-child'] = 1; - - $arr['allow_cid'] = $user[0]['allow_cid']; - $arr['allow_gid'] = $user[0]['allow_gid']; - $arr['deny_cid'] = $user[0]['deny_cid']; - $arr['deny_gid'] = $user[0]['deny_gid']; - - $i = item_store($arr); - if($i) - proc_run('php',"include/notifier.php","activity","$i"); - - } - + $contact["rel"] = CONTACT_IS_FRIEND; + logger("defining user ".$contact["nick"]." as friend"); } - return; - } + if(($contact["blocked"]) || ($contact["readonly"]) || ($contact["archive"])) + return false; + if($contact["rel"] == CONTACT_IS_SHARING || $contact["rel"] == CONTACT_IS_FRIEND) + return true; + if($contact["rel"] == CONTACT_IS_FOLLOWER) + if(($importer["page-flags"] == PAGE_COMMUNITY) OR $is_comment) + return true; - $ret = find_diaspora_person_by_handle($sender_handle); - - - if((! count($ret)) || ($ret['network'] != NETWORK_DIASPORA)) { - logger('diaspora_request: Cannot resolve diaspora handle ' . $sender_handle . ' for ' . $recipient_handle); - return; - } - - $batch = (($ret['batch']) ? $ret['batch'] : implode('/', array_slice(explode('/',$ret['url']),0,3)) . '/receive/public'); - - - - $r = q("INSERT INTO `contact` (`uid`, `network`,`addr`,`created`,`url`,`nurl`,`batch`,`name`,`nick`,`photo`,`pubkey`,`notify`,`poll`,`blocked`,`priority`) - VALUES ( %d, '%s', '%s', '%s', '%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,%d) ", - intval($importer['uid']), - dbesc($ret['network']), - dbesc($ret['addr']), - datetime_convert(), - dbesc($ret['url']), - dbesc(normalise_link($ret['url'])), - dbesc($batch), - dbesc($ret['name']), - dbesc($ret['nick']), - dbesc($ret['photo']), - dbesc($ret['pubkey']), - dbesc($ret['notify']), - dbesc($ret['poll']), - 1, - 2 - ); - - // find the contact record we just created - - $contact_record = diaspora_get_contact_by_handle($importer['uid'],$sender_handle); - - if(! $contact_record) { - logger('diaspora_request: unable to locate newly created contact record.'); - return; - } - - $def_gid = get_default_group($importer['uid'], $ret["network"]); - if (intval($def_gid)) { - require_once('include/group.php'); - group_add_member($importer['uid'], '', $contact_record['id'], $def_gid); - } - - if($importer['page-flags'] == PAGE_NORMAL) { - - $hash = random_string() . (string) time(); // Generate a confirm_key - - $ret = q("INSERT INTO `intro` ( `uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime` ) - VALUES ( %d, %d, %d, %d, '%s', '%s', '%s' )", - intval($importer['uid']), - intval($contact_record['id']), - 0, - 0, - dbesc( t('Sharing notification from Diaspora network')), - dbesc($hash), - dbesc(datetime_convert()) - ); - } - else { - - // automatic friend approval - - require_once('include/Photo.php'); - - update_contact_avatar($contact_record['photo'],$importer['uid'],$contact_record['id']); - - // technically they are sharing with us (CONTACT_IS_SHARING), - // but if our page-type is PAGE_COMMUNITY or PAGE_SOAPBOX - // we are going to change the relationship and make them a follower. - - if($importer['page-flags'] == PAGE_FREELOVE) - $new_relation = CONTACT_IS_FRIEND; - else - $new_relation = CONTACT_IS_FOLLOWER; - - $r = q("UPDATE `contact` SET `rel` = %d, - `name-date` = '%s', - `uri-date` = '%s', - `blocked` = 0, - `pending` = 0, - `writable` = 1 - WHERE `id` = %d - ", - intval($new_relation), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - intval($contact_record['id']) - ); - - $u = q("select * from user where uid = %d limit 1",intval($importer['uid'])); - if($u) - $ret = diaspora_share($u[0],$contact_record); - } - - return; -} - -function diaspora_post_allow($importer,$contact, $is_comment = false) { - - // perhaps we were already sharing with this person. Now they're sharing with us. - // That makes us friends. - // Normally this should have handled by getting a request - but this could get lost - if($contact['rel'] == CONTACT_IS_FOLLOWER && in_array($importer['page-flags'], array(PAGE_FREELOVE))) { - q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d", - intval(CONTACT_IS_FRIEND), - intval($contact['id']), - intval($importer['uid']) - ); - $contact['rel'] = CONTACT_IS_FRIEND; - logger('diaspora_post_allow: defining user '.$contact["nick"].' as friend'); - } - - if(($contact['blocked']) || ($contact['readonly']) || ($contact['archive'])) - return false; - if($contact['rel'] == CONTACT_IS_SHARING || $contact['rel'] == CONTACT_IS_FRIEND) - return true; - if($contact['rel'] == CONTACT_IS_FOLLOWER) - if(($importer['page-flags'] == PAGE_COMMUNITY) OR $is_comment) + // Messages for the global users are always accepted + if ($importer["uid"] == 0) return true; - // Messages for the global users are always accepted - if ($importer['uid'] == 0) - return true; - - return false; -} - -function diaspora_is_redmatrix($url) { - return(strstr($url, "/channel/")); -} - -function diaspora_plink($addr, $guid) { - $r = q("SELECT `url`, `nick`, `network` FROM `fcontact` WHERE `addr`='%s' LIMIT 1", dbesc($addr)); - - // Fallback - if (!$r) - return 'https://'.substr($addr,strpos($addr,'@')+1).'/posts/'.$guid; - - // Friendica contacts are often detected as Diaspora contacts in the "fcontact" table - // So we try another way as well. - $s = q("SELECT `network` FROM `gcontact` WHERE `nurl`='%s' LIMIT 1", dbesc(normalise_link($r[0]["url"]))); - if ($s) - $r[0]["network"] = $s[0]["network"]; - - if ($r[0]["network"] == NETWORK_DFRN) - return(str_replace("/profile/".$r[0]["nick"]."/", "/display/".$guid, $r[0]["url"]."/")); - - if (diaspora_is_redmatrix($r[0]["url"])) - return $r[0]["url"]."/?f=&mid=".$guid; - - return 'https://'.substr($addr,strpos($addr,'@')+1).'/posts/'.$guid; -} - -function diaspora_repair_signature($signature, $handle = "", $level = 1) { - - if ($signature == "") - return($signature); - - if (base64_encode(base64_decode(base64_decode($signature))) == base64_decode($signature)) { - $signature = base64_decode($signature); - logger("Repaired double encoded signature from Diaspora/Hubzilla handle ".$handle." - level ".$level, LOGGER_DEBUG); - - // Do a recursive call to be able to fix even multiple levels - if ($level < 10) - $signature = diaspora_repair_signature($signature, $handle, ++$level); - } - - return($signature); -} - -function diaspora_post($importer,$xml,$msg) { - - $a = get_app(); - $guid = notags(unxmlify($xml->guid)); - $diaspora_handle = notags(unxmlify($xml->diaspora_handle)); - - if($diaspora_handle != $msg['author']) { - logger('diaspora_post: Potential forgery. Message handle is not the same as envelope sender.'); - return 202; - } - - $contact = diaspora_get_contact_by_handle($importer['uid'],$diaspora_handle); - if(! $contact) { - logger('diaspora_post: A Contact for handle '.$diaspora_handle.' and user '.$importer['uid'].' was not found'); - return 203; - } - - if(! diaspora_post_allow($importer,$contact, false)) { - logger('diaspora_post: Ignoring this author.'); - return 202; - } - - $message_id = $diaspora_handle . ':' . $guid; - $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer['uid']), - dbesc($guid) - ); - if(count($r)) { - logger('diaspora_post: message exists: ' . $guid); - return 208; - } - - $created = unxmlify($xml->created_at); - $private = ((unxmlify($xml->public) == 'false') ? 1 : 0); - - $body = diaspora2bb($xml->raw_message); - - $datarray = array(); - - $datarray["object"] = json_encode($xml); - - if($xml->photo->remote_photo_path AND $xml->photo->remote_photo_name) - $datarray["object-type"] = ACTIVITY_OBJ_PHOTO; - else { - $datarray['object-type'] = ACTIVITY_OBJ_NOTE; - // Add OEmbed and other information to the body - if (!diaspora_is_redmatrix($contact['url'])) - $body = add_page_info_to_body($body, false, true); - } - - $str_tags = ''; - - $cnt = preg_match_all('/@\[url=(.*?)\[\/url\]/ism',$body,$matches,PREG_SET_ORDER); - if($cnt) { - foreach($matches as $mtch) { - if(strlen($str_tags)) - $str_tags .= ','; - $str_tags .= '@[url=' . $mtch[1] . '[/url]'; - } - } - - $plink = diaspora_plink($diaspora_handle, $guid); - - $datarray['uid'] = $importer['uid']; - $datarray['contact-id'] = $contact['id']; - $datarray['wall'] = 0; - $datarray['network'] = NETWORK_DIASPORA; - $datarray['verb'] = ACTIVITY_POST; - $datarray['guid'] = $guid; - $datarray['uri'] = $datarray['parent-uri'] = $message_id; - $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created); - $datarray['private'] = $private; - $datarray['parent'] = 0; - $datarray['plink'] = $plink; - $datarray['owner-name'] = $contact['name']; - $datarray['owner-link'] = $contact['url']; - //$datarray['owner-avatar'] = $contact['thumb']; - $datarray['owner-avatar'] = ((x($contact,'thumb')) ? $contact['thumb'] : $contact['photo']); - $datarray['author-name'] = $contact['name']; - $datarray['author-link'] = $contact['url']; - $datarray['author-avatar'] = $contact['thumb']; - $datarray['body'] = $body; - $datarray['tag'] = $str_tags; - if ($xml->provider_display_name) - $datarray["app"] = unxmlify($xml->provider_display_name); - else - $datarray['app'] = 'Diaspora'; - - // if empty content it might be a photo that hasn't arrived yet. If a photo arrives, we'll make it visible. - - $datarray['visible'] = ((strlen($body)) ? 1 : 0); - - DiasporaFetchGuid($datarray); - $message_id = item_store($datarray); - - logger("Stored item with message id ".$message_id, LOGGER_DEBUG); - - return 201; - -} - -function DiasporaFetchGuid($item) { - preg_replace_callback("&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi", - function ($match) use ($item){ - return(DiasporaFetchGuidSub($match, $item)); - },$item["body"]); -} - -function DiasporaFetchGuidSub($match, $item) { - $a = get_app(); - - if (!diaspora_store_by_guid($match[1], $item["author-link"])) - diaspora_store_by_guid($match[1], $item["owner-link"]); -} - -function diaspora_store_by_guid($guid, $server, $uid = 0) { - require_once("include/Contact.php"); - - $serverparts = parse_url($server); - $server = $serverparts["scheme"]."://".$serverparts["host"]; - - logger("Trying to fetch item ".$guid." from ".$server, LOGGER_DEBUG); - - $item = diaspora_fetch_message($guid, $server); - - if (!$item) return false; + } - logger("Successfully fetched item ".$guid." from ".$server, LOGGER_DEBUG); - - $body = $item["body"]; - $str_tags = $item["tag"]; - $app = $item["app"]; - $created = $item["created"]; - $author = $item["author"]; - $guid = $item["guid"]; - $private = $item["private"]; - $object = $item["object"]; - $objecttype = $item["object-type"]; - - $message_id = $author.':'.$guid; - $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($uid), - dbesc($guid) - ); - if(count($r)) - return $r[0]["id"]; - - $person = find_diaspora_person_by_handle($author); - - $contact_id = get_contact($person['url'], $uid); - - $contacts = q("SELECT * FROM `contact` WHERE `id` = %d", intval($contact_id)); - $importers = q("SELECT * FROM `user` WHERE `uid` = %d", intval($uid)); - - if ($contacts AND $importers) - if(!diaspora_post_allow($importers[0],$contacts[0], false)) { - logger('Ignoring author '.$person['url'].' for uid '.$uid); + private function allowed_contact_by_handle($importer, $handle, $is_comment = false) { + $contact = self::contact_by_handle($importer["uid"], $handle); + if (!$contact) { + logger("A Contact for handle ".$handle." and user ".$importer["uid"]." was not found"); return false; - } else - logger('Author '.$person['url'].' is allowed for uid '.$uid); + } - $datarray = array(); - $datarray['uid'] = $uid; - $datarray['contact-id'] = $contact_id; - $datarray['wall'] = 0; - $datarray['network'] = NETWORK_DIASPORA; - $datarray['guid'] = $guid; - $datarray['uri'] = $datarray['parent-uri'] = $message_id; - $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created); - $datarray['private'] = $private; - $datarray['parent'] = 0; - $datarray['plink'] = diaspora_plink($author, $guid); - $datarray['author-name'] = $person['name']; - $datarray['author-link'] = $person['url']; - $datarray['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']); - $datarray['owner-name'] = $datarray['author-name']; - $datarray['owner-link'] = $datarray['author-link']; - $datarray['owner-avatar'] = $datarray['author-avatar']; - $datarray['body'] = $body; - $datarray['tag'] = $str_tags; - $datarray['app'] = $app; - $datarray['visible'] = ((strlen($body)) ? 1 : 0); - $datarray['object'] = $object; - $datarray['object-type'] = $objecttype; + if (!self::post_allow($importer, $contact, $is_comment)) { + logger("The handle: ".$handle." is not allowed to post to user ".$importer["uid"]); + return false; + } + return $contact; + } - if ($datarray['contact-id'] == 0) - return false; + private function message_exists($uid, $guid) { + $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", + intval($uid), + dbesc($guid) + ); - DiasporaFetchGuid($datarray); - $message_id = item_store($datarray); + if($r) { + logger("message ".$guid." already exists for user ".$uid); + return true; + } - /// @TODO - /// Looking if there is some subscribe mechanism in Diaspora to get all comments for this post - - return $message_id; -} - -function diaspora_fetch_message($guid, $server, $level = 0) { - - if ($level > 5) - return false; - - $a = get_app(); - - // This will not work if the server is not a Diaspora server - $source_url = $server.'/p/'.$guid.'.xml'; - $x = fetch_url($source_url); - if(!$x) - return false; - - $x = str_replace(array('',''),array('',''),$x); - $source_xml = parse_xml_string($x,false); - - $item = array(); - $item["app"] = 'Diaspora'; - $item["guid"] = $guid; - $body = ""; - - if ($source_xml->post->status_message->created_at) - $item["created"] = unxmlify($source_xml->post->status_message->created_at); - - if ($source_xml->post->status_message->provider_display_name) - $item["app"] = unxmlify($source_xml->post->status_message->provider_display_name); - - if ($source_xml->post->status_message->diaspora_handle) - $item["author"] = unxmlify($source_xml->post->status_message->diaspora_handle); - - if ($source_xml->post->status_message->guid) - $item["guid"] = unxmlify($source_xml->post->status_message->guid); - - $item["private"] = (unxmlify($source_xml->post->status_message->public) == 'false'); - $item["object"] = json_encode($source_xml->post); - - if(strlen($source_xml->post->asphoto->objectId) && ($source_xml->post->asphoto->objectId != 0) && ($source_xml->post->asphoto->image_url)) { - $item["object-type"] = ACTIVITY_OBJ_PHOTO; - $body = '[url=' . notags(unxmlify($source_xml->post->asphoto->image_url)) . '][img]' . notags(unxmlify($source_xml->post->asphoto->objectId)) . '[/img][/url]' . "\n"; - $body = scale_external_images($body,false); - } elseif($source_xml->post->asphoto->image_url) { - $item["object-type"] = ACTIVITY_OBJ_PHOTO; - $body = '[img]' . notags(unxmlify($source_xml->post->asphoto->image_url)) . '[/img]' . "\n"; - $body = scale_external_images($body); - } elseif($source_xml->post->status_message) { - $body = diaspora2bb($source_xml->post->status_message->raw_message); - - // Checking for embedded pictures - if($source_xml->post->status_message->photo->remote_photo_path AND - $source_xml->post->status_message->photo->remote_photo_name) { - - $item["object-type"] = ACTIVITY_OBJ_PHOTO; - - $remote_photo_path = notags(unxmlify($source_xml->post->status_message->photo->remote_photo_path)); - $remote_photo_name = notags(unxmlify($source_xml->post->status_message->photo->remote_photo_name)); - - $body = '[img]'.$remote_photo_path.$remote_photo_name.'[/img]'."\n".$body; - - logger('embedded picture link found: '.$body, LOGGER_DEBUG); - } else - $item["object-type"] = ACTIVITY_OBJ_NOTE; - - $body = scale_external_images($body); - - // Add OEmbed and other information to the body - /// @TODO It could be a repeated redmatrix item - /// Then we shouldn't add further data to it - if ($item["object-type"] == ACTIVITY_OBJ_NOTE) - $body = add_page_info_to_body($body, false, true); - - } elseif($source_xml->post->reshare) { - // Reshare of a reshare - return diaspora_fetch_message($source_xml->post->reshare->root_guid, $server, ++$level); - } else { - // Maybe it is a reshare of a photo that will be delivered at a later time (testing) - logger('no content found: '.print_r($source_xml,true)); return false; } - if (trim($body) == "") - return false; - - $item["tag"] = ''; - $item["body"] = $body; - - return $item; -} - -function diaspora_reshare($importer,$xml,$msg) { - - logger('diaspora_reshare: init: ' . print_r($xml,true)); - - $a = get_app(); - $guid = notags(unxmlify($xml->guid)); - $diaspora_handle = notags(unxmlify($xml->diaspora_handle)); - - - if($diaspora_handle != $msg['author']) { - logger('diaspora_post: Potential forgery. Message handle is not the same as envelope sender.'); - return 202; + private function fetch_guid($item) { + preg_replace_callback("&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi", + function ($match) use ($item){ + return(self::fetch_guid_sub($match, $item)); + },$item["body"]); } - $contact = diaspora_get_contact_by_handle($importer['uid'],$diaspora_handle); - if(! $contact) - return; - - if(! diaspora_post_allow($importer,$contact, false)) { - logger('diaspora_reshare: Ignoring this author: ' . $diaspora_handle . ' ' . print_r($xml,true)); - return 202; + private function fetch_guid_sub($match, $item) { + if (!self::store_by_guid($match[1], $item["author-link"])) + self::store_by_guid($match[1], $item["owner-link"]); } - $message_id = $diaspora_handle . ':' . $guid; - $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer['uid']), - dbesc($guid) - ); - if(count($r)) { - logger('diaspora_reshare: message exists: ' . $guid); - return; + private function store_by_guid($guid, $server, $uid = 0) { + $serverparts = parse_url($server); + $server = $serverparts["scheme"]."://".$serverparts["host"]; + + logger("Trying to fetch item ".$guid." from ".$server, LOGGER_DEBUG); + + $msg = self::message($guid, $server); + + if (!$msg) + return false; + + logger("Successfully fetched item ".$guid." from ".$server, LOGGER_DEBUG); + + // Now call the dispatcher + return self::dispatch_public($msg); } - $orig_author = notags(unxmlify($xml->root_diaspora_id)); - $orig_guid = notags(unxmlify($xml->root_guid)); - $orig_url = $a->get_baseurl()."/display/".$orig_guid; + private function message($guid, $server, $level = 0) { - $create_original_post = false; + if ($level > 5) + return false; - // Do we already have this item? - $r = q("SELECT `body`, `tag`, `app`, `created`, `plink`, `object`, `object-type`, `uri` FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1", - dbesc($orig_guid), - dbesc(NETWORK_DIASPORA) - ); - if(count($r)) { - logger('reshared message '.$orig_guid." reshared by ".$guid.' already exists on system.'); + // This will work for Diaspora and newer Friendica servers + $source_url = $server."/p/".$guid.".xml"; + $x = fetch_url($source_url); + if(!$x) + return false; - // Maybe it is already a reshared item? - // Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares - require_once('include/api.php'); - if (api_share_as_retweet($r[0])) - $r = array(); - else { - $body = $r[0]["body"]; - $str_tags = $r[0]["tag"]; - $app = $r[0]["app"]; - $orig_created = $r[0]["created"]; - $orig_plink = $r[0]["plink"]; - $orig_uri = $r[0]["uri"]; - $object = $r[0]["object"]; - $objecttype = $r[0]["object-type"]; + $source_xml = parse_xml_string($x, false); + + if (!is_object($source_xml)) + return false; + + if ($source_xml->post->reshare) { + // Reshare of a reshare - old Diaspora version + return self::message($source_xml->post->reshare->root_guid, $server, ++$level); + } elseif ($source_xml->getName() == "reshare") { + // Reshare of a reshare - new Diaspora version + return self::message($source_xml->root_guid, $server, ++$level); + } + + $author = ""; + + // Fetch the author - for the old and the new Diaspora version + if ($source_xml->post->status_message->diaspora_handle) + $author = (string)$source_xml->post->status_message->diaspora_handle; + elseif ($source_xml->author AND ($source_xml->getName() == "status_message")) + $author = (string)$source_xml->author; + + // If this isn't a "status_message" then quit + if (!$author) + return false; + + $msg = array("message" => $x, "author" => $author); + + $msg["key"] = self::key($msg["author"]); + + return $msg; + } + + private function parent_item($uid, $guid, $author, $contact) { + $r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `origin`, + `author-name`, `author-link`, `author-avatar`, + `owner-name`, `owner-link`, `owner-avatar` + FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", + intval($uid), dbesc($guid)); + + if(!$r) { + $result = self::store_by_guid($guid, $contact["url"], $uid); + + if (!$result) { + $person = self::person_by_handle($author); + $result = self::store_by_guid($guid, $person["url"], $uid); + } + + if ($result) { + logger("Fetched missing item ".$guid." - result: ".$result, LOGGER_DEBUG); + + $r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `origin`, + `author-name`, `author-link`, `author-avatar`, + `owner-name`, `owner-link`, `owner-avatar` + FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", + intval($uid), dbesc($guid)); + } + } + + if (!$r) { + logger("parent item not found: parent: ".$guid." - user: ".$uid); + return false; + } else { + logger("parent item found: parent: ".$guid." - user: ".$uid); + return $r[0]; } } - if (!count($r)) { - $body = ""; - $str_tags = ""; - $app = ""; + private function author_contact_by_url($contact, $person, $uid) { - $server = 'https://'.substr($orig_author,strpos($orig_author,'@')+1); - logger('1st try: reshared message '.$orig_guid." reshared by ".$guid.' will be fetched from original server: '.$server); - $item = diaspora_fetch_message($orig_guid, $server); - - if (!$item) { - $server = 'https://'.substr($diaspora_handle,strpos($diaspora_handle,'@')+1); - logger('2nd try: reshared message '.$orig_guid." reshared by ".$guid." will be fetched from sharer's server: ".$server); - $item = diaspora_fetch_message($orig_guid, $server); - } - if (!$item) { - $server = 'http://'.substr($orig_author,strpos($orig_author,'@')+1); - logger('3rd try: reshared message '.$orig_guid." reshared by ".$guid.' will be fetched from original server: '.$server); - $item = diaspora_fetch_message($orig_guid, $server); - } - if (!$item) { - $server = 'http://'.substr($diaspora_handle,strpos($diaspora_handle,'@')+1); - logger('4th try: reshared message '.$orig_guid." reshared by ".$guid." will be fetched from sharer's server: ".$server); - $item = diaspora_fetch_message($orig_guid, $server); + $r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1", + dbesc(normalise_link($person["url"])), intval($uid)); + if ($r) { + $cid = $r[0]["id"]; + $network = $r[0]["network"]; + } else { + $cid = $contact["id"]; + $network = NETWORK_DIASPORA; } - if ($item) { - $body = $item["body"]; - $str_tags = $item["tag"]; - $app = $item["app"]; - $orig_created = $item["created"]; - $orig_author = $item["author"]; - $orig_guid = $item["guid"]; - $orig_plink = diaspora_plink($orig_author, $orig_guid); - $orig_uri = $orig_author.':'.$orig_guid; - $create_original_post = ($body != ""); - $object = $item["object"]; - $objecttype = $item["object-type"]; - } + return (array("cid" => $cid, "network" => $network)); } - $plink = diaspora_plink($diaspora_handle, $guid); - - $person = find_diaspora_person_by_handle($orig_author); - - $created = unxmlify($xml->created_at); - $private = ((unxmlify($xml->public) == 'false') ? 1 : 0); - - $datarray = array(); - - $datarray['uid'] = $importer['uid']; - $datarray['contact-id'] = $contact['id']; - $datarray['wall'] = 0; - $datarray['network'] = NETWORK_DIASPORA; - $datarray['guid'] = $guid; - $datarray['uri'] = $datarray['parent-uri'] = $message_id; - $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created); - $datarray['private'] = $private; - $datarray['parent'] = 0; - $datarray['plink'] = $plink; - $datarray['owner-name'] = $contact['name']; - $datarray['owner-link'] = $contact['url']; - $datarray['owner-avatar'] = ((x($contact,'thumb')) ? $contact['thumb'] : $contact['photo']); - if (!intval(get_config('system','wall-to-wall_share'))) { - $prefix = share_header($person['name'], $person['url'], ((x($person,'thumb')) ? $person['thumb'] : $person['photo']), $orig_guid, $orig_created, $orig_url); - - $datarray['author-name'] = $contact['name']; - $datarray['author-link'] = $contact['url']; - $datarray['author-avatar'] = $contact['thumb']; - $datarray['body'] = $prefix.$body."[/share]"; - } else { - // Let reshared messages look like wall-to-wall posts - $datarray['author-name'] = $person['name']; - $datarray['author-link'] = $person['url']; - $datarray['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']); - $datarray['body'] = $body; + public static function is_redmatrix($url) { + return(strstr($url, "/channel/")); } - $datarray["object"] = json_encode($xml); - $datarray['object-type'] = $objecttype; + private function plink($addr, $guid) { + $r = q("SELECT `url`, `nick`, `network` FROM `fcontact` WHERE `addr`='%s' LIMIT 1", dbesc($addr)); - $datarray['tag'] = $str_tags; - $datarray['app'] = $app; + // Fallback + if (!$r) + return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid; - // if empty content it might be a photo that hasn't arrived yet. If a photo arrives, we'll make it visible. (testing) - $datarray['visible'] = ((strlen($body)) ? 1 : 0); + // Friendica contacts are often detected as Diaspora contacts in the "fcontact" table + // So we try another way as well. + $s = q("SELECT `network` FROM `gcontact` WHERE `nurl`='%s' LIMIT 1", dbesc(normalise_link($r[0]["url"]))); + if ($s) + $r[0]["network"] = $s[0]["network"]; - // Store the original item of a reshare - if ($create_original_post) { - require_once("include/Contact.php"); + if ($r[0]["network"] == NETWORK_DFRN) + return(str_replace("/profile/".$r[0]["nick"]."/", "/display/".$guid, $r[0]["url"]."/")); - $datarray2 = $datarray; + if (self::is_redmatrix($r[0]["url"])) + return $r[0]["url"]."/?f=&mid=".$guid; - $datarray2['uid'] = 0; - $datarray2['contact-id'] = get_contact($person['url'], 0); - $datarray2['guid'] = $orig_guid; - $datarray2['uri'] = $datarray2['parent-uri'] = $orig_uri; - $datarray2['changed'] = $datarray2['created'] = $datarray2['edited'] = $datarray2['commented'] = $datarray2['received'] = datetime_convert('UTC','UTC',$orig_created); - $datarray2['parent'] = 0; - $datarray2['plink'] = $orig_plink; - - $datarray2['author-name'] = $person['name']; - $datarray2['author-link'] = $person['url']; - $datarray2['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']); - $datarray2['owner-name'] = $datarray2['author-name']; - $datarray2['owner-link'] = $datarray2['author-link']; - $datarray2['owner-avatar'] = $datarray2['author-avatar']; - $datarray2['body'] = $body; - $datarray2["object"] = $object; - - DiasporaFetchGuid($datarray2); - $message_id = item_store($datarray2); - - logger("Store original item ".$orig_guid." under message id ".$message_id); + return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid; } - DiasporaFetchGuid($datarray); - $message_id = item_store($datarray); + private function receive_account_deletion($importer, $data) { + $author = notags(unxmlify($data->author)); - return; - -} - - -function diaspora_asphoto($importer,$xml,$msg) { - logger('diaspora_asphoto called'); - - $a = get_app(); - $guid = notags(unxmlify($xml->guid)); - $diaspora_handle = notags(unxmlify($xml->diaspora_handle)); - - if($diaspora_handle != $msg['author']) { - logger('diaspora_post: Potential forgery. Message handle is not the same as envelope sender.'); - return 202; - } - - $contact = diaspora_get_contact_by_handle($importer['uid'],$diaspora_handle); - if(! $contact) - return; - - if(! diaspora_post_allow($importer,$contact, false)) { - logger('diaspora_asphoto: Ignoring this author.'); - return 202; - } - - $message_id = $diaspora_handle . ':' . $guid; - $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer['uid']), - dbesc($guid) - ); - if(count($r)) { - logger('diaspora_asphoto: message exists: ' . $guid); - return; - } - - $created = unxmlify($xml->created_at); - $private = ((unxmlify($xml->public) == 'false') ? 1 : 0); - - if(strlen($xml->objectId) && ($xml->objectId != 0) && ($xml->image_url)) { - $body = '[url=' . notags(unxmlify($xml->image_url)) . '][img]' . notags(unxmlify($xml->objectId)) . '[/img][/url]' . "\n"; - $body = scale_external_images($body,false); - } - elseif($xml->image_url) { - $body = '[img]' . notags(unxmlify($xml->image_url)) . '[/img]' . "\n"; - $body = scale_external_images($body); - } - else { - logger('diaspora_asphoto: no photo url found.'); - return; - } - - $plink = diaspora_plink($diaspora_handle, $guid); - - $datarray = array(); - - $datarray['uid'] = $importer['uid']; - $datarray['contact-id'] = $contact['id']; - $datarray['wall'] = 0; - $datarray['network'] = NETWORK_DIASPORA; - $datarray['guid'] = $guid; - $datarray['uri'] = $datarray['parent-uri'] = $message_id; - $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created); - $datarray['private'] = $private; - $datarray['parent'] = 0; - $datarray['plink'] = $plink; - $datarray['owner-name'] = $contact['name']; - $datarray['owner-link'] = $contact['url']; - //$datarray['owner-avatar'] = $contact['thumb']; - $datarray['owner-avatar'] = ((x($contact,'thumb')) ? $contact['thumb'] : $contact['photo']); - $datarray['author-name'] = $contact['name']; - $datarray['author-link'] = $contact['url']; - $datarray['author-avatar'] = $contact['thumb']; - $datarray['body'] = $body; - $datarray["object"] = json_encode($xml); - $datarray['object-type'] = ACTIVITY_OBJ_PHOTO; - - $datarray['app'] = 'Diaspora/Cubbi.es'; - - DiasporaFetchGuid($datarray); - $message_id = item_store($datarray); - - //if($message_id) { - // q("update item set plink = '%s' where id = %d", - // dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id), - // intval($message_id) - // ); - //} - - return; - -} - -function diaspora_comment($importer,$xml,$msg) { - - $a = get_app(); - $guid = notags(unxmlify($xml->guid)); - $parent_guid = notags(unxmlify($xml->parent_guid)); - $diaspora_handle = notags(unxmlify($xml->diaspora_handle)); - $target_type = notags(unxmlify($xml->target_type)); - $text = unxmlify($xml->text); - $author_signature = notags(unxmlify($xml->author_signature)); - - $parent_author_signature = (($xml->parent_author_signature) ? notags(unxmlify($xml->parent_author_signature)) : ''); - - $contact = diaspora_get_contact_by_handle($importer['uid'],$msg['author']); - if(! $contact) { - logger('diaspora_comment: cannot find contact: ' . $msg['author']); - return; - } - - if(! diaspora_post_allow($importer,$contact, true)) { - logger('diaspora_comment: Ignoring this author.'); - return 202; - } - - $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer['uid']), - dbesc($guid) - ); - if(count($r)) { - logger('diaspora_comment: our comment just got relayed back to us (or there was a guid collision) : ' . $guid); - return; - } - - $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer['uid']), - dbesc($parent_guid) - ); - - if(!count($r)) { - $result = diaspora_store_by_guid($parent_guid, $contact['url'], $importer['uid']); - - if (!$result) { - $person = find_diaspora_person_by_handle($diaspora_handle); - $result = diaspora_store_by_guid($parent_guid, $person['url'], $importer['uid']); + $contact = self::contact_by_handle($importer["uid"], $author); + if (!$contact) { + logger("cannot find contact for author: ".$author); + return false; } - if ($result) { - logger("Fetched missing item ".$parent_guid." - result: ".$result, LOGGER_DEBUG); + // We now remove the contact + contact_remove($contact["id"]); + return true; + } - $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer['uid']), - dbesc($parent_guid) + private function receive_comment($importer, $sender, $data) { + $guid = notags(unxmlify($data->guid)); + $parent_guid = notags(unxmlify($data->parent_guid)); + $text = unxmlify($data->text); + $author = notags(unxmlify($data->author)); + + $contact = self::allowed_contact_by_handle($importer, $sender, true); + if (!$contact) + return false; + + if (self::message_exists($importer["uid"], $guid)) + return false; + + $parent_item = self::parent_item($importer["uid"], $parent_guid, $author, $contact); + if (!$parent_item) + return false; + + $person = self::person_by_handle($author); + if (!is_array($person)) { + logger("unable to find author details"); + return false; + } + + // Fetch the contact id - if we know this contact + $author_contact = self::author_contact_by_url($contact, $person, $importer["uid"]); + + $datarray = array(); + + $datarray["uid"] = $importer["uid"]; + $datarray["contact-id"] = $author_contact["cid"]; + $datarray["network"] = $author_contact["network"]; + + $datarray["author-name"] = $person["name"]; + $datarray["author-link"] = $person["url"]; + $datarray["author-avatar"] = ((x($person,"thumb")) ? $person["thumb"] : $person["photo"]); + + $datarray["owner-name"] = $contact["name"]; + $datarray["owner-link"] = $contact["url"]; + $datarray["owner-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]); + + $datarray["guid"] = $guid; + $datarray["uri"] = $author.":".$guid; + + $datarray["type"] = "remote-comment"; + $datarray["verb"] = ACTIVITY_POST; + $datarray["gravity"] = GRAVITY_COMMENT; + $datarray["parent-uri"] = $parent_item["uri"]; + + $datarray["object-type"] = ACTIVITY_OBJ_COMMENT; + $datarray["object"] = json_encode($data); + + $datarray["body"] = diaspora2bb($text); + + self::fetch_guid($datarray); + + $message_id = item_store($datarray); + + if ($message_id) + logger("Stored comment ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); + + // If we are the origin of the parent we store the original data and notify our followers + if($message_id AND $parent_item["origin"]) { + + // Formerly we stored the signed text, the signature and the author in different fields. + // We now store the raw data so that we are more flexible. + q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')", + intval($message_id), + dbesc(json_encode($data)) ); + + // notify others + proc_run("php", "include/notifier.php", "comment-import", $message_id); } + + return $message_id; } - if(! count($r)) { - logger('diaspora_comment: parent item not found: parent: ' . $parent_guid . ' item: ' . $guid); - return; - } - $parent_item = $r[0]; - - - /* How Diaspora performs comment signature checking: - - - If an item has been sent by the comment author to the top-level post owner to relay on - to the rest of the contacts on the top-level post, the top-level post owner should check - the author_signature, then create a parent_author_signature before relaying the comment on - - If an item has been relayed on by the top-level post owner, the contacts who receive it - check only the parent_author_signature. Basically, they trust that the top-level post - owner has already verified the authenticity of anything he/she sends out - - In either case, the signature that get checked is the signature created by the person - who sent the salmon - */ - - $signed_data = $guid . ';' . $parent_guid . ';' . $text . ';' . $diaspora_handle; - $key = $msg['key']; - - if($parent_author_signature) { - // If a parent_author_signature exists, then we've received the comment - // relayed from the top-level post owner. There's no need to check the - // author_signature if the parent_author_signature is valid - - $parent_author_signature = base64_decode($parent_author_signature); - - if(! rsa_verify($signed_data,$parent_author_signature,$key,'sha256')) { - logger('diaspora_comment: top-level owner verification failed.'); - return; - } - } - else { - // If there's no parent_author_signature, then we've received the comment - // from the comment creator. In that case, the person is commenting on - // our post, so he/she must be a contact of ours and his/her public key - // should be in $msg['key'] - - $author_signature = base64_decode($author_signature); - - if(! rsa_verify($signed_data,$author_signature,$key,'sha256')) { - logger('diaspora_comment: comment author verification failed.'); - return; - } - } - - // Phew! Everything checks out. Now create an item. - - // Find the original comment author information. - // We need this to make sure we display the comment author - // information (name and avatar) correctly. - if(strcasecmp($diaspora_handle,$msg['author']) == 0) - $person = $contact; - else { - $person = find_diaspora_person_by_handle($diaspora_handle); - - if(! is_array($person)) { - logger('diaspora_comment: unable to find author details'); - return; - } - } - - // Fetch the contact id - if we know this contact - $r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1", - dbesc(normalise_link($person['url'])), intval($importer['uid'])); - if ($r) { - $cid = $r[0]['id']; - $network = $r[0]['network']; - } else { - $cid = $contact['id']; - $network = NETWORK_DIASPORA; - } - - $body = diaspora2bb($text); - $message_id = $diaspora_handle . ':' . $guid; - - $datarray = array(); - - $datarray['uid'] = $importer['uid']; - $datarray['contact-id'] = $cid; - $datarray['type'] = 'remote-comment'; - $datarray['wall'] = $parent_item['wall']; - $datarray['network'] = $network; - $datarray['verb'] = ACTIVITY_POST; - $datarray['gravity'] = GRAVITY_COMMENT; - $datarray['guid'] = $guid; - $datarray['uri'] = $message_id; - $datarray['parent-uri'] = $parent_item['uri']; - - // No timestamps for comments? OK, we'll the use current time. - $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert(); - $datarray['private'] = $parent_item['private']; - - $datarray['owner-name'] = $parent_item['owner-name']; - $datarray['owner-link'] = $parent_item['owner-link']; - $datarray['owner-avatar'] = $parent_item['owner-avatar']; - - $datarray['author-name'] = $person['name']; - $datarray['author-link'] = $person['url']; - $datarray['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']); - $datarray['body'] = $body; - $datarray["object"] = json_encode($xml); - $datarray["object-type"] = ACTIVITY_OBJ_COMMENT; - - // We can't be certain what the original app is if the message is relayed. - if(($parent_item['origin']) && (! $parent_author_signature)) - $datarray['app'] = 'Diaspora'; - - DiasporaFetchGuid($datarray); - $message_id = item_store($datarray); - - $datarray['id'] = $message_id; - - //if($message_id) { - //q("update item set plink = '%s' where id = %d", - // //dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id), - // dbesc($a->get_baseurl().'/display/'.$datarray['guid']), - // intval($message_id) - //); - //} - - // If we are the origin of the parent we store the original signature and notify our followers - if($parent_item['origin']) { - $author_signature_base64 = base64_encode($author_signature); - $author_signature_base64 = diaspora_repair_signature($author_signature_base64, $diaspora_handle); - - q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", - intval($message_id), - dbesc($signed_data), - dbesc($author_signature_base64), - dbesc($diaspora_handle) - ); - - // notify others - proc_run('php','include/notifier.php','comment-import',$message_id); - } - - return; -} - - - - -function diaspora_conversation($importer,$xml,$msg) { - - $a = get_app(); - - $guid = notags(unxmlify($xml->guid)); - $subject = notags(unxmlify($xml->subject)); - $diaspora_handle = notags(unxmlify($xml->diaspora_handle)); - $participant_handles = notags(unxmlify($xml->participant_handles)); - $created_at = datetime_convert('UTC','UTC',notags(unxmlify($xml->created_at))); - - $parent_uri = $diaspora_handle . ':' . $guid; - - $messages = $xml->message; - - if(! count($messages)) { - logger('diaspora_conversation: empty conversation'); - return; - } - - $contact = diaspora_get_contact_by_handle($importer['uid'],$msg['author']); - if(! $contact) { - logger('diaspora_conversation: cannot find contact: ' . $msg['author']); - return; - } - - if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) { - logger('diaspora_conversation: Ignoring this author.'); - return 202; - } - - $conversation = null; - - $c = q("select * from conv where uid = %d and guid = '%s' limit 1", - intval($importer['uid']), - dbesc($guid) - ); - if(count($c)) - $conversation = $c[0]; - else { - $r = q("insert into conv (uid,guid,creator,created,updated,subject,recips) values(%d, '%s', '%s', '%s', '%s', '%s', '%s') ", - intval($importer['uid']), - dbesc($guid), - dbesc($diaspora_handle), - dbesc(datetime_convert('UTC','UTC',$created_at)), - dbesc(datetime_convert()), - dbesc($subject), - dbesc($participant_handles) - ); - if($r) - $c = q("select * from conv where uid = %d and guid = '%s' limit 1", - intval($importer['uid']), - dbesc($guid) - ); - if(count($c)) - $conversation = $c[0]; - } - if(! $conversation) { - logger('diaspora_conversation: unable to create conversation.'); - return; - } - - foreach($messages as $mesg) { + private function receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation) { + $guid = notags(unxmlify($data->guid)); + $subject = notags(unxmlify($data->subject)); + $author = notags(unxmlify($data->author)); $reply = 0; @@ -1705,1469 +930,1624 @@ function diaspora_conversation($importer,$xml,$msg) { $msg_parent_author_signature = notags(unxmlify($mesg->parent_author_signature)); $msg_author_signature = notags(unxmlify($mesg->author_signature)); $msg_text = unxmlify($mesg->text); - $msg_created_at = datetime_convert('UTC','UTC',notags(unxmlify($mesg->created_at))); - $msg_diaspora_handle = notags(unxmlify($mesg->diaspora_handle)); + $msg_created_at = datetime_convert("UTC", "UTC", notags(unxmlify($mesg->created_at))); + + // "diaspora_handle" is the element name from the old version + // "author" is the element name from the new version + if ($mesg->author) + $msg_author = notags(unxmlify($mesg->author)); + elseif ($mesg->diaspora_handle) + $msg_author = notags(unxmlify($mesg->diaspora_handle)); + else + return false; + $msg_conversation_guid = notags(unxmlify($mesg->conversation_guid)); + if($msg_conversation_guid != $guid) { - logger('diaspora_conversation: message conversation guid does not belong to the current conversation. ' . $xml); - continue; + logger("message conversation guid does not belong to the current conversation."); + return false; } $body = diaspora2bb($msg_text); - $message_id = $msg_diaspora_handle . ':' . $msg_guid; + $message_uri = $msg_author.":".$msg_guid; - $author_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid; + $author_signed_data = $msg_guid.";".$msg_parent_guid.";".$msg_text.";".unxmlify($mesg->created_at).";".$msg_author.";".$msg_conversation_guid; $author_signature = base64_decode($msg_author_signature); - if(strcasecmp($msg_diaspora_handle,$msg['author']) == 0) { + if(strcasecmp($msg_author,$msg["author"]) == 0) { $person = $contact; - $key = $msg['key']; - } - else { - $person = find_diaspora_person_by_handle($msg_diaspora_handle); + $key = $msg["key"]; + } else { + $person = self::person_by_handle($msg_author); - if(is_array($person) && x($person,'pubkey')) - $key = $person['pubkey']; + if (is_array($person) && x($person, "pubkey")) + $key = $person["pubkey"]; else { - logger('diaspora_conversation: unable to find author details'); - continue; + logger("unable to find author details"); + return false; } } - if(! rsa_verify($author_signed_data,$author_signature,$key,'sha256')) { - logger('diaspora_conversation: verification failed.'); - continue; + if (!rsa_verify($author_signed_data, $author_signature, $key, "sha256")) { + logger("verification failed."); + return false; } if($msg_parent_author_signature) { - $owner_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid; + $owner_signed_data = $msg_guid.";".$msg_parent_guid.";".$msg_text.";".unxmlify($mesg->created_at).";".$msg_author.";".$msg_conversation_guid; $parent_author_signature = base64_decode($msg_parent_author_signature); - $key = $msg['key']; + $key = $msg["key"]; - if(! rsa_verify($owner_signed_data,$parent_author_signature,$key,'sha256')) { - logger('diaspora_conversation: owner verification failed.'); - continue; + if (!rsa_verify($owner_signed_data, $parent_author_signature, $key, "sha256")) { + logger("owner verification failed."); + return false; } } - $r = q("select id from mail where `uri` = '%s' limit 1", - dbesc($message_id) + $r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' LIMIT 1", + dbesc($message_uri) ); - if(count($r)) { - logger('diaspora_conversation: duplicate message already delivered.', LOGGER_DEBUG); - continue; + if($r) { + logger("duplicate message already delivered.", LOGGER_DEBUG); + return false; } - q("insert into mail ( `uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`) values ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')", - intval($importer['uid']), + q("INSERT INTO `mail` (`uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`) + VALUES (%d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')", + intval($importer["uid"]), dbesc($msg_guid), - intval($conversation['id']), - dbesc($person['name']), - dbesc($person['photo']), - dbesc($person['url']), - intval($contact['id']), + intval($conversation["id"]), + dbesc($person["name"]), + dbesc($person["photo"]), + dbesc($person["url"]), + intval($contact["id"]), dbesc($subject), dbesc($body), 0, 0, - dbesc($message_id), - dbesc($parent_uri), + dbesc($message_uri), + dbesc($author.":".$guid), dbesc($msg_created_at) ); - q("update conv set updated = '%s' where id = %d", + q("UPDATE `conv` SET `updated` = '%s' WHERE `id` = %d", dbesc(datetime_convert()), - intval($conversation['id']) + intval($conversation["id"]) ); notification(array( - 'type' => NOTIFY_MAIL, - 'notify_flags' => $importer['notify-flags'], - 'language' => $importer['language'], - 'to_name' => $importer['username'], - 'to_email' => $importer['email'], - 'uid' =>$importer['uid'], - 'item' => array('subject' => $subject, 'body' => $body), - 'source_name' => $person['name'], - 'source_link' => $person['url'], - 'source_photo' => $person['thumb'], - 'verb' => ACTIVITY_POST, - 'otype' => 'mail' + "type" => NOTIFY_MAIL, + "notify_flags" => $importer["notify-flags"], + "language" => $importer["language"], + "to_name" => $importer["username"], + "to_email" => $importer["email"], + "uid" =>$importer["uid"], + "item" => array("subject" => $subject, "body" => $body), + "source_name" => $person["name"], + "source_link" => $person["url"], + "source_photo" => $person["thumb"], + "verb" => ACTIVITY_POST, + "otype" => "mail" )); } - return; -} + private function receive_conversation($importer, $msg, $data) { + $guid = notags(unxmlify($data->guid)); + $subject = notags(unxmlify($data->subject)); + $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at))); + $author = notags(unxmlify($data->author)); + $participants = notags(unxmlify($data->participants)); -function diaspora_message($importer,$xml,$msg) { + $messages = $data->message; - $a = get_app(); - - $msg_guid = notags(unxmlify($xml->guid)); - $msg_parent_guid = notags(unxmlify($xml->parent_guid)); - $msg_parent_author_signature = notags(unxmlify($xml->parent_author_signature)); - $msg_author_signature = notags(unxmlify($xml->author_signature)); - $msg_text = unxmlify($xml->text); - $msg_created_at = datetime_convert('UTC','UTC',notags(unxmlify($xml->created_at))); - $msg_diaspora_handle = notags(unxmlify($xml->diaspora_handle)); - $msg_conversation_guid = notags(unxmlify($xml->conversation_guid)); - - $parent_uri = $msg_diaspora_handle . ':' . $msg_parent_guid; - - $contact = diaspora_get_contact_by_handle($importer['uid'],$msg_diaspora_handle); - if(! $contact) { - logger('diaspora_message: cannot find contact: ' . $msg_diaspora_handle); - return; - } - - if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) { - logger('diaspora_message: Ignoring this author.'); - return 202; - } - - $conversation = null; - - $c = q("select * from conv where uid = %d and guid = '%s' limit 1", - intval($importer['uid']), - dbesc($msg_conversation_guid) - ); - if(count($c)) - $conversation = $c[0]; - else { - logger('diaspora_message: conversation not available.'); - return; - } - - $reply = 0; - - $body = diaspora2bb($msg_text); - $message_id = $msg_diaspora_handle . ':' . $msg_guid; - - $author_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($xml->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid; - - - $author_signature = base64_decode($msg_author_signature); - - $person = find_diaspora_person_by_handle($msg_diaspora_handle); - if(is_array($person) && x($person,'pubkey')) - $key = $person['pubkey']; - else { - logger('diaspora_message: unable to find author details'); - return; - } - - if(! rsa_verify($author_signed_data,$author_signature,$key,'sha256')) { - logger('diaspora_message: verification failed.'); - return; - } - - $r = q("select id from mail where `uri` = '%s' and uid = %d limit 1", - dbesc($message_id), - intval($importer['uid']) - ); - if(count($r)) { - logger('diaspora_message: duplicate message already delivered.', LOGGER_DEBUG); - return; - } - - q("insert into mail ( `uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`) values ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')", - intval($importer['uid']), - dbesc($msg_guid), - intval($conversation['id']), - dbesc($person['name']), - dbesc($person['photo']), - dbesc($person['url']), - intval($contact['id']), - dbesc($conversation['subject']), - dbesc($body), - 0, - 1, - dbesc($message_id), - dbesc($parent_uri), - dbesc($msg_created_at) - ); - - q("update conv set updated = '%s' where id = %d", - dbesc(datetime_convert()), - intval($conversation['id']) - ); - - return; -} - -function diaspora_participation($importer,$xml) { - logger("Unsupported message type 'participation' ".print_r($xml, true)); -} - -function diaspora_photo($importer,$xml,$msg,$attempt=1) { - - $a = get_app(); - - logger('diaspora_photo: init',LOGGER_DEBUG); - - $remote_photo_path = notags(unxmlify($xml->remote_photo_path)); - - $remote_photo_name = notags(unxmlify($xml->remote_photo_name)); - - $status_message_guid = notags(unxmlify($xml->status_message_guid)); - - $guid = notags(unxmlify($xml->guid)); - - $diaspora_handle = notags(unxmlify($xml->diaspora_handle)); - - $public = notags(unxmlify($xml->public)); - - $created_at = notags(unxmlify($xml_created_at)); - - logger('diaspora_photo: status_message_guid: ' . $status_message_guid, LOGGER_DEBUG); - - $contact = diaspora_get_contact_by_handle($importer['uid'],$msg['author']); - if(! $contact) { - logger('diaspora_photo: contact record not found: ' . $msg['author'] . ' handle: ' . $diaspora_handle); - return; - } - - if(! diaspora_post_allow($importer,$contact, false)) { - logger('diaspora_photo: Ignoring this author.'); - return 202; - } - - $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer['uid']), - dbesc($status_message_guid) - ); - -/* deactivated by now since it can lead to multiplicated pictures in posts. - if(!count($r)) { - $result = diaspora_store_by_guid($status_message_guid, $contact['url'], $importer['uid']); - - if (!$result) { - $person = find_diaspora_person_by_handle($diaspora_handle); - $result = diaspora_store_by_guid($status_message_guid, $person['url'], $importer['uid']); + if (!count($messages)) { + logger("empty conversation"); + return false; } - if ($result) { - logger("Fetched missing item ".$status_message_guid." - result: ".$result, LOGGER_DEBUG); + $contact = self::allowed_contact_by_handle($importer, $msg["author"], true); + if (!$contact) + return false; - $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer['uid']), - dbesc($status_message_guid) + $conversation = null; + + $c = q("SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", + intval($importer["uid"]), + dbesc($guid) + ); + if($c) + $conversation = $c[0]; + else { + $r = q("INSERT INTO `conv` (`uid`, `guid`, `creator`, `created`, `updated`, `subject`, `recips`) + VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s')", + intval($importer["uid"]), + dbesc($guid), + dbesc($author), + dbesc(datetime_convert("UTC", "UTC", $created_at)), + dbesc(datetime_convert()), + dbesc($subject), + dbesc($participants) + ); + if($r) + $c = q("SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", + intval($importer["uid"]), + dbesc($guid) + ); + + if($c) + $conversation = $c[0]; + } + if (!$conversation) { + logger("unable to create conversation."); + return; + } + + foreach($messages as $mesg) + self::receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation); + + return true; + } + + private function construct_like_body($contact, $parent_item, $guid) { + $bodyverb = t('%1$s likes %2$s\'s %3$s'); + + $ulink = "[url=".$contact["url"]."]".$contact["name"]."[/url]"; + $alink = "[url=".$parent_item["author-link"]."]".$parent_item["author-name"]."[/url]"; + $plink = "[url=".App::get_baseurl()."/display/".urlencode($guid)."]".t("status")."[/url]"; + + return sprintf($bodyverb, $ulink, $alink, $plink); + } + + private function construct_like_object($importer, $parent_item) { + $objtype = ACTIVITY_OBJ_NOTE; + $link = ''; + $parent_body = $parent_item["body"]; + + $xmldata = array("object" => array("type" => $objtype, + "local" => "1", + "id" => $parent_item["uri"], + "link" => $link, + "title" => "", + "content" => $parent_body)); + + return xml::from_array($xmldata, $xml, true); + } + + private function receive_like($importer, $sender, $data) { + $positive = notags(unxmlify($data->positive)); + $guid = notags(unxmlify($data->guid)); + $parent_type = notags(unxmlify($data->parent_type)); + $parent_guid = notags(unxmlify($data->parent_guid)); + $author = notags(unxmlify($data->author)); + + // likes on comments aren't supported by Diaspora - only on posts + // But maybe this will be supported in the future, so we will accept it. + if (!in_array($parent_type, array("Post", "Comment"))) + return false; + + $contact = self::allowed_contact_by_handle($importer, $sender, true); + if (!$contact) + return false; + + if (self::message_exists($importer["uid"], $guid)) + return false; + + $parent_item = self::parent_item($importer["uid"], $parent_guid, $author, $contact); + if (!$parent_item) + return false; + + $person = self::person_by_handle($author); + if (!is_array($person)) { + logger("unable to find author details"); + return false; + } + + // Fetch the contact id - if we know this contact + $author_contact = self::author_contact_by_url($contact, $person, $importer["uid"]); + + // "positive" = "false" would be a Dislike - wich isn't currently supported by Diaspora + // We would accept this anyhow. + if ($positive === "true") + $verb = ACTIVITY_LIKE; + else + $verb = ACTIVITY_DISLIKE; + + $datarray = array(); + + $datarray["uid"] = $importer["uid"]; + $datarray["contact-id"] = $author_contact["cid"]; + $datarray["network"] = $author_contact["network"]; + + $datarray["author-name"] = $person["name"]; + $datarray["author-link"] = $person["url"]; + $datarray["author-avatar"] = ((x($person,"thumb")) ? $person["thumb"] : $person["photo"]); + + $datarray["owner-name"] = $contact["name"]; + $datarray["owner-link"] = $contact["url"]; + $datarray["owner-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]); + + $datarray["guid"] = $guid; + $datarray["uri"] = $author.":".$guid; + + $datarray["type"] = "activity"; + $datarray["verb"] = $verb; + $datarray["gravity"] = GRAVITY_LIKE; + $datarray["parent-uri"] = $parent_item["uri"]; + + $datarray["object-type"] = ACTIVITY_OBJ_NOTE; + $datarray["object"] = self::construct_like_object($importer, $parent_item); + + $datarray["body"] = self::construct_like_body($contact, $parent_item, $guid); + + $message_id = item_store($datarray); + + if ($message_id) + logger("Stored like ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); + + // If we are the origin of the parent we store the original data and notify our followers + if($message_id AND $parent_item["origin"]) { + + // Formerly we stored the signed text, the signature and the author in different fields. + // We now store the raw data so that we are more flexible. + q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')", + intval($message_id), + dbesc(json_encode($data)) + ); + + // notify others + proc_run("php", "include/notifier.php", "comment-import", $message_id); + } + + return $message_id; + } + + private function receive_message($importer, $data) { + $guid = notags(unxmlify($data->guid)); + $parent_guid = notags(unxmlify($data->parent_guid)); + $text = unxmlify($data->text); + $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at))); + $author = notags(unxmlify($data->author)); + $conversation_guid = notags(unxmlify($data->conversation_guid)); + + $contact = self::allowed_contact_by_handle($importer, $author, true); + if (!$contact) + return false; + + $conversation = null; + + $c = q("SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", + intval($importer["uid"]), + dbesc($conversation_guid) + ); + if($c) + $conversation = $c[0]; + else { + logger("conversation not available."); + return false; + } + + $reply = 0; + + $body = diaspora2bb($text); + $message_uri = $author.":".$guid; + + $person = self::person_by_handle($author); + if (!$person) { + logger("unable to find author details"); + return false; + } + + $r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", + dbesc($message_uri), + intval($importer["uid"]) + ); + if($r) { + logger("duplicate message already delivered.", LOGGER_DEBUG); + return false; + } + + q("INSERT INTO `mail` (`uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`) + VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')", + intval($importer["uid"]), + dbesc($guid), + intval($conversation["id"]), + dbesc($person["name"]), + dbesc($person["photo"]), + dbesc($person["url"]), + intval($contact["id"]), + dbesc($conversation["subject"]), + dbesc($body), + 0, + 1, + dbesc($message_uri), + dbesc($author.":".$parent_guid), + dbesc($created_at) + ); + + q("UPDATE `conv` SET `updated` = '%s' WHERE `id` = %d", + dbesc(datetime_convert()), + intval($conversation["id"]) + ); + + return true; + } + + private function receive_participation($importer, $data) { + // I'm not sure if we can fully support this message type + return true; + } + + private function receive_photo($importer, $data) { + // There doesn't seem to be a reason for this function, since the photo data is transmitted in the status message as well + return true; + } + + private function receive_poll_participation($importer, $data) { + // We don't support polls by now + return true; + } + + private function receive_profile($importer, $data) { + $author = notags(unxmlify($data->author)); + + $contact = self::contact_by_handle($importer["uid"], $author); + if (!$contact) + return; + + $name = unxmlify($data->first_name).((strlen($data->last_name)) ? " ".unxmlify($data->last_name) : ""); + $image_url = unxmlify($data->image_url); + $birthday = unxmlify($data->birthday); + $location = diaspora2bb(unxmlify($data->location)); + $about = diaspora2bb(unxmlify($data->bio)); + $gender = unxmlify($data->gender); + $searchable = (unxmlify($data->searchable) == "true"); + $nsfw = (unxmlify($data->nsfw) == "true"); + $tags = unxmlify($data->tag_string); + + $tags = explode("#", $tags); + + $keywords = array(); + foreach ($tags as $tag) { + $tag = trim(strtolower($tag)); + if ($tag != "") + $keywords[] = $tag; + } + + $keywords = implode(", ", $keywords); + + $handle_parts = explode("@", $author); + $nick = $handle_parts[0]; + + if($name === "") + $name = $handle_parts[0]; + + if( preg_match("|^https?://|", $image_url) === 0) + $image_url = "http://".$handle_parts[1].$image_url; + + update_contact_avatar($image_url, $importer["uid"], $contact["id"]); + + // Generic birthday. We don't know the timezone. The year is irrelevant. + + $birthday = str_replace("1000", "1901", $birthday); + + if ($birthday != "") + $birthday = datetime_convert("UTC", "UTC", $birthday, "Y-m-d"); + + // this is to prevent multiple birthday notifications in a single year + // if we already have a stored birthday and the 'm-d' part hasn't changed, preserve the entry, which will preserve the notify year + + if(substr($birthday,5) === substr($contact["bd"],5)) + $birthday = $contact["bd"]; + + $r = q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `addr` = '%s', `name-date` = '%s', `bd` = '%s', + `location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `id` = %d AND `uid` = %d", + dbesc($name), + dbesc($nick), + dbesc($author), + dbesc(datetime_convert()), + dbesc($birthday), + dbesc($location), + dbesc($about), + dbesc($keywords), + dbesc($gender), + intval($contact["id"]), + intval($importer["uid"]) + ); + + if ($searchable) { + poco_check($contact["url"], $name, NETWORK_DIASPORA, $image_url, $about, $location, $gender, $keywords, "", + datetime_convert(), 2, $contact["id"], $importer["uid"]); + } + + $gcontact = array("url" => $contact["url"], "network" => NETWORK_DIASPORA, "generation" => 2, + "photo" => $image_url, "name" => $name, "location" => $location, + "about" => $about, "birthday" => $birthday, "gender" => $gender, + "addr" => $author, "nick" => $nick, "keywords" => $keywords, + "hide" => !$searchable, "nsfw" => $nsfw); + + update_gcontact($gcontact); + + logger("Profile of contact ".$contact["id"]." stored for user ".$importer["uid"], LOGGER_DEBUG); + + return true; + } + + private function receive_request_make_friend($importer, $contact) { + + $a = get_app(); + + if($contact["rel"] == CONTACT_IS_FOLLOWER && in_array($importer["page-flags"], array(PAGE_FREELOVE))) { + q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d", + intval(CONTACT_IS_FRIEND), + intval($contact["id"]), + intval($importer["uid"]) ); } + // send notification + + $r = q("SELECT `hide-friends` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1", + intval($importer["uid"]) + ); + + if($r && !$r[0]["hide-friends"] && !$contact["hidden"] && intval(get_pconfig($importer["uid"], "system", "post_newfriend"))) { + + $self = q("SELECT * FROM `contact` WHERE `self` AND `uid` = %d LIMIT 1", + intval($importer["uid"]) + ); + + // they are not CONTACT_IS_FOLLOWER anymore but that's what we have in the array + + if($self && $contact["rel"] == CONTACT_IS_FOLLOWER) { + + $arr = array(); + $arr["uri"] = $arr["parent-uri"] = item_new_uri($a->get_hostname(), $importer["uid"]); + $arr["uid"] = $importer["uid"]; + $arr["contact-id"] = $self[0]["id"]; + $arr["wall"] = 1; + $arr["type"] = 'wall'; + $arr["gravity"] = 0; + $arr["origin"] = 1; + $arr["author-name"] = $arr["owner-name"] = $self[0]["name"]; + $arr["author-link"] = $arr["owner-link"] = $self[0]["url"]; + $arr["author-avatar"] = $arr["owner-avatar"] = $self[0]["thumb"]; + $arr["verb"] = ACTIVITY_FRIEND; + $arr["object-type"] = ACTIVITY_OBJ_PERSON; + + $A = "[url=".$self[0]["url"]."]".$self[0]["name"]."[/url]"; + $B = "[url=".$contact["url"]."]".$contact["name"]."[/url]"; + $BPhoto = "[url=".$contact["url"]."][img]".$contact["thumb"]."[/img][/url]"; + $arr["body"] = sprintf(t("%1$s is now friends with %2$s"), $A, $B)."\n\n\n".$Bphoto; + + $arr["object"] = "".ACTIVITY_OBJ_PERSON."".$contact["name"]."" + ."".$contact["url"]."/".$contact["name"].""; + $arr["object"] .= "".xmlify(''."\n"); + $arr["object"] .= xmlify(''."\n"); + $arr["object"] .= "\n"; + $arr["last-child"] = 1; + + $arr["allow_cid"] = $user[0]["allow_cid"]; + $arr["allow_gid"] = $user[0]["allow_gid"]; + $arr["deny_cid"] = $user[0]["deny_cid"]; + $arr["deny_gid"] = $user[0]["deny_gid"]; + + $i = item_store($arr); + if($i) + proc_run("php", "include/notifier.php", "activity", $i); + + } + + } } + + private function receive_request($importer, $data) { + $author = unxmlify($data->author); + $recipient = unxmlify($data->recipient); + + if (!$author || !$recipient) + return; + + $contact = self::contact_by_handle($importer["uid"],$author); + + if($contact) { + + // perhaps we were already sharing with this person. Now they're sharing with us. + // That makes us friends. + + self::receive_request_make_friend($importer, $contact); + return true; + } + + $ret = self::person_by_handle($author); + + if (!$ret || ($ret["network"] != NETWORK_DIASPORA)) { + logger("Cannot resolve diaspora handle ".$author." for ".$recipient); + return false; + } + + $batch = (($ret["batch"]) ? $ret["batch"] : implode("/", array_slice(explode("/", $ret["url"]), 0, 3))."/receive/public"); + + $r = q("INSERT INTO `contact` (`uid`, `network`,`addr`,`created`,`url`,`nurl`,`batch`,`name`,`nick`,`photo`,`pubkey`,`notify`,`poll`,`blocked`,`priority`) + VALUES (%d, '%s', '%s', '%s', '%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,%d)", + intval($importer["uid"]), + dbesc($ret["network"]), + dbesc($ret["addr"]), + datetime_convert(), + dbesc($ret["url"]), + dbesc(normalise_link($ret["url"])), + dbesc($batch), + dbesc($ret["name"]), + dbesc($ret["nick"]), + dbesc($ret["photo"]), + dbesc($ret["pubkey"]), + dbesc($ret["notify"]), + dbesc($ret["poll"]), + 1, + 2 + ); + + // find the contact record we just created + + $contact_record = self::contact_by_handle($importer["uid"],$author); + + if (!$contact_record) { + logger("unable to locate newly created contact record."); + return; + } + + $g = q("SELECT `def_gid` FROM `user` WHERE `uid` = %d LIMIT 1", + intval($importer["uid"]) + ); + + if($g && intval($g[0]["def_gid"])) + group_add_member($importer["uid"], "", $contact_record["id"], $g[0]["def_gid"]); + + if($importer["page-flags"] == PAGE_NORMAL) { + + $hash = random_string().(string)time(); // Generate a confirm_key + + $ret = q("INSERT INTO `intro` (`uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime`) + VALUES (%d, %d, %d, %d, '%s', '%s', '%s')", + intval($importer["uid"]), + intval($contact_record["id"]), + 0, + 0, + dbesc(t("Sharing notification from Diaspora network")), + dbesc($hash), + dbesc(datetime_convert()) + ); + } else { + + // automatic friend approval + + update_contact_avatar($contact_record["photo"],$importer["uid"],$contact_record["id"]); + + // technically they are sharing with us (CONTACT_IS_SHARING), + // but if our page-type is PAGE_COMMUNITY or PAGE_SOAPBOX + // we are going to change the relationship and make them a follower. + + if($importer["page-flags"] == PAGE_FREELOVE) + $new_relation = CONTACT_IS_FRIEND; + else + $new_relation = CONTACT_IS_FOLLOWER; + + $r = q("UPDATE `contact` SET `rel` = %d, + `name-date` = '%s', + `uri-date` = '%s', + `blocked` = 0, + `pending` = 0, + `writable` = 1 + WHERE `id` = %d + ", + intval($new_relation), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + intval($contact_record["id"]) + ); + + $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer["uid"])); + if($u) + $ret = self::send_share($u[0], $contact_record); + } + + return true; + } + + private function original_item($guid, $orig_author, $author) { + + // Do we already have this item? + $r = q("SELECT `body`, `tag`, `app`, `created`, `object-type`, `uri`, `guid`, + `author-name`, `author-link`, `author-avatar` + FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1", + dbesc($guid)); + + if($r) { + logger("reshared message ".$guid." already exists on system."); + + // Maybe it is already a reshared item? + // Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares + if (self::is_reshare($r[0]["body"])) + $r = array(); + else + return $r[0]; + } + + if (!$r) { + $server = "https://".substr($orig_author, strpos($orig_author, "@") + 1); + logger("1st try: reshared message ".$guid." will be fetched from original server: ".$server); + $item_id = self::store_by_guid($guid, $server); + + if (!$item_id) { + $server = "http://".substr($orig_author, strpos($orig_author, "@") + 1); + logger("2nd try: reshared message ".$guid." will be fetched from original server: ".$server); + $item_id = self::store_by_guid($guid, $server); + } + + // Deactivated by now since there is a risk that someone could manipulate postings through this method +/* if (!$item_id) { + $server = "https://".substr($author, strpos($author, "@") + 1); + logger("3rd try: reshared message ".$guid." will be fetched from sharer's server: ".$server); + $item_id = self::store_by_guid($guid, $server); + } + if (!$item_id) { + $server = "http://".substr($author, strpos($author, "@") + 1); + logger("4th try: reshared message ".$guid." will be fetched from sharer's server: ".$server); + $item_id = self::store_by_guid($guid, $server); + } */ - if(!count($r)) { - if($attempt <= 3) { - q("INSERT INTO dsprphotoq (uid, msg, attempt) VALUES (%d, '%s', %d)", - intval($importer['uid']), - dbesc(serialize($msg)), - intval($attempt + 1) - ); - } + if ($item_id) { + $r = q("SELECT `body`, `tag`, `app`, `created`, `object-type`, `uri`, `guid`, + `author-name`, `author-link`, `author-avatar` + FROM `item` WHERE `id` = %d AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1", + intval($item_id)); - logger('diaspora_photo: attempt = ' . $attempt . '; status message not found: ' . $status_message_guid . ' for photo: ' . $guid); - return; - } + if ($r) + return $r[0]; - $parent_item = $r[0]; - - $link_text = '[img]' . $remote_photo_path . $remote_photo_name . '[/img]' . "\n"; - - $link_text = scale_external_images($link_text, true, - array($remote_photo_name, 'scaled_full_' . $remote_photo_name)); - - if(strpos($parent_item['body'],$link_text) === false) { - - $parent_item['body'] = $link_text . $parent_item['body']; - - $r = q("UPDATE `item` SET `body` = '%s', `visible` = 1 WHERE `id` = %d AND `uid` = %d", - dbesc($parent_item['body']), - intval($parent_item['id']), - intval($parent_item['uid']) - ); - put_item_in_cache($parent_item, true); - update_thread($parent_item['id']); - } - - return; -} - - - - -function diaspora_like($importer,$xml,$msg) { - - $a = get_app(); - $guid = notags(unxmlify($xml->guid)); - $parent_guid = notags(unxmlify($xml->parent_guid)); - $diaspora_handle = notags(unxmlify($xml->diaspora_handle)); - $target_type = notags(unxmlify($xml->target_type)); - $positive = notags(unxmlify($xml->positive)); - $author_signature = notags(unxmlify($xml->author_signature)); - - $parent_author_signature = (($xml->parent_author_signature) ? notags(unxmlify($xml->parent_author_signature)) : ''); - - // likes on comments not supported here and likes on photos not supported by Diaspora - -// if($target_type !== 'Post') -// return; - - $contact = diaspora_get_contact_by_handle($importer['uid'],$msg['author']); - if(! $contact) { - logger('diaspora_like: cannot find contact: ' . $msg['author']); - return; - } - - if(! diaspora_post_allow($importer,$contact, false)) { - logger('diaspora_like: Ignoring this author.'); - return 202; - } - - $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer['uid']), - dbesc($parent_guid) - ); - - if(!count($r)) { - $result = diaspora_store_by_guid($parent_guid, $contact['url'], $importer['uid']); - - if (!$result) { - $person = find_diaspora_person_by_handle($diaspora_handle); - $result = diaspora_store_by_guid($parent_guid, $person['url'], $importer['uid']); - } - - if ($result) { - logger("Fetched missing item ".$parent_guid." - result: ".$result, LOGGER_DEBUG); - - $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer['uid']), - dbesc($parent_guid) - ); - } - } - - if(! count($r)) { - logger('diaspora_like: parent item not found: ' . $guid); - return; - } - - $parent_item = $r[0]; - - $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer['uid']), - dbesc($guid) - ); - if(count($r)) { - if($positive === 'true') { - logger('diaspora_like: duplicate like: ' . $guid); - return; - } - // Note: I don't think "Like" objects with positive = "false" are ever actually used - // It looks like "RelayableRetractions" are used for "unlike" instead - if($positive === 'false') { - logger('diaspora_like: received a like with positive set to "false"...ignoring'); -/* q("UPDATE `item` SET `deleted` = 1 WHERE `id` = %d AND `uid` = %d", - intval($r[0]['id']), - intval($importer['uid']) - );*/ - // FIXME--actually don't unless it turns out that Diaspora does indeed send out "false" likes - // send notification via proc_run() - return; - } - } - // Note: I don't think "Like" objects with positive = "false" are ever actually used - // It looks like "RelayableRetractions" are used for "unlike" instead - if($positive === 'false') { - logger('diaspora_like: received a like with positive set to "false"'); - logger('diaspora_like: unlike received with no corresponding like...ignoring'); - return; - } - - - /* How Diaspora performs "like" signature checking: - - - If an item has been sent by the like author to the top-level post owner to relay on - to the rest of the contacts on the top-level post, the top-level post owner should check - the author_signature, then create a parent_author_signature before relaying the like on - - If an item has been relayed on by the top-level post owner, the contacts who receive it - check only the parent_author_signature. Basically, they trust that the top-level post - owner has already verified the authenticity of anything he/she sends out - - In either case, the signature that get checked is the signature created by the person - who sent the salmon - */ - - // Diaspora has changed the way they are signing the likes. - // Just to make sure that we don't miss any likes we will check the old and the current way. - $old_signed_data = $guid . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $diaspora_handle; - - $signed_data = $positive . ';' . $guid . ';' . $target_type . ';' . $parent_guid . ';' . $diaspora_handle; - - $key = $msg['key']; - - if ($parent_author_signature) { - // If a parent_author_signature exists, then we've received the like - // relayed from the top-level post owner. There's no need to check the - // author_signature if the parent_author_signature is valid - - $parent_author_signature = base64_decode($parent_author_signature); - - if (!rsa_verify($signed_data,$parent_author_signature,$key,'sha256') AND - !rsa_verify($old_signed_data,$parent_author_signature,$key,'sha256')) { - - logger('diaspora_like: top-level owner verification failed.'); - return; - } - } else { - // If there's no parent_author_signature, then we've received the like - // from the like creator. In that case, the person is "like"ing - // our post, so he/she must be a contact of ours and his/her public key - // should be in $msg['key'] - - $author_signature = base64_decode($author_signature); - - if (!rsa_verify($signed_data,$author_signature,$key,'sha256') AND - !rsa_verify($old_signed_data,$author_signature,$key,'sha256')) { - - logger('diaspora_like: like creator verification failed.'); - return; - } - } - - // Phew! Everything checks out. Now create an item. - - // Find the original comment author information. - // We need this to make sure we display the comment author - // information (name and avatar) correctly. - if(strcasecmp($diaspora_handle,$msg['author']) == 0) - $person = $contact; - else { - $person = find_diaspora_person_by_handle($diaspora_handle); - - if(! is_array($person)) { - logger('diaspora_like: unable to find author details'); - return; - } - } - - $uri = $diaspora_handle . ':' . $guid; - - $activity = ACTIVITY_LIKE; - $post_type = (($parent_item['resource-id']) ? t('photo') : t('status')); - $objtype = (($parent_item['resource-id']) ? ACTIVITY_OBJ_PHOTO : ACTIVITY_OBJ_NOTE ); - $link = xmlify('' . "\n") ; - $body = $parent_item['body']; - - $obj = <<< EOT - - - $objtype - 1 - {$parent_item['uri']} - $link - - $body - -EOT; - $bodyverb = t('%1$s likes %2$s\'s %3$s'); - - // Fetch the contact id - if we know this contact - $r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1", - dbesc(normalise_link($person['url'])), intval($importer['uid'])); - if ($r) { - $cid = $r[0]['id']; - $network = $r[0]['network']; - } else { - $cid = $contact['id']; - $network = NETWORK_DIASPORA; - } - - $arr = array(); - - $arr['uri'] = $uri; - $arr['uid'] = $importer['uid']; - $arr['guid'] = $guid; - $arr['network'] = $network; - $arr['contact-id'] = $cid; - $arr['type'] = 'activity'; - $arr['wall'] = $parent_item['wall']; - $arr['gravity'] = GRAVITY_LIKE; - $arr['parent'] = $parent_item['id']; - $arr['parent-uri'] = $parent_item['uri']; - - $arr['owner-name'] = $parent_item['name']; - $arr['owner-link'] = $parent_item['url']; - //$arr['owner-avatar'] = $parent_item['thumb']; - $arr['owner-avatar'] = ((x($parent_item,'thumb')) ? $parent_item['thumb'] : $parent_item['photo']); - - $arr['author-name'] = $person['name']; - $arr['author-link'] = $person['url']; - $arr['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']); - - $ulink = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]'; - $alink = '[url=' . $parent_item['author-link'] . ']' . $parent_item['author-name'] . '[/url]'; - //$plink = '[url=' . $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $parent_item['id'] . ']' . $post_type . '[/url]'; - $plink = '[url='.$a->get_baseurl().'/display/'.urlencode($guid).']'.$post_type.'[/url]'; - $arr['body'] = sprintf( $bodyverb, $ulink, $alink, $plink ); - - $arr['app'] = 'Diaspora'; - - $arr['private'] = $parent_item['private']; - $arr['verb'] = $activity; - $arr['object-type'] = $objtype; - $arr['object'] = $obj; - $arr['visible'] = 1; - $arr['unseen'] = 1; - $arr['last-child'] = 0; - - $message_id = item_store($arr); - - - //if($message_id) { - // q("update item set plink = '%s' where id = %d", - // //dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id), - // dbesc($a->get_baseurl().'/display/'.$guid), - // intval($message_id) - // ); - //} - - // If we are the origin of the parent we store the original signature and notify our followers - if($parent_item['origin']) { - $author_signature_base64 = base64_encode($author_signature); - $author_signature_base64 = diaspora_repair_signature($author_signature_base64, $diaspora_handle); - - q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", - intval($message_id), - dbesc($signed_data), - dbesc($author_signature_base64), - dbesc($diaspora_handle) - ); - - // notify others - proc_run('php','include/notifier.php','comment-import',$message_id); - } - - return; -} - -function diaspora_retraction($importer,$xml) { - - - $guid = notags(unxmlify($xml->guid)); - $diaspora_handle = notags(unxmlify($xml->diaspora_handle)); - $type = notags(unxmlify($xml->type)); - - $contact = diaspora_get_contact_by_handle($importer['uid'],$diaspora_handle); - if(! $contact) - return; - - if($type === 'Person') { - require_once('include/Contact.php'); - contact_remove($contact['id']); - } elseif($type === 'StatusMessage') { - $guid = notags(unxmlify($xml->post_guid)); - - $r = q("SELECT * FROM `item` WHERE `guid` = '%s' AND `uid` = %d AND NOT `file` LIKE '%%[%%' LIMIT 1", - dbesc($guid), - intval($importer['uid']) - ); - if(count($r)) { - if(link_compare($r[0]['author-link'],$contact['url'])) { - q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d", - dbesc(datetime_convert()), - intval($r[0]['id']) - ); - delete_thread($r[0]['id'], $r[0]['parent-uri']); } } - } elseif($type === 'Post') { - $r = q("select * from item where guid = '%s' and uid = %d and not file like '%%[%%' limit 1", - dbesc('guid'), - intval($importer['uid']) + return false; + } + + private function receive_reshare($importer, $data) { + $root_author = notags(unxmlify($data->root_author)); + $root_guid = notags(unxmlify($data->root_guid)); + $guid = notags(unxmlify($data->guid)); + $author = notags(unxmlify($data->author)); + $public = notags(unxmlify($data->public)); + $created_at = notags(unxmlify($data->created_at)); + + $contact = self::allowed_contact_by_handle($importer, $author, false); + if (!$contact) + return false; + + if (self::message_exists($importer["uid"], $guid)) + return false; + + $original_item = self::original_item($root_guid, $root_author, $author); + if (!$original_item) + return false; + + $orig_url = App::get_baseurl()."/display/".$original_item["guid"]; + + $datarray = array(); + + $datarray["uid"] = $importer["uid"]; + $datarray["contact-id"] = $contact["id"]; + $datarray["network"] = NETWORK_DIASPORA; + + $datarray["author-name"] = $contact["name"]; + $datarray["author-link"] = $contact["url"]; + $datarray["author-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]); + + $datarray["owner-name"] = $datarray["author-name"]; + $datarray["owner-link"] = $datarray["author-link"]; + $datarray["owner-avatar"] = $datarray["author-avatar"]; + + $datarray["guid"] = $guid; + $datarray["uri"] = $datarray["parent-uri"] = $author.":".$guid; + + $datarray["verb"] = ACTIVITY_POST; + $datarray["gravity"] = GRAVITY_PARENT; + + $datarray["object"] = json_encode($data); + + $prefix = share_header($original_item["author-name"], $original_item["author-link"], $original_item["author-avatar"], + $original_item["guid"], $original_item["created"], $orig_url); + $datarray["body"] = $prefix.$original_item["body"]."[/share]"; + + $datarray["tag"] = $original_item["tag"]; + $datarray["app"] = $original_item["app"]; + + $datarray["plink"] = self::plink($author, $guid); + $datarray["private"] = (($public == "false") ? 1 : 0); + $datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert("UTC", "UTC", $created_at); + + $datarray["object-type"] = $original_item["object-type"]; + + self::fetch_guid($datarray); + $message_id = item_store($datarray); + + if ($message_id) + logger("Stored reshare ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); + + return $message_id; + } + + private function item_retraction($importer, $contact, $data) { + $target_type = notags(unxmlify($data->target_type)); + $target_guid = notags(unxmlify($data->target_guid)); + $author = notags(unxmlify($data->author)); + + $person = self::person_by_handle($author); + if (!is_array($person)) { + logger("unable to find author detail for ".$author); + return false; + } + + $r = q("SELECT `id`, `parent`, `parent-uri`, `author-link` FROM `item` WHERE `guid` = '%s' AND `uid` = %d AND NOT `file` LIKE '%%[%%' LIMIT 1", + dbesc($target_guid), + intval($importer["uid"]) ); - if(count($r)) { - if(link_compare($r[0]['author-link'],$contact['url'])) { - q("update item set `deleted` = 1, `changed` = '%s' where `id` = %d", - dbesc(datetime_convert()), - intval($r[0]['id']) - ); - delete_thread($r[0]['id'], $r[0]['parent-uri']); + if (!$r) + return false; + + // Only delete it if the author really fits + if (!link_compare($r[0]["author-link"], $person["url"])) { + logger("Item author ".$r[0]["author-link"]." doesn't fit to expected contact ".$person["url"], LOGGER_DEBUG); + return false; + } + + // Check if the sender is the thread owner + $p = q("SELECT `id`, `author-link`, `origin` FROM `item` WHERE `id` = %d", + intval($r[0]["parent"])); + + // Only delete it if the parent author really fits + if (!link_compare($p[0]["author-link"], $contact["url"]) AND !link_compare($r[0]["author-link"], $contact["url"])) { + logger("Thread author ".$p[0]["author-link"]." and item author ".$r[0]["author-link"]." don't fit to expected contact ".$contact["url"], LOGGER_DEBUG); + return false; + } + + // Currently we don't have a central deletion function that we could use in this case. The function "item_drop" doesn't work for that case + q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '' , `title` = '' WHERE `id` = %d", + dbesc(datetime_convert()), + dbesc(datetime_convert()), + intval($r[0]["id"]) + ); + delete_thread($r[0]["id"], $r[0]["parent-uri"]); + + logger("Deleted target ".$target_guid." (".$r[0]["id"].") from user ".$importer["uid"]." parent: ".$p[0]["id"], LOGGER_DEBUG); + + // Now check if the retraction needs to be relayed by us + if($p[0]["origin"]) { + + // Formerly we stored the signed text, the signature and the author in different fields. + // We now store the raw data so that we are more flexible. + q("INSERT INTO `sign` (`retract_iid`,`signed_text`) VALUES (%d,'%s')", + intval($r[0]["id"]), + dbesc(json_encode($data)) + ); + $s = q("select * from sign where retract_iid = %d", intval($r[0]["id"])); + logger("Stored signatur for item ".$r[0]["id"]." - ".print_r($s, true), LOGGER_DEBUG); + + // notify others + proc_run("php", "include/notifier.php", "drop", $r[0]["id"]); + } + } + + private function receive_retraction($importer, $sender, $data) { + $target_type = notags(unxmlify($data->target_type)); + + $contact = self::contact_by_handle($importer["uid"], $sender); + if (!$contact) { + logger("cannot find contact for sender: ".$sender." and user ".$importer["uid"]); + return false; + } + + logger("Got retraction for ".$target_type.", sender ".$sender." and user ".$importer["uid"], LOGGER_DEBUG); + + switch ($target_type) { + case "Comment": + case "Like": + case "Post": // "Post" will be supported in a future version + case "Reshare": + case "StatusMessage": + return self::item_retraction($importer, $contact, $data);; + + case "Person": + /// @todo What should we do with an "unshare"? + // Removing the contact isn't correct since we still can read the public items + //contact_remove($contact["id"]); + return true; + + default: + logger("Unknown target type ".$target_type); + return false; + } + return true; + } + + private function receive_status_message($importer, $data) { + + $raw_message = unxmlify($data->raw_message); + $guid = notags(unxmlify($data->guid)); + $author = notags(unxmlify($data->author)); + $public = notags(unxmlify($data->public)); + $created_at = notags(unxmlify($data->created_at)); + $provider_display_name = notags(unxmlify($data->provider_display_name)); + + /// @todo enable support for polls + //if ($data->poll) { + // foreach ($data->poll AS $poll) + // print_r($poll); + // die("poll!\n"); + //} + $contact = self::allowed_contact_by_handle($importer, $author, false); + if (!$contact) + return false; + + if (self::message_exists($importer["uid"], $guid)) + return false; + + $address = array(); + if ($data->location) + foreach ($data->location->children() AS $fieldname => $data) + $address[$fieldname] = notags(unxmlify($data)); + + $body = diaspora2bb($raw_message); + + $datarray = array(); + + if ($data->photo) { + foreach ($data->photo AS $photo) + $body = "[img]".$photo->remote_photo_path.$photo->remote_photo_name."[/img]\n".$body; + + $datarray["object-type"] = ACTIVITY_OBJ_PHOTO; + } else { + $datarray["object-type"] = ACTIVITY_OBJ_NOTE; + + // Add OEmbed and other information to the body + if (!self::is_redmatrix($contact["url"])) + $body = add_page_info_to_body($body, false, true); + } + + $datarray["uid"] = $importer["uid"]; + $datarray["contact-id"] = $contact["id"]; + $datarray["network"] = NETWORK_DIASPORA; + + $datarray["author-name"] = $contact["name"]; + $datarray["author-link"] = $contact["url"]; + $datarray["author-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]); + + $datarray["owner-name"] = $datarray["author-name"]; + $datarray["owner-link"] = $datarray["author-link"]; + $datarray["owner-avatar"] = $datarray["author-avatar"]; + + $datarray["guid"] = $guid; + $datarray["uri"] = $datarray["parent-uri"] = $author.":".$guid; + + $datarray["verb"] = ACTIVITY_POST; + $datarray["gravity"] = GRAVITY_PARENT; + + $datarray["object"] = json_encode($data); + + $datarray["body"] = $body; + + if ($provider_display_name != "") + $datarray["app"] = $provider_display_name; + + $datarray["plink"] = self::plink($author, $guid); + $datarray["private"] = (($public == "false") ? 1 : 0); + $datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert("UTC", "UTC", $created_at); + + if (isset($address["address"])) + $datarray["location"] = $address["address"]; + + if (isset($address["lat"]) AND isset($address["lng"])) + $datarray["coord"] = $address["lat"]." ".$address["lng"]; + + self::fetch_guid($datarray); + $message_id = item_store($datarray); + + if ($message_id) + logger("Stored item ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); + + return $message_id; + } + + /****************************************************************************************** + * Here are all the functions that are needed to transmit data with the Diaspora protocol * + ******************************************************************************************/ + + private function my_handle($me) { + if ($contact["addr"] != "") + return $contact["addr"]; + + // Normally we should have a filled "addr" field - but in the past this wasn't the case + // So - just in case - we build the the address here. + return $me["nickname"]."@".substr(App::get_baseurl(), strpos(App::get_baseurl(),"://") + 3); + } + + private function build_public_message($msg, $user, $contact, $prvkey, $pubkey) { + + logger("Message: ".$msg, LOGGER_DATA); + + $handle = self::my_handle($user); + + $b64url_data = base64url_encode($msg); + + $data = str_replace(array("\n", "\r", " ", "\t"), array("", "", "", ""), $b64url_data); + + $type = "application/xml"; + $encoding = "base64url"; + $alg = "RSA-SHA256"; + + $signable_data = $data.".".base64url_encode($type).".".base64url_encode($encoding).".".base64url_encode($alg); + + $signature = rsa_sign($signable_data,$prvkey); + $sig = base64url_encode($signature); + + $xmldata = array("diaspora" => array("header" => array("author_id" => $handle), + "me:env" => array("me:encoding" => "base64url", + "me:alg" => "RSA-SHA256", + "me:data" => $data, + "@attributes" => array("type" => "application/xml"), + "me:sig" => $sig))); + + $namespaces = array("" => "https://joindiaspora.com/protocol", + "me" => "http://salmon-protocol.org/ns/magic-env"); + + $magic_env = xml::from_array($xmldata, $xml, false, $namespaces); + + logger("magic_env: ".$magic_env, LOGGER_DATA); + return $magic_env; + } + + private function build_private_message($msg, $user, $contact, $prvkey, $pubkey) { + + logger("Message: ".$msg, LOGGER_DATA); + + // without a public key nothing will work + + if (!$pubkey) { + logger("pubkey missing: contact id: ".$contact["id"]); + return false; + } + + $inner_aes_key = random_string(32); + $b_inner_aes_key = base64_encode($inner_aes_key); + $inner_iv = random_string(16); + $b_inner_iv = base64_encode($inner_iv); + + $outer_aes_key = random_string(32); + $b_outer_aes_key = base64_encode($outer_aes_key); + $outer_iv = random_string(16); + $b_outer_iv = base64_encode($outer_iv); + + $handle = self::my_handle($user); + + $padded_data = pkcs5_pad($msg,16); + $inner_encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $inner_aes_key, $padded_data, MCRYPT_MODE_CBC, $inner_iv); + + $b64_data = base64_encode($inner_encrypted); + + + $b64url_data = base64url_encode($b64_data); + $data = str_replace(array("\n", "\r", " ", "\t"), array("", "", "", ""), $b64url_data); + + $type = "application/xml"; + $encoding = "base64url"; + $alg = "RSA-SHA256"; + + $signable_data = $data.".".base64url_encode($type).".".base64url_encode($encoding).".".base64url_encode($alg); + + $signature = rsa_sign($signable_data,$prvkey); + $sig = base64url_encode($signature); + + $xmldata = array("decrypted_header" => array("iv" => $b_inner_iv, + "aes_key" => $b_inner_aes_key, + "author_id" => $handle)); + + $decrypted_header = xml::from_array($xmldata, $xml, true); + $decrypted_header = pkcs5_pad($decrypted_header,16); + + $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $outer_aes_key, $decrypted_header, MCRYPT_MODE_CBC, $outer_iv); + + $outer_json = json_encode(array("iv" => $b_outer_iv, "key" => $b_outer_aes_key)); + + $encrypted_outer_key_bundle = ""; + openssl_public_encrypt($outer_json, $encrypted_outer_key_bundle, $pubkey); + + $b64_encrypted_outer_key_bundle = base64_encode($encrypted_outer_key_bundle); + + logger("outer_bundle: ".$b64_encrypted_outer_key_bundle." key: ".$pubkey, LOGGER_DATA); + + $encrypted_header_json_object = json_encode(array("aes_key" => base64_encode($encrypted_outer_key_bundle), + "ciphertext" => base64_encode($ciphertext))); + $cipher_json = base64_encode($encrypted_header_json_object); + + $xmldata = array("diaspora" => array("encrypted_header" => $cipher_json, + "me:env" => array("me:encoding" => "base64url", + "me:alg" => "RSA-SHA256", + "me:data" => $data, + "@attributes" => array("type" => "application/xml"), + "me:sig" => $sig))); + + $namespaces = array("" => "https://joindiaspora.com/protocol", + "me" => "http://salmon-protocol.org/ns/magic-env"); + + $magic_env = xml::from_array($xmldata, $xml, false, $namespaces); + + logger("magic_env: ".$magic_env, LOGGER_DATA); + return $magic_env; + } + + private function build_message($msg, $user, $contact, $prvkey, $pubkey, $public = false) { + + if ($public) + $magic_env = self::build_public_message($msg,$user,$contact,$prvkey,$pubkey); + else + $magic_env = self::build_private_message($msg,$user,$contact,$prvkey,$pubkey); + + // The data that will be transmitted is double encoded via "urlencode", strange ... + $slap = "xml=".urlencode(urlencode($magic_env)); + return $slap; + } + + private function signature($owner, $message) { + $sigmsg = $message; + unset($sigmsg["author_signature"]); + unset($sigmsg["parent_author_signature"]); + + $signed_text = implode(";", $sigmsg); + + return base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); + } + + public static function transmit($owner, $contact, $slap, $public_batch, $queue_run=false, $guid = "") { + + $a = get_app(); + + $enabled = intval(get_config("system", "diaspora_enabled")); + if(!$enabled) + return 200; + + $logid = random_string(4); + $dest_url = (($public_batch) ? $contact["batch"] : $contact["notify"]); + if (!$dest_url) { + logger("no url for contact: ".$contact["id"]." batch mode =".$public_batch); + return 0; + } + + logger("transmit: ".$logid."-".$guid." ".$dest_url); + + if (!$queue_run && was_recently_delayed($contact["id"])) { + $return_code = 0; + } else { + if (!intval(get_config("system", "diaspora_test"))) { + post_url($dest_url."/", $slap); + $return_code = $a->get_curl_code(); + } else { + logger("test_mode"); + return 200; } } - } - return 202; - // NOTREACHED -} + logger("transmit: ".$logid."-".$guid." returns: ".$return_code); -function diaspora_signed_retraction($importer,$xml,$msg) { + if(!$return_code || (($return_code == 503) && (stristr($a->get_curl_headers(), "retry-after")))) { + logger("queue message"); - - $guid = notags(unxmlify($xml->target_guid)); - $diaspora_handle = notags(unxmlify($xml->sender_handle)); - $type = notags(unxmlify($xml->target_type)); - $sig = notags(unxmlify($xml->target_author_signature)); - - $parent_author_signature = (($xml->parent_author_signature) ? notags(unxmlify($xml->parent_author_signature)) : ''); - - $contact = diaspora_get_contact_by_handle($importer['uid'],$diaspora_handle); - if(! $contact) { - logger('diaspora_signed_retraction: no contact ' . $diaspora_handle . ' for ' . $importer['uid']); - return; - } - - - $signed_data = $guid . ';' . $type ; - $key = $msg['key']; - - /* How Diaspora performs relayable_retraction signature checking: - - - If an item has been sent by the item author to the top-level post owner to relay on - to the rest of the contacts on the top-level post, the top-level post owner checks - the author_signature, then creates a parent_author_signature before relaying the item on - - If an item has been relayed on by the top-level post owner, the contacts who receive it - check only the parent_author_signature. Basically, they trust that the top-level post - owner has already verified the authenticity of anything he/she sends out - - In either case, the signature that get checked is the signature created by the person - who sent the salmon - */ - - if($parent_author_signature) { - - $parent_author_signature = base64_decode($parent_author_signature); - - if(! rsa_verify($signed_data,$parent_author_signature,$key,'sha256')) { - logger('diaspora_signed_retraction: top-level post owner verification failed'); - return; + $r = q("SELECT `id` FROM `queue` WHERE `cid` = %d AND `network` = '%s' AND `content` = '%s' AND `batch` = %d LIMIT 1", + intval($contact["id"]), + dbesc(NETWORK_DIASPORA), + dbesc($slap), + intval($public_batch) + ); + if($r) { + logger("add_to_queue ignored - identical item already in queue"); + } else { + // queue message for redelivery + add_to_queue($contact["id"], NETWORK_DIASPORA, $slap, $public_batch); + } } - } else { - - $sig_decode = base64_decode($sig); - - if(! rsa_verify($signed_data,$sig_decode,$key,'sha256')) { - logger('diaspora_signed_retraction: retraction owner verification failed.' . print_r($msg,true)); - return; - } + return(($return_code) ? $return_code : (-1)); } - if($type === 'StatusMessage' || $type === 'Comment' || $type === 'Like') { - $r = q("select * from item where guid = '%s' and uid = %d and not file like '%%[%%' limit 1", - dbesc($guid), - intval($importer['uid']) + + private function build_and_transmit($owner, $contact, $type, $message, $public_batch = false, $guid = "", $spool = false) { + + $data = array("XML" => array("post" => array($type => $message))); + + $msg = xml::from_array($data, $xml); + + logger('message: '.$msg, LOGGER_DATA); + logger('send guid '.$guid, LOGGER_DEBUG); + + $slap = self::build_message($msg, $owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch); + + if ($spool) { + add_to_queue($contact['id'], NETWORK_DIASPORA, $slap, $public_batch); + return true; + } else + $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $guid); + + logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); + + return $return_code; + } + + public static function send_share($owner,$contact) { + + $message = array("sender_handle" => self::my_handle($owner), + "recipient_handle" => $contact["addr"]); + + return self::build_and_transmit($owner, $contact, "request", $message); + } + + public static function send_unshare($owner,$contact) { + + $message = array("post_guid" => $owner["guid"], + "diaspora_handle" => self::my_handle($owner), + "type" => "Person"); + + return self::build_and_transmit($owner, $contact, "retraction", $message); + } + + public static function is_reshare($body) { + $body = trim($body); + + // Skip if it isn't a pure repeated messages + // Does it start with a share? + if (strpos($body, "[share") > 0) + return(false); + + // Does it end with a share? + if (strlen($body) > (strrpos($body, "[/share]") + 8)) + return(false); + + $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","$1",$body); + // Skip if there is no shared message in there + if ($body == $attributes) + return(false); + + $guid = ""; + preg_match("/guid='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $guid = $matches[1]; + + preg_match('/guid="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $guid = $matches[1]; + + if ($guid != "") { + $r = q("SELECT `contact-id` FROM `item` WHERE `guid` = '%s' AND `network` IN ('%s', '%s') LIMIT 1", + dbesc($guid), NETWORK_DFRN, NETWORK_DIASPORA); + if ($r) { + $ret= array(); + $ret["root_handle"] = self::handle_from_contact($r[0]["contact-id"]); + $ret["root_guid"] = $guid; + return($ret); + } + } + + $profile = ""; + preg_match("/profile='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + preg_match('/profile="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + $ret= array(); + + $ret["root_handle"] = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile); + if (($ret["root_handle"] == $profile) OR ($ret["root_handle"] == "")) + return(false); + + $link = ""; + preg_match("/link='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $link = $matches[1]; + + preg_match('/link="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $link = $matches[1]; + + $ret["root_guid"] = preg_replace("=https?://(.*)/posts/(.*)=ism", "$2", $link); + if (($ret["root_guid"] == $link) OR ($ret["root_guid"] == "")) + return(false); + return($ret); + } + + public static function send_status($item, $owner, $contact, $public_batch = false) { + + $myaddr = self::my_handle($owner); + + $public = (($item["private"]) ? "false" : "true"); + + $created = datetime_convert("UTC", "UTC", $item["created"], 'Y-m-d H:i:s \U\T\C'); + + // Detect a share element and do a reshare + if (!$item['private'] AND ($ret = self::is_reshare($item["body"]))) { + $message = array("root_diaspora_id" => $ret["root_handle"], + "root_guid" => $ret["root_guid"], + "guid" => $item["guid"], + "diaspora_handle" => $myaddr, + "public" => $public, + "created_at" => $created, + "provider_display_name" => $item["app"]); + + $type = "reshare"; + } else { + $title = $item["title"]; + $body = $item["body"]; + + // convert to markdown + $body = html_entity_decode(bb2diaspora($body)); + + // Adding the title + if(strlen($title)) + $body = "## ".html_entity_decode($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"; + } + } + + $location = array(); + + if ($item["location"] != "") + $location["address"] = $item["location"]; + + if ($item["coord"] != "") { + $coord = explode(" ", $item["coord"]); + $location["lat"] = $coord[0]; + $location["lng"] = $coord[1]; + } + + $message = array("raw_message" => $body, + "location" => $location, + "guid" => $item["guid"], + "diaspora_handle" => $myaddr, + "public" => $public, + "created_at" => $created, + "provider_display_name" => $item["app"]); + + if (count($location) == 0) + unset($message["location"]); + + $type = "status_message"; + } + + return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); + } + + private function construct_like($item, $owner) { + + $myaddr = self::my_handle($owner); + + $p = q("SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1", + dbesc($item["thr-parent"])); + if(!$p) + return false; + + $parent = $p[0]; + + $target_type = ($parent["uri"] === $parent["parent-uri"] ? "Post" : "Comment"); + $positive = "true"; + + return(array("positive" => $positive, + "guid" => $item["guid"], + "target_type" => $target_type, + "parent_guid" => $parent["guid"], + "author_signature" => $authorsig, + "diaspora_handle" => $myaddr)); + } + + private function construct_comment($item, $owner) { + + $myaddr = self::my_handle($owner); + + $p = q("SELECT `guid` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1", + intval($item["parent"]), + intval($item["parent"]) ); - if(count($r)) { - if(link_compare($r[0]['author-link'],$contact['url'])) { - q("update item set `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '' , `title` = '' where `id` = %d", - dbesc(datetime_convert()), - dbesc(datetime_convert()), - intval($r[0]['id']) - ); - delete_thread($r[0]['id'], $r[0]['parent-uri']); - // Now check if the retraction needs to be relayed by us - // - // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always - // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. - // The only item with `parent` and `id` as the parent id is the parent item. - $p = q("SELECT `origin` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1", - intval($r[0]['parent']), - intval($r[0]['parent']) - ); - if(count($p)) { - if($p[0]['origin']) { - q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", - $r[0]['id'], - dbesc($signed_data), - dbesc($sig), - dbesc($diaspora_handle) - ); + if (!$p) + return false; - // the existence of parent_author_signature would have meant the parent_author or owner - // is already relaying. - logger('diaspora_signed_retraction: relaying relayable_retraction'); + $parent = $p[0]; - proc_run('php','include/notifier.php','drop',$r[0]['id']); + $text = html_entity_decode(bb2diaspora($item["body"])); + + return(array("guid" => $item["guid"], + "parent_guid" => $parent["guid"], + "author_signature" => "", + "text" => $text, + "diaspora_handle" => $myaddr)); + } + + public static function send_followup($item,$owner,$contact,$public_batch = false) { + + if($item['verb'] === ACTIVITY_LIKE) { + $message = self::construct_like($item, $owner); + $type = "like"; + } else { + $message = self::construct_comment($item, $owner); + $type = "comment"; + } + + if (!$message) + return false; + + $message["author_signature"] = self::signature($owner, $message); + + return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); + } + + private function message_from_signatur($item, $signature) { + + // Split the signed text + $signed_parts = explode(";", $signature['signed_text']); + + if ($item["deleted"]) + $message = array("parent_author_signature" => "", + "target_guid" => $signed_parts[0], + "target_type" => $signed_parts[1], + "sender_handle" => $signature['signer'], + "target_author_signature" => $signature['signature']); + elseif ($item['verb'] === ACTIVITY_LIKE) + $message = array("positive" => $signed_parts[0], + "guid" => $signed_parts[1], + "target_type" => $signed_parts[2], + "parent_guid" => $signed_parts[3], + "parent_author_signature" => "", + "author_signature" => $signature['signature'], + "diaspora_handle" => $signed_parts[4]); + else { + // Remove the comment guid + $guid = array_shift($signed_parts); + + // Remove the parent guid + $parent_guid = array_shift($signed_parts); + + // Remove the handle + $handle = array_pop($signed_parts); + + // Glue the parts together + $text = implode(";", $signed_parts); + + $message = array("guid" => $guid, + "parent_guid" => $parent_guid, + "parent_author_signature" => "", + "author_signature" => $signature['signature'], + "text" => implode(";", $signed_parts), + "diaspora_handle" => $handle); + } + return $message; + } + + public static function send_relay($item, $owner, $contact, $public_batch = false) { + + if ($item["deleted"]) { + $sql_sign_id = "retract_iid"; + $type = "relayable_retraction"; + } elseif ($item['verb'] === ACTIVITY_LIKE) { + $sql_sign_id = "iid"; + $type = "like"; + } else { + $sql_sign_id = "iid"; + $type = "comment"; + } + + logger("Got relayable data ".$type." for item ".$item["guid"]." (".$item["id"].")", LOGGER_DEBUG); + + // fetch the original signature + + $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE `".$sql_sign_id."` = %d LIMIT 1", + intval($item["id"])); + + if (!$r) + return self::send_followup($item, $owner, $contact, $public_batch); + + $signature = $r[0]; + + // Old way - is used by the internal Friendica functions + /// @todo Change all signatur storing functions to the new format + if ($signature['signed_text'] AND $signature['signature'] AND $signature['signer']) + $message = self::message_from_signatur($item, $signature); + else {// New way + $msg = json_decode($signature['signed_text'], true); + + $message = array(); + foreach ($msg AS $field => $data) { + if (!$item["deleted"]) { + if ($field == "author") + $field = "diaspora_handle"; + if ($field == "parent_type") + $field = "target_type"; + } + + $message[$field] = $data; + } + } + + if ($item["deleted"]) { + $signed_text = $message["target_guid"].';'.$message["target_type"]; + $message["parent_author_signature"] = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); + } else + $message["parent_author_signature"] = self::signature($owner, $message); + + logger("Relayed data ".print_r($message, true), LOGGER_DEBUG); + + return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); + } + + public static function send_retraction($item, $owner, $contact, $public_batch = false) { + + $myaddr = self::my_handle($owner); + + // Check whether the retraction is for a top-level post or whether it's a relayable + if ($item["uri"] !== $item["parent-uri"]) { + $msg_type = "relayable_retraction"; + $target_type = (($item["verb"] === ACTIVITY_LIKE) ? "Like" : "Comment"); + } else { + $msg_type = "signed_retraction"; + $target_type = "StatusMessage"; + } + + $signed_text = $item["guid"].";".$target_type; + + $message = array("target_guid" => $item['guid'], + "target_type" => $target_type, + "sender_handle" => $myaddr, + "target_author_signature" => base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'))); + + return self::build_and_transmit($owner, $contact, $msg_type, $message, $public_batch, $item["guid"]); + } + + public static function send_mail($item, $owner, $contact) { + + $myaddr = self::my_handle($owner); + + $r = q("SELECT * FROM `conv` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($item["convid"]), + intval($item["uid"]) + ); + + if (!$r) { + logger("conversation not found."); + return; + } + $cnv = $r[0]; + + $conv = array( + "guid" => $cnv["guid"], + "subject" => $cnv["subject"], + "created_at" => datetime_convert("UTC", "UTC", $cnv['created'], 'Y-m-d H:i:s \U\T\C'), + "diaspora_handle" => $cnv["creator"], + "participant_handles" => $cnv["recips"] + ); + + $body = bb2diaspora($item["body"]); + $created = datetime_convert("UTC", "UTC", $item["created"], 'Y-m-d H:i:s \U\T\C'); + + $signed_text = $item["guid"].";".$cnv["guid"].";".$body.";".$created.";".$myaddr.";".$cnv['guid']; + $sig = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); + + $msg = array( + "guid" => $item["guid"], + "parent_guid" => $cnv["guid"], + "parent_author_signature" => $sig, + "author_signature" => $sig, + "text" => $body, + "created_at" => $created, + "diaspora_handle" => $myaddr, + "conversation_guid" => $cnv["guid"] + ); + + if ($item["reply"]) { + $message = $msg; + $type = "message"; + } else { + $message = array("guid" => $cnv["guid"], + "subject" => $cnv["subject"], + "created_at" => datetime_convert("UTC", "UTC", $cnv['created'], 'Y-m-d H:i:s \U\T\C'), + "message" => $msg, + "diaspora_handle" => $cnv["creator"], + "participant_handles" => $cnv["recips"]); + + $type = "conversation"; + } + + return self::build_and_transmit($owner, $contact, $type, $message, false, $item["guid"]); + } + + public static function send_profile($uid) { + + if (!$uid) + return; + + $recips = q("SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s' + AND `uid` = %d AND `rel` != %d", + dbesc(NETWORK_DIASPORA), + intval($uid), + intval(CONTACT_IS_SHARING) + ); + if (!$recips) + return; + + $r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.*, `user`.`prvkey` AS `uprvkey`, `contact`.`addr` + FROM `profile` + INNER JOIN `user` ON `profile`.`uid` = `user`.`uid` + INNER JOIN `contact` ON `profile`.`uid` = `contact`.`uid` + WHERE `user`.`uid` = %d AND `profile`.`is-default` AND `contact`.`self` LIMIT 1", + intval($uid) + ); + + if (!$r) + return; + + $profile = $r[0]; + + $handle = $profile["addr"]; + $first = ((strpos($profile['name'],' ') + ? trim(substr($profile['name'],0,strpos($profile['name'],' '))) : $profile['name'])); + $last = (($first === $profile['name']) ? '' : trim(substr($profile['name'], strlen($first)))); + $large = App::get_baseurl().'/photo/custom/300/'.$profile['uid'].'.jpg'; + $medium = App::get_baseurl().'/photo/custom/100/'.$profile['uid'].'.jpg'; + $small = App::get_baseurl().'/photo/custom/50/' .$profile['uid'].'.jpg'; + $searchable = (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false'); + + if ($searchable === 'true') { + $dob = '1000-00-00'; + + if (($profile['dob']) && ($profile['dob'] != '0000-00-00')) + $dob = ((intval($profile['dob'])) ? intval($profile['dob']) : '1000') .'-'. datetime_convert('UTC','UTC',$profile['dob'],'m-d'); + + $about = $profile['about']; + $about = strip_tags(bbcode($about)); + + $location = formatted_location($profile); + $tags = ''; + if ($profile['pub_keywords']) { + $kw = str_replace(',',' ',$profile['pub_keywords']); + $kw = str_replace(' ',' ',$kw); + $arr = explode(' ',$profile['pub_keywords']); + if (count($arr)) { + for($x = 0; $x < 5; $x ++) { + if (trim($arr[$x])) + $tags .= '#'. trim($arr[$x]) .' '; } } } + $tags = trim($tags); } - } - else - logger('diaspora_signed_retraction: unknown type: ' . $type); - return 202; - // NOTREACHED -} - -function diaspora_profile($importer,$xml,$msg) { - - $a = get_app(); - $diaspora_handle = notags(unxmlify($xml->diaspora_handle)); - - - if($diaspora_handle != $msg['author']) { - logger('diaspora_post: Potential forgery. Message handle is not the same as envelope sender.'); - return 202; - } - - $contact = diaspora_get_contact_by_handle($importer['uid'],$diaspora_handle); - if(! $contact) - return; - - //if($contact['blocked']) { - // logger('diaspora_post: Ignoring this author.'); - // return 202; - //} - - $name = unxmlify($xml->first_name) . ((strlen($xml->last_name)) ? ' ' . unxmlify($xml->last_name) : ''); - $image_url = unxmlify($xml->image_url); - $birthday = unxmlify($xml->birthday); - $location = diaspora2bb(unxmlify($xml->location)); - $about = diaspora2bb(unxmlify($xml->bio)); - $gender = unxmlify($xml->gender); - $searchable = (unxmlify($xml->searchable) == "true"); - $nsfw = (unxmlify($xml->nsfw) == "true"); - $tags = unxmlify($xml->tag_string); - - $tags = explode("#", $tags); - - $keywords = array(); - foreach ($tags as $tag) { - $tag = trim(strtolower($tag)); - if ($tag != "") - $keywords[] = $tag; - } - - $keywords = implode(", ", $keywords); - - $handle_parts = explode("@", $diaspora_handle); - $nick = $handle_parts[0]; - - if($name === '') { - $name = $handle_parts[0]; - } - - if( preg_match("|^https?://|", $image_url) === 0) { - $image_url = "http://" . $handle_parts[1] . $image_url; - } - -/* $r = q("SELECT DISTINCT ( `resource-id` ) FROM `photo` WHERE `uid` = %d AND `contact-id` = %d AND `album` = 'Contact Photos' ", - intval($importer['uid']), - intval($contact['id']) - ); - $oldphotos = ((count($r)) ? $r : null);*/ - - require_once('include/Photo.php'); - - update_contact_avatar($image_url,$importer['uid'],$contact['id']); - - // Generic birthday. We don't know the timezone. The year is irrelevant. - - $birthday = str_replace('1000','1901',$birthday); - - if ($birthday != "") - $birthday = datetime_convert('UTC','UTC',$birthday,'Y-m-d'); - - // this is to prevent multiple birthday notifications in a single year - // if we already have a stored birthday and the 'm-d' part hasn't changed, preserve the entry, which will preserve the notify year - - if(substr($birthday,5) === substr($contact['bd'],5)) - $birthday = $contact['bd']; - - /// @TODO Update name on item['author-name'] if the name changed. See consume_feed() - /// (Not doing this currently because D* protocol is scheduled for revision soon). - - $r = q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `addr` = '%s', `name-date` = '%s', `bd` = '%s', - `location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `id` = %d AND `uid` = %d", - dbesc($name), - dbesc($nick), - dbesc($diaspora_handle), - dbesc(datetime_convert()), - dbesc($birthday), - dbesc($location), - dbesc($about), - dbesc($keywords), - dbesc($gender), - intval($contact['id']), - intval($importer['uid']) - ); - - if ($searchable) { - require_once('include/socgraph.php'); - poco_check($contact['url'], $name, NETWORK_DIASPORA, $image_url, $about, $location, $gender, $keywords, "", - datetime_convert(), 2, $contact['id'], $importer['uid']); - } - - update_gcontact(array("url" => $contact['url'], "network" => NETWORK_DIASPORA, "generation" => 2, - "photo" => $image_url, "name" => $name, "location" => $location, - "about" => $about, "birthday" => $birthday, "gender" => $gender, - "addr" => $diaspora_handle, "nick" => $nick, "keywords" => $keywords, - "hide" => !$searchable, "nsfw" => $nsfw)); - -/* if($r) { - if($oldphotos) { - foreach($oldphotos as $ph) { - q("DELETE FROM `photo` WHERE `uid` = %d AND `contact-id` = %d AND `album` = 'Contact Photos' AND `resource-id` = '%s' ", - intval($importer['uid']), - intval($contact['id']), - dbesc($ph['resource-id']) - ); - } - } - } */ - - return; - -} - -function diaspora_share($me,$contact) { - $a = get_app(); - $myaddr = $me['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); - $theiraddr = $contact['addr']; - - $tpl = get_markup_template('diaspora_share.tpl'); - $msg = replace_macros($tpl, array( - '$sender' => $myaddr, - '$recipient' => $theiraddr - )); - - $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey']))); - //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey'])); - - return(diaspora_transmit($owner,$contact,$slap, false)); -} - -function diaspora_unshare($me,$contact) { - - $a = get_app(); - $myaddr = $me['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); - - $tpl = get_markup_template('diaspora_retract.tpl'); - $msg = replace_macros($tpl, array( - '$guid' => $me['guid'], - '$type' => 'Person', - '$handle' => $myaddr - )); - - $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey']))); - //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey'])); - - return(diaspora_transmit($owner,$contact,$slap, false)); - -} - - -function diaspora_send_status($item,$owner,$contact,$public_batch = false) { - - $a = get_app(); - $myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); - $theiraddr = $contact['addr']; - - $images = array(); - - $title = $item['title']; - $body = $item['body']; - -/* - // We're trying to match Diaspora's split message/photo protocol but - // all the photos are displayed on D* as links and not img's - even - // though we're sending pretty much precisely what they send us when - // doing the same operation. - // Commented out for now, we'll use bb2diaspora to convert photos to markdown - // which seems to get through intact. - - $cnt = preg_match_all('|\[img\](.*?)\[\/img\]|',$body,$matches,PREG_SET_ORDER); - if($cnt) { - foreach($matches as $mtch) { - $detail = array(); - $detail['str'] = $mtch[0]; - $detail['path'] = dirname($mtch[1]) . '/'; - $detail['file'] = basename($mtch[1]); - $detail['guid'] = $item['guid']; - $detail['handle'] = $myaddr; - $images[] = $detail; - $body = str_replace($detail['str'],$mtch[1],$body); - } - } -*/ - - //if(strlen($title)) - // $body = "[b]".html_entity_decode($title)."[/b]\n\n".$body; - - // convert to markdown - $body = xmlify(html_entity_decode(bb2diaspora($body))); - //$body = bb2diaspora($body); - - // Adding the title - if(strlen($title)) - $body = "## ".html_entity_decode($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"; - } - } - } - - - $public = (($item['private']) ? 'false' : 'true'); - - require_once('include/datetime.php'); - $created = datetime_convert('UTC','UTC',$item['created'],'Y-m-d H:i:s \U\T\C'); - - // Detect a share element and do a reshare - // see: https://github.com/Raven24/diaspora-federation/blob/master/lib/diaspora-federation/entities/reshare.rb - if (!$item['private'] AND ($ret = diaspora_is_reshare($item["body"]))) { - $tpl = get_markup_template('diaspora_reshare.tpl'); - $msg = replace_macros($tpl, array( - '$root_handle' => xmlify($ret['root_handle']), - '$root_guid' => $ret['root_guid'], - '$guid' => $item['guid'], - '$handle' => xmlify($myaddr), - '$public' => $public, - '$created' => $created, - '$provider' => $item["app"] - )); - } else { - $tpl = get_markup_template('diaspora_post.tpl'); - $msg = replace_macros($tpl, array( - '$body' => $body, - '$guid' => $item['guid'], - '$handle' => xmlify($myaddr), - '$public' => $public, - '$created' => $created, - '$provider' => $item["app"] - )); - } - - logger('diaspora_send_status: '.$owner['username'].' -> '.$contact['name'].' base message: '.$msg, LOGGER_DATA); - logger('send guid '.$item['guid'], LOGGER_DEBUG); - - $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch))); - //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)); - - $return_code = diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid']); - - logger('diaspora_send_status: guid: '.$item['guid'].' result '.$return_code, LOGGER_DEBUG); - - if(count($images)) { - diaspora_send_images($item,$owner,$contact,$images,$public_batch); - } - - return $return_code; -} - -function diaspora_is_reshare($body) { - $body = trim($body); - - // Skip if it isn't a pure repeated messages - // Does it start with a share? - if (strpos($body, "[share") > 0) - return(false); - - // Does it end with a share? - if (strlen($body) > (strrpos($body, "[/share]") + 8)) - return(false); - - $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","$1",$body); - // Skip if there is no shared message in there - if ($body == $attributes) - return(false); - - $guid = ""; - preg_match("/guid='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $guid = $matches[1]; - - preg_match('/guid="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $guid = $matches[1]; - - if ($guid != "") { - $r = q("SELECT `contact-id` FROM `item` WHERE `guid` = '%s' AND `network` IN ('%s', '%s') LIMIT 1", - dbesc($guid), NETWORK_DFRN, NETWORK_DIASPORA); - if ($r) { - $ret= array(); - $ret["root_handle"] = diaspora_handle_from_contact($r[0]["contact-id"]); - $ret["root_guid"] = $guid; - return($ret); - } - } - - $profile = ""; - preg_match("/profile='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $profile = $matches[1]; - - preg_match('/profile="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $profile = $matches[1]; - - $ret= array(); - - $ret["root_handle"] = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile); - if (($ret["root_handle"] == $profile) OR ($ret["root_handle"] == "")) - return(false); - - $link = ""; - preg_match("/link='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $link = $matches[1]; - - preg_match('/link="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $link = $matches[1]; - - $ret["root_guid"] = preg_replace("=https?://(.*)/posts/(.*)=ism", "$2", $link); - if (($ret["root_guid"] == $link) OR ($ret["root_guid"] == "")) - return(false); - - return($ret); -} - -function diaspora_send_images($item,$owner,$contact,$images,$public_batch = false) { - $a = get_app(); - if(! count($images)) - return; - $mysite = substr($a->get_baseurl(),strpos($a->get_baseurl(),'://') + 3) . '/photo'; - - $tpl = get_markup_template('diaspora_photo.tpl'); - foreach($images as $image) { - if(! stristr($image['path'],$mysite)) - continue; - $resource = str_replace('.jpg','',$image['file']); - $resource = substr($resource,0,strpos($resource,'-')); - - $r = q("select * from photo where `resource-id` = '%s' and `uid` = %d limit 1", - dbesc($resource), - intval($owner['uid']) - ); - if(! count($r)) - continue; - $public = (($r[0]['allow_cid'] || $r[0]['allow_gid'] || $r[0]['deny_cid'] || $r[0]['deny_gid']) ? 'false' : 'true' ); - $msg = replace_macros($tpl,array( - '$path' => xmlify($image['path']), - '$filename' => xmlify($image['file']), - '$msg_guid' => xmlify($image['guid']), - '$guid' => xmlify($r[0]['guid']), - '$handle' => xmlify($image['handle']), - '$public' => xmlify($public), - '$created_at' => xmlify(datetime_convert('UTC','UTC',$r[0]['created'],'Y-m-d H:i:s \U\T\C')) - )); - - - logger('diaspora_send_photo: base message: ' . $msg, LOGGER_DATA); - logger('send guid '.$r[0]['guid'], LOGGER_DEBUG); - - $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch))); - //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)); - - diaspora_transmit($owner,$contact,$slap,$public_batch,false,$r[0]['guid']); - } - -} - -function diaspora_send_followup($item,$owner,$contact,$public_batch = false) { - - $a = get_app(); - $myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); -// $theiraddr = $contact['addr']; - - // Diaspora doesn't support threaded comments, but some - // versions of Diaspora (i.e. Diaspora-pistos) support - // likes on comments - if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) { - $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1", - dbesc($item['thr-parent']) - ); - } - else { - // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always - // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. - // The only item with `parent` and `id` as the parent id is the parent item. - $p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1", - intval($item['parent']), - intval($item['parent']) - ); - } - if(count($p)) - $parent = $p[0]; - else - return; - - if($item['verb'] === ACTIVITY_LIKE) { - $tpl = get_markup_template('diaspora_like.tpl'); - $like = true; - $target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment'); -// $target_type = (strpos($parent['type'], 'comment') ? 'Comment' : 'Post'); -// $positive = (($item['deleted']) ? 'false' : 'true'); - $positive = 'true'; - - if(($item['deleted'])) - logger('diaspora_send_followup: received deleted "like". Those should go to diaspora_send_retraction'); - } - else { - $tpl = get_markup_template('diaspora_comment.tpl'); - $like = false; - } - - $text = html_entity_decode(bb2diaspora($item['body'])); - - // sign it - - if($like) - $signed_text = $positive . ';' . $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $myaddr; - else - $signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $myaddr; - - $authorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); - - $msg = replace_macros($tpl,array( - '$guid' => xmlify($item['guid']), - '$parent_guid' => xmlify($parent['guid']), - '$target_type' =>xmlify($target_type), - '$authorsig' => xmlify($authorsig), - '$body' => xmlify($text), - '$positive' => xmlify($positive), - '$handle' => xmlify($myaddr) - )); - - logger('diaspora_followup: base message: ' . $msg, LOGGER_DATA); - logger('send guid '.$item['guid'], LOGGER_DEBUG); - - $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch))); - //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)); - - return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid'])); -} - - -function diaspora_send_relay($item,$owner,$contact,$public_batch = false) { - - - $a = get_app(); - $myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); -// $theiraddr = $contact['addr']; - - // Diaspora doesn't support threaded comments, but some - // versions of Diaspora (i.e. Diaspora-pistos) support - // likes on comments - if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) { - $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1", - dbesc($item['thr-parent']) - ); - } - else { - // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always - // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. - // The only item with `parent` and `id` as the parent id is the parent item. - $p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1", - intval($item['parent']), - intval($item['parent']) - ); - } - if(count($p)) - $parent = $p[0]; - else - return; - - $like = false; - $relay_retract = false; - $sql_sign_id = 'iid'; - if( $item['deleted']) { - $relay_retract = true; - - $target_type = ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment'); - - $sql_sign_id = 'retract_iid'; - $tpl = get_markup_template('diaspora_relayable_retraction.tpl'); - } - elseif($item['verb'] === ACTIVITY_LIKE) { - $like = true; - - $target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment'); -// $positive = (($item['deleted']) ? 'false' : 'true'); - $positive = 'true'; - - $tpl = get_markup_template('diaspora_like_relay.tpl'); - } - else { // item is a comment - $tpl = get_markup_template('diaspora_comment_relay.tpl'); - } - - - // fetch the original signature if the relayable was created by a Diaspora - // or DFRN user. Relayables for other networks are not supported. - - $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE " . $sql_sign_id . " = %d LIMIT 1", - intval($item['id']) - ); - if(count($r)) { - $orig_sign = $r[0]; - $signed_text = $orig_sign['signed_text']; - $authorsig = $orig_sign['signature']; - $handle = $orig_sign['signer']; - - // Split the signed text - $signed_parts = explode(";", $signed_text); - - // Remove the parent guid - array_shift($signed_parts); - - // Remove the comment guid - array_shift($signed_parts); - - // Remove the handle - array_pop($signed_parts); - - // Glue the parts together - $text = implode(";", $signed_parts); - } - else { - // This part is meant for cases where we don't have the signatur. (Which shouldn't happen with posts from Diaspora and Friendica) - // This means that the comment won't be accepted by newer Diaspora servers - - $body = $item['body']; - $text = html_entity_decode(bb2diaspora($body)); - - $handle = diaspora_handle_from_contact($item['contact-id']); - if(! $handle) - return; - - if($relay_retract) - $signed_text = $item['guid'] . ';' . $target_type; - elseif($like) - $signed_text = $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $positive . ';' . $handle; - else - $signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $handle; - - $authorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); - } - - // Sign the relayable with the top-level owner's signature - $parentauthorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); - - $msg = replace_macros($tpl,array( - '$guid' => xmlify($item['guid']), - '$parent_guid' => xmlify($parent['guid']), - '$target_type' =>xmlify($target_type), - '$authorsig' => xmlify($authorsig), - '$parentsig' => xmlify($parentauthorsig), - '$body' => xmlify($text), - '$positive' => xmlify($positive), - '$handle' => xmlify($handle) - )); - - logger('diaspora_send_relay: base message: ' . $msg, LOGGER_DATA); - logger('send guid '.$item['guid'], LOGGER_DEBUG); - - $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch))); - //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)); - - return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid'])); - -} - - - -function diaspora_send_retraction($item,$owner,$contact,$public_batch = false) { - - $a = get_app(); - $myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); - - // Check whether the retraction is for a top-level post or whether it's a relayable - if( $item['uri'] !== $item['parent-uri'] ) { - - $tpl = get_markup_template('diaspora_relay_retraction.tpl'); - $target_type = (($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment'); - } - else { - - $tpl = get_markup_template('diaspora_signed_retract.tpl'); - $target_type = 'StatusMessage'; - } - - $signed_text = $item['guid'] . ';' . $target_type; - - $msg = replace_macros($tpl, array( - '$guid' => xmlify($item['guid']), - '$type' => xmlify($target_type), - '$handle' => xmlify($myaddr), - '$signature' => xmlify(base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'))) - )); - - logger('send guid '.$item['guid'], LOGGER_DEBUG); - - $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch))); - //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)); - - return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid'])); -} - -function diaspora_send_mail($item,$owner,$contact) { - - $a = get_app(); - $myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); - - $r = q("select * from conv where id = %d and uid = %d limit 1", - intval($item['convid']), - intval($item['uid']) - ); - - if(! count($r)) { - logger('diaspora_send_mail: conversation not found.'); - return; - } - $cnv = $r[0]; - - $conv = array( - 'guid' => xmlify($cnv['guid']), - 'subject' => xmlify($cnv['subject']), - 'created_at' => xmlify(datetime_convert('UTC','UTC',$cnv['created'],'Y-m-d H:i:s \U\T\C')), - 'diaspora_handle' => xmlify($cnv['creator']), - 'participant_handles' => xmlify($cnv['recips']) - ); - - $body = bb2diaspora($item['body']); - $created = datetime_convert('UTC','UTC',$item['created'],'Y-m-d H:i:s \U\T\C'); - - $signed_text = $item['guid'] . ';' . $cnv['guid'] . ';' . $body . ';' - . $created . ';' . $myaddr . ';' . $cnv['guid']; - - $sig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); - - $msg = array( - 'guid' => xmlify($item['guid']), - 'parent_guid' => xmlify($cnv['guid']), - 'parent_author_signature' => xmlify($sig), - 'author_signature' => xmlify($sig), - 'text' => xmlify($body), - 'created_at' => xmlify($created), - 'diaspora_handle' => xmlify($myaddr), - 'conversation_guid' => xmlify($cnv['guid']) - ); - - if($item['reply']) { - $tpl = get_markup_template('diaspora_message.tpl'); - $xmsg = replace_macros($tpl, array('$msg' => $msg)); - } - else { - $conv['messages'] = array($msg); - $tpl = get_markup_template('diaspora_conversation.tpl'); - $xmsg = replace_macros($tpl, array('$conv' => $conv)); - } - - logger('diaspora_conversation: ' . print_r($xmsg,true), LOGGER_DATA); - logger('send guid '.$item['guid'], LOGGER_DEBUG); - - $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],false))); - //$slap = 'xml=' . urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],false)); - - return(diaspora_transmit($owner,$contact,$slap,false,false,$item['guid'])); - - -} - -function diaspora_transmit($owner,$contact,$slap,$public_batch,$queue_run=false,$guid = "") { - - $enabled = intval(get_config('system','diaspora_enabled')); - if(! $enabled) { - return 200; - } - - $a = get_app(); - $logid = random_string(4); - $dest_url = (($public_batch) ? $contact['batch'] : $contact['notify']); - if(! $dest_url) { - logger('diaspora_transmit: no url for contact: ' . $contact['id'] . ' batch mode =' . $public_batch); - return 0; - } - - logger('diaspora_transmit: '.$logid.'-'.$guid.' '.$dest_url); - - if( (! $queue_run) && (was_recently_delayed($contact['id'])) ) { - $return_code = 0; - } - else { - if (!intval(get_config('system','diaspora_test'))) { - post_url($dest_url . '/', $slap); - $return_code = $a->get_curl_code(); - } else { - logger('diaspora_transmit: test_mode'); - return 200; - } - } - - logger('diaspora_transmit: '.$logid.'-'.$guid.' returns: '.$return_code); - - if((! $return_code) || (($return_code == 503) && (stristr($a->get_curl_headers(),'retry-after')))) { - logger('diaspora_transmit: queue message'); - - $r = q("SELECT id from queue where cid = %d and network = '%s' and content = '%s' and batch = %d limit 1", - intval($contact['id']), - dbesc(NETWORK_DIASPORA), - dbesc($slap), - intval($public_batch) - ); - if(count($r)) { - logger('diaspora_transmit: add_to_queue ignored - identical item already in queue'); - } - else { - // queue message for redelivery - add_to_queue($contact['id'],NETWORK_DIASPORA,$slap,$public_batch); - } - } - - - return(($return_code) ? $return_code : (-1)); -} - -function diaspora_fetch_relay() { - - $serverdata = get_config("system", "relay_server"); - if ($serverdata == "") - return array(); - - $relay = array(); - - $servers = explode(",", $serverdata); - - foreach($servers AS $server) { - $server = trim($server); - $batch = $server."/receive/public"; - - $relais = q("SELECT `batch`, `id`, `name`,`network` FROM `contact` WHERE `uid` = 0 AND `batch` = '%s' LIMIT 1", dbesc($batch)); - - if (!$relais) { - $addr = "relay@".str_replace("http://", "", normalise_link($server)); - - $r = q("INSERT INTO `contact` (`uid`, `created`, `name`, `nick`, `addr`, `url`, `nurl`, `batch`, `network`, `rel`, `blocked`, `pending`, `writable`, `name-date`, `uri-date`, `avatar-date`) - VALUES (0, '%s', '%s', 'relay', '%s', '%s', '%s', '%s', '%s', %d, 0, 0, 1, '%s', '%s', '%s')", - datetime_convert(), - dbesc($addr), - dbesc($addr), - dbesc($server), - dbesc(normalise_link($server)), - dbesc($batch), - dbesc(NETWORK_DIASPORA), - intval(CONTACT_IS_FOLLOWER), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - dbesc(datetime_convert()) - ); - - $relais = q("SELECT `batch`, `id`, `name`,`network` FROM `contact` WHERE `uid` = 0 AND `batch` = '%s' LIMIT 1", dbesc($batch)); - if ($relais) - $relay[] = $relais[0]; - } else - $relay[] = $relais[0]; - } - - return $relay; + $message = array("diaspora_handle" => $handle, + "first_name" => $first, + "last_name" => $last, + "image_url" => $large, + "image_url_medium" => $medium, + "image_url_small" => $small, + "birthday" => $dob, + "gender" => $profile['gender'], + "bio" => $about, + "location" => $location, + "searchable" => $searchable, + "tag_string" => $tags); + + foreach($recips as $recip) + self::build_and_transmit($profile, $recip, "profile", $message, false, "", true); + } } +?> diff --git a/include/diaspora2.php b/include/diaspora2.php deleted file mode 100644 index 75cedeccd1..0000000000 --- a/include/diaspora2.php +++ /dev/null @@ -1,2553 +0,0 @@ - decoded Diaspora XML message - * 'author' -> author diaspora handle - * 'key' -> author public key (converted to pkcs#8) - */ - function decode($importer, $xml) { - - $public = false; - $basedom = parse_xml_string($xml); - - if (!is_object($basedom)) - return false; - - $children = $basedom->children('https://joindiaspora.com/protocol'); - - if($children->header) { - $public = true; - $author_link = str_replace('acct:','',$children->header->author_id); - } else { - - $encrypted_header = json_decode(base64_decode($children->encrypted_header)); - - $encrypted_aes_key_bundle = base64_decode($encrypted_header->aes_key); - $ciphertext = base64_decode($encrypted_header->ciphertext); - - $outer_key_bundle = ''; - openssl_private_decrypt($encrypted_aes_key_bundle,$outer_key_bundle,$importer['prvkey']); - - $j_outer_key_bundle = json_decode($outer_key_bundle); - - $outer_iv = base64_decode($j_outer_key_bundle->iv); - $outer_key = base64_decode($j_outer_key_bundle->key); - - $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $outer_key, $ciphertext, MCRYPT_MODE_CBC, $outer_iv); - - - $decrypted = pkcs5_unpad($decrypted); - - /** - * $decrypted now contains something like - * - * - * 8e+G2+ET8l5BPuW0sVTnQw== - * UvSMb4puPeB14STkcDWq+4QE302Edu15oaprAQSkLKU= - * galaxor@diaspora.priateship.org - * - */ - - logger('decrypted: '.$decrypted, LOGGER_DEBUG); - $idom = parse_xml_string($decrypted,false); - - $inner_iv = base64_decode($idom->iv); - $inner_aes_key = base64_decode($idom->aes_key); - - $author_link = str_replace('acct:','',$idom->author_id); - } - - $dom = $basedom->children(NAMESPACE_SALMON_ME); - - // figure out where in the DOM tree our data is hiding - - if($dom->provenance->data) - $base = $dom->provenance; - elseif($dom->env->data) - $base = $dom->env; - elseif($dom->data) - $base = $dom; - - if (!$base) { - logger('unable to locate salmon data in xml'); - http_status_exit(400); - } - - - // Stash the signature away for now. We have to find their key or it won't be good for anything. - $signature = base64url_decode($base->sig); - - // unpack the data - - // strip whitespace so our data element will return to one big base64 blob - $data = str_replace(array(" ","\t","\r","\n"),array("","","",""),$base->data); - - - // stash away some other stuff for later - - $type = $base->data[0]->attributes()->type[0]; - $keyhash = $base->sig[0]->attributes()->keyhash[0]; - $encoding = $base->encoding; - $alg = $base->alg; - - - $signed_data = $data.'.'.base64url_encode($type).'.'.base64url_encode($encoding).'.'.base64url_encode($alg); - - - // decode the data - $data = base64url_decode($data); - - - if($public) - $inner_decrypted = $data; - else { - - // Decode the encrypted blob - - $inner_encrypted = base64_decode($data); - $inner_decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $inner_aes_key, $inner_encrypted, MCRYPT_MODE_CBC, $inner_iv); - $inner_decrypted = pkcs5_unpad($inner_decrypted); - } - - if (!$author_link) { - logger('Could not retrieve author URI.'); - http_status_exit(400); - } - // Once we have the author URI, go to the web and try to find their public key - // (first this will look it up locally if it is in the fcontact cache) - // This will also convert diaspora public key from pkcs#1 to pkcs#8 - - logger('Fetching key for '.$author_link); - $key = self::key($author_link); - - if (!$key) { - logger('Could not retrieve author key.'); - http_status_exit(400); - } - - $verify = rsa_verify($signed_data,$signature,$key); - - if (!$verify) { - logger('Message did not verify. Discarding.'); - http_status_exit(400); - } - - logger('Message verified.'); - - return array('message' => $inner_decrypted, 'author' => $author_link, 'key' => $key); - - } - - - /** - * @brief Dispatches public messages and find the fitting receivers - * - * @param array $msg The post that will be dispatched - * - * @return bool Was the message accepted? - */ - public static function dispatch_public($msg) { - - $enabled = intval(get_config("system", "diaspora_enabled")); - if (!$enabled) { - logger("diaspora is disabled"); - return false; - } - - // Use a dummy importer to import the data for the public copy - $importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE); - $item_id = self::dispatch($importer,$msg); - - // Now distribute it to the followers - $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN - (SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s') - AND NOT `account_expired` AND NOT `account_removed`", - dbesc(NETWORK_DIASPORA), - dbesc($msg["author"]) - ); - if($r) { - foreach($r as $rr) { - logger("delivering to: ".$rr["username"]); - self::dispatch($rr,$msg); - } - } else - logger("No subscribers for ".$msg["author"]." ".print_r($msg, true)); - - return $item_id; - } - - /** - * @brief Dispatches the different message types to the different functions - * - * @param array $importer Array of the importer user - * @param array $msg The post that will be dispatched - * - * @return bool Was the message accepted? - */ - public static function dispatch($importer, $msg) { - - // The sender is the handle of the contact that sent the message. - // This will often be different with relayed messages (for example "like" and "comment") - $sender = $msg["author"]; - - if (!diaspora::valid_posting($msg, $fields)) { - logger("Invalid posting"); - return false; - } - - $type = $fields->getName(); - - logger("Received message type ".$type." from ".$sender." for user ".$importer["uid"], LOGGER_DEBUG); - - switch ($type) { - case "account_deletion": - return self::receive_account_deletion($importer, $fields); - - case "comment": - return self::receive_comment($importer, $sender, $fields); - - case "conversation": - return self::receive_conversation($importer, $msg, $fields); - - case "like": - return self::receive_like($importer, $sender, $fields); - - case "message": - return self::receive_message($importer, $fields); - - case "participation": // Not implemented - return self::receive_participation($importer, $fields); - - case "photo": // Not implemented - return self::receive_photo($importer, $fields); - - case "poll_participation": // Not implemented - return self::receive_poll_participation($importer, $fields); - - case "profile": - return self::receive_profile($importer, $fields); - - case "request": - return self::receive_request($importer, $fields); - - case "reshare": - return self::receive_reshare($importer, $fields); - - case "retraction": - return self::receive_retraction($importer, $sender, $fields); - - case "status_message": - return self::receive_status_message($importer, $fields); - - default: - logger("Unknown message type ".$type); - return false; - } - - return true; - } - - /** - * @brief Checks if a posting is valid and fetches the data fields. - * - * This function does not only check the signature. - * It also does the conversion between the old and the new diaspora format. - * - * @param array $msg Array with the XML, the sender handle and the sender signature - * @param object $fields SimpleXML object that contains the posting when it is valid - * - * @return bool Is the posting valid? - */ - private function valid_posting($msg, &$fields) { - - $data = parse_xml_string($msg["message"], false); - - if (!is_object($data)) - return false; - - $first_child = $data->getName(); - - // Is this the new or the old version? - if ($data->getName() == "XML") { - $oldXML = true; - foreach ($data->post->children() as $child) - $element = $child; - } else { - $oldXML = false; - $element = $data; - } - - $type = $element->getName(); - $orig_type = $type; - - // All retractions are handled identically from now on. - // In the new version there will only be "retraction". - if (in_array($type, array("signed_retraction", "relayable_retraction"))) - $type = "retraction"; - - $fields = new SimpleXMLElement("<".$type."/>"); - - $signed_data = ""; - - foreach ($element->children() AS $fieldname => $entry) { - if ($oldXML) { - // Translation for the old XML structure - if ($fieldname == "diaspora_handle") - $fieldname = "author"; - - if ($fieldname == "participant_handles") - $fieldname = "participants"; - - if (in_array($type, array("like", "participation"))) { - if ($fieldname == "target_type") - $fieldname = "parent_type"; - } - - if ($fieldname == "sender_handle") - $fieldname = "author"; - - if ($fieldname == "recipient_handle") - $fieldname = "recipient"; - - if ($fieldname == "root_diaspora_id") - $fieldname = "root_author"; - - if ($type == "retraction") { - if ($fieldname == "post_guid") - $fieldname = "target_guid"; - - if ($fieldname == "type") - $fieldname = "target_type"; - } - } - - if ($fieldname == "author_signature") - $author_signature = base64_decode($entry); - elseif ($fieldname == "parent_author_signature") - $parent_author_signature = base64_decode($entry); - elseif ($fieldname != "target_author_signature") { - if ($signed_data != "") { - $signed_data .= ";"; - $signed_data_parent .= ";"; - } - - $signed_data .= $entry; - } - if (!in_array($fieldname, array("parent_author_signature", "target_author_signature")) OR - ($orig_type == "relayable_retraction")) - xml::copy($entry, $fields, $fieldname); - } - - // This is something that shouldn't happen at all. - if (in_array($type, array("status_message", "reshare", "profile"))) - if ($msg["author"] != $fields->author) { - logger("Message handle is not the same as envelope sender. Quitting this message."); - return false; - } - - // Only some message types have signatures. So we quit here for the other types. - if (!in_array($type, array("comment", "message", "like"))) - return true; - - // No author_signature? This is a must, so we quit. - if (!isset($author_signature)) - return false; - - if (isset($parent_author_signature)) { - $key = self::key($msg["author"]); - - if (!rsa_verify($signed_data, $parent_author_signature, $key, "sha256")) - return false; - } - - $key = self::key($fields->author); - - return rsa_verify($signed_data, $author_signature, $key, "sha256"); - } - - /** - * @brief Fetches the public key for a given handle - * - * @param string $handle The handle - * - * @return string The public key - */ - private function key($handle) { - $handle = strval($handle); - - logger("Fetching diaspora key for: ".$handle); - - $r = self::person_by_handle($handle); - if($r) - return $r["pubkey"]; - - return ""; - } - - /** - * @brief Fetches data for a given handle - * - * @param string $handle The handle - * - * @return array the queried data - */ - private function person_by_handle($handle) { - - $r = q("SELECT * FROM `fcontact` WHERE `network` = '%s' AND `addr` = '%s' LIMIT 1", - dbesc(NETWORK_DIASPORA), - dbesc($handle) - ); - if ($r) { - $person = $r[0]; - logger("In cache ".print_r($r,true), LOGGER_DEBUG); - - // update record occasionally so it doesn't get stale - $d = strtotime($person["updated"]." +00:00"); - if ($d < strtotime("now - 14 days")) - $update = true; - } - - if (!$person OR $update) { - logger("create or refresh", LOGGER_DEBUG); - $r = probe_url($handle, PROBE_DIASPORA); - - // Note that Friendica contacts will return a "Diaspora person" - // if Diaspora connectivity is enabled on their server - if ($r AND ($r["network"] === NETWORK_DIASPORA)) { - self::add_fcontact($r, $update); - $person = $r; - } - } - return $person; - } - - /** - * @brief Updates the fcontact table - * - * @param array $arr The fcontact data - * @param bool $update Update or insert? - * - * @return string The id of the fcontact entry - */ - private function add_fcontact($arr, $update = false) { - /// @todo Remove this function from include/network.php - - if($update) { - $r = q("UPDATE `fcontact` SET - `name` = '%s', - `photo` = '%s', - `request` = '%s', - `nick` = '%s', - `addr` = '%s', - `batch` = '%s', - `notify` = '%s', - `poll` = '%s', - `confirm` = '%s', - `alias` = '%s', - `pubkey` = '%s', - `updated` = '%s' - WHERE `url` = '%s' AND `network` = '%s'", - dbesc($arr["name"]), - dbesc($arr["photo"]), - dbesc($arr["request"]), - dbesc($arr["nick"]), - dbesc($arr["addr"]), - dbesc($arr["batch"]), - dbesc($arr["notify"]), - dbesc($arr["poll"]), - dbesc($arr["confirm"]), - dbesc($arr["alias"]), - dbesc($arr["pubkey"]), - dbesc(datetime_convert()), - dbesc($arr["url"]), - dbesc($arr["network"]) - ); - } else { - $r = q("INSERT INTO `fcontact` (`url`,`name`,`photo`,`request`,`nick`,`addr`, - `batch`, `notify`,`poll`,`confirm`,`network`,`alias`,`pubkey`,`updated`) - VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", - dbesc($arr["url"]), - dbesc($arr["name"]), - dbesc($arr["photo"]), - dbesc($arr["request"]), - dbesc($arr["nick"]), - dbesc($arr["addr"]), - dbesc($arr["batch"]), - dbesc($arr["notify"]), - dbesc($arr["poll"]), - dbesc($arr["confirm"]), - dbesc($arr["network"]), - dbesc($arr["alias"]), - dbesc($arr["pubkey"]), - dbesc(datetime_convert()) - ); - } - - return $r; - } - - public static function handle_from_contact($contact_id) { - $handle = False; - - logger("contact id is ".$contact_id, LOGGER_DEBUG); - - $r = q("SELECT `network`, `addr`, `self`, `url`, `nick` FROM `contact` WHERE `id` = %d", - intval($contact_id) - ); - if($r) { - $contact = $r[0]; - - logger("contact 'self' = ".$contact['self']." 'url' = ".$contact['url'], LOGGER_DEBUG); - - if($contact['addr'] != "") - $handle = $contact['addr']; - elseif(($contact['network'] === NETWORK_DFRN) || ($contact['self'] == 1)) { - $baseurl_start = strpos($contact['url'],'://') + 3; - $baseurl_length = strpos($contact['url'],'/profile') - $baseurl_start; // allows installations in a subdirectory--not sure how Diaspora will handle - $baseurl = substr($contact['url'], $baseurl_start, $baseurl_length); - $handle = $contact['nick'].'@'.$baseurl; - } - } - - return $handle; - } - - private function contact_by_handle($uid, $handle) { - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1", - intval($uid), - dbesc($handle) - ); - - if ($r) - return $r[0]; - - $handle_parts = explode("@", $handle); - $nurl_sql = "%%://".$handle_parts[1]."%%/profile/".$handle_parts[0]; - $r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` LIKE '%s' LIMIT 1", - dbesc(NETWORK_DFRN), - intval($uid), - dbesc($nurl_sql) - ); - if($r) - return $r[0]; - - return false; - } - - private function post_allow($importer, $contact, $is_comment = false) { - - // perhaps we were already sharing with this person. Now they're sharing with us. - // That makes us friends. - // Normally this should have handled by getting a request - but this could get lost - if($contact["rel"] == CONTACT_IS_FOLLOWER && in_array($importer["page-flags"], array(PAGE_FREELOVE))) { - q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d", - intval(CONTACT_IS_FRIEND), - intval($contact["id"]), - intval($importer["uid"]) - ); - $contact["rel"] = CONTACT_IS_FRIEND; - logger("defining user ".$contact["nick"]." as friend"); - } - - if(($contact["blocked"]) || ($contact["readonly"]) || ($contact["archive"])) - return false; - if($contact["rel"] == CONTACT_IS_SHARING || $contact["rel"] == CONTACT_IS_FRIEND) - return true; - if($contact["rel"] == CONTACT_IS_FOLLOWER) - if(($importer["page-flags"] == PAGE_COMMUNITY) OR $is_comment) - return true; - - // Messages for the global users are always accepted - if ($importer["uid"] == 0) - return true; - - return false; - } - - private function allowed_contact_by_handle($importer, $handle, $is_comment = false) { - $contact = self::contact_by_handle($importer["uid"], $handle); - if (!$contact) { - logger("A Contact for handle ".$handle." and user ".$importer["uid"]." was not found"); - return false; - } - - if (!self::post_allow($importer, $contact, $is_comment)) { - logger("The handle: ".$handle." is not allowed to post to user ".$importer["uid"]); - return false; - } - return $contact; - } - - private function message_exists($uid, $guid) { - $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($uid), - dbesc($guid) - ); - - if($r) { - logger("message ".$guid." already exists for user ".$uid); - return true; - } - - return false; - } - - private function fetch_guid($item) { - preg_replace_callback("&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi", - function ($match) use ($item){ - return(self::fetch_guid_sub($match, $item)); - },$item["body"]); - } - - private function fetch_guid_sub($match, $item) { - if (!self::store_by_guid($match[1], $item["author-link"])) - self::store_by_guid($match[1], $item["owner-link"]); - } - - private function store_by_guid($guid, $server, $uid = 0) { - $serverparts = parse_url($server); - $server = $serverparts["scheme"]."://".$serverparts["host"]; - - logger("Trying to fetch item ".$guid." from ".$server, LOGGER_DEBUG); - - $msg = self::message($guid, $server); - - if (!$msg) - return false; - - logger("Successfully fetched item ".$guid." from ".$server, LOGGER_DEBUG); - - // Now call the dispatcher - return self::dispatch_public($msg); - } - - private function message($guid, $server, $level = 0) { - - if ($level > 5) - return false; - - // This will work for Diaspora and newer Friendica servers - $source_url = $server."/p/".$guid.".xml"; - $x = fetch_url($source_url); - if(!$x) - return false; - - $source_xml = parse_xml_string($x, false); - - if (!is_object($source_xml)) - return false; - - if ($source_xml->post->reshare) { - // Reshare of a reshare - old Diaspora version - return self::message($source_xml->post->reshare->root_guid, $server, ++$level); - } elseif ($source_xml->getName() == "reshare") { - // Reshare of a reshare - new Diaspora version - return self::message($source_xml->root_guid, $server, ++$level); - } - - $author = ""; - - // Fetch the author - for the old and the new Diaspora version - if ($source_xml->post->status_message->diaspora_handle) - $author = (string)$source_xml->post->status_message->diaspora_handle; - elseif ($source_xml->author AND ($source_xml->getName() == "status_message")) - $author = (string)$source_xml->author; - - // If this isn't a "status_message" then quit - if (!$author) - return false; - - $msg = array("message" => $x, "author" => $author); - - $msg["key"] = self::key($msg["author"]); - - return $msg; - } - - private function parent_item($uid, $guid, $author, $contact) { - $r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `origin`, - `author-name`, `author-link`, `author-avatar`, - `owner-name`, `owner-link`, `owner-avatar` - FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($uid), dbesc($guid)); - - if(!$r) { - $result = self::store_by_guid($guid, $contact["url"], $uid); - - if (!$result) { - $person = self::person_by_handle($author); - $result = self::store_by_guid($guid, $person["url"], $uid); - } - - if ($result) { - logger("Fetched missing item ".$guid." - result: ".$result, LOGGER_DEBUG); - - $r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `origin`, - `author-name`, `author-link`, `author-avatar`, - `owner-name`, `owner-link`, `owner-avatar` - FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($uid), dbesc($guid)); - } - } - - if (!$r) { - logger("parent item not found: parent: ".$guid." - user: ".$uid); - return false; - } else { - logger("parent item found: parent: ".$guid." - user: ".$uid); - return $r[0]; - } - } - - private function author_contact_by_url($contact, $person, $uid) { - - $r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1", - dbesc(normalise_link($person["url"])), intval($uid)); - if ($r) { - $cid = $r[0]["id"]; - $network = $r[0]["network"]; - } else { - $cid = $contact["id"]; - $network = NETWORK_DIASPORA; - } - - return (array("cid" => $cid, "network" => $network)); - } - - public static function is_redmatrix($url) { - return(strstr($url, "/channel/")); - } - - private function plink($addr, $guid) { - $r = q("SELECT `url`, `nick`, `network` FROM `fcontact` WHERE `addr`='%s' LIMIT 1", dbesc($addr)); - - // Fallback - if (!$r) - return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid; - - // Friendica contacts are often detected as Diaspora contacts in the "fcontact" table - // So we try another way as well. - $s = q("SELECT `network` FROM `gcontact` WHERE `nurl`='%s' LIMIT 1", dbesc(normalise_link($r[0]["url"]))); - if ($s) - $r[0]["network"] = $s[0]["network"]; - - if ($r[0]["network"] == NETWORK_DFRN) - return(str_replace("/profile/".$r[0]["nick"]."/", "/display/".$guid, $r[0]["url"]."/")); - - if (self::is_redmatrix($r[0]["url"])) - return $r[0]["url"]."/?f=&mid=".$guid; - - return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid; - } - - private function receive_account_deletion($importer, $data) { - $author = notags(unxmlify($data->author)); - - $contact = self::contact_by_handle($importer["uid"], $author); - if (!$contact) { - logger("cannot find contact for author: ".$author); - return false; - } - - // We now remove the contact - contact_remove($contact["id"]); - return true; - } - - private function receive_comment($importer, $sender, $data) { - $guid = notags(unxmlify($data->guid)); - $parent_guid = notags(unxmlify($data->parent_guid)); - $text = unxmlify($data->text); - $author = notags(unxmlify($data->author)); - - $contact = self::allowed_contact_by_handle($importer, $sender, true); - if (!$contact) - return false; - - if (self::message_exists($importer["uid"], $guid)) - return false; - - $parent_item = self::parent_item($importer["uid"], $parent_guid, $author, $contact); - if (!$parent_item) - return false; - - $person = self::person_by_handle($author); - if (!is_array($person)) { - logger("unable to find author details"); - return false; - } - - // Fetch the contact id - if we know this contact - $author_contact = self::author_contact_by_url($contact, $person, $importer["uid"]); - - $datarray = array(); - - $datarray["uid"] = $importer["uid"]; - $datarray["contact-id"] = $author_contact["cid"]; - $datarray["network"] = $author_contact["network"]; - - $datarray["author-name"] = $person["name"]; - $datarray["author-link"] = $person["url"]; - $datarray["author-avatar"] = ((x($person,"thumb")) ? $person["thumb"] : $person["photo"]); - - $datarray["owner-name"] = $contact["name"]; - $datarray["owner-link"] = $contact["url"]; - $datarray["owner-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]); - - $datarray["guid"] = $guid; - $datarray["uri"] = $author.":".$guid; - - $datarray["type"] = "remote-comment"; - $datarray["verb"] = ACTIVITY_POST; - $datarray["gravity"] = GRAVITY_COMMENT; - $datarray["parent-uri"] = $parent_item["uri"]; - - $datarray["object-type"] = ACTIVITY_OBJ_COMMENT; - $datarray["object"] = json_encode($data); - - $datarray["body"] = diaspora2bb($text); - - self::fetch_guid($datarray); - - $message_id = item_store($datarray); - - if ($message_id) - logger("Stored comment ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); - - // If we are the origin of the parent we store the original data and notify our followers - if($message_id AND $parent_item["origin"]) { - - // Formerly we stored the signed text, the signature and the author in different fields. - // We now store the raw data so that we are more flexible. - q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')", - intval($message_id), - dbesc(json_encode($data)) - ); - - // notify others - proc_run("php", "include/notifier.php", "comment-import", $message_id); - } - - return $message_id; - } - - private function receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation) { - $guid = notags(unxmlify($data->guid)); - $subject = notags(unxmlify($data->subject)); - $author = notags(unxmlify($data->author)); - - $reply = 0; - - $msg_guid = notags(unxmlify($mesg->guid)); - $msg_parent_guid = notags(unxmlify($mesg->parent_guid)); - $msg_parent_author_signature = notags(unxmlify($mesg->parent_author_signature)); - $msg_author_signature = notags(unxmlify($mesg->author_signature)); - $msg_text = unxmlify($mesg->text); - $msg_created_at = datetime_convert("UTC", "UTC", notags(unxmlify($mesg->created_at))); - - // "diaspora_handle" is the element name from the old version - // "author" is the element name from the new version - if ($mesg->author) - $msg_author = notags(unxmlify($mesg->author)); - elseif ($mesg->diaspora_handle) - $msg_author = notags(unxmlify($mesg->diaspora_handle)); - else - return false; - - $msg_conversation_guid = notags(unxmlify($mesg->conversation_guid)); - - if($msg_conversation_guid != $guid) { - logger("message conversation guid does not belong to the current conversation."); - return false; - } - - $body = diaspora2bb($msg_text); - $message_uri = $msg_author.":".$msg_guid; - - $author_signed_data = $msg_guid.";".$msg_parent_guid.";".$msg_text.";".unxmlify($mesg->created_at).";".$msg_author.";".$msg_conversation_guid; - - $author_signature = base64_decode($msg_author_signature); - - if(strcasecmp($msg_author,$msg["author"]) == 0) { - $person = $contact; - $key = $msg["key"]; - } else { - $person = self::person_by_handle($msg_author); - - if (is_array($person) && x($person, "pubkey")) - $key = $person["pubkey"]; - else { - logger("unable to find author details"); - return false; - } - } - - if (!rsa_verify($author_signed_data, $author_signature, $key, "sha256")) { - logger("verification failed."); - return false; - } - - if($msg_parent_author_signature) { - $owner_signed_data = $msg_guid.";".$msg_parent_guid.";".$msg_text.";".unxmlify($mesg->created_at).";".$msg_author.";".$msg_conversation_guid; - - $parent_author_signature = base64_decode($msg_parent_author_signature); - - $key = $msg["key"]; - - if (!rsa_verify($owner_signed_data, $parent_author_signature, $key, "sha256")) { - logger("owner verification failed."); - return false; - } - } - - $r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' LIMIT 1", - dbesc($message_uri) - ); - if($r) { - logger("duplicate message already delivered.", LOGGER_DEBUG); - return false; - } - - q("INSERT INTO `mail` (`uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`) - VALUES (%d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')", - intval($importer["uid"]), - dbesc($msg_guid), - intval($conversation["id"]), - dbesc($person["name"]), - dbesc($person["photo"]), - dbesc($person["url"]), - intval($contact["id"]), - dbesc($subject), - dbesc($body), - 0, - 0, - dbesc($message_uri), - dbesc($author.":".$guid), - dbesc($msg_created_at) - ); - - q("UPDATE `conv` SET `updated` = '%s' WHERE `id` = %d", - dbesc(datetime_convert()), - intval($conversation["id"]) - ); - - notification(array( - "type" => NOTIFY_MAIL, - "notify_flags" => $importer["notify-flags"], - "language" => $importer["language"], - "to_name" => $importer["username"], - "to_email" => $importer["email"], - "uid" =>$importer["uid"], - "item" => array("subject" => $subject, "body" => $body), - "source_name" => $person["name"], - "source_link" => $person["url"], - "source_photo" => $person["thumb"], - "verb" => ACTIVITY_POST, - "otype" => "mail" - )); - } - - private function receive_conversation($importer, $msg, $data) { - $guid = notags(unxmlify($data->guid)); - $subject = notags(unxmlify($data->subject)); - $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at))); - $author = notags(unxmlify($data->author)); - $participants = notags(unxmlify($data->participants)); - - $messages = $data->message; - - if (!count($messages)) { - logger("empty conversation"); - return false; - } - - $contact = self::allowed_contact_by_handle($importer, $msg["author"], true); - if (!$contact) - return false; - - $conversation = null; - - $c = q("SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer["uid"]), - dbesc($guid) - ); - if($c) - $conversation = $c[0]; - else { - $r = q("INSERT INTO `conv` (`uid`, `guid`, `creator`, `created`, `updated`, `subject`, `recips`) - VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s')", - intval($importer["uid"]), - dbesc($guid), - dbesc($author), - dbesc(datetime_convert("UTC", "UTC", $created_at)), - dbesc(datetime_convert()), - dbesc($subject), - dbesc($participants) - ); - if($r) - $c = q("SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer["uid"]), - dbesc($guid) - ); - - if($c) - $conversation = $c[0]; - } - if (!$conversation) { - logger("unable to create conversation."); - return; - } - - foreach($messages as $mesg) - self::receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation); - - return true; - } - - private function construct_like_body($contact, $parent_item, $guid) { - $bodyverb = t('%1$s likes %2$s\'s %3$s'); - - $ulink = "[url=".$contact["url"]."]".$contact["name"]."[/url]"; - $alink = "[url=".$parent_item["author-link"]."]".$parent_item["author-name"]."[/url]"; - $plink = "[url=".App::get_baseurl()."/display/".urlencode($guid)."]".t("status")."[/url]"; - - return sprintf($bodyverb, $ulink, $alink, $plink); - } - - private function construct_like_object($importer, $parent_item) { - $objtype = ACTIVITY_OBJ_NOTE; - $link = ''; - $parent_body = $parent_item["body"]; - - $xmldata = array("object" => array("type" => $objtype, - "local" => "1", - "id" => $parent_item["uri"], - "link" => $link, - "title" => "", - "content" => $parent_body)); - - return xml::from_array($xmldata, $xml, true); - } - - private function receive_like($importer, $sender, $data) { - $positive = notags(unxmlify($data->positive)); - $guid = notags(unxmlify($data->guid)); - $parent_type = notags(unxmlify($data->parent_type)); - $parent_guid = notags(unxmlify($data->parent_guid)); - $author = notags(unxmlify($data->author)); - - // likes on comments aren't supported by Diaspora - only on posts - // But maybe this will be supported in the future, so we will accept it. - if (!in_array($parent_type, array("Post", "Comment"))) - return false; - - $contact = self::allowed_contact_by_handle($importer, $sender, true); - if (!$contact) - return false; - - if (self::message_exists($importer["uid"], $guid)) - return false; - - $parent_item = self::parent_item($importer["uid"], $parent_guid, $author, $contact); - if (!$parent_item) - return false; - - $person = self::person_by_handle($author); - if (!is_array($person)) { - logger("unable to find author details"); - return false; - } - - // Fetch the contact id - if we know this contact - $author_contact = self::author_contact_by_url($contact, $person, $importer["uid"]); - - // "positive" = "false" would be a Dislike - wich isn't currently supported by Diaspora - // We would accept this anyhow. - if ($positive === "true") - $verb = ACTIVITY_LIKE; - else - $verb = ACTIVITY_DISLIKE; - - $datarray = array(); - - $datarray["uid"] = $importer["uid"]; - $datarray["contact-id"] = $author_contact["cid"]; - $datarray["network"] = $author_contact["network"]; - - $datarray["author-name"] = $person["name"]; - $datarray["author-link"] = $person["url"]; - $datarray["author-avatar"] = ((x($person,"thumb")) ? $person["thumb"] : $person["photo"]); - - $datarray["owner-name"] = $contact["name"]; - $datarray["owner-link"] = $contact["url"]; - $datarray["owner-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]); - - $datarray["guid"] = $guid; - $datarray["uri"] = $author.":".$guid; - - $datarray["type"] = "activity"; - $datarray["verb"] = $verb; - $datarray["gravity"] = GRAVITY_LIKE; - $datarray["parent-uri"] = $parent_item["uri"]; - - $datarray["object-type"] = ACTIVITY_OBJ_NOTE; - $datarray["object"] = self::construct_like_object($importer, $parent_item); - - $datarray["body"] = self::construct_like_body($contact, $parent_item, $guid); - - $message_id = item_store($datarray); - - if ($message_id) - logger("Stored like ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); - - // If we are the origin of the parent we store the original data and notify our followers - if($message_id AND $parent_item["origin"]) { - - // Formerly we stored the signed text, the signature and the author in different fields. - // We now store the raw data so that we are more flexible. - q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')", - intval($message_id), - dbesc(json_encode($data)) - ); - - // notify others - proc_run("php", "include/notifier.php", "comment-import", $message_id); - } - - return $message_id; - } - - private function receive_message($importer, $data) { - $guid = notags(unxmlify($data->guid)); - $parent_guid = notags(unxmlify($data->parent_guid)); - $text = unxmlify($data->text); - $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at))); - $author = notags(unxmlify($data->author)); - $conversation_guid = notags(unxmlify($data->conversation_guid)); - - $contact = self::allowed_contact_by_handle($importer, $author, true); - if (!$contact) - return false; - - $conversation = null; - - $c = q("SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", - intval($importer["uid"]), - dbesc($conversation_guid) - ); - if($c) - $conversation = $c[0]; - else { - logger("conversation not available."); - return false; - } - - $reply = 0; - - $body = diaspora2bb($text); - $message_uri = $author.":".$guid; - - $person = self::person_by_handle($author); - if (!$person) { - logger("unable to find author details"); - return false; - } - - $r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", - dbesc($message_uri), - intval($importer["uid"]) - ); - if($r) { - logger("duplicate message already delivered.", LOGGER_DEBUG); - return false; - } - - q("INSERT INTO `mail` (`uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`) - VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')", - intval($importer["uid"]), - dbesc($guid), - intval($conversation["id"]), - dbesc($person["name"]), - dbesc($person["photo"]), - dbesc($person["url"]), - intval($contact["id"]), - dbesc($conversation["subject"]), - dbesc($body), - 0, - 1, - dbesc($message_uri), - dbesc($author.":".$parent_guid), - dbesc($created_at) - ); - - q("UPDATE `conv` SET `updated` = '%s' WHERE `id` = %d", - dbesc(datetime_convert()), - intval($conversation["id"]) - ); - - return true; - } - - private function receive_participation($importer, $data) { - // I'm not sure if we can fully support this message type - return true; - } - - private function receive_photo($importer, $data) { - // There doesn't seem to be a reason for this function, since the photo data is transmitted in the status message as well - return true; - } - - private function receive_poll_participation($importer, $data) { - // We don't support polls by now - return true; - } - - private function receive_profile($importer, $data) { - $author = notags(unxmlify($data->author)); - - $contact = self::contact_by_handle($importer["uid"], $author); - if (!$contact) - return; - - $name = unxmlify($data->first_name).((strlen($data->last_name)) ? " ".unxmlify($data->last_name) : ""); - $image_url = unxmlify($data->image_url); - $birthday = unxmlify($data->birthday); - $location = diaspora2bb(unxmlify($data->location)); - $about = diaspora2bb(unxmlify($data->bio)); - $gender = unxmlify($data->gender); - $searchable = (unxmlify($data->searchable) == "true"); - $nsfw = (unxmlify($data->nsfw) == "true"); - $tags = unxmlify($data->tag_string); - - $tags = explode("#", $tags); - - $keywords = array(); - foreach ($tags as $tag) { - $tag = trim(strtolower($tag)); - if ($tag != "") - $keywords[] = $tag; - } - - $keywords = implode(", ", $keywords); - - $handle_parts = explode("@", $author); - $nick = $handle_parts[0]; - - if($name === "") - $name = $handle_parts[0]; - - if( preg_match("|^https?://|", $image_url) === 0) - $image_url = "http://".$handle_parts[1].$image_url; - - update_contact_avatar($image_url, $importer["uid"], $contact["id"]); - - // Generic birthday. We don't know the timezone. The year is irrelevant. - - $birthday = str_replace("1000", "1901", $birthday); - - if ($birthday != "") - $birthday = datetime_convert("UTC", "UTC", $birthday, "Y-m-d"); - - // this is to prevent multiple birthday notifications in a single year - // if we already have a stored birthday and the 'm-d' part hasn't changed, preserve the entry, which will preserve the notify year - - if(substr($birthday,5) === substr($contact["bd"],5)) - $birthday = $contact["bd"]; - - $r = q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `addr` = '%s', `name-date` = '%s', `bd` = '%s', - `location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `id` = %d AND `uid` = %d", - dbesc($name), - dbesc($nick), - dbesc($author), - dbesc(datetime_convert()), - dbesc($birthday), - dbesc($location), - dbesc($about), - dbesc($keywords), - dbesc($gender), - intval($contact["id"]), - intval($importer["uid"]) - ); - - if ($searchable) { - poco_check($contact["url"], $name, NETWORK_DIASPORA, $image_url, $about, $location, $gender, $keywords, "", - datetime_convert(), 2, $contact["id"], $importer["uid"]); - } - - $gcontact = array("url" => $contact["url"], "network" => NETWORK_DIASPORA, "generation" => 2, - "photo" => $image_url, "name" => $name, "location" => $location, - "about" => $about, "birthday" => $birthday, "gender" => $gender, - "addr" => $author, "nick" => $nick, "keywords" => $keywords, - "hide" => !$searchable, "nsfw" => $nsfw); - - update_gcontact($gcontact); - - logger("Profile of contact ".$contact["id"]." stored for user ".$importer["uid"], LOGGER_DEBUG); - - return true; - } - - private function receive_request_make_friend($importer, $contact) { - - $a = get_app(); - - if($contact["rel"] == CONTACT_IS_FOLLOWER && in_array($importer["page-flags"], array(PAGE_FREELOVE))) { - q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d", - intval(CONTACT_IS_FRIEND), - intval($contact["id"]), - intval($importer["uid"]) - ); - } - // send notification - - $r = q("SELECT `hide-friends` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1", - intval($importer["uid"]) - ); - - if($r && !$r[0]["hide-friends"] && !$contact["hidden"] && intval(get_pconfig($importer["uid"], "system", "post_newfriend"))) { - - $self = q("SELECT * FROM `contact` WHERE `self` AND `uid` = %d LIMIT 1", - intval($importer["uid"]) - ); - - // they are not CONTACT_IS_FOLLOWER anymore but that's what we have in the array - - if($self && $contact["rel"] == CONTACT_IS_FOLLOWER) { - - $arr = array(); - $arr["uri"] = $arr["parent-uri"] = item_new_uri($a->get_hostname(), $importer["uid"]); - $arr["uid"] = $importer["uid"]; - $arr["contact-id"] = $self[0]["id"]; - $arr["wall"] = 1; - $arr["type"] = 'wall'; - $arr["gravity"] = 0; - $arr["origin"] = 1; - $arr["author-name"] = $arr["owner-name"] = $self[0]["name"]; - $arr["author-link"] = $arr["owner-link"] = $self[0]["url"]; - $arr["author-avatar"] = $arr["owner-avatar"] = $self[0]["thumb"]; - $arr["verb"] = ACTIVITY_FRIEND; - $arr["object-type"] = ACTIVITY_OBJ_PERSON; - - $A = "[url=".$self[0]["url"]."]".$self[0]["name"]."[/url]"; - $B = "[url=".$contact["url"]."]".$contact["name"]."[/url]"; - $BPhoto = "[url=".$contact["url"]."][img]".$contact["thumb"]."[/img][/url]"; - $arr["body"] = sprintf(t("%1$s is now friends with %2$s"), $A, $B)."\n\n\n".$Bphoto; - - $arr["object"] = "".ACTIVITY_OBJ_PERSON."".$contact["name"]."" - ."".$contact["url"]."/".$contact["name"].""; - $arr["object"] .= "".xmlify(''."\n"); - $arr["object"] .= xmlify(''."\n"); - $arr["object"] .= "\n"; - $arr["last-child"] = 1; - - $arr["allow_cid"] = $user[0]["allow_cid"]; - $arr["allow_gid"] = $user[0]["allow_gid"]; - $arr["deny_cid"] = $user[0]["deny_cid"]; - $arr["deny_gid"] = $user[0]["deny_gid"]; - - $i = item_store($arr); - if($i) - proc_run("php", "include/notifier.php", "activity", $i); - - } - - } - } - - private function receive_request($importer, $data) { - $author = unxmlify($data->author); - $recipient = unxmlify($data->recipient); - - if (!$author || !$recipient) - return; - - $contact = self::contact_by_handle($importer["uid"],$author); - - if($contact) { - - // perhaps we were already sharing with this person. Now they're sharing with us. - // That makes us friends. - - self::receive_request_make_friend($importer, $contact); - return true; - } - - $ret = self::person_by_handle($author); - - if (!$ret || ($ret["network"] != NETWORK_DIASPORA)) { - logger("Cannot resolve diaspora handle ".$author." for ".$recipient); - return false; - } - - $batch = (($ret["batch"]) ? $ret["batch"] : implode("/", array_slice(explode("/", $ret["url"]), 0, 3))."/receive/public"); - - $r = q("INSERT INTO `contact` (`uid`, `network`,`addr`,`created`,`url`,`nurl`,`batch`,`name`,`nick`,`photo`,`pubkey`,`notify`,`poll`,`blocked`,`priority`) - VALUES (%d, '%s', '%s', '%s', '%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,%d)", - intval($importer["uid"]), - dbesc($ret["network"]), - dbesc($ret["addr"]), - datetime_convert(), - dbesc($ret["url"]), - dbesc(normalise_link($ret["url"])), - dbesc($batch), - dbesc($ret["name"]), - dbesc($ret["nick"]), - dbesc($ret["photo"]), - dbesc($ret["pubkey"]), - dbesc($ret["notify"]), - dbesc($ret["poll"]), - 1, - 2 - ); - - // find the contact record we just created - - $contact_record = self::contact_by_handle($importer["uid"],$author); - - if (!$contact_record) { - logger("unable to locate newly created contact record."); - return; - } - - $g = q("SELECT `def_gid` FROM `user` WHERE `uid` = %d LIMIT 1", - intval($importer["uid"]) - ); - - if($g && intval($g[0]["def_gid"])) - group_add_member($importer["uid"], "", $contact_record["id"], $g[0]["def_gid"]); - - if($importer["page-flags"] == PAGE_NORMAL) { - - $hash = random_string().(string)time(); // Generate a confirm_key - - $ret = q("INSERT INTO `intro` (`uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime`) - VALUES (%d, %d, %d, %d, '%s', '%s', '%s')", - intval($importer["uid"]), - intval($contact_record["id"]), - 0, - 0, - dbesc(t("Sharing notification from Diaspora network")), - dbesc($hash), - dbesc(datetime_convert()) - ); - } else { - - // automatic friend approval - - update_contact_avatar($contact_record["photo"],$importer["uid"],$contact_record["id"]); - - // technically they are sharing with us (CONTACT_IS_SHARING), - // but if our page-type is PAGE_COMMUNITY or PAGE_SOAPBOX - // we are going to change the relationship and make them a follower. - - if($importer["page-flags"] == PAGE_FREELOVE) - $new_relation = CONTACT_IS_FRIEND; - else - $new_relation = CONTACT_IS_FOLLOWER; - - $r = q("UPDATE `contact` SET `rel` = %d, - `name-date` = '%s', - `uri-date` = '%s', - `blocked` = 0, - `pending` = 0, - `writable` = 1 - WHERE `id` = %d - ", - intval($new_relation), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - intval($contact_record["id"]) - ); - - $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer["uid"])); - if($u) - $ret = self::send_share($u[0], $contact_record); - } - - return true; - } - - private function original_item($guid, $orig_author, $author) { - - // Do we already have this item? - $r = q("SELECT `body`, `tag`, `app`, `created`, `object-type`, `uri`, `guid`, - `author-name`, `author-link`, `author-avatar` - FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1", - dbesc($guid)); - - if($r) { - logger("reshared message ".$guid." already exists on system."); - - // Maybe it is already a reshared item? - // Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares - if (self::is_reshare($r[0]["body"])) - $r = array(); - else - return $r[0]; - } - - if (!$r) { - $server = "https://".substr($orig_author, strpos($orig_author, "@") + 1); - logger("1st try: reshared message ".$guid." will be fetched from original server: ".$server); - $item_id = self::store_by_guid($guid, $server); - - if (!$item_id) { - $server = "http://".substr($orig_author, strpos($orig_author, "@") + 1); - logger("2nd try: reshared message ".$guid." will be fetched from original server: ".$server); - $item_id = self::store_by_guid($guid, $server); - } - - // Deactivated by now since there is a risk that someone could manipulate postings through this method -/* if (!$item_id) { - $server = "https://".substr($author, strpos($author, "@") + 1); - logger("3rd try: reshared message ".$guid." will be fetched from sharer's server: ".$server); - $item_id = self::store_by_guid($guid, $server); - } - if (!$item_id) { - $server = "http://".substr($author, strpos($author, "@") + 1); - logger("4th try: reshared message ".$guid." will be fetched from sharer's server: ".$server); - $item_id = self::store_by_guid($guid, $server); - } -*/ - if ($item_id) { - $r = q("SELECT `body`, `tag`, `app`, `created`, `object-type`, `uri`, `guid`, - `author-name`, `author-link`, `author-avatar` - FROM `item` WHERE `id` = %d AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1", - intval($item_id)); - - if ($r) - return $r[0]; - - } - } - return false; - } - - private function receive_reshare($importer, $data) { - $root_author = notags(unxmlify($data->root_author)); - $root_guid = notags(unxmlify($data->root_guid)); - $guid = notags(unxmlify($data->guid)); - $author = notags(unxmlify($data->author)); - $public = notags(unxmlify($data->public)); - $created_at = notags(unxmlify($data->created_at)); - - $contact = self::allowed_contact_by_handle($importer, $author, false); - if (!$contact) - return false; - - if (self::message_exists($importer["uid"], $guid)) - return false; - - $original_item = self::original_item($root_guid, $root_author, $author); - if (!$original_item) - return false; - - $orig_url = App::get_baseurl()."/display/".$original_item["guid"]; - - $datarray = array(); - - $datarray["uid"] = $importer["uid"]; - $datarray["contact-id"] = $contact["id"]; - $datarray["network"] = NETWORK_DIASPORA; - - $datarray["author-name"] = $contact["name"]; - $datarray["author-link"] = $contact["url"]; - $datarray["author-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]); - - $datarray["owner-name"] = $datarray["author-name"]; - $datarray["owner-link"] = $datarray["author-link"]; - $datarray["owner-avatar"] = $datarray["author-avatar"]; - - $datarray["guid"] = $guid; - $datarray["uri"] = $datarray["parent-uri"] = $author.":".$guid; - - $datarray["verb"] = ACTIVITY_POST; - $datarray["gravity"] = GRAVITY_PARENT; - - $datarray["object"] = json_encode($data); - - $prefix = share_header($original_item["author-name"], $original_item["author-link"], $original_item["author-avatar"], - $original_item["guid"], $original_item["created"], $orig_url); - $datarray["body"] = $prefix.$original_item["body"]."[/share]"; - - $datarray["tag"] = $original_item["tag"]; - $datarray["app"] = $original_item["app"]; - - $datarray["plink"] = self::plink($author, $guid); - $datarray["private"] = (($public == "false") ? 1 : 0); - $datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert("UTC", "UTC", $created_at); - - $datarray["object-type"] = $original_item["object-type"]; - - self::fetch_guid($datarray); - $message_id = item_store($datarray); - - if ($message_id) - logger("Stored reshare ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); - - return $message_id; - } - - private function item_retraction($importer, $contact, $data) { - $target_type = notags(unxmlify($data->target_type)); - $target_guid = notags(unxmlify($data->target_guid)); - $author = notags(unxmlify($data->author)); - - $person = self::person_by_handle($author); - if (!is_array($person)) { - logger("unable to find author detail for ".$author); - return false; - } - - $r = q("SELECT `id`, `parent`, `parent-uri`, `author-link` FROM `item` WHERE `guid` = '%s' AND `uid` = %d AND NOT `file` LIKE '%%[%%' LIMIT 1", - dbesc($target_guid), - intval($importer["uid"]) - ); - if (!$r) - return false; - - // Only delete it if the author really fits - if (!link_compare($r[0]["author-link"], $person["url"])) { - logger("Item author ".$r[0]["author-link"]." doesn't fit to expected contact ".$person["url"], LOGGER_DEBUG); - return false; - } - - // Check if the sender is the thread owner - $p = q("SELECT `id`, `author-link`, `origin` FROM `item` WHERE `id` = %d", - intval($r[0]["parent"])); - - // Only delete it if the parent author really fits - if (!link_compare($p[0]["author-link"], $contact["url"]) AND !link_compare($r[0]["author-link"], $contact["url"])) { - logger("Thread author ".$p[0]["author-link"]." and item author ".$r[0]["author-link"]." don't fit to expected contact ".$contact["url"], LOGGER_DEBUG); - return false; - } - - // Currently we don't have a central deletion function that we could use in this case. The function "item_drop" doesn't work for that case - q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '' , `title` = '' WHERE `id` = %d", - dbesc(datetime_convert()), - dbesc(datetime_convert()), - intval($r[0]["id"]) - ); - delete_thread($r[0]["id"], $r[0]["parent-uri"]); - - logger("Deleted target ".$target_guid." (".$r[0]["id"].") from user ".$importer["uid"]." parent: ".$p[0]["id"], LOGGER_DEBUG); - - // Now check if the retraction needs to be relayed by us - if($p[0]["origin"]) { - - // Formerly we stored the signed text, the signature and the author in different fields. - // We now store the raw data so that we are more flexible. - q("INSERT INTO `sign` (`retract_iid`,`signed_text`) VALUES (%d,'%s')", - intval($r[0]["id"]), - dbesc(json_encode($data)) - ); - $s = q("select * from sign where retract_iid = %d", intval($r[0]["id"])); - logger("Stored signatur for item ".$r[0]["id"]." - ".print_r($s, true), LOGGER_DEBUG); - - // notify others - proc_run("php", "include/notifier.php", "drop", $r[0]["id"]); - } - } - - private function receive_retraction($importer, $sender, $data) { - $target_type = notags(unxmlify($data->target_type)); - - $contact = self::contact_by_handle($importer["uid"], $sender); - if (!$contact) { - logger("cannot find contact for sender: ".$sender." and user ".$importer["uid"]); - return false; - } - - logger("Got retraction for ".$target_type.", sender ".$sender." and user ".$importer["uid"], LOGGER_DEBUG); - - switch ($target_type) { - case "Comment": - case "Like": - case "Post": // "Post" will be supported in a future version - case "Reshare": - case "StatusMessage": - return self::item_retraction($importer, $contact, $data);; - - case "Person": - /// @todo What should we do with an "unshare"? - // Removing the contact isn't correct since we still can read the public items - //contact_remove($contact["id"]); - return true; - - default: - logger("Unknown target type ".$target_type); - return false; - } - return true; - } - - private function receive_status_message($importer, $data) { - - $raw_message = unxmlify($data->raw_message); - $guid = notags(unxmlify($data->guid)); - $author = notags(unxmlify($data->author)); - $public = notags(unxmlify($data->public)); - $created_at = notags(unxmlify($data->created_at)); - $provider_display_name = notags(unxmlify($data->provider_display_name)); - - /// @todo enable support for polls - //if ($data->poll) { - // foreach ($data->poll AS $poll) - // print_r($poll); - // die("poll!\n"); - //} - $contact = self::allowed_contact_by_handle($importer, $author, false); - if (!$contact) - return false; - - if (self::message_exists($importer["uid"], $guid)) - return false; - - $address = array(); - if ($data->location) - foreach ($data->location->children() AS $fieldname => $data) - $address[$fieldname] = notags(unxmlify($data)); - - $body = diaspora2bb($raw_message); - - $datarray = array(); - - if ($data->photo) { - foreach ($data->photo AS $photo) - $body = "[img]".$photo->remote_photo_path.$photo->remote_photo_name."[/img]\n".$body; - - $datarray["object-type"] = ACTIVITY_OBJ_PHOTO; - } else { - $datarray["object-type"] = ACTIVITY_OBJ_NOTE; - - // Add OEmbed and other information to the body - if (!self::is_redmatrix($contact["url"])) - $body = add_page_info_to_body($body, false, true); - } - - $datarray["uid"] = $importer["uid"]; - $datarray["contact-id"] = $contact["id"]; - $datarray["network"] = NETWORK_DIASPORA; - - $datarray["author-name"] = $contact["name"]; - $datarray["author-link"] = $contact["url"]; - $datarray["author-avatar"] = ((x($contact,"thumb")) ? $contact["thumb"] : $contact["photo"]); - - $datarray["owner-name"] = $datarray["author-name"]; - $datarray["owner-link"] = $datarray["author-link"]; - $datarray["owner-avatar"] = $datarray["author-avatar"]; - - $datarray["guid"] = $guid; - $datarray["uri"] = $datarray["parent-uri"] = $author.":".$guid; - - $datarray["verb"] = ACTIVITY_POST; - $datarray["gravity"] = GRAVITY_PARENT; - - $datarray["object"] = json_encode($data); - - $datarray["body"] = $body; - - if ($provider_display_name != "") - $datarray["app"] = $provider_display_name; - - $datarray["plink"] = self::plink($author, $guid); - $datarray["private"] = (($public == "false") ? 1 : 0); - $datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert("UTC", "UTC", $created_at); - - if (isset($address["address"])) - $datarray["location"] = $address["address"]; - - if (isset($address["lat"]) AND isset($address["lng"])) - $datarray["coord"] = $address["lat"]." ".$address["lng"]; - - self::fetch_guid($datarray); - $message_id = item_store($datarray); - - if ($message_id) - logger("Stored item ".$datarray["guid"]." with message id ".$message_id, LOGGER_DEBUG); - - return $message_id; - } - - /****************************************************************************************** - * Here are all the functions that are needed to transmit data with the Diaspora protocol * - ******************************************************************************************/ - - private function my_handle($me) { - if ($contact["addr"] != "") - return $contact["addr"]; - - // Normally we should have a filled "addr" field - but in the past this wasn't the case - // So - just in case - we build the the address here. - return $me["nickname"]."@".substr(App::get_baseurl(), strpos(App::get_baseurl(),"://") + 3); - } - - private function build_public_message($msg, $user, $contact, $prvkey, $pubkey) { - - logger("Message: ".$msg, LOGGER_DATA); - - $handle = self::my_handle($user); - - $b64url_data = base64url_encode($msg); - - $data = str_replace(array("\n", "\r", " ", "\t"), array("", "", "", ""), $b64url_data); - - $type = "application/xml"; - $encoding = "base64url"; - $alg = "RSA-SHA256"; - - $signable_data = $data.".".base64url_encode($type).".".base64url_encode($encoding).".".base64url_encode($alg); - - $signature = rsa_sign($signable_data,$prvkey); - $sig = base64url_encode($signature); - - $xmldata = array("diaspora" => array("header" => array("author_id" => $handle), - "me:env" => array("me:encoding" => "base64url", - "me:alg" => "RSA-SHA256", - "me:data" => $data, - "@attributes" => array("type" => "application/xml"), - "me:sig" => $sig))); - - $namespaces = array("" => "https://joindiaspora.com/protocol", - "me" => "http://salmon-protocol.org/ns/magic-env"); - - $magic_env = xml::from_array($xmldata, $xml, false, $namespaces); - - logger("magic_env: ".$magic_env, LOGGER_DATA); - return $magic_env; - } - - private function build_private_message($msg, $user, $contact, $prvkey, $pubkey) { - - logger("Message: ".$msg, LOGGER_DATA); - - // without a public key nothing will work - - if (!$pubkey) { - logger("pubkey missing: contact id: ".$contact["id"]); - return false; - } - - $inner_aes_key = random_string(32); - $b_inner_aes_key = base64_encode($inner_aes_key); - $inner_iv = random_string(16); - $b_inner_iv = base64_encode($inner_iv); - - $outer_aes_key = random_string(32); - $b_outer_aes_key = base64_encode($outer_aes_key); - $outer_iv = random_string(16); - $b_outer_iv = base64_encode($outer_iv); - - $handle = self::my_handle($user); - - $padded_data = pkcs5_pad($msg,16); - $inner_encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $inner_aes_key, $padded_data, MCRYPT_MODE_CBC, $inner_iv); - - $b64_data = base64_encode($inner_encrypted); - - - $b64url_data = base64url_encode($b64_data); - $data = str_replace(array("\n", "\r", " ", "\t"), array("", "", "", ""), $b64url_data); - - $type = "application/xml"; - $encoding = "base64url"; - $alg = "RSA-SHA256"; - - $signable_data = $data.".".base64url_encode($type).".".base64url_encode($encoding).".".base64url_encode($alg); - - $signature = rsa_sign($signable_data,$prvkey); - $sig = base64url_encode($signature); - - $xmldata = array("decrypted_header" => array("iv" => $b_inner_iv, - "aes_key" => $b_inner_aes_key, - "author_id" => $handle)); - - $decrypted_header = xml::from_array($xmldata, $xml, true); - $decrypted_header = pkcs5_pad($decrypted_header,16); - - $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $outer_aes_key, $decrypted_header, MCRYPT_MODE_CBC, $outer_iv); - - $outer_json = json_encode(array("iv" => $b_outer_iv, "key" => $b_outer_aes_key)); - - $encrypted_outer_key_bundle = ""; - openssl_public_encrypt($outer_json, $encrypted_outer_key_bundle, $pubkey); - - $b64_encrypted_outer_key_bundle = base64_encode($encrypted_outer_key_bundle); - - logger("outer_bundle: ".$b64_encrypted_outer_key_bundle." key: ".$pubkey, LOGGER_DATA); - - $encrypted_header_json_object = json_encode(array("aes_key" => base64_encode($encrypted_outer_key_bundle), - "ciphertext" => base64_encode($ciphertext))); - $cipher_json = base64_encode($encrypted_header_json_object); - - $xmldata = array("diaspora" => array("encrypted_header" => $cipher_json, - "me:env" => array("me:encoding" => "base64url", - "me:alg" => "RSA-SHA256", - "me:data" => $data, - "@attributes" => array("type" => "application/xml"), - "me:sig" => $sig))); - - $namespaces = array("" => "https://joindiaspora.com/protocol", - "me" => "http://salmon-protocol.org/ns/magic-env"); - - $magic_env = xml::from_array($xmldata, $xml, false, $namespaces); - - logger("magic_env: ".$magic_env, LOGGER_DATA); - return $magic_env; - } - - private function build_message($msg, $user, $contact, $prvkey, $pubkey, $public = false) { - - if ($public) - $magic_env = self::build_public_message($msg,$user,$contact,$prvkey,$pubkey); - else - $magic_env = self::build_private_message($msg,$user,$contact,$prvkey,$pubkey); - - // The data that will be transmitted is double encoded via "urlencode", strange ... - $slap = "xml=".urlencode(urlencode($magic_env)); - return $slap; - } - - private function signature($owner, $message) { - $sigmsg = $message; - unset($sigmsg["author_signature"]); - unset($sigmsg["parent_author_signature"]); - - $signed_text = implode(";", $sigmsg); - - return base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); - } - - public static function transmit($owner, $contact, $slap, $public_batch, $queue_run=false, $guid = "") { - - $a = get_app(); - - $enabled = intval(get_config("system", "diaspora_enabled")); - if(!$enabled) - return 200; - - $logid = random_string(4); - $dest_url = (($public_batch) ? $contact["batch"] : $contact["notify"]); - if (!$dest_url) { - logger("no url for contact: ".$contact["id"]." batch mode =".$public_batch); - return 0; - } - - logger("transmit: ".$logid."-".$guid." ".$dest_url); - - if (!$queue_run && was_recently_delayed($contact["id"])) { - $return_code = 0; - } else { - if (!intval(get_config("system", "diaspora_test"))) { - post_url($dest_url."/", $slap); - $return_code = $a->get_curl_code(); - } else { - logger("test_mode"); - return 200; - } - } - - logger("transmit: ".$logid."-".$guid." returns: ".$return_code); - - if(!$return_code || (($return_code == 503) && (stristr($a->get_curl_headers(), "retry-after")))) { - logger("queue message"); - - $r = q("SELECT `id` FROM `queue` WHERE `cid` = %d AND `network` = '%s' AND `content` = '%s' AND `batch` = %d LIMIT 1", - intval($contact["id"]), - dbesc(NETWORK_DIASPORA), - dbesc($slap), - intval($public_batch) - ); - if($r) { - logger("add_to_queue ignored - identical item already in queue"); - } else { - // queue message for redelivery - add_to_queue($contact["id"], NETWORK_DIASPORA, $slap, $public_batch); - } - } - - return(($return_code) ? $return_code : (-1)); - } - - - private function build_and_transmit($owner, $contact, $type, $message, $public_batch = false, $guid = "", $spool = false) { - - $data = array("XML" => array("post" => array($type => $message))); - - $msg = xml::from_array($data, $xml); - - logger('message: '.$msg, LOGGER_DATA); - logger('send guid '.$guid, LOGGER_DEBUG); - - $slap = self::build_message($msg, $owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch); - - if ($spool) { - add_to_queue($contact['id'], NETWORK_DIASPORA, $slap, $public_batch); - return true; - } else - $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $guid); - - logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG); - - return $return_code; - } - - public static function send_share($owner,$contact) { - - $message = array("sender_handle" => self::my_handle($owner), - "recipient_handle" => $contact["addr"]); - - return self::build_and_transmit($owner, $contact, "request", $message); - } - - public static function send_unshare($owner,$contact) { - - $message = array("post_guid" => $owner["guid"], - "diaspora_handle" => self::my_handle($owner), - "type" => "Person"); - - return self::build_and_transmit($owner, $contact, "retraction", $message); - } - - public static function is_reshare($body) { - $body = trim($body); - - // Skip if it isn't a pure repeated messages - // Does it start with a share? - if (strpos($body, "[share") > 0) - return(false); - - // Does it end with a share? - if (strlen($body) > (strrpos($body, "[/share]") + 8)) - return(false); - - $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","$1",$body); - // Skip if there is no shared message in there - if ($body == $attributes) - return(false); - - $guid = ""; - preg_match("/guid='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $guid = $matches[1]; - - preg_match('/guid="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $guid = $matches[1]; - - if ($guid != "") { - $r = q("SELECT `contact-id` FROM `item` WHERE `guid` = '%s' AND `network` IN ('%s', '%s') LIMIT 1", - dbesc($guid), NETWORK_DFRN, NETWORK_DIASPORA); - if ($r) { - $ret= array(); - $ret["root_handle"] = self::handle_from_contact($r[0]["contact-id"]); - $ret["root_guid"] = $guid; - return($ret); - } - } - - $profile = ""; - preg_match("/profile='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $profile = $matches[1]; - - preg_match('/profile="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $profile = $matches[1]; - - $ret= array(); - - $ret["root_handle"] = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile); - if (($ret["root_handle"] == $profile) OR ($ret["root_handle"] == "")) - return(false); - - $link = ""; - preg_match("/link='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $link = $matches[1]; - - preg_match('/link="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $link = $matches[1]; - - $ret["root_guid"] = preg_replace("=https?://(.*)/posts/(.*)=ism", "$2", $link); - if (($ret["root_guid"] == $link) OR ($ret["root_guid"] == "")) - return(false); - return($ret); - } - - public static function send_status($item, $owner, $contact, $public_batch = false) { - - $myaddr = self::my_handle($owner); - - $public = (($item["private"]) ? "false" : "true"); - - $created = datetime_convert("UTC", "UTC", $item["created"], 'Y-m-d H:i:s \U\T\C'); - - // Detect a share element and do a reshare - if (!$item['private'] AND ($ret = self::is_reshare($item["body"]))) { - $message = array("root_diaspora_id" => $ret["root_handle"], - "root_guid" => $ret["root_guid"], - "guid" => $item["guid"], - "diaspora_handle" => $myaddr, - "public" => $public, - "created_at" => $created, - "provider_display_name" => $item["app"]); - - $type = "reshare"; - } else { - $title = $item["title"]; - $body = $item["body"]; - - // convert to markdown - $body = html_entity_decode(bb2diaspora($body)); - - // Adding the title - if(strlen($title)) - $body = "## ".html_entity_decode($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"; - } - } - - $location = array(); - - if ($item["location"] != "") - $location["address"] = $item["location"]; - - if ($item["coord"] != "") { - $coord = explode(" ", $item["coord"]); - $location["lat"] = $coord[0]; - $location["lng"] = $coord[1]; - } - - $message = array("raw_message" => $body, - "location" => $location, - "guid" => $item["guid"], - "diaspora_handle" => $myaddr, - "public" => $public, - "created_at" => $created, - "provider_display_name" => $item["app"]); - - if (count($location) == 0) - unset($message["location"]); - - $type = "status_message"; - } - - return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); - } - - private function construct_like($item, $owner) { - - $myaddr = self::my_handle($owner); - - $p = q("SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1", - dbesc($item["thr-parent"])); - if(!$p) - return false; - - $parent = $p[0]; - - $target_type = ($parent["uri"] === $parent["parent-uri"] ? "Post" : "Comment"); - $positive = "true"; - - return(array("positive" => $positive, - "guid" => $item["guid"], - "target_type" => $target_type, - "parent_guid" => $parent["guid"], - "author_signature" => $authorsig, - "diaspora_handle" => $myaddr)); - } - - private function construct_comment($item, $owner) { - - $myaddr = self::my_handle($owner); - - $p = q("SELECT `guid` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1", - intval($item["parent"]), - intval($item["parent"]) - ); - - if (!$p) - return false; - - $parent = $p[0]; - - $text = html_entity_decode(bb2diaspora($item["body"])); - - return(array("guid" => $item["guid"], - "parent_guid" => $parent["guid"], - "author_signature" => "", - "text" => $text, - "diaspora_handle" => $myaddr)); - } - - public static function send_followup($item,$owner,$contact,$public_batch = false) { - - if($item['verb'] === ACTIVITY_LIKE) { - $message = self::construct_like($item, $owner); - $type = "like"; - } else { - $message = self::construct_comment($item, $owner); - $type = "comment"; - } - - if (!$message) - return false; - - $message["author_signature"] = self::signature($owner, $message); - - return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); - } - - private function message_from_signatur($item, $signature) { - - // Split the signed text - $signed_parts = explode(";", $signature['signed_text']); - - if ($item["deleted"]) - $message = array("parent_author_signature" => "", - "target_guid" => $signed_parts[0], - "target_type" => $signed_parts[1], - "sender_handle" => $signature['signer'], - "target_author_signature" => $signature['signature']); - elseif ($item['verb'] === ACTIVITY_LIKE) - $message = array("positive" => $signed_parts[0], - "guid" => $signed_parts[1], - "target_type" => $signed_parts[2], - "parent_guid" => $signed_parts[3], - "parent_author_signature" => "", - "author_signature" => $signature['signature'], - "diaspora_handle" => $signed_parts[4]); - else { - // Remove the comment guid - $guid = array_shift($signed_parts); - - // Remove the parent guid - $parent_guid = array_shift($signed_parts); - - // Remove the handle - $handle = array_pop($signed_parts); - - // Glue the parts together - $text = implode(";", $signed_parts); - - $message = array("guid" => $guid, - "parent_guid" => $parent_guid, - "parent_author_signature" => "", - "author_signature" => $signature['signature'], - "text" => implode(";", $signed_parts), - "diaspora_handle" => $handle); - } - return $message; - } - - public static function send_relay($item, $owner, $contact, $public_batch = false) { - - if ($item["deleted"]) { - $sql_sign_id = "retract_iid"; - $type = "relayable_retraction"; - } elseif ($item['verb'] === ACTIVITY_LIKE) { - $sql_sign_id = "iid"; - $type = "like"; - } else { - $sql_sign_id = "iid"; - $type = "comment"; - } - - logger("Got relayable data ".$type." for item ".$item["guid"]." (".$item["id"].")", LOGGER_DEBUG); - - // fetch the original signature - - $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE `".$sql_sign_id."` = %d LIMIT 1", - intval($item["id"])); - - if (!$r) - return self::send_followup($item, $owner, $contact, $public_batch); - - $signature = $r[0]; - - // Old way - is used by the internal Friendica functions - /// @todo Change all signatur storing functions to the new format - if ($signature['signed_text'] AND $signature['signature'] AND $signature['signer']) - $message = self::message_from_signatur($item, $signature); - else {// New way - $msg = json_decode($signature['signed_text'], true); - - $message = array(); - foreach ($msg AS $field => $data) { - if (!$item["deleted"]) { - if ($field == "author") - $field = "diaspora_handle"; - if ($field == "parent_type") - $field = "target_type"; - } - - $message[$field] = $data; - } - } - - if ($item["deleted"]) { - $signed_text = $message["target_guid"].';'.$message["target_type"]; - $message["parent_author_signature"] = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); - } else - $message["parent_author_signature"] = self::signature($owner, $message); - - logger("Relayed data ".print_r($message, true), LOGGER_DEBUG); - - return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); - } - - public static function send_retraction($item, $owner, $contact, $public_batch = false) { - - $myaddr = self::my_handle($owner); - - // Check whether the retraction is for a top-level post or whether it's a relayable - if ($item["uri"] !== $item["parent-uri"]) { - $msg_type = "relayable_retraction"; - $target_type = (($item["verb"] === ACTIVITY_LIKE) ? "Like" : "Comment"); - } else { - $msg_type = "signed_retraction"; - $target_type = "StatusMessage"; - } - - $signed_text = $item["guid"].";".$target_type; - - $message = array("target_guid" => $item['guid'], - "target_type" => $target_type, - "sender_handle" => $myaddr, - "target_author_signature" => base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'))); - - return self::build_and_transmit($owner, $contact, $msg_type, $message, $public_batch, $item["guid"]); - } - - public static function send_mail($item, $owner, $contact) { - - $myaddr = self::my_handle($owner); - - $r = q("SELECT * FROM `conv` WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($item["convid"]), - intval($item["uid"]) - ); - - if (!$r) { - logger("conversation not found."); - return; - } - $cnv = $r[0]; - - $conv = array( - "guid" => $cnv["guid"], - "subject" => $cnv["subject"], - "created_at" => datetime_convert("UTC", "UTC", $cnv['created'], 'Y-m-d H:i:s \U\T\C'), - "diaspora_handle" => $cnv["creator"], - "participant_handles" => $cnv["recips"] - ); - - $body = bb2diaspora($item["body"]); - $created = datetime_convert("UTC", "UTC", $item["created"], 'Y-m-d H:i:s \U\T\C'); - - $signed_text = $item["guid"].";".$cnv["guid"].";".$body.";".$created.";".$myaddr.";".$cnv['guid']; - $sig = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); - - $msg = array( - "guid" => $item["guid"], - "parent_guid" => $cnv["guid"], - "parent_author_signature" => $sig, - "author_signature" => $sig, - "text" => $body, - "created_at" => $created, - "diaspora_handle" => $myaddr, - "conversation_guid" => $cnv["guid"] - ); - - if ($item["reply"]) { - $message = $msg; - $type = "message"; - } else { - $message = array("guid" => $cnv["guid"], - "subject" => $cnv["subject"], - "created_at" => datetime_convert("UTC", "UTC", $cnv['created'], 'Y-m-d H:i:s \U\T\C'), - "message" => $msg, - "diaspora_handle" => $cnv["creator"], - "participant_handles" => $cnv["recips"]); - - $type = "conversation"; - } - - return self::build_and_transmit($owner, $contact, $type, $message, false, $item["guid"]); - } - - public static function send_profile($uid) { - - if (!$uid) - return; - - $recips = q("SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s' - AND `uid` = %d AND `rel` != %d", - dbesc(NETWORK_DIASPORA), - intval($uid), - intval(CONTACT_IS_SHARING) - ); - if (!$recips) - return; - - $r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.*, `user`.`prvkey` AS `uprvkey`, `contact`.`addr` - FROM `profile` - INNER JOIN `user` ON `profile`.`uid` = `user`.`uid` - INNER JOIN `contact` ON `profile`.`uid` = `contact`.`uid` - WHERE `user`.`uid` = %d AND `profile`.`is-default` AND `contact`.`self` LIMIT 1", - intval($uid) - ); - - if (!$r) - return; - - $profile = $r[0]; - - $handle = $profile["addr"]; - $first = ((strpos($profile['name'],' ') - ? trim(substr($profile['name'],0,strpos($profile['name'],' '))) : $profile['name'])); - $last = (($first === $profile['name']) ? '' : trim(substr($profile['name'], strlen($first)))); - $large = App::get_baseurl().'/photo/custom/300/'.$profile['uid'].'.jpg'; - $medium = App::get_baseurl().'/photo/custom/100/'.$profile['uid'].'.jpg'; - $small = App::get_baseurl().'/photo/custom/50/' .$profile['uid'].'.jpg'; - $searchable = (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false'); - - if ($searchable === 'true') { - $dob = '1000-00-00'; - - if (($profile['dob']) && ($profile['dob'] != '0000-00-00')) - $dob = ((intval($profile['dob'])) ? intval($profile['dob']) : '1000') .'-'. datetime_convert('UTC','UTC',$profile['dob'],'m-d'); - - $about = $profile['about']; - $about = strip_tags(bbcode($about)); - - $location = formatted_location($profile); - $tags = ''; - if ($profile['pub_keywords']) { - $kw = str_replace(',',' ',$profile['pub_keywords']); - $kw = str_replace(' ',' ',$kw); - $arr = explode(' ',$profile['pub_keywords']); - if (count($arr)) { - for($x = 0; $x < 5; $x ++) { - if (trim($arr[$x])) - $tags .= '#'. trim($arr[$x]) .' '; - } - } - } - $tags = trim($tags); - } - - $message = array("diaspora_handle" => $handle, - "first_name" => $first, - "last_name" => $last, - "image_url" => $large, - "image_url_medium" => $medium, - "image_url_small" => $small, - "birthday" => $dob, - "gender" => $profile['gender'], - "bio" => $about, - "location" => $location, - "searchable" => $searchable, - "tag_string" => $tags); - - foreach($recips as $recip) - self::build_and_transmit($profile, $recip, "profile", $message, false, "", true); - } -} -?> From 4b5e7007a7148d85858f6851bdb8900dfb05e7cd Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 14 Mar 2016 23:54:01 +0100 Subject: [PATCH 047/485] Bugfix: XML copy had problems with "&" --- include/diaspora.php | 12 ++++++------ include/xml.php | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 75cedeccd1..4c3cb41726 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -291,7 +291,7 @@ class diaspora { return self::receive_account_deletion($importer, $fields); case "comment": - return self::receive_comment($importer, $sender, $fields); + return self::receive_comment($importer, $sender, $fields, $msg["message"]); case "conversation": return self::receive_conversation($importer, $msg, $fields); @@ -324,7 +324,7 @@ class diaspora { return self::receive_retraction($importer, $sender, $fields); case "status_message": - return self::receive_status_message($importer, $fields); + return self::receive_status_message($importer, $fields, $msg["message"]); default: logger("Unknown message type ".$type); @@ -841,7 +841,7 @@ class diaspora { return true; } - private function receive_comment($importer, $sender, $data) { + private function receive_comment($importer, $sender, $data, $xml) { $guid = notags(unxmlify($data->guid)); $parent_guid = notags(unxmlify($data->parent_guid)); $text = unxmlify($data->text); @@ -890,7 +890,7 @@ class diaspora { $datarray["parent-uri"] = $parent_item["uri"]; $datarray["object-type"] = ACTIVITY_OBJ_COMMENT; - $datarray["object"] = json_encode($data); + $datarray["object"] = $xml; $datarray["body"] = diaspora2bb($text); @@ -1769,7 +1769,7 @@ class diaspora { return true; } - private function receive_status_message($importer, $data) { + private function receive_status_message($importer, $data, $xml) { $raw_message = unxmlify($data->raw_message); $guid = notags(unxmlify($data->guid)); @@ -1831,7 +1831,7 @@ class diaspora { $datarray["verb"] = ACTIVITY_POST; $datarray["gravity"] = GRAVITY_PARENT; - $datarray["object"] = json_encode($data); + $datarray["object"] = $xml; $datarray["body"] = $body; diff --git a/include/xml.php b/include/xml.php index c2313648ce..c74c23c473 100644 --- a/include/xml.php +++ b/include/xml.php @@ -62,7 +62,7 @@ class xml { function copy(&$source, &$target, $elementname) { if (count($source->children()) == 0) - $target->addChild($elementname, $source); + $target->addChild($elementname, xmlify($source)); else { $child = $target->addChild($elementname); foreach ($source->children() AS $childfield => $childentry) From eed55664fc61a0e285dcf5c814b39496537c7039 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 15 Mar 2016 00:26:28 +0100 Subject: [PATCH 048/485] Reshares now store the original XML as well. --- include/diaspora.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 4c3cb41726..3c3f5cb25a 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -318,7 +318,7 @@ class diaspora { return self::receive_request($importer, $fields); case "reshare": - return self::receive_reshare($importer, $fields); + return self::receive_reshare($importer, $fields, $msg["message"]); case "retraction": return self::receive_retraction($importer, $sender, $fields); @@ -1611,7 +1611,7 @@ class diaspora { return false; } - private function receive_reshare($importer, $data) { + private function receive_reshare($importer, $data, $xml) { $root_author = notags(unxmlify($data->root_author)); $root_guid = notags(unxmlify($data->root_guid)); $guid = notags(unxmlify($data->guid)); @@ -1652,7 +1652,7 @@ class diaspora { $datarray["verb"] = ACTIVITY_POST; $datarray["gravity"] = GRAVITY_PARENT; - $datarray["object"] = json_encode($data); + $datarray["object"] = $xml; $prefix = share_header($original_item["author-name"], $original_item["author-link"], $original_item["author-avatar"], $original_item["guid"], $original_item["created"], $orig_url); From 3f2a23d48c0b588f0a31bb7cdb8b6490f307029f Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 15 Mar 2016 07:05:10 +0100 Subject: [PATCH 049/485] Unused files are removed --- view/templates/diasp_dec_hdr.tpl | 9 ------ view/templates/diaspora_comment.tpl | 12 -------- view/templates/diaspora_comment_relay.tpl | 13 -------- view/templates/diaspora_conversation.tpl | 30 ------------------- view/templates/diaspora_like.tpl | 13 -------- view/templates/diaspora_like_relay.tpl | 14 --------- view/templates/diaspora_message.tpl | 17 ----------- view/templates/diaspora_photo.tpl | 14 --------- view/templates/diaspora_post.tpl | 13 -------- view/templates/diaspora_profile.tpl | 17 ----------- view/templates/diaspora_relay_retraction.tpl | 10 ------- .../diaspora_relayable_retraction.tpl | 12 -------- view/templates/diaspora_reshare.tpl | 14 --------- view/templates/diaspora_retract.tpl | 10 ------- view/templates/diaspora_share.tpl | 9 ------ view/templates/diaspora_signed_retract.tpl | 11 ------- 16 files changed, 218 deletions(-) delete mode 100644 view/templates/diasp_dec_hdr.tpl delete mode 100644 view/templates/diaspora_comment.tpl delete mode 100644 view/templates/diaspora_comment_relay.tpl delete mode 100644 view/templates/diaspora_conversation.tpl delete mode 100644 view/templates/diaspora_like.tpl delete mode 100644 view/templates/diaspora_like_relay.tpl delete mode 100644 view/templates/diaspora_message.tpl delete mode 100644 view/templates/diaspora_photo.tpl delete mode 100644 view/templates/diaspora_post.tpl delete mode 100644 view/templates/diaspora_profile.tpl delete mode 100644 view/templates/diaspora_relay_retraction.tpl delete mode 100644 view/templates/diaspora_relayable_retraction.tpl delete mode 100644 view/templates/diaspora_reshare.tpl delete mode 100644 view/templates/diaspora_retract.tpl delete mode 100644 view/templates/diaspora_share.tpl delete mode 100644 view/templates/diaspora_signed_retract.tpl diff --git a/view/templates/diasp_dec_hdr.tpl b/view/templates/diasp_dec_hdr.tpl deleted file mode 100644 index 136d1ca302..0000000000 --- a/view/templates/diasp_dec_hdr.tpl +++ /dev/null @@ -1,9 +0,0 @@ - - - {{$inner_iv}} - {{$inner_key}} - - {{$author_name}} - {{$author_uri}} - - diff --git a/view/templates/diaspora_comment.tpl b/view/templates/diaspora_comment.tpl deleted file mode 100644 index 107cc73022..0000000000 --- a/view/templates/diaspora_comment.tpl +++ /dev/null @@ -1,12 +0,0 @@ - - - - - {{$guid}} - {{$parent_guid}} - {{$authorsig}} - {{$body}} - {{$handle}} - - - \ No newline at end of file diff --git a/view/templates/diaspora_comment_relay.tpl b/view/templates/diaspora_comment_relay.tpl deleted file mode 100644 index b4f84dc84e..0000000000 --- a/view/templates/diaspora_comment_relay.tpl +++ /dev/null @@ -1,13 +0,0 @@ - - - - - {{$guid}} - {{$parent_guid}} - {{$parentsig}} - {{$authorsig}} - {{$body}} - {{$handle}} - - - \ No newline at end of file diff --git a/view/templates/diaspora_conversation.tpl b/view/templates/diaspora_conversation.tpl deleted file mode 100644 index 28e4cdb98f..0000000000 --- a/view/templates/diaspora_conversation.tpl +++ /dev/null @@ -1,30 +0,0 @@ - - - - - {{$conv.guid}} - {{$conv.subject}} - {{$conv.created_at}} - - {{foreach $conv.messages as $msg}} - - - {{$msg.guid}} - {{$msg.parent_guid}} - {{if $msg.parent_author_signature}} - {{$msg.parent_author_signature}} - {{/if}} - {{$msg.author_signature}} - {{$msg.text}} - {{$msg.created_at}} - {{$msg.diaspora_handle}} - {{$msg.conversation_guid}} - - - {{/foreach}} - - {{$conv.diaspora_handle}} - {{$conv.participant_handles}} - - - diff --git a/view/templates/diaspora_like.tpl b/view/templates/diaspora_like.tpl deleted file mode 100644 index 165b0f5f7b..0000000000 --- a/view/templates/diaspora_like.tpl +++ /dev/null @@ -1,13 +0,0 @@ - - - - - {{$positive}} - {{$guid}} - {{$target_type}} - {{$parent_guid}} - {{$authorsig}} - {{$handle}} - - - diff --git a/view/templates/diaspora_like_relay.tpl b/view/templates/diaspora_like_relay.tpl deleted file mode 100644 index e1696e722a..0000000000 --- a/view/templates/diaspora_like_relay.tpl +++ /dev/null @@ -1,14 +0,0 @@ - - - - - {{$positive}} - {{$guid}} - {{$target_type}} - {{$parent_guid}} - {{$parentsig}} - {{$authorsig}} - {{$handle}} - - - diff --git a/view/templates/diaspora_message.tpl b/view/templates/diaspora_message.tpl deleted file mode 100644 index f9adb833b6..0000000000 --- a/view/templates/diaspora_message.tpl +++ /dev/null @@ -1,17 +0,0 @@ - - - - - {{$msg.guid}} - {{$msg.parent_guid}} - {{if $msg.parent_author_signature}} - {{$msg.parent_author_signature}} - {{/if}} - {{$msg.author_signature}} - {{$msg.text}} - {{$msg.created_at}} - {{$msg.diaspora_handle}} - {{$msg.conversation_guid}} - - - diff --git a/view/templates/diaspora_photo.tpl b/view/templates/diaspora_photo.tpl deleted file mode 100644 index 0330499577..0000000000 --- a/view/templates/diaspora_photo.tpl +++ /dev/null @@ -1,14 +0,0 @@ - - - - - {{$guid}} - {{$handle}} - {{$public}} - {{$created_at}} - {{$path}} - {{$filename}} - {{$msg_guid}} - - - diff --git a/view/templates/diaspora_post.tpl b/view/templates/diaspora_post.tpl deleted file mode 100644 index d6ba97327c..0000000000 --- a/view/templates/diaspora_post.tpl +++ /dev/null @@ -1,13 +0,0 @@ - - - - - {{$body}} - {{$guid}} - {{$handle}} - {{$public}} - {{$created}} - {{$provider}} - - - diff --git a/view/templates/diaspora_profile.tpl b/view/templates/diaspora_profile.tpl deleted file mode 100644 index afbbb1e1a2..0000000000 --- a/view/templates/diaspora_profile.tpl +++ /dev/null @@ -1,17 +0,0 @@ - - - - {{$handle}} - {{$first}} - {{$last}} - {{$large}} - {{$medium}} - {{$small}} - {{$dob}} - {{$gender}} - {{$about}} - {{$location}} - {{$searchable}} - {{$tags}} - - diff --git a/view/templates/diaspora_relay_retraction.tpl b/view/templates/diaspora_relay_retraction.tpl deleted file mode 100644 index c4b44cd05f..0000000000 --- a/view/templates/diaspora_relay_retraction.tpl +++ /dev/null @@ -1,10 +0,0 @@ - - - - {{$guid}} - {{$type}} - {{$handle}} - {{$signature}} - - - diff --git a/view/templates/diaspora_relayable_retraction.tpl b/view/templates/diaspora_relayable_retraction.tpl deleted file mode 100644 index 2ae776d1d0..0000000000 --- a/view/templates/diaspora_relayable_retraction.tpl +++ /dev/null @@ -1,12 +0,0 @@ - - - - - {{$parentsig}} - {{$guid}} - {{$target_type}} - {{$handle}} - {{$authorsig}} - - - diff --git a/view/templates/diaspora_reshare.tpl b/view/templates/diaspora_reshare.tpl deleted file mode 100644 index 6a4776b1bc..0000000000 --- a/view/templates/diaspora_reshare.tpl +++ /dev/null @@ -1,14 +0,0 @@ - - - - - {{$root_handle}} - {{$root_guid}} - {{$guid}} - {{$handle}} - {{$public}} - {{$created}} - {{$provider}} - - - diff --git a/view/templates/diaspora_retract.tpl b/view/templates/diaspora_retract.tpl deleted file mode 100644 index 3ddfcabfa7..0000000000 --- a/view/templates/diaspora_retract.tpl +++ /dev/null @@ -1,10 +0,0 @@ - - - - - {{$guid}} - {{$handle}} - {{$type}} - - - diff --git a/view/templates/diaspora_share.tpl b/view/templates/diaspora_share.tpl deleted file mode 100644 index 0142ab36c5..0000000000 --- a/view/templates/diaspora_share.tpl +++ /dev/null @@ -1,9 +0,0 @@ - - - - - {{$sender}} - {{$recipient}} - - - \ No newline at end of file diff --git a/view/templates/diaspora_signed_retract.tpl b/view/templates/diaspora_signed_retract.tpl deleted file mode 100644 index 83d0def4d2..0000000000 --- a/view/templates/diaspora_signed_retract.tpl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - {{$guid}} - {{$type}} - {{$handle}} - {{$signature}} - - - From 8027854886a7d8a51fb3b97864e01f877403fc4a Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 15 Mar 2016 07:18:11 +0100 Subject: [PATCH 050/485] Removed moved function --- include/diaspora.php | 1 - include/network.php | 58 -------------------------------------------- 2 files changed, 59 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 3c3f5cb25a..d5f2a21d9e 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -517,7 +517,6 @@ class diaspora { * @return string The id of the fcontact entry */ private function add_fcontact($arr, $update = false) { - /// @todo Remove this function from include/network.php if($update) { $r = q("UPDATE `fcontact` SET diff --git a/include/network.php b/include/network.php index c6379e407b..27459112d6 100644 --- a/include/network.php +++ b/include/network.php @@ -862,64 +862,6 @@ function parse_xml_string($s,$strict = true) { return $x; }} -function add_fcontact($arr,$update = false) { - - if($update) { - $r = q("UPDATE `fcontact` SET - `name` = '%s', - `photo` = '%s', - `request` = '%s', - `nick` = '%s', - `addr` = '%s', - `batch` = '%s', - `notify` = '%s', - `poll` = '%s', - `confirm` = '%s', - `alias` = '%s', - `pubkey` = '%s', - `updated` = '%s' - WHERE `url` = '%s' AND `network` = '%s'", - dbesc($arr['name']), - dbesc($arr['photo']), - dbesc($arr['request']), - dbesc($arr['nick']), - dbesc($arr['addr']), - dbesc($arr['batch']), - dbesc($arr['notify']), - dbesc($arr['poll']), - dbesc($arr['confirm']), - dbesc($arr['alias']), - dbesc($arr['pubkey']), - dbesc(datetime_convert()), - dbesc($arr['url']), - dbesc($arr['network']) - ); - } - else { - $r = q("insert into fcontact ( `url`,`name`,`photo`,`request`,`nick`,`addr`, - `batch`, `notify`,`poll`,`confirm`,`network`,`alias`,`pubkey`,`updated` ) - values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", - dbesc($arr['url']), - dbesc($arr['name']), - dbesc($arr['photo']), - dbesc($arr['request']), - dbesc($arr['nick']), - dbesc($arr['addr']), - dbesc($arr['batch']), - dbesc($arr['notify']), - dbesc($arr['poll']), - dbesc($arr['confirm']), - dbesc($arr['network']), - dbesc($arr['alias']), - dbesc($arr['pubkey']), - dbesc(datetime_convert()) - ); - } - - return $r; -} - - function scale_external_images($srctext, $include_link = true, $scale_replace = false) { // Suppress "view full size" From be001d171b385af3650cb8152542f3a60c645f63 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 15 Mar 2016 20:14:08 +0100 Subject: [PATCH 051/485] Values are sanitized, messages are not relayed when there is no signature --- include/diaspora.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index d5f2a21d9e..f4e3132959 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -221,7 +221,9 @@ class diaspora { logger('Message verified.'); - return array('message' => $inner_decrypted, 'author' => $author_link, 'key' => $key); + return array('message' => (string)$inner_decrypted, + 'author' => unxmlify($author_link), + 'key' => (string)$key); } @@ -1801,7 +1803,8 @@ class diaspora { if ($data->photo) { foreach ($data->photo AS $photo) - $body = "[img]".$photo->remote_photo_path.$photo->remote_photo_name."[/img]\n".$body; + $body = "[img]".unxmlify($photo->remote_photo_path). + unxmlify($photo->remote_photo_name)."[/img]\n".$body; $datarray["object-type"] = ACTIVITY_OBJ_PHOTO; } else { @@ -2355,8 +2358,10 @@ class diaspora { $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE `".$sql_sign_id."` = %d LIMIT 1", intval($item["id"])); - if (!$r) - return self::send_followup($item, $owner, $contact, $public_batch); + if (!$r) { + logger("Couldn't fetch signatur for contact ".$contact["addr"]." at item ".$item["guid"]." (".$item["id"].")", LOGGER_DEBUG); + return false; + } $signature = $r[0]; From 071ffd43bf66ff6478c09a4afc6ef010e34d8384 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 16 Mar 2016 11:44:45 +0100 Subject: [PATCH 052/485] DFRN: Mentions were imported as hash tags --- include/dfrn.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/include/dfrn.php b/include/dfrn.php index ad04a91295..1c5ac2b012 100644 --- a/include/dfrn.php +++ b/include/dfrn.php @@ -2022,14 +2022,28 @@ class dfrn { $categories = $xpath->query("atom:category", $entry); if ($categories) { foreach ($categories AS $category) { - foreach($category->attributes AS $attributes) - if ($attributes->name == "term") { + $term = ""; + $scheme = ""; + foreach($category->attributes AS $attributes) { + if ($attributes->name == "term") $term = $attributes->textContent; + + if ($attributes->name == "scheme") + $scheme = $attributes->textContent; + } + + if (($term != "") AND ($scheme != "")) { + $parts = explode(":", $scheme); + if ((count($parts) >= 4) AND (array_shift($parts) == "X-DFRN")) { + $termhash = array_shift($parts); + $termurl = implode(":", $parts); + if(strlen($item["tag"])) $item["tag"] .= ","; - $item["tag"] .= "#[url=".App::get_baseurl()."/search?tag=".$term."]".$term."[/url]"; + $item["tag"] .= $termhash."[url=".$termurl."]".$term."[/url]"; } + } } } From 84a475e5897d5753c45b6cbb0a982893ee2cda1e Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 16 Mar 2016 16:49:54 +0100 Subject: [PATCH 053/485] Missing include --- include/diaspora.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/diaspora.php b/include/diaspora.php index f4e3132959..da69cdc799 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -13,6 +13,7 @@ require_once("include/socgraph.php"); require_once("include/group.php"); require_once("include/xml.php"); require_once("include/datetime.php"); +require_once("include/queue_fn.php"); /** * @brief This class contain functions to create and send Diaspora XML files From 468734a26ee6f7aeadcaaa5a2ba10c3b613c8dcc Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 16 Mar 2016 19:30:46 +0100 Subject: [PATCH 054/485] Added checklist --- include/diaspora.php | 51 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index da69cdc799..f7c38c2271 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -2,6 +2,36 @@ /** * @file include/diaspora.php * @brief The implementation of the diaspora protocol + * + * Checklist: + * + * Checked: + * - send status + * - send comment + * - send like + * - send mail + * - receive status + * - receive reshare + * - receive comment + * - receive like + * - receive connect request + * - receive profile data + * - receive mail + * - relay comment + * - relay like + * - + * - + * + * Unchecked: + * - receive account deletion + * - send share + * - send unshare + * - send status retraction + * - send comment retraction + * - send like retraction + * - relay comment retraction + * - relay like retraction + * - */ require_once("include/items.php"); @@ -2374,16 +2404,19 @@ class diaspora { $msg = json_decode($signature['signed_text'], true); $message = array(); - foreach ($msg AS $field => $data) { - if (!$item["deleted"]) { - if ($field == "author") - $field = "diaspora_handle"; - if ($field == "parent_type") - $field = "target_type"; - } + if (is_array($msg)) { + foreach ($msg AS $field => $data) { + if (!$item["deleted"]) { + if ($field == "author") + $field = "diaspora_handle"; + if ($field == "parent_type") + $field = "target_type"; + } - $message[$field] = $data; - } + $message[$field] = $data; + } + } else + logger("Signature text for item ".$item["guid"]." (".$item["id"].") couldn't be extracted: ".$signature['signed_text'], LOGGER_DEBUG); } if ($item["deleted"]) { From e058feed289269e9edccd3047318d8b06dce7739 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 16 Mar 2016 21:27:07 +0100 Subject: [PATCH 055/485] Better reshare detection --- include/diaspora.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index f7c38c2271..4a6cbad131 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1600,7 +1600,7 @@ class diaspora { // Maybe it is already a reshared item? // Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares - if (self::is_reshare($r[0]["body"])) + if (self::is_reshare($r[0]["body"], false)) $r = array(); else return $r[0]; @@ -2130,7 +2130,7 @@ class diaspora { return self::build_and_transmit($owner, $contact, "retraction", $message); } - public static function is_reshare($body) { + public static function is_reshare($body, $complete = true) { $body = trim($body); // Skip if it isn't a pure repeated messages @@ -2147,6 +2147,10 @@ class diaspora { if ($body == $attributes) return(false); + // If we don't do the complete check we quit here + if (!$complete) + return true; + $guid = ""; preg_match("/guid='(.*?)'/ism", $attributes, $matches); if ($matches[1] != "") From 88fea17cab1fa3e1e8fb7bb0e2c3ea3480dbb8ee Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 17 Mar 2016 00:37:44 +0100 Subject: [PATCH 056/485] Everything tested, one open to-do --- include/delivery.php | 3 ++- include/diaspora.php | 40 +++++++++++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/include/delivery.php b/include/delivery.php index 9ac9f2391b..fe33774382 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -243,7 +243,8 @@ function delivery_run(&$argv, &$argc){ if ((strlen($parent['allow_cid'])) || (strlen($parent['allow_gid'])) || (strlen($parent['deny_cid'])) - || (strlen($parent['deny_gid']))) { + || (strlen($parent['deny_gid'])) + || $parent["private"]) { $public_message = false; // private recipients, not public } diff --git a/include/diaspora.php b/include/diaspora.php index 4a6cbad131..870466497d 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -10,6 +10,11 @@ * - send comment * - send like * - send mail + * - send status retraction + * - send comment retraction on own post + * - send comment retraction on diaspora post + * - send like retraction on own post + * - send like retraction on diaspora post * - receive status * - receive reshare * - receive comment @@ -17,21 +22,21 @@ * - receive connect request * - receive profile data * - receive mail + * - receive comment retraction + * - receive like retraction * - relay comment * - relay like - * - - * - + * - relay comment retraction from diaspora + * - relay comment retraction from friendica + * - relay like retraction from diaspora + * - relay like retraction from friendica * - * Unchecked: + * Should work: * - receive account deletion * - send share * - send unshare - * - send status retraction - * - send comment retraction - * - send like retraction - * - relay comment retraction - * - relay like retraction - * - + * + * Unchecked: */ require_once("include/items.php"); @@ -2394,7 +2399,10 @@ class diaspora { intval($item["id"])); if (!$r) { - logger("Couldn't fetch signatur for contact ".$contact["addr"]." at item ".$item["guid"]." (".$item["id"].")", LOGGER_DEBUG); + if ($item["deleted"]) + return self::send_retraction($item, $owner, $contact, $public_batch); + + logger("Couldn't fetch signatur for item ".$item["guid"]." (".$item["id"].")", LOGGER_DEBUG); return false; } @@ -2436,6 +2444,9 @@ class diaspora { public static function send_retraction($item, $owner, $contact, $public_batch = false) { + /// @todo Fetch handle from every contact (via gcontact) + $itemaddr = self::handle_from_contact($item["contact-id"]); + $myaddr = self::my_handle($owner); // Check whether the retraction is for a top-level post or whether it's a relayable @@ -2451,9 +2462,16 @@ class diaspora { $message = array("target_guid" => $item['guid'], "target_type" => $target_type, - "sender_handle" => $myaddr, + "sender_handle" => $itemaddr, "target_author_signature" => base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'))); + if ($itemaddr != $myaddr) { + $message["parent_author_signature"] = $message["target_author_signature"]; + unset($message["target_author_signature"]); + } + + logger("Got message ".print_r($message, true), LOGGER_DEBUG); + return self::build_and_transmit($owner, $contact, $msg_type, $message, $public_batch, $item["guid"]); } From 16b92af71f0d838f7859869461f1acea25329d95 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 17 Mar 2016 12:24:23 +0100 Subject: [PATCH 057/485] Retraction do work as well --- database.sql | 4 +-- doc/database/db_sign.md | 1 - include/dbstructure.php | 2 -- include/diaspora.php | 73 ++++++++++++++++------------------------- include/items.php | 51 ---------------------------- include/like.php | 69 -------------------------------------- include/notifier.php | 7 ---- 7 files changed, 29 insertions(+), 178 deletions(-) diff --git a/database.sql b/database.sql index 02e5c9b378..89b821e23a 100644 --- a/database.sql +++ b/database.sql @@ -901,13 +901,11 @@ CREATE TABLE IF NOT EXISTS `session` ( CREATE TABLE IF NOT EXISTS `sign` ( `id` int(10) unsigned NOT NULL auto_increment, `iid` int(10) unsigned NOT NULL DEFAULT 0, - `retract_iid` int(10) unsigned NOT NULL DEFAULT 0, `signed_text` mediumtext NOT NULL, `signature` text NOT NULL, `signer` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY(`id`), - INDEX `iid` (`iid`), - INDEX `retract_iid` (`retract_iid`) + INDEX `iid` (`iid`) ) DEFAULT CHARSET=utf8; -- diff --git a/doc/database/db_sign.md b/doc/database/db_sign.md index 8de59ac675..6986613e59 100644 --- a/doc/database/db_sign.md +++ b/doc/database/db_sign.md @@ -5,7 +5,6 @@ Table sign | ------------ | ------------- | ---------------- | ---- | --- | ------- | --------------- | | id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | iid | item.id | int(10) unsigned | NO | MUL | 0 | | -| retract_iid | | int(10) unsigned | NO | MUL | 0 | | | signed_text | | mediumtext | NO | | NULL | | | signature | | text | NO | | NULL | | | signer | | varchar(255) | NO | | | | diff --git a/include/dbstructure.php b/include/dbstructure.php index e5e748bb24..e34e409023 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -1235,7 +1235,6 @@ function db_definition() { "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "iid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "retract_iid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), "signed_text" => array("type" => "mediumtext", "not null" => "1"), "signature" => array("type" => "text", "not null" => "1"), "signer" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -1243,7 +1242,6 @@ function db_definition() { "indexes" => array( "PRIMARY" => array("id"), "iid" => array("iid"), - "retract_iid" => array("retract_iid"), ) ); $database["spam"] = array( diff --git a/include/diaspora.php b/include/diaspora.php index 870466497d..c888959d71 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -12,8 +12,8 @@ * - send mail * - send status retraction * - send comment retraction on own post - * - send comment retraction on diaspora post * - send like retraction on own post + * - send comment retraction on diaspora post * - send like retraction on diaspora post * - receive status * - receive reshare @@ -30,10 +30,10 @@ * - relay comment retraction from friendica * - relay like retraction from diaspora * - relay like retraction from friendica + * - send share * * Should work: * - receive account deletion - * - send share * - send unshare * * Unchecked: @@ -610,15 +610,21 @@ class diaspora { return $r; } - public static function handle_from_contact($contact_id) { + public static function handle_from_contact($contact_id, $gcontact_id = 0) { $handle = False; - logger("contact id is ".$contact_id, LOGGER_DEBUG); + logger("contact id is ".$contact_id." - gcontact id is ".$gcontact_id, LOGGER_DEBUG); + + if ($gcontact_id != 0) { + $r = q("SELECT `addr` FROM `gcontact` WHERE `id` = %d AND `addr` != ''", + intval($gcontact_id)); + if ($r) + return $r[0]["addr"]; + } $r = q("SELECT `network`, `addr`, `self`, `url`, `nick` FROM `contact` WHERE `id` = %d", - intval($contact_id) - ); - if($r) { + intval($contact_id)); + if ($r) { $contact = $r[0]; logger("contact 'self' = ".$contact['self']." 'url' = ".$contact['url'], LOGGER_DEBUG); @@ -1759,16 +1765,6 @@ class diaspora { // Now check if the retraction needs to be relayed by us if($p[0]["origin"]) { - - // Formerly we stored the signed text, the signature and the author in different fields. - // We now store the raw data so that we are more flexible. - q("INSERT INTO `sign` (`retract_iid`,`signed_text`) VALUES (%d,'%s')", - intval($r[0]["id"]), - dbesc(json_encode($data)) - ); - $s = q("select * from sign where retract_iid = %d", intval($r[0]["id"])); - logger("Stored signatur for item ".$r[0]["id"]." - ".print_r($s, true), LOGGER_DEBUG); - // notify others proc_run("php", "include/notifier.php", "drop", $r[0]["id"]); } @@ -2380,28 +2376,21 @@ class diaspora { public static function send_relay($item, $owner, $contact, $public_batch = false) { - if ($item["deleted"]) { - $sql_sign_id = "retract_iid"; - $type = "relayable_retraction"; - } elseif ($item['verb'] === ACTIVITY_LIKE) { - $sql_sign_id = "iid"; + if ($item["deleted"]) + return self::send_retraction($item, $owner, $contact, $public_batch, true); + elseif ($item['verb'] === ACTIVITY_LIKE) $type = "like"; - } else { - $sql_sign_id = "iid"; + else $type = "comment"; - } logger("Got relayable data ".$type." for item ".$item["guid"]." (".$item["id"].")", LOGGER_DEBUG); // fetch the original signature - $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE `".$sql_sign_id."` = %d LIMIT 1", + $r = q("SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE `iid` = %d LIMIT 1", intval($item["id"])); if (!$r) { - if ($item["deleted"]) - return self::send_retraction($item, $owner, $contact, $public_batch); - logger("Couldn't fetch signatur for item ".$item["guid"]." (".$item["id"].")", LOGGER_DEBUG); return false; } @@ -2431,23 +2420,17 @@ class diaspora { logger("Signature text for item ".$item["guid"]." (".$item["id"].") couldn't be extracted: ".$signature['signed_text'], LOGGER_DEBUG); } - if ($item["deleted"]) { - $signed_text = $message["target_guid"].';'.$message["target_type"]; - $message["parent_author_signature"] = base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); - } else - $message["parent_author_signature"] = self::signature($owner, $message); + $message["parent_author_signature"] = self::signature($owner, $message); logger("Relayed data ".print_r($message, true), LOGGER_DEBUG); return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); } - public static function send_retraction($item, $owner, $contact, $public_batch = false) { + public static function send_retraction($item, $owner, $contact, $public_batch = false, $relay = false) { - /// @todo Fetch handle from every contact (via gcontact) - $itemaddr = self::handle_from_contact($item["contact-id"]); - - $myaddr = self::my_handle($owner); + $itemaddr = self::handle_from_contact($item["contact-id"], $item["gcontact-id"]); + //$myaddr = self::my_handle($owner); // Check whether the retraction is for a top-level post or whether it's a relayable if ($item["uri"] !== $item["parent-uri"]) { @@ -2458,17 +2441,17 @@ class diaspora { $target_type = "StatusMessage"; } + if ($relay AND ($item["uri"] !== $item["parent-uri"])) + $signature = "parent_author_signature"; + else + $signature = "target_author_signature"; + $signed_text = $item["guid"].";".$target_type; $message = array("target_guid" => $item['guid'], "target_type" => $target_type, "sender_handle" => $itemaddr, - "target_author_signature" => base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'))); - - if ($itemaddr != $myaddr) { - $message["parent_author_signature"] = $message["target_author_signature"]; - unset($message["target_author_signature"]); - } + $signature => base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'))); logger("Got message ".print_r($message, true), LOGGER_DEBUG); diff --git a/include/items.php b/include/items.php index 8d6b5b471c..f8c3149d58 100644 --- a/include/items.php +++ b/include/items.php @@ -1980,9 +1980,6 @@ function drop_item($id,$interactive = true) { intval($r[0]['id']) ); } - - // Add a relayable_retraction signature for Diaspora. - store_diaspora_retract_sig($item, $a->user, $a->get_baseurl()); } $drop_id = intval($item['id']); @@ -2115,51 +2112,3 @@ function posted_date_widget($url,$uid,$wall) { )); return $o; } - -function store_diaspora_retract_sig($item, $user, $baseurl) { - // Note that we can't add a target_author_signature - // if the comment was deleted by a remote user. That should be ok, because if a remote user is deleting - // the comment, that means we're the home of the post, and Diaspora will only - // check the parent_author_signature of retractions that it doesn't have to relay further - // - // I don't think this function gets called for an "unlike," but I'll check anyway - - $enabled = intval(get_config('system','diaspora_enabled')); - if(! $enabled) { - logger('drop_item: diaspora support disabled, not storing retraction signature', LOGGER_DEBUG); - return; - } - - logger('drop_item: storing diaspora retraction signature'); - - $signed_text = $item['guid'] . ';' . ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment'); - - if(local_user() == $item['uid']) { - - $handle = $user['nickname'] . '@' . substr($baseurl, strpos($baseurl,'://') + 3); - $authorsig = base64_encode(rsa_sign($signed_text,$user['prvkey'],'sha256')); - } - else { - $r = q("SELECT `nick`, `url` FROM `contact` WHERE `id` = '%d' LIMIT 1", - $item['contact-id'] // If this function gets called, drop_item() has already checked remote_user() == $item['contact-id'] - ); - if(count($r)) { - // The below handle only works for NETWORK_DFRN. I think that's ok, because this function - // only handles DFRN deletes - $handle_baseurl_start = strpos($r['url'],'://') + 3; - $handle_baseurl_length = strpos($r['url'],'/profile') - $handle_baseurl_start; - $handle = $r['nick'] . '@' . substr($r['url'], $handle_baseurl_start, $handle_baseurl_length); - $authorsig = ''; - } - } - - if(isset($handle)) - q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", - intval($item['id']), - dbesc($signed_text), - dbesc($authorsig), - dbesc($handle) - ); - - return; -} diff --git a/include/like.php b/include/like.php index 646e0727be..2e5367e51e 100644 --- a/include/like.php +++ b/include/like.php @@ -151,9 +151,6 @@ function do_like($item_id, $verb) { intval($like_item['id']) ); - // Save the author information for the unlike in case we need to relay to Diaspora - store_diaspora_like_retract_sig($activity, $item, $like_item, $contact); - $like_item_id = $like_item['id']; proc_run('php',"include/notifier.php","like","$like_item_id"); @@ -251,72 +248,6 @@ EOT; return true; } - - -function store_diaspora_like_retract_sig($activity, $item, $like_item, $contact) { - // Note that we can only create a signature for a user of the local server. We don't have - // a key for remote users. That is ok, because if a remote user is "unlike"ing a post, it - // means we are the relay, and for relayable_retractions, Diaspora - // only checks the parent_author_signature if it doesn't have to relay further - // - // If $item['resource-id'] exists, it means the item is a photo. Diaspora doesn't support - // likes on photos, so don't bother. - - $enabled = intval(get_config('system','diaspora_enabled')); - if(! $enabled) { - logger('mod_like: diaspora support disabled, not storing like retraction signature', LOGGER_DEBUG); - return; - } - - logger('mod_like: storing diaspora like retraction signature'); - - if(($activity === ACTIVITY_LIKE) && (! $item['resource-id'])) { - $signed_text = $like_item['guid'] . ';' . 'Like'; - - // Only works for NETWORK_DFRN - $contact_baseurl_start = strpos($contact['url'],'://') + 3; - $contact_baseurl_length = strpos($contact['url'],'/profile') - $contact_baseurl_start; - $contact_baseurl = substr($contact['url'], $contact_baseurl_start, $contact_baseurl_length); - $diaspora_handle = $contact['nick'] . '@' . $contact_baseurl; - - // This code could never had worked (the return values form the queries were used in a wrong way. - // Additionally it is needlessly complicated. Either the contact is owner or not. And we have this data already. -/* - // Get contact's private key if he's a user of the local Friendica server - $r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1", - dbesc($contact['url']) - ); - - if( $r) { - $contact_uid = $r['uid']; - $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1", - intval($contact_uid) - ); -*/ - // Is the contact the owner? Then fetch the private key - if ($contact['self'] AND ($contact['uid'] > 0)) { - $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1", - intval($contact['uid']) - ); - - if($r) - $authorsig = base64_encode(rsa_sign($signed_text,$r[0]['prvkey'],'sha256')); - } - - if(! isset($authorsig)) - $authorsig = ''; - - q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", - intval($like_item['id']), - dbesc($signed_text), - dbesc($authorsig), - dbesc($diaspora_handle) - ); - } - - return; -} - function store_diaspora_like_sig($activity, $post_type, $contact, $post_id) { // Note that we can only create a signature for a user of the local server. We don't have // a key for remote users. That is ok, because if a remote user is "unlike"ing a post, it diff --git a/include/notifier.php b/include/notifier.php index e65da3adf2..a46744f070 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -628,13 +628,6 @@ function notifier_run(&$argv, &$argc){ proc_run('php','include/pubsubpublish.php'); } - // If the item was deleted, clean up the `sign` table - /* if($target_item['deleted']) { - $r = q("DELETE FROM sign where `retract_iid` = %d", - intval($target_item['id']) - ); - } */ - logger('notifier: calling hooks', LOGGER_DEBUG); if($normal_mode) From bc579ff799595d7c4271e3562b554d5cecaf5b5b Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Thu, 17 Mar 2016 17:41:06 +0100 Subject: [PATCH 058/485] added title element to emoji images in main repository --- include/text.php | 70 ++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/include/text.php b/include/text.php index 07524e851d..c868499cc6 100644 --- a/include/text.php +++ b/include/text.php @@ -1148,41 +1148,41 @@ function smilies($s, $sample = false) { ); $icons = array( - '<3', - '</3', - '<\\3', - ':-)', - ';-)', - ':-(', - ':-P', - ':-p', - ':-\', - ':-\', - ':-x', - ':-X', - ':-D', - '8-|', - '8-O', - ':-O', - '\\o/', - 'o.O', - 'O.o', - 'o_O', - 'O_o', - ':\'(', - ':-!', - ':-/', - ':-[', - '8-)', - ':beer', - ':homebrew', - ':coffee', - ':facepalm', - ':like', - ':dislike', - '~friendica ~friendica', - 'redredmatrix', - 'redredmatrix' + '<3', + '</3', + '<\\3', + ':-)', + ';-)', + ':-(', + ':-P', + ':-p', + ':-\', + ':-\', + ':-x', + ':-X', + ':-D', + '8-|', + '8-O', + ':-O', + '\\o/', + 'o.O', + 'O.o', + 'o_O', + 'O_o', + ':\'(', + ':-!', + ':-/', + ':-[', + '8-)', + ':beer', + ':homebrew', + ':coffee', + ':facepalm', + ':like', + ':dislike', + '~friendica ~friendica', + 'redred#matrix', + 'redred#matrixmatrix' ); $params = array('texts' => $texts, 'icons' => $icons, 'string' => $s); From fab48926d07907568aea5fb9766dad8a132a97c7 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 17 Mar 2016 23:44:18 +0100 Subject: [PATCH 059/485] Added some documentation, script to generate a basic doxygen header --- include/diaspora.php | 479 ++++++++++++++++++++++++++++++++++++++++- util/createdoxygen.php | 82 +++++++ 2 files changed, 552 insertions(+), 9 deletions(-) create mode 100755 util/createdoxygen.php diff --git a/include/diaspora.php b/include/diaspora.php index c888959d71..dd0efa1d73 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -56,6 +56,13 @@ require_once("include/queue_fn.php"); */ class diaspora { + /** + * @brief Return a list of relay servers + * + * This is an experimental Diaspora feature. + * + * @return array of relay servers + */ public static function relay_list() { $serverdata = get_config("system", "relay_server"); @@ -100,6 +107,15 @@ class diaspora { return $relay; } + /** + * @brief repairs a signature that was double encoded + * + * @param string $signature The signature + * @param string $handle The handle of the signature owner + * @param integer $level This value is only set inside this function to avoid endless loops + * + * @return the repaired signature + */ function repair_signature($signature, $handle = "", $level = 1) { if ($signature == "") @@ -120,7 +136,7 @@ class diaspora { /** * @brief: Decodes incoming Diaspora message * - * @param array $importer from user table + * @param array $importer Array of the importer user * @param string $xml urldecoded Diaspora salmon * * @return array @@ -610,6 +626,14 @@ class diaspora { return $r; } + /** + * @brief get a handle (user@domain.tld) from a given contact id or gcontact id + * + * @param int $contact_id The id in the contact table + * @param int $gcontact_id The id in the gcontact table + * + * @return string the handle + */ public static function handle_from_contact($contact_id, $gcontact_id = 0) { $handle = False; @@ -642,6 +666,14 @@ class diaspora { return $handle; } + /** + * @brief Get a contact id for a given handle + * + * @param int $uid The user id + * @param string $handle The handle in the format user@domain.tld + * + * @return The contact id + */ private function contact_by_handle($uid, $handle) { $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1", intval($uid), @@ -664,6 +696,15 @@ class diaspora { return false; } + /** + * @brief Check if posting is allowed for this contact + * + * @param array $importer Array of the importer user + * @param array $contact The contact that is checked + * @param bool $is_comment Is the check for a comment? + * + * @return bool is the contact allowed to post? + */ private function post_allow($importer, $contact, $is_comment = false) { // perhaps we were already sharing with this person. Now they're sharing with us. @@ -694,6 +735,15 @@ class diaspora { return false; } + /** + * @brief Fetches the contact id for a handle and checks if posting is allowed + * + * @param array $importer Array of the importer user + * @param string $handle The checked handle in the format user@domain.tld + * @param bool $is_comment Is the check for a comment? + * + * @return bool is posting allowed? + */ private function allowed_contact_by_handle($importer, $handle, $is_comment = false) { $contact = self::contact_by_handle($importer["uid"], $handle); if (!$contact) { @@ -708,6 +758,14 @@ class diaspora { return $contact; } + /** + * @brief Does the message already exists on the system? + * + * @param int $uid The user id + * @param string $guid The guid of the message + * + * @return bool "true" if the message already was stored into the system + */ private function message_exists($uid, $guid) { $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", intval($uid), @@ -722,6 +780,11 @@ class diaspora { return false; } + /** + * @brief Checks for links to posts in a message + * + * @param array $item The item array + */ private function fetch_guid($item) { preg_replace_callback("&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi", function ($match) use ($item){ @@ -729,11 +792,26 @@ class diaspora { },$item["body"]); } + /** + * @brief sub function of "fetch_guid" + * + * @param array $match array containing a link that has to be checked for a message link + * @param array $item The item array + */ private function fetch_guid_sub($match, $item) { if (!self::store_by_guid($match[1], $item["author-link"])) self::store_by_guid($match[1], $item["owner-link"]); } + /** + * @brief Fetches an item with a given guid from a given server + * + * @param string $guid the message guid + * @param string $server The server address + * @param int $uid The user id of the user + * + * @return int the message id of the stored message or false + */ private function store_by_guid($guid, $server, $uid = 0) { $serverparts = parse_url($server); $server = $serverparts["scheme"]."://".$serverparts["host"]; @@ -751,6 +829,15 @@ class diaspora { return self::dispatch_public($msg); } + /** + * @brief + * + * @param string $guid message guid + * @param $server + * @param $level + * + * @return + */ private function message($guid, $server, $level = 0) { if ($level > 5) @@ -794,6 +881,16 @@ class diaspora { return $msg; } + /** + * @brief + * + * @param int $uid The user id + * @param string $guid message guid + * @param $author + * @param array $contact The contact that is checked + * + * @return + */ private function parent_item($uid, $guid, $author, $contact) { $r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `origin`, `author-name`, `author-link`, `author-avatar`, @@ -829,6 +926,15 @@ class diaspora { } } + /** + * @brief + * + * @param array $contact The contact that is checked + * @param $person + * @param int $uid The user id + * + * @return + */ private function author_contact_by_url($contact, $person, $uid) { $r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1", @@ -844,10 +950,25 @@ class diaspora { return (array("cid" => $cid, "network" => $network)); } + /** + * @brief Is the profile a hubzilla profile? + * + * @param string $url The profile link + * + * @return bool is it a hubzilla server? + */ public static function is_redmatrix($url) { return(strstr($url, "/channel/")); } + /** + * @brief Generate a post link with a given handle and message guid + * + * @param $addr + * @param string $guid message guid + * + * @return string the post link + */ private function plink($addr, $guid) { $r = q("SELECT `url`, `nick`, `network` FROM `fcontact` WHERE `addr`='%s' LIMIT 1", dbesc($addr)); @@ -870,6 +991,14 @@ class diaspora { return "https://".substr($addr,strpos($addr,"@")+1)."/posts/".$guid; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param object $data The message object + * + * @return + */ private function receive_account_deletion($importer, $data) { $author = notags(unxmlify($data->author)); @@ -884,6 +1013,16 @@ class diaspora { return true; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param string $sender The sender of the message + * @param object $data The message object + * @param string $xml The original XML of the message + * + * @return int The message id of the generated comment or "false" if there was an error + */ private function receive_comment($importer, $sender, $data, $xml) { $guid = notags(unxmlify($data->guid)); $parent_guid = notags(unxmlify($data->parent_guid)); @@ -961,6 +1100,18 @@ class diaspora { return $message_id; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param array $contact The contact that is checked + * @param object $data The message object + * @param $msg + * @param $mesg + * @param $conversation + * + * @return + */ private function receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation) { $guid = notags(unxmlify($data->guid)); $subject = notags(unxmlify($data->subject)); @@ -1077,6 +1228,15 @@ class diaspora { )); } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param $msg + * @param object $data The message object + * + * @return + */ private function receive_conversation($importer, $msg, $data) { $guid = notags(unxmlify($data->guid)); $subject = notags(unxmlify($data->subject)); @@ -1134,6 +1294,15 @@ class diaspora { return true; } + /** + * @brief + * + * @param array $contact The contact that is checked + * @param $parent_item + * @param string $guid message guid + * + * @return + */ private function construct_like_body($contact, $parent_item, $guid) { $bodyverb = t('%1$s likes %2$s\'s %3$s'); @@ -1144,6 +1313,14 @@ class diaspora { return sprintf($bodyverb, $ulink, $alink, $plink); } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param $parent_item + * + * @return + */ private function construct_like_object($importer, $parent_item) { $objtype = ACTIVITY_OBJ_NOTE; $link = ''; @@ -1159,6 +1336,15 @@ class diaspora { return xml::from_array($xmldata, $xml, true); } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param string $sender The sender of the message + * @param object $data The message object + * + * @return int The message id of the generated like or "false" if there was an error + */ private function receive_like($importer, $sender, $data) { $positive = notags(unxmlify($data->positive)); $guid = notags(unxmlify($data->guid)); @@ -1247,6 +1433,14 @@ class diaspora { return $message_id; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param object $data The message object + * + * @return + */ private function receive_message($importer, $data) { $guid = notags(unxmlify($data->guid)); $parent_guid = notags(unxmlify($data->parent_guid)); @@ -1318,27 +1512,59 @@ class diaspora { return true; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param object $data The message object + * + * @return bool always true + */ private function receive_participation($importer, $data) { // I'm not sure if we can fully support this message type return true; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param object $data The message object + * + * @return + */ private function receive_photo($importer, $data) { // There doesn't seem to be a reason for this function, since the photo data is transmitted in the status message as well return true; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param object $data The message object + * + * @return + */ private function receive_poll_participation($importer, $data) { // We don't support polls by now return true; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param object $data The message object + * + * @return + */ private function receive_profile($importer, $data) { $author = notags(unxmlify($data->author)); $contact = self::contact_by_handle($importer["uid"], $author); if (!$contact) - return; + return false; $name = unxmlify($data->first_name).((strlen($data->last_name)) ? " ".unxmlify($data->last_name) : ""); $image_url = unxmlify($data->image_url); @@ -1418,6 +1644,14 @@ class diaspora { return true; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param array $contact The contact that is checked + * + * @return + */ private function receive_request_make_friend($importer, $contact) { $a = get_app(); @@ -1485,6 +1719,14 @@ class diaspora { } } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param object $data The message object + * + * @return + */ private function receive_request($importer, $data) { $author = unxmlify($data->author); $recipient = unxmlify($data->recipient); @@ -1598,6 +1840,15 @@ class diaspora { return true; } + /** + * @brief + * + * @param string $guid message guid + * @param $orig_author + * @param $author + * + * @return + */ private function original_item($guid, $orig_author, $author) { // Do we already have this item? @@ -1654,6 +1905,15 @@ class diaspora { return false; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param object $data The message object + * @param string $xml The original XML of the message + * + * @return + */ private function receive_reshare($importer, $data, $xml) { $root_author = notags(unxmlify($data->root_author)); $root_guid = notags(unxmlify($data->root_guid)); @@ -1719,6 +1979,15 @@ class diaspora { return $message_id; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param array $contact The contact that is checked + * @param object $data The message object + * + * @return + */ private function item_retraction($importer, $contact, $data) { $target_type = notags(unxmlify($data->target_type)); $target_guid = notags(unxmlify($data->target_guid)); @@ -1770,6 +2039,15 @@ class diaspora { } } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param string $sender The sender of the message + * @param object $data The message object + * + * @return + */ private function receive_retraction($importer, $sender, $data) { $target_type = notags(unxmlify($data->target_type)); @@ -1802,6 +2080,15 @@ class diaspora { return true; } + /** + * @brief + * + * @param array $importer Array of the importer user + * @param object $data The message object + * @param string $xml The original XML of the message + * + * @return + */ private function receive_status_message($importer, $data, $xml) { $raw_message = unxmlify($data->raw_message); @@ -1895,6 +2182,13 @@ class diaspora { * Here are all the functions that are needed to transmit data with the Diaspora protocol * ******************************************************************************************/ + /** + * @brief + * + * @param $me + * + * @return + */ private function my_handle($me) { if ($contact["addr"] != "") return $contact["addr"]; @@ -1904,6 +2198,17 @@ class diaspora { return $me["nickname"]."@".substr(App::get_baseurl(), strpos(App::get_baseurl(),"://") + 3); } + /** + * @brief + * + * @param $msg + * @param $user + * @param array $contact The contact that is checked + * @param $prvkey + * @param $pubkey + * + * @return + */ private function build_public_message($msg, $user, $contact, $prvkey, $pubkey) { logger("Message: ".$msg, LOGGER_DATA); @@ -1939,6 +2244,17 @@ class diaspora { return $magic_env; } + /** + * @brief + * + * @param $msg + * @param $user + * @param array $contact The contact that is checked + * @param $prvkey + * @param $pubkey + * + * @return + */ private function build_private_message($msg, $user, $contact, $prvkey, $pubkey) { logger("Message: ".$msg, LOGGER_DATA); @@ -2018,6 +2334,18 @@ class diaspora { return $magic_env; } + /** + * @brief + * + * @param $msg + * @param $user + * @param array $contact The contact that is checked + * @param $prvkey + * @param $pubkey + * @param $public + * + * @return + */ private function build_message($msg, $user, $contact, $prvkey, $pubkey, $public = false) { if ($public) @@ -2030,6 +2358,14 @@ class diaspora { return $slap; } + /** + * @brief + * + * @param array $owner the array of the item owner + * @param $message + * + * @return + */ private function signature($owner, $message) { $sigmsg = $message; unset($sigmsg["author_signature"]); @@ -2040,6 +2376,18 @@ class diaspora { return base64_encode(rsa_sign($signed_text, $owner["uprvkey"], "sha256")); } + /** + * @brief + * + * @param array $owner the array of the item owner + * @param array $contact The contact that is checked + * @param $slap + * @param bool $public_batch Is it a public post? + * @param $queue_run + * @param string $guid message guid + * + * @return + */ public static function transmit($owner, $contact, $slap, $public_batch, $queue_run=false, $guid = "") { $a = get_app(); @@ -2092,6 +2440,19 @@ class diaspora { } + /** + * @brief + * + * @param array $owner the array of the item owner + * @param array $contact The contact that is checked + * @param $type + * @param $message + * @param bool $public_batch Is it a public post? + * @param string $guid message guid + * @param $spool + * + * @return + */ private function build_and_transmit($owner, $contact, $type, $message, $public_batch = false, $guid = "", $spool = false) { $data = array("XML" => array("post" => array($type => $message))); @@ -2114,6 +2475,14 @@ class diaspora { return $return_code; } + /** + * @brief + * + * @param array $owner the array of the item owner + * @param array $contact The contact that is checked + * + * @return int The result of the transmission + */ public static function send_share($owner,$contact) { $message = array("sender_handle" => self::my_handle($owner), @@ -2122,6 +2491,14 @@ class diaspora { return self::build_and_transmit($owner, $contact, "request", $message); } + /** + * @brief + * + * @param array $owner the array of the item owner + * @param array $contact The contact that is checked + * + * @return int The result of the transmission + */ public static function send_unshare($owner,$contact) { $message = array("post_guid" => $owner["guid"], @@ -2131,6 +2508,14 @@ class diaspora { return self::build_and_transmit($owner, $contact, "retraction", $message); } + /** + * @brief + * + * @param $body + * @param $complete + * + * @return + */ public static function is_reshare($body, $complete = true) { $body = trim($body); @@ -2202,6 +2587,16 @@ class diaspora { return($ret); } + /** + * @brief + * + * @param array $item The item that will be exported + * @param array $owner the array of the item owner + * @param array $contact The contact that is checked + * @param bool $public_batch Is it a public post? + * + * @return int The result of the transmission + */ public static function send_status($item, $owner, $contact, $public_batch = false) { $myaddr = self::my_handle($owner); @@ -2269,10 +2664,16 @@ class diaspora { return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); } + /** + * @brief + * + * @param array $item The item that will be exported + * @param array $owner the array of the item owner + * + * @return + */ private function construct_like($item, $owner) { - $myaddr = self::my_handle($owner); - $p = q("SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1", dbesc($item["thr-parent"])); if(!$p) @@ -2288,13 +2689,19 @@ class diaspora { "target_type" => $target_type, "parent_guid" => $parent["guid"], "author_signature" => $authorsig, - "diaspora_handle" => $myaddr)); + "diaspora_handle" => self::my_handle($owner))); } + /** + * @brief + * + * @param array $item The item that will be exported + * @param array $owner the array of the item owner + * + * @return + */ private function construct_comment($item, $owner) { - $myaddr = self::my_handle($owner); - $p = q("SELECT `guid` FROM `item` WHERE `parent` = %d AND `id` = %d LIMIT 1", intval($item["parent"]), intval($item["parent"]) @@ -2311,9 +2718,19 @@ class diaspora { "parent_guid" => $parent["guid"], "author_signature" => "", "text" => $text, - "diaspora_handle" => $myaddr)); + "diaspora_handle" => self::my_handle($owner))); } + /** + * @brief Send a like or a comment + * + * @param array $item The item that will be exported + * @param array $owner the array of the item owner + * @param array $contact The contact that is checked + * @param bool $public_batch Is it a public post? + * + * @return int The result of the transmission + */ public static function send_followup($item,$owner,$contact,$public_batch = false) { if($item['verb'] === ACTIVITY_LIKE) { @@ -2332,6 +2749,14 @@ class diaspora { return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); } + /** + * @brief + * + * @param array $item The item that will be exported + * @param $signature + * + * @return int The result of the transmission + */ private function message_from_signatur($item, $signature) { // Split the signed text @@ -2374,6 +2799,16 @@ class diaspora { return $message; } + /** + * @brief + * + * @param array $item The item that will be exported + * @param array $owner the array of the item owner + * @param array $contact The contact that is checked + * @param bool $public_batch Is it a public post? + * + * @return int The result of the transmission + */ public static function send_relay($item, $owner, $contact, $public_batch = false) { if ($item["deleted"]) @@ -2427,10 +2862,20 @@ class diaspora { return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]); } + /** + * @brief + * + * @param array $item The item that will be exported + * @param array $owner the array of the item owner + * @param array $contact The contact that is checked + * @param bool $public_batch Is it a public post? + * @param $relay + * + * @return int The result of the transmission + */ public static function send_retraction($item, $owner, $contact, $public_batch = false, $relay = false) { $itemaddr = self::handle_from_contact($item["contact-id"], $item["gcontact-id"]); - //$myaddr = self::my_handle($owner); // Check whether the retraction is for a top-level post or whether it's a relayable if ($item["uri"] !== $item["parent-uri"]) { @@ -2458,6 +2903,15 @@ class diaspora { return self::build_and_transmit($owner, $contact, $msg_type, $message, $public_batch, $item["guid"]); } + /** + * @brief + * + * @param array $item The item that will be exported + * @param array $owner The owner + * @param array $contact The contact that is checked + * + * @return int The result of the transmission + */ public static function send_mail($item, $owner, $contact) { $myaddr = self::my_handle($owner); @@ -2515,6 +2969,13 @@ class diaspora { return self::build_and_transmit($owner, $contact, $type, $message, false, $item["guid"]); } + /** + * @brief + * + * @param int $uid The user id + * + * @return int The result of the transmission + */ public static function send_profile($uid) { if (!$uid) diff --git a/util/createdoxygen.php b/util/createdoxygen.php new file mode 100755 index 0000000000..d48114b671 --- /dev/null +++ b/util/createdoxygen.php @@ -0,0 +1,82 @@ +#!/usr/bin/php + 0) + $block .= $space." *\n"; + } + + $block .= $space." * @return \n". + $space." */\n"; + + return $block; +} +?> From e74587b37576df113e05a56bc7a4d29f736a4fb5 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 18 Mar 2016 08:07:23 +0100 Subject: [PATCH 060/485] Just some more documentation --- include/diaspora.php | 149 ++++++++++++++++++++++--------------------- 1 file changed, 75 insertions(+), 74 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index dd0efa1d73..14ff6e42f8 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -830,13 +830,13 @@ class diaspora { } /** - * @brief + * @brief Fetches a message from a server * * @param string $guid message guid - * @param $server - * @param $level + * @param string $server The url of the server + * @param int $level Endless loop prevention * - * @return + * @return array of message, author and public key */ private function message($guid, $server, $level = 0) { @@ -882,14 +882,14 @@ class diaspora { } /** - * @brief + * @brief Fetches the item record of a given guid * * @param int $uid The user id * @param string $guid message guid - * @param $author + * @param string $author The handle of the item * @param array $contact The contact that is checked * - * @return + * @return array the item record */ private function parent_item($uid, $guid, $author, $contact) { $r = q("SELECT `id`, `body`, `wall`, `uri`, `private`, `origin`, @@ -927,13 +927,13 @@ class diaspora { } /** - * @brief + * @brief returns contact details * - * @param array $contact The contact that is checked - * @param $person + * @param array $contact The default contact if the person isn't found + * @param array $person The record of the person * @param int $uid The user id * - * @return + * @return array of contact id and network type */ private function author_contact_by_url($contact, $person, $uid) { @@ -964,7 +964,7 @@ class diaspora { /** * @brief Generate a post link with a given handle and message guid * - * @param $addr + * @param string $addr The user handle * @param string $guid message guid * * @return string the post link @@ -1101,16 +1101,16 @@ class diaspora { } /** - * @brief + * @brief processes and stores private messages * * @param array $importer Array of the importer user * @param array $contact The contact that is checked * @param object $data The message object - * @param $msg - * @param $mesg - * @param $conversation + * @param array $msg Array of the processed message, author handle and key + * @param object $mesg The private message + * @param array $conversation The conversation record to which this message belongs * - * @return + * @return bool "true" if it was successful */ private function receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation) { $guid = notags(unxmlify($data->guid)); @@ -1226,13 +1226,14 @@ class diaspora { "verb" => ACTIVITY_POST, "otype" => "mail" )); + return true; } /** * @brief * * @param array $importer Array of the importer user - * @param $msg + * @param array $msg Array of the processed message, author handle and key * @param object $data The message object * * @return @@ -2183,11 +2184,11 @@ class diaspora { ******************************************************************************************/ /** - * @brief + * @brief returnes the handle of a contact * - * @param $me + * @param array $me contact array * - * @return + * @return string the handle in the format user@domain.tld */ private function my_handle($me) { if ($contact["addr"] != "") @@ -2199,15 +2200,15 @@ class diaspora { } /** - * @brief + * @brief Creates the envelope for a public message * - * @param $msg - * @param $user - * @param array $contact The contact that is checked - * @param $prvkey - * @param $pubkey + * @param string $msg The message that is to be transmitted + * @param array $user The record of the sender + * @param array $contact Target of the communication + * @param string $prvkey The private key of the sender + * @param string $pubkey The public key of the receiver * - * @return + * @return string The envelope */ private function build_public_message($msg, $user, $contact, $prvkey, $pubkey) { @@ -2245,15 +2246,15 @@ class diaspora { } /** - * @brief + * @brief Creates the envelope for a private message * - * @param $msg - * @param $user - * @param array $contact The contact that is checked - * @param $prvkey - * @param $pubkey + * @param string $msg The message that is to be transmitted + * @param array $user The record of the sender + * @param array $contact Target of the communication + * @param string $prvkey The private key of the sender + * @param string $pubkey The public key of the receiver * - * @return + * @return string The envelope */ private function build_private_message($msg, $user, $contact, $prvkey, $pubkey) { @@ -2335,14 +2336,14 @@ class diaspora { } /** - * @brief + * @brief Create the envelope for a message * - * @param $msg - * @param $user - * @param array $contact The contact that is checked - * @param $prvkey - * @param $pubkey - * @param $public + * @param string $msg The message that is to be transmitted + * @param array $user The record of the sender + * @param array $contact Target of the communication + * @param string $prvkey The private key of the sender + * @param string $pubkey The public key of the receiver + * @param bool $public Is the message public? * * @return */ @@ -2359,12 +2360,12 @@ class diaspora { } /** - * @brief + * @brief Creates a signature for a message * - * @param array $owner the array of the item owner - * @param $message + * @param array $owner the array of the owner of the message + * @param array $message The message that is to be signed * - * @return + * @return string The signature */ private function signature($owner, $message) { $sigmsg = $message; @@ -2377,16 +2378,16 @@ class diaspora { } /** - * @brief + * @brief Transmit a message to a target server * * @param array $owner the array of the item owner - * @param array $contact The contact that is checked - * @param $slap + * @param array $contact Target of the communication + * @param string $slap The message that is to be transmitted * @param bool $public_batch Is it a public post? - * @param $queue_run + * @param bool $queue_run Is the transmission called from the queue? * @param string $guid message guid * - * @return + * @return int Result of the transmission */ public static function transmit($owner, $contact, $slap, $public_batch, $queue_run=false, $guid = "") { @@ -2444,14 +2445,14 @@ class diaspora { * @brief * * @param array $owner the array of the item owner - * @param array $contact The contact that is checked - * @param $type - * @param $message + * @param array $contact Target of the communication + * @param string $type The message type + * @param array $message The message data * @param bool $public_batch Is it a public post? * @param string $guid message guid - * @param $spool + * @param bool $spool Should the transmission be spooled or transmitted? * - * @return + * @return int Result of the transmission */ private function build_and_transmit($owner, $contact, $type, $message, $public_batch = false, $guid = "", $spool = false) { @@ -2479,7 +2480,7 @@ class diaspora { * @brief * * @param array $owner the array of the item owner - * @param array $contact The contact that is checked + * @param array $contact Target of the communication * * @return int The result of the transmission */ @@ -2495,7 +2496,7 @@ class diaspora { * @brief * * @param array $owner the array of the item owner - * @param array $contact The contact that is checked + * @param array $contact Target of the communication * * @return int The result of the transmission */ @@ -2509,12 +2510,12 @@ class diaspora { } /** - * @brief + * @brief Checks a message body if it is a reshare * - * @param $body - * @param $complete + * @param string $body The message body that is to be check + * @param bool $complete Should it be a complete check or a simple check? * - * @return + * @return array|bool Reshare details or "false" if no reshare */ public static function is_reshare($body, $complete = true) { $body = trim($body); @@ -2592,7 +2593,7 @@ class diaspora { * * @param array $item The item that will be exported * @param array $owner the array of the item owner - * @param array $contact The contact that is checked + * @param array $contact Target of the communication * @param bool $public_batch Is it a public post? * * @return int The result of the transmission @@ -2726,7 +2727,7 @@ class diaspora { * * @param array $item The item that will be exported * @param array $owner the array of the item owner - * @param array $contact The contact that is checked + * @param array $contact Target of the communication * @param bool $public_batch Is it a public post? * * @return int The result of the transmission @@ -2750,14 +2751,14 @@ class diaspora { } /** - * @brief + * @brief Creates a message from a signature record entry * * @param array $item The item that will be exported - * @param $signature + * @param array $signature The entry of the "sign" record * - * @return int The result of the transmission + * @return string The message */ - private function message_from_signatur($item, $signature) { + private function message_from_signature($item, $signature) { // Split the signed text $signed_parts = explode(";", $signature['signed_text']); @@ -2804,7 +2805,7 @@ class diaspora { * * @param array $item The item that will be exported * @param array $owner the array of the item owner - * @param array $contact The contact that is checked + * @param array $contact Target of the communication * @param bool $public_batch Is it a public post? * * @return int The result of the transmission @@ -2835,7 +2836,7 @@ class diaspora { // Old way - is used by the internal Friendica functions /// @todo Change all signatur storing functions to the new format if ($signature['signed_text'] AND $signature['signature'] AND $signature['signer']) - $message = self::message_from_signatur($item, $signature); + $message = self::message_from_signature($item, $signature); else {// New way $msg = json_decode($signature['signed_text'], true); @@ -2863,13 +2864,13 @@ class diaspora { } /** - * @brief + * @brief Sends a retraction (deletion) of a message, like or comment * * @param array $item The item that will be exported * @param array $owner the array of the item owner - * @param array $contact The contact that is checked + * @param array $contact Target of the communication * @param bool $public_batch Is it a public post? - * @param $relay + * @param bool $relay Is the retraction transmitted from a relay? * * @return int The result of the transmission */ @@ -2908,7 +2909,7 @@ class diaspora { * * @param array $item The item that will be exported * @param array $owner The owner - * @param array $contact The contact that is checked + * @param array $contact Target of the communication * * @return int The result of the transmission */ From a2507804f2eab92df5ff721b3c836da5d1ca7461 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 18 Mar 2016 16:42:10 +0100 Subject: [PATCH 061/485] There is no table "sess_data" - this database call is useless --- include/session.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/session.php b/include/session.php index 11641d6cea..12551efc42 100644 --- a/include/session.php +++ b/include/session.php @@ -69,7 +69,7 @@ function ref_session_destroy ($id) { if(! function_exists('ref_session_gc')) { function ref_session_gc($expire) { q("DELETE FROM `session` WHERE `expire` < %d", dbesc(time())); - q("OPTIMIZE TABLE `sess_data`"); + //q("OPTIMIZE TABLE `sess_data`"); return true; }} From 5c44a787bf0f6c514ee33cb75faee544618eb775 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 18 Mar 2016 22:28:20 +0100 Subject: [PATCH 062/485] The documentation should now be complete --- include/diaspora.php | 118 +++++++++++++++++++++---------------------- 1 file changed, 58 insertions(+), 60 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 14ff6e42f8..4e1b300507 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -110,6 +110,8 @@ class diaspora { /** * @brief repairs a signature that was double encoded * + * The function is unused at the moment. It was copied from the old implementation. + * * @param string $signature The signature * @param string $handle The handle of the signature owner * @param integer $level This value is only set inside this function to avoid endless loops @@ -887,7 +889,7 @@ class diaspora { * @param int $uid The user id * @param string $guid message guid * @param string $author The handle of the item - * @param array $contact The contact that is checked + * @param array $contact The contact of the item owner * * @return array the item record */ @@ -992,12 +994,12 @@ class diaspora { } /** - * @brief + * @brief Processes an account deletion * * @param array $importer Array of the importer user * @param object $data The message object * - * @return + * @return bool Success */ private function receive_account_deletion($importer, $data) { $author = notags(unxmlify($data->author)); @@ -1014,7 +1016,7 @@ class diaspora { } /** - * @brief + * @brief Processes an incoming comment * * @param array $importer Array of the importer user * @param string $sender The sender of the message @@ -1104,7 +1106,7 @@ class diaspora { * @brief processes and stores private messages * * @param array $importer Array of the importer user - * @param array $contact The contact that is checked + * @param array $contact The contact of the message * @param object $data The message object * @param array $msg Array of the processed message, author handle and key * @param object $mesg The private message @@ -1230,13 +1232,13 @@ class diaspora { } /** - * @brief + * @brief Processes new private messages (answers to private messages are processed elsewhere) * * @param array $importer Array of the importer user * @param array $msg Array of the processed message, author handle and key * @param object $data The message object * - * @return + * @return bool Success */ private function receive_conversation($importer, $msg, $data) { $guid = notags(unxmlify($data->guid)); @@ -1296,13 +1298,13 @@ class diaspora { } /** - * @brief + * @brief Creates the body for a "like" message * - * @param array $contact The contact that is checked - * @param $parent_item + * @param array $contact The contact that send us the "like" + * @param array $parent_item The item array of the parent item * @param string $guid message guid * - * @return + * @return string the body */ private function construct_like_body($contact, $parent_item, $guid) { $bodyverb = t('%1$s likes %2$s\'s %3$s'); @@ -1315,12 +1317,12 @@ class diaspora { } /** - * @brief + * @brief Creates a XML object for a "like" * * @param array $importer Array of the importer user - * @param $parent_item + * @param array $parent_item The item array of the parent item * - * @return + * @return string The XML */ private function construct_like_object($importer, $parent_item) { $objtype = ACTIVITY_OBJ_NOTE; @@ -1338,7 +1340,7 @@ class diaspora { } /** - * @brief + * @brief Processes "like" messages * * @param array $importer Array of the importer user * @param string $sender The sender of the message @@ -1435,12 +1437,12 @@ class diaspora { } /** - * @brief + * @brief Processes private messages * * @param array $importer Array of the importer user * @param object $data The message object * - * @return + * @return bool Success? */ private function receive_message($importer, $data) { $guid = notags(unxmlify($data->guid)); @@ -1514,7 +1516,7 @@ class diaspora { } /** - * @brief + * @brief Processes participations - unsupported by now * * @param array $importer Array of the importer user * @param object $data The message object @@ -1527,12 +1529,12 @@ class diaspora { } /** - * @brief + * @brief Processes photos - unneeded * * @param array $importer Array of the importer user * @param object $data The message object * - * @return + * @return bool always true */ private function receive_photo($importer, $data) { // There doesn't seem to be a reason for this function, since the photo data is transmitted in the status message as well @@ -1540,12 +1542,12 @@ class diaspora { } /** - * @brief + * @brief Processes poll participations - unssupported * * @param array $importer Array of the importer user * @param object $data The message object * - * @return + * @return bool always true */ private function receive_poll_participation($importer, $data) { // We don't support polls by now @@ -1553,12 +1555,12 @@ class diaspora { } /** - * @brief + * @brief Processes incoming profile updates * * @param array $importer Array of the importer user * @param object $data The message object * - * @return + * @return bool Success */ private function receive_profile($importer, $data) { $author = notags(unxmlify($data->author)); @@ -1646,12 +1648,10 @@ class diaspora { } /** - * @brief + * @brief Processes incoming friend requests * * @param array $importer Array of the importer user - * @param array $contact The contact that is checked - * - * @return + * @param array $contact The contact that send the request */ private function receive_request_make_friend($importer, $contact) { @@ -1714,26 +1714,24 @@ class diaspora { $i = item_store($arr); if($i) proc_run("php", "include/notifier.php", "activity", $i); - } - } } /** - * @brief + * @brief Processes incoming sharing notification * * @param array $importer Array of the importer user * @param object $data The message object * - * @return + * @return bool Success */ private function receive_request($importer, $data) { $author = unxmlify($data->author); $recipient = unxmlify($data->recipient); if (!$author || !$recipient) - return; + return false; $contact = self::contact_by_handle($importer["uid"],$author); @@ -1842,13 +1840,13 @@ class diaspora { } /** - * @brief + * @brief Fetches a message with a given guid * * @param string $guid message guid - * @param $orig_author - * @param $author + * @param string $orig_author handle of the original post + * @param string $author handle of the sharer * - * @return + * @return array The fetched item */ private function original_item($guid, $orig_author, $author) { @@ -1907,13 +1905,13 @@ class diaspora { } /** - * @brief + * @brief Processes a reshare message * * @param array $importer Array of the importer user * @param object $data The message object * @param string $xml The original XML of the message * - * @return + * @return int the message id */ private function receive_reshare($importer, $data, $xml) { $root_author = notags(unxmlify($data->root_author)); @@ -1981,13 +1979,13 @@ class diaspora { } /** - * @brief + * @brief Processes retractions * * @param array $importer Array of the importer user - * @param array $contact The contact that is checked + * @param array $contact The contact of the item owner * @param object $data The message object * - * @return + * @return bool success */ private function item_retraction($importer, $contact, $data) { $target_type = notags(unxmlify($data->target_type)); @@ -2038,16 +2036,18 @@ class diaspora { // notify others proc_run("php", "include/notifier.php", "drop", $r[0]["id"]); } + + return true; } /** - * @brief + * @brief Receives retraction messages * * @param array $importer Array of the importer user * @param string $sender The sender of the message * @param object $data The message object * - * @return + * @return bool Success */ private function receive_retraction($importer, $sender, $data) { $target_type = notags(unxmlify($data->target_type)); @@ -2082,13 +2082,13 @@ class diaspora { } /** - * @brief + * @brief Receives status messages * * @param array $importer Array of the importer user * @param object $data The message object * @param string $xml The original XML of the message * - * @return + * @return int The message id of the newly created item */ private function receive_status_message($importer, $data, $xml) { @@ -2345,7 +2345,7 @@ class diaspora { * @param string $pubkey The public key of the receiver * @param bool $public Is the message public? * - * @return + * @return string The message that will be transmitted to other servers */ private function build_message($msg, $user, $contact, $prvkey, $pubkey, $public = false) { @@ -2442,7 +2442,7 @@ class diaspora { /** - * @brief + * @brief Builds and transmit messages * * @param array $owner the array of the item owner * @param array $contact Target of the communication @@ -2477,7 +2477,7 @@ class diaspora { } /** - * @brief + * @brief Sends a "share" message * * @param array $owner the array of the item owner * @param array $contact Target of the communication @@ -2493,7 +2493,7 @@ class diaspora { } /** - * @brief + * @brief sends an "unshare" * * @param array $owner the array of the item owner * @param array $contact Target of the communication @@ -2589,7 +2589,7 @@ class diaspora { } /** - * @brief + * @brief Sends a post * * @param array $item The item that will be exported * @param array $owner the array of the item owner @@ -2666,12 +2666,12 @@ class diaspora { } /** - * @brief + * @brief Creates a "like" object * * @param array $item The item that will be exported * @param array $owner the array of the item owner * - * @return + * @return array The data for a "like" */ private function construct_like($item, $owner) { @@ -2694,12 +2694,12 @@ class diaspora { } /** - * @brief + * @brief Creates the object for a comment * * @param array $item The item that will be exported * @param array $owner the array of the item owner * - * @return + * @return array The data for a comment */ private function construct_comment($item, $owner) { @@ -2801,7 +2801,7 @@ class diaspora { } /** - * @brief + * @brief Relays messages (like, comment, retraction) to other servers if we are the thread owner * * @param array $item The item that will be exported * @param array $owner the array of the item owner @@ -2905,7 +2905,7 @@ class diaspora { } /** - * @brief + * @brief Sends a mail * * @param array $item The item that will be exported * @param array $owner The owner @@ -2971,11 +2971,9 @@ class diaspora { } /** - * @brief + * @brief Sends profile data * * @param int $uid The user id - * - * @return int The result of the transmission */ public static function send_profile($uid) { From d676ae0f32a33e0f75c28d31f32f3d9476b4efd6 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 19 Mar 2016 15:49:47 +0100 Subject: [PATCH 063/485] The signature creation now moved into the Diaspora class. That's much cleaner. --- include/diaspora.php | 124 +++++++++++++++++++++++++++++++++++++++++-- include/like.php | 83 +---------------------------- mod/item.php | 42 +-------------- 3 files changed, 125 insertions(+), 124 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 4e1b300507..59bad946e2 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -2190,13 +2190,18 @@ class diaspora { * * @return string the handle in the format user@domain.tld */ - private function my_handle($me) { + private function my_handle($contact) { if ($contact["addr"] != "") return $contact["addr"]; // Normally we should have a filled "addr" field - but in the past this wasn't the case // So - just in case - we build the the address here. - return $me["nickname"]."@".substr(App::get_baseurl(), strpos(App::get_baseurl(),"://") + 3); + if ($contact["nickname"] != "") + $nick = $contact["nickname"]; + else + $nick = $contact["nick"]; + + return $nick."@".substr(App::get_baseurl(), strpos(App::get_baseurl(),"://") + 3); } /** @@ -2689,7 +2694,7 @@ class diaspora { "guid" => $item["guid"], "target_type" => $target_type, "parent_guid" => $parent["guid"], - "author_signature" => $authorsig, + "author_signature" => "", "diaspora_handle" => self::my_handle($owner))); } @@ -3052,5 +3057,118 @@ class diaspora { foreach($recips as $recip) self::build_and_transmit($profile, $recip, "profile", $message, false, "", true); } + + /** + * @brief Stores the signature for likes that are created on our system + * + * @param array $contact The contact array of the "like" + * @param int $post_id The post id of the "like" + * + * @return bool Success + */ + function store_like_signature($contact, $post_id) { + + $enabled = intval(get_config('system','diaspora_enabled')); + if (!$enabled) { + logger('Diaspora support disabled, not storing like signature', LOGGER_DEBUG); + return false; + } + + // Is the contact the owner? Then fetch the private key + if (!$contact['self'] OR ($contact['uid'] == 0)) { + logger("No owner post, so not storing signature", LOGGER_DEBUG); + return false; + } + + $r = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1", intval($contact['uid'])); + if(!$r) + return false; + + $contact["uprvkey"] = $r[0]['prvkey']; + + $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1", intval($post_id)); + if (!$r) + return false; + + if (!in_array($r[0]["verb"], array(ACTIVITY_LIKE, ACTIVITY_DISLIKE))) + return false; + + $message = self::construct_like($r[0], $contact); + $message["author_signature"] = self::signature($contact, $message); + + // In the future we will store the signature more flexible to support new fields. + // Right now we cannot change this since old Friendica versions (prior to 3.5) can only handle this format. + // (We are transmitting this data here via DFRN) + + $signed_text = $message["positive"].";".$message["guid"].";".$message["target_type"].";". + $message["parent_guid"].";".$message["diaspora_handle"]; + + q("INSERT INTO `sign` (`iid`,`signed_text`,`signature`,`signer`) VALUES (%d,'%s','%s','%s')", + intval($post_id), + dbesc($signed_text), + dbesc($message["author_signature"]), + dbesc($message["diaspora_handle"]) + ); + + // This here will replace the lines above, once Diaspora changed its protocol + //q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')", + // intval($message_id), + // dbesc(json_encode($message)) + //); + + logger('Stored diaspora like signature'); + return true; + } + + /** + * @brief Stores the signature for comments that are created on our system + * + * @param array $item The item array of the comment + * @param array $contact The contact array of the item owner + * @param string $uprvkey The private key of the sender + * @param int $message_id The message id of the comment + * + * @return bool Success + */ + function store_comment_signature($item, $contact, $uprvkey, $message_id) { + + if ($uprvkey == "") { + logger('No private key, so not storing comment signature', LOGGER_DEBUG); + return false; + } + + $enabled = intval(get_config('system','diaspora_enabled')); + if (!$enabled) { + logger('Diaspora support disabled, not storing comment signature', LOGGER_DEBUG); + return false; + } + + $contact["uprvkey"] = $uprvkey; + + $message = self::construct_comment($item, $contact); + $message["author_signature"] = self::signature($contact, $message); + + // In the future we will store the signature more flexible to support new fields. + // Right now we cannot change this since old Friendica versions (prior to 3.5) can only handle this format. + // (We are transmitting this data here via DFRN) + $signed_text = $message["guid"].";".$message["parent_guid"].";". + $message["text"].";".$message["diaspora_handle"]; + + q("INSERT INTO `sign` (`iid`,`signed_text`,`signature`,`signer`) VALUES (%d,'%s','%s','%s')", + intval($message_id), + dbesc($signed_text), + dbesc($message["author_signature"]), + dbesc($message["diaspora_handle"]) + ); + + // This here will replace the lines above, once Diaspora changed its protocol + //q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')", + // intval($message_id), + // dbesc(json_encode($message)) + //); + + logger('Stored diaspora comment signature'); + return true; + } } ?> diff --git a/include/like.php b/include/like.php index 2e5367e51e..49534ea613 100644 --- a/include/like.php +++ b/include/like.php @@ -1,4 +1,5 @@ 0)) { - $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1", - intval($contact['uid']) - ); - - if($r) - $contact_uprvkey = $r[0]['prvkey']; - } - - $r = q("SELECT guid, parent FROM `item` WHERE id = %d LIMIT 1", - intval($post_id) - ); - if( $r) { - $p = q("SELECT guid FROM `item` WHERE id = %d AND parent = %d LIMIT 1", - intval($r[0]['parent']), - intval($r[0]['parent']) - ); - if( $p) { - $signed_text = 'true;'.$r[0]['guid'].';Post;'.$p[0]['guid'].';'.$diaspora_handle; - - if(isset($contact_uprvkey)) - $authorsig = base64_encode(rsa_sign($signed_text,$contact_uprvkey,'sha256')); - else - $authorsig = ''; - - q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", - intval($post_id), - dbesc($signed_text), - dbesc($authorsig), - dbesc($diaspora_handle) - ); - } - } - } - - return; -} diff --git a/mod/item.php b/mod/item.php index 2ade524a05..14c8203c98 100644 --- a/mod/item.php +++ b/mod/item.php @@ -24,6 +24,7 @@ require_once('include/threads.php'); require_once('include/text.php'); require_once('include/items.php'); require_once('include/Scrape.php'); +require_once('include/diaspora.php'); function item_post(&$a) { @@ -900,7 +901,7 @@ function item_post(&$a) { // Store the comment signature information in case we need to relay to Diaspora - store_diaspora_comment_sig($datarray, $author, ($self ? $user['prvkey'] : false), $parent_item, $post_id); + diaspora::store_comment_signature($datarray, $author, ($self ? $user['prvkey'] : false), $post_id); } else { $parent = $post_id; @@ -1245,42 +1246,3 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo return array('replaced' => $replaced, 'contact' => $r[0]); } - - -function store_diaspora_comment_sig($datarray, $author, $uprvkey, $parent_item, $post_id) { - // We won't be able to sign Diaspora comments for authenticated visitors - we don't have their private key - - $enabled = intval(get_config('system','diaspora_enabled')); - if(! $enabled) { - logger('mod_item: diaspora support disabled, not storing comment signature', LOGGER_DEBUG); - return; - } - - - logger('mod_item: storing diaspora comment signature'); - - require_once('include/bb2diaspora.php'); - $signed_body = html_entity_decode(bb2diaspora($datarray['body'])); - - // Only works for NETWORK_DFRN - $contact_baseurl_start = strpos($author['url'],'://') + 3; - $contact_baseurl_length = strpos($author['url'],'/profile') - $contact_baseurl_start; - $contact_baseurl = substr($author['url'], $contact_baseurl_start, $contact_baseurl_length); - $diaspora_handle = $author['nick'] . '@' . $contact_baseurl; - - $signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $diaspora_handle; - - if( $uprvkey !== false ) - $authorsig = rsa_sign($signed_text,$uprvkey,'sha256'); - else - $authorsig = ''; - - q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", - intval($post_id), - dbesc($signed_text), - dbesc(base64_encode($authorsig)), - dbesc($diaspora_handle) - ); - - return; -} From 186eaf1264320de3e5604d09b7ae7818ba5c4465 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 20 Mar 2016 10:30:06 +0100 Subject: [PATCH 064/485] Take the second largest picture as preview - not the smallest one --- mod/fbrowser.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mod/fbrowser.php b/mod/fbrowser.php index 0a2a7dead5..5836efbe52 100644 --- a/mod/fbrowser.php +++ b/mod/fbrowser.php @@ -74,10 +74,18 @@ function fbrowser_content($a){ $filename_e = $rr['filename']; } + // Take the second largest picture as preview + $p = q("SELECT `scale` FROM `photo` WHERE `resource-id` = '%s' AND `scale` > %d ORDER BY `resource-id`, `scale` LIMIT 1", + dbesc($rr['resource-id']), intval($rr['hiq'])); + if ($p) + $scale = $p[0]["scale"]; + else + $scale = $rr['loq']; + return array( $a->get_baseurl() . '/photos/' . $a->user['nickname'] . '/image/' . $rr['resource-id'], $filename_e, - $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['loq'] . '.'. $ext + $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $scale . '.'. $ext ); } $files = array_map("_map_files1", $r); From 8f00836ffb47758fa16101cafeb1a03d13d88de4 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 20 Mar 2016 15:01:50 +0100 Subject: [PATCH 065/485] Add the guid to items that we create locally --- include/like.php | 1 + mod/dfrn_confirm.php | 3 ++- mod/mood.php | 2 +- mod/photos.php | 5 +++-- mod/poke.php | 1 + mod/profiles.php | 2 ++ mod/subthread.php | 5 +++-- mod/tagger.php | 5 +++-- 8 files changed, 16 insertions(+), 8 deletions(-) diff --git a/include/like.php b/include/like.php index 646e0727be..d852cc3b31 100644 --- a/include/like.php +++ b/include/like.php @@ -196,6 +196,7 @@ EOT; $arr = array(); + $arr['guid'] = get_guid(32); $arr['uri'] = $uri; $arr['uid'] = $owner_uid; $arr['contact-id'] = $contact['id']; diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 68950ec285..aed9809ca2 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -448,6 +448,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { if(count($self)) { $arr = array(); + $arr['guid'] = get_guid(32); $arr['uri'] = $arr['parent-uri'] = item_new_uri($a->get_hostname(), $uid); $arr['uid'] = $uid; $arr['contact-id'] = $self[0]['id']; @@ -466,7 +467,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { $BPhoto = '[url=' . $contact['url'] . ']' . '[img]' . $contact['thumb'] . '[/img][/url]'; $arr['verb'] = ACTIVITY_FRIEND; - $arr['object-type'] = ACTIVITY_OBJ_PERSON; + $arr['object-type'] = ACTIVITY_OBJ_PERSON; $arr['body'] = sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$BPhoto; $arr['object'] = '' . ACTIVITY_OBJ_PERSON . '' . $contact['name'] . '' diff --git a/mod/mood.php b/mod/mood.php index eee11e20c5..5e6ca0fcfc 100644 --- a/mod/mood.php +++ b/mod/mood.php @@ -62,7 +62,7 @@ function mood_init(&$a) { $action = sprintf( t('%1$s is currently %2$s'), '[url=' . $poster['url'] . ']' . $poster['name'] . '[/url]' , $verbs[$verb]); $arr = array(); - + $arr['guid'] = get_guid(32); $arr['uid'] = $uid; $arr['uri'] = $uri; $arr['parent-uri'] = (($parent_uri) ? $parent_uri : $uri); diff --git a/mod/photos.php b/mod/photos.php index 2257a96653..4761b627d8 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -488,7 +488,7 @@ function photos_post(&$a) { $uri = item_new_uri($a->get_hostname(),$page_owner_uid); $arr = array(); - + $arr['guid'] = get_guid(32); $arr['uid'] = $page_owner_uid; $arr['uri'] = $uri; $arr['parent-uri'] = $uri; @@ -677,7 +677,7 @@ function photos_post(&$a) { $uri = item_new_uri($a->get_hostname(),$page_owner_uid); $arr = array(); - + $arr['guid'] = get_guid(32); $arr['uid'] = $page_owner_uid; $arr['uri'] = $uri; $arr['parent-uri'] = $uri; @@ -904,6 +904,7 @@ function photos_post(&$a) { if($lat && $lon) $arr['coord'] = $lat . ' ' . $lon; + $arr['guid'] = get_guid(32); $arr['uid'] = $page_owner_uid; $arr['uri'] = $uri; $arr['parent-uri'] = $uri; diff --git a/mod/poke.php b/mod/poke.php index 45a577cda6..4a643435be 100644 --- a/mod/poke.php +++ b/mod/poke.php @@ -91,6 +91,7 @@ function poke_init(&$a) { $arr = array(); + $arr['guid'] = get_guid(32); $arr['uid'] = $uid; $arr['uri'] = $uri; $arr['parent-uri'] = (($parent_uri) ? $parent_uri : $uri); diff --git a/mod/profiles.php b/mod/profiles.php index 0b8261422f..39382fbdd5 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -526,6 +526,8 @@ function profile_activity($changed, $value) { return; $arr = array(); + + $arr['guid'] = get_guid(32); $arr['uri'] = $arr['parent-uri'] = item_new_uri($a->get_hostname(), local_user()); $arr['uid'] = local_user(); $arr['contact-id'] = $self[0]['id']; diff --git a/mod/subthread.php b/mod/subthread.php index 1486a33b42..33cf7489c1 100644 --- a/mod/subthread.php +++ b/mod/subthread.php @@ -103,10 +103,11 @@ EOT; $bodyverb = t('%1$s is following %2$s\'s %3$s'); if(! isset($bodyverb)) - return; + return; $arr = array(); + $arr['guid'] = get_guid(32); $arr['uri'] = $uri; $arr['uid'] = $owner_uid; $arr['contact-id'] = $contact['id']; @@ -123,7 +124,7 @@ EOT; $arr['author-name'] = $contact['name']; $arr['author-link'] = $contact['url']; $arr['author-avatar'] = $contact['thumb']; - + $ulink = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]'; $alink = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]'; $plink = '[url=' . $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . ']' . $post_type . '[/url]'; diff --git a/mod/tagger.php b/mod/tagger.php index 2c469a58bb..26166a3cc0 100644 --- a/mod/tagger.php +++ b/mod/tagger.php @@ -95,12 +95,13 @@ EOT; $bodyverb = t('%1$s tagged %2$s\'s %3$s with %4$s'); if(! isset($bodyverb)) - return; + return; $termlink = html_entity_decode('⌗') . '[url=' . $a->get_baseurl() . '/search?tag=' . urlencode($term) . ']'. $term . '[/url]'; $arr = array(); + $arr['guid'] = get_guid(32); $arr['uri'] = $uri; $arr['uid'] = $owner_uid; $arr['contact-id'] = $contact['id']; @@ -115,7 +116,7 @@ EOT; $arr['author-name'] = $contact['name']; $arr['author-link'] = $contact['url']; $arr['author-avatar'] = $contact['thumb']; - + $ulink = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]'; $alink = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]'; $plink = '[url=' . $item['plink'] . ']' . $post_type . '[/url]'; From 77ed71e2e07ebbea9295308ba02fbc7e75ff927d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 20 Mar 2016 15:53:37 +0100 Subject: [PATCH 066/485] DFRN: Remote tagging works now --- include/dfrn.php | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/include/dfrn.php b/include/dfrn.php index 1c5ac2b012..d96805a56b 100644 --- a/include/dfrn.php +++ b/include/dfrn.php @@ -85,7 +85,7 @@ class dfrn { $converse = true; if($a->argv[$x] == 'starred') $starred = true; - if($a->argv[$x] === 'category' && $a->argc > ($x + 1) && strlen($a->argv[$x+1])) + if($a->argv[$x] == 'category' && $a->argc > ($x + 1) && strlen($a->argv[$x+1])) $category = $a->argv[$x+1]; } } @@ -244,7 +244,7 @@ class dfrn { foreach($items as $item) { // prevent private email from leaking. - if($item['network'] === NETWORK_MAIL) + if($item['network'] == NETWORK_MAIL) continue; // public feeds get html, our own nodes use bbcode @@ -628,7 +628,7 @@ class dfrn { if($r->title) xml_add_element($doc, $entry, "title", $r->title); if($r->link) { - if(substr($r->link,0,1) === '<') { + if(substr($r->link,0,1) == '<') { if(strstr($r->link,'&') && (! strstr($r->link,'&'))) $r->link = str_replace('&','&', $r->link); @@ -759,7 +759,7 @@ class dfrn { // The "content" field is not read by the receiver. We could remove it when the type is "text" // We keep it at the moment, maybe there is some old version that doesn't read "dfrn:env" - xml_add_element($doc, $entry, "content", (($type === 'html') ? $htmlbody : $body), array("type" => $type)); + xml_add_element($doc, $entry, "content", (($type == 'html') ? $htmlbody : $body), array("type" => $type)); // We save this value in "plink". Maybe we should read it from there as well? xml_add_element($doc, $entry, "link", "", array("rel" => "alternate", "type" => "text/html", @@ -1773,6 +1773,9 @@ class dfrn { * @return bool Should the processing of the entries be continued? */ private function process_verbs($entrytype, $importer, &$item, &$is_like) { + + logger("Process verb ".$item["verb"]." and object-type ".$item["object-type"]." for entrytype ".$entrytype, LOGGER_DEBUG); + if (($entrytype == DFRN_TOP_LEVEL)) { // The filling of the the "contact" variable is done for legcy reasons // The functions below are partly used by ostatus.php as well - where we have this variable @@ -1803,11 +1806,11 @@ class dfrn { return false; } } else { - if(($item["verb"] === ACTIVITY_LIKE) - || ($item["verb"] === ACTIVITY_DISLIKE) - || ($item["verb"] === ACTIVITY_ATTEND) - || ($item["verb"] === ACTIVITY_ATTENDNO) - || ($item["verb"] === ACTIVITY_ATTENDMAYBE)) { + if(($item["verb"] == ACTIVITY_LIKE) + || ($item["verb"] == ACTIVITY_DISLIKE) + || ($item["verb"] == ACTIVITY_ATTEND) + || ($item["verb"] == ACTIVITY_ATTENDNO) + || ($item["verb"] == ACTIVITY_ATTENDMAYBE)) { $is_like = true; $item["type"] = "activity"; $item["gravity"] = GRAVITY_LIKE; @@ -1833,7 +1836,7 @@ class dfrn { } else $is_like = false; - if(($item["verb"] === ACTIVITY_TAG) && ($item["object-type"] === ACTIVITY_OBJ_TAGTERM)) { + if(($item["verb"] == ACTIVITY_TAG) && ($item["object-type"] == ACTIVITY_OBJ_TAGTERM)) { $xo = parse_xml_string($item["object"],false); $xt = parse_xml_string($item["target"],false); @@ -2261,15 +2264,17 @@ class dfrn { else return; - if($item["object-type"] === ACTIVITY_OBJ_EVENT) { + if($item["object-type"] == ACTIVITY_OBJ_EVENT) { logger("Deleting event ".$item["event-id"], LOGGER_DEBUG); event_delete($item["event-id"]); } - if(($item["verb"] === ACTIVITY_TAG) && ($item["object-type"] === ACTIVITY_OBJ_TAGTERM)) { + if(($item["verb"] == ACTIVITY_TAG) && ($item["object-type"] == ACTIVITY_OBJ_TAGTERM)) { + $xo = parse_xml_string($item["object"],false); $xt = parse_xml_string($item["target"],false); - if($xt->type === ACTIVITY_OBJ_NOTE) { + + if($xt->type == ACTIVITY_OBJ_NOTE) { $i = q("SELECT `id`, `contact-id`, `tag` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($xt->id), intval($importer["importer_uid"]) From 5a04ba84164070855c26737640f41ed3cb6dcf11 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 20 Mar 2016 16:16:15 +0100 Subject: [PATCH 067/485] Added documentation --- include/xml.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/include/xml.php b/include/xml.php index c74c23c473..2aed3fe8ed 100644 --- a/include/xml.php +++ b/include/xml.php @@ -4,6 +4,16 @@ * */ class xml { + /** + * @brief Creates an XML structure out of a given array + * + * @param array $array The array of the XML structure that will be generated + * @param object $xml The createdXML will be returned by reference + * @param bool $remove_header Should the XML header be removed or not? + * @param array $namespaces List of namespaces + * + * @return string The created XML + */ function from_array($array, &$xml, $remove_header = false, $namespaces = array(), $root = true) { if ($root) { @@ -60,6 +70,13 @@ class xml { } } + /** + * @brief Copies an XML object + * + * @param object $source The XML source + * @param object $target The XML target + * @param string $elementname Name of the XML element of the target + */ function copy(&$source, &$target, $elementname) { if (count($source->children()) == 0) $target->addChild($elementname, xmlify($source)); From c284ab5eff79fa2a87f7214fe433001712db08c9 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 21 Mar 2016 19:58:45 +0100 Subject: [PATCH 068/485] Some more documentation - to make @rabuzarus happy --- include/diaspora.php | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 59bad946e2..6f30ab9247 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -116,7 +116,7 @@ class diaspora { * @param string $handle The handle of the signature owner * @param integer $level This value is only set inside this function to avoid endless loops * - * @return the repaired signature + * @return string the repaired signature */ function repair_signature($signature, $handle = "", $level = 1) { @@ -179,16 +179,6 @@ class diaspora { $decrypted = pkcs5_unpad($decrypted); - /** - * $decrypted now contains something like - * - * - * 8e+G2+ET8l5BPuW0sVTnQw== - * UvSMb4puPeB14STkcDWq+4QE302Edu15oaprAQSkLKU= - * galaxor@diaspora.priateship.org - * - */ - logger('decrypted: '.$decrypted, LOGGER_DEBUG); $idom = parse_xml_string($decrypted,false); @@ -795,7 +785,7 @@ class diaspora { } /** - * @brief sub function of "fetch_guid" + * @brief sub function of "fetch_guid" which checks for links in messages * * @param array $match array containing a link that has to be checked for a message link * @param array $item The item array @@ -838,7 +828,10 @@ class diaspora { * @param string $server The url of the server * @param int $level Endless loop prevention * - * @return array of message, author and public key + * @return array + * 'message' => The message XML + * 'author' => The author handle + * 'key' => The public key of the author */ private function message($guid, $server, $level = 0) { From 90d4b9342452345671672ed301c66e842a74aa24 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 22 Mar 2016 07:13:56 +0100 Subject: [PATCH 069/485] Avoid an empty handle --- include/diaspora.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/diaspora.php b/include/diaspora.php index 6f30ab9247..632e3782c7 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -647,7 +647,7 @@ class diaspora { if($contact['addr'] != "") $handle = $contact['addr']; - elseif(($contact['network'] === NETWORK_DFRN) || ($contact['self'] == 1)) { + else { $baseurl_start = strpos($contact['url'],'://') + 3; $baseurl_length = strpos($contact['url'],'/profile') - $baseurl_start; // allows installations in a subdirectory--not sure how Diaspora will handle $baseurl = substr($contact['url'], $baseurl_start, $baseurl_length); From 62103fe5f42363d14e33b127c5ccaf2ba176d6ca Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 22 Mar 2016 23:00:42 +0100 Subject: [PATCH 070/485] Reshare of reshares now work. --- include/diaspora.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 632e3782c7..289f717708 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1853,10 +1853,14 @@ class diaspora { logger("reshared message ".$guid." already exists on system."); // Maybe it is already a reshared item? - // Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares - if (self::is_reshare($r[0]["body"], false)) + // Then refetch the content, if it is a reshare from a reshare. + // If it is a reshared post from another network then reformat to avoid display problems with two share elements + if (self::is_reshare($r[0]["body"], true)) $r = array(); - else + elseif (self::is_reshare($r[0]["body"], false)) { + $r[0]["body"] = diaspora2bb(bb2diaspora($r[0]["body"])); + return $r[0]; + } else return $r[0]; } From 791ce24cd52d118391fd9c6a1b0a2a10efb6240f Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 22 Mar 2016 23:24:07 +0100 Subject: [PATCH 071/485] Bugfix: Avoid warning with non object OEmbed data --- include/bbcode.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/bbcode.php b/include/bbcode.php index c1156e3afe..8545b2ff82 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -311,6 +311,9 @@ function tryoembed($match){ $o = oembed_fetch_url($url); + if (!is_object($o)) + return $match[0]; + if (isset($match[2])) $o->title = $match[2]; From 28dfaa694c2203163eee6d61b724dede4590c099 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 23 Mar 2016 07:36:17 +0100 Subject: [PATCH 072/485] Add OEmbed data to the body of reshares --- include/diaspora.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/diaspora.php b/include/diaspora.php index 289f717708..b339e73157 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1859,6 +1859,10 @@ class diaspora { $r = array(); elseif (self::is_reshare($r[0]["body"], false)) { $r[0]["body"] = diaspora2bb(bb2diaspora($r[0]["body"])); + + // Add OEmbed and other information to the body + $r[0]["body"] = add_page_info_to_body($r[0]["body"], false, true); + return $r[0]; } else return $r[0]; From ac35f8c756a85cd36c8c2c2df7b7306056443f49 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 23 Mar 2016 09:22:59 +0100 Subject: [PATCH 073/485] If the message already exists then the message id should be returned --- include/diaspora.php | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index b339e73157..308a799118 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -755,8 +755,8 @@ class diaspora { * * @param int $uid The user id * @param string $guid The guid of the message - * - * @return bool "true" if the message already was stored into the system +y * + * @return int|bool message id if the message already was stored into the system - or false. */ private function message_exists($uid, $guid) { $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", @@ -766,7 +766,7 @@ class diaspora { if($r) { logger("message ".$guid." already exists for user ".$uid); - return true; + return $r[0]["id"]; } return false; @@ -1028,8 +1028,9 @@ class diaspora { if (!$contact) return false; - if (self::message_exists($importer["uid"], $guid)) - return false; + $message_id = self::message_exists($importer["uid"], $guid); + if ($message_id) + return $message_id; $parent_item = self::parent_item($importer["uid"], $parent_guid, $author, $contact); if (!$parent_item) @@ -1357,8 +1358,9 @@ class diaspora { if (!$contact) return false; - if (self::message_exists($importer["uid"], $guid)) - return false; + $message_id = self::message_exists($importer["uid"], $guid); + if ($message_id) + return $message_id; $parent_item = self::parent_item($importer["uid"], $parent_guid, $author, $contact); if (!$parent_item) @@ -1926,8 +1928,9 @@ class diaspora { if (!$contact) return false; - if (self::message_exists($importer["uid"], $guid)) - return false; + $message_id = self::message_exists($importer["uid"], $guid); + if ($message_id) + return $message_id; $original_item = self::original_item($root_guid, $root_author, $author); if (!$original_item) @@ -2110,8 +2113,9 @@ class diaspora { if (!$contact) return false; - if (self::message_exists($importer["uid"], $guid)) - return false; + $message_id = self::message_exists($importer["uid"], $guid); + if ($message_id) + return $message_id; $address = array(); if ($data->location) From 799ff777977cb46485c46a659848f92772aadf77 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 23 Mar 2016 10:24:01 +0100 Subject: [PATCH 074/485] API: Support for the conversation api call from GNU Social --- doc/api.md | 12 ++++++++++++ include/api.php | 1 + 2 files changed, 13 insertions(+) diff --git a/doc/api.md b/doc/api.md index bf287585d3..7d6f440c58 100644 --- a/doc/api.md +++ b/doc/api.md @@ -388,6 +388,18 @@ Friendica doesn't allow showing friends of other users. --- ### statusnet/config (*) +--- +### statusnet/conversation (*; AUTH) +It shows all direct answers (excluding the original post) to a given id. + +#### Parameter +* id: id of the post +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* include_entities: "true" shows entities for pictures and links (Default: false) + --- ### statusnet/version (*) diff --git a/include/api.php b/include/api.php index 699b066d25..a494e3cdd9 100644 --- a/include/api.php +++ b/include/api.php @@ -1550,6 +1550,7 @@ return api_apply_template("timeline", $type, $data); } api_register_func('api/conversation/show','api_conversation_show', true); + api_register_func('api/statusnet/conversation','api_conversation_show', true); /** From 7aae852fe0285ac7dd88685f92715691a099190d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 23 Mar 2016 22:12:08 +0100 Subject: [PATCH 075/485] Some more code cleaning --- include/diaspora.php | 35 ++++++++++++++++++++++++++--------- include/xml.php | 1 + 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 308a799118..a608516622 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1694,11 +1694,8 @@ y * $BPhoto = "[url=".$contact["url"]."][img]".$contact["thumb"]."[/img][/url]"; $arr["body"] = sprintf(t("%1$s is now friends with %2$s"), $A, $B)."\n\n\n".$Bphoto; - $arr["object"] = "".ACTIVITY_OBJ_PERSON."".$contact["name"]."" - ."".$contact["url"]."/".$contact["name"].""; - $arr["object"] .= "".xmlify(''."\n"); - $arr["object"] .= xmlify(''."\n"); - $arr["object"] .= "\n"; + $arr["object"] = self::construct_new_friend_object($contact); + $arr["last-child"] = 1; $arr["allow_cid"] = $user[0]["allow_cid"]; @@ -1713,6 +1710,26 @@ y * } } + /** + * @brief Creates a XML object for a "new friend" message + * + * @param array $contact Array of the contact + * + * @return string The XML + */ + private function construct_new_friend_object($contact) { + $objtype = ACTIVITY_OBJ_PERSON; + $link = ''."\n". + ''."\n"; + + $xmldata = array("object" => array("type" => $objtype, + "title" => $contact["name"], + "id" => $contact["url"]."/".$contact["name"], + "link" => $link)); + + return xml::from_array($xmldata, $xml, true); + } + /** * @brief Processes incoming sharing notification * @@ -2184,9 +2201,9 @@ y * return $message_id; } - /****************************************************************************************** + /* ************************************************************************************** * * Here are all the functions that are needed to transmit data with the Diaspora protocol * - ******************************************************************************************/ + * ************************************************************************************** */ /** * @brief returnes the handle of a contact @@ -3071,7 +3088,7 @@ y * * * @return bool Success */ - function store_like_signature($contact, $post_id) { + public static function store_like_signature($contact, $post_id) { $enabled = intval(get_config('system','diaspora_enabled')); if (!$enabled) { @@ -3135,7 +3152,7 @@ y * * * @return bool Success */ - function store_comment_signature($item, $contact, $uprvkey, $message_id) { + public static function store_comment_signature($item, $contact, $uprvkey, $message_id) { if ($uprvkey == "") { logger('No private key, so not storing comment signature', LOGGER_DEBUG); diff --git a/include/xml.php b/include/xml.php index 2aed3fe8ed..47a2f6f7d5 100644 --- a/include/xml.php +++ b/include/xml.php @@ -1,5 +1,6 @@ Date: Thu, 24 Mar 2016 08:35:06 +0100 Subject: [PATCH 076/485] Scrape: Always take the first alias --- include/Scrape.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Scrape.php b/include/Scrape.php index e8e9a97a16..03d21047e7 100644 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -444,7 +444,7 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) { if($link['@attributes']['rel'] === 'alias') { if(strpos($link['@attributes']['href'],'@') === false) { if(isset($profile)) { - if($link['@attributes']['href'] !== $profile) + if(($link['@attributes']['href'] !== $profile) AND ($alias == "")) $alias = unamp($link['@attributes']['href']); } else From 7bf079d858db1604b9c2a34a414756c1b70066de Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 24 Mar 2016 15:59:53 +0100 Subject: [PATCH 077/485] Some more documentation - again. --- include/diaspora.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/diaspora.php b/include/diaspora.php index a608516622..c5d6943e59 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -755,7 +755,7 @@ class diaspora { * * @param int $uid The user id * @param string $guid The guid of the message -y * + * * @return int|bool message id if the message already was stored into the system - or false. */ private function message_exists($uid, $guid) { @@ -2143,6 +2143,7 @@ y * $datarray = array(); + // Attach embedded pictures to the body if ($data->photo) { foreach ($data->photo AS $photo) $body = "[img]".unxmlify($photo->remote_photo_path). From 7e7cac19f62cef5fe52660a9312ac01a7d3f74a2 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 24 Mar 2016 21:32:55 +0100 Subject: [PATCH 078/485] Avoid a guid whith spaces. --- include/diaspora.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/diaspora.php b/include/diaspora.php index c5d6943e59..32190bc7d6 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -2611,8 +2611,9 @@ class diaspora { $link = $matches[1]; $ret["root_guid"] = preg_replace("=https?://(.*)/posts/(.*)=ism", "$2", $link); - if (($ret["root_guid"] == $link) OR ($ret["root_guid"] == "")) + if (($ret["root_guid"] == $link) OR (trim($ret["root_guid"]) == "")) return(false); + return($ret); } From 16ef9f49408050aab2b6a180f7df9103145f0c03 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 25 Mar 2016 00:49:18 +0100 Subject: [PATCH 079/485] Support for the new contact request data type --- include/diaspora.php | 50 +++++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 32190bc7d6..277eb6f8e8 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -339,6 +339,9 @@ class diaspora { case "comment": return self::receive_comment($importer, $sender, $fields, $msg["message"]); + case "contact": + return self::receive_contact_request($importer, $fields); + case "conversation": return self::receive_conversation($importer, $msg, $fields); @@ -360,9 +363,6 @@ class diaspora { case "profile": return self::receive_profile($importer, $fields); - case "request": - return self::receive_request($importer, $fields); - case "reshare": return self::receive_reshare($importer, $fields, $msg["message"]); @@ -418,6 +418,9 @@ class diaspora { if (in_array($type, array("signed_retraction", "relayable_retraction"))) $type = "retraction"; + if ($type == "request") + $type = "contact"; + $fields = new SimpleXMLElement("<".$type."/>"); $signed_data = ""; @@ -1377,7 +1380,7 @@ class diaspora { // "positive" = "false" would be a Dislike - wich isn't currently supported by Diaspora // We would accept this anyhow. - if ($positive === "true") + if ($positive == "true") $verb = ACTIVITY_LIKE; else $verb = ACTIVITY_DISLIKE; @@ -1738,22 +1741,43 @@ class diaspora { * * @return bool Success */ - private function receive_request($importer, $data) { + private function receive_contact_request($importer, $data) { $author = unxmlify($data->author); $recipient = unxmlify($data->recipient); if (!$author || !$recipient) return false; + // the current protocol version doesn't know these fields + // That means that we will assume their existance + if (isset($data->following)) + $following = (unxmlify($data->following) == "true"); + else + $following = true; + + if (isset($data->sharing)) + $sharing = (unxmlify($data->sharing) == "true"); + else + $sharing = true; + $contact = self::contact_by_handle($importer["uid"],$author); - if($contact) { + // perhaps we were already sharing with this person. Now they're sharing with us. + // That makes us friends. + if ($contact) { + if ($following AND $sharing) { + self::receive_request_make_friend($importer, $contact); + return true; + } else /// @todo Handle all possible variations of adding and retracting of permissions + return false; + } - // perhaps we were already sharing with this person. Now they're sharing with us. - // That makes us friends. - - self::receive_request_make_friend($importer, $contact); - return true; + if (!$following AND $sharing AND in_array($importer["page-flags"], array(PAGE_SOAPBOX, PAGE_NORMAL))) { + logger("Author ".$author." wants to share with us - but doesn't want to listen. Request is ignored.", LOGGER_DEBUG); + return false; + } elseif (!$following AND !$sharing) { + logger("Author ".$author." doesn't want anything - and we don't know the author. Request is ignored.", LOGGER_DEBUG); + return false; } $ret = self::person_by_handle($author); @@ -1824,8 +1848,10 @@ class diaspora { // but if our page-type is PAGE_COMMUNITY or PAGE_SOAPBOX // we are going to change the relationship and make them a follower. - if($importer["page-flags"] == PAGE_FREELOVE) + if (($importer["page-flags"] == PAGE_FREELOVE) AND $sharing AND $following) $new_relation = CONTACT_IS_FRIEND; + elseif (($importer["page-flags"] == PAGE_FREELOVE) AND $sharing) + $new_relation = CONTACT_IS_SHARING; else $new_relation = CONTACT_IS_FOLLOWER; From faa9b77a90be70f76990451aff9c25fa2e05dad4 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 27 Mar 2016 23:25:32 +0200 Subject: [PATCH 080/485] Some more small documentation stuff --- include/diaspora.php | 4 ++-- include/xml.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 277eb6f8e8..d2a90fc983 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -118,7 +118,7 @@ class diaspora { * * @return string the repaired signature */ - function repair_signature($signature, $handle = "", $level = 1) { + private function repair_signature($signature, $handle = "", $level = 1) { if ($signature == "") return ($signature); @@ -146,7 +146,7 @@ class diaspora { * 'author' -> author diaspora handle * 'key' -> author public key (converted to pkcs#8) */ - function decode($importer, $xml) { + public static function decode($importer, $xml) { $public = false; $basedom = parse_xml_string($xml); diff --git a/include/xml.php b/include/xml.php index 47a2f6f7d5..2bcc73b8f7 100644 --- a/include/xml.php +++ b/include/xml.php @@ -15,7 +15,7 @@ class xml { * * @return string The created XML */ - function from_array($array, &$xml, $remove_header = false, $namespaces = array(), $root = true) { + public static function from_array($array, &$xml, $remove_header = false, $namespaces = array(), $root = true) { if ($root) { foreach($array as $key => $value) { @@ -78,7 +78,7 @@ class xml { * @param object $target The XML target * @param string $elementname Name of the XML element of the target */ - function copy(&$source, &$target, $elementname) { + public static function copy(&$source, &$target, $elementname) { if (count($source->children()) == 0) $target->addChild($elementname, xmlify($source)); else { From 7e711d9d62ff9163d7cc83e24bae556e82f7fef8 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 27 Mar 2016 23:38:35 +0200 Subject: [PATCH 081/485] And some more doc stuff --- include/diaspora.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index d2a90fc983..3795def479 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -737,7 +737,7 @@ class diaspora { * @param string $handle The checked handle in the format user@domain.tld * @param bool $is_comment Is the check for a comment? * - * @return bool is posting allowed? + * @return array The contact data */ private function allowed_contact_by_handle($importer, $handle, $is_comment = false) { $contact = self::contact_by_handle($importer["uid"], $handle); @@ -931,7 +931,9 @@ class diaspora { * @param array $person The record of the person * @param int $uid The user id * - * @return array of contact id and network type + * @return array + * 'cid' => contact id + * 'network' => network type */ private function author_contact_by_url($contact, $person, $uid) { From b6121a0009340a15e7d0317803707d4c11197a6d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 28 Mar 2016 00:06:46 +0200 Subject: [PATCH 082/485] And wow ... some more documentation --- include/xml.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/xml.php b/include/xml.php index 2bcc73b8f7..aa74cf65cf 100644 --- a/include/xml.php +++ b/include/xml.php @@ -12,6 +12,7 @@ class xml { * @param object $xml The createdXML will be returned by reference * @param bool $remove_header Should the XML header be removed or not? * @param array $namespaces List of namespaces + * @param bool $root - interally used parameter. Mustn't be used from outside. * * @return string The created XML */ From 65d37a8c2093ae6da95ac2a8b56bd854ab1e7b8b Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Mon, 28 Mar 2016 16:29:05 +0200 Subject: [PATCH 083/485] first files - move to Version 0.1 --- README.md | 33 +- config.php | 65 + css/style.css | 1435 ++++ default.php | 29 + font/open_sans/fonts/Bold/OpenSans-Bold.eot | Bin 0 -> 110106 bytes font/open_sans/fonts/Bold/OpenSans-Bold.svg | 958 +++ font/open_sans/fonts/Bold/OpenSans-Bold.ttf | Bin 0 -> 109928 bytes font/open_sans/fonts/Bold/OpenSans-Bold.woff | Bin 0 -> 63564 bytes .../fonts/BoldItalic/OpenSans-BoldItalic.eot | Bin 0 -> 128050 bytes .../fonts/BoldItalic/OpenSans-BoldItalic.svg | 958 +++ .../fonts/BoldItalic/OpenSans-BoldItalic.ttf | Bin 0 -> 127844 bytes .../fonts/BoldItalic/OpenSans-BoldItalic.woff | Bin 0 -> 73624 bytes .../fonts/ExtraBold/OpenSans-ExtraBold.eot | Bin 0 -> 106770 bytes .../fonts/ExtraBold/OpenSans-ExtraBold.svg | 958 +++ .../fonts/ExtraBold/OpenSans-ExtraBold.ttf | Bin 0 -> 106572 bytes .../fonts/ExtraBold/OpenSans-ExtraBold.woff | Bin 0 -> 62508 bytes .../OpenSans-ExtraBoldItalic.eot | Bin 0 -> 123774 bytes .../OpenSans-ExtraBoldItalic.svg | 958 +++ .../OpenSans-ExtraBoldItalic.ttf | Bin 0 -> 123548 bytes .../OpenSans-ExtraBoldItalic.woff | Bin 0 -> 71720 bytes .../fonts/Italic/OpenSans-Italic.eot | Bin 0 -> 131338 bytes .../fonts/Italic/OpenSans-Italic.svg | 958 +++ .../fonts/Italic/OpenSans-Italic.ttf | Bin 0 -> 131152 bytes .../fonts/Italic/OpenSans-Italic.woff | Bin 0 -> 76104 bytes font/open_sans/fonts/Light/OpenSans-Light.eot | Bin 0 -> 107642 bytes font/open_sans/fonts/Light/OpenSans-Light.svg | 958 +++ font/open_sans/fonts/Light/OpenSans-Light.ttf | Bin 0 -> 107460 bytes .../open_sans/fonts/Light/OpenSans-Light.woff | Bin 0 -> 62844 bytes .../LightItalic/OpenSans-LightItalic.eot | Bin 0 -> 133006 bytes .../LightItalic/OpenSans-LightItalic.svg | 958 +++ .../LightItalic/OpenSans-LightItalic.ttf | Bin 0 -> 132796 bytes .../LightItalic/OpenSans-LightItalic.woff | Bin 0 -> 76408 bytes .../fonts/Regular/OpenSans-Regular.eot | Bin 0 -> 106442 bytes .../fonts/Regular/OpenSans-Regular.svg | 958 +++ .../fonts/Regular/OpenSans-Regular.ttf | Bin 0 -> 106252 bytes .../fonts/Regular/OpenSans-Regular.woff | Bin 0 -> 63712 bytes .../fonts/Semibold/OpenSans-Semibold.eot | Bin 0 -> 108414 bytes .../fonts/Semibold/OpenSans-Semibold.svg | 958 +++ .../fonts/Semibold/OpenSans-Semibold.ttf | Bin 0 -> 108220 bytes .../fonts/Semibold/OpenSans-Semibold.woff | Bin 0 -> 64388 bytes .../OpenSans-SemiboldItalic.eot | Bin 0 -> 130914 bytes .../OpenSans-SemiboldItalic.svg | 958 +++ .../OpenSans-SemiboldItalic.ttf | Bin 0 -> 130692 bytes .../OpenSans-SemiboldItalic.woff | Bin 0 -> 75620 bytes font/open_sans/open-sans.css | 80 + frameworks/awesome-bootstrap-checkbox/LICENSE | 21 + .../awesome-bootstrap-checkbox/README.md | 187 + .../awesome-bootstrap-checkbox.css | 317 + .../awesome-bootstrap-checkbox.less | 241 + .../awesome-bootstrap-checkbox.scss | 245 + .../awesome-bootstrap-checkbox/bower.json | 22 + .../awesome-bootstrap-checkbox/package.json | 32 + frameworks/bootstrap-colorpicker/LICENSE | 13 + frameworks/bootstrap-colorpicker/README.md | 23 + .../css/bootstrap-colorpicker.css | 261 + .../css/bootstrap-colorpicker.min.css | 9 + .../alpha-horizontal.png | Bin 0 -> 3635 bytes .../img/bootstrap-colorpicker/alpha.png | Bin 0 -> 3271 bytes .../bootstrap-colorpicker/hue-horizontal.png | Bin 0 -> 2837 bytes .../img/bootstrap-colorpicker/hue.png | Bin 0 -> 2972 bytes .../img/bootstrap-colorpicker/saturation.png | Bin 0 -> 8817 bytes .../js/bootstrap-colorpicker.js | 1087 +++ .../js/bootstrap-colorpicker.min.js | 1 + .../bootstrap-select/css/bootstrap-select.css | 282 + .../css/bootstrap-select.css.map | 1 + .../css/bootstrap-select.min.css | 6 + .../bootstrap-select/js/bootstrap-select.js | 1735 +++++ .../js/bootstrap-select.js.map | 1 + .../js/bootstrap-select.min.js | 8 + .../js/i18n/defaults-ar_AR.js | 49 + .../js/i18n/defaults-ar_AR.min.js | 12 + .../js/i18n/defaults-bg_BG.js | 44 + .../js/i18n/defaults-bg_BG.min.js | 7 + .../js/i18n/defaults-cro_CRO.js | 44 + .../js/i18n/defaults-cro_CRO.min.js | 7 + .../js/i18n/defaults-cs_CZ.js | 35 + .../js/i18n/defaults-cs_CZ.min.js | 7 + .../js/i18n/defaults-da_DK.js | 44 + .../js/i18n/defaults-da_DK.min.js | 7 + .../js/i18n/defaults-de_DE.js | 35 + .../js/i18n/defaults-de_DE.min.js | 7 + .../js/i18n/defaults-en_US.js | 44 + .../js/i18n/defaults-en_US.min.js | 7 + .../js/i18n/defaults-es_CL.js | 35 + .../js/i18n/defaults-es_CL.min.js | 7 + .../bootstrap-select/js/i18n/defaults-eu.js | 35 + .../js/i18n/defaults-eu.min.js | 7 + .../js/i18n/defaults-fa_IR.js | 37 + .../js/i18n/defaults-fa_IR.min.js | 7 + .../js/i18n/defaults-fi_FI.js | 44 + .../js/i18n/defaults-fi_FI.min.js | 7 + .../js/i18n/defaults-fr_FR.js | 44 + .../js/i18n/defaults-fr_FR.min.js | 7 + .../js/i18n/defaults-hu_HU.js | 44 + .../js/i18n/defaults-hu_HU.min.js | 7 + .../js/i18n/defaults-id_ID.js | 37 + .../js/i18n/defaults-id_ID.min.js | 7 + .../js/i18n/defaults-it_IT.js | 35 + .../js/i18n/defaults-it_IT.min.js | 7 + .../js/i18n/defaults-ko_KR.js | 44 + .../js/i18n/defaults-ko_KR.min.js | 7 + .../js/i18n/defaults-lt_LT.js | 44 + .../js/i18n/defaults-lt_LT.min.js | 7 + .../js/i18n/defaults-nb_NO.js | 70 + .../js/i18n/defaults-nb_NO.min.js | 13 + .../js/i18n/defaults-nl_NL.js | 35 + .../js/i18n/defaults-nl_NL.min.js | 7 + .../js/i18n/defaults-pl_PL.js | 37 + .../js/i18n/defaults-pl_PL.min.js | 7 + .../js/i18n/defaults-pt_BR.js | 35 + .../js/i18n/defaults-pt_BR.min.js | 7 + .../js/i18n/defaults-pt_PT.js | 35 + .../js/i18n/defaults-pt_PT.min.js | 7 + .../js/i18n/defaults-ro_RO.js | 35 + .../js/i18n/defaults-ro_RO.min.js | 7 + .../js/i18n/defaults-ru_RU.js | 36 + .../js/i18n/defaults-ru_RU.min.js | 7 + .../js/i18n/defaults-sk_SK.js | 37 + .../js/i18n/defaults-sk_SK.min.js | 7 + .../js/i18n/defaults-sl_SI.js | 44 + .../js/i18n/defaults-sl_SI.min.js | 7 + .../js/i18n/defaults-sv_SE.js | 44 + .../js/i18n/defaults-sv_SE.min.js | 7 + .../js/i18n/defaults-tr_TR.js | 44 + .../js/i18n/defaults-tr_TR.min.js | 7 + .../js/i18n/defaults-ua_UA.js | 35 + .../js/i18n/defaults-ua_UA.min.js | 7 + .../js/i18n/defaults-zh_CN.js | 35 + .../js/i18n/defaults-zh_CN.min.js | 7 + .../js/i18n/defaults-zh_TW.js | 37 + .../js/i18n/defaults-zh_TW.min.js | 7 + frameworks/bootstrap/css/bootstrap-theme.css | 587 ++ .../bootstrap/css/bootstrap-theme.css.map | 1 + .../bootstrap/css/bootstrap-theme.min.css | 6 + .../bootstrap/css/bootstrap-theme.min.css.map | 1 + frameworks/bootstrap/css/bootstrap.css | 6760 +++++++++++++++++ frameworks/bootstrap/css/bootstrap.css.map | 1 + frameworks/bootstrap/css/bootstrap.min.css | 6 + .../bootstrap/css/bootstrap.min.css.map | 1 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes frameworks/bootstrap/js/bootstrap.js | 2363 ++++++ frameworks/bootstrap/js/bootstrap.min.js | 7 + frameworks/bootstrap/js/npm.js | 13 + frameworks/ekko-lightbox/ekko-lightbox.css | 62 + frameworks/ekko-lightbox/ekko-lightbox.js | 440 ++ .../ekko-lightbox/ekko-lightbox.min.css | 6 + frameworks/ekko-lightbox/ekko-lightbox.min.js | 7 + frameworks/font-awesome/HELP-US-OUT.txt | 7 + frameworks/font-awesome/css/font-awesome.css | 2086 +++++ .../font-awesome/css/font-awesome.min.css | 4 + frameworks/font-awesome/fonts/FontAwesome.otf | Bin 0 -> 109688 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 70807 bytes .../fonts/fontawesome-webfont.svg | 655 ++ .../fonts/fontawesome-webfont.ttf | Bin 0 -> 142072 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 83588 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 66624 bytes frameworks/font-awesome/less/animated.less | 34 + .../font-awesome/less/bordered-pulled.less | 25 + frameworks/font-awesome/less/core.less | 12 + frameworks/font-awesome/less/fixed-width.less | 6 + .../font-awesome/less/font-awesome.less | 17 + frameworks/font-awesome/less/icons.less | 697 ++ frameworks/font-awesome/less/larger.less | 13 + frameworks/font-awesome/less/list.less | 19 + frameworks/font-awesome/less/mixins.less | 26 + frameworks/font-awesome/less/path.less | 15 + .../font-awesome/less/rotated-flipped.less | 20 + frameworks/font-awesome/less/stacked.less | 20 + frameworks/font-awesome/less/variables.less | 708 ++ frameworks/font-awesome/scss/_animated.scss | 34 + .../font-awesome/scss/_bordered-pulled.scss | 25 + frameworks/font-awesome/scss/_core.scss | 12 + .../font-awesome/scss/_fixed-width.scss | 6 + frameworks/font-awesome/scss/_icons.scss | 697 ++ frameworks/font-awesome/scss/_larger.scss | 13 + frameworks/font-awesome/scss/_list.scss | 19 + frameworks/font-awesome/scss/_mixins.scss | 26 + frameworks/font-awesome/scss/_path.scss | 15 + .../font-awesome/scss/_rotated-flipped.scss | 20 + frameworks/font-awesome/scss/_stacked.scss | 20 + frameworks/font-awesome/scss/_variables.scss | 708 ++ .../font-awesome/scss/font-awesome.scss | 17 + frameworks/jRange/LICENSE | 21 + frameworks/jRange/README.md | 5 + frameworks/jRange/jquery.range-min.js | 1 + frameworks/jRange/jquery.range.css | 173 + frameworks/jRange/jquery.range.js | 401 + frameworks/jRange/jquery.range.less | 198 + frameworks/jRange/package.json | 23 + frameworks/jasny/css/jasny-bootstrap.css | 621 ++ frameworks/jasny/css/jasny-bootstrap.css.map | 1 + frameworks/jasny/css/jasny-bootstrap.min.css | 7 + frameworks/jasny/js/jasny-bootstrap.js | 1024 +++ frameworks/jasny/js/jasny-bootstrap.min.js | 6 + .../jquery.justifiedGallery.min.js | 7 + .../justifiedGallery/justifiedGallery.min.css | 7 + img/bg_circle.png | Bin 0 -> 369 bytes img/dynamic.php | 55 + img/icon_search16x16.png | Bin 0 -> 1238 bytes img/mime/audio.png | Bin 0 -> 1131 bytes img/mime/excel.png | Bin 0 -> 1079 bytes img/mime/file.png | Bin 0 -> 1084 bytes img/mime/illustrator.png | Bin 0 -> 1203 bytes img/mime/image.png | Bin 0 -> 1206 bytes img/mime/indesign.png | Bin 0 -> 1335 bytes img/mime/pdf.png | Bin 0 -> 1263 bytes img/mime/photoshop.png | Bin 0 -> 1237 bytes img/mime/powerpoint.png | Bin 0 -> 1134 bytes img/mime/video.png | Bin 0 -> 1155 bytes img/mime/word.png | Bin 0 -> 1074 bytes img/mime/zip.png | Bin 0 -> 1113 bytes img/placeholder-postform-arrow.png | Bin 0 -> 1863 bytes img/screenshots/screenshot-jot-modal.png | Bin 0 -> 110904 bytes img/screenshots/screenshot-mobile.png | Bin 0 -> 46340 bytes .../screenshot-schema-love-music.png | Bin 0 -> 244720 bytes img/screenshots/screenshot-schema-red.png | Bin 0 -> 768105 bytes img/screenshots/screenshot-settings.png | Bin 0 -> 51890 bytes img/screenshots/screenshot.png | Bin 0 -> 136478 bytes img/select_arrow.png | Bin 0 -> 972 bytes js/filebrowser.js | 171 + js/theme.js | 326 + php/Colors.php | 292 + php/Image.php | 34 + php/PHPColors/Color.php | 493 ++ php/PHPColors/README.md | 162 + php/frio_boot.php | 131 + php/modes/default.php | 186 + php/modes/modal.php | 11 + php/modes/standard.php | 142 + schema/love-music.css | 72 + schema/love-music.php | 14 + schema/red.php | 9 + screenshot.png | Bin 0 -> 136478 bytes style.php | 153 + templates/comment_item.tpl | 118 + templates/common_tabs.tpl | 47 + templates/field_checkbox.tpl | 8 + templates/field_colorinput.tpl | 10 + templates/field_radio.tpl | 10 + templates/filebrowser_plain.tpl | 51 + templates/jot-header.tpl | 410 + templates/jot.tpl | 100 + templates/nav.tpl | 250 + templates/photo_top.tpl | 4 + templates/photos_recent.tpl | 14 + templates/profile_advanced.tpl | 229 + templates/profile_vcard.tpl | 117 + templates/search_item.tpl | 251 + templates/theme_settings.tpl | 67 + templates/threaded_conversation.tpl | 39 + templates/vcard-widget.tpl | 18 + templates/wall_thread.tpl | 445 ++ theme.php | 93 + 257 files changed, 40746 insertions(+), 1 deletion(-) create mode 100644 config.php create mode 100644 css/style.css create mode 100644 default.php create mode 100755 font/open_sans/fonts/Bold/OpenSans-Bold.eot create mode 100755 font/open_sans/fonts/Bold/OpenSans-Bold.svg create mode 100755 font/open_sans/fonts/Bold/OpenSans-Bold.ttf create mode 100755 font/open_sans/fonts/Bold/OpenSans-Bold.woff create mode 100755 font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.eot create mode 100755 font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.svg create mode 100755 font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.ttf create mode 100755 font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.woff create mode 100755 font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.eot create mode 100755 font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.svg create mode 100755 font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.ttf create mode 100755 font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.woff create mode 100755 font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot create mode 100755 font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg create mode 100755 font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf create mode 100755 font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff create mode 100755 font/open_sans/fonts/Italic/OpenSans-Italic.eot create mode 100755 font/open_sans/fonts/Italic/OpenSans-Italic.svg create mode 100755 font/open_sans/fonts/Italic/OpenSans-Italic.ttf create mode 100755 font/open_sans/fonts/Italic/OpenSans-Italic.woff create mode 100755 font/open_sans/fonts/Light/OpenSans-Light.eot create mode 100755 font/open_sans/fonts/Light/OpenSans-Light.svg create mode 100755 font/open_sans/fonts/Light/OpenSans-Light.ttf create mode 100755 font/open_sans/fonts/Light/OpenSans-Light.woff create mode 100755 font/open_sans/fonts/LightItalic/OpenSans-LightItalic.eot create mode 100755 font/open_sans/fonts/LightItalic/OpenSans-LightItalic.svg create mode 100755 font/open_sans/fonts/LightItalic/OpenSans-LightItalic.ttf create mode 100755 font/open_sans/fonts/LightItalic/OpenSans-LightItalic.woff create mode 100755 font/open_sans/fonts/Regular/OpenSans-Regular.eot create mode 100755 font/open_sans/fonts/Regular/OpenSans-Regular.svg create mode 100755 font/open_sans/fonts/Regular/OpenSans-Regular.ttf create mode 100755 font/open_sans/fonts/Regular/OpenSans-Regular.woff create mode 100755 font/open_sans/fonts/Semibold/OpenSans-Semibold.eot create mode 100755 font/open_sans/fonts/Semibold/OpenSans-Semibold.svg create mode 100755 font/open_sans/fonts/Semibold/OpenSans-Semibold.ttf create mode 100755 font/open_sans/fonts/Semibold/OpenSans-Semibold.woff create mode 100755 font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.eot create mode 100755 font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg create mode 100755 font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf create mode 100755 font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.woff create mode 100755 font/open_sans/open-sans.css create mode 100644 frameworks/awesome-bootstrap-checkbox/LICENSE create mode 100644 frameworks/awesome-bootstrap-checkbox/README.md create mode 100644 frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css create mode 100644 frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.less create mode 100644 frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.scss create mode 100644 frameworks/awesome-bootstrap-checkbox/bower.json create mode 100644 frameworks/awesome-bootstrap-checkbox/package.json create mode 100644 frameworks/bootstrap-colorpicker/LICENSE create mode 100644 frameworks/bootstrap-colorpicker/README.md create mode 100644 frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.css create mode 100644 frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css create mode 100644 frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png create mode 100644 frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png create mode 100644 frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png create mode 100644 frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png create mode 100644 frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png create mode 100644 frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.js create mode 100644 frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js create mode 100644 frameworks/bootstrap-select/css/bootstrap-select.css create mode 100644 frameworks/bootstrap-select/css/bootstrap-select.css.map create mode 100644 frameworks/bootstrap-select/css/bootstrap-select.min.css create mode 100644 frameworks/bootstrap-select/js/bootstrap-select.js create mode 100644 frameworks/bootstrap-select/js/bootstrap-select.js.map create mode 100644 frameworks/bootstrap-select/js/bootstrap-select.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-ar_AR.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-ar_AR.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-bg_BG.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-bg_BG.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-cro_CRO.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-cro_CRO.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-cs_CZ.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-cs_CZ.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-da_DK.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-da_DK.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-de_DE.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-de_DE.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-en_US.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-en_US.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-es_CL.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-es_CL.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-eu.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-eu.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-fa_IR.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-fa_IR.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-fi_FI.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-fi_FI.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-fr_FR.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-fr_FR.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-hu_HU.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-hu_HU.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-id_ID.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-id_ID.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-it_IT.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-it_IT.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-ko_KR.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-ko_KR.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-lt_LT.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-lt_LT.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-nb_NO.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-nb_NO.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-nl_NL.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-nl_NL.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-pl_PL.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-pl_PL.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-pt_BR.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-pt_BR.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-pt_PT.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-pt_PT.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-ro_RO.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-ro_RO.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-ru_RU.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-ru_RU.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-sk_SK.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-sk_SK.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-sl_SI.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-sl_SI.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-sv_SE.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-sv_SE.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-tr_TR.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-tr_TR.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-ua_UA.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-ua_UA.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-zh_CN.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-zh_CN.min.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-zh_TW.js create mode 100644 frameworks/bootstrap-select/js/i18n/defaults-zh_TW.min.js create mode 100644 frameworks/bootstrap/css/bootstrap-theme.css create mode 100644 frameworks/bootstrap/css/bootstrap-theme.css.map create mode 100644 frameworks/bootstrap/css/bootstrap-theme.min.css create mode 100644 frameworks/bootstrap/css/bootstrap-theme.min.css.map create mode 100644 frameworks/bootstrap/css/bootstrap.css create mode 100644 frameworks/bootstrap/css/bootstrap.css.map create mode 100644 frameworks/bootstrap/css/bootstrap.min.css create mode 100644 frameworks/bootstrap/css/bootstrap.min.css.map create mode 100644 frameworks/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 frameworks/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 frameworks/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 frameworks/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 frameworks/bootstrap/fonts/glyphicons-halflings-regular.woff2 create mode 100644 frameworks/bootstrap/js/bootstrap.js create mode 100644 frameworks/bootstrap/js/bootstrap.min.js create mode 100644 frameworks/bootstrap/js/npm.js create mode 100644 frameworks/ekko-lightbox/ekko-lightbox.css create mode 100644 frameworks/ekko-lightbox/ekko-lightbox.js create mode 100644 frameworks/ekko-lightbox/ekko-lightbox.min.css create mode 100644 frameworks/ekko-lightbox/ekko-lightbox.min.js create mode 100644 frameworks/font-awesome/HELP-US-OUT.txt create mode 100644 frameworks/font-awesome/css/font-awesome.css create mode 100644 frameworks/font-awesome/css/font-awesome.min.css create mode 100644 frameworks/font-awesome/fonts/FontAwesome.otf create mode 100644 frameworks/font-awesome/fonts/fontawesome-webfont.eot create mode 100644 frameworks/font-awesome/fonts/fontawesome-webfont.svg create mode 100644 frameworks/font-awesome/fonts/fontawesome-webfont.ttf create mode 100644 frameworks/font-awesome/fonts/fontawesome-webfont.woff create mode 100644 frameworks/font-awesome/fonts/fontawesome-webfont.woff2 create mode 100644 frameworks/font-awesome/less/animated.less create mode 100644 frameworks/font-awesome/less/bordered-pulled.less create mode 100644 frameworks/font-awesome/less/core.less create mode 100644 frameworks/font-awesome/less/fixed-width.less create mode 100644 frameworks/font-awesome/less/font-awesome.less create mode 100644 frameworks/font-awesome/less/icons.less create mode 100644 frameworks/font-awesome/less/larger.less create mode 100644 frameworks/font-awesome/less/list.less create mode 100644 frameworks/font-awesome/less/mixins.less create mode 100644 frameworks/font-awesome/less/path.less create mode 100644 frameworks/font-awesome/less/rotated-flipped.less create mode 100644 frameworks/font-awesome/less/stacked.less create mode 100644 frameworks/font-awesome/less/variables.less create mode 100644 frameworks/font-awesome/scss/_animated.scss create mode 100644 frameworks/font-awesome/scss/_bordered-pulled.scss create mode 100644 frameworks/font-awesome/scss/_core.scss create mode 100644 frameworks/font-awesome/scss/_fixed-width.scss create mode 100644 frameworks/font-awesome/scss/_icons.scss create mode 100644 frameworks/font-awesome/scss/_larger.scss create mode 100644 frameworks/font-awesome/scss/_list.scss create mode 100644 frameworks/font-awesome/scss/_mixins.scss create mode 100644 frameworks/font-awesome/scss/_path.scss create mode 100644 frameworks/font-awesome/scss/_rotated-flipped.scss create mode 100644 frameworks/font-awesome/scss/_stacked.scss create mode 100644 frameworks/font-awesome/scss/_variables.scss create mode 100644 frameworks/font-awesome/scss/font-awesome.scss create mode 100644 frameworks/jRange/LICENSE create mode 100644 frameworks/jRange/README.md create mode 100644 frameworks/jRange/jquery.range-min.js create mode 100644 frameworks/jRange/jquery.range.css create mode 100644 frameworks/jRange/jquery.range.js create mode 100644 frameworks/jRange/jquery.range.less create mode 100644 frameworks/jRange/package.json create mode 100644 frameworks/jasny/css/jasny-bootstrap.css create mode 100644 frameworks/jasny/css/jasny-bootstrap.css.map create mode 100644 frameworks/jasny/css/jasny-bootstrap.min.css create mode 100644 frameworks/jasny/js/jasny-bootstrap.js create mode 100644 frameworks/jasny/js/jasny-bootstrap.min.js create mode 100644 frameworks/justifiedGallery/jquery.justifiedGallery.min.js create mode 100644 frameworks/justifiedGallery/justifiedGallery.min.css create mode 100644 img/bg_circle.png create mode 100644 img/dynamic.php create mode 100644 img/icon_search16x16.png create mode 100644 img/mime/audio.png create mode 100644 img/mime/excel.png create mode 100644 img/mime/file.png create mode 100644 img/mime/illustrator.png create mode 100644 img/mime/image.png create mode 100644 img/mime/indesign.png create mode 100644 img/mime/pdf.png create mode 100644 img/mime/photoshop.png create mode 100644 img/mime/powerpoint.png create mode 100644 img/mime/video.png create mode 100644 img/mime/word.png create mode 100644 img/mime/zip.png create mode 100644 img/placeholder-postform-arrow.png create mode 100644 img/screenshots/screenshot-jot-modal.png create mode 100644 img/screenshots/screenshot-mobile.png create mode 100644 img/screenshots/screenshot-schema-love-music.png create mode 100644 img/screenshots/screenshot-schema-red.png create mode 100644 img/screenshots/screenshot-settings.png create mode 100644 img/screenshots/screenshot.png create mode 100644 img/select_arrow.png create mode 100644 js/filebrowser.js create mode 100644 js/theme.js create mode 100644 php/Colors.php create mode 100644 php/Image.php create mode 100644 php/PHPColors/Color.php create mode 100644 php/PHPColors/README.md create mode 100644 php/frio_boot.php create mode 100644 php/modes/default.php create mode 100644 php/modes/modal.php create mode 100644 php/modes/standard.php create mode 100644 schema/love-music.css create mode 100644 schema/love-music.php create mode 100644 schema/red.php create mode 100644 screenshot.png create mode 100644 style.php create mode 100644 templates/comment_item.tpl create mode 100644 templates/common_tabs.tpl create mode 100644 templates/field_checkbox.tpl create mode 100644 templates/field_colorinput.tpl create mode 100644 templates/field_radio.tpl create mode 100644 templates/filebrowser_plain.tpl create mode 100644 templates/jot-header.tpl create mode 100644 templates/jot.tpl create mode 100644 templates/nav.tpl create mode 100644 templates/photo_top.tpl create mode 100644 templates/photos_recent.tpl create mode 100644 templates/profile_advanced.tpl create mode 100644 templates/profile_vcard.tpl create mode 100644 templates/search_item.tpl create mode 100644 templates/theme_settings.tpl create mode 100644 templates/threaded_conversation.tpl create mode 100644 templates/vcard-widget.tpl create mode 100644 templates/wall_thread.tpl create mode 100644 theme.php diff --git a/README.md b/README.md index dfba0278ee..e12dec893e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,33 @@ # frio -A bootstrap based theme for friendica +### A bootstrap based theme for friendica +This Theme was started as Experiment to give the user a good looking and modern theme for friendica. + +I conentrated on 3 topics: +1. A Modern, mobile friendly UI with bootstrap and awesome font +2. Try to get a new UX for friendica (e.g. use modals where it seems to be useful) +3. Give the user a powerfull (but easy) possebillities for custimation to personalize the theme and give it a own note. + +**Note:** +This theme is far from beeing stable and ready for productive use. Many parts are missing and will be never added. +Because of the heavy use of the bootstrap framework nearly every friendica theme template may have to be overwritten. It would be a lot of work and after that it would be hard to maintain the theme. + +So why I am doing this? +This theme should be the start of a discussion in the friendica community (users and developers) about UI/UX in friendica. +What frameworks do we want to use? How should default friendica look like? And how do we want to use friendica? What do we need in the core code (At the present time some stuff in this is done with ugly javascript hacks and own php code)? + +Coding a theme is much work but you will get a really good insight of the limitations of friendica and can start a discussion about doing things differently. +So join the discussion at the friendica forums ;-) + +If anyone wants to contribute to this theme he/she is welcome to do this. + +PS: +Don't blame me too much for ugly code and hacks. Fix it ;-) + +#### Credits: +HumHub - Social Network Kit - +Hubzilla - Community Server - +Michael Vogel (Vier Theme) - +StefOfficiel (Friendiboot Theme) - + +#### License: + diff --git a/config.php b/config.php new file mode 100644 index 0000000000..645613363a --- /dev/null +++ b/config.php @@ -0,0 +1,65 @@ + t('Submit'), + '$baseurl' => $a->get_baseurl(), + '$title' => t("Theme settings"), + '$schema' => array('frio_schema', t("Select scheme"), $arr["schema"], '', $scheme_choices), + '$nav_bg' => array('frio_nav_bg', t('Navigation bar background color'), $arr['nav_bg']), + '$nav_icon_color' => array('frio_nav_icon_color', t('Navigation bar icon color '), $arr['nav_icon_color']), + '$link_color' => array('frio_link_color', t('Link color'), $arr['link_color'], '', $link_colors), + '$bgcolor' => array('frio_background_color', t('Set the background color'), $arr['bgcolor']), + '$contentbg_transp' => array('frio_contentbg_transp', t("Content background transparency"), ($arr["contentbg_transp"] ? $arr["contentbg_transp"] : 0 )), + '$background_image' => array('frio_background_image', t('Set the background image'), $arr['background_image']), + '$bg_image_options' => Image::get_options($arr), + )); + + return $o; +} diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000000..5a3347de67 --- /dev/null +++ b/css/style.css @@ -0,0 +1,1435 @@ +/* +To change this license header, choose License Headers in Project Properties. +To change this template file, choose Tools | Templates +and open the template in the editor. +*/ +/* + Created on : 17.02.2016, 23:55:45 + Author : rabuzarus +*/ + +/* Imports */ +@import url("frameworks/bootstrap/css/bootstrap.min.css"); +@import url("frameworks/bootstrap/css/bootstrap-theme.min.css"); +@import url("frameworks/font-awesome/css/font-awesome.min.css"); +@import url("frameworks/jasny/css/jasny-bootstrap.min.css"); +@import url("frameworks/bootstrap-select/css/bootstrap-select.min.css"); +@import url("frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css"); +@import url("frameworks/ekko-lightbox/ekko-lightbox.min.css"); +@import url("frameworks/justifiedGallery/justifiedGallery.min.css"); +@import url("frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css"); +@import url("font/open_sans/open-sans.css"); + + +body { + padding-top: 110px; + background-color: $bgcolor; + background-image: url("$background_image"); + background-size: $background_size_img; + color: #777; + /*color: #555;*/ + font-family: 'Open Sans',sans-serif; +} +body a { + /*color: #555;*/ + /*color: #6fdbe8;*/ + color: $link_color; + text-decoration: none; +} + +body a:hover, body a:focus, body a:active, body a.active, body .btn-link:hover{ + /*color: #59d6e4;*/ + color: $link_hover_color; + text-decoration: none; +} + +hr { + margin-top: 10px; + margin-bottom: 10px; +} +iframe, img { + max-width: 100%; +} +.clear { + clear: both; +} +.no-padding { + padding: 0; +} +.fakelink { + cursor: pointer; +} + +/* +* standard page elements +*/ +#back-to-top { + display: none; + cursor: pointer; + color: white; + position: fixed; + z-index: 49; + right: 20px; + bottom: 20px; + opacity: 1; + font-size: 2.9em; + padding: 0 12px 0 12px; + border-radius: 10px; + background-color: #aaa; + line-height: 1.5; +} + +/* +* Overwriting and Extend Bootstrap +*/ +.label, .label a { + color: #fff !important; +} + +/* Buttons */ + +.btn { + float: none; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + -moz-box-shadow: none; + background-image: none; + text-shadow: none; + border-radius: 3px; + outline: 0!important; + margin-bottom: 0; + font-size: 14px; + font-weight: 600; + padding: 8px 16px; +} + +.btn-default { + background: #ededed; + color: #7a7a7a!important; +} +.btn-sm { + padding: 4px 8px; + font-size: 12px; +} +.btn-primary { + background: $nav_bg; + color: $btn_primary_color !important; +} +.btn-primary:hover, .btn-primary:focus { + background: $btn_primary_hover_color; + text-decoration: none; +} +.btn-primary:active, .btn-primary.active { + outline: 0; + background: $btn_primary_hover_color !important; +} +.btn-link { +/* color: #6fdbe8;*/ + color: $link_color; +} +.btn-link:focus, .btn-link:hover { + color: #23527c; +} +/*.btn-info { + background: #6fdbe8; + color: #fff!important; +} +.btn-info:hover, .btn-info:focus { + background: #59d6e4!important; + text-decoration: none; +} +.btn-info:active, .btn-info.active { + outline: 0; + background: #59d6e4; +}*/ + +.btn-main { + /*background: #6fdbe8;*/ + background: $link_color; + color: #fff!important; +} +.btn-main:hover, .btn-main:focus { + /*background: #59d6e4!important;*/ + background: $link_hover_color !important; + text-decoration: none; +} +.btn-main:active, .btn-main.active { + outline: 0; + /*background: #59d6e4;*/ + background: $link_hover_color; +} + +/* NavBar */ +.topbar { + position: fixed; + display: block; + height: 50px; + width: 100%; + padding-left: 15px; + padding-right: 15px +} +.topbar ul.nav { + float: left +} +.topbar ul.nav>li { + float: left +} +@media (min-width: 992px) { +.topbar ul.nav>li>a { + padding-top: 15px; + padding-bottom: 15px; + line-height: 20px +} +} +@media (max-width: 991px) { + .topbar ul.nav>li>a { padding-left: 10px; padding-right: 10px; }; +} +.topbar .dropdown-footer { + margin: 10px +} +.topbar .dropdown-header { + font-size: 16px; + padding: 3px 10px; + margin-bottom: 10px; + font-weight: 300; + color: #bebebe +} +.topbar .dropdown-header .dropdown-header-link { + position: absolute; + top: 2px; + right: 10px +} +.topbar .dropdown-header .dropdown-header-link a { + /*color: #6fdbe8!important;*/ + color: $link_color !important; + font-size: 12px; + font-weight: 400 +} +.topbar .dropdown-header:hover { + color: #bebebe +} +#topbar-first, +nav.navbar { + background-color: $nav_bg; + top: 0; + z-index: 1030; + color: $nav_icon_color; +} +#topbar-first .nav>li>a:hover, +#topbar-first .nav>li>a:focus, +#topbar-first .nav>.open>a, +nav.navbar .nav>li>a:hover, +nav.navbar .nav>li>a:focus{ + background-color: $nav_icon_hover_color; +} +#topbar-first .nav>.account { + height: 50px; + margin-left: 20px +} +#topbar-first .nav>.account img { + margin-left: 10px; + height: 32px; + width: 32px; + border-radius: 3px; +} +#topbar-first .nav>.account .dropdown-toggle { + padding: 10px 5px 8px; + line-height: 1.1em; + text-align: left +} +#topbar-first .nav>.account .dropdown-toggle span { + font-size: 12px +} +#topbar-first .topbar-brand { + position: relative; + z-index: 2 +} +#topbar-first .topbar-actions { + position: relative; + z-index: 3 +} +#topbar-first .topbar-nav { + /*position: absolute;*/ + left: 0; + right: 0; + text-align: center; + z-index: 1 +} +#topbar-first .topbar-nav .nav-segment { + position: relative; + text-align: left +} +#topbar-first .topbar-nav .nav-segment>a { +/* padding: 5px 10px; + margin: 10px 2px;*/ + display: inline-block; +/* border-radius: 2px;*/ + text-decoration: none; + text-align: left +} +#topbar-first .topbar-nav .nav-segment .nav-notify { + position: absolute; + top: 4px; + right: -2px; + background-color: #ff8989; + +/* text-transform: uppercase; + display: inline-block; + padding: 3px 5px 4px; + font-weight: 600; + font-size: 10px!important; + color: #fff!important; + vertical-align: baseline; + white-space: nowrap; + text-shadow: none; + display: none;*/ +} +#topbar-first .topbar-nav .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 10px; + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #fff; + z-index: 1035 +} +#topbar-first .topbar-nav .arrow { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + z-index: 1001; + border-width: 11px; + left: 50%; + margin-left: -18px; + border-top-width: 0; + border-bottom-color: rgba(0, 0, 0, .15); + top: -19px; + z-index: 1035 +} +#topbar-first .topbar-nav .dropdown-menu { + width: 350px; + margin-left: -148px +} +#topbar-first .topbar-nav .dropdown-menu ul.media-list { + max-height: 400px; + overflow: auto +} +#topbar-first .topbar-nav .dropdown-menu li { + position: relative +} +#topbar-first .topbar-nav .dropdown-menu li i.approval { + position: absolute; + left: 2px; + top: 36px; + font-size: 14px +} +#topbar-first .topbar-nav .dropdown-menu li i.accepted { + color: #5cb85c +} +#topbar-first .topbar-nav .dropdown-menu li i.declined { + color: #d9534f +} +#topbar-first .topbar-nav .dropdown-menu li .media { + position: relative +} +#topbar-first .topbar-nav .dropdown-menu li .media .img-space { + position: absolute; + top: 14px; + left: 14px +} +#topbar-first .dropdown-footer { + margin: 10px 10px 5px +} +#topbar-first a, +nav.navbar a { + /*color: #fff*/ + color: $nav_icon_color; +} +#topbar-first .caret { + border-top-color: #bebebe +} +#topbar-first .btn-group>a { + background-color: #7f9baa +} +#topbar-first .btn-enter { + background-color: #7f9baa; + margin: 6px 0 +} +#topbar-first .btn-enter:hover { + background-color: #89a2b0 +} + + +/* Notification Menu */ +#topbar-first #nav-notifications-menu { + max-height: 400px; +} +#topbar-first #nav-notifications-menu a { + color: #555; + padding: 0; +} +#topbar-first #nav-notifications-menu li.notif-entry { + color: #555; + padding: 10px; + border-bottom: 1px solid #eee; + position: relative; + border-left: 3px solid #fff; + font-size: 12px; +} + +#topbar-first #nav-notifications-menu li.notify-unseen { + border-left: 3px solid #f3fcfd; + background-color: #f3fcfd; +} +#topbar-first #nav-notifications-menu li.notif-entry:hover { + background-color: #f7f7f7; + /*border-left: 3px solid #6fdbe8;*/ + border-left: 3px solid $link_color; +} +/*#topbar-first #nav-notifications-menu i.accepted { + color: #6fdbe8!important +} +#topbar-first #nav-notifications-menu i.declined { + color: #ff8989!important +}*/ +#topbar-first #nav-notifications-menu li.placeholder { + border-bottom: none +} +#topbar-first #nav-notifications-menu .media .media-body { + font-size: 13px!important; + font-weight: 600!important; +} +#topbar-first #nav-notifications-menu .media .media-body .contactname { + font-weight: bold; +} +#topbar-first #nav-notifications-menu .media .media-body .label { + padding: .1em .5em +} +#topbar-first #nav-notifications-menu li.notif-entry .media-object a img { + height: 32px; + width: 32px; + border-radius: 3px; +} +#topbar-first .account .user-title { + text-align: right +} +#topbar-first .account .user-title span { + color: #d7d7d7 +} +#topbar-first .account #main-menu .nav-notify { + position: absolute; + top: 4px; + right: -2px; + background-color: #ff8989; +} +#topbar-first .dropdown.account>a, +#topbar-first .dropdown.account.open>a, +#topbar-first .dropdown.account>a:hover, +#topbar-first .dropdown.account.open>a:hover { + background-color: $nav_bg +} +/* Nav Search */ +#topbar-first #search-box .navbar-form { + margin: 0px; + padding: 10px 15px; +} +#topbar-first #search-box .form-search { + height: 25px; + font-size: 13px; + background-position: 8px 4px; +} +#topbar-first #search-box .btn { + font-size: 10px; + padding: 1px 8px; +} + +/* second topbar */ +#topbar-second { + height: 40px; + top: 50px; + background-color: #fff; + z-index: 1029; + background-image: none; + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, .1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, .1); + box-shadow: 0 1px 10px rgba(0, 0, 0, .1); + border-bottom: 1px solid #d4d4d4 +} +#topbar-second > .container { + height: 100%; +} +@media screen and (max-width: 767px) { + #topbar-second > .container, + #topbar-second #navbar-button { + padding: 0; + } +} +#topbar-second .dropdown-menu { + padding-top: 0; + padding-bottom: 0 +} +#topbar-second .dropdown-menu .divider { + margin: 0 +} +#topbar-second #space-menu-dropdown, +#topbar-second #search-menu-dropdown { + width: 400px +} +#topbar-second #space-menu-dropdown .media-list, +#topbar-second #search-menu-dropdown .media-list { + max-height: 400px; + overflow: auto +} +@media screen and (max-width: 768px) { + #topbar-second #space-menu-dropdown .media-list, + #topbar-second #search-menu-dropdown .media-list { + max-height: 200px + } +} +#topbar-second #space-menu-dropdown form, +#topbar-second #search-menu-dropdown form { + margin: 10px +} +#topbar-second #space-menu-dropdown .search-reset, +#topbar-second #search-menu-dropdown .search-reset { + position: absolute; + color: #999; + margin: 10px; + top: 8px; + right: 10px; + display: none; + cursor: pointer +} +#topbar-second .nav>li>a { + padding: 6px 13px 0; + text-decoration: none; + text-shadow: none; + font-weight: 600; + font-size: 10px; + text-transform: uppercase; + text-align: center; + min-height: 49px +} +#topbar-second .nav>li>a:hover, +#topbar-second .nav>li>a:active, +#topbar-second .nav>li>a:focus { + /*border-bottom: 3px solid #6fdbe8;*/ + border-bottom: 3px solid $link_color; + background-color: #f7f7f7; + color: #555; + text-decoration: none +} +#topbar-second .nav>li>a i { + font-size: 14px +} +#topbar-second .nav>li>a .caret { + border-top-color: #7a7a7a +} +#topbar-second .nav>li>ul>li>a { + border-left: 3px solid #fff; + background-color: #fff; + color: #555 +} +#topbar-second .nav>li>ul>li>a:hover, +#topbar-second .nav>li>ul>li>a.active { + /*border-left: 3px solid #6fdbe8;*/ + border-left: 3px solid $link_color; + background-color: #f7f7f7; + color: #555 +} +#topbar-second .nav>li.active>a { + min-height: 46px +} +#topbar-second .nav>li>a#space-menu { + padding-right: 13px; + border-right: 1px solid #ededed +} +#topbar-second .nav>li>a#search-menu { + padding-top: 15px +} +#topbar-second .nav>li>a:hover, +#topbar-second .nav .open>a, +#topbar-second .nav>li.active { + /*border-bottom: 3px solid #6fdbe8;*/ + border-left: 3px solid $link_color; + background-color: #f7f7f7; + color: #555 +} +#topbar-second .nav>li.active>a:hover { + border-bottom: none +} +#topbar-second #space-menu-dropdown li>ul>li>a>.media .media-body p { + color: #bebebe; + font-size: 11px; + margin: 0; + font-weight: 400 +} + + +/* Dropdown Menus */ +.nav-pills .dropdown-menu, +.nav-tabs .dropdown-menu, +.account .dropdown-menu, +.contact-photo-wrapper .dropdown-menu { + background-color: $nav_bg; + border: none +} +.nav-pills .dropdown-menu li.divider, +.nav-tabs .dropdown-menu li.divider, +.account .dropdown-menu li.divider, +.contact-photo-wrapper .dropdown-menu li.divider { + background-color: $menu_background_hover_color; + border-bottom: none; + margin: 9px 1px!important +} +.nav-pills .dropdown-menu li, +.nav-tabs .dropdown-menu li, +.account .dropdown-menu li, +.contact-photo-wrapper .dropdown-menu li { + border-left: 3px solid $nav_bg; +} +.nav-pills .dropdown-menu li a, +.nav-tabs .dropdown-menu li a, +.account .dropdown-menu li a, +.contact-photo-wrapper .dropdown-menu li a { + color: $nav_icon_color; + font-weight: 400; + font-size: 13px; + padding: 4px 15px +} +.nav-pills .dropdown-menu li a i, +.nav-tabs .dropdown-menu li a i, +.account .dropdown-menu li a i, +.contact-photo-wrapper .dropdown-menu li a i { + margin-right: 5px; + font-size: 14px; + display: inline-block; + width: 14px +} +.nav-pills .dropdown-menu li a:hover, +.nav-tabs .dropdown-menu li a:hover, +.account .dropdown-menu li a:hover, +.contact-photo-wrapper .dropdown-menu li a:hover, +.nav-pills .dropdown-menu li a:visited, +.nav-tabs .dropdown-menu li a:visited, +.account .dropdown-menu li a:visited, +.contact-photo-wrapper .dropdown-menu li a:visited, +.nav-pills .dropdown-menu li a:hover, +.nav-tabs .dropdown-menu li a:hover, +.account .dropdown-menu li a:hover, +.contact-photo-wrapper .dropdown-menu li a:hover, +.nav-pills .dropdown-menu li a:focus, +.nav-tabs .dropdown-menu li a:focus, +.account .dropdown-menu li a:focus, +.contact-photo-wrapper .dropdown-menu li a:focus { + background: 0 0 +} +.nav-pills .dropdown-menu li:hover, +.nav-tabs .dropdown-menu li:hover, +.account .dropdown-menu li:hover, +.contact-photo-wrapper .dropdown-menu li:hover, +.nav-pills .dropdown-menu li.selected, +.nav-tabs .dropdown-menu li.selected, +.account .dropdown-menu li.selected, +.contact-photo-wrapper .dropdown-menu li.selected { + /*border-left: 3px solid #6fdbe8;*/ + border-left: 3px solid $link_color; + color: #fff!important; + background-color: $menu_background_hover_color !important +} +.nav-pills.preferences .dropdown .dropdown-toggle { + color: #bebebe +} +.nav-pills.preferences .dropdown.open .dropdown-toggle, +.nav-pills.preferences .dropdown.open .dropdown-toggle:hover { + background-color: $nav_bg +} + +.nav-pills.preferences .dropdown .dropdown-toggle { + padding: 2px 10px; +} + + +/* + * Aside + * + */ + +aside .widget, +.nav-container .widget { + border: none; + color: #777; + /*background-color: #fff;*/ + background-color: rgba(255,255,255,$contentbg_transp); + box-shadow: 0 0 3px #dadada; + -webkit-box-shadow: 0 0 3px #dadada; + -moz-box-shadow: 0 0 3px #dadada; + border-radius: 4px; + position: relative; + margin-bottom: 20px; + padding: 10px; + font-size: 13px; +} +aside .widget h3, +.nav-container .widget h3 { + font-weight: bold; + font-size: 16px; + margin: 0; + padding-bottom: 20px; +} + +aside .widget ul, +.nav-container .widget ul { + padding: 0px; + margin-top: 0px; + margin-bottom: 0px; + margin-left: -10px; + margin-right: -10px; + /*padding-left: 10px;*/ + list-style: none; +} + +aside .widget li, +.nav-container .widget li { + padding-top: 2px; + padding-bottom: 2px; + padding-left: 20px; + padding-right: 20px; +} +aside .widget li:hover, +aside .widget li.selected, +.nav-container .widget li:hover { + z-index: 2; + color: #555; + background-color: #f7f7f7; + /*border-left: 3px solid #6fdbe8!important;*/ + border-left: 3px solid $link_color !important; + padding-left: 17px; +} +aside .widget li a, +aside .widget li a:hover { + color: #555; +} + +/* forumlist widget */ +aside #datebrowse-sidebar .posted-date-selector-months{ + margin-left: 0; + margin-bottom: 10px; + width: 100% +} +aside #datebrowse-sidebar .posted-date-selector-months li{ + padding-left: 30px; +} +aside #datebrowse-sidebar .posted-date-selector-months li:hover{ + padding-left: 27px; +} + +/* vcard / h-card */ +aside .vcard #profile-photo-wrapper{ + margin: 0; +} +aside .vcard img.u-photo, +aside img.vcard-photo { + width: 100%; + border-radius: 3px; +} +aside .vcard .tool .action{ + position: absolute; + top:20px; + right: 20px; + font-size: 32px; + width: 45px; + height: 45px; + background: rgba(0,0,0,.50); + text-align: center; + border-radius: 3px; + opacity: 0; + -webkit-transition: all 0.25s ease-in-out; + -moz-transition: all 0.25s ease-in-out; + -o-transition: all 0.25s ease-in-out; + -ms-transition: all 0.25s ease-in-out; + transition: all 0.25s ease-in-out; +} +aside .vcard .tool a { +color: rgba(255,255,255,.85); +} +aside .vcard #profile-photo-wrapper:hover .tool .action { + opacity: 1; +} +aside .vcard .profile-header { + margin-bottom: 20px; +} +aside .vcard .fn { + font-size: 20px; + font-weight: bold; +} +aside .vcard .p-addr { + font-style: italic; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding-bottom: 2px; +} +aside .vcard .detail { + display: table; + padding: 5px 0; +} +aside .vcard .icon { + display: table-cell; + padding-right: 10px; +} +#profile-extra-links { + margin-bottom: 20px; +} +aside .vcard #dfrn-request-link-button, +aside .vcard #wallmessage-link-botton { + width: 50%; + margin: 0 0 0 -5px; + float: left; + padding: 0 5px; +} +aside .vcard #dfrn-request-link, +aside .vcard #wallmessage-link { + width: 100%; +} + +/* contact block widget */ +#contact-block .contact-block-content { + clear: both; + overflow: auto; + height: auto; +} +#contact-block .contact-block-div { + float: left; + margin: 0px 5px 5px 0px; +/* height: 90px; + width: 90px;*/ +} +#contact-block contact-block-link { + +} +#contact-block .contact-block-img { + height: 75px; + width: 75px; + border-radius: 4px; +} +/* Section */ +section ul.tabs { + display: none !important; +} + +/* Jot */ +section #jotOpen { + display: none; +} +#jotOpen { + margin-top: 3px; + float: right; +} +#jot-content { + display: none; +} +.jothidden { + /*display: none;*/ +} +#jot-modal .modal-header a, +#profile-jot-submit-wrapper a { + color: #555; +} +#jot-modal .modal-header { + border-bottom: none; +} +#jot-title-wrap, #jot-category-wrap { + margin-bottom: 5px; +} +#jot-text-wrap { + margin-top: 20px; +} +#jot-text-wrap textarea { + min-height: 100px; +} +#profile-jot-wrapper button#jot-submit { + margin-top: 5px; +} + +/* ACL */ +#acl-search { + margin-top: 20px; + padding: 8px; + border: 1px solid #ccc; + width: 100%; +} +#acl-list { + display: block; + border: 1px solid #ccc; + overflow: auto; + clear: both; + min-height: 62px; + margin-top: 20px; + padding: 10px 10px 0px 0px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.acl-list-item { + width: 48%; + width: calc(50% - 10px); + border: 1px solid #ccc; + margin: 0px 0px 10px 10px; + padding: 5px; + float: left; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.acl-list-item img { + width: 40px; + height: 40px; + float: left; + margin-right: 5px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.acl-list-item p { + margin: 0px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.acl-list-item.groupshow { + background-color: #8DB255 +} +.acl-list-item.grouphide { + background-color: #E68364; +} + + +/* +/* Stream +*/ +.panel { + border: none; + /*background-color: #fff;*/ + background-color: rgba(255,255,255,$contentbg_transp); + box-shadow: 0 0 3px #dadada; + -webkit-box-shadow: 0 0 3px #dadada; + -moz-box-shadow: 0 0 3px #dadada; + border-radius: 4px; + position: relative; +} +.panel .panel-body { + padding: 15px; + font-size: 14px; +} +.panel .panel-body .wall-item-content { + color: #555; +} +.tread-wrapper .media { + overflow: visible; + word-wrap: break-word; +} + +/* Thread hover effects */ +.wall-item-container .wall-item-content a, +.wall-item-container .fakelink, +.toplevel_item .fakelink, +.toplevel_item .wall-item-container .btn-link, +.toplevel_item .wall-item-container .wall-item-responses a { + color: #555; + -webkit-transition: all 0.25s ease-in-out; + -moz-transition: all 0.25s ease-in-out; + -o-transition: all 0.25s ease-in-out; + -ms-transition: all 0.25s ease-in-out; + transition: all 0.25s ease-in-out; +} + +.toplevel_item:hover .fakelink, .wall-item-container:hover .fakelink, +.toplevel_item:hover .wall-item-container:hover .btn-link, +.toplevel_item:hover .wall-item-container:hover .wall-item-responses a, +.toplevel_item:hover .wall-item-content a, +.toplevel_item:hover .wall-item-name, +.wall-item-container:hover .wall-item-content a, +.wall-item-container:hover .wall-item-name { + /*color: #6fdbe8;*/ + color: $link_color; + -webkit-transition: all 0.25s ease-in-out; + -moz-transition: all 0.25s ease-in-out; + -o-transition: all 0.25s ease-in-out; + -ms-transition: all 0.25s ease-in-out; + transition: all 0.25s ease-in-out; +} + +/* wall items */ +.wall-item-container { + position: relative; +} + +/* wall items contact photo */ +.contact-photo { + height: 48px; + width: 48px; + border-radius: 3px; + /*maybe some adional stuff is needed for the different screen sizes */ +} +.contact-photo-image-wrapper { + width: 100%; + height: 100%; + overflow: hidden; + position: relative; + text-align: center; +} +.contact-photo-overlay { + width: 100%; + height: 100%; + position: absolute; + overflow: hidden; + top: 0; + left: 0; + border-radius: 3px; + background:rgba(0,0,0,.50); + text-align:center; + opacity:0; + -webkit-transition: opacity .25s ease; + -moz-transition: opacity .25s ease; +} +.contact-photo-overlay:hover { + opacity: 1; +} +.contact-photo-overlay-content { + font-size: 26px; + text-shadow: 1px 1px 1px #ccc; + color:rgba(255,255,255,.85); + height: 100%; + vertical-align: bottom; +} +.contact-photo-xs{ + height: 38px; + width: 38px; + border-radius: 3px; +} +.wwto .contact-photo { + width: auto; + height: 25px; + font-size: 8.8px; + padding: 3.6px 0; + border-radius: 2px; + position: absolute; + top: 30px; + left: 30px; + display: inline-block; +} + +/* wall items action dropdown menu */ +.nav-pills.preferences { + position: absolute; + right: 15px; + top: 10px; +} +.comment .nav-pills.preferences { + right: 0px; + top: 0px; +} +.wall-item-network { + font-size: 13px; +} + +/* wall items contact info */ +.media .media-body { + font-size: 13px; +} +.media .media-body h4.media-heading { + font-size: 14px; + font-weight: 500; + color: #555; +} +.media .media-body .addional-info a, +.media .media-body h5.media-heading a { + display: block; +} +.media .contact-info-xs h5 { + margin: 0 0 5px; +} +.media-heading { + margin: 0 0 5px; +} +.wall-item-name { + font-size: 15px; + font-weight: bold; +} + +/* The lock symbol popup */ +#panel { + position: absolute; + list-style: none; + background-color: $nav_bg; + border: none; + border-radius: 3px; + float: left; + min-width: 160px; + max-width: 220px; + padding: 10px ; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + color: $nav_icon_color; + z-index: 1000; +} + +/* wall items content */ +.wall-item-content { + word-break: break-word; +} +.shared-content-wrapper, +.vevent { + margin-left: 50px; + margin-right: 50px; + padding: 10px; + box-shadow: 0 0 0 1.5px rgba(0, 0, 0, .1) inset, 0 1px 1px rgba(0, 0, 0, .05); +} +@media screen and (max-width: 767px) { + .shared-content-wrapper, + .vevent { + margin-left: 0px; + margin-right: 0px; + } +} +.shared-content-wrapper:hover, +.vevent:hover { + box-shadow: 0 0 0 1.5px rgba(0, 0, 0, .15) inset, 0 1px 1px rgba(0, 0, 0, .05); +} +.shared_header { + margin-left: 0px; + margin-top: 0px; + padding-top: 0px; + border-top: none; + color: inherit; +} +blockquote.shared_content { + margin-left: 20px; + color: inherit; +} +.wall-item-tags, +.itemedited { + margin-top: 10px; + font-size: 13px; +} + +.wall-item-tags a { + color: #555; +} + +/* item social action buttons */ +.wall-item-actions, .wall-item-actions a { + font-size: 13px; + /*color: #aeaeae;*/ + color: #555; + margin-top: 15px; + margin-bottom: 0; +} +.wall-item-actions a:hover { + color: #555; +} +.wall-item-actions-left { + display: table-cell; + vertical-align: middle; +} +.wall-item-actions-right { + display: flex; +} +.wall-item-actions .checkbox { + margin: 0; + margin-left: 20px; +} +.wall-item-actions .button-event { + padding-left: 5px; + padding-right: 5px; +} + +/* wall item hover effects */ +.wall-item-container .wall-item-links, +.wall-item-container .wall-item-actions { + opacity: 0.3; + -webkit-transition: all 0.25s ease-in-out; + -moz-transition: all 0.25s ease-in-out; + -o-transition: all 0.25s ease-in-out; + -ms-transition: all 0.25s ease-in-out; + transition: all 0.25s ease-in-out; +} +.wall-item-container:hover .wall-item-links, +.wall-item-container:hover .wall-item-actions { + opacity: 0.6; + -webkit-transition: all 0.25s ease-in-out; + -moz-transition: all 0.25s ease-in-out; + -o-transition: all 0.25s ease-in-out; + -ms-transition: all 0.25s ease-in-out; + transition: all 0.25s ease-in-out; +} + +/* +/* Comments +*/ +.well { + border: none; + box-shadow: none; + background-color: #ededed; + background-image: none; + margin-bottom: 1px; +} +.well-small { + padding: 10px; + border-radius: 3px; +} +.well hr { + margin: 15px 0 10px; + border-top: 1px solid #d9d9d9; +} +.wall-entry .well { + margin-bottom: 0; +} +.comment-container { + margin-top: 10px; + margin-bottom: 0px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} +.comment .media { + position: relative!important; + margin-top: 0; +} +.hide-comments-outer-wrapper { +/* text-align: center; + margin-top: -18px;*/ +} +.hide-comments-total { + cursor: pointer; +} + +/* +* Comment Box +*/ +.thread_level_2 .wall-item-comment-wrapper { + padding-right: 5px; +} +.comment-edit-submit-wrapper { + margin-bottom: 25px; +} +.comment-edit-submit-wrapper a, +.comment-edit-submit-wrapper a:hover { + color: #555; + padding-top: 5px !important; + padding-bottom: 5px !important; +} + +/* acpopup */ +.acpopup { + max-height: 150px; + background-color: #ffffff; + color: #555; + border-radius: 4px; + overflow: auto; + z-index: 100000; + box-shadow: 0 6px 12px rgba(0,0,0,.175); +} +.acpopupitem { + color: #555; + padding: 4px; + clear: left; +} +.acpopupitem.selected { + background-color: $nav_bg; + color: $nav_icon_color; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} + +/* The wall-item thread levels */ +/*.wall-item-container.thread_level_3 { + margin-left: 80px; + width: calc(100% - 90px); +} +.wall-item-container.thread_level_4 { + margin-left: 95px; + width: calc(100% - 105px); +} +.wall-item-container.thread_level_5 { + margin-left: 110px; + width: calc(100% - 120px); +} +.wall-item-container.thread_level_6 { + margin-left: 125px; + width: calc(100% - 135px); +} +.wall-item-container.thread_level_7 { + margin-left: 140px; + width: calc(100% - 150px); +}*/ + +.wall-item-container.thread_level_3, +.wall-item-container.thread_level_4, +.wall-item-container.thread_level_5, +.wall-item-container.thread_level_6, +.wall-item-container.thread_level_7 { + margin-left: 15px; + +} +/* Menubar Tabs */ +#tabmenu { + height: 100%; + /*margin-left: -15px;*/ + padding: 0; +} +ul.tabs { + list-style: none; + height: 100%; + padding: 0; + padding-top: 10px; + margin: 0; +} +ul.tabs li { + float: left; + margin: 0; + padding: 0; + /*border-bottom: 0 solid #6fdbe8;*/ + border-bottom: 0 solid $link_color; + font-size: 13px; + height: 100%; + transition: all .15s ease; +} +ul.tabs li a { + margin-left: 10px; + margin-right: 10px; + /*color: #6fdbe8;*/ + color: $link_color !important; +} +ul.tabs li:hover, ul.tabs li.active { + border-bottom-width: 4px; +} +ul.dropdown-menu li:hover { + border-bottom-width: 0; +} + + +/* Dropdown Menu */ +.dropdown-menu li a { + font-size: 13px!important; + font-weight: 600!important; +} +.dropdown-menu li a:hover, .dropdown-menu li a:visited, +.dropdown-menu li a:hover, .dropdown-menu li a:focus { + background: 0 0; +} + +.dropdown-menu li:first-child { + margin-top: 3px; +} + +/* Notificaiotn badges */ +.nav-notify .show { + display: block; +} + +/* Media Classes */ +.media .time { + font-size: 11px; + color: #bebebe; +} + +/* Forms */ +.form-control { + border: 2px solid #ededed; + box-shadow: none; +} +.form-control:focus { + /*border: 2px solid #6fdbe8;*/ + border: 2px solid $link_color; + outline: 0; + box-shadow: none; +} + + +.checkbox input[type="checkbox"]:focus + label::before, +.checkbox input[type="radio"]:focus + label::before { + /*border: 2px solid #6fdbe8;*/ + border: 2px solid $link_color; + outline: 0; + box-shadow: none; +} + +/* Search form */ +.form-control.form-search { + border-radius: 30px; + background-image: url(img/icon_search16x16.png); + background-repeat: no-repeat; + background-position: 10px 8px; + padding-left: 34px; +} +.form-group-search { + position: relative; +} + +.form-group-search { + position: relative; +} + +.form-group-search .form-button-search { + position: absolute; + top: 4px; + right: 4px; + border-radius: 30px; +} + +/* PAGES */ + +/* Profile-page */ +#profile-page, .photos-content-wrapper, .settings-content-wrapper { + padding: 15px; + padding-bottom: 20px; + margin-bottom: 20px; + border: none; + /*background-color: #fff;*/ + background-color: rgba(255,255,255,$contentbg_transp); + border-radius: 4px; + position: relative; + overflow: hidden; + color: #555; + box-shadow: 0 0 3px #dadada; + -webkit-box-shadow: 0 0 3px #dadada; + -moz-box-shadow: 0 0 3px #dadada; +} +#profile-content-standard, +#profile-content-advanced { + overflow: hidden; +} +#profile-menu { + margin-top: 20px; + margin-bottom: 20px; +} +.contact-block-div.forumlist-profile-advanced { + float: left; +} + +/* +* Overwriting for transparency and other colors +*/ +main .nav-tabs>li.active>a, +main .nav-tabs>li.active>a:focus, +main .nav-tabs>li.active>a:hover { + background-color: rgba(255,255,255,$contentbg_transp); +} + + diff --git a/default.php b/default.php new file mode 100644 index 0000000000..0362be916c --- /dev/null +++ b/default.php @@ -0,0 +1,29 @@ +argv[0]); +if($page_type === "modal") { + $_GET["mode"] = "modal"; +} + +if((isset($_GET["mode"]) AND ($_GET["mode"] == "modal"))) { + + require "view/theme/frio/php/modes/modal.php"; +} elseif($page_type === "standard_page") { + require "view/theme/frio/php/modes/standard.php"; +} else { + require "view/theme/frio/php/modes/default.php"; +} + diff --git a/font/open_sans/fonts/Bold/OpenSans-Bold.eot b/font/open_sans/fonts/Bold/OpenSans-Bold.eot new file mode 100755 index 0000000000000000000000000000000000000000..016123ba039ffba1146e6122bf3f0dbc23e7afd5 GIT binary patch literal 110106 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 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/Bold/OpenSans-Bold.svg b/font/open_sans/fonts/Bold/OpenSans-Bold.svg new file mode 100755 index 0000000000..81c8a275a7 --- /dev/null +++ b/font/open_sans/fonts/Bold/OpenSans-Bold.svg @@ -0,0 +1,958 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 20102011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/font/open_sans/fonts/Bold/OpenSans-Bold.ttf b/font/open_sans/fonts/Bold/OpenSans-Bold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..cf53e6e46e23fcd6c544a6575989c373f55002ee GIT binary patch literal 109928 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

      r zU!+4~pBnwgM6N$qM{t7Jchuj^$2EZL*e``f9uW9ysL}2>+IL}5E?9`qjqBI36oId7 zM*F)W-mbMy4m5fs3Q{D?{71r!k#vN6?bWMIu>vm^*JQ=Af#KZ`nNVPM11F|2SlBQL zdkAwxT^-pb_5y$z?5P@E$Rf&JlD?$9j1d{_Zy0+Adkr;mFlHdv&=DK(3mr7a&Cun@ zD?)n}+VN{jfIf)lFc;+)%tchDiXfjN+d)OZ6@JRc0{0>389#oSD?bIK00EuXBQ}iB`yAKcasT?fb`vTN!5ME3DcgHGTv z)cZlZ=no#dAliw?kS`VKAK|h8yguxi@BiTXWSgH zdxz=_rP6r??~NKFhz-Xx=7nPnp9lpFh}hsHl(tnB#|x6h8lNbPYQU0| z%GnlFPHEd5`MVzSh70cI!F-W%EE4)0u%=O-!zh(R^@pq$?)}#%*N?j9>N!hnO*+*f zYFhKqoO}3}7b}l{oWv#f_)$ugQI9C<+g*q(yGUd~D1idqU6DKt5xi@Z+JkVXQ#jTW zr*KM9Am1*DZ#sojik!z0N+2*BqZa|i7&mhuv0LL54gR0GW@7ll9UjfdJXhc)&?vu7~Ll@lNBhj6hwd zBt%5w*8o~8Xp8iBRL~YR$f$CXfmh=<0>UxzZn6Vn2ud}Mwy1+l5Eqp~rkpuMbtH74 zZJI#g5p>Y)fV!I@hiue_6>*&%0A!<(5wQ_YT^Y1}39hDW-d5KR;3}V}YD6jYohcT1 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

      +G22TV(H|AA35lS;H* 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 J(H@ZSe*wN^#MA%) literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/Bold/OpenSans-Bold.woff b/font/open_sans/fonts/Bold/OpenSans-Bold.woff new file mode 100755 index 0000000000000000000000000000000000000000..c668e4537f9e95be9f967a0455038399fd250af9 GIT binary patch literal 63564 zcmY&;b95$8u=X2ooNS!z#&+_?wr$(CZQI`1wryi$+sVeh`Q7{d^Ua)R>eSO!-F>E~ z8q@76D2(j4Kby-C^MgRcpKVQB7kZ=8m z#L!yb4gdg0`sNA0rOy=QuV_OTCwu?^is{>i_CLS_5r|FfOs&5;qwoCczVkCiY@{nO z)pz{%g~t50`SJgNWNPJZ^3CA`05fX<5c8mD6Uq`ZWBqTxmG^I(|MFycU2BFk`z8T^ zRr+t8;2XpU6fjz5)=qBUoYHqWSO5S*C!;x(ww0~nx82TnIZ&+smH)b`I&H1*_N^b6 ze*5A72k>Li5gUDL<8N;CTYvtpV<#~KAD5l2qZ0sd(hC3}q5}YUc8KZ3l6DTp-@Z>P z-*(?=fUq!)f|H%o+(rmXiLp>usy&W(EXhl0I0MVSVGAZ4F|&F8>1f8p2CUQNvh* zkVJ%(mw_oWDI+lkePFyFJ?6n-IRJGw$8o8YW_rp{jyivKYz3@aJ=<=xDkh^ON zT&0Fodcyi#_$TgXOIRG||LXp&8BUR%(JuhgJ`tf~JQ)GNV2UuzB0z9q--P<{LcY`N z;DNA$@>tbLq+umVh}U2Wculx^%~)TFaRu>v_3}gQux}l6 zVYH4yd5wyCjhlK+V0T2KHLOhDd$fP%vQfCPg82L%P+ z0f1if0q`}y8=d^WmS^Bs6#V`^@xMMG@jg)jK|i8F)$jozx&Nhs>p(Pr3w!{W+uGE; zww#LauaVp9oG-9FNpA80Qs)gvu}UUp3Nax*VpPR(uU!z-M*2HurFtic#-vHqDT&N+ z$o~0xz{pmE$-n$!+Ke*Tk>NhBW4leJePy~CcIzEBX>F(V>5I=N-#X6R><^Is-cDp= zl}eL^vQHip5-ILM1O==N}clva%3!O`?2`0dRdMG z&KLga5e-E~E92Caj!WH<>19FZ;^w9b#|PBx5?JSW+GY55aoZ)D*EF7LS#}DUkiNahWd5wlbTI-@7sP)~*4ZBidKhzn(6QePV;7aDOCJI+{&w=3s9iff`y z0~qY58Yj}$3KhFqNew)$E(|UYj!BMf9Sj`= z8@bk3Tx;oC>I!cU?u_Vp#i6wNqpa| 9j^WatWN$(Xxo_J zI#L|+-k1T!)gy>hoBUZWE+qbkZo`1*(kE|Np8(S?hnFzhl$5?z==HHkvG z;=6FGJxOKqyFwL8<7zHa&BCZE1>z!wKHA4yxVO~_5QKlA)}533cm1hu*#(`$XiZ{E zb@Iv;LFM|H8s!#Cd%PgJFCS9?z<2cgZ^VFr0`>rpfKL#H@0$g%2)GBlgHVHzg1`gD zKz@N>fcyZ2f*}8IpDW)Xqsfo736BWoKe&R=zJ}V69tV0I%p!(gP1`@}V#qGA7Oiz) zpw$Z{hc6%aXbEXXu2?7?7zazt<1ZVQl+GNU&&0{u;5eNQlpK#QcQx-iE^|Z|+qDTa z$@C#BTod+#ntzBE5n1aaqG17g9JYJ+#P*pm9m-(yxzA{h3yLhr5Q$j4WrNka<*BvUyO$~%e9V$|8%%2Gb^1Y9SPEzZto+@#s=@^)$L3jd;1pf zUBXA=z-NH<#cf4zea&e&4=QiL;;q^;H`IL(&i{?0Am3vqqT5vl z@vod4OsB#f!#Omzx;cXSPK5Uy;F}Mt4op8@ zyP3YZx@|N1wONEYVre0m?-}s;xld-M;39;g(XQ;>mYASE56BysS??ZBR)YG9AqUa~ z06C#D;b*DSXpyZ~{*MausupRO*R~h) zrvI_^ZnuVBD_K{hvybH`roGAFpA1Fj?XoKV{)!TjPTdCI=Q4}_E-bIaO7G(d*RjMi zrgzV$3D?C_Bbv{yJCYqS!4a@My|JM~2VpJND|?w+2sBr=40AK(2tfv2QqZMih&+uz z34Jz7@u~=<2yqpwRKSW5MS&EQzW`N&&z!Gzn9AM&tjg2$=gk+R9Ri0M*legTC%kxgi54DmU_m4s zJejKLwcJaM>_`-dozW$TACJfp9)i#P<+;O~OZ0$7SIc zqPFMZjyllpgR?u?hvC;gbyle4;lEuta;?e8G(5jlv${XbM}Z6I`@1A(jE%$6F#ub- z=!_l4f+QUiOpWmQ?0EtzB4`!UMQAY#yM||`WQ%>h9=;eNFb;J0O1Cj zDv4%AifL{NQIcK?3QQUneZ@u`zJACPl#nMY=)ZJA`I~xk_KqTX_z>~Kq$648FR0l5 zN+)sX@&SHI2~(nf`e(~H%Vx`};+0e&h_}Q*hX4Tq0^s~;_DC%w+lU@$AoLa(Roymr z=l+{`JgqrK2$$loXz%vK6pE^ozWZ;vi(dp_sWPAYM$B91XRo}AtO$`>+yPwoz1{7v zyqm2yPr9l!Tx=>I9(~nl79&$<>FyJ}9z8x1x(b`tgxeeRT_e#Sl&=UoewH9KWH{tB zGyAkf>jpnJMVgD|jt@DMMc#?Es@g+!!FyW3lw+W8JoDMe%R%C)gYb%L@i?@V^`Q~s zCUSKLmw7&(gGF&Qy}w?T&R-l1NUu9vW#K>W8#EryTpWH3U%(o&oEkd3rm2jJBo4#9 zY1JpP9;voddi?XItJL|r-#=F6x=qtRmb7Sl#d$w(vc_P4osd2FjoHAfOJ^dEJKbl0 zMHz^M1oHveGA9wS`4Kr*`I9g?4g$n^BsAB`ZRY|i|GZy`QPtbZLbKe%0y(@?6eHnh z^A_Y43Iic7cn%k~jDZ}3LP!Co-zjpTWEMmk%s3Ywt(I3%?xY5Ng29SeNX&HXET=Slwk+1zb9;}m zbmwdfJ>d;U{47KJvU@A|HBN~>2m7%bs!B?a?L^u#o7w-d~55|nv8|7Li*-Nwh*O`;)oj}S@`k{OFQY{xi|F+CFbz^Nz4Y91 zG9Rp3YA6=`v$);n>aYY_!5Zqq^L)u&q#qy8cI26E+z1H*04OlDLcAHV_&SrLg7spa zo0;{H>eYr&Tbuo{tmBOKO(u)`VTQfn;aw8x+jUY=*XuBj#b!mL&pS!eC!5k5tl=X# zPv##-T7#RzLooK!gcnMbhiVFz8zwYT5G=-t8k(KKWuyQFhOCOjIj+1R8R9{#T5MBD z+CKAO5~n_ruwX_RtQD7}gFaBJYBLvvPEX?@EO{+j5~BRV@!mqfx}WxdOFyH8I7C

      G1q` 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�OR& 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 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.eot b/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.eot new file mode 100755 index 0000000000000000000000000000000000000000..7d45290b910ae78475475d5777b6a0fdd604d4ed GIT binary patch literal 128050 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 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.svg b/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.svg new file mode 100755 index 0000000000..d06de541a0 --- /dev/null +++ b/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.svg @@ -0,0 +1,958 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 20102011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.ttf b/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.ttf new file mode 100755 index 0000000000000000000000000000000000000000..11d107ba5dbade2960a96a10db6c5cafe67a3586 GIT binary patch literal 127844 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%0Acfs9u$O!+3J;?Kzoy>)wM`-tT1J)G|n4?T*2s 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 N_hMg#Sq;G>{tJvj&3^y@ literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.woff b/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.woff new file mode 100755 index 0000000000000000000000000000000000000000..ced8f697114faa5e188414c045ad225cdc328de2 GIT binary patch literal 73624 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 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.svg b/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.svg new file mode 100755 index 0000000000..aeb208de49 --- /dev/null +++ b/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.svg @@ -0,0 +1,958 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 2011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.ttf b/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..5c2b96e9864c5bc64ca148b16de78acf822649b8 GIT binary patch literal 106572 zcmd44d3aPs_BUR2@9iz!>2!Cx(+SzS(^-HJLehi~kbMhb#}Gn5WC^P*BAciPh=_oQ z%A%s8qT?{?;JrEX&Aft>hj)UX406Gdu<^7zxoe&+r@ArM4-#_V1C@6Hgn) z`gk#x{T%L>&%Scb!jyRFZy9rR#P?^-nZEQ&w0jtH-iCMkoCT|9YrQYvSqkq5s49BWSTVH!Uuc?<2q5PVaA9A9ct(ZhT0m7N*c=72gD0>67`*B$mZ; z7+)}b*&=3_cUVgcb;my%If>P>qiy#+Oc^z1WQcVfKV}qO8TEC@o+`d;VOD0tC}=@@ zl5AJ7SMBd4EtofFI_tY&(ej0CFrcx3)hwp#u~*V-{nF_Rma(Zzmv$>-v+-Ka7U4C@ zmMx>Z*T@mg=h@`79j^-h10Q~|uGaNQ=-?i`D{_WOEDb9zWL;Sg)|U-sqgfrBD(`bP zHt{|?@&0t;{cz&_pNaRc67S~{??0OF+%F->c?Uep!z}9K>hIP4>Jt*`7FNSfu+P{j z_Brl$Wqx(FdcC?vU8}BBZ&25(H>w-do79c!&FUs~v${pSMZH7auI^BGVr)O_!fs{T z*lp}~_9gp@ea*gQXV^JDpReQ_`IG#hvPfC2oKt>4U#q$e<8zjZouxH*U`gs;^LcoJ)qU#k)JN6F)Q50KMW0mk37{ueA5>!u|%7QX+Ogs`<~DcwU) zIW9}ZRRHh|0>?7&q)d$Tv;Hmbp})dMbDR*sn*%#6%!RSDSRU)BUX3{nXJgcr@_nSb z0^c5^F30Ogbs1iV)6?(@#I@9@A$*rvc3Yy@>|FC*eV5HvRJ)=$9ahz@DT?+trhL<% zg(l-Wz)!}?23$Ibg;=Pi*_tc->_+=mr9On?L-(|WmVV zG^HNzcd)g^hI)lA2@MWi9=bBLDzql_aOk(8$HSIz zYB((%3g?9j!(GEu^OQVmUP_)XuR~r=UU6P^-n6_~1#kV0UC=~JOS3$!A@%^~^Z|NZ5^-}LvPfA4bY*r}pZkyCl6!l!ah zrJV|#@|;RJWk31#$xlxnKY8@zfs@9`{U_^A4nH~UWZ#p0PWCz(J!$)_@w4flP5P|< zvvHq|{%qi9g`cH-=K5q`WT}0bc8z+yxu>+R|3CU?RftB?)Fj5Wn;Fhb;#2E;yPH3| zG{5-^8q1tGW68|TQb2{gz}ZxsxL=;rY*4{m7GhzX#0bl01)zyVI5VACXI2b)Qvw=Q z%DS;KR?ecVJFCF?tzKO4XXvO#Px8vA40Z$C!0zOJ9#DIzm1PWRg9j?}>%heU? zK(xV=pg-dj`%e?fE-hXU; zSnofnMAy2|SHqF;HT9olzB4Hk{py=D|2-))64oun_4?2iljMy_lQ5p8OY)S465ZOx z$m2KT>7kpaOv%(4hOu=q@?}&1wkCTQpEp!hTB19;gjUl-Ud8w!T`d?M3F%s4jn2l_ zZ=SVzdWbH1W`@I)GB?Xlz$9~ao=i^|4{>%0y(gFB>Jlo|ZN*dSL!n`jq0{Gw z>O+k)%ps^>GCdiO4s8w%+dOo7WOHb9L_RK}v+?zMfAqxq=&^eLS@Z$lamy$5Ihr00 zXNHb$1{mn08BJ8G%|huwDv2ZucmgvA~tU%u+=n1Hrw>j*!oK{595x% z%K_G(_a8Wrk9gVxG?uT_c>-o0+C08KG6S=Z49vtEj|>Fl`;V`W;oJ|JIWWdU9B+DP zrk*h?OU@J{2D<2I1zhk_Lc|6<7+fX=G-*Fr?etb@R=ZgXe4JYX879 z#UGW^qR+8MshUPl0Yj|SRNOGMv zyu8>@RIkslC0A8}Uf8@oU8(9;mKs*WYWE(|^0a{88p$gh&-JJ{Sh`@&?0E}k%)HWa zuxYf|J9*Zu$qln+k=(Qj^3v0ZwT?{8LyN{$yIhpDT+S@peO=+xOdZGg+WG>Dj(tpKG8Cy@Tg~(!rKmd_a}2R(jPlJO>;Z zc3h-+4kV>HaS`wwNDjEr%_CpE^3_kT)F&wW;9KePTNpF5b)2l$ak8n;ft=Q!xzw)q z_b4i@+~XzCWM${%cKyXay?+PVm5Oj>#0$wwjnbbtY>Ni4NvRS16+|l|1>BeWHP5Z) zu9`>iGW>J#ubi{u(;9JZ_`YG{`)Yp4Z*m{u8^u1Z@eSfy`V&q2gjj_(`h&Wru(2(h zw7FKFE5HVA{s~ws)dm}YrvnwgE<`M#ukWF6c%~Y zv}k#citb%`QCEeJ{osQmZ@jhg-F;&RlrEd|?!gcLc;xuo%eZIGgfUecmaMsVm=e(Z zzj-!o(?;h+acXK&VYs*=QuF-IeeY$w^juOsAK80Mr*7e{y*iaHzg;1H)xru|zO^m3 zybU=fh%-qB{ZE5YH_uP?L+}x$=|l2p#ptQ{*+* zyGx1$R80lQTpq(`o=^H@^%z=HuV}bY$u5<&BNY=K{7Wt8V$qy4dn2WWSDp>sl5I5?r(J zVnl4GV|KvPD6^bSfXoPixQ0A>Cjis1fa+RGjZSzANiZ4Cq|*{cA&aE4dMB@51i1KO zSrK59#4vYCdLiJzj7SiD(yR0`?~}~p3=|cc(D4*>V`Ojb8|JRyLZ;Z(1yK>fzRNJ@??^=P!MJ>Ft}vzh;VeW>*!bEqM8^eq(b|oBAlD zMvM(jDlIE62Ui2_=buR0pJ!73HaZVJ(?;isttIHWNy~|dOZr_S4k`OAC!`FX&A6UI z*k{-PEDtdQoKHh_n#{oCqXm0CzF@de;Wf8z=0mT)`Np;4(57wtA!R7fwgK>&zNhO}K>*vpK9yPSYGc+eL99x3nr1`ua#TM>CZ~nSw}5vRq*_ufPF|2&Qo^Sc z@zO%xSRh_MBAT{cE57}c`U8*5;?u+fv&6B0_;NGP6kpuT(`c?7TEQu;kM;)6^8|>k zklCUJ2XV82iE<)*EXe^0g3%>c9pLh=Qa$OYu9U|eCjZgOV~!-c?XaO|l7lXjn4{Q8 zHn#xcMC<=*zKkdHW#SfbRv8Itd9k=%oD+BQd6-9)I0f@WF{GCQng{Kwjf4uwD-bGx z-jZ2cAU)_d$*Ox`cY=zoD!aFn*SV*U5vMluiF1NteO#`qm~T?1DKFtv<3uhnx?D9GaGtbpQpRjTJ%- z{h3RxY&|LvVd@snojHHuw3$~uGNrL`O2e#1f^|~MSLz1PPS`SnJj|1nFmGr+;kTSP zAI3u!I{(_-1Z^G6Vh%d^DcWgCNR5Do$%8H7u`VzhlTaE~FqVu2B{Uo=(Yrtj@XN}o zh`xDPIK;g2mA9jB)!>9Ks4q^@gbg?^e&Cz>4zKCcclhwW$}xTuUm!M!P2xIi%__d^ z$7c_pIs3{X%)b^yYCq0i680#j5p5#Tl7lbm+EGIVAY7P=s$q|~+#^mq-@VeB0@dmV z-Y6DZ3o0McviaTTYgFsj1d+}JX(hgqq$|ee@`E*7==&MA_iAA~B4b7>+Y!qHG_t1ouqv>Yhu^NXO`C8vGv}Mlf<(C*t`dp z*LJNMIA)Zb^HA*76wJAZEoYMT85&45@jW9|I~`AU6=Wpi3|KM!j-|TisBSAavakYA z7OlYJf;i#v76ZVRh8Zx zp5XMw+#3za71`9jXw;-Mpn3gTIInQ%v^Q#RSlM^;;)W@_WYUORc0Ii8?0u)W^2mLB zk$7Hww&Km+yt=G(_~=Upgn6gky?RdN_OXNGdv1QEi?yrx;E!MCVY$G~2=)l93wxgm z{afN@Ou=g7Nlu573{?UmzSR_p{H40%sO~DK9fLF!vrC#_w_?*Aa?>0{9s*dl-GOB* z9$L0DNn(wzcy$kLnisee^+N3Ps!{Nu%81n#QKs>Q4?ZZa`R+TL;>;`NnLJNj)pUzE zCO*e?(WBiS(nbveo=(NyjK^HFfw3n0q`h&|-gxb&t&E2u6kzT9%&U zHBth2_xWO)!-{nV&Th=mIuAW$8Awl8)K0WYZZRbJoE`Z z;ryhPjmuwu+2Lw<A@`Ph?Gr!(I#iZ6O*0e4%+Kt5|z4|U;>D&Bqv2oSY;EeaOv~t zE^6)wOzl`ogw-e|@LA;qjE)gVi;m1tfJ8@EHX2g^zhc1eN#^pYp@LQ^vXTTPKu;b$ zLIf=m%9nt{xh!(?b|TW?Yi?V11-E|j1?Q{Q@7*B&(JTaX&H44C^-(h?jfyTG)_rJM zbSPi9=D_gL2d>!n+_R4@dt$(pr{=$M^xY5oj#yWAdGFH8mFw#Ub{bsVtygb4n-ze= zLd$C`9k#;73BKV5#*+YUy8)-z13M4=>uwdvWg!IHh3h|x+sK*>mH{p7& z*GL01(XGB1D3ipRG&hzHY{~NK-YPw>jm30lQIo~wLHPhhs*I3$SlEg+giRGZ@E!O~ zAxw_rX7sTty=njep@NUo*6Nz_dw&2aHo+ILrOwUhy=n&uf!-mFJ1)tNZ7P zzmK0jb>O76Q?cI)lRR0w7Cbo!`8bvW#EAzaL%ztN6Fid04>+^#lW)W#Ar7`@(B5BT z){ExMoWEfD?8U82TU|1_v2k+4?Ae5GiYcSu`8LqNDi(9n^Sudy07TDz)NtdG(E6YW zs=zL_R8l!Ngq8!E&FLjs8|N$`xwN-fBE} z<%C#r-Mk9%&e+-GhK=lV=UYn%wu`61pw#EqSAVz47&EwEakOs6#{SXq6`jkjXj(O; zan|I?jWgw5k8hc6Jq}&00#@{U0CQq>g{JlzEsd9$SH4o+6^&P!A427NztVU{LaQA} z$1L92l#x4o2od5v%uhW$Mg*TstBo-T5Qy~f`uaOunkS>Mq+7HP;fYZa#d#|O;r8m? zs`M%%J$gTH+|B}#&IBgN0a-*MyZiFP<(d!T4ac!7idgYl(VZ9)OawN+lo41YPg96H zmFHImtlX@})jWVN|-+nA6p89y}xy}80t~`2p>#^nG zEYUEvZvTdFxVA?ed%Z>ctGw&ym-C(crpAWr_S|c|iSP?}1Eazb%OPNC3OpOqZmFwL zDOkp>cE&-rti&5UrDQ$?Z?FR_$yj(97z5c2Q^Q3tcDOnJL`mVN#Mo+4P;)P@?3dOr z$x&fBbbc`RiLaHqZ^w$t=$G_36@Cn6(I6kBfR5zC^AJlRPU`{1B#FkzwVsZr2U8%` zfDz!)Fv>yb_TXrzmy^(ziXC&|Q`|eRP7GpuR)MZqLk@g*`Vk8bPFa7 z!&S%>%_M_>C953FfrK|Q*c9_UT=333eEpo8uMr;#v46`mGpDX!IpMNr7h4V*&t1De zBPoC1O>cb8%kCXMnumuDxfW~TY%Xa38Oa0tB=}!StL&Uaa5FWAWXzIiAY=i|Emev& z%tnNrq-1LXkHG!auD~K|z!L@`_gcaI=RU><9Q*fQR*lqasnIqmT?Eb~uqM=8jh>hcG3BHPi?@GYe4i8sP7PAv{9hjAbu9x%}92|hu0U$a& zq&*oHOb~Eoh8H4X8@QzE0yqIa0Ms6So=@Xz#6q!sbbWl^{d<>M4vM?Pj$Jg~PK*{GfHZAomBPbNLZ(7*{{zax~g&?KY|7k9cy(Ika7aix~aiIH9_)n3wT z6B-`b#=}yF2z&RajiQJj6gB)9rt!)@#49)$FUUQ?98`fhI9Pvk4icT^^X(S-d^hNCQgf2nkkfq_TMrM``>}&AF{(4wEvRx z1LW~ke>!pgRFW7oK?0tJ4G3kb<#N*`2mwTR?cU~F#ZplLi_l3W=X{M)+x)osJf#@V zQ{i=$c$3g=$$Meywxr*h<^mcKBatDG=GrngR0RC!8N3or<-l{TE+!?zGnE^HDn zCC0MlVk|#=z$Scc?iBKx$fK!PqL@uUj_HTwT*DzyIFkb2w;V0G&j&_ zUHLU%U-(?h7H4-hZ@_k$IAwKX%_*(4NN?RQ8&(T<889maYfJGMR;<3T>N{ zj+xa9cN*U9*hcbD{bEOXw6KB@n@7@UewyO9y7{!`^UYs6QsFeSe{z$u^L&kFJ-fCU z8j~Vv#SfNum=h5Pt@b6dv`A{;^+u>xykwMhBo+_sam!j@0*ONSi?UIAQLC*{y?5k}Y1PqsjBN?Wt z#AG1>o+eI+9~M_nn)mQ*%fT}zz8Bw%Otq-7eh0xwJZ#Mcj69&IkYn9MQBwgUcPiO! z+++=v;L4zRm=x8Ed3dF-P8tJ=jHbaD6-!d3E(ON~NwTS=KiMI-d4B;s3lOZRqA0}p zuR!osK1=w8;QW7tW6JNvEIx$eUpr`;JlLe4KIq&gwEzV*!AVk$2}7crE=e~DhH%#! zfT58>AcPREVXo3GegK?I2r^zj906Pc)|6dND78QGM@4_}R%6YPw?~6XjTKv( z*DLSJfQi4`BG8v837pjU^2_cJ=ki3-UB=(5TbiNpYF$0+e|gm9|jdY3=t>6 zr%bn*264Gz$+_9}PUu`rakVX~|0Qj9i5B zmf;y$upmp@o$iau#~5}G@rZ1B^f_>Zd!)<83-bj`U(&%n_Pe>n0o=O9quUM}9lSs3 z>4%?vY5RA7H=ENuy8p0|ceJZ-ZfRlTl?==^n3H$F1)8_1FO~?QI4}Cwxb=vW4ii6DQiF zFm{u|Kt>~!FcCo^cBX-iK?))9Bb9^@2Mp?;i=O--w+sG?DC1{Dr8p)2p?syhB`)Ew zHV2!d{7q3QpF?;z7SFMh++%CQI~5OcNc$~usU#2ys~J(!F0{lOrqu({`Tp}w{Be;h zt}+F`rVY)nDW&E*`rzE^7~g@oI=K$R)@pTyz(az%l*XlZ5S|S~qq9UxQ?!Dl1ehqj zeUw$ryR_QojmoBT>U!SqY}0il_b6<+*r&{eFOZ_I`!F(b!T>{d7=`RGm_DooHiQI9 z6@*M8t)HNVU`fnS$em)RUB#0k-e`a?=VuQdgwJuGtx}wSP1p)(FRbt_tpja^Z;1|? zl{YA1@rdPZ=~}`(N->W}Vje@~JP?yY7Ah?<58F|ST(Fu`fzZVvm~e=%p4JIr>T*JI z^)#U%?DHh)^U{L{`8na@?gmS5@#CAA5O4Vw*4oihuV*R=Q{2ft{OLzItW)B|b=UD9 z)YqGODFehO;w0^HOOx23X)V`c{@D!EibLo`AVK0ydhJZv+Xnqh)9e?1-0%Z^kK46l z>LF_wdzUF!r4V0k-7tmlfn%z?BAk}X1L4AaZs+^E-`QI<4H0LpuE5ZT24;789`LCF zZ(60TgAFx|=tAj*lEFPjCd|n$GEv(sr{iiU&4n-qHDTn*lf($#1G1$O5rX280(u1V zPQsj;ltwx>jPN#+=Tb=bW=1BY1H+e!2H3j5x1dKUQYiq-b@}up+U)K<`oW|O2ZJij zUEXj}L>hPs$fDDS+pINB-#owhx)+zc&bxm6jreYaeayo*Jn%H%ws_dAhL?E5lZMmk zxuupXv;XpPbH=V2)rSwwZK$r-Y*_0?to0rEj{{iiqQuGdMon�nB&Ma&uq~apVwl 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 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.woff b/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.woff new file mode 100755 index 0000000000000000000000000000000000000000..498ddeb587d7e507d841260c258dfc8d5c7a8e1d GIT binary patch literal 62508 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 JwKsFb{{Yi>rM3V7 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot b/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot new file mode 100755 index 0000000000000000000000000000000000000000..c848bb3479260375f4999575f990e4b6d2d136f1 GIT binary patch literal 123774 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x^>V@8THRMKE4J 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

      09ejO=x3$B3;yY6VHr^5 zpf7}q7QiYFu(A-Q*@p$qv=ubAks5go6ekjdW)|ykX-_(+1Y_ronn+4tMHoCNfU=zd$QpEumq?Uw$E9k1_ z>$mWG^i^A=&0F~fedSiYhOZ-><}DBEKcoA%upRhm4E2(O*+^)yh?P^4SPWLqDxN62 zOG7@hW!jpd&si5fgzsg1115Db z=5`27u}0t}3xcFflslfd`abP<$TurnzES#OFUP_%)SHFvw27TDjRuWOjKSbj1PaE* zH>zlkYOS|yyQVEi@rdqOMupG@!kW2$=gRdkuYUu!<#{%%Bq!Rd&X2&ah|B=?A4F z={x!130rDb-!yeeS>MI`wcpJ@^PZ-^W8IIj6k?q_V{GlA(}#0uY>G2nzT zxyi%{X_y_vFoV9vI%m)VIVTO^y#bi7DY+OX*nf;m<3W(?Shtqx$JyfwC;HMrz$1b{ zQ3=MK$4fzlub+U~l0ZTMQR%{of4uEb{edm(GB-c==Ot5z@2?vE%2#!-zFl|6);qpE z{KxKxI~PB^Y2AixC+-_Rr=<6??I-p;__5#Sd%R}-xkV)N!`811F}(nq=7A+5Y$MFD zhQbmiRL^2;5+OxsJGH@#3bU(kF&wTy`7u=?9lnyl(5 zaF9@nZ(Me$?gpmCxiR>1}>)>D{X_I7fXU3tt@fX=z4lcemAhvjIBQW@Ua&! z>|EEWYV6?Gqz41dKh=(&a_Yk!`Y+l`-4D-bIKF0QTvC~I`~iKC?|k@?A6F7xlGu98 zXDo0s1z0)TkRr4U%*aGDvd1>oyV@n0Fe4Yu2v`YDnCfkWybQwy=4qg%mW8o~T}g2y zKzLo6-9$U8U53kD#~fa$S!J5th1pokRFg}!23O=sBB!al--bU@8c zP%ESjTqHo1lGq6CP%{HmIUwFShWrZZQe~!!jj9vDnJA)kxg}hY= zG5;hp$9aMsTE#7r?IVyfTcVrTfEOVJBrg*3g@6xgKlz2XCfzdk_0=a{dGKuQ>=hUH zz3|bAO$#<3sb2W(1LucUK620E$&2pgV|RTtq~G4j^Pisb)b6zn!-t+&yz0dnuW7fh z*|lowo*q3Omllt>qol{S8DnP?la^Q&=AIY9m#HkAEOr0{1x5-p7;V@^AjknZvu7l` zfH?LD;>5KgPLL4CE9jXCh04D?}I4xx=D&TAI)7AP;aDo~?1Dty~H5FV2? zXf-P{>nw{!OD_ zd*K1rvhAzCysVGbKfX_X;f}k@X0IB%?tw38ek23DqD+GfkO({MH7Nk3t3EzrMDZ1> zu@~xH!iZ95cEwsj?!*TYS|YZUBup}vY%8)2dWOr4t9UP__bclP$+O+Ixrt@e#~P*`551n4n{3!uBJvW1 z_UQW}qSJ}U+oB?r@@n*LoULR{ic|R*?_!=}o?zn%E9Je-3DVcnzAFCNZulrp?e)A3wWwD?hM#GtKL|ca;{~ zI9|6>YHaq&dz<$1fqe09Jy1pSX9rp?$@_tSF|ffegl0+D7L0AYwoqKn72=|?4r)@7 zYIYjd9gt&V|GBa2+51Q^9e&IqSN2>jCD9<2B|Q#!VP3Sbb{u9%<=lL?@w$8eecz2Wl@)#E z8AEFax3H!!_20e5Gr9e>&p!EFe_h`zIeXvu+-?1PRZKiMp8w2E{H34v>ffBK)Bk$- z^y$6#Jfv?=YS(nNVCg-Lwcl}eLErGD-lTsxs&*`2$cIh1m3QZoZyv%8q!ys9;sh_T zK=WD|ku+rm7D+PXs#2)lY-KzSGE7J_$B`bzu~*fIpzJi3qG8p~LLLx;vOOv&t9Ho8 zcE~?hQg(~3*$^n@NWFr4d<;)YOkCo}p|L{S4Q!vSt zJ(^SueqJw>=JLF{Co91MWq6mE62{ma@J9RLDL3TgcxW8L3hf8iPx8^|wIpI?0a)lR zXfcpQ(_%beS_&i@Fn=NHKiKrFkZ4$e>Mu~46GZN^>UU}!r+64OXw(&?f!@6{psKLKeBVl>g_w$RL=yB*#n!29ke3} z9ywt})|}7{geA(RV4}%l2gUgs$>78^XCj8@DN`YUF^ijsgwjUAGGrHEC!u6%0?E^C z&-;AZ#n<-s+qC6`{;x+~d2;hJqaK{sq<HY~J1UyC~c}0`7JI9F{V`U9N-1?rFsp zj~%lxMZgNnf}{j;Lq+Xivx0g+kQ@cSUFIM4Rr)V`553Kc9{s}`zzzKa{R>zf7JRhx z89wyG4`Jd5{0MJmW2`aoyBRnGuo=TtAp4pG#%m@5CD~*nC~~B!F*;O54Aq9A!mmLn z0tw$_BUHE2kx)c2S#8%)L?A=NQXQ~hw9;q(=C`Y)`1I!Q7D>ec)2RpaynW68*mvFd zZ19ze@nQE}8=lo9P})kvvx}9sfe*mAFA({WrVor!I#u3)agi3%c4&1pvM5m74oeIw zqxsEwlGES(-8zh@`RfOo?z6}MwrL#2=UBMm2w-~@H(U%I#rm*w3ymSk3ymQe8iO~PGzM=%63$UoC(%t(2CSLbtXOnN+e$>* zCW}B3EW!oA(kRN3Ge9Pyy5}6P{$%Mp)xB@lW0bEMLrQ{?zT(dyOfVG$Gm1OFO;?lvUcL*G3%J(!K5O9fc z*2ysvIF}XneXEIxCLQs_Iy<$?b+U4eaMHR7_Xms#0U0ZIY@M`g{Zakx$G0`lx!-iE zd51Lbm%)gb+ z{+2NLASUf4y;eLs7G8eg#e(Jxiy-7Rpl6)W{;im}Bl5h5nqHviIRF&Z+(25g4MT(D$x>dZ?)nqY(taVe0czhv$=WZJr99y+F<8>T-oOW(KCTeHG+ z?3cd!dQ8{Y-zM@M#v#VQ*x#18$SP_QcpFz828G0&VTXz=nHC=z96<#nLg1<29KA(iYR?SQKiBd^k>#Jhoke5M`0c&L|Pd008|Asf-!T|T&VI3glw86 zGV+I;-V)fvohoYp3aWC0tT9;(E3$fm`Wyo(C!+Jqm-`7`aCMna<2_#XlkpzdEgW7r z7!9H$0q?n*AVB7Y(cK$CZLm+c83md|KnBJMs)HTwR9y{c8t(YH9Sz4M>;&-*urORU z2@Bejh*1()fb}PNK_J7K@&}rZqdA85fX!+L_IsUmZm$b~_s}tnV;jJ`%fjeI^4uvo z-ebd+L2nCqMGTi@v*WtPD0R`SUJw@r8vgam1MhHv2U9rgsIaR*5|&5u;vaY0q@CQZ zpFgqYo>X&lXx$O3CC~YS>C}}WNYK?(=fTiguU>T2SjRt)^C0m1xZQ~%?$;~#LjWre+ zr^zv7WC4lbp^{Qe3{x_T`PB1s=8PLo9M;dB)VrAdHyp=IdVGFTF8pP%^2VpHT}2Qr z@p7W~>tGj%gY~g53&)Ud45N@CVIB!6o(JaPABnl%>r6ahR6h%el!K|XIc_0 zB^rY~6tUzM38oD?E%aS-Hj%z7?P=h{{`ezLQuWgxwlMvRQ?DM~_wW18KK{_p8>MV+ z<@Mj_zlZSpgFd>E=W+KNpS{B8eEP;`Z|lS>h1{Vaa6s7Z78?*(?GeO<%u#QP5!})i z5kD|$J9fPt0v<+d0t!bZk?T+x9aK*P1XmA`FNThC9k<1_kw%C@MWhi5F<^n9>@jRw zhBPwx!e8{$`YRh&?_dAX=bN`bYC84&*`M`anqQL6pHge)8*tVS3pl&rVZ7P!E@}x; zIHwVu;nT;6-GH+j%3lP|@ZW36V3Bo7jKeNelmrq$?ZWx@D}XZ#(Ao080$u;-H{AWn zC6_Y-`2$Vs{|Dsj^pv6cem+<-!2c$n^+^=`5%_Ne{9_PpwmE|F7BEeNba=4>_E@n3 zkOaA!DCQGkmCzo94DS0a+z01_paACQCAv#Ttbje%8^Lt=6@Xo4D+#kC8^9?_@}Zf` zcGrY&rwLj`n}v}`PORWB=-amcebSK`ey0K4M?V`D4BD*H)m=nAi+?N3v9p<8( z+(Y3*FU;DucPY1iIQ7X%y?Y<-ch93)gJHG1un_Alyf-g`C~68?zsQ>i}~*yd#6;t z^wZz|%4=^~AsJuL001eDB2Fwx6S!!Uagt1C7##j;KNc4o1Mo-9-m;ka(j-s>2rg)W})A?sF zUi|@Ub#>yao43C#KMY?RM_f6xti>485#bn4r}guOjA7W^Gz>!o$1v!9G8r|~VNpTw zii{I?YGl{5BiaN4Iv@>5nP9af4b}$di)weP34j}e@iuI7Btd5sBlCGJVrUqmaRK6z zQw(m&gP$GCldM!hYOX%k*=kN6sOO)+=vP-(9sJ=wdGgi65A415 z^Sk64_`6=acgMiTt~%f|1vOXB3z+6asCdK!1H6o?VN8?A5~*(#lAen$#54{m1C+U8n;^H?|K6}-cWSj(`5U}g>(=*Kw0 z%qGND$m!sz*49;q z(m=`7&NTVK=7oNFY|7PX(zAh$%8uV{zA_&Y zpLjkz@!#Y57DVqF`<|kjFk2IuN(@`4*zylGy<}i-foiC|rZ_|GjT0KWVv0~?$d@qR zSYXMqI5}M5nV0mJFZuPe=3ln_64)x>5A9nTj&}+@L?-x42F|JghY{DHaTxo6p0xQT zcVko!X$b!$>;zFg1iK{o>Hd%R8(Ij>XEx?TI=uzfZsGL7+KNCexd^k0h5<-|s=IQa+Y9m;=}Y*$f&4#U{j2YyxnflnF2}pgJ}h4E=`gRUAt6B?Jrb z&69c6)jckh?<#DMsa>n+wpl8n>fkTI@soCD!YpgrlZTGcbF#X)X2qTC{!$rmaO$-z=# zW{rjf7;kqH^AP3+Ev>RJiNf9a;G?0^PPPdr zCvQ2h@jv^g?98_J-!OmH)F-RMliyfs_BQD)$Cu52{i*Z%LvPHeJjTb)TY8A+9li8| z{yE_w)=krXW=-)4`lfv?lC$ncxbtrC4|BRpaz0e!8Em4u&7ukA)*!o|5^~|xCFuyw=aW0 z9P0`@;t}j1_>>u-&VZSyo>|QCjyAaBizq*(;7=HPG{Q|N9aY=^v+w26c30ZaBl@Y$ ziPq`r#LW*LubcSh(m6AyKQ)U_yuhcu{KD^+^BI@FIbT!#>ak1D@!;P1OCHldFyWBq4J~|~oT!zW^M2ZCj`UtE6;saG^N`y5q2??x8hmcsO#3u@@vA8t15LMzM z##*~eW3bg~eqd3=(;SKCQvyMYA-@P?ZB9h(Am8EcpLRX4U$58C1(elmd##^3ar@}g ze|#(U%O3^}oq3XPILpU0tY2RL&hT|R+jZKJAN(^vynJDCf3QW4Y#pz>&P>@MPq1(X z!y-wTk&pIo3fwg2BJ%%QO~$@fJur*XqRuiGxo1ArK z6Lk4H8yzV=)t8!xk12GN89W4usYGS@GbRN8Ci+surzqXkBsfu3KgB~re$zZ;4s?~N zaV`-lDjQNC)TJqelDmo1rk$mZ;xIg#`9zEE8i9c^h&(RaolfO;= z*FSO(-QBONek$>f#Y(q6y{EnTn9s2`eahN7wO39(e}c#>lUvs6US$Z@xjnpBeb|3k zIEUbpZ$lgo!KK0swX7)Y5Z4I%EKACvn29nA0Ml3CbO$K;9gM*15?q={3`;Y-Sv`RX z31~}js>mO3X@$5hEYyMsDd}ghil3)9EHNM&a;ilQTBdSY4K&pGGXpS%;CRgx!s;^p zMIiyj)+-?br;$_%cVLMtY|Y814O8f@bEG6yV4G+OLEQ9U_ax;*%3~%(;gqRmaAAP{ zsugZ6CV|8(OC&t9lr)kOP=!D|H$v)jNsP|qqehIn1tx3I!tRitI)L`1v%f~YX(?2sBW@tJAsw)t{rAKm5NIp&GAf$3)Ni2VU&n4UkPsAb9^ciFe2U&IjQ6pLo@PlMSei4fUP=qfK)a`oXv8oV4+maf!h<~tr zZ_}fM$wGRA1r}qs#9|s4JXEkYzWnb0Jo?Xt6`{&L`R%(X1FxJmP3}5iZ0V5BOwx7T zE2U#Rv5<9^BDOF}p-eO&a|q^1%}E1FDpXAuG&9WZaWo1yMghBtkYpci`m~ioDMEI) zKx-uJl}B}07@;W;(FxRt3`AOEtO)fX-I0UZkXj~43%?eCpzA%m)#P#O5&frj4{hjI zB8{pDjp~!1(*@M!9p#fNiBCS9U@47EMBru_a5DhhbRfUWknQab;HCvri9!^}NT#)@ zX*vqX`X35t3Q7bGq5e`pqJf+-b+Uu-F^-N9quSyfaIFqD(Kvx)8l44RakAD4#ZRKR z07IM5OjsL%S2E-kL&LJjWqk0lwPhU@$?=w+$8(?idfy1Mw;6L@D<$h4n>S0btM&Q7 z63k8Nh`CXgZxm~yvi^=9woZwNod{x)v_ zZO&&6#(TnEe?a(Z07U^x)e+Kiq0^*7=0`dP&@>-F&5r;TA_k;5GNt*^3QsR7#4eBk zuPX^8Ku9BnA}%bNj}dWII@Ewu&1%3`)J&jHW)`6j9R);56cn*4nm<5jo(o!vAbmS5 zqN>-eIYfwNE_QFdtk`2*hGggoMfR^RDjr&lT?|=;wz1gJk?ZdN+?;41{nYq{t75F9 zUY=UJIdS{3UEY3!Z#l3$^LFg+@|#9JyfQFd8F+4a^<7J9R^EG8-+9fGrTXd{%5Pfo z!45r^HhTY|D?WQjCq2`klYnC~G8GM6j3Zp+Q79TAfJWSIG9U#@mq1DbelS~;J+&^* z?gG#R(n2x--9${U*mM8*vCPd-oDq66@NWI^Cg+|dnH{Nb-isn zD!U2B5V36=8&KG`VI}@8+qMNB%2vh1i2sNLu|;j$RXcv(`@&zg|Ma_tKOe7MUVUUj z&Fyoan#A|Kz=zdceC@0rKJ~?O>$dGcF!SPVyY$N#U&{xOIm(o=LKm55$jl^18Vh2^ zs*o-MjW#M+CV9;k90=TwZ=uPfB<_Nb&=*5+d98QtV3c%V~hySu@I3p5BMO0 zhao^aBa=xo^hIa9m`ode5l+&Q-&6wb|L@+3+p^>O)adGw>9$VRN%fQOd-!>arpb8#d0S?nFLN?IHQ zL@TXS92~?kpgtZ!eIQPd6+g04BKp0RTEKWo9G!yPqR1{qG%&%(Y10p!II~y3P`lzT z;~rj~b~`Y9(ybjGd*W7naF-rQDz`%a>x=QULuPb1NQxH4WeZtVMBir@s)$~U>|*jf zf%IuPI44u|A_7<}u9J%0X~d0D6iYggL?JOTVy%wz_yJti8MRhtAly|%Y(|AcOD?Hb zkPC&e+8oTX_CM5b&7J+1+%@Oz$DVw+r0ewM6J`&XfBS@jPv3f?^MM-*rVT9{+IP@> zlQ%svcw=(j=zd*?_v$ffYWagt6MVWf%BL?(G@J`T)>IKF0uPLfg-Hd!e{ z!z2 zmERgP^vkQY&4)*K?Ajw`t;4%~S?`h3Sj=Z3>+{BfkLdrIh=jj^AR2sE-Qy>}{ zzhOKP`tZWU9mn>#cUB&|D{I=3zi&>AtqM=NbH~r+^Q6PggT@qXTk-h;{>hco=W41D zA_m(6WEMBZ9)s+D;SmgjnEvlJ?=hFh3DE!F+PvKfA-Ax3R~@ZLGS_zD{ld-Km&(BA z-|2ca_e_??UpX!K{!;j=%@{`}a{0pnZHRUPlnK%ft7c_Z2*wM{Ec)nkyRl~w%|Mw<99m86>_G?`rVTU zk;@TWdf06>7mnq*r?SnGIc*+~4eRE2{EDsUR{hhrF^?0KJ6GNDy0oJ*%;%1mx~YPpL}=h1Rwme zUUv0pgMLIRmOT12{$TT0&F}NDj`~C`-9dY44U@=Pml&0xT?945H4Ot1l1eCE1IR^N zsA2biry2bF{}`_!k?=wQ3Y9IQ^J zbsjk3)SUzS>Z*JC)O(e&&7bwte;6_Pi#%z{FZ%I&5-{#dlyih}+aT>3GKvN1m%^?k zQ;y}YY~iZx`jsU--6x&W1F6#e>CKgrCwZwns^-3{FTrEaS*m_kE`;4Um;H+w*@g)8 zhH|K-Q7|}+|6~qtU#R9>P_v6Pue&kq%^{lOO}FLMC3|zQMFYSx7($YPPDtt%l;`oL zZw;^o$w8p`pt{3P6+~=LkfM5g$kO#umTn>)sl6SwD|Oj)3gg2y}4Qvo2Ze8Q{P5Rn%~%HL6mbn&5T1+V2821)DKbGnmW~AdlwdMGX3-Hr4smUOA6phi zGXXyZ>bk7N#wDj@1*350|D#1fJ`L`85eW**WM<@&bay-W3M?uH;7f}E;$EECXAs#< zQQ(In%aO+iFRu0sOkQ*Q9(R%BmZ@nm+aE~i>^vV>zBRE=yCWy#P7NH*doQhVn{Rlc z`@j!w%qs4@W!ADz6F%viw{82VYW>V%3P|B>u{2x>$s?gPzerK`8gn9%2^>eY7S$!# z;;rO2q|_f|IFZXY33zPa@V{2R{JbFH-U8KHKtVrB%w>e;!1I3j%-65HG6**#IdI6{ zud^srBLD$AF0T_GJ#<83oV5)sEoF${L2@7H1k_QJ#U;Wi2zxD7r^_Q;`vh5oAB&iV zxH9A&fVNN+n5URzQ=gDI40ANRGw`Odol4e9!}rcj z&rVJ2UAkvp!0%7$2idww-^`noiO@~sDd!-ru-+2MIY3N~a-rUCVkQ*u8Qb+&xzQZiry6{=zv!RI?5ZXknwY{W~d zDWRxOsy^A1N_j|->FbqPaY>Fh3t*oq#6%~=L~waZicCS#fD}`PneJGh&LuM_{AXfIlXho=?7uh)X>|B2yO7JEW=H$9ZRN`AA7;G^lm)$S z1RvaQdJEA<4@KxbavxP*WTYj*(q3;eGdqB2fvcN}U}#DLA#YkC>1hHm_cn==77ohU zv^HpoutvK?U^=$GKvz0axe9k8#g`?}5!Ptg>PjR~(8jhPI6XmpiU5ac@#GbYqufd( zYP}R7z~=S11BSQ6LZv96G~wV&eW$qa&6Kx>+{CAz-q(A_-5(V7H_AmWR?I%?m^Y%l4Im!cyQ`vyI=c34>!Q`?b?79oJOv;V`D@q2r zL%E1FBXy1ZXrOmm8dj<XD(VaeeL+Q{rlIB zU0bzuc~$M$+P-~zZkt)XV@LIj?MfcqT03@a^+Mwoy46lzzO?GYncJw3VW)*>Uik(z zJ`oj;!U-hLA&!C4&)~8}C6okOW{GGP%Ag?KwWz3GF;OGsk04zHrbk+NWHKdOAnsge z^(KG`Ajw^1!ht2jt|Ktw#1C$^#|9>l5qL!xYU0_ay@>eHhj_o+qHXn#C!ShQvdz zAfjN2XKvoildt|)xhh+){tO)I-tx2jl{p>KQdd-q3g?mL1X#iUr+Ep7%7h-+5zumV zj03dN0IiNrjS~2RXlx%0T?1izfUp~GxC|9hOX~>b!XBSTqySEp+;!gM%p5|h z_AYp9pfu(II#3#uT_;i8qkX3my61JPi9j$>-{YFv7%9GBIB!}tM?yXz9*hr09w3rJ zx_5nK$oj3*XKY&V?ecfk=kG4wwQR=9A$Lrx>auG7qA!21?wY=9_@t>DN6aqXm6bo{ zwoW4odTyTb*6jZ4YY+5Y-Q$*io%?moA2zLG%8{-EmhF2|&g?(2B7aTa9^<;DtVX@U zw@ePX(eysz2ovD#q0lD}V!a(KgsMM|qR3S=LJ1iRaBPW!I!<`Z5talt(Z(d4ea$+| z-|AX0w0mx_kk9E_cr#s?stWoH@7y=Py>S9J+T8Muc{cb(JhYk;)cq2kbj^!uN=9`N zb7Os%f>`n>c7dBI*j`))N%AcvmQn9CYAk_kP*ssUIGB(*1-!4f8s(O{qBRLC@=UB( zNegCo>Vnl^T0s}A5%QYayG~k@{4A#vtx?deW*gKU9$=BxgaD~_$i8yN+vE+6~)Q~LW)o!}kR$Tv^C_n#gsicjo+ z;*q>nY2NQ>pRi-HSB^Ek0ozLkSvv?&h&!J4#e=t$rz145Gpjelp{_q^RZj^ zOj?v{&K|XSyhCX}ZP3kA7gqJ0*{`f@e2x55?T4#pj%}W~wCms%t2S3@!^->pf#y)j z7NR=m3y2ws6PbxV?y(?2kxrF-!%+Rh;|mY-`J?o&4lI=N()qGm5K&swnQzJDyZh-o z^+TN@YlwOmax!AXJ4G`Vp(2rn!W1fRfgo`s0tFzVR)wlr!1e=#rD_(aVAwhiucKs6MM$;B^+^wJ7%TE4=Oq zo>x#rgsL-EFB_k-ufuXG0Mi-N>13=oP04FdtD5anZ$MC+TkSyj4mW3=HHnEk#jgJ= zJcmvq3W%W|j7-F~2)r+k|6ic_{a-!$(4^Zg?S6OR_*W*)82kT<;?4Wy1#9jax+bXC z^2z!^{^9N+n%<;8wEwksN?~u*X%Ow1**k?5Hq1L z(v}xxm_#r|Vrv5bhbQm4_5P73*R88xxMakwix!U5|0{?h9-}ACDI0CAjjd#RuooD0!D7&mI1v(Mw;%mf-Mv~6)oDbWs9_K3%^%iu|*CSv%e#-A)xBo-+?rYUf66x}OM_>BIc@6b!s3eIW2Y~i zIQ5a5=ayjYm!ksAj~G)HLxy?+jS0&~rUn^9qYyo!a)?TT!!rZhA;YOAkzyiq8oo@Dn+}nih9yQ)?qSa--4)*zxk3Mel^i zCQh2Nq+jFIO5ovJ{b)u%@XMX5G(qgm*ObjVjatgUulf*HZj$vH4(QlK5Pd_Y+ zR5l(t3xfbBr7Dr!Fv7V7M;W%2QY%=lD;FxxhOJ~1j~9kXLTyw60PjLH7*QxKmQ->Z_%hS1RNR8{hRMzdlAK$L zI&nf^%srNqabjqX>9c#TJG8z-M}4h%UO}Gq)XJQtRm*I6AD6Jtw?W^qqfotwdlhk- zC}Blh5<4bZ`{#E}CkX)%n+fNEr9r{XNb=I0e}5)a>i?zu4-)l6<)7^-^8UGXDn4R zm%cXdo;5Fizjf_xw`tptJWX`lhg!PTGR3w+PATPbsV9MF8z&!6Ik50!eLHW*I~-rw zs4stwSM#bOeO{(Mzd!H8Hx%hNrt1{`i}hcPxcL#LQ_fs@hy;IvGl#8yn>j7=Flk2f zGq~Ry_YdPf+IKL~s{?vj*b>BY)BVx7{}0n!xWDvsd9jD+iC*PhsIh@;|nO& zlOCQqdHAm0hid;Nc^<^lABskBGG2+@^gQ+u7RQ^;$bhTJ~;j-)1R{J_pr_C%3le zS+b+;sH1bOztbW`+xZya#9F|6BYZKRVlTxb=X#4~3ZcV24P$r2RD!aoOOF6Ty zkmf)QfjHDLwNitTV(kTwjp*q6njRNAdaQ^wN4%shMZ}uBak@Um8o`uxaj|aDV;3D| z7!j?uSgah`YUl@a7cxK)EZ3+HinAwR;{i`_IjZ3w3pAgbCOOlZzgsMo1e!Ce^uhWk zsH?wt=SY!?y{Gwa`;2M>l4{`Y9^Feh_kaO{00H||Qc&RZD9ALk1&mR9UaZL#f~ApT z-llyStNE>VtV#bi?F4({IT6^?bEI3ubMlSn>u*Q<%e~vQFKfBCwY~kdc0RJDsI|R= zSX<*cvs)_o2(05k>?z9Ir(8coBT=p&nN}P~bP|a@l)Rg**Yj$RO;%QDiro_)iA6f&M*P+GPLh2RHPN766#f2M6?1(#Ac~ z-quP0(nj5G6a#3!x<{;`$k`P8p)U^a3Ke%!El?YT`>z+zDUPJ-!;T20LDcZeMYOw*YMz)S52+7`lF41ZaW>_DPJMXb zx<$J?6;TrCn|H6B-a)!Jb_X&**NxkXWYB>1*u7tiRM3*LBjZn(pS@kAgHApu)od6q z@2x~GX!F~HDKB){XyP*>&rGaa*T}k63V8pzeHl{KXx)C*j&(cNrk&Quc+PBgMzo7O zBJunl;`z(iNU@iQ7J$Ejcemz3VlPFdjQW^3kq8-s9VNr9i5(?h%ZZExh_{hW$qiva z=utH3Et;T;og~MSBpM@*apIUjM-&N&iA#u5KP>^|P=t;neohv8EDN+rhNQ9q#Rot5 z6h?)Y*7vX4@ZlHt-G9V%s)fDq91>OampBqt*UTds4Ylf(O2mfuV$VkEKLj9V_Y`s( zJaHw^L@1)RqEO94vMR)Egt<`kQ4+-LBt(3XQW8QlivPqy#=fzY+CM?$LPU(48?}MSU)NrJvMUDF-1$qR z2tEf+irgA=0Jzr|IA&&jG;HhNXkUigztPS|{C@-cJtb3 zJ0F7#8KNf`kGT@DMK@qC^rl+K6kil>PwXNiq!mDSPeScfNL<2Yp~i)@VzgBh)t7nN zljX9EFr<%=zVd(;Fi;|`qdv>9L1Z~KiidY1s--W^L0W31JqjC>CnMZ0yNIrOx=*2+ zS_0OSXbqItRAef`tV8ihX;e7!Bm1E2BxDU*)xICAfjQ|FL=5eV(MY1r`1 z=kK2K`msfepW!#`nYrpI{jal^&hOd#d1F11kAYkstV4f6V^(qabB*jhqba}!?N z)w*u-cWv626<=$A{aQO8Nja>M=R9ws^*5d~`%gwY;=cJeqW=%#y?ylQqCdrh|Fcc| zvX)M*?XO;I=OcBPHt~Gw|B`sV@toQEM|gomFDTF3Cta3{eec6Kj zctx78SlZU4gs~gG+coQfpn1?>y{YTBy@yX))}JdC-;W-)O}|`!>Yd|@=iPo}#=3=b z502(b4|4B;al<6nz3)xfJ!f6F(xoH&@0hiI@s;h(`W>&n_xzf>7JR;F*`~$s8uM0$ zi~V*Btq&g;h{79jrvgqRjCDiBIb$8JZ(oK0>fdPRBgyP7*6n+xSUg`mhmSK~Yfl&O zHl9EGA85zEtz}nXb32MF2lOJ;14iV&*%1wGA-%{&Ve<&^RW2Zgio*6)ZxOkl4GVDs z?_!uhu}fUnE@3rpesz9v_a0rkbdQ{1MBb|Zb7jvS-FlTv|1r+S7<#tUE5ntY;EEaW zYA#?#5*YCi3VGL3i8R2k30Wi&TmsRa*;s6f&LY2NB4m*;_aY)+xGXJh5xfdB8!9zJ z*Z>*?s9X?3&@gEKNgnHvlX8I&B#qcaAqK*)tslNO)Q%}^T|nZ<_$9sz08NIeb)|KJLQq*^=-%(m$ zxC0pq^E+ zp+csAwCNLK($S0qUo_+3IkY0VZlQvU` za@DR}yVW(LZG^Iw=>rb+t*JJmlxI{{57blI1}R5jD`0NGcJ@66%t`+)HJ=8}6#6$G z#j1onD0sDLMk~)81=Wz&i24t;l(zOC%|dPZf7RN5v=r&D52RXrt^LQ!_@^th=h2Rs z=}3PIA1fUd?V=8xkV6ffbQ!WFNS>wfFo7GyJIrhuPV}5#^>5Wr&|fxaxaiMEf`nh| z-x==}&&U5SYKlHzK4$t1?bP3b_T)DG$v$E9zl|Mf?f>(&@$lPTG@cK6+2j@DN750V za~qo&?QeFPy?D+5YL~Z4ABg9JQ<1LfHse3D5ih~GO@+YqbVw!jk^iS6N*Vis=TuG- zCy=`sFZ5OfWy9861jj+Fa2z;c@{C91K%UqK8DKUUhC!Hwko*Yp?{Cr!2^AG4s7{fS zYLZZ0!x%dS3pnW58uMfnIIOqFI9x_36L4IMNB$z>d=gTrS|rnQ{rHHa<|MK$wUJAD zNg{~Ag49I>lo$cJ*C(vr`_u2H?CfBViBHuxr}CA#M>_0I-L3!9CU^C%B@1WFd}1b_ z_yM2#`)OlGPpVye=FHkFxkmo#OUPecu=J>Y0eC=q%4~th?FHONv9VFO%O40l2Bg8e z&`-c!^cQ$+^dHT7w)X#*iSXFyKl+bt`_uXv{VVZ5uZj)4lP9XzYXaS5xkeL2s|^!bKA?tcnI%@ivBl<_l{)m zP=6!8Q}iD!<~#Db{e~FY{zxI*X^_!RynVz+gC43)KJF}UrPU7NRDYlY?u`yH1>(G zJ4f^PMHm{k3`!+X5g(Lhp;}fpTp}4L8bDb7NYi=RJ!i_7G>LLwNLs7o3_)mh`1hdL zI3C2Rc@U+BZB=J=+HiqNn=$c}EbO2owYx++db+7+oj2M)f!ga5qj!DOE?2~I8ZUB) zya|au!EYi5+KTkARWym*nv`OJuq`+Z5V%8o4u*L+P_YF^T|AR{25Paiv+MEDne-Pf z9;bqOVQE+A=GjWeZNK1W+m-jJu%0~dD=dzYKa~v{ghW`wqZ#%lWD=xBT5t*|kc1#& zz#D;#MqM4m`V$3`O`t$#K-MoPP$pm)`Nt+GKthoHUlY;-5$bff>2m|V|N8MZgG?c| zDN)2Wc^XW=hIS^Pok=jX)A3r;V2o(Ypko-vHvTMBu&aylBxVo{k(i2-^wCe$A~<+v z6sDS);-O;8G%qFU+Z@&uLGM!Neys3nQTYr3au{SISw@jeu4t~RZD0EC+@l@%#5DcU z%9zK_-?PQH<>>vMT}V*~Oi?~2YNp@+x1INNo6|gBIx?nU--?S5>79-JAukj5J7L@8 z<5~s?dVu{QX9!tY=pcNY4k0?yKSR(zqyMOuLDBxwi-P_c{YUBlZ0&!epnpdH(JeWx z{XY`)!010(7rI-^Nqr#IM8v+N{$@TFY!dHn*^hSQ)S`We(T?pL8IQEYLiEFUekGeB z?0^_Qe+NF!>+3c`WEMWF|6|?8wi&kq-$ODb*HTh#sZflCpnktT$W zA|SdELS$zq0WqQmu_0fVwV|xKE^Dvr#t!82f6jUDOa{>X?*I4u`T1}&b90@{J@>rl zJ>@yiDS4#%d8~y{G9~&5c249p@%36L{=U zcLZevI)o{oM4ijXA|bU#3`FRU{i3$S6pS4!#fS z1y9Iofd@piJSqdjRG3&3vw&!b3X1FeWFBd5BIAU5JJ_!z9JjH=$E*o@Q_)I$O637_ z5S0gTK8((LaSX6Xq8N;D>VGzzL?#$^)`7h2;F8#@E_jh zG4yT2^wNz|PL#|ry<*i2B5ZspF!KJHOWMtnWi=b#s5?}BPvJYe53Q(F7O&7Jw~QD( zeML)=G7|0)*&SK;Ab*|f9=au9_#;1x{EBS$i#Ug&TQXm}9%~xhmcHwuix>HGx?xSX zWj~Ft*Ka1r@y5@Ge}CNn`FX9MFK+uyUVjJvE_lwYS?DoC>;&u3?H^KuzlTg(a0j8qQTsnvQdsT(U(9+Pa2VwA~Wp*51R{}$O6s+ z3)GAzQUC*KtrNi@VZC)W^xe1xnlq7Mz`92#Q$A*{Fc&Q{Oq^9tQN0S>A4uy9wjR3qOjzl8&A!A`@1z_e0twmONgP(mR=Oh__7OF+UO^>*;2&slf4f1CGc+HVk}$k&4lQ?S2x(e2WC(L;;5mifdN zfKEAC1;EgNY`iVZYsj(2k}Ps4)d%=_s}d7krVWT?o5Y`oVZ9REyiF?ZD+xFj>M1l4 zB_TlO!I7~!q@rOqkBezgA_-T8zC)|6UgwHW#qT`XIq*Nj+L&l|gBD;X144dd(mxrH za^y5QDQve%4zYlA|IRB93(M_8Ua#D+7jx?V+7^ULLpGKkd|YiF)&KQnC*G^OXO8E! z%7wF!PSi)(KmWd0@8!>nou|Yw&&AnyuU`7pYe@3vrtKVZan^!QUf#4-^cJD_+>ab# z!QG2G^?w%nO)>R4);}cb$q&#~`)s3rAM4+3q~E$FpGeyXKfnNWg58JzsZ0yxN z@DI>~j`MUq{4BMFZSQrT58EqqPvjGO{GX4U%hkL1dg40G;_p+aeV^Itarsio)5UjgTtvqDU6PE zK7!6uCkg;AV9f9>eJHmagsTBu(j2u(B7T-SQ*y7)5?S%;g)Mbkl$v$o`(3+K>$;Y) zN)3dI@2>ULr&7-=kJ|JR_R;uKw;qK&PLk0OM1ViyF^$-xfI*#maIC3xSJ;S>&SQ8B zX9Vnd{*7l-^J2O;1Ey$TULIg`_DC2tjIT|`4JOkK+5z0LV^nRum5z-ik2n7l|3_%O zjo#8_DRh~!K9zoW@ut=P^Wqvfe>z;7oI-LCj2p40+W4I&8T9f;q2JXV!~0fru_qY+ z6LU2KL{bE@FxjMou-^jeD%!Oqj~eK$in8O@71g!&^%wmZ_haX9e{X+yo-(*fZie}zV`mKvhP`^B#wY^9$i@X$LT&~ouZuoM2;HW62j%tS zMTq};FRwXy{rDc*=c|K=&)0wbSf!G`=X~Vzz;l4}bbV{S`Xl13$}VAuYN|?UswAe8#9mpuDqV`8hpKO=2gaGNiJ3X9DH%M zwGtoqvELTnL4Q}b`T312U5 zt-PLXEoLTMfz7J`p29_)D^7+{V3)LDavN=rtu44Ee`@|zx^Wmli8gYqC3G?B>J7-X zu=@L7ksAlXDq?%V{%DbH`0gM%d_WRc@g68!cFYpgpkC>fyDCpawt4(dZRe+h8*fZm zoccwZ$M5Ui71UM#GNzrbjf$vBn6muR+2@`FU`1zujU9u&f+X}3dlR(p?F}Qx2aVYc zQ85W&$R`>x2LvsdW+Uz;Ifob)*xw1fm*6I#v43+rn~ZXZCS07xlEclvvLOgE;H{AW z*HN)f*ohcAdU3YZ5a=2VLBUQY?|=;;=$|u6a(T4c0EIZylBfj@co2`B7z#jy6K2D7 zWtdKOR{xMV(9omvs=PDLhrOPVdE{Wb1;iT&*`$Cs@b#=m?+360;?Y0dyU#W$p~)*A zUVf$MtJ%y5HS- z)QsQZRASz7)2DbQ@z}-LPh~%y;f+Lg#S<>!k>1EVPGqDS6C0ti9C%RL2+WcN|89{> zlPRsRPa~KlUWW)54f>3tBWj@mlRcq#2*4s_URwBHaR3(1(01@HqFIAN`ar63E5=44 zgJCXo@G}o&EEj2qn>xN;n|-*=iJ;UEkE|KTriifp59OW`RMEV6EB0g zK5EZvsV$Z2&zFGmU>+LdyLhI_wExrOLkYw1@z8h;#KsP>U|^Q+yj$dvWUi&7p)Qzc zgr119?RXgp!GOz`*ZJn=l_VIj8_O`8O;@9@7$9eX(9F;X2grCJGXcjykYfPhSzRco zdGWS&se5sb_WWbUaI1?r;n?sU2MI=m)up|avAg8L0ouzGjaF!F8m{ERp~<*VIE*(& zDyX%!!Y@-_$!)%UXDcU8>=6>{KMyrXZk$zH)b=x#25{rF-@)8CD^i8g_3)XLD|O(= z*@S(7bD>vhAJcN7w^1%sXSlivhjMc*=FGZuX~^-O(0ZT3;8PKUB8ciRUISdBG-L&I z3~|8wqszxccz-b0>CZPrOPmzMP5K7_HF`7%@=uj|ji0V*-mmwO;K`wkM0z8P@@+<{ zPGWK?RMJjI)F?xdL<+Uo{eu(;>q#9LvuI z29lzXV=3y0qj_x#^`%ITFb@4qMFkk3PK`SYm8Uu^FRNHO_TfWCs^u3kM6AybjnBBP zuv?e>o;~yPdS_3&=bh}o3^JMu$4*$haKe(FmlMQWAi16`8mosN67LlD=uueMz58FI z#yw*1_$c{6=yK#*J7h_m)70PGTX#(6i~oRm8X#9sC&&{Z#dMOVoGz&GP-Aau=paQa z`=1-K_+5Qy7PUZ!p^=K}$7l@b3oTDU!zlI;Pgn=E(i#%d+oAcnD~T(gSgU&zKqVA< z*Bw8z+ei{%r`mo6LVVjA zAEGW0C(j2VzHN;UasEYlz8crJ#(Oxg`Mk(Q2E=kB=6)=yxuV4$r8Vw>lC5%J;&rBFW|_=lb9JR_U&gq0(~76xeLIp zexOfWr%jau@HgHvTmaX33gXxf%zz^K-MXE|up#TCx^-B~K<#V8i4jrsB@xD?%c>LkiS*Zu_o4?lB=#1*tXZiY7h+Xh^ z`xzC*0-o6rWMjEk&VuNk5OQb{gO6YYpDg`Dn;3mC8AI7sCHnQs8`C#Cv(PxPV6fz@ zRk9$14^365Be;N+0mVKDM8MX_{hPi{t}yxa(JX|}MUNB+uqJ`yTNU^5r{;tkd2Vwuw!G30; zyNvP}XqOMA9#_dy7>sT^a72M32UI^frOvg+gUARMqWD$1NJsuTB4~w(a`e zIzj!i;P&BNdk?<3-GJa(mRs@RkYg#HUyc!kyXdDS@)89=@sPZFbP>U@f;-%;!xQ9j zKn<9SioFb^8^rkD5Gq9g)Vn7H`ww&wZV^OnNB1!}5ut%fT53o9gQ}NyeX{-VfhBS6 z^J6ReJke&zz`n`t^P>zGgp!_}Uf5Gr)3Vcw5o;p1vkBj4G54T4q()*&lz(-}79?#= zSy{?~A2Z zSMzi4_kZ%-K`e63Q`c*oZtE@~_ksaSrdF(2Q8A@*M%QB6Q}cVNN6Qy3xnt6z1(P%* z4%^z&(QrXsVoHJ4?tAH9^c8XLGsA_e$m@|Mzf37ToV#)i=e8R^L}WYeGEl$xPqaK| zIDXY-+5{}gE$|(38p6VL9q_R5MA3xI6Fo!E<5_CN3ckTw#8Cu#Th#tRHs+47!L23d zHjH#Cn0Tz2piMBN6V^`zumKt{x8=FK-g7JGOpcowSytAobCxNgB5dT%Bg$NJpN=T# z*e(|Gy<))q9L2K?Lf2?_nqmPDN*iPW9pk=HIm?1dBRoX_{%HtmWF7+|516$ZhFfG5 zXj3k(7#iEmoZam{(fyhB)8=-&57RF0KOEET>7LH&efYsLxl*SdXsNuq9M3nApDyf! zv=MUlj|uhx|9tjA+rzKa^~&$q4!qEXs@i!-=S-rtMsM_7*ob#ci_sgMKsKLL65Y@| z*%KY9AR6H@FJ!}f8mY|fINNnR=DM`l{b3p4Xi=RI`OT#f(4Sf1OfG_Nn#=QB$p`yc5Ws?ndow?M7W zU^Rsy-vVC)+E<~*U)=?t;D&x-oC6}zaM2Wox^$aLzP9B(z82?A;W(d#y^}o-Q9-|9 z-(n(^=3D+9`QGyX`nUGG@u&lx@AHfw@c+}D(2ex1{GUg4(;w(}ICu5x zE@brXuOJ_0I`XQ2H8sHh-^u^S6!lg5`@R{=z%8;b#kqgXrp5aVT4Vg4X4m-VJo;yG zA-BvF9<=ko)kj5>W2|c`nRuKSAfxvPAZ)27L^VnjfzT0$DYJ8k;s3FiAIFtN$Z( zku@(&25d-(52ZR!0yQ>CVAFL&0^xG=kU$Kti>F~8I!`S zx-1BKDK6H!#qmJ2Zt(tlWufXpR3D(=Xx(EK*MFy;Jt`tw zW~yKjyENFCbV*_oNVhQ;65l_cpCxj)2AVw=iu;lB^4Dt3w8#+WA=?9LU~;Pw^P=xt zVX`|tv@s1`n2;Iu51SL>lt}f*IDJ`4%Xks0D$0i`87P zwJ5yjyfl9okDHo$;MMIE*QBuU&Z-_9~N?gfT2+sQ%%JslZEh@ z;dCU(lr@5eSV!>@e^Oo($JeCLQU8?Q6mG@9=fHvs5(N||5X{f*LaG2u*{z4;rj7p8 zWdLMJ#4(D2_W6zieyhs?jDX;jW!6qHN!*<7$$0n6!|Gqo<+^h(e0}uMt#!NKn=3y3 zvA{`r(-;>Aq^^VI&?=kne|u(}3HCgpfD~)=4PRfS!aF9;MQ z%*@G%mtYaW!uN#ZrDV_H1Q;wEDRIxppV~=Vz*YbWZWI=JweZsgI`#=gf6uNs+Sk6#w|(PuTQ$BKfaLj6@O4u;ylzk(_-xP4`Q!3 ziHb1!IXzK7-pl8=%Ja|2^NjJ~^V{WlfDC&SP7gj*SZ3ei*4ha0y7fqYX0< zZRV&1+JFO6QHZTDqU;)`bI@D2!X*4+FW>m%j>*-T;e{R7W{im)WKB(q&vXon_6Fa6 zc>MbPn7cOdWSOIPphQEMIfD-fRs zo<(Kf69JmUy9aA)OXCcKM~R-^ zmZvuqs*#@wyPm}fo=`?z{+|}Yqd;#5LvLr|*(TxHg8iN*mU`0gY(YuP&ExWM zYO`2qmaf)E&f^K>^Yqvew|NpUr^=maYY2|eM=|R_4CyquS<|Ss#uOIACxhvskZS8P z{IdxlKTXo5-RPQN8epKoB3Ot?x4iP`Q-}M`y1VP7DTyT`H!ZxcdH;#`Ypa&+ zdA{GUzkMMVz9%yK4%>dqh9?&;Ey);rTl@a~`!0BI?LM_-%lR`^+rDa?@<`vjAMh;L z4q%Q)8?dN&GwE*8lq4UD4Yg8NY-T9-9TzcJw`EOEi2SnNoIsTSpfUBdg9IYU9X2oz zTXH5I0C;F(QQ1wUZC3t*3xz1GA@2;RBHeCbQ32gA6?b-Y!zYDd#iMcN_=UqJY#K6Xb$sf?+XviS zedm;sqsDH@>;MCXc>rpeA)oplFh3X(xW`O)BKOT!b{&rcO`PQM({u~WKF0SyW;Vfp z;Bm+fnzw+NL-bTBKfsSmm_R_55&^ac<^sjhWKQGU09y0QMX5NraL4OO%8qz1U|G#$ zDtAsFHr_pFaNlM7?-o^Wiw{IuSoNAm)Qjr;+F6V9OBUZg@PT0y=M{G7nb#Ky>Q<~} zj1CMzcn=JzA7V*H)PlwGN7HU-46$}|R1PG-CAkFtDIOAy*E+rin97jrNBsPU`8Agh zsn@|Hhfle@$Z#M47|DJ3hFnuNb4(=YMj)3>x@Co7L=r0s-eMg3-soA#`DWlWBOit8 zb(o38(|&2#N4+7$K_tM~6Tt9C1@bs5kkkBFL|(f5WLu;{wu@7Yc1McIky2P-O-ohE zj|=+?qQ6`H>iI{We0=qUn8E6JbsyCB#on{Jaf@!VH-bQ=&_f%3~=a`X>@#uoY~4f zcx~wrb6~k(C_F|K3fYG9lw1^IJ;6w+B022VV?l9~a6oNP!vjrs?0w>4+pJFGk|t*^ zU2!30mhy2+^3YC|u~p$t0nYzfgMEHgz0{I^B zj_y$BvC&ckKa~*}0x(w5C}-N3(umq3EtM(#U;!BbA#qPx7~zau>SATCBWzILqE3-L z2TiQ(WvLA9nwlEfJ9g}?q1pDLKI$$*!S>k`L)X~4uej^-=jCC`gTp7!5IgrAc9E)cFf#;kBUfAyC&~fUl-R&@7IbLJ$J{jkS1uyc zn6ohdFl9M18!&%pUO?>>2`MrzGF0cnc0+MbR|e#@K`YMJtWX# z7Z#b>^1)IQEG-4_G=34~VrRl{0!Ms&_RiVIw|DG!dvT&t7H?Yn%?6P(KB08|#e2tB z{dm)a4IpEE}tsJt;}mk8UsW!n<~Eztfx zf@cY*&}=InwZisGrX4g)44$zE^T#--v(Q3FCeGw~d$gozaDv3eLG#;CSfS{YcNdQ2 zG}iRA8j zu2){KyXUUQJc9|kGUmXyUJ-+y;mu*{QWsb z#rJp6e#hS*IwB=)U|dyXz;5nKr9kLNrI0IyRz5%T-xJOMqPzM(-PbJuP_Z+qZ%u<} zSRY;xwtOo_)UI*feP~X~;)>NLCLL<=9(zHI=v1ZjZ~0;S&3DZ{FT7&N<;M|7$r*K* zU<+apWxuTR(k4!@95^a8bBr60!eJKB@J3EORWY5g4C$;?nC?vX7bTYlLM^Iml4@bD z2l1M)7jv*#+xnx3SAc@jv?e1>qX>?ozGsXdh;*jm1D#_p%sJQ?XHPKB#`0sH{G5 zsHyIvTJvl;=7Ih#^5Z$-dqw<_&!(?}YQPtYgM}Gt7>xJ;XeX!(SY-3Lqlr=!?g*xP zrhvhR4{f^lR}5e$HZZtD320e@JB0igyF;*3pKXwlv%xU`uVq@R$%b z0nWtJb*Vijfg6}PpvQFGYtPUsL8Vn|BO#ZGNbfY4NiXz%mkAk5nzKcLyf%AAFFsW! zb`LJ-XvB87ZSZt{`l=j7r;OB{MM(K8kXb&N&}QgkR} z4Pail3rR?z8YxAI^D%UubCRK22c}{S36H{5J^Bwqg&W$s5GntNxI4-P2}0Sh7Ja(6 zId0~mnK5_YEplqqHx6HzQnyV#_gzKJ)W%mt<@lxIimF>YsA_eXao45Uwl~C9ahtkS z&Hl!sri#DYUXrpS4v*)ZYIO(WwDC9QhD`i{k}E*mQD+a|^y6ICbFsjB-^0K9Y6uLc*77)Ah~93}aOlC+2q<& z&LoE+-=HDF@R8tRPafqOER;dQI4&%8Jc=Bc2(L+(N$|ZS8%jT(Vw#o~%iW%iA^?2Y z0Vk)NT&tpV8`ZjziYDTS5P|U+go*UQ7fdwyoI_<(PROu9gGZ%DI#VB?_soWbmLE>< zd-55>=J?ea&#AvYy7N!%Vk6>{T+U+gy8E=LX>_^r%If4%1G~>H>@us{o+m}wnq zQBZe(*Qd=2^=Ea~OIzq{RQPoti+S?7-|+D6_*}G!9MrI$`;_b(1TjW*lF;Xa1czgL{@Pipx5fWbIorV(l?$qh#hMds$RMNMj7kUz{Z4E<@ux;)KwGIX}`Ow9!Fmr&{g49;BOW!hgu5}MqM@fJUGGtzyDsPI6O zP~o8shyp*Y3|3Ozyq5HarV>EZ34~FoHzrVdF`kZk^sdAwk(41@S^2k+zk(qJdK$Zi zp+s1PK};P&6E48wjHFbA>|7}z0Tyv09r2!MOwq4NRHu#=idg8dWSlrKpl|oS<7dSt z%(zqia&Mh*8I#ZeSEjyx+k`<+9f{oSoP6(|?qf!_#2J&=UisxE=CfRws~K{k8aOzg z5lNu)fhsK?5amd$1B%BDVG-QZ8b-w~Euuh$3%*`!r3J_*YR;7{XlB%tW!R>*>Y6jt zQgu|&k}4tdPP(0MiHeIa?drdN)BmXN^it*|wrmb*I=bPhQG4h7tbVV=2%|XlP3flo z>g9j#F1h{myTv<_;zb78UGB+5kEMxvEb$)qbv?e}_i9|k?V(*qAZz97b63AKfrlOb zZwi>UWaO{2!IH!x%_#Cvq;%`a(gN_o^*#VqNmH=pHiV=^2O+N=Lii8FiV5g^45&bB zey`is(H-28Vy{?qG-0#=H8!F084^n!&na}&!^5@NW3@6fdlb|=!qH0_J$^V6i1jH^ zX=p1%N(e>38F)+cS^9L&zja1g^={>%)w9J3^}PCx`mBglj}CEH9bGw8-?Bq2T(S1S zoz5|T74InpEnC!wKfh#5P(Q%1+4EJ0M6ZQ&AO_eU$j|f~{R=u8Bk!8KOC2EU4- zU!i7iFr!<-uDNHLgJuP5BFDDiGtj3{rC7=mQuWD^7=l+T-PhEvnFBGtr+%%T+|u%5 zwcfN-ELgT-6U_EjWlqahb%;0AvATTxfTt5H16Z`KsMlfU*ZWu-t`LXRH?Zf*S|^U^_z6_ znLlWhx|%UNp-7U-d^FgxNP7uHV!*s)o&lmGJT+$M1gJBUoe+eQ)zuwLi#-ID1Pl-g z#*bDFCd`bcwtr!5#k6G|MQu!fay9Dk6|*!AkTEBiP=&gTJVbhY{$2`2a720kj+V z0sS$C(O%}DBfh^d7{hp+skXWtl$0h9h_QHbZKY&s_Gv7TdG9B;yfJ0BTvjzrV&U?2 zKz!{{+o}(Lb{Pw4!Ca{a20ua**^BVV@xY0U4fCvYwezQL5D_P{lz!^hjSCKzURhjvN$K(P zrJL0!)HRB;N&F;UI(X@mmaoM!dT*%ut)+jUoXF2XE@Ch2`1fqb_iO7Qlsnvb^U^Fh zm!6;j7DN;f1Y2k%1$}j=1I>RWL9{X#0W4*RAk-8Luh{}K3lJ6AVFpp*yw@5LFld#A zIOF$}m@orjU@(VUNftDFRlXwALI}NJ$};4G>lCa~0+K+iRi|!yMoiyUvrSokuBA*= zKCkY4sOF)TO1(}w-ZDUGUXLO6O>cUu(okn1aP2{wWSCOWa=Rp97R=UbT=g;e5Kea5*>9k zSj`C)_tU2bz#Gh2TAInE4Ua;cWE%GFyr<8p&%K-Q>N6LX&p32q(EN9+>du_0t9od& z`b)#bZZ#dc9oh2hrkbrY%a<%0-1Es@51mglIcnCe`pZ1JC&r`hV}1X#e2$)=U?32Q zc?D@7LL+ih2pKMErHGL*28Pb}C;>m&o&tWf0BWUj9N5>lU zb+4$eJ$kfzs^Q8o&LMat649khL5AKP`d_ps~WU)AK03ps?K&c-v7 zJUS2zO2<@krO9R$6sQT1uQ?t*uxiO;&40gEmqBQ%55X9-#i72&7`hq?m5WrEN{|C8WkH4jT*N=n7@2|neYR?JSSlH!z zeSUW<_Efu`X2&4Qz`rN|h99Ensbny^6a}X&tGR#<^6kVZM zL7M!+i0{5731Bpp70G|n*OM=!h2{@F@#1>HaJ ztGHi)=Y9uwIZ|C?9E1A_rAiv~6?|^&b9k}I(-!n!`W@W5LH-6J1kGdi`y2b4&#(qu z<8Sy*2Dlcj8&ZH1@}K+-+I~h#f1^@F!tMAI_8qtzpBUpWeb(}&Scdz#1bxWD{YB}X zYt6UNC-6xgMcSdLVs$jwRU$$=}9)C6u3^^H)lwaMr3{D-ID^tDe;!H9hXZwC6yV`Q9RQ zZ)o?1+6Amu1AQ(g!}_%ulk_ksn7!zLdqq#B-;eewG2I|Na}As0yH{w$jhmFumG=2u z|Jx0>>N}h@z)6^$K>w8VuYL4E(nq~k7Jj|IRvv-s-?{|gUy}_3zMlPSu<`}dDi3M( zuc;#dqoUlQz^*%j$;;+hH`2>C1$f!Jn|TO~JESAv9kg48!I^|IgyM&P(v5?s+kgTI zY4#huY%VJowdMlI*`_Q&V~Y50%?2%SeMC5iHjtNHhg=Xv{GVMmCS6`Yjy6;nn0$)$ zN8)~f|A!quAn(Ylvs2uPRyJR>?*NxLqJ3NIEx|UoK4Ivq2X{wLn0OJic$TIYMz$Jn zjr}qNuq7>63gNiuMPA?j&DchpvA!P0lKp1h;<&0pH%uEa2kic!f;>kGlyJ*WQ_5ox zZg<54b;>`nKa*O^GzUV9g>zcqZIE_rIS&2L+I=t8o+IKU-yP#QUURp=XWekOeka+t zN(1f-PgL_Q{(s)i@7&5Y_dsjY4j*?eeB4CJ&oPe``d#FpRK!3HA;IxZC?50gp~L`p z0;DU{BXkin!!c}1b|a-`+GmcR-2G#b z(4nO|L8(xl{!`CYE3;oY_Opn1Mm_Xn#be!SIwjadf{5HbzVVHywwnj3|4>^ner)K6 z?3*L61TMjy%q5uS-yxk^#+9f9$zDS6a#B|^?nEDHAr3B>9bcJQ)2x7;5^X5p7o_nS zgoX~mt@_H%T26^_9eOAEd69I~gV9okVo`(+01s{g>Yq&05=jIaHcDJ3!>96u07oWO zF2$}($ss=k!U0CP|vCV0`JV2ufQ*8={K;YRB3zW!{@}@kIsDfn)(py=hX(-8Tgcpcieux z*H3Y*14s!Z9?>>zl4RzXuZ465J587X_S)rP$Sc{O(VrGw8U=3p8r zSZ{_}P?Uz1=LzOcc=%8nF(^8O95(pI1gt~-CmlIRbXNpJ8tA$}s54YinnaQ?iRJ45 z)Kz`1=8Ci(>vvQhKl!w>Z^}RZ@dI|x@|J!2AMd$O$$6N3D(1BS51vWakJn`dbo(Jw z957gIh!r%Nyh2cb0%gE>LNj2h5;sis%Q!2eY++--_d$K|gdfIc;?BgzZw~5s2Gqso zj%R3l2}y0@J7>?)sCka)7OFQH&2T4hY;`AK4yfk}B_8>c{RkS%;k8AhD;u&%N3Fd+ zTo-9U5Kr*kSW#4%j*)K$vqA4;U6ep;YwM_Vv#Dasm)i%6d1IY3)t{GOZi;d6sc8>C zT=n_GC(qP=HL-fsm@(sDy2&L@d?elzvDvOZmi4yw8Mmp^^L@MA)CJ&Dew+*Hg9z*NS&@l0`ImH=ibP}$dJ?bK2?V%p+lvcoh z`DPJxEmU(A^_{ml9|-meo8_iS0UQT@Sj(S2g-_}yoO`(@F!cK!Mfdl?cIjGMT7 z^k;ulU!O7VmYX-sDj!t(6x}E0vja0U8~2$`u~e$26<#Z$)EJ;8=ekfa6kSTB37|Uh z5Qv_r*x?_dz=C-c)+i#&bUVPYiGCa09OyO)y%ho?%`it2{mv?r?M2l6Pt(u{JL-?= zi46ejUP2*?hHlutW?I2RD?J?+)eYUXe|O_!75U{e)_V85|J10CTrs&gzvQNz%0X+} zr>?wv=3@hU^t`#K-|&$;hiru(L3&?cYKt06Tbc>ZRTcu(WCF&_a7=VI!RldDA)c33 zYNEv)h1((^W-v6c!C-a7rtwqCOon!1zy?+4P;9}><#0Py-mzG%tf5qmB-WJzD~d1j zj_d$CQyEtSI}_%^BFfi&wRy^>4kl&YhI!MnyX^0I{_Ps|EAOFa>t>X%dp9>}_3h*S zG)Yu?MIZOAvcvY z(iLI2A}O!IQPeF0djzQUVG}WGAQCBd;qJkaqegdA0C{yrqOY@+B56+)UShZCgqInR zW{Kv1YD8`B0-%rzK)r^`>s_6rux;eik zC+GGYombmnI8^b_jK>rAoV$B?Nn&Bq^vBD~D~h|`+PThasGYWJ`oWZ~Z?EZV*kFA~ zSgSW|wXCzhdv2)syPCS~n}zmumYwRi+tzQjZm?eXpDxL&OMJQe)0Om05Qpmr;F)An z98Opgnjqtip|wRhv#`*N7)Tf?WP#~2oHK*bh#;d85BY(~7Adm~+$$W5P%UK^CRZ4x z%$&qxi)NK5NWz~ogP&TIpDfuN0@jz4Fb8R=hJi?TecEis>CtXjGn6_bvo-`(KK!<>Qujl(ZI!+rE16YO^88Pzt=%G|ggAI+r30 z*tCr11)(Dwc!AIWScr<$`SSxfMJNZ6AK#BM> zN=0_EfG(s6pur#qA41l~Nb?aq5tX>xqLG7s8xC10LeR=svkgQ=#=e#`H zf_!;-AE`d$j4imr?LY`2>E=Vgp3jL)nS2N920|tf#|O*MiM*LmqINJc!(b3mau{)o zScqCu2)BoR0P0iM_xPf5VWc5-wAlN~SKCfnr>IMp&2bnS@ldiK?0xfg<@Dtf`uS8fRWnI(l^^=Nc6!TKGcdWKK%BjNLVTy%*>;0N+%O8h8SqbdPwR#F?oHrC z!F$Gz7aPXnJ;-k~TTinaO*9`%UT<2IJp)x*U)72j2znzegW}0~(#Cdt1vX zffWw$CwIKYr43g%8gJ9`h*3BK3L^2QnhQfE(+JpejNxH9;U!{FBJ`j%iZ2k5!!dxe z1-1viAJ%~h32%(q!Pqef3bhM!1eG!@bfoh(I$!VNW3=y@c)li$j=-amhX@W%v&H6$ zj@J;WGQogwi-HHVgOh7$PbVCp>;osWuJwUi6m(3&{$-UvBx0W_+dJvmGmokl>!&_c z@$}1e_swajYMLS*T>0#*m5aowr$mP*P2!~5FXpS4pHW{ss-}y-MgQwB+nx;4mzvgp zskSw)`FC}7O(;E+<9J3Umhm{Yar03t11BvI4M6lJk!>e9Z)Be2KV+0Y84+J&J#_9` zz%t`2p@{Kh?g6Q+$FyqHN+Mtfef{+-o4b-i8r;#~K8^us&_&SfC@f4LkpUObr1{Y` zP#-w z>lp0fyeCBKzH7~Kl9)7h$Oc!4jfR3VLN7)_pCKMoo`i-N1A!f&oj{&x`${Mj8K`!YSqc6SnEJ%Y)>wrSp;TT&2DCv5 zw{zSA#XJVUZ-gB@9Gaiv%Yzck7p$Z-RuXbWpy$=`h)L4ao&r2!5~PKf5NKf$HdzIcz(c zANKESQhGMj0xZZH2|l(eRY*JBHZVz%q*#MP(gm*CO`#wfroUK z&mtGYjp)5A2yRS)6OBnsmpK$s>n3XYxK?g}T@p$RGmIY_je( z+2!s|&Szu>#j&iiUPB@ch-)y%gp&a^lPH*JmzH`x=nSEgWImy>aQ9HM;UX^O^pf#1 zS$2~U$l1rZt1*gLB<&E{)HtZ7FX;yg5n~(yoNx>jm|~10fdT$NKiNh^p+r<~4tK=upOyBNJ8%(Rj0+T{z^;u-I2jAv2AUndG0sY0TlpDYR&i^3AAjj z;wXZjv@(^MH*XvzbyF(IU{G^ym0FaNorDpc<0`G=dR9wc=xM+UH4nvz-XEUfDLIi^ds7l~Fs9m=J(jT&)V=^>CgOG`yd5=zQD`e7WimV48K2v)DEYPlcT{}( zirDu>%^e#@PU>88^Ta;6qU_z1!+xE&bd9NGUcV{vaa9xdKLaPoJ7CW0aqX2$hr}E* zjap39I=3F!#jCgZ&)+bI9&3VPB+LoawG+jfwzbRm#t?6BB0|QD9FG<5yYjz`)|A72 z+d;|N`Qt~5i-?7Y@}liEDQm!i#*%;hXqB#1GRfN$1za-GGhH{hv>oE4b`&Rt&@o_? zCZ7!BV_Q0Uacs4@L=yu(+T+fs>Q zn9!a7So5H(Hhu5f{)OGT-P5ktxpU0nRVm};98S;5kr%h#S2F#|r$_cXH)DEN{N(iQ zl^^X>htjjA95v6A7XPF?lWs`}trPSV<2>SGtP}JUOFTUm29w9>7Pr!T-lkR4=3kTs3>_(odjjl7{Gqc#TBT2;#rI|b%%Ns^kJ_&bk%XMLT1{HUN zyCBCMd*0I)cCxLN+Pu>BJ+zb%6g-VXo{)P49!H;=1z0T ze8cr_NIU_QL5%yrGN-^;plMeh1rL>|_YINApEQ!En`?a%#oyFS z5-*h>n!0SF^w6T!?lY8UUWDiuPMr}Yvt2$1ZTG|(*yIXMvX{2Nr|$;LIEG$->3^S3 z9PR?|X?-IhM(cv}&CKo2`DI;SP^00zHm`^B&d7IB-uYRahfgsdHlA`a(eV4QZ&JmM z+XW~!BbzrZ`EKME5)dIvzwd?!nM!wBRfuy9h>+noGolJl%;yc>-#k(-8OcI{W~6vT z$gwn1kB__}3{>&qiHv>kt4<^@6T^70KWkBG_+>Uh{lVC&2ijb|{~;H=JD2#L5m$>|Vr$O95C zpbf%c0BcgA#d45d0KsY$peImh8Y+{G`acHgu@muN^IdfN2DcNzR3zfps1yWK(L~2l z?}|oE$BSct7B)nJe?v=6c_aB1OUOx(?GOWeD(pZ}Hm}(fLv^+!J0j^eoj7O+0hFLY zXU@o``Fp6qc}!@m(XxrsR4Sz50f@po$-K zSI4YR&HPjy*YxDE^_zaWs_P$f^cV5;**&|nlO7!P{rgX$N%k+B@3?hDSqtq;(~*z= z2zuz!{i1dIJMz8IPmDr`BgEMSIsRN@t08(at9qsG!$i;Gn!eG&bN9~gdT5B+{6TGjLH*Zjr~xe5@`U(Nyx!t% z+P6pr{K%}XZ@K)ss8az5r1iZMImBh~;i$76`yVmL5V;N^Ho&%n7CP!c4I)QbgkxNu z5s4k4V?>}HU^*%bAlw0lgQ8(HUJy|Sb(8t(IqRAyvaFFyv^7!K>);M4#YWR)Ff!ig zAmIk_F_?~&K(zaQ8%JmKAk(BFx(c#Ie7Qg+$gPXS*Chir{>KA*}&l)^m z{bHDSCBJs>g2^Nwa8K*MG-hEROVfR?_1V#EC1NClI3O1t+FOI7u9r(ga;TL8VnkXT zUQypG_AhKzdWcAq79|V-YVgNYT0VfY1Wp!LDmE)8rtdgOUa62*D$9$GbElbVku@`cK+Zf@5RkR)VeGWDZSc^N>tlhsNLIp9Wt@ zK(^ma#Eeh6m~*IuNJ>&K-n44I81wHlb=tEi&`kbKW4f^y%^e?*6 zj!r#NR;ZvH*M$PPJ4167@Di1&6v)>Jyp@5niB?!!q!-!R`Vuc0@B=ci#n-3P5ooJ) z77WOs2#JC1CEezU#ViYG_kyd>Q-V^PQpWZuY?Upm@ z+kKR|NoW>5b#%RK7HtkvPgWDy>a@t(Lmi`6KHpt(+w<>p$7s3;9^0b@1u4W@@TWGx zFaI4GY1+tWG}20d4H_csi9n;d)6r>!m8}0=8A*4FWkidYWJGi?J{kD}{QoQ?L^G(H z$B~S}h_5Y#Wkk(((1W@^J?H=?s*bQ=vRz>ywB~mEASCorhC}6&IGJfAy06h*Yg3e{ecB9A z18I8WC+?uLkRh{RWlHcjx{E;U4;9dTYOAM5N`~{_LH19=(ec4HRg)@g40>ylzz!L3;UT zom08xksZs`g$-hdx^}bPB3!O0L-GK!Jj$J|$|V(S*N(exS}Xkngbl_X&@l&gKzLr{ z9|Xw!8o+?viYU%6cVvJ_?yl?P4twqEu)bdO2nKxZ75?z;iRSNb6#er*_otHj-Et|G)_IUN; zQIT?GhBE2f+(2{!Ar$DJvQ)s7W8H#j#kdT5oQO&{IFw=CiF+=}MOtj8T`mc`oH0g6 zcw%QXl-L*qCjzbduJeScqws;T1Ta^=y7t!QjVvdgC65b`5^HRVzQRL{QJi7#3s3@! zujp8Bu{k+#;M>T$o! zoFGVr%xKs1jkBN@b*yJFdQnGV64;a>CTwzS+-jSzO3m@Nq(_22CH}`Wc{Wf^kdXAt zh5r@HideirhN#I3qYQz}gtOo^hTt{%?0+aBUY|&R=^>xFr@K_#cgMv@{Q;M{@s`P5 zt+|JCB1TW1|L~mPaSOUPi0P+9k(fDiTK5o9He-f*Fs#?yd1|c~dFRNMZxs8@^VK?i zgL+Qnl0K1LG?PB116BLEWCv-`S)flO9G-d4N&gJ;ozfBk!Dhz^)3{=QL3Bn_vIYI6 zFpud_uJmg>DDvk6R1Qu4e*PuRhiU}d-3_{jPpQ|ZlVg=eN1%F~(TqExt&q5QiD=km z17;wBL9S6SbQw~l!3ahH2=zpu{w<3q8j{!M&ID%-WFO==d)F$UqNT<01F3RYK?gNk zfE{7eZvlE(>oSd>YGy^8z5J$k-S4FK%T||H>vhma2EBhAsEzC9lQvG>4HxC5L3d@h zlm_S|VT??K5lhyACP~&5j_Hutjf5i&!IM_9;8VgN_@p=%Jj`M$@E52Xn!fbdog{l% ze9>sN1GXk2PjWz&F+2hxEKo(BaG1#J>MxBY?jPcL=>uSfn1M$YG&a@zto5e_v=|v_ za<@L2o=OrOu@OfNVk)Lj9QuPUbwlOC$lND7Mch7d{@&RksOU>|~c0@gY?F;2)Utr;7f7R+YFTe6|&OUl7YjFBqBm0#09*~vUE+a0f`|x?Is9Rh8P(8PQ(durqXAkZ(w#|$=hnlLk zdsl6Uw+&rY_Uop{w^RG}0>_Z)o#V!hpIn?2F)t{0R@9^SXx-eee-dlS?>f?KiVUsE zFc_AQ4Hj1qs>}7Ojir$D0hV(QNViv>cTf-VsR#8#K7b~)K*IqHPoZ&jn!KUIkT)U1 z^HD*wQlQZuhJ?f&OyUm1qz`*kVos-`UISR(R-3nN-+qv@r+q%GZ6-8N=jowI9J45N z`O-$@0J;pGd2e)Ld$PSLc5iIF93yM)jQxpZu3>kn?2rYKXR*WyAbNwuDLt-1iU@wL ziM*`;ybS|)FX;2e_9WnYkM>(xTDZ2d(}bnHOUF(x%*o1#P3_xr+@#ejMo+GI@%gP~ zUAv9lJ+#x z5g6Ec*QgmAZ%=d;wohvt5*D*L%V3zrxmt9T(`*#<@UG$a8V4cX{|V0{aMn{4cEvFo zqQi!mnX-_c1lW6*lV?4Fs?^8)uB9S@_5zWjWPXpOoS`8!5)KID?4(X3u#G1Wq>Tp( z+&Je+SCnEZ0^K;F#C5+j=c!Rd6kOSBiq}svoP6SG@PcH3EWY6z^?%gnfFaf*=}Ov( z_MKk&Nd1QIhdAuwP`?g`ubBwkrbMWq+9K;u@rY}E_d`W%IV?@%xg~508h9B_8IAjC zp!)&p2sae(zmd+|SrEt%3&VsPkquq2)D{#*sP-CTr8r^1n(x6Z_FTr2Wt zCjB|c(Z3PNO<)cZ!>A;AHj;tlXn>v(-`k4-i&Psk(P`!(;eVY)=nD564QQ=MJ6Ssk z6iem8IC0{<;hhGw>z-Ls(!1r#(;zGub7Gsa;w>ffe^zygSZB>HTXXp>{>~HOPo)@! z;X7jv1%GGiSMcz6wv)Sg<98nW8xPP5$eZ5yo$cgFns^#1eb*$BkDg`!mnF#Z#M)jq zy}>kK)V>}!Pa4oRBP*_5k520H&ycI!f3|0Z=UFlGzRB%_mYTXvx&mq)s#&mniBm^O z)1j6p%8l8~wZr#7wG1U)o;R%E>vyV=!556LWByzoo!5;wVkO~ofZ+|AZWx90zzEZM z=o*MWwwA!vw`PISnR$CEPi@b;KZ?dj62N71w#z;X$kmzAl| z&?PDnxeDzzYZhhOkP%RJJ|?oC&6?M(L^<*Ne)YWcW4!N^*x3W{ZrE_r24mG`D>xu^)^*C1oRW zI;6a*K974Zzgi7U81aa8qI-|bX-Kl@!g25IavIG1%15%U^((>u;0$jber6z5SZ}a} zNW+l?1WvupB|W-!w)*f`9rJ3MaZN}Y+7kKR3CKV<$uMK&?)l~=(pbBBm=*2rmGXJ7 z-)HY%nBPU&xOL{s_t^*J=XKFn@2$J#=8nTt^TL)qIACC#Tha=HhpoIx)a(^)UQX=R zp<90HTaVSM@4uAXty8zWn2QJJY;g?8i0L4*E=*kG>YbVpyXR9pcebDAi9z|8KGt7% zn}GeyrR;ZmS<6A!IM;HJLZezvVxGHij=N93rx3nGQC@ww!oES-?ymWs61?vW-(nOi zh-O_oLpc30nYzE#a}&m^jkN0SHe`Em8c7@FO#_0n>vcB`$96eV0!6c+N~2|j@_qU# zj!@ivI=Z`dboT*oW-97H*gkuu{?_(0i*;(Ob?K@I?m@pSFSoaQ!pJ^Rp;Ewy=iP$V0J>R?JicRGcHcNh7H+v5?p!dCL7y zKBp+L)zeF6&6wRgCeE^KdEar_ljHl?7iOi$qqIrJwMAqwaQh>vrCF+tPWMLVQn} z(-qWv2T%^|KURF*{c_wr^BcOFbWRx2uGWSD7F|0-wx>sL3iSpC8VT<2yS5rUNXt|F zzpMryr)qF<*Z%Z$qig`4#q^_>N%mt@5$@I(Z@^godo^KC*M8W|i?QU{aNn?q|EuaS zB5{lq%t|x!ziZd+e^Dz|7MS$C43$Z-&kstBdv0*Tb*uG%tsR?m4oBTI{D-}cYskjO z;qzpQcE4XmreHiNzad6Gz8Gsm=Kn|Co4`j|UGL-XeP>H%CX<;=_I)86AqhzcA!68< z7!VK<*+g~_WfPD_#E20Q*+dk=B2vVd#z+b2d(S=RInR;9my$ulhm1maNxnbAoF|9x{~rU5ChAqeZu5rpj)VQEy4aKCvQ356$-A0XoQHJ_S>@L9xAizHP zc>8wg)eCWqAYqWIm+&il^W3mm;BQB2mj_+qdxc%49* z1#op&bO?)nphH;A10CAl?(J~&IHacsb=$Ar9b&)?A+rsE-*t2abmd!w(#XiWMF(%I zUp9N(hNhWEei$gVRC2VU!1{Y z$>x8#?xll8+Hvi}YLWbW-SZ-?M*HZ5NU7F7Y+Ko;W-Z?{*SD1mYy**$Tr$~Aj z3V9PEER6h7C^dvC+&#)N^gRR-M;Os!%o_aSgs$BNR%;_&io;^v&Cir(9A%1R1>{Ycqlp+un{242t0zXLhLqECGy5` zkYLmZIGCgLqN0G0nBBnr=(d}FOcZpyr8-3bHI>p)3%jQ!tAfwwKnROv@!>bDu3g+` z#$5AqwLHII;i|1S7|+&rDd=+R$dt7Bm@b*w1=%DAbp`62&ovig97+(&D{eFBXCD@N zn_XHQc0zwBb~B9Fe)dQZzCrpd^?=ODi30D5x}txduHCYtUGYEq%yh7_PhMt9e3;qk z>Rwbc5Pz!ye`^K)RwS$?Kup@K`rkt0q~SF3?$}^9M9|+d5cgDADbaD!A1a3>*kK5o z)rN)nnF*6C2P`(e3yUntVNZ*#9>_blg6i}6+A+&9(QZ04i@u5{C5#?C476zQDSGB2sEDtpqmn0c zvs&?ZKJ(OB^fiD8x0HF)@b%bIUrrkRc1|+B&b)Cveciv=@5$MlT-uf-FXWdJbqGpZwVCAwV54C}hz=tco>hx=F(!)T*eACR?lNOstnXVl) zqSQ32)2HE`K8beI3~D;kbnRd?9cFv&mPHo*gZQRX)6T!R*!FthFO-?Y$q932O)4zN zEz#@~Zku%ry)(QQcy}>!{B5%)b?cU2Y<9dn^A>t@F)Z+9M>8$qrc=6*b z7_$nP`MEg)m1yJOeZrujB&{XOMEMDEh;CKjWKSqUcR3DuSP1gZtaJ?c*o_e6d6Fo{AFdCiA{Uce?geYCCr94$`3h1zd|O zbShL!N_uu?Lfyn$wG+!p-jvI|04r89vTIQnf-?ySGEAmV5I5Yl*xLp2?$VXy-6a?D zPJ_G)d5`}NjF`Z3nUH*D5Iam++IbXB$VFHIVV*n;1_IIE6yiBaWIGP^L>%DF=@;&d zqMb7iCwDAJk-2Dqf^G~JZd05tioHYAzmu=cqNT8Fs4`ild-~Bpx#08OPZEQZ1v=&1{fs>91IZP=`hT(pKs6D zmfw^siqo~XuU#)%wHLIXk6rT4A2)7z%s8jvz<~zskJ^rN-)#QL6B2(}2mIw;;8SBT zZ;|C5O_np&n@%eRB^*#|#h?@+gajhlW~2@HOh(crARU3xm2(&NVl1F;08L;MC4yGK zMmS%<6*6~sv>znNFzi=l#w|({Km{v<3d*fkl-!2VhSY%Y3?O(~?et1q9(%~PYmK0f zKD>6=aEecjpyU9cE&=ng^LsMec%sH)N_vfOl7sOJB10iiROGYTB8k&U@um^x!bR&Y z(l$B-sUtAc-J!XRb#a@wq&!yMR4&3&vRwTU|T17-8BX}VKZyebV76kIa?LxvJ1)`*P3rZ2f z&nU@G1QGQ+P1tPA0GGHyWtCeIM{d9ZitCG-(|@?E)T|u6boJ`x+gD8)FsQBuJVH;I z4!m?&JF#L%zvcx0G4*Z7V^zB*omc?|Nm)M<93b%X=PPw`et8j8Vyv7D*XKZ`s1&!P zvWkb=V4dfXJdzdwC?&@~sva<_m7s!`7(3O41v`Pxja{M+nC%g+R5pfWl~Me_Dzp)v6Ia!+N+H?=^FTALWwdThLHC70(~Fho@}ox7#sm+}KM0w}v6}?lSM~ zz4b=Xt?9!f+Mj4IWR7m*Uh@aADOTtsZVAHYyk-Q?O#peDX H$U7{sCIf6G5zLr8 zi0Cq^W@r10ysXHfmsm;UHZxYTBjMR}6gmJ{q&^K`3xao_Km!=f3bjYyz0>@sv`M{XZHllH5S+Nr zxvqvaf{u|6&L{<$ju-3)EXD2Z9)1v@3=NDj1ZOnZRaHAdzrl}VvC)ETrB}KhLDvo7 zTQys#oS80FugwmvWSFJ9qRdTLc>0&+9+9?bz53g9|EYOmNQQQ3b;}xc%@%d*4$Zj5 zzf4`jdSS=@L%BW?N_|K_C@g3OwU$u09|WuPiZJ8?aQT$)_G3%??*G0YbW-T_{Pv`+ zv(?HpZ9$EQOwzu(t?4##ZiV>sBigO6I^lpNuh)`Ad4L60L7U&>6^2dZwM(yeayLG7DF!m4xyVl$uUUJR`!q zPJ(X6Aq9t1J+VL1N@r!RDri1N1t%4S0)Tp|rydTm7_hpj@2C1tF6vwJsc<~4ojTUA zXvMNkAKZ83xk=d|^xfwFXN2~l_K~*hNb%0{29a~%g*U_ewJd|)n$<7|W0*#{Ni2i3 zGFjJ|GZs*G94C7!Lf&Rc=9S&j0S(a0D8sM8EKh1_5I47{{dC9-Pm`5g8rq-1MO&*W z4d~z2RC@K{wPO<`^rY8>(vD!ZGSW|d|D%G;oTBAPfOI0cOqY!cwjhg(FywH2C`9t= zNsjW`u(Faxq037K4QZ_`Pelkp=c&WYR0pPNGltw)cE_`~)U`h~XmUaR#J-Jh*4;U* z$8=-$Bbv`W|Kx)wwb%9~#qUb!BD#IKad(uK4@}EWt)A;n#3+A~^1_3G35)U+JC~jS zhcI$DbS4ZFM1)%HFrfl0(E-+Xtb4yAQ61{@?0J>m7y$=2fh)&IJg zlqAlDfm&T;U(xkwy6(ekh!9bh0^gH22xTb_7%g^`#|-8W?Z@ZHz(+PNsDcIDQ&2sW z6{XtSVURZ70B#;qxPlGas~4}xKDhYDBd1)wfW>S6zls$hMJ&LPsI8V9i6TMqm6P?* zqwGqq#NO;D>0JPutlJNxNi6uUXc8$4q#H)40DIIGjERT({PaAGNgyw}IX#6)^D1z9 zy28>c|DT8y6;D?n<)Y)d7D_%vInTe#s0cTtPY|Wzf5fSXg_=T~{}!j>hye@s);ziW zhm$JC`Y(vtw)bA@;8jHa=LM~rYLOsc6s4t6pJ*2%Xw>%%L0CuBLG-#x~7NlQ*{*mSb z;hF*kGW5AXO!Fv`@wPuhEP8U`p3&Ea7RoqAWd&rh4B|alWz51FdzHQiFrQcJyUe$_ zvhP7=M%_9wf@WRsJFOT0U-caZ4HXB``wl|K1*-8i5IQD#7VRE2LXtZEQw{f@)u#Br zLDwa*Be?c~bt=TTM=6@L5xfeL19_>`c_>lE5`zxZ+nrG3c=cPF{Xteg}8*@1D#!X;J=mMpi$ zz#6oA@Iz^0^*jDqqV~{N1#3pFSOHXVuhpXOda=GV@|LKb;)hwNzbRk|pQ_2mmhffCLeRAYU+O+xqC0L5;eB0vxakC)2j} zXL+?l9Vkc>Y1fenQkn^n=FavP@THA59+|ZAKd}r_OHO9-;WcE7LbfYd2x*JLW(8tG zeY5Ik7nI=&j1OeXG~Fyvym0zF&VceWOPC}JN_)&u+U})nvyra~7%_yKYbgJyX~FWr z_h$?1tNt%z#iXAd&RK$5`NPA6;TkL-iOBCb_e~Kv|y6Prd zh%#4Lz7m{ANnvoIIEl~U3Kt53izI$1FvQP_3M;)s%oNWd;9jdxuvxbn>6HXyakG6+ zuR%p^weiI$dWFnFgFLh~+aLh3UwTzSMByg;NM-LjsT(<}R0t46ancr&P63p*TNT?X;aQx|(nh?6SnNaOgFtcda(Q z7(=fJczs7W6seWM;rN$66WMt}!ttOKIG?V~l6f)G4G~2kO^R0b4!?=nf^{C1x(pV0 zDv3ZPzbPN}$2G00M|Y#@IDyLOxi5awFxvQT{lSCv+Pi=Lv6`S2`q!%V$W;97~M zs_Oks<;GkvN7!v$BKtR4=tglTu&Ben>&5R@D&BC97zT zphO_D2(g*b;Rt|w>K1G`s-p2_gL>>8f2w%*Rjq7mvxue&8X+Z~sEDdOr=G;Vb!9(j z(~|wbL5K=F>HR>q0mY)I9}VrzJhDt%>j7&m^+OUL+5WfsfitRV|}t@i7#05)4_+l2$=|odWsIVMIEx9 zqM)@Da~&x{w9^EZTCA@6E*)Cd2;oN-MKJFrr23~FmL!)+44VBW5|RyVS?SqT0tW;j54>NyGw6tj#FocaHEEyh zUi9OUPjB?!!CA!Wd{jUp8y$(FEGx2Ai0d~}`QU1@>Xg9eP>AuDWQ9{ArS^YUIw3X; zWJX1wY&Z#FeGEt^n7J3weE6C}r1M=PCy|YuA0nVu3v4`ECcjrmFN4T{nPg#)Kr-;06&?2b_sf(V{~c z#Q9XMO*{8Yhcaxv@BwQA`_fE*g&uGptu#%Pa7vJ6A|Abul%{02k`7QGbshL_A3Nzl zu#evv`2V_(Jetyb6(oOFjj7t+6Cni9k6xRYt8tSB%*QT6@h$) zsc-|OloG@QNfI6hXS~A`6mLoC&*qHoI)A; zS`Z)&mQEq~MN+XWKHB~;ua(UGgx|ti*=k6_NVX=@t6@K^qQn$-hw$|FCQ&i_NOBa% zxO^r%c6sdh@pLf^M1i!OeZQ{=>AvI*H@v;6Z_Vez{@ z+MoR&X;1zv)MaE!yYPXW1MnL$UsDFLTrd}|l9EBPV_hNN5eYCI@<}Vj{y+pFZKlLj z&MhYo60%bvu?#E<8It`n#EnKC^FX5N6Ya-z6M@`l8BR|+Bo-h=57r^4-9=6s>@Gwl zih|^L_2IRX*@*}q5d@J$lVv@4-AZ7>TqoGm$pL2~HVcTW=}c*=0OMy@Y$K{!|u-WEB%Wu%c%!`}E=M8Gv?Q~`SEDRVt< z439UbXXkO!UQ(2oaD9rmAR8Ues`RA0Jb6rHn@T|Ko&ax0L?;m`kT;xy86kMF??T@| z!5YY(vBU<-iZEDP$&NT3%(3;(q*Y;g9SS^8-|C3LPAIm?iHT~t+9~m3oJ|u?wj=peK zyKhcx;*&|GU0pU&{ENeLCyEKbm^*u?c9C?Jau<#p=YSKV04FKLnDbe#h~Q+CP(i#B zgx9sjm*uliNmF}!%CfQPKY=@f#BA zwM&g__Lvv!SpA24Hr%~k`{D*?)Y_=Q>F4*=55M;8^4eFB6SGCDCVVA$zfkv*{5~oQ zPH?VFHQ^O;9sKz04_XG9!xq-+sV*isCzdI^uF6{BHi~K3C9eb=JAs;jf#atQ*as^Z zf{l^b?M;~6df92CCk)?&!_i|QXNUQyvLDAqeVeC=jniW|SNX>7$0jhFzQpiDAO={z zhIdo7IbUyw)1pzt!0O$4aRu2wFnHNdWA;ElDg|P_g)^($+Xv4)FRJ(4LH9ZybJr`ZI-8FBRXX z78BqUqI#*O2AVU8(f5MaLwkq-J&LRve`l;bXG_TvPZWjjnfGmW~Z1 zV*@?_cV%G_-dQM@HN%C1u6eYeq*6d%a;+s|9qECC=>db$YI7x0f)gLqEoBmZC4W%< zszH)m6UR02HdC2($qS%YT+bxbQ18EWkdBXid3xPiN7y)9c1mH{{FafcA}2+yzhT$1 zwA-5=i|R9sNXlm#tBH7g$%@*wYx74HYIk(YNzaY;YvT4U4|l&-G~ZJ6$dXf!YIe14 za{dsaD%S|o2t7vb7}dE4FW$ARzf{Kobsb;_q2hQLoqQft>fy zQGL{8Y?^y%IofJ6QgJoBc1$TmuPo>vYK2;ya^C1`kOlmK9YZL4n3VL@qag#iK`2R@ zHoR&0iWMQ_d2ofcNi0Ag8?cVP&1cv-a&3}9I>z~^=n{@zR9hKqY2ak_D6SD*y$pZ%YS<)#$$c>>1h8;lXN zfMn3T0pgAl&j@|TJ08G0)MGH#8FQ(}p#A8=H7y9%L2=)BY-7BKaru<^1S}fFpOUX{ zV~@74XCdTbzsjNgoQf>aejePh642K~^fjJ#`Z#OZ5`k{acur(?rl@ihdwg5vIfj)&|cWga~qe2+){`MklP+RBe+Zg`;kU1}6${0-t>xzMXbim4=;`c5rr!i`2j zvk()3PmP5dK;^A#Ura&`sSQ994b+l`+(7HWa-)lXmvhRE0U(ypC^DPCtO&y(B8DnX z$I`10uN|ux)m!OjMWJc7=5R>49aQ2&dVs`f>X^QXW9> z2<*KK-#OH0_TNv^Wr?|shMqdy5EIp_3HqPN;&MZPF0!mZ*v>?sgtP%8usu2gl8oWk zSb7Dyr=dfhK72zF4ls0rD!iZFWT)_kJ6fn6sTri%qMyx#V11<19o_jGHoT%p$l-}F zvcTdT$E;pNUF%cmJ*jq&o>K70lcf?jEcYlbbCa2~(>A!dPt@kEzbcDwI{7HPTN`i8 ziV6G48>=>|n{#T!VD0_M`Hy|}rv#3$ZZ7Aw&h5ODczEhxv>= z9oBuanI&%(4PZd`^%}3nP?*@EK7mZ9cygiQX4vk66T$>YUaK|UhM|gs(#P3D!Yver ziF5-(4Il+xP1GWmTF~z#(C+|S;p`YmI0F=fH#uH=)G1!yPZwz{ZKGW;KP|X{yC1bzGI(hzqb}Zwx?2 z67G$HbObmGnP71=nn0UjAZdDGKr1lABKu>8t?pY_^{X4XlvGM#*u46Ry7K!TRW}t( z65X{k6AB(RiY)EZ8gb`hDk`=9fenS)HEf6%v9uZPn8i&U#d}*x+HSs(UfvVHOYXf@1YvM!#S14|R(a5CwgvX^!9u9u5 z_~X-}+PrHfiGn z*Ur&C7g-a#ZT{vxROjIOJ7y<*hBJ7aZ&n|Z+G*rX7=oT@=R9MlcgxZBFugJ%_<(a_O6N3wJ%7wRAm(ET-C$x zlLJnZoq8ofsyV<6H${N5hIdKRWfhJnM=oSl!m`r2U{SP5C%yCJlDII}h)gUOKafR0 z6^&5^%3F$`7Mc@~8Va>QY6VCu@kZ!0ic|tn@g}69K?>60d zB_TXy*R$*jgrze_Zjs2AB-YTIQOWKGSN!$vYeckf>#i-@hi_&X@4IK%#_OARJ^w4? zq9vlq@$nZo4VZmU-IF^uHepEmb!SA>%H>P!XND+RHwaIbb<-6s7h(x2 z8o5@XXmI{}Gb7LWGPCH8nW?yArgXTH`t{Q1ukU;gO;t~p)6?ZB8lX~x!J8o&nS=V7 z%aSfZPLD4!0?w)s^~{HQf;7(l*-~DSH z{pl~J={nlIi>hrE3sObyUpgx)^b~e5>1jUZ^bsI{u=06JNFj@98k1^v4NhZSHM1c} z3BK@j4N*-hp99rISjr0?L0@_X$vK@8*ieg%r#TcB)124IH_tbcoQ<9g*ua^vfz#=% zmUdJDEno)Ig9~pOezKVw(C}=zE~Jx&mypy;bWJ87x4sH|zb2EA8QA!PlzGFNp)J?d zul)h~JSZHpU7GpJogG>YpC52PYB~G-x-o`vCwSDpv`hnr@iq2kuNSk3KT6j3rdrDa z=?3s|uNT8HCpeC1D#6~JOrwI&RMoo!)=1H>D451vRN5I4IId8QLQit1FfgTGg+svu zrxiW@s$)k^#y*rx`%n_S`taIm2ZF(Zj2Z04c;&%J#&YA0#JbBAjot{9KnA6Umr6W% z!pXBJ(T%?FSX`m)2j>R(5hTsjRZ!;5z&pODl*SeWDuPX$sCIJjSU={lKzhDD}C?rNoZdSURyI zb2bnY4+L|iivq;e-@@^O)y+Y+CCcc6AC(L$*#$uxC_=JSsU%ENH*&Qzcypr2YKqgr z9I!EopYh6C-mgD(w()q=)$4g*nnHP&p*6jM4`AF-jPeV;Kd6ouf)=7pJ`(9qc3N2@ z01PlhGkVA!Ko5Ptr5-@S1x)fQ5g+i9IXzLFb7_GqJz$E{fyfv|m=8C-(sh{S5)H)I zK%jx(SzrT{B<78w6~GQpsayf9R3BWkMFC6J97rdAmbKAt)i15dlS_84N?BfkF^i2niBb z9Ae}wzfv?;0!99}L?ftnD2WCcd6+J=M@7=n9hrBS>{K6wV5Ni)q8Y)()o_LnB1@V+ z===U_wNobEQ@6QzQb&F9ceOv9FWJ-gg})$GH41Zp^2jCj?6@u;V9)+X*xA*fRM;+X z#0y9#;N`zkaY%21_^BU)lJX$+o{Ce!^VFd>CLH4^On_a%V|H<9z(F&Qs)o@fLCPZ? zd!cIciRYguz6e1RUEqXo9a_eFz$zVEcBL#r6oyzteju#uN?BZ~DgPH_p=(G$76Akq zr*}7nAjmj}TLOa>F@KIUBxpTIMH6+JEjL#KsKZMfGG~-;)DJx zym^GUjQ>-|@P0UpgKlBAJvyAiUdL5DVkqhX9U{u-GB*lwONZF#DdRl#4K3Qqy`y(8 z+IH)^&uK4o_`_G`g5F=U zd=U}sv+sNq{la%V#zD8%|5d**kr%l1!l3`kC(Po;R>>8lPqN2q(~eU`v5kLSGrIYX zb;UTrZT{VA_=LM+FJPZ=`}?1u7171S1hP z0#Y6UNm)NW9sxYo{G*>o^M6 zKCV+?`EBhjxNd`^7?4;5FUVIL8y|x`F^*nQ_bevFDvm|!h8>v$mCEx5i#smD(cyC! z{UU$^Gh6IYov-sUD9sIuE`kC;w~e8&x|x&+8Itl6G67i}Up*eKZWdPU%a*U-_@epV z2b0YHviim_OM&x<>A=O|#x`jzsUy^7*I)SDtKNCgOyTSMHblgV#;+ zl=*~oz!Tvi(nJPKK$=gqA7$|{l#r!K(X$4bzk!7xQga?ff&`=%ju4{H>ZGb+fWDDU zs231JCuP1Lm(%7A4>$vY8R%vd5%3yvat&1Kz>*zk4<4HV!S++QUMII#=A!BwwMS;M`3#@s;8!JF(&bOh zEOK!kBhuPbG0Wye_wU+!^))8*Z(|acWI9H8||WB8=+nHG)4sQJs^ofPvb1Ib>@$Q1jOb4k`b8eX1ezZ;5-KJ-ogsXH!w;nIlKEXO65|RX*frPXTL&u|~am zz%igJ>Vq`4(3O=uw%k|J6?HX@tul9=)D?NoM|*kBSLTXJYA?_E)Lx$RaXpK5>jHE% zm+mif9&vvox4#5gPUrR?$-jH~Zu|kEIMJT!4<*9G;ESiVl8Q&uhR>%3S9rVw5@yD4 zM9Ivjz0o-Q6M8rr8Br7~^cpCPjauMHMij_Y@kS8WI_j%9LTiCD!$pNaMQ~JCfpgG| z1o0ea>w$ysJi7kLL{;^_m~Kc(@qcveH|w;o4orTrYVVw%KCxu+8u8JNwOW|*NaM!e z-&IKGH;_UY$d*q4zp*cl>N2YVFQ}d1r7%mt6+=aqVQ_felxsv;Nh%S_B@pMhPjM1* z7Uei_M(bW;0Pa)rZ(Q+oxobDS(E96^rs@RoSO3{G^-QAX+3MTn_zn$ zFK&#{xSbeigUt&u$7f%e2RpTcVm@qj~rJ`QPbdMnDTX7JzB`RMUE zlRpRVN8htP%D>O;SRc_YB5tHhx~&p6}1?(eFVa?MWWoUYYw)X#2&Gx4i!(Wp%K99@m7G z_n*`%<#B;x#eDzM@;R0D{QSGH=9cmEe@)M$%>518V}9UlWSoon5w6^+V?)8aAc!-M z%8kKtKunlDkb%8UU{g~FMnYbWtHVOcwlxD5sxU58o@m5=FcASe6FlDtJ_8dBiwt+z zI!vGN)s8#&i~?K2#X15q;rWmY!~7QV`Dil+9YXN=umlF4PbNlMJ;CQA_y9d$5Izuu zt&#!x!=8^R4CwhlRzO4+EgR?W8wGBHOQ$FsMb~fh7?$_%rMyKh%X=mCVin69Bf@&O zishZ4)iUo$lJWv_acLPM??nO#G;t(H;kz(5z&_a15d9^vPck5>`T*$t05S=TM;L%e z!ttOKQlHK38`%nB$e%aXDr>8AwNr%ATWuB!rUN43jOHjVy&4#^8$2us03rb4MNA#I zhYsV6#){1oRo3an639XII9gNsB8>$ZdqKLAG6RK;aubSrxORy8D!^4$_!tR_)Z?OX0CWE_*GHbCU8dd34vTG7oZ8hBbUwXj|6R0mP?8* zmuJt55V^$t5V-`PPd14{AX64RdL5?hzauuJ{#_wA0*Zg1+|0#gc|C2(jkh&)CQTW> zzA9$jbO-i|M_wjODyyV z_~r2IZwasgvKp%`9R0;>NPppgphQmcVoJS`HhGkul_5Q{Cc-O91WXpv)7@~%;!Mu! zP_B2mGjj3$wN)t#rw+*JUWz^^PUs9_+^n6tcTw~P))N9UipvMkM>Fq<^E&krT7sxN z`}VKs<5TT2<2TSpj6EE(|8{3Opo~{^rbfK?MKgmMD__C@Eu60RCAsFP))<0roUEN$ zzC`v#VjM4nbe_k{rBvy@C}4uw$84h9W`(Mx+NJN(iuoUftQ}COdR6lLIHftqLJYEr&hQEx!(l*#D6OI zT@~Xd-iKUt3JaqMjs+z^5f?`Z&;XU5Au^2oQh@&(@CA7=fhL9r(~6j-wZkz7k@23T z6BCdR3OGhi_M{X&V+46`9rS8wHG)PUxX?us*jwU;U?tO86Wnch1EY9~=p|x(tDCix z+A(dQM`Y|;?A`ySSbpkjb>W2?QU9fy@uWQK7+>LvvBr7Js{Yh*@P+~3zPzd zsd#*QNWZe;sb85LPHR~n7YRd@!lpaf2or$xM6VOu9zwREJt=@t6`C;AiZ9sWb^hQ;BM@kCzwy{05`LdMeMh7;0j zhXJg3vr-|YSQwY?9tue*fZz;Fdbn!kSqc6nNN$$6NpxBJV9VdaZW`$+zHQ&^yc2tW zGxYvHHNUuj?(79yqlYYg?*lRXGZCRKyx5kWJ7V;^;wvro=%MDO7oM7U$MRXCW#piCY5<}0ho;{_2p(#05vxj0aU63LR&}?g*i%DL-az!jBvvl z3J5ofWW~Y2Dbpp{)czI8%z>aRp*OiIBPuJQ;-cVJTKT*-qz<(iBU3X83;=5z^@bI1 z5ikV%m9R)lDxJMZESz;k$pS&)@LO6%m@$q8gv}t3fi-R2SKFp;&bK<#hBtoYxN+=^ zrD+594k&oF^}$_nVN*{me0WDo>n*R=6=Q9D-j|h*9t>3oeEzj$D9FLVa+6@sg=*3czxfhJIo`-&0df?rDayPqdsk~^^qONQ%)W^wRGW6 z4w?oG>$7jmw$okAN%!3K#LP(x*NL~a*b`pSJL{%iOQvpodee+KcR|O5(g3?{9?s-l zDeI5Vi=eFZMaGkEMY7w$r#DCBDpFElxd zqY=jkwGqoIsAOF84^|meP5BPNJx+B%Pm`?DfS~i*32~b4@-pLMF2GBu3PROpd76fNC_Lq1hfnFf5MEcb@py0Iw+Ruz*XYWb7 z{ozN(jjg`F+88!w)$%*Gq!=CZCXCxE_3HGC!ZBe?^`_|)2i4>Xs?J;PZVU~i9z%fa&eTlrrG15M?^sxSic@`-zHb87?>l3 zj*cL+mSDfZbhDu2m(CT=qgd1^{~i!uwO_bI@x}z=CbWj3ENf`AG6`-UDY;CH3fPl9 zs=maBN)9PdGJXK<3Mu(#wtW4IZ+`m5u><$t=jyr>DE_^}o!ZCkDet!Y_RgtueK(s1 ztl77v;aB-a_lAY3vyRc3Ma&pp@b>zjZn|}5-wM(vZM9(%@%J$I^5p>#^`8o^0K;ps6}-cH`aKpLQh}nn1z05YG9vNvf zBt?_GmDpi#ar(kl@IWL`aWa zAK5bd&J^fu;VYgUt?u$5%;4gm2bAqz@(?NOo4#G^tHueVjx~TiF%M^kR8gqQIJHcA zu2HwuXNx5rwK*|!U9fJk+yy0`5=$ux$&fhKKeF6qDM-${)e%@wVMNynRs+U+2))%5 zPRUH5Dk1SZF%p!9kglutm62v6nfZwbYU!jd0UdV+knd42e^VjvRDd-I@NP_mqyu3@ zTWb=1G_@wv4{Db}?R>ZzavW~6L`LbdXF`+6sN|H;p%5Un#sDD81i=LI%cjtHB+z(Z zS0)_8cjpDw*$u?3AMZ33c03)H6ht-ndv{X*hIJ`}RxlX~>g{0d7=isbRjHO78U$97 z;5Ukn#Kb03B7F?`_4N9i@Nq+ovTmr?p}?zc1up3-WCBI7SoK0WJ>BHpHWT%!vgH?I z=9y1k8gR$cH-XLOi5FXsoG#Her>QA%1-mu>OP92dP(9Qv_O*{`D9(OE+i~Wtci+KY zSo^v5DcXa)eh)XiulXNeCo=nK z$5O;+(Y>`xfBDT9!t;u_=BGJbSB=o#(Khb|?b{^n+b=)oHRTYV^Ay&Ucw#G{JP)d6 zpV-8UU{-xULLVa_h`QBryVR3LxH5OyOCn|e%CU>d`5FX9_N0AjzB>GQg z4JRljlFt%x6c~V%28QgfD--ARya!Jr`kz4kCvP3OX?^Fj$;_di2XhWvk^jakAN3z^ zbryTxjvVN}SLH>Id(H>1j-JcZ!r<03HpO5~)81a@;H{=VZ8gvQXa}|$P9c12PLoo*Jq9zzX;xEHcR#X=4@T1hth4OmmK~_*_Ym-jL-H zLx<|x4_>={IlLaMKfA-s7{Y^~v{@!KI+_~Vz z537gVHL$GV-X(Xh-@W6m`+Mdz-0(8_tNS93vC}vK^@txO{RY;tma&fM#0?R^IwDEI zlTb>e!_io*LEF!eM=&M;WzS}XjQ?9b2^htAjAA(1U<`Sr<1(Cu@jPraP&f$^52Fj! z>s+L-2EZRd;X?Ab3jC2y$PDv>d-=OK$d5PnOI|Q#NLIIs>yr|iMZ8wm*~GeVMmx1~ zKKyNqR+~}+#uZ^AYZ()nPd@iN8b^4KkXDP7;$(bcD@z(w7+;iy>ma3#fYRy|YuLx}O%lF|wBj4&cDmqhcfrx_!)wU?(Hh}QViF zf%idf>~d0rK?sC+n8cnu7d8=ZIt6dTU~+xOyt=}@>i!coaVNeid-&+A@BPWkTx zT~5%>1U#-C&`XN@``g? z^SDbK6Ju~4c|+#a9IFDL0I`s}1iYZQ{=TAER#J^%jMc#kza=!oNwc74Z{he-X;rmR(_0axK zH*TTpjEhLJypQ`ZjzUZ|aV(nmwkhWIxGv>0)p#V(-ZakgcA&jsi}7=Q9_)ptRC8UR zJ+8L}+8eV&+HdV>Z=4d+errd2lP#<`c>jiw_HUcd1n=L_(cbu0SO*SdTS)uOmH-aK zV%QdF4>|PW@uL3b3YHJXe@p-mLUQ79qkhx(kP~8`V+hBg%WHI)JNSItjWTvjw!jqg zvEcJ|~(W(8o;Qe=owzrsr_um=P{>6~~KM~S?RY?Dz2((B4Mp!EJ z`{#n8rc8`R|2yf4>8$>Da>UIl%?_3V^#`%m-4tuZ_l$eNHyimn^vlr3^NDaT^c$D~ z)E++ZxvXEZ{nU=3y>~go7W}DpS*uVNc(yoKiPg; zNc%f^{ABxWf%YUH9zSZ2@ge!}_`M~ci{!-PN54no=fh8o-xqTHaPBcT((j9b^n2J> z;sX6KRnzYYT8GTaU6ogFKTw%-)%F7)3~i5bmG{T`9vlzcAL~2c-y%ZB1J8r`r?;P| zob9+j%|H1(Vxn2UzqZ@lh*(jeeTaUTs*PU;@6Y{)KJA6Pkmduu=|%m8ys$Ci`Xa~) zH9&BEoV;#4$=CNnpXykjWc#Tmx&JX%hxJLepK5$1(B6EO9;ITdH?D9{SRY(eTDV!TJG<_%XicLFEe(B^^UML7G>aN8~67x zyNq6rK^wTou2mFr3 zq5lqa7P6t=i8321cv$2r=} z4kg@(lC~BWq#<6hL6Bimkf8ohEm_N_wbX6yb=dIRcZ6MgW+&fg1@2?VeJsKIpbP=u zhf6fI8RdOY@`wf`O4evx@!;UYVR;+I8IFmrCu1jGUWHrXytY&O2F*UlGo^D4R<+X; z>35P(WS~2lEi>*N@nYDbC-8fzzl;0iD~$13+_Q!Il_oJ?ZKlw>z>RS((5Z?tXIxg! zSy!WTS(RybtoFrU{zT8ADv*s~Io~4!ekYa=vgC9DF(EZ-_aInJJ(7~i?j#^_`>3OJ zd-8*Virp`|YOC(%dqZ9ZtaFf8WbocL@TKuXqN*%q<`BnIh_uRja%T+zseM_wH2Ed# z&r;v99mo@LN3r zd5UWf#l5A$StNj5QVb^%pSHn^&m64!twn@Vj54ui+!{2t@CYeh%AspjK@lti#;D3% zX2?cW<}C4UmdMWj#YQnCOFQ29OW`zpxG!BirQMRgFYTgcG}7OJbzwNi_4P(bpA7vS z7t;KIBy*y&C@8To67rAQ@JEre2sd`%k48qtQ0y8^>;_6hG)DmfVT}kpN0KlF9>ym4 ziQFTyk=Qp|JDe*jl76{L49(GAcib+9WNWX{#|bSUCJ{*)c*?uA2h;ZfbfTR~Ye~~q zi&{MEaq+3T$#9Nk0(=`~7D4m%A51@q70DdW7v&EY5VWR;9-o8XDS@`tb(+A()sY8X~V{4_?<3JF9Dj+RQ(KEdw*cInVG?$*04`%9F#+wb^63k^j+-w_Pget>?xvs(b0_3whqm z&K@_2a!_o5NLws;3ttyps@`I}Ep{?JLoVLtI+^gb25)Pe-W$+h0P+XM;U^Ugpe)Kn zm(Lyrhft-ryck#uXE(4lRC+<>>< zE>ynP4G%5~)_E-)w$kATfOV5MC5PZx21Kv=AYq;|GDVORmcOo`z!q=_^p)wmUj=@v zX=clvOMcXE=DM5b-QCyNXY0jRhTq;}Oy8V42F&fJPT(*5&Rjos{@v^5_MbC&-oV@X zs&=}%jIPeRdu_0>VN#5p%D?tWpL-MI3b+Rj&Ht(DG zvTj2M14~>vtVXwGoLD_V`)$i2H9JMzbA#s7>dB}O*o_v8PYuWL`>Da-H?g|X?=$rs z$)+%>cwR+l@TjO? zVy!bM3i4X;*;uvx;>#oye2sN>Gtgw%|NlKaqkd$zqRz|KVK>aT-Rk0#(1?_X;3f*iOLo!Bs zGCLp^Pp|V}RW15Fj=h3ZB-jq$pVPv=Kg?AWp%Ea0m&ItL6VyNuTFxTy37bx4#NbFt zS)EHbT1#-nTfJq<1aHX_5os88?PosX@yYL3wKVw)Q&Av zsmD00rsG%%GL>Rww)A&XJ$X+wib#`)y7S5oHndh#oPy9}7K8;Z6e?rv!o{wx6kG%^ z7gcHZW>L1LD)mNt}S3$mgeQYh99TJ#)gk=IB zH|mGR(LxI^uDSk$s^Z=Cb63opeBHIrty{Ww<*0tu69@O4F=lDkUW2afGN5c|jUl@2 zrlOnr&b@cx_#0}|i)Zy)^5|W6_U?DXppx;4Ig`Y_T?b^xcdN?p-t#)ShOAes)C=gh zt{*Pa@GK|>I1EU`v6Lk1`Vn#38=@c4x_%_mQepre2_Ph&)dlJ#bTg0^V|8KXq3R#i z>jKO~7ISg4YU@RqJD9Su=(uSol05C^^;I|4J`K&7RRPV|GWJk@q!{D#oea|HHD~35|X%zx))dlWYBWg$q zT6l!|C zb7GYtL*2H1`-o8`w`q@x6@$8t*;lK5%zZ=}jj;)Hz@_YxoLe5`t}|fIjL@zE`w(V| ziqbZS{~@N~DlKiZTKFPDzYLFcqE-rEjsZ+;fZG#canJ;VqY@=cQA0{~(sB!Al_ip^ z{_v}fUr`(iU!jeQ+8CZ!k*{gBIb@|RtirSeL(MyK0d)G{!jydS7LS)HV+2(Y!8Eed7$ zg`qSALhR?frc89yh7AZ8!&7O~!9{x#4Rl^{kovUcd^oSrCalmASfMj1Zj*?O#^h`T zkQm!aIKSHI6%d)$q|8KIOy$=!dIj%m1fq__RTqYm(1}T@#Ih6kk2jxex%qhGDAbSI z!dNcdnD$u}eFTD7D5_2W7||GqG=I$SNGc>s|08oX!xEP?zc#^qB>7mz@w8Wa=AHIT zZ0kRua%cbB>XVAa;uP(XY;k9zwmxOjF!fZ%`h-W8q^#Pr>K|>-73Z$XC|Y#S8GKq< zpTC{fw+i?JNLQ?i8+cE@j?b```En`dm5JCTZ`GoVD?xu;)c}p18}YH#?Gt$b z3NZlPFaXJfdr83npl(XI)eTwO=oL~<=>{o3FT!o^1w!;y%PdraO9oYC zOqHl+D@3n1fBByFhW3Y&IrzG%Q)VY2GwJYw ze`@Vir20T(-7lk8RaD~p)(Ov_Qdma1`MXnY~l-mP(tlJZs<3drm~rs0EG|0 z?nyX7ZxUe1C?-$qatdg+Jn77zkyeR~AD#cO#q--J+Lp?SJx1W$uqp%JMoEu(c$+6FvNEwq_rN75 zh*^o#Ey>jyW{rubgHcf)M3PO!ZXkLS5KQ;3xR6AIZc&uc35-sJ%V)Gfv7ks)Ado>* z!oYPMq--SUk3;VwQ0_q*&Td>yG_t&qyc6`ao@$<;4H)bsU+3lIr)1G^vG1fLabB%xOvRCFmvf{-*KJdWa zF&nOLeh&8BZp7&6+?oQ3fj5v*$S%xE7o(5~wJllXyFgNkh$j+xg(L-L=%mvi`tdrz zADCL|OLEXGP7;JtVWP1%t5dn#2&PqQMp!{x3~zw6Sb8&%o$s|^hxf)1PXx^|X8B1b zj5cb8MNn-Ls84y%3IMQqW~mmJL?(a?59UmjFk_LECQQuk;diZGKKHJlJ~3+O$noZ} zVGlj<@aCI8TQsYzSFau@7Z#l>EG@=!>9Oy%J^zwE^fXPy(Jd2bGxglQScTcQV-muv0F-#Stk` z5#A1A07eRbkv9#SygAKP;BG#V0l!P&5*|)&sr`m9hdY5XDPUCsKLMXc zr8ke0uM~< z*f`w`&vunTrmid(mG3pcq8~kZ+9N$C-!|;tne!%RjT%`#pkmD8nhmx0iqCv69BoD( z+VRPU%|=zbBX4fE((HmsgT~L#o}N`)kXM%3ef*GFi^J5nQTMLUUo7_3`rlP^=W8+# zs8&5|+5&yHU>#hbXWE8Cm1*V@H@hJV4XT-TlY(qphTn&KTmSC}?Z&b4@ub))X`8RK4H#Nyy( zqw^==U~MTT@AOJtZPs`t3D@IG$*utCvn`A-u!1CD6#~IH z&|SRAQ&o1w8&1a%dW#-OM^#izhAR~teb0(Go&#z{hKo!rOWng?J=XA#2QR(a{h86L zo*y-I+Pe);wAY_g$CN%b?zy|wsArYS>o#cqr?s6uhTgU^f5$zWh3UMADIc(ud`iF( zn?M@k%ry*GtFU|LD9fLr_{xpyVSg*WzY%e-O4A8kU-}1l9nlJ&U;5rq!QbD4?}w1D z$1v)&{QhnI`$7EuXxtzCE%<))ujKcY@_Y4wzZG+B8Ek|hrdOaTc_dF>|5LHx@xhJI zk;d$J7uGvt2l9+;0VIks@(jj4kY`>C(En}52v>Y2&zWo_Z9&-}Pyi-jrdkO^NsKj) zpgiL$%AFZV6k%G3D3_D5lk6k{nvUe^5X;t|YdAJZ)jp_Pb8Y3;zQ6usllHmyx#wG^ zO`H1ck75%Z969%?>0)t<==sFnZe7H-oUF~sIojW~uke4xU*C9f>B^1%t>c&8{Wa;$ zroZx^vWX@NZ%c9cpPm~e`L z`Dmm%jIC6MkxWOn%i#r$oN(lElsVjM}>tAKW%i-&}jw#J0xct$b@*$Mk%J%ucFBxre)yOfr;W+WA&K{_W- zdgJqGyXjs`UM=#=es<*LpYSy6R^&-9@^o|3xs6z9^OC+j^jYo8FY%YrMKFYr!3IKx zZ{fN1I&I$``s9^Yu46OE=tOOvFr4o!^omxku4v-;chf6nH>4z|<6|1V;t#aucgw@a z0($k~s}9S_lUC`&W#W;~uSBIE@B~-F5$VH?=pE`TKX0t7y z8OpDIeetwSgO`l$H?_24W!cP))%R8po6xVRn_J?g}Yt@Bc{ zladEiJiZ_!Jw3jkn7MUcdL~`iGCw0dIjKL!8FN`_G{zy3!i^Inh4~^Sn_oHL|&%c?A;ldrE!+B7?h;JzubyCQB|i6656Vjb2aVgN^#8ZU%B!&ad?Ap zt`#Yje_5-2xk39|`3Km0;94`r8Q;b%w!*I_*JNG_uuR$c50qi;5al8!T+kA7X^x@6 zAFX~0!*Szu@%|QVgLbgt2j3^V9P65XAN6y8l%ZigHW*PY7B*-Z2=b{)1D0p%mV_1D=0FJ)q%?_hZ`Ei%hlpl?b>SXQ_u=kYRA?0 z)xY>t{b}k4{&v-&MnJ@nG5#|SH4a6e6|CGD#-SHqpnvq;cI>@cSR+2U4wIFzu9 z1e83U(o#R0&^o!) z)4fVtGm*&5d?7H`T?r=dInZ@M~LbGl}uK|a0G^`3kkEi0&{0W-)Nn~>eL zyjNh7U$H0JQnebxT2?a=PgMu7+!VrEh!1&&+&zO_T(?>QaHS7{G{agFA_ih zYr&82AKJ63=b*8PA8KhI=k9r6a4+pZ?2_fiYX%OO@y63}j+H4>SKe{QYmKpyD^q6O zb4T691Ftm2tdCuMkMWv|2VUA2Lv}01(zwT*2D=T8ark70tMwe4qwAiK>m%v9Vxabx zLK=IezcO6hqxkyJ-q^qF2k1d-d`{nfU69@QLsS7NAA_L{-Wmr*l)s}H*B5*Goc8vI zh1cInI^ykzw*%-Gh61QD;@?-AV6m3}m)hg)-v=9da%MUg>g?;nLhtQ208@By4H^3` zguXok$ff5QiW$u`R{yD@5gQ2`4B+L0tKz@ZJ9F{5rgIDXm5m$NEvM(dr-b6S#_Ed) zO;dVaH=$xU#g|pqvEEY0#KeC`!~XM?X24bS$vf~rQKN0`KcyAP=;`D1^gRmo^z{4R zS&`sw*O#Qe{Q@fvZ|px{S<)3NJ+nix{@axbq&DKe)tW*vtV!Gd@9K*=`rA*TC$ZrC zTxmIG`W$;y`2T6{%fq88()DXO-JOk)jS#{X!cHLR?kt@^2xRFb1cVHP5D^0jSuq<~ z*caK6T~I`1kU>O@0TYO*A%sN*71>lkP|$Hf@p>JG>o5$)^nL4`>Oig={srsr4=U{rH-`5-GKZM~F0vpE4Mw1D!C7g!+%4cF7&qA_z9T%x_gq2xM!KQenMD721YFgg&p*KY^4~D>xxjEwXvg?$|@`R zz=zDyIdcRo#)l4BVshsK7L8k@kA^%SZ@e|a9^eph^Yjrc8P(CqL(IbqqZU>%7$7+G zvx?=m0ciC4V9cnGHfGcV!+4=R24Dy?EI{QO9}(v8#!xMQmu?TQhFCl@29IP|4|R;S zdE&(w-WV02=3uC`evDVcGzff-wQ;HzH{DvFE?&r4;SH(y0Ex$wQ@t8yxQ8^9!dvRq zP(?!yEm*X4rQmIr#_GH$m#-GNn&s6vTjO?iSpA&vhP8km09&3zz4~<(Yoi;crHf`Q z3By=ZQ!%cQUsR#ap!O5p%-ERv3EuUoG4&ZfZ}jLhARx&uo*0C0z=rrNe5`l%J~;e| z65J096Yp?ubn4Kp>w+OGju7|8z)mOaTS#l$gf)+teD_7i&l?>zC&k_BQ6=g&5oiVb zt8*eDG}1XYqTd*auaZclEt*Q-@W^oVh$8Vx8~Fe;+&iPZy!?3EMf{f2u;Wj!TD)lW zs>O>}EnbDcfz-3@4)vT%z1nV5uP^ILD?$ekGnZy(q*?k-PEH8zGbn7>=hVCHFVuTm zNSDlo#n};e-YIRnK+UDGvv}4;}=_+b2Kk?g}n_t+z<>?(eo__DW zcYl4O)Yw*D{*Q8%{Cbh4B~Gv;xhNfyqW|z{K}g@U+~A<#?!O+aGg~JaiVmg^4T~Hdl~j>7EX*2j8NVoN)%NIC*Ac0s;zo|b`UUhwG0LRc zsklSe)t-4HW=}EMjoq2l)$NUn7BoS*w9y3B%0`~d=847C7%XXUMaR(vYfBk-QFr5` zx=;No!p!9eO8eV-b)>YjslRU>&i?bEcYI!VkexnL`YMgRv$K2uI;Jm7kwu?M7df2lUqBL0bX@v|HadiDZW;iD5@h=G*a4nub=BU== z?PA|W8K3E>(Br3xH99hWlEbdWx21}*)8i*&J?jJhEqZ(wSt0LVtcWo{CqF~jQ|i3l zH00~P(F3D?3(0+vW19EdUmY;Wc9w;(Jrme6{IBvPc==!NBa}{2t}2me7dxVb7sCrC zd{&q`h=DPa8^(Vbsu{_w$KP$xVq{b=N7SE!TsnI zx6Q@_6*GNy$F%L(vCD8KsBdtW#aX#+AIu}zI9fT&he7^bNq5!07;lOW!r~blLSh!q zfYimu7E;9^p)DLoMVXkfZ?^A?ej9Ac*+AQgNI%=@NPJW6Xd6b)JCR2>kG+fDsz4Cjo1P#P09d-1r(aV!~Kzqcbs(M0Vg9&5pCNc6z zOk!y_Oghy~qOe+CjH>(N1M?vF74s1=f5Gqr=E+3yM%mB~V41FSPN83Cd@zM~GMZ@k z(@VYM;(a|j21JCKZTB)qHcdOAd@y-=k4!&vXHPE|w=P|Rt#Q#^U)bJlDVDZ4W#(bo zcsM*ztm%;Qoul|jdENCp`JT>qAwkyqy>gYzFfN7-Y=E{JKv-$}dJ;ELsa?XboF2oZ z2Ne(OuPrizhRhb;1B&0fUw@;iZ=_A+1eM(Sz3b@bf)99Qh8bgWvNz44S3|QyUJcn~ zSFUy)xpi>lv$36HN=t^m6A+di*CnK8kcyqDTy@xhZBj=9#i*&b+SO38I|G|yH0Kae zJp9x#JsOU^7J=*gdnQ^lpNftjpZLVa-*aGGT=BU7@QrOV+v5XP=DEA^I`SNhl``0v zsIjZoF!l;-^f8cCBJ0?DrpIMD1xgykCP4=c0Wf?MC#kEe=pQNyst);}&F=`C4mr{J zKMLihe?n$fMyhAJi#;iHz@Xok4Xqz*jE#x6d-uhk=jF!U+Kg>)%+^ZX7WJc77sqR<2gCaZ3g0_86x*&C zO|7>~Z$EONIB& zawysduoZ3SI@}k zbeG|=@hRQ|r@8kZ&|S*eUDV+j$XO@oM4BpRfvCg4An`T{6o-!aW3w*oLW^N}H|rr2 z^MUYnKtNP2bjAO2V`nud>LjmIZ@}{Z6giCdw5$5oyD{~HMkmI0?Q03nkAJ2AC{^OR zq_>v?qvbjzu1}o!9TJ(PNdx*j8EvUJ%?mGCeCKF8LSmR37K^GWF}CU!Qw3soC`<~7 zxnpdjkM;8ECg|Z2e|KBoArYR#HYEhi#Jc?Nd~wdCPumCOC4T?E@PYZw)lh;P z==+$6pW{){Oko^WtkHH;W}=L`3OjUnF%FAe(}fMGx*@Z+NsA{&rsNKR*#ASdo9!e_ zOB9@9gUt=Z#($=EcIfCsKQKg((lo~NVV z{_cY_Z7(<6I=z0|M%rcHQ(LyS!Lk?q1jsaD^Rb_dyVwU;5#w|m=R}E7SB8TyJk;I` zM{fbEZ`8`%dFP}y#){*o#pzBsbVM9@G51a&qTO*QHRdl&7&JACU(7q0+D%D7bulGx z5*3a$JgP@lIu&+E?x=K(K*Qh@FH{+}pI%zv5$oG+(px;74*Ycw8!_}=O!pMc zj@5AqeM+31hmsvBN8H6R&X{}i5`u`5g&>L@(1aPXFJ!$T5T|aT_0T3bu`BZ-qell{ z^&N`2PNyNUslPfV+sV(9DyB}oOd;LrfoJDNPMVnZ+>G(_-YZ-|Nh8LW=Z)F6B4hp1;~QOIQV5xx)3$}rQz|j`j(NO(P(ReU7;(qGAZRWE1cTW7 z1Plgao5+sAM)A&aZhgWrWmi8y7@su|*j?4T`!w_r23bDd2Rr#|2ZzBN+W7_AZl}Wj zvgy;lR@K4c)!83U+}*fy{j#2GU%pm7J$-v_`a9npdiTRa3pOnHdC$kM&$C3nxMta^ zjR)3EDTzv$wdugt9an=~JHN7U#hJ=+7-u`(wvT@a`4F~|tF@i@F!muAEWmd3pDkGM z(-tg1YB05;O3e#*-q555d(Xk3R4iCfj$^5Uf`N5)se-U6^>D>6mMV0>UUOJlGhm;fGj=FG)z7su`%(>9i#OAQ>^-DPS_ z*ZKTZYto9g^|WdQ9XscnVzzdqsGl3CpUcYQSjQ&TE{GWjm=TJ-7{wfg3)U`(Z&z$? zhAByZY`Z8oEE_)mXPd|fc$8}wl>cSz0z>bp9;RR}I9x!kT~He}ZEh9ch_D_MeGl4Gi+|XH z{buRO=Xd>0X?w-c>)EyUp;YKklUSr{#Tr>7>H39e$4n@%3y^1FTk$v%&6n7CJy49M z6D*&D(!tU~2)e3!5N(gk4P9aT3gZfKBC0PeUWIW*S7GGMgh_mF?}M&h2KAeuA51Ku zioOO_6+7b<94-EoAJoF#`JYB_UzN! zWoqNJbuT{s_vemgxg{>XKjikuhc{e3^!Ph-iwpAWi`wq?v94aTckbMhcV7RL7M(m^ z_iOcM7m_*o<_PWmTzU1YZC6A+s(BM@vUwdk1lR+hi&npCyx4O?#!tdRK>dEPCxaSq zqFJ=}gZKyO@J;h^Ki(g3UAFgGQ#*HR$JoD-o+1@O&KUR3b<$Slx6fU#y5ypqUEs7o zJm<3hw|#`T&TUoNy18D(2y7>LO(lH4a+aJBUIiU7CY%om;ho8!4IyNNQbbaXS!ADK z3U*LwCVytBu(L~bOjBl%E4a3p{^Z!f784sYk`Q**u^Vx7l_DAj>H#OH7hF2r3b+Gs z)8KN|`;Cqr@Z)~6SWrHL>@=Px<;qOQTIBx-|0=EQVd+vt{;U)^Zh`KDL)ozI{2QcSPCqd2BWu|KQj7J1S>l=~dl3h_mT!Qk z)(P@74Q@8_;-}O)E*XZC(BbjDcye7FQ-cQT33aI~uBF3SEP zXMD=>l&A|)5AB^=527xlLtUjh>p|2(dnfXO@N7{R?VVZ|s56usQOjMF{X@=(u&4`B z5AB^+56=2P`K(vVTB`?97ww%W$Ax6LsEhVa)P<-sm5O`|?1w4xuFAr{psI|b&PD!3 z-K+8nUjHvDfBUlV$UGFJ7i9W`DdTaCAnf9Rml1C2VK z*TX_Dp&P1x{u2tFeHMBXCUjTm4`?lDh^oh^zkinseHS_>WK6AJsrN$ng#NduEWE81 zGOED#P0Q11v>CUtGFOz}Ovid57eWt&EDAYRWl81({5=i+)HZ=mAq%0W8{s}tQt4LE z&*>eSr0itC;dHq5tk%&)$Zw%=HwkHd0~FtptynzYTBj^wy7LL% zUl~d%NfXyGrl+=@N*3Bo+^5Rib?6n^A*`_%X^dC(@+=vnJdHSU|6asrA&fNfp2<~= zj;^SOjfN{)8Y-61WpN#G*h47{@2X~FCMk8cM}|z&q?Unbr%*4dE`WET1E%hd7LyI- zfqRs>pj(iqEsj<-|3cT7q1|wn;XQ}i#u+2=Zc4z)5ZtTYFP`h~Xi>{hmaSfXqFoT> zC(?A5-*~)_x|92+JtV`l4}LVT z6KU^)9JN3mM80Q`DaLP5PK$BRd6erg#~x!7!tbFCOLZJjK5;y4Lfd34!u15lTYL-h zBjilfwQNgJKh1mv`UsM`&Lvx2T%dEekUnHZ;2C{1s^U7^BLtdAVVWxY?<67idx`)b z85eRYWX0eD9=ZcF+|i<>pE#khy!c*6jjA7_T^4#JsI1F}sgQdidqPjt_V^(x^hL<5vtES02$@Cwbm3l( z`-+ca8$SWrM*F17_$tT=-nYiRq`-IbHpa9)aUmh|P3BbLiV!@NS+j-p}Hj1@t?1 zp3H|^$R|5?@FsER__cqx_@y#Q?g;)~Fg6qt$IBsIwq%PQ@ilC3Z z1#Sx5D!9FH2jG^$t!H=CzWWf-kH_8^Hk6ME{fiOC7;*-A*=5=e`RYQ(8`{WR@t#Hd zx!7ogoGu{~jO)qcMuPX`Ui35YPDda8uEB%6Bl`PF9^`i)*~WcHe}t>lIQ1I=*J>gA zSj%JZz_-eJ&6zqox(X-C2IZI`oLWw69aq`E;gmYZRnZjb)D-jH$S&;-4onfJX}1oJq~!>?J%RmWlzO( ztmi?`n;qA6{MjqXYqz)JUFrRmPoU2tpX0s*d?)+X`+nsY=$GoZ+V7;_7oAwAf=(a$ z`}i;N|DkhbKzhLKF40|f26_aJ4E(n1l&*E%x^-LH?ZfWY?%TWH>k-?dw#T)eQ9bj5 z0)nhTpZ1!J{|&*R!F9d+^seiDu1`^)y?saa-QD-yzCZPI>(|)tT>rrSMg0#B@EhKwCDc}T&K${~w}tQm4Qv_7;s^!?CJL%$0B zDfC`geOPnY`(dAkeHHdo*gdmi_A+-fuQP8m?=jb#o6YZ=KehN*h(jqb=awEzj=0&WG*c`DlqBi1i#L0+rk;|i!qsB*NN6mKL)7-Dy-^3F zzKZ%O>Yh!pdD*(z2H1Ak_SqV3$88_kKC^vmyKQTYE{py;`se8TF~%65m>w~MVxnU9 z4mA&r9hy2cW9YP@B}3;7Bg1wLs~h&#uy==D81}`mABO!BOJY4@17iEcnqy;QQ)4q? zr^S}U&WXJ-e9iE!!*>rqFuZB_so@_FzcKvB;dkR$oM&8MT)#MLTwGjQTxMKuTv^<_ zxRr66<95c~AF*!4FC#NY-iTilzcnE?;a;MW=#|(laX?~3;>g4?iCKxe6KfN{Nb*WD zCzT{^PWr;`WzVv2uwS-+W&hFsOLAQDqU1fv@2B)jv8KePq^4x10ZK(e!fp&u1&g`RghJg^S=X{|X8rtV zAkX*}1sHwJGE-B`D2 z(54GdKe^ds^PVj(TS}f`&ph+2@!2_B{kOjRT*Wq@Z9TRP+VJttoddU^HUz`eDv zm|tn!m-VX8t4+0oYOS?#wQ04PwYjx3YAb6O)vl?%``WbEN?x1u+Va;ny|&}EeRZTR zy>3cfQC)T2lXdIrw$<&b+gI0Ecf9VSy3gvqt-D>VIh1aB#rE(txk zx1-;#ZAxw$-;~`nqiI&t(xwef+ne?_9c*f8`mpJ8)7MQuH{CyCJmPbt$B{utqK+gS z8G9uANZFBjM^+x$d}Qa5+9QXLoIG;w$c-aEAGzObZ1!pH(LAU*syU%~Z1d#ig67KR zMa^rPw>Ix>KHPk=`CRk0=9|rTn%j=L9rZsNd^Ggv(4)ym#~;l;I^*c9qbrYYJ-Yko zful`FPaXaE=#8U49=+SbT0C0)5GdKOXlwZatoHeChFn$8VhQIZxsQ5_MY5!a@WayC*ME$)5&}9xZr>MJ5BEfzPs|>1MdxbZ|fAIcZ0^~Q&-tBqIY07z-ucz% zo6f&~;lPEa3#TsL`^4iDk57+Z^2C4ErMycOmlj-Fed(D?yDrsTdh61=mo8koap~rz zJD2WXHeMciIq&l7%XL@C6_+bsSGrvpaHZhN?ko2`OZ#m3XD6=?zPj>i)77?X3D?G4 z+i~sw=c%99eG%}*f-jbTvG0re>piZoyT0xEp6m73o5k2OZy;-kKbb@f=zdW+e=#Ht z`&}-sqH9qge2Odlm2jG$!j`F0`Wb8$mP zac}iMxi{!{cW2`6N~EBrE!L=qs(d*yoCrgH_f!UQQjDj9bR2OCLXH|!sPZOK6+CO@ zk&6-tLZ}GgAd)P36a3F4HAtxv|M}owlz_;Y^J$UuP|>k=`~p`1w14sk84#7uP%8@L zz(`D}cUR0;x}$D8piVo&4#FFC?o0eI$KVeO@Br-S6o^^lZkQwMfwk8`u<#0o9Z?_b z1J)0gIs?c+*szA6PKE$KOsy*`2`3Tg-$lW0JetIip|CBC#R``=GJ=f6I+q00R}!%! zcPS(lrIkiT!(Q$YG8T1^PX2%$t0$n3I}!URPQu=Lk7C{KW3WbjoMe-!us_eijQdNF z#1-Ty*-CyOE6E1fRs0dMvIjGCYsfXSjBKF_HQ-cgBj#b>AvdTA5?V|C1{u5yo6P;> z19F-iK;2J=6z7pMD8={5hvYo@2wx%R$SsuKC*%UTNM478-6l^%jz1-rP$&OE{*yd~ z^R$a$vr~#%C?mU2Lo*>|LNaPlZ?jOlKax3+@3~|?tmGGvx5%Hc;%yOm5*G76k)KHu zb)l}*4I7$xVAIauNE`K}9jO=fCJyMM5A~&fl+sSrAN%|T&@Pyj>q@)92Dk_9NrT8e z@(AKI7p!%5Hs=s=3;LOPfZp`kR4n#p}~g<7Z;3ko8z@-2#D>lrLf8%l@K zSUQ|y%OLVK`G$_9@ic)Z(j;o9$utEE;zr?2)zNeeb`=~8yUYeUj;7N;(D8Hv&A{=R znRF6Xf&NNb$+y^Z`cXQWK1QeDT!w5ql}@8MSgkvq=FxmwKnrOREv7T*6SM@UA(W9L zw47GZnY5DJB;V62vX@rV8aj*4rgP|AI*-n$3vj00BD$D9Nte*2bQxVvJ|lmoE6C^M z3v!)&gey_!Bn*U+_e9bHd1(2aBxeVT5jTj(?NS-O=zN4L@E@h!QJzCd@- zKhmA_MY@ariSDK^(LMBKx|hB}_t95rEq#sF(f#B_dVs!8>uCc$NDt9QY@Bfz+XKBt z-=7eT0)2s{eXT*&(M$PS$dA1rx)l&`Z4{4 zeo8OV%k&EUj9#VJFmC(>y-sh?FX>k}MdEAv4gHpWM{m;a=@0Z4{gM6${fYi3{h9uS z-ll)W81sM8U+CZHUHW%=kN$(+r@zux`WtPd4hG{=#u#S`GcY4FF&E~_+?YG_U>&f; zup{$g-pq&jGC$Ud`LoU}fOTPktSjq=xv3tkCktY|STO6&`mnyNAM4Ksuz_q43t@xV z5Ejb9n3-9am4&ki>;xIbY%CgkI}c^USS)sRi(@0$NEXi$SRzYec9zUiSSlNZP47mt zG3*gGmW^ZS>2yuY$;pDma`RXC0oT- zv!~b^wwA49>)8gjk!@m6v(0P^dxkyBwzB8gHugN*&R$?U*dN(W_9ENG{={~(m)IWm zGTX~uVf)yttd_mT>ezmEfW6M@Spz%B4zWh|20P5&WN)#zSra?Ln%Pm-!j7@y>;yZ> z-eK>u_t+_Rn!V3HU>~wG>?3xTonz2X>47$o_-<#Qu~0%>Ke|v%j)C?7!GA>~HKY`#ZbG{=x3E zUs)^rjkPfcC!BJ|Iaj!W8@Y+Qa98fe-MI(vz&&|K?!~>i5BKGMyc755op}K7!UK6% z-i>$XJ$O$Zgk9`{d2f7K_vQU~e?EW@r}un#b^= zd>D`A!+9JZ!AJ6Vp1>1%61VeYp2Ac4D4xbg^D+DpK9-N;>HH6TJocu@;1hW!pTx8H zqg?E^aEL#~r{J`~H_5yFaneZMAn%c--^8EhoB0<0 z41bny<XRo7x^y!C%&7%#P{%*vG40Ed>?-mi!NT{b$mZRz+cB$ zMFT&`5AjC+20zT-G}V+9o6YfNNs~01V3jmn(nv{TO!1{T(<{r%OgS1g#^+Y%&&oIE zsKgXsURYk1|AZ+=qwa~*iz}zslopia&vBpr!0(orS6-bneR_UbwcB*vYfPG+gQSgl z8c709PPNG{0rMrGT?5QliJM)2+AUxAn(UH|e2p6IT8jB9aZh=`hXl5!jExOb#X~vzOh&(rcp8{#WE+Ow44-c zMK?BccR(`%~pjU_7a z7}Nf~l6C>(7_ERxRHBSQ?v)b!7{_YQmub(BZTE;rS-XI7toD4FR={OB73EdcmE{#h z`P^Ps$n(nzP2*(d%Vp-rX_+rqNr!PoHD!f4l{KX$IW^TC%G-yG<24>CH6F&dgY~Fv z7ch?3c&OCK1nsFRmAFrMP;~B95Bwe(?Go^)ZWl0SXvtKoM9C0US}m${qE@9fT9rQar=Ykv(iUTl(P9!MO%8W0 ztjw8}k0f$kRUFl)mbvhCC@L?1A}6<8yF-08+??!z+~($&l+PBo7^=(5%Bwo$73Wvx zR~1*OA-DLFilQ9V>zY$mUY%c(U!3D%uc#_U>8Q~z_G)>36dEWs%41w}ZhS50{6*(%ifp z_DBsITf?%7p))EnOE2c*i^>fXiVI6~ct%c*Npiu{i;8(7TzXZphe*fCK}UImGwhb5 zXWS#dT@GBpfL0uWf7Rz#qg{7Cszw^r=apRCZYUI)G34c!ROgsvTFN|J;NoJnnkA8# z;R!WMC0drsYS^4&Q@NHOURhLbtP+{A7*xWmktd1EE0CY*aA3nwE(+K~BS^wcbRY8E{;tDc%w=h*5@#cb92wCd?u zbv~_n%2qvPtDbVWo^rUJa=4yyxLy|FI!3sT5w2rM4M$mo>looWMud(Lp<_ho7!f)~ zgpTo`Tq1Og2t6MWI!1(!5v6k#r9Tm+KM|!r5v4z2)48(gyx4SJY&tJCJ!PAovQ1Cf zrl)MvQ;ybCj@I)Vtz$&%7|}XLw2l$2V?^s1(K<%7juE3{#ON3?I!26+5u;STYvY4G%7PAw}Vs>I#%uXze*_j`U*_j`US$hve zL^^fDV$rc;v_5G>l-6gBh|;ljnXtq}X#7Vxsn&muh>DW&GJjFgGA!|;v^P{ll=g;- zh)R^#wSI9#lwF3CHENSQ=%r)PrO~37t3{VfON_*~IjQ8sCi$>QK5UW?o8-eL`LIbo zY?2R~_UNGH}Y6{+#3?M)D9Nd5Dob#7G`uBo8q%@ABIvB3|Y_UgF2g zyvNJD$4mTpnfG{E_VJSMc!?h`@#7_ayu^=}`0)}yUg9UnvQLos^4lpQLE_(>8!N#Z9-{3MB=B=M6Zev-sblK4qZt&fgyUXdImNe+@E z2T78HB*{UNN18SKNVA3?Y1Z%~%@W@t z@huYHBJnLMzQwNb2dZAT*u&N5L6eP>)Na0UwniqYU47$hmAFoF_W4|AJAER57Q3eL zpfWv8;}Mp4n#Lon<`-1WFQ}SdP&L1xYI%dI`2|(;3##T9RLw7_HW; zJi-!R(|Cj>zNYaAOMFe^5tjIx#v?58HH}AD;%gd@uv*?0yQcA=5?|AJgeAVF@d!(N zP2&-k_?pHeEb%psM_A%(8jrBV*EAksiLYtA#ja^Qs9N8k5?|AJgeAVF@d!)&Bw7AR z5T4WO z=I9PJWqJ9P_-Mz4+>#D6Yw&q2M)oSJ^7BN-tY&Mnv9!2M3@26L!@MldHGj@@eBR-1 z?RunIJXW*TDFT%Y+a$wUrw8$pVXf1Huw>Yltdta2<`^sTtMDnQG!BY4$I^PH5XQ`SkY#wDJCcARIL_-RYXv=T0qrYCfl{fI5}BstU;5MvYL_-!>G`l zl4`e6s(@%-wRIETj-wuo;fQdDQOko6-?n#g;U&6 zR;(sqC={jBvE8_}2)h;PQsE-Tu0@ + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 20102011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/font/open_sans/fonts/Italic/OpenSans-Italic.ttf b/font/open_sans/fonts/Italic/OpenSans-Italic.ttf new file mode 100755 index 0000000000000000000000000000000000000000..a3093274266fde880fd1175d5803827b8c914258 GIT binary patch literal 131152 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

      6v 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

      LY(o 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

      !IHJM?bo+dTQl>`91vimyevvCKoRlI+D<` zvuA3W7c9JY!OKssdF?N=7B{ZHbM}PkQ|_KSZpx$uw^z;`59636Iyf7Nzw~B8c7oA? zZF8)q8Z89|7qGo*Yo$RKR?6rzTALV^-U6GGWNq5XhHb@mw=)huWSo`sBdfQ6(quGf zRJN}y)Uba@iFm+KwOH_=2Q2I2zrObO*IUeF&0U06@_s%AkFXDo0|^Hi3*JqDJVaB} z6sN_N{SQa}{?0qYh#ACNngm`0 zZd`bUDtoKLLaOX7w7MZFF%{0(@QQz+DW_{T{xc6=L-?a8@Tip15WWoWa!Nz^o|LCL zgl`1ztfkCrg4$|NO3BHKU`kndL9MY^?T*Bxl+^5;ysiZu{zrYXab}uH4tQN~g3r$) z$I76`D<$n?dl$5fZZVWRkEj-Rlk1D7ZW+9IOus2bC9C~2HkGd`A3naDzq(}Vmj2bZ z(W}!pjE4R-}%J3u(D0ybSH#ODO56##UlxA~dpS0~o&0G$i*;DP>6%QI0=!Ha$Pf7O z+JTBuoEE_n(l(o`4LjJ&*l^r54PD$OZWIsK{^a{)6l>vD|evl;S~1M@Dp%8VVjV+vViBSr=`i+GakPwwlukl6Y!f{OH*cU25yi8uW-EwxsF?wKuZqKAYFVy zMs9J>s2Kz_NAXTqLPlmzE|_Qp61q@{J-v*T99)^yzf}_RC%9Z9>B>-mME<(e zuiKDu37;J|e&{TCVQ=>0)VvXW#@?Njfd1mj-?uMkVVC?7eeRl===$3I)!*`-e`IKn zK0OAFaepSJe37;9(ZM~%L-C7O@V5*cF#VS=I!&vSrmUVj_r1D!^XjCT56!K0C8fA8MBgE&D1dK(1(z5(^Syoo~5u7sZ^~^UAy1?Ko@6GGjC!{`0Ty7 z2uzAq{$^xiEcoy0A}I11J_9ROrm8hKVkWi}b(vmlDL&$F)|(hJZnLH+aEC8ATGblJ z^@U6m9s_Tj2mjT#sM$>KvKCO%o4WO!@*w=I9sg`$>C`Ixvv_f9w$Wc+f%WhS$OmX* zbS4`-l8SgEn^=P-9{$w0NIORnl-mMDRTq3j=t6x)$(Gipg5+#XUbD|dei0ucy7`+6 z=pT40BwK>Lak~-tE2E2=%)LuYSh@VoJzS&*w-g0NSb~$W!cQq`zK33$Rurg&X)?|q zEXN0s{`i~sSb}r(dBJ)3?L13x5z1?NXw@T+!Lu!;kGlNfM<0h?EwwZ+qffic7kJPg zTn|2KAJ#!{rUz=HgOe*^SsPSZ8oa06Y75Pny?{heGr`R4T^hK<8YnLfjJ6$2?vm{q zG#I{-3*?IZ$CZLdJJjdCxg?}fV)a|GQHRaC1mw4JR`|~wmmU|LDFvQs@B!Mf;b+AL zmi#Yn9bNICo<)vEd8k;9jVKL?#|+;aZfExw`>k-L85@#Evy>dB+7jrIQta{rZTEi8Ke9JQL(lb1P}Cw0M=|EW`Et zqOLD(4=UG(MXsaK?RO~G`$Daj)P7F;oyzqWASYUCKcRiGa(yu1E=t$Ov@cMuPlg&D z>H66A!SuRV4zg3Ok7xEpJ%6EceH>FGwXf!n5g#3Wo_uy4iR(?q?XRf}mMnaoAp4=| z;eWPokK7A#&)_@%p-=y@9fQzB{ybld*F`g4;laJ2#+$v`2%adlPMa5C6
      &5%gr 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 Z;MH@j+=%6+Ai2x1fK{Pvmh?J~{|6?3Z`l9< literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/Light/OpenSans-Light.eot b/font/open_sans/fonts/Light/OpenSans-Light.eot new file mode 100755 index 0000000000000000000000000000000000000000..03f14305172edf2bd51a04cb5d44e5c0fa877530 GIT binary patch literal 107642 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 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/Light/OpenSans-Light.svg b/font/open_sans/fonts/Light/OpenSans-Light.svg new file mode 100755 index 0000000000..c3bd1594ca --- /dev/null +++ b/font/open_sans/fonts/Light/OpenSans-Light.svg @@ -0,0 +1,958 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 20102011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/font/open_sans/fonts/Light/OpenSans-Light.ttf b/font/open_sans/fonts/Light/OpenSans-Light.ttf new file mode 100755 index 0000000000000000000000000000000000000000..dddcc62a9c13f7a1ba9c070a0d3c40e5259ee7a1 GIT binary patch literal 107460 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Π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 vvzM%I-q13cYtOI89 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 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.svg b/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.svg new file mode 100755 index 0000000000..e5694a123b --- /dev/null +++ b/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.svg @@ -0,0 +1,958 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 20102011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.ttf b/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.ttf new file mode 100755 index 0000000000000000000000000000000000000000..9338bd99e3696e6cb46ca0058c2cbc245970d2df GIT binary patch literal 132796 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%0ADpNl^M8!sVWL)4FYlZ%V%6cY_bk@p8D2DKE? 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 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.woff b/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.woff new file mode 100755 index 0000000000000000000000000000000000000000..bc83d1db5f0d0af5c2df5b8800d71c15113494c6 GIT binary patch literal 76408 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
      09#Z<_7 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 P5rQi;RN?+VO2Bkw literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/Regular/OpenSans-Regular.eot b/font/open_sans/fonts/Regular/OpenSans-Regular.eot new file mode 100755 index 0000000000000000000000000000000000000000..7ac1753b19820e237c518f7475bb2be3b02b04e4 GIT binary patch literal 106442 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Ξ{_DG3-_|cgmf$4euFwxz4RsH$HnZ_JeXRe$! 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 F9sz@$c?SRh literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/Regular/OpenSans-Regular.svg b/font/open_sans/fonts/Regular/OpenSans-Regular.svg new file mode 100755 index 0000000000..b34ed428a7 --- /dev/null +++ b/font/open_sans/fonts/Regular/OpenSans-Regular.svg @@ -0,0 +1,958 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 20102011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/font/open_sans/fonts/Regular/OpenSans-Regular.ttf b/font/open_sans/fonts/Regular/OpenSans-Regular.ttf new file mode 100755 index 0000000000000000000000000000000000000000..a135120e09278fe233628c106b90e4a694e7e12e GIT binary patch literal 106252 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 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/Regular/OpenSans-Regular.woff b/font/open_sans/fonts/Regular/OpenSans-Regular.woff new file mode 100755 index 0000000000000000000000000000000000000000..bd0f824b207d6007f2164390dc9df31271c42119 GIT binary patch literal 63712 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 Op2f|bD7mmB;r|73w5qNE literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/Semibold/OpenSans-Semibold.eot b/font/open_sans/fonts/Semibold/OpenSans-Semibold.eot new file mode 100755 index 0000000000000000000000000000000000000000..f1650631584c635029741ec6539608f912354843 GIT binary patch literal 108414 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 + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 2011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/font/open_sans/fonts/Semibold/OpenSans-Semibold.ttf b/font/open_sans/fonts/Semibold/OpenSans-Semibold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..9be83c563c2c63910a59454a5e53f614d324d7af GIT binary patch literal 108220 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�G|~oUErSJP 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 bkNEYR_m9Fm%=B?=IjDWHZW*nf^tS#3aOd5< literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/Semibold/OpenSans-Semibold.woff b/font/open_sans/fonts/Semibold/OpenSans-Semibold.woff new file mode 100755 index 0000000000000000000000000000000000000000..3a78f75482b14afe0d9e5a177193820cfb6f13ce GIT binary patch literal 64388 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 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg b/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg new file mode 100755 index 0000000000..df45137858 --- /dev/null +++ b/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg @@ -0,0 +1,958 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 20102011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf b/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf new file mode 100755 index 0000000000000000000000000000000000000000..ee10d635da1bcbb447eb7f434bb6e7038885253b GIT binary patch literal 130692 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

      5pZP+_O5`mzgODXeNG%HsB}?oqS^-WA z99m0ID&BfQ3*xiD>9)RxYWHDD)F#k;~uo)j+{ndVCYQE|1{d61dnJ9F&W2S$6*Xy7Bd+x}7_gCsyR*&Q6imlUncN#v1kJ)-={G<0pKHar`<@+P` zqjO);YY*!eRt@ZR{Ow`0@Z{x{Yo*n*M%}uwd$(RQjlCCplcb2fDVG_$EPw}WOI%e1 zN5Qb5tq@ymbSI)+$k>6z-rZk6CVTPsHthK!8C2wIyr7^Nv`PT2XaiN_gjjXBc#t_A z?ts+)Dr@*ix6glNE0p5l(k>1Pzn*V^VSKxy1b9xzZWU5`C^k z!gGbVmhntE=yEzFzMa?NnZN2f{<@iTFYm<@_5aad*7w!FssAGS`=&HZS!K?FMZ?@> zCbw74v*fug@w|Y)*^7_Q`*Z={nxH?l@ATyJyLg_m`FM!0DAXVFo-WcK?ZoHnCm!Sm z8nqB0QI@h7dc;tsGU$mxjhim0rV^+vBz2iB4q6MNQ!dA$_X)+S?TjjwMB z+30ed1$Wxw=+p*LttARlyG#8}s4>ZYXTZ6TFN^S{`r3%JIKr3ft0MY(z8Eyxu3zE9 zfZ&)xd-Ne9DJ+g=&LU<`u`wHF&MF=!w{r)*l4bI=+b>y{Z_=+^=2owM9pEPEU&Z`& zX^^xYJCdKCqjBW|{cFMkV2CISU~jY(7x7<<`0J-m;cxv7=Yh$1K!;ZBh9cFdPhr$h z)eLP9)CB#Ah=06itaImCozL zsf7vY<#08lW$BQVK(1u0MOUc#OEgL8n z)TWBZYhR{a*bbdmHDUji9ja6#Gu70JYm%u|E9__t69c}tkt_j80+1lss%rW5clDE( zU(0M)-v3o)DenZ4ICkpKPPZGF|<1t&3vpF;YutUy} zQ)8Y|_3u~bP2c_DgzDapR83v-$Q^29+NN~#^0TizvV6eEV25XJ z>#9Az<1aau)ZNQge|QJRCpBEh9CR}sg`9N35)Z`@H&}zh7KpI;I0=JOps8!jazV4$ zN}%Ami`BR@niXU6M76Z1Yu_{YBhJvztPWMF30tfR^sG4O&~eb5!U=Q)(Bn%CXOR))#6DGs_%NaB_bX#?{QWG7TBk8JLbvm?!q^nF#XvM<`(BEk+hF&L= zwvH)|!xX0&svPZ}f+sBnZc^BzyDa9f^!b-xdh4#cZ@;(dgmkhp#DK zro(3w_iUZEBG6rW`y>5f*N2Cm`FSqBBfg`80ke4_z3!^j9=xpFfN5E^s z=p3XofFq$Zq=O679b^QFwFFMo{OD!a;Y|#XqTqIFHWMwYKo`urAv59LEiGNG6*gZ7a*lJ-{bC^XIzFexUA5$pr_Sf5#3#a$i)ne!9 z3wn)#JoW+sEGGRbnJAWlc^9fx5$UL{1({%jgiWc;TBtPx!BT~CsyT7$bg1#LO|+YE zep9hfw%UM(%~C-vsa(x=9!$=#`U{GPmN${c%Cw>kr;GF}r@z3^uN-+onUCsMw0@hY zR$vZjT5hOlG3}}^pF47Zek%Ou9WN}Iw(OgyPJMfE(S-RM$Bles&71wZ&R;%u;OIL5 zthHF%bKCIn+0eH8j(6+-@*PXxn0Df|(R1&aGIDikyN9GXgJ%{L-gWzJBj-l;cw-C0&POesf9z5R^Sqkp4zBt4 z6E&w7yry3buRb=aYT>T2!v?MBp73GeuiUotgQHJ!+vb0NeH!@sg|+hGX|s=QnYnVz z9xM%vk@oyLWjgkJFR({MQOjD3IkjgM%axci(C!r5fzsR?869bkLu|<0W zS!y{GNi;eDajGR+h`ZN04$*5NKcHmEv`Q?{R)mHHRZ%G>tc9?jC~5_j zFPY=tLV54?DtRwI5Q*@I!eOHMZ{Af_8prXv`O=~KN_p?OcX%az-xJ8`E+DiG`eAal!8VFL2Bqok0t9gFpo@Yt$Kb5n;#o?ba#v!&5K5 zy<+dwQAzK(W-OaAAaCex{kHTMlRIEy4^!)TFFv*8_~Ob%Ls!3C-EZJ+t$S9L<%w}l zZ0Kp;XNtg!&>bkZT3Q@wZDMI;`(jN6BOQz{xg~1X;z*kDrA0BJiMWTWJp>7g3{AX9 zsE3hqg9haeEg$x=)j+g*MiH&LAFamLTj5YU*J#;}t7=va3uk3lbf!ItH=fb%q~(`8 zU9TiK(v%jhOG*WyT9<;3LDE3fl5(wU2Z$}JBRMIbgc+nhbWeYY;!5@iQD4wx6$77; z&B;+~xmh4rk&+!OSW=dZh2Bic!v!E0*evXP;xGINcb?$Qo>+Y5zVXu%%#+k*tJnT# zbK9Ynqb6k!=zUi&z2V{+ecu~A?b?Zdp1t_7{_YD>m$`!$x9C#ZcGyFM_^+@$57j*a zEmzgg?ip3N=c)T2<@^zwBS&9yN71O&f4lRWf4`?c{3SM%Z-zZl{XB2~?Nbjv{G(&W zL9D&C*hl)C4uiw(@F5slrmO&kB;*$QZp3V5JP~?IP%|rJCvj+OYE%Js7*wtqe058s z0vsPxfYo?M*c1;PCmct|qcvUY`rxkku#LWkaJ+#OG0hf_*@#G{I6A?9hPJ@1f{mfL zaz9`^zs&toeyQ2AR8HcqJ>R#`Gd|+wd{*=Lvf-w~b-npEeY!N6?|ixK#=TgzJu$XZ z*dvozDlDxhStyCLHx|?!mJ4Ehnhy#=T51vosHKr$_ZO?4Gg^WTAOh`ZCMY_&Q6+9& ztpSO$R;sU+%An{tuM#}R@!F{BsX>^niGVVxC^NDfLK(s6mq*k1jHiJ}$u`tt| zqCxeMF)VgyflM2^tKu&(M1LVS6x>4I6QX1D=jUH~eCA^PFZwT^ezEoWB@0e8e{bVs zUmP?Y+PizpTiMpkM`wO^<>b1%$4_}{>74zB{8iV*^8nO4Y{{7^B-u}d4I5tRz z6CbTYf8)ukCim?N2rKZ>69o zs7d|9YQ51ttBDq{W~J`g#3aXIlK}cJdby+aZKIbCmDiwOWSKPWT9|qkqiWM`QK!s> z_5T_ROhHdrK|Q+pRQ+C}7xCOE@LU$Vn}srnUf{V#R*NL3WB>_O;j>64R)j^1jY;#mU{$2nU|v&6Y6IZKXG}^Y6B=L#8lc$-y@OT`jul$D zfei?)90FKyEO`iID3?CA_B3Do?>Qe#sXnlChps;o+C6LfK>cE&#Gab_>3#Y&{Yxo> zTlt~d7Hv)qJE&`?UpeOI^H10Nn&B6A4*5lFYSHyBwC4I9tppc@%v%%+kvYVk;Nl=8SJ_4Vq=0`I*I(DC zO7rpT1VjOZ%(TZ?fo&ZML=#{ZvLW=>O+$K|Eaiol^$%P9>z%3k%9F`;rnPm|p8>!SYuhwg z^k;2!ZChc^8>>e$1%daVQ((>nj5p!Ncw_zBS^I%8F~&NI$30;=0TU38r(+1m8@rq; zlQlpaoj6k8HHo9^Hneln*a#mA!n!Zx{y6TJEn==7-NY~P%=*W8SH14~BMUKI6?>%2 z`U%(nC2gKq|0$--7>B$R<1ir#BeshhGD?6}=3u0q6O<=d z#u`UNfIl3wyMJt9%I3lF64XxTw*=UVd zO^&eH1ixt5LPwb0;UuRWUmbJ|;k*f_Im$!0mppG4c-|~_lR3#jv=Q{O*qVHg2~pxd zO->-2l*kio=PEPk1S3EYD1mRbm`jp&p4Ct3*Y(L}TdH?Ik*6I`?kfGKu2R|9cw;+2DlK&2NQS^~#CQ!zsVT;r`g@F5?BbByhG9%QIq4y5-{HeP zyT-k*>*0TphI{4NEgQ})+wtIrFIPx8Jf0u5B}4>*K2f& zXB4`KvJLZS14l11W>U2o_?~L$A(6OvMlhd%T%nSn<2G=%&7mbhN}DjLH#l2(W1$?< zUTSk-=L*N!+$0R>D2I7md=m|YgjN&XkNE?#JErzw;qm_8ey6{re>8jkjxnL*3zsf7 z9Xfg9ivDZ;IqA~VTV@fIN3_;=3tBr6%LTNWJdm0vM(Yfsb&kP@&}o6n!MzBW@`6U7 z1ra!`BqZ8k%g{23$1?E%V}}${GvFL-0xJ0Zd5p{u?NP()JU>7ryK+2(43@Z^c0npJ! zGl5}YctXbPto`uD^1=;jN)2$x6wHL3j+luAdkU=v(#~D*P-|8jWCg%Hc)T<_P#n@C zQb=@&eO}I!G#~gHNk<1Fy%Pr%z}8okeT#OQ*;|(@I)yVLcLxnE zdNHt1dlHG=6u}qJA;K~u(V?M(L!eP%!zOow=8g8^!P?ctA$ABL#7wA34%Gq0A`wE8 zi=)__?eN*a5)vRD*%J(8b+?6FB-0)`Mmsu{7=W(FJa7I`le~E8L;DKe`{Die`k$|T z_5)u#c(}a!`r@jdljl8i5a3XE{TIFdFSKqsBKMf7H^z~G=*Un4#u0+LRj6^Xbr>oK zM|Y!oMoqiAlQD))z@~{!TLO9_p|es#OoB6FTVhyu(2aCpAXQ||2>S|zWCLr(MsR)mH8U77427Rsb~bO(*@Sh1&ZHA|2b-GTZlUJdJ! zVpS+)ArtOPL@UC%Qs=Hj0EiUx+k z9a#7Axixa1>qlNVR&};e?vK5@^2qcDw_ZO)V{Lc{bkDjfmkj>E8}yd%DP`e!02uDpK(_MtI;cENs82e1Fh`ldWSTy9xEd{ z$LJCw-m&H_L|1cAuqrSJ4rGtqVbJnPx8-DzGn|tf7xQk5vgy9sdV@`c=4)udf1v*Y z6$R8T$cMcfj-jKq+Yz2_tAFT@%MeNR6QrlEBvwGcG;4C{6m`V|M?uOVqIu^mIG z;WmKyG<*xGq`X{HD1eR-0Jsl@Bf)Pe@XLeh_Z7-31K0OUs|)ukoj=@v?Km_YM}z$l)T#_Of3eT3Td#T_PD{=tyIHGHdzcS*>aUEdIj#&m}CI>V}U=} zlEIhr0|n>wkIoh7$INwV-4so{mz~3gh>$@nBP*af!8!_@`|#{XQQM_q9-PJf_!yTW1(_6(Ix48499ApdTrju(^bPS>}1t*cIGy_?X^bN|T?vK2i$R_s86H z#~8LY^ahQxMC<|LHh`=~j1MAGG+sc47(SLQx5?Iz-G4vhQkL?Wyv^(fFC%8bEMgWA z#VNR$VmfUs9vuMJq654%nBq+iw89_#Qatp*u4~K*$=e@E>x@~F*cj}CE0oDV`h9F_ zRPs46Ray$1EpZY>OyNK-JAuaCFe4C?5{Wm)2}lm!6H;CrDF};10FN_bwItfpan7_X zU;rUzhwe{a#;A8rL^yeaWkERrSptC_3luPv$T1s#-ZJj~0$WAo(xGJYjyE>#zI}N^w6OX4}0RaT@%b6 zJ>2=#;(5bAJoLW))QRe0Px6IhXFSC%n@{f4uL&N*{K%&E47OZC%V&soyacf1#NNrP9;fwmsRx6DP%FUT4~R$!s#jddxT zXqzjxr(_6EM72V0N26NFTn9r6e`J6tj;@9kmp7Xzo#2dE%=RP%(t_IAUgDUfDAuW& zEn+7U&Nwf2Q8%s1K-3?JO+RLNjM@C-mhcE`Vrt(D`k}*aOV#dCn|ED)YS1&|hL0Hf za220-nooQ?v}G!veD#t#z53Mar*?De+L5!j>y&6{j8Cout<%6eKo*6s+5yk2ptc`@ zg0^%o#SGfW-2@K8Vu&LL5wKz4zFM#3vgWzv5*6UA{Ig{1%n17T-ve4 zAOdDQia%h9sxir8bVg7GSyf}6;BmX33F~3~gF;f4OR|?Oinn3PoL{t!7RgHv4J=6(A`^Fv#!JLnfYr)7P5 z-%;;A4|QnR_+g=I=U)qXncT2e_b7`ozXiyh>B_FN5L{q|S|NpoV*HT`5f-mHOG1g! zuOx}vd-D)|5osUwcy*&`k2JTk)=;XN8ysBf$xDMUsDSzmZfxDg5)Gh?Mp1hGN!$p; zFCa}ihYNee9}~+kT8c$DCFUg>I>DE2+}?Ne#I?Vi95|4#$f?P^e4=ghIh{MMP#@Dj z*1tdX#iw)bc=mAhy!CUJ@T^|ly53&8y6gCMpG?`-wrEg~NyWFl`1X&U_5Pa&ym{W* zyi0zj)seF5&bQBO+tIb(%t^tU6YQ?(va46W{_AdgpdSKB5L*WwsS>g$9eI{QM+!Nd zB068lbZl0!K(%P}ND~}a_^DxkI1)XuKLh|&tT`|z2x5zJ`B|D1B?=UzlQMs_;>=H? zm4au0h{2}>7>ok&<#d7*P2y-4$22;IaJ(^l6jK1@8UQ1~VL*FajZ1(ZZ2DbHsQ?`< zm^^}5YzV_)S_-MU7HpcvPJ`gI*iK`CI*IrkNCk^b8%%jdE4OvX3!~RP&A?${k>Y#HZ#r8-MQAa{R3Ibq_ zSQM5@+Js2sXvCJ|4QN~;p0+_JM_xzNf(#S=gqntkmuSZcZiYG5G#sG#(#4C#{d<*m z8`!n9r!wf;0n_;ILrUBA8q}8LuU@BnM86W?9b3Xe2oNxtAGH+lm%S#&l9lxH_gSyIt0uq4T#pkS(0$g18g9Bk~hJs3wV>* z3B9gM>8b+6bLzk5haax)APwrxGU&{4^2cq|9N%hLdCZeIxHc9unFe^GiHgd!*?A zMTDlLaVcs$3#LarM&(8QpxJZv67A1|p5_CP-}&r#R0g;*vxI*K6b+e)OA>-wE)qLZ zq4Ogs2n5atf%8G&cwt;n`VAC53eQB4BQh^26Nhk!uq!DA!a+df#hME}Z60N(UA3Q4 zPwkY_ku6d>GQdt5*~CtCG-#R+GEx|fmWh}&&72Eai!e2796nQ!_k;)}1bKkg2?TY6(&6N|hd=m7uJzV8rmWtWa{tB6?xizdEu3_5vvc9>SBu6g zgHC^SalzupH+ES_EB*HTl~+#dInvHSMQim>^un0z1l>}R$!YLmBJm+7su43%XkpCZ zOqnf+CHpPCD1i$YYdF#71d#;K!mkPW)vVX!)7%~tRFOOSEB@1L7V179@bvHN?> z6#}lssyqI=4#O3C+-0RqnF#E%3Emx3QB!HGQM}t&e1MCE@HN$4R1F&}Q&T=NY*TBy)sLWqsY+=2!BJBtfKf(+y+4`-ma7jSY@-g#=a3XT6Rv-J?4sIfBw@eALviLtB$ME+sNahHp|m`9gUBT!T89gOhzo^ z?NL+^WDk*+X(-b<7+*Zbhg2-A(G<)>ib#MXE<uWa$VPTta|};CieF61F5IqKp5Ab{pgHJ)3d0``v=+;O-^U63*Jc zenn3}AMCIL=b;aRqJA>EO|L?;MA1QbpxhO@rsNtF#Y3Ck6Y4X#_}m=4!ymt@BMf8 z8QE>}w5nE@K7PIURQ13f!9JaC*?9XC>JYVWw+=-;%Q_61(DkKPF$Uxs$a$vTu&)rg z?V&N)!4)vSX>dbM~O`eht;XU6xlE%n3Qu|EIiCx|w){ z;+)qigD|!?nJ|hC^U)R)J0<~!V>s-L%1bC59dQDLhXaa7&;YSY#Az&UxP_9SYLSK- z8}wg(5g zix!!%P8BjL;K>v6fwHR%Or6wyI*r-eb5awQU0Rv5qW1%{vnO1*a3t9}C^Tiw7Vhf2 ztO5>}9h=&&zT=Yz_@~znoL(^NF`^6HVvu!%fUCET;p&)J1jNJ~`B7Bea0n-0t^{nZ z(Ch#rVYcsa#6aH}Zuj>G26)r6W)s^lBIe89fN^@KT0&a!k{9&`Y2Ls(_UM zhEvi6g&A83&o+Y!62VK@VjKW5gwjZsIszww#lvDWJRHJC-*;?m65 z|Bi!aNz3#;1=5>&^$+oX=53V|L;LD&A@O`>1rA;bytsf}M3fu3caZ%_a7PwC2^^>@edC4U2I&;{Q)`BIQ zQ#xc;Z(G)}#n|Dlo~d^)*y$*Y@7k|Gf7@AP=ik0MbP{*3S=;e&_d)upnaiE#qJ8;; z-)fy6EIx9nQ}2^q{hPp7ycVkGZnHz+*)fdYfWu>`I7|QnrID4#YeRaDj-@ zg9F$H$Nw1`1I>*KlagOdDfWm*GXQ9)^tLm!ddZ`eM6;1%%t1_9pYfl67;^xFBC$rx zO}&ae0&!7cMHV?dbX0R4;k4XT%!Hqgh=WUPG64zYAvDtjq+tSNxZ_jP{J94CX##%V zA|@asiR1)SMWEftlNP6xBt@n?uojY`_*aUA0zvA0q)GXrQxJ?!N+GYBK3Y(HhqKT& ztbZVdSAgsv6)b%qrE_jLlC??dF_4$ey3=WH{d`%scUorO-2CvxPQ6cc^*?ZQ$VB~5 z&#j?#&E`lQltOtb*7X~Va=DlT$xv~ip|vEO9G7G*R6Rjb9grnO?%>p7THwULmlwXZ zKy0j@R;sm?>T$qWzDhfj!*ccLrR?K{xEOCBe^kB><6-jevP>vHqnj=brIHlSI7SP`a2EkSz z&Tvp}2V@G|IHB|mk~`^M$Q@{uSTPj#jSG#y?4z~2#bjlGwKGV(0GP6*n=unv1H|mnF6>S-Bz*!L3B<<2kq}3_ zG8FDujz8HyF~nMA`nTf8SA4rQ@MPXy<9aL~H(}QZ;Zj(=v-y)n_uVg5zRtV7m$G|z zLeY`Z&A)D*v!u}XRu9u#pXQ!4@5`Eb6FsY@x~)l%0XR&HNK3fw!Bz z(<%R-M~>~T+C2ZrP362_uCDr%Zyzj$iry^x*Y5qi@W@-kUa35-f4~2+@oR4Skj5{u zP28@eDUU&iDL`dC!&1t_(sdPUIkf*_Yf3vqj(#!$fnC7#i@D&aC`BfwES$`}k^{(v_V$tysL`_PI-juUNREQ>PirM~%Gq-jSo0 zEB?hRI(1&TaOH%Vcig^w@rn)|mM>m@``p>LpB{PlU86_eeGk^nbj*1jpd5X6ru&K6&rEhq!vBzV5Stei_P{ zU;nZ6T=3^79)3c)Lg4`QR-FD!jwq?g9%_LnO2q8QXH=ymX8oIEXVHWw9&`rMaKL^V z3h@rtzft}wr(gf4;HiR!TKQ*l0M*0VvqxE|Flsr%urln%a{bMP1T$4gvLOqBP;l3&W|!8w9X^B3uqWM@ zPfXU_rTRf98SV(OH`AR5xzpRcbvwG|iRBNI7AYd5U~!g3GY_MQ4UjJ)I?7Dk2u=i0 zVWb@*1+n0<=NByKKl$E8XNxPoI1<|4y<%;@VdMJDU9ouD%*nrgc&ujhii%q&Oz$zc z^wrU~^(ySsy5r{Y#}@l0cHQt?{~cL{JvtWNQqq3&*ikz=^a4%}DQGiG?;>Q)%lC+PK=$X)!Vf`C{BcfCT!H49Hg_hFp5&@h4ujT$G&)1v*Q3=^A* zsXCOPWCrqD2Qf>?4h>@N+F&Z3NVZC4`K@X00xmVr*bV@ViIgkEuQfx$ze@?0P+o^5 zvaGyK5Cli#PQK~{AM^fueDtYz^xc2@P~UZY*&g2P#g};AuHE{%m-gys_g*>w-iCX+ zPp_W0{BrTVEf+3(=P%M(`lEOCr%%48@BZLJUj6P~{fqqvxPQ-cJn+&B`q>x%cD38q zvd5m#Kk>PD1pf!*gG}8iOL7O(dx&qyLUlPoG31L!G7MiIQX7-SSv2P%;x>dU!lbDj z6Jn=`D3r(-Z^Snw3*l-bZ*@XqnxIZH0Xzv5u9zYGnT-y2u{%UV9LOj_j6=+QX5KmG z(b4lt%>|3LF0&~mV>^wU_VnnI+dE7iG*7;A&$&CMRM!ugR#A4}lI3Hc9L>~5(c(g!OK)h12r_{y>!{g7duCCI zin2XOhK@8d8k+qV^S5b<4Kg9~CWUysnNurhfr(9Zsm*B}U|~dP1yGW-3g2t9{}&5@ zJN-VV$83RZPC{D9xkCPbUjTeOPvp0a9Qw(L{Udu1sUA7F_y2VP)ITH7*6Rk})ePo- z5B*jCY46T`+GCF9m_16K`6#4`H#YB7WTi=T5e0e9DUdg}Fnjjw5$ood+(GUSxkJ9V z{zgTbNQ$5^rNBC(v=&Kf(IQwB_lt1)n5GKXfaWIjnLuawGijBWjS%J=g0K}g;(iQ; z;@Dg3*45OktJ+@m*wo72Q>XMnt+|!!-g;}@`q!$qRrQ=YwP)qjDOd}r#(|nK$Aw-$ zF{&w2(HLaH#0$MpjVlQ$Cc(dUK#3+%0nCK@Fv6p0Kciv?MddDH2`jw)cDgeW1r<kjHCjl9GK*uyWFisip@URT=AgcTFQPTkU#djB-AQ19 zpd3}5io_X|Lv0yvlyX1<&1WJ;ohgF(G#8Z%NlhbKd4Utd1QO*!;zbY-pjj%I=Pt{O zrv5fo*RUgP&Tr|T$rIZ38Ih~A0Fjq_}a3P%LHptm^&$#NWOD%sw4?81l;-cN9#_k`>tqkN^3dr)q zZXc~263Cr;_np-fw#>{NJz~bfQDeK`{oGv}W=-v1`QE+_(!8g8RrZ*-x_j4&U6)qR z8DG69U2%=?wsJeLi0g=v`&PurH5ajU*t#LkV=;0jR0%?-DJ0261c%EM8+K{CGCyEo z3%@?@9&T;-=U&QZX)}+zyS+g!YTy*)yV(kiDxJM+{a^WH3){I83L zQ*5_BIeccZH7>gw`GD%j4=L)}``TalXV(tAK4-#heRk<@2^z8e`gJ7&e{d4wO(`v( zJQY^4omdm&u(+(K=_E3j5ncd12Y@T41=%$bWPMn02J*!TCkCZ*(gtj-Lbsz`khUQD zABtf9{=Z+4dTcy)f5qUxeW19wqF?#WJo)N&l&~T<6l!5^lgjyVdAb8mZnjVwCg!g@ z>bjCU*@Xz8kQLf+$N}&ZiOy6WQxuEA76{n@b(oN0Es??*;;_2|{DcTYXbm|Lm_HWynlAR@`QN&mQBql=SYh`++X)^nLcR%?so9j!hfVVfvlGx!9XhrF01P zj*T*HDKC*CE^Kgxq1uAOX*H1MOJcjB zBUzy%C1QVo#G)MJs9JuQ<$Xp#mB609pT}miP!?fL0f9BaETxKC(RvZFh!66d zV;AxX04iExP*jRY2OSZ=D?6$F9nye8o-C1Tg2eP>%&wEd2$QK`Nr;&ZcMZjI0bUGZ zp6#*NPA@Hxrq)N`p65r8O?fA6)`A)R@`l{jck6&#Pk(UW4gT}!0o^)}9n}7o?n~ZX z*k$4ETlNhe(0^d-Uc<}swYe`UYx+;_UOIF_SE8X&o4_*Pm5;0$qRlN0^?XpYeSeeo zMeM!C_SHAq`4Cp!*nY~=JN6t@U!LFCKHpLiYX>$ksX`{jpH) zKoUIZn+)BNLfRXX!I4m}DK6jzc1Hr$OmGG@I{>9b)M~X-gJv?a+8YzbVkzP%o`m3c z=rhq2ao2yPh~r||nMmN#AqsJXo@2m80xuHf5gN0_Q3DkbHSWMt)a<`5vc|6z>bCJn z;=KMp!}Ng-jIZKV8&LNiDdZ>g(o;s!1ZkDQw}@G!dI1=FzM%P?5<(onuRWmytrE0F zO?@#J{~=oaSNkHi{Eyl(7oD556U~k1OlPIBc4?7#eoN!|`j@eGd0mtCMGen3wokj! z&WAKqG`5cwb80+idP5&R2r{QMT62J6G=TO|-8l;0u_FnKrF#JL=g+C(uCrgy)YUR7mLxy8TAUf)*S#goSa7q6Gx`l@>j?p5Lfk zpwC(PNUV6l7@k$6e=E&7A+2bvVj#`YtBpbidY==<{B{Q&&WW|qhUm;kqKq@mqsZA5 z^ei#x&*uDL`y!Zte{etM_hgfHT5IAtSZkj(X{UKNoE6>3%5v&E~fx3=y z+#AO&aVYAzbvbX(%U9^{@Umt4d-{nxc~G$}*H7_M`ug57j!^MsybNQ4Rz9l%6=lo{ z;y<#1WX?1E;hG;)OQn=Gkp&4XQ*Mm>ps;B~6^YWiDO3uFdr-|t0F)M28pVF7b_6ll zjF>e)Fiez$B;f~>8%c)S$en;{AMQpNIOC$>>LJlT?;v1tL;{+q~586c}K2a2$h{tl0lf@}g z9b<`kzs;kk;5Z8QqFDA=W?rl!#cwm|v6v_bF`14iZV;cC+=!MZLmCPNgm6%y$p1c- z_J`oO^A{1!{{GBvGsdd#EMAIC`JdiD@ss|O{voe>>fu@A!ABg`M?K0Ra|V9j;9#^a z9$@egm<$2|{*yK+_(WFh&Bbc-#>8$4hoUGL5qM2$5gmT3N=0KQw6+ioK~x?>QHZwG zbKZC+bZBRDR2GU$&&exnL)@3^R9jM_>e+L5hOr35FzR0D~W~B6hw_4B!g0r4fbzg0$W6hgaTdf)VAy36mD)^_vNvV z!izdp&gh;0-Mfb--F^48Ma5Nv`i~en{^7=x*WUlW=6UCU*N{CT_s8r9pFs*i zley){AGa^6{=;@Yq`pbJ>DSnE_()gN_DivLHl2RP2z+n6cYCazkN6JlkQ-<>Z$^w$ z3si6JO7#qKNk7k~t)U>OrNP24La|q9R>C!++JjnKutDdNh^Kuv?GhpoN(AT|weJiM z2^{uhUigimd@9I=SbQz_Cg40uK~Y_> zMFo+NN_hq}M9Cf-{=KQ{o|bW)A5IJIoOu5;l=V@hESwAOFGdkvkT4u6%s?q0=1~E*bLLfb|QJ?((Ns zr;UGx+wU7Wd#7HvbjH}5+wK>0f!q+}7hx_SMW9FA$ydhaNUjsS(c9pSM{mqsN|W|Q z*tTMG8h4|e5Ba>YU9K|`4;asx{&%CDVun-2{XdEK-lE?to`ZHdt4aH!2FO7047D52 z7x(iaI$mJ3OV`Bnjpt0)zrhQDm%<;r%$x_*w~#8Eh^jY8;eij0G6Y50cYyW?l2fxq zNsNfsNIfh9Z&=~Ohojb&kw;8`)$Yb_#I)wokU7N}vRI?(u_F2~#T(2Q4zhx>6tU$v zJyiS_crPY6y0Yzj;Ht}8$3ED?Y+F{>`)tdR(^n3x>-pIeTlBhv@0|T%{OC~|`%fJ; za$_Z5y^Fh^?AP4YSbADN-Jq|2s@;F?%btMFX?*p#OP13VUJR+ASwr3kdNP^ zF_P7g|7S!!XOK~bkdhmE2t}Tf9)fTZt*IW;%o&CrB7!8F=pnw}=pkXKA;RHhfu<5q znu?)_7{*!ki5UF*kB+h*lQi~4RlHl)RX z5f2YFn>S5;>IAPm+G*z4g%fxDSyvBqSS2Y10Vyw_pVPbhS6{rpC`HVfh(i=}UuDew zGsc|#zJ1aBKWyhi0Ef`ri~GeK8_$_;7VSpdn0P+wC}7W6bQSHfm}X!;DX`HH!9$hZ zM9L+_{AzxPX@EK@z{F5j;YP%7lO!F=prf+zD6t?E`WJta4CKQo-jQNtKs;IdDnVjl zIYneZh+{GxLpa_DZ$REnGy@{JF$2OlGXOFQE_M+LCONU~CmFe(2-`v26mmT&5Ct#~ zHU)D$>dayu5e)+4x=F}%{%>QZg#a((>c!S2LF*GQJ^0MJ3y+L>pwLQj)1!tB+d6De zzacxu>PW!<;=7kmd~k$9r$-JQIfi1V$4}eNtq)C{vz2 z^UP-Hxawl>~BoaT>gc)f_~4mRFj zEkm%A%s@M0xuf@6c(t@!w3B_}7rJOZ_`t$qIxY3bBlv^%6YvKFH$CTf_e0lxGu9vZ zmmBxG>93#o#mlgXa%rkHzj+Zff%Up|2Uw$6uRr zME?uKbA}pNgU~_7m_2xYFKU+`kaY3bO??5Pp@#jtGUQ4GS)3T7C|+6XrEycYYfz zkMI={tYAS-=&D^Dg8)7I;*zM^^2i=SFXN7QypROdK+5 z_|~C(UJa_I?z?r`tY;4#c=lQ+b;{^JA33$1v(>|AY>ncupf!FgfOxmLp!G0T6`LFA z2E@BUH{ipR#<>BuLA-0+Kb#fC?pK-%-ZkzY9@R0#^DV`V_g8TgkRskiym_7A6}q2z z#hA;U;AzwkY`ni(0+R|}?@9T;(f)wf`Hw6O?ezTZf>(_G3~kb%UV^ub{tS)kHpJ_r z#Qisk_YNW3TC6eTpNjh{(Qf8LqWh_FKaJP8e>mIMn@naU(nqArN7!gHo519O3vR8*Z@Ek=mW29m~r_cZNN&`;)0XoD#e0 zrFQ%x5-MVtEml-X1#Ig{z7aPTU5SJyX_VunN#q8l#190H!8Aaq5UoA{^nRI2Aol#~ zP~M^9ABv@R#s4lolzZf>AE^}JA*o$q{rgJMzAy0KzH6UQNkDn*Y2Y+87o8!0ayXBA zKs`C|JRz(n2~~kwkb1dz%bzVlba-3wBet7z5{oVFc>mQSr^=iLr z{zvO|@{btnUw&3#bOOWVBO7jwtp~ZE(2ot9WF-AIO7#AILf#qo4{I16yI;B}LH?^4SUdzyk4~THQKQ- zqy3TgTS#6Q&#z)*1l9*0lFaaB{PspFbilnjB8+tcrQw&UJy{QiV73!mf^^=0sPIV|{13xaJ_85MQ%61-^ zlgvbqMZ12+7!za~>O^8pt*9Npu)8bz{0<6oZqeQ!?fB(gyqx^qv|cDb$BtjLG=AlT z#d2|xc1l&1P)6A($r!dv919^@{fF#<-=*b}tf6{l@q{HC$+&-l2LWRtD3hhUjFNvGC#eAULD!);Nl`wyc zl`wy_Cr~>yu%>1LFNY-$yjfTasH|)Gf2e!&_^7JnZM@IzEo-NjB%PHkorMrWLP8P( zB`oxj| zw-szKK=ukwIC@H*U{*`Inuv2!slgops|F^+;UcID@i@4SF0%T^iChr!vY-;X_9%b%00wl?)( zKaB4;t{8jE&&QP3V}Z|~RR8(7F7JnBFyZrIgZg3DleV{hlWajJbs}?x#u%Q_vgI)a ze&Vi^1$hwQf;Jiy$v5>x0|v)PVy)>p;BaWfsWEnMR1La&q9A{~)*p4~Z2+8H_yzqX z?SPe9p=sa*3cAD+2W+{42~Y$YL{Zp)pTL}-kiN_a7gPFBcofNvY7m<&arvvj{F!~W z=AL$@!5!Z(Qaf65;x~W*wCd$=mHmJ8c=!F-BksedrRs?}b(HTV8wlGAxuS=3mV9o% zgL3J_^iwAU1aCZO2vz^FIOY1#B=i6X2mh zd6P&tg%EPGLE|fB#9=#;5TR6fv81#>l-;n```OgtPu<zhO?4@(WBFclLj`00__R9M;-y5+5 z<AG_VhIZe|bo_i?Z3EU)Q;mXuuCBli2?0HEQDJ#e7M`i1FdTgrFUOiq$xf zLTu!yhSRGNL(EUk7=D52$&-Q+oOC@Q)ndR`F+J8U5dy{MwH--&`LeX9?6kaz826#t-|AL0ou)W z!KPqGWPGwcivh}E4xgKO7c!FZtTCYH^hV$kz!biwc{ql%!dg(`zBmvXlN4^s*rV}? zfh*JkA=9~%Y|17Yr0Z82u5URvru#qVJpa17Lw!HjICX00`BR2%9sR%?d5h0ge{p{F zuobV}F?8_q!OH2Rw?1xDa@TgT?tO9F>ovp1ubQ{(y*5)G_B4MhJ8k&zoj)GB|3Q)d z%arMl{JYmZcjmQxML$!u_!C(OI^zxNbh~Ff!a4_wN4b_Cq>kc@H-Q%qy36;&u5O{v z!CaTt)W?qNbU%Ei>)8L$UAT#+Ev(agKkR2o;PZd2|9mm%Z}Rgqk>lyZ_ZMm3XCmKE zJ?d}r{lHq$_kpWMpHKI7gq!PIQ>A?Nu^W7!yhn)g9E54`v{0H%W(C66T3!(=e z*Xi@ARsqANeSU-QBL-dnF7WvuH~9QP*YD)}pTg&ZCl#MltbGoAMSRY1d_MZqaec6M zJ)W<7A)f>M{rP^#CxkzrX6Jb<3HtrU$H7a2*#pQ2Ngmb+Ogd)9 z{dMyd*(YpB*LwC-FyoxLNCU)xl-2^%qCYr{LQ9^$NZb{GY$RYrvQGh7Fg0)b>?!nU zAcbr6nKvn)M|$bD>~FQ5=;=(}q-N;RsZPV6IG|zx?>2!GY^{B+;}F!PpMFBSjnip&h<18f8npJJG~L7E7lTn+IQT zfUp(eB-qDf7Z0Lz>y7*XMaAhU3!87M=Ll&2o9EZedY*uwTqSYyNoEQ-x%rI%RX{?A zFXeuab$`+`)V6R&4b%J>%DFG*c#?DOVp#JA_w$)1?=LsVT&T>^Q~pfeU#|IK^7AR5 zB<~+=*uwfMYXEen$@`(@tl#qfvw{0>*K()w{&j)-Z~wLa{`@ixZiBx z{U$$u_yp~KHHSEY1D`)snacm}6y)I$lWCt%x#jJA{Rr{j^5?f=`3wZXD1H7c>hb5# zA1beFF<=1DDC~Bkw1Cg~U-zG}!3#uOG+0-NgTHDewOohPnE6GAG$~&&3=eqgxVMiFdL)VSJ*MGhk^eDb3u*M4P z(Uaiqa~ptikJ4ceHozXJa#i2Ds}Vz?>yddOd``y|uY<7-5|&2T2KkPH(E2WZo9yEE z29wi|DhHLLC0s!=Q|oAib_Hd_qlGi8YU^~c?Ui;O7^R+Rykq4sqS_mKm)TzP8rl&D z-SNkXx4mxq-nFo=Q_wq*gdSvnqV~PzJVPg%IHO||!Kg=EtY0`0?|IwbJb;=YfsYluMDOi&D8W79S46KO|Rs2<7xvVP=(n=QE_Yo#V#}E zmZPjMf5bIS5HvtA39a6Y--u?CaZHx7mw3ZzkeV)%zhok`waYIX5w*`Bc`!QtjcwD$ zl=Ud>Iv~>hefp`x**l(OD#EdM8COo~I(_f!ETT#NYrSh;cOxQ%-)T9f)yw*5Y$)h< zW$>FXMPnd`uj58_6gW02kJ;e`5(7EWWBN>p5(r6eVIT_6M>N>%7WT2(qeBZcFrjXE z)N&T(pOpe(->;_c@XdZm*?@>h_*le-Ry`8BBVD;r{N z&B^p+!lL=^4R4fmz5UPJOw4C)^STVm6RLeZ(us7ZR#R)iCo`?jOV|t z+?IamT-Lzhu8SeLm#gQMs2^SV;=EYgZ4{W#rw=Xp=B3w-TWj3QX2*DsyX&3<;OhFn z$kqU}ch-`N^-DG!HTYvG7AD*cSsLVy32{SDkH^PEE@&$js|qAV6TT>vHAd zQ*^jhOXJd2k`YJe-A=86PlL=`S~4fSM4xKY{i(4v$C;SEBcm<` zHNE_nS7Ww$T10l3qs*{kYc!iNQK)E6xW+p}kTO@H^IO(;zrstI(*kZcqNANK; z;JQG*jY$|pRjAFW(J^qAGM4zo(SH=~*kOrINKI#01JG^F2PB^e^B@a=N5C$Hc52Oqriz7AJyV!1j^87}T#*0o@Q_zK-voE!Xd?3RNWfJ>v6#uVaUk6bVT^HNf=VQz;-w$7juRHmE#_;g{@Y=}t0^0`1 ze28)DV?^Y!5vtL38)Dr07!lXMkk=RC{`!~?*X!iZaUIxG>}#%#gc*kY znTeFSt0e!ZJ`ti!n;^u#i>c<;w4-pns5$2^$VSy`WyK&ERnDlFGj=>ZqDZF|-T5-S zDtfkQ#(hdI{AlDc={t%srsJk;^tXj0w?z0F^fjBb7B@JFNSK566jd^I?gZ^V=7G=1 z#O#JKOCFBDoUv$auR-(gLWkQU3mf0@UToWGlaay|VhcVO`BZ$a2P30(Zh0;o>YuA1 zRKf^#M!6Q^V~dIlsB6xXA-1gQJYvq&O?~|-mz!EF@vR=Xt9yLcUAdF-xl7THcgegM zSs?ztgb367P^mp#;qEVu?;fVYDwd`zUD8d*y$HbRdmY60>H#8@2%tlOE%RB-XZ#j! z*R)Va84>+6VJ$HY(T>GDGz>Y>ySNG0988uioE!aG6c;d;1@+BPugpQy!tR5IjEs0X z$-j2N8uLeKE>tdtm|X_MFz{-L#b_%zkiu^Wx&>*vjzX zM}aK(7^Ln%4oS{#h`<HGiS!7c>|In!*rnV}KY8pk_#x*)Dg5(t2@~8^AzFkb8V-ETyR2COj8lOcXCT44~(qkof3FMcA#x-SI89LPOztz9?^@*64SEfpZo+zfx9`CUp5 zHS686O=9DG_u>xwb9#1ao1BsFG<_}-Jz1W@HtMO=tkhz}wUncRzOBVR2*!ybcUVaM z4s)SKPEXD|j96jh4x?RAfF@Gj4x)dD1&w~oJk{;|%zMwbI7YpsJ*t|!3O;HcyI`BE z-F}MKft}k{w@=K!KA&}<$NydjczO$Kfb6q2HqgI@8c;rW;)F%>rra}UZc&TeR;_ZI zwNW?G89R3FgX6LI`A`CUt?Sq8Y^LMtLQ4v)amPP?r>}}@@0pHY-@(^rT>Vg9yY{T< z^XspfFHt7r>L9vi5OrSDp6dmcwa}kVJV9F5WvEWWmQOODq|2m8!LW^fV<^0Sw0k%( z@CoHpYPsYQf`vs4rH(+UpD>f2)H-kJps9}>iGI>Ktmn`yi!$GJ`+$vw!?xIqvP%uh zwE}$4Fz)?zzytG|$>X9i)}%E8YUIqN9ZIH)CS#=QZ>|;m+~oEJZI+0hXYhBsg&38w z`kB}^m7VCXc9r~W*A}X?>Yltl2kVvgKiYzu?7+2!y}J~(>(im2i+Z}A`Wo{*plimH zmI=ro$~hn~ESTWIy~@C+VrWuen1`lYO8<&3XFRLAnT{v!+!NRN3#3GmMi5KES<=l? zh3^&#FQ_+tKX0P|YYFipOAlV7D|UJv1;7)H8}JB)WeHwXvH=MnXjX+*Vq7Zc)GjpyX$NCjKuFO zDg3)^!|I!U*B$~2ohhTPRT{0{w4qvR)E<$s?(FO&bDHbNo=>;J96 z_#J&-hInkQ{LW_nf5swbnr5j&Od!9(ohlN4foI$e3?ZHo&p~YP!K%ar z?%PYG8kPhbVVW!ztC(yVMXDgW^SX7-+-&fCL=-`mE zB2NUr{7#h^^x349=iB{&P=%bE(!yRoM*X9(+rQhkGo z++4}m25@WT`)t2T$3V<8SK&x&`))PMkPcvR{RCvT9N#|_&m-kUIUlaaVh|UtuVh>eCTALP zF=jI=%!g;B#Y2}QWR`*+Uu$|Ms8)|>8t==-bXboXq^!x_tK=(T)ko_t)tx;;|2AA% zjzcU|d&19%YRs5P23aB(t?expxl<=P$&(G=Xfx7n1+ps^^ZeY%#(0wf?E}mY4dnLd z2qTiIaTubG0%~}`zH9L-x+-**aF*i!3)5JN5zU~BKtK9ywkyc5`b_u>SV&_8h=i$- zWU-l%LkOo=x^AcImC^j_*6)eqdy?tZ*e(ow1Qx;|N4w(!hRhe6K!q%6&4^geNDOn@ zI7323Xha|2ZqUa9!8L9Oq->k>Z`R?PQes-xu)1v5g;HJ|9>Gi0bd>xCfn#VqYG0J> zw#89qCzf6%u_La7y-+bbx%(3JE;CX&QIgd$AbcLZenSE=y0t)3Or{Zyn8Z#nRGi*> z+(XZfbk3b`-~PjP`?lSl@xR_vtiGxKmQe9Sh3)uxW0wIl#TK<}RMGT_#^P&-x4tS) zsV4QxRkfSg{R#FF&JCV@no9Ha$WD5lsBR+5Wk;2eGN?#!GgCQ2=SDaV(0N5JdpM2* z>bz-0RC?H0Zg4Q$T`8%QAPIN+0MEkdz~gWuiP$y{JsaUXHHxiP28L-8fPok|6e8U# z4h)1M>Nsm=mY6VZ;v1s#v2FjJckGy$lwG$x`-^WkuYL4`2g~osK03&7eZ#k6;yaIC z*?dM_^zhLmkBG^qx9xsH{pF?Se;UJk7UzL+_zgYmojEtbdzY{4btI3T<1l$G6L9`N z4llzZ#=>!+yPgP$mhDz|`hNwQJrQ6cpJc zbN`6EzV_6_gp9KOHBpv<8%8|-{P|}GJ~MJ~pYoLe27V$&9<0jjpZVsy>efzeQ`5ry z3Dx5U9^L=ZOCs!%VUt&@fa_CyM4UTYPzQ^|dA391%YB$9Kq-&N0%HHH@43*MDroi+ zC~Rq40wUt|Xk?IqMvE6}c{H$18~KC1mQ@21+bnFaD0)SvG^;)fP0SmW!WET8dkUC2 z?Hwme<3TOI!({@Sz?1VOIO~7_Dsi}mN7(tm0sTH=+iH|ZU zJ}njl^RIol`xAB3oP{&LezxD^{b#PvoZE51bJt3;+CRQ#Ncq^=9&c0mYm(Yc6r~ik8Ob5grOVc)*F~tJ8YgmjLr=saTD>p0vS|b zXW|6)8L%0_e@#<+dA6j2=b&K)l18S;1yaiZ6T4#Umc4Y{Ppw@h_vjQ6f35EDhSqB2 zSrKOHQg`z2ueAH9RPkIrr=C`SW1VaZU0sj0OG2*#s+cs*)aSw4ftnbc|H7NiYKY;w z-ee}arP(W9r=1H!F)$2G@tvG741Qw*)1YKHDkFlT8ndV)0QvzhXjlyW2wEOabh%m> zw4qkm{LP@8q^-;#N!@q#gkzwOY%2^Gw|u#K)Ei?)v|Z76;LtYr&6%<2`qsbg9d~j3 zxOp3AZ#yieeI(M`F4(+gS7F)K#%+3cE*v~;+=;(!Q~y{oy6W+JW`6c}-yO|Pk*s-d zWAAyuT7r%lJY|9oVzL3mC?9@T{L;x zJM+@!FI+uh{7bJt|5f#8A_Po2mZYgYSHIH7*R6lIhbnI$+`jkF1O3*r{#2+_O+!!% zOF_Q}#)ZlS1CRqg9M6EU6K54Q3=lZYXCsA4F7YPN@JEMaZHPjj9b>SFL0+5Oifpza z-2$ag!IUZDtC2nNR*yXJn~92LB38tVedwz!{%v<&nlQM-n6(SV z`ZXd=Ha&$lwZw5JPvwUvCHeUSY z@{N$j&i7tjXj&G)GQt-egS}H>$wt021~wg4Rhqa+Iz*I0Ad@Cubg&@nA-y(#gw})z zZz-ftK>h@$Wwd0fbfYW*LN;F`C>qi$TpV*6IIj{SusJk@n=8fQN|7{8W15c;nWw$} zNiY4h#=q;Q?!BjPY^xSD>M9N=J~e5p*tG9Uu|kYE_03+@t-ibA@7_S_wOX`$fL6bb_ z9ENXBcod7_5Bl!cfr~MoKn^L{@Pej4(X;>{b3#5z;xkinNzU|jYwo@LnEbjxrpMO! z!XtsktN~)SQYf)FR^s?Io?fAbu?-HFIMA4sfcirTx5dWkG&JI-pXsatSeW)05VdAB zB)d3n2CE(~rAIJ3x}?r?^U)F@O^2zoiV4aDTWH%(t(qowAGYq9sL7$(nMrA-L&n}? zi-}j_TBNEUnsR22xIJV~)N}r8(+6}8tBRZQ@aMn$t^w7@r%4$E6^a8hvuVbL4xQG=XOFz%VNVx{i@zA3jsFFYN=-smLS^amK-@)6 zSAk-%ddB|LF(mkzBi+t*RZm<(-$~udq1DfdO`?;!vhD(vV4-{E>NJxb_A3|2A?l2B zW9J}IZwJi~?V3EcWN5#vv?h`rrp~8CyRQlM4G^Y86UyV!sO*_Y#NQw+tTNe*nK^XY zG;xrv^Emw}AsJl1bAxpcrzeba7!A1vVU0J0w^&iJw9&=V=1I=<6rjrLPbN#f@hd;F zf9#akpIJ7bI78W*7V+5Eb419Pv|j%>Kk)t)cMYt#JgrCD@lP%h^EQ8*V~L+Vbjr(_ zVY^@L_SmpJuWnw^cTDrPkCgXa+wbnF`Av$Ow(&xz8OLlIi!}o-88R7&Jl6!QSuAy} zvWMs{ko%HG)zFX;vMhdc6nM4~?SQ5-CNNfr`~$Kq@Tz!&uBv^8R}skfSSsLqqtT=A z`UN*%i~tNf>xL@~kgwnJb(H(lN%2U~($$P~S$Z9GXd`C~~LnRr9TVPXwf)f2JJBly)puYO!(NOXBSQu2(w$`9DX~~+`u=f40f1^P#(n)Y9P@f27*&t@%^|6q)~X+pYhL&pckK8 z*yX`HN36eN@QkGs28_HscwGBo8x{%w+oH!Sm_0o6yNAck&Tln$Sf4dR`ajk-rzE}o zhxp18Yh+USOo^w7gEl@D^))1#7;15p1Alnhr=0Rf!_p`n!o3M-xZqjT245^4irQd< zv;xGBL{^AWQARQ7s);4ald4p};rOQ#pRS&*=>NpKvko6W|IX4)CC%S>Uu^$CG~c{? zQO)#UU%LIw3H6!?`FhPH^%{Lo-fPCM@I9kxS~3rz4%PPNJk)Atsd_$gs@yK$cFNI4T9uAa;`#e?oQd!61mc{#dKnHxfdnT&nJx2HU?436 zLiI7W6PGVOA-4;sL1oJBPX~Dz6K!(MA&j)>hJ*!H!cky1U?Aj-%BDohi>)0$@3FD)H?dvAO`PZ{vrWH{s_ zP8cjgJv9Yoc95NUh(RFHyjkWK|$AQH|k1?nz(rV0vUkY|p4{eY)L-hWs6o$IG=^uM5f`raL<#_jr0d1BUUBc`y54&2#@rmJ)&MlL*%*o~CX{*9UfxaOyVVN|cO= zbiI+n_A%Vqz&<)k;1?nDkFo1KHJ7~W#6VLp+JxaBHM~MQ0IgL-b{j(;k*vm?Q+g!P~t_*T6c@2@6#Dsp*~6PUi*QRQvg#c2PB2;Xk3PCOUr64+&)i z@Q_q5#2qS?F+7^^^HKCFRT9@ZX(&4!#SX%kNy76ci$INO4}*p>W+?RJMLbq`JO-4CSd7~srRZ) z&bgpz|8l&`asv*?dMJ6n$_`REDm9i1lHFJP+QT%PTHI_zcrT9 zI!L<)W^k>m^+{<+bfL*-OMvyX)AVMX%#1Fy-+(S8JfWSkI_S>}<9BRW!x2@W2*ES9 z5pz3eo@*>-<$(bVaYj1ClPcp35M6V640$nZPMJ})2{*l?v!eiqiFRb;M5%c6!QUQU zGOy2wgm&LHZfcs=Z~kqG-zF{i>6t^tWvlO8`I4CE7Z2~=qb_{)@WMGFXU_+*%U=*V zuWVZJ_^M0ltbgnoI|Q4@;PaO|Snx9{3 zjBf;A8Xa8T;#>*v20vdq&v5iMq4h%L+26!M^_?adE`ZitLXh}!v7EVf?&(5i#A~NJ zX@q5K{H_TJyeW_00kMyZj%!~o@r;Mlx&QEI=h{63lt?WwUdnPH3JFZ!WIxK7n<&&M}12}In=Y#wO zh}F;iffQ2t;5_h=>(EDydId>I>r`mWGvG3S=-b4~kO-1+F3|geN-#lu%4tt^RG@%wx}v=~kN4II8*B zZ#Lg|ex`Y6-5uYGeh;{JhD=a5s;BBsD_M9n=niz&8jJlNjT$nTuL+PzWc}oEr{&AI z13r<@ltocTQ}&89sCXtcfSm6f{7o4QpF+UOOoxw34R=u~S&tZQ z*n21v6iYNJ4X@%@f;MQ1GB)ZR^Ou>wx#ypJ;{E)hrzfr5GP)wGZCS4|37(UUT+<#{ zYpcuJ$u82^hYzT)R_-4*e*ex#MdL+v9}XWof8NHYdX+2}-OpDH133fs6lw+kg_oCl zPEcb9qGqC@lsOo@*i&w{wm9fmRv?7H?7w4X!rTRGJg1gqJ|C#!8bpA&HD0mReTZ!;wKD z4nvuKbW(>D;*|uH>mXzZlq#Gk80jJ{j3!gZ2|Eu0G2zWI?#xyf_4wn>J-w=58`G(6 z&p|_@qAYzz0KoApQp0D^Rkmg8s!{55n-h*C4!?73dw19Fb)}{=Y==l@^9cJX&=*A5 zPvR`bexN!txR1fH1Xgk!_9&+5by*Z>tHL7Us85zB@Fwy};XuL|odpJ8q(*^{hEHm8 zm7QG(%Jpsn+44%!iHS-^lp>~lDJA9&3qKK~zWaQ8#o86Gsn^;n9kS|bESoni-!u62 zdsX$Ek|IoE?@z-I^#A&wN0NHJUftQe9d3;1m){FKTdD|(8l)wnV=f!c9OkNjHBzk|C09F_Jv5B(0X=HPnY&X3>1 zu`~FitwCgH+J%BJ$Av^df`>1VD$;+_@_48%kGgNTGrUa12?YDBd!{T*ShaGlQug0w zi?(eVcN#Ka;^SSEi*ts2_bY;e@6`DsNIl+W>2v$n^e~k!TK~eSIm+Rvwod@|bwPyH zZQomc?z-v6Z|knB^VXeMw&ZQLPtZZj8OYoTPwu#kDZydn1d74u(l(-B0a+|~jEoK& zZ9{t;euq^+3X*J=^zF3j1+Wb??w_uFVrz^O}!S~=-aZE@=^Xnq)4p+lQC!`H2PNWtu zF!CBxxb%yi3~55Jx*!1)I`@z`J@?#0W4`%8{SXD5Im^}9$Bl-?>o09UB zTm9>GWqsY)L(3NJgWLq+8O+4}#Pi!Y2N)U|1t~Q!T{N-H?2?4*WV#xTX(N;}g}=mb z5lW{SRqKGaATj9^+jMJ&iEYt5vCV`u)AftHNNLe$Lz6z?MIaR8?gw)u**O=zQoKd{ zD?2a?CcNSFworn}N>k^e>>?j<(!|ws2NA`01Is4vj~-Y%+BSH^<$8;zzS(JlI!09Y zY}%^}Su?rk%|qCh0cFLu>;tX|L%+<&`T8Ng-cjRa4}*=HXq^Sy_c2{JE;oQP19I)6 zPGU?=D3EH5ukstLL8OgF>~#~3L?jO?G#DNfA`LnxH1%XSQV0*3M#cl6Xqu&=DdElZ zB6R*6C{SZ|krlObNu=2M6iI-1gqT&<)p8P^R8vQ_8+RCJN@8eW&ob1E2`exL+2evH z{iJfF);2+DuO5rx0`J;zANvuR3c_HjQaSbvK4!%J*{Ja1<6ov}#?0O#m zaQy%T`mM?wSUYl%zu<9B&3^jD&8JopTmS5R zdw;%qXz7B3`ney#@@akmuzXGnooTS?J=7`YLOf$QSkllHNjru7A5cM53TqICGlCtE z=MaTqNilLW9O+kmekgYe*Fg3zeaeZj-T#;9V(Z8&$Wk*hW`@)8I;hEg|+Y z0y%Kj#6I0uL{E>*tcQwrFVV9F{K z;Q50AID;s}RArgE_o66y`t(YrCva!WMel2B&6*$9)@{N3b#GlSrHcP#)_G8P%2qz9 zqw`)E?5OiigrC#caF@ZKL4FR{BmJ@D`yn-56&9KiOMVWy|5-ej+kuagNd$C zbUpYIaMGi4ffQ^8v>8*ELNRp-6?60+`I3mZ+U4*?AzDQk>y3u47Z+;i1DLsDR&_W- zfvHm3e8+3Mht4^>bjOz;zOnc@b&vY}qx)MQYgY8s zBh&8OyXb+TLuYO2-)ZOSjqk^roZBA#tTuz6k8K~;G{W$PTvI^3v7$5#04X1`YTURX z*|+G-)Kwd0S6)$_f}YKljqDX20UCyb>=oraG=sIYb}}!z3FoJY&d(6ID?6NW%8A*iSEEFu6gAQuK6 zN=`Bi1wsM@m1lCtG^Zjk97xMU>R8B7dQxKu9=S4@UNJAB!SjL=m%!XO4f$2mVe$t^ ze^Z2!&i_@)6cJrFNz6r<`qWyS`CXLix~#es<)gY>?9F}G&zNb>fXh%Buwa!DVNNtA z;#3NFqjJUyTdOdR`~9Iz5fO?e9o<^Nb(Bn}x;F|Oq7BXu8Ku|BD1ioo4)#C$pEr7z znCcuv)fD7Z!)@|yz>hT2(T<&f6e_h4H1H+~Aj)23+u|JQJsO?r;qxL~-M#RQ_r3iZ zxQl>|{#bXp?yFB=({IM!()s~Ih;t0MX#D;LT&(5`02hlh;9*@4Oaa`fc0bK_u@J{C zeughqj}3)>ux|i)M-iSblI#MB*+zDOd;#u-vC8TJTua(1`<=gP1JJF^(g?3Am`Vq{ z?(|CQj`8FWOeE<8uuD=xAbFxVuUH0l0(c*^bU`hs5)#(`&OrJiMn7fc)noq6-E}zt!;0s|2DkDouMD=Bk!0e10X762f*SBzBZ3RL(Xr7F!3I8z&ZUOLX$ZJS zLNQv4D0boUz-bHyBbxXxP7a-WourfF5h3T*i+kq%tob-sU3HtqN~|4WA$#B%BY`yK z`YQTQ{9$DAj3%@I7gRZeBf?4~c`oC}0T>WzGAAF!A zKnRVXtgoG3alD1q8$PP3<17!=4mJH9D@Fv(5DSK4+^PaYTx1@X1sSsA_9^G@wr_pr z?G?YN|NM3Ko;Nmmjj^SD6}zf*YVt%c#S8n_sa#^vuxG3%d95`J#VytvJ>H;a0OXc^ zS6b~5Vk9F6S5S&jkD_qW!F2&3oUu4JFFCwEBY8EqTy5QrGhs z#NuGb`d(Boh{Gb}qIyaELxldW!o4FmR=TouZbOgx*&@&>$M_suaxbp8<=;Q#G|Hqdn&bUgyP9&Tfv9q4+v4Z6Nd zI`lea5Sxjc#;A>B*LTj&-M*H1p6wtNFXSPY;Gs%4>PUzycf< zLgBPNlLnqW4R+EDTG{H_=UAmfn|YOHlq?Ph%NZ0R41dA1H-^)B7e%i`dlVWb=g`O} z@C7E(Ab(Y#L2yZT2hCMEO1rrezCWiPRlilIi4fbe7dPKOWht^%b=&vtJ#!6f{q@oX zcMT_8K5V@OoLV@m!E$WaD4)o0h;(BwQ^tj7XhLbDX>S`{AyN7xfylVte$kG`(^1g} zxmq4n19A`Qi9xNANEF!J(J3wi(OD=~TlaxLWoaZT%Sso$8Y>OPP^SGR74|V~fB*w@ zu*;N*7RbQOBY%~n{2{04k-r;1XVaGHQyxIxo3@-n2L~-1Lb4@~9b~`L4ZnKv4f#Vvl70gDW31yDpcLZ>-;b6U z0T8h_7~`n){Go~Rhj1Ox>45@5IFWyHJHN{T42R}CClhURF_#Cp%qW|bQZw8`Ul}cy zO|09KrIaYot?c^5#Ikoky(%JV)U7{Hsx18?H&1+Wq}#TgjT#^5t9}Dd>y+C4n>3a+ za^zm-3iJ>*1r`P!t_2d`5Q}fF30zLmO2!iyBW*;r1(TzrN}0Vm;40EafeE4KLS>NA z516*0X9UYMx*ZyGZ;T?9ilkQ~+ydS|5-9=t0!(+eGR;gRAygfdP)$Z7wJ!u?jmHB?H3X3SKs;ciu#*X{dlReZOx)b-ktIEqmO(z z9qYFZE=Mo*bM=z?liKIBXd;5!7t~EsQeLmdWUPO^_U7B_D~P4n!?s|SBVy@j!`ho8 z3UtByB9SL`fx8HZ<&x}C<;_ndk<90Mad=RuDi_MHT1D+tVuZJ-e z*4pea8J=Kc&5LAgksoHJZ+MTuH!%B>RR&VQAt0LbTg=vae*$3!wg+;%!PJ9=B9i=@ z{fQJ*-u#XjbYnw49wJ);cF{ptIx3nXjw(vSU=$OzOl!o8R4irW4b>J1)nJ+M*r_Kw zilMK?PgH#$EX`DU>>9OV49G)^{Dr`8(u@KlVC+5;MCTk{XLBJxwz^4r0w38C;R8zp5 zF^;w2m1&Js)M(GSNxRodVK;M7=5k>QVK<|QDou9o0l;idUq~=Lav}ze$X)=xpmzfR z0S#~zGO$3|1tz1?c0sW*TUZ0(xTWH0VfXL)r+RJQqz|9^^32((_ue&Q>cbx>jgBo? z)~CAgE=PDZ&{;PlSv~8no16<-TWNHvyw^%KC%kT|wIm7lAoB zlI-AVf*Mj9-D-qyt9bbIinlA!g1+qTJB!-B&{Z6NQT@L9&G*j_@BiSAthoDb8?dam zSY9cby;hl;@Y5GLJK`JF%~NaD*1vpJGjW;-`+4YuIVTYR;kkJJgoQGqh__GSJQ#?z zYi&4b@E6i)(4xTKivG@lpNR)F(447k-i61eU-Tf~eDPC2S`F*4P+WiQib3 z6H~2)MZ7tz1yrag!ogAxBh;H3N|Ay=5Qe;?Cp9rWugS>OgKqEFvb0zK*J{jL@BC`q z^Ti_mz<{Exrujox-acqRe#b85uhuBr?mThlb4BX+2Rm8zggt&~$@E!KZ%2RqUVMi5 zT+KQyEVex%^RGNHZH{|iQR8Q@WiL;X&rZ1b zrKsKCoTnlqa;rR*HY)%zE4#CQuRTqtNa|5XGfV7ON6>H zf7=FQL>xd!V2+5b#^ALfZ)S6_atj{{Y&v^46I5U&T@JqpLZ=H>P0KSCm%#ydLrIZW z#Q{f&l-_BLoA>D4srwxdY?`)y>8Y~^(^I-t^y@Kr;*!zrl!FoN7rgV)j`7X2uO2b3 z4QjXgi>tnJDStpH%zGez7osZmz$*=y0fcy2&M_053zD?~?X=Qe8@)E5dwPslrh!60 ze^l2z|DPmU7@rG(5T~7RQXt$w-2~BwHs8S}LuDoQ)L`uOV<0`d7rE7a8Fs2?z zcua`Fp0OYy56qp(PJ%)@${Ims7aP6GAv+{SH~qFUM!zS4@A1$p5)Um6-$AZwj7`RYZ+_T11FRb8glZq1;YL@x#i6=gGq z#qqiOGAc5L97#@MSG=JeL-tc8;Sh?!@Kc;tJ~x#|(Yuc{I_HcDnoP$S zx$q=>iKWus;TSK5;x`i*kcYFWA-UqFu(Z^af;r#a-nx~=vhw4{o)*qdl3THG0dp(X z8Cs>LX4vZ95_6+Q_x+gqH3W9M!9@KkafWmCm^dj&t_xPhgg8KeK>ffv21D*^uZa#{ zkV$xra0~GlaxN4LqopGN!1(E6OBwGp0H#-$P5hmKwq}q|QwJAxn(7iy)-J}qp^}lB z=CC;(^cqF4e!Q=bh|nzzr-tMlF8lH^pAGMA5!z4MDMFGaTEC=Vve_f$6>3v$otli$c4bN1}+$e^d+ zyKhcJP|vr=FIXzqZUDo_FOv@on9xzPSsp9TUf{Za@0%oXPjk)bQQd-z>L$ zQDE@rk?)}6jO`eyEO^y!xG&+_@H><#w8iSroNV4G8seNsmlOzeeN6o;g zu{3^5iz_jDgRrpdk!WT5n|8b=;)Ywhff+z`I1OeX)$UD!?ry0)!zUSx1DIB0?cTT= z1CgmlxZ_f!T_vt``LouR&_GFj!Fh6xn&!wgip;{_2y)Xiu~wrKw(-3vDXCwiwV&oiB`mc5TO!*N-mBU1S^-Z zsAWi|((TT>@7=s(>gTK9+7ml``nEe}45{cdA=qks3AJ}b_CD^1WRX_joi^wjYpxgzqu3udF>DCvY9Y6TC zc9DtMX-VpCIq^&(xf+i{uGCj}NbgD0qzNCZ${K46NK*C|Qfpcw@bV5_m<}0;lVb%* zve=%geO%g6KA=GELH#w=NZh`Q%b}!b64o1E5AO8?;@d!O@w(jN6Qs%s6#t|MrPKnQ zV}2{eo=`&Wh`U*8tb`54CP-xCrabU+<^3nt?tk+~|HKD|4Ig&5Em-6X8Kd0IIymk1 z(Jyb7+Sd_8YIF|8LQZ24N5>PUmw2W*j&@=P62JvH`B*0uj;SHg!H1kY(F>q$50-_x z)&n{DFv`hCfFsPygzb8;jEsDWOdMv))#gFmv5!6Q&@0Jmxko(rQQ1Ak9iD&r;HOK} z%e(q4O!{Z(s&(F!KT=}0_dI?4BX$34iS#`cL+bI#hnT#S1kd4S(JbVq^ zX2=K({3EFO$XtB=R?%GO22lt3A6kZaNOD2fL~sv2x<<#TQpjp0QBlVmW#JH}3h4 zM_(PHQN2q+LXsgD?yEx?G!+3@N`93qDb9w7481)>Ti`@Q1{(O#&$xRBBa3v0tiH95 zdDF=AO3^$oa=4t16i6hQUX7Iz&SXBcNGb^^5LH@(X?`f3J&=*lKwV%Ij$2Wu01XQj zw7sd48-zo1!mUe&5CSVwj+tWfK!QFcEum>ydVYC}?H4{3yU+YQ;?B0Wr}Z3kSNE=B z!{`CaJ5^UqQr-?P>R!>`(R%mR18}ppcIfuh#C+vS&n}|ND2mHCkH?(F$m0=v=Jm-O zukm#=&Do&q7Q@8P<=Mde&$k^> z`9Z4=EP5jPxr`kvD~ejTnwPoWIrrWJIocf19`~;M$A%|*jjD^?wT^69@Y-}`sGhBGX34QXwU!mcGyAGPdNz;4hRssp_WWF53#1uRc}uL9zL2#44G z=S~GV_kcPTEYzuBP^oRgGupzCMQO`6d}{MZ(np(Jw%JTugS@2&rQm38z2>+VGLd%CXv z0X}S+Eow2`M)naowzHNX5DXqE#VFPB+;2@%oJH%_1<`@?|IpTtik>z2O zxB^+7Kq5@H9>7mUA*euqLTU~7m>S(Uqo{mrib5tw2NZ`Q?5MP+!Z7en(R7m^Ki8WG zkb0zI*>(Vc6BUhj^dFl73#}5yuOvGB!EsnW?0@R)@`t&QaG*U8SB+9@H?9m-o9jK} zLQ1*KtoZrP`9rj&aH~tlDcf}iStjAgnUlhAI}OKNi7s_*50E{EuAkBOglQ@7dHhTq z^kcCFuy;6r&UT*j<%W*W@^x+Q5arR4hoe0DYh)u7psr?PLIDtf$jHt#XX+JO;* z@fa1Pm}8lFhP*@hj@Ltm=;USD9pr*X=yZHhv`}%F6iV43lz(rG_0VdEghjFBhKmQj z*w`=;bVeVpQPp>UPQ}exAjIGIPg+~|gc#pTB~t^>YbokrTg`_t(E&KfBJ#wV%jp@& zVG>xDLUK$?L)nKX&)~Jl8 zWDQJCp9L{3f-kK>jOu&T*c%P?()tGJtp;n*tD6iZ1<4MWB9`tDjrMt`Ps$oneDCfV z_f8u>J)!V?ma|{qxrY{x9#%N4aLCHnYCf2>@8X8Dx0h{u;Nu^~A0kYAc5bvcG5bCB z@%`&xoj?21k@CVG1OFkO`EdENCdvNM|NiM6b*B2SrB$N_3J1w!9I!~lsRTA6v{aEi zoQU6G3@Q!iCE&CJfDWi#qbIZh`wsHgl;ma=(J&7+1Fo!MWq@N4jjhf7pw%^ZT)xIv z0Ry0}8sGp>E;!Klm+iR9onRI#^?%j$w8ZljjG+wjhJf|6u-@6`Krq(LASAfK5O5cF;U4`416NK|~`R9H9DLIJ6Y5$GVObL-4N zMhqYs_jB7YlTl>loG!9I@kWpHVB0?PV~+WP`Ui>(D<+KXA$}EW>&BhhD3*)9>YBRq zpM%(PDD6?|O<4+G%!vpE(?iJCdL6O{48KKW;)H?aiG5~5su~!iXhQzSm|qni%;14| z>c2zqqEYOj4TT!Nh~*M-42N|(at~3RgD2wvZvr=0anQ&+^m3V96buLPYcRb^Cs_M! zJY6v&Uqj=1T{>YDM+xCXBw+>rKT-))i(#MzVxj`}9V8$uOTi)NW`NK5k+V~ao@1VMZV(5iDO1e3d zC)=FW`V-Op%`p-9xga0|T6u$F>IGzkfK2&SDWOgZg2B1LaX{2(l=!0jAuJZFr5*?9 zV-Jn+1Kh~0m?*R2k%x}rCOLQ@B@au9UiE?%CWFzBeD1{1eSZ90uYUlkxT%yN+67|> zGUVru2~-xOzLB@-3#B9i+Ww^=3B=;FNj7TC1!Pg)bO7Cundy~zCgu58k* zmv+tgdi8;7Bxt-7XAK!O^lnPf96MI6{uul0wKqm3QsNIU4i@z}}Su zx0W7=JktxfH`oXG>5V8bG{06wI2#enDXqX40V8OH5kv(VyB}qIZ#s^B$X4q`Ou^eo zV8J*wPQ9V1OS3}i^}%#RpXn5RrqL^+PhD(3aJMUaY97ocJI0 zXRCS@pn5>T(nS}v*`9p+pUt|y`c`_<(X=Gc{)M+Is+$BGn2S8tNAS1Ps6URQ^E6FH ze~Qk*#!+Q=v5Y*DCYfX;$C0H$Mrk*=MkFK3Iq0gW2j*!IO&W>DL$44GGzX&bMG+3h zgbf!%B0`7)j9@%4gUCiT6c7%?f+B?G8Yg9a*RkfyQ>aeC`N?)7;lQTFUGnbkFn&{0 z@m!`l#x!+ot2u*~z4Xp!rqf(P{PJSy?#PrC^WIF#p7dZ!_JOXS9x7KobXF?dTep?D z%3X$Uq-4_JWu+lHvrm6ZS!;*YU>c5`3Tk_RELl}L(S##tJQ%-!Cby}Y(wI>GWnNz}}2+Trx-$7=%_QKFNCq0xk)NEi5_UMhY;V$tNm zxT_nbfiXXmlqI6kTPHhp82b5Loxn{s?pTtom=c!ah+0U0l$rZx+{1dq_~uQ}8G5GKvD$Lm0a=bHyT2E=(uBA2M*^iRI<$>T6<_TC>!cc_}H#l+d26oHC?d zEv0JyJgR-W1$@o|4`4n3-E;xx`o3Hf_^SGnkT*i;8{n@w^rQ7)+(RUmL;8R9%kf{< zLWjSusbzYQ>arsjHr~7z0ijDl8_{PLuEVr_3NbYzXbW=$#OCyyNp9q|`J#xf12i2p zao3FKo7)dLko%M10Pgv!LUa`tk@VI#o!eA=es>$SwpPTd>Uiain#_jq34&12A7!Ng zS($SERl>*s6PyUPPB0tNi2%kQN({O^-W*C^RScNHHMuU3nJ;_SS~dWDK_mo8W1ZG%@WR7=I7Srv6-l;=h~sFs+{ zsB_STrCeVPzZM7^)X@_S+cf#uA|j(mJ~XzO=zEy;FzU0a$RI-=>bl_1M!y1T6je69 z5U5JLazT+I33TMUAgIOvc~f46h`_i6ut7Ki%W%7N=tbZi3o4QdU8Z;v5I9DVy@taI z5&2E@o=9gf=R}i`xKTox5D;=`y$wZ90tmWMbzb zIorgT)&CJwR?KjSv3K32u5)y~Z;HB8bQ*k{NsSa|+YeS>HEvQbiZJ-IK+{+;8xB0j zX$JVS#8F*kuti1z9tz=5y8!JoUn+I>xDzZgpN$q>_yB~el%52tUEY)%ye(?$&}sl$ zCs)9!2-v-C$g;7{H4vp4pHpc}AzvezUIB(7848%aXdbNq3Cc|eZzBq9_?CE9t4K(c zs^}z9>ik7DJq)=mIB!I#fp%uFpMW{Zk_ypF>9X6V>7Nt&hloH|Kads^ir>Y37IT#@ zrxQ#g64m00ds{kPXWYS0gfIQ=@$i1*T77W&So<=ydZ{r9y2x(Z5z<80pjGP6>IdS` z=cI|{b8y}qTGF9zlCF=0b+XKZJ|-i#Wt0;bb{I$@lLH#bLPxAnWlV~P(Al=7Lf$f| zMfgfkhBxqTA@7@1*Aq}(9jO#Ba{u=_Y{oxRX-uZ&NTOG8rv;RHhmqbgm5%fV*%rc2 z=4FW^HX<)A3(YN{Wx?{GOp$~I2u6(Iv%q)Mmx3}|H<$ul(Y2L`7i=6)9)Z3`sw+DW zX&z4cUfPlLy*y{zcRO;MtAC7F)~`g23z*pe(t2mN`|oa`^=*f#+r{vqnW{(AeQ~`? z?PQv0`3e<@O$Kk5TwiNsY}@90LqNfScNw`=DcTUa?i^E;KP z423lmKuUnZ<`Uc>!{K))HYHn-;`GPHV=w{irL{#-I+wC;=vgl+&d8+sT||uNj^a!? z0mAeib~8cG0ZT&8kbWB>QZsseAZ*9CHtcEN{YJ)=6%%uM4;auqzj5RE)Smt4EdKC~ zMbCpx<{z8xnbT?H$c}e+Y(K5?%~daLUbi+i@sSx*$LxLVL27uP5!2(P*!#h_&@;FIqa0cyOsVkwU~cq!Tf_DpFP+xjKvLLLwm( zsbTF_bE}F|EXBmDP8z!KpeR3nRk-z`+m|-4eD*?NU6>_X`NjOginYHfNg`Cd@w56F z##WtCd!2%35c1023tu$-k0<@*w@>r4Xxz^HERE`)MXx(y072kc=x_&?1z7>Dp_s5N z$SpIJGv=1hk`Q4cF7_(Na zJtTU)aq8fE>UQrBZ%ujN#bxnF3#RJWD&o6)5`1@V!$^bQjZ;_7h-b1pu%FS0do7Ep zw?@{q{DWzKh~&hr=PM293(;W|E>bVH9eF#mt_nDXvJV z{;5Z(uoU#TIOeX0$~$z*NyD5dV^v*vZ$@Q#yM{8)gO8P8pgnn z8egjkqx>?@6@@1+9g29ask14-3`EkXZ9knsZ0j4a3cc_&Tt{L0e5@aUDG2blrsdAmu}^ z&o}R}GzVXJ4n7kMG*w9^noI~Lk}Aw^;2DK-luR6qf1I7FN1W@V(q1}hHPZmnOhPZUHIab^gl9|mmhgzdhpGT(B9Sv4S1^8b=KV@bpgzJS}!Hd&j z&$OV(Yf%>dU1aTdbZOJNo$~f)8`OWj>*(CNO74Ash^(zO`TO6*Se@<%O)c4x0P?Fcgsr86|;mQ5(f6{U!X3bwWdC! zCrz_VRmgMlv%7Mu8kr1XfoI1%eTd!Jw$dJ*0Pltj za%Fg|!4r7)jKH%KHi4cI=a*g49$ikvB9qE>2c$Uo*(>h<@=1I9!n~H2XJ5H?!rq~{ zptbSY*Uz^t%k9-UW!$WyR_-=U21HMoE2>@*sc*;SHEEum`qOp{e1EcOVSY(oqcg9K zm>t!=w24r5^?NX`aZ2ZApshB_T1(IFu3J1P5Il}`j%aIxL&ZD;otHoAhhzS2fl zs(&^d_yNBTl|4ztNDQ>ISC+Lah2z$iUj0Rd#r0_bKdzy0h4au*39+}O6oA-?p_Zj( zZQC`>2Q(+^7-F(FqxI_O@LRJ9f8g!vtZdQV(upqicT^@tW%1I+I{gW$t?+w;&)y81 zKU*s>xsq7bslbG?rmszBI6$}c$H%mHc>4s-3oSXQM1gv|s5tshl_u^zV+8=d9g5OO z;c+j`fM2n?is@)U4y>>R=lLy5Ulr*GWGQOeuKQ1y`@7xmTmJq-^;M`E_5IJ^oj3T! zksp4id>6T9dg;_D)7mGdr1Y9OZdl&%_{5+&k&cY0d)oF{jv`fv_~;@Psoqzg*sty$ zF~Iw+ShioUPpN0sh^r5DC=!vDUP~9J=cI4&H1XW4ZW-t)b=ZR($?kq#%PPQuLOltn zX)D$&;0D?ldJD{D$t3+kUe*S8(}{W><=oK6MyOtvWrPQxx@P&(8mNe9_CZMVDn{22%mU!DZDubAf)=D@woGVQI<;XUHDs4lcSy_NF#8J2pk-Zp;r3PzZ+FtN76A%Z zCcq^XLoKtut&F*fVOul)n|i?%k-tx`y>+-WTf+xA{2Rv#5ZUMYPwNB!`d+9^{+$>oo- zx0N1#=Uer~*9QzZVZLqI;`HqF4XI61r$U+1+CrH^;*%RU?OrxwF6=Ycg{?`b3wJRr z`yVR9uvFf*1y!vyWwQIafK|1$Jz1u%4K0&iGVTTwo{XKpOO}jFT0{Ei@&4<=dc}?HCtbW-6sLjgZm`IIU8+_?jKv|-3u0gB zQV_eTYyN+$T$@+aFC2Jt(f38Xxo(;}!E9on%O&zaF!*RbHLB6*9AFX>!U^ikBb#f# zAp?lXEtLF3))$3;IMg(Gf?qjz=OWf9J03Zh8hK%LND_Z$*41zm)DD!PfK+$%w@j+L z{=(y1*N?bs)o>Y|QtC>?7h$3?vbXR@8BZslffAH-BHZ{4 zh=y>>)NfQX10%pf8nvdE?)Dk6i3-JKQ?6 zYuCGBJfw z&ucJvd^qM1`Mxid7g|4gYs}aC8Dt9fNfbjyBtJR>k^EQ!Jv3T$K*XSFfI0&^g6&Zd zLJaj65oy8Fsas;0tCL7vtq&gCQYPu6$MNV#!bc5bY*I=hg9r$U{gAJL{-`yvw94jI3Y ztGU0yW5X2_CM}3Cf_x}p5wIYvrBtiTlq|1_L@b^V*AADettuSX-Z0{*QIz)_d@0Pu^V{RDnXd!H~}C{*v&qNqnTaA2V`!3*mD zx$=OiC%aRf{D*jFLN=|b`jMeIm9$Q#Vx1gN`MQFN@&(3T+g{5u_z6;AcU6EzWT-Mm znJVs8+#O4N#Zr4Z7SnHaY>Ve=UrMvYHDx}hoaFmsl6TUliILE)*nR^+(gqKqdkSJt zvc-6m7iH}W#l3p1V<%Aypb)MrGyPfano@6G23;dB6)m!cT}v%`m6!{%x7QW)S+CCc z_3lumX)N&wmI94&svDLHfQ>v+P)e*OHdu95c>*b^l<5q2FG3d(oI9(Oq8G3N-JQXO zAkXzJbz`G|ork-!)Yo2~>t0I6T|b-~R%&iR++#{<>oFErpDG(ob$F`LqOR08P@cH9 z)IHGQxdAOE@d?j#7z-)TMo%bE%pNNe`x>2z%mw1YL~YOd=KOTsg- z8mGrk!NP%MLhkvp8Ej^2{Z4E3nXDoT2n)f|Yz#v2zq#b2R$q%DE%7%juuQyR)C}uj zOSis*N>S!K_+53YccRHMftp@p>DCWT2ZkNE?pB-mM*Q5WY3nb}2z%ZC3uP8@xNh>K zQN@M%9gOh08z)^yue6W+ug*tZd*h^0MMVWA*2sMmucH^|?fws2ni)y^Cf5}ewP}yR zL;75An`e0!^~R&H#$_OZpu98TULDdF30u zj;rNkWy9v3(`v^#vT8Cd#Z|A5AE$Qz%h~gM7x);D*=A#%%2t|XY>*ROf*D%ft`c7|&-LD97md~Abd1$_j8%kV zB*9r@ER}KhB}$hylI#I@;~F0R;ESKatTm0RnWJn0#{#9%p^PK*Fz%}S1(Pf2d!r(q zSSngGx#Aox6+YB|)O6lifzZw#5*c`lb8NU!XYXd~rn?`=SuoZ()8t^DUUFzPa%F<0Wmu|N2qLTl&_?(-V&6 z{r!js(P+sAdp@Q4QL#e(@vFzx^9{DHDX#K+YbHMT)MA$XRAVk`MdxE?E>ylVGolC% z97pa@nTp4G&g5@{%?&;FW)+b9v+^MSbjTmYGT_#2jS~i}2MI>LOxYC(lTj^GnaA(W zqks)#!%94Pu>FcLw}Jer^3V@!q}{~O9!fQ{1X9gHWjL3j-ws9#`#F)3*UUtcEMFaQ zMo&l*hE8NAc1~EW0j}VV7GS4LXao;A=(ZJSU)O-rPr0a~W+A($BkE_fZ~C9x=b<5SGBPsL550rU)|8Gr$v z(TZOo1M&<8c?M-ZTIa++v@UyH*@-fdmTi1KZR(v*@0j`F+Fkp<^xiak#F%TRCU6Gi z`i&<~ZfrhBC{Op8C$>H|c{uQ$6Xkph-2)G>5((W~CFfgWhgC`M1PUoZ;Uc0G6}kty zOn)UqGj2mrVoQ+5`AM)55D^TzNZA8+^Ard!ijG>Nh=^h(f;2n{WTV&sJwdrNRwJtB z=&{oYgl27!hC4;#sxke+pmo@=oLK=10A*%HenkSAoy@!_27U3>nLewlZ)})0WBusr zlCBR|j=TL%l>a&OhVlNr4_@_HV)JqJROtLG8wRbMiok=cy9q86tk?O020pl7s!75}>X#>8KFi_o>p6hXsX78WYbXD zLda+A3+U-0z+C7~aUz9;0ZBQ8F@cqap#!9rKW$9q2c>fMSf!~<5I-%u#;j_E7`ihq z9d*#c2dV9zF#=?(8i9PqA%$`f3OhuAKGM`r#&IfJ1<+mfbBBR?0K84l|c#UR&3KPrC!0+v4jLo z3%A`r!4q0j!=oefnpkjo*7mQdvi~JmGf+lVo5dWB z0wbnW!Ip=)MzBd=Q5J)2J&pd)jwvr(xlmIJn@@}qm4(K>hLa8I^f%P{BgUXNnwP25 z`8jaVh~FqeX$X1_@_Rtot)Bza@2@?_>Lw;|BpBtt{~XW`XRG_qT{cl&ii(I`MQFb9 z^O#fP!~vf;w%_>LXLJ<@WIt3HijI00K$q@pi3Wtge>GEHwpQR+{CZ>`>3$;wZB92Q*C>XNK?DhXyuCCn5SQvCHBfHWaE zfb4W9AdbU%q*O4HsPU8OqfnS7JT%a4*fS{bh5@5l3!A?f*R%G72!FzO z|FtJ()X)F@{+l*EI-*TI)dgwq0E6i##)kbRN6Qxr@!0b(g*F48NcHGLwQcC*ROJm* zMyX}8whPUIRP@0VlrKrjCyAzinJ!A@4v{bo{%=kj_osM0_d^7aAUUj%%tho~lEMt~ z`BgRrmJgN%mXCjV5T4Y4eBv*aPYgL*0P;i{F1UbD3o#V1PBK48#Z4~+1!ajqUZzJO z@Aj0sqQI!>KB!{b;U&f&8*0W)eWY>P`0junVCraMyBE(-B7CDR> z;A578Q=964#QD+dp6D2`d{O22)+IpVxkjAHWoUs|D2oxM7FoI!gM}vX1R1CXVnV-k z>@xx+*eD-FUd~26hDWET~* z3|=Z5QX|Z_Y=BTD5lRFA#|;&%1KTQu%*B|%3TqY+K@tubz68GeWf74dUjxPV@XOZ` zIYn&q!L>v#es0W_oRK2!S2-iEU{}o*g|OR-ew9HowxW<2B#~DQK3z;XaY*O+-!Mov z7Ui}_ZfPO9qPy7@CYK~7>u{M)cag(g3=~J9!`&7Z;J>7pRNQSL;kd-M#gb`K+QfdY z$)fg^NtUH=#k$@IXP=?TC-2g zj(%@f3+p7X8V;kF>cXII$m@j3(AJA3jMWG=iiwL7=l@}zAIxhA)m1LR9v*{V^E)mfmjB(crYMe^V3 zzpkAfT$$u+)_CWFNp~69Y#e)c-bb}JOTx>aReSSC#;WG+Vj+`Wq80(LR8*TKS~+Vn z8!5J`nWV(c8pD9^;yz?afY}8l%ey*;ET%k?8QUp64`jw1~K$O zQPW)2tcy)s#p1f=_oOWYb`E_j^e9Hy62Fe&4wj_@X!}el%S^~pu2x~R2+3@hUm;PX2Aurj#W84=(y&T7AfYZ^ zkS>~w6;fUxTogQZN(xUBu<&W1Sd{OjfGKee8)g!(H#Cg7yJ?-5qOEWVh?iuWuk}B1 zYWj_R8Z!PaLJfO3jPeWXa~2HjJ_CWupKlgDA3D{1uClpF#O@NKZ)!d+_db@X(9syO zf0)I9~66X5<=w1ovrs-#i zCO-=#78G%!x+uu}ghY0j&X<6YSS~SS8xczhD%V3q;HHrFk8~HHdN4*UtDRQ$<>JD{ z+23S6QTW6Fb-qYxUM6}O=Po=vORqls_~VC-&Fa49(HBmsOUE_8E9Wif+d}wV;*}$c zHwN=Hik6bi1ATM<8tn^0d)R{c6Md+9gg=kR^Mfl$ILKo8rEpN9-WE@WPADBoI3}kH zpNylU7snuVV&PC2*e@Ksmj75d@h!rM0@BSBfxR{v(k;Fe_Nq$x_~}^kMM|#mRqr-! ztl}%-Fw#V}aqj4SSL^$q+P3W}<2BD+;%6hJd4>33j6vXOS!>dO{)8*{nf0;gw z8LCcOJnS(j5*fi9LqxAcfg{@BZD{%v3k7u|Vex_CUxl4)&R4&sXjY@Dg@n@s)8i_r zxr{+##Umn?FZ&&~n{XGZWh>NaBCh#naSxDo%h!A(LaCZaP#G;96cY3-U|X@2V2-); zS!j-t&w|~+<)6jRn%3%BBw=sZf9qLds`J(E#IqdPd_fE_em35k`SpHeE;sYa)BG;2 zI@%f<)37;!w?-u9Z>G%wu4T44xELty00VVXBbl8yLM9CoJ1-_lEJ-H6tba+8(}5`NK1vvaLG<$L*E9h{XlsqDlle;nTd&1i-N&I8+kpP?0%ey zq%+9uu)$=ZZWi0QI8b;by}>_pJ3CF_iU5d$ZIc)m?FGN7S3A{zWBm9DjP$=h(EKK+ zE~_=N4iqKyK}IFuh^4)K6!GohJ$|v3jL_$okr8=Ze<33!Vn4kRJJM zI;3A+US}{7U;&Y(KK#{$FgpN`j0Z;L4|;5z50~|Yh%!JH3v8_r*aD--M~gbB#RaJ8 zeCBkEIvhEl;MWB_qYho*XCz%P6KR>u$9zU&lM7e;&uHpF>t}4ygG-kDIVj``O3N^qP zm5%sX)NGmi{wH}6{!+WaLs zUz^7}j1P^ApBU@+c6g_3sd91cwwK{KqKad3&4B;NnhV`Yr$`~|PI5{*$u)%ZhO$(RR80Q^jd(Ih~= z(v-mP`V}ve)JkpI~y82K$(k^0XY$ zo^;CJECZA`A~uEa=AIDZS-NcDdWP3^WhO%c^#YNr+TeR*W;jZZP;z5AVF08=3-^m_ zKm5bYs$thJ`?_JnvV`dB+ur&8iuKQ~&h6Z5K;@*(lj>$0#^>s(4%6-%Ib<#>+=mL^ z>5{$KFQVekbFZuS?b{&=pV{d>Xgo44I{A&1(dnY?$IC|z5#@h;)Hn$lj=s2CpNrT| z5l|Rg6>nRTA+lj)q!|gEk_HczNqkA=ZApenl#bMyWoSAg;MepO%e3QSho=nhQaN_* z=>kc{lkc%@7k9A}IQ*D46yYh0ZnP(5*yv@d)9cCxN(1t2n}>!uNEvj(0px~uWkAgC za%W>?d}@0VXDD%q+8M3LSz0o)sinRMgQQ3RwJvUu<%id$^ym;q;(S0kg7TyD*-xg=Y3ki4rwCt|? z)i(16zIA5#-S=Nq`h>@BOBkH>-OJ@;)5>3;H10|E?<_Qm3BL*cusrGCQM>Z_(eV3# zV-V-DQnEh?C4MjuxQ(e)HxwKes3XfhcNoGRJ&YW7D1acTD+2WmWF$4z9R|2XC~@n= zW8J4vf52q2VNf$pX|z4j2eFuQoN zF zLRNALq0NwQC zS!!ZzRzwuhDuuReD}l`nR2^q<8FOF*7C`}dAVEDAIHwTCCqOiSMMR5X?hz|MPzEc2 zSbuO|qY6cm{dChh;l|Rx%r0^ZjpMye_ZAgLa;fbeBXpXm3gc$Zrv8B&OtOeGyCT91l^CHOYzerVQ1fic_; zCm%vi@|KG8&pq^2g(cG3W;{zvgykDQ_4=;2m#VTHZFhF!E(mR#*LYoA!M4c7W!U%S zLT*vY6w?;r{T^dyh%yITJJ9^n7TmvK3rsIz7(3w@JE1hagdkifXA|L}9X55S2l>o0 zFCI}mXt`In!}7wNBSOM*ghh&Qi6*A21J0fCiscaFv4bCAzL~Sf7@&c(yZP^GYV#GS z2}I$M!KgG(I(YFQuvWM7KCJaUOT+1M_Z%o}61eBM|MZ@_h>yNHvs7e=7^CdTx9|G6 zcG`O52r5M;8H>d%cIxgF3q*r4kMEi0b}RYxqm)-At2p()1vFrogQ-?>q=hgzkzsHL zg#$T2t~9C*O|B4+9z`nvdO{Y7ZVa>A5Ru^&DWvxYb&d4@0OZxqt+%86JWKppgyTI? z@j>-;8CxJpq5L7nR(w6$4qh1GyOnk`_oc^1_M9qX;-qRWs2ug43*Hj#SfR1}uVinW zHc&|RM9qZ~_)ETg=biKafYHmSIsHqF(K=&}B^LdbM|N)}Sr?QG5LfEW|`X#TA(F#6-yX0E`0H(c{(7KO{MBomT)l>44cOyB z)3Af%?b?$~?~!ozV93X=O0#ZtB=*{r8^CpHXveWywx#+CF_^Nha)3n=8N>U9Lx}Tr6_&A|KnpO=zywZkA6iv{<#+bSl_Zm(Itrwj)4u$7zQW8$1j$g}#_(tmB%7%p?ywSHxNH$E*`ugu{Ls&*oBno!F-ZACyLj$e2>J25paH`bG>H4&??X>TP4RXFtVzi_OC{n$ zv(PV7zUT0g1%XTqA}U7Uz*nAZqOwq7z?gt>38a1aR%1viIBwx!Y79@IZbN`GGCB&q z6~o6^KF0Aeo{rQqnOow!Y4lw$F4fY1UYw&Y3+V#S6dnv@5na5v7QF)L9O_ENgVqWC z=}=)ag-6Dq7)qMO3Yc|EkIGk~XM`FOPUAE=&2s7IJY1b*VM2du1^t-JS z4O3<)BT!^^g&e4D3bh+67F28+l>GInlRdQXT$_F9M|_kx03MAsJN z*QI3!W=tcZh4w-~XUXr4`p$t6nCTRxC7WmfvD{!`K`Ae6B3eqRhvA})T0A+f;^>Ho z*CmcCR3?w)1w?o>{AIC40J=a+wZqATcF{0T0}QBvZCA_wisH|A);}}g8Bh4EZ*B|Q zJbGiza(Mb)>X`G`Lmj)LWMxW8{-U;7%^=;7m`jj10e}6iX;Vi=p@1u7BP~>)J&t8# zr}ZMqpLRiUW*Q7+(1D?bms#%*IXvwID##~7fj2k(lTSurkpP9KCo%#{0it1;OSD81 zgHA_+bwotc+=KH8bjFKgi;e=>K@cc3fmSL$m^S{Ti=H70tqci?<_Xe7mKi~H5#Ysk z7WA>?FI7BoB)2eTbtW2TgqM*nW7cp$ax4-rh$cs~m7MyfuqZ2J+4hAiE0RuChFbgf z`sa0t`q0B~-?{nm`)j|uU1WC{)T_TSU>5tKPFZu|%gY6Nb+yvMm>Wh`aWNdsdC}=% z*wTS*AP+7+!mPLF$p-s3l(}YJAEL*#(+(;RFJulG)eEP*G2V;7mL>O+)`gu--mrAa zWFWHOWRTf`YAqel)xwkO&SQU6vD2%latlM*Brq(xifFLq!fB_wvZYBE#FX1kPpKST#<29bUZaXsdg7KAo!8*0`Rj4$cHKFE7qkUO>B zlvN^Jb(FvDK_LfUOm2DvWQAIqRJnzy)k{cL1P#f+Y6+wrrdYF@jr5jcvq!vPlv)z! zV2n1^+G~$iR_bl&4Fm^d0eL;W5$TwEm?klW+5ZwrZ~^w*B5I=WMw*r*q~4H_x(ccW zEQMwxGuY(L1vV=u7w;q=QHPY|9fes1PLRI8_O!?F8b=ECTW;-t{|#GSK5$&UsHmYC zFTP*Zb?h_hmNs=+J^E&J_?rk>w%~=gyG_44x8$WEpB`{!M6a4MzEh{?NvE*?BAv=t zI#8Ynt5OMq7SSc{+%iuaQ;kZ4)reSN0&3Josu7jOfdigw1NjoGY?MUbC2Aq+kvXki=d z`rUa{{o*(29WU*9VETgd^HR+lj__PKG_Tg^Un4c|=^cZ=sqr2971b*eBVO5Z_G?r1 z`h^cN-d{ zrpmR!T96r+10xRsBX33~ZHY6GXG(fVGA2Fr%Xs?_U8IaNA!8S0oIzXqbjTPYW`~^c zq~kBk*sr)bthhxW?(-%_NEw&3`OPXymJ=fge~Xqr_)zs{!|r+TUn^?gFnA0WWWW7n zi@L(^2G6iMnf-1>@I*uVnS>6EK$oDCgO+FlDu+O|{Xpesn!Y8m2S68OJ!z@5>ZH&S z)!tgKF~}4nd@>)oD;S#`MZhmwPP`G(Ni=_;ez+C(5+Rl(hR_=lPahEYgmH9|Mal#w z`zwrV6u2i;VSMw_cm4qk_ks1d&uajNd&|aaM=&%@-PJri!T9DM9~)2Z0gQW5^J81R zDb4Rl8y0am#u=uNPljw5cM4=g8cYyFQ%3&09W!p}2Z>>^CchjZ8T>nkElpf)!S7%Q zBP;PY1SvflLX|8UVopU-YKTL1LNGkB#*yz4@Jbd;G?j2gI1NEHK)Cg2Z%7<9;&m7B z6~Xm${pf8ujS_mB3vEXluE#bmFt#nI8#ndQoeO4MRaHX(FV$|Ssh@cc7)Lh)!2QEt z=0BWhjDwGDFZ_apLrhSfhhq;5FF8<2Wt^q%cqEXK&cKym5>9kK{Ot&~NkT9fZLmqA z$tMUlS>$^G15R67r)jN(lC=Wst-Jg55BP-3P}prDP#qjw%oD{I=CIk#iV{6TU?yV| z?sr%<|J;0>aa|X^nB!*aW598Gr&$|V!+HV7Z3Y9d zGn|x7&n7VG4i#l4CT(QfAr^(s@wm+6dZ56^DXJB-jr1gahQrvx+Aa8WDu^ zQ5BcWXuux01>W%uy!FQ0#>J;*-v9e&_m)l%fPT(BY8){>>u{{>wXakMkUwnGW3C|V zPaIYJ3CIZj-C9P$qQTlnz@OHlX#sp(Dw<0HAOCgHU{;ZW0nIDsk#L?zsImxwLJ8%= ztWlKs!D8}beZK5=^6>o=ZoX~CAM)#3YM<{mzWJg2-R@7lD7FIh6O11_XvzoJsQ(-~ z7Kl1rsyL)K0Tk3_z+k_?I=PXrPihmuIAO~5Sg;GEumwgKxT-moGLpM*#JUoYMT^4tv=$hhsVVUA2f^rm zsVV*l%%z(0UzY{w$O2L@bwf@#$ls%?T)VD6vH$3~lkXe}LV$64wh0}=Gk<{fgZz5Q z%Fn;*f0l)He#NcV7|q^3iiE+B=dX9<_dj3WOJ|0rTAZY`3X#u8W>SR)`=v1n|F^u) zWTndj;Qyodnd)1V#Ypcnd*9%Fu37e-@#beWU(P=^7~bbi-WKQE1LS=^H^7*xjuLa* z=RF3QZpS)Q54}niuGYTiWcc*Sm%u4zV9X#E0jjcaN$K>)X!h}wx6^OVJ^w>2txW94 z7eHN_YynR-9havA?q~o97*wVRdxbWZ8bcL7yk5LM?Wz$j>_8Ti?Cj z`0>IiX>S)8b1jFUzX{4cru?E&rrx9|VY3?%Pd~F6636}4CF&#}COP?~mq10%{N8p* zj|fK~C6jOjEc78!1ydY${48S2Ul6Pgc*1zNRcyRch*d|2HDA93Dh>-+LH!9nS=B$go+cm5*&Co)ZFw}CNNQzWTz3gUM~J} zb}^ZmAYQ<;IT9%B3+9Qmpl1sQN`u_WT(gay4g6&=)U7spIL7xO7dh~7S=I`1wdh!= z-g0Zz;z?sSU3cL4BgQ{BKGFF1o;}8H$x3_W&qCdPBqMG5-8t=dwafYI!PkvvcP(3r zf`^N4CY?hKH=w$pGwQw6$Iy*>?qhyl(is)cPc@1grOrq{0@_PIf-(h_M*@BXYA^i= zIFDMGxV{6rI)$z;UN^6w#McjnJl)*>AM*NZNr!}DMSH>wCxaQ^n@CbdI<(ZFNHgpV z6hj5v+!2k7ess)D1&3b^TE(C1kP z9~{1Q--5;KbH(oFGlg2WY{Tw5Y`kK8K7L=<_lhgl-h1QZt>W=_HX9v6cW?U4xR8&1 z?Ghte`v`MT5_plNw+iLTQD(=Z(gK=X;WPOliEou~lWzF?TEsHSzxjw0=DdE1P`38JX)HmE7eg8>N zdzvp~J<};x*?u8(WeLwOrDk6q;P%WvPkqUp;m{RwEu-(bz2!)>Rdt#3%W1trpMdvS zEuXXQ;d9o#ORh)lNcYU^B|tY8@%?@*+h07-zfZN~r?4(vFwYO;>xbihr?5Q!Oy?nw z3DjQJWo3B)_2saN8mZd~x996~d&r|pP%q$F zkAjMmJdRPUny>%9yia8@-~R^8vy=J$&(QrSQ@%xej0NP>FqcAza+`_g1c!nk#yu0t z8D{zi);AsG^-W+QQ{X+(qhW3R&rnW zCCmJr*%w<_<^`yOLOdeL#K^;5eoQ;$slxaM0}I>-fE0xgg$RSHQc41l7C!?I;c2ZD zR-?y?*<+zVvCWFGaAPPPWhft2tQ(_aaD+#~3NMw|K{QX1QPI+4B@HWN7}B%`8x>5m ziiLP<+IL96l+go`F{IQ5s71KsaLD zW~^MlB9Wh2G5Rv+NV2k4?hBaM#Zlsk!!s)-p3r1Gvq0{@%6XVU&+O+Jq57OjcxEd- za~PgE3D$hlWk^$SKAFzrvBM}EUHo zlL$p|aWiyqIL6hb_l6M$*vfz7-fG41FMoOn;KOL6Y{RiC*Q$H2MLhDx)P!3%81Dpu z5Fa(RKDJT{jgg3u8|E;=dpeatrf&j_Rd(|4S}1QgfiKdN)7@C__$!sF&Y)y1msXMtP>Lt+-zdHIAatF>#;M8>@Ex18QCc=Vg$3?oJ#kgdn2i}zBjl_tWOJQpyht`wU0T@K9q z&Y-8vOQEMkjFf!dkqXYCwp=)45Qz7U{4aU_oxkED zkETBykC*Io;d%>xyPJeKR16WBx6eEMc}R8d!DADy|9(Qj`@5&C&K>yV#OGgY8abqP zR&4hg-yTu(gGf<_o_{ANqu-S`PZfI&*Pa7|uDqu2D=!WkIdPQ8eu896^$?~Y_d6RE zH=a_wE|P5u@ClfKQ4JxFsW$WCA=`vf8Dc7?>8S(D(kxyJYe0f}B|Q*rfJ;qTngQiV zS}`GO}Vf36teX5+H2*7oK{!ZfTL-5m$ZU`-lNmBgZ6nJ=v$|=#D=;krDdDhfh3v zdc*G?zpiFf&GHdq_G@DN8+Emhju8{iFYj2^Z}1&=i&SIpySt~4eDlvc4sR6pg(Ih} zGR|P$J`TB!0mpft>g zq#{;q!5$R(qLlrH00b3nVg1|O)Fkx}9O$Ua&4u~Q3Vd9Lk7d?|sV*TAkA;RCZ2VY? zttp;tEMcB-D$$UGdT(gpE(G?a7=Kk$%{npeLzc`kQ4D@nL*|j(6!^gmw&Q;iHs8Ci z{&DU!YgP5Iu_<-mPAGhD|MuOX^A>!N?{goRJaX;xmhKPkT($E5lEG3ZY!wQsfyC7oyNR$r1<`wdQUjRuEBnMoM zrV8&%pL_{Z~uw*fIY9?7VMDM9xR`U)Ovw$T4r;$%3sf zymjLk?=DOE(7wahjCuNClI~nKBW3V&lqVr34@)08ZujCjzZ*FRqQDs2Xw214Ltk=~ zW#HH(#mK@EN@gG_1?WD(eoEN{(e%{haL4?TX(~v7?eo_V$Vwwd3R}HF+L1}=Dm-e! zDgRUPq*9J36I5nF?@-0gt(ubP#2R5%p1YhJAcl>5U-Q1&Fu!JuCHAFxpVsW@8a8g^ zmi!qH+_Q0pk9FauW$BjK8-^uy7)RJ*p|@{S-Mw+}HBuKY?!9=z=D@m_qg-f-WoN*` zNiTJ0gG*YPJ5iWjAd3`EK=(%QY8VlU(S*5$j2~!-Ul_j#cV|$bAro65)1XF19zhf> z7!mk@(r(S!NM~1XG!!V7K0#sHe-#Js84^Y+mS(dvaEPsJ(K8fh;{YZKJ}W^4F*J`Q zLgX4~ugRr?p(wBr1R}^37&jf`Km^ORk#Y|%iIS@qK8Sf}_{8M8Zzr{VZ{KqV5;q!0 zFAbGna9&rqXzD!7Q`v96^7NXkr)#Q=nv08G%)LL0-8j^|Evy3)qnJm0VAf|KenfOAgb4b*N(n$Lx;lVvE^;9 z>_1^S*2Whw&#&y!P5f-{x$4979;(>}|G~vmw!zTbR1_7EaYSHv2xvfD#@?`4n(xC< zCc^EI_8Rb|VBdjdni5MkTe8$^ve{a34+f!oh^7$`mPQK-a7*UB5H1$XNGpGg=+e+D zTXe{kWE(c1*_1H@!xna(6BeBx6+|0JJ&8=aWIED$#tD&)7wKfUx*+ZeyiR8RLbH!R zOpGoH!#uci4})1j-po%Fyr=nan}Ift8eF+q3(Bp<19 za2b=C2d^>P#;rIogP=lGrIE1Bwo-^Xu|?E=o7qp3dAZ1L${rAl6FefI>4?MyThD0# zO{5WM0(c`mg`|u#sdNUR5SY&pDMh}cqEnbblgEIRue6_2DYc8Mpkq299KbJCooWdC zBfl#ms;g?oq;x&mz2nC(VGW84fC8EaT#?_eYT7-}=f8dZ#?vd4%BL_kfc%KFu@ee58#8NLV&z2vCs?>(ghwnIRz@h*2Ki+IeLHN~b=1Hj zKWqhghpq6wW-1GhirY?~-d;Cp_3s`xjE6RE*toxqv7%7DA+6mrM$-ZC;2c-;g;hNF zecj>GoR-oQ&Z$t$4WTil zv!N*SK`7l_?m}3)zU6K9>W^j63BQoN!2jP7h zy$nh}@kEkqKZbJQJeo?wSRv3!Jnd&W$^4f}RuO}g^HasfJWu3RR}CAVI`SJH!mr0~ zq1^Kedk1Fr>Oc7&Iea&+?J-_UM?ck}pO&&eKk)qMr%RrndQCx{Z~b3C|K=tR$+kQ{ zt?cC7^ivD}zkL3>Tx~*uvHvEye02M!U*U&)ygTD3QqEtq(Xv>)`O-5hdyf`JO+7t? zv6ZV#R=nAyr|GmdkiqN3{wY2w8%TLiJQ=;H}#>%QeeX+mm)KkJ)IdQEU^W6_X|5M zg?cj;y}7z+BbgEwce3gE{Oz#BB%58%qk>_HShxHq%(V-=Vtxl`hLeVXhWP+qP_UO@ z4x%W1zos+vGFZi*j}Od(f3LK>d{SoY>B}M(3yqaeJj8B3{YyV=5i;|_57_`4tbn{& zZAdrZ!||r!1sA*ZWWwlz2^KHy3z+%R?ledT3J*f(C?_BY04xH@4&N`i zsR*(txpiPuDV`*%CI&=D8zle0JXy2aBE4Pc? zVmNdW;Wq0wjt31k&wIK3VPLX-RI^vPg3tF6(Hxt=w#z!2+t=Z|Rq2Bu2I=&r?Qa(! zU8X(#ZfsC{#P`hWPZ6_P+H<^)u1_)FN2&eAg}?^|Kks-Qzes*S#tjkQhzY9OvHC85d&@4{QGa`Fl||?KL3_(+YrVg{wn}IG0pl5N z4Qju-r9H0S(tfqh@}%~bG4`&3>#u2PZ-FHixc(a5?Y|%WxP4rp{o0oH`a+u{(0;AH zO}2*|7I1&j^X3bd5Bh(&QYW8-6C&U+rpXL7J=keNO0>8J;lHq@Td~a{y z_txn<1NZlEQ2R$L>SfzM64ZW~y*6&J3ioq7FyF+%AthT{2K>50{D{!X44q0{JKDbV*3&jc?o@FsciAIneH@OkK$c8Vq_Io2=PeylF}kTFd3&9?r5>yK0h``haSEoX3^+FQlQ zALMvKd&^_2UwnP&-IxCMmR_u1e0`i>9CSaVzq0-6miD+G(nr~TbxV6oAJ#|Neoaez z{Y%zI*?vt+dwmc0hitz#sQm=iN7;U@zdgy5^^w|>zCoU>k3Hmb;By=6BYlrPhg?Y? zKMp)UDihH7g~^KVjnz)`_b^|nud#d~C_ay<5Bg69nvHTw{O!kUbLsrWlQ>^vIfwJr z+fk%##?&xd74iM2VmA1$9?UU?J*B5;rl6-ziU}x_6KkSd_P0w zc^#?WxF75btohu3+#d7Et^W3wLEInQ9{nfvOyU=)|782smg)ZXxIXotY`;3F{bBAu z*?vt>`yaXgWcxKi?U!)>$@Xi5+TY6kC)=;}wf@$=^OmKP*di=#zPU zzkaNNyuho8e(Frm3whyvCh zR^RP!Z_8$R_A})f%k8H^&Lu2Q%orrkaq|9g{Z{S!D019g+P)7_Kgjz*dy*$#AM%_W zbbXR1U7zH+Kd3#)Q??(eywlR2<;nLWMoRpj0{PgoS)Q`JUp`YI=Mt8uy#9DoK3J74 z3hQ4te%?M8AEE0@d<^T|DDyn#2i*TI$e*~J@=&vz<*!en^Rhk5pWCBfw#xQ=eVSin z`?31gpzD);Alr}CrClZOhvskDek9ld0{6r7H?_z7{S3?VVk!Ffg5`(<<9RynM_Xo0 z#0S8oh~4T?brGtJyQrq7M}Pwd{|i*EqRdq_RI%#_`v@x8Nt?-%VsWNe>^^+>|JUyx z&^7>Trvcr{_l)hPAgh{arCRQ^P^&5w2lnkVpYwoi_HX!(EzSH6`mjXsccQHt+pHIh zj8fHm@m)v0();397jMTb(i?o8SnnW<+1g&U1AGHE;5j)4;W2vtzzQbayIR0)M3 zQG$pB38-(GYRjITwQPj@&a1!CKByL1 z>c3V33V_WhygTi*J$J=WZSVD>XHEPt&O!S_TAyL3YmAYe7?`PgC; zvh&o>qK=7(jY;h+8{(&bxV27%Pz)FH(hjk_BH^oIi6QIF6q-8%u9K(|3Um9P5Yo!U zy#)zPEE~Q9!aErdUi@z1GG(Ze47G!NzmCB5!$DBSH_dsnPNZeFT%ROZM%|KN)dG_I zqHJd7HzDJm4U*_>BJaBRkBw$L1IblA&2o)E?k6M*YNzY?jW}hX z!hUZ04JV*W_zefjfTG-!tgRJ>A4C!&yx0C8jEat$LKPhMK6;;K?A^Sx7^Lp}`1)}bq3}HW$aWq}rVceH~G~`RN2Fh4qKX$PM)D*h69Tl!j)5e*KDW%AQ7yv*uIFWrO6I2zau zA|1+OFIo}xgW z{FqwryKbR!`eZE(u+D*QHRDl8*@v0 zRMX2Wcu`Q@)13@&6uc=UO+R6(74nQhvZscavZVF|n!nYj1ZD7lV)@limP~1!UB6)Z z_8E8mp-!*dcYgnRau8yA4czgYQ)3@JRzhLi>jJBhC4rP9`vke`|zrz zPZ)>StzCKVtgj|F%=moTR#DJ$?#{2qH{A9qx*2o*d)g*d$9ioA63Kk80o#c87Bmpb zU}b_jPWv2lXuKlaa^}?J;wWd%m~xRIVr+xO;)TYiYrSf2qS$mhm=u=5&d2vdl~HP% z_7T1hPpbKS%;U7U;`@>&1NqnhVGGpbhy$IhYhB|pW9GYJkeF6&^h`3~e}MgP@!}Uc zY6e1Abv1)lct!s!u5YNAGgQoXnxarXiJ|J<_n$vN62Z@7zMZR`TGXe>VxipN6w|ew&koJX!v74O=XA;YSoW0qNZq~+hhqQBR?LbWKv0LDI)KJ#S zLRE1QsIdb@37UGsScZTuDufWF;dIjG(t(99xomKyDTZ*BdH;fUi9y zG?2^)*CRzXF?z_$F4)VCXc>I6sGpu+)~qDh0J?q zecu<)H6965i=Zlz^dbO_+CT#E5O)k>t{DCpxa90KGd}VO1Z$IhhAx{iZN|h2LwjE_ zu*V(ZuP(z|QPla?g>OH*NS*pvpE1=vD&s1|#xwrDUp zGtV$Hfbz^CJ>Gtn8^)H&R29zih!pjUzI=3OWp3wdWT3?cLo6-1NK7-E(2~Qy;8={#Bz7$TpI8n`%CX zt%ODNM7RTtBc(*F5J!y}8EQ?EQKAk|KX`a0ZrQA&7lgO1rYEHiY3gEo-Nm8q9_4MidRD$17Uc$O1;RpqI4&7 zH0J@PH|6hLIzDsn9S^?Nqxz*s?pganuP#>%y5W(T?K7*ob|~)DT}x`bCVynN8y8L; z^JJg=u>r^g!6?cwLt!kHB)`N9rhT2uLTMlBj%u;4zwIpd|N?nNy zXt$l~V@J_K4s1x+`$Q&351+twuzgN`$B9k}#Jr^eg6K{IyKkfgih`brlS*%QVidZQ zsh8je_k^`5zRUpiKRnG-RH)P(57rrduQ@Xy`=+iFXTG$$Vd;HeuN%6#qHI9T6&?GH zP^%wF7Loa7^QNphxcb2tjK4mlR(9%s{WaaLq7-%L%_=QY>w@QtQ#MI^n6aupr>Q(h zL>JgSG4owx9M|}UIZw|9`#Vm)0<8tiL!X`BfoL=ex&W>`Y7`#mZrEKs$^EhEX9}X| zoTeB7OiNfcCb>|6qKKr9q9HBhz8;kX1G=RsM4LSphy&|N3h=q64gmgy83EmG(^f58 z=$No@_$bHFO*P?HR?SYXM0v6;4a={u?Nn*pChof;{p!c&7-s#I1lWvjj1?!bzB|bD zL9R99y=2``2iFZnc^MxTP0U_^^_Q0VLT!8=(PxG@J7o1|tS|gr{!kzE9o091Ye3~4 z2LSO7nydr$n?j?g@=h2ZQJV=Lp^cN;XeKH?lFMC@94JD9!P)}(HyMNzGS?qhjl$+r z*NY#EjmSdb%rH)O{<19=t;_*qB4a^3S^msCp!|In zt3sK1wlqAbMXGcL9y5f`+EZ~hR6c$fhd^^tGTeOFXPQnksK$m+PXq$KX#{LTZ15@-PSDgHR8k}{P%OZ|L}d|lTy#Ma z82%zl0C|9v>6Hy$>k29~ME_H0F##F-P>3j^Hm3iqI5={~&d%KJ+LLx5dw+V#-(KGR zWNqgMDo0O`&lZEQT%?Pu(+zi*2UK72-lT@xA6>k5s&G-TO;8MkWyb_3cYg|m3fF|E0IxR ziNN&=cQIKjlF3M7XaKKlEU;h%5o466ohk1}n_gsj%SxYsi4h-pLsLIKS%gj~L?@)A zaGcUYHB3T6qp1_T|oab!bsC~5%Z@NL3}aPX*&2#NV+a-s(L+T+Wm~q11Cilef;&}+&cgba ze;BVCpY)#jc)`{ezv?Qs$2>88afgqxKdKHd%BvV$bIZ&-6Z)Zk^se*9Nva+F%<@Cc z+eeK#e0+n-aorDxM4gqup6dci{qF z6=l?@GDWDFqFGVaiBv9{D9KEf^J|+c5YAT1%Up}2!WU((93`&&Q|;QplR8c5ef!>C zqQPZMiw+gTUB=!y3-7ppzUME07pES%zG$7$MM_bHFRN(V=5>AgKk~$iZil-I{Q`!u z^5n%IEt@U-p@}JoM3iBd&YA}%bzh-0tT-VdhmbntIp$`!~&9wB^Q*R~JvZ8pK2A2I!7E z58aYqpLxx~>g9>f1qDl+Z=CnW^cC~>{bNb}qQUoHvlu}@Rha;sz(&|OX<(Jc3cwks zs9E84CX#9Hi~}_f5yAViSuH>Yp9nH|b1h&->6G`~TB(Pi!0Dyllt}tkihx0n{RW8f zh>(zEYM`G zm3OLenr4q`W3&V~@z{jyF04ZCP_1zjD(ly;oxjqvyKncNS6i2dJihADKMofiMh~xT zS0qlXi)tedKk?Kv%eEQk#u#5ryy3=)`?l}f{!)s_sCe!Vo3FZ_bgTf50x)2qhGsOZ z$Rd$qvf?YD#8yoED+vptlG?uX>?joM@uf={B^2;GRGh&;GUqkgg|&wq%w3pE+6Q(Q zvFgG_kdKdSC1f_xE0=?;YF{!p3QT+^ho?V@AFu+jK<(@F?J%18Fw?d3M26XMF4Ci= znKTHm{ctxv48yO2%92=eaSU2zyc*XcJz;VA&r#S@b(=fE;iA?b0kPtw?;_G__e-nV!U3PkzOqC-?p!lQpS4xcfO z_GGKhY@20Co30yBZoPFaX!s7*FmNSvlKfm zVmpR~4)-!uS)q3zz$K;aAm4Rxkb3&^`JJZ>ni@|F0OVqEzM$D7W0E*0BsJRWa6%AW zJZ(C_^^%=iNF{4v%7P|uyW+}kQ&il6Z21^x&kzyfOwDOq*sg?5M9OlVyq&||C*L&b z{fMCW1kb7ng$z$Bq%Cpc$M88xeQSK6mP$` zb;n!FbnC8JUaPLD^(A%LCAmdot{izwyJ`7t^KwgEW!GLgVTN5j+WfT|-&`V|oYVY; znljxOPIJMn>K7L2zfDx;N(&gZ2p~h4elX}U&S5#x09R0T5f*z4i1*pcfQ_q#g#;R3 z`rM-7b1O6QTNTU&;1tESD?l(UZDfoHngGZX5rs6*#?Wx~L6V(U?uyICA?S3RXmp!CJ+=yoZ@}@wmQD?~f=$ zhH{+(?2frc(5^gDK4w~pPd8OXaxfFSVqz)gFe2383Q8uTB*n*+6jcs0g79 z4tj~FkZ!W*IG2-C@GBB{ET|POC)s7TS@q}EuKDTS3$Jz9H1rQI4DCPe*qXZjYrF?Cf`%=$XzRh`FXwh{Yd)0HuNXbl`*g}Mq#g%1i!)cCLcs9kb^`$&InIEi}@gQazshwTr%>E zP-Tm_E{G3;90yjA&iM3jM}p+I(2@9obYKV+gni)Ga?tMAFUf=;7Kmu4gJGZSpu$#| zJXB+re!b?YYZuJvx};aHCkB0V@{h*fckVoRZsolFd5JgmtiAttV*Xaq>9JY6UTxF% za8?`Rl!0=EMvpHK|M|E`KHX>7ZRESUcnFh!fn_H&J{^#muYift{(_VP`gym&vp*k>@P!cFN@;BOn`e3^BG`mzGyY_d!h0?BH0ALTA`U}uBXv(rc7Cr|U{M~!dQ6VEpLLD4BLp6dzt*{FnCu&%MfVppCZcjhqTT4hd>vRW-I4vQtvFKoQyuEzVH+1Btv z{S|A6Eq->>uq!){ZeM(Tx4y&GnCqtY`Q3;#q6T zkRjI%+<4tpRdrWGR?$YRR>HM&yCL?YU=UKmJ~Wj{vJ*<&I;VwDOaf{3Ce|>*33`Dr zC#^-MWg3GUD`yKUAubO$8s{WCG(UPk<-^`><0>n!>N{||r?$WGW7^A>upO_a9>^Fo z>fAqfy_!OE!gMi5FVs7rcT2#2Lcu--RQALU115yVxDagR+_5ZTcK_0j5BtCrXhCXD zX=$S?r5Ft|%RKowlh}sVmi8q?I89E4)3f%?G`D!}%yv{`F4cAx<)%PAe0JA2kMHyH zhq3M4_I5-Msi&QVm)PS-JG<-T@%=s73erJXuiLQ~w9%3H%bc-PQXqzolv$CMnu)g= zbi@xd78JF?+d?{mkUq1;aB^pK@!~X5a20g%;+piz28Q}rq;i2!tBbP3Vspl%WfWku zDgTL{4&7q2JDf4Gsc9LRZ39RutJ^psY9`Sa5!uIzpD$f~*yW%U)4R`$KUdc@$OPW2rpt>`&*)R5st(zPp^z@v}gi79D&QjLt zX_j!*ug>ELDN?vGDiPo%fI%3_^56~m^8t(n$E#e>D_j_%3AVC0I3nU)T7JbW(ftNv zl=!(})5KH8zR6;fVV%EmjM(No-YAlIn@X%=RIK-KAGEW1T zqQdzH$}n$$UMns{(DZSkPTSmkrTU`Jr*4`fzT9VQHvaUQc^#Aq_!rm7EytWDuT!h; zZ0@gZ_W6E(O|%!a`;4SHbUzKapGmMaEnxmoFztkZ?jS^M5c@}qeMaTzuMjkfH@;Rs zQUBJQ-t1C8LF)dy0$X&NYw=GXq7T76D4301`jGR_)Bp6@#SA0XI@p>4))igxR$vUf z+m`V#E-3}My_<@Hxr@s@T`;hVO1*J}%8$>+04u|0#DWSxh^TNyF=vT8ql|KI2;5B+ z#gsc1iB3sHr(99u>1w)CRx~ZAQNyftA$vR>oo7L!wyU!H_X%{`;x5IamH=-`9=Wu# z_E^AfhYygN)zxR&(WBjmnAkD; zOZ1l|)S3a?>nd1CHlCIX#`x^6 z-EtCsdv|+MdzF@A@8`QxR}yI_I-taT#rvM_ux7hEJYB($*$po%p&y>UuoDLUds?xp zQkL9?zWjfn9-i)3V4=-O&CS80<>^)ld$HG*9Kn=Y1NSseRrVzV{NL6e0n7!+_5)CZ z|3IItlTV#E*PQ9+_T~_tmwM)FG4?VxlGOq9N@=jL{?MTyx%KEcQ>JJcc|2ysZ zH)e{;R_X$466)gV@$YJhSzAqaU*T|f-2)ADcl$SIlpS(L>DtXdZHS)#YF25bHvf$& zCIrUjf1(zXMD+<{$Nxqjtg&ZLDe=m1W4>*#lb-VO7h#Hh&zlmBM?E&S%D@=u` zG|>%Tsg_?EUfLMZts=6}-MP%u2@S3&byxr2+P(xVsv~Q=mfH)9iiiuYxS|5mO*hae zqCj^GNN__$LQr-vKqHIWxFuqU`<57k#u&#KgJ=MWF@U%xF>cXBafv2oMzf8R@$++> zOoHA2sk+q{;y0Q3{^x&wcy6Dny7$(5>QtS&wVv{*n+@eVJ*aLL1Y`!)PG%p^WJ5y? zf2AQ(esh*b-5fW+hCB6IDy+I$F)*NzomUJ43aD-vYwv}J)lTbL8xvNW==pyC zA;Wu_E$oev&=ISPOom=^pRV;|pD*AeqoG|5U7>Xa?JI8>Dx%<{U11cZd&hc=^_JNj zVK-=jb%hp_lfu)?uAFq6257WoC}w(7232K7;!G z+9cn;nxjp^o9!jDGN0@@X}=6_+Ap2>Wglm?vK@!j!4&lGgr*w$Srpd%j0AmzNstig(CW6Nwi&9t`pKgMgC~ZVi{r)w21V+pE={hiGPSvk zi;0aG9}8O?SR0Z}(2e7L`KfYCS)Rj|2ekN6Kk`aLF;UCy=5=PRO9}>Hp#i9c*=Itv zvdKBc#rq~OWHAnR^9>!?1=F4yeed`GT-A?^>3#Uyo&8pZONKF(m1BOr5WW)FfVL6m zgRQNmaDXSYjiMbcd@VBzuj>##&v9M}U*8@M`^GYr@TJUtorq_SBUcH($=2G-;jpIu zMJ0R@vw0}OlN=RF_;$8;M}*ICOp(LkENPIJ5}tzgbl^W;2~S3U5YOkS#>2Rnlb--` zfv+u#gm(Q{l>^4vmLNMzG0uAOH^*!3aj|u03|q)%%Wu-OSmBZJ@^7C*7{^ODqz!6c zu#X^DFrYA4&y-1b7;XBEz~ZsutcZFVE0S| z^@4L61;=YINHue8UN?O2ovUk7{nWQ#@XDF#2Y0b0(SZGnbb-!>@~=hxSl^E=+JyR< zjmXr>=E%hoW(+emhVF2>0{&%k*zJKYhe#KCZ+yec@?kKK2d%M>!4DiOAfBNJ#;w>A zTW36^wT?ndgRMN~>vS}XPdEvSM>lxQ4Bc1#mPc0FlXh(KihR!uJl&IS(0KJgIWFJ{ zK55RlU`AOh;?lC=H@+MXgC$vrO|8NA1}q!DDt)+gqkBZ1xzGCx7;gk!kTPfzjBR?r zswlI(eyyRigxn=KrUHgHoeS&aPg6atF7!Ku)Ub#Pgil=fh&HP8Vsly)!ALM44;l*f zKzFbHux}k|&S5Gp9JS^G9_kV`p;zBtq59w`+++H|HiUIrtb-Q}GE zY<-@G#1^8n^}%4X2t)>RZ(y$%62Yc;3^2nxc$lwRGt`;A5XtAG9|z1;EqHdy3v=;z z`O%jLS4B%VyiZM>|9a1HnK|L7yo%C2eV6%h*|rUkZa4}7(*^2I6Jl!uyYltb9217A zNA;v*Qea2XDb}g9<%cVQ8bnd=YH*Z|KIq@^wAH zux*3JL*1(%@CBb^zG|Qs1lCL4VM91u*#sMypOPJ@2LIl|`ELB9FnG{YLi~B4Wzuu6 zcgb?Kj++qBQIvRhmTT0wd4mJzXod|AaHhd=L*oH$!6DGEtnC{J#{f3;;2)$z1ABmZ zFR^?H4hH7tdAwWMydtPaU2mA3<`$?}Eievu$Xv=g-2Dl!6ri|{g7Z<-8sKsKx-pLj zEmtj=nY^?x!Ml9AZ=5Bv|Ik3M(y;0gah7rYNBDOEZpSQ(Pp#=W=DFv_;DoZ$zJvPu z>%QwVu&*9wR1tZih5X;5J^}ppKt{xl5|x+R)T{VfP#7HW0|Wg0$U{vln-FEJYGIhS z&J*SZ7^|U>_b@OZ&-#Ws%i$9(S>ih5nVn--3_h}{a@&Kn_>%+P9j|)e`HXqfhN@SJ zyC=`@I%u`;|KMTd|B{FQfeee0m@+t6W6-HEKw| z546JpZq@fCFg18e)WDwF6Qbs8v&vWyVVPqx|s_RM?nBG*w) zFmW!o@!AXBQ+)q8Bz)qGIBVxrZN%6pzjo#gDee)Wqo;Nmk>fICuq;0b^6(2Nb6&6x z@EKI=!&gGWTz9=UKXJ^vALL>8Ah3Pe0P8N<#Gz}@Aq`>2lgjHcY7t~GEDr463NEK& zc?B^M1DC%ocwI1029!=V&NJ+Z6!hMZ_?W0Z!~DHUN53<4qBXK_O#jj)su@W$vihzV z^udO;ud4O8q125U^>rVgK1tD$;o~A!Zd}jWMj7@1zCxx8vyaK=6X4_NTp9|WOI53L zh@Y8sb7iZ5w9phM%pw$=8l~w9HaMIE3$W71*T5RhF!;37-=H(4yjEIK78h*4>=6=@ zI=}RV{CV9O=5D(gH=x^)-!oZBW5ap%gco%Jlc>Bw);X|N&FzV>rGva(w*BD|d0-Cg z)~JrNlPI8B2Il72f~C>?U>-f}L3PZfy0E2aIIGb`>zLEIz$_xd|+#U?vOUs181d%s#kv5_~OCT@M(BuhW3l z8)!Cgn=z12%6j$?FvvJ~5J}sD(e9J28=ky<`ua~TNvo$FdFc?|a|KVS|KZ#f`~LdB zeDt6Kt9JZgKMP`maa$OUCEtNP8&|XpR!OsQJF1*ViXmg!{0eKez<4yzLUCjjA6r$! zKnL~U2U9G6I0hu?CJ&Xtnn##DP`6JkKpv|hkC}ZW7~5dE42EPOlc5C!n|Q#%<_%%M znGWuaLt!v96#sPculJ`U4f3B+Pkr&YU#q}qY-NG}==nUazXsWU01*O z1S8H}*Z~Bxt#)R(klAYYWL5}!c{B0#6!Vl|bXmm?8h{ms?6f03W9jU~Xnff>f_EBK zY)F4FUUzn}C1z69jN+HSD1Z0xmJjTIC8PZIVej=Dri8^$GH)-MvU}6wi{%Y!=m9_* z_*MIx^nGb5^bC49=GhMczr^v0eV+s)>mcK9=v~>;9-HygxWX8>8#6z{_6#7dJjl6c zz>AF*@HQSyHE_wl_HegcSY4PwEw)*pRyqzl1=vx=Pwy0v?M3~&odRG$wSAX>taolg zJ}{5VY}otqGcaHv8Z0pnWJ@ri(Hl0DdSY_w*ofwYZxif$@d{skoVG`D|33Bf^)_3h zeH|`sJbdrxAqxjGS=_O|DN!jOWYNp9pUDFBA_w#!OLY$P!uucW8HfFl)So}o+wr1! zW*j^-1@?ccQJ?>2?+mlQC1Ghf#M9St*8V<|De|>@Fc^%C zDL8sDgIwL%T*64EUtk{;3>N!9seqMlu!e=5%rJmiLxri|x{)x;35SD#VM=cKjTs}7 zC!)p?NHtW?!Sb4io(4EFnUBk3-q{6}8wPC%;ydB}#PaRlo%PzpT`6ndT=mz@v)Ajj z{@QwdH6EH6KkbcK$%#p?%=}`wZf?o=#)6d38ZO|hkCRe&{<`d|ug$byPWEo> zTA7~r8dyJNY3Au;dvz)7xrM#4iQbTGC0wh7&(L-VXM6Se^BSCt2X}a0iHB~4t^G{z z;qtEfbNTvLW_1bwI~u@ZLFkd&{*|0v`)1GMZxIZRk92vkY$b> zDFdB=d*#H_Q3d;Z1BoxZ-e8{l7t4O)5lA-U|>2kE!TvUhv|?o&d3 z>%cvSJp+5gd|@|XwR#^~L2jU3(f~9W?v*pyvoKl-7=@^rhy4I~^aIL+=i8)@9G|Mj zq8gC*R=meyhVT=By9eHPRWCuW!nIJn1r^XWuo{WU{a;+_8xRh8!SjLTg}8V=u)Gi# zrnMd4{~`c(J@-dB!PAJHvjOLfSe0?@(SwAA6jtgNz&=?i;TrjDJz@!#g* zt|S2wmX93!X_|mWDfeW3OXK|AC zI#x+LQ5w?&Ru)+~=4Hvre?Rmx@Hd)0i&sH?X2Th9?UiEi8lWGM5jaZPN&4Y+j@jV1 z!ZnptGaLC&I>U7yp*Ao}@dOq@w;AB7l;)GE(tLOq$|2KRu>E9I_d!OgMv>|O^o*(y z{8P~kQrliv(jOp?_d?yn${eJPl^N9yRLRN&&;Q-PyQn86U&n2hSE^-jkLg~N<4aag zGF?=Uh4e!msWzZy)fZ4lvGOlvua{US9xF11X4q?)#pgZ577-<6<$L`Z=2xE2O z3Y5X0W92T?v5nP3k}t}lyHOI;OR%q!C{@F|?D=yLcQyDSPS~rN2G6^yd!iMP?OfkOmL-EPtN8m*P0VWyoaPQGN`Q$?qU?cgjz-4ZcU? z&<)L1WY*Zh9fNAs8-%<+MLjhSz}*Ns!RnhApst<^GH5|VrG4OsG-?7If2P-9{L5Ki zg@PP+IOPGerVr5*_0O9bBfoBS(Dzpp23pHb*-t|DqYHz3m z6Hz%mfxOl8;a!{KYo$JgxEMZ*i+{KHH;&bdhk%_jhQG zT90yIJ47YOHePK9*|b2N_sCW-ByUNP}%}C3BJLs%rm(`e$xy{_dOI06sbHRJPN+2j~yE{df2@W`Ooq|H5BT? zO5k}X&~Z>!SbZ7@X);5eUq$h-XVnUejsqEvY8wjF_JcGw!hKdh-hljY@(5)F@**H3-tob?;mDW+#J&{l)l zTqkv6IpqSjI@JSd-^jQ-Ad0p!q=l|7~>y!<>xnZB?x>&zFXFRaXhtVXc> zkuHFotk70sZ8%oOx1t1yD^2|gnyS7B^c=da9)mVW-$6Sl4(-t_1AYC>QLkx1Rw##o zsz%6x;9{O z21#rQ9DFfx6$HTC7yILV5!N4p3v@S7b5OpZZSN1?=K1XV%=#=qzoCP{PRwBFcT_v7 zpnZJ~+CpaX2yIhm;Gy^c^q7)hoi6lwSYL<~qRDW%N+ZCshuTgEjA4-d|+&pRI;HCh4d z`H*Th^i_V4FU=aq0Cq9ifE*Lq#pQIt@frDFTq?ceGkOk1KK(4TPvYr!_!kQGKhS%m z23>gi8EDJE8um88<`mpd0A9Hy=#OOJhmPIsg1*aQX%*;WD9CC6e3u40UX@ZEpFsQg z4%oKJk-QuZX*L=MX&nZ#^i}>5Sdf$d3s4naKo-$aw2|JF)KZX?ByE$LrJE|Ps)s61 zRim=2i`3UOR!yVkD{Y4Mii?j+vP*%>dY9dgq4h}fXz4nr>*lU)o*|x9o_D$>bz9r*x|i0=>{aH~;MMB&uzQd0OS^yD z!@tLlp4y&kd(H9o@J{tU-P_c=ppUlC@;;aPj_4#^v7ZD!$O87`f7a#`4;;gAMQE4V)(%k z<407CSU=+8$X+9JMy?)NHL`kSqo2Q@$E&#%nyTfc{Xc7Ip@9{z*;NBNKT zxB5@@Z}tC^|4;tE1gHZ%1NsMy4`>cJ6L2NqPQd+upGRc{dIkCf`Ujc<&4H5xQ*}Lb zgLI>Gqjgr@R9%{Gj&7drMcpGk(!1+>>4)fb`fz=P-X7!{)FWt6(5Rr%L0<*^81&dc z44ng>j>ChjE{=!Fb$w z-gw=3*Z9EL7OV~S3ib*14>koq4A~db5OO@^e8}~XyCDxk+CsIVUZGK;385*WIiV$? zOG8(OJ~k0kXH##}FjJ5z!W3spGMxzv4~q#)44WNR5Vjz!B5dPm_t8s7uO7X1^zP9I zM>mfCcuc~W@5ej}N8#?_y~2lt>%zmsW5N@|XNMPrF9@#)-x$6ld|!A&`0=sB#$FnG zYwY)9A4Q-D_lRB*Ln3q$;Sn(ri4n6S3L+LnR77ly*b%WWq9NjV#QBKp5qHOpANTqA z(c^bU_KrLpc`|BobX0UgbV_tibV>Bm=+)6%qjyK&kA7tKF~^$=%+=;r%OFdtWsl{$ zb%=G8)ntvbzG$tr-n7~$q)f<}P&{GjgtZf@ChVQiFyZ)w^AoO2xE13O(<{a&W_XM) zW?Rgzn0+xn#XOF&$LeBDu^VHz#a@hUjr}Tab=>BO;S={wY?yd_;`xc!C*Ga-U}9T* z-ZRoO)@K?Mh9p!Z+?`~dv}4kq$^Mg#lPjjEr*xjOerk`Y#ZymD8#3+1M4!aN)2B{< zFug5Fo8*<`ljNUtYew9RmKkSfv?eDfXC*f$pH4oXd_DQj%&L@-l$MmUDXl4gdUo=& z$&kg^fiCMZ0aIY{zZqZP$wr7B|lAJh#W({&Ppp4Vrtm zWLL?)l7^DwCFe`?N*|Q%EZ3FanO8E;K7Z?i-V5$7T(rn_(Y8NKUEE{w#U)FZytHKf zl1EDummXaDco|vNd0Fpe!&~xFTW{ZRcf*4XZ5tPF{AJUw&GDPBZz zoOw0%)r(ulZ@vH8)@`P3cedT%_VeorRZ&%ORa>jR-5#`k?e=eXHz?lPA4%|7YJNV+k^#`lo^LlUnd$(#w)-I@RuJfrI zUe{V*a>)JA&W0fkd)`kwj1D(^ko7^!5zix=KlJ=?>4z^h`ZVrptZ6*bc)IaY@6q8$jYr2HjX#=v zH0x;b(Zxq!KKjbhT}Nw<9yxmY=%u4~jy^cr)}n3kYVm3DZ!xu)TPC-pw&b;xwJdL0 z+p?`?PfKk}bIX~QD=l|g?zjAWOgiRqtnabm$Bf6uAB#Vhd@So&@v+6f`(JhJ$g$RA z501MY_dM=%+lm_X+EX1t-p*_~oSgN%vFel=hUzDcz~WQ?pMM!+-PX z(Wf_`Zu`jRqkSLu`grpv>Q8FU6rWjq=KiOf&-Oq2_}sShV`LgbE_~n?-^S+q##hj}nuP%cBmaAv4 zwqE_y)t|2Z(yDItZ0+AVvNfdD+#27S+&a6pptZX7V(X)8eXr$RE55eiTE(@E*Unz| zxL$Jo><#xDaW`siYHvo}Tz&KNn>W84_T};~FMfIbR^qL+TRFFiZ!Ng>;;o0b?6+NS z_qaWXjXl#kv>L&hPuOWdz)!#p1X@Rw-G!z_4s%H^;4XnncEesE@X2n1`lAZrrm&ZJ zw{T1F^{y3e70k5#Nx0Q$6#7ND&!8ea9M-?&qg=Sk;97*TVI12Bu5|FHgDVr+P%&Bv zc2=zhl!Uc1=un$)Ua}Kgg4|XDa;1oR@{O6(qh{p$k^;LMUnE$f)^1)RE_>&+k z8(cmxUy%;96lgXog!>urL;>d@mg5&dSSGA<&4xQU{Oz)T@ivR+-@Ts%cS`_8#%KG7 zM{(Yrd^ova^C!QJrz01MkotUx#Yf@92RKXTA-V8g5l3O^lx3I!Qu6^{9{7F0dKXJO zlioB~xmyk~mB4>Cq?SpoHVeP;OX3A&`?2lpQtFKv{8tc{Mj! z>(U9zK^Iut)D_A}H<-ik4yCFmlmTzl8|*3cMg5@63;^7LXb>6$Fh#@dLYJ$}#qhSSdILxg_pmAtCtWAr8JT@Z>q;3LOhK@yX zus%5+RtzLSE=>lDds88`iD)`XLNmZ}?M&E__bf_<>nkn@(enQK11iB=W-GK0Mh#cT|$@9dr&GL!0BGC=nA?DdGZ(ZSF{T3!snys zq2v`n-t2-LnhPb9m6USGsdF86*)kMJ#jbeg)#1qd%$*~Uf3J=#(i*KSS;EfjwSU$Kcj!* zfp`$?XdD9lqG8w<562_$NbHCGaR45L1F;S?^%~a0Vi^NA!j7d7m<~4KFgzMg_zj2i zEhF$a(Ca_r@i-Dk;b?5e7Hq{6a14&cad;w*hjY^tpcbgZlkj9X%5f^524|U1$4Phw z?B4qo&icBG?%|m@1wV^Z!Nz|Yo`q-Qbl72;iL-Dv&cV4j59i}K_<3A_3vm%@g4yR{ zJQtUsZ_#(S6i$OK1B?6f@O-=gFT{)RAMj$l1TV$Q@N)bDei5(073ezp2Cqb4qFb;= z;tsk2Cvd+63wmG1tMF>P2Cv2I@Or!fZ^WDMX0X!r3Vs!D#joLQ_;u)i?!(*h4*Uk* ziQmM#@LPB{{v+Ol-^P3KJ8!AwH{le5TlhBq3V)67;BWAs@SpKrd=Gz%zr)|-AMlU(FZe$GEB*=p4L`vD zg&*So#*gsd@nifC{4@S1{ssSv+wc=?#}0xBCWKHT5fuUBr9?|yh%0d;?xYjxOu7&c z(v^6UZp4dpCp}0{(u;VL-lPxdOZt)iWB~CY1IZvVm<%C9$uQzehLaIwB=IBuB!G+} zfka32B#0P@kpzsG6gIPPa}zBI!PikNHUp8QpmF;l{`n%$Sg9Oq>~JiNwP>b$sxHUkK~g%1zAa6B9-K2vWl!G zYsgx%j;tpe$VRe>Y$jXCE96zOmApo_k=IET*-mzlH^@%%CfP;aBD={S$sY1H*-PFb z`^dYbn(QYv)wH z2T&h6kPf1Q=@2@U4x_$wI2}PpQa|cX1E7ZJg<9zZ8bf1g9GwU@1fHP@bP}CRr_iZjNg$C2W>#FpjXj{ zbP@dnT}+qIrF0oxPG6ue(iOCVuB0!~O8PQgMOV``bS+&+*V7GjBi%$d(=GHB`YPQ@ zU!&XT>$Hk)r#t8ybSHh2?xJte-Sm%i4}F{NrSH&v^j%n;zn|971N0z$kJi#UT2Bwr z2KqidOh3?+7v<}8kvc)mGK~rn)F5cEpkbQG!t~4%TahMRrs~LylI(fe>U2&tk+xi0 zQTFqibeXzEXXck=mKWv}WG`^bYq7iwu~}iK|6<+cjHpYAk|{Y?-Ppa*WxWxJ_th#4Weo?K(k;z%^HKx=+Zo6&9w; z%(~}x@VLdazw4IQ?v`RQ(o3W~_)*7}1JR)CuzYMY4d4(u-}SWhJ)ayliSI%B9&wxtd8L z@ivk8Npj+CoOGI$S6-BxUQ%9IkX~Na$=1=Qo+|TDBJ(h{1FU;V2akHH%tMJxrpa%W za^g0vU36}x?QZwP4iUJQb?~SY(&Grpu`+=R`HV zB)=$ERnC4pP4AedPURhan&~3z%Vp{|qn$&y`5oLdJGd9NyVWUjS{HHRnxd3l*F}m` zRbVU1Emcj*vy~L7Z2WgR|1D>~T)XvFoogiHRgNZIacUwhJV=wC&8gd@(t`BTJlSn) zce_vPAVBxh4jvwVkUmn-D47~UUD9*%^Mgafg2LpGXhE$8m)w%{dD##}h6~5xE-rKC z>Xc`*J)fRolb_)48gy27NNq-Tfo(o}L{(-hvXyqq%FiyzF3m6HKG(>C;=FY3bV)C= zm1P%X=cl_{ic9lBIy_iwDHHc&p@QN;?vo1hS&b)qrgwPQby8t=uKZBfe0cmfSSpSs zMP-+zt0tsF4Wbb^QVIl7z)>aUflFdQs)^~v#p$4}g&A4t9P#suunqI0s-t{}zLe%Gjk1uL!)#U+<&h%eZrgoQa>AqrZE z6W^@db7JX@O1yd{HoX#?UWqM8i7iOsILH}`E=b`sNQo~<;WJ2yIY@~)NQv2?#B5Mv zHYhP06j>M)41C{w6%3<-(JmLGf?-tBVN@`T3Py;+ zRfzINi1J2=@zr76oijapoijapo%|gz20L{_uUD|bL~gShLlkVK zOz6XmGXEh?Dz{&aAt54Mq%XuI`~ojT{z4f;b6lfX3zT$9yVXSJ7*FcDXnz;@=7GcUpfwo?YqGN!yI zcnA|bgb5zP1P@_?hcLlIm`JlrXO2|G+;ETSKF-qV^3H&I5A0_ak1b&pjj}rJ%0zXRNM+y8WfgdIC zqXd4mz>gOA(IWlP0zX>dM+^LDfgdgKqXoWbdl{nzezd@k7WmNuKU&~N3w*P{Hw%2T zz&8tgv%ohCe6zqe3w*Ov>rF=I9l?QFa9|c3m<0!B!GT$DU=bWx1P2zufkkj&5gb?q z2Nr>25gb^A1S}#4ECSym@GS!0BJeE&-y-m>0^cg|tpeXF@T~&hD)6lW-zxB}0^cg| ztpeXF@T~&hD)6lW-zwt=>ty_3*h0m6^T9e9KUgQ@2kT_~V4aK~tdsGBbuxaiPR0)w zwQjIZ#t+uX_`y0EKUgQ@2kT_~V4c9%3w*u6*9&|-$JbkA{($oPdW(U-57erj!JGN& z`7)WooBHbcoVd(zw)tG_Kt+7A#)Dtr$r=xSo?f6ly+C<-f%5bM8+S>wSk@MVn$ zzrdF@9{gP1dW)>_Kn1?6@!%Kuvc`j7;L92het|D*Jop8^tnuI%__D@>U*O9c4}O6! zYrNhfYdlb%-#`VvtnuI%__D@>U*MaC{LKR2EaWfiJ3J@kFY7z_h5TiG*IQ(L2P)Dp z>pS=bzO3)y7x=QigJ0mw`VM}9FY7z_MfzoZ2fs+atnc6#>6i6gZ?WptGv$K2kQ2Fd z%GwTh1-h*5;1}q!wu4_rw;DN0kWSVTpgdJTxm1DjQ~~8$43x(Ul$UCtJYJw&sz7B)sWGw}%cg@MqEicK=f<8R|j02R;)Tz8EE4u_b?QkQbpwrxP=pM6?y%IQy zg(WOV7i3iz<`=Qyq*CaZ7iGC*FUW-M9Xu`H59Z4SI`6r_jlO?GJ+ z46v1DXSu*gWOjaTURj=dSssju$?j6OocwuCw|gn1ut?nCsR)wA3UwBb(Hf;to-N?# zh(LL^0OhH)TI9;uYLzQ%pk}G4yr4i8J1V`P%r%x55ZTFVH|FdT+dhWF{GDQ*^_=`5 zAMRjIH!*T32lKHdIanSqV(!kd%1{sUs$=6A>BI&Fco&%Yw9LmG9?a1Zs}mcCVLjGh z{+81h!hM+wOY#c}@-sQE2OkfE0T$js9H=N+>y-Ptz9AYj4fm6&9&5=ke1*ZIDD zQ+d_HDFAlAAUmh5t1}=2N*9DpkA6BNK3WTfZ&Yznd7)-eb_pytDpj)pAZ7EJPs>Xr zI5au7@)Ay=RI>Y}`3u;6UND)17f$v-Q9h4AmCK~lrNg*2^SkCMr9#Wbu34Bz$H8hA za0EM6*5Y+&Vy$*^avjF&XVzKOe#rxCJ!Vd<^_mKfZ#;osil7AT8)pT z5lOfkBCu5${AwRdy=J=bsKBERkUe0wSG?lFUePXtgN9*irga{?||rxwr$(a#{+>i@we-X&H-MNRmJyZu2g000~z8QZp@pu)fm0D$~wtM>zg0>sp8 zV_QQ9000#6hbR7#zSGpW(Z;SWKYk!se{>}O1AH}7t(k+l?GNYu@93v+yOw4pg;G~007{-{P}8mZS0MI^bmA@II$m?s1Oa|+8Vk$0D#bo ze(VVU1Lz6xh@GLW=?^#b(>|yl{G$mKXLqo7{%Hfo8~}iT1pp8@AVibOI5?U9*pgrV z*!})NWKC?)fAYT`0gQ*+GyP8*OQ!rMC&5dP-Per`ObiTmL5!fl5eVSf4Y^1ezaW@aG#Tl4SM*+~7;!Jb!V7%D3q5cBk|LArJ zfH;8pZR(}du#%*uYB7bqC*8bfZLcMHgN3~N`QdNX3c4j70u!_LSW6H-YJb6+%QXZM;sC(k|4%jwG8w@&d5O60_Z zFD!}aR25x5kjn2hxz9)z`#nx8yb~yb9YLB;VZiJKFI^9D6?tfzjSU!1JH)h-ZWyXD zO6W6MlaJ$r3!*YCdLOg)dm;o zrlcvv92nIs9^=uTp%nEt;lzb#1kMmEJ`JB@z~` z<9K{`g97&<&zsQ9=r0v!8`IR)&MW=VnH7=WB`wXB&QGY>r7*wa=~v)7r0kdJ-qZMN z6u7A5LlTcHMt?hHOUZXzx0l;(;_bya+PVeujOt$3;J#d$`o{iIN{S*jUTnfq={#pI z*{PcUEUAq;3uJPfZkkM6FH-5@AUE=|xis<$-LjKCb>Wk?HqNLjJ-1wuogP`Tl%@DK ztmw4D{^C$E?u9abCy6K^as&7R*Ymnj^l77&4Tc$9I6OL3 z7?&B}J{&&$W8&6Od84CmtuMASv^#3x9f#5ufU+v29*0!~aYs1)z1DlE|2X?${%_GY zwRfoY(fnih3$}M|_5s2pdKV$9sa|$tpIqISeBZR|?ch*_mAsQl28!Yy6_$c-ghxI|?LHi9ZYDLsiP(&;)s zaBV6-p?!0b_gH1vXLA-9-+(Ama|*daN>POFH?1kw6Kh=-+Q`mCBk$-#*BDKg5QV){ zRI5kiLD!(v_7UpMyc`B!)-f!>EkD6M6M}wW-33;Z430b8ny26|gigj@ST~)lq z+F)fv%=7{&j@IzOeO*pdclNi}sMTtmbYFWC|A*y81J7Ly#Ac2QKdGHJ1LKmGF^?8n+95d1x`ZP%3H!$7Kg zc45~DTC?PGy^>mGaD`#!uL`T>eE}f-x6kRHNP_wknUuj=0Mmd5Kp$WnaP@P%0?Gg( zfK$L8U>VQ^I0PI6dH~yi6~H-Q6fg@&0dxQs0GogzKrtW#;137~1Ol>u#$u&Td2J!Y zEjR>_fT2}Fu65ML^f=&~KkSl(HS_~xuEt!#>(M%gMml{EiiAo*&(`1;lqyAXL2)po z`~eDKN$G6i1*|+gjm|UaEHV@E6>gT@C*{uQl6!VRW|_VeMeAbz5DQPy;^OQ5By{X7 zo<|)%y|MjftVi@08D z3boumh4kyWb>P55P#0AK!z%8t*qXidpxr;pcV~n7j z-fXJi$V;jO#zh?rnRS;{=~#MP9da*exmSy%op*uY>(p`rLk|j}{yfr!Gs}ns2dz>w z2@jEm3d?i3H3(2C@+Sl{*(WT_v>8?hI3BVwmQ63>_Dq?nY-oov`XWi(ZZV7`!1Fic zvx^6>#%Mwt0LRBEsrBTKI5R{7wJ&|KAd(q)ykF^409W&{BQcoTW*bML1?KFq@4T4~ zZ&m1=h~;;>sj;b^B^`?}nC~1QDa8KS%d6j=KJoD@6ug3q#DU8I>5tov-u|Bd^?OKd z8-`%bo~^MS{l5ST1OWPpr3mipMcq)|sAA8YddpkRX4fQ%Jn67feTd-9!HDq=W2T^o zu$aJ3A%n566>H!@ig>L?kAqx7&6^+0#{mdYA# z%J_Jj3At;zW{OTk0Q#udvsC?@(L%k-5S|ML=vII05Ke~kAF*i~xQ~pA5~*)eV5k;v zny8Q+Ng{b=`2tt>8XKrlv2f1YdHQFI!sORIL%Uy9nBg0RtCwhKqVu{M>btL0tJ zsgjlzJLa%Q7-kEEa4}d~^X8j<6Fo9+%Bh~d|Ki5GJ9b#_Jm1S!UB)4M-_qMebPBF2 zlSIM($%&BCOAW!|5Ej43?3&AYBm6T5gYs=LE|tYbBH0dmUGu-e|E@Uiq!_{rtb8;7 zhmeCuG^7YWJ44#uBoJN#JXP@Z7$r%H%+`M+I!(pi7K@T$)qpVy>Zb0RDJV)5GLps+ zm$F8#h|M8+Ni(0E7^#o7OH(*(6 z>faL$M=A8$Av4l{z3BUo;|@a`!ByX}1>OD-Rzr4-(PK|zbvaDKU2iJEE+kV`V=5y9 zn8R0N>bkWb6r;0aZ8=mU3&p^BSHHO44{Ua7DL1iLfCA@a$mub?os<6A1&Y{i{Ah&F z-1OwowQb+eX%?1@4`j|-(BEq^Xq)igXg@v^*f8NgjQfz?-uo~PRL8|8q;n4px?iZe zE|&8-VyU?293*9n<-T2%J+J=?_A?oq*$Xx;N;l!sIl zc}ZDb02GEECIBnTo}h41(3*>*j;~T;q=-9{T02&m%cm4;&d?`s8FHbfbR&_0_521{ zt%sUENRiEMQl7LQR&^y_yR!=*uI;&_cSf3-@1Zn6@e<7zH-R)r2c5BJS)Ys+2a{Ae zjr8)1@Jczg$h0g^YSFLh+500fQQ`Re)!pAYGxWVsF@gB94k_OvOhs@tTmtME^t377 zZVQQ0!u@WsxKag3as^0=1PX8O{dA)U3U5U`5RUmUnYlM}pt*X9p$FYhDha*d*gF|| z(@0{To1{WeLswGM6A7qkdw@%mD3#$2l2ym-+@dlT@7F=8ladg#=qf9L6`Zu-;oN!V z8fJ7o=fbGi45(?5ok2O*<*}(59^ZlWAfD6*Uc|N_a?9}U9w!I{Xf?4sueZ-3>~Ngy zbysq~lp7ijEgo!r?0Vj2&b3c&zFsqGfOWT@{&Zl(cINu^FMkNyH+HZyzd!eP3f%d; zm+R_q)Z<;nGe0k!P@zCeegYi&4-2vsb^+uaHH8A@YEx1E z>3zfh*JVC_wMi9OkrpADQ|^vR!b1Nt*6nadb8m} z$}zIZ)&5YjTUJiPznWe)1mASMht-nbv*i@*0&k}vzjqY0`M+^o|9ZA&F)d+YOQKVe zW{(L+tC$f+Jw!z-u>^A1fC{D%6DHemQm)B1P>MNdA1bd8+D5c1h404oUjeD7tbmV6 z+1sjH z&(@|1MknKxBAoJD;o`O49S)7&#QL?^J~h0ImO-5Kl;mvGveOeRe2?)gH|~wgRH#GK zn5}GUu9UicYXQ*X>IgGI!^ca!2a0J8jlw683n>F4g+UT4DZ>?^9ifK4J`JAYF#Y}P z$vjA@2YO4Lpo8*|3``eE(`^iGmXGq0_FX+h26kbJj*OR?zMG?$BqX3#RGc65GjEji zRs0IUTWV6M&WVVs1T+?MX|hyh*PZ18XKKXUOEB-+bb+^IXZuw}Pc7CvR=KZuvvNVySA`zZMcLmC4L>e!p$u5R!Wsw9|oYz9QLZ%L5 zK?iDIZV|A&G0^Z-M4L21r{gYNtQ3jX+mdEbvK-i|Zm=AY9k8yA?h=H3fY2dw&E3H% zk5Nu@FfhQWTR1)Yq2*Gr1bNFfO@DWuX7_G8EoRmk%9 z!?Ae_fiL0r7lBx)kR*Gg(oWznu2l058kbge*bJ*#*_5LeCu^n*%Cc*;D=} z$t1|7b-RMVEEcboKW)7ZSRe$HHLe!roq~SK#(J z(;Q+&*4J>M1&YUPL13QtJ$A>Bx6rrj_)GkkuV(8RPRE&w)kh|GX#W##mB5UJJLeo@ zl_EOHWz@KEaD1bSG7=XT3)R2Fb`2$H9>LONI6^Lbb#A)cRA+2j;1hIh!jrK#hiNwyr2WExk@kpsBzNIcJ=BanP?>p z;fcVw3Fyg@#0U)a1i0NhY#?&1bjTbR-p(fBmbOCiObo58Ns^7dR*|D7Nx?#PpBVc7H-Jjn$nVc56qgUmJJrJ0#?niv$eXtDG5CXTJ1W2nxq@ zMfMQlM6Sb74szm`3Di-iR=?(pGJs;Eb6ihKBlSLRw{&Gzs+6@4Ydb&7Rn|JlO7*;K z#^sEOw{mdSWjvfF37q9DH!x~nPhD4Y=bWG%<~AGquBhzlE?e8~zXP*9SnP>LE+%O6V@*;R8Z*UKu@W{#KB0Y2L+?`2(B(C74f5CgNl?zid9Yk zEovhqD%w%TH3Q~!B+x|#HN_UHV|?+ngzn#T9S{P#P-V))rc&gjW`GGv$r)*EDCY(V z4$Wblw$MmbVlPKuxd_K zo({W>*KZGrEOQA5@wa3qVcP&*N_8)bIV0CejKTPBUJ)k=L+6i|gRRv%L!c9_nu{Ks=}o5{<2 z9vB(cmLp3P+GJkrN(O1}VJ=oe?9YtmP4XlLC|`{5q?8XsX`FmO&*?%?Lm}TAho^r> z>^!>y9k0jt&>8zd_5D5?&3ALn!&t?-wzD0!gPULT(WBJwl}y&p{d&I~?$7Y|YZ>9$ z_CfTP3$4HHo}Y~GJeoNl8TcS{8tMvHW!39+bRT~ zIFN~cssd^c#8>ZEEU~=rjn>C{oL)3SF|h2H5YTRM(-|pL((%DPI2;*J%|SWHN>Rw` zQmCx#x&Kty|B!9*sq~DHW69Sf#cW&xkN1IUt)M zuplsdzWNjI8PBH#Ui2nx+#laq}=7^qX<_^Q?Zs{*<0+z-bsdji+~QPY$Dlw zZT+h*Gm5Nr-?~;5LXvD!INIt`sip9BoN!8d6_SnI1PEv$&kPjyvLX^=gb>pmsbMqQ zq(-FzEW!Elm83SclQx+om$(P+F;G;z7ciGurPl+e;RPL!xn)Z8(d1=267WP*>NVMW8?JdI5cSs*?bSOgTu9zBlWGFJ>xFyIpx1+PX;I&9@2^w%RJK+9E}nUxyxVHJsQmSDv-!#E#sTpBJe2Uc>ma5Vs2-n{P<4Ttlm&R=$D)Dl_zn1k11@7D4(-qf;|;!LQvue0x2X;Y5Blsr)E<=r)&NeT78Jn%W4iv zAOuY`%P0R8*28r@eZuNwnb&!oT|zXp2()fDGx7Qo^&P6~h9)u;N?=QWm)veHPf`>D;@YYm19KNRNj^lP4#n#J(*?uv!m^?btYow=-) z7XOy{Jv+_8Q=`g~pv);Mq-ZyBuplH7&H}ZQT;fZ0>Sb@5GIEemRZ2)}AUiOO^UKo< z!Cr=UhIu4&1=OB$HBuX5t+>Qjnet zFXPl_o9b!9qr}tDT4=^jC?4w#az$oEaP)NJlMmEl+ILB)xWf1s!m*CJ^1R{T zi+pgRBx6=!!IAS%wRy2?%QQP&P=rC4=xTvMFMCv9)3t{F&R=H&hoM{NBw%Nw0ysoO znSN{38mT)(q-r2km&*xN_yFcs#4zrHw@^g2BUX!iq4^<)r`KPeA!cj>LSE%^srZ#3 zE^60^4H*==@A8@)?Qe~svB((x{IEs#!Vw%T#M785XHqRri)awJ9VW^MhZK=d1wRYD zf%#Dn|H{5*FlUAZLB8Y(grjx_ZrsQDzj&Au*Y<2t=7h{dm}M|P~cA9gn90!!0v0CRyM1TyZHG%6TA zGo;?MMlB46|B^~=Gh=v%z9Q_BwR>cDzAbU^0Gtqx={OK!Ba4V9u0kC4KQ%@VaB~0p zJk9hGGc|yFFJ*X6foFKVUm!2&@4p4>>zCvIyKDRV!o|3S z5Rn%aa#PSuP_X4<+5h%mJ40dsfV`;?U*W}<-Rjs^bazA@Q_XkWu*lS5I0~F4E(NOg z*4{|I6(p#}J$k?gxwxIWfDz+H7R{t~+>nu5_t)VSn^gn3k9^rL%yx8JG+a^Eg<+MM zJy3A~NL+Lc3zkf_wn90@lFT`3AsbyCPXFSccQ2@KtBQobk3KeM#Rx(@B;Wdz-d*X{ z{Cc{;MN*s2<5<1}qm#PQgU($y=P=B*KW^#5>Rqh9Y-l?ECS)eg`VEV{${msUxjtAOH{qDt1(?8sZNswlU>Dy zMPVNj^|zgbPpj)hMKA(xNlr1CBp@>!xK2>HFlP6nHW&!d=nI~XuXuot#ewLxZx1;3NqO_v`czM}YX;H!PBM3f9+kDsmnqLz#yLV?pSF zo6`ibczOmf6j;s%_BhZWGQQ{Dc0U<+`|TAxbw+G|+u0fW9&LpW%r}EroQD^z$joR89zKKSjOM%Z>gHYzgSfvoJu> z>H{Roo$L;kFrnHH!EoCb!BhzL2kmHRfl@zp=Jb@Z%T!pcx>@cmeSnLnMpi133^x0t z84kE>ptq-rHX_DuL+Zz@MNf|ZO$9lp`LLW49pAT0t#Z)WbxZ0rt};^w&8@0wi|w@Z zHaw;>i-^e=e(pqbCa*Z>$JbYvL`Q5hfl*bxE&h0&=&lQro@gONH;f7bSMa`Q#tC&R zoa~)J6LbCx$&h{T^}wq}$0$AGAn@A~CSdwX>uDSVA&f(Z`*tCJzBFREpRltMe#+hC zpxB4Dqy>Lhug~QfIeNo-9yd?7B*XY}WP;Vc0Fn}g%o@yDFbs)dW#SY!zvAqLa!as! zI#)#jrd*>^R49z&8>FehI#YKb&WtO-SQDA)Af02+9*ZPOwST?1;m@Bz!O77?!FfUo zhgf;>zD_lgMctDOu5{+VMuoh!dKlex zx+=zEe*RuS0u~w4t8WlM>KBx9%8%9T(wIN#1@j0u( zu-i@|Y$nqMG8ct;jPp@_)bh|MIj2R{KZ|!5gp%saonS5o@yyGq^Gst1e3bHB9>Dbx zf>ppDMcNEc^EZr%;+oIUrGDX#*MVXt;U*8p%Y1}OL*q$+ zzcl+KU*1$>#b^Fh`!osyU^digNS^CFKNO!>bu5J+g99r_aMA;`3TjHL?m(dKlnaKc z4nXr!+C-c1lQhHKC-6?kdmpcdfNA?R9b5dOs5lb~!qujlAu`s<}&l);yswA zq)mSvzr*F|K2fcpWchHKp1JHd=sQrCOC(NUK}V!q=>fFamJ7QYtF~(?t!h`ep)UzE z1~25O1kKul$&#_z=E^l%t@)t1Zn8W6P*0gKZdX+{Hzf=qma~ejO$(ile2!^HB3mi{ z(wfRW&6ZiQV*fMa`y6Vvt>z=Z;&D1GTvmYFVjn+MG3L`ln8kUT?|E4^k6Bg~kh>U} z^$yASi?>suXTl2pii86Y09w$E1mkAn0pS=B*0=0ni@GB$;QZtzwQ`gQA0N#6lcfe2 zdvY(!8<&1WLyy^ztY)y)pTDV*%8Z%LR&B0Y5nILyhWUuwkKY&Hx=OnI=U8q(x$!aQH~;URKq*2rgTP}pJLyTa<} zb=6^Oo{ROo8LY$+>+Qmty&_1_i?YQSE#K}So}=Wve;a{FWM^&b_Gd*u(Rg{OThiVq_)znWve?;np{ZG9tinc8al-;&U3y z=N07_UgMVfY_spZd6*jzWUg88CWS!S5K$gh88tm#2VujBXM2 z?xUet^SR#vVu|EFfVt)bkx$|L<_MAQ_jvYs zz!Jll$5Z`g7O%bI&)+;znx?#6sWLw5;!PTI7F34)5^aN~VY)VbO&pK={_~^YinQ#+ z(-DXblRpY&$blFvZ6Bo@7#RcJu}0wg<=~>p0y1SY?S$Z*lt)!PB-@$JL?ONu&^Mz@ zsf}EAUgTdJd`{QJ_gmY0Uf?)yTBH+~#Vxl&KYJ zw2RiUc6K)l%lQfduf=}9%|oMYg?A~U-sQtOG>@+A+@$5ny?azOCRUQ01eUx%c<1zr zZNKDiOd*WnG9E4)|Xwa&~e#iBnx<$jx_ilO5095P9jaou-gVglI;2X|#_u;$h) zbdYm;#iUVeN2h`87=#rsrEmm2-9DVHmX|;wM9`)Et7?K#UUr^w*-<3)zCs!ewKPsI z+mj}W%7~VZ*L94<5UtzHUw0fD$~Sq8Pn8ZCSbUa)VV}ixT`mDGZf9=$)2|S9$|7^Np)UgCkna=ZGH(=U=bZ| zc8Wm^St&^HY!*Kr{$_90OPrqRXOSVs3nuw9meSwi@4A^b`ev!8`rm7k*zJj;)!e1b zkh0AnD$Lgl=qdOqa5`G8jdNHCiDaGkxSL5wW^{(&bj#DfDlq3qca7rEt9XGe99X;( z$lod=Ef)5dOL9ynBg>Y`zVtA?no2SmZ4AEYyA3FO{10%GVsv1yx6l}qAK=7XGIXI> zF9>HZ_@yBJCPJ1`aVIWP|K?~x@2ghzg(6oe3Q{3mnN~3>04bL@(%|`d#NAWXbTVk9 z@?f2mjtP(LFHc zVP8BWe0{wz<4DmE?hOrE-Vjf!B+B7*1&25|KU-HRsGz<2kiGh278ubmsv`a*dFCuI zJ!3}6oTs5-9$DqbMl~BDXb1`fMl@Tl*Us|tYxG>9$u1_qT&Bl_TzkobO^Px>N(~Kr zGimz$3rkbzubJmcHkObV-u}OJlBUopWYql!4I>znkEtPe&cbrnZd!TY`}H5DIeNH$ z4`(ce%GW;7XFPe{RhO=`U)Xtdn-s8C?OiOo(Rw?{&2saewW8AV?BpFoYlkLR{VX9y z{@#XikRj1#X@K_2@lZcSVV0AiD`t0*@-}b$XZfm?y@BE$BsylCuX2Gcb zh(4;rhu|}T+#Q5rU-7PyU_s*+8nLhoU~>O6EN00p&)f_t-ecATFy-3fM}1DePMgOc zGpld`yk#wdnWSCCNTbIGXccAMH^HG9jvX;~7H7eOxC=bIci19)T7PcOt0$WO%gmT> zcv4?Bui||SMbQ5c^f}h`7_ewg

      Vu%2CT~!-xA2$y`vlAE(REV1$blK|VI2zhnS= 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%0D(yF@ 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�~ntmM_N=|YC(lMUtFO@2uyp6tIEmM^E%wT2qrV&xo2)++_dk z8!vamf4d@^0)uW)WBkLSqoRD`$yOKZ>4*egOL{rrp(F8-(wYlYTMtTd*%_%hu6C85 z)CTBxyAmT~=5rw@@~1)yH(J9*h(?T2zAw7akPl#!t8!#ebC6#>2k7wgv?U`-HTxe5 TDj2N{Vbd-lxR5iGzSR3)ar_H( literal 0 HcmV?d00001 diff --git a/font/open_sans/open-sans.css b/font/open_sans/open-sans.css new file mode 100755 index 0000000000..5037092ed1 --- /dev/null +++ b/font/open_sans/open-sans.css @@ -0,0 +1,80 @@ +/* BEGIN Light */ +@font-face { + font-family: 'Open Sans'; + src: url("./fonts/Light/OpenSans-Light.eot?v=1.1.0"); + src: url("./fonts/Light/OpenSans-Light.eot?#iefix&v=1.1.0") format("embedded-opentype"), url("./fonts/Light/OpenSans-Light.woff?v=1.1.0") format("woff"), url("./fonts/Light/OpenSans-Light.ttf?v=1.1.0") format("truetype"), url("./fonts/Light/OpenSans-Light.svg?v=1.1.0#OpenSansLight") format("svg"); + font-weight: 300; + font-style: normal; } +/* END Light */ +/* BEGIN Light Italic */ +@font-face { + font-family: 'Open Sans'; + src: url("./fonts/LightItalic/OpenSans-LightItalic.eot?v=1.1.0"); + src: url("./fonts/LightItalic/OpenSans-LightItalic.eot?#iefix&v=1.1.0") format("embedded-opentype"), url("./fonts/LightItalic/OpenSans-LightItalic.woff?v=1.1.0") format("woff"), url("./fonts/LightItalic/OpenSans-LightItalic.ttf?v=1.1.0") format("truetype"), url("./fonts/LightItalic/OpenSans-LightItalic.svg?v=1.1.0#OpenSansLightItalic") format("svg"); + font-weight: 300; + font-style: italic; } +/* END Light Italic */ +/* BEGIN Regular */ +@font-face { + font-family: 'Open Sans'; + src: url("./fonts/Regular/OpenSans-Regular.eot?v=1.1.0"); + src: url("./fonts/Regular/OpenSans-Regular.eot?#iefix&v=1.1.0") format("embedded-opentype"), url("./fonts/Regular/OpenSans-Regular.woff?v=1.1.0") format("woff"), url("./fonts/Regular/OpenSans-Regular.ttf?v=1.1.0") format("truetype"), url("./fonts/Regular/OpenSans-Regular.svg?v=1.1.0#OpenSansRegular") format("svg"); + font-weight: normal; + font-style: normal; } +/* END Regular */ +/* BEGIN Italic */ +@font-face { + font-family: 'Open Sans'; + src: url("./fonts/Italic/OpenSans-Italic.eot?v=1.1.0"); + src: url("./fonts/Italic/OpenSans-Italic.eot?#iefix&v=1.1.0") format("embedded-opentype"), url("./fonts/Italic/OpenSans-Italic.woff?v=1.1.0") format("woff"), url("./fonts/Italic/OpenSans-Italic.ttf?v=1.1.0") format("truetype"), url("./fonts/Italic/OpenSans-Italic.svg?v=1.1.0#OpenSansItalic") format("svg"); + font-weight: normal; + font-style: italic; } +/* END Italic */ +/* BEGIN Semibold */ +@font-face { + font-family: 'Open Sans'; + src: url("./fonts/Semibold/OpenSans-Semibold.eot?v=1.1.0"); + src: url("./fonts/Semibold/OpenSans-Semibold.eot?#iefix&v=1.1.0") format("embedded-opentype"), url("./fonts/Semibold/OpenSans-Semibold.woff?v=1.1.0") format("woff"), url("./fonts/Semibold/OpenSans-Semibold.ttf?v=1.1.0") format("truetype"), url("./fonts/Semibold/OpenSans-Semibold.svg?v=1.1.0#OpenSansSemibold") format("svg"); + font-weight: 600; + font-style: normal; } +/* END Semibold */ +/* BEGIN Semibold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url("./fonts/SemiboldItalic/OpenSans-SemiboldItalic.eot?v=1.1.0"); + src: url("./fonts/SemiboldItalic/OpenSans-SemiboldItalic.eot?#iefix&v=1.1.0") format("embedded-opentype"), url("./fonts/SemiboldItalic/OpenSans-SemiboldItalic.woff?v=1.1.0") format("woff"), url("./fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf?v=1.1.0") format("truetype"), url("./fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg?v=1.1.0#OpenSansSemiboldItalic") format("svg"); + font-weight: 600; + font-style: italic; } +/* END Semibold Italic */ +/* BEGIN Bold */ +@font-face { + font-family: 'Open Sans'; + src: url("./fonts/Bold/OpenSans-Bold.eot?v=1.1.0"); + src: url("./fonts/Bold/OpenSans-Bold.eot?#iefix&v=1.1.0") format("embedded-opentype"), url("./fonts/Bold/OpenSans-Bold.woff?v=1.1.0") format("woff"), url("./fonts/Bold/OpenSans-Bold.ttf?v=1.1.0") format("truetype"), url("./fonts/Bold/OpenSans-Bold.svg?v=1.1.0#OpenSansBold") format("svg"); + font-weight: bold; + font-style: normal; } +/* END Bold */ +/* BEGIN Bold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url("./fonts/BoldItalic/OpenSans-BoldItalic.eot?v=1.1.0"); + src: url("./fonts/BoldItalic/OpenSans-BoldItalic.eot?#iefix&v=1.1.0") format("embedded-opentype"), url("./fonts/BoldItalic/OpenSans-BoldItalic.woff?v=1.1.0") format("woff"), url("./fonts/BoldItalic/OpenSans-BoldItalic.ttf?v=1.1.0") format("truetype"), url("./fonts/BoldItalic/OpenSans-BoldItalic.svg?v=1.1.0#OpenSansBoldItalic") format("svg"); + font-weight: bold; + font-style: italic; } +/* END Bold Italic */ +/* BEGIN Extrabold */ +@font-face { + font-family: 'Open Sans'; + src: url("./fonts/ExtraBold/OpenSans-ExtraBold.eot?v=1.1.0"); + src: url("./fonts/ExtraBold/OpenSans-ExtraBold.eot?#iefix&v=1.1.0") format("embedded-opentype"), url("./fonts/ExtraBold/OpenSans-ExtraBold.woff?v=1.1.0") format("woff"), url("./fonts/ExtraBold/OpenSans-ExtraBold.ttf?v=1.1.0") format("truetype"), url("./fonts/ExtraBold/OpenSans-ExtraBold.svg?v=1.1.0#OpenSansExtrabold") format("svg"); + font-weight: 800; + font-style: normal; } +/* END Extrabold */ +/* BEGIN Extrabold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url("./fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot?v=1.1.0"); + src: url("./fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot?#iefix&v=1.1.0") format("embedded-opentype"), url("./fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff?v=1.1.0") format("woff"), url("./fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf?v=1.1.0") format("truetype"), url("./fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg?v=1.1.0#OpenSansExtraboldItalic") format("svg"); + font-weight: 800; + font-style: italic; } +/* END Extrabold Italic */ diff --git a/frameworks/awesome-bootstrap-checkbox/LICENSE b/frameworks/awesome-bootstrap-checkbox/LICENSE new file mode 100644 index 0000000000..c5cd856bc6 --- /dev/null +++ b/frameworks/awesome-bootstrap-checkbox/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 flatlogic.com + +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. \ No newline at end of file diff --git a/frameworks/awesome-bootstrap-checkbox/README.md b/frameworks/awesome-bootstrap-checkbox/README.md new file mode 100644 index 0000000000..a83fa9c15e --- /dev/null +++ b/frameworks/awesome-bootstrap-checkbox/README.md @@ -0,0 +1,187 @@ +Awesome Bootstrap Checkbox +========================== + +[![NPM version](https://img.shields.io/npm/v/awesome-bootstrap-checkbox.svg?style=flat)](https://www.npmjs.com/package/awesome-bootstrap-checkbox) +[![NPM downloads](https://img.shields.io/npm/dm/awesome-bootstrap-checkbox.svg?style=flat)](https://www.npmjs.com/package/awesome-bootstrap-checkbox) +[![Dependency Status](https://img.shields.io/david/dev/flatlogic/awesome-bootstrap-checkbox.svg?branch=master&style=flat)](https://www.npmjs.com/package/awesome-bootstrap-checkbox) +[![Join the chat at https://gitter.im/flatlogic/awesome-bootstrap-checkbox](https://badges.gitter.im/flatlogic/awesome-bootstrap-checkbox.svg)](https://gitter.im/flatlogic/awesome-bootstrap-checkbox?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +[Font Awesome][] [Bootstrap][] Checkboxes & Radios plugin. Pure CSS way to make inputs look prettier. **No Javascript!** + +For **[Bootstrap 4][]** checkout [v1.0.0-alpha.1][] tag! + +**[Demo][]** + +Use +------------ + +First just include **awesome-bootstrap-checkbox.css** somewhere in your HTML, or add the equivalent files to your [Sass](#using-sass) / [Less](#using-less) configuration. +Next, everything is based on code convention. Here is checkbox markup from Bootstrap site: + +````html +

      + ... +
      + +
      + ... + +```` + +We have to alter it a bit: +````html +
      + ... +
      + + +
      + ... +
      +```` +That's it. It will work. But it **will not** work if you nest input inside label or put label before input. + +If you want to enable **Opera 12** and earlier support just add class `styled` to `input` element: +````html +... + +... +```` + +Browser support +----------- +- Firefox (_3.6+_) +- Chrome (_14+_) +- IE (_9+_) +- Opera (_11.6+_) +- Safari (_6+_) + +Radios +------------ + +It's the same for radios. Markup has to be the following: +````html +
      + ... +
      + + +
      +
      + + +
      + ... +
      +```` + +Brand Colors and other features +------------ + +You may use `checkbox-primary`, `checkbox-danger`, `radio-info`, etc to style checkboxes and radios with brand bootstrap colors. + +`checkbox-circle` is for rounded checkboxes. + +Inputs without label text: + +````html +
      + + +
      +```` + +Using [Sass][] +---------- + +As per example in the `demo` folder, to use Font Awesome you'll have to `@import` the following library parts: + +````scss +@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/variables"; +@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins"; + +@import "../bower_components/Font-Awesome/scss/variables"; + +@import "../awesome-bootstrap-checkbox"; +```` + +Adjust this to the path where your bootstrap and font-awesome files are located. + +Using [Less][] +---------- + +Just like the Sass setup, you'll have to `@import` the following library parts: + +````less +@import "../bower_components/bootstrap/less/variables"; +@import "../bower_components/bootstrap/less/mixins"; + +@import "../awesome-bootstrap-checkbox"; + +@import "../bower_components/Font-Awesome/less/variables"; +```` + +Custom icon font +------------ + +If you want to use another icon font instead of Font Awesome, such as [Glyphicons][], override the default variables: +````scss +$font-family-icon: 'Glyphicons Halflings'; +$check-icon: "\e013"; + +.checkbox label:after { + padding-left: 4px; + padding-top: 2px; + font-size: 9px; +} +```` + +or for Less: +````less +@font-family-icon: 'Glyphicons Halflings'; +@check-icon: "\e013"; + +// Same styles as the Sass example... +```` + +Or for plain CSS, override the `.checkbox` class (and `.styled` class for Opera): +````css +input[type="checkbox"].styled:checked + label:after, +input[type="radio"].styled:checked + label:after, +.checkbox input[type=checkbox]:checked + label:after { + font-family: 'Glyphicons Halflings'; + content: "\e013"; +} + +input[type="checkbox"].styled:checked label:after, +input[type="radio"].styled:checked label:after, +.checkbox label:after { + padding-left: 4px; + padding-top: 2px; + font-size: 9px; +} +```` + +Credits +------------ + +Based on the [Official Bootstrap Sass port][Bootstrap Sass] and the awesome [Font Awesome][]. + + +[Demo]: http://flatlogic.github.io/awesome-bootstrap-checkbox/demo/ +[Bootstrap]: http://getbootstrap.com/ +[Bootstrap 4]: https://v4-alpha.getbootstrap.com/ +[v1.0.0-alpha.1]: https://github.com/flatlogic/awesome-bootstrap-checkbox/releases/tag/v1.0.0-alpha.1 +[Bootstrap Sass]: https://github.com/twbs/bootstrap-sass +[Font Awesome]: https://github.com/FortAwesome/Font-Awesome +[Glyphicons]: http://getbootstrap.com/components/#glyphicons +[Sass]: http://sass-lang.com/ +[Less]: http://lesscss.org/ diff --git a/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css b/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css new file mode 100644 index 0000000000..8018befdc6 --- /dev/null +++ b/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css @@ -0,0 +1,317 @@ +.checkbox { + padding-left: 20px; +} +.checkbox label { + display: inline-block; + vertical-align: middle; + position: relative; + padding-left: 5px; +} +.checkbox label::before { + content: ""; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + left: 0; + margin-left: -20px; + border: 1px solid #cccccc; + border-radius: 3px; + background-color: #fff; + -webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out; + -o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out; + transition: border 0.15s ease-in-out, color 0.15s ease-in-out; +} +.checkbox label::after { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + left: 0; + top: 0; + margin-left: -20px; + padding-left: 3px; + padding-top: 1px; + font-size: 11px; + color: #555555; +} +.checkbox input[type="checkbox"], +.checkbox input[type="radio"] { + opacity: 0; + z-index: 1; +} +.checkbox input[type="checkbox"]:focus + label::before, +.checkbox input[type="radio"]:focus + label::before { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.checkbox input[type="checkbox"]:checked + label::after, +.checkbox input[type="radio"]:checked + label::after { + font-family: "FontAwesome"; + content: "\f00c"; +} +.checkbox input[type="checkbox"]:indeterminate + label::after, +.checkbox input[type="radio"]:indeterminate + label::after { + display: block; + content: ""; + width: 10px; + height: 3px; + background-color: #555555; + border-radius: 2px; + margin-left: -16.5px; + margin-top: 7px; +} +.checkbox input[type="checkbox"]:disabled + label, +.checkbox input[type="radio"]:disabled + label { + opacity: 0.65; +} +.checkbox input[type="checkbox"]:disabled + label::before, +.checkbox input[type="radio"]:disabled + label::before { + background-color: #eeeeee; + cursor: not-allowed; +} +.checkbox.checkbox-circle label::before { + border-radius: 50%; +} +.checkbox.checkbox-inline { + margin-top: 0; +} + +.checkbox-primary input[type="checkbox"]:checked + label::before, +.checkbox-primary input[type="radio"]:checked + label::before { + background-color: #337ab7; + border-color: #337ab7; +} +.checkbox-primary input[type="checkbox"]:checked + label::after, +.checkbox-primary input[type="radio"]:checked + label::after { + color: #fff; +} + +.checkbox-danger input[type="checkbox"]:checked + label::before, +.checkbox-danger input[type="radio"]:checked + label::before { + background-color: #d9534f; + border-color: #d9534f; +} +.checkbox-danger input[type="checkbox"]:checked + label::after, +.checkbox-danger input[type="radio"]:checked + label::after { + color: #fff; +} + +.checkbox-info input[type="checkbox"]:checked + label::before, +.checkbox-info input[type="radio"]:checked + label::before { + background-color: #5bc0de; + border-color: #5bc0de; +} +.checkbox-info input[type="checkbox"]:checked + label::after, +.checkbox-info input[type="radio"]:checked + label::after { + color: #fff; +} + +.checkbox-warning input[type="checkbox"]:checked + label::before, +.checkbox-warning input[type="radio"]:checked + label::before { + background-color: #f0ad4e; + border-color: #f0ad4e; +} +.checkbox-warning input[type="checkbox"]:checked + label::after, +.checkbox-warning input[type="radio"]:checked + label::after { + color: #fff; +} + +.checkbox-success input[type="checkbox"]:checked + label::before, +.checkbox-success input[type="radio"]:checked + label::before { + background-color: #5cb85c; + border-color: #5cb85c; +} +.checkbox-success input[type="checkbox"]:checked + label::after, +.checkbox-success input[type="radio"]:checked + label::after { + color: #fff; +} + +.checkbox-primary input[type="checkbox"]:indeterminate + label::before, +.checkbox-primary input[type="radio"]:indeterminate + label::before { + background-color: #337ab7; + border-color: #337ab7; +} + +.checkbox-primary input[type="checkbox"]:indeterminate + label::after, +.checkbox-primary input[type="radio"]:indeterminate + label::after { + background-color: #fff; +} + +.checkbox-danger input[type="checkbox"]:indeterminate + label::before, +.checkbox-danger input[type="radio"]:indeterminate + label::before { + background-color: #d9534f; + border-color: #d9534f; +} + +.checkbox-danger input[type="checkbox"]:indeterminate + label::after, +.checkbox-danger input[type="radio"]:indeterminate + label::after { + background-color: #fff; +} + +.checkbox-info input[type="checkbox"]:indeterminate + label::before, +.checkbox-info input[type="radio"]:indeterminate + label::before { + background-color: #5bc0de; + border-color: #5bc0de; +} + +.checkbox-info input[type="checkbox"]:indeterminate + label::after, +.checkbox-info input[type="radio"]:indeterminate + label::after { + background-color: #fff; +} + +.checkbox-warning input[type="checkbox"]:indeterminate + label::before, +.checkbox-warning input[type="radio"]:indeterminate + label::before { + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.checkbox-warning input[type="checkbox"]:indeterminate + label::after, +.checkbox-warning input[type="radio"]:indeterminate + label::after { + background-color: #fff; +} + +.checkbox-success input[type="checkbox"]:indeterminate + label::before, +.checkbox-success input[type="radio"]:indeterminate + label::before { + background-color: #5cb85c; + border-color: #5cb85c; +} + +.checkbox-success input[type="checkbox"]:indeterminate + label::after, +.checkbox-success input[type="radio"]:indeterminate + label::after { + background-color: #fff; +} + +.radio { + padding-left: 20px; +} +.radio label { + display: inline-block; + vertical-align: middle; + position: relative; + padding-left: 5px; +} +.radio label::before { + content: ""; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + left: 0; + margin-left: -20px; + border: 1px solid #cccccc; + border-radius: 50%; + background-color: #fff; + -webkit-transition: border 0.15s ease-in-out; + -o-transition: border 0.15s ease-in-out; + transition: border 0.15s ease-in-out; +} +.radio label::after { + display: inline-block; + position: absolute; + content: " "; + width: 11px; + height: 11px; + left: 3px; + top: 3px; + margin-left: -20px; + border-radius: 50%; + background-color: #555555; + -webkit-transform: scale(0, 0); + -ms-transform: scale(0, 0); + -o-transform: scale(0, 0); + transform: scale(0, 0); + -webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -moz-transition: -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -o-transition: -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); +} +.radio input[type="radio"] { + opacity: 0; + z-index: 1; +} +.radio input[type="radio"]:focus + label::before { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.radio input[type="radio"]:checked + label::after { + -webkit-transform: scale(1, 1); + -ms-transform: scale(1, 1); + -o-transform: scale(1, 1); + transform: scale(1, 1); +} +.radio input[type="radio"]:disabled + label { + opacity: 0.65; +} +.radio input[type="radio"]:disabled + label::before { + cursor: not-allowed; +} +.radio.radio-inline { + margin-top: 0; +} + +.radio-primary input[type="radio"] + label::after { + background-color: #337ab7; +} +.radio-primary input[type="radio"]:checked + label::before { + border-color: #337ab7; +} +.radio-primary input[type="radio"]:checked + label::after { + background-color: #337ab7; +} + +.radio-danger input[type="radio"] + label::after { + background-color: #d9534f; +} +.radio-danger input[type="radio"]:checked + label::before { + border-color: #d9534f; +} +.radio-danger input[type="radio"]:checked + label::after { + background-color: #d9534f; +} + +.radio-info input[type="radio"] + label::after { + background-color: #5bc0de; +} +.radio-info input[type="radio"]:checked + label::before { + border-color: #5bc0de; +} +.radio-info input[type="radio"]:checked + label::after { + background-color: #5bc0de; +} + +.radio-warning input[type="radio"] + label::after { + background-color: #f0ad4e; +} +.radio-warning input[type="radio"]:checked + label::before { + border-color: #f0ad4e; +} +.radio-warning input[type="radio"]:checked + label::after { + background-color: #f0ad4e; +} + +.radio-success input[type="radio"] + label::after { + background-color: #5cb85c; +} +.radio-success input[type="radio"]:checked + label::before { + border-color: #5cb85c; +} +.radio-success input[type="radio"]:checked + label::after { + background-color: #5cb85c; +} + +input[type="checkbox"].styled:checked + label:after, +input[type="radio"].styled:checked + label:after { + font-family: 'FontAwesome'; + content: "\f00c"; +} +input[type="checkbox"] .styled:checked + label::before, +input[type="radio"] .styled:checked + label::before { + color: #fff; +} +input[type="checkbox"] .styled:checked + label::after, +input[type="radio"] .styled:checked + label::after { + color: #fff; +} diff --git a/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.less b/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.less new file mode 100644 index 0000000000..9db204fd6a --- /dev/null +++ b/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.less @@ -0,0 +1,241 @@ +// +// Checkboxes +// -------------------------------------------------- + +@font-family-icon: 'FontAwesome'; +@fa-var-check: "\f00c"; +@check-icon: @fa-var-check; + +.checkbox-variant(@parent, @color) { + .@{parent} input[type="checkbox"]:checked + label, + .@{parent} input[type="radio"]:checked + label { + &::before { + background-color: @color; + border-color: @color; + } + &::after { + color: #fff; + } + } +} + +.checkbox-variant-indeterminate(@parent, @color) { + .@{parent} input[type="checkbox"]:indeterminate + label, + .@{parent} input[type="radio"]:indeterminate + label { + &::before { + background-color: @color; + border-color: @color; + } + &::after { + background-color: #fff; + } + } +} + + +.checkbox{ + padding-left: 20px; + + label{ + display: inline-block; + vertical-align: middle; + position: relative; + padding-left: 5px; + + &::before{ + content: ""; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + left: 0; + margin-left: -20px; + border: 1px solid @input-border; + border-radius: 3px; + background-color: #fff; + .transition(~"border 0.15s ease-in-out, color 0.15s ease-in-out"); + } + + &::after{ + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + left: 0; + top: 0; + margin-left: -20px; + padding-left: 3px; + padding-top: 1px; + font-size: 11px; + color: @input-color; + } + } + + input[type="checkbox"], + input[type="radio"]{ + opacity: 0; + z-index: 1; + + &:focus + label::before{ + .tab-focus(); + } + + &:checked + label::after{ + font-family: @font-family-icon; + content: @check-icon; + } + + &:indeterminate + label::after{ + display: block; + content: " "; + width: 10px; + height: 3px; + background-color: #555555; + border-radius: 2px; + margin-left: -16.5px; + margin-top: 7px; + } + + &:disabled + label{ + opacity: 0.65; + + &::before{ + background-color: @input-bg-disabled; + cursor: not-allowed; + } + } + + } + + &.checkbox-circle label::before{ + border-radius: 50%; + } + + &.checkbox-inline{ + margin-top: 0; + } +} + +.checkbox-variant(checkbox-primary, @brand-primary); +.checkbox-variant(checkbox-danger, @brand-danger); +.checkbox-variant(checkbox-info, @brand-info); +.checkbox-variant(checkbox-warning, @brand-warning); +.checkbox-variant(checkbox-success, @brand-success); + +.checkbox-variant-indeterminate(checkbox-primary, @brand-primary); +.checkbox-variant-indeterminate(checkbox-danger, @brand-danger); +.checkbox-variant-indeterminate(checkbox-info, @brand-info); +.checkbox-variant-indeterminate(checkbox-warning, @brand-warning); +.checkbox-variant-indeterminate(checkbox-success, @brand-success); + +// +// Radios +// -------------------------------------------------- + +.radio-variant(@parent, @color) { + .@{parent} input[type="radio"]{ + & + label{ + &::after{ + background-color: @color; + } + } + &:checked + label{ + &::before { + border-color: @color; + } + &::after{ + background-color: @color; + } + } + } +} + +.radio{ + padding-left: 20px; + + label{ + display: inline-block; + vertical-align: middle; + position: relative; + padding-left: 5px; + + &::before{ + content: ""; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + left: 0; + margin-left: -20px; + border: 1px solid @input-border; + border-radius: 50%; + background-color: #fff; + .transition(border 0.15s ease-in-out); + } + + &::after{ + display: inline-block; + position: absolute; + content: " "; + width: 11px; + height: 11px; + left: 3px; + top: 3px; + margin-left: -20px; + border-radius: 50%; + background-color: @input-color; + .scale(0, 0); + + .transition-transform(.1s cubic-bezier(.8,-0.33,.2,1.33)); + //curve - http://cubic-bezier.com/#.8,-0.33,.2,1.33 + } + } + + input[type="radio"]{ + opacity: 0; + z-index: 1; + + &:focus + label::before{ + .tab-focus(); + } + + &:checked + label::after{ + .scale(1, 1); + } + + &:disabled + label{ + opacity: 0.65; + + &::before{ + cursor: not-allowed; + } + } + + } + + &.radio-inline{ + margin-top: 0; + } +} + +.radio-variant(radio-primary, @brand-primary); +.radio-variant(radio-danger, @brand-danger); +.radio-variant(radio-info, @brand-info); +.radio-variant(radio-warning, @brand-warning); +.radio-variant(radio-success, @brand-success); + +input[type="checkbox"], +input[type="radio"] { + &.styled:checked + label:after { + font-family: @font-family-icon; + content: @check-icon; + } + & .styled:checked + label { + &::before { + color: #fff; + } + &::after { + color: #fff; + } + } +} diff --git a/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.scss b/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.scss new file mode 100644 index 0000000000..5f1fbb642f --- /dev/null +++ b/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.scss @@ -0,0 +1,245 @@ +// +// Checkboxes +// -------------------------------------------------- + + +$font-family-icon: 'FontAwesome' !default; +$fa-var-check: "\f00c" !default; +$check-icon: $fa-var-check !default; + +@mixin checkbox-variant($parent, $color) { + #{$parent} input[type="checkbox"]:checked + label, + #{$parent} input[type="radio"]:checked + label { + &::before { + background-color: $color; + border-color: $color; + } + &::after{ + color: #fff; + } + } +} + +@mixin checkbox-variant-indeterminate($parent, $color) { + #{$parent} input[type="checkbox"]:indeterminate + label, + #{$parent} input[type="radio"]:indeterminate + label { + &::before { + background-color: $color; + border-color: $color; + } + &::after{ + background-color: #fff; + } + } +} + + + +.checkbox{ + padding-left: 20px; + + label{ + display: inline-block; + vertical-align: middle; + position: relative; + padding-left: 5px; + + &::before{ + content: ""; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + left: 0; + margin-left: -20px; + border: 1px solid $input-border; + border-radius: 3px; + background-color: #fff; + @include transition(border 0.15s ease-in-out, color 0.15s ease-in-out); + } + + &::after{ + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + left: 0; + top: 0; + margin-left: -20px; + padding-left: 3px; + padding-top: 1px; + font-size: 11px; + color: $input-color; + } + } + + input[type="checkbox"], + input[type="radio"] { + opacity: 0; + z-index: 1; + + &:focus + label::before{ + @include tab-focus(); + } + + &:checked + label::after{ + font-family: $font-family-icon; + content: $check-icon; + } + + &:indeterminate + label::after{ + display: block; + content: ""; + width: 10px; + height: 3px; + background-color: #555555; + border-radius: 2px; + margin-left: -16.5px; + margin-top: 7px; + } + + &:disabled + label{ + opacity: 0.65; + + &::before{ + background-color: $input-bg-disabled; + cursor: not-allowed; + } + } + + } + + &.checkbox-circle label::before{ + border-radius: 50%; + } + + &.checkbox-inline{ + margin-top: 0; + } +} + +@include checkbox-variant('.checkbox-primary', $brand-primary); +@include checkbox-variant('.checkbox-danger', $brand-danger); +@include checkbox-variant('.checkbox-info', $brand-info); +@include checkbox-variant('.checkbox-warning', $brand-warning); +@include checkbox-variant('.checkbox-success', $brand-success); + + +@include checkbox-variant-indeterminate('.checkbox-primary', $brand-primary); +@include checkbox-variant-indeterminate('.checkbox-danger', $brand-danger); +@include checkbox-variant-indeterminate('.checkbox-info', $brand-info); +@include checkbox-variant-indeterminate('.checkbox-warning', $brand-warning); +@include checkbox-variant-indeterminate('.checkbox-success', $brand-success); + +// +// Radios +// -------------------------------------------------- + +@mixin radio-variant($parent, $color) { + #{$parent} input[type="radio"]{ + + label{ + &::after{ + background-color: $color; + } + } + &:checked + label{ + &::before { + border-color: $color; + } + &::after{ + background-color: $color; + } + } + } +} + +.radio{ + padding-left: 20px; + + label{ + display: inline-block; + vertical-align: middle; + position: relative; + padding-left: 5px; + + &::before{ + content: ""; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + left: 0; + margin-left: -20px; + border: 1px solid $input-border; + border-radius: 50%; + background-color: #fff; + @include transition(border 0.15s ease-in-out); + } + + &::after{ + display: inline-block; + position: absolute; + content: " "; + width: 11px; + height: 11px; + left: 3px; + top: 3px; + margin-left: -20px; + border-radius: 50%; + background-color: $input-color; + @include scale(0, 0); + + @include transition-transform(.1s cubic-bezier(.8,-0.33,.2,1.33)); + //curve - http://cubic-bezier.com/#.8,-0.33,.2,1.33 + } + } + + input[type="radio"]{ + opacity: 0; + z-index: 1; + + &:focus + label::before{ + @include tab-focus(); + } + + &:checked + label::after{ + @include scale(1, 1); + } + + &:disabled + label{ + opacity: 0.65; + + &::before{ + cursor: not-allowed; + } + } + + } + + &.radio-inline{ + margin-top: 0; + } +} + +@include radio-variant('.radio-primary', $brand-primary); +@include radio-variant('.radio-danger', $brand-danger); +@include radio-variant('.radio-info', $brand-info); +@include radio-variant('.radio-warning', $brand-warning); +@include radio-variant('.radio-success', $brand-success); + + +input[type="checkbox"], +input[type="radio"] { + &.styled:checked + label:after { + font-family: $font-family-icon; + content: $check-icon; + } + .styled:checked + label { + &::before { + color: #fff; + } + &::after { + color: #fff; + } + } +} diff --git a/frameworks/awesome-bootstrap-checkbox/bower.json b/frameworks/awesome-bootstrap-checkbox/bower.json new file mode 100644 index 0000000000..fdee630c38 --- /dev/null +++ b/frameworks/awesome-bootstrap-checkbox/bower.json @@ -0,0 +1,22 @@ +{ + "name": "awesome-bootstrap-checkbox", + "main": [ + "awesome-bootstrap-checkbox.css", + "awesome-bootstrap-checkbox.scss" + ], + "version": "0.3.7", + "homepage": "https://github.com/flatlogic/awesome-bootstrap-checkbox", + "authors": [ + "okendoken flatlogic.com" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "bower_components" + ], + "dependencies": {}, + "devDependencies": { + "bootstrap-sass-official": "3.3.3", + "font-awesome-sass": "4.3.1" + } +} diff --git a/frameworks/awesome-bootstrap-checkbox/package.json b/frameworks/awesome-bootstrap-checkbox/package.json new file mode 100644 index 0000000000..806161c284 --- /dev/null +++ b/frameworks/awesome-bootstrap-checkbox/package.json @@ -0,0 +1,32 @@ +{ + "name": "awesome-bootstrap-checkbox", + "version": "0.3.7", + "description": "Font Awesome Bootstrap Checkboxes & Radios. Pure css way to make inputs look prettier.", + "main": "awesome-bootstrap-checkbox.css", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://github.com/flatlogic/awesome-bootstrap-checkbox.git" + }, + "keywords": [ + "bootstrap", + "font-awesome", + "scss", + "less" + ], + "author": "contact@flatlogic.com (http://flatlogic.com)", + "license": "MIT", + "bugs": { + "url": "https://github.com/flatlogic/awesome-bootstrap-checkbox/issues" + }, + "homepage": "https://github.com/flatlogic/awesome-bootstrap-checkbox", + "files": [ + "demo", + "awesome-bootstrap-checkbox.css", + "awesome-bootstrap-checkbox.scss", + "awesome-bootstrap-checkbox.less", + "bower.json" + ] +} diff --git a/frameworks/bootstrap-colorpicker/LICENSE b/frameworks/bootstrap-colorpicker/LICENSE new file mode 100644 index 0000000000..a37331e733 --- /dev/null +++ b/frameworks/bootstrap-colorpicker/LICENSE @@ -0,0 +1,13 @@ +Copyright 2012 Stefan Petre + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/frameworks/bootstrap-colorpicker/README.md b/frameworks/bootstrap-colorpicker/README.md new file mode 100644 index 0000000000..7293f6bdb9 --- /dev/null +++ b/frameworks/bootstrap-colorpicker/README.md @@ -0,0 +1,23 @@ +# Bootstrap Colorpicker 2.3 + +A nice and customizable colorpicker plugin for Twitter Bootstrap + +[![Join the chat at https://gitter.im/mjolnic/bootstrap-colorpicker](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mjolnic/bootstrap-colorpicker?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Build Status](https://travis-ci.org/mjolnic/bootstrap-colorpicker.png)](https://travis-ci.org/mjolnic/bootstrap-colorpicker) + +## Installation +For downloading the source code, you have many choices: + +- Downloading the [latest source code ZIP file](https://github.com/mjolnic/bootstrap-colorpicker/archive/master.zip) +- Cloning: `git clone https://github.com/mjolnic/bootstrap-colorpicker.git` +- Installing via: `bower install mjolnic-bootstrap-colorpicker` +- Installing via: `npm install bootstrap-colorpicker` + +## Getting started +- For using the plugin you will only need the files under the `dist` folder +- You can read the [documentation here](http://mjolnic.github.io/bootstrap-colorpicker/) + +## Contributing and reporting issues +If you want to contribute to the source code or report issues and suggestions, please read the [CONTRIBUTING.md](CONTRIBUTING.md) guidelines first. + +## Credits +Originally written by [Stefan Petre](http://www.eyecon.ro/) diff --git a/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.css b/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.css new file mode 100644 index 0000000000..3f8ba1c2cb --- /dev/null +++ b/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.css @@ -0,0 +1,261 @@ +/*! + * Bootstrap Colorpicker + * http://mjolnic.github.io/bootstrap-colorpicker/ + * + * Originally written by (c) 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0.txt + * + */ + +.colorpicker-saturation { + float: left; + width: 100px; + height: 100px; + cursor: crosshair; + background-image: url("../img/bootstrap-colorpicker/saturation.png"); +} + +.colorpicker-saturation i { + position: absolute; + top: 0; + left: 0; + display: block; + width: 5px; + height: 5px; + margin: -4px 0 0 -4px; + border: 1px solid #000; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.colorpicker-saturation i b { + display: block; + width: 5px; + height: 5px; + border: 1px solid #fff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.colorpicker-hue, +.colorpicker-alpha { + float: left; + width: 15px; + height: 100px; + margin-bottom: 4px; + margin-left: 4px; + cursor: row-resize; +} + +.colorpicker-hue i, +.colorpicker-alpha i { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 1px; + margin-top: -1px; + background: #000; + border-top: 1px solid #fff; +} + +.colorpicker-hue { + background-image: url("../img/bootstrap-colorpicker/hue.png"); +} + +.colorpicker-alpha { + display: none; + background-image: url("../img/bootstrap-colorpicker/alpha.png"); +} + +.colorpicker-saturation, +.colorpicker-hue, +.colorpicker-alpha { + background-size: contain; +} + +.colorpicker { + top: 0; + left: 0; + z-index: 2500; + min-width: 130px; + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; +} + +.colorpicker:before, +.colorpicker:after { + display: table; + line-height: 0; + content: ""; +} + +.colorpicker:after { + clear: both; +} + +.colorpicker:before { + position: absolute; + top: -7px; + left: 6px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.colorpicker:after { + position: absolute; + top: -6px; + left: 7px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.colorpicker div { + position: relative; +} + +.colorpicker.colorpicker-with-alpha { + min-width: 140px; +} + +.colorpicker.colorpicker-with-alpha .colorpicker-alpha { + display: block; +} + +.colorpicker-color { + height: 10px; + margin-top: 5px; + clear: both; + background-image: url("../img/bootstrap-colorpicker/alpha.png"); + background-position: 0 100%; +} + +.colorpicker-color div { + height: 10px; +} + +.colorpicker-selectors { + display: none; + height: 10px; + margin-top: 5px; + clear: both; +} + +.colorpicker-selectors i { + float: left; + width: 10px; + height: 10px; + cursor: pointer; +} + +.colorpicker-selectors i + i { + margin-left: 3px; +} + +.colorpicker-element .input-group-addon i, +.colorpicker-element .add-on i { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: text-top; + cursor: pointer; +} + +.colorpicker.colorpicker-inline { + position: relative; + z-index: auto; + display: inline-block; + float: none; +} + +.colorpicker.colorpicker-horizontal { + width: 110px; + height: auto; + min-width: 110px; +} + +.colorpicker.colorpicker-horizontal .colorpicker-saturation { + margin-bottom: 4px; +} + +.colorpicker.colorpicker-horizontal .colorpicker-color { + width: 100px; +} + +.colorpicker.colorpicker-horizontal .colorpicker-hue, +.colorpicker.colorpicker-horizontal .colorpicker-alpha { + float: left; + width: 100px; + height: 15px; + margin-bottom: 4px; + margin-left: 0; + cursor: col-resize; +} + +.colorpicker.colorpicker-horizontal .colorpicker-hue i, +.colorpicker.colorpicker-horizontal .colorpicker-alpha i { + position: absolute; + top: 0; + left: 0; + display: block; + width: 1px; + height: 15px; + margin-top: 0; + background: #ffffff; + border: none; +} + +.colorpicker.colorpicker-horizontal .colorpicker-hue { + background-image: url("../img/bootstrap-colorpicker/hue-horizontal.png"); +} + +.colorpicker.colorpicker-horizontal .colorpicker-alpha { + background-image: url("../img/bootstrap-colorpicker/alpha-horizontal.png"); +} + +.colorpicker.colorpicker-hidden { + display: none; +} + +.colorpicker.colorpicker-visible { + display: block; +} + +.colorpicker-inline.colorpicker-visible { + display: inline-block; +} + +.colorpicker-right:before { + right: 6px; + left: auto; +} + +.colorpicker-right:after { + right: 7px; + left: auto; +} + +.colorpicker-no-arrow:before { + border-right: 0; + border-left: 0; +} + +.colorpicker-no-arrow:after { + border-right: 0; + border-left: 0; +} \ No newline at end of file diff --git a/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css b/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css new file mode 100644 index 0000000000..28a87180ac --- /dev/null +++ b/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Colorpicker + * http://mjolnic.github.io/bootstrap-colorpicker/ + * + * Originally written by (c) 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0.txt + * + */.colorpicker-saturation{float:left;width:100px;height:100px;cursor:crosshair;background-image:url("../img/bootstrap-colorpicker/saturation.png")}.colorpicker-saturation i{position:absolute;top:0;left:0;display:block;width:5px;height:5px;margin:-4px 0 0 -4px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-saturation i b{display:block;width:5px;height:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-hue,.colorpicker-alpha{float:left;width:15px;height:100px;margin-bottom:4px;margin-left:4px;cursor:row-resize}.colorpicker-hue i,.colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:100%;height:1px;margin-top:-1px;background:#000;border-top:1px solid #fff}.colorpicker-hue{background-image:url("../img/bootstrap-colorpicker/hue.png")}.colorpicker-alpha{display:none;background-image:url("../img/bootstrap-colorpicker/alpha.png")}.colorpicker-saturation,.colorpicker-hue,.colorpicker-alpha{background-size:contain}.colorpicker{top:0;left:0;z-index:2500;min-width:130px;padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1}.colorpicker:before,.colorpicker:after{display:table;line-height:0;content:""}.colorpicker:after{clear:both}.colorpicker:before{position:absolute;top:-7px;left:6px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.colorpicker:after{position:absolute;top:-6px;left:7px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.colorpicker div{position:relative}.colorpicker.colorpicker-with-alpha{min-width:140px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url("../img/bootstrap-colorpicker/alpha.png");background-position:0 100%}.colorpicker-color div{height:10px}.colorpicker-selectors{display:none;height:10px;margin-top:5px;clear:both}.colorpicker-selectors i{float:left;width:10px;height:10px;cursor:pointer}.colorpicker-selectors i+i{margin-left:3px}.colorpicker-element .input-group-addon i,.colorpicker-element .add-on i{display:inline-block;width:16px;height:16px;vertical-align:text-top;cursor:pointer}.colorpicker.colorpicker-inline{position:relative;z-index:auto;display:inline-block;float:none}.colorpicker.colorpicker-horizontal{width:110px;height:auto;min-width:110px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-color{width:100px}.colorpicker.colorpicker-horizontal .colorpicker-hue,.colorpicker.colorpicker-horizontal .colorpicker-alpha{float:left;width:100px;height:15px;margin-bottom:4px;margin-left:0;cursor:col-resize}.colorpicker.colorpicker-horizontal .colorpicker-hue i,.colorpicker.colorpicker-horizontal .colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:1px;height:15px;margin-top:0;background:#fff;border:0}.colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url("../img/bootstrap-colorpicker/hue-horizontal.png")}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url("../img/bootstrap-colorpicker/alpha-horizontal.png")}.colorpicker.colorpicker-hidden{display:none}.colorpicker.colorpicker-visible{display:block}.colorpicker-inline.colorpicker-visible{display:inline-block}.colorpicker-right:before{right:6px;left:auto}.colorpicker-right:after{right:7px;left:auto}.colorpicker-no-arrow:before{border-right:0;border-left:0}.colorpicker-no-arrow:after{border-right:0;border-left:0} \ No newline at end of file diff --git a/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png b/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a65c08b0ed34d969cb0e93165a2e8b0ef9dbd7 GIT binary patch literal 3635 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 FV1h0U4od(4 literal 0 HcmV?d00001 diff --git a/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png b/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..38043f1c85f20fe8ce37ad380bebe2d42d14fb29 GIT binary patch literal 3271 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 literal 0 HcmV?d00001 diff --git a/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png b/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png new file mode 100644 index 0000000000000000000000000000000000000000..d89560e999f86c349ddc78c298b0328293f13e1e GIT binary patch literal 2972 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 >YjDHRkjMe3FzWUPlrRR$Vj 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 literal 0 HcmV?d00001 diff --git a/frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.js b/frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.js new file mode 100644 index 0000000000..f02bd43de5 --- /dev/null +++ b/frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.js @@ -0,0 +1,1087 @@ +/*! + * Bootstrap Colorpicker + * http://mjolnic.github.io/bootstrap-colorpicker/ + * + * Originally written by (c) 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0.txt + * + * @todo Update DOCS + */ + +(function(factory) { + "use strict"; + if (typeof exports === 'object') { + module.exports = factory(window.jQuery); + } else if (typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (window.jQuery && !window.jQuery.fn.colorpicker) { + factory(window.jQuery); + } + } + (function($) { + 'use strict'; + + // Color object + var Color = function(val, customColors) { + this.value = { + h: 0, + s: 0, + b: 0, + a: 1 + }; + this.origFormat = null; // original string format + if (customColors) { + $.extend(this.colors, customColors); + } + if (val) { + if (val.toLowerCase !== undefined) { + // cast to string + val = val + ''; + this.setColor(val); + } else if (val.h !== undefined) { + this.value = val; + } + } + }; + + Color.prototype = { + constructor: Color, + // 140 predefined colors from the HTML Colors spec + colors: { + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aqua": "#00ffff", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "black": "#000000", + "blanchedalmond": "#ffebcd", + "blue": "#0000ff", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "cyan": "#00ffff", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgreen": "#006400", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "fuchsia": "#ff00ff", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "gray": "#808080", + "green": "#008000", + "greenyellow": "#adff2f", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred": "#cd5c5c", + "indigo": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgrey": "#d3d3d3", + "lightgreen": "#90ee90", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "lime": "#00ff00", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "magenta": "#ff00ff", + "maroon": "#800000", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370d8", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "navy": "#000080", + "oldlace": "#fdf5e6", + "olive": "#808000", + "olivedrab": "#6b8e23", + "orange": "#ffa500", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#d87093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "purple": "#800080", + "red": "#ff0000", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "silver": "#c0c0c0", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "teal": "#008080", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", + "violet": "#ee82ee", + "wheat": "#f5deb3", + "white": "#ffffff", + "whitesmoke": "#f5f5f5", + "yellow": "#ffff00", + "yellowgreen": "#9acd32", + "transparent": "transparent" + }, + _sanitizeNumber: function(val) { + if (typeof val === 'number') { + return val; + } + if (isNaN(val) || (val === null) || (val === '') || (val === undefined)) { + return 1; + } + if (val.toLowerCase !== undefined) { + return parseFloat(val); + } + return 1; + }, + isTransparent: function(strVal) { + if (!strVal) { + return false; + } + strVal = strVal.toLowerCase().trim(); + return (strVal === 'transparent') || (strVal.match(/#?00000000/)) || (strVal.match(/(rgba|hsla)\(0,0,0,0?\.?0\)/)); + }, + rgbaIsTransparent: function(rgba) { + return ((rgba.r === 0) && (rgba.g === 0) && (rgba.b === 0) && (rgba.a === 0)); + }, + //parse a string to HSB + setColor: function(strVal) { + strVal = strVal.toLowerCase().trim(); + if (strVal) { + if (this.isTransparent(strVal)) { + this.value = { + h: 0, + s: 0, + b: 0, + a: 0 + }; + } else { + this.value = this.stringToHSB(strVal) || { + h: 0, + s: 0, + b: 0, + a: 1 + }; // if parser fails, defaults to black + } + } + }, + stringToHSB: function(strVal) { + strVal = strVal.toLowerCase(); + var alias; + if (typeof this.colors[strVal] !== 'undefined') { + strVal = this.colors[strVal]; + alias = 'alias'; + } + var that = this, + result = false; + $.each(this.stringParsers, function(i, parser) { + var match = parser.re.exec(strVal), + values = match && parser.parse.apply(that, [match]), + format = alias || parser.format || 'rgba'; + if (values) { + if (format.match(/hsla?/)) { + result = that.RGBtoHSB.apply(that, that.HSLtoRGB.apply(that, values)); + } else { + result = that.RGBtoHSB.apply(that, values); + } + that.origFormat = format; + return false; + } + return true; + }); + return result; + }, + setHue: function(h) { + this.value.h = 1 - h; + }, + setSaturation: function(s) { + this.value.s = s; + }, + setBrightness: function(b) { + this.value.b = 1 - b; + }, + setAlpha: function(a) { + this.value.a = parseInt((1 - a) * 100, 10) / 100; + }, + toRGB: function(h, s, b, a) { + if (!h) { + h = this.value.h; + s = this.value.s; + b = this.value.b; + } + h *= 360; + var R, G, B, X, C; + h = (h % 360) / 60; + C = b * s; + X = C * (1 - Math.abs(h % 2 - 1)); + R = G = B = b - C; + + h = ~~h; + R += [C, X, 0, 0, X, C][h]; + G += [X, C, C, X, 0, 0][h]; + B += [0, 0, X, C, C, X][h]; + return { + r: Math.round(R * 255), + g: Math.round(G * 255), + b: Math.round(B * 255), + a: a || this.value.a + }; + }, + toHex: function(h, s, b, a) { + var rgb = this.toRGB(h, s, b, a); + if (this.rgbaIsTransparent(rgb)) { + return 'transparent'; + } + return '#' + ((1 << 24) | (parseInt(rgb.r) << 16) | (parseInt(rgb.g) << 8) | parseInt(rgb.b)).toString(16).substr(1); + }, + toHSL: function(h, s, b, a) { + h = h || this.value.h; + s = s || this.value.s; + b = b || this.value.b; + a = a || this.value.a; + + var H = h, + L = (2 - s) * b, + S = s * b; + if (L > 0 && L <= 1) { + S /= L; + } else { + S /= 2 - L; + } + L /= 2; + if (S > 1) { + S = 1; + } + return { + h: isNaN(H) ? 0 : H, + s: isNaN(S) ? 0 : S, + l: isNaN(L) ? 0 : L, + a: isNaN(a) ? 0 : a + }; + }, + toAlias: function(r, g, b, a) { + var rgb = this.toHex(r, g, b, a); + for (var alias in this.colors) { + if (this.colors[alias] === rgb) { + return alias; + } + } + return false; + }, + RGBtoHSB: function(r, g, b, a) { + r /= 255; + g /= 255; + b /= 255; + + var H, S, V, C; + V = Math.max(r, g, b); + C = V - Math.min(r, g, b); + H = (C === 0 ? null : + V === r ? (g - b) / C : + V === g ? (b - r) / C + 2 : + (r - g) / C + 4 + ); + H = ((H + 360) % 6) * 60 / 360; + S = C === 0 ? 0 : C / V; + return { + h: this._sanitizeNumber(H), + s: S, + b: V, + a: this._sanitizeNumber(a) + }; + }, + HueToRGB: function(p, q, h) { + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + if ((h * 6) < 1) { + return p + (q - p) * h * 6; + } else if ((h * 2) < 1) { + return q; + } else if ((h * 3) < 2) { + return p + (q - p) * ((2 / 3) - h) * 6; + } else { + return p; + } + }, + HSLtoRGB: function(h, s, l, a) { + if (s < 0) { + s = 0; + } + var q; + if (l <= 0.5) { + q = l * (1 + s); + } else { + q = l + s - (l * s); + } + + var p = 2 * l - q; + + var tr = h + (1 / 3); + var tg = h; + var tb = h - (1 / 3); + + var r = Math.round(this.HueToRGB(p, q, tr) * 255); + var g = Math.round(this.HueToRGB(p, q, tg) * 255); + var b = Math.round(this.HueToRGB(p, q, tb) * 255); + return [r, g, b, this._sanitizeNumber(a)]; + }, + toString: function(format) { + format = format || 'rgba'; + var c = false; + switch (format) { + case 'rgb': + { + c = this.toRGB(); + if (this.rgbaIsTransparent(c)) { + return 'transparent'; + } + return 'rgb(' + c.r + ',' + c.g + ',' + c.b + ')'; + } + break; + case 'rgba': + { + c = this.toRGB(); + return 'rgba(' + c.r + ',' + c.g + ',' + c.b + ',' + c.a + ')'; + } + break; + case 'hsl': + { + c = this.toHSL(); + return 'hsl(' + Math.round(c.h * 360) + ',' + Math.round(c.s * 100) + '%,' + Math.round(c.l * 100) + '%)'; + } + break; + case 'hsla': + { + c = this.toHSL(); + return 'hsla(' + Math.round(c.h * 360) + ',' + Math.round(c.s * 100) + '%,' + Math.round(c.l * 100) + '%,' + c.a + ')'; + } + break; + case 'hex': + { + return this.toHex(); + } + break; + case 'alias': + return this.toAlias() || this.toHex(); + default: + { + return c; + } + break; + } + }, + // a set of RE's that can match strings and generate color tuples. + // from John Resig color plugin + // https://github.com/jquery/jquery-color/ + stringParsers: [{ + re: /rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/, + format: 'rgb', + parse: function(execResult) { + return [ + execResult[1], + execResult[2], + execResult[3], + 1 + ]; + } + }, { + re: /rgb\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/, + format: 'rgb', + parse: function(execResult) { + return [ + 2.55 * execResult[1], + 2.55 * execResult[2], + 2.55 * execResult[3], + 1 + ]; + } + }, { + re: /rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + format: 'rgba', + parse: function(execResult) { + return [ + execResult[1], + execResult[2], + execResult[3], + execResult[4] + ]; + } + }, { + re: /rgba\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + format: 'rgba', + parse: function(execResult) { + return [ + 2.55 * execResult[1], + 2.55 * execResult[2], + 2.55 * execResult[3], + execResult[4] + ]; + } + }, { + re: /hsl\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/, + format: 'hsl', + parse: function(execResult) { + return [ + execResult[1] / 360, + execResult[2] / 100, + execResult[3] / 100, + execResult[4] + ]; + } + }, { + re: /hsla\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + format: 'hsla', + parse: function(execResult) { + return [ + execResult[1] / 360, + execResult[2] / 100, + execResult[3] / 100, + execResult[4] + ]; + } + }, { + re: /#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/, + format: 'hex', + parse: function(execResult) { + return [ + parseInt(execResult[1], 16), + parseInt(execResult[2], 16), + parseInt(execResult[3], 16), + 1 + ]; + } + }, { + re: /#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/, + format: 'hex', + parse: function(execResult) { + return [ + parseInt(execResult[1] + execResult[1], 16), + parseInt(execResult[2] + execResult[2], 16), + parseInt(execResult[3] + execResult[3], 16), + 1 + ]; + } + }], + colorNameToHex: function(name) { + if (typeof this.colors[name.toLowerCase()] !== 'undefined') { + return this.colors[name.toLowerCase()]; + } + return false; + } + }; + + + var defaults = { + horizontal: false, // horizontal mode layout ? + inline: false, //forces to show the colorpicker as an inline element + color: false, //forces a color + format: false, //forces a format + input: 'input', // children input selector + container: false, // container selector + component: '.add-on, .input-group-addon', // children component selector + sliders: { + saturation: { + maxLeft: 100, + maxTop: 100, + callLeft: 'setSaturation', + callTop: 'setBrightness' + }, + hue: { + maxLeft: 0, + maxTop: 100, + callLeft: false, + callTop: 'setHue' + }, + alpha: { + maxLeft: 0, + maxTop: 100, + callLeft: false, + callTop: 'setAlpha' + } + }, + slidersHorz: { + saturation: { + maxLeft: 100, + maxTop: 100, + callLeft: 'setSaturation', + callTop: 'setBrightness' + }, + hue: { + maxLeft: 100, + maxTop: 0, + callLeft: 'setHue', + callTop: false + }, + alpha: { + maxLeft: 100, + maxTop: 0, + callLeft: 'setAlpha', + callTop: false + } + }, + template: '
      - {{* @todo work for mobile have to be done *}} - {{/if}} - {{/if}} + {{/if}} {{*End if $item.thread_level==1}} {{* The avatar picture for comments *}} {{if $item.thread_level!=1}} @@ -197,43 +207,46 @@ as the value of $top_child_total (this is done at the end of this file) {{* contact info header*}} {{if $item.thread_level==1}} - {{* @todo work for mobile have to be done *}} + {{* contact info header for smartphones *}} - {{/if}} + {{/if}} {{* End of if $item.thread_level==1 *}} {{* contact info header for comments *}} {{if $item.thread_level!=1}} -
      {{*this div must be closed at the end of the file *}} -
      -
      {{$item.name}} - {{if $item.plink}} - {{$item.ago}} {{if $item.location}} — ({{$item.location}}){{/if}} - {{/if}}
      +
      {{*this is the media body for comments - this div must be closed at the end of the file *}} +
      +
      + {{$item.name}} + + {{$item.ago}} {{if $item.location}} — ({{$item.location}}){{/if}} + +
      {{/if}} From 2ea7b72a49d5590dd5297293be14bef6bc466699 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Tue, 26 Apr 2016 14:26:19 +0200 Subject: [PATCH 237/485] correct the ARIA for post action dropdown --- templates/search_item.tpl | 24 ++++++++++++------------ templates/wall_thread.tpl | 36 ++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/templates/search_item.tpl b/templates/search_item.tpl index 035f2aceda..3a06ae3e6a 100644 --- a/templates/search_item.tpl +++ b/templates/search_item.tpl @@ -18,34 +18,34 @@ diff --git a/templates/wall_thread.tpl b/templates/wall_thread.tpl index a551daa86a..f927846ea5 100644 --- a/templates/wall_thread.tpl +++ b/templates/wall_thread.tpl @@ -83,52 +83,52 @@ as the value of $top_child_total (this is done at the end of this file) From 6cca98f9c2b09e1be38d04b270de0f176ce12b00 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Tue, 26 Apr 2016 18:52:57 +0200 Subject: [PATCH 238/485] add some ARIA to the nav bar --- templates/nav.tpl | 68 +++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/templates/nav.tpl b/templates/nav.tpl index 95b65fa840..e0eff64a9b 100644 --- a/templates/nav.tpl +++ b/templates/nav.tpl @@ -17,10 +17,10 @@
      -
      +
      {{* Buttons for the mobile view *}} - @@ -34,40 +34,40 @@ {{* Left section of the NavBar with navigation shortcuts/icons *}} - -
      - - {{* format each contact with the contact_template.tpl *}} -
        - {{foreach $contacts as $contact}} -
      • {{include file="contact_template.tpl"}}
      • - {{/foreach}} -
      +
      +
      + {{* format each contact with the contact_template.tpl *}} +
        + {{foreach $contacts as $contact}} +
      • {{include file="contact_template.tpl"}}
      • + {{/foreach}} +
      +
      diff --git a/theme.php b/theme.php index d2526ed553..c5c18d0aa2 100644 --- a/theme.php +++ b/theme.php @@ -34,6 +34,7 @@ function frio_install() { register_hook('item_photo_menu', 'view/theme/frio/theme.php', 'frio_item_photo_menu'); register_hook('contact_photo_menu', 'view/theme/frio/theme.php', 'frio_contact_photo_menu'); register_hook('nav_info', 'view/theme/frio/theme.php', 'frio_remote_nav'); + register_hook('acl_lookup_end', 'view/theme/frio/theme.php', 'frio_acl_lookup'); logger("installed theme frio"); } @@ -41,7 +42,9 @@ function frio_install() { function frio_uninstall() { unregister_hook('prepare_body_final', 'view/theme/frio/theme.php', 'frio_item_photo_links'); unregister_hook('item_photo_menu', 'view/theme/frio/theme.php', 'frio_item_photo_menu'); + unregister_hook('contact_photo_menu', 'view/theme/frio/theme.php', 'frio_contact_photo_menu'); unregister_hook('nav_info', 'view/theme/frio/theme.php', 'frio_remote_nav'); + unregister_hook('acl_lookup_end', 'view/theme/frio/theme.php', 'frio_acl_lookup'); logger("uninstalled theme frio"); } @@ -244,3 +247,63 @@ function frio_remote_nav($a,&$nav) { $nav['sitename'] = $a->config['sitename']; } } +/** + * @brief: Search for contacts + * + * This function search for a users contacts. The code is copied from contact search + * in /mod/contacts.php. With this function the contacts will permitted to acl_lookup() + * and can grabbed as json. For this we use the type="r". This is usful to to let js + * grab the contact data. + * We use this to give the data to textcomplete and have a filter function at the + * contact page. + * + * @param App $a The app data + * @param array $results The array with the originals from acl_lookup() + */ +function frio_acl_lookup($a, &$results) { + require_once("mod/contacts.php"); + + $nets = ((x($_GET,"nets")) ? notags(trim($_GET["nets"])) : ""); + + // we introduce a new search type, r should do the same query like it's + // done in /mod/contacts for connections + if($results["type"] == "r") { + $searching = false; + if($search) { + $search_hdr = $search; + $search_txt = dbesc(protect_sprintf(preg_quote($search))); + $searching = true; + } + $sql_extra .= (($searching) ? " AND (`attag` LIKE '%%".dbesc($search_txt)."%%' OR `name` LIKE '%%".dbesc($search_txt)."%%' OR `nick` LIKE '%%".dbesc($search_txt)."%%') " : ""); + + if($nets) + $sql_extra .= sprintf(" AND network = '%s' ", dbesc($nets)); + + $sql_extra2 = ((($sort_type > 0) && ($sort_type <= CONTACT_IS_FRIEND)) ? sprintf(" AND `rel` = %d ",intval($sort_type)) : ''); + + + $r = q("SELECT COUNT(*) AS `total` FROM `contact` + WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 ", + intval($_SESSION['uid'])); + if(count($r)) { + $total = $r[0]["total"]; + } + + $sql_extra3 = unavailable_networks(); + + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 $sql_extra3 ORDER BY `name` ASC LIMIT 100 ", + intval($_SESSION['uid']) + ); + + $contacts = array(); + + if(count($r)) { + foreach($r as $rr) { + $contacts[] = _contact_detail_for_template($rr); + } + } + + $results["items"] = $contacts; + $results["tot"] = $total; + } +} \ No newline at end of file From 3dad86f0e0a4b49a349b98ea05f721d16ed7d725 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Thu, 28 Apr 2016 22:15:55 +0200 Subject: [PATCH 248/485] add a hook call to acl_lookup() --- include/acl_selectors.php | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 65f125b852..fc3df52327 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -637,22 +637,35 @@ function acl_lookup(&$a, $out_type = 'json') { $tot += count($unknow_contacts); } + $results = array( + "tot" => $tot, + "start" => $start, + "count" => $count, + "groups" => $groups, + "contacts" => $contacts, + "items" => $items, + "type" => $type, + "search" => $search, + ); + + call_hooks('acl_lookup_end', $results); + if($out_type === 'html') { $o = array( - 'tot' => $tot, - 'start' => $start, - 'count' => $count, - 'groups' => $groups, - 'contacts' => $contacts, + 'tot' => $results["tot"], + 'start' => $results["start"], + 'count' => $results["count"], + 'groups' => $results["groups"], + 'contacts' => $results["contacts"], ); return $o; } $o = array( - 'tot' => $tot, - 'start' => $start, - 'count' => $count, - 'items' => $items, + 'tot' => $results["tot"], + 'start' => $results["start"], + 'count' => $results["count"], + 'items' => $results["items"], ); echo json_encode($o); From a61361f351ae0d1ac8cbf54b09387c411a4e7537 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Thu, 28 Apr 2016 23:18:38 +0200 Subject: [PATCH 249/485] add some hook docu --- doc/Plugins.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/Plugins.md b/doc/Plugins.md index a30a3f4a71..49d0665fec 100644 --- a/doc/Plugins.md +++ b/doc/Plugins.md @@ -281,6 +281,11 @@ $b is an array with: 'template' => filename of template 'vars' => array of vars passed to template +### ''acl_lookup_end' +is called after the other queries have passed. +The registered function can add, change or remove the acl_lookup() variables. + + 'results' => array of the acl_lookup() vars Complete list of hook callbacks @@ -338,6 +343,8 @@ include/acl_selectors.php: call_hooks($a->module . '_pre_' . $selname, $arr); include/acl_selectors.php: call_hooks($a->module . '_post_' . $selname, $o); +include/acl_selectors.php call_hooks('acl_lookup_end', $results); + include/notifier.php: call_hooks('notifier_normal',$target_item); include/notifier.php: call_hooks('notifier_end',$target_item); From ad2611c92eac6f03f597611b5f5337ac5490570c Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Thu, 28 Apr 2016 23:20:54 +0200 Subject: [PATCH 250/485] theme-settings: better show/hide image options js --- templates/theme_settings.tpl | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/templates/theme_settings.tpl b/templates/theme_settings.tpl index 7625e66ab0..05e64c4d18 100644 --- a/templates/theme_settings.tpl +++ b/templates/theme_settings.tpl @@ -31,11 +31,14 @@ $("#frio_nav_bg, #frio_nav_icon_color, #frio_background_color, #frio_link_color").colorpicker({format: 'hex', align: 'left'}); // show image options when user user starts to type the address of the image - if($("#id_frio_background_image").val() == "") { - $("#id_frio_background_image").on('input',function(e){ + $("#id_frio_background_image").keyup(function(){ + var elText = $(this).val(); + if(elText.length !== 0) { $("#frio_bg_image_options").show(); - }); - } + } else { + $("#frio_bg_image_options").hide(); + } + }); // show the image options is there is allready an image if($("#id_frio_background_image").val().length != 0) { From be1f18146e757cbbe913129af716600555dfb6c8 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Fri, 29 Apr 2016 01:49:09 +0200 Subject: [PATCH 251/485] theme-settings: hide custom settings if the scheme overwrites it - fixes https://github.com/rabuzarus/frio/issues/9 Note: this isn't a very beautiful solution since the schema developer have to list all overwriting variables in the schema header. We need a better solution for this. --- config.php | 17 ++++++--- php/schema.php | 71 ++++++++++++++++++++++++++++++++++++ schema/love-music.php | 1 + schema/red.php | 8 +++- templates/theme_settings.tpl | 12 +++--- 5 files changed, 97 insertions(+), 12 deletions(-) create mode 100644 php/schema.php diff --git a/config.php b/config.php index 645613363a..0fad473e48 100644 --- a/config.php +++ b/config.php @@ -32,6 +32,11 @@ function theme_post(&$a) { } function frio_form(&$a, $arr) { + require_once("view/theme/frio/php/schema.php"); + + $scheme_info = get_schema_info($arr["schema"]); + $disable = $scheme_info["overwrites"]; + $scheme_choices = array(); $scheme_choices["---"] = t("Default"); $files = glob('view/theme/frio/schema/*.php'); @@ -52,12 +57,12 @@ function frio_form(&$a, $arr) { '$baseurl' => $a->get_baseurl(), '$title' => t("Theme settings"), '$schema' => array('frio_schema', t("Select scheme"), $arr["schema"], '', $scheme_choices), - '$nav_bg' => array('frio_nav_bg', t('Navigation bar background color'), $arr['nav_bg']), - '$nav_icon_color' => array('frio_nav_icon_color', t('Navigation bar icon color '), $arr['nav_icon_color']), - '$link_color' => array('frio_link_color', t('Link color'), $arr['link_color'], '', $link_colors), - '$bgcolor' => array('frio_background_color', t('Set the background color'), $arr['bgcolor']), - '$contentbg_transp' => array('frio_contentbg_transp', t("Content background transparency"), ($arr["contentbg_transp"] ? $arr["contentbg_transp"] : 0 )), - '$background_image' => array('frio_background_image', t('Set the background image'), $arr['background_image']), + '$nav_bg' => array_key_exists("nav_bg", $disable) ? "" : array('frio_nav_bg', t('Navigation bar background color'), $arr['nav_bg']), + '$nav_icon_color' => array_key_exists("nav_icon_color", $disable) ? "" : array('frio_nav_icon_color', t('Navigation bar icon color '), $arr['nav_icon_color']), + '$link_color' => array_key_exists("link_color", $disable) ? "" : array('frio_link_color', t('Link color'), $arr['link_color'], '', $link_colors), + '$bgcolor' => array_key_exists("bgcolor", $disable) ? "" : array('frio_background_color', t('Set the background color'), $arr['bgcolor']), + '$contentbg_transp' => array_key_exists("contentbg_transp", $disable) ? "" : array('frio_contentbg_transp', t("Content background transparency"), ($arr["contentbg_transp"] ? $arr["contentbg_transp"] : 0 )), + '$background_image' => array_key_exists("background_image", $disable ) ? "" : array('frio_background_image', t('Set the background image'), $arr['background_image']), '$bg_image_options' => Image::get_options($arr), )); diff --git a/php/schema.php b/php/schema.php new file mode 100644 index 0000000000..be3a3bcd97 --- /dev/null +++ b/php/schema.php @@ -0,0 +1,71 @@ + Author Name + * 'description' => Schema description + * 'version' => Schema version + * 'overwrites' => Variables which overwriting custom settings + */ +function get_schema_info($schema){ + + $theme = current_theme(); + $themepath = "view/theme/" . $theme . "/"; + $schema = get_pconfig(local_user(),'frio', 'schema'); + + $info=Array( + 'name' => $schema, + 'description' => "", + 'author' => array(), + 'version' => "", + 'overwrites' => "" + ); + + if (!is_file($themepath . "schema/" . $schema . ".php")) return $info; + + $f = file_get_contents($themepath . "schema/" . $schema . ".php"); + + $r = preg_match("|/\*.*\*/|msU", $f, $m); + + if ($r){ + $ll = explode("\n", $m[0]); + foreach( $ll as $l ) { + $l = trim($l,"\t\n\r */"); + if ($l!=""){ + list($k,$v) = array_map("trim", explode(":",$l,2)); + $k= strtolower($k); + if ($k=="author"){ + $r=preg_match("|([^<]+)<([^>]+)>|", $v, $m); + if ($r) { + $info['author'][] = array('name'=>$m[1], 'link'=>$m[2]); + } else { + $info['author'][] = array('name'=>$v); + } + } elseif ($k == "overwrites") { + $theme_settings = explode(',',str_replace(' ','', $v)); + foreach ($theme_settings as $key => $value) { + $info["overwrites"][$value] = true; + } + } else { + if (array_key_exists($k,$info)){ + $info[$k]=$v; + } + } + + } + } + + } + return $info; +} diff --git a/schema/love-music.php b/schema/love-music.php index 8908057272..528093e3a9 100644 --- a/schema/love-music.php +++ b/schema/love-music.php @@ -1,6 +1,7 @@ {{$contentbg_transp.3}}
      +{{/if}} -{{include file="field_colorinput.tpl" field=$background_image}} +{{if $background_image}}{{include file="field_colorinput.tpl" field=$background_image}}{{/if}}

      P8egHuMOXi_GnWThNQIhk@UYj8)m+eA(R68%R;?YZ9i`Q1Cuy^^dD=zV zv)T*VE7~q-Dz$E~Zj?@=o21Lq<>?A_9$l?&wQiHHPS>pK&>c-(p`WDB(&y<5^&Wk# zezks+zE0n)Kd--}|3!bt5M_urBp4iqTtk7O!m!w|%CNz(!?4?M*;rt#FfKN(GHx*L zFzz;XnDnMbQ>*EK>6q!P>4NEsImdj(++{%)wPmnnltp8iWXZDRSqd#4ORZ(KWs{}O z(roFl98DXOwmofES}5&M+KIHU(tb$0mUb&$k=`%;zVvbF`t+&k+35??OVX>-SER2? z-;&;#-a092($-1c4-`CbYx1he8>S4Na&F4SDc7gmo+?c3KXusDq^ZWKPflGswPWg~ z3`K@HqadRtFU``;+L2?; zsh^!Q`@`91W`8^T^6VS4yK|dzug@u*Rl{L*}H z{#Oq#didm`>_rguYn)e|H=Nx?3yO{wT`SHn zE-J1l_7^WJURAulWO9k4UNg^mbW&c|v)OJIY<}ZgKCgsI6FC@omM$imMej zE4m-s?9qABJPuE;r@(WrGQYCPJK1}{m+kwaN?*15@o|qI@h|Y7t!}9)2#g9`2wVzW zTb#2vxcJ5r{gSCmvX?AaQnKW1ZOYQY%gD0O@{!A{mLFYydBw05B`bEV`2I=jQ{<^t zD~GMDdOG3h##QQ7*{jyCy86txXO67SUVUv%)0*I#gKKqbcRZW(?4@=7=hV-wc<$W# z!u4N0KmGZmFL+<<|KgDir5pSkp4@O^W5q`Q#@3BjHzjSV+O*{*^-JqF$8WBA+5Gb5 zE#+ITys~&J+WNw_VcW)R(`}o)?ThV&+fTeY?9~H1a(0}5E$g)lbp>@@JIC$R?3}bS zYiHih!ky(it9Gu~xo&4yePO+)zP5gK{igc5`sVuE4cQF~8cG_f8dfx{YuM6I*RZQ0 z)NrWbM8j7NKQvrxxYej=?ALf-faFF=<~+G zUD>;Cyjl3>x!uOy7k{&;d2n-6^R2gRZ*{f|Y}wSZeb2x>TlX~W3GO+#r*qF2d%oXu zbp4Ks~y4K09(_81Y7PWd?m$j~K-P~H=8f-n%db0Ig>&4dVt+(5Rw*GCy z+EUskw@q)G*H+Z#ZClp1wrz7;eOpW0{&a{2ocDe0lPzd%94htp)jX`U0W-vck z8uSOB46YAu4K@XX!Gpoh;JM)C;EiB+drbSl_L1!=?P=|f_T2V@_KNn!?W@{1wC`x& z-M+8=Nc+k5bL|(~ueaY038DU>VWFguF=P$R4CRMPL;ipJzd5uo^hM~}USV&az52cR zdspt=z4z=svQNLSbl-)cGPt=cO2+A@Q(0K);o>+`|mgI zKlAR?caI&IbYRzeCGSjU zqxZ+XU;qBaqq#@d9}OKncl5>w=z}XCbbW|E(jBuMvvrcrT=@5N)^@J$+|*gu+1%OD zd9?F%=lRY{oxgP6I<7dbK0f$()^Y#w9mkKI=zrp#6C+QgoJc#d@#1X>PM;opI_vb-Ph&o<`t-!7XFu)w^v;=*Gw04+Jahfb?au@@_e}S~ zx6lTnhvDfK0z82-5V*&evaK+*C}kyh0Ubi{_EBEOaD~dx%LFB$)x1pM{Mq_Eo}D#R|NZbL>;Dy8hD^qG2H#^f-R+D{hEJKKjA-0m~xEMN$)36LcH} zAx4VPCWxL>;Kvi_B>D`UhBKHm@MfA)ctgrr^f_vW===q}gwCO_;Co!<=uha+=sEaK zup2!FPZfKh1sb7^9)}2J(Gq~RS`6)b72yv6G&^dwpdcjR9~*U>?E z<8(BRfltt=aUA+5>W0^f^~L@0T__B>+#e6X@fhQ~@jyHX55`0AJ@D=4``~8cVeob5 z1au4i9iBxP3E$cr1rG*}!DI0_oQUC?Ii7%%;T2{Ru?F2nU⋙bvPC4;Q>4&d=uM@ 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 H9-;pO|HZYC literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg b/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg new file mode 100755 index 0000000000..2152de9ece --- /dev/null +++ b/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg @@ -0,0 +1,958 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 20102011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf b/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf new file mode 100755 index 0000000000000000000000000000000000000000..ea1792973ee1ff06a25b78e8817fe324e4c19a2e GIT binary patch literal 123548 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Գ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 G(EkDa@|Dy8 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff b/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff new file mode 100755 index 0000000000000000000000000000000000000000..6056847f961cc399436710ed1dcc7b5f417b9f6a GIT binary patch literal 71720 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 literal 0 HcmV?d00001 diff --git a/font/open_sans/fonts/Italic/OpenSans-Italic.eot b/font/open_sans/fonts/Italic/OpenSans-Italic.eot new file mode 100755 index 0000000000000000000000000000000000000000..55af8e72b1f908387f90837d2f0a8fd402e1afde GIT binary patch literal 131338 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

      ' . "\n"; - q("UPDATE `item` SET `body` = '%s', `object` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `edited` = '%s', `private` = %d WHERE `id` = %d AND `uid` = %d", + q("UPDATE `item` SET `body` = '%s', `object` = '%s', `edited` = '%s' WHERE `id` = %d AND `uid` = %d", dbesc(format_event_bbcode($arr)), dbesc($object), - dbesc($arr['allow_cid']), - dbesc($arr['allow_gid']), - dbesc($arr['deny_cid']), - dbesc($arr['deny_gid']), dbesc($arr['edited']), - intval($arr['private']), intval($r[0]['id']), intval($arr['uid']) ); $item_id = $r[0]['id']; - } - else + } else $item_id = 0; call_hooks("event_updated", $arr['id']); From b9e702742cd192a5cbdd378eca6a67603df4d037 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 22 May 2016 18:22:05 +0200 Subject: [PATCH 341/485] Remove some test logging --- include/notifier.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/notifier.php b/include/notifier.php index a922dba346..6c90629bd8 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -376,7 +376,6 @@ function notifier_run(&$argv, &$argc){ $conversants = array_unique($conversants); - logger('Allow data for '.$target_item["guid"].". People: ".implode(', ', $allow_people)." - Groups: ".implode(', ', $allow_groups), LOGGER_DEBUG); $recipients = array_unique(array_merge($recipients,$allow_people,$allow_groups)); $deny = array_unique(array_merge($deny_people,$deny_groups)); @@ -456,8 +455,6 @@ function notifier_run(&$argv, &$argc){ else $recip_str = implode(', ', $recipients); - logger('Recipients for '.$target_item["guid"]." (Followup: ".$followup."): ".$recip_str, LOGGER_DEBUG); - if ($relocate) $r = $recipients_relocate; else From 8e89ba7a428308b32514a9c111d8d474a1f1293c Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 23 May 2016 09:03:57 +0200 Subject: [PATCH 342/485] placement of the logfiles --- doc/Settings.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Settings.md b/doc/Settings.md index 13f2cc6234..808c40c23a 100644 --- a/doc/Settings.md +++ b/doc/Settings.md @@ -125,6 +125,8 @@ Wildcards are accepted. (Wildcard support on Windows platforms requires PHP5.3). By default, any (valid) email address is allowed in registrations. +#### Allow remote_self + ### Advanced #### Proxy Configuration Settings @@ -239,8 +241,8 @@ The log section of the admin panel is seperated into two pages. On the first, following the "log" link, you can configure how much Friendica shall log. And on the second you can read the log. -When you are using the default configuration for Apache, you should choose a name for the logfile ending in ``.log`` or ``.out``. -But don't call it ``friendica.log`` (see [issue 2209](https://github.com/friendica/friendica/issues/2209)). +You should not place your logs into any directory that is accessible from the web. +If you have to, and you are using the default configuration from Apache, you should choose a name for the logfile ending in ``.log`` or ``.out``. There are five different log levels: Normal, Trace, Debug, Data and All. Specifying different verbosities of information and data written out to the log file. @@ -252,6 +254,8 @@ But due to the volume of information we recommend only enabling this when you ar **The amount of data can grow the filesize of the logfile quickly**. You should set up some kind of [log rotation](https://en.wikipedia.org/wiki/Log_rotation) to keep the log file from growing too big. +**Known Issues**: The filename ``friendica.log`` can cause problems depending on your server configuration (see [issue 2209](https://github.com/friendica/friendica/issues/2209)). + By default PHP warnings and error messages are supressed. If you want to enable those, you have to activate them in the ``.htconfig.php`` file. Use the following settings to redirect PHP errors to a file. From 3df9876d74bb7cc0175e80902a7b896235c8badc Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 23 May 2016 09:05:49 +0200 Subject: [PATCH 343/485] remote_self --- doc/Settings.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/Settings.md b/doc/Settings.md index 808c40c23a..e317914ccb 100644 --- a/doc/Settings.md +++ b/doc/Settings.md @@ -123,10 +123,16 @@ Comma separated list of domains which are allowed in email addresses for registr This can lockout those who are not part of this organisation from registering here. Wildcards are accepted. (Wildcard support on Windows platforms requires PHP5.3). -By default, any (valid) email address is allowed in registrations. +By default, any (valid) email address is allowed in registrations. #### Allow remote_self +If you enable the `Allow Users to set remote_self` users can select Atom feeds from their contact list being their *remote self* in die advanced contact settings. +Which means that postings by the remote self are automatically reposted by Friendica in their names. + +As admin of the node you can also set this flag directly in the database. +Before doing so, you should be sure you know what you do and have a backup of the database. + ### Advanced #### Proxy Configuration Settings From 177fbd2a7c5ee5dcc7a49be418d79c4de0a63fbc Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 23 May 2016 14:05:27 +0200 Subject: [PATCH 344/485] small fixes --- doc/Settings.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Settings.md b/doc/Settings.md index e317914ccb..10f0da4e7f 100644 --- a/doc/Settings.md +++ b/doc/Settings.md @@ -125,7 +125,7 @@ Wildcards are accepted. (Wildcard support on Windows platforms requires PHP5.3). By default, any (valid) email address is allowed in registrations. -#### Allow remote_self +#### Allow Users to set remote_self If you enable the `Allow Users to set remote_self` users can select Atom feeds from their contact list being their *remote self* in die advanced contact settings. Which means that postings by the remote self are automatically reposted by Friendica in their names. @@ -249,6 +249,7 @@ And on the second you can read the log. You should not place your logs into any directory that is accessible from the web. If you have to, and you are using the default configuration from Apache, you should choose a name for the logfile ending in ``.log`` or ``.out``. +Should you use another web server, please make sure that you have the correct accessrules in place so that your log files are not accessible. There are five different log levels: Normal, Trace, Debug, Data and All. Specifying different verbosities of information and data written out to the log file. From 7fbb51adb9b85ef4b3f53fbb3f9e9c5ee8d0b4ef Mon Sep 17 00:00:00 2001 From: root Date: Tue, 24 May 2016 22:36:51 +0200 Subject: [PATCH 345/485] Do not normalize openid url when logging in (since it isn't normalized when setting it via user settings) NOTE: this broke with 8367cad --- mod/openid.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mod/openid.php b/mod/openid.php index 5d5539f00e..bccfcd95c3 100644 --- a/mod/openid.php +++ b/mod/openid.php @@ -18,7 +18,8 @@ function openid_content(&$a) { if($openid->validate()) { - $authid = normalise_openid($_REQUEST['openid_identity']); + #$authid = normalise_openid($_REQUEST['openid_identity']); + $authid = $_REQUEST['openid_identity']; if(! strlen($authid)) { logger( t('OpenID protocol error. No ID returned.') . EOL); From 3c402b6a6ce9562f38b5a1714d6c5beb1cf0a220 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 24 May 2016 22:37:40 +0200 Subject: [PATCH 346/485] Remove debug log --- library/openid.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/openid.php b/library/openid.php index 3c58beb8a5..7e5873bdbd 100644 --- a/library/openid.php +++ b/library/openid.php @@ -375,7 +375,7 @@ class LightOpenID $server = $server[1]; if (isset($delegate[2])) $this->identity = trim($delegate[2]); $this->version = 2; -logger('Server: ' . $server); +#logger('Server: ' . $server); $this->server = $server; return $server; } From 2af6575466153df07d8b01fbcbb6dd8864230907 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 25 May 2016 08:24:07 +0200 Subject: [PATCH 347/485] mark frio theme as experimental --- experimental | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 experimental diff --git a/experimental b/experimental new file mode 100644 index 0000000000..e69de29bb2 From 045096b0234fcd1d27a02ad7aa7a99795aa3c0ba Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 25 May 2016 08:45:15 +0200 Subject: [PATCH 348/485] README: Add link to commit history --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f3b5a3fd8c..0c4b4e8de6 100644 --- a/README.md +++ b/README.md @@ -60,3 +60,5 @@ StefOfficiel (Friendiboot Theme) - #### License: + +[original commit history](https://github.com/rabuzarus/frio/commits/master) From b7bc428630919355e5ed5d813120990640f78890 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Wed, 25 May 2016 12:43:26 +0200 Subject: [PATCH 349/485] Fix OpenID login The problem was that while openid was stored not-normalized in the database, the checking code was looking for a normalized form instead. The commit removing normalization step on saving user preferences was 8367cad, which might have left old users with normalized openid and new users with non-normalized one. This commit makes the checking code look for both normalized and not normalized form, to be backward compatible. --- mod/openid.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mod/openid.php b/mod/openid.php index bccfcd95c3..893db8030d 100644 --- a/mod/openid.php +++ b/mod/openid.php @@ -26,10 +26,15 @@ function openid_content(&$a) { goaway(z_root()); } + // NOTE: we search both for normalised and non-normalised form of $authid + // because the normalization step was removed from setting + // mod/settings.php in 8367cad so it might have left mixed + // records in the user table + // $r = q("SELECT `user`.*, `user`.`pubkey` as `upubkey`, `user`.`prvkey` as `uprvkey` - FROM `user` WHERE `openid` = '%s' AND `blocked` = 0 + FROM `user` WHERE ( openid = '%s' OR openid = '%s' ) AND blocked = 0 AND `account_expired` = 0 AND `account_removed` = 0 AND `verified` = 1 LIMIT 1", - dbesc($authid) + dbesc($authid), dbesc(normalise_openid($authid)) ); if($r && count($r)) { From b67378ac6983d185175d50f8129d443b649a1a46 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 25 May 2016 15:12:29 +0200 Subject: [PATCH 350/485] restructuring for PR for friendica main repo --- LICENSE => view/theme/frio/LICENSE | 0 README.md => view/theme/frio/README.md | 0 config.php => view/theme/frio/config.php | 0 {css => view/theme/frio/css}/hovercard.css | 0 {css => view/theme/frio/css}/style.css | 0 default.php => view/theme/frio/default.php | 0 experimental => view/theme/frio/experimental | 0 .../font}/open_sans/fonts/Bold/OpenSans-Bold.eot | Bin .../font}/open_sans/fonts/Bold/OpenSans-Bold.svg | 0 .../font}/open_sans/fonts/Bold/OpenSans-Bold.ttf | Bin .../font}/open_sans/fonts/Bold/OpenSans-Bold.woff | Bin .../fonts/BoldItalic/OpenSans-BoldItalic.eot | Bin .../fonts/BoldItalic/OpenSans-BoldItalic.svg | 0 .../fonts/BoldItalic/OpenSans-BoldItalic.ttf | Bin .../fonts/BoldItalic/OpenSans-BoldItalic.woff | Bin .../fonts/ExtraBold/OpenSans-ExtraBold.eot | Bin .../fonts/ExtraBold/OpenSans-ExtraBold.svg | 0 .../fonts/ExtraBold/OpenSans-ExtraBold.ttf | Bin .../fonts/ExtraBold/OpenSans-ExtraBold.woff | Bin .../ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot | Bin .../ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg | 0 .../ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf | Bin .../ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff | Bin .../open_sans/fonts/Italic/OpenSans-Italic.eot | Bin .../open_sans/fonts/Italic/OpenSans-Italic.svg | 0 .../open_sans/fonts/Italic/OpenSans-Italic.ttf | Bin .../open_sans/fonts/Italic/OpenSans-Italic.woff | Bin .../font}/open_sans/fonts/Light/OpenSans-Light.eot | Bin .../font}/open_sans/fonts/Light/OpenSans-Light.svg | 0 .../font}/open_sans/fonts/Light/OpenSans-Light.ttf | Bin .../font}/open_sans/fonts/Light/OpenSans-Light.woff | Bin .../fonts/LightItalic/OpenSans-LightItalic.eot | Bin .../fonts/LightItalic/OpenSans-LightItalic.svg | 0 .../fonts/LightItalic/OpenSans-LightItalic.ttf | Bin .../fonts/LightItalic/OpenSans-LightItalic.woff | Bin .../open_sans/fonts/Regular/OpenSans-Regular.eot | Bin .../open_sans/fonts/Regular/OpenSans-Regular.svg | 0 .../open_sans/fonts/Regular/OpenSans-Regular.ttf | Bin .../open_sans/fonts/Regular/OpenSans-Regular.woff | Bin .../open_sans/fonts/Semibold/OpenSans-Semibold.eot | Bin .../open_sans/fonts/Semibold/OpenSans-Semibold.svg | 0 .../open_sans/fonts/Semibold/OpenSans-Semibold.ttf | Bin .../open_sans/fonts/Semibold/OpenSans-Semibold.woff | Bin .../SemiboldItalic/OpenSans-SemiboldItalic.eot | Bin .../SemiboldItalic/OpenSans-SemiboldItalic.svg | 0 .../SemiboldItalic/OpenSans-SemiboldItalic.ttf | Bin .../SemiboldItalic/OpenSans-SemiboldItalic.woff | Bin .../theme/frio/font}/open_sans/open-sans.css | 0 .../frameworks}/awesome-bootstrap-checkbox/LICENSE | 0 .../awesome-bootstrap-checkbox/README.md | 0 .../awesome-bootstrap-checkbox.css | 0 .../awesome-bootstrap-checkbox.less | 0 .../awesome-bootstrap-checkbox.scss | 0 .../awesome-bootstrap-checkbox/bower.json | 0 .../awesome-bootstrap-checkbox/package.json | 0 .../frio/frameworks}/bootstrap-colorpicker/LICENSE | 0 .../frameworks}/bootstrap-colorpicker/README.md | 0 .../css/bootstrap-colorpicker.css | 0 .../css/bootstrap-colorpicker.min.css | 0 .../img/bootstrap-colorpicker/alpha-horizontal.png | Bin .../img/bootstrap-colorpicker/alpha.png | Bin .../img/bootstrap-colorpicker/hue-horizontal.png | Bin .../img/bootstrap-colorpicker/hue.png | Bin .../img/bootstrap-colorpicker/saturation.png | Bin .../js/bootstrap-colorpicker.js | 0 .../js/bootstrap-colorpicker.min.js | 0 .../bootstrap-select/css/bootstrap-select.css | 0 .../bootstrap-select/css/bootstrap-select.css.map | 0 .../bootstrap-select/css/bootstrap-select.min.css | 0 .../bootstrap-select/js/bootstrap-select.js | 0 .../bootstrap-select/js/bootstrap-select.js.map | 0 .../bootstrap-select/js/bootstrap-select.min.js | 0 .../bootstrap-select/js/i18n/defaults-ar_AR.js | 0 .../bootstrap-select/js/i18n/defaults-ar_AR.min.js | 0 .../bootstrap-select/js/i18n/defaults-bg_BG.js | 0 .../bootstrap-select/js/i18n/defaults-bg_BG.min.js | 0 .../bootstrap-select/js/i18n/defaults-cro_CRO.js | 0 .../js/i18n/defaults-cro_CRO.min.js | 0 .../bootstrap-select/js/i18n/defaults-cs_CZ.js | 0 .../bootstrap-select/js/i18n/defaults-cs_CZ.min.js | 0 .../bootstrap-select/js/i18n/defaults-da_DK.js | 0 .../bootstrap-select/js/i18n/defaults-da_DK.min.js | 0 .../bootstrap-select/js/i18n/defaults-de_DE.js | 0 .../bootstrap-select/js/i18n/defaults-de_DE.min.js | 0 .../bootstrap-select/js/i18n/defaults-en_US.js | 0 .../bootstrap-select/js/i18n/defaults-en_US.min.js | 0 .../bootstrap-select/js/i18n/defaults-es_CL.js | 0 .../bootstrap-select/js/i18n/defaults-es_CL.min.js | 0 .../bootstrap-select/js/i18n/defaults-eu.js | 0 .../bootstrap-select/js/i18n/defaults-eu.min.js | 0 .../bootstrap-select/js/i18n/defaults-fa_IR.js | 0 .../bootstrap-select/js/i18n/defaults-fa_IR.min.js | 0 .../bootstrap-select/js/i18n/defaults-fi_FI.js | 0 .../bootstrap-select/js/i18n/defaults-fi_FI.min.js | 0 .../bootstrap-select/js/i18n/defaults-fr_FR.js | 0 .../bootstrap-select/js/i18n/defaults-fr_FR.min.js | 0 .../bootstrap-select/js/i18n/defaults-hu_HU.js | 0 .../bootstrap-select/js/i18n/defaults-hu_HU.min.js | 0 .../bootstrap-select/js/i18n/defaults-id_ID.js | 0 .../bootstrap-select/js/i18n/defaults-id_ID.min.js | 0 .../bootstrap-select/js/i18n/defaults-it_IT.js | 0 .../bootstrap-select/js/i18n/defaults-it_IT.min.js | 0 .../bootstrap-select/js/i18n/defaults-ko_KR.js | 0 .../bootstrap-select/js/i18n/defaults-ko_KR.min.js | 0 .../bootstrap-select/js/i18n/defaults-lt_LT.js | 0 .../bootstrap-select/js/i18n/defaults-lt_LT.min.js | 0 .../bootstrap-select/js/i18n/defaults-nb_NO.js | 0 .../bootstrap-select/js/i18n/defaults-nb_NO.min.js | 0 .../bootstrap-select/js/i18n/defaults-nl_NL.js | 0 .../bootstrap-select/js/i18n/defaults-nl_NL.min.js | 0 .../bootstrap-select/js/i18n/defaults-pl_PL.js | 0 .../bootstrap-select/js/i18n/defaults-pl_PL.min.js | 0 .../bootstrap-select/js/i18n/defaults-pt_BR.js | 0 .../bootstrap-select/js/i18n/defaults-pt_BR.min.js | 0 .../bootstrap-select/js/i18n/defaults-pt_PT.js | 0 .../bootstrap-select/js/i18n/defaults-pt_PT.min.js | 0 .../bootstrap-select/js/i18n/defaults-ro_RO.js | 0 .../bootstrap-select/js/i18n/defaults-ro_RO.min.js | 0 .../bootstrap-select/js/i18n/defaults-ru_RU.js | 0 .../bootstrap-select/js/i18n/defaults-ru_RU.min.js | 0 .../bootstrap-select/js/i18n/defaults-sk_SK.js | 0 .../bootstrap-select/js/i18n/defaults-sk_SK.min.js | 0 .../bootstrap-select/js/i18n/defaults-sl_SI.js | 0 .../bootstrap-select/js/i18n/defaults-sl_SI.min.js | 0 .../bootstrap-select/js/i18n/defaults-sv_SE.js | 0 .../bootstrap-select/js/i18n/defaults-sv_SE.min.js | 0 .../bootstrap-select/js/i18n/defaults-tr_TR.js | 0 .../bootstrap-select/js/i18n/defaults-tr_TR.min.js | 0 .../bootstrap-select/js/i18n/defaults-ua_UA.js | 0 .../bootstrap-select/js/i18n/defaults-ua_UA.min.js | 0 .../bootstrap-select/js/i18n/defaults-zh_CN.js | 0 .../bootstrap-select/js/i18n/defaults-zh_CN.min.js | 0 .../bootstrap-select/js/i18n/defaults-zh_TW.js | 0 .../bootstrap-select/js/i18n/defaults-zh_TW.min.js | 0 .../frameworks}/bootstrap/css/bootstrap-theme.css | 0 .../bootstrap/css/bootstrap-theme.css.map | 0 .../bootstrap/css/bootstrap-theme.min.css | 0 .../bootstrap/css/bootstrap-theme.min.css.map | 0 .../frio/frameworks}/bootstrap/css/bootstrap.css | 0 .../frameworks}/bootstrap/css/bootstrap.css.map | 0 .../frameworks}/bootstrap/css/bootstrap.min.css | 0 .../frameworks}/bootstrap/css/bootstrap.min.css.map | 0 .../fonts/glyphicons-halflings-regular.eot | Bin .../fonts/glyphicons-halflings-regular.svg | 0 .../fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin .../fonts/glyphicons-halflings-regular.woff2 | Bin .../frio/frameworks}/bootstrap/js/bootstrap.js | 0 .../frio/frameworks}/bootstrap/js/bootstrap.min.js | 0 .../theme/frio/frameworks}/bootstrap/js/npm.js | 0 .../frameworks}/ekko-lightbox/ekko-lightbox.css | 0 .../frio/frameworks}/ekko-lightbox/ekko-lightbox.js | 0 .../frameworks}/ekko-lightbox/ekko-lightbox.min.css | 0 .../frameworks}/ekko-lightbox/ekko-lightbox.min.js | 0 .../theme/frio/frameworks}/flexMenu/README.md | 0 .../frio/frameworks}/flexMenu/flexmenu.custom.js | 0 .../theme/frio/frameworks}/flexMenu/flexmenu.js | 0 .../theme/frio/frameworks}/flexMenu/flexmenu.min.js | 0 .../frio/frameworks}/font-awesome/HELP-US-OUT.txt | 0 .../frameworks}/font-awesome/css/font-awesome.css | 0 .../font-awesome/css/font-awesome.min.css | 0 .../frameworks}/font-awesome/fonts/FontAwesome.otf | Bin .../font-awesome/fonts/fontawesome-webfont.eot | Bin .../font-awesome/fonts/fontawesome-webfont.svg | 0 .../font-awesome/fonts/fontawesome-webfont.ttf | Bin .../font-awesome/fonts/fontawesome-webfont.woff | Bin .../font-awesome/fonts/fontawesome-webfont.woff2 | Bin .../frameworks}/font-awesome/less/animated.less | 0 .../font-awesome/less/bordered-pulled.less | 0 .../frio/frameworks}/font-awesome/less/core.less | 0 .../frameworks}/font-awesome/less/fixed-width.less | 0 .../frameworks}/font-awesome/less/font-awesome.less | 0 .../frio/frameworks}/font-awesome/less/icons.less | 0 .../frio/frameworks}/font-awesome/less/larger.less | 0 .../frio/frameworks}/font-awesome/less/list.less | 0 .../frio/frameworks}/font-awesome/less/mixins.less | 0 .../frio/frameworks}/font-awesome/less/path.less | 0 .../font-awesome/less/rotated-flipped.less | 0 .../frio/frameworks}/font-awesome/less/stacked.less | 0 .../frameworks}/font-awesome/less/variables.less | 0 .../frameworks}/font-awesome/scss/_animated.scss | 0 .../font-awesome/scss/_bordered-pulled.scss | 0 .../frio/frameworks}/font-awesome/scss/_core.scss | 0 .../frameworks}/font-awesome/scss/_fixed-width.scss | 0 .../frio/frameworks}/font-awesome/scss/_icons.scss | 0 .../frio/frameworks}/font-awesome/scss/_larger.scss | 0 .../frio/frameworks}/font-awesome/scss/_list.scss | 0 .../frio/frameworks}/font-awesome/scss/_mixins.scss | 0 .../frio/frameworks}/font-awesome/scss/_path.scss | 0 .../font-awesome/scss/_rotated-flipped.scss | 0 .../frameworks}/font-awesome/scss/_stacked.scss | 0 .../frameworks}/font-awesome/scss/_variables.scss | 0 .../frameworks}/font-awesome/scss/font-awesome.scss | 0 .../theme/frio/frameworks}/jRange/LICENSE | 0 .../theme/frio/frameworks}/jRange/README.md | 0 .../frio/frameworks}/jRange/jquery.range-min.js | 0 .../theme/frio/frameworks}/jRange/jquery.range.css | 0 .../theme/frio/frameworks}/jRange/jquery.range.js | 0 .../theme/frio/frameworks}/jRange/jquery.range.less | 0 .../theme/frio/frameworks}/jRange/package.json | 0 .../frio/frameworks}/jasny/css/jasny-bootstrap.css | 0 .../frameworks}/jasny/css/jasny-bootstrap.css.map | 0 .../frameworks}/jasny/css/jasny-bootstrap.min.css | 0 .../frameworks}/jasny/js/jasny-bootstrap.custom.js | 0 .../frio/frameworks}/jasny/js/jasny-bootstrap.js | 0 .../frameworks}/jasny/js/jasny-bootstrap.min.js | 0 .../theme/frio/frameworks}/jsmart/jsmart.custom.js | 0 .../theme/frio/frameworks}/jsmart/jsmart.js | 0 .../theme/frio/frameworks}/jsmart/jsmart.min.js | 0 .../justifiedGallery/jquery.justifiedGallery.min.js | 0 .../justifiedGallery/justifiedGallery.min.css | 0 {img => view/theme/frio/img}/bg_circle.png | Bin {img => view/theme/frio/img}/dynamic.php | 0 {img => view/theme/frio/img}/friendica-25.png | Bin {img => view/theme/frio/img}/friendica-32.png | Bin {img => view/theme/frio/img}/friendica-logo.svg | 0 {img => view/theme/frio/img}/icon_search16x16.png | Bin {img => view/theme/frio/img}/mime/audio.png | Bin {img => view/theme/frio/img}/mime/excel.png | Bin {img => view/theme/frio/img}/mime/file.png | Bin {img => view/theme/frio/img}/mime/illustrator.png | Bin {img => view/theme/frio/img}/mime/image.png | Bin {img => view/theme/frio/img}/mime/indesign.png | Bin {img => view/theme/frio/img}/mime/pdf.png | Bin {img => view/theme/frio/img}/mime/photoshop.png | Bin {img => view/theme/frio/img}/mime/powerpoint.png | Bin {img => view/theme/frio/img}/mime/video.png | Bin {img => view/theme/frio/img}/mime/word.png | Bin {img => view/theme/frio/img}/mime/zip.png | Bin .../theme/frio/img}/placeholder-postform-arrow.png | Bin .../frio/img}/screenshots/screenshot-jot-modal.png | Bin .../frio/img}/screenshots/screenshot-mobile.png | Bin .../screenshots/screenshot-schema-love-music.png | Bin .../frio/img}/screenshots/screenshot-schema-red.png | Bin .../frio/img}/screenshots/screenshot-settings.png | Bin .../theme/frio/img}/screenshots/screenshot.png | Bin {img => view/theme/frio/img}/select_arrow.png | Bin {js => view/theme/frio/js}/filebrowser.js | 0 {js => view/theme/frio/js}/hovercard.js | 0 {js => view/theme/frio/js}/modal.js | 0 {js => view/theme/frio/js}/textedit.js | 0 {js => view/theme/frio/js}/theme.js | 0 {php => view/theme/frio/php}/Colors.php | 0 {php => view/theme/frio/php}/Image.php | 0 {php => view/theme/frio/php}/PHPColors/Color.php | 0 {php => view/theme/frio/php}/PHPColors/README.md | 0 {php => view/theme/frio/php}/frio_boot.php | 0 {php => view/theme/frio/php}/modes/default.php | 0 {php => view/theme/frio/php}/modes/none.php | 0 {php => view/theme/frio/php}/modes/standard.php | 0 {php => view/theme/frio/php}/schema.php | 0 {schema => view/theme/frio/schema}/love-music.css | 0 {schema => view/theme/frio/schema}/love-music.php | 0 {schema => view/theme/frio/schema}/red.php | 0 screenshot.png => view/theme/frio/screenshot.png | Bin style.php => view/theme/frio/style.php | 0 .../theme/frio/templates}/acl_selector.tpl | 0 .../theme/frio/templates}/comment_item.tpl | 0 .../theme/frio/templates}/common_tabs.tpl | 0 .../theme/frio/templates}/contact_template.tpl | 0 .../theme/frio/templates}/contacts-head.tpl | 0 .../theme/frio/templates}/contacts-template.tpl | 0 .../theme/frio/templates}/directory_header.tpl | 0 .../theme/frio/templates}/field_checkbox.tpl | 0 .../theme/frio/templates}/field_colorinput.tpl | 0 .../theme/frio/templates}/field_custom.tpl | 0 .../theme/frio/templates}/field_fileinput.tpl | 0 .../theme/frio/templates}/field_input.tpl | 0 .../theme/frio/templates}/field_password.tpl | 0 .../theme/frio/templates}/field_radio.tpl | 0 .../theme/frio/templates}/field_select.tpl | 0 .../theme/frio/templates}/field_select_raw.tpl | 0 .../theme/frio/templates}/field_themeselect.tpl | 0 .../theme/frio/templates}/filebrowser_plain.tpl | 0 {templates => view/theme/frio/templates}/head.tpl | 0 .../theme/frio/templates}/jot-header.tpl | 0 {templates => view/theme/frio/templates}/jot.tpl | 0 .../theme/frio/templates}/js_strings.tpl | 0 .../theme/frio/templates}/mail_conv.tpl | 0 .../theme/frio/templates}/mail_display.tpl | 0 .../theme/frio/templates}/mail_list.tpl | 0 .../theme/frio/templates}/message_side.tpl | 0 .../theme/frio/templates}/msg-header.tpl | 0 {templates => view/theme/frio/templates}/nav.tpl | 0 .../theme/frio/templates}/nav_head.tpl | 0 .../theme/frio/templates}/photo_top.tpl | 0 .../theme/frio/templates}/photos_recent.tpl | 0 .../theme/frio/templates}/poke_content.tpl | 0 .../theme/frio/templates}/profile_advanced.tpl | 0 .../theme/frio/templates}/profile_vcard.tpl | 0 .../theme/frio/templates}/prv_message.tpl | 0 .../theme/frio/templates}/search_item.tpl | 0 .../theme/frio/templates}/theme_settings.tpl | 0 .../theme/frio/templates}/threaded_conversation.tpl | 0 .../theme/frio/templates}/vcard-widget.tpl | 0 .../theme/frio/templates}/viewcontact_template.tpl | 0 .../theme/frio/templates}/wall_thread.tpl | 0 theme.php => view/theme/frio/theme.php | 0 298 files changed, 0 insertions(+), 0 deletions(-) rename LICENSE => view/theme/frio/LICENSE (100%) rename README.md => view/theme/frio/README.md (100%) rename config.php => view/theme/frio/config.php (100%) rename {css => view/theme/frio/css}/hovercard.css (100%) rename {css => view/theme/frio/css}/style.css (100%) rename default.php => view/theme/frio/default.php (100%) rename experimental => view/theme/frio/experimental (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Bold/OpenSans-Bold.eot (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Bold/OpenSans-Bold.svg (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Bold/OpenSans-Bold.ttf (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Bold/OpenSans-Bold.woff (100%) rename {font => view/theme/frio/font}/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.eot (100%) rename {font => view/theme/frio/font}/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.svg (100%) rename {font => view/theme/frio/font}/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.ttf (100%) rename {font => view/theme/frio/font}/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.woff (100%) rename {font => view/theme/frio/font}/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.eot (100%) rename {font => view/theme/frio/font}/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.svg (100%) rename {font => view/theme/frio/font}/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.ttf (100%) rename {font => view/theme/frio/font}/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.woff (100%) rename {font => view/theme/frio/font}/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot (100%) rename {font => view/theme/frio/font}/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg (100%) rename {font => view/theme/frio/font}/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf (100%) rename {font => view/theme/frio/font}/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Italic/OpenSans-Italic.eot (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Italic/OpenSans-Italic.svg (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Italic/OpenSans-Italic.ttf (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Italic/OpenSans-Italic.woff (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Light/OpenSans-Light.eot (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Light/OpenSans-Light.svg (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Light/OpenSans-Light.ttf (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Light/OpenSans-Light.woff (100%) rename {font => view/theme/frio/font}/open_sans/fonts/LightItalic/OpenSans-LightItalic.eot (100%) rename {font => view/theme/frio/font}/open_sans/fonts/LightItalic/OpenSans-LightItalic.svg (100%) rename {font => view/theme/frio/font}/open_sans/fonts/LightItalic/OpenSans-LightItalic.ttf (100%) rename {font => view/theme/frio/font}/open_sans/fonts/LightItalic/OpenSans-LightItalic.woff (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Regular/OpenSans-Regular.eot (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Regular/OpenSans-Regular.svg (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Regular/OpenSans-Regular.ttf (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Regular/OpenSans-Regular.woff (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Semibold/OpenSans-Semibold.eot (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Semibold/OpenSans-Semibold.svg (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Semibold/OpenSans-Semibold.ttf (100%) rename {font => view/theme/frio/font}/open_sans/fonts/Semibold/OpenSans-Semibold.woff (100%) rename {font => view/theme/frio/font}/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.eot (100%) rename {font => view/theme/frio/font}/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg (100%) rename {font => view/theme/frio/font}/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf (100%) rename {font => view/theme/frio/font}/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.woff (100%) rename {font => view/theme/frio/font}/open_sans/open-sans.css (100%) rename {frameworks => view/theme/frio/frameworks}/awesome-bootstrap-checkbox/LICENSE (100%) rename {frameworks => view/theme/frio/frameworks}/awesome-bootstrap-checkbox/README.md (100%) rename {frameworks => view/theme/frio/frameworks}/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css (100%) rename {frameworks => view/theme/frio/frameworks}/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.less (100%) rename {frameworks => view/theme/frio/frameworks}/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.scss (100%) rename {frameworks => view/theme/frio/frameworks}/awesome-bootstrap-checkbox/bower.json (100%) rename {frameworks => view/theme/frio/frameworks}/awesome-bootstrap-checkbox/package.json (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-colorpicker/LICENSE (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-colorpicker/README.md (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-colorpicker/css/bootstrap-colorpicker.css (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-colorpicker/js/bootstrap-colorpicker.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/css/bootstrap-select.css (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/css/bootstrap-select.css.map (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/css/bootstrap-select.min.css (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/bootstrap-select.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/bootstrap-select.js.map (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/bootstrap-select.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-ar_AR.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-ar_AR.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-bg_BG.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-bg_BG.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-cro_CRO.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-cro_CRO.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-cs_CZ.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-cs_CZ.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-da_DK.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-da_DK.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-de_DE.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-de_DE.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-en_US.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-en_US.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-es_CL.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-es_CL.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-eu.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-eu.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-fa_IR.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-fa_IR.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-fi_FI.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-fi_FI.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-fr_FR.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-fr_FR.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-hu_HU.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-hu_HU.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-id_ID.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-id_ID.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-it_IT.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-it_IT.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-ko_KR.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-ko_KR.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-lt_LT.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-lt_LT.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-nb_NO.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-nb_NO.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-nl_NL.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-nl_NL.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-pl_PL.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-pl_PL.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-pt_BR.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-pt_BR.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-pt_PT.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-pt_PT.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-ro_RO.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-ro_RO.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-ru_RU.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-ru_RU.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-sk_SK.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-sk_SK.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-sl_SI.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-sl_SI.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-sv_SE.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-sv_SE.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-tr_TR.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-tr_TR.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-ua_UA.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-ua_UA.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-zh_CN.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-zh_CN.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-zh_TW.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap-select/js/i18n/defaults-zh_TW.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/css/bootstrap-theme.css (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/css/bootstrap-theme.css.map (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/css/bootstrap-theme.min.css (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/css/bootstrap-theme.min.css.map (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/css/bootstrap.css (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/css/bootstrap.css.map (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/css/bootstrap.min.css (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/css/bootstrap.min.css.map (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/fonts/glyphicons-halflings-regular.eot (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/fonts/glyphicons-halflings-regular.svg (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/fonts/glyphicons-halflings-regular.ttf (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/fonts/glyphicons-halflings-regular.woff (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/fonts/glyphicons-halflings-regular.woff2 (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/js/bootstrap.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/js/bootstrap.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/bootstrap/js/npm.js (100%) rename {frameworks => view/theme/frio/frameworks}/ekko-lightbox/ekko-lightbox.css (100%) rename {frameworks => view/theme/frio/frameworks}/ekko-lightbox/ekko-lightbox.js (100%) rename {frameworks => view/theme/frio/frameworks}/ekko-lightbox/ekko-lightbox.min.css (100%) rename {frameworks => view/theme/frio/frameworks}/ekko-lightbox/ekko-lightbox.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/flexMenu/README.md (100%) rename {frameworks => view/theme/frio/frameworks}/flexMenu/flexmenu.custom.js (100%) rename {frameworks => view/theme/frio/frameworks}/flexMenu/flexmenu.js (100%) rename {frameworks => view/theme/frio/frameworks}/flexMenu/flexmenu.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/HELP-US-OUT.txt (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/css/font-awesome.css (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/css/font-awesome.min.css (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/fonts/FontAwesome.otf (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/fonts/fontawesome-webfont.eot (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/fonts/fontawesome-webfont.svg (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/fonts/fontawesome-webfont.ttf (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/fonts/fontawesome-webfont.woff (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/fonts/fontawesome-webfont.woff2 (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/animated.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/bordered-pulled.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/core.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/fixed-width.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/font-awesome.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/icons.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/larger.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/list.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/mixins.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/path.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/rotated-flipped.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/stacked.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/less/variables.less (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_animated.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_bordered-pulled.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_core.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_fixed-width.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_icons.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_larger.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_list.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_mixins.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_path.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_rotated-flipped.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_stacked.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/_variables.scss (100%) rename {frameworks => view/theme/frio/frameworks}/font-awesome/scss/font-awesome.scss (100%) rename {frameworks => view/theme/frio/frameworks}/jRange/LICENSE (100%) rename {frameworks => view/theme/frio/frameworks}/jRange/README.md (100%) rename {frameworks => view/theme/frio/frameworks}/jRange/jquery.range-min.js (100%) rename {frameworks => view/theme/frio/frameworks}/jRange/jquery.range.css (100%) rename {frameworks => view/theme/frio/frameworks}/jRange/jquery.range.js (100%) rename {frameworks => view/theme/frio/frameworks}/jRange/jquery.range.less (100%) rename {frameworks => view/theme/frio/frameworks}/jRange/package.json (100%) rename {frameworks => view/theme/frio/frameworks}/jasny/css/jasny-bootstrap.css (100%) rename {frameworks => view/theme/frio/frameworks}/jasny/css/jasny-bootstrap.css.map (100%) rename {frameworks => view/theme/frio/frameworks}/jasny/css/jasny-bootstrap.min.css (100%) rename {frameworks => view/theme/frio/frameworks}/jasny/js/jasny-bootstrap.custom.js (100%) rename {frameworks => view/theme/frio/frameworks}/jasny/js/jasny-bootstrap.js (100%) rename {frameworks => view/theme/frio/frameworks}/jasny/js/jasny-bootstrap.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/jsmart/jsmart.custom.js (100%) rename {frameworks => view/theme/frio/frameworks}/jsmart/jsmart.js (100%) rename {frameworks => view/theme/frio/frameworks}/jsmart/jsmart.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/justifiedGallery/jquery.justifiedGallery.min.js (100%) rename {frameworks => view/theme/frio/frameworks}/justifiedGallery/justifiedGallery.min.css (100%) rename {img => view/theme/frio/img}/bg_circle.png (100%) rename {img => view/theme/frio/img}/dynamic.php (100%) rename {img => view/theme/frio/img}/friendica-25.png (100%) rename {img => view/theme/frio/img}/friendica-32.png (100%) rename {img => view/theme/frio/img}/friendica-logo.svg (100%) rename {img => view/theme/frio/img}/icon_search16x16.png (100%) rename {img => view/theme/frio/img}/mime/audio.png (100%) rename {img => view/theme/frio/img}/mime/excel.png (100%) rename {img => view/theme/frio/img}/mime/file.png (100%) rename {img => view/theme/frio/img}/mime/illustrator.png (100%) rename {img => view/theme/frio/img}/mime/image.png (100%) rename {img => view/theme/frio/img}/mime/indesign.png (100%) rename {img => view/theme/frio/img}/mime/pdf.png (100%) rename {img => view/theme/frio/img}/mime/photoshop.png (100%) rename {img => view/theme/frio/img}/mime/powerpoint.png (100%) rename {img => view/theme/frio/img}/mime/video.png (100%) rename {img => view/theme/frio/img}/mime/word.png (100%) rename {img => view/theme/frio/img}/mime/zip.png (100%) rename {img => view/theme/frio/img}/placeholder-postform-arrow.png (100%) rename {img => view/theme/frio/img}/screenshots/screenshot-jot-modal.png (100%) rename {img => view/theme/frio/img}/screenshots/screenshot-mobile.png (100%) rename {img => view/theme/frio/img}/screenshots/screenshot-schema-love-music.png (100%) rename {img => view/theme/frio/img}/screenshots/screenshot-schema-red.png (100%) rename {img => view/theme/frio/img}/screenshots/screenshot-settings.png (100%) rename {img => view/theme/frio/img}/screenshots/screenshot.png (100%) rename {img => view/theme/frio/img}/select_arrow.png (100%) rename {js => view/theme/frio/js}/filebrowser.js (100%) rename {js => view/theme/frio/js}/hovercard.js (100%) rename {js => view/theme/frio/js}/modal.js (100%) rename {js => view/theme/frio/js}/textedit.js (100%) rename {js => view/theme/frio/js}/theme.js (100%) rename {php => view/theme/frio/php}/Colors.php (100%) rename {php => view/theme/frio/php}/Image.php (100%) rename {php => view/theme/frio/php}/PHPColors/Color.php (100%) rename {php => view/theme/frio/php}/PHPColors/README.md (100%) rename {php => view/theme/frio/php}/frio_boot.php (100%) rename {php => view/theme/frio/php}/modes/default.php (100%) rename {php => view/theme/frio/php}/modes/none.php (100%) rename {php => view/theme/frio/php}/modes/standard.php (100%) rename {php => view/theme/frio/php}/schema.php (100%) rename {schema => view/theme/frio/schema}/love-music.css (100%) rename {schema => view/theme/frio/schema}/love-music.php (100%) rename {schema => view/theme/frio/schema}/red.php (100%) rename screenshot.png => view/theme/frio/screenshot.png (100%) rename style.php => view/theme/frio/style.php (100%) rename {templates => view/theme/frio/templates}/acl_selector.tpl (100%) rename {templates => view/theme/frio/templates}/comment_item.tpl (100%) rename {templates => view/theme/frio/templates}/common_tabs.tpl (100%) rename {templates => view/theme/frio/templates}/contact_template.tpl (100%) rename {templates => view/theme/frio/templates}/contacts-head.tpl (100%) rename {templates => view/theme/frio/templates}/contacts-template.tpl (100%) rename {templates => view/theme/frio/templates}/directory_header.tpl (100%) rename {templates => view/theme/frio/templates}/field_checkbox.tpl (100%) rename {templates => view/theme/frio/templates}/field_colorinput.tpl (100%) rename {templates => view/theme/frio/templates}/field_custom.tpl (100%) rename {templates => view/theme/frio/templates}/field_fileinput.tpl (100%) rename {templates => view/theme/frio/templates}/field_input.tpl (100%) rename {templates => view/theme/frio/templates}/field_password.tpl (100%) rename {templates => view/theme/frio/templates}/field_radio.tpl (100%) rename {templates => view/theme/frio/templates}/field_select.tpl (100%) rename {templates => view/theme/frio/templates}/field_select_raw.tpl (100%) rename {templates => view/theme/frio/templates}/field_themeselect.tpl (100%) rename {templates => view/theme/frio/templates}/filebrowser_plain.tpl (100%) rename {templates => view/theme/frio/templates}/head.tpl (100%) rename {templates => view/theme/frio/templates}/jot-header.tpl (100%) rename {templates => view/theme/frio/templates}/jot.tpl (100%) rename {templates => view/theme/frio/templates}/js_strings.tpl (100%) rename {templates => view/theme/frio/templates}/mail_conv.tpl (100%) rename {templates => view/theme/frio/templates}/mail_display.tpl (100%) rename {templates => view/theme/frio/templates}/mail_list.tpl (100%) rename {templates => view/theme/frio/templates}/message_side.tpl (100%) rename {templates => view/theme/frio/templates}/msg-header.tpl (100%) rename {templates => view/theme/frio/templates}/nav.tpl (100%) rename {templates => view/theme/frio/templates}/nav_head.tpl (100%) rename {templates => view/theme/frio/templates}/photo_top.tpl (100%) rename {templates => view/theme/frio/templates}/photos_recent.tpl (100%) rename {templates => view/theme/frio/templates}/poke_content.tpl (100%) rename {templates => view/theme/frio/templates}/profile_advanced.tpl (100%) rename {templates => view/theme/frio/templates}/profile_vcard.tpl (100%) rename {templates => view/theme/frio/templates}/prv_message.tpl (100%) rename {templates => view/theme/frio/templates}/search_item.tpl (100%) rename {templates => view/theme/frio/templates}/theme_settings.tpl (100%) rename {templates => view/theme/frio/templates}/threaded_conversation.tpl (100%) rename {templates => view/theme/frio/templates}/vcard-widget.tpl (100%) rename {templates => view/theme/frio/templates}/viewcontact_template.tpl (100%) rename {templates => view/theme/frio/templates}/wall_thread.tpl (100%) rename theme.php => view/theme/frio/theme.php (100%) diff --git a/LICENSE b/view/theme/frio/LICENSE similarity index 100% rename from LICENSE rename to view/theme/frio/LICENSE diff --git a/README.md b/view/theme/frio/README.md similarity index 100% rename from README.md rename to view/theme/frio/README.md diff --git a/config.php b/view/theme/frio/config.php similarity index 100% rename from config.php rename to view/theme/frio/config.php diff --git a/css/hovercard.css b/view/theme/frio/css/hovercard.css similarity index 100% rename from css/hovercard.css rename to view/theme/frio/css/hovercard.css diff --git a/css/style.css b/view/theme/frio/css/style.css similarity index 100% rename from css/style.css rename to view/theme/frio/css/style.css diff --git a/default.php b/view/theme/frio/default.php similarity index 100% rename from default.php rename to view/theme/frio/default.php diff --git a/experimental b/view/theme/frio/experimental similarity index 100% rename from experimental rename to view/theme/frio/experimental diff --git a/font/open_sans/fonts/Bold/OpenSans-Bold.eot b/view/theme/frio/font/open_sans/fonts/Bold/OpenSans-Bold.eot similarity index 100% rename from font/open_sans/fonts/Bold/OpenSans-Bold.eot rename to view/theme/frio/font/open_sans/fonts/Bold/OpenSans-Bold.eot diff --git a/font/open_sans/fonts/Bold/OpenSans-Bold.svg b/view/theme/frio/font/open_sans/fonts/Bold/OpenSans-Bold.svg similarity index 100% rename from font/open_sans/fonts/Bold/OpenSans-Bold.svg rename to view/theme/frio/font/open_sans/fonts/Bold/OpenSans-Bold.svg diff --git a/font/open_sans/fonts/Bold/OpenSans-Bold.ttf b/view/theme/frio/font/open_sans/fonts/Bold/OpenSans-Bold.ttf similarity index 100% rename from font/open_sans/fonts/Bold/OpenSans-Bold.ttf rename to view/theme/frio/font/open_sans/fonts/Bold/OpenSans-Bold.ttf diff --git a/font/open_sans/fonts/Bold/OpenSans-Bold.woff b/view/theme/frio/font/open_sans/fonts/Bold/OpenSans-Bold.woff similarity index 100% rename from font/open_sans/fonts/Bold/OpenSans-Bold.woff rename to view/theme/frio/font/open_sans/fonts/Bold/OpenSans-Bold.woff diff --git a/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.eot b/view/theme/frio/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.eot similarity index 100% rename from font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.eot rename to view/theme/frio/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.eot diff --git a/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.svg b/view/theme/frio/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.svg similarity index 100% rename from font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.svg rename to view/theme/frio/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.svg diff --git a/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.ttf b/view/theme/frio/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.ttf similarity index 100% rename from font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.ttf rename to view/theme/frio/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.ttf diff --git a/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.woff b/view/theme/frio/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.woff similarity index 100% rename from font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.woff rename to view/theme/frio/font/open_sans/fonts/BoldItalic/OpenSans-BoldItalic.woff diff --git a/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.eot b/view/theme/frio/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.eot similarity index 100% rename from font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.eot rename to view/theme/frio/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.eot diff --git a/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.svg b/view/theme/frio/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.svg similarity index 100% rename from font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.svg rename to view/theme/frio/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.svg diff --git a/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.ttf b/view/theme/frio/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.ttf similarity index 100% rename from font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.ttf rename to view/theme/frio/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.ttf diff --git a/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.woff b/view/theme/frio/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.woff similarity index 100% rename from font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.woff rename to view/theme/frio/font/open_sans/fonts/ExtraBold/OpenSans-ExtraBold.woff diff --git a/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot b/view/theme/frio/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot similarity index 100% rename from font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot rename to view/theme/frio/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot diff --git a/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg b/view/theme/frio/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg similarity index 100% rename from font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg rename to view/theme/frio/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg diff --git a/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf b/view/theme/frio/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf similarity index 100% rename from font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf rename to view/theme/frio/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf diff --git a/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff b/view/theme/frio/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff similarity index 100% rename from font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff rename to view/theme/frio/font/open_sans/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff diff --git a/font/open_sans/fonts/Italic/OpenSans-Italic.eot b/view/theme/frio/font/open_sans/fonts/Italic/OpenSans-Italic.eot similarity index 100% rename from font/open_sans/fonts/Italic/OpenSans-Italic.eot rename to view/theme/frio/font/open_sans/fonts/Italic/OpenSans-Italic.eot diff --git a/font/open_sans/fonts/Italic/OpenSans-Italic.svg b/view/theme/frio/font/open_sans/fonts/Italic/OpenSans-Italic.svg similarity index 100% rename from font/open_sans/fonts/Italic/OpenSans-Italic.svg rename to view/theme/frio/font/open_sans/fonts/Italic/OpenSans-Italic.svg diff --git a/font/open_sans/fonts/Italic/OpenSans-Italic.ttf b/view/theme/frio/font/open_sans/fonts/Italic/OpenSans-Italic.ttf similarity index 100% rename from font/open_sans/fonts/Italic/OpenSans-Italic.ttf rename to view/theme/frio/font/open_sans/fonts/Italic/OpenSans-Italic.ttf diff --git a/font/open_sans/fonts/Italic/OpenSans-Italic.woff b/view/theme/frio/font/open_sans/fonts/Italic/OpenSans-Italic.woff similarity index 100% rename from font/open_sans/fonts/Italic/OpenSans-Italic.woff rename to view/theme/frio/font/open_sans/fonts/Italic/OpenSans-Italic.woff diff --git a/font/open_sans/fonts/Light/OpenSans-Light.eot b/view/theme/frio/font/open_sans/fonts/Light/OpenSans-Light.eot similarity index 100% rename from font/open_sans/fonts/Light/OpenSans-Light.eot rename to view/theme/frio/font/open_sans/fonts/Light/OpenSans-Light.eot diff --git a/font/open_sans/fonts/Light/OpenSans-Light.svg b/view/theme/frio/font/open_sans/fonts/Light/OpenSans-Light.svg similarity index 100% rename from font/open_sans/fonts/Light/OpenSans-Light.svg rename to view/theme/frio/font/open_sans/fonts/Light/OpenSans-Light.svg diff --git a/font/open_sans/fonts/Light/OpenSans-Light.ttf b/view/theme/frio/font/open_sans/fonts/Light/OpenSans-Light.ttf similarity index 100% rename from font/open_sans/fonts/Light/OpenSans-Light.ttf rename to view/theme/frio/font/open_sans/fonts/Light/OpenSans-Light.ttf diff --git a/font/open_sans/fonts/Light/OpenSans-Light.woff b/view/theme/frio/font/open_sans/fonts/Light/OpenSans-Light.woff similarity index 100% rename from font/open_sans/fonts/Light/OpenSans-Light.woff rename to view/theme/frio/font/open_sans/fonts/Light/OpenSans-Light.woff diff --git a/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.eot b/view/theme/frio/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.eot similarity index 100% rename from font/open_sans/fonts/LightItalic/OpenSans-LightItalic.eot rename to view/theme/frio/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.eot diff --git a/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.svg b/view/theme/frio/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.svg similarity index 100% rename from font/open_sans/fonts/LightItalic/OpenSans-LightItalic.svg rename to view/theme/frio/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.svg diff --git a/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.ttf b/view/theme/frio/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.ttf similarity index 100% rename from font/open_sans/fonts/LightItalic/OpenSans-LightItalic.ttf rename to view/theme/frio/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.ttf diff --git a/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.woff b/view/theme/frio/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.woff similarity index 100% rename from font/open_sans/fonts/LightItalic/OpenSans-LightItalic.woff rename to view/theme/frio/font/open_sans/fonts/LightItalic/OpenSans-LightItalic.woff diff --git a/font/open_sans/fonts/Regular/OpenSans-Regular.eot b/view/theme/frio/font/open_sans/fonts/Regular/OpenSans-Regular.eot similarity index 100% rename from font/open_sans/fonts/Regular/OpenSans-Regular.eot rename to view/theme/frio/font/open_sans/fonts/Regular/OpenSans-Regular.eot diff --git a/font/open_sans/fonts/Regular/OpenSans-Regular.svg b/view/theme/frio/font/open_sans/fonts/Regular/OpenSans-Regular.svg similarity index 100% rename from font/open_sans/fonts/Regular/OpenSans-Regular.svg rename to view/theme/frio/font/open_sans/fonts/Regular/OpenSans-Regular.svg diff --git a/font/open_sans/fonts/Regular/OpenSans-Regular.ttf b/view/theme/frio/font/open_sans/fonts/Regular/OpenSans-Regular.ttf similarity index 100% rename from font/open_sans/fonts/Regular/OpenSans-Regular.ttf rename to view/theme/frio/font/open_sans/fonts/Regular/OpenSans-Regular.ttf diff --git a/font/open_sans/fonts/Regular/OpenSans-Regular.woff b/view/theme/frio/font/open_sans/fonts/Regular/OpenSans-Regular.woff similarity index 100% rename from font/open_sans/fonts/Regular/OpenSans-Regular.woff rename to view/theme/frio/font/open_sans/fonts/Regular/OpenSans-Regular.woff diff --git a/font/open_sans/fonts/Semibold/OpenSans-Semibold.eot b/view/theme/frio/font/open_sans/fonts/Semibold/OpenSans-Semibold.eot similarity index 100% rename from font/open_sans/fonts/Semibold/OpenSans-Semibold.eot rename to view/theme/frio/font/open_sans/fonts/Semibold/OpenSans-Semibold.eot diff --git a/font/open_sans/fonts/Semibold/OpenSans-Semibold.svg b/view/theme/frio/font/open_sans/fonts/Semibold/OpenSans-Semibold.svg similarity index 100% rename from font/open_sans/fonts/Semibold/OpenSans-Semibold.svg rename to view/theme/frio/font/open_sans/fonts/Semibold/OpenSans-Semibold.svg diff --git a/font/open_sans/fonts/Semibold/OpenSans-Semibold.ttf b/view/theme/frio/font/open_sans/fonts/Semibold/OpenSans-Semibold.ttf similarity index 100% rename from font/open_sans/fonts/Semibold/OpenSans-Semibold.ttf rename to view/theme/frio/font/open_sans/fonts/Semibold/OpenSans-Semibold.ttf diff --git a/font/open_sans/fonts/Semibold/OpenSans-Semibold.woff b/view/theme/frio/font/open_sans/fonts/Semibold/OpenSans-Semibold.woff similarity index 100% rename from font/open_sans/fonts/Semibold/OpenSans-Semibold.woff rename to view/theme/frio/font/open_sans/fonts/Semibold/OpenSans-Semibold.woff diff --git a/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.eot b/view/theme/frio/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.eot similarity index 100% rename from font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.eot rename to view/theme/frio/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.eot diff --git a/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg b/view/theme/frio/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg similarity index 100% rename from font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg rename to view/theme/frio/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg diff --git a/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf b/view/theme/frio/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf similarity index 100% rename from font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf rename to view/theme/frio/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf diff --git a/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.woff b/view/theme/frio/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.woff similarity index 100% rename from font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.woff rename to view/theme/frio/font/open_sans/fonts/SemiboldItalic/OpenSans-SemiboldItalic.woff diff --git a/font/open_sans/open-sans.css b/view/theme/frio/font/open_sans/open-sans.css similarity index 100% rename from font/open_sans/open-sans.css rename to view/theme/frio/font/open_sans/open-sans.css diff --git a/frameworks/awesome-bootstrap-checkbox/LICENSE b/view/theme/frio/frameworks/awesome-bootstrap-checkbox/LICENSE similarity index 100% rename from frameworks/awesome-bootstrap-checkbox/LICENSE rename to view/theme/frio/frameworks/awesome-bootstrap-checkbox/LICENSE diff --git a/frameworks/awesome-bootstrap-checkbox/README.md b/view/theme/frio/frameworks/awesome-bootstrap-checkbox/README.md similarity index 100% rename from frameworks/awesome-bootstrap-checkbox/README.md rename to view/theme/frio/frameworks/awesome-bootstrap-checkbox/README.md diff --git a/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css b/view/theme/frio/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css similarity index 100% rename from frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css rename to view/theme/frio/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css diff --git a/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.less b/view/theme/frio/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.less similarity index 100% rename from frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.less rename to view/theme/frio/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.less diff --git a/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.scss b/view/theme/frio/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.scss similarity index 100% rename from frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.scss rename to view/theme/frio/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.scss diff --git a/frameworks/awesome-bootstrap-checkbox/bower.json b/view/theme/frio/frameworks/awesome-bootstrap-checkbox/bower.json similarity index 100% rename from frameworks/awesome-bootstrap-checkbox/bower.json rename to view/theme/frio/frameworks/awesome-bootstrap-checkbox/bower.json diff --git a/frameworks/awesome-bootstrap-checkbox/package.json b/view/theme/frio/frameworks/awesome-bootstrap-checkbox/package.json similarity index 100% rename from frameworks/awesome-bootstrap-checkbox/package.json rename to view/theme/frio/frameworks/awesome-bootstrap-checkbox/package.json diff --git a/frameworks/bootstrap-colorpicker/LICENSE b/view/theme/frio/frameworks/bootstrap-colorpicker/LICENSE similarity index 100% rename from frameworks/bootstrap-colorpicker/LICENSE rename to view/theme/frio/frameworks/bootstrap-colorpicker/LICENSE diff --git a/frameworks/bootstrap-colorpicker/README.md b/view/theme/frio/frameworks/bootstrap-colorpicker/README.md similarity index 100% rename from frameworks/bootstrap-colorpicker/README.md rename to view/theme/frio/frameworks/bootstrap-colorpicker/README.md diff --git a/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.css b/view/theme/frio/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.css similarity index 100% rename from frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.css rename to view/theme/frio/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.css diff --git a/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css b/view/theme/frio/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css similarity index 100% rename from frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css rename to view/theme/frio/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css diff --git a/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png b/view/theme/frio/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png similarity index 100% rename from frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png rename to view/theme/frio/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png diff --git a/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png b/view/theme/frio/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png similarity index 100% rename from frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png rename to view/theme/frio/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png diff --git a/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png b/view/theme/frio/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png similarity index 100% rename from frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png rename to view/theme/frio/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png diff --git a/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png b/view/theme/frio/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png similarity index 100% rename from frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png rename to view/theme/frio/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png diff --git a/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png b/view/theme/frio/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png similarity index 100% rename from frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png rename to view/theme/frio/frameworks/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png diff --git a/frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.js b/view/theme/frio/frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.js similarity index 100% rename from frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.js rename to view/theme/frio/frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.js diff --git a/frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js b/view/theme/frio/frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js similarity index 100% rename from frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js rename to view/theme/frio/frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js diff --git a/frameworks/bootstrap-select/css/bootstrap-select.css b/view/theme/frio/frameworks/bootstrap-select/css/bootstrap-select.css similarity index 100% rename from frameworks/bootstrap-select/css/bootstrap-select.css rename to view/theme/frio/frameworks/bootstrap-select/css/bootstrap-select.css diff --git a/frameworks/bootstrap-select/css/bootstrap-select.css.map b/view/theme/frio/frameworks/bootstrap-select/css/bootstrap-select.css.map similarity index 100% rename from frameworks/bootstrap-select/css/bootstrap-select.css.map rename to view/theme/frio/frameworks/bootstrap-select/css/bootstrap-select.css.map diff --git a/frameworks/bootstrap-select/css/bootstrap-select.min.css b/view/theme/frio/frameworks/bootstrap-select/css/bootstrap-select.min.css similarity index 100% rename from frameworks/bootstrap-select/css/bootstrap-select.min.css rename to view/theme/frio/frameworks/bootstrap-select/css/bootstrap-select.min.css diff --git a/frameworks/bootstrap-select/js/bootstrap-select.js b/view/theme/frio/frameworks/bootstrap-select/js/bootstrap-select.js similarity index 100% rename from frameworks/bootstrap-select/js/bootstrap-select.js rename to view/theme/frio/frameworks/bootstrap-select/js/bootstrap-select.js diff --git a/frameworks/bootstrap-select/js/bootstrap-select.js.map b/view/theme/frio/frameworks/bootstrap-select/js/bootstrap-select.js.map similarity index 100% rename from frameworks/bootstrap-select/js/bootstrap-select.js.map rename to view/theme/frio/frameworks/bootstrap-select/js/bootstrap-select.js.map diff --git a/frameworks/bootstrap-select/js/bootstrap-select.min.js b/view/theme/frio/frameworks/bootstrap-select/js/bootstrap-select.min.js similarity index 100% rename from frameworks/bootstrap-select/js/bootstrap-select.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/bootstrap-select.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-ar_AR.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ar_AR.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-ar_AR.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ar_AR.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-ar_AR.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ar_AR.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-ar_AR.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ar_AR.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-bg_BG.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-bg_BG.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-bg_BG.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-bg_BG.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-bg_BG.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-bg_BG.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-bg_BG.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-bg_BG.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-cro_CRO.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-cro_CRO.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-cro_CRO.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-cro_CRO.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-cro_CRO.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-cro_CRO.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-cro_CRO.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-cro_CRO.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-cs_CZ.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-cs_CZ.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-cs_CZ.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-cs_CZ.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-cs_CZ.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-cs_CZ.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-cs_CZ.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-cs_CZ.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-da_DK.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-da_DK.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-da_DK.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-da_DK.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-da_DK.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-da_DK.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-da_DK.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-da_DK.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-de_DE.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-de_DE.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-de_DE.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-de_DE.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-de_DE.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-de_DE.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-de_DE.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-de_DE.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-en_US.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-en_US.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-en_US.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-en_US.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-en_US.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-en_US.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-en_US.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-en_US.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-es_CL.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-es_CL.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-es_CL.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-es_CL.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-es_CL.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-es_CL.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-es_CL.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-es_CL.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-eu.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-eu.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-eu.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-eu.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-eu.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-eu.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-eu.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-eu.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-fa_IR.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fa_IR.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-fa_IR.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fa_IR.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-fa_IR.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fa_IR.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-fa_IR.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fa_IR.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-fi_FI.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fi_FI.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-fi_FI.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fi_FI.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-fi_FI.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fi_FI.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-fi_FI.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fi_FI.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-fr_FR.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fr_FR.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-fr_FR.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fr_FR.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-fr_FR.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fr_FR.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-fr_FR.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-fr_FR.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-hu_HU.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-hu_HU.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-hu_HU.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-hu_HU.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-hu_HU.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-hu_HU.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-hu_HU.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-hu_HU.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-id_ID.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-id_ID.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-id_ID.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-id_ID.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-id_ID.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-id_ID.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-id_ID.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-id_ID.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-it_IT.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-it_IT.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-it_IT.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-it_IT.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-it_IT.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-it_IT.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-it_IT.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-it_IT.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-ko_KR.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ko_KR.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-ko_KR.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ko_KR.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-ko_KR.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ko_KR.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-ko_KR.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ko_KR.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-lt_LT.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-lt_LT.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-lt_LT.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-lt_LT.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-lt_LT.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-lt_LT.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-lt_LT.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-lt_LT.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-nb_NO.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-nb_NO.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-nb_NO.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-nb_NO.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-nb_NO.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-nb_NO.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-nb_NO.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-nb_NO.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-nl_NL.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-nl_NL.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-nl_NL.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-nl_NL.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-nl_NL.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-nl_NL.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-nl_NL.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-nl_NL.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-pl_PL.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pl_PL.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-pl_PL.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pl_PL.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-pl_PL.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pl_PL.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-pl_PL.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pl_PL.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-pt_BR.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pt_BR.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-pt_BR.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pt_BR.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-pt_BR.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pt_BR.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-pt_BR.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pt_BR.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-pt_PT.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pt_PT.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-pt_PT.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pt_PT.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-pt_PT.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pt_PT.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-pt_PT.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-pt_PT.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-ro_RO.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ro_RO.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-ro_RO.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ro_RO.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-ro_RO.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ro_RO.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-ro_RO.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ro_RO.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-ru_RU.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ru_RU.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-ru_RU.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ru_RU.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-ru_RU.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ru_RU.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-ru_RU.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ru_RU.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-sk_SK.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sk_SK.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-sk_SK.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sk_SK.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-sk_SK.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sk_SK.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-sk_SK.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sk_SK.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-sl_SI.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sl_SI.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-sl_SI.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sl_SI.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-sl_SI.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sl_SI.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-sl_SI.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sl_SI.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-sv_SE.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sv_SE.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-sv_SE.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sv_SE.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-sv_SE.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sv_SE.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-sv_SE.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-sv_SE.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-tr_TR.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-tr_TR.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-tr_TR.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-tr_TR.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-tr_TR.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-tr_TR.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-tr_TR.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-tr_TR.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-ua_UA.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ua_UA.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-ua_UA.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ua_UA.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-ua_UA.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ua_UA.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-ua_UA.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-ua_UA.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-zh_CN.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-zh_CN.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-zh_CN.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-zh_CN.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-zh_CN.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-zh_CN.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-zh_CN.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-zh_CN.min.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-zh_TW.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-zh_TW.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-zh_TW.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-zh_TW.js diff --git a/frameworks/bootstrap-select/js/i18n/defaults-zh_TW.min.js b/view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-zh_TW.min.js similarity index 100% rename from frameworks/bootstrap-select/js/i18n/defaults-zh_TW.min.js rename to view/theme/frio/frameworks/bootstrap-select/js/i18n/defaults-zh_TW.min.js diff --git a/frameworks/bootstrap/css/bootstrap-theme.css b/view/theme/frio/frameworks/bootstrap/css/bootstrap-theme.css similarity index 100% rename from frameworks/bootstrap/css/bootstrap-theme.css rename to view/theme/frio/frameworks/bootstrap/css/bootstrap-theme.css diff --git a/frameworks/bootstrap/css/bootstrap-theme.css.map b/view/theme/frio/frameworks/bootstrap/css/bootstrap-theme.css.map similarity index 100% rename from frameworks/bootstrap/css/bootstrap-theme.css.map rename to view/theme/frio/frameworks/bootstrap/css/bootstrap-theme.css.map diff --git a/frameworks/bootstrap/css/bootstrap-theme.min.css b/view/theme/frio/frameworks/bootstrap/css/bootstrap-theme.min.css similarity index 100% rename from frameworks/bootstrap/css/bootstrap-theme.min.css rename to view/theme/frio/frameworks/bootstrap/css/bootstrap-theme.min.css diff --git a/frameworks/bootstrap/css/bootstrap-theme.min.css.map b/view/theme/frio/frameworks/bootstrap/css/bootstrap-theme.min.css.map similarity index 100% rename from frameworks/bootstrap/css/bootstrap-theme.min.css.map rename to view/theme/frio/frameworks/bootstrap/css/bootstrap-theme.min.css.map diff --git a/frameworks/bootstrap/css/bootstrap.css b/view/theme/frio/frameworks/bootstrap/css/bootstrap.css similarity index 100% rename from frameworks/bootstrap/css/bootstrap.css rename to view/theme/frio/frameworks/bootstrap/css/bootstrap.css diff --git a/frameworks/bootstrap/css/bootstrap.css.map b/view/theme/frio/frameworks/bootstrap/css/bootstrap.css.map similarity index 100% rename from frameworks/bootstrap/css/bootstrap.css.map rename to view/theme/frio/frameworks/bootstrap/css/bootstrap.css.map diff --git a/frameworks/bootstrap/css/bootstrap.min.css b/view/theme/frio/frameworks/bootstrap/css/bootstrap.min.css similarity index 100% rename from frameworks/bootstrap/css/bootstrap.min.css rename to view/theme/frio/frameworks/bootstrap/css/bootstrap.min.css diff --git a/frameworks/bootstrap/css/bootstrap.min.css.map b/view/theme/frio/frameworks/bootstrap/css/bootstrap.min.css.map similarity index 100% rename from frameworks/bootstrap/css/bootstrap.min.css.map rename to view/theme/frio/frameworks/bootstrap/css/bootstrap.min.css.map diff --git a/frameworks/bootstrap/fonts/glyphicons-halflings-regular.eot b/view/theme/frio/frameworks/bootstrap/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from frameworks/bootstrap/fonts/glyphicons-halflings-regular.eot rename to view/theme/frio/frameworks/bootstrap/fonts/glyphicons-halflings-regular.eot diff --git a/frameworks/bootstrap/fonts/glyphicons-halflings-regular.svg b/view/theme/frio/frameworks/bootstrap/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from frameworks/bootstrap/fonts/glyphicons-halflings-regular.svg rename to view/theme/frio/frameworks/bootstrap/fonts/glyphicons-halflings-regular.svg diff --git a/frameworks/bootstrap/fonts/glyphicons-halflings-regular.ttf b/view/theme/frio/frameworks/bootstrap/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from frameworks/bootstrap/fonts/glyphicons-halflings-regular.ttf rename to view/theme/frio/frameworks/bootstrap/fonts/glyphicons-halflings-regular.ttf diff --git a/frameworks/bootstrap/fonts/glyphicons-halflings-regular.woff b/view/theme/frio/frameworks/bootstrap/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from frameworks/bootstrap/fonts/glyphicons-halflings-regular.woff rename to view/theme/frio/frameworks/bootstrap/fonts/glyphicons-halflings-regular.woff diff --git a/frameworks/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/view/theme/frio/frameworks/bootstrap/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from frameworks/bootstrap/fonts/glyphicons-halflings-regular.woff2 rename to view/theme/frio/frameworks/bootstrap/fonts/glyphicons-halflings-regular.woff2 diff --git a/frameworks/bootstrap/js/bootstrap.js b/view/theme/frio/frameworks/bootstrap/js/bootstrap.js similarity index 100% rename from frameworks/bootstrap/js/bootstrap.js rename to view/theme/frio/frameworks/bootstrap/js/bootstrap.js diff --git a/frameworks/bootstrap/js/bootstrap.min.js b/view/theme/frio/frameworks/bootstrap/js/bootstrap.min.js similarity index 100% rename from frameworks/bootstrap/js/bootstrap.min.js rename to view/theme/frio/frameworks/bootstrap/js/bootstrap.min.js diff --git a/frameworks/bootstrap/js/npm.js b/view/theme/frio/frameworks/bootstrap/js/npm.js similarity index 100% rename from frameworks/bootstrap/js/npm.js rename to view/theme/frio/frameworks/bootstrap/js/npm.js diff --git a/frameworks/ekko-lightbox/ekko-lightbox.css b/view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.css similarity index 100% rename from frameworks/ekko-lightbox/ekko-lightbox.css rename to view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.css diff --git a/frameworks/ekko-lightbox/ekko-lightbox.js b/view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.js similarity index 100% rename from frameworks/ekko-lightbox/ekko-lightbox.js rename to view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.js diff --git a/frameworks/ekko-lightbox/ekko-lightbox.min.css b/view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.min.css similarity index 100% rename from frameworks/ekko-lightbox/ekko-lightbox.min.css rename to view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.min.css diff --git a/frameworks/ekko-lightbox/ekko-lightbox.min.js b/view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.min.js similarity index 100% rename from frameworks/ekko-lightbox/ekko-lightbox.min.js rename to view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.min.js diff --git a/frameworks/flexMenu/README.md b/view/theme/frio/frameworks/flexMenu/README.md similarity index 100% rename from frameworks/flexMenu/README.md rename to view/theme/frio/frameworks/flexMenu/README.md diff --git a/frameworks/flexMenu/flexmenu.custom.js b/view/theme/frio/frameworks/flexMenu/flexmenu.custom.js similarity index 100% rename from frameworks/flexMenu/flexmenu.custom.js rename to view/theme/frio/frameworks/flexMenu/flexmenu.custom.js diff --git a/frameworks/flexMenu/flexmenu.js b/view/theme/frio/frameworks/flexMenu/flexmenu.js similarity index 100% rename from frameworks/flexMenu/flexmenu.js rename to view/theme/frio/frameworks/flexMenu/flexmenu.js diff --git a/frameworks/flexMenu/flexmenu.min.js b/view/theme/frio/frameworks/flexMenu/flexmenu.min.js similarity index 100% rename from frameworks/flexMenu/flexmenu.min.js rename to view/theme/frio/frameworks/flexMenu/flexmenu.min.js diff --git a/frameworks/font-awesome/HELP-US-OUT.txt b/view/theme/frio/frameworks/font-awesome/HELP-US-OUT.txt similarity index 100% rename from frameworks/font-awesome/HELP-US-OUT.txt rename to view/theme/frio/frameworks/font-awesome/HELP-US-OUT.txt diff --git a/frameworks/font-awesome/css/font-awesome.css b/view/theme/frio/frameworks/font-awesome/css/font-awesome.css similarity index 100% rename from frameworks/font-awesome/css/font-awesome.css rename to view/theme/frio/frameworks/font-awesome/css/font-awesome.css diff --git a/frameworks/font-awesome/css/font-awesome.min.css b/view/theme/frio/frameworks/font-awesome/css/font-awesome.min.css similarity index 100% rename from frameworks/font-awesome/css/font-awesome.min.css rename to view/theme/frio/frameworks/font-awesome/css/font-awesome.min.css diff --git a/frameworks/font-awesome/fonts/FontAwesome.otf b/view/theme/frio/frameworks/font-awesome/fonts/FontAwesome.otf similarity index 100% rename from frameworks/font-awesome/fonts/FontAwesome.otf rename to view/theme/frio/frameworks/font-awesome/fonts/FontAwesome.otf diff --git a/frameworks/font-awesome/fonts/fontawesome-webfont.eot b/view/theme/frio/frameworks/font-awesome/fonts/fontawesome-webfont.eot similarity index 100% rename from frameworks/font-awesome/fonts/fontawesome-webfont.eot rename to view/theme/frio/frameworks/font-awesome/fonts/fontawesome-webfont.eot diff --git a/frameworks/font-awesome/fonts/fontawesome-webfont.svg b/view/theme/frio/frameworks/font-awesome/fonts/fontawesome-webfont.svg similarity index 100% rename from frameworks/font-awesome/fonts/fontawesome-webfont.svg rename to view/theme/frio/frameworks/font-awesome/fonts/fontawesome-webfont.svg diff --git a/frameworks/font-awesome/fonts/fontawesome-webfont.ttf b/view/theme/frio/frameworks/font-awesome/fonts/fontawesome-webfont.ttf similarity index 100% rename from frameworks/font-awesome/fonts/fontawesome-webfont.ttf rename to view/theme/frio/frameworks/font-awesome/fonts/fontawesome-webfont.ttf diff --git a/frameworks/font-awesome/fonts/fontawesome-webfont.woff b/view/theme/frio/frameworks/font-awesome/fonts/fontawesome-webfont.woff similarity index 100% rename from frameworks/font-awesome/fonts/fontawesome-webfont.woff rename to view/theme/frio/frameworks/font-awesome/fonts/fontawesome-webfont.woff diff --git a/frameworks/font-awesome/fonts/fontawesome-webfont.woff2 b/view/theme/frio/frameworks/font-awesome/fonts/fontawesome-webfont.woff2 similarity index 100% rename from frameworks/font-awesome/fonts/fontawesome-webfont.woff2 rename to view/theme/frio/frameworks/font-awesome/fonts/fontawesome-webfont.woff2 diff --git a/frameworks/font-awesome/less/animated.less b/view/theme/frio/frameworks/font-awesome/less/animated.less similarity index 100% rename from frameworks/font-awesome/less/animated.less rename to view/theme/frio/frameworks/font-awesome/less/animated.less diff --git a/frameworks/font-awesome/less/bordered-pulled.less b/view/theme/frio/frameworks/font-awesome/less/bordered-pulled.less similarity index 100% rename from frameworks/font-awesome/less/bordered-pulled.less rename to view/theme/frio/frameworks/font-awesome/less/bordered-pulled.less diff --git a/frameworks/font-awesome/less/core.less b/view/theme/frio/frameworks/font-awesome/less/core.less similarity index 100% rename from frameworks/font-awesome/less/core.less rename to view/theme/frio/frameworks/font-awesome/less/core.less diff --git a/frameworks/font-awesome/less/fixed-width.less b/view/theme/frio/frameworks/font-awesome/less/fixed-width.less similarity index 100% rename from frameworks/font-awesome/less/fixed-width.less rename to view/theme/frio/frameworks/font-awesome/less/fixed-width.less diff --git a/frameworks/font-awesome/less/font-awesome.less b/view/theme/frio/frameworks/font-awesome/less/font-awesome.less similarity index 100% rename from frameworks/font-awesome/less/font-awesome.less rename to view/theme/frio/frameworks/font-awesome/less/font-awesome.less diff --git a/frameworks/font-awesome/less/icons.less b/view/theme/frio/frameworks/font-awesome/less/icons.less similarity index 100% rename from frameworks/font-awesome/less/icons.less rename to view/theme/frio/frameworks/font-awesome/less/icons.less diff --git a/frameworks/font-awesome/less/larger.less b/view/theme/frio/frameworks/font-awesome/less/larger.less similarity index 100% rename from frameworks/font-awesome/less/larger.less rename to view/theme/frio/frameworks/font-awesome/less/larger.less diff --git a/frameworks/font-awesome/less/list.less b/view/theme/frio/frameworks/font-awesome/less/list.less similarity index 100% rename from frameworks/font-awesome/less/list.less rename to view/theme/frio/frameworks/font-awesome/less/list.less diff --git a/frameworks/font-awesome/less/mixins.less b/view/theme/frio/frameworks/font-awesome/less/mixins.less similarity index 100% rename from frameworks/font-awesome/less/mixins.less rename to view/theme/frio/frameworks/font-awesome/less/mixins.less diff --git a/frameworks/font-awesome/less/path.less b/view/theme/frio/frameworks/font-awesome/less/path.less similarity index 100% rename from frameworks/font-awesome/less/path.less rename to view/theme/frio/frameworks/font-awesome/less/path.less diff --git a/frameworks/font-awesome/less/rotated-flipped.less b/view/theme/frio/frameworks/font-awesome/less/rotated-flipped.less similarity index 100% rename from frameworks/font-awesome/less/rotated-flipped.less rename to view/theme/frio/frameworks/font-awesome/less/rotated-flipped.less diff --git a/frameworks/font-awesome/less/stacked.less b/view/theme/frio/frameworks/font-awesome/less/stacked.less similarity index 100% rename from frameworks/font-awesome/less/stacked.less rename to view/theme/frio/frameworks/font-awesome/less/stacked.less diff --git a/frameworks/font-awesome/less/variables.less b/view/theme/frio/frameworks/font-awesome/less/variables.less similarity index 100% rename from frameworks/font-awesome/less/variables.less rename to view/theme/frio/frameworks/font-awesome/less/variables.less diff --git a/frameworks/font-awesome/scss/_animated.scss b/view/theme/frio/frameworks/font-awesome/scss/_animated.scss similarity index 100% rename from frameworks/font-awesome/scss/_animated.scss rename to view/theme/frio/frameworks/font-awesome/scss/_animated.scss diff --git a/frameworks/font-awesome/scss/_bordered-pulled.scss b/view/theme/frio/frameworks/font-awesome/scss/_bordered-pulled.scss similarity index 100% rename from frameworks/font-awesome/scss/_bordered-pulled.scss rename to view/theme/frio/frameworks/font-awesome/scss/_bordered-pulled.scss diff --git a/frameworks/font-awesome/scss/_core.scss b/view/theme/frio/frameworks/font-awesome/scss/_core.scss similarity index 100% rename from frameworks/font-awesome/scss/_core.scss rename to view/theme/frio/frameworks/font-awesome/scss/_core.scss diff --git a/frameworks/font-awesome/scss/_fixed-width.scss b/view/theme/frio/frameworks/font-awesome/scss/_fixed-width.scss similarity index 100% rename from frameworks/font-awesome/scss/_fixed-width.scss rename to view/theme/frio/frameworks/font-awesome/scss/_fixed-width.scss diff --git a/frameworks/font-awesome/scss/_icons.scss b/view/theme/frio/frameworks/font-awesome/scss/_icons.scss similarity index 100% rename from frameworks/font-awesome/scss/_icons.scss rename to view/theme/frio/frameworks/font-awesome/scss/_icons.scss diff --git a/frameworks/font-awesome/scss/_larger.scss b/view/theme/frio/frameworks/font-awesome/scss/_larger.scss similarity index 100% rename from frameworks/font-awesome/scss/_larger.scss rename to view/theme/frio/frameworks/font-awesome/scss/_larger.scss diff --git a/frameworks/font-awesome/scss/_list.scss b/view/theme/frio/frameworks/font-awesome/scss/_list.scss similarity index 100% rename from frameworks/font-awesome/scss/_list.scss rename to view/theme/frio/frameworks/font-awesome/scss/_list.scss diff --git a/frameworks/font-awesome/scss/_mixins.scss b/view/theme/frio/frameworks/font-awesome/scss/_mixins.scss similarity index 100% rename from frameworks/font-awesome/scss/_mixins.scss rename to view/theme/frio/frameworks/font-awesome/scss/_mixins.scss diff --git a/frameworks/font-awesome/scss/_path.scss b/view/theme/frio/frameworks/font-awesome/scss/_path.scss similarity index 100% rename from frameworks/font-awesome/scss/_path.scss rename to view/theme/frio/frameworks/font-awesome/scss/_path.scss diff --git a/frameworks/font-awesome/scss/_rotated-flipped.scss b/view/theme/frio/frameworks/font-awesome/scss/_rotated-flipped.scss similarity index 100% rename from frameworks/font-awesome/scss/_rotated-flipped.scss rename to view/theme/frio/frameworks/font-awesome/scss/_rotated-flipped.scss diff --git a/frameworks/font-awesome/scss/_stacked.scss b/view/theme/frio/frameworks/font-awesome/scss/_stacked.scss similarity index 100% rename from frameworks/font-awesome/scss/_stacked.scss rename to view/theme/frio/frameworks/font-awesome/scss/_stacked.scss diff --git a/frameworks/font-awesome/scss/_variables.scss b/view/theme/frio/frameworks/font-awesome/scss/_variables.scss similarity index 100% rename from frameworks/font-awesome/scss/_variables.scss rename to view/theme/frio/frameworks/font-awesome/scss/_variables.scss diff --git a/frameworks/font-awesome/scss/font-awesome.scss b/view/theme/frio/frameworks/font-awesome/scss/font-awesome.scss similarity index 100% rename from frameworks/font-awesome/scss/font-awesome.scss rename to view/theme/frio/frameworks/font-awesome/scss/font-awesome.scss diff --git a/frameworks/jRange/LICENSE b/view/theme/frio/frameworks/jRange/LICENSE similarity index 100% rename from frameworks/jRange/LICENSE rename to view/theme/frio/frameworks/jRange/LICENSE diff --git a/frameworks/jRange/README.md b/view/theme/frio/frameworks/jRange/README.md similarity index 100% rename from frameworks/jRange/README.md rename to view/theme/frio/frameworks/jRange/README.md diff --git a/frameworks/jRange/jquery.range-min.js b/view/theme/frio/frameworks/jRange/jquery.range-min.js similarity index 100% rename from frameworks/jRange/jquery.range-min.js rename to view/theme/frio/frameworks/jRange/jquery.range-min.js diff --git a/frameworks/jRange/jquery.range.css b/view/theme/frio/frameworks/jRange/jquery.range.css similarity index 100% rename from frameworks/jRange/jquery.range.css rename to view/theme/frio/frameworks/jRange/jquery.range.css diff --git a/frameworks/jRange/jquery.range.js b/view/theme/frio/frameworks/jRange/jquery.range.js similarity index 100% rename from frameworks/jRange/jquery.range.js rename to view/theme/frio/frameworks/jRange/jquery.range.js diff --git a/frameworks/jRange/jquery.range.less b/view/theme/frio/frameworks/jRange/jquery.range.less similarity index 100% rename from frameworks/jRange/jquery.range.less rename to view/theme/frio/frameworks/jRange/jquery.range.less diff --git a/frameworks/jRange/package.json b/view/theme/frio/frameworks/jRange/package.json similarity index 100% rename from frameworks/jRange/package.json rename to view/theme/frio/frameworks/jRange/package.json diff --git a/frameworks/jasny/css/jasny-bootstrap.css b/view/theme/frio/frameworks/jasny/css/jasny-bootstrap.css similarity index 100% rename from frameworks/jasny/css/jasny-bootstrap.css rename to view/theme/frio/frameworks/jasny/css/jasny-bootstrap.css diff --git a/frameworks/jasny/css/jasny-bootstrap.css.map b/view/theme/frio/frameworks/jasny/css/jasny-bootstrap.css.map similarity index 100% rename from frameworks/jasny/css/jasny-bootstrap.css.map rename to view/theme/frio/frameworks/jasny/css/jasny-bootstrap.css.map diff --git a/frameworks/jasny/css/jasny-bootstrap.min.css b/view/theme/frio/frameworks/jasny/css/jasny-bootstrap.min.css similarity index 100% rename from frameworks/jasny/css/jasny-bootstrap.min.css rename to view/theme/frio/frameworks/jasny/css/jasny-bootstrap.min.css diff --git a/frameworks/jasny/js/jasny-bootstrap.custom.js b/view/theme/frio/frameworks/jasny/js/jasny-bootstrap.custom.js similarity index 100% rename from frameworks/jasny/js/jasny-bootstrap.custom.js rename to view/theme/frio/frameworks/jasny/js/jasny-bootstrap.custom.js diff --git a/frameworks/jasny/js/jasny-bootstrap.js b/view/theme/frio/frameworks/jasny/js/jasny-bootstrap.js similarity index 100% rename from frameworks/jasny/js/jasny-bootstrap.js rename to view/theme/frio/frameworks/jasny/js/jasny-bootstrap.js diff --git a/frameworks/jasny/js/jasny-bootstrap.min.js b/view/theme/frio/frameworks/jasny/js/jasny-bootstrap.min.js similarity index 100% rename from frameworks/jasny/js/jasny-bootstrap.min.js rename to view/theme/frio/frameworks/jasny/js/jasny-bootstrap.min.js diff --git a/frameworks/jsmart/jsmart.custom.js b/view/theme/frio/frameworks/jsmart/jsmart.custom.js similarity index 100% rename from frameworks/jsmart/jsmart.custom.js rename to view/theme/frio/frameworks/jsmart/jsmart.custom.js diff --git a/frameworks/jsmart/jsmart.js b/view/theme/frio/frameworks/jsmart/jsmart.js similarity index 100% rename from frameworks/jsmart/jsmart.js rename to view/theme/frio/frameworks/jsmart/jsmart.js diff --git a/frameworks/jsmart/jsmart.min.js b/view/theme/frio/frameworks/jsmart/jsmart.min.js similarity index 100% rename from frameworks/jsmart/jsmart.min.js rename to view/theme/frio/frameworks/jsmart/jsmart.min.js diff --git a/frameworks/justifiedGallery/jquery.justifiedGallery.min.js b/view/theme/frio/frameworks/justifiedGallery/jquery.justifiedGallery.min.js similarity index 100% rename from frameworks/justifiedGallery/jquery.justifiedGallery.min.js rename to view/theme/frio/frameworks/justifiedGallery/jquery.justifiedGallery.min.js diff --git a/frameworks/justifiedGallery/justifiedGallery.min.css b/view/theme/frio/frameworks/justifiedGallery/justifiedGallery.min.css similarity index 100% rename from frameworks/justifiedGallery/justifiedGallery.min.css rename to view/theme/frio/frameworks/justifiedGallery/justifiedGallery.min.css diff --git a/img/bg_circle.png b/view/theme/frio/img/bg_circle.png similarity index 100% rename from img/bg_circle.png rename to view/theme/frio/img/bg_circle.png diff --git a/img/dynamic.php b/view/theme/frio/img/dynamic.php similarity index 100% rename from img/dynamic.php rename to view/theme/frio/img/dynamic.php diff --git a/img/friendica-25.png b/view/theme/frio/img/friendica-25.png similarity index 100% rename from img/friendica-25.png rename to view/theme/frio/img/friendica-25.png diff --git a/img/friendica-32.png b/view/theme/frio/img/friendica-32.png similarity index 100% rename from img/friendica-32.png rename to view/theme/frio/img/friendica-32.png diff --git a/img/friendica-logo.svg b/view/theme/frio/img/friendica-logo.svg similarity index 100% rename from img/friendica-logo.svg rename to view/theme/frio/img/friendica-logo.svg diff --git a/img/icon_search16x16.png b/view/theme/frio/img/icon_search16x16.png similarity index 100% rename from img/icon_search16x16.png rename to view/theme/frio/img/icon_search16x16.png diff --git a/img/mime/audio.png b/view/theme/frio/img/mime/audio.png similarity index 100% rename from img/mime/audio.png rename to view/theme/frio/img/mime/audio.png diff --git a/img/mime/excel.png b/view/theme/frio/img/mime/excel.png similarity index 100% rename from img/mime/excel.png rename to view/theme/frio/img/mime/excel.png diff --git a/img/mime/file.png b/view/theme/frio/img/mime/file.png similarity index 100% rename from img/mime/file.png rename to view/theme/frio/img/mime/file.png diff --git a/img/mime/illustrator.png b/view/theme/frio/img/mime/illustrator.png similarity index 100% rename from img/mime/illustrator.png rename to view/theme/frio/img/mime/illustrator.png diff --git a/img/mime/image.png b/view/theme/frio/img/mime/image.png similarity index 100% rename from img/mime/image.png rename to view/theme/frio/img/mime/image.png diff --git a/img/mime/indesign.png b/view/theme/frio/img/mime/indesign.png similarity index 100% rename from img/mime/indesign.png rename to view/theme/frio/img/mime/indesign.png diff --git a/img/mime/pdf.png b/view/theme/frio/img/mime/pdf.png similarity index 100% rename from img/mime/pdf.png rename to view/theme/frio/img/mime/pdf.png diff --git a/img/mime/photoshop.png b/view/theme/frio/img/mime/photoshop.png similarity index 100% rename from img/mime/photoshop.png rename to view/theme/frio/img/mime/photoshop.png diff --git a/img/mime/powerpoint.png b/view/theme/frio/img/mime/powerpoint.png similarity index 100% rename from img/mime/powerpoint.png rename to view/theme/frio/img/mime/powerpoint.png diff --git a/img/mime/video.png b/view/theme/frio/img/mime/video.png similarity index 100% rename from img/mime/video.png rename to view/theme/frio/img/mime/video.png diff --git a/img/mime/word.png b/view/theme/frio/img/mime/word.png similarity index 100% rename from img/mime/word.png rename to view/theme/frio/img/mime/word.png diff --git a/img/mime/zip.png b/view/theme/frio/img/mime/zip.png similarity index 100% rename from img/mime/zip.png rename to view/theme/frio/img/mime/zip.png diff --git a/img/placeholder-postform-arrow.png b/view/theme/frio/img/placeholder-postform-arrow.png similarity index 100% rename from img/placeholder-postform-arrow.png rename to view/theme/frio/img/placeholder-postform-arrow.png diff --git a/img/screenshots/screenshot-jot-modal.png b/view/theme/frio/img/screenshots/screenshot-jot-modal.png similarity index 100% rename from img/screenshots/screenshot-jot-modal.png rename to view/theme/frio/img/screenshots/screenshot-jot-modal.png diff --git a/img/screenshots/screenshot-mobile.png b/view/theme/frio/img/screenshots/screenshot-mobile.png similarity index 100% rename from img/screenshots/screenshot-mobile.png rename to view/theme/frio/img/screenshots/screenshot-mobile.png diff --git a/img/screenshots/screenshot-schema-love-music.png b/view/theme/frio/img/screenshots/screenshot-schema-love-music.png similarity index 100% rename from img/screenshots/screenshot-schema-love-music.png rename to view/theme/frio/img/screenshots/screenshot-schema-love-music.png diff --git a/img/screenshots/screenshot-schema-red.png b/view/theme/frio/img/screenshots/screenshot-schema-red.png similarity index 100% rename from img/screenshots/screenshot-schema-red.png rename to view/theme/frio/img/screenshots/screenshot-schema-red.png diff --git a/img/screenshots/screenshot-settings.png b/view/theme/frio/img/screenshots/screenshot-settings.png similarity index 100% rename from img/screenshots/screenshot-settings.png rename to view/theme/frio/img/screenshots/screenshot-settings.png diff --git a/img/screenshots/screenshot.png b/view/theme/frio/img/screenshots/screenshot.png similarity index 100% rename from img/screenshots/screenshot.png rename to view/theme/frio/img/screenshots/screenshot.png diff --git a/img/select_arrow.png b/view/theme/frio/img/select_arrow.png similarity index 100% rename from img/select_arrow.png rename to view/theme/frio/img/select_arrow.png diff --git a/js/filebrowser.js b/view/theme/frio/js/filebrowser.js similarity index 100% rename from js/filebrowser.js rename to view/theme/frio/js/filebrowser.js diff --git a/js/hovercard.js b/view/theme/frio/js/hovercard.js similarity index 100% rename from js/hovercard.js rename to view/theme/frio/js/hovercard.js diff --git a/js/modal.js b/view/theme/frio/js/modal.js similarity index 100% rename from js/modal.js rename to view/theme/frio/js/modal.js diff --git a/js/textedit.js b/view/theme/frio/js/textedit.js similarity index 100% rename from js/textedit.js rename to view/theme/frio/js/textedit.js diff --git a/js/theme.js b/view/theme/frio/js/theme.js similarity index 100% rename from js/theme.js rename to view/theme/frio/js/theme.js diff --git a/php/Colors.php b/view/theme/frio/php/Colors.php similarity index 100% rename from php/Colors.php rename to view/theme/frio/php/Colors.php diff --git a/php/Image.php b/view/theme/frio/php/Image.php similarity index 100% rename from php/Image.php rename to view/theme/frio/php/Image.php diff --git a/php/PHPColors/Color.php b/view/theme/frio/php/PHPColors/Color.php similarity index 100% rename from php/PHPColors/Color.php rename to view/theme/frio/php/PHPColors/Color.php diff --git a/php/PHPColors/README.md b/view/theme/frio/php/PHPColors/README.md similarity index 100% rename from php/PHPColors/README.md rename to view/theme/frio/php/PHPColors/README.md diff --git a/php/frio_boot.php b/view/theme/frio/php/frio_boot.php similarity index 100% rename from php/frio_boot.php rename to view/theme/frio/php/frio_boot.php diff --git a/php/modes/default.php b/view/theme/frio/php/modes/default.php similarity index 100% rename from php/modes/default.php rename to view/theme/frio/php/modes/default.php diff --git a/php/modes/none.php b/view/theme/frio/php/modes/none.php similarity index 100% rename from php/modes/none.php rename to view/theme/frio/php/modes/none.php diff --git a/php/modes/standard.php b/view/theme/frio/php/modes/standard.php similarity index 100% rename from php/modes/standard.php rename to view/theme/frio/php/modes/standard.php diff --git a/php/schema.php b/view/theme/frio/php/schema.php similarity index 100% rename from php/schema.php rename to view/theme/frio/php/schema.php diff --git a/schema/love-music.css b/view/theme/frio/schema/love-music.css similarity index 100% rename from schema/love-music.css rename to view/theme/frio/schema/love-music.css diff --git a/schema/love-music.php b/view/theme/frio/schema/love-music.php similarity index 100% rename from schema/love-music.php rename to view/theme/frio/schema/love-music.php diff --git a/schema/red.php b/view/theme/frio/schema/red.php similarity index 100% rename from schema/red.php rename to view/theme/frio/schema/red.php diff --git a/screenshot.png b/view/theme/frio/screenshot.png similarity index 100% rename from screenshot.png rename to view/theme/frio/screenshot.png diff --git a/style.php b/view/theme/frio/style.php similarity index 100% rename from style.php rename to view/theme/frio/style.php diff --git a/templates/acl_selector.tpl b/view/theme/frio/templates/acl_selector.tpl similarity index 100% rename from templates/acl_selector.tpl rename to view/theme/frio/templates/acl_selector.tpl diff --git a/templates/comment_item.tpl b/view/theme/frio/templates/comment_item.tpl similarity index 100% rename from templates/comment_item.tpl rename to view/theme/frio/templates/comment_item.tpl diff --git a/templates/common_tabs.tpl b/view/theme/frio/templates/common_tabs.tpl similarity index 100% rename from templates/common_tabs.tpl rename to view/theme/frio/templates/common_tabs.tpl diff --git a/templates/contact_template.tpl b/view/theme/frio/templates/contact_template.tpl similarity index 100% rename from templates/contact_template.tpl rename to view/theme/frio/templates/contact_template.tpl diff --git a/templates/contacts-head.tpl b/view/theme/frio/templates/contacts-head.tpl similarity index 100% rename from templates/contacts-head.tpl rename to view/theme/frio/templates/contacts-head.tpl diff --git a/templates/contacts-template.tpl b/view/theme/frio/templates/contacts-template.tpl similarity index 100% rename from templates/contacts-template.tpl rename to view/theme/frio/templates/contacts-template.tpl diff --git a/templates/directory_header.tpl b/view/theme/frio/templates/directory_header.tpl similarity index 100% rename from templates/directory_header.tpl rename to view/theme/frio/templates/directory_header.tpl diff --git a/templates/field_checkbox.tpl b/view/theme/frio/templates/field_checkbox.tpl similarity index 100% rename from templates/field_checkbox.tpl rename to view/theme/frio/templates/field_checkbox.tpl diff --git a/templates/field_colorinput.tpl b/view/theme/frio/templates/field_colorinput.tpl similarity index 100% rename from templates/field_colorinput.tpl rename to view/theme/frio/templates/field_colorinput.tpl diff --git a/templates/field_custom.tpl b/view/theme/frio/templates/field_custom.tpl similarity index 100% rename from templates/field_custom.tpl rename to view/theme/frio/templates/field_custom.tpl diff --git a/templates/field_fileinput.tpl b/view/theme/frio/templates/field_fileinput.tpl similarity index 100% rename from templates/field_fileinput.tpl rename to view/theme/frio/templates/field_fileinput.tpl diff --git a/templates/field_input.tpl b/view/theme/frio/templates/field_input.tpl similarity index 100% rename from templates/field_input.tpl rename to view/theme/frio/templates/field_input.tpl diff --git a/templates/field_password.tpl b/view/theme/frio/templates/field_password.tpl similarity index 100% rename from templates/field_password.tpl rename to view/theme/frio/templates/field_password.tpl diff --git a/templates/field_radio.tpl b/view/theme/frio/templates/field_radio.tpl similarity index 100% rename from templates/field_radio.tpl rename to view/theme/frio/templates/field_radio.tpl diff --git a/templates/field_select.tpl b/view/theme/frio/templates/field_select.tpl similarity index 100% rename from templates/field_select.tpl rename to view/theme/frio/templates/field_select.tpl diff --git a/templates/field_select_raw.tpl b/view/theme/frio/templates/field_select_raw.tpl similarity index 100% rename from templates/field_select_raw.tpl rename to view/theme/frio/templates/field_select_raw.tpl diff --git a/templates/field_themeselect.tpl b/view/theme/frio/templates/field_themeselect.tpl similarity index 100% rename from templates/field_themeselect.tpl rename to view/theme/frio/templates/field_themeselect.tpl diff --git a/templates/filebrowser_plain.tpl b/view/theme/frio/templates/filebrowser_plain.tpl similarity index 100% rename from templates/filebrowser_plain.tpl rename to view/theme/frio/templates/filebrowser_plain.tpl diff --git a/templates/head.tpl b/view/theme/frio/templates/head.tpl similarity index 100% rename from templates/head.tpl rename to view/theme/frio/templates/head.tpl diff --git a/templates/jot-header.tpl b/view/theme/frio/templates/jot-header.tpl similarity index 100% rename from templates/jot-header.tpl rename to view/theme/frio/templates/jot-header.tpl diff --git a/templates/jot.tpl b/view/theme/frio/templates/jot.tpl similarity index 100% rename from templates/jot.tpl rename to view/theme/frio/templates/jot.tpl diff --git a/templates/js_strings.tpl b/view/theme/frio/templates/js_strings.tpl similarity index 100% rename from templates/js_strings.tpl rename to view/theme/frio/templates/js_strings.tpl diff --git a/templates/mail_conv.tpl b/view/theme/frio/templates/mail_conv.tpl similarity index 100% rename from templates/mail_conv.tpl rename to view/theme/frio/templates/mail_conv.tpl diff --git a/templates/mail_display.tpl b/view/theme/frio/templates/mail_display.tpl similarity index 100% rename from templates/mail_display.tpl rename to view/theme/frio/templates/mail_display.tpl diff --git a/templates/mail_list.tpl b/view/theme/frio/templates/mail_list.tpl similarity index 100% rename from templates/mail_list.tpl rename to view/theme/frio/templates/mail_list.tpl diff --git a/templates/message_side.tpl b/view/theme/frio/templates/message_side.tpl similarity index 100% rename from templates/message_side.tpl rename to view/theme/frio/templates/message_side.tpl diff --git a/templates/msg-header.tpl b/view/theme/frio/templates/msg-header.tpl similarity index 100% rename from templates/msg-header.tpl rename to view/theme/frio/templates/msg-header.tpl diff --git a/templates/nav.tpl b/view/theme/frio/templates/nav.tpl similarity index 100% rename from templates/nav.tpl rename to view/theme/frio/templates/nav.tpl diff --git a/templates/nav_head.tpl b/view/theme/frio/templates/nav_head.tpl similarity index 100% rename from templates/nav_head.tpl rename to view/theme/frio/templates/nav_head.tpl diff --git a/templates/photo_top.tpl b/view/theme/frio/templates/photo_top.tpl similarity index 100% rename from templates/photo_top.tpl rename to view/theme/frio/templates/photo_top.tpl diff --git a/templates/photos_recent.tpl b/view/theme/frio/templates/photos_recent.tpl similarity index 100% rename from templates/photos_recent.tpl rename to view/theme/frio/templates/photos_recent.tpl diff --git a/templates/poke_content.tpl b/view/theme/frio/templates/poke_content.tpl similarity index 100% rename from templates/poke_content.tpl rename to view/theme/frio/templates/poke_content.tpl diff --git a/templates/profile_advanced.tpl b/view/theme/frio/templates/profile_advanced.tpl similarity index 100% rename from templates/profile_advanced.tpl rename to view/theme/frio/templates/profile_advanced.tpl diff --git a/templates/profile_vcard.tpl b/view/theme/frio/templates/profile_vcard.tpl similarity index 100% rename from templates/profile_vcard.tpl rename to view/theme/frio/templates/profile_vcard.tpl diff --git a/templates/prv_message.tpl b/view/theme/frio/templates/prv_message.tpl similarity index 100% rename from templates/prv_message.tpl rename to view/theme/frio/templates/prv_message.tpl diff --git a/templates/search_item.tpl b/view/theme/frio/templates/search_item.tpl similarity index 100% rename from templates/search_item.tpl rename to view/theme/frio/templates/search_item.tpl diff --git a/templates/theme_settings.tpl b/view/theme/frio/templates/theme_settings.tpl similarity index 100% rename from templates/theme_settings.tpl rename to view/theme/frio/templates/theme_settings.tpl diff --git a/templates/threaded_conversation.tpl b/view/theme/frio/templates/threaded_conversation.tpl similarity index 100% rename from templates/threaded_conversation.tpl rename to view/theme/frio/templates/threaded_conversation.tpl diff --git a/templates/vcard-widget.tpl b/view/theme/frio/templates/vcard-widget.tpl similarity index 100% rename from templates/vcard-widget.tpl rename to view/theme/frio/templates/vcard-widget.tpl diff --git a/templates/viewcontact_template.tpl b/view/theme/frio/templates/viewcontact_template.tpl similarity index 100% rename from templates/viewcontact_template.tpl rename to view/theme/frio/templates/viewcontact_template.tpl diff --git a/templates/wall_thread.tpl b/view/theme/frio/templates/wall_thread.tpl similarity index 100% rename from templates/wall_thread.tpl rename to view/theme/frio/templates/wall_thread.tpl diff --git a/theme.php b/view/theme/frio/theme.php similarity index 100% rename from theme.php rename to view/theme/frio/theme.php From 10e6a243ea973a9db7db35daecad33be61c4a725 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Wed, 25 May 2016 16:06:16 +0200 Subject: [PATCH 351/485] Simplify openid query, and (needlessly) quote all fields Fields quoting was requested by rabuzarus --- mod/openid.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mod/openid.php b/mod/openid.php index 893db8030d..0ebda485d0 100644 --- a/mod/openid.php +++ b/mod/openid.php @@ -18,7 +18,6 @@ function openid_content(&$a) { if($openid->validate()) { - #$authid = normalise_openid($_REQUEST['openid_identity']); $authid = $_REQUEST['openid_identity']; if(! strlen($authid)) { @@ -31,9 +30,11 @@ function openid_content(&$a) { // mod/settings.php in 8367cad so it might have left mixed // records in the user table // - $r = q("SELECT `user`.*, `user`.`pubkey` as `upubkey`, `user`.`prvkey` as `uprvkey` - FROM `user` WHERE ( openid = '%s' OR openid = '%s' ) AND blocked = 0 - AND `account_expired` = 0 AND `account_removed` = 0 AND `verified` = 1 LIMIT 1", + $r = q("SELECT * FROM `user` + WHERE ( `openid` = '%s' OR `openid` = '%s' ) + AND `blocked` = 0 AND `account_expired` = 0 + AND `account_removed` = 0 AND `verified` = 1 + LIMIT 1", dbesc($authid), dbesc(normalise_openid($authid)) ); From eca1b1ff589770d21041a82190a41e92c29dffd4 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 26 May 2016 23:22:30 +0200 Subject: [PATCH 352/485] Bugfix: Some more encoding problems with attachments fixed --- include/plaintext.php | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/include/plaintext.php b/include/plaintext.php index 92ba8a2756..e18604334b 100644 --- a/include/plaintext.php +++ b/include/plaintext.php @@ -116,10 +116,8 @@ function get_attachment_data($body) { if ($matches[1] != "") $url = $matches[1]; - $url = html_entity_decode($url, ENT_QUOTES, 'UTF-8'); - if ($url != "") - $data["url"] = $url; + $data["url"] = html_entity_decode($url, ENT_QUOTES, 'UTF-8'); $title = ""; preg_match("/title='(.*?)'/ism", $attributes, $matches); @@ -130,11 +128,12 @@ function get_attachment_data($body) { if ($matches[1] != "") $title = $matches[1]; - $title = bbcode(html_entity_decode($title, ENT_QUOTES, 'UTF-8'), false, false, true); - $title = html_entity_decode($title, ENT_QUOTES, 'UTF-8'); - $title = str_replace(array("[", "]"), array("[", "]"), $title); - if ($title != "") + if ($title != "") { + $title = bbcode(html_entity_decode($title, ENT_QUOTES, 'UTF-8'), false, false, true); + $title = html_entity_decode($title, ENT_QUOTES, 'UTF-8'); + $title = str_replace(array("[", "]"), array("[", "]"), $title); $data["title"] = $title; + } $image = ""; preg_match("/image='(.*?)'/ism", $attributes, $matches); @@ -146,7 +145,7 @@ function get_attachment_data($body) { $image = $matches[1]; if ($image != "") - $data["image"] = $image; + $data["image"] = html_entity_decode($image, ENT_QUOTES, 'UTF-8'); $preview = ""; preg_match("/preview='(.*?)'/ism", $attributes, $matches); @@ -158,7 +157,7 @@ function get_attachment_data($body) { $preview = $matches[1]; if ($preview != "") - $data["preview"] = $preview; + $data["preview"] = html_entity_decode($preview, ENT_QUOTES, 'UTF-8'); $data["description"] = trim($match[3]); From 2d6740c340d88a5a2338232cf90f99b61d3f8b95 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 26 May 2016 23:23:24 +0200 Subject: [PATCH 353/485] Frio: Added a link to the thread on the same server --- view/theme/frio/templates/wall_thread.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/view/theme/frio/templates/wall_thread.tpl b/view/theme/frio/templates/wall_thread.tpl index 50ae8c575f..cea58e18b3 100644 --- a/view/theme/frio/templates/wall_thread.tpl +++ b/view/theme/frio/templates/wall_thread.tpl @@ -190,7 +190,7 @@ as the value of $top_child_total (this is done at the end of this file)
      - {{$item.ago}} + {{$item.ago}}
      {{if $item.location}} @@ -207,7 +207,7 @@ as the value of $top_child_total (this is done at the end of this file)
      {{$item.name}}

      - {{$item.ago}} {{if $item.location}} — ({{$item.location}}){{/if}} + {{$item.ago}} {{if $item.location}} — ({{$item.location}}){{/if}}

      From 6fcad290a4f5bf3c1341d594309e89f33aa2df97 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Fri, 27 May 2016 15:50:51 +0200 Subject: [PATCH 354/485] Frio: Fix warnings in config page --- view/theme/frio/config.php | 1 + 1 file changed, 1 insertion(+) diff --git a/view/theme/frio/config.php b/view/theme/frio/config.php index cb4610e590..2e896d45f6 100644 --- a/view/theme/frio/config.php +++ b/view/theme/frio/config.php @@ -36,6 +36,7 @@ function frio_form(&$a, $arr) { $scheme_info = get_schema_info($arr["schema"]); $disable = $scheme_info["overwrites"]; + if (!is_array($disable)) $disable = array(); $scheme_choices = array(); $scheme_choices["---"] = t("Default"); From e568020718c351bf64e8b2cb678427750b498ed6 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Fri, 27 May 2016 15:53:11 +0200 Subject: [PATCH 355/485] Frio: remove header(location) in default.php The call to header() is too late in code (output was already sent) --- view/theme/frio/php/modes/default.php | 1 - 1 file changed, 1 deletion(-) diff --git a/view/theme/frio/php/modes/default.php b/view/theme/frio/php/modes/default.php index e5971aefa9..6f9c1a4b06 100644 --- a/view/theme/frio/php/modes/default.php +++ b/view/theme/frio/php/modes/default.php @@ -44,7 +44,6 @@ else echo""; } ?> - Skip to main content Date: Fri, 27 May 2016 20:33:29 +0200 Subject: [PATCH 356/485] Frio: When hovering over the notification entries the cursor is now a pointer --- view/theme/frio/css/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index b0dd17414c..2295429d5e 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -508,6 +508,7 @@ nav.navbar a { #topbar-first #nav-notifications-menu .media .media-body { font-size: 13px!important; font-weight: 600!important; + cursor: pointer; } #topbar-first #nav-notifications-menu .media .media-body .contactname { font-weight: bold; From add258ac08b058c8abc25d4023d765ff3ae8b0fe Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 28 May 2016 09:57:19 +0200 Subject: [PATCH 357/485] Frio: Like, Dislike and comment are having icons, links are underlined --- view/theme/frio/css/style.css | 14 ++++++++ view/theme/frio/templates/wall_thread.tpl | 44 ++++++++++++----------- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 2295429d5e..3bf74d7fd7 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -45,6 +45,10 @@ body a:hover, body a:focus, body a:active, body a.active, body .btn-link:hover{ text-decoration: none; } +.wall-item-container a:hover { + text-decoration: underline; +} + hr { margin-top: 10px; margin-bottom: 10px; @@ -1288,6 +1292,10 @@ blockquote.shared_content { color: #555; } +.wall-item-tags a:hover { + text-decoration: none; +} + /* item social action buttons */ .wall-item-actions, .wall-item-actions a { font-size: 13px; @@ -1314,6 +1322,12 @@ blockquote.shared_content { padding-left: 5px; padding-right: 5px; } +.wall-item-actions .button-comments, +.wall-item-actions .button-votes, +.wall-item-actions .button-likes { + padding-left: 0px; + padding-right: 10px; +} /* wall item hover effects */ .wall-item-container .wall-item-links, diff --git a/view/theme/frio/templates/wall_thread.tpl b/view/theme/frio/templates/wall_thread.tpl index cea58e18b3..7ef178f838 100644 --- a/view/theme/frio/templates/wall_thread.tpl +++ b/view/theme/frio/templates/wall_thread.tpl @@ -72,14 +72,14 @@ as the value of $top_child_total (this is done at the end of this file)
      {{/if}}
      - {{* Put addional actions in a top-right dorpdown menu *}} + {{* Put addional actions in a top-right dropdown menu *}}
      @@ -316,9 +318,9 @@ as the value of $top_child_total (this is done at the end of this file) {{* Event attendance buttons *}} {{if $item.isevent}} {{/if}} From 9dc442056182b3a4b0c9010e12596582d022f51a Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sat, 28 May 2016 13:07:24 +0200 Subject: [PATCH 358/485] frio: open hovercard on click if device is a mobile device --- view/theme/frio/js/hovercard.js | 18 +++++++++++++++--- view/theme/frio/theme.php | 11 +++++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/view/theme/frio/js/hovercard.js b/view/theme/frio/js/hovercard.js index 93c87e7a88..a0def61eb5 100644 --- a/view/theme/frio/js/hovercard.js +++ b/view/theme/frio/js/hovercard.js @@ -47,6 +47,14 @@ $(document).ready(function(){ var title = targetElement.attr("title"); targetElement.attr({"data-orig-title": title, title: ""}); + // if the device is a mobile open the hover card by click and not by hover + if(typeof is_mobile != "undefined") { + targetElement[0].removeAttribute("href"); + var hctrigger = 'click'; + } else { + var hctrigger = 'manual'; + }; + // Timeoute until the hover-card does appear setTimeout(function(){ if(targetElement.is(":hover") && parseInt(targetElement.attr('data-awaiting-hover-card'),10) == timeNow) { @@ -69,7 +77,7 @@ $(document).ready(function(){ } return "top"; }, - trigger: 'manual', + trigger: hctrigger, template: '
      ', content: data }).popover('show'); @@ -90,8 +98,12 @@ $(document).ready(function(){ // hover cards should be removed very easily, e.g. when any of these events happen $('body').on("mouseleave touchstart scroll click dblclick mousedown mouseup submit keydown keypress keyup", function(e){ - var timeNow = new Date().getTime(); - removeAllhoverCards(e,timeNow); + // remove hover card only for desktiop user, since on mobile we openen the hovercards + // by click event insteadof hover + if(typeof is_mobile == "undefined") { + var timeNow = new Date().getTime(); + removeAllhoverCards(e,timeNow); + }; }); // if we're hovering a hover card, give it a class, so we don't remove it diff --git a/view/theme/frio/theme.php b/view/theme/frio/theme.php index c5c18d0aa2..a7c3b0c5dc 100644 --- a/view/theme/frio/theme.php +++ b/view/theme/frio/theme.php @@ -21,9 +21,16 @@ function frio_init(&$a) { $frio = "view/theme/frio"; global $frio; - - + // if the device is a mobile device set js is_mobile + // variable so the js scripts can use this information + if($a->is_mobile || $a->is_tablet) { + $a->page["htmlhead"] .= <<< EOT + +EOT; + } if ($style == "") $style = get_config('frio', 'style'); From 4a388e84af5f0cf44057f1b6f86f3f9e9e365749 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 28 May 2016 13:08:43 +0200 Subject: [PATCH 359/485] Frio: Adopt changes to search_item.tpl as well. --- include/conversation.php | 4 ++++ view/theme/frio/css/style.css | 2 ++ view/theme/frio/templates/search_item.tpl | 17 +++++++++++++---- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index a52502ec39..d889ba0020 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -668,10 +668,14 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $owner_name_e = $owner_name; } + if ($item['item_network'] == "") + $item['item_network'] = $item['network']; + $tmp_item = array( 'template' => $tpl, 'id' => (($preview) ? 'P0' : $item['item_id']), 'network' => $item['item_network'], + 'network_name' => network_to_name($item['item_network'], $profile_link), 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), 'profile_url' => $profile_link, 'item_photo_menu' => item_photo_menu($item), diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 3bf74d7fd7..35c490738a 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1092,9 +1092,11 @@ section #jotOpen { /* Thread hover effects */ .wall-item-container .wall-item-content a, +.wall-item-container a, .wall-item-container .fakelink, .toplevel_item .fakelink, .toplevel_item .wall-item-container .btn-link, +.wall-item-container .btn-link, .toplevel_item .wall-item-container .wall-item-responses a { color: #555; -webkit-transition: all 0.25s ease-in-out; diff --git a/view/theme/frio/templates/search_item.tpl b/view/theme/frio/templates/search_item.tpl index 89c05b058e..122a86ae86 100644 --- a/view/theme/frio/templates/search_item.tpl +++ b/view/theme/frio/templates/search_item.tpl @@ -10,13 +10,22 @@
      - {{* Put addional actions in a top-right dorpdown menu *}} - {{if $item.star || $item.drop.dropping || $item.edpost}} + {{* Put additional actions in a top-right dropdown menu *}} + - {{/if}} {{* The avatar picture and the photo-menu *}} From 5580c0d70857551d2e548c9c9e350f43ca8e11a4 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 29 May 2016 10:59:06 +0200 Subject: [PATCH 362/485] Bugfix: Sometimes uploaded pictures weren't posted correctly to other networks --- include/Photo.php | 10 ++++++---- include/plaintext.php | 7 +++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 91fce55a86..d87bce4787 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -823,9 +823,12 @@ function get_photo_info($url) { $data = Cache::get($url); - if (is_null($data)) { - $img_str = fetch_url($url, true, $redirects, 4); + // Unserialise to be able to check in the next step if the cached data is alright. + if (!is_null($data)) + $data = unserialize($data); + if (is_null($data) OR !$data) { + $img_str = fetch_url($url, true, $redirects, 4); $filesize = strlen($img_str); if (function_exists("getimagesizefromstring")) @@ -846,8 +849,7 @@ function get_photo_info($url) { $data["size"] = $filesize; Cache::set($url, serialize($data)); - } else - $data = unserialize($data); + } return $data; } diff --git a/include/plaintext.php b/include/plaintext.php index e18604334b..793f9935a7 100644 --- a/include/plaintext.php +++ b/include/plaintext.php @@ -189,6 +189,13 @@ function get_attached_data($body) { if (count($pictures) == 1) { // Checking, if the link goes to a picture $data = parseurl_getsiteinfo_cached($pictures[0][1], true); + + // Workaround: + // Sometimes photo posts to the own album are not detected at the start. + // So we seem to cannot use the cache for these cases. That's strange. + if (($data["type"] != "photo") AND strstr($pictures[0][1], "/photos/")) + $data = parseurl_getsiteinfo($pictures[0][1], true); + if ($data["type"] == "photo") { $post["type"] = "photo"; if (isset($data["images"][0])) { From 98f7c73d107a291ff8918d14ac0347e6d7d78ad0 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 29 May 2016 15:28:31 +0200 Subject: [PATCH 363/485] Frio: Hovercard is now a core function --- mod/hovercard.php | 126 ++++++++++++++++++++++++++++++ view/templates/hovercard.tpl | 39 +++++++++ view/theme/frio/css/hovercard.css | 2 +- view/theme/frio/js/hovercard.js | 2 +- 4 files changed, 167 insertions(+), 2 deletions(-) create mode 100644 mod/hovercard.php create mode 100644 view/templates/hovercard.tpl diff --git a/mod/hovercard.php b/mod/hovercard.php new file mode 100644 index 0000000000..f5c410e111 --- /dev/null +++ b/mod/hovercard.php @@ -0,0 +1,126 @@ + + * License: GNU AFFERO GENERAL PUBLIC LICENSE (Version 3) + */ + +require_once("include/socgraph.php"); +require_once("include/Contact.php"); + +function hovercard_init(&$a) { + // Just for testing purposes + $_GET["mode"] = "minimal"; +} +function hovercard_content() { + $profileurl = (x($_REQUEST,'profileurl') ? $_REQUEST['profileurl'] : ""); + $datatype = (x($_REQUEST,'datatype') ?$_REQUEST['datatype'] : "json"); + + // Get out if the system doesn't have public access allowed + if(intval(get_config('system','block_public'))) + http_status_exit(401); + + // Return the raw content of the template. We use this to make templates usable for js functions. + // Look at hovercard.js (function getHoverCardTemplate()). + // This part should be moved in it's own module. Maybe we could make more templates accessabel. + // (We need to discuss possible security lacks before doing this) + if ($datatype == "tpl") { + $templatecontent = get_template_content("hovercard.tpl"); + echo $templatecontent; + killme(); + } + + // If a contact is connected the url is internally changed to "redir/CID". We need the pure url to search for + // the contact. So we strip out the contact id from the internal url and look in the contact table for + // the real url (nurl) + if(local_user() && strpos($profileurl, "redir/") === 0) { + $cid = intval(substr($profileurl, 6)); + $r = q("SELECT `nurl`, `self` FROM `contact` WHERE `id` = '%d' LIMIT 1", intval($cid)); + $profileurl = ($r[0]["nurl"] ? $r[0]["nurl"] : ""); + $self = ($r[0]["self"] ? $r[0]["self"] : ""); + } + + // if it's the url containing https it should be converted to http + $nurl = normalise_link(clean_contact_url($profileurl)); + if($nurl) { + // Search for contact data + $contact = get_contact_details_by_url($nurl); + + // Get_contact_details_by_url() doesn't provide the nurl but we + // need it for the photo_menu, so we copy it to the contact array + if (!isset($contact["nurl"])) + $contact["nurl"] = $nurl; + } + + if(!is_array($contact)) + return; + + // Get the photo_menu - the menu if possible contact actions + if(local_user()) + $actions = contact_photo_menu($contact); + + + // Move the contact data to the profile array so we can deliver it to + // + $profile = array( + 'name' => $contact["name"], + 'nick' => $contact["nick"], + 'addr' => (($contact["addr"] != "") ? $contact["addr"] : $contact["url"]), + 'thumb' => proxy_url($contact["photo"], false, PROXY_SIZE_THUMB), + 'url' => ($cid ? ("redir/".$cid) : zrl($contact["url"])), + 'nurl' => $contact["nurl"], // We additionally store the nurl as identifier +// 'alias' => $contact["alias"], + 'location' => $contact["location"], + 'gender' => $contact["gender"], + 'about' => $contact["about"], + 'network' => format_network_name($contact["network"], $contact["url"]), + 'tags' => intval($contact["keywords"]), +// 'nsfw' => intval($contact["nsfw"]), +// 'server_url' => $contact["server_url"], + 'bd' => (($contact["birthday"] == "0000-00-00") ? "" : $contact["birthday"]), +// 'generation' => $contact["generation"], + 'account_type' => ($contact['community'] ? t("Forum") : ""), + 'actions' => $actions, + ); + + if($datatype == "html") { + $t = get_markup_template("hovercard.tpl"); + + $o = replace_macros($t, array( + '$profile' => $profile, + )); + + return $o; + + } else { + json_return_and_die($profile); + } +} + +/** + * @brief Get the raw content of a template file + * + * @param string $template The name of the template + * @param string $root Directory of the template + * + * @return string|bool Output the raw content if existent, otherwise false + */ +function get_template_content($template, $root = "") { + + // We load the whole template system to get the filename. + // Maybe we can do it a little bit smarter if I get time. + $t = get_markup_template($template, $root); + $filename = $t->filename; + + // Get the content of the template file + if(file_exists($filename)) { + $content = file_get_contents($filename); + + return $content; + } + + return false; +} diff --git a/view/templates/hovercard.tpl b/view/templates/hovercard.tpl new file mode 100644 index 0000000000..b7acd6c505 --- /dev/null +++ b/view/templates/hovercard.tpl @@ -0,0 +1,39 @@ +
      +
      +
      +
      + + + +
      +
      +
      +

      {{$profile.name}}

      {{if $profile.account_type}}{{$profile.account_type}}{{/if}} +
      +
      + {{$profile.addr}} + {{if $profile.network}} ({{$profile.network}}){{/if}} +
      + {{*{{if $profile.about}}
      {{$profile.about}}
      {{/if}}*}} + +
      +
      + {{* here are the differnt actions like privat message, poke, delete and so on *}} + {{* @todo we have two different photo menus one for contacts and one for items at the network stream. We currently use the contact photo menu, so the items options are missing We need to move them *}} +
      + {{if $profile.actions.pm}}{{/if}} + {{if $profile.actions.poke}}{{/if}} +
      +
      + {{if $profile.actions.network}}{{/if}} + {{if $profile.actions.edit}}{{/if}} + {{if $profile.actions.follow}}{{/if}} +
      +
      +
      + +
      + +
      +
      +{{if $profile.tags}}{{/if}} diff --git a/view/theme/frio/css/hovercard.css b/view/theme/frio/css/hovercard.css index 47d8de9001..3e60f03cb6 100644 --- a/view/theme/frio/css/hovercard.css +++ b/view/theme/frio/css/hovercard.css @@ -286,7 +286,7 @@ display: flex; } .hover-card-actions-connection { - margin-left: 30px; + margin-left: 10px; } .hovercard .hovercard-content .hover-card-actions a.btn { display: inline-block; diff --git a/view/theme/frio/js/hovercard.js b/view/theme/frio/js/hovercard.js index a0def61eb5..10ce29b645 100644 --- a/view/theme/frio/js/hovercard.js +++ b/view/theme/frio/js/hovercard.js @@ -40,7 +40,7 @@ $(document).ready(function(){ // Take link href attribute as link to the profile var profileurl = hrefAttr; // the url to get the contact and template data - var url = baseurl + "/frio_hovercard"; + var url = baseurl + "/hovercard"; // store the title in an other data attribute beause bootstrap // popover destroys the title.attribute. We can restore it later From c0ea78978609181b3b26d6839804dc56cd287f50 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 29 May 2016 15:33:36 +0200 Subject: [PATCH 364/485] Some location changes --- view/theme/frio/css/style.css | 3 +-- view/theme/frio/templates/wall_thread.tpl | 5 +---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 35c490738a..839bb9dcb2 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1206,8 +1206,7 @@ section #jotOpen { font-weight: 500; color: #555; } -.media .media-body .addional-info a, -.media .media-body h5.media-heading a { +.media .media-body .addional-info a, .media .media-body h5.media-heading > a { display: block; } .media .contact-info-comment { diff --git a/view/theme/frio/templates/wall_thread.tpl b/view/theme/frio/templates/wall_thread.tpl index 070e0a702c..ccc8f6967c 100644 --- a/view/theme/frio/templates/wall_thread.tpl +++ b/view/theme/frio/templates/wall_thread.tpl @@ -225,10 +225,7 @@ as the value of $top_child_total (this is done at the end of this file)
      {{$item.name}} - {{$item.ago}} - {{if $item.location}} - {{$item.location}} - {{/if}} + {{$item.ago}} {{if $item.location}} — ({{$item.location}}){{/if}}
      From 3d3498af1b43fb82ec0a93503f8cb78c6c1d8541 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 29 May 2016 15:40:24 +0200 Subject: [PATCH 365/485] And some more --- view/theme/frio/templates/wall_thread.tpl | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/view/theme/frio/templates/wall_thread.tpl b/view/theme/frio/templates/wall_thread.tpl index ccc8f6967c..7ef178f838 100644 --- a/view/theme/frio/templates/wall_thread.tpl +++ b/view/theme/frio/templates/wall_thread.tpl @@ -207,12 +207,7 @@ as the value of $top_child_total (this is done at the end of this file)
      {{$item.name}}

      - {{$item.ago}} - {{if $item.location}} -

      - ({{$item.location}}) -
      - {{/if}} + {{$item.ago}} {{if $item.location}} — ({{$item.location}}){{/if}}

      From 77f761972011280c427ba7b3e6523bc428a70d22 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 29 May 2016 19:35:23 +0200 Subject: [PATCH 366/485] Issue 1769: Some enhancements for sending wall mails --- mod/message.php | 11 ++++++----- mod/wallmessage.php | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/mod/message.php b/mod/message.php index 8108ff96bd..2d194ed244 100644 --- a/mod/message.php +++ b/mod/message.php @@ -446,9 +446,11 @@ function message_content(&$a) { if($message['from-url'] == $myprofile) { $from_url = $myprofile; $sparkle = ''; - } - else { - $from_url = 'redir/' . $message['contact-id']; + } elseif ($message['contact-id'] != 0) { + $from_url = 'redir/'.$message['contact-id']; + $sparkle = ' sparkle'; + } else { + $from_url = $message['from-url']."?zrl=".urlencode($myprofile); $sparkle = ' sparkle'; } @@ -462,8 +464,7 @@ function message_content(&$a) { $subject_e = template_escape($message['title']); $body_e = template_escape(Smilies::replace(bbcode($message['body']))); $to_name_e = template_escape($message['name']); - } - else { + } else { $from_name_e = $message['from-name']; $subject_e = $message['title']; $body_e = Smilies::replace(bbcode($message['body'])); diff --git a/mod/wallmessage.php b/mod/wallmessage.php index b8859badd3..8642624a47 100644 --- a/mod/wallmessage.php +++ b/mod/wallmessage.php @@ -48,7 +48,7 @@ function wallmessage_post(&$a) { $body = str_replace("\r\n","\n",$body); $body = str_replace("\n\n","\n",$body); - + $ret = send_wallmessage($user, $body, $subject, $replyto); switch($ret){ @@ -68,8 +68,8 @@ function wallmessage_post(&$a) { info( t('Message sent.') . EOL ); } -// goaway($a->get_baseurl() . '/profile/' . $user['nickname']); - + goaway('profile/'.$user['nickname']); + } From 0a617da044845288a975b8590578b8893cd4dc53 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 29 May 2016 21:29:26 +0200 Subject: [PATCH 367/485] Wall message can now redirect to your own page if you are connected. --- include/identity.php | 19 ++++++++++++++++--- mod/message.php | 19 ++++++++++++++++--- view/templates/profile_vcard.tpl | 2 +- view/theme/vier/templates/profile_vcard.tpl | 2 +- 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/include/identity.php b/include/identity.php index 888a09ee6f..3e1d831d5b 100644 --- a/include/identity.php +++ b/include/identity.php @@ -246,10 +246,23 @@ function profile_sidebar($profile, $block = 0) { else $subscribe_feed = false; - if(get_my_url() && $profile['unkmail'] && ($profile['uid'] != local_user())) + if(get_my_url() && $profile['unkmail'] && ($profile['uid'] != local_user())) { $wallmessage = t('Message'); - else + + $r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' AND `rel` = %d", + intval($profile['uid']), + dbesc(normalise_link(get_my_url())), + intval(CONTACT_IS_FRIEND)); + if ($r) { + $message_path = preg_replace("=(.*)/profile/(.*)=ism", "$1/message/new/", get_my_url()); + $wallmessage_link = $message_path.base64_encode(get_my_url()); + } else + $wallmessage_link = "wallmessage/".$profile["nickname"]; + + } else { $wallmessage = false; + $wallmessage_link = false; + } // show edit profile to yourself if ($profile['uid'] == local_user() && feature_enabled(local_user(),'multi_profiles')) { @@ -386,6 +399,7 @@ function profile_sidebar($profile, $block = 0) { '$remoteconnect' => $remoteconnect, '$subscribe_feed' => $subscribe_feed, '$wallmessage' => $wallmessage, + '$wallmessage_link' => $wallmessage_link, '$account_type' => $account_type, '$location' => $location, '$gender' => $gender, @@ -400,7 +414,6 @@ function profile_sidebar($profile, $block = 0) { '$contact_block' => $contact_block, )); - $arr = array('profile' => &$profile, 'entry' => &$o); call_hooks('profile_sidebar', $arr); diff --git a/mod/message.php b/mod/message.php index 2d194ed244..f0ab7d2ac9 100644 --- a/mod/message.php +++ b/mod/message.php @@ -305,15 +305,29 @@ function message_content(&$a) { $prename = $preurl = $preid = ''; if($preselect) { - $r = q("select name, url, id from contact where uid = %d and id = %d limit 1", + $r = q("SELECT `name`, `url`, `id` FROM `contact` WHERE `uid` = %d AND `id` = %d LIMIT 1", intval(local_user()), intval($a->argv[2]) ); + if(!$r) { + $r = q("SELECT `name`, `url`, `id` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' LIMIT 1", + intval(local_user()), + dbesc(normalise_link(base64_decode($a->argv[2]))) + ); + } + if(!$r) { + $r = q("SELECT `name`, `url`, `id` FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1", + intval(local_user()), + dbesc(base64_decode($a->argv[2])) + ); + } if(count($r)) { $prename = $r[0]['name']; $preurl = $r[0]['url']; $preid = $r[0]['id']; - } + $preselect = array($preid); + } else + $preselect = false; } $prefill = (($preselect) ? $prename : ''); @@ -342,7 +356,6 @@ function message_content(&$a) { '$wait' => t('Please wait'), '$submit' => t('Submit') )); - return $o; } diff --git a/view/templates/profile_vcard.tpl b/view/templates/profile_vcard.tpl index 0a3a13f9dc..0f1cf070c4 100644 --- a/view/templates/profile_vcard.tpl +++ b/view/templates/profile_vcard.tpl @@ -54,7 +54,7 @@ {{/if}} {{/if}} {{if $wallmessage}} -
    • {{$wallmessage}}
    • +
    • {{$wallmessage}}
    • {{/if}} {{if $subscribe_feed}}
    • {{$subscribe_feed}}
    • diff --git a/view/theme/vier/templates/profile_vcard.tpl b/view/theme/vier/templates/profile_vcard.tpl index a3b08947d0..2d7c72f8c8 100644 --- a/view/theme/vier/templates/profile_vcard.tpl +++ b/view/theme/vier/templates/profile_vcard.tpl @@ -65,7 +65,7 @@ {{/if}} {{/if}} {{if $wallmessage}} -
    • {{$wallmessage}}
    • +
    • {{$wallmessage}}
    • {{/if}} {{if $subscribe_feed}}
    • {{$subscribe_feed}}
    • From e4ec867df3377acbec6325e7023b814129981d31 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 29 May 2016 22:02:31 +0200 Subject: [PATCH 368/485] Better detection for remote user --- include/identity.php | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/include/identity.php b/include/identity.php index 3e1d831d5b..2cb3bfd4c2 100644 --- a/include/identity.php +++ b/include/identity.php @@ -246,19 +246,26 @@ function profile_sidebar($profile, $block = 0) { else $subscribe_feed = false; - if(get_my_url() && $profile['unkmail'] && ($profile['uid'] != local_user())) { + if (remote_user() OR (get_my_url() && $profile['unkmail'] && ($profile['uid'] != local_user()))) { $wallmessage = t('Message'); + $wallmessage_link = "wallmessage/".$profile["nickname"]; - $r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' AND `rel` = %d", - intval($profile['uid']), - dbesc(normalise_link(get_my_url())), - intval(CONTACT_IS_FRIEND)); + if (remote_user()) { + $r = q("SELECT `url` FROM `contact` WHERE `uid` = %d AND `id` = '%s' AND `rel` = %d", + intval($profile['uid']), + intval(remote_user()), + intval(CONTACT_IS_FRIEND)); + } else { + $r = q("SELECT `url` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' AND `rel` = %d", + intval($profile['uid']), + dbesc(normalise_link(get_my_url())), + intval(CONTACT_IS_FRIEND)); + } if ($r) { - $message_path = preg_replace("=(.*)/profile/(.*)=ism", "$1/message/new/", get_my_url()); - $wallmessage_link = $message_path.base64_encode(get_my_url()); - } else - $wallmessage_link = "wallmessage/".$profile["nickname"]; - + $remote_url = $r[0]["url"]; + $message_path = preg_replace("=(.*)/profile/(.*)=ism", "$1/message/new/", $remote_url); + $wallmessage_link = $message_path.base64_encode($remote_url); + } } else { $wallmessage = false; $wallmessage_link = false; From d22d36be7d05d8589a876db6364f79a9589fc06e Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 29 May 2016 22:13:08 +0200 Subject: [PATCH 369/485] Now with correct url --- include/identity.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/identity.php b/include/identity.php index 2cb3bfd4c2..580539c071 100644 --- a/include/identity.php +++ b/include/identity.php @@ -264,7 +264,7 @@ function profile_sidebar($profile, $block = 0) { if ($r) { $remote_url = $r[0]["url"]; $message_path = preg_replace("=(.*)/profile/(.*)=ism", "$1/message/new/", $remote_url); - $wallmessage_link = $message_path.base64_encode($remote_url); + $wallmessage_link = $message_path.base64_encode($profile["addr"]); } } else { $wallmessage = false; From 47efc6df6398b385d466e321b07919f387a8f408 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 29 May 2016 23:02:48 +0200 Subject: [PATCH 370/485] Frio: The separator dots are enabled again --- view/theme/frio/css/style.css | 2 +- view/theme/frio/templates/nav.tpl | 14 +++++++------- view/theme/frio/templates/search_item.tpl | 6 +++--- view/theme/frio/templates/wall_thread.tpl | 13 ++++++++++--- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 839bb9dcb2..4c65552ec7 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1327,7 +1327,7 @@ blockquote.shared_content { .wall-item-actions .button-votes, .wall-item-actions .button-likes { padding-left: 0px; - padding-right: 10px; + padding-right: 0px; } /* wall item hover effects */ diff --git a/view/theme/frio/templates/nav.tpl b/view/theme/frio/templates/nav.tpl index 8eb13c1a42..17da20b6f2 100644 --- a/view/theme/frio/templates/nav.tpl +++ b/view/theme/frio/templates/nav.tpl @@ -134,21 +134,21 @@
      {{/if}} @@ -191,7 +191,7 @@ {{* Button for sharing the item *}} {{if $item.vote}} {{if $item.vote.share}} -  •  +  •   {{$item.vote.share.0}} {{/if}} {{/if}} diff --git a/view/theme/frio/templates/wall_thread.tpl b/view/theme/frio/templates/wall_thread.tpl index 7ef178f838..ceef9230d1 100644 --- a/view/theme/frio/templates/wall_thread.tpl +++ b/view/theme/frio/templates/wall_thread.tpl @@ -289,12 +289,17 @@ as the value of $top_child_total (this is done at the end of this file)  {{$item.vote.like.1}} {{/if}} + {{if $item.vote.like AND $item.vote.dislike}} +  •  + {{/if}} + {{if $item.vote.dislike}} -  {{$item.vote.dislike.1}} {{/if}} - + {{if ($item.vote.like OR $item.vote.dislike) AND $item.comment}} +  •  + {{/if}}
      {{/if}} @@ -307,8 +312,10 @@ as the value of $top_child_total (this is done at the end of this file) {{* Button for sharing the item *}} {{if $item.vote}} + {{if ($item.vote.like OR $item.vote.dislike OR $item.comment) AND $item.vote.share}} +  •  + {{/if}} {{if $item.vote.share}} -  {{$item.vote.share.0}} {{/if}} {{/if}} From 09931b71247c2261371a5a40b38a2127f79f344d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 29 May 2016 23:42:22 +0200 Subject: [PATCH 371/485] frio: Some small template clean up --- view/theme/frio/templates/wall_thread.tpl | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/view/theme/frio/templates/wall_thread.tpl b/view/theme/frio/templates/wall_thread.tpl index ceef9230d1..b2e10a10a1 100644 --- a/view/theme/frio/templates/wall_thread.tpl +++ b/view/theme/frio/templates/wall_thread.tpl @@ -284,7 +284,6 @@ as the value of $top_child_total (this is done at the end of this file) {{* Buttons for like and dislike *}} {{if $item.vote}} -
      {{if $item.vote.like}}  {{$item.vote.like.1}} {{/if}} @@ -300,14 +299,11 @@ as the value of $top_child_total (this is done at the end of this file) {{if ($item.vote.like OR $item.vote.dislike) AND $item.comment}}  •  {{/if}} -
      {{/if}} {{* Butten to open the comment text field *}} {{if $item.comment}} - +  {{$item.switchcomment}} {{/if}} {{* Button for sharing the item *}} From ecb67feca1bbb331dc501ec7ca0e7e03e0ead32d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 30 May 2016 05:21:57 +0200 Subject: [PATCH 372/485] Adapting the changes to search_item.tpl as well --- view/theme/frio/templates/search_item.tpl | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/view/theme/frio/templates/search_item.tpl b/view/theme/frio/templates/search_item.tpl index 1f2b761703..9722a6e1d4 100644 --- a/view/theme/frio/templates/search_item.tpl +++ b/view/theme/frio/templates/search_item.tpl @@ -169,29 +169,34 @@ {{* Buttons for like and dislike *}} {{if $item.vote}} -
      + {{if $item.vote.like}} {{$item.vote.like.0}} + {{/if}} + + {{if $item.vote.like AND $item.vote.dislike}} +  •  + {{/if}} {{if $item.vote.dislike}} -  •  {{$item.vote.dislike.0}} {{/if}} - {{if $item.comment}} • {{/if}} -
      + {{if ($item.vote.like OR $item.vote.dislike) AND $item.comment}} +  •  + {{/if}} {{/if}} {{* Butten to open the comment text field *}} {{if $item.comment}} - + {{$item.switchcomment}} {{/if}} {{* Button for sharing the item *}} {{if $item.vote}} - {{if $item.vote.share}} + {{if ($item.vote.like OR $item.vote.dislike OR $item.comment) AND $item.vote.share}}  •  + {{/if}} + {{if $item.vote.share}}  {{$item.vote.share.0}} {{/if}} {{/if}} From 7e6598f2c01dc25b9420309dac1ec84160f21a03 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 30 May 2016 07:18:25 +0200 Subject: [PATCH 373/485] Adopted the changes to the other themes as well. --- view/theme/decaf-mobile/templates/profile_vcard.tpl | 2 +- view/theme/duepuntozero/templates/profile_vcard.tpl | 2 +- view/theme/frio/templates/profile_vcard.tpl | 2 +- view/theme/frost-mobile/templates/profile_vcard.tpl | 2 +- view/theme/frost/templates/profile_vcard.tpl | 2 +- view/theme/quattro/templates/profile_vcard.tpl | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/view/theme/decaf-mobile/templates/profile_vcard.tpl b/view/theme/decaf-mobile/templates/profile_vcard.tpl index 6e097c62bf..0ce464dbf5 100644 --- a/view/theme/decaf-mobile/templates/profile_vcard.tpl +++ b/view/theme/decaf-mobile/templates/profile_vcard.tpl @@ -41,7 +41,7 @@
    • {{$connect}}
    • {{/if}} {{if $wallmessage}} -
    • {{$wallmessage}}
    • +
    • {{$wallmessage}}
    • {{/if}}
      diff --git a/view/theme/duepuntozero/templates/profile_vcard.tpl b/view/theme/duepuntozero/templates/profile_vcard.tpl index bd2e92f9e4..1b084ba872 100644 --- a/view/theme/duepuntozero/templates/profile_vcard.tpl +++ b/view/theme/duepuntozero/templates/profile_vcard.tpl @@ -47,7 +47,7 @@ {{/if}} {{/if}} {{if $wallmessage}} -
    • {{$wallmessage}}
    • +
    • {{$wallmessage}}
    • {{/if}} {{if $subscribe_feed}}
    • {{$subscribe_feed}}
    • diff --git a/view/theme/frio/templates/profile_vcard.tpl b/view/theme/frio/templates/profile_vcard.tpl index 50b03bad11..e0babdc3a5 100644 --- a/view/theme/frio/templates/profile_vcard.tpl +++ b/view/theme/frio/templates/profile_vcard.tpl @@ -49,7 +49,7 @@ {{/if}} {{if $wallmessage}} diff --git a/view/theme/frost/templates/profile_vcard.tpl b/view/theme/frost/templates/profile_vcard.tpl index 1a0c39a826..26730f8253 100644 --- a/view/theme/frost/templates/profile_vcard.tpl +++ b/view/theme/frost/templates/profile_vcard.tpl @@ -43,7 +43,7 @@
    • {{$connect}}
    • {{/if}} {{if $wallmessage}} -
    • {{$wallmessage}}
    • +
    • {{$wallmessage}}
    • {{/if}} {{if $subscribe_feed}}
    • {{$subscribe_feed}}
    • diff --git a/view/theme/quattro/templates/profile_vcard.tpl b/view/theme/quattro/templates/profile_vcard.tpl index f4eae78d2b..ca702380d2 100644 --- a/view/theme/quattro/templates/profile_vcard.tpl +++ b/view/theme/quattro/templates/profile_vcard.tpl @@ -73,7 +73,7 @@ {{/if}} {{/if}} {{if $wallmessage}} -
    • {{$wallmessage}}
    • +
    • {{$wallmessage}}
    • {{/if}} {{if $subscribe_feed}}
    • {{$subscribe_feed}}
    • From 3948e2923a3e325c65a6cc66e8a898103aed9a76 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Mon, 30 May 2016 15:01:30 +0200 Subject: [PATCH 374/485] frio: commented out some js for the color highlight in /display/ because it causes some errors in ff --- view/theme/frio/templates/threaded_conversation.tpl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/view/theme/frio/templates/threaded_conversation.tpl b/view/theme/frio/templates/threaded_conversation.tpl index f60ce345a8..b94155338d 100644 --- a/view/theme/frio/templates/threaded_conversation.tpl +++ b/view/theme/frio/templates/threaded_conversation.tpl @@ -24,7 +24,9 @@ From b798288a5b544a2122872dea9d3be9974f050354 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 30 May 2016 21:00:00 +0200 Subject: [PATCH 375/485] Frio: The network widget now shows the selected network --- view/theme/frio/templates/nets.tpl | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 view/theme/frio/templates/nets.tpl diff --git a/view/theme/frio/templates/nets.tpl b/view/theme/frio/templates/nets.tpl new file mode 100644 index 0000000000..216e6c3a05 --- /dev/null +++ b/view/theme/frio/templates/nets.tpl @@ -0,0 +1,11 @@ + +
      +

      {{$title}}

      +
      {{$desc}}
      + +
      From 58ef15c6c174c85fac096c224a27e289f7e8dd23 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 30 May 2016 21:17:28 +0200 Subject: [PATCH 376/485] The file widget looks now better as well --- view/theme/frio/templates/fileas_widget.tpl | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 view/theme/frio/templates/fileas_widget.tpl diff --git a/view/theme/frio/templates/fileas_widget.tpl b/view/theme/frio/templates/fileas_widget.tpl new file mode 100644 index 0000000000..a4645841f1 --- /dev/null +++ b/view/theme/frio/templates/fileas_widget.tpl @@ -0,0 +1,13 @@ + +
      +

      {{$title}}

      +
      {{$desc}}
      + + + +
      From 060b7193e66c07261bcf88ea76a6eab9c0af17e5 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 30 May 2016 21:43:49 +0200 Subject: [PATCH 377/485] Indention of the html code --- view/theme/frio/templates/nets.tpl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/view/theme/frio/templates/nets.tpl b/view/theme/frio/templates/nets.tpl index 216e6c3a05..da637e7cf7 100644 --- a/view/theme/frio/templates/nets.tpl +++ b/view/theme/frio/templates/nets.tpl @@ -3,9 +3,9 @@

      {{$title}}

      {{$desc}}
      From 4c53f76c22232a2ea7ee5c7c00072df7090a4176 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 31 May 2016 21:18:14 +0200 Subject: [PATCH 378/485] OStatus: repeated items in OStatus had a wrong "edited" date --- include/ostatus.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/ostatus.php b/include/ostatus.php index 918dec5f32..7ac26846d2 100644 --- a/include/ostatus.php +++ b/include/ostatus.php @@ -493,6 +493,7 @@ class ostatus { $orig_body = $xpath->query('atom:content/text()', $activityobjects)->item(0)->nodeValue; $orig_created = $xpath->query('atom:published/text()', $activityobjects)->item(0)->nodeValue; + $orig_edited = $xpath->query('atom:updated/text()', $activityobjects)->item(0)->nodeValue; $orig_contact = $contact; $orig_author = self::fetchauthor($xpath, $activityobjects, $importer, $orig_contact, false); @@ -502,6 +503,7 @@ class ostatus { $item["author-avatar"] = $orig_author["author-avatar"]; $item["body"] = add_page_info_to_body(html2bbcode($orig_body)); $item["created"] = $orig_created; + $item["edited"] = $orig_edited; $item["uri"] = $orig_uri; $item["plink"] = $orig_link; From de3eb5a1b7ee1299efeae1178532e7140407a666 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 31 May 2016 22:07:29 +0200 Subject: [PATCH 379/485] Frio: Removed github link, changed notification description --- view/theme/frio/templates/nav.tpl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/view/theme/frio/templates/nav.tpl b/view/theme/frio/templates/nav.tpl index 17da20b6f2..1f03bdd27b 100644 --- a/view/theme/frio/templates/nav.tpl +++ b/view/theme/frio/templates/nav.tpl @@ -84,7 +84,7 @@
      {{$nav.notifications.1}} @@ -140,8 +140,6 @@
    • {{$usermenu.1}}
    • {{/foreach}} -
    • frio on GitHub
    • - {{if $nav.notifications}}
    • {{$nav.notifications.1}}
    • {{/if}} From 9a442da852b1c457f112a8792b9660c44584759d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 31 May 2016 22:09:35 +0200 Subject: [PATCH 380/485] Removed todo --- view/theme/frio/templates/nav.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/frio/templates/nav.tpl b/view/theme/frio/templates/nav.tpl index 1f03bdd27b..645a50eb6b 100644 --- a/view/theme/frio/templates/nav.tpl +++ b/view/theme/frio/templates/nav.tpl @@ -84,7 +84,7 @@
      {{$nav.notifications.1}} From 9dd6fec0e0d55147d6c8f5f41485a1a4f180e884 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 31 May 2016 22:27:36 +0200 Subject: [PATCH 381/485] The user name moved to the central. --- view/theme/frio/css/style.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 4c65552ec7..7d45bddbec 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -527,7 +527,8 @@ nav.navbar a { } /* The Top Nav Bar user menu */ #topbar-first .account .user-title { - text-align: right + text-align: right; + margin-top: 7px; } #topbar-first .account .user-title span { color: $nav_icon_color; From ef566ecbc30b33c58c37af9959406ae76b59c610 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 1 Jun 2016 07:03:03 +0200 Subject: [PATCH 382/485] Changed option description --- view/theme/frio/templates/nav.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/frio/templates/nav.tpl b/view/theme/frio/templates/nav.tpl index 645a50eb6b..b5f401a99c 100644 --- a/view/theme/frio/templates/nav.tpl +++ b/view/theme/frio/templates/nav.tpl @@ -84,7 +84,7 @@
      {{$nav.notifications.1}} From f07c96ee5f932a83b571ae8caaa821877d4b75e3 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 1 Jun 2016 07:04:31 +0200 Subject: [PATCH 383/485] New class "dbm" for the database management --- include/dbm.php | 26 ++++++++++++++++++++++++++ index.php | 5 +++++ 2 files changed, 31 insertions(+) create mode 100644 include/dbm.php diff --git a/include/dbm.php b/include/dbm.php new file mode 100644 index 0000000000..f68987c235 --- /dev/null +++ b/include/dbm.php @@ -0,0 +1,26 @@ + $usage) { + if ($statelist != "") + $statelist .= ", "; + $statelist .= $state.": ".$usage; + } + return($statelist); + } +} +?> diff --git a/index.php b/index.php index 73f46cfbef..ec72771341 100644 --- a/index.php +++ b/index.php @@ -41,6 +41,7 @@ $install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false */ require_once("include/dba.php"); +require_once("include/dbm.php"); if(!$install) { $db = new dba($db_host, $db_user, $db_pass, $db_data, $install); @@ -53,6 +54,10 @@ if(!$install) { load_config('config'); load_config('system'); + $processlist = dbm::processlist(); + if ($processlist != "") + logger("Processlist: ".$processlist, LOGGER_DEBUG); + $maxsysload_frontend = intval(get_config('system','maxloadavg_frontend')); if($maxsysload_frontend < 1) $maxsysload_frontend = 50; From e2c0f04eeb0ca890465607d6d3305f08d2bfe862 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 1 Jun 2016 07:05:44 +0200 Subject: [PATCH 384/485] Added short description to "mark as seen" --- include/nav.php | 2 +- view/templates/nav.tpl | 2 +- view/theme/cleanzero/templates/nav.tpl | 2 +- view/theme/decaf-mobile/templates/nav.tpl | 2 +- view/theme/diabook/templates/nav.tpl | 2 +- view/theme/dispy/templates/nav.tpl | 2 +- view/theme/duepuntozero/templates/nav.tpl | 2 +- view/theme/facepark/templates/nav.tpl | 2 +- view/theme/frost-mobile/templates/nav.tpl | 2 +- view/theme/frost/templates/nav.tpl | 2 +- view/theme/quattro/templates/nav.tpl | 2 +- view/theme/smoothly/templates/nav.tpl | 2 +- view/theme/testbubble/templates/nav.tpl | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/nav.php b/include/nav.php index 8f82bc4d02..e6460c046b 100644 --- a/include/nav.php +++ b/include/nav.php @@ -170,7 +170,7 @@ function nav_info(&$a) { if(in_array($_SESSION['page_flags'], array(PAGE_NORMAL, PAGE_SOAPBOX, PAGE_FREELOVE))) { $nav['notifications'] = array('notifications', t('Notifications'), "", t('Notifications')); $nav['notifications']['all']=array('notifications/system', t('See all notifications'), "", ""); - $nav['notifications']['mark'] = array('', t('Mark all system notifications seen'), '',''); + $nav['notifications']['mark'] = array('', t('Mark as seen'), '',t('Mark all system notifications seen')); } } diff --git a/view/templates/nav.tpl b/view/templates/nav.tpl index 69c55000b6..b6513e0fe8 100644 --- a/view/templates/nav.tpl +++ b/view/templates/nav.tpl @@ -50,7 +50,7 @@ {{/if}} diff --git a/view/theme/cleanzero/templates/nav.tpl b/view/theme/cleanzero/templates/nav.tpl index 6f00f5c060..1760c68f26 100644 --- a/view/theme/cleanzero/templates/nav.tpl +++ b/view/theme/cleanzero/templates/nav.tpl @@ -35,7 +35,7 @@ {{/if}} diff --git a/view/theme/decaf-mobile/templates/nav.tpl b/view/theme/decaf-mobile/templates/nav.tpl index 3ec6e0831e..5e64880689 100644 --- a/view/theme/decaf-mobile/templates/nav.tpl +++ b/view/theme/decaf-mobile/templates/nav.tpl @@ -67,7 +67,7 @@ {{**}} diff --git a/view/theme/diabook/templates/nav.tpl b/view/theme/diabook/templates/nav.tpl index 3f16a6e40c..8a8664d0a4 100644 --- a/view/theme/diabook/templates/nav.tpl +++ b/view/theme/diabook/templates/nav.tpl @@ -48,7 +48,7 @@ {{$nav.notifications.1}} diff --git a/view/theme/dispy/templates/nav.tpl b/view/theme/dispy/templates/nav.tpl index d4c00297ba..44690562bf 100644 --- a/view/theme/dispy/templates/nav.tpl +++ b/view/theme/dispy/templates/nav.tpl @@ -25,7 +25,7 @@ rel="#nav-notifications-menu" title="{{$nav.notifications.1}}">{{$nav.notifications.1}} {{/if}} diff --git a/view/theme/duepuntozero/templates/nav.tpl b/view/theme/duepuntozero/templates/nav.tpl index 55e69b3155..a47dca3902 100644 --- a/view/theme/duepuntozero/templates/nav.tpl +++ b/view/theme/duepuntozero/templates/nav.tpl @@ -49,7 +49,7 @@ {{/if}} diff --git a/view/theme/facepark/templates/nav.tpl b/view/theme/facepark/templates/nav.tpl index 3a54066ad1..5af2eecec4 100644 --- a/view/theme/facepark/templates/nav.tpl +++ b/view/theme/facepark/templates/nav.tpl @@ -50,7 +50,7 @@ {{/if}} diff --git a/view/theme/frost-mobile/templates/nav.tpl b/view/theme/frost-mobile/templates/nav.tpl index e1c2295ad7..48cbfa0ee8 100644 --- a/view/theme/frost-mobile/templates/nav.tpl +++ b/view/theme/frost-mobile/templates/nav.tpl @@ -63,7 +63,7 @@ diff --git a/view/theme/frost/templates/nav.tpl b/view/theme/frost/templates/nav.tpl index e6e4522c39..cc9110a27f 100644 --- a/view/theme/frost/templates/nav.tpl +++ b/view/theme/frost/templates/nav.tpl @@ -63,7 +63,7 @@ diff --git a/view/theme/quattro/templates/nav.tpl b/view/theme/quattro/templates/nav.tpl index deb0cdfa46..eb0cbbac65 100644 --- a/view/theme/quattro/templates/nav.tpl +++ b/view/theme/quattro/templates/nav.tpl @@ -64,7 +64,7 @@ diff --git a/view/theme/smoothly/templates/nav.tpl b/view/theme/smoothly/templates/nav.tpl index f0fd11adc2..347f3403af 100644 --- a/view/theme/smoothly/templates/nav.tpl +++ b/view/theme/smoothly/templates/nav.tpl @@ -11,7 +11,7 @@ {{if $nav.notifications}}{{/if}} diff --git a/view/theme/testbubble/templates/nav.tpl b/view/theme/testbubble/templates/nav.tpl index 7de76682f6..9531cef55e 100644 --- a/view/theme/testbubble/templates/nav.tpl +++ b/view/theme/testbubble/templates/nav.tpl @@ -13,7 +13,7 @@ {{if $nav.notifications}}{{/if}} From d663447e3c751f26d5b188b98f4459e1b7639715 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 1 Jun 2016 09:39:20 +0200 Subject: [PATCH 385/485] frio: show tooltip only on hover (and not on focus) --- view/theme/frio/js/theme.js | 1 + 1 file changed, 1 insertion(+) diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js index e159b1fdef..928b04551c 100644 --- a/view/theme/frio/js/theme.js +++ b/view/theme/frio/js/theme.js @@ -123,6 +123,7 @@ $(document).ready(function(){ animation: true, html: true, placement: 'auto', + trigger: 'hover', delay: { show: 500, hide: 100 From d3369aeca1c7eb3b85346830367328fae69d1104 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 1 Jun 2016 11:59:35 +0200 Subject: [PATCH 386/485] frio: provide a tooltip for nav search --- view/theme/frio/templates/nav.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/view/theme/frio/templates/nav.tpl b/view/theme/frio/templates/nav.tpl index b5f401a99c..b8d5b2307e 100644 --- a/view/theme/frio/templates/nav.tpl +++ b/view/theme/frio/templates/nav.tpl @@ -109,8 +109,8 @@ From 64c871bf4c0b9f3e16b31797234a725b26a1cf39 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 1 Jun 2016 14:04:39 +0200 Subject: [PATCH 387/485] frio: give the heading "messages" a class "heading" - This is needed for pm modal where class heading becomes the modal title) --- view/theme/frio/templates/mail_head.tpl | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 view/theme/frio/templates/mail_head.tpl diff --git a/view/theme/frio/templates/mail_head.tpl b/view/theme/frio/templates/mail_head.tpl new file mode 100644 index 0000000000..d788845af3 --- /dev/null +++ b/view/theme/frio/templates/mail_head.tpl @@ -0,0 +1,4 @@ + +

      {{$messages}}

      + +{{$tab_content}} From 5090ec15009b50c7ca1a1e93547172db82744b54 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 1 Jun 2016 16:04:31 +0200 Subject: [PATCH 388/485] Mentions are now having an own class --- include/bbcode.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/bbcode.php b/include/bbcode.php index bc30767770..3833c55401 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -809,7 +809,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal $Text = preg_replace("/([@])\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$1$3', $Text); - + elseif (!$simplehtml) + $Text = preg_replace("/([@])\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", + '$1$3', + $Text); // Bookmarks in red - will be converted to bookmarks in friendica $Text = preg_replace("/#\^\[url\]([$URLSearchString]*)\[\/url\]/ism", '[bookmark=$1]$1[/bookmark]', $Text); From 85f42ad26d50ebb5847784cdda0256b40da59dd0 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 1 Jun 2016 16:19:53 +0200 Subject: [PATCH 389/485] Tags are now supported as well --- include/bbcode.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/bbcode.php b/include/bbcode.php index 3833c55401..39f04aa692 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -854,6 +854,9 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal if ($tryoembed) $Text = preg_replace_callback("/\[url\]([$URLSearchString]*)\[\/url\]/ism",'tryoembed',$Text); + $Text = preg_replace("/([#])\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", + '$1$3', $Text); + $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '$1', $Text); $Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $Text); //$Text = preg_replace("/\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[\/url\]/ism", '$2', $Text); From 0b766b86ba7d92c0800f8ac9049112def6b182da Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 1 Jun 2016 17:10:43 +0200 Subject: [PATCH 390/485] By setting the "userinfo" class the hovercard in frio works with mentions --- include/bbcode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/bbcode.php b/include/bbcode.php index 39f04aa692..99295aee02 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -811,7 +811,7 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal $Text); elseif (!$simplehtml) $Text = preg_replace("/([@])\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", - '$1$3', + '$1$3', $Text); // Bookmarks in red - will be converted to bookmarks in friendica From 300591560e6366e2bf17753cbfe2f04836c125fd Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 1 Jun 2016 17:21:57 +0200 Subject: [PATCH 391/485] frio: adding contact actions on hover for contacts in contact view --- view/theme/frio/css/style.css | 27 ++++++++++++++++--- .../theme/frio/templates/contact_template.tpl | 26 +++++++++++++++--- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 7d45bddbec..4d7e4e2cb8 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1702,10 +1702,29 @@ ul.viewcontact_wrapper > li { .contact-entry-checkbox { margin-top: -20px; } -.contact-wrapper .media-body .contact-entry-name h4.media-heading { - font-weight: bold; - color: #777; - font-size: 15px; +.contact-wrapper .media-body .contact-entry-name h4.media-heading a { + font-weight: bold !important; + color: $link_color; + font-size: 15px !important; +} +.contact-wrapper .contact-actions { + display: flex; +} +.contact-wrapper a.contact-action-link { + opacity: 0.1; +} +.contact-wrapper a.contact-action-link, +.contact-wrapper a.contact-action-link:hover, +.textcomplete-item .contact-wrapper a.contact-action-link { + padding-right: 5px; + padding-left: 5px; + color: #555; +} +ul li:hover .contact-wrapper a.contact-action-link { + opacity: 0.8; +} +ul li:hover .contact-wrapper a.contact-action-link:hover { + opacity: 1; } #contacts-search-wrapper, #directory-search-wrapper{ diff --git a/view/theme/frio/templates/contact_template.tpl b/view/theme/frio/templates/contact_template.tpl index bfffec0ce5..4c2395fd03 100644 --- a/view/theme/frio/templates/contact_template.tpl +++ b/view/theme/frio/templates/contact_template.tpl @@ -46,10 +46,20 @@
      + {{* The contact actions like private mail, delete contact, edit contact and so on *}} + + {{* The contact description (e.g. Name, Network, kind of connection and so on *}}
      -

      {{$contact.name}} +

      {{$contact.name}} {{if $contact.account_type}} ({{$contact.account_type}}){{/if}} {{if $contact.account_type == 'Forum'}}{{/if}} {{* @todo this needs some changing in core because $contact.account_type contains a translated string which may notbe the same in every language *}} @@ -124,11 +134,21 @@ We use this part to filter the contacts with jquery.textcomplete *}}

      -
      {{* @todo There is a bug with this class - the browser freezes if the screensize is to small - but only fith textcomplete*}} +
      + {{* The contact actions like private mail, delete contact, edit contact and so on *}} + + {{* The contact description (e.g. Name, Network, kind of connection and so on *}}
      -

      {$name} +

      {$name} {if $account_type} ({$account_type}){/if} {if $account_type == 'Forum'}{/if} {{* @todo this needs some changing in core because $contact.account_type contains a translated string which may notbe the same in every language *}} From b23a2531514973e5940105f8f7e85a95989800c8 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Wed, 1 Jun 2016 20:03:56 +0200 Subject: [PATCH 392/485] ShaShape font updated --- view/fonts/friendica_shashape.ttf | Bin 14200 -> 17272 bytes view/fonts/shashape.css | 62 ++++++++++++++++++++---------- view/fonts/shashape.jpg | Bin 399069 -> 386449 bytes 3 files changed, 41 insertions(+), 21 deletions(-) diff --git a/view/fonts/friendica_shashape.ttf b/view/fonts/friendica_shashape.ttf index 0bb5a577a06c650a9f2211e0d7f53c33d121c370..a70fa4ae12ce6b67a0d2356d8e02bb2824e3f13a 100644 GIT binary patch literal 17272 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 diff --git a/view/fonts/shashape.css b/view/fonts/shashape.css index 5f4494dde7..b1a0032314 100644 --- a/view/fonts/shashape.css +++ b/view/fonts/shashape.css @@ -62,10 +62,10 @@ .shashape.profile:before{ content: "p"; } -.shashape.skip:before{ +.shashape.profileneg:before{ content: "q"; } -.shashape.reload:before{ +.shashape.heard:before{ content: "r"; } .shashape.search:before{ @@ -74,9 +74,6 @@ .shashape.time:before{ content: "t"; } -.shashape.undo:before{ - content: "u"; -} .shashape.logout:before, .shashape.logged-in:before{ content: "v"; @@ -104,17 +101,16 @@ .shashape.nolike:before{ content: "C"; } -/* uppercase D is not defined at the moment - .shashape.hash:before{ +.shashape.grrrr:before{ content: "D"; -} */ +} .shashape.arrow7:before{ content: "E"; } .shashape.follow:before{ content: "F"; } -.shashape.follower:before{ +.shashape.retweet:before{ content: "G"; } .shashape.hand:before{ @@ -129,10 +125,9 @@ .shashape.arrow-updown:before{ content: "K"; } -/* uppercase L is not defined at the moment -.shashape.lock:before{ +.shashape.arrow-sideup:before{ content: "L"; -} */ +} .shashape.arrow-left:before{ content: "M"; } @@ -180,39 +175,64 @@ content: "#"; } .shashape.tag:before{ - content: "="; + content: "&"; } .shashape.lock-open:before{ - content: "?"; + content: "("; } .shashape.lock-closed:before{ content: ")"; } +.shashape.blank:before { + content: "_"; +} +.shashape.ellipsis:before { + content: "§"; +} +.shashape.ok.before, .shashape.yes:before{ content: "+"; } .shashape.hmm:before{ - content: ","; + content: "%"; } +.shashape.mark:before, .shashape.no:before{ content: "-"; } -.shashape.blank:before{ +.shashape.see:before{ content: "."; } -.shashape.see:before{ +.shashape.see2:before{ content: ":"; } -.shashape.blind:before{ +.shashape.see3:before{ content: ";"; } +.shashape.blind:before{ + content: ","; +} .shashape.edit:before{ content: "<"; } .shashape.stamp:before{ content: ">"; } -.shashape.heart:before{ - content: "_"; +.shashape.comment:before { + content: "*"; +} +.shashape.ask:before { + content: "?"; +} +.shashape.skip:before { + content: "{"; +} +.shashape.reload:before { + content: "["; +} +.shashape.reloadreverse:before { + content: "]"; +} +.shashape.undo:before { + content: "]"; } - diff --git a/view/fonts/shashape.jpg b/view/fonts/shashape.jpg index a4f20ce645d098fd2d01a8f08e56ecad7dda9f6a..6e0fff004db4761f1cdf0b22f8c0a2763717b7a2 100644 GIT binary patch literal 386449 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

      +4AZP1=17mjVE$Rp!{)_g}ge`)JX} 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

      mP(76q@6tMrWY%ou;cUq;?Y{E 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

      ;3X7fiF4Y$$aw6I56?Sm?F0wkDHesZMYMFUdJ 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

      6=?Jl0lLgc%Q7b3pN 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

        m2{=J$(ymB~VWJpeD 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

        >B5{C*Dt8mKBaP0vNl-i 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

        hOP&$5Ed@oaPgSVn~{ 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

        (quaHSW~8VZM-ma$kIEjAT}icBA}zF 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

        v=l<>Bxg`ZE13XP$w?!7{GYbH*1;%y_JAWBRm= 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 z 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 From 85a9c7d96e1435a932f7e986e53d520bb6a9bc02 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 1 Jun 2016 21:54:02 +0200 Subject: [PATCH 393/485] The poller now has the logging for processes as well. --- include/poller.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/poller.php b/include/poller.php index 3a28b177c3..714d4c537c 100644 --- a/include/poller.php +++ b/include/poller.php @@ -11,6 +11,7 @@ if (!file_exists("boot.php") AND (sizeof($_SERVER["argv"]) != 0)) { } require_once("boot.php"); +require_once("dbm.php"); function poller_run(&$argv, &$argc){ global $a, $db; @@ -26,6 +27,10 @@ function poller_run(&$argv, &$argc){ unset($db_host, $db_user, $db_pass, $db_data); }; + $processlist = dbm::processlist(); + if ($processlist != "") + logger("Processlist: ".$processlist, LOGGER_DEBUG); + if (poller_max_connections_reached()) return; @@ -59,6 +64,11 @@ function poller_run(&$argv, &$argc){ while ($r = q("SELECT * FROM `workerqueue` WHERE `executed` = '0000-00-00 00:00:00' ORDER BY `created` LIMIT 1")) { + // Log the type of database processes + $processlist = dbm::processlist(); + if ($processlist != "") + logger("Processlist: ".$processlist, LOGGER_DEBUG); + // Constantly check the number of available database connections to let the frontend be accessible at any time if (poller_max_connections_reached()) return; From 09e63e616aeed14d7a7514b03449454af5935d8a Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 1 Jun 2016 21:57:08 +0200 Subject: [PATCH 394/485] Shared content now has a surrounding div --- include/bbcode.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index bc30767770..73e8f8fee3 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -468,6 +468,7 @@ function bb_ShareAttributes($share, $simplehtml) { $text .= "


        "; $text .= $headline.'
        '.trim($share[3])."

        "; + $text .= "

      "; break; case 5: @@ -489,13 +490,16 @@ function bb_ShareAttributes($share, $simplehtml) { $text .= "

      ".$link; break; default: - $headline = trim($share[1]).'
      '; + $headline = trim($share[1])."\n"; + $headline .= '
      '."\n"; + $headline .= '
      '."\n"; if ($avatar != "") $headline .= ''; $headline .= sprintf(t('%s wrote the following post'.$reldate.':'), $profile, $author, $link); - $headline .= "
      "; - $text = $headline.'
      '.trim($share[3])."
      "; + $headline .= "
      \n"; + $text = $headline.'
      '.trim($share[3])."
      \n"; + $text .= "
      \n"; break; } return($text); From 46659f15d3ad5e3bb21b58afbdd09d24a5855ca9 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 1 Jun 2016 21:58:50 +0200 Subject: [PATCH 395/485] One div too much --- include/bbcode.php | 1 - 1 file changed, 1 deletion(-) diff --git a/include/bbcode.php b/include/bbcode.php index 73e8f8fee3..8ef144ea0f 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -468,7 +468,6 @@ function bb_ShareAttributes($share, $simplehtml) { $text .= "
      "; $text .= $headline.'
      '.trim($share[3])."

      "; - $text .= "
      "; break; case 5: From cd0d5d6a18ed84aa6c2b586bc3bf5ae5664bc843 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Thu, 2 Jun 2016 20:59:31 +0200 Subject: [PATCH 396/485] frio: remove js part for shared-content div because it's now done by core --- view/theme/frio/css/style.css | 6 +++--- view/theme/frio/js/theme.js | 16 ---------------- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 4d7e4e2cb8..6b5e840fb1 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1255,7 +1255,7 @@ section #jotOpen { max-height: 480px; object-fit: contain; } -.shared-content-wrapper, +.shared-wrapper, .vevent { margin-left: 50px; margin-right: 50px; @@ -1263,13 +1263,13 @@ section #jotOpen { box-shadow: 0 0 0 1.5px rgba(0, 0, 0, .1) inset, 0 1px 1px rgba(0, 0, 0, .05); } @media screen and (max-width: 767px) { - .shared-content-wrapper, + .shared-wrapper, .vevent { margin-left: 0px; margin-right: 0px; } } -.shared-content-wrapper:hover, +.shared-wrapper:hover, .vevent:hover { box-shadow: 0 0 0 1.5px rgba(0, 0, 0, .15) inset, 0 1px 1px rgba(0, 0, 0, .05); } diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js index 928b04551c..d7372704ed 100644 --- a/view/theme/frio/js/theme.js +++ b/view/theme/frio/js/theme.js @@ -68,22 +68,6 @@ $(document).ready(function(){ if( $("#jot-popup").is(":hidden")) $("#topbar-second > .container > #navbar-button #jotOpen").hide(); } - // move shared content in it's own DIV (so we can style it better) - $('.wall-item-body .shared_content').each(function() { - // create a DIV after ".shared_content" where we will putt in the shared_header - // and the "shared_content" - $(this).after('
      '); - // get the shared_header - var sheader = $(this).prev(); - // get the shared-content-wrapper which we have created above - var swrapper = $(this).next(); - // move the "shared_header into the new shared_content DIV - $(swrapper).append(sheader); - // move the "shared_content" into the new DIV - $(swrapper).append(this); - }); - - // show bulk deletion button at network page if checkbox is checked $('input.item-select').change(function(){ var checked = false; From 030f44b2feee482c29897eee164630eb62ab4434 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Thu, 2 Jun 2016 22:11:41 +0200 Subject: [PATCH 397/485] frio: give images in the networstream a little border-radius --- view/theme/frio/css/style.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 6b5e840fb1..a874ce6ae6 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1255,6 +1255,10 @@ section #jotOpen { max-height: 480px; object-fit: contain; } +.wall-item-body > img, +.wall-item-body > a > img { + border-radius: 3px; +} .shared-wrapper, .vevent { margin-left: 50px; From b53391a9750a1faf104f23ed06ad122116049d59 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Fri, 3 Jun 2016 18:55:57 +0200 Subject: [PATCH 398/485] frio: fix bulk deletion doesn't appear if post item was inserted by js --- view/theme/frio/js/theme.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js index d7372704ed..5138a4822d 100644 --- a/view/theme/frio/js/theme.js +++ b/view/theme/frio/js/theme.js @@ -69,7 +69,7 @@ $(document).ready(function(){ } // show bulk deletion button at network page if checkbox is checked - $('input.item-select').change(function(){ + $("body").change("input.item-select", function(){ var checked = false; // We need to get all checked items, so it would close the delete button From df337e57d130ceb370e5269f0052254c873b27a5 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 3 Jun 2016 23:10:23 +0200 Subject: [PATCH 399/485] Quit when processlist is too long --- include/dbm.php | 4 +++- include/poller.php | 14 ++++++++++---- index.php | 10 ++++++++-- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/include/dbm.php b/include/dbm.php index f68987c235..1e1c3706e0 100644 --- a/include/dbm.php +++ b/include/dbm.php @@ -15,12 +15,14 @@ class dbm { // updating $statelist = ""; + $processes = 0; foreach ($states AS $state => $usage) { if ($statelist != "") $statelist .= ", "; $statelist .= $state.": ".$usage; + ++$processes; } - return($statelist); + return(array("list" => $statelist, "amount" => $processes)); } } ?> diff --git a/include/poller.php b/include/poller.php index 714d4c537c..45dc332e17 100644 --- a/include/poller.php +++ b/include/poller.php @@ -28,8 +28,11 @@ function poller_run(&$argv, &$argc){ }; $processlist = dbm::processlist(); - if ($processlist != "") - logger("Processlist: ".$processlist, LOGGER_DEBUG); + if ($processlist["list"] != "") { + logger("Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); + if ($processlist["amount"] > 5) + return; + } if (poller_max_connections_reached()) return; @@ -66,8 +69,11 @@ function poller_run(&$argv, &$argc){ // Log the type of database processes $processlist = dbm::processlist(); - if ($processlist != "") - logger("Processlist: ".$processlist, LOGGER_DEBUG); + if ($processlist["amount"] != "") { + logger("Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); + if ($processlist["amount"] > 5) + return; + } // Constantly check the number of available database connections to let the frontend be accessible at any time if (poller_max_connections_reached()) diff --git a/index.php b/index.php index ec72771341..a25c6dc776 100644 --- a/index.php +++ b/index.php @@ -55,8 +55,14 @@ if(!$install) { load_config('system'); $processlist = dbm::processlist(); - if ($processlist != "") - logger("Processlist: ".$processlist, LOGGER_DEBUG); + if ($processlist["list"] != "") { + logger("Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); + + // More than 20 running database processes? + // The system is too busy, so quit. + if ($processlist["amount"] > 20) + system_unavailable(); + } $maxsysload_frontend = intval(get_config('system','maxloadavg_frontend')); if($maxsysload_frontend < 1) From b45772ba6e340ce400e9f94e986eeb90d10c23aa Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 4 Jun 2016 11:04:26 +0200 Subject: [PATCH 400/485] Configurable amount of maximum processes --- include/dbm.php | 7 ++++--- include/poller.php | 22 ++++++++++++++++++---- index.php | 23 ++++++++++++++--------- 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/include/dbm.php b/include/dbm.php index 1e1c3706e0..d588b2f76a 100644 --- a/include/dbm.php +++ b/include/dbm.php @@ -4,23 +4,24 @@ class dbm { $r = q("SHOW PROCESSLIST"); $s = array(); + $processes = 0; $states = array(); foreach ($r AS $process) { $state = trim($process["State"]); - if (!in_array($state, array("", "init", "statistics"))) + if (!in_array($state, array("", "init", "statistics"))) { ++$states[$state]; + ++$processes; + } } // query end // Sending data // updating $statelist = ""; - $processes = 0; foreach ($states AS $state => $usage) { if ($statelist != "") $statelist .= ", "; $statelist .= $state.": ".$usage; - ++$processes; } return(array("list" => $statelist, "amount" => $processes)); } diff --git a/include/poller.php b/include/poller.php index 45dc332e17..9e7080e642 100644 --- a/include/poller.php +++ b/include/poller.php @@ -29,9 +29,16 @@ function poller_run(&$argv, &$argc){ $processlist = dbm::processlist(); if ($processlist["list"] != "") { - logger("Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); - if ($processlist["amount"] > 5) + logger("Processcheck: Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); + + $max_processes = get_config('system', 'max_processes_backend'); + if (intval($max_processes) == 0) + $max_processes = 5; + + if ($processlist["amount"] > $max_processes) { + logger("Processcheck: Maximum number of processes for backend tasks (".$max_processes.") reached.", LOGGER_DEBUG); return; + } } if (poller_max_connections_reached()) @@ -70,9 +77,16 @@ function poller_run(&$argv, &$argc){ // Log the type of database processes $processlist = dbm::processlist(); if ($processlist["amount"] != "") { - logger("Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); - if ($processlist["amount"] > 5) + logger("Processcheck: Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); + + $max_processes = get_config('system', 'max_processes_backend'); + if (intval($max_processes) == 0) + $max_processes = 5; + + if ($processlist["amount"] > $max_processes) { + logger("Processcheck: Maximum number of processes for backend tasks (".$max_processes.") reached.", LOGGER_DEBUG); return; + } } // Constantly check the number of available database connections to let the frontend be accessible at any time diff --git a/index.php b/index.php index a25c6dc776..17258fd0ab 100644 --- a/index.php +++ b/index.php @@ -45,7 +45,7 @@ require_once("include/dbm.php"); if(!$install) { $db = new dba($db_host, $db_user, $db_pass, $db_data, $install); - unset($db_host, $db_user, $db_pass, $db_data); + unset($db_host, $db_user, $db_pass, $db_data); /** * Load configs from db. Overwrite configs from .htconfig.php @@ -56,12 +56,17 @@ if(!$install) { $processlist = dbm::processlist(); if ($processlist["list"] != "") { - logger("Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); - // More than 20 running database processes? - // The system is too busy, so quit. - if ($processlist["amount"] > 20) - system_unavailable(); + logger("Processcheck: Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); + + $max_processes = get_config('system', 'max_processes_frontend'); + if (intval($max_processes) == 0) + $max_processes = 20; + + if ($processlist["amount"] > $max_processes) { + logger("Processcheck: Maximum number of processes for frontend tasks (".$max_processes.") reached.", LOGGER_DEBUG); + return; + } } $maxsysload_frontend = intval(get_config('system','maxloadavg_frontend')); @@ -453,9 +458,9 @@ if($a->is_mobile || $a->is_tablet) { $link = 'toggle_mobile?off=1&address=' . curPageURL(); } $a->page['footer'] = replace_macros(get_markup_template("toggle_mobile_footer.tpl"), array( - '$toggle_link' => $link, - '$toggle_text' => t('toggle mobile') - )); + '$toggle_link' => $link, + '$toggle_text' => t('toggle mobile') + )); } /** From 0518f004c2f10d67a010944a7db6a815c4f22db1 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 4 Jun 2016 12:20:09 +0200 Subject: [PATCH 401/485] removed duplicated functions --- include/poller.php | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/include/poller.php b/include/poller.php index 9e7080e642..a391ea8c75 100644 --- a/include/poller.php +++ b/include/poller.php @@ -27,14 +27,14 @@ function poller_run(&$argv, &$argc){ unset($db_host, $db_user, $db_pass, $db_data); }; + $max_processes = get_config('system', 'max_processes_backend'); + if (intval($max_processes) == 0) + $max_processes = 5; + $processlist = dbm::processlist(); if ($processlist["list"] != "") { logger("Processcheck: Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); - $max_processes = get_config('system', 'max_processes_backend'); - if (intval($max_processes) == 0) - $max_processes = 5; - if ($processlist["amount"] > $max_processes) { logger("Processcheck: Maximum number of processes for backend tasks (".$max_processes.") reached.", LOGGER_DEBUG); return; @@ -79,10 +79,6 @@ function poller_run(&$argv, &$argc){ if ($processlist["amount"] != "") { logger("Processcheck: Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); - $max_processes = get_config('system', 'max_processes_backend'); - if (intval($max_processes) == 0) - $max_processes = 5; - if ($processlist["amount"] > $max_processes) { logger("Processcheck: Maximum number of processes for backend tasks (".$max_processes.") reached.", LOGGER_DEBUG); return; From e33defbe3e8e3933f81ab9f0e2086a4c41d403f3 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 4 Jun 2016 12:23:12 +0200 Subject: [PATCH 402/485] Added documentation --- doc/htconfig.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/htconfig.md b/doc/htconfig.md index 77e63671ab..4f4e34d07c 100644 --- a/doc/htconfig.md +++ b/doc/htconfig.md @@ -38,6 +38,8 @@ line to your .htconfig.php: * max_connections_level - The maximum level of connections that are allowed to let the poller start. It is a percentage value. Default value is 75. * max_contact_queue - Default value is 500. * max_batch_queue - Default value is 1000. +* max_processes_backend - Maximum number of concurrent database processes for background tasks. Default value is 5. +* max_processes_frontend'] - Maximum number of concurrent database processes for foreground tasks. Default value is 20. * no_oembed (Boolean) - Don't use OEmbed to fetch more information about a link. * no_oembed_rich_content (Boolean) - Don't show the rich content (e.g. embedded PDF). * no_smilies (Boolean) - Don't show smilies. From 5420c98ff0498d4a1616455a4b34d95dd56b26bd Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 4 Jun 2016 12:30:24 +0200 Subject: [PATCH 403/485] removed some copy&paste fragments --- doc/htconfig.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/htconfig.md b/doc/htconfig.md index 4f4e34d07c..2435da2baa 100644 --- a/doc/htconfig.md +++ b/doc/htconfig.md @@ -39,7 +39,7 @@ line to your .htconfig.php: * max_contact_queue - Default value is 500. * max_batch_queue - Default value is 1000. * max_processes_backend - Maximum number of concurrent database processes for background tasks. Default value is 5. -* max_processes_frontend'] - Maximum number of concurrent database processes for foreground tasks. Default value is 20. +* max_processes_frontend - Maximum number of concurrent database processes for foreground tasks. Default value is 20. * no_oembed (Boolean) - Don't use OEmbed to fetch more information about a link. * no_oembed_rich_content (Boolean) - Don't show the rich content (e.g. embedded PDF). * no_smilies (Boolean) - Don't show smilies. From a0b7a6684f92811279e11e36b562bdc6f59ca822 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Sat, 4 Jun 2016 18:44:20 +0200 Subject: [PATCH 404/485] Wild "+" in js/main.js --- js/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/main.js b/js/main.js index 9914c3801f..2d0b2da36a 100644 --- a/js/main.js +++ b/js/main.js @@ -512,8 +512,8 @@ /* autocomplete @nicknames */ $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl"); /* autocomplete bbcode */ - + $(".comment-edit-form textarea").bbco_autocomplete('bbcode'); - + $(".comment-edit-form textarea").bbco_autocomplete('bbcode'); + // setup videos, since VideoJS won't take care of any loaded via AJAX if(typeof videojs != 'undefined') videojs.autoSetup(); }); From 84e5276a3af1f377fadf54afb3967bb8a2e65a7b Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sun, 5 Jun 2016 09:56:53 +0200 Subject: [PATCH 405/485] frio: give the contact actions a little transition effect --- view/theme/frio/css/style.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index a874ce6ae6..07e680df92 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1716,6 +1716,11 @@ ul.viewcontact_wrapper > li { } .contact-wrapper a.contact-action-link { opacity: 0.1; + -webkit-transition: all 0.25s ease-in-out; + -moz-transition: all 0.25s ease-in-out; + -o-transition: all 0.25s ease-in-out; + -ms-transition: all 0.25s ease-in-out; + transition: all 0.25s ease-in-out; } .contact-wrapper a.contact-action-link, .contact-wrapper a.contact-action-link:hover, @@ -1726,6 +1731,11 @@ ul.viewcontact_wrapper > li { } ul li:hover .contact-wrapper a.contact-action-link { opacity: 0.8; + -webkit-transition: all 0.25s ease-in-out; + -moz-transition: all 0.25s ease-in-out; + -o-transition: all 0.25s ease-in-out; + -ms-transition: all 0.25s ease-in-out; + transition: all 0.25s ease-in-out; } ul li:hover .contact-wrapper a.contact-action-link:hover { opacity: 1; From 71d3274841530922cf27ad71a9907ba519284d37 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 5 Jun 2016 13:57:11 +0200 Subject: [PATCH 406/485] Unified contact data handling --- include/Contact.php | 96 +++++++++++++++++----------------------- include/conversation.php | 17 +++++-- mod/allfriends.php | 8 ++-- mod/common.php | 8 ++-- mod/content.php | 34 +++++++++----- mod/hovercard.php | 7 +-- mod/message.php | 2 +- mod/nogroup.php | 10 ++--- mod/suggest.php | 6 +-- mod/viewcontacts.php | 10 ++--- object/Item.php | 16 +++++-- 11 files changed, 113 insertions(+), 101 deletions(-) diff --git a/include/Contact.php b/include/Contact.php index 79a14ab581..30c86a3c7c 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -192,72 +192,58 @@ function unmark_for_death($contact) { ); }} -function get_contact_details_by_url($url, $uid = -1) { +function get_contact_details_by_url($url, $uid = -1, $default = array()) { if ($uid == -1) $uid = local_user(); - $r = q("SELECT `id` AS `gid`, `url`, `name`, `nick`, `addr`, `photo`, `location`, `about`, `keywords`, `gender`, `community`, `network` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1", - dbesc(normalise_link($url))); + // community, nurl, alias, nsfw, birthday - if ($r) { + // Fetch contact data from the contact table for the user and given network + $r = q("SELECT `id`, `id` AS `cid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, + `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd`, `bd` AS `birthday`, `self` + FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `network` IN ('%s', '')", + dbesc(normalise_link($url)), intval($uid), dbesc($profile["network"])); + + // Is the contact present for the user in a different network? (Can happen with OStatus and the "Statusnet" addon) + if (!count($r) AND !isset($profile)) + $r = q("SELECT `id`, `id` AS `cid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, + `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd`, `bd` AS `birthday`, `self` + FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d", + dbesc(normalise_link($url)), intval($uid)); + + // Fetch the data from the contact table with "uid=0" (which is filled automatically) + if (!count($r) AND !isset($profile)) + $r = q("SELECT `id`, 0 AS `cid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, + `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd`, `bd` AS `birthday`, 0 AS `self` + FROM `contact` WHERE `nurl` = '%s' AND `uid` = 0", + dbesc(normalise_link($url))); + + // Fetch the data from the gcontact table + if (!count($r) AND !isset($profile)) + $r = q("SELECT 0 AS `id`, 0 AS `cid`, `id` AS `gid`, 0 AS `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, + `keywords`, `gender`, `photo`, `photo` AS `thumb`, `community` AS `forum`, 0 AS `prv`, `community`, `birthday` AS `bd`, `birthday`, 0 AS `self` + FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1", + dbesc(normalise_link($url))); + + if ($r) $profile = $r[0]; - - if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND - in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) - proc_run('php',"include/update_gcontact.php", $profile["gid"]); + else { + $profile = $default; + if (!isset($profile["thumb"]) AND isset($profile["photo"])) + $profile["thumb"] = $profile["photo"]; } - // Fetching further contact data from the contact table - $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `thumb`, `addr`, `forum`, `prv`, `bd`, `self` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `network` IN ('%s', '')", - dbesc(normalise_link($url)), intval($uid), dbesc($profile["network"])); - - if (!count($r) AND !isset($profile)) - $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `thumb`, `addr`, `forum`, `prv`, `bd`, `self` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d", - dbesc(normalise_link($url)), intval($uid)); - - if (!count($r) AND !isset($profile)) - $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `thumb`, `addr`, `forum`, `prv`, `bd` FROM `contact` WHERE `nurl` = '%s' AND `uid` = 0", - dbesc(normalise_link($url))); - - if ($r) { - if (!isset($profile["url"]) AND $r[0]["url"]) - $profile["url"] = $r[0]["url"]; - if (!isset($profile["name"]) AND $r[0]["name"]) - $profile["name"] = $r[0]["name"]; - if (!isset($profile["nick"]) AND $r[0]["nick"]) - $profile["nick"] = $r[0]["nick"]; - if (!isset($profile["addr"]) AND $r[0]["addr"]) - $profile["addr"] = $r[0]["addr"]; - if ((!isset($profile["photo"]) OR $r[0]["self"]) AND $r[0]["photo"]) - $profile["photo"] = $r[0]["photo"]; - if (!isset($profile["location"]) AND $r[0]["location"]) - $profile["location"] = $r[0]["location"]; - if (!isset($profile["about"]) AND $r[0]["about"]) - $profile["about"] = $r[0]["about"]; - if (!isset($profile["keywords"]) AND $r[0]["keywords"]) - $profile["keywords"] = $r[0]["keywords"]; - if (!isset($profile["gender"]) AND $r[0]["gender"]) - $profile["gender"] = $r[0]["gender"]; - if (isset($r[0]["forum"]) OR isset($r[0]["prv"])) - $profile["community"] = ($r[0]["forum"] OR $r[0]["prv"]); - if (!isset($profile["network"]) AND $r[0]["network"]) - $profile["network"] = $r[0]["network"]; - if (!isset($profile["addr"]) AND $r[0]["addr"]) - $profile["addr"] = $r[0]["addr"]; - if (!isset($profile["bd"]) AND $r[0]["bd"]) - $profile["bd"] = $r[0]["bd"]; - if (isset($r[0]["thumb"])) - $profile["thumb"] = $r[0]["thumb"]; - if ($r[0]["uid"] == 0) - $profile["cid"] = 0; - else - $profile["cid"] = $r[0]["id"]; - } else - $profile["cid"] = 0; + if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND ($profile["gid"] != 0) AND + in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) { + proc_run('php',"include/update_gcontact.php", $profile["gid"]); + } + // Show contact details of Diaspora contacts only if connected if (($profile["cid"] == 0) AND ($profile["network"] == NETWORK_DIASPORA)) { $profile["location"] = ""; $profile["about"] = ""; + $profile["gender"] = ""; + $profile["birthday"] = "0000-00-00"; } return($profile); diff --git a/include/conversation.php b/include/conversation.php index d889ba0020..8bbd57dbbf 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -389,6 +389,7 @@ if(!function_exists('conversation')) { function conversation(&$a, $items, $mode, $update, $preview = false) { require_once('include/bbcode.php'); + require_once('include/Contact.php'); require_once('mod/proxy.php'); $ssl_state = ((local_user()) ? true : false); @@ -610,11 +611,19 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { else $profile_link = zrl($profile_link); - $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); - if(($normalised != 'mailbox') && (x($a->contacts[$normalised]))) - $profile_avatar = $a->contacts[$normalised]['thumb']; + // Don't rely on the author-avatar. It is better to use the data from the contact table + $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner); + if ($author_contact["thumb"]) + $profile_avatar = $author_contact["thumb"]; else - $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb'])); + $profile_avatar = $item['author-avatar']; + + // This was the old method. We leave it here at the moment + //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); + //if(($normalised != 'mailbox') && (x($a->contacts[$normalised]))) + // $profile_avatar = $a->contacts[$normalised]['thumb']; + //else + // $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb'])); $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); call_hooks('render_location',$locate); diff --git a/mod/allfriends.php b/mod/allfriends.php index 356a389b83..360b222b50 100644 --- a/mod/allfriends.php +++ b/mod/allfriends.php @@ -49,7 +49,7 @@ function allfriends_content(&$a) { foreach($r as $rr) { //get further details of the contact - $contact_details = get_contact_details_by_url($rr['url'], $uid); + $contact_details = get_contact_details_by_url($rr['url'], $uid, $rr); $photo_menu = ''; @@ -68,9 +68,9 @@ function allfriends_content(&$a) { $entry = array( 'url' => $rr['url'], 'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']), - 'name' => htmlentities($rr['name']), - 'thumb' => proxy_url($rr['photo'], false, PROXY_SIZE_THUMB), - 'img_hover' => htmlentities($rr['name']), + 'name' => htmlentities($contact_details['name']), + 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB), + 'img_hover' => htmlentities($contact_details['name']), 'details' => $contact_details['location'], 'tags' => $contact_details['keywords'], 'about' => $contact_details['about'], diff --git a/mod/common.php b/mod/common.php index 62a5185fed..9b2c69f6d7 100644 --- a/mod/common.php +++ b/mod/common.php @@ -109,14 +109,14 @@ function common_content(&$a) { $rr[id] = $rr[cid]; $photo_menu = ''; - $photo_menu = contact_photo_menu ($rr); + $photo_menu = contact_photo_menu($rr); $entry = array( 'url' => $rr['url'], 'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']), - 'name' => $rr['name'], - 'thumb' => proxy_url($rr['photo'], false, PROXY_SIZE_THUMB), - 'img_hover' => htmlentities($rr['name']), + 'name' => $contact_details['name'], + 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB), + 'img_hover' => htmlentities($contact_details['name']), 'details' => $contact_details['location'], 'tags' => $contact_details['keywords'], 'about' => $contact_details['about'], diff --git a/mod/content.php b/mod/content.php index 49cff74d2d..cecdfd0001 100644 --- a/mod/content.php +++ b/mod/content.php @@ -416,11 +416,18 @@ function render_content(&$a, $items, $mode, $update, $preview = false) { else $profile_link = zrl($profile_link); - $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); - if(($normalised != 'mailbox') && (x($a->contacts[$normalised]))) - $profile_avatar = $a->contacts[$normalised]['thumb']; + // Don't rely on the author-avatar. It is better to use the data from the contact table + $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner); + if ($author_contact["thumb"]) + $profile_avatar = $author_contact["thumb"]; else - $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb'])); + $profile_avatar = $item['author-avatar']; + + //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); + //if(($normalised != 'mailbox') && (x($a->contacts[$normalised]))) + // $profile_avatar = $a->contacts[$normalised]['thumb']; + //else + // $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb'])); $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); call_hooks('render_location',$locate); @@ -787,11 +794,18 @@ function render_content(&$a, $items, $mode, $update, $preview = false) { else $profile_link = zrl($profile_link); - $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); - if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) - $profile_avatar = $a->contacts[$normalised]['thumb']; + // Don't rely on the author-avatar. It is better to use the data from the contact table + $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner); + if ($author_contact["thumb"]) + $profile_avatar = $author_contact["thumb"]; else - $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar']) && $diff_author) ? $item['author-avatar'] : $thumb)); + $profile_avatar = $item['author-avatar']; + + //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); + //if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) + // $profile_avatar = $a->contacts[$normalised]['thumb']; + //else + // $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar']) && $diff_author) ? $item['author-avatar'] : $thumb)); $like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : ''); $dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : ''); @@ -805,9 +819,9 @@ function render_content(&$a, $items, $mode, $update, $preview = false) { $shiny = ""; if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0) - $shiny = 'shiny'; + $shiny = 'shiny'; - // + // localize_item($item); diff --git a/mod/hovercard.php b/mod/hovercard.php index f5c410e111..4a6619b788 100644 --- a/mod/hovercard.php +++ b/mod/hovercard.php @@ -48,11 +48,6 @@ function hovercard_content() { if($nurl) { // Search for contact data $contact = get_contact_details_by_url($nurl); - - // Get_contact_details_by_url() doesn't provide the nurl but we - // need it for the photo_menu, so we copy it to the contact array - if (!isset($contact["nurl"])) - $contact["nurl"] = $nurl; } if(!is_array($contact)) @@ -69,7 +64,7 @@ function hovercard_content() { 'name' => $contact["name"], 'nick' => $contact["nick"], 'addr' => (($contact["addr"] != "") ? $contact["addr"] : $contact["url"]), - 'thumb' => proxy_url($contact["photo"], false, PROXY_SIZE_THUMB), + 'thumb' => proxy_url($contact["thumb"], false, PROXY_SIZE_THUMB), 'url' => ($cid ? ("redir/".$cid) : zrl($contact["url"])), 'nurl' => $contact["nurl"], // We additionally store the nurl as identifier // 'alias' => $contact["alias"], diff --git a/mod/message.php b/mod/message.php index f0ab7d2ac9..b5c6c064dc 100644 --- a/mod/message.php +++ b/mod/message.php @@ -489,7 +489,7 @@ function message_content(&$a) { 'from_name' => $from_name_e, 'from_url' => $from_url, 'sparkle' => $sparkle, - 'from_photo' => $message['from-photo'], + 'from_photo' => proxy_url($message['from-photo'], false, PROXY_SIZE_THUMB), 'subject' => $subject_e, 'body' => $body_e, 'delete' => t('Delete message'), diff --git a/mod/nogroup.php b/mod/nogroup.php index 9f6e978433..2f0985c9db 100644 --- a/mod/nogroup.php +++ b/mod/nogroup.php @@ -35,18 +35,18 @@ function nogroup_content(&$a) { if(count($r)) { foreach($r as $rr) { - $contact_details = get_contact_details_by_url($rr['url'], local_user()); + $contact_details = get_contact_details_by_url($rr['url'], local_user(), $rr); $contacts[] = array( - 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'),$rr['name'],$rr['url']), + 'img_hover' => sprintf(t('Visit %s\'s profile [%s]'), $contact_details['name'], $rr['url']), 'edit_hover' => t('Edit contact'), 'photo_menu' => contact_photo_menu($rr), 'id' => $rr['id'], 'alt_text' => $alt_text, 'dir_icon' => $dir_icon, - 'thumb' => $rr['thumb'], - 'name' => $rr['name'], - 'username' => $rr['name'], + 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB), + 'name' => $contact_details['name'], + 'username' => $contact_details['name'], 'details' => $contact_details['location'], 'tags' => $contact_details['keywords'], 'about' => $contact_details['about'], diff --git a/mod/suggest.php b/mod/suggest.php index b73c2cd1b6..bb8823d9ec 100644 --- a/mod/suggest.php +++ b/mod/suggest.php @@ -81,14 +81,14 @@ function suggest_content(&$a) { $photo_menu = array(array(t("View Profile"), zrl($rr["url"]))); $photo_menu[] = array(t("Connect/Follow"), $connlnk); $photo_menu[] = array(t('Ignore/Hide'), $ignlnk); - $contact_details = get_contact_details_by_url($rr["url"], local_user()); + $contact_details = get_contact_details_by_url($rr["url"], local_user(), $rr); $entry = array( 'url' => zrl($rr['url']), 'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']), 'img_hover' => $rr['url'], - 'name' => $rr['name'], - 'thumb' => proxy_url($rr['photo'], false, PROXY_SIZE_THUMB), + 'name' => $contact_details['name'], + 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB), 'details' => $contact_details['location'], 'tags' => $contact_details['keywords'], 'about' => $contact_details['about'], diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php index 04520e0d93..2e36a3bd7a 100644 --- a/mod/viewcontacts.php +++ b/mod/viewcontacts.php @@ -90,15 +90,15 @@ function viewcontacts_content(&$a) { else $url = zrl($url); - $contact_details = get_contact_details_by_url($rr['url'], $a->profile['uid']); + $contact_details = get_contact_details_by_url($rr['url'], $a->profile['uid'], $rr); $contacts[] = array( 'id' => $rr['id'], - 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'), $rr['name'], $rr['url']), + 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'), $contact_details['name'], $rr['url']), 'photo_menu' => contact_photo_menu($rr), - 'thumb' => proxy_url($rr['thumb'], false, PROXY_SIZE_THUMB), - 'name' => htmlentities(substr($rr['name'],0,20)), - 'username' => htmlentities($rr['name']), + 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB), + 'name' => htmlentities(substr($contact_details['name'],0,20)), + 'username' => htmlentities($contact_details['name']), 'details' => $contact_details['location'], 'tags' => $contact_details['keywords'], 'about' => $contact_details['about'], diff --git a/object/Item.php b/object/Item.php index 59659cdaff..a27ff32f9c 100644 --- a/object/Item.php +++ b/object/Item.php @@ -150,11 +150,19 @@ class Item extends BaseObject { else $profile_link = zrl($profile_link); - $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); - if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) - $profile_avatar = $a->contacts[$normalised]['thumb']; + // Don't rely on the author-avatar. It is better to use the data from the contact table + $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner); + if ($author_contact["thumb"]) + $profile_avatar = $author_contact["thumb"]; else - $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->remove_baseurl($this->get_data_value('thumb'))); + $profile_avatar = $item['author-avatar']; + + // This was the old method. We leave it here at the moment + //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); + //if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) + // $profile_avatar = $a->contacts[$normalised]['thumb']; + //else + // $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->remove_baseurl($this->get_data_value('thumb'))); $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); call_hooks('render_location',$locate); From 572402224f37a7a17818fd2e31e62011b0d0a63b Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 5 Jun 2016 15:03:04 +0200 Subject: [PATCH 407/485] "bd" now always shows the upcoming birthday --- include/Contact.php | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/include/Contact.php b/include/Contact.php index 30c86a3c7c..d14d82e5fe 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -192,6 +192,17 @@ function unmark_for_death($contact) { ); }} +/** + * @brief Get contact data for a given profile link + * + * The function looks at several places (contact table and gcontact table) for the contact + * + * @param string $url The profile link + * @param int $uid User id + * @param array $default If not data was found take this data as default value + * + * @return array Contact data + */ function get_contact_details_by_url($url, $uid = -1, $default = array()) { if ($uid == -1) $uid = local_user(); @@ -221,7 +232,7 @@ function get_contact_details_by_url($url, $uid = -1, $default = array()) { // Fetch the data from the gcontact table if (!count($r) AND !isset($profile)) $r = q("SELECT 0 AS `id`, 0 AS `cid`, `id` AS `gid`, 0 AS `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, - `keywords`, `gender`, `photo`, `photo` AS `thumb`, `community` AS `forum`, 0 AS `prv`, `community`, `birthday` AS `bd`, `birthday`, 0 AS `self` + `keywords`, `gender`, `photo`, `photo` AS `thumb`, `community` AS `forum`, 0 AS `prv`, `community`, `birthday`, 0 AS `self` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1", dbesc(normalise_link($url))); @@ -233,11 +244,27 @@ function get_contact_details_by_url($url, $uid = -1, $default = array()) { $profile["thumb"] = $profile["photo"]; } - if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND ($profile["gid"] != 0) AND - in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) { - proc_run('php',"include/update_gcontact.php", $profile["gid"]); + if (isset($profile["birthday"]) AND !isset($profile["bd"])){ + $bd_timestamp = strtotime($profile["birthday"]); + $month = date("m", $bd_timestamp); + $day = date("d", $bd_timestamp); + + $current_timestamp = time(); + $current_year = date("Y", $current_timestamp); + $current_month = date("m", $current_timestamp); + $current_day = date("d", $current_timestamp); + + $profile["bd"] = $current_year."-".$month."-".$day; + $current = $current_year."-".$current_month."-".$current_day; + + if ($profile["bd"] < $current) + $profile["bd"] = (++$current_year)."-".$month."-".$day; } + if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND ($profile["gid"] != 0) AND + in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) + proc_run('php',"include/update_gcontact.php", $profile["gid"]); + // Show contact details of Diaspora contacts only if connected if (($profile["cid"] == 0) AND ($profile["network"] == NETWORK_DIASPORA)) { $profile["location"] = ""; From 98272fe386efa1562c31fa9457afdcca120f57ee Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 5 Jun 2016 15:09:40 +0200 Subject: [PATCH 408/485] Some better handling of "bd" and "birthday" --- include/Contact.php | 49 +++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/include/Contact.php b/include/Contact.php index d14d82e5fe..6297cdbe74 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -207,25 +207,23 @@ function get_contact_details_by_url($url, $uid = -1, $default = array()) { if ($uid == -1) $uid = local_user(); - // community, nurl, alias, nsfw, birthday - // Fetch contact data from the contact table for the user and given network $r = q("SELECT `id`, `id` AS `cid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, - `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd`, `bd` AS `birthday`, `self` + `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd` AS `birthday`, `self` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `network` IN ('%s', '')", dbesc(normalise_link($url)), intval($uid), dbesc($profile["network"])); // Is the contact present for the user in a different network? (Can happen with OStatus and the "Statusnet" addon) if (!count($r) AND !isset($profile)) $r = q("SELECT `id`, `id` AS `cid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, - `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd`, `bd` AS `birthday`, `self` + `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd` AS `birthday`, `self` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d", dbesc(normalise_link($url)), intval($uid)); // Fetch the data from the contact table with "uid=0" (which is filled automatically) if (!count($r) AND !isset($profile)) $r = q("SELECT `id`, 0 AS `cid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, - `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd`, `bd` AS `birthday`, 0 AS `self` + `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd` AS `birthday`, 0 AS `self` FROM `contact` WHERE `nurl` = '%s' AND `uid` = 0", dbesc(normalise_link($url))); @@ -236,31 +234,34 @@ function get_contact_details_by_url($url, $uid = -1, $default = array()) { FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1", dbesc(normalise_link($url))); - if ($r) + if ($r) { $profile = $r[0]; - else { + + // "bd" always contains the upcoming birthday of a contact. + // "birthday" might contain the birthday including the year of birth. + if ($profile["birthday"] != "0000-00-00") { + $bd_timestamp = strtotime($profile["birthday"]); + $month = date("m", $bd_timestamp); + $day = date("d", $bd_timestamp); + + $current_timestamp = time(); + $current_year = date("Y", $current_timestamp); + $current_month = date("m", $current_timestamp); + $current_day = date("d", $current_timestamp); + + $profile["bd"] = $current_year."-".$month."-".$day; + $current = $current_year."-".$current_month."-".$current_day; + + if ($profile["bd"] < $current) + $profile["bd"] = (++$current_year)."-".$month."-".$day; + } else + $profile["bd"] = "0000-00-00"; + } else { $profile = $default; if (!isset($profile["thumb"]) AND isset($profile["photo"])) $profile["thumb"] = $profile["photo"]; } - if (isset($profile["birthday"]) AND !isset($profile["bd"])){ - $bd_timestamp = strtotime($profile["birthday"]); - $month = date("m", $bd_timestamp); - $day = date("d", $bd_timestamp); - - $current_timestamp = time(); - $current_year = date("Y", $current_timestamp); - $current_month = date("m", $current_timestamp); - $current_day = date("d", $current_timestamp); - - $profile["bd"] = $current_year."-".$month."-".$day; - $current = $current_year."-".$current_month."-".$current_day; - - if ($profile["bd"] < $current) - $profile["bd"] = (++$current_year)."-".$month."-".$day; - } - if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND ($profile["gid"] != 0) AND in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) proc_run('php',"include/update_gcontact.php", $profile["gid"]); From 43b05500941eea72156358d062960f9337154761 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sun, 5 Jun 2016 17:12:13 +0200 Subject: [PATCH 409/485] frio: remove legacy transition css --- view/theme/frio/css/style.css | 8 -------- 1 file changed, 8 deletions(-) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 07e680df92..11f85ae93f 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1716,10 +1716,6 @@ ul.viewcontact_wrapper > li { } .contact-wrapper a.contact-action-link { opacity: 0.1; - -webkit-transition: all 0.25s ease-in-out; - -moz-transition: all 0.25s ease-in-out; - -o-transition: all 0.25s ease-in-out; - -ms-transition: all 0.25s ease-in-out; transition: all 0.25s ease-in-out; } .contact-wrapper a.contact-action-link, @@ -1731,10 +1727,6 @@ ul.viewcontact_wrapper > li { } ul li:hover .contact-wrapper a.contact-action-link { opacity: 0.8; - -webkit-transition: all 0.25s ease-in-out; - -moz-transition: all 0.25s ease-in-out; - -o-transition: all 0.25s ease-in-out; - -ms-transition: all 0.25s ease-in-out; transition: all 0.25s ease-in-out; } ul li:hover .contact-wrapper a.contact-action-link:hover { From ea3a6ec6eb35695c52ccfe475485f4d69ec5029c Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 5 Jun 2016 20:01:38 +0200 Subject: [PATCH 410/485] Some more cleanup and code removal. --- boot.php | 25 ------------ include/api.php | 2 - include/conversation.php | 86 +++++++++++++--------------------------- mod/content.php | 12 ------ object/Item.php | 7 ---- 5 files changed, 27 insertions(+), 105 deletions(-) diff --git a/boot.php b/boot.php index 8434d34c70..adfeeb415f 100644 --- a/boot.php +++ b/boot.php @@ -1896,31 +1896,6 @@ function is_site_admin() { return false; } - -function load_contact_links($uid) { - - $a = get_app(); - - $ret = array(); - - if(! $uid || x($a->contacts,'empty')) - return; - - $r = q("SELECT `id`,`network`,`url`,`thumb`, `rel` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `thumb` != ''", - intval($uid) - ); - if(count($r)) { - foreach($r as $rr){ - $url = normalise_link($rr['url']); - $ret[$url] = $rr; - } - } else - $ret['empty'] = true; - - $a->contacts = $ret; - return; -} - /** * @brief Returns querystring as string from a mapped array. * diff --git a/include/api.php b/include/api.php index 488e858445..f32dc97c6c 100644 --- a/include/api.php +++ b/include/api.php @@ -270,8 +270,6 @@ api_login($a); } - load_contact_links(api_user()); - logger('API call for ' . $a->user['username'] . ': ' . $a->query_string); logger('API parameters: ' . print_r($_REQUEST,true)); diff --git a/include/conversation.php b/include/conversation.php index 8bbd57dbbf..18bc94074f 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -495,8 +495,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { else $return_url = $_SESSION['return_url'] = $a->query_string; - load_contact_links(local_user()); - $cb = array('items' => $items, 'mode' => $mode, 'update' => $update, 'preview' => $preview); call_hooks('conversation_start',$cb); @@ -618,13 +616,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { else $profile_avatar = $item['author-avatar']; - // This was the old method. We leave it here at the moment - //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); - //if(($normalised != 'mailbox') && (x($a->contacts[$normalised]))) - // $profile_avatar = $a->contacts[$normalised]['thumb']; - //else - // $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb'])); - $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); call_hooks('render_location',$locate); @@ -821,15 +812,7 @@ function best_link_url($item,&$sparkle,$ssl_state = false) { $clean_url = normalise_link($item['author-link']); - if((local_user()) && (local_user() == $item['uid'])) { - if(isset($a->contacts) && x($a->contacts,$clean_url)) { - if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) { - $best_url = 'redir/'.$a->contacts[$clean_url]['id']; - $sparkle = true; - } else - $best_url = $a->contacts[$clean_url]['url']; - } - } elseif (local_user()) { + if (local_user()) { $r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' LIMIT 1", dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url))); if ($r) { @@ -854,11 +837,9 @@ function item_photo_menu($item){ $ssl_state = false; - if(local_user()) { + if(local_user()) $ssl_state = true; - if(! count($a->contacts)) - load_contact_links(local_user()); - } + $sub_link=""; $poke_link=""; $contact_url=""; @@ -866,6 +847,7 @@ function item_photo_menu($item){ $status_link=""; $photos_link=""; $posts_link=""; + $network = ""; if((local_user()) && local_user() == $item['uid'] && $item['parent'] == $item['id'] && (! $item['self'])) { $sub_link = 'javascript:dosubthread(' . $item['id'] . '); return false;'; @@ -876,46 +858,32 @@ function item_photo_menu($item){ if($profile_link === 'mailbox') $profile_link = ''; + $cid = 0; + $network = ""; + $rel = 0; + $r = q("SELECT `id`, `network`, `rel` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' LIMIT 1", + intval(local_user()), dbesc(normalise_link($item['author-link']))); + if ($r) { + $cid = $r[0]["id"]; + $network = $r[0]["network"]; + $rel = $r[0]["rel"]; + } + if($sparkle) { - $cid = intval(basename($profile_link)); - $status_link = $profile_link . "?url=status"; - $photos_link = $profile_link . "?url=photos"; - $profile_link = $profile_link . "?url=profile"; - $pm_url = 'message/new/' . $cid; + $status_link = $profile_link."?url=status"; + $photos_link = $profile_link."?url=photos"; + $profile_link = $profile_link."?url=profile"; $zurl = ''; - } - else { + } else $profile_link = zrl($profile_link); - if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) { - $cid = $item['contact-id']; - } else { - $r = q("SELECT `id`, `network` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' LIMIT 1", - intval(local_user()), dbesc(normalise_link($item['author-link']))); - if ($r) { - $cid = $r[0]["id"]; - if ($r[0]["network"] == NETWORK_DIASPORA) - $pm_url = 'message/new/' . $cid; - - } else - $cid = 0; - } - } - if(($cid) && (! $item['self'])) { - $poke_link = 'poke/?f=&c=' . $cid; - $contact_url = 'contacts/' . $cid; - $posts_link = 'contacts/' . $cid . '/posts'; - - $clean_url = normalise_link($item['author-link']); - - if((local_user()) && (local_user() == $item['uid'])) { - if(isset($a->contacts) && x($a->contacts,$clean_url)) { - if($a->contacts[$clean_url]['network'] === NETWORK_DIASPORA) { - $pm_url = 'message/new/' . $cid; - } - } - } + if($cid && !$item['self']) { + $poke_link = 'poke/?f=&c='.$cid; + $contact_url = 'contacts/'.$cid; + $posts_link = 'contacts/'.$cid.'/posts'; + if (in_array($network, array(NETWORK_DFRN, NETWORK_DIASPORA))) + $pm_url = 'message/new/'.$cid; } if (local_user()) { @@ -929,10 +897,10 @@ function item_photo_menu($item){ t("Send PM") => $pm_url ); - if ($a->contacts[$clean_url]['network'] === NETWORK_DFRN) + if ($network == NETWORK_DFRN) $menu[t("Poke")] = $poke_link; - if ((($cid == 0) OR ($a->contacts[$clean_url]['rel'] == CONTACT_IS_FOLLOWER)) AND + if ((($cid == 0) OR ($rel == CONTACT_IS_FOLLOWER)) AND in_array($item['network'], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA))) $menu[t("Connect/Follow")] = "follow?url=".urlencode($item['author-link']); } else diff --git a/mod/content.php b/mod/content.php index cecdfd0001..71ed927636 100644 --- a/mod/content.php +++ b/mod/content.php @@ -423,12 +423,6 @@ function render_content(&$a, $items, $mode, $update, $preview = false) { else $profile_avatar = $item['author-avatar']; - //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); - //if(($normalised != 'mailbox') && (x($a->contacts[$normalised]))) - // $profile_avatar = $a->contacts[$normalised]['thumb']; - //else - // $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb'])); - $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); call_hooks('render_location',$locate); @@ -801,12 +795,6 @@ function render_content(&$a, $items, $mode, $update, $preview = false) { else $profile_avatar = $item['author-avatar']; - //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); - //if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) - // $profile_avatar = $a->contacts[$normalised]['thumb']; - //else - // $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar']) && $diff_author) ? $item['author-avatar'] : $thumb)); - $like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : ''); $dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : ''); diff --git a/object/Item.php b/object/Item.php index a27ff32f9c..9dc35e82f1 100644 --- a/object/Item.php +++ b/object/Item.php @@ -157,13 +157,6 @@ class Item extends BaseObject { else $profile_avatar = $item['author-avatar']; - // This was the old method. We leave it here at the moment - //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); - //if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) - // $profile_avatar = $a->contacts[$normalised]['thumb']; - //else - // $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->remove_baseurl($this->get_data_value('thumb'))); - $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); call_hooks('render_location',$locate); $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_dummy($locate)); From 4b640dbd97b797bdf099b8b7e0492facb04086c9 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 5 Jun 2016 21:17:55 +0200 Subject: [PATCH 411/485] Fetching of profile data improved --- include/identity.php | 27 ++++++++------ mod/display.php | 62 +++---------------------------- object/Item.php | 2 +- view/templates/diaspora_vcard.tpl | 3 +- 4 files changed, 23 insertions(+), 71 deletions(-) diff --git a/include/identity.php b/include/identity.php index 580539c071..48a6c5bbf7 100644 --- a/include/identity.php +++ b/include/identity.php @@ -345,18 +345,21 @@ function profile_sidebar($profile, $block = 0) { ? trim(substr($profile['name'],0,strpos($profile['name'],' '))) : $profile['name']); $lastname = (($firstname === $profile['name']) ? '' : trim(substr($profile['name'],strlen($firstname)))); - $diaspora = array( - 'guid' => $profile['guid'], - 'podloc' => $a->get_baseurl(), - 'searchable' => (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false' ), - 'nickname' => $profile['nickname'], - 'fullname' => $profile['name'], - 'firstname' => $firstname, - 'lastname' => $lastname, - 'photo300' => $a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg', - 'photo100' => $a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg', - 'photo50' => $a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg', - ); + if ($profile['guid'] != "") + $diaspora = array( + 'guid' => $profile['guid'], + 'podloc' => $a->get_baseurl(), + 'searchable' => (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false' ), + 'nickname' => $profile['nickname'], + 'fullname' => $profile['name'], + 'firstname' => $firstname, + 'lastname' => $lastname, + 'photo300' => $a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg', + 'photo100' => $a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg', + 'photo50' => $a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg', + ); + else + $diaspora = false; if (!$block){ $contact_block = contact_block(); diff --git a/mod/display.php b/mod/display.php index 21fff7866c..949ba5ab46 100644 --- a/mod/display.php +++ b/mod/display.php @@ -112,6 +112,8 @@ function display_init(&$a) { function display_fetchauthor($a, $item) { + require_once("include/Contact.php"); + $profiledata = array(); $profiledata["uid"] = -1; $profiledata["nickname"] = $item["author-name"]; @@ -176,61 +178,9 @@ function display_fetchauthor($a, $item) { $profiledata["about"] = ""; } - // Don't show details from Diaspora contacts if you don't follow the contact - $showdetails = ($profiledata["network"] != NETWORK_DIASPORA); + $profiledata = get_contact_details_by_url($profiledata["url"], local_user(), $profiledata); - // Fetching further contact data from the contact table - $r = q("SELECT `uid`, `network`, `name`, `photo`, `nick`, `addr`, `location`, `about`, `gender`, `keywords` - FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `network` = '%s' AND `rel` IN (%d, %d)", - dbesc(normalise_link($profiledata["url"])), intval(local_user()), dbesc($item["network"]), - intval(CONTACT_IS_SHARING), intval(CONTACT_IS_FRIEND)); - if (!count($r)) - $r = q("SELECT `uid`, `network`, `name`, `photo`, `nick`, `addr`, `location`, `about`, `gender`, `keywords` - FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `rel` IN (%d, %d)", - dbesc(normalise_link($profiledata["url"])), intval(local_user()), - intval(CONTACT_IS_SHARING), intval(CONTACT_IS_FRIEND)); - - if (count($r)) { - $profiledata["name"] = $r[0]["name"]; - $profiledata["photo"] = $r[0]["photo"]; - $profiledata["nickname"] = $r[0]["nick"]; - $profiledata["addr"] = $r[0]["addr"]; - $profiledata["keywords"] = $r[0]["keywords"]; - $profiledata["network"] = $r[0]["network"]; - - if (local_user() OR $showdetails) { - $showdetails = true; - $profiledata["address"] = $r[0]["location"]; - $profiledata["about"] = $r[0]["about"]; - $profiledata["gender"] = $r[0]["gender"]; - } - } - - // Fetching profile data from global contacts - if ($profiledata["network"] != NETWORK_FEED) { - $r = q("SELECT `name`, `photo`, `nick`, `addr`, `location`, `about`, `gender`, `keywords`, `network` FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($profiledata["url"]))); - if (count($r)) { - $profiledata["name"] = $r[0]["name"]; - $profiledata["photo"] = $r[0]["photo"]; - $profiledata["nickname"] = $r[0]["nick"]; - $profiledata["addr"] = $r[0]["addr"]; - $profiledata["network"] = $r[0]["network"]; - - if ($r[0]["keywords"]) - $profiledata["keywords"] = $r[0]["keywords"]; - - if ($showdetails) { - if ($r[0]["location"]) - $profiledata["address"] = $r[0]["location"]; - - if ($r[0]["about"]) - $profiledata["about"] = $r[0]["about"]; - - if ($r[0]["gender"]) - $profiledata["gender"] = $r[0]["gender"]; - } - } - } + $profiledata["photo"] = App::remove_baseurl($profiledata["photo"]); if (local_user()) { if (in_array($profiledata["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) @@ -482,9 +432,7 @@ function display_content(&$a, $update = 0) { $title = trim(html2plain(bbcode($r[0]["title"], false, false), 0, true)); $author_name = $r[0]["author-name"]; - $image = ""; - if ($image == "") - $image = $r[0]["thumb"]; + $image = $a->remove_baseurl($r[0]["thumb"]); if ($title == "") $title = $author_name; diff --git a/object/Item.php b/object/Item.php index 9dc35e82f1..a907ff228a 100644 --- a/object/Item.php +++ b/object/Item.php @@ -364,7 +364,7 @@ class Item extends BaseObject { 'profile_url' => $profile_link, 'item_photo_menu' => item_photo_menu($item), 'name' => $name_e, - 'thumb' => proxy_url($profile_avatar, false, PROXY_SIZE_THUMB), + 'thumb' => $a->remove_baseurl(proxy_url($profile_avatar, false, PROXY_SIZE_THUMB)), 'osparkle' => $osparkle, 'sparkle' => $sparkle, 'title' => $title_e, diff --git a/view/templates/diaspora_vcard.tpl b/view/templates/diaspora_vcard.tpl index 58419bd13d..45b9fa4ff7 100644 --- a/view/templates/diaspora_vcard.tpl +++ b/view/templates/diaspora_vcard.tpl @@ -1,4 +1,4 @@ - +{{if $diaspora}}
      Uid
      @@ -61,3 +61,4 @@
      +{{/if}} From 3e7e866e133405c3ae3047c429611a39984c81d3 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 5 Jun 2016 21:22:14 +0200 Subject: [PATCH 412/485] Baseurl removed --- include/conversation.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/conversation.php b/include/conversation.php index 18bc94074f..38f6e76862 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -682,7 +682,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'name' => $profile_name_e, 'sparkle' => $sparkle, 'lock' => $lock, - 'thumb' => proxy_url($profile_avatar, false, PROXY_SIZE_THUMB), + 'thumb' => App::remove_baseurl(proxy_url($profile_avatar, false, PROXY_SIZE_THUMB)), 'title' => $item['title_e'], 'body' => $body_e, 'tags' => $tags_e, From 8fbcba00964632b8d8cb117eb8a73510c4f1014a Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 5 Jun 2016 22:21:34 +0200 Subject: [PATCH 413/485] The local contact search now uses local data if present --- mod/dirfind.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mod/dirfind.php b/mod/dirfind.php index 106c4c76a6..0d89f56f82 100644 --- a/mod/dirfind.php +++ b/mod/dirfind.php @@ -133,6 +133,8 @@ function dirfind_content(&$a, $prefix = "") { if (poco_alternate_ostatus_url($result["url"])) continue; + $result = get_contact_details_by_url($result["url"], local_user(), $result); + if ($result["name"] == "") { $urlparts = parse_url($result["url"]); $result["name"] = end(explode("/", $urlparts["path"])); From 3d27ebcb341dd2c1ed8613469362937c51727d5e Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 6 Jun 2016 06:29:03 +0200 Subject: [PATCH 414/485] Added documentation --- include/dbm.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/include/dbm.php b/include/dbm.php index d588b2f76a..3f936947d8 100644 --- a/include/dbm.php +++ b/include/dbm.php @@ -1,5 +1,16 @@ List of processes, separated in their different states + * 'amount' => Number of concurrent database processes + */ public static function processlist() { $r = q("SHOW PROCESSLIST"); $s = array(); @@ -8,14 +19,13 @@ class dbm { $states = array(); foreach ($r AS $process) { $state = trim($process["State"]); + + // Filter out all idle processes if (!in_array($state, array("", "init", "statistics"))) { ++$states[$state]; ++$processes; } } - // query end - // Sending data - // updating $statelist = ""; foreach ($states AS $state => $usage) { From 5f081cc47bbdf45663ce43d109fb1d5863afe74f Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Mon, 6 Jun 2016 10:01:14 +0200 Subject: [PATCH 415/485] add doxygen to config functions --- include/config.php | 201 ++++++++++++++++++++++++++++++++------------- 1 file changed, 144 insertions(+), 57 deletions(-) diff --git a/include/config.php b/include/config.php index b27274e9a9..0b404f0828 100644 --- a/include/config.php +++ b/include/config.php @@ -1,8 +1,9 @@ config + * + * @param string $family + * The category of the configuration value + * @return void + */ function load_config($family) { global $a; @@ -33,17 +40,27 @@ function load_config($family) { // Negative caching $a->config[$family] = "!!"; } -}} +} -// get a particular config variable given the family name -// and key. Returns false if not set. -// $instore is only used by the set_config function -// to determine if the key already exists in the DB -// If a key is found in the DB but doesn't exist in -// local config cache, pull it into the cache so we don't have -// to hit the DB again for this item. - -if(! function_exists('get_config')) { +/** + * @brief Get a particular user's config variable given the category name + * ($family) and a key. + * + * Get a particular config value from the given category ($family) + * and the $key from a cached storage in $a->config[$uid]. + * $instore is only used by the set_config function + * to determine if the key already exists in the DB + * If a key is found in the DB but doesn't exist in + * local config cache, pull it into the cache so we don't have + * to hit the DB again for this item. + * + * @param string $family + * The category of the configuration value + * @param string $key + * The configuration key to query + * @param boolean $instore Determines if the key already exists in the DB + * @return mixed Stored value or false if it does not exist + */ function get_config($family, $key, $instore = false) { global $a; @@ -114,13 +131,24 @@ function get_config($family, $key, $instore = false) { xcache_set($family."|".$key, '!!', 600);*/ } return false; -}} +} -// Store a config value ($value) in the category ($family) -// under the key ($key) -// Return the value, or false if the database update failed - -if(! function_exists('set_config')) { +/** + * @brief Sets a configuration value for system config + * + * Stores a config value ($value) in the category ($family) under the key ($key) + * for the user_id $uid. + * + * Note: Please do not store booleans - convert to 0/1 integer values! + * + * @param string $family + * The category of the configuration value + * @param string $key + * The configuration key to set + * @param string $value + * The value to store + * @return mixed Stored $value or false if the database update failed + */ function set_config($family,$key,$value) { global $a; @@ -164,10 +192,50 @@ function set_config($family,$key,$value) { if($ret) return $value; return $ret; -}} +} +/** + * @brief Deletes the given key from the system configuration. + * + * Removes the configured value from the stored cache in $a->config + * and removes it from the database. + * + * @param string $family + * The category of the configuration value + * @param string $key + * The configuration key to delete + * @return mixed + */ +function del_config($family,$key) { -if(! function_exists('load_pconfig')) { + global $a; + if(x($a->config[$family],$key)) + unset($a->config[$family][$key]); + $ret = q("DELETE FROM `config` WHERE `cat` = '%s' AND `k` = '%s'", + dbesc($family), + dbesc($key) + ); + // If APC is enabled then delete the data from there, else try XCache + /*if (function_exists("apc_delete")) + apc_delete($family."|".$key); + elseif (function_exists("xcache_unset")) + xcache_unset($family."|".$key);*/ + + return $ret; +} + +/** + * @brief Loads all configuration values of a user's config family into a cached storage. + * + * All configuration values of the given user are stored in global cache + * which is available under the global variable $a->config[$uid]. + * + * @param string $uid + * The user_id + * @param string $family + * The category of the configuration value + * @return void + */ function load_pconfig($uid,$family) { global $a; $r = q("SELECT `v`,`k` FROM `pconfig` WHERE `cat` = '%s' AND `uid` = %d", @@ -183,11 +251,25 @@ function load_pconfig($uid,$family) { // Negative caching $a->config[$uid][$family] = "!!"; } -}} +} - - -if(! function_exists('get_pconfig')) { +/** + * @brief Get a particular user's config variable given the category name + * ($family) and a key. + * + * Get a particular user's config value from the given category ($family) + * and the $key from a cached storage in $a->config[$uid]. + * + * @param string $uid + * The user_id + * @param string $family + * The category of the configuration value + * @param string $key + * The configuration key to query + * @param boolean $instore + * Determines if the key already exists in the DB + * @return mixed Stored value or false if it does not exist + */ function get_pconfig($uid,$family, $key, $instore = false) { global $a; @@ -259,33 +341,26 @@ function get_pconfig($uid,$family, $key, $instore = false) { xcache_set($uid."|".$family."|".$key, '!!', 600);*/ } return false; -}} +} -if(! function_exists('del_config')) { -function del_config($family,$key) { - - global $a; - if(x($a->config[$family],$key)) - unset($a->config[$family][$key]); - $ret = q("DELETE FROM `config` WHERE `cat` = '%s' AND `k` = '%s'", - dbesc($family), - dbesc($key) - ); - // If APC is enabled then delete the data from there, else try XCache - /*if (function_exists("apc_delete")) - apc_delete($family."|".$key); - elseif (function_exists("xcache_unset")) - xcache_unset($family."|".$key);*/ - - return $ret; -}} - - - -// Same as above functions except these are for personal config storage and take an -// additional $uid argument. - -if(! function_exists('set_pconfig')) { +/** + * @brief Sets a configuration value for a user + * + * Stores a config value ($value) in the category ($family) under the key ($key) + * for the user_id $uid. + * + * @note Please do not store booleans - convert to 0/1 integer values! + * + * @param string $uid + * The user_id + * @param string $family + * The category of the configuration value + * @param string $key + * The configuration key to set + * @param string $value + * The value to store + * @return mixed Stored $value or false + */ function set_pconfig($uid,$family,$key,$value) { global $a; @@ -324,9 +399,21 @@ function set_pconfig($uid,$family,$key,$value) { if($ret) return $value; return $ret; -}} +} -if(! function_exists('del_pconfig')) { +/** + * @brief Deletes the given key from the users's configuration. + * + * Removes the configured value from the stored cache in $a->config[$uid] + * and removes it from the database. + * + * @param string $uid The user_id + * @param string $family + * The category of the configuration value + * @param string $key + * The configuration key to delete + * @return mixed + */ function del_pconfig($uid,$family,$key) { global $a; @@ -338,4 +425,4 @@ function del_pconfig($uid,$family,$key) { dbesc($key) ); return $ret; -}} +} From f10011c282b953c1ee9d4138d10a69470f6ffa21 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Mon, 6 Jun 2016 10:22:14 +0200 Subject: [PATCH 416/485] move pconfig to it's own class PConfig --- include/PConfig.php | 216 ++++++++++++++++++++++++++++++++++++++++++++ include/config.php | 159 +++----------------------------- 2 files changed, 230 insertions(+), 145 deletions(-) create mode 100644 include/PConfig.php diff --git a/include/PConfig.php b/include/PConfig.php new file mode 100644 index 0000000000..d8d6e58f3f --- /dev/null +++ b/include/PConfig.php @@ -0,0 +1,216 @@ +config[$uid]. + * + * @param string $uid + * The user_id + * @param string $family + * The category of the configuration value + * @return void + */ + public static function load($uid,$family) { + global $a; + $r = q("SELECT `v`,`k` FROM `pconfig` WHERE `cat` = '%s' AND `uid` = %d", + dbesc($family), + intval($uid) + ); + if(count($r)) { + foreach($r as $rr) { + $k = $rr['k']; + $a->config[$uid][$family][$k] = $rr['v']; + } + } else if ($family != 'config') { + // Negative caching + $a->config[$uid][$family] = "!!"; + } + } + + /** + * @brief Get a particular user's config variable given the category name + * ($family) and a key. + * + * Get a particular user's config value from the given category ($family) + * and the $key from a cached storage in $a->config[$uid]. + * + * @param string $uid + * The user_id + * @param string $family + * The category of the configuration value + * @param string $key + * The configuration key to query + * @param boolean $instore + * Determines if the key already exists in the DB + * @return mixed Stored value or false if it does not exist + */ + public static function get($uid,$family, $key, $instore = false) { + + global $a; + + if(! $instore) { + // Looking if the whole family isn't set + if(isset($a->config[$uid][$family])) { + if($a->config[$uid][$family] === '!!') { + return false; + } + } + + if(isset($a->config[$uid][$family][$key])) { + if($a->config[$uid][$family][$key] === '!!') { + return false; + } + return $a->config[$uid][$family][$key]; + } + } + + // If APC is enabled then fetch the data from there, else try XCache + /*if (function_exists("apc_fetch") AND function_exists("apc_exists")) + if (apc_exists($uid."|".$family."|".$key)) { + $val = apc_fetch($uid."|".$family."|".$key); + $a->config[$uid][$family][$key] = $val; + + if ($val === '!!') + return false; + else + return $val; + } + elseif (function_exists("xcache_get") AND function_exists("xcache_isset")) + if (xcache_isset($uid."|".$family."|".$key)) { + $val = xcache_get($uid."|".$family."|".$key); + $a->config[$uid][$family][$key] = $val; + + if ($val === '!!') + return false; + else + return $val; + }*/ + + + $ret = q("SELECT `v` FROM `pconfig` WHERE `uid` = %d AND `cat` = '%s' AND `k` = '%s' LIMIT 1", + intval($uid), + dbesc($family), + dbesc($key) + ); + + if(count($ret)) { + $val = (preg_match("|^a:[0-9]+:{.*}$|s", $ret[0]['v'])?unserialize( $ret[0]['v']):$ret[0]['v']); + $a->config[$uid][$family][$key] = $val; + + // If APC is enabled then store the data there, else try XCache + /*if (function_exists("apc_store")) + apc_store($uid."|".$family."|".$key, $val, 600); + elseif (function_exists("xcache_set")) + xcache_set($uid."|".$family."|".$key, $val, 600);*/ + + return $val; + } + else { + $a->config[$uid][$family][$key] = '!!'; + + // If APC is enabled then store the data there, else try XCache + /*if (function_exists("apc_store")) + apc_store($uid."|".$family."|".$key, '!!', 600); + elseif (function_exists("xcache_set")) + xcache_set($uid."|".$family."|".$key, '!!', 600);*/ + } + return false; + } + + /** + * @brief Sets a configuration value for a user + * + * Stores a config value ($value) in the category ($family) under the key ($key) + * for the user_id $uid. + * + * @note Please do not store booleans - convert to 0/1 integer values! + * + * @param string $uid + * The user_id + * @param string $family + * The category of the configuration value + * @param string $key + * The configuration key to set + * @param string $value + * The value to store + * @return mixed Stored $value or false + */ + public static function set($uid,$family,$key,$value) { + + global $a; + + // manage array value + $dbvalue = (is_array($value)?serialize($value):$value); + + if(get_pconfig($uid,$family,$key,true) === false) { + $a->config[$uid][$family][$key] = $value; + $ret = q("INSERT INTO `pconfig` ( `uid`, `cat`, `k`, `v` ) VALUES ( %d, '%s', '%s', '%s' ) ", + intval($uid), + dbesc($family), + dbesc($key), + dbesc($dbvalue) + ); + if($ret) + return $value; + return $ret; + } + $ret = q("UPDATE `pconfig` SET `v` = '%s' WHERE `uid` = %d AND `cat` = '%s' AND `k` = '%s'", + dbesc($dbvalue), + intval($uid), + dbesc($family), + dbesc($key) + ); + + $a->config[$uid][$family][$key] = $value; + + // If APC is enabled then store the data there, else try XCache + /*if (function_exists("apc_store")) + apc_store($uid."|".$family."|".$key, $value, 600); + elseif (function_exists("xcache_set")) + xcache_set($uid."|".$family."|".$key, $value, 600);*/ + + + if($ret) + return $value; + return $ret; + } + + /** + * @brief Deletes the given key from the users's configuration. + * + * Removes the configured value from the stored cache in $a->config[$uid] + * and removes it from the database. + * + * @param string $uid The user_id + * @param string $family + * The category of the configuration value + * @param string $key + * The configuration key to delete + * @return mixed + */ + public static function del($uid,$family,$key) { + + global $a; + if(x($a->config[$uid][$family],$key)) + unset($a->config[$uid][$family][$key]); + $ret = q("DELETE FROM `pconfig` WHERE `uid` = %d AND `cat` = '%s' AND `k` = '%s'", + intval($uid), + dbesc($family), + dbesc($key) + ); + return $ret; + } +} diff --git a/include/config.php b/include/config.php index 0b404f0828..db6c72ee6c 100644 --- a/include/config.php +++ b/include/config.php @@ -1,5 +1,7 @@ config[$uid]. + * Note: This function is deprecated. Use PConfig::load() instead. * * @param string $uid * The user_id @@ -237,28 +238,14 @@ function del_config($family,$key) { * @return void */ function load_pconfig($uid,$family) { - global $a; - $r = q("SELECT `v`,`k` FROM `pconfig` WHERE `cat` = '%s' AND `uid` = %d", - dbesc($family), - intval($uid) - ); - if(count($r)) { - foreach($r as $rr) { - $k = $rr['k']; - $a->config[$uid][$family][$k] = $rr['v']; - } - } else if ($family != 'config') { - // Negative caching - $a->config[$uid][$family] = "!!"; - } + return PConfig::load($uid, $family); } /** - * @brief Get a particular user's config variable given the category name + * @brief (Deprecated) Get a particular user's config variable given the category name * ($family) and a key. * - * Get a particular user's config value from the given category ($family) - * and the $key from a cached storage in $a->config[$uid]. + * Note: This function is deprecated. Use PConfig::get() instead. * * @param string $uid * The user_id @@ -271,85 +258,13 @@ function load_pconfig($uid,$family) { * @return mixed Stored value or false if it does not exist */ function get_pconfig($uid,$family, $key, $instore = false) { - - global $a; - - if(! $instore) { - // Looking if the whole family isn't set - if(isset($a->config[$uid][$family])) { - if($a->config[$uid][$family] === '!!') { - return false; - } - } - - if(isset($a->config[$uid][$family][$key])) { - if($a->config[$uid][$family][$key] === '!!') { - return false; - } - return $a->config[$uid][$family][$key]; - } - } - - // If APC is enabled then fetch the data from there, else try XCache - /*if (function_exists("apc_fetch") AND function_exists("apc_exists")) - if (apc_exists($uid."|".$family."|".$key)) { - $val = apc_fetch($uid."|".$family."|".$key); - $a->config[$uid][$family][$key] = $val; - - if ($val === '!!') - return false; - else - return $val; - } - elseif (function_exists("xcache_get") AND function_exists("xcache_isset")) - if (xcache_isset($uid."|".$family."|".$key)) { - $val = xcache_get($uid."|".$family."|".$key); - $a->config[$uid][$family][$key] = $val; - - if ($val === '!!') - return false; - else - return $val; - }*/ - - - $ret = q("SELECT `v` FROM `pconfig` WHERE `uid` = %d AND `cat` = '%s' AND `k` = '%s' LIMIT 1", - intval($uid), - dbesc($family), - dbesc($key) - ); - - if(count($ret)) { - $val = (preg_match("|^a:[0-9]+:{.*}$|s", $ret[0]['v'])?unserialize( $ret[0]['v']):$ret[0]['v']); - $a->config[$uid][$family][$key] = $val; - - // If APC is enabled then store the data there, else try XCache - /*if (function_exists("apc_store")) - apc_store($uid."|".$family."|".$key, $val, 600); - elseif (function_exists("xcache_set")) - xcache_set($uid."|".$family."|".$key, $val, 600);*/ - - return $val; - } - else { - $a->config[$uid][$family][$key] = '!!'; - - // If APC is enabled then store the data there, else try XCache - /*if (function_exists("apc_store")) - apc_store($uid."|".$family."|".$key, '!!', 600); - elseif (function_exists("xcache_set")) - xcache_set($uid."|".$family."|".$key, '!!', 600);*/ - } - return false; + return PConfig::get($uid, $family, $key, $instore); } /** - * @brief Sets a configuration value for a user + * @brief (Deprecated) Sets a configuration value for a user * - * Stores a config value ($value) in the category ($family) under the key ($key) - * for the user_id $uid. - * - * @note Please do not store booleans - convert to 0/1 integer values! + * Note: This function is deprecated. Use PConfig::set() instead. * * @param string $uid * The user_id @@ -362,50 +277,13 @@ function get_pconfig($uid,$family, $key, $instore = false) { * @return mixed Stored $value or false */ function set_pconfig($uid,$family,$key,$value) { - - global $a; - - // manage array value - $dbvalue = (is_array($value)?serialize($value):$value); - - if(get_pconfig($uid,$family,$key,true) === false) { - $a->config[$uid][$family][$key] = $value; - $ret = q("INSERT INTO `pconfig` ( `uid`, `cat`, `k`, `v` ) VALUES ( %d, '%s', '%s', '%s' ) ", - intval($uid), - dbesc($family), - dbesc($key), - dbesc($dbvalue) - ); - if($ret) - return $value; - return $ret; - } - $ret = q("UPDATE `pconfig` SET `v` = '%s' WHERE `uid` = %d AND `cat` = '%s' AND `k` = '%s'", - dbesc($dbvalue), - intval($uid), - dbesc($family), - dbesc($key) - ); - - $a->config[$uid][$family][$key] = $value; - - // If APC is enabled then store the data there, else try XCache - /*if (function_exists("apc_store")) - apc_store($uid."|".$family."|".$key, $value, 600); - elseif (function_exists("xcache_set")) - xcache_set($uid."|".$family."|".$key, $value, 600);*/ - - - if($ret) - return $value; - return $ret; + return PConfig::set($uid, $family, $key, $value); } /** - * @brief Deletes the given key from the users's configuration. + * @brief (Deprecated) Deletes the given key from the users's configuration. * - * Removes the configured value from the stored cache in $a->config[$uid] - * and removes it from the database. + * Note: This function is deprecated. Use PConfig::del() instead. * * @param string $uid The user_id * @param string $family @@ -415,14 +293,5 @@ function set_pconfig($uid,$family,$key,$value) { * @return mixed */ function del_pconfig($uid,$family,$key) { - - global $a; - if(x($a->config[$uid][$family],$key)) - unset($a->config[$uid][$family][$key]); - $ret = q("DELETE FROM `pconfig` WHERE `uid` = %d AND `cat` = '%s' AND `k` = '%s'", - intval($uid), - dbesc($family), - dbesc($key) - ); - return $ret; + return PConfig::del($uid, $family, $key); } From fa02d0f2f8fdbc42c2ec6364b481b1e94cdf0f66 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Mon, 6 Jun 2016 10:46:33 +0200 Subject: [PATCH 417/485] rename PConfig::del to PConfig:delete --- include/PConfig.php | 2 +- include/config.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/PConfig.php b/include/PConfig.php index d8d6e58f3f..9ef1136995 100644 --- a/include/PConfig.php +++ b/include/PConfig.php @@ -201,7 +201,7 @@ class PConfig { * The configuration key to delete * @return mixed */ - public static function del($uid,$family,$key) { + public static function delete($uid,$family,$key) { global $a; if(x($a->config[$uid][$family],$key)) diff --git a/include/config.php b/include/config.php index db6c72ee6c..585caf43ae 100644 --- a/include/config.php +++ b/include/config.php @@ -283,7 +283,7 @@ function set_pconfig($uid,$family,$key,$value) { /** * @brief (Deprecated) Deletes the given key from the users's configuration. * - * Note: This function is deprecated. Use PConfig::del() instead. + * Note: This function is deprecated. Use PConfig::delete() instead. * * @param string $uid The user_id * @param string $family @@ -293,5 +293,5 @@ function set_pconfig($uid,$family,$key,$value) { * @return mixed */ function del_pconfig($uid,$family,$key) { - return PConfig::del($uid, $family, $key); + return PConfig::delete($uid, $family, $key); } From 33ad8bdc53f64435de793adffcc6dd2cafccef8d Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Mon, 6 Jun 2016 11:05:29 +0200 Subject: [PATCH 418/485] frio: extend hovercard to wall-item-responses (likes, attendend) and wall-item-bottom mentions --- view/theme/frio/js/hovercard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/frio/js/hovercard.js b/view/theme/frio/js/hovercard.js index 10ce29b645..518505c5ab 100644 --- a/view/theme/frio/js/hovercard.js +++ b/view/theme/frio/js/hovercard.js @@ -11,7 +11,7 @@ $(document).ready(function(){ // Elements with the class "userinfo" will get a hover-card. // Note that this elements does need a href attribute which links to // a valid profile url - $("body").on("mouseover", ".userinfo", function(e) { + $("body").on("mouseover", ".userinfo, .wall-item-responses a, .wall-item-bottom .mention a", function(e) { var timeNow = new Date().getTime(); removeAllhoverCards(e,timeNow); var hoverCardData = false; From 5c52736221a1086229943d18a6ecfbad0f4da676 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Mon, 6 Jun 2016 16:54:29 +0200 Subject: [PATCH 419/485] photo_menu: now the photo_menu does have at all places the same structure --- mod/allfriends.php | 6 ++++-- mod/directory.php | 4 +++- mod/dirfind.php | 6 ++++-- mod/match.php | 6 ++++-- mod/suggest.php | 9 ++++++--- view/theme/frio/templates/contact_template.tpl | 1 + 6 files changed, 22 insertions(+), 10 deletions(-) diff --git a/mod/allfriends.php b/mod/allfriends.php index 360b222b50..498b9d7dbf 100644 --- a/mod/allfriends.php +++ b/mod/allfriends.php @@ -61,8 +61,10 @@ function allfriends_content(&$a) { } else { $connlnk = $a->get_baseurl() . '/follow/?url=' . $rr['url']; - $photo_menu = array(array(t("View Profile"), zrl($rr['url']))); - $photo_menu[] = array(t("Connect/Follow"), $connlnk); + $photo_menu = array( + 'profile' => array(t("View Profile"), zrl($rr['url'])), + 'follow' => array(t("Connect/Follow"), $connlnk) + ); } $entry = array( diff --git a/mod/directory.php b/mod/directory.php index 625f6c95ac..9050a050a6 100644 --- a/mod/directory.php +++ b/mod/directory.php @@ -159,7 +159,9 @@ function directory_content(&$a) { $location_e = $location; } - $photo_menu = array(array(t("View Profile"), zrl($profile_link))); + $photo_menu = array( + 'profile' => array(t("View Profile"), zrl($profile_link)) + ); $entry = array( 'id' => $rr['id'], diff --git a/mod/dirfind.php b/mod/dirfind.php index 0d89f56f82..f193a5c45c 100644 --- a/mod/dirfind.php +++ b/mod/dirfind.php @@ -196,8 +196,10 @@ function dirfind_content(&$a, $prefix = "") { } else { $connlnk = $a->get_baseurl().'/follow/?url='.(($jj->connect) ? $jj->connect : $jj->url); $conntxt = t('Connect'); - $photo_menu = array(array(t("View Profile"), zrl($jj->url))); - $photo_menu[] = array(t("Connect/Follow"), $connlnk); + $photo_menu = array( + 'profile' => array(t("View Profile"), zrl($jj->url)), + 'follow' => array(t("Connect/Follow"), $connlnk) + ); } $jj->photo = str_replace("http:///photo/", get_server()."/photo/", $jj->photo); diff --git a/mod/match.php b/mod/match.php index 3b0367b429..8341911577 100644 --- a/mod/match.php +++ b/mod/match.php @@ -67,8 +67,10 @@ function match_content(&$a) { if (!count($match)) { $jj->photo = str_replace("http:///photo/", get_server()."/photo/", $jj->photo); $connlnk = $a->get_baseurl() . '/follow/?url=' . $jj->url; - $photo_menu = array(array(t("View Profile"), zrl($jj->url))); - $photo_menu[] = array(t("Connect/Follow"), $connlnk); + $photo_menu = array( + 'profile' => array(t("View Profile"), zrl($jj->url)), + 'follow' => array(t("Connect/Follow"), $connlnk) + ); $contact_details = get_contact_details_by_url($jj->url, local_user()); diff --git a/mod/suggest.php b/mod/suggest.php index bb8823d9ec..00033b2d24 100644 --- a/mod/suggest.php +++ b/mod/suggest.php @@ -78,9 +78,12 @@ function suggest_content(&$a) { $connlnk = $a->get_baseurl() . '/follow/?url=' . (($rr['connect']) ? $rr['connect'] : $rr['url']); $ignlnk = $a->get_baseurl() . '/suggest?ignore=' . $rr['id']; - $photo_menu = array(array(t("View Profile"), zrl($rr["url"]))); - $photo_menu[] = array(t("Connect/Follow"), $connlnk); - $photo_menu[] = array(t('Ignore/Hide'), $ignlnk); + $photo_menu = array( + 'profile' => array(t("View Profile"), zrl($rr["url"])), + 'follow' => array(t("Connect/Follow"), $connlnk), + 'hide' => array(t('Ignore/Hide'), $ignlnk) + ); + $contact_details = get_contact_details_by_url($rr["url"], local_user(), $rr); $entry = array( diff --git a/view/theme/frio/templates/contact_template.tpl b/view/theme/frio/templates/contact_template.tpl index 4c2395fd03..5e0e3ddef9 100644 --- a/view/theme/frio/templates/contact_template.tpl +++ b/view/theme/frio/templates/contact_template.tpl @@ -54,6 +54,7 @@ {{if $contact.photo_menu.edit}}{{/if}} {{if $contact.photo_menu.drop}}{{/if}} {{if $contact.photo_menu.follow}}{{/if}} + {{if $contact.photo_menu.hide}}{{/if}}
      {{* The contact description (e.g. Name, Network, kind of connection and so on *}} From 79fd49f61198e5eb6c3ecaefab7b34208b2b3eee Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 6 Jun 2016 21:22:54 +0200 Subject: [PATCH 420/485] Exit with "system unavailable" when the maximum number of processes is reached --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.php b/index.php index 17258fd0ab..bf4ee378af 100644 --- a/index.php +++ b/index.php @@ -65,7 +65,7 @@ if(!$install) { if ($processlist["amount"] > $max_processes) { logger("Processcheck: Maximum number of processes for frontend tasks (".$max_processes.") reached.", LOGGER_DEBUG); - return; + system_unavailable(); } } From 06c05888174de0a133e020db898e8e7a6030829e Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 6 Jun 2016 22:17:40 +0200 Subject: [PATCH 421/485] German translation of doc/Settings, part of #2194 --- doc/de/Settings.md | 501 ++++++++++++++++++++++++--------------------- 1 file changed, 272 insertions(+), 229 deletions(-) diff --git a/doc/de/Settings.md b/doc/de/Settings.md index 4ad9f39ba5..bfe171ce9e 100644 --- a/doc/de/Settings.md +++ b/doc/de/Settings.md @@ -1,231 +1,70 @@ -Konfigurationen -============== +# Settings -* [Zur Startseite der Hilfe](help) +Wenn du der Administrator einer Friendica Instanz bist hast du Zugriff auf das so genannte **Admin Panel** in dem du die Friendica Instanz konfigurieren kannst, -Hier findest du einige eingebaute Features, welche kein graphisches Interface haben oder nicht dokumentiert sind. -Konfigurationseinstellungen sind in der Datei ".htconfig.php" gespeichert. -Bearbeite diese Datei, indem du sie z.B. mit einem Texteditor öffnest. -Verschiedene Systemeinstellungen sind bereits in dieser Datei dokumentiert und werden hier nicht weiter erklärt. +Auf der Startseite des Admin Panels werden die Informationen zu der Instanz zusammen gefasst. +Diese Informationen beinhalten die Anzahl der Nachrichten, die sich aktuell in den Warteschlangen befinden. +Hierbei ist die erste Zahl die Zahl der Nachrichten die gerade aktiv verteilt werden. +Diese Zahl sollte sich relativ schnell sinken. +Die Zweite Zahl gibt die Anzahl von Nachrichten an, die nicht zugestellt werden konnten. +Die Zustellung wird zu einem späteren Zeitpunkt noch einmal versucht. +Unter dem Punkt "Warteschlange Inspizieren" kannst du einen schnellen Blick auf die zweite Warteschlange werfen. +Des weiteren findest du eine Übersicht über die Accounts auf dem Friendica Knoten, die unter dem Punkt "Nutzer" moderiert werden können. +Sowie eine Liste der derzeit aktivierten Addons. +Diese Liste ist verlinkt, so dass du schnellen Zugriff auf die Informationsseiten der einzelnen Addons hast. +Abschließend findest du auf der Startseite des Admin Panels die installierte Version von Friendica. +Wenn du in Kontakt mit den Entwicklern trittst und Probleme oder Fehler zu schildern, gib diese Version bitte immer mit an. -**Tastaturbefehle** +Die Unterabschnitte des Admin Panels kannst du in der Seitenleiste auswählen. -Friendica erfasst die folgenden Tastaturbefehle: +## Seite -* [Pause] - Pausiert die Update-Aktivität via "Ajax". Das ist ein Prozess, der Updates durchführt, ohne die Seite neu zu laden. Du kannst diesen Prozess pausieren, um deine Netzwerkauslastung zu reduzieren und/oder um es in der Javascript-Programmierung zum Debuggen zu nutzen. Ein Pausenzeichen erscheint unten links im Fenster. Klicke die [Pause]-Taste ein weiteres Mal, um die Pause zu beenden. +In diesem Bereich des Admin Panels findest du die Hauptkonfiguration deiner Friendica Instanz. +Er ist in mehrere Unterabschnitte aufgeteilt, wobei die Grundeinstellungen oben auf der Seite zu finden sind. -**Geburtstagsbenachrichtigung** +Da die meisten Konfigurationsoptionen einen Hilfstext im Admin Panel haben, kann und will dieser Artikel nicht alle Einstellungen abdecken. -Geburtstage erscheinen auf deiner Startseite für alle Freunde, die in den nächsten 6 Tagen Geburtstag haben. -Um deinen Geburtstag für alle sichtbar zu machen, musst du deinen Geburtstag (zumindest Tag und Monat) in dein Standardprofil eintragen. -Es ist nicht notwendig, das Jahr einzutragen. +### Grundeinstellungen -**Konfigurationseinstellungen** - - -**Sprache** - -Systemeinstellung - -Bitte schau dir die Datei util/README an, um Informationen zur Erstellung einer Übersetzung zu erhalten. - -Konfiguriere: -``` -$a->config['system']['language'] = 'name'; -``` - - -**System-Thema (Design)** - -Systemeinstellung - -Wähle ein Thema als Standardsystemdesign (welches vom Nutzer überschrieben werden kann). Das Standarddesign ist "default". - -Konfiguriere: -``` -$a->config['system']['theme'] = 'theme-name'; -``` - - -**Verifiziere SSL-Zertifikate** - -Sicherheitseinstellungen - -Standardmäßig erlaubt Friendica SSL-Kommunikation von Seiten, die "selbstunterzeichnete" SSL-Zertifikate nutzen. -Um eine weitreichende Kompatibilität mit anderen Netzwerken und Browsern zu gewährleisten, empfehlen wir, selbstunterzeichnete Zertifikate **nicht** zu nutzen. -Aber wir halten dich nicht davon ab, solche zu nutzen. SSL verschlüsselt alle Daten zwischen den Webseiten (und für deinen Browser), was dir eine komplett verschlüsselte Kommunikation erlaubt. -Auch schützt es deine Login-Daten vor Datendiebstahl. Selbstunterzeichnete Zertifikate können kostenlos erstellt werden. -Diese Zertifikate können allerdings Opfer eines sogenannten ["man-in-the-middle"-Angriffs](http://de.wikipedia.org/wiki/Man-in-the-middle-Angriff) werden, und sind daher weniger bevorzugt. -Wenn du es wünscht, kannst du eine strikte Zertifikatabfrage einstellen. -Das führt dazu, dass du keinerlei Verbindung zu einer selbstunterzeichneten SSL-Seite erstellen kannst - -Konfiguriere: -``` -$a->config['system']['verifyssl'] = true; -``` - - -**Erlaubte Freunde-Domains** - -Kooperationen/Gemeinschaften/Bildung Erweiterung - -Kommagetrennte Liste von Domains, welche eine Freundschaft mit dieser Seite eingehen dürfen. -Wildcards werden akzeptiert (Wildcard-Unterstützung unter Windows benötigt PHP5.3) Standardmäßig sind alle gültigen Domains erlaubt. - -Konfiguriere: -``` -$a->config['system']['allowed_sites'] = "sitea.com, *siteb.com"; -``` - - -**Erlaubte Email-Domains** - -Kooperationen/Gemeinschaften/Bildung Erweiterung - -Kommagetrennte Liste von Domains, welche bei der Registrierung als Part der Email-Adresse erlaubt sind. -Das grenzt Leute aus, die nicht Teil der Gruppe oder Organisation sind. -Wildcards werden akzeptiert (Wildcard-Unterstützung unter Windows benötigt PHP5.3) Standardmäßig sind alle gültigen Email-Adressen erlaubt. - -Konfiguriere: -``` -$a->config['system']['allowed_email'] = "sitea.com, *siteb.com"; -``` - -**Öffentlichkeit blockieren** - -Kooperationen/Gemeinschaften/Bildung Erweiterung - -Setze diese Einstellung auf "true" und sperre den öffentlichen Zugriff auf alle Seiten, solange man nicht eingeloggt ist. -Das blockiert die Ansicht von Profilen, Freunden, Fotos, vom Verzeichnis und den Suchseiten. -Ein Nebeneffekt ist, dass Einträge dieser Seite nicht im globalen Verzeichnis erscheinen. -Wir empfehlen, speziell diese Einstellung auszuschalten (die Einstellung ist an anderer Stelle auf dieser Seite erklärt). -Beachte: das ist speziell für Seiten, die beabsichtigen, von anderen Friendica-Netzwerken abgeschottet zu sein. -Unautorisierte Personen haben ebenfalls nicht die Möglichkeit, Freundschaftsanfragen von Seitennutzern zu beantworten. -Die Standardeinstellung steht auf "false". -Verfügbar in Version 2.2 und höher. - -Konfiguriere: -``` -$a->config['system']['block_public'] = true; -``` - - -**Veröffentlichung erzwingen** - -Kooperationen/Gemeinschaften/Bildung Erweiterung - -Standardmäßig können Nutzer selbst auswählen, ob ihr Profil im Seitenverzeichnis erscheint. -Diese Einstellung zwingt alle Nutzer dazu, im Verzeichnis zu erscheinen. -Diese Einstellung kann vom Nutzer nicht deaktiviert werden. Die Standardeinstellung steht auf "false". - -Konfiguriere: -``` -$a->config['system']['publish_all'] = true; -``` - - -**Globales Verzeichnis** - -Kooperationen/Gemeinschaften/Bildung Erweiterung - -Mit diesem Befehl wird die URL eingestellt, die zum Update des globalen Verzeichnisses genutzt wird. -Dieser Befehl ist in der Standardkonfiguration enthalten. -Der nichtdokumentierte Teil dieser Einstellung ist, dass das globale Verzeichnis gar nicht verfügbar ist, wenn diese Einstellung nicht gesetzt wird. -Dies erlaubt eine private Kommunikation, die komplett vom globalen Verzeichnis isoliert ist. - -Konfiguriere: -``` -$a->config['system']['directory'] = 'http://dir.friendi.ca'; -``` - - -**Proxy Konfigurationseinstellung** - -Wenn deine Seite eine Proxy-Einstellung nutzt, musst du diese Einstellungen vornehmen, um mit anderen Seiten im Internet zu kommunizieren. - -Konfiguriere: -``` -$a->config['system']['proxy'] = "http://proxyserver.domain:port"; -$a->config['system']['proxyuser'] = "username:password"; -``` - - -**Netzwerk-Timeout** - -Legt fest, wie lange das Netzwerk warten soll, bevor ein Timeout eintritt. -Der Wert wird in Sekunden angegeben. Standardmäßig ist 60 eingestellt; 0 steht für "unbegrenzt" (nicht empfohlen). - -Konfiguriere: - -``` -$a->config['system']['curl_timeout'] = 60; -``` - - -**Banner/Logo** +#### Banner/Logo Hiermit legst du das Banner der Seite fest. Standardmäßig ist das Friendica-Logo und der Name festgelegt. Du kannst hierfür HTML/CSS nutzen, um den Inhalt zu gestalten und/oder die Position zu ändern, wenn es nicht bereits voreingestellt ist. -Konfiguriere: +#### Systensprache -``` -$a->config['system']['banner'] = 'Meine tolle Webseite'; -``` +Diese Einstellung legt die Standartsprache der Instanz fest. +Sie wird verwendet, wenn es Friendica nicht gelingt die Spracheinstellungen des Besuchers zu erkennen oder diese nicht unterstützt wird. +Nutzer können diese Auswahl in den Einstellungen des Benutzerkontos überschreiben. +Die Friendica Gemeinschaft bietet einige Übersetzungen an, von denen einige mehr andere weniger komplett sind. +Mehr Informationen zum Übersetzungsprozess von Friendica findest du [auf dieser Seite](/help/translations) der Dokumentation. -**Maximale Bildgröße** +#### Systemweites Theme -Maximale Bild-Dateigröße in Byte. Standardmäßig ist 0 gesetzt, was bedeutet, dass kein Limit gesetzt ist. +Hier kann das Theme bestimmt werden, welches standardmäßig zum Anzeigen der Seite verwendet werden soll. +Nutzer können in ihren Einstellungen andere Themes wählen. +Derzeit ist das "duepunto zero" Theme das vorausgewählte Theme. -Konfiguriere: +Für mobile Geräte kannst du ein spezielles Theme wählen, wenn das Standardtheme ungeeignet für mobile Geräte sein sollte. +Das `vier` Theme z.B. unterstützt kleine Anzeigen und benötigt kein zusätzliches mobiles Theme. -``` -$a->config['system']['maximagesize'] = 1000000; -``` +### Registrierung - -**UTF-8 Reguläre Ausdrücke** - -Während der Registrierung werden die Namen daraufhin geprüft, ob sie reguläre UTF-8-Ausdrücke nutzen. -Hierfür wird PHP benötigt, um mit einer speziellen Einstellung kompiliert zu werden, die UTF-8-Ausdrücke benutzt. -Wenn du absolut keine Möglichkeit hast, Accounts zu registrieren, setze den Wert von "no_utf" auf "true". -Standardmäßig ist "false" eingestellt (das bedeutet, dass UTF-8-Ausdrücke unterstützt werden und funktionieren). - -Konfiguriere: - -``` -$a->config['system']['no_utf'] = true; -``` - - -**Prüfe vollständigen Namen** +#### Namen auf Vollständigkeit überprüfen Es kann vorkommen, dass viele Spammer versuchen, sich auf deiner Seite zu registrieren. In Testphasen haben wir festgestellt, dass diese automatischen Registrierungen das Feld "Vollständiger Name" oft nur mit Namen ausfüllen, die kein Leerzeichen beinhalten. Wenn du Leuten erlauben willst, sich nur mit einem Namen anzumelden, dann setze die Einstellung auf "true". Die Standardeinstellung ist auf "false" gesetzt. - -Konfiguriere: - -``` -$a->config['system']['no_regfullname'] = true; -``` - - -**OpenID** + +#### OpenID Unterstützung Standardmäßig wird OpenID für die Registrierung und für Logins genutzt. Wenn du nicht willst, dass OpenID-Strukturen für dein System übernommen werden, dann setze "no_openid" auf "true". Standardmäßig ist hier "false" gesetzt. -Konfiguriere: -``` -$a->config['system']['no_openid'] = true; -``` - - -**Multiple Registrierungen** +#### Unterbinde Mehrfachregistrierung Um mehrfache Seiten zu erstellen, muss sich eine Person mehrfach registrieren können. Deine Seiteneinstellung kann Registrierungen komplett blockieren oder an Bedingungen knüpfen. @@ -234,42 +73,246 @@ Hier ist weiterhin eine Bestätigung notwendig, wenn "REGISTER_APPROVE" ausgewä Wenn du die Erstellung weiterer Accounts blockieren willst, dann setze die Einstellung "block_extended_register" auf "true". Standardmäßig ist hier "false" gesetzt. -Konfiguriere: -``` -$a->config['system']['block_extended_register'] = true; -``` +### Datei hochladen +#### Maximale Bildgröße -**Entwicklereinstellungen** +Maximale Bild-Dateigröße in Byte. Standardmäßig ist 0 gesetzt, was bedeutet, dass kein Limit gesetzt ist. -Diese sind am nützlichsten, um Protokollprozesse zu debuggen oder andere Kommunikationsfehler einzugrenzen. +### Regeln -Konfiguriere: -``` -$a->config['system']['debugging'] = true; -$a->config['system']['logfile'] = 'logfile.out'; -$a->config['system']['loglevel'] = LOGGER_DEBUG; -``` -Erstellt detaillierte Debugging-Logfiles, die in der Datei "logfile.out" gespeichert werden (Datei muss auf dem Server mit Schreibrechten versehen sein). "LOGGER_DEBUG" zeigt eine Menge an Systeminformationen, enthält aber keine detaillierten Daten. -Du kannst ebenfalls "LOGGER_ALL" auswählen, allerdings empfehlen wir dieses nur, wenn ein spezifisches Problem eingegrenzt werden soll. -Andere Log-Level sind möglich, werden aber derzeit noch nicht genutzt. +#### URL des weltweiten Verzeichnisses +Mit diesem Befehl wird die URL eingestellt, die zum Update des globalen Verzeichnisses genutzt wird. +Dieser Befehl ist in der Standardkonfiguration enthalten. +Der nicht dokumentierte Teil dieser Einstellung ist, dass das globale Verzeichnis gar nicht verfügbar ist, wenn diese Einstellung nicht gesetzt wird. +Dies erlaubt eine private Kommunikation, die komplett vom globalen Verzeichnis isoliert ist. -**PHP-Fehler-Logging** +#### Erzwinge Veröffentlichung -Nutze die folgenden Einstellungen, um PHP-Fehler direkt in einer Datei zu erfassen. +Standardmäßig können Nutzer selbst auswählen, ob ihr Profil im Seitenverzeichnis erscheint. +Diese Einstellung zwingt alle Nutzer dazu, im Verzeichnis zu erscheinen. +Diese Einstellung kann vom Nutzer nicht deaktiviert werden. Die Standardeinstellung steht auf "false". -Konfiguriere: -``` -error_reporting(E_ERROR | E_WARNING | E_PARSE ); -ini_set('error_log','php.out'); -ini_set('log_errors','1'); -ini_set('display_errors', '0'); -``` +#### Öffentlichen Zugriff blockieren -Diese Befehle erfassen alle PHP-Fehler in der Datei "php.out" (Datei muss auf dem Server mit Schreibrechten versehen sein). -Nicht deklarierte Variablen werden manchmal mit einem Verweis versehen, weshalb wir empfehlen, "E_NOTICE" und "E_ALL" nicht zu nutzen. -Die Menge an Fehlern, die auf diesem Level gemeldet werden, ist komplett harmlos. -Bitte informiere die Entwickler über alle Fehler, die du in deinen Log-Dateien mit den oben genannten Einstellungen erhältst. -Sie weisen generell auf Fehler in, die bearbeitet werden müssen. -Wenn du eine leere (weiße) Seite erhältst, schau in die PHP-Log-Datei - dies deutet fast immer darauf hin, dass ein Fehler aufgetreten ist. +Aktiviere diese Einstellung um den öffentlichen Zugriff auf alle Seiten zu sperren, solange man nicht eingeloggt ist. +Das blockiert die Ansicht von Profilen, Freunden, Fotos, vom Verzeichnis und den Suchseiten. +Ein Nebeneffekt ist, dass Einträge dieser Seite nicht im globalen Verzeichnis erscheinen. +Wir empfehlen, speziell diese Einstellung auszuschalten (die Einstellung ist an anderer Stelle auf dieser Seite erklärt). +Beachte: das ist speziell für Seiten, die beabsichtigen, von anderen Friendica-Netzwerken abgeschottet zu sein. +Unautorisierte Personen haben ebenfalls nicht die Möglichkeit, Freundschaftsanfragen von Seitennutzern zu beantworten. +Die Standardeinstellung ist deaktiviert. +Verfügbar in Version 2.2 und höher. + +#### Erlaubte Domains für Kontakte + +Kommagetrennte Liste von Domains, welche eine Freundschaft mit dieser Seite eingehen dürfen. +Wildcards werden akzeptiert (Wildcard-Unterstützung unter Windows benötigt PHP5.3) Standardmäßig sind alle gültigen Domains erlaubt. + +Mit dieser Option kann man einfach geschlossene Netzwerke, z.B. im schulischen Bereich aufbauen, aus denen nicht mit dem Rest des Netzwerks kommuniziert werden soll. + +#### Erlaubte Domains für E-Mails + +Kommagetrennte Liste von Domains, welche bei der Registrierung als Part der Email-Adresse erlaubt sind. +Das grenzt Leute aus, die nicht Teil der Gruppe oder Organisation sind. +Wildcards werden akzeptiert (Wildcard-Unterstützung unter Windows benötigt PHP5.3) Standardmäßig sind alle gültigen Email-Adressen erlaubt. + +#### Nutzern erlauben das remote_self Flag zu setzen + +Webb du die Option `Nutzern erlauben das remote_self Flag zu setzen` aktivierst, können alle Nutzer Atom Feeds in den erweiterten Einstellungen des Kontakts als "Entferntes Konto" markieren. +Dadurch werden automatisch alle Beiträge dieser Feeds für diesen Nutzer gespiegelt und an die Kontakte bei Friendica verteilt. + +Als Administrator der Friendica Instanz kannst du diese Einstellungen ansonsten nur direkt in der Datenbank vornehmen. +Bevor du das tust solltest du sicherstellen, dass du ein Backup der Datenbank hast und genau weißt was die Änderungen an der Datenbank bewirken, die du vornehmen willst. + +### Erweitert + +#### Proxy Einstellungen + +Wenn deine Seite eine Proxy-Einstellung nutzt, musst du diese Einstellungen vornehmen, um mit anderen Seiten im Internet zu kommunizieren. + +#### Netzwerk Wartezeit + +Legt fest, wie lange das Netzwerk warten soll, bevor ein Timeout eintritt. +Der Wert wird in Sekunden angegeben. Standardmäßig ist 60 eingestellt; 0 steht für "unbegrenzt" (nicht empfohlen). + +#### UTF-8 Reguläre Ausdrücke + +Während der Registrierung werden die Namen daraufhin geprüft, ob sie reguläre UTF-8-Ausdrücke nutzen. +Hierfür wird PHP benötigt, um mit einer speziellen Einstellung kompiliert zu werden, die UTF-8-Ausdrücke benutzt. +Wenn du absolut keine Möglichkeit hast, Accounts zu registrieren, setze diesen Wert auf ja. + +#### SSL Überprüfen + +Standardmäßig erlaubt Friendica SSL-Kommunikation von Seiten, die "selbst unterzeichnete" SSL-Zertifikate nutzen. +Um eine weitreichende Kompatibilität mit anderen Netzwerken und Browsern zu gewährleisten, empfehlen wir, selbst unterzeichnete Zertifikate **nicht** zu nutzen. +Aber wir halten dich nicht davon ab, solche zu nutzen. SSL verschlüsselt alle Daten zwischen den Webseiten (und für deinen Browser), was dir eine komplett verschlüsselte Kommunikation erlaubt. +Auch schützt es deine Login-Daten vor Datendiebstahl. Selbst unterzeichnete Zertifikate können kostenlos erstellt werden. +Diese Zertifikate können allerdings Opfer eines sogenannten ["man-in-the-middle"-Angriffs](http://de.wikipedia.org/wiki/Man-in-the-middle-Angriff) werden, und sind daher weniger bevorzugt. +Wenn du es wünscht, kannst du eine strikte Zertifikatabfrage einstellen. +Das führt dazu, dass du keinerlei Verbindung zu einer selbst unterzeichneten SSL-Seite erstellen kannst + +### Automatisch ein Kontaktverzeichnis erstellen + +### Performance + +### Worker + +### Umsiedeln + +## Nutzer + +In diesem Abschnitt des Admin Panels kannst du die Nutzer deiner Friendica Instanz moderieren. + +Solltest du für **Registrierungsmethode** die Einstellung "Bedarf Zustimmung" gewählt haben, werden hier zu Beginn der Seite neue Registrationen aufgelistet. +Als Administrator kannst du hier die Registration akzeptieren oder ablehnen. + +Unter dem Abschnitt mit den Registrationen werden die aktuell auf der Instanz registrierten Nutzer aufgelistet. +Die Liste kann nach Namen, E-Mail Adresse, Datum der Registration, der letzten Anmeldung oder dem letzten Beitrag und dem Account Typ sortiert werden. +An dieser Stelle kannst du existierende Accounts vom Zugriff auf die Instanz blockieren, sie wieder frei geben oder Accounts endgültig löschen. + +Im letzten Bereich auf der Seite kannst du als Administrator neue Accounts anlegen. +Das Passwort für so eingerichtete Accounts werden per E-Mail an die Nutzer geschickt. + +## Plugins + +Dieser Bereich des Admin Panels dient der Auswahl und Konfiguration der Erweiterungen von Friendica. +Sie müssen in das `/addon` Verzeichnis kopiert werden. +Auf der Seite wird eine Liste der verfügbaren Erweiterungen angezeigt. +Neben den Namen der Erweiterungen wird ein Indikator angezeigt, der anzeigt ob das Addon gerade aktiviert ist oder nicht. + +Wenn du die Erweiterungen aktualisiert die du auf deiner Friendica Instanz nutzt könnte es sein, dass sie neu geladen werden müssen, damit die Änderungen aktiviert werden. +Um diesen Prozess zu vereinfachen gibt es am Anfang der Seite einen Button um alle aktiven Plugins neu zu laden. + +## Themen + +Der Bereich zur Kontrolle der auf der Friendica Instanz verfügbaren Themen funktioniert analog zum Plugins Bereich. +Jedes Theme hat eine extra Seite auf der der aktuelle Status, ein Bildschirmfoto des Themes, zusätzliche Informationen und eventuelle Einstellungen des Themes zu finden sind. +Genau wie Erweiterungen können Themes in der Übersichtsliste oder der Theme-Seite aktiviert bzw. deaktiviert werden. +Um ein Standardtheme für die Instanz zu wählen, benutze bitte die *Seiten* Bereich des Admin Panels. + +## Zusätzliche Features + +Es gibt einige optionale Features in Friendica, die Nutzer benutzen können oder halt nicht. +Zum Beispiel den *dislike* Button oder den *Webeditor* beim Erstellen von neuen Beiträgen. +In diesem Bereich des Admin Panels kannst du die Grundeinstellungen für diese Features festlegen und gegebenenfalls die Entscheidung treffen, dass Nutzer deiner Instanz diese auch nicht mehr ändern können. + +## DB Updates + +Wenn sich die Datenbankstruktur Friendicas ändert werden die Änderungen automatisch angewandt. +Solltest du den Verdacht haben, das eine Aktualisierung fehlgeschlagen ist, kannst du in diesem Bereich des Admin Panels den Status der Aktualisierungen überprüfen. + +## Warteschlange Inspizieren + +Auf der Eingangsseite des Admin Panels werden zwei Zahlen fpr die Warteschlangen angegeben. +Die zweite Zahl steht für die Beiträge, die initial nicht zugestellt werden konnten und später nochmal zugestellt werden sollen. +Sollte diese Zahl durch die Decke brechen, solltest du nachsehen an welchen Kontakt die Zustellung der Beiträge nicht funktioniert. + +Unter dem Menüpunkt "Warteschlange Inspizieren" findest du eine Liste dieser nicht zustellbaren Beiträge. +Diese Liste ist nach dem Empfänger sortiert. +Die Kommunikation zu dem Empfänger kann aus unterschiedlichen Gründen gestört sein. +Der andere Server könnte offline sein, oder gerade einfach nur eine hohe Systemlast aufweisen. + +Aber keine Panik! +Friendica wird die Beiträge nicht für alle Zeiten in der Warteschlange behalten. +Nach einiger Zeit werden Knoten als inaktiv identifiziert und Nachrichten an Nutzer dieser Knoten aus der Warteschlange gelöscht. + +## Federation Statistik + +Deine Instanz ist ein Teil eines Netzwerks von Servern dezentraler sozialer Netzwerke, der so genannten **Federation**. +In diesem Bereich des Admin Panels findest du ein paar Zahlen zu dem Teil der Federation, die deine Instanz kennt. + +## Plugin Features + +Einige der Erweiterungen von Friendica benötigen global gültige Einstellungen, die der Administrator vornehmen muss. +Diese Erweiterungen sind hier aufgelistet, damit du die Einstellungen schneller findest. + +## Protokolle + +Dieser Bereich des Admin Panels ist auf zwei Seiten verteilt. +Die eine Seite dient der Konfiguration, die andere dem Anzeigen der Logs. + +Du solltest die Logdatei nicht in einem Verzeichnis anlegen, auf das man vom Internet aus zugreifen kann. +Wenn du das dennoch tun musste und die Standardeinstellungen des Apache Servers verwendest, dann solltest du darauf achten, dass die Logdateien mit der Endung `.log` oder `.out` enden. +Solltest du einen anderen Webserver verwenden, solltest du sicherstellen, dass der Zugrif zu Dateien mit diesen Endungen nicht möglich ist. + +Es gibt fünf Level der Ausführlichkeit mit denen Friendica arbeitet: Normal, Trace, Debug, Data und All. +Normalerweise solltest du für den Betrieb deiner Friendica Instanz keine Logs benötigen. +Wenn du versuchst einem Problem auf den Grund zu gehen, solltest du das "DEBUG" Level wählen. +Mit dem "All" Level schreibt Friendica alles in die Logdatei. +Die Datenmenge der geloggten Daten kann relativ schnell anwachsen, deshalb empfehlen wir das Anlegen von Protokollen nur zu aktivieren wenn es unbedingt nötig ist. + +**Die Größe der Logdateien kann schnell anwachsen**. +Du solltest deshalb einen Dienst zur [log rotation](https://en.wikipedia.org/wiki/Log_rotation) einrichten. + +**Bekannte Probleme**: Der Dateiname `friendica.log` kann bei speziellen Server Konfigurationen zu Problemen führen (siehe [issue 2209](https://github.com/friendica/friendica/issues/2209)). + +Normalerweise werden Fehler- und Warnmeldungen von PHP unterdrückt. +Wenn du sie aktivieren willst, musst du folgendes in der `.htconfig.php` Datei eintragen um die Meldungen in die Datei `php.out` zu speichern + + error_reporting(E_ERROR | E_WARNING | E_PARSE ); + ini_set('error_log','php.out'); + ini_set('log_errors','1'); + ini_set('display_errors', '0'); + +Die Datei `php.out` muss vom Webserver schreibbar sein und sollte ebenfalls außerhalb der Webverzeichnisse liegen. +Es kommt gelegentlich vor, dass nicht deklarierte Variablen referenziert werden, dehalb raten wir davon ab `E_NOTICE` oder `E_ALL` zu verwenden. +Die überwiegende Mehrzahl der auf diesen Stufen dokumentierten Fehler sind absolut harmlos. +Solltest du mit den oben empfohlenen Einstellungen Fehler finden, teile sie bitte den Entwicklern mit. +Im Allgemeinen sind dies Fehler, die behoben werden sollten. + +Solltest du eine leere (weiße) Seite vorfinden, während du Friendica nutzt, werfe bitte einen Blick in die PHP Logs. +Solche *White Screens* sind so gut wie immer ein Zeichen dafür, dass ein Fehler aufgetreten ist. + +## Diagnose + +In diesem Bereich des Admin Panels findest du zwei Werkzeuge mit der du untersuchen kannst, wie Friendica bestimmte Ressourcen einschätzt. +Diese Werkzeuge sind insbesondere bei der Analyse von Kommunikationsproblemen hilfreich. + +"Adresse untersuchen" zeigt Informationen zu einer URL an, wie Friendica sie wahrnimmt. + +Mit dem zweiten Werkzeug "Webfinger überprüfen" kannst du Informationen zu einem Ding anfordern, das über einen Webfinger ( jemand@example.com ) identifiziert wird. + +# Die Ausnahmen der Regel + +Für die oben genannte Regel gibt es vier Ausnahmen, deren Konfiguration nicht über das Admin Panel vorgenommen werden kann. +Dies sind die Datenbank Einstellungen, die Administrator Accounts, der PHP Pfad und die Konfiguration einer eventuellen Installation in ein Unterverzeichnis unterhalb der Hauptdomain. + +## Datenbank Einstellungen + +Mit den folgenden Einstellungen kannst du die Zugriffsdaten für den Datenbank Server festlegen. + + $db_host = 'your.db.host'; + $db_user = 'db_username'; + $db_pass = 'db_password'; + $db_data = 'database_name'; + +## Administratoren + +Du kannst einen, oder mehrere Accounts, zu Administratoren machen. +Normalerweise trifft dies auf den ersten Account zu, der nach der Installation angelegt wird. +Die Liste der E-Mail Adressen kann aber einfach erweitert werden. +Mit keiner der angegebenen E-Mail Adressen können weitere Accounts registriert werden. + + $a->config['admin_email'] = 'you@example.com, buddy@example.com'; + +## PHP Pfad + +Einige Prozesse von Friendica laufen im Hintergrund. +Für diese Prozesse muss der Pfad zu der PHP Version gesetzt sein, die verwendet werden soll. + + $a->config['php_path'] = '/pfad/zur/php-version'; + +## Unterverzeichnis Konfiguration + +Man kann Friendica in ein Unterverzeichnis des Webservers installieren. +Wir raten allerdings dringen davon ab, da es die Interoperabilität mit anderen Netzwerken (z.B. Diaspora, GNU Social, Hubzilla) verhindert. +Mal angenommen, du hast ein Unterverzeichnis tests und willst Friendica in ein weiteres Unterverzeichnis installieren, dann lautet die Konfiguration hierfür: + + $a->path = 'tests/friendica'; + +## Weitere Ausnahmen + +Es gibt noch einige experimentelle Einstellungen, die nur in der ``.htconfig.php`` Datei konfiguriert werden können. +Im [Konfigurationswerte, die nur in der .htconfig.php gesetzt werden können (EN)](help/htconfig) Artikel kannst du mehr darüber erfahren. From fc66a86dc538f072e279dd56110abb0735e1dfce Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 6 Jun 2016 22:57:27 +0200 Subject: [PATCH 422/485] Some optimized sql queries --- boot.php | 2 +- database.sql | 4 ++-- include/dbstructure.php | 2 +- include/group.php | 2 +- mod/profile.php | 2 +- update.php | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/boot.php b/boot.php index adfeeb415f..99229972eb 100644 --- a/boot.php +++ b/boot.php @@ -38,7 +38,7 @@ define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_CODENAME', 'Asparagus'); define ( 'FRIENDICA_VERSION', '3.5-dev' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1195 ); +define ( 'DB_UPDATE_VERSION', 1196 ); /** * @brief Constant with a HTML line break. diff --git a/database.sql b/database.sql index 07fb65b96d..8269a8bba0 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 3.5-dev (Asparagus) --- DB_UPDATE_VERSION 1195 +-- DB_UPDATE_VERSION 1196 -- ------------------------------------------ @@ -511,7 +511,7 @@ CREATE TABLE IF NOT EXISTS `item` ( INDEX `extid` (`extid`), INDEX `uid_id` (`uid`,`id`), INDEX `uid_created` (`uid`,`created`), - INDEX `uid_unseen` (`uid`,`unseen`), + INDEX `uid_unseen_contactid` (`uid`,`unseen`,`contact-id`), INDEX `uid_network_received` (`uid`,`network`,`received`), INDEX `uid_received` (`uid`,`received`), INDEX `uid_network_commented` (`uid`,`network`,`commented`), diff --git a/include/dbstructure.php b/include/dbstructure.php index e6064b3971..f89a3ff926 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -847,7 +847,7 @@ function db_definition() { "extid" => array("extid"), "uid_id" => array("uid","id"), "uid_created" => array("uid","created"), - "uid_unseen" => array("uid","unseen"), + "uid_unseen_contactid" => array("uid","unseen","contact-id"), "uid_network_received" => array("uid","network","received"), "uid_received" => array("uid","received"), "uid_network_commented" => array("uid","network","commented"), diff --git a/include/group.php b/include/group.php index 00b66ad586..53c0b78d84 100644 --- a/include/group.php +++ b/include/group.php @@ -366,7 +366,7 @@ function groups_containing($uid,$c) { function groups_count_unseen() { $r = q("SELECT `group`.`id`, `group`.`name`, - (SELECT COUNT(*) FROM `item` + (SELECT COUNT(*) FROM `item` FORCE INDEX (`uid_unseen_contactid`) WHERE `uid` = %d AND `unseen` AND `contact-id` IN (SELECT `contact-id` FROM `group_member` WHERE `group_member`.`gid` = `group`.`id` AND `group_member`.`uid` = %d)) AS `count` diff --git a/mod/profile.php b/mod/profile.php index 26bd395230..58e3a16072 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -284,7 +284,7 @@ function profile_content(&$a, $update = 0) { $r = q("SELECT `thread`.`iid` AS `item_id`, `thread`.`network` AS `item_network`, `thread`.`uid` AS `contact-uid` - FROM `thread` INNER JOIN `item` ON `item`.`id` = `thread`.`iid` + FROM `thread` FORCE INDEX (`uid_created`) INNER JOIN `item` ON `item`.`id` = `thread`.`iid` $sql_post_table INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id` AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 WHERE `thread`.`uid` = %d AND `thread`.`visible` = 1 AND `thread`.`deleted` = 0 diff --git a/update.php b/update.php index b74edf7bbd..1189ac4a91 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Tue, 7 Jun 2016 00:38:39 +0200 Subject: [PATCH 423/485] frio: follow & peoplefind widget template --- view/theme/frio/css/style.css | 10 ++++++++++ view/theme/frio/templates/follow.tpl | 12 ++++++++++++ view/theme/frio/templates/peoplefind.tpl | 18 ++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 view/theme/frio/templates/follow.tpl create mode 100644 view/theme/frio/templates/peoplefind.tpl diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 11f85ae93f..f09cdbf1fc 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -929,6 +929,16 @@ aside .vcard #wallmessage-link { width: 100%; } +aside #peoplefind-sidebar input, +aside #follow-sidebar input { + height: 30px; + background-position: 10px 5px; +} +aside #peoplefind-sidebar .form-group-search .form-button-search, +aside #follow-sidebar .form-group-search .form-button-search { + padding: 2px 8px; +} + /* contact block widget */ #contact-block .contact-block-content { clear: both; diff --git a/view/theme/frio/templates/follow.tpl b/view/theme/frio/templates/follow.tpl new file mode 100644 index 0000000000..8100f853e8 --- /dev/null +++ b/view/theme/frio/templates/follow.tpl @@ -0,0 +1,12 @@ + +
      +

      {{$connect}}

      +
      {{$desc}}
      +
      + +
      +
      + diff --git a/view/theme/frio/templates/peoplefind.tpl b/view/theme/frio/templates/peoplefind.tpl new file mode 100644 index 0000000000..941fd1a4d3 --- /dev/null +++ b/view/theme/frio/templates/peoplefind.tpl @@ -0,0 +1,18 @@ + +
      +

      {{$findpeople}}

      +
      {{$desc}}
      +
      + +
      + + + + {{if $inv}} + + {{/if}} +
      + From 615db43736c6883572e74c1b24e0eab13176cdbc Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Tue, 7 Jun 2016 01:28:38 +0200 Subject: [PATCH 424/485] frio: add group_side widget template --- view/theme/frio/css/style.css | 14 ++++++- view/theme/frio/templates/follow.tpl | 4 +- view/theme/frio/templates/group_side.tpl | 49 ++++++++++++++++++++++++ view/theme/frio/templates/peoplefind.tpl | 7 +++- 4 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 view/theme/frio/templates/group_side.tpl diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index f09cdbf1fc..00d49b8a61 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -939,6 +939,18 @@ aside #follow-sidebar .form-group-search .form-button-search { padding: 2px 8px; } +aside #group-sidebar .group-edit-tool { + opacity: 0.1; + transition: all 0.25s ease-in-out; +} +aside #group-sidebar .sidebar-group-li:hover .group-edit-tool { + opacity: 0.8; + transition: all 0.25s ease-in-out; +} +aside #group-sidebar .sidebar-group-li .group-edit-tool:hover { + opacity: 1; +} + /* contact block widget */ #contact-block .contact-block-content { clear: both; @@ -1637,7 +1649,7 @@ ul.dropdown-menu li:hover { .allfriends-content-wrapper, .match-content-wrapper, .dirfind-content-wrapper, .directory-content-wrapper, .manage-content-wrapper, .notes-content-wrapper, .events-content-wrapper, .message-content-wrapper, .apps-content-wrapper, -.notifications-content-wrapper, .admin-content-wrapper { +.notifications-content-wrapper, .admin-content-wrapper, .group-content-wrapper { min-height: calc(100vh - 150px); padding: 15px; padding-bottom: 20px; diff --git a/view/theme/frio/templates/follow.tpl b/view/theme/frio/templates/follow.tpl index 8100f853e8..a35bcb2131 100644 --- a/view/theme/frio/templates/follow.tpl +++ b/view/theme/frio/templates/follow.tpl @@ -1,8 +1,10 @@

      {{$connect}}

      -
      {{$desc}}
      + +
      {{$desc}}
      {{* The description *}}
      + {{* The input field - For visual consistence we are using a search input field*}}
      - + diff --git a/view/templates/profile_entry.tpl b/view/templates/profile_entry.tpl index 3b0e88a877..69b39b9b33 100644 --- a/view/templates/profile_entry.tpl +++ b/view/templates/profile_entry.tpl @@ -1,12 +1,12 @@ -
      -
      -{{$alt}} -
      -
      - -
      {{$visible}}
      +
      + {{$alt}} +
      +
      + +
      {{$visible}}
      - diff --git a/view/templates/profile_listing_header.tpl b/view/templates/profile_listing_header.tpl index a0fa1f4996..88514c554a 100644 --- a/view/templates/profile_listing_header.tpl +++ b/view/templates/profile_listing_header.tpl @@ -1,9 +1,14 @@

      {{$header}}

      +

      -{{$chg_photo}} + {{$chg_photo}}

      + +
      + {{$profiles}} +
      diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 0ecb56441d..90288ef218 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1681,12 +1681,13 @@ ul.dropdown-menu li:hover { /* PAGES */ /* Profile-page */ -#profile-page, .photos-content-wrapper, .settings-content-wrapper, +.generic-page-wrapper ,#profile-page, .settings-content-wrapper, .contacts-content-wrapper, .suggest-content-wrapper, .common-content-wrapper, .allfriends-content-wrapper, .match-content-wrapper, .dirfind-content-wrapper, .directory-content-wrapper, .manage-content-wrapper, .notes-content-wrapper, .events-content-wrapper, .message-content-wrapper, .apps-content-wrapper, -.notifications-content-wrapper, .admin-content-wrapper, .group-content-wrapper { +.notifications-content-wrapper, .admin-content-wrapper, .group-content-wrapper, +.profile_photo-content-wrapper, photos-content-wrapper { min-height: calc(100vh - 150px); padding: 15px; padding-bottom: 20px; @@ -1884,6 +1885,58 @@ ul li:hover .contact-wrapper a.contact-action-link:hover { #poke-wrapper-end { clear: both; } + +/* Profiles Page */ +.profile-listing-table { + display: table; + width: 100%; +} +.profile-listing-row { + display: table-row; +} +.profile-listing-cell { + display: table-cell; +} +.profile-listing-photo { + width: 48px; + height: 48px; + margin: 10px 0px; +} +#profile-listing-new-link-wrapper { + margin-bottom: 20px; +} +.profiles-content-wrapper #profile-edit-wrapper { + margin-left: -15px; + margin-right: -15px; +} +.profiles-content-wrapper #profile-edit-wrapper > .panel { + padding-left: 15px; + padding-right: 15px; +} +.profiles-content-wrapper #profile-photo-upload-section { + display: none; + margin-left: -15px; + margin-right: -15px; + margin-top: 15px; + padding: 15px; +} +#profile-photo-upload-close { + font-size: 14px; +} + +/* Settings */ +.section-subtitle-wrapper { + padding: 1px 10px; +} +.panel .section-subtitle-wrapper a.accordion-toggle:before { + font-family: FontAwesome; + content: "\f0d7"; + padding-right: 5px; +} +.panel .section-subtitle-wrapper a.accordion-toggle.collapsed:before { + font-family: FontAwesome; + content: "\f0da"; +} /* * Overwriting for transparency and other colors */ diff --git a/view/theme/frio/templates/field_input.tpl b/view/theme/frio/templates/field_input.tpl index 1813602713..c7b0bbfb23 100644 --- a/view/theme/frio/templates/field_input.tpl +++ b/view/theme/frio/templates/field_input.tpl @@ -1,7 +1,7 @@
      - + {{$field.3}}
      diff --git a/view/theme/frio/templates/field_textarea.tpl b/view/theme/frio/templates/field_textarea.tpl new file mode 100644 index 0000000000..e70e3cbb41 --- /dev/null +++ b/view/theme/frio/templates/field_textarea.tpl @@ -0,0 +1,7 @@ + +
      + + + {{$field.3}} +
      +
      diff --git a/view/theme/frio/templates/profile_edit.tpl b/view/theme/frio/templates/profile_edit.tpl new file mode 100644 index 0000000000..7286611d34 --- /dev/null +++ b/view/theme/frio/templates/profile_edit.tpl @@ -0,0 +1,331 @@ + +
      + {{include file="section_title.tpl" title=$banner}} + + {{* The actions dropdown which can performed to the current profile *}} + + + + +
      + + + +
      + +
      + + +
      + +
      + +
      +
      +
      +
      + + {{* Most of the Variables used below are arrays in the following style + 0 => Some kind of identifier (e.g. for the ID) + 1 => The label description + 2 => The input values + 3 => The additional help text (if available) + *}} + +
      + + + {{* Some hints to characteristics of the current profile (if available) *}} + {{if $is_default}} + + {{/if}} + + {{* friendica differs in $detailled_profile (all fields available and a short Version if this is variable false *}} + {{if $detailled_profile}} +
      + {{* The personal settings *}} +
      + + {{* for the $detailled_profile we use bootstraps collapsable panel-groups to have expandable groups *}} +
      +
      + {{include file="field_yesno.tpl" field=$details}} + + {{include file="field_input.tpl" field=$profile_name}} + + {{include file="field_input.tpl" field=$name}} + + {{include file="field_input.tpl" field=$pdesc}} + + +
      + + {{$gender}} +
      +
      + + {{$dob}} + + {{$hide_friends}} + +
      + +
      +
      +
      +
      +
      + + {{* The location settings *}} +
      + +
      +
      + {{include file="field_input.tpl" field=$address}} + + {{include file="field_input.tpl" field=$locality}} + + + {{include file="field_input.tpl" field=$postal_code}} + +
      + + +
      +
      + +
      + + +
      +
      + + {{include file="field_input.tpl" field=$hometown}} + +
      + +
      +
      +
      +
      +
      + + {{* The settings for relations *}} +
      + +
      +
      +
      + + {{$marital}} +
      +
      + + {{include file="field_input.tpl" field=$with}} + + {{include file="field_input.tpl" field=$howlong}} + +
      + + {{$sexual}} +
      +
      + +
      + +
      +
      +
      +
      +
      + + {{* The miscellanous other settings *}} +
      + +
      +
      + {{include file="field_input.tpl" field=$homepage}} + + {{include file="field_input.tpl" field=$pub_keywords}} + + {{include file="field_input.tpl" field=$prv_keywords}} + + {{include file="field_input.tpl" field=$politic}} + + {{include file="field_input.tpl" field=$religion}} + + + {{include file="field_textarea.tpl" field=$about}} + + {{include file="field_textarea.tpl" field=$contact}} + + {{include file="field_textarea.tpl" field=$interest}} + + {{include file="field_textarea.tpl" field=$likes}} + + {{include file="field_textarea.tpl" field=$dislikes}} + + {{include file="field_textarea.tpl" field=$music}} + + {{include file="field_textarea.tpl" field=$book}} + + {{include file="field_textarea.tpl" field=$tv}} + + {{include file="field_textarea.tpl" field=$film}} + + {{include file="field_textarea.tpl" field=$romance}} + + {{include file="field_textarea.tpl" field=$work}} + + {{include file="field_textarea.tpl" field=$education}} + +
      + +
      +
      +
      +
      +
      +
      + + {{else}} + {{* if $detailled_profile not available a short version of the setting page is displayed *}} + {{if $personal_account}} + {{include file="field_yesno.tpl" field=$details}} + {{/if}} + + {{include file="field_input.tpl" field=$profile_name}} + + {{include file="field_input.tpl" field=$name}} + + {{if $personal_account}} +
      + + {{$gender}} +
      +
      + + {{$dob}} + + {{/if}} + + {{include file="field_input.tpl" field=$homepage}} + + {{$hide_friends}} + + {{include file="field_input.tpl" field=$address}} + + {{include file="field_input.tpl" field=$locality}} + + + {{include file="field_input.tpl" field=$postal_code}} + +
      + + +
      +
      + +
      + + +
      +
      + + {{include file="field_input.tpl" field=$pub_keywords}} + + {{include file="field_input.tpl" field=$prv_keywords}} + + {{include file="field_textarea.tpl" field=$about}} + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + {{/if}} +
      +
      + + diff --git a/view/theme/frio/templates/profile_entry.tpl b/view/theme/frio/templates/profile_entry.tpl new file mode 100644 index 0000000000..fb5436fb52 --- /dev/null +++ b/view/theme/frio/templates/profile_entry.tpl @@ -0,0 +1,15 @@ + +
      +
      + {{$alt}} +
      +
      + +
      + {{$visible}} +
      +
      +
      + diff --git a/view/theme/frio/templates/profile_listing_header.tpl b/view/theme/frio/templates/profile_listing_header.tpl new file mode 100644 index 0000000000..7b612f959b --- /dev/null +++ b/view/theme/frio/templates/profile_listing_header.tpl @@ -0,0 +1,15 @@ + +
      +
      +

      {{$header}}

      +
      + +
      + +
      + {{$profiles}} +
      +
      +
      diff --git a/view/theme/frost-mobile/templates/profile_edit.tpl b/view/theme/frost-mobile/templates/profile_edit.tpl index 2855e8fb17..8d7407b09c 100644 --- a/view/theme/frost-mobile/templates/profile_edit.tpl +++ b/view/theme/frost-mobile/templates/profile_edit.tpl @@ -21,20 +21,20 @@
      - -
      *
      + +
      *
      - - + +
      - - + +
      @@ -46,10 +46,7 @@
      - -
      -{{$dob}} {{$age}} -
      +{{$dob}}
      @@ -62,45 +59,45 @@
      - - + +
      - - + +
      - - + +
      - - +
      - +
      - - + +
      @@ -113,10 +110,10 @@ {{$marital}}
      - - - - + + + +
      @@ -129,33 +126,33 @@
      - - + +
      - - + +
      - - + +
      - - -
      {{$lbl_pubdsc}}
      + + +
      {{$pub_keywords.3}}
      - - -
      {{$lbl_prvdsc}}
      + + +
      {{$prv_keywords.3}}
      @@ -166,10 +163,10 @@

      -{{$lbl_about}} +{{$about.1}}

      - +
      @@ -177,10 +174,10 @@

      -{{$lbl_hobbies}} +{{$interest.1}}

      - +
      @@ -188,10 +185,10 @@

      -{{$lbl_likes}} +{{$likes.1}}

      - +
      @@ -199,10 +196,10 @@

      -{{$lbl_dislikes}} +{{$dislikes.1}}

      - +
      @@ -210,10 +207,10 @@

      -{{$lbl_social}} +{{$contact.1}}

      - +
      @@ -227,20 +224,20 @@

      -{{$lbl_music}} +{{$music.1}}

      - +

      -{{$lbl_book}} +{{$book.1}}

      - +
      @@ -249,10 +246,10 @@

      -{{$lbl_tv}} +{{$tv.1}}

      - +
      @@ -261,10 +258,10 @@

      -{{$lbl_film}} +{{$film.1}}

      - +
      @@ -278,10 +275,10 @@

      -{{$lbl_love}} +{{$romance.1}}

      - +
      @@ -290,10 +287,10 @@

      -{{$lbl_work}} +{{$work.1}}

      - +
      @@ -302,10 +299,10 @@

      -{{$lbl_school}} +{{$education.1}}

      - +
      diff --git a/view/theme/frost/templates/profile_edit.tpl b/view/theme/frost/templates/profile_edit.tpl index a7c57c99a2..40a3c86a28 100644 --- a/view/theme/frost/templates/profile_edit.tpl +++ b/view/theme/frost/templates/profile_edit.tpl @@ -21,20 +21,20 @@
      - -
      *
      + +
      *
      - - + +
      - - + +
      @@ -46,10 +46,7 @@
      - -
      -{{$dob}} {{$age}} -
      +{{$dob}}
      @@ -62,45 +59,45 @@
      - - + +
      - - + +
      - - + +
      - - +
      - +
      - - + +
      @@ -113,10 +110,10 @@ {{$marital}}
      - - - - + + + +
      @@ -129,33 +126,33 @@
      - - + +
      - - + +
      - - + +
      - - -
      {{$lbl_pubdsc}}
      + + +
      {{$pub_keywords.3}}
      - - -
      {{$lbl_prvdsc}}
      + + +
      {{$prv_keywords.3}}
      @@ -166,10 +163,10 @@

      -{{$lbl_about}} +{{$about.1}}

      - +
      @@ -177,10 +174,10 @@

      -{{$lbl_hobbies}} +{{$interest.1}}

      - +
      @@ -188,10 +185,10 @@

      -{{$lbl_likes}} +{{$likes.1}}

      - +
      @@ -199,10 +196,10 @@

      -{{$lbl_dislikes}} +{{$dislikes.1}}

      - +
      @@ -210,10 +207,10 @@

      -{{$lbl_social}} +{{$contact.1}}

      - +
      @@ -227,20 +224,20 @@

      -{{$lbl_music}} +{{$music.1}}

      - +

      -{{$lbl_book}} +{{$book.1}}

      - +
      @@ -249,10 +246,10 @@

      -{{$lbl_tv}} +{{$tv.1}}

      - +
      @@ -261,10 +258,10 @@

      -{{$lbl_film}} +{{$film.1}}

      - +
      @@ -278,10 +275,10 @@

      -{{$lbl_love}} +{{$romance.1}}

      - +
      @@ -290,10 +287,10 @@

      -{{$lbl_work}} +{{$work.1}}

      - +
      @@ -302,10 +299,10 @@

      -{{$lbl_school}} +{{$education.1}}

      - +
      diff --git a/view/theme/vier/templates/profile_edit.tpl b/view/theme/vier/templates/profile_edit.tpl index 9270410561..fa2cd18576 100644 --- a/view/theme/vier/templates/profile_edit.tpl +++ b/view/theme/vier/templates/profile_edit.tpl @@ -29,7 +29,7 @@
      - + {{if $detailled_profile}} @@ -67,17 +67,17 @@ {{if $multi_profiles}}
      - -
      *
      + +
      *
      {{else}} - + {{/if}}
      - - + +
      @@ -88,51 +88,48 @@
      - - + +
      - - + +
      - -
      - {{$dob}} {{$age}} -
      + {{$dob}}
      {{$hide_friends}}
      -
      {{$lbl_about}}
      - +
      {{$about.1}}
      +
      -
      {{$lbl_social}}
      - +
      {{$contact.1}}
      +
      - - + +
      -
      {{$lbl_pubdsc}}
      +
      {{$pub_keywords.3}}
      - - + +
      -
      {{$lbl_prvdsc}}
      +
      {{$prv_keywords.3}}
      @@ -151,42 +148,42 @@
      {{$lbl_location_section}}
      - - + +
      - - + +
      - - + +
      - - +
      - +
      - - + +
      @@ -201,26 +198,26 @@
      - - + +
      - - + +
      -
      {{$lbl_likes}}
      - +
      {{$likes.1}}
      +
      -
      {{$lbl_dislikes}}
      - +
      {{$dislikes.1}}
      +
      @@ -241,27 +238,27 @@ {{$marital}}
      - - - - + + + +
      -
      {{$lbl_love}}
      - +
      {{$romance.1}}
      +
      -
      {{$lbl_work}}
      - +
      {{$work.1}}
      +
      -
      {{$lbl_school}}
      - +
      {{$education.1}}
      +
      @@ -279,32 +276,32 @@
      {{$pub_keywords.3}}
      - - -
      {{$lbl_prvdsc}}
      + + +
      {{$prv_keywords.3}}

      -{{$lbl_about}} +{{$about.1}}

      - +
      @@ -419,26 +413,26 @@
      - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + {{/if}}
      - + From e773da9ea26cc9eefa7daca3d2d7ff6478a8d35f Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Fri, 10 Jun 2016 11:29:23 +0200 Subject: [PATCH 446/485] frio + core: forgot to delete a comment --- mod/profiles.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/mod/profiles.php b/mod/profiles.php index a39fd95980..9cd1ed8a02 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -742,9 +742,6 @@ function profiles_content(&$a) { '$work' => array('work', t('Work/employment'), $r[0]['work']), '$education' => array('education', t('School/education'), $r[0]['education']), '$contact' => array('contact', t('Contact information and Social Networks'), $r[0]['contact']), - - //eigene - )); $arr = array('profile' => $r[0], 'entry' => $o); From f2e79e976d06689a9f7272e70441b3d222984175 Mon Sep 17 00:00:00 2001 From: Fabrixxm Date: Fri, 10 Jun 2016 11:50:52 +0200 Subject: [PATCH 447/485] set include/ folder base for 'Friendica' PSR4 namespace --- include/autoloader/autoload_psr4.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/autoloader/autoload_psr4.php b/include/autoloader/autoload_psr4.php index fe93afea21..d000ea28f6 100644 --- a/include/autoloader/autoload_psr4.php +++ b/include/autoloader/autoload_psr4.php @@ -6,4 +6,5 @@ $vendorDir = dirname(dirname(dirname(__FILE__)))."/library"; $baseDir = dirname($vendorDir); return array( + 'Friendica\\' => array($baseDir . '/include'), ); From 6c346b1ab64fefebe61be3ddf36cf48eccd52d69 Mon Sep 17 00:00:00 2001 From: Fabrixxm Date: Fri, 10 Jun 2016 11:52:01 +0200 Subject: [PATCH 448/485] Move `Config` and `PConfig` classes in `\Friendica\Core namespace` --- include/{ => Core}/Config.php | 4 ++-- include/{ => Core}/PConfig.php | 4 ++-- include/config.php | 7 +++---- 3 files changed, 7 insertions(+), 8 deletions(-) rename include/{ => Core}/Config.php (99%) rename include/{ => Core}/PConfig.php (99%) diff --git a/include/Config.php b/include/Core/Config.php similarity index 99% rename from include/Config.php rename to include/Core/Config.php index e08a7de747..bbae746b44 100644 --- a/include/Config.php +++ b/include/Core/Config.php @@ -1,7 +1,7 @@ Date: Fri, 10 Jun 2016 12:00:34 +0200 Subject: [PATCH 449/485] Add `$default_value` parameter to `Config::get()` and `PConfig::get()` --- include/Core/Config.php | 14 ++++++++------ include/Core/PConfig.php | 14 ++++++++------ include/config.php | 10 ++-------- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/include/Core/Config.php b/include/Core/Config.php index bbae746b44..b5d80c82e0 100644 --- a/include/Core/Config.php +++ b/include/Core/Config.php @@ -64,11 +64,13 @@ class Config { * The category of the configuration value * @param string $key * The configuration key to query - * @param boolean $refresh - * If true the config is loaded from the db and not from the cache + * @param mixed $default_value optional + * The value to return if key is not set (default: null) + * @param boolean $refresh optional + * If true the config is loaded from the db and not from the cache (default: false) * @return mixed Stored value or null if it does not exist */ - public static function get($family, $key, $refresh = false) { + public static function get($family, $key, $default_value=null, $refresh = false) { global $a; @@ -76,13 +78,13 @@ class Config { // Looking if the whole family isn't set if(isset($a->config[$family])) { if($a->config[$family] === '!!') { - return null; + return $default_value; } } if(isset($a->config[$family][$key])) { if($a->config[$family][$key] === '!!') { - return null; + return $default_value; } return $a->config[$family][$key]; } @@ -137,7 +139,7 @@ class Config { elseif (function_exists("xcache_set")) xcache_set($family."|".$key, '!!', 600);*/ } - return null; + return $default_value; } /** diff --git a/include/Core/PConfig.php b/include/Core/PConfig.php index 9ca608e76e..09c3c2a0b2 100644 --- a/include/Core/PConfig.php +++ b/include/Core/PConfig.php @@ -57,11 +57,13 @@ class PConfig { * The category of the configuration value * @param string $key * The configuration key to query - * @param boolean $refresh - * If true the config is loaded from the db and not from the cache + * @param mixed $default_value optional + * The value to return if key is not set (default: null) + * @param boolean $refresh optional + * If true the config is loaded from the db and not from the cache (default: false) * @return mixed Stored value or null if it does not exist */ - public static function get($uid, $family, $key, $refresh = false) { + public static function get($uid, $family, $key, $default_value = null, $refresh = false) { global $a; @@ -69,13 +71,13 @@ class PConfig { // Looking if the whole family isn't set if(isset($a->config[$uid][$family])) { if($a->config[$uid][$family] === '!!') { - return null; + return $default_value; } } if(isset($a->config[$uid][$family][$key])) { if($a->config[$uid][$family][$key] === '!!') { - return null; + return $default_value; } return $a->config[$uid][$family][$key]; } @@ -131,7 +133,7 @@ class PConfig { elseif (function_exists("xcache_set")) xcache_set($uid."|".$family."|".$key, '!!', 600);*/ } - return null; + return $default_value; } /** diff --git a/include/config.php b/include/config.php index c96651cdc6..c51db4ec7b 100644 --- a/include/config.php +++ b/include/config.php @@ -43,10 +43,7 @@ function load_config($family) { * @return mixed Stored value or false if it does not exist */ function get_config($family, $key, $refresh = false) { - $v = Config::get($family, $key, $refresh); - if(is_null($v)) - $v = false; - + $v = Config::get($family, $key, false, $refresh); return $v; } @@ -114,10 +111,7 @@ function load_pconfig($uid,$family) { * @return mixed Stored value or false if it does not exist */ function get_pconfig($uid, $family, $key, $refresh = false) { - $v = PConfig::get($uid, $family, $key, $refresh); - if(is_null($v)) - $v = false; - + $v = PConfig::get($uid, $family, $key, false, $refresh); return $v; } From db5438ab1a599147c3d50ada88584be02b272cf3 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Fri, 10 Jun 2016 20:34:25 +0200 Subject: [PATCH 450/485] frio: improvements in search behavior - search value woll be added to nav search input - focus on nav search input as main search - save search button appears in the second navbar if search is available - search heading appears in the second navbar - provide a mobile search by pressing the search icon - dirfind: heading distinguish between people and form search - some js fixes in theme.js --- mod/dirfind.php | 4 +- view/theme/frio/css/style.css | 17 ++++++++ view/theme/frio/js/theme.js | 54 ++++++++++++++++++++----- view/theme/frio/templates/nav.tpl | 13 +++++- view/theme/frio/templates/searchbox.tpl | 10 ++++- 5 files changed, 85 insertions(+), 13 deletions(-) diff --git a/mod/dirfind.php b/mod/dirfind.php index f193a5c45c..44f70d641e 100644 --- a/mod/dirfind.php +++ b/mod/dirfind.php @@ -33,6 +33,7 @@ function dirfind_content(&$a, $prefix = "") { if(strpos($search,'@') === 0) { $search = substr($search,1); + $header = sprintf( t('People Search - %s'), $search); if ((valid_email($search) AND validate_email($search)) OR (substr(normalise_link($search), 0, 7) == "http://")) { $user_data = probe_url($search); @@ -43,6 +44,7 @@ function dirfind_content(&$a, $prefix = "") { if(strpos($search,'!') === 0) { $search = substr($search,1); $community = true; + $header = sprintf( t('Forum Search - %s'), $search); } $o = ''; @@ -227,7 +229,7 @@ function dirfind_content(&$a, $prefix = "") { $tpl = get_markup_template('viewcontact_template.tpl'); $o .= replace_macros($tpl,array( - 'title' => sprintf( t('People Search - %s'), $search), + 'title' => $header, '$contacts' => $entries, '$paginate' => paginate($a), )); diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 0ecb56441d..49d78e1314 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -581,6 +581,9 @@ nav.navbar a { margin: 0px; padding: 10px 15px; } +#search-mobile .navbar-form { + margin: 0; +} #topbar-first #search-box .form-search { height: 25px; font-size: 13px; @@ -1531,6 +1534,11 @@ img.acpopup-img { /*margin-left: -15px;*/ padding: 0; } +#tabmenu .search-heading { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} ul.tabs { list-style: none; height: 100%; @@ -1661,6 +1669,15 @@ ul.dropdown-menu li:hover { color: $link_color; font-size: 20px; } +.search-content-wrapper > #search-header-wrapper { + display: none; +} +.search-content-wrapper > .section-title-wrapper { + display: none; +} +#navbar-button > #search-save-form > #search-save { + margin-top: 3px; +} /* Section-Content-Wrapper */ #search-header-wrapper { padding: 15px; diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js index 9be1b9456e..28221dcd0d 100644 --- a/view/theme/frio/js/theme.js +++ b/view/theme/frio/js/theme.js @@ -40,7 +40,7 @@ $(document).ready(function(){ $(".field.select > select, .field.custom > select").addClass("form-control"); // move the tabbar to the second nav bar - if( $("ul.tabbar")) { + if( $("ul.tabbar").length ) { $("ul.tabbar").appendTo("#topbar-second > .container > #tabmenu"); } @@ -50,7 +50,7 @@ $(document).ready(function(){ // to the friendica logo (the mask is in nav.tpl at the botom). To make it work we need to apply the // correct url. The only way which comes to my mind was to do this with js // So we apply the correct url (with the link to the id of the mask) after the page is loaded. - if($("#logo-img")) { + if($("#logo-img").length ) { var pageurl = "url('" + window.location.href + "#logo-mask')"; $("#logo-img").css({"mask": pageurl}); } @@ -66,7 +66,7 @@ $(document).ready(function(){ }); // add Jot botton to the scecond navbar - if( $("section #jotOpen")) { + if( $("section #jotOpen").length ) { $("section #jotOpen").appendTo("#topbar-second > .container > #navbar-button"); if( $("#jot-popup").is(":hidden")) $("#topbar-second > .container > #navbar-button #jotOpen").hide(); } @@ -94,13 +94,6 @@ $(document).ready(function(){ }); } }); - - // add search-heading to the scecond navbar - if( $(".search-heading")) { - $(".search-heading").appendTo("#topbar-second > .container > #tabmenu"); - } - - //$('ul.flex-nav').flexMenu(); @@ -120,6 +113,47 @@ $(document).ready(function(){ // initialize the bootstrap-select $('.selectpicker').selectpicker(); + // add search-heading to the seccond navbar + if( $(".search-heading").length) { + $(".search-heading").appendTo("#topbar-second > .container > #tabmenu"); + } + + // add search results heading to the second navbar + // and insert the search value to the top nav search input + if( $(".search-content-wrapper").length ) { + // get the text of the heading (we catch the plain text because we don't + // want to have a h4 heading in the navbar + var searchText = $(".section-title-wrapper > h2").text(); + // insert the plain text in a

      heading and give it a class + var newText = '

      '+searchText+'

      '; + // append the new heading to the navbar + $("#topbar-second > .container > #tabmenu").append(newText); + + // try to get the value of the original search input to insert it + // as value in the nav-search-input + var searchValue = $("#search-wrapper .form-group-search input").val(); + + // if the orignal search value isn't available use the location path as value + if( typeof searchValue === "undefined") { + // get the location path + var urlPath = window.location.search + // and split it up in its parts + var splitPath = urlPath.split(/(\?search?=)(.*$)/); + + if(typeof splitPath[2] !== 'undefined') { + // decode the path (e.g to decode %40 to the character @) + var searchValue = decodeURIComponent(splitPath[2]); + } + } + + if( typeof searchValue !== "undefined") { + $("#nav-search-input-field").val(searchValue); + } + + } + + // move the "Save the search" button to the second navbar + $(".search-content-wrapper #search-save-form ").appendTo("#topbar-second > .container > #navbar-button"); }); //function commentOpenUI(obj, id) { diff --git a/view/theme/frio/templates/nav.tpl b/view/theme/frio/templates/nav.tpl index b8d5b2307e..f77f2da783 100644 --- a/view/theme/frio/templates/nav.tpl +++ b/view/theme/frio/templates/nav.tpl @@ -27,7 +27,7 @@ Toggle navigation - @@ -247,6 +247,17 @@ {{/if}} +{{* provide a a search input for mobile view, which expands by pressing the search icon *}} + + {{* The second navbar which contains nav points of the actual page - (nav points are actual handled by this theme throug js *}}
      diff --git a/view/theme/frio/templates/searchbox.tpl b/view/theme/frio/templates/searchbox.tpl index cc39ba6dc5..8f6354b269 100644 --- a/view/theme/frio/templates/searchbox.tpl +++ b/view/theme/frio/templates/searchbox.tpl @@ -1,4 +1,7 @@ +{{* important notes: The frio theme hides under certain conditions some parts of the templates through css. +Some parts of this template will be moved by js to other places (see theme.js) - E.g. the save-search button}} +
      @@ -15,7 +18,7 @@
      {{* The button to save searches *}} {{if $savedsearch}} - + {{/if}} {{* The select popup menu to select what kind of results the user would like to search for *}} @@ -43,4 +46,9 @@
      + {{* This form is inserted as experiment to move the search-save button to the second navbar with js *}} +
      + + +
      From 53fb8b1181b279e234d60e332fd0b52f8bb5e63e Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sat, 11 Jun 2016 01:28:25 +0200 Subject: [PATCH 451/485] frio: a short contact informations will be provided at the second nav bar by scrolling down (on pages where vcard is available) --- view/theme/frio/css/style.css | 45 +++ .../frameworks/jquery-scrollspy/README.md | 183 ++++++++++++ .../frameworks/jquery-scrollspy/bower.json | 18 ++ .../frameworks/jquery-scrollspy/gulpfile.js | 65 +++++ .../jquery-scrollspy/jquery-scrollspy.js | 267 ++++++++++++++++++ .../jquery-scrollspy/jquery-scrollspy.min.js | 1 + .../frameworks/jquery-scrollspy/package.json | 21 ++ view/theme/frio/js/theme.js | 24 ++ view/theme/frio/templates/head.tpl | 1 + view/theme/frio/templates/nav.tpl | 2 +- view/theme/frio/templates/profile_vcard.tpl | 12 + view/theme/frio/templates/vcard-widget.tpl | 14 + 12 files changed, 652 insertions(+), 1 deletion(-) create mode 100644 view/theme/frio/frameworks/jquery-scrollspy/README.md create mode 100644 view/theme/frio/frameworks/jquery-scrollspy/bower.json create mode 100644 view/theme/frio/frameworks/jquery-scrollspy/gulpfile.js create mode 100644 view/theme/frio/frameworks/jquery-scrollspy/jquery-scrollspy.js create mode 100644 view/theme/frio/frameworks/jquery-scrollspy/jquery-scrollspy.min.js create mode 100644 view/theme/frio/frameworks/jquery-scrollspy/package.json diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 0ecb56441d..591b82462b 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -941,6 +941,51 @@ aside .vcard #dfrn-request-link, aside .vcard #wallmessage-link { width: 100%; } +/* vcard-short-info */ +#vcard-short-info, +#nav-short-info .contact-wrapper { + margin-top: 3px; + height: 40px; + white-space: nowrap; + overflow: hidden; + padding-right: 20px; +} +#vcard-short-photo-wrapper img, +#nav-short-info .contact-wrapper img { + height: 34px; + width: 34px; +} +#vcard-short-desc, +#nav-short-info .contact-wrapper .media-body { + display: block; + height: 34px; + width: 100%; + text-overflow: ellipsis; +} +#vcard-short-desc > .media-heading, +#vcard-short-desc > .vcard-short-addr, +#nav-short-info .contact-wrapper .media-heading, +#nav-short-info .contact-wrapper #contact-entry-url-network { + text-overflow: ellipsis; + overflow: hidden; +} +#vcard-short-desc > .media-heading, +#nav-short-info .contact-wrapper .media-heading { + margin-bottom: 1px; + font-weight: bold; +} +#nav-short-info .contact-wrapper .media-heading a { + color: #555; + font-size: 14px !important; +} +#nav-short-info .contact-wrapper #contact-entry-url-network { + color: #777; +} +.network-content-wrapper > #viewcontact_wrapper-network, +#nav-short-info .contact-wrapper .contact-photo-overlay, +#nav-short-info .contact-wrapper .contact-actions{ + display: none +} aside #peoplefind-sidebar input, aside #follow-sidebar input { diff --git a/view/theme/frio/frameworks/jquery-scrollspy/README.md b/view/theme/frio/frameworks/jquery-scrollspy/README.md new file mode 100644 index 0000000000..5707f31fec --- /dev/null +++ b/view/theme/frio/frameworks/jquery-scrollspy/README.md @@ -0,0 +1,183 @@ +# NOTE: This is the latest version of ScrollSpy, which includes a ton of bug fixes and efficiency improvements. It's recommended that you use this version for now instead of the official (which hasn't been updated in a while). + +# jQuery-ScrollSpy + +An adaptation of the Mootools Scrollspy (http://davidwalsh.name/mootools-scrollspy) plugin for jQuery + +(c) 2011 Samuel Alexander (https://github.com/sxalexander/jquery-scrollspy) + +(c) 2015 SoftwareSpot + +Released under The MIT License. + +## Description: + +ScrollSpy is a simple jQuery plugin for firing events based on where the user has scrolled to in a page. + +## Homepage: + +https://github.com/softwarespot/jquery-scrollspy + +## Source: + +Hosted at GitHub; browse at: + + https://github.com/softwarespot/jquery-scrollspy/tree/master + +Or clone from: + + git://github.com/softwarespot/jquery-scrollspy.git + +## Usage: + +1. Insert the necessary elements in to your document's `` section, e.g.: + +```html + + +``` + +2. Initialise ScrollSpy once the DOM has been loaded: + +```javascript + +``` + +Check out the /examples for more info ! + +## Documentation: + +ScrollSpy function signature: +```javascript + $('container').scrollspy(options, action) +``` + +Default options for ScrollSpy: +```javascript +// default options for ScrollSpy +var defaults = { + // the offset to be applied to the left and top positions of the container + buffer: 0, + + // the element to apply the 'scrolling' event to (default window) + container: window, + + // the maximum value of the X or Y coordinate, depending on mode the selected + max: 0, + + // the maximum value of the X or Y coordinate, depending on mode the selected + min: 0, + + // whether to listen to the X (horizontal) or Y (vertical) scrolling + mode: 'vertical', + + // namespace to append to the 'scroll' event + namespace: 'scrollspy', + + // call the following callback function every time the user enters the min / max zone + onEnter: null, + + // call the following callback function every time the user leaves the min / max zone + onLeave: null, + + // call the following callback function every time the user leaves the top zone + onLeaveTop: null, + + // call the following callback function every time the user leaves the bottom zone + onLeaveBottom: null, + + // call the following callback function on each scroll event within the min and max parameters + onTick: null, + + // call the following callback function on each scroll event when the element is inside the viewable view port + onView: null +}; +``` + +Events are triggered by ScrollSpy are: + + scrollTick: Fires on each scroll event within the min and max parameters: + position: an object with the current X and Y position. + inside: a Boolean value for whether or not the user is within the min and max parameters + enters: the number of times the min / max has been entered. + leaves: the number of times the min / max has been left. + + scrollEnter: Fires every time the user enters the min / max zone: + position: an object with the current X and Y position. + enters: the number of times the min / max has been entered. + + scrollLeave: Fires every time the user leaves the min / max zone: + position: an object with the current X and Y position. + leaves: the number of times the min / max has been left. + + scrollLeaveTop: Fires every time the user leaves the top zone: + position: an object with the current X and Y position. + leaves: the number of times the min / max has been left. + + scrollLeaveBottom: Fires every time the user leaves the bottom zone: + position: an object with the current X and Y position. + leaves: the number of times the min / max has been left. + + scrollView: Fires every time the element is inside the viewable view port: + position: an object with the current X and Y position. + leaves: the number of times the min / max has been left. + +### Tidy up + +To destroy ScrollSpy for a particular container, simple pass 'destroy' as the action parameter. The only options that will be honoured are `container` and `namespace`. + +## A note about forking: + +By forking this project you hereby grant permission for any commits to your fork to be +merged back into this repository and, with attribution, be released under the terms of +the MIT License. + +## Contribute + +To contribute to the project, you will first need to install [node](https://nodejs.org) globally on your system. Once installation has completed, change the working directory to the plugin's location and run the following command: + +```shell + npm install +``` + +After installation of the local modules, you're ready to start contributing to the project. Before you submit your PR, please don't forget to call `gulp`, which will run against [JSHint](http://jshint.com) for any errors, but will also minify the plugin. + +##### Watch +Call the following command to start 'watching' for any changes to the main JavaScript file(s). This will automatically invoke JSHint and Uglify. +```shell + gulp watch +``` + +##### JSHint +Call the following command to invoke JSHint and check that the changes meet the requirements set in .jshintrc. +```shell + gulp jshint +``` + +##### Uglify +Call the following command to invoke Uglify, which will minify the main JavaScript file(s) and output to a .min.js file respectively. +```shell + gulp uglify +``` + +##### Build +Call the following command to invoke both JSHint and Uglify. +```shell + gulp +``` diff --git a/view/theme/frio/frameworks/jquery-scrollspy/bower.json b/view/theme/frio/frameworks/jquery-scrollspy/bower.json new file mode 100644 index 0000000000..8257ebdd83 --- /dev/null +++ b/view/theme/frio/frameworks/jquery-scrollspy/bower.json @@ -0,0 +1,18 @@ +{ + "name": "jquery-scrollspy", + "homepage": "https://github.com/sxalexander/jquery-scrollspy/", + "description": "scrollspy is a simple jQuery plugin for firing events based on where the user has scrolled to in a page.", + "main": "jquery-scrollspy.min.js", + "keywords": [ + "scrolling", + "scroll" + ], + "license": "MIT", + "ignore": [ + ], + "dependencies": { + "jquery": ">=1.7.0" + }, + "devDependencies": { + } +} diff --git a/view/theme/frio/frameworks/jquery-scrollspy/gulpfile.js b/view/theme/frio/frameworks/jquery-scrollspy/gulpfile.js new file mode 100644 index 0000000000..4c7563c5d7 --- /dev/null +++ b/view/theme/frio/frameworks/jquery-scrollspy/gulpfile.js @@ -0,0 +1,65 @@ +/* global require */ + +var gulp = require('gulp'); +var eslint = require('gulp-eslint'); +var gulpIf = require('gulp-if'); +var rename = require('gulp-rename'); +var uglify = require('gulp-uglify'); + +// Assets for the project +var Assets = { + main: './jquery-scrollspy.js', + minified: './jquery-scrollspy.min.js', + package: './package.json', + readme: './README.md', + source: './', +}; + +// See the uglify documentation for more details +var _uglifySettings = { + compress: { + comparisons: true, + conditionals: true, + /* jscs: disable */ + dead_code: true, + drop_console: true, + /* jscs: enable */ + unsafe: true, + unused: true, + }, +}; + +// Check the main js file(s) meets the following standards outlined in .eslintrc +gulp.task('eslint', function esLintTask() { + // Has ESLint fixed the file contents? + function isFixed(file) { + return file.eslint !== undefined && file.eslint !== null && file.eslint.fixed; + } + + return gulp.src(Assets.main) + .pipe(eslint({ + fix: true, + useEslintrc: '.eslintrc', + })) + .pipe(eslint.format()) + .pipe(gulpIf(isFixed, gulp.dest(Assets.source))); +}); + +// Uglify aka minify the main file +gulp.task('uglify', function uglifyTask() { + return gulp.src(Assets.main) + .pipe(uglify(_uglifySettings)) + .pipe(rename(Assets.minified)) + .pipe(gulp.dest(Assets.source)); +}); + +// Watch for changes to the main file +gulp.task('watch', function watchTask() { + gulp.watch(Assets.main, ['eslint', 'uglify']); +}); + +// Register the default task +gulp.task('default', ['eslint', 'uglify']); + +// 'gulp eslint' to check the syntax of the main js file(s) +// 'gulp uglify' to uglify the main file diff --git a/view/theme/frio/frameworks/jquery-scrollspy/jquery-scrollspy.js b/view/theme/frio/frameworks/jquery-scrollspy/jquery-scrollspy.js new file mode 100644 index 0000000000..4fd4f53a6a --- /dev/null +++ b/view/theme/frio/frameworks/jquery-scrollspy/jquery-scrollspy.js @@ -0,0 +1,267 @@ +/* + * jQuery ScrollSpy Plugin + * Author: @sxalexander, softwarespot + * Licensed under the MIT license + */ +(function jQueryScrollspy(window, $) { + // Plugin Logic + + $.fn.extend({ + scrollspy: function scrollspy(options, action) { + // If the options parameter is a string, then assume it's an 'action', therefore swap the parameters around + if (_isString(options)) { + var tempOptions = action; + + // Set the action as the option parameter + action = options; + + // Set to be the reference action pointed to + options = tempOptions; + } + + // override the default options with those passed to the plugin + options = $.extend({}, _defaults, options); + + // sanitize the following option with the default value if the predicate fails + _sanitizeOption(options, _defaults, 'container', _isObject); + + // cache the jQuery object + var $container = $(options.container); + + // check if it's a valid jQuery selector + if ($container.length === 0) { + return this; + } + + // sanitize the following option with the default value if the predicate fails + _sanitizeOption(options, _defaults, 'namespace', _isString); + + // check if the action is set to DESTROY/destroy + if (_isString(action) && action.toUpperCase() === 'DESTROY') { + $container.off('scroll.' + options.namespace); + return this; + } + + // sanitize the following options with the default values if the predicates fails + _sanitizeOption(options, _defaults, 'buffer', $.isNumeric); + _sanitizeOption(options, _defaults, 'max', $.isNumeric); + _sanitizeOption(options, _defaults, 'min', $.isNumeric); + + // callbacks + _sanitizeOption(options, _defaults, 'onEnter', $.isFunction); + _sanitizeOption(options, _defaults, 'onLeave', $.isFunction); + _sanitizeOption(options, _defaults, 'onLeaveTop', $.isFunction); + _sanitizeOption(options, _defaults, 'onLeaveBottom', $.isFunction); + _sanitizeOption(options, _defaults, 'onTick', $.isFunction); + + if ($.isFunction(options.max)) { + options.max = options.max(); + } + + if ($.isFunction(options.min)) { + options.min = options.min(); + } + + // check if the mode is set to VERTICAL/vertical + var isVertical = window.String(options.mode).toUpperCase() === 'VERTICAL'; + + return this.each(function each() { + // cache this + var _this = this; + + // cache the jQuery object + var $element = $(_this); + + // count the number of times a container is entered + var enters = 0; + + // determine if the scroll is with inside the container + var inside = false; + + // count the number of times a container is left + var leaves = 0; + + // create a scroll listener for the container + $container.on('scroll.' + options.namespace, function onScroll() { + // cache the jQuery object + var $this = $(this); + + // create a position object literal + var position = { + top: $this.scrollTop(), + left: $this.scrollLeft(), + }; + + var containerHeight = $container.height(); + + var max = options.max; + + var min = options.min; + + var xAndY = isVertical ? position.top + options.buffer : position.left + options.buffer; + + if (max === 0) { + // get the maximum value based on either the height or the outer width + max = isVertical ? containerHeight : $container.outerWidth() + $element.outerWidth(); + } + + // if we have reached the minimum bound, though are below the max + if (xAndY >= min && xAndY <= max) { + // trigger the 'scrollEnter' event + if (!inside) { + inside = true; + enters++; + + // trigger the 'scrollEnter' event + $element.trigger('scrollEnter', { + position: position, + }); + + // call the 'onEnter' function + if (options.onEnter !== null) { + options.onEnter(_this, position); + } + } + + // trigger the 'scrollTick' event + $element.trigger('scrollTick', { + position: position, + inside: inside, + enters: enters, + leaves: leaves, + }); + + // call the 'onTick' function + if (options.onTick !== null) { + options.onTick(_this, position, inside, enters, leaves); + } + } else { + if (inside) { + inside = false; + leaves++; + + // trigger the 'scrollLeave' event + $element.trigger('scrollLeave', { + position: position, + leaves: leaves, + }); + + // call the 'onLeave' function + if (options.onLeave !== null) { + options.onLeave(_this, position); + } + + if (xAndY <= min) { + // trigger the 'scrollLeaveTop' event + $element.trigger('scrollLeaveTop', { + position: position, + leaves: leaves, + }); + + // call the 'onLeaveTop' function + if (options.onLeaveTop !== null) { + options.onLeaveTop(_this, position); + } + } else if (xAndY >= max) { + // trigger the 'scrollLeaveBottom' event + $element.trigger('scrollLeaveBottom', { + position: position, + leaves: leaves, + }); + + // call the 'onLeaveBottom' function + if (options.onLeaveBottom !== null) { + options.onLeaveBottom(_this, position); + } + } + } else { + // Idea taken from: http://stackoverflow.com/questions/5353934/check-if-element-is-visible-on-screen + var containerScrollTop = $container.scrollTop(); + + // Get the element height + var elementHeight = $element.height(); + + // Get the element offset + var elementOffsetTop = $element.offset().top; + + if ((elementOffsetTop < (containerHeight + containerScrollTop)) && (elementOffsetTop > (containerScrollTop - elementHeight))) { + // trigger the 'scrollView' event + $element.trigger('scrollView', { + position: position, + }); + + // call the 'onView' function + if (options.onView !== null) { + options.onView(_this, position); + } + } + } + } + }); + }); + }, + }); + + // Fields (Private) + + // Defaults + + // default options + var _defaults = { + // the offset to be applied to the left and top positions of the container + buffer: 0, + + // the element to apply the 'scrolling' event to (default window) + container: window, + + // the maximum value of the X or Y coordinate, depending on mode the selected + max: 0, + + // the maximum value of the X or Y coordinate, depending on mode the selected + min: 0, + + // whether to listen to the X (horizontal) or Y (vertical) scrolling + mode: 'vertical', + + // namespace to append to the 'scroll' event + namespace: 'scrollspy', + + // call the following callback function every time the user enters the min / max zone + onEnter: null, + + // call the following callback function every time the user leaves the min / max zone + onLeave: null, + + // call the following callback function every time the user leaves the top zone + onLeaveTop: null, + + // call the following callback function every time the user leaves the bottom zone + onLeaveBottom: null, + + // call the following callback function on each scroll event within the min and max parameters + onTick: null, + + // call the following callback function on each scroll event when the element is inside the viewable view port + onView: null, + }; + + // Methods (Private) + + // check if a value is an object datatype + function _isObject(value) { + return $.type(value) === 'object'; + } + + // check if a value is a string datatype with a length greater than zero when whitespace is stripped + function _isString(value) { + return $.type(value) === 'string' && $.trim(value).length > 0; + } + + // check if an option is correctly formatted using a predicate; otherwise, return the default value + function _sanitizeOption(options, defaults, property, predicate) { + // set the property to the default value if the predicate returned false + if (!predicate(options[property])) { + options[property] = defaults[property]; + } + } +}(window, window.jQuery)); diff --git a/view/theme/frio/frameworks/jquery-scrollspy/jquery-scrollspy.min.js b/view/theme/frio/frameworks/jquery-scrollspy/jquery-scrollspy.min.js new file mode 100644 index 0000000000..2782536b36 --- /dev/null +++ b/view/theme/frio/frameworks/jquery-scrollspy/jquery-scrollspy.min.js @@ -0,0 +1 @@ +!function(e,n){function o(e){return"object"===n.type(e)}function i(e){return"string"===n.type(e)&&n.trim(e).length>0}function t(e,n,o,i){i(e[o])||(e[o]=n[o])}n.fn.extend({scrollspy:function(l,s){if(i(l)){var a=s;s=l,l=a}l=n.extend({},r,l),t(l,r,"container",o);var c=n(l.container);if(0===c.length)return this;if(t(l,r,"namespace",i),i(s)&&"DESTROY"===s.toUpperCase())return c.off("scroll."+l.namespace),this;t(l,r,"buffer",n.isNumeric),t(l,r,"max",n.isNumeric),t(l,r,"min",n.isNumeric),t(l,r,"onEnter",n.isFunction),t(l,r,"onLeave",n.isFunction),t(l,r,"onLeaveTop",n.isFunction),t(l,r,"onLeaveBottom",n.isFunction),t(l,r,"onTick",n.isFunction),n.isFunction(l.max)&&(l.max=l.max()),n.isFunction(l.min)&&(l.min=l.min());var u="VERTICAL"===e.String(l.mode).toUpperCase();return this.each(function(){var e=this,o=n(e),i=0,t=!1,r=0;c.on("scroll."+l.namespace,function(){var s=n(this),a={top:s.scrollTop(),left:s.scrollLeft()},f=c.height(),p=l.max,m=l.min,v=u?a.top+l.buffer:a.left+l.buffer;if(0===p&&(p=u?f:c.outerWidth()+o.outerWidth()),v>=m&&p>=v)t||(t=!0,i++,o.trigger("scrollEnter",{position:a}),null!==l.onEnter&&l.onEnter(e,a)),o.trigger("scrollTick",{position:a,inside:t,enters:i,leaves:r}),null!==l.onTick&&l.onTick(e,a,t,i,r);else if(t)t=!1,r++,o.trigger("scrollLeave",{position:a,leaves:r}),null!==l.onLeave&&l.onLeave(e,a),m>=v?(o.trigger("scrollLeaveTop",{position:a,leaves:r}),null!==l.onLeaveTop&&l.onLeaveTop(e,a)):v>=p&&(o.trigger("scrollLeaveBottom",{position:a,leaves:r}),null!==l.onLeaveBottom&&l.onLeaveBottom(e,a));else{var g=c.scrollTop(),L=o.height(),h=o.offset().top;f+g>h&&h>g-L&&(o.trigger("scrollView",{position:a}),null!==l.onView&&l.onView(e,a))}})})}});var r={buffer:0,container:e,max:0,min:0,mode:"vertical",namespace:"scrollspy",onEnter:null,onLeave:null,onLeaveTop:null,onLeaveBottom:null,onTick:null,onView:null}}(window,window.jQuery); \ No newline at end of file diff --git a/view/theme/frio/frameworks/jquery-scrollspy/package.json b/view/theme/frio/frameworks/jquery-scrollspy/package.json new file mode 100644 index 0000000000..27ca196630 --- /dev/null +++ b/view/theme/frio/frameworks/jquery-scrollspy/package.json @@ -0,0 +1,21 @@ +{ + "name": "jquery-scrollspy", + "version": "1.0.0", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/softwarespot/jquery-scrollspy.git" + }, + "devDependencies": { + "del": "^2.1.0", + "eslint": "^2.5.1", + "eslint-config-airbnb": "^6.2.0", + "gulp": "^3.9.1", + "gulp-eslint": "^2.0.0", + "gulp-if": "^2.0.0", + "gulp-rename": "~1.2.2", + "gulp-replace": "^0.5.4", + "gulp-uglify": "^1.5.3", + "merge2": "^1.0.1" + } +} diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js index 9be1b9456e..23c1f096e3 100644 --- a/view/theme/frio/js/theme.js +++ b/view/theme/frio/js/theme.js @@ -120,7 +120,31 @@ $(document).ready(function(){ // initialize the bootstrap-select $('.selectpicker').selectpicker(); + // append the vcard-short-info to the second nav after passing the element + // with .p-addr (vcard). Use scrollspy to get the scroll position. + if( $("aside .vcard .p-addr").length) { + $(".vcard .p-addr").scrollspy({ + min: $(".vcard .p-addr").position().top - 50, + onLeaveTop: function onLeave(element) { + $("#vcard-short-info").appendTo("#vcard-short-info-wrapper"); + $("#vcard-short-info").fadeOut(500); + }, + onEnter: function(element) { + $("#vcard-short-info").appendTo("#nav-short-info"); + $("#vcard-short-info").fadeIn(500); + }, + }); + } + + // move the forum contact information of the network page into the second navbar + if( $(".network-content-wrapper > #viewcontact_wrapper-network").length) { + // get the contact-wrapper element and append it to the second nav bar + // Note: We need the first() element with this class since at the present time we + // store also the js template information in the html code and thats why + // there are two elements with this class but we don't want the js template + $(".network-content-wrapper > #viewcontact_wrapper-network .contact-wrapper").first().appendTo("#nav-short-info"); + } }); //function commentOpenUI(obj, id) { // $(document).unbind( "click.commentOpen", handler ); diff --git a/view/theme/frio/templates/head.tpl b/view/theme/frio/templates/head.tpl index afdfaa7857..57148736d4 100644 --- a/view/theme/frio/templates/head.tpl +++ b/view/theme/frio/templates/head.tpl @@ -73,6 +73,7 @@ + {{* own js files *}} diff --git a/view/theme/frio/templates/nav.tpl b/view/theme/frio/templates/nav.tpl index b8d5b2307e..78f1024d3e 100644 --- a/view/theme/frio/templates/nav.tpl +++ b/view/theme/frio/templates/nav.tpl @@ -250,7 +250,7 @@ {{* The second navbar which contains nav points of the actual page - (nav points are actual handled by this theme throug js *}}
      - +
      diff --git a/view/theme/frio/templates/profile_vcard.tpl b/view/theme/frio/templates/profile_vcard.tpl index e0babdc3a5..de448b82b4 100644 --- a/view/theme/frio/templates/profile_vcard.tpl +++ b/view/theme/frio/templates/profile_vcard.tpl @@ -20,7 +20,19 @@
      + {{* The short information which will appended to the second navbar by scrollspy *}} +
      diff --git a/view/theme/frio/templates/vcard-widget.tpl b/view/theme/frio/templates/vcard-widget.tpl index e5aebecc83..472dced2b4 100644 --- a/view/theme/frio/templates/vcard-widget.tpl +++ b/view/theme/frio/templates/vcard-widget.tpl @@ -6,6 +6,20 @@
      {{$name}}
      {{/if}} + {{* The short information which will appended to the second navbar by scrollspy *}} + +
      {{$name}}
      {{if $addr}}
      {{$addr}}
      {{/if}} From 3c49a410e58fef7c9296f4662fec55e88e6170e4 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sat, 11 Jun 2016 01:32:29 +0200 Subject: [PATCH 452/485] frio: a short contact informations - add border-radius to profile picture (this fits better to the rest of the profile pictures) --- view/theme/frio/css/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 591b82462b..54b1e2c4ef 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -954,6 +954,7 @@ aside .vcard #wallmessage-link { #nav-short-info .contact-wrapper img { height: 34px; width: 34px; + border-radius: 3px; } #vcard-short-desc, #nav-short-info .contact-wrapper .media-body { From 70f97a3536d1b0d1183627d51d097c3dacffe775 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sat, 11 Jun 2016 01:40:28 +0200 Subject: [PATCH 453/485] frio: a short contact informations - better fadeOut handling --- view/theme/frio/js/theme.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js index 23c1f096e3..418c233e72 100644 --- a/view/theme/frio/js/theme.js +++ b/view/theme/frio/js/theme.js @@ -126,8 +126,10 @@ $(document).ready(function(){ $(".vcard .p-addr").scrollspy({ min: $(".vcard .p-addr").position().top - 50, onLeaveTop: function onLeave(element) { - $("#vcard-short-info").appendTo("#vcard-short-info-wrapper"); - $("#vcard-short-info").fadeOut(500); + $("#vcard-short-info").fadeOut(500, function () { + $("#vcard-short-info").appendTo("#vcard-short-info-wrapper"); + }); + }, onEnter: function(element) { From fbb905a5c2fa4dd4435ef2140481bfa08ccba301 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Sat, 11 Jun 2016 09:27:00 +0200 Subject: [PATCH 454/485] Move Nginx reverse proxy sample from INSTALL to separate file --- INSTALL.txt | 12 ----------- mods/sample-nginx-reverse-proxy.config | 30 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 mods/sample-nginx-reverse-proxy.config diff --git a/INSTALL.txt b/INSTALL.txt index 71671af3f1..08bd41c8d3 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -154,18 +154,6 @@ Friendica also supports a number on non-standard headers in common use. X-Forwarded-Ssl: on It is however preferable to use the standard approach if configuring a new server. -In Nginx, this can be done as follows (assuming Friendica runs on port 8080). - - location / { - if ( $scheme != https ) { # Force Redirect to HTTPS - return 302 https://$host$uri; - } - proxy_pass http://localhost:8080; - proxy_redirect off; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Forwarded "for=$proxy_add_x_forwarded_for; proto=$scheme"; - } ##################################################################### diff --git a/mods/sample-nginx-reverse-proxy.config b/mods/sample-nginx-reverse-proxy.config new file mode 100644 index 0000000000..fbbbc48802 --- /dev/null +++ b/mods/sample-nginx-reverse-proxy.config @@ -0,0 +1,30 @@ +# +# Example of NGINX as reverse-proxy terminating an HTTPS connection. +# +# This is not a complete NGINX config. +# +# Please refer to NGINX docs +# + +... + +server { + + ... + + # assuming Friendica runs on port 8080 + location / { + if ( $scheme != https ) { + # Force Redirect to HTTPS + return 302 https://$host$uri; + } + proxy_pass http://localhost:8080; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Forwarded "for=$proxy_add_x_forwarded_for; proto=$scheme"; + } + + ... + +} From f8c62f04079fba8795a83771c5c3615e233ba5ca Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Sat, 11 Jun 2016 09:40:50 +0200 Subject: [PATCH 455/485] Frio: make jslint more happy --- view/theme/frio/js/modal.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/view/theme/frio/js/modal.js b/view/theme/frio/js/modal.js index f1efbd752e..973847509e 100644 --- a/view/theme/frio/js/modal.js +++ b/view/theme/frio/js/modal.js @@ -19,7 +19,7 @@ $(document).ready(function(){ // restore cached jot at its hidden position ("#jot-content") $("#jot-content").append(jotcache); // clear the jotcache - jotcache = '' + jotcache = ''; }); // Add Colorbox for viewing Network page images @@ -60,7 +60,7 @@ $(document).ready(function(){ // Open filebrowser for elements with the class "image-select" // The following part handles the filebrowser for field_fileinput.tpl - $("body").on("click", ".image-select", function(e){ + $("body").on("click", ".image-select", function(){ // set a extra attribute to mark the clicked button this.setAttribute("image-input", "select"); Dialog.doImageBrowser("input"); @@ -69,7 +69,7 @@ $(document).ready(function(){ // Insert filebrowser images into the input field (field_fileinput.tpl) $("body").on("fbrowser.image.input", function(e, filename, embedcode, id, img) { // select the clicked button by it's attribute - var elm = $("[image-input='select']") + var elm = $("[image-input='select']"); // select the input field which belongs to this button var input = elm.parent(".input-group").children("input"); // remove the special indicator attribut from the button @@ -134,7 +134,7 @@ Dialog._load = function(url) { // initialize the filebrowser var jsbrowser = function() { FileBrowser.init(nickname, type, hash); - } + }; loadScript("view/theme/frio/js/filebrowser.js", jsbrowser); }; @@ -166,7 +166,7 @@ function loadModalTitle() { function addToModal(url) { var char = qOrAmp(url); - var url = url + char + 'mode=none'; + url = url + char + 'mode=none'; var modal = $('#modal').modal(); modal @@ -182,7 +182,7 @@ function addToModal(url) { loadModalTitle(); } }); -}; +} // function to load the html from the edit post page into // the jot modal @@ -201,7 +201,7 @@ function editpost(url) { } var modal = $('#jot-modal').modal(); - var url = url + " #profile-jot-form"; + url = url + " #profile-jot-form"; //var rand_num = random_digits(12); $(".jot-nav #jot-perms-lnk").parent("li").hide(); From 2ec06c1a38bc28ea32ed791f1fb85df697b3474d Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Sat, 11 Jun 2016 09:58:26 +0200 Subject: [PATCH 456/485] use js/modal.js to show Login page in modal --- view/theme/frio/js/modal.js | 10 ++++++++-- view/theme/frio/templates/nav.tpl | 22 +++++----------------- view/theme/frio/templates/nav_head.tpl | 8 +------- 3 files changed, 14 insertions(+), 26 deletions(-) diff --git a/view/theme/frio/js/modal.js b/view/theme/frio/js/modal.js index 973847509e..0a881f10f6 100644 --- a/view/theme/frio/js/modal.js +++ b/view/theme/frio/js/modal.js @@ -50,7 +50,11 @@ $(document).ready(function(){ } }); - + // Navbar login + $("body").on("click", "#nav-login", function(e){ + e.preventDefault(); + Dialog.show(this.href, this.dataset.originalTitle || this.title); + }); // Jot nav menu. $("body").on("click", "#jot-modal .jot-nav li a", function(e){ @@ -81,8 +85,9 @@ $(document).ready(function(){ }); // overwrite Dialog.show from main js to load the filebrowser into a bs modal -Dialog.show = function(url) { +Dialog.show = function(url, title="") { var modal = $('#modal').modal(); + modal.find("#modal-header h4").html(title); modal .find('#modal-body') .load(url, function (responseText, textStatus) { @@ -129,6 +134,7 @@ Dialog._load = function(url) { // try to fetch the hash form the url var match = url.match(/fbrowser\/[a-z]+\/\?mode=none(.*)/); + if (match===null) return; //not fbrowser var hash = match[1]; // initialize the filebrowser diff --git a/view/theme/frio/templates/nav.tpl b/view/theme/frio/templates/nav.tpl index a3f479db99..a0ee088843 100644 --- a/view/theme/frio/templates/nav.tpl +++ b/view/theme/frio/templates/nav.tpl @@ -240,29 +240,17 @@
      - {{/if}} {{* The second navbar which contains nav points of the actual page - (nav points are actual handled by this theme throug js *}} diff --git a/view/theme/frio/templates/nav_head.tpl b/view/theme/frio/templates/nav_head.tpl index 13842bbe8a..d7b50a58d0 100644 --- a/view/theme/frio/templates/nav_head.tpl +++ b/view/theme/frio/templates/nav_head.tpl @@ -1,12 +1,6 @@ From eafad7145bafd5dbd913b82b9a4629b1445e5000 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sat, 11 Jun 2016 10:12:03 +0200 Subject: [PATCH 457/485] mod/admin.php: some clean up --- mod/admin.php | 133 ++++++++++++++++++++++++++------------------------ 1 file changed, 68 insertions(+), 65 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 2303d3b9c1..36b2ca730f 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -165,7 +165,7 @@ function admin_content(&$a) { /* get plugins admin page */ - $r = q("SELECT `name` FROM `addon` WHERE `plugin_admin`=1 ORDER BY `name`"); + $r = q("SELECT `name` FROM `addon` WHERE `plugin_admin` = 1 ORDER BY `name`"); $aside_tools['plugins_admin']=array(); foreach ($r as $h){ $plugin =$h['name']; @@ -271,7 +271,7 @@ function admin_page_federation(&$a) { // displayed on the stats page. $platforms = array('Friendica', 'Diaspora', '%%red%%', 'Hubzilla', 'GNU Social', 'StatusNet'); $colors = array('Friendica' => '#ffc018', // orange from the logo - 'Diaspora' => '#a1a1a1', // logo is black and white, makes a gray + 'Diaspora' => '#a1a1a1', // logo is black and white, makes a gray '%%red%%' => '#c50001', // fire red from the logo 'Hubzilla' => '#43488a', // blue from the logo 'GNU Social'=> '#a22430', // dark red from the logo @@ -282,17 +282,17 @@ function admin_page_federation(&$a) { foreach ($platforms as $p) { // get a total count for the platform, the name and version of the // highest version and the protocol tpe - $c = q('SELECT count(*) AS total, platform, network, version FROM gserver - WHERE platform LIKE "%s" AND last_contact > last_failure AND `version` != "" - ORDER BY version ASC;', $p); + $c = q('SELECT COUNT(*) AS `total`, `platform`, `network`, `version` FROM `gserver` + WHERE `platform` LIKE "%s" AND `last_contact` > `last_failure` AND `version` != "" + ORDER BY `version` ASC;', $p); $total = $total + $c[0]['total']; // what versions for that platform do we know at all? // again only the active nodes - $v = q('SELECT count(*) AS total, version FROM gserver - WHERE last_contact > last_failure AND platform LIKE "%s" AND `version` != "" - GROUP BY version - ORDER BY version;', $p); + $v = q('SELECT COUNT(*) AS `total, version` FROM `gserver` + WHERE `last_contact` > `last_failure` AND `platform` LIKE "%s" AND `version` != "" + GROUP BY `version` + ORDER BY `version`;', $p); // // clean up version numbers @@ -386,7 +386,10 @@ function admin_page_federation(&$a) { */ function admin_page_queue(&$a) { // get content from the queue table - $r = q("SELECT c.name,c.nurl,q.id,q.network,q.created,q.last from queue as q, contact as c where c.id=q.cid order by q.cid, q.created;"); + $r = q("SELECT `c`.`name`, `c`.`nurl`, `q`.`id`, `q`.`network`, `q`.`created`, `q`.`last` + FROM `queue` AS `q`, `contact` AS `c` + WHERE `c`.`id` = `q`.`cid` + ORDER BY `q`.`cid`, `q`.`created`;"); $t = get_markup_template("admin_queue.tpl"); return replace_macros($t, array( @@ -416,7 +419,7 @@ function admin_page_queue(&$a) { * @return string */ function admin_page_summary(&$a) { - $r = q("SELECT `page-flags`, COUNT(uid) as `count` FROM `user` GROUP BY `page-flags`"); + $r = q("SELECT `page-flags`, COUNT(`uid`) AS `count` FROM `user` GROUP BY `page-flags`"); $accounts = array( array(t('Normal Account'), 0), array(t('Soapbox Account'), 0), @@ -431,21 +434,21 @@ function admin_page_summary(&$a) { logger('accounts: '.print_r($accounts,true),LOGGER_DATA); - $r = q("SELECT COUNT(id) as `count` FROM `register`"); + $r = q("SELECT COUNT(`id`) AS `count` FROM `register`"); $pending = $r[0]['count']; - $r = q("select count(*) as total from deliverq where 1"); + $r = q("SELECT COUNT(*) AS `total` FROM `deliverq` WHERE 1"); $deliverq = (($r) ? $r[0]['total'] : 0); - $r = q("select count(*) as total from queue where 1"); + $r = q("SELECT COUNT(*) AS `total` FROM `queue` WHERE 1"); $queue = (($r) ? $r[0]['total'] : 0); - if (get_config('system','worker')) { - $r = q("select count(*) as total from workerqueue where 1"); - $workerqueue = (($r) ? $r[0]['total'] : 0); - } else { - $workerqueue = 0; - } + if (get_config('system','worker')) { + $r = q("SELECT COUNT(*) AS `total` FROM `workerqueue` WHERE 1"); + $workerqueue = (($r) ? $r[0]['total'] : 0); + } else { + $workerqueue = 0; + } // We can do better, but this is a quick queue status @@ -543,7 +546,7 @@ function admin_page_site_post(&$a) { set_config('system','url',$new_url); // send relocate - $users = q("SELECT uid FROM user WHERE account_removed = 0 AND account_expired = 0"); + $users = q("SELECT `uid` FROM `user` WHERE `account_removed` = 0 AND `account_expired` = 0"); foreach ($users as $user) { proc_run('php', 'include/notifier.php', 'relocate', $user['uid']); @@ -558,10 +561,10 @@ function admin_page_site_post(&$a) { $sitename = ((x($_POST,'sitename')) ? notags(trim($_POST['sitename'])) : ''); $hostname = ((x($_POST,'hostname')) ? notags(trim($_POST['hostname'])) : ''); $sender_email = ((x($_POST,'sender_email')) ? notags(trim($_POST['sender_email'])) : ''); - $banner = ((x($_POST,'banner')) ? trim($_POST['banner']) : false); + $banner = ((x($_POST,'banner')) ? trim($_POST['banner']) : false); $shortcut_icon = ((x($_POST,'shortcut_icon')) ? notags(trim($_POST['shortcut_icon'])) : ''); $touch_icon = ((x($_POST,'touch_icon')) ? notags(trim($_POST['touch_icon'])) : ''); - $info = ((x($_POST,'info')) ? trim($_POST['info']) : false); + $info = ((x($_POST,'info')) ? trim($_POST['info']) : false); $language = ((x($_POST,'language')) ? notags(trim($_POST['language'])) : ''); $theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : ''); $theme_mobile = ((x($_POST,'theme_mobile')) ? notags(trim($_POST['theme_mobile'])) : ''); @@ -647,41 +650,41 @@ function admin_page_site_post(&$a) { if($ssl_policy != intval(get_config('system','ssl_policy'))) { if($ssl_policy == SSL_POLICY_FULL) { - q("update `contact` set - `url` = replace(`url` , 'http:' , 'https:'), - `photo` = replace(`photo` , 'http:' , 'https:'), - `thumb` = replace(`thumb` , 'http:' , 'https:'), - `micro` = replace(`micro` , 'http:' , 'https:'), - `request` = replace(`request`, 'http:' , 'https:'), - `notify` = replace(`notify` , 'http:' , 'https:'), - `poll` = replace(`poll` , 'http:' , 'https:'), - `confirm` = replace(`confirm`, 'http:' , 'https:'), - `poco` = replace(`poco` , 'http:' , 'https:') - where `self` = 1" + q("UPDATE `contact` SET + `url` = REPLACE(`url` , 'http:' , 'https:'), + `photo` = REPLACE(`photo` , 'http:' , 'https:'), + `thumb` = REPLACE(`thumb` , 'http:' , 'https:'), + `micro` = REPLACE(`micro` , 'http:' , 'https:'), + `request` = REPLACE(`request`, 'http:' , 'https:'), + `notify` = REPLACE(`notify` , 'http:' , 'https:'), + `poll` = REPLACE(`poll` , 'http:' , 'https:'), + `confirm` = REPLACE(`confirm`, 'http:' , 'https:'), + `poco` = REPLACE(`poco` , 'http:' , 'https:') + WHERE `self` = 1" ); - q("update `profile` set - `photo` = replace(`photo` , 'http:' , 'https:'), - `thumb` = replace(`thumb` , 'http:' , 'https:') - where 1 " + q("UPDATE `profile` SET + `photo` = REPLACE(`photo` , 'http:' , 'https:'), + `thumb` = REPLACE(`thumb` , 'http:' , 'https:') + WHERE 1 " ); } elseif($ssl_policy == SSL_POLICY_SELFSIGN) { - q("update `contact` set - `url` = replace(`url` , 'https:' , 'http:'), - `photo` = replace(`photo` , 'https:' , 'http:'), - `thumb` = replace(`thumb` , 'https:' , 'http:'), - `micro` = replace(`micro` , 'https:' , 'http:'), - `request` = replace(`request`, 'https:' , 'http:'), - `notify` = replace(`notify` , 'https:' , 'http:'), - `poll` = replace(`poll` , 'https:' , 'http:'), - `confirm` = replace(`confirm`, 'https:' , 'http:'), - `poco` = replace(`poco` , 'https:' , 'http:') - where `self` = 1" + q("UPDATE `contact` SET + `url` = REPLACE(`url` , 'https:' , 'http:'), + `photo` = REPLACE(`photo` , 'https:' , 'http:'), + `thumb` = REPLACE(`thumb` , 'https:' , 'http:'), + `micro` = REPLACE(`micro` , 'https:' , 'http:'), + `request` = REPLACE(`request`, 'https:' , 'http:'), + `notify` = REPLACE(`notify` , 'https:' , 'http:'), + `poll` = REPLACE(`poll` , 'https:' , 'http:'), + `confirm` = REPLACE(`confirm`, 'https:' , 'http:'), + `poco` = REPLACE(`poco` , 'https:' , 'http:') + WHERE `self` = 1" ); - q("update `profile` set - `photo` = replace(`photo` , 'https:' , 'http:'), - `thumb` = replace(`thumb` , 'https:' , 'http:') - where 1 " + q("UPDATE `profile` SET + `photo` = REPLACE(`photo` , 'https:' , 'http:'), + `thumb` = REPLACE(`thumb` , 'https:' , 'http:') + WHERE 1 " ); } } @@ -876,7 +879,7 @@ function admin_page_site(&$a) { /* get user names to make the install a personal install of X */ $user_names = array(); $user_names['---'] = t('Multi user instance'); - $users = q("SELECT username, nickname FROM `user`"); + $users = q("SELECT `username`, `nickname` FROM `user`"); foreach ($users as $user) { $user_names[$user['nickname']] = $user['username']; } @@ -1084,7 +1087,7 @@ function admin_page_dbsync(&$a) { } $failed = array(); - $r = q("select k, v from config where `cat` = 'database' "); + $r = q("SELECT `k`, `v` FROM `config` WHERE `cat` = 'database' "); if(count($r)) { foreach($r as $rr) { $upd = intval(substr($rr['k'],7)); @@ -1123,7 +1126,7 @@ function admin_page_users_post(&$a){ $pending = (x($_POST, 'pending') ? $_POST['pending'] : array()); $users = (x($_POST, 'user') ? $_POST['user'] : array()); $nu_name = (x($_POST, 'new_user_name') ? $_POST['new_user_name'] : ''); - $nu_nickname = (x($_POST, 'new_user_nickname') ? $_POST['new_user_nickname'] : ''); + $nu_nickname = (x($_POST, 'new_user_nickname') ? $_POST['new_user_nickname'] : ''); $nu_email = (x($_POST, 'new_user_email') ? $_POST['new_user_email'] : ''); check_form_security_token_redirectOnErr('/admin/users', 'admin_users'); @@ -1180,7 +1183,7 @@ function admin_page_users_post(&$a){ if(x($_POST,'page_users_block')) { foreach($users as $uid){ - q("UPDATE `user` SET `blocked`=1-`blocked` WHERE `uid`=%s", + q("UPDATE `user` SET `blocked` = 1-`blocked` WHERE `uid` = %s", intval($uid) ); } @@ -1225,7 +1228,7 @@ function admin_page_users_post(&$a){ function admin_page_users(&$a){ if($a->argc>2) { $uid = $a->argv[3]; - $user = q("SELECT username, blocked FROM `user` WHERE `uid`=%d", intval($uid)); + $user = q("SELECT `username`, `blocked` FROM `user` WHERE `uid` = %d", intval($uid)); if(count($user)==0) { notice('User not found'.EOL); goaway('admin/users'); @@ -1242,7 +1245,7 @@ function admin_page_users(&$a){ }; break; case "block":{ check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't'); - q("UPDATE `user` SET `blocked`=%d WHERE `uid`=%s", + q("UPDATE `user` SET `blocked` = %d WHERE `uid` = %s", intval(1-$user[0]['blocked']), intval($uid) ); @@ -1262,7 +1265,7 @@ function admin_page_users(&$a){ /* get users */ - $total = q("SELECT count(*) as total FROM `user` where 1"); + $total = q("SELECT COUNT(*) AS `total` FROM `user` WHERE 1"); if(count($total)) { $a->set_pager_total($total[0]['total']); $a->set_pager_itemspage(100); @@ -1855,11 +1858,11 @@ function admin_page_logs_post(&$a) { function admin_page_logs(&$a){ $log_choices = array( - LOGGER_NORMAL => 'Normal', - LOGGER_TRACE => 'Trace', - LOGGER_DEBUG => 'Debug', - LOGGER_DATA => 'Data', - LOGGER_ALL => 'All' + LOGGER_NORMAL => 'Normal', + LOGGER_TRACE => 'Trace', + LOGGER_DEBUG => 'Debug', + LOGGER_DATA => 'Data', + LOGGER_ALL => 'All' ); $t = get_markup_template("admin_logs.tpl"); From ca269b6329696b1c53535b5725b829c9e7a5e418 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sat, 11 Jun 2016 10:44:52 +0200 Subject: [PATCH 458/485] unify heading of search results to "results for:" --- mod/contacts.php | 2 +- mod/directory.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mod/contacts.php b/mod/contacts.php index 4897663a05..3d8b44b719 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -787,7 +787,7 @@ function contacts_content(&$a) { '$total' => $total, '$search' => $search_hdr, '$desc' => t('Search your contacts'), - '$finding' => (($searching) ? t('Finding: ') . "'" . $search . "'" : ""), + '$finding' => (($searching) ? sprintf(t('Results for: %s'),$search) : ""), '$submit' => t('Find'), '$cmd' => $a->cmd, '$contacts' => $contacts, diff --git a/mod/directory.php b/mod/directory.php index 9050a050a6..a6a9cb8ab2 100644 --- a/mod/directory.php +++ b/mod/directory.php @@ -206,7 +206,7 @@ function directory_content(&$a) { '$gdirpath' => $gdirpath, '$desc' => t('Find on this site'), '$contacts' => $entries, - '$finding' => t('Finding:'), + '$finding' => t('Results for:'), '$findterm' => (strlen($search) ? $search : ""), '$title' => t('Site Directory'), '$submit' => t('Find'), From 35b6c93ba4c0d1791bcab8c9df478b47191de3f0 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sat, 11 Jun 2016 10:57:45 +0200 Subject: [PATCH 459/485] reset gitignore --- .gitignore | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..b300f579e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +favicon.* +.htconfig.php +.htpreconfig.php +\#* +include/jquery-1.4.2.min.js +*.log +*.out +*.version* +favicon.* +home.html +addon +*~ +robots.txt + +#ignore documentation, it should be newly built +doc/html + +#ignore reports, should be generted with every build +report/ + +#ignore config files from eclipse, we don't want IDE files in our repository +.project +.buildpath +.externalToolBuilders +.settings +#ignore OSX .DS_Store files +.DS_Store + +/nbproject/private/ + +#ignore smarty cache +/view/smarty3/compiled/ + +#ignore cache folders +/privacy_image_cache/ +/photo/ +/proxy/ +nbproject + +#ignore vagrant dir +.vagrant/ + +#ignore local folder +/local/ From c2f116f8fdbf85bcc99cd6a26baa72387d9844ae Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sat, 11 Jun 2016 17:43:02 +0200 Subject: [PATCH 460/485] frio short contact informations - some optical polishing --- view/theme/frio/css/style.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 96dae629de..cc667c2b99 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -947,11 +947,12 @@ aside .vcard #wallmessage-link { /* vcard-short-info */ #vcard-short-info, #nav-short-info .contact-wrapper { - margin-top: 3px; + margin-top: 2px; height: 40px; white-space: nowrap; overflow: hidden; padding-right: 20px; + margin-left: -14px; } #vcard-short-photo-wrapper img, #nav-short-info .contact-wrapper img { @@ -982,8 +983,10 @@ aside .vcard #wallmessage-link { color: #555; font-size: 14px !important; } +#vcard-short-desc > .vcard-short-addr, #nav-short-info .contact-wrapper #contact-entry-url-network { color: #777; + font-size: 12px; } .network-content-wrapper > #viewcontact_wrapper-network, #nav-short-info .contact-wrapper .contact-photo-overlay, From 8ac7575d5b6d3c3176ec7de15894b1176cbf5bd8 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sat, 11 Jun 2016 18:51:20 +0200 Subject: [PATCH 461/485] frio: closed profile setting sections on page load --- view/theme/frio/templates/profile_edit.tpl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/view/theme/frio/templates/profile_edit.tpl b/view/theme/frio/templates/profile_edit.tpl index 7286611d34..09dfc33f2f 100644 --- a/view/theme/frio/templates/profile_edit.tpl +++ b/view/theme/frio/templates/profile_edit.tpl @@ -74,13 +74,13 @@
      {{* for the $detailled_profile we use bootstraps collapsable panel-groups to have expandable groups *}} -
      +
      {{include file="field_yesno.tpl" field=$details}} @@ -113,7 +113,7 @@