This commit is contained in:
Andrew Manning 2016-06-20 13:06:32 -04:00
commit f4d9d34bbc
47 changed files with 22981 additions and 1200 deletions

View file

@ -34,6 +34,7 @@ Hubzilla 1.8
Apps:
Synchronise app list with changes to system apps
Preserve existing app categories on app updates/edits
Regression: fixed translated system app names
Architecture:
Provide autoloaded class files and libraries for plugins.
Further refactoring of session driver to sort out some cookie anomolies
@ -61,6 +62,9 @@ Hubzilla 1.8
Block 'sys' channels from being 'random profile' candidates
DB update failed email could be sent in the wrong language under rare circumstances
Openid remote authentication used incorrect namespace
URL attached to profile "things" was not linked, always showing the "thing" manage page
New connection wasn't added to default privacy group when "auto-accept" was enabled
Regression: iconfig sharing wasn't working properly
Plugins:
CalDAV/CardDAV plugin provided
Issue sending Diaspora 'like' activities from sources that did not propagate the DCV

View file

@ -26,7 +26,7 @@ class Thing extends \Zotlabs\Web\Controller {
$verb = escape_tags($_REQUEST['verb']);
$activity = intval($_REQUEST['activity']);
$profile_guid = escape_tags($_REQUEST['profile_assign']);
$url = $_REQUEST['link'];
$url = $_REQUEST['url'];
$photo = $_REQUEST['img'];
$hash = random_string();

View file

@ -48,7 +48,7 @@ define ( 'PLATFORM_NAME', 'hubzilla' );
define ( 'STD_VERSION', '1.9' );
define ( 'ZOT_REVISION', 1.1 );
define ( 'DB_UPDATE_VERSION', 1177 );
define ( 'DB_UPDATE_VERSION', 1178 );
/**
@ -771,6 +771,7 @@ class App {
public static $groups;
public static $language;
public static $langsave;
public static $rtl = false;
public static $plugins_admin;
public static $module_loaded = false;
public static $query_string;
@ -2282,6 +2283,12 @@ function construct_page(&$a) {
$page = App::$page;
$profile = App::$profile;
// There's some experimental support for right-to-left text in the view/php/default.php page template.
// In v1.9 we started providing direction preference in the per language hstrings.php file
// This requires somebody with fluency in a RTL language to make happen
$page['direction'] = 0; // ((App::$rtl) ? 1 : 0);
header("Content-type: text/html; charset=utf-8");
// security headers - see https://securityheaders.io

View file

@ -14,6 +14,7 @@
<li>[img float=right]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg" style="float:right;" alt="Image/photo" /><br />
<div style="clear:both;"></div>
<li>[code]code[/code] <code>code</code><br />
<li>[code=xxx]syntax highlighted code[/code] <code>supported languages php, css, mysql, sql, abap, diff, html, perl, ruby, vbscript, avrc, dtd, java, xml, cpp, python, javascript, js, json, sh</code><br />
<li>[quote]quote[/quote] <blockquote>quote</blockquote><br />
<li>[quote=Author]Author? Me? No, no, no...[/quote] <br /><strong class="author">Author wrote:</strong><blockquote>Author? Me? No, no, no...</blockquote><br />
<li> [nobb] may be used to escape bbcode.</ul><br />
@ -83,7 +84,7 @@ or<br /><br />[dl terms="b"]<br />[*= First element term] First element descript
<li>[spoiler] for hiding spoilers<br /><br /></li>
<li>[rpost=title]Text to post[/rpost] The observer will be returned to their home hub to enter a post with the specified title and body. Both are optional</li>
<li>[qr]text to post[/qr] - create a QR code.</li>
<li>[qr]text to post[/qr] - create a QR code (if the qrator plugin is installed).</li>
<li>[toc] - create a table of content in a webpage. Please refer to the <a href="http://ndabas.github.io/toc/" target="_blank">original jquery toc</a> to get more explanations.
<ul>
<li>Optional param: 'data-toc'. If ommited the default is 'body'</li>

View file

@ -1,6 +1,7 @@
[h2]Database Tables[/h2]
[table]
[tr][th]Table[/th][th]Description[/th][/tr]
[tr][td][zrl=[baseurl]/help/database/db_abconfig]abconfig[/zrl][/td][td]arbitrary storage for connections of local channels[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_abook]abook[/zrl][/td][td]connections of local channels[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_account]account[/zrl][/td][td]service provider account[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_addon]addon[/zrl][/td][td]registered plugins[/td][/tr]
@ -8,6 +9,7 @@
[tr][td][zrl=[baseurl]/help/database/db_attach]attach[/zrl][/td][td]file attachments[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_auth_codes]auth_codes[/zrl][/td][td]OAuth usage[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_cache]cache[/zrl][/td][td]OEmbed cache[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_cal]cal[/zrl][/td][td]CalDAV containers for events[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_channel]channel[/zrl][/td][td]local channels[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_chat]chat[/zrl][/td][td]chat room content[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_chatpresence]chatpresence[/zrl][/td][td]channel presence information for chat[/td][/tr]
@ -16,17 +18,14 @@
[tr][td][zrl=[baseurl]/help/database/db_config]config[/zrl][/td][td]main configuration storage[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_conv]conv[/zrl][/td][td]Diaspora private messages meta conversation structure[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_event]event[/zrl][/td][td]Events[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_fcontact]fcontact[/zrl][/td][td]friend suggestion stuff (obsolete)[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_ffinder]ffinder[/zrl][/td][td]friend suggestion stuff (obsolete)[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_fserver]fserver[/zrl][/td][td]obsolete[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_fsuggest]fsuggest[/zrl][/td][td]friend suggestion stuff (unused)[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_group_member]group_member[/zrl][/td][td]privacy groups (collections), group info[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_groups]groups[/zrl][/td][td]privacy groups (collections), member info[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_hook]hook[/zrl][/td][td]plugin hook registry[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_hubloc]hubloc[/zrl][/td][td]xchan location storage, ties a hub location to an xchan[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_iconfig]iconfig[/zrl][/td][td]extensible arbitrary storage for items[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_issue]issue[/zrl][/td][td]future bug/issue database[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_item]item[/zrl][/td][td]all posts and webpages[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_item_id]item_id[/zrl][/td][td]other identifiers on other services for posts[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_item_id]item_id[/zrl][/td][td](deprecated by iconfig) other identifiers on other services for posts[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_likes]likes[/zrl][/td][td]likes of 'things'[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_mail]mail[/zrl][/td][td]private messages[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_menu]menu[/zrl][/td][td]webpage menu data[/td][/tr]
@ -48,7 +47,6 @@
[tr][td][zrl=[baseurl]/help/database/db_sign]sign[/zrl][/td][td]Diaspora signatures. To be phased out.[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_site]site[/zrl][/td][td]site table to find directory peers[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_source]source[/zrl][/td][td]channel sources data[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_spam]spam[/zrl][/td][td]unfinished[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_sys_perms]sys_perms[/zrl][/td][td]extensible permissions for OAuth[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_term]term[/zrl][/td][td]item taxonomy (categories, tags, etc.) table[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_tokens]tokens[/zrl][/td][td]OAuth usage[/td][/tr]
@ -60,6 +58,7 @@
[tr][td][zrl=[baseurl]/help/database/db_xconfig]xconfig[/zrl][/td][td]as pconfig but for channels with no local account[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_xign]xign[/zrl][/td][td]channels ignored by friend suggestions[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_xlink]xlink[/zrl][/td][td]"friends of friends" linkages derived from poco, also ratings storage[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_xperm]xperm[/zrl][/td][td]OAuth/OpenID-Connect extensible permissions permissions storage[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_xprof]xprof[/zrl][/td][td]if this hub is a directory server, contains basic public profile info of everybody in the network[/td][/tr]
[tr][td][zrl=[baseurl]/help/database/db_xtag]xtag[/zrl][/td][td]if this hub is a directory server, contains tags or interests of everybody in the network[/td][/tr]
[/table]

View file

@ -15,10 +15,6 @@
[/td][/tr]
[tr][td]abook_closeness[/td][td]"closeness" value for optional affinity tool, 0-99[/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]99[/td][td]
[/td][/tr]
[tr][td]abook_rating[/td][td]The channel owner's (public) rating of this connection -10 to +10, default 0 or unrated[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_rating_text[/td][td]The channel owner's (public) rating of this connection free form text[/td][td]text[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
[tr][td]abook_created[/td][td]Datetime this record was created[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
[tr][td]abook_updated[/td][td]Datetime this record was modified[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
@ -32,16 +28,27 @@
[tr][td]abook_profile[/td][td]profile.guid of profile to display to this connection if authenticated[/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
[tr][td]abook_blocked[/td][td]Bi-directional communications with this channel are blocked, regardless of other permissions. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_ignored[/td][td]Incoming communications from this channel are blocked, regardless of other permissions. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_hidden[/td][td]This connection will not be shown as a connection to anybody but the channel owner[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_archived[/td][td]This connection is likely non-functioning and the entry and conversations are preserved, but further polled communications will not be attempted. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_pending[/td][td]A connection request was received from this channel but has not been approved by the channel owner, public communications may still be visible but no additional permissions have been granted. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_unconnected[/td][td]currently unused. Projected usage is to indicate "one-way" connections which were insitgated on this end but are still pending on the remote end. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_self[/td][td]is a special case where the owner is the target. Every channel has one abook entry with abook_self and with a target abook_xchan set to channel.channel_hash . When this flag is present, abook_my_perms is the default permissions granted to all new connections and several other fields are unused.[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_feed[/td][td]indicates this connection is an RSS/Atom feed and may trigger special handling.[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_incl[/td][td]connection filter allow rules separated by LF[/td][td]text[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_excl[/td][td]connection filter deny rules separated by LF[/td][td]text[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_instance[/td][td]comma separated list of site urls of all channel clones that this connection is connected with (used only for singleton networks which don't support cloning)[/td][td]text[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[/table]

View file

@ -3,7 +3,7 @@
[/th][/tr]
[tr][td]id[/td][td][/td]generated index[td]int(11)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
[/td][/tr]
[tr][td]name[/td][td]plugin base (file)name[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[tr][td]aname[/td][td]plugin base (file)name[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]version[/td][td]currently unused[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
@ -11,7 +11,7 @@
[/td][/tr]
[tr][td]hidden[/td][td]currently unused[/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]timestamp[/td][td]file timestamp to check for reloads[/td][td]bigint(20)[/td][td]NO[/td][td][/td][td]0[/td][td]
[tr][td]tstamp[/td][td]file timestamp to check for reloads[/td][td]bigint(20)[/td][td]NO[/td][td][/td][td]0[/td][td]
[/td][/tr]
[tr][td]plugin_admin[/td][td]1 = has admin config, 0 = has no admin config[/td][td]tinyint(1)[/td][td]NO[/td][td][/td][td]0[/td][td]
[/td][/tr]

View file

@ -27,8 +27,20 @@
[/td][/tr]
[tr][td]app_page[/td][td]currently unused[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
[tr][td]app_requires[/td][td]currently unused[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[tr][td]app_requires[/td][td]access rules[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
[tr][td]app_created[/td][td]datetime of app creation[/td][td]datetime[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
[tr][td]app_edited[/td][td]datetime of last app edit[/td][td]datetime[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
[tr][td]app_deleted[/td][td]1 = deleted, 0 = normal[/td][td]int(11)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
[tr][td]app_system[/td][td]1 = imported system app, 0 = member created app[/td][td]int(11)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
[/table]
Storage for personal apps

View file

@ -29,9 +29,11 @@
[/td][/tr]
[tr][td]os_storage[/td][td]if 0, data contains content; if 1 data contains path to content (always 1 in hubzilla)[/td][td]tinyint[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]os_path[/td][td]under construction, store the system path[/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]display_path[/td][td]under construction, store the human readable path[/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]data[/td][td]file data or pathname to stored data if ATTACH_FLAG_OS[/td][td]longblob[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[tr][td]content[/td][td]file data or pathname to stored data if ATTACH_FLAG_OS[/td][td]longblob[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]created[/td][td]creation time[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]

View file

@ -35,6 +35,8 @@
[/td][/tr]
[tr][td]channel_dirdate[/td][td]time when directory was last pinged. Must do this once a month[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
[tr][td]channel_lastpost[/td][td]date of last post for this channel. May not be fully implemented[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
[tr][td]channel_deleted[/td][td]time when channel was deleted[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
[tr][td]channel_max_anon_mail[/td][td]unused[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]10[/td][td]
@ -95,6 +97,8 @@
[/td][/tr]
[tr][td]channel_system[/td][td]if 1, this is the special system channel on this site[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
[tr][td]channel_moved[/td][td]URL of relocated channel, making this instance abandoned if set[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
[/table]
Return to [zrl=[baseurl]/help/database]database documentation[/zrl]

View file

@ -11,7 +11,7 @@
[/td][/tr]
[tr][td]cp_status[/td][td]text status description e.g. "online"[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]cp_client[/td][td][/td]IP address of this client[td]char(128)[/td][td]NO[/td][td][/td][td][/td][td]
[tr][td]cp_client[/td][td]IP address of this client[/td][td]char(128)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
[/table]

View file

@ -7,7 +7,7 @@
[/td][/tr]
[tr][td]redirect_uri[/td][td][/td][td]varchar(200)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]name[/td][td][/td][td]text[/td][td]YES[/td][td][/td][td]NULL[/td][td]
[tr][td]clname[/td][td][/td][td]text[/td][td]YES[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]icon[/td][td][/td][td]text[/td][td]YES[/td][td][/td][td]NULL[/td][td]
[/td][/tr]

View file

@ -15,9 +15,9 @@
[/td][/tr]
[tr][td]edited[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]start[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[tr][td]dtstart[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]finish[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[tr][td]dtend[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]summary[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
@ -25,13 +25,13 @@
[/td][/tr]
[tr][td]location[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]type[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[tr][td]etype[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]nofinish[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]adjust[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]1[/td][td]
[/td][/tr]
[tr][td]ignore[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[tr][td]dismissed[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]allow_cid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
@ -41,6 +41,24 @@
[/td][/tr]
[tr][td]deny_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]event_status[/td][td][/td][td]charr(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]event_status_date[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]event_percent[/td][td][/td][td]smallint(6)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]event_repeat[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]event_sequence[/td][td][/td][td]smallint[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]event_priority[/td][td][/td][td]smallint[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]event_vdata[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]cal_id[/td][td][/td][td]int(10)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[/table]
Return to [zrl=[baseurl]/help/database]database documentation[/zrl]

View file

@ -11,7 +11,7 @@
[/td][/tr]
[tr][td]deleted[/td][td]1 indicates the group has been deleted[/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]name[/td][td]human readable name of group[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[tr][td]gname[/td][td]human readable name of group[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[/table]

View file

@ -7,9 +7,11 @@
[/td][/tr]
[tr][td]file[/td][td]relative filename of hook handler[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]function[/td][td]function name of hook handler[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[tr][td]fn[/td][td]function name of hook handler[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]priority[/td][td]not yet implemented - can be used to sort conflicts in hook handling by calling handlers in priority order[/td][td]int(11) unsigned[/td][td]NO[/td][td][/td][td]0[/td][td]
[tr][td]priority[/td][td]can be used to sort conflicts in hook handling by calling handlers in priority order[/td][td]int(11) unsigned[/td][td]NO[/td][td][/td][td]0[/td][td]
[/td][/tr]
[tr][td]hook_version[/td][td]version 0 hooks must have two arguments, the App and the hook data. version 1 hooks have 1 argument - the hook data[/td][td]int(11) unsigned[/td][td]NO[/td][td][/td][td]0[/td][td]
[/td][/tr]
[/table]

View file

@ -51,7 +51,7 @@
[/td][/tr]
[tr][td]obj_type[/td][td]ActivityStreams object type (old style URI)[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
[tr][td]object[/td][td]JSON encoded object structure unless it is an implied object (normal post)[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[tr][td]obj[/td][td]JSON encoded object structure unless it is an implied object (normal post)[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]tgt_type[/td][td]ActivityStreams target type if applicable (URI)[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]

View file

@ -5,7 +5,7 @@
[/td][/tr]
[tr][td]hash[/td][td][/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]name[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[tr][td]xname[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]url[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
@ -25,7 +25,7 @@
[/td][/tr]
[tr][td]seen[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]type[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[tr][td]ntype[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]verb[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]

View file

@ -23,15 +23,15 @@
[/td][/tr]
[tr][td]filename[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]type[/td][td][/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td]image/jpeg[/td][td]
[tr][td]mimetype[/td][td][/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td]image/jpeg[/td][td]
[/td][/tr]
[tr][td]height[/td][td][/td][td]smallint(6)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]width[/td][td][/td][td]smallint(6)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]size[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[tr][td]filesize[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]data[/td][td][/td][td]mediumblob[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[tr][td]content[/td][td][/td][td]mediumblob[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]scale[/td][td][/td][td]tinyint(3)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]

View file

@ -15,7 +15,7 @@
[/td][/tr]
[tr][td]hide_friends[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]name[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[tr][td]fullname[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]pdesc[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
@ -41,7 +41,7 @@
[/td][/tr]
[tr][td]marital[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]with[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[tr][td]partner[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]howlong[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
@ -73,7 +73,7 @@
[/td][/tr]
[tr][td]romance[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]work[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[tr][td]employment[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]education[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]

View file

@ -11,7 +11,7 @@
[/td][/tr]
[tr][td]otype[/td][td]type of linked thing[/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]type[/td][td]taxonomy type (See Tag/term types in boot.php)[/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[tr][td]ttype[/td][td]taxonomy type (See Tag/term types in boot.php)[/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
[tr][td]term[/td][td]the actual taxonomy term[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]

View file

@ -423,6 +423,8 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
$observer = array();
$dosync = ((array_key_exists('nosync',$arr) && $arr['nosync']) ? 0 : 1);
if($observer_hash) {
$x = q("select * from xchan where xchan_hash = '%s' limit 1",
dbesc($observer_hash)
@ -829,6 +831,8 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
if($arr['description'])
$args['description'] = $arr['description'];
$args['deliver'] = $dosync;
$p = photo_upload($channel,$observer,$args);
if($p['success']) {
$ret['body'] = $p['body'];
@ -865,10 +869,12 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
call_hooks('photo_upload_end',$ret);
}
if($dosync) {
$sync = attach_export_data($channel,$hash);
if($sync)
build_sync_packet($channel['channel_id'],array('file' => array($sync)));
}
return $ret;
}

View file

@ -493,7 +493,7 @@ function bb_code($match) {
function bb_highlight($match) {
if(in_array(strtolower($match[1]),['php','css','mysql','sql','abap','diff','html','perl','ruby',
'vbscript','avrc','dtd','java','xml','cpp','python','javascript','js','sh']))
'vbscript','avrc','dtd','java','xml','cpp','python','javascript','js','json','sh']))
return text_highlight($match[2],strtolower($match[1]));
return $match[0];
}

View file

@ -1224,6 +1224,7 @@ function advanced_profile(&$a) {
$things = get_things(App::$profile['profile_guid'],App::$profile['profile_uid']);
// logger('mod_profile: things: ' . print_r($things,true), LOGGER_DATA);
return replace_macros($tpl, array(

View file

@ -17,7 +17,7 @@ function group_add($uid,$name,$public = 0) {
$z = q("SELECT * FROM `groups` WHERE `id` = %d LIMIT 1",
intval($r)
);
if(count($z) && $z[0]['deleted']) {
if(($z) && $z[0]['deleted']) {
/*$r = q("UPDATE `groups` SET `deleted` = 0 WHERE `uid` = %d AND `gname` = '%s' LIMIT 1",
intval($uid),
dbesc($name)
@ -129,7 +129,7 @@ function group_byname($uid,$name) {
intval($uid),
dbesc($name)
);
if(count($r))
if($r)
return $r[0]['id'];
return false;
}
@ -178,11 +178,11 @@ function group_add_member($uid,$name,$member,$gid = 0) {
intval($gid),
dbesc($member)
);
if(count($r))
if($r)
return true; // You might question this, but
// we indicate success because the group member was in fact created
// -- It was just created at another time
if(! count($r))
if(! $r)
$r = q("INSERT INTO `group_member` (`uid`, `gid`, `xchan`)
VALUES( %d, %d, '%s' ) ",
intval($uid),
@ -205,7 +205,7 @@ function group_get_members($gid) {
intval(local_channel()),
intval(local_channel())
);
if(count($r))
if($r)
$ret = $r;
}
return $ret;
@ -218,7 +218,7 @@ function group_get_members_xchan($gid) {
intval($gid),
intval(local_channel())
);
if(count($r)) {
if($r) {
foreach($r as $rr) {
$ret[] = $rr['xchan'];
}
@ -236,7 +236,7 @@ function mini_group_select($uid,$group = '') {
intval($uid)
);
$grps[] = array('name' => '', 'hash' => '0', 'selected' => '');
if(count($r)) {
if($r) {
foreach($r as $rr) {
$grps[] = array('name' => $rr['gname'], 'id' => $rr['hash'], 'selected' => (($group == $rr['hash']) ? 'true' : ''));
}
@ -279,7 +279,7 @@ function group_side($every="connections",$each="group",$edit = false, $group_id
$member_of = groups_containing(local_channel(),$cid);
}
if(count($r)) {
if($r) {
foreach($r as $rr) {
$selected = (($group_id == $rr['id']) ? ' group-selected' : '');
@ -356,7 +356,7 @@ function groups_containing($uid,$c) {
);
$ret = array();
if(count($r)) {
if($r) {
foreach($r as $rr)
$ret[] = $rr['gid'];
}

View file

@ -29,6 +29,8 @@ function get_capath() {
* * \b nobody => only return the header
* * \b filep => stream resource to write body to. header and body are not returned when using this option.
* * \b custom => custom request method: e.g. 'PUT', 'DELETE'
* * \b cookiejar => cookie file (write)
* * \B cookiefile => cookie file (read)
*
* @return array an associative array with:
* * \e int \b return_code => HTTP return code or 0 if timeout or failure
@ -60,6 +62,8 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) {
@curl_setopt($ch, CURLOPT_HEADER, $false);
}
if(x($opts,'headers'))
@curl_setopt($ch, CURLOPT_HTTPHEADER, $opts['headers']);
@ -82,6 +86,11 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) {
@curl_setopt($ch, CURLOPT_USERPWD, $opts['http_auth']);
}
if(x($opts,'cookiejar'))
@curl_setopt($ch, CURLOPT_COOKIEJAR, $opts['cookiejar']);
if(x($opts,'cookiefile'))
@curl_setopt($ch, CURLOPT_COOKIEFILE, $opts['cookiefile']);
@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,
((x($opts,'novalidate') && intval($opts['novalidate'])) ? false : true));
@ -180,6 +189,10 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) {
*/
function z_post_url($url,$params, $redirects = 0, $opts = array()) {
// logger('url: ' . $url);
// logger('params: ' . print_r($params,true));
// logger('opts: ' . print_r($opts,true));
$ret = array('return_code' => 0, 'success' => false, 'header' => "", 'body' => "");
$ch = curl_init($url);
@ -205,14 +218,15 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) {
if(x($opts,'headers')) {
@curl_setopt($ch, CURLOPT_HTTPHEADER, $opts['headers']);
logger('headers: ' . print_r($opts['headers'],true) . 'redir: ' . $redirects);
}
if(x($opts,'nobody'))
@curl_setopt($ch, CURLOPT_NOBODY, $opts['nobody']);
if(x($opts,'custom'))
if(x($opts,'custom')) {
@curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $opts['custom']);
@curl_setopt($ch, CURLOPT_POST,0);
}
if(x($opts,'timeout') && intval($opts['timeout'])) {
@ -228,6 +242,12 @@ logger('headers: ' . print_r($opts['headers'],true) . 'redir: ' . $redirects);
@curl_setopt($ch, CURLOPT_USERPWD, $opts['http_auth']);
}
if(x($opts,'cookiejar'))
@curl_setopt($ch, CURLOPT_COOKIEJAR, $opts['cookiejar']);
if(x($opts,'cookiefile'))
@curl_setopt($ch, CURLOPT_COOKIEFILE, $opts['cookiefile']);
@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,
((x($opts,'novalidate') && intval($opts['novalidate'])) ? false : true));

View file

@ -41,6 +41,10 @@ function photo_upload($channel, $observer, $args) {
else
$visible = 0;
$deliver = true;
if(array_key_exists('deliver',$args))
$deliver = intval($args['deliver']);
// Set to default channel permissions. If the parent directory (album) has permissions set,
// use those instead. If we have specific permissions supplied, they take precedence over
// all other settings. 'allow_cid' being passed from an external source takes priority over channel settings.
@ -330,7 +334,7 @@ function photo_upload($channel, $observer, $args) {
if($item['mid'] === $item['parent_mid']) {
$item['body'] = $args['body'];
$item['body'] = $summary;
$item['obj_type'] = ACTIVITY_OBJ_PHOTO;
$item['obj'] = json_encode($object);
@ -355,14 +359,14 @@ function photo_upload($channel, $observer, $args) {
if(($item['edited'] > $r[0]['edited']) || $force) {
$item['id'] = $r[0]['id'];
$item['uid'] = $channel['channel_id'];
item_store_update($item);
item_store_update($item,false,$deliver);
continue;
}
}
else {
$item['aid'] = $channel['channel_account_id'];
$item['uid'] = $channel['channel_id'];
$item_result = item_store($item);
$item_result = item_store($item,false,$deliver);
}
}
}
@ -414,10 +418,10 @@ function photo_upload($channel, $observer, $args) {
$result = item_store($arr);
$result = item_store($arr,false,$deliver);
$item_id = $result['item_id'];
if($visible)
if($visible && $deliver)
Zotlabs\Daemon\Master::Summon(array('Notifier', 'wall-new', $item_id));
}

View file

@ -400,7 +400,7 @@ function get_things($profile_hash,$uid) {
if(! $things[$rr['obj_verb']])
$things[$rr['obj_verb']] = array();
$things[$rr['obj_verb']][] = array('term' => $rr['obj_term'],'url' => $rr['obj_url'],'img' => $rr['obj_imgurl'], 'profile' => $rr['profile_name'],'term_hash' => $rr['obj_obj'], 'likes' => $l,'like_count' => count($l),'like_label' => tt('Like','Likes',count($l),'noun'));
$things[$rr['obj_verb']][] = array('term' => $rr['obj_term'],'url' => $rr['obj_url'],'img' => $rr['obj_imgurl'], 'editurl' => z_root() . '/thing/' . $rr['obj_obj'], 'profile' => $rr['profile_name'],'term_hash' => $rr['obj_obj'], 'likes' => $l,'like_count' => count($l),'like_label' => tt('Like','Likes',count($l),'noun'));
}
$sorted_things = array();
if($things) {

View file

@ -2887,6 +2887,12 @@ function text_highlight($s,$lang) {
if($lang === 'js')
$lang = 'javascript';
if($lang === 'json') {
$lang = 'javascript';
if(! strpos(trim($s),"\n"))
$s = jindent($s);
}
if(! strpos('Text_Highlighter',get_include_path())) {
set_include_path(get_include_path() . PATH_SEPARATOR . 'library/Text_Highlighter');
}

View file

@ -199,6 +199,26 @@ CREATE TABLE IF NOT EXISTS `cache` (
PRIMARY KEY (`k`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `cal` (
`cal_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cal_aid` int(10) unsigned NOT NULL DEFAULT '0',
`cal_uid` int(10) unsigned NOT NULL DEFAULT '0',
`cal_hash` varchar(255) NOT NULL DEFAULT '',
`cal_name` varchar(255) NOT NULL DEFAULT '',
`uri` varchar(255) NOT NULL DEFAULT '',
`logname` varchar(255) NOT NULL DEFAULT '',
`pass` varchar(255) NOT NULL DEFAULT '',
`ctag` varchar(255) NOT NULL DEFAULT '',
`synctoken` varchar(255) NOT NULL DEFAULT '',
`cal_types` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`cal_id`),
KEY `cal_aid` (`cal_aid`),
KEY `cal_uid` (`cal_uid`),
KEY `cal_hash` (`cal_hash`),
KEY `cal_name` (`cal_name`),
KEY `cal_types` (`cal_types`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `channel` (
`channel_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`channel_account_id` int(10) unsigned NOT NULL DEFAULT '0',
@ -394,6 +414,7 @@ CREATE TABLE IF NOT EXISTS `event` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`aid` int(10) unsigned NOT NULL DEFAULT '0',
`uid` int(11) NOT NULL DEFAULT '0',
`cal_id` int(11) unsigned NOT NULL DEFAULT '0',
`event_xchan` char(255) NOT NULL DEFAULT '',
`event_hash` char(255) NOT NULL DEFAULT '',
`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
@ -420,6 +441,7 @@ CREATE TABLE IF NOT EXISTS `event` (
`event_vdata` text NOT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `cal_id` (`cal_id`),
KEY `etype` (`etype`),
KEY `dtstart` (`dtstart`),
KEY `dtend` (`dtend`),

View file

@ -193,6 +193,26 @@ CREATE TABLE "cache" (
"updated" timestamp NOT NULL,
PRIMARY KEY ("k")
);
CREATE TABLE "cal" (
"cal_id" serial NOT NULL,
"cal_aid" bigint NOT NULL DEFAULT '0',
"cal_uid" bigint NOT NULL DEFAULT '0',
"cal_hash" text NOT NULL,
"cal_name" text NOT NULL,
"uri" text NOT NULL,
"logname" text NOT NULL,
"pass" text NOT NULL,
"ctag" text NOT NULL,
"synctoken" text NOT NULL,
"cal_types" text NOT NULL DEFAULT "0",
PRIMARY KEY ("cal_id")
);
create index "cal_hash_idx" on cal ("cal_hash");
create index "cal_name_idx" on cal ("cal_name");
create index "cal_types_idx" on cal ("cal_types");
create index "cal_aid_idx" on cal ("cal_aid");
create index "cal_uid_idx" on cal ("cal_uid");
CREATE TABLE "channel" (
"channel_id" serial NOT NULL,
"channel_account_id" bigint NOT NULL DEFAULT '0',
@ -380,14 +400,11 @@ create index "dreport_xchan" on dreport ("dreport_xchan");
create index "dreport_queue" on dreport ("dreport_queue");
create index "dreport_channel" on dreport ("dreport_channel");
CREATE TABLE "event" (
"id" serial NOT NULL,
"aid" bigint NOT NULL DEFAULT '0',
"uid" bigint NOT NULL,
"cal_id" bigint NOT NULL DEFAULT '0',
"event_xchan" text NOT NULL DEFAULT '',
"event_hash" text NOT NULL DEFAULT '',
"created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
@ -415,6 +432,7 @@ CREATE TABLE "event" (
PRIMARY KEY ("id")
);
create index "event_uid_idx" on event ("uid");
create index "event_cal_idx" on event ("cal_id");
create index "event_etype_idx" on event ("etype");
create index "event_dtstart_idx" on event ("dtstart");
create index "event_dtend_idx" on event ("dtend");

View file

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1177 );
define( 'UPDATE_VERSION' , 1178 );
/**
*
@ -2267,3 +2267,61 @@ function update_r1176() {
return UPDATE_SUCCESS;
}
function update_r1177() {
if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
$r1 = q("alter table event add cal_id bigint NOT NULL DEFAULT '0'");
$r2 = q("create index \"event_cal_idx\" on event (\"cal_id\") ");
$r3 = q("CREATE TABLE \"cal\" (
\"cal_id\" serial NOT NULL,
\"cal_aid\" bigint NOT NULL DEFAULT '0',
\"cal_uid\" bigint NOT NULL DEFAULT '0',
\"cal_hash\" text NOT NULL,
\"cal_name\" text NOT NULL,
\"uri\" text NOT NULL,
\"logname\" text NOT NULL,
\"pass\" text NOT NULL,
\"ctag\" text NOT NULL,
\"synctoken\" text NOT NULL,
\"cal_types\" text NOT NULL,
PRIMARY KEY (\"cal_id\") ");
$r4 = q("create index \"cal_hash_idx\" on cal (\"cal_hash\") ");
$r5 = q("create index \"cal_name_idx\" on cal (\"cal_name\") ");
$r6 = q("create index \"cal_types_idx\" on cal (\"cal_types\") ");
$r7 = q("create index \"cal_aid_idx\" on cal (\"cal_aid\") ");
$r8 = q("create index \"cal_uid_idx\" on cal (\"cal_uid\") ");
$r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8;
}
else {
$r1 = q("alter table event add cal_id int(10) unsigned NOT NULL DEFAULT '0',
add index ( cal_id ) ");
$r2 = q("CREATE TABLE IF NOT EXISTS `cal` (
`cal_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cal_aid` int(10) unsigned NOT NULL DEFAULT '0',
`cal_uid` int(10) unsigned NOT NULL DEFAULT '0',
`cal_hash` varchar(255) NOT NULL DEFAULT '',
`cal_name` varchar(255) NOT NULL DEFAULT '',
`uri` varchar(255) NOT NULL DEFAULT '',
`logname` varchar(255) NOT NULL DEFAULT '',
`pass` varchar(255) NOT NULL DEFAULT '',
`ctag` varchar(255) NOT NULL DEFAULT '',
`synctoken` varchar(255) NOT NULL DEFAULT '',
`cal_types` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`cal_id`),
KEY `cal_aid` (`cal_aid`),
KEY `cal_uid` (`cal_uid`),
KEY `cal_hash` (`cal_hash`),
KEY `cal_name` (`cal_name`),
KEY `cal_types` (`cal_types`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
$r = $r1 && $r2;
}
if($r)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}

File diff suppressed because it is too large Load diff

View file

@ -3,14 +3,21 @@
function po2php_run($argc,$argv) {
if ($argc!=2) {
if ($argc < 2) {
print "Usage: ".$argv[0]." <file.po>\n\n";
return;
}
$rtl = false;
$pofile = $argv[1];
$outfile = dirname($pofile)."/hstrings.php";
if($argc > 2) {
if($argv[2] === 'rtl')
$rtl = true;
}
if(strstr($outfile,'util'))
$lang = 'en';
else
@ -53,6 +60,7 @@ function po2php_run($argc,$argv) {
$out .= ' return '.$cond.';'."\n";
$out .= '}}'."\n";
}
$out .= 'App::$rtl = ' . intval($rtl) . ';';
if ($k!="" && substr($l,0,7)=="msgstr "){
if ($ink) { $ink = False; $out .= 'App::$strings["'.$k.'"] = '; }

9893
view/he/hmessages.po Normal file

File diff suppressed because it is too large Load diff

2319
view/he/hstrings.php Normal file

File diff suppressed because it is too large Load diff

32
view/he/lostpass_eml.tpl Normal file
View file

@ -0,0 +1,32 @@
לכבוד {{$username}},
התקבלה לאחרונה בקשה באתר {{$sitename}} לאפס את סיסמת
חשבונך. על מנת לאמת את בקשה זו, עליך לבחור קישור אימות להלן
או להדביק אותו לתוך שורת הכתובת של דפדפן הרשת שלך.
אם לא ביקשת את שינוי זה, אבקשך שלא לעקוב אחר הקישור
המסופק ואבקש גם את התעלמותך ו/או מחיקת דוא״ל זה.
הסיסמה שלך לא תשתנה אלא אם כן אנחנו יכולים
לוודא כי הינך המקור אשר הנפיק את בקשה זו.
עקוב אחר קישור זה כדי לאמת את זהותך:
{{$reset_link}}
תישלח אליך הודעת מעקב (follow-up) המכילה את הסיסמה החדשה.
באפשרותך לשנות את סיסמה זו מתוך עמוד הגדרות חשבון לאחר התחברותך.
פרטי ההתחברות שלך הם כדלקמן:
מיקום אתר: {{$siteurl}}
שם התחברות: {{$email}}
בכבוד רב,
מנהל {{$sitename}}

9168
view/he/messages.po Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,20 @@
לכבוד {{$username}},
הסיסמה שלך שונתה כמבוקש. עליך לשמור את מידע זה
לצורכי היסטוריה (או לשנות את הסיסמה שלך מיידית
למשהו אשר יהיה ביכולתך לזכור.
פרטי ההתחברות שלך הם כדלקמן:
מיקום אתר: {{$siteurl}}
שם התחברות: {{$email}}
הסיסמה שלך: {{$new_password}}
באפשרותך לשנות את סיסמה זו מתוך עמוד הגדרות חשבון לאחר התחברותך.
בכבוד רב,
מנהל {{$sitename}}

View file

@ -0,0 +1,19 @@
חשבון נוצר באתר {{$sitename}} לכתובת דוא״ל זו.
פרטי ההתחברות שלך הם כדלקמן:
מיקום אתר: {{$siteurl}}
שם התחברות: {{$email}}
סיסמה: (הסיסמה אשר סופקה במהלך רישום)
אם חשבון זה נוצר ללא ידיעתך ואיננו רצוי, באפשרותך
לבקר באתר זה ולאפס את הסיסמה. פעולה זו תתיר לך
להסיר את החשבון מתוך הקישורים בעמוד הגדרות, ואנחנו
מתנצלים על כל אי נעימות כלשהי.
תודה לך וברוך בואך אל {{$sitename}}.
בכבוד רב,
מנהל {{$sitename}}

View file

@ -0,0 +1,24 @@
בקשת רישום משתמש חדשה התקבלה באתר {{$sitename}} אשר מצריכה
את אישורך.
פרטי ההתחברות שלך הם כדלקמן:
מיקום אתר: {{$siteurl}}
שם התחברות: {{$email}}
כתובת IP: {{$details}}
כדי לאשר את בקשה זו אנא פנה לקישור הבא:
{{$siteurl}}/regmod/allow/{{$hash}}
כדי לדחות את הבקשה ולהסיר את החשבון, פנה:
{{$siteurl}}/regmod/deny/{{$hash}}
תודה.

View file

@ -0,0 +1,24 @@
תודה לך על שנרשמת לאתר {{$sitename}}.
פרטי ההתחברות שלך הם כדלקמן:
מיקום אתר: {{$siteurl}}
שם התחברות: {{$email}}
התחברת בעזרת הסיסמה שבחרת בזמן רישום.
עלינו לאמת את כתובת הדוא״ל שלך על מנת להעניק לך גישה מלאה.
אם רשמת את חשבון זה, אנא פנה לקישור הבא:
{{$siteurl}}/regver/allow/{{$hash}}
כדי לדחות את הבקשה ולהסיר את החשבון, פנה:
{{$siteurl}}/regver/deny/{{$hash}}
תודה.

View file

@ -0,0 +1,13 @@
שלום,
אני שרת הרשת באתר {{$sitename}};
מפתחי Red Matrix שחררו עדכון {{$update}} לאחרונה,
אולם כאשר ניסיתי להתקין אותו, משהו השתבש נורא.
זה צריך להסתדר בקרוב וגם מצריך התערבות אנושית.
אנא צור קשר עם מפתחי Red developer אם ביכולתך להבין כיצד
לתקן זאת בעצמך. המסד נתונים שלי עלול להיות פגום.
הודעת השגיאה היא '{{$error}}'.
סליחה על האי נוחות.
שרת הרשת שלך באתר at {{$siteurl}}

View file

@ -17,6 +17,6 @@ function on_fullscreen() {
function on_inline() {
var view = $('#events-calendar').fullCalendar('getView');
if(view.type === 'month') {
$('#events-calendar').fullCalendar('option', 'height', 'auto');
$('#events-calendar').fullCalendar('option', 'height', '');
}
}

View file

@ -28,6 +28,6 @@ function on_fullscreen() {
function on_inline() {
var view = $('#events-calendar').fullCalendar('getView');
if(view.type === 'month') {
$('#events-calendar').fullCalendar('option', 'height', 'auto');
$('#events-calendar').fullCalendar('option', 'height', '');
}
}

View file

@ -5,7 +5,7 @@
<script>var baseurl="<?php echo z_root() ?>";</script>
<?php if(x($page,'htmlhead')) echo $page['htmlhead'] ?>
</head>
<body>
<body <?php if($page['direction']) echo 'dir="rtl"' ?> >
<?php if(x($page,'banner')) echo $page['banner']; ?>
<header><?php if(x($page,'header')) echo $page['header']; ?></header>
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"><?php if(x($page,'nav')) echo $page['nav']; ?></nav>

View file

@ -30,6 +30,12 @@
function changeView(action, viewName) {
$('#events-calendar').fullCalendar(action, viewName);
var view = $('#events-calendar').fullCalendar('getView');
if(view.type === 'agendaDay' || view.type === 'agendaWeek') {
$('#events-calendar').fullCalendar('option', 'height', 'auto');
}
else {
$('#events-calendar').fullCalendar('option', 'height', '');
}
$('#title').text(view.title);
}
@ -42,7 +48,6 @@
firstDay: {{$first_day}},
eventLimit: 3,
height: 'auto',
monthNames: aStr['monthNames'],
monthNamesShort: aStr['monthNamesShort'],

View file

@ -282,7 +282,7 @@
<ul class="profile-thing-list">
{{foreach $items as $item}}
<li>{{if $item.img}}<a href="{{$item.url}}" ><img src="{{$item.img}}" class="profile-thing-img" width="100" height="100" alt="{{$item.term}}" /></a>{{/if}}
<a href="{{$item.url}}" >{{$item.term}}</a>
<a href="{{$item.editurl}}" >{{$item.term}}</a>
{{if $profile.canlike}}<br />
<button type="button" class="btn btn-default btn-sm" onclick="doprofilelike('thing/' + '{{$item.term_hash}}','like'); return false;" title="{{$likethis}}" >
<i class="fa fa-thumbs-o-up" title="{{$likethis}}"></i>