define ( 'FRIENDICA_CODENAME', 'Asparagus');
define ( 'FRIENDICA_VERSION', '3.5.2-dev' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
-define ( 'DB_UPDATE_VERSION', 1216 );
+define ( 'DB_UPDATE_VERSION', 1218 );
/**
* @brief Constant with a HTML line break.
-- ------------------------------------------
-- Friendica 3.5.2-dev (Asparagus)
--- DB_UPDATE_VERSION 1215
+-- DB_UPDATE_VERSION 1218
-- ------------------------------------------
`plugin_admin` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY(`id`),
UNIQUE INDEX `name` (`name`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE attach
`deny_cid` mediumtext,
`deny_gid` mediumtext,
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE auth_codes
`expires` int(11) NOT NULL DEFAULT 0,
`scope` varchar(250) NOT NULL DEFAULT '',
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE cache
`updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`k`),
INDEX `expire_mode_updated` (`expire_mode`,`updated`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE challenge
`type` varchar(255) NOT NULL DEFAULT '',
`last_update` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE clients
`icon` text,
`uid` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY(`client_id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE config
`v` mediumtext,
PRIMARY KEY(`id`),
UNIQUE INDEX `cat_k` (`cat`,`k`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE contact
`writable` tinyint(1) NOT NULL DEFAULT 0,
`forum` tinyint(1) NOT NULL DEFAULT 0,
`prv` tinyint(1) NOT NULL DEFAULT 0,
- `contact-type` int(11) unsigned NOT NULL DEFAULT 0,
+ `contact-type` int(11) NOT NULL DEFAULT 0,
`hidden` tinyint(1) NOT NULL DEFAULT 0,
`archive` tinyint(1) NOT NULL DEFAULT 0,
`pending` tinyint(1) NOT NULL DEFAULT 1,
INDEX `nick_uid` (`nick`(32),`uid`),
INDEX `dfrn-id` (`dfrn-id`),
INDEX `issued-id` (`issued-id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE conv
`subject` text,
PRIMARY KEY(`id`),
INDEX `uid` (`uid`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE event
`deny_gid` mediumtext,
PRIMARY KEY(`id`),
INDEX `uid_start` (`uid`,`start`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE fcontact
PRIMARY KEY(`id`),
INDEX `addr` (`addr`(32)),
INDEX `url` (`url`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE ffinder
`cid` int(10) unsigned NOT NULL DEFAULT 0,
`fid` int(10) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE fserver
`key` text,
PRIMARY KEY(`id`),
INDEX `server` (`server`(32))
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE fsuggest
`note` text,
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE gcign
PRIMARY KEY(`id`),
INDEX `uid` (`uid`),
INDEX `gcid` (`gcid`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE gcontact
INDEX `addr` (`addr`(64)),
INDEX `hide_network_updated` (`hide`,`network`,`updated`),
INDEX `updated` (`updated`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE glink
PRIMARY KEY(`id`),
UNIQUE INDEX `cid_uid_gcid_zcid` (`cid`,`uid`,`gcid`,`zcid`),
INDEX `gcid` (`gcid`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE group
`name` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE group_member
INDEX `contactid` (`contact-id`),
INDEX `gid_contactid` (`gid`,`contact-id`),
UNIQUE INDEX `uid_gid_contactid` (`uid`,`gid`,`contact-id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE gserver
`last_failure` datetime DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`id`),
INDEX `nurl` (`nurl`(32))
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE hook
`priority` int(11) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY(`id`),
UNIQUE INDEX `hook_file_function` (`hook`(50),`file`(80),`function`(60))
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE intro
`blocked` tinyint(1) NOT NULL DEFAULT 1,
`ignore` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE item
INDEX `uid_eventid` (`uid`,`event-id`),
INDEX `uid_authorlink` (`uid`,`author-link`),
INDEX `uid_ownerlink` (`uid`,`owner-link`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE item_id
INDEX `sid` (`sid`),
INDEX `service` (`service`(32)),
INDEX `iid` (`iid`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE locks
`locked` tinyint(1) NOT NULL DEFAULT 0,
`created` datetime DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE mail
INDEX `convid` (`convid`),
INDEX `uri` (`uri`(64)),
INDEX `parent-uri` (`parent-uri`(64))
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE mailacct
`pubmail` tinyint(1) NOT NULL DEFAULT 0,
`last_check` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE manage
`mid` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY(`id`),
UNIQUE INDEX `uid_mid` (`uid`,`mid`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE notify
INDEX `seen_uid_date` (`seen`,`uid`,`date`),
INDEX `uid_date` (`uid`,`date`),
INDEX `uid_type_link` (`uid`,`type`,`link`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE notify-threads
`parent-item` int(10) unsigned NOT NULL DEFAULT 0,
`receiver-uid` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE oembed
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`url`),
INDEX `created` (`created`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE parsed_url
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`url`,`guessing`,`oembed`),
INDEX `created` (`created`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE pconfig
`v` mediumtext,
PRIMARY KEY(`id`),
UNIQUE INDEX `uid_cat_k` (`uid`,`cat`,`k`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE photo
INDEX `uid_album_scale_created` (`uid`,`album`(32),`scale`,`created`),
INDEX `uid_album_resource-id_created` (`uid`,`album`(32),`resource-id`(64),`created`),
INDEX `resource-id` (`resource-id`(64))
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE poll
`q9` text,
PRIMARY KEY(`id`),
INDEX `uid` (`uid`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE poll_result
PRIMARY KEY(`id`),
INDEX `poll_id` (`poll_id`),
INDEX `choice` (`choice`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE process
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`pid`),
INDEX `command` (`command`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE profile
`net-publish` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY(`id`),
INDEX `uid_is-default` (`uid`,`is-default`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE profile_check
`sec` varchar(255) NOT NULL DEFAULT '',
`expire` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE push_subscriber
`last_update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`secret` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE queue
INDEX `last` (`last`),
INDEX `network` (`network`),
INDEX `batch` (`batch`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE register
`language` varchar(16) NOT NULL DEFAULT '',
`note` text,
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE search
`term` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE session
PRIMARY KEY(`id`),
INDEX `sid` (`sid`(64)),
INDEX `expire` (`expire`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE sign
`signer` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY(`id`),
INDEX `iid` (`iid`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE spam
INDEX `spam` (`spam`),
INDEX `ham` (`ham`),
INDEX `term` (`term`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE term
INDEX `uid_otype_type_term_global_created` (`uid`,`otype`,`type`,`term`(32),`global`,`created`),
INDEX `uid_otype_type_url` (`uid`,`otype`,`type`,`url`(64)),
INDEX `guid` (`guid`(64))
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE thread
INDEX `uid_created` (`uid`,`created`),
INDEX `uid_commented` (`uid`,`commented`),
INDEX `uid_wall_created` (`uid`,`wall`,`created`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE tokens
`scope` varchar(200) NOT NULL DEFAULT '',
`uid` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE user
`openidserver` text,
PRIMARY KEY(`uid`),
INDEX `nickname` (`nickname`(32))
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE userd
`username` varchar(255) NOT NULL,
PRIMARY KEY(`id`),
INDEX `username` (`username`(32))
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--
-- TABLE workerqueue
`pid` int(11) NOT NULL DEFAULT 0,
`executed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`id`)
-) DEFAULT CHARSET=utf8mb4;
+) DEFAULT COLLATE utf8mb4_general_ci;
--- /dev/null
+Keyboard shortcuts in Friendica
+=======================
+
+* [Home](help)
+
+General
+-------
+
+* j: Scroll to next thread
+* k: Scroll to previous thread
On the front page of the admin panel you will see a summary of information about your node.
These information include the amount of messages currently being processed in the queues.
-The first number is the number of messages being actively sent.
-This number should decrease quickly.
-The second is the messages which could for various reasons not being delivered.
+The first number is the number of messages which could not been delivered for various reasons.
They will be resend later.
You can have a quick glance into that second queus in the "Inspect Queue" section of the admin panel.
-If you have activated the background workers, there is a third number representing the count of jobs queued for the workers.
+The second number represents the current number of jobs for the background workers.
These worker tasks are prioritised and are done accordingly.
Then you get an overview of the accounts on your node, which can be moderated in the "Users" section of the panel.
| [config](help/database/db_config) | main configuration storage |
| [contact](help/database/db_contact) | contact table |
| [conv](help/database/db_conv) | private messages |
-| [deliverq](help/database/db_deliverq) | |
| [event](help/database/db_event) | Events |
| [fcontact](help/database/db_fcontact) | friend suggestion stuff |
| [ffinder](help/database/db_ffinder) | friend suggestion stuff |
+++ /dev/null
-Table deliverq
-==============
-
-| Field | Description | Type | Null | Key | Default | Extra |
-|---------|------------------|------------------|------|-----|---------|----------------|
-| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment |
-| cmd | | varchar(32) | NO | | | |
-| item | | int(11) | NO | | 0 | |
-| contact | | int(11) | NO | | 0 | |
-
-
-Return to [database documentation](help/database)
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,
Auf der Startseite des Admin Panels werden die Informationen zu der Instanz zusammengefasst.
-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 erste 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.
-Solltest du für die Hintergrundprozesse die Worker aktiviert haben, wird eine dritte Zahl angezeigt.
-Diese repräsentiert die Anzahl der Aufgaben, die die Worker noch vor sich haben.
+Die zweite Zahl steht für die Anzahl der Aufgaben, die die Worker noch vor sich haben.
+Die Worker arbeiten Hintergrundprozesse ab.
Die Aufgaben der Worker sind priorisiert und werden anhand dieser Prioritäten abgearbeitet.
-Des weiteren findest du eine Übersicht über die Accounts auf dem Friendica Knoten, die unter dem Punkt "Nutzer" moderiert werden können.
+Desweiteren 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.
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
+/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
DROP TABLE IF EXISTS `addon`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `addon` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '',
`timestamp` bigint(20) NOT NULL DEFAULT '0',
`plugin_admin` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `attach`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `attach` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
`deny_cid` mediumtext NOT NULL,
`deny_gid` mediumtext NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `auth_codes`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `auth_codes` (
`id` varchar(40) NOT NULL,
`client_id` varchar(20) NOT NULL DEFAULT '',
`expires` int(11) NOT NULL DEFAULT '0',
`scope` varchar(250) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `cache`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `cache` (
`k` varchar(255) NOT NULL,
`v` text NOT NULL,
`updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`k`),
KEY `updated` (`updated`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `challenge`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `challenge` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`challenge` varchar(255) NOT NULL DEFAULT '',
`type` varchar(255) NOT NULL DEFAULT '',
`last_update` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `clients`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `clients` (
`client_id` varchar(20) NOT NULL,
`pw` varchar(20) NOT NULL DEFAULT '',
`icon` text,
`uid` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`client_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `config`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `config` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cat` varchar(255) NOT NULL DEFAULT '',
`v` text NOT NULL,
PRIMARY KEY (`id`),
KEY `cat_k` (`cat`(30),`k`(30))
-) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `contact`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `contact` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
`ffi_keyword_blacklist` mediumtext NOT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`)
-) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `conv`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `conv` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`guid` varchar(64) NOT NULL DEFAULT '',
`subject` mediumtext NOT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `deliverq`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `deliverq` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cmd` varchar(32) NOT NULL DEFAULT '',
`item` int(11) NOT NULL DEFAULT '0',
`contact` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `dsprphotoq`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `event`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `event` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
`deny_gid` mediumtext NOT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `fcontact`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `fcontact` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`url` varchar(255) NOT NULL DEFAULT '',
`updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `addr` (`addr`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `ffinder`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `ffinder` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`cid` int(10) unsigned NOT NULL DEFAULT '0',
`fid` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `fserver`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `fserver` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`server` varchar(255) NOT NULL DEFAULT '',
`key` text NOT NULL,
PRIMARY KEY (`id`),
KEY `server` (`server`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `fsuggest`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `fsuggest` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
`note` text NOT NULL,
`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `gcign`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `gcign` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `gcid` (`gcid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `gcontact`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `gcontact` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '',
`network` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `nurl` (`nurl`)
-) ENGINE=InnoDB AUTO_INCREMENT=157 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=157 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `glink`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `glink` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cid` int(11) NOT NULL DEFAULT '0',
KEY `cid_uid_gcid_zcid` (`cid`,`uid`,`gcid`,`zcid`),
KEY `gcid` (`gcid`),
KEY `zcid` (`zcid`)
-) ENGINE=InnoDB AUTO_INCREMENT=189 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=189 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `group`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `group` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `uid` (`uid`)
-) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `group_member`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `group_member` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`contact-id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `uid_gid_contactid` (`uid`,`gid`,`contact-id`)
-) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `guid`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `guid` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`guid` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `guid` (`guid`)
-) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `hook`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `hook` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hook` varchar(255) NOT NULL DEFAULT '',
`priority` int(11) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `hook_file_function` (`hook`(30),`file`(60),`function`(30))
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `intro`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `intro` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`blocked` tinyint(1) NOT NULL DEFAULT '1',
`ignore` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `item`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `item` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`guid` varchar(255) NOT NULL DEFAULT '',
KEY `uid_eventid` (`uid`,`event-id`),
KEY `uid_authorlink` (`uid`,`author-link`),
KEY `uid_ownerlink` (`uid`,`owner-link`)
-) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `item_id`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `item_id` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`iid` int(11) NOT NULL DEFAULT '0',
KEY `sid` (`sid`),
KEY `service` (`service`),
KEY `iid` (`iid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `locks`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `locks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) NOT NULL DEFAULT '',
`locked` tinyint(1) NOT NULL DEFAULT '0',
`created` datetime DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `mail`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `mail` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT '0',
KEY `reply` (`reply`),
KEY `uri` (`uri`),
KEY `parent-uri` (`parent-uri`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `mailacct`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `mailacct` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
`pubmail` tinyint(1) NOT NULL DEFAULT '0',
`last_check` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `manage`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `manage` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
`mid` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `uid_mid` (`uid`,`mid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `notify`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `notify` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hash` varchar(64) NOT NULL DEFAULT '',
`otype` varchar(16) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `uid` (`uid`)
-) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `notify-threads`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `notify-threads` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`notify-id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `master-parent-item` (`master-parent-item`),
KEY `receiver-uid` (`receiver-uid`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `pconfig`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `pconfig` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
`v` mediumtext NOT NULL,
PRIMARY KEY (`id`),
KEY `uid_cat_k` (`uid`,`cat`(30),`k`(30))
-) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `photo`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `photo` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT '0',
KEY `uid` (`uid`),
KEY `resource-id` (`resource-id`),
KEY `guid` (`guid`)
-) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `poll`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `poll` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
`q9` mediumtext NOT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `poll_result`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `poll_result` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`poll_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `poll_id` (`poll_id`),
KEY `choice` (`choice`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `profile`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `profile` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
`net-publish` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `hometown` (`hometown`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `profile_check`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `profile_check` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`sec` varchar(255) NOT NULL DEFAULT '',
`expire` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `push_subscriber`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `push_subscriber` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
`last_update` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`secret` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `queue`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `queue` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cid` int(11) NOT NULL DEFAULT '0',
KEY `last` (`last`),
KEY `network` (`network`),
KEY `batch` (`batch`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `register`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `register` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`hash` varchar(255) NOT NULL DEFAULT '',
`password` varchar(255) NOT NULL DEFAULT '',
`language` varchar(16) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `search`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `search` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `term` (`term`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `session`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `session` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`sid` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `sid` (`sid`),
KEY `expire` (`expire`)
-) ENGINE=InnoDB AUTO_INCREMENT=123 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=123 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `sign`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `sign` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`iid` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `iid` (`iid`),
KEY `retract_iid` (`retract_iid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `spam`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `spam` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
KEY `spam` (`spam`),
KEY `ham` (`ham`),
KEY `term` (`term`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `term`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `term` (
`tid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`oid` int(10) unsigned NOT NULL DEFAULT '0',
KEY `type_term` (`type`,`term`),
KEY `uid_otype_type_term_tid` (`uid`,`otype`,`type`,`term`,`tid`),
KEY `otype_type_term_tid` (`otype`,`type`,`term`,`tid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `thread`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `thread` (
`iid` int(10) unsigned NOT NULL DEFAULT '0',
`uid` int(10) unsigned NOT NULL DEFAULT '0',
KEY `wall_private_received` (`wall`,`private`,`received`),
KEY `uid_created` (`uid`,`created`),
KEY `uid_commented` (`uid`,`commented`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `tokens`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `tokens` (
`id` varchar(40) NOT NULL,
`secret` text NOT NULL,
`scope` varchar(200) NOT NULL DEFAULT '',
`uid` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `user` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`guid` varchar(64) NOT NULL DEFAULT '',
`openidserver` text NOT NULL,
PRIMARY KEY (`uid`),
KEY `nickname` (`nickname`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
DROP TABLE IF EXISTS `userd`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `userd` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `username` (`username`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
$db_pass = 'mysqlpassword';
$db_data = 'mysqldatabasename';
-// Set the database connection charset to UTF8.
+// Set the database connection charset to full Unicode (utf8mb4).
// Changing this value will likely corrupt the special characters.
// You have been warned.
$a->config['system']['db_charset'] = "utf8mb4";
INNER JOIN `group_member` ON `group_member`.`gid`=`group`.`id` AND `group_member`.`uid` = `group`.`uid`
WHERE NOT `group`.`deleted` AND `group`.`uid` = %d
$sql_extra
- GROUP BY `group`.`name`
+ GROUP BY `group`.`name`, `group`.`id`
ORDER BY `group`.`name`
LIMIT %d,%d",
intval(local_user()),
$items = array_merge($groups, $contacts);
if ($conv_id) {
- /* if $conv_id is set, get unknow contacts in thread */
- /* but first get know contacts url to filter them out */
- 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`
+ /*
+ * if $conv_id is set, get unknown contacts in thread
+ * but first get known contacts url to filter them out
+ */
+ $known_contacts = array_map(
+ function ($i) {
+ return dbesc($i['link']);
+ }
+ , $contacts);
+
+ $unknown_contacts = array();
+ $r = q("SELECT `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`
+ GROUP BY `author-link`, `author-avatar`, `author-name`
ORDER BY `author-name` ASC
",
intval($conv_id),
dbesc($search),
dbesc($search),
- implode("','", $known_contacts)
+ implode("', '", $known_contacts)
);
- if (dbm::is_result($r)){
+ if (dbm::is_result($r)) {
foreach ($r as $row) {
- // nickname..
- $up = parse_url($row['author-link']);
- $nick = explode("/",$up['path']);
- $nick = $nick[count($nick)-1];
- $nick .= "@".$up['host'];
- // /nickname
- $unknow_contacts[] = array(
- 'type' => 'c',
- 'photo' => proxy_url($row['author-avatar'], false, PROXY_SIZE_MICRO),
- 'name' => htmlentities($row['author-name']),
- 'id' => '',
- 'network' => 'unknown',
- 'link' => $row['author-link'],
- 'nick' => htmlentities($nick),
- 'forum' => false
- );
+ $contact = get_contact_details_by_url($row['author-link']);
+
+ if (count($contact) > 0) {
+ $unknown_contacts[] = array(
+ 'type' => 'c',
+ 'photo' => proxy_url($contact['micro'], false, PROXY_SIZE_MICRO),
+ 'name' => htmlentities($contact['name']),
+ 'id' => intval($contact['cid']),
+ 'network' => $contact['network'],
+ 'link' => $contact['url'],
+ 'nick' => htmlentities($contact['nick'] ? : $contact['addr']),
+ 'forum' => $contact['forum']
+ );
+ }
}
}
- $items = array_merge($items, $unknow_contacts);
- $tot += count($unknow_contacts);
+ $items = array_merge($items, $unknown_contacts);
+ $tot += count($unknown_contacts);
}
$results = array(
function api_fr_photos_list($type) {
if (api_user()===false) throw new ForbiddenException();
$r = q("select `resource-id`, max(scale) as scale, album, filename, type from photo
- where uid = %d and album != 'Contact Photos' group by `resource-id`",
+ where uid = %d and album != 'Contact Photos' group by `resource-id`, album, filename, type",
intval(local_user())
);
$typetoext = array(
$scale = (x($_REQUEST, 'scale') ? intval($_REQUEST['scale']) : false);
$scale_sql = ($scale === false ? "" : sprintf("and scale=%d",intval($scale)));
- $data_sql = ($scale === false ? "" : "data, ");
-
- $r = q("select %s `resource-id`, `created`, `edited`, `title`, `desc`, `album`, `filename`,
- `type`, `height`, `width`, `datasize`, `profile`, min(`scale`) as minscale, max(`scale`) as maxscale
- from photo where `uid` = %d and `resource-id` = '%s' %s group by `resource-id`",
+ $data_sql = ($scale === false ? "" : "ANY_VALUE(data) AS data,");
+
+ $r = q("select %s ANY_VALUE(`resource-id`) AS `resource-id`, ANY_VALUE(`created`) AS `created`,
+ ANY_VALUE(`edited`) AS `edited`, ANY_VALUE(`title`) AS `title`, ANY_VALUE(`desc`) AS `desc`,
+ ANY_VALUE(`album`) AS `album`, ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`type`) AS `type`,
+ ANY_VALUE(`height`) AS `height`, ANY_VALUE(`width`) AS `width`, ANY_VALUE(`datasize`) AS `datasize`,
+ ANY_VALUE(`profile`) AS `profile`, min(`scale`) as minscale, max(`scale`) as maxscale
+ from photo where `uid` = %d and `resource-id` = '%s' %s",
$data_sql,
intval(local_user()),
dbesc($_REQUEST['photo_id']),
private $driver;
public $connected = false;
public $error = false;
+ private $_server_info = '';
function __construct($server, $user, $pass, $db, $install = false) {
$a = get_app();
* @return string
*/
public function server_info() {
- switch ($this->driver) {
- case 'pdo':
- $version = $this->db->getAttribute(PDO::ATTR_SERVER_VERSION);
- break;
- case 'mysqli':
- $version = $this->db->server_info;
- break;
- case 'mysql':
- $version = mysql_get_server_info($this->db);
- break;
+ if ($this->_server_info == '') {
+ switch ($this->driver) {
+ case 'pdo':
+ $this->_server_info = $this->db->getAttribute(PDO::ATTR_SERVER_VERSION);
+ break;
+ case 'mysqli':
+ $this->_server_info = $this->db->server_info;
+ break;
+ case 'mysql':
+ $this->_server_info = mysql_get_server_info($this->db);
+ break;
+ }
}
- return $version;
+ return $this->_server_info;
}
/**
}
}
}
+
+ /**
+ * @brief Replaces ANY_VALUE() function by MIN() function,
+ * if the database server does not support ANY_VALUE().
+ *
+ * Considerations for Standard SQL, or MySQL with ONLY_FULL_GROUP_BY (default since 5.7.5).
+ * ANY_VALUE() is available from MySQL 5.7.5 https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html
+ * A standard fall-back is to use MIN().
+ *
+ * @param string $sql An SQL string without the values
+ * @return string The input SQL string modified if necessary.
+ */
+ public function any_value_fallback($sql) {
+ $server_info = $this->server_info();
+ if (version_compare($server_info, '5.7.5', '<') ||
+ (stripos($server_info, 'MariaDB') !== false)) {
+ $sql = str_ireplace('ANY_VALUE(', 'MIN(', $sql);
+ }
+ return $sql;
+ }
}
function printable($s) {
unset($args[0]);
if ($db && $db->connected) {
+ $sql = $db->any_value_fallback($sql);
$stmt = @vsprintf($sql,$args); // Disabled warnings
//logger("dba: q: $stmt", LOGGER_ALL);
if ($stmt === false)
unset($args[0]);
if ($db && $db->connected) {
+ $sql = $db->any_value_fallback($sql);
$stmt = @vsprintf($sql,$args); // Disabled warnings
if ($stmt === false)
logger('dba: vsprintf error: ' . print_r(debug_backtrace(),true), LOGGER_DEBUG);
function table_structure($table) {
$structures = q("DESCRIBE `%s`", $table);
+ $full_columns = q("SHOW FULL COLUMNS FROM `%s`", $table);
+
$indexes = q("SHOW INDEX FROM `%s`", $table);
+ $table_status = q("SHOW TABLE STATUS WHERE `name` = '%s'", $table);
+
+ if (dbm::is_result($table_status)) {
+ $table_status = $table_status[0];
+ } else {
+ $table_status = array();
+ }
+
$fielddata = array();
$indexdata = array();
$indexdata[$index["Key_name"]][] = $column;
}
-
if (dbm::is_result($structures)) {
foreach ($structures AS $field) {
$fielddata[$field["Field"]]["type"] = $field["Type"];
}
}
}
- return(array("fields"=>$fielddata, "indexes"=>$indexdata));
+ if (dbm::is_result($full_columns)) {
+ foreach ($full_columns AS $column) {
+ $fielddata[$column["Field"]]["Collation"] = $column["Collation"];
+ }
+ }
+
+ return array("fields" => $fielddata, "indexes" => $indexdata, "table_status" => $table_status);
}
-function print_structure($database, $charset) {
+function print_structure($database) {
echo "-- ------------------------------------------\n";
echo "-- ".FRIENDICA_PLATFORM." ".FRIENDICA_VERSION." (".FRIENDICA_CODENAME,")\n";
echo "-- DB_UPDATE_VERSION ".DB_UPDATE_VERSION."\n";
echo "--\n";
echo "-- TABLE $name\n";
echo "--\n";
- db_create_table($name, $structure['fields'], $charset, true, false, $structure["indexes"]);
+ db_create_table($name, $structure['fields'], true, false, $structure["indexes"]);
echo "\n";
}
if ($action) {
Config::set('system', 'maintenance', 1);
- Config::set('system', 'maintenance_reason', 'Database update');
- }
-
- if (isset($a->config["system"]["db_charset"])) {
- $charset = $a->config["system"]["db_charset"];
- } else {
- $charset = "utf8mb4";
+ Config::set('system', 'maintenance_reason', sprintf(t(': Database update'), dbm::date().' '.date('e')));
}
$errors = false;
$tables = q("SHOW TABLES");
}
- foreach ($tables AS $table) {
- $table = current($table);
+ if (dbm::is_result($tables)) {
+ foreach ($tables AS $table) {
+ $table = current($table);
- logger(sprintf('updating structure for table %s ...', $table), LOGGER_DEBUG);
- $database[$table] = table_structure($table);
+ logger(sprintf('updating structure for table %s ...', $table), LOGGER_DEBUG);
+ $database[$table] = table_structure($table);
+ }
}
// Get the definition
if (is_null($definition)) {
- $definition = db_definition($charset);
+ $definition = db_definition();
}
// MySQL >= 5.7.4 doesn't support the IGNORE keyword in ALTER TABLE statements
$group_by = "";
$sql3 = "";
if (!isset($database[$name])) {
- $r = db_create_table($name, $structure["fields"], $charset, $verbose, $action, $structure['indexes']);
+ $r = db_create_table($name, $structure["fields"], $verbose, $action, $structure['indexes']);
if (!dbm::is_result($r)) {
$errors .= t('Errors encountered creating database tables.').$name.EOL;
}
}
} else {
// Compare the field definition
- $current_field_definition = implode(",",$database[$name]["fields"][$fieldname]);
- $new_field_definition = implode(",",$parameters);
+ $field_definition = $database[$name]["fields"][$fieldname];
+
+ // Define the default collation if not given
+ if (!isset($parameters['Collation']) AND !is_null($field_definition['Collation'])) {
+ $parameters['Collation'] = 'utf8mb4_general_ci';
+ } else {
+ $parameters['Collation'] = null;
+ }
+
+ $current_field_definition = implode(",", $field_definition);
+ $new_field_definition = implode(",", $parameters);
if ($current_field_definition != $new_field_definition) {
- $sql2=db_modify_table_field($fieldname, $parameters);
+ $sql2 = db_modify_table_field($fieldname, $parameters);
if ($sql3 == "") {
$sql3 = "ALTER" . $ignore . " TABLE `".$temp_name."` ".$sql2;
} else {
$sql3 .= ", ".$sql2;
}
}
-
}
}
}
$group_by = db_group_by($indexname, $fieldnames);
}
if ($sql2 != "") {
- if ($sql3 == "")
+ if ($sql3 == "") {
$sql3 = "ALTER" . $ignore . " TABLE `".$temp_name."` ".$sql2;
- else
+ } else {
$sql3 .= ", ".$sql2;
+ }
+ }
+ }
+ }
+
+ if (isset($database[$name]["table_status"]["Collation"])) {
+ if ($database[$name]["table_status"]["Collation"] != 'utf8mb4_general_ci') {
+ $sql2 = "DEFAULT COLLATE utf8mb4_general_ci";
+
+ if ($sql3 == "") {
+ $sql3 = "ALTER" . $ignore . " TABLE `".$temp_name."` ".$sql2;
+ } else {
+ $sql3 .= ", ".$sql2;
}
}
}
}
if ($action) {
+ Config::set('system', 'maintenance_reason', sprintf(t('%s: updating %s table.'), dbm::date().' '.date('e'), $name));
+
// Ensure index conversion to unique removes duplicates
if ($is_unique) {
if ($ignore != "") {
function db_field_command($parameters, $create = true) {
$fieldstruct = $parameters["type"];
+ if (!is_null($parameters["Collation"])) {
+ $fieldstruct .= " COLLATE ".$parameters["Collation"];
+ }
+
if ($parameters["not null"])
$fieldstruct .= " NOT NULL";
return($fieldstruct);
}
-function db_create_table($name, $fields, $charset, $verbose, $action, $indexes=null) {
+function db_create_table($name, $fields, $verbose, $action, $indexes=null) {
global $a, $db;
$r = true;
$sql = implode(",\n\t", $sql_rows);
- $sql = sprintf("CREATE TABLE IF NOT EXISTS `%s` (\n\t", dbesc($name)).$sql."\n) DEFAULT CHARSET=".$charset;
+ $sql = sprintf("CREATE TABLE IF NOT EXISTS `%s` (\n\t", dbesc($name)).$sql."\n) DEFAULT COLLATE utf8mb4_general_ci";
if ($verbose)
echo $sql.";\n";
return $sql;
}
-function db_index_suffix($charset, $reduce = 0) {
- if ($charset != "utf8mb4") {
- return "";
- }
-
- // On utf8mb4 indexes can only have a length of 191
- $indexlength = 191 - $reduce;
-
- return "(".$indexlength.")";
-}
-
-function db_definition($charset) {
+function db_definition() {
$database = array();
"writable" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
"forum" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
"prv" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
- "contact-type" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
+ "contact-type" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
"hidden" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
"archive" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
"pending" => array("type" => "tinyint(1)", "not null" => "1", "default" => "1"),
set_config('system','build',DB_UPDATE_VERSION);
return;
case "dumpsql":
- // For the dump that is used to create the database.sql we always assume utfmb4
- $charset = "utf8mb4";
- print_structure(db_definition($charset), $charset);
+ print_structure(db_definition());
return;
}
}
$r0 = Diaspora::relay_list();
}
- $r1 = q("SELECT DISTINCT(`batch`), `id`, `name`,`network` FROM `contact` WHERE `network` = '%s'
+ $r1 = q("SELECT `batch`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`name`) AS `name`, ANY_VALUE(`network`) AS `network`
+ FROM `contact` WHERE `network` = '%s'
AND `uid` = %d AND `rel` != %d AND NOT `blocked` AND NOT `pending` AND NOT `archive` GROUP BY `batch` ORDER BY rand()",
dbesc(NETWORK_DIASPORA),
intval($owner['uid']),
$conversations = q("SELECT `term`.`oid`, `term`.`url`, `term`.`uid` FROM `term`
STRAIGHT_JOIN `thread` ON `thread`.`iid` = `term`.`oid` AND `thread`.`uid` = `term`.`uid`
WHERE `term`.`type` = 7 AND `term`.`term` > '%s' AND `thread`.`mention`
- GROUP BY `term`.`url`, `term`.`uid` ORDER BY `term`.`term` DESC", dbesc($start));
+ GROUP BY `term`.`url`, `term`.`uid`, `term`.`oid`, `term`.`term` ORDER BY `term`.`term` DESC", dbesc($start));
} else {
$conversations = q("SELECT `oid`, `url`, `uid` FROM `term`
WHERE `type` = 7 AND `term` > '%s'
- GROUP BY `url`, `uid` ORDER BY `term` DESC", dbesc($start));
+ GROUP BY `url`, `uid`, `oid`, `term` ORDER BY `term` DESC", dbesc($start));
}
foreach ($conversations AS $conversation) {
if (!Config::get('system', 'no_count', false)) {
/// @todo This query needs to be renewed. It is really slow
// At this time we just store the data in the cache
- $albums = qu("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`
+ $albums = qu("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`, ANY_VALUE(`created`) AS `created`
FROM `photo`
WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra
GROUP BY `album` ORDER BY `created` DESC",
} else {
// This query doesn't do the count and is much faster
$albums = qu("SELECT DISTINCT(`album`), '' AS `total`
- FROM `photo`
- WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra
- GROUP BY `album` ORDER BY `created` DESC",
+ FROM `photo` USE INDEX (`uid_album_scale_created`)
+ WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra",
intval($uid),
dbesc('Contact Photos'),
dbesc(t('Contact Photos'))
* @todo Detect if it is a forum
*/
+use \Friendica\Core\Config;
+
require_once('include/datetime.php');
require_once("include/Scrape.php");
require_once("include/network.php");
}
}
+ // Disvover Mastodon servers
+ if (!Config::get('system','ostatus_disabled')) {
+ $serverdata = fetch_url("https://instances.mastodon.xyz/instances.json");
+
+ if ($serverdata) {
+ $servers = json_decode($serverdata);
+
+ foreach ($servers AS $server) {
+ $url = (is_null($server->https_score) ? 'http' : 'https').'://'.$server->name;
+ proc_run(PRIORITY_LOW, "include/discover_poco.php", "server", base64_encode($url));
+ }
+ }
+ }
+
// Currently disabled, since the service isn't available anymore.
// It is not removed since I hope that there will be a successor.
// Discover GNU Social Servers.
fix_alternate_contact_address($contact);
if (!isset($contact["updated"]))
- $contact["updated"] = datetime_convert();
+ $contact["updated"] = dbm::date();
if ($contact["server_url"] == "") {
$server_url = $contact["url"];
dbesc($contact["gender"]), dbesc($contact["keywords"]), intval($contact["hide"]),
intval($contact["nsfw"]), intval($contact["contact-type"]), dbesc($contact["alias"]),
dbesc($contact["notify"]), dbesc($contact["url"]), dbesc($contact["location"]),
- dbesc($contact["about"]), intval($contact["generation"]), dbesc($contact["updated"]),
+ dbesc($contact["about"]), intval($contact["generation"]), dbesc(dbm::date($contact["updated"])),
dbesc($contact["server_url"]), dbesc($contact["connect"]),
dbesc(normalise_link($contact["url"])), intval($contact["generation"]));
}
});
+ // Scroll to the next/previous thread when pressing J and K
+ $(document).keydown(function (event) {
+ var threads = $('.thread_level_1');
+ if ((event.keyCode === 74 || event.keyCode === 75) && !$(event.target).is('textarea, input')) {
+ var scrollTop = $(window).scrollTop();
+ if (event.keyCode === 75) {
+ threads = $(threads.get().reverse());
+ }
+ threads.each(function(key, item) {
+ var comparison;
+ var top = $(item).offset().top - 100;
+ if (event.keyCode === 74) {
+ comparison = top > scrollTop + 1;
+ } else if (event.keyCode === 75) {
+ comparison = top < scrollTop - 1;
+ }
+ if (comparison) {
+ $('html, body').animate({ scrollTop: top }, 200);
+ return false;
+ }
+ });
+ }
+ });
+
// Set an event listener for infinite scroll
if(typeof infinite_scroll !== 'undefined') {
$(window).scroll(function(e){
* `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
* `source` text,
* PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
+ * ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;</pre>
* Demo data:
* <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
*
* `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
* `source` text,
* PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
+ * ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;</pre>
* Demo data:
* <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
*
<?php
/* ACL selector json backend */
-require_once("include/acl_selectors.php");
+require_once 'include/acl_selectors.php';
function acl_init(App $a) {
acl_lookup($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 = qu('SELECT COUNT(*) AS `total`, `platform`, `network`, `version` FROM `gserver`
+ $c = qu('SELECT COUNT(*) AS `total`, ANY_VALUE(`platform`) AS `platform`,
+ ANY_VALUE(`network`) AS `network`, MAX(`version`) AS `version` FROM `gserver`
WHERE `platform` LIKE "%s" AND `last_contact` >= `last_failure`
ORDER BY `version` ASC;', $p);
$total = $total + $c[0]['total'];
$r = qu("SELECT COUNT(`id`) AS `count` FROM `register`");
$pending = $r[0]['count'];
- $r = qu("SELECT COUNT(*) AS `total` FROM `deliverq` WHERE 1");
- $deliverq = (($r) ? $r[0]['total'] : 0);
-
$r = qu("SELECT COUNT(*) AS `total` FROM `queue` WHERE 1");
$queue = (($r) ? $r[0]['total'] : 0);
// We can do better, but this is a quick queue status
- $queues = array('label' => t('Message queues'), 'deliverq' => $deliverq, 'queue' => $queue, 'workerq' => $workerqueue);
+ $queues = array('label' => t('Message queues'), 'queue' => $queue, 'workerq' => $workerqueue);
$t = get_markup_template("admin_summary.tpl");
--- /dev/null
+<?php
+ use Friendica\Core\Config;
+
+ function manifest_content(App $a) {
+
+ $tpl = get_markup_template('manifest.tpl');
+
+ header('Content-type: application/manifest+json');
+
+ $touch_icon = Config::get('system', 'touch_icon', 'images/friendica-128.png');
+ if ($touch_icon == '') {
+ $touch_icon = 'images/friendica-128.png';
+ }
+
+ $o = replace_macros($tpl, array(
+ '$baseurl' => App::get_baseurl(),
+ '$touch_icon' => $touch_icon,
+ '$title' => Config::get('config', 'sitename', 'Friendica'),
+ ));
+
+ echo $o;
+
+ killme();
+
+ }
+?>
$o .= $header;
- $r = q("SELECT count(*) AS `total` FROM `mail`
+ $r = q("SELECT count(*) AS `total` FROM `mail`, ANY_VALUE(`created`) AS `created`
WHERE `mail`.`uid` = %d GROUP BY `parent-uri` ORDER BY `created` DESC",
intval(local_user())
);
}
function get_messages($user, $lstart, $lend) {
-
+ //TODO: rewritte with a sub-query to get the first message of each private thread with certainty
return q("SELECT max(`mail`.`created`) AS `mailcreated`, min(`mail`.`seen`) AS `mailseen`,
- `mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` , `contact`.`network`,
+ ANY_VALUE(`mail`.`id`), ANY_VALUE(`mail`.`uid`), ANY_VALUE(`mail`.`guid`), ANY_VALUE(`mail`.`from-name`),
+ ANY_VALUE(`mail`.`from-photo`), ANY_VALUE(`mail`.`from-url`), ANY_VALUE(`mail`.`contact-id`),
+ ANY_VALUE(`mail`.`convid`), ANY_VALUE(`mail`.`title`), ANY_VALUE(`mail`.`body`), ANY_VALUE(`mail`.`seen`),
+ ANY_VALUE(`mail`.`reply`), ANY_VALUE(`mail`.`replied`), ANY_VALUE(`mail`.`unknown`),
+ ANY_VALUE(`mail`.`uri`), ANY_VALUE(`mail`.`parent-uri`), ANY_VALUE(`mail`.`created`),
+ ANY_VALUE(`contact`.`name`), ANY_VALUE(`contact`.`url`), ANY_VALUE(`contact`.`thumb`), ANY_VALUE(`contact`.`network`),
count( * ) as count
FROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id`
WHERE `mail`.`uid` = %d GROUP BY `parent-uri` ORDER BY `mailcreated` DESC LIMIT %d , %d ",
$order = 'DESC';
}
- $r = q("SELECT `resource-id`, `id`, `filename`, type, max(`scale`) AS `scale`, `desc` FROM `photo` WHERE `uid` = %d AND `album` = '%s'
+ $r = q("SELECT `resource-id`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`filename`) AS `filename`,
+ ANY_VALUE(`type`) AS `type`, max(`scale`) AS `scale`, ANY_VALUE(`desc`) as `desc`
+ FROM `photo` WHERE `uid` = %d AND `album` = '%s'
AND `scale` <= 4 $sql_extra GROUP BY `resource-id` ORDER BY `created` $order LIMIT %d , %d",
intval($owner_uid),
dbesc($album),
$cachekey = "ping_init:".local_user();
$ev = Cache::get($cachekey);
if (is_null($ev)) {
- $ev = qu("SELECT count(`event`.`id`) AS total, type, start, adjust FROM `event`
+ $ev = qu("SELECT type, start, adjust FROM `event`
WHERE `event`.`uid` = %d AND `start` < '%s' AND `finish` > '%s' and `ignore` = 0
ORDER BY `start` ASC ",
intval(local_user()),
}
if (dbm::is_result($ev)) {
- $all_events = intval($ev[0]['total']);
+ $all_events = count($ev);
if ($all_events) {
$str_now = datetime_convert('UTC', $a->timezone, 'now', 'Y-m-d');
if ($update) {
- $r = q("SELECT distinct(parent) AS `item_id`, `item`.`network` AS `item_network`
+ $r = q("SELECT distinct(parent) AS `item_id`, `item`.`network` AS `item_network`, `item`.`created`
FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND
FROM `item` %s
WHERE %s AND (`item`.`uid` = 0 OR (`item`.`uid` = %s AND NOT `item`.`global`))
$sql_extra
- GROUP BY `item`.`uri` ORDER BY `item`.`id` DESC LIMIT %d , %d",
+ GROUP BY `item`.`uri`, `item`.`id` ORDER BY `item`.`id` DESC LIMIT %d , %d",
item_fieldlists(), item_joins(), item_condition(),
intval(local_user()),
intval($a->pager['start']), intval($a->pager['itemspage']));
$a->set_pager_itemspage(20);
}
- $r = q("SELECT hash, `id`, `filename`, filetype FROM `attach`
+ $r = q("SELECT hash, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`created`) AS `created`,
+ ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`filetype`) as `filetype`
+ FROM `attach`
WHERE `uid` = %d AND filetype LIKE '%%video%%'
$sql_extra GROUP BY hash ORDER BY `created` DESC LIMIT %d , %d",
intval($a->data['user']['uid']),
<?php
-define('UPDATE_VERSION' , 1216);
+define('UPDATE_VERSION' , 1218);
/**
*
<dl>
<dt>{{$queues.label}}</dt>
- <dd>{{$queues.deliverq}} - <a href="{{$baseurl}}/admin/queue">{{$queues.queue}}</a> - {{$queues.workerq}}</dd>
+ <dd><a href="{{$baseurl}}/admin/queue">{{$queues.queue}}</a> - {{$queues.workerq}}</dd>
</dl>
<dl>
<dt>{{$pending.0}}</dt>
<link rel="apple-touch-icon" href="{{$touch_icon}}"/>
<meta name="apple-mobile-web-app-capable" content="yes" />
+<link rel="manifest" href="{{$baseurl}}/manifest" />
<script>
// Prevents links to switch to Safari in a home screen app - see https://gist.github.com/irae/1042167
(function(a,b,c){if(c in b&&b[c]){var d,e=a.location,f=/^(a|html)$/i;a.addEventListener("click",function(a){d=a.target;while(!f.test(d.nodeName))d=d.parentNode;"href"in d&&(chref=d.href).replace(e.href,"").indexOf("#")&&(!/^[a-z\+\.\-]+:/i.test(chref)||chref.indexOf(e.protocol+"//"+e.host)===0)&&(a.preventDefault(),e.href=d.href)},!1)}})(document,window.navigator,"standalone");
{{if $profile.network}}<span class="profile-network"> ({{$profile.network}})</span>{{/if}}
</div>
{{*{{if $profile.about}}<div class="profile-details profile-about">{{$profile.about}}</div>{{/if}}*}}
-
+
</div>
<div class="hover-card-actions right-aligned">
{{* here are the differnt actions like privat message, poke, delete and so on *}}
</div>
<div class="hover-card-actions-connection">
{{if $profile.actions.network}}<a class="btn btn-labeled btn-primary btn-sm" href="{{$profile.actions.network.1}}" title="{{$profile.actions.network.0}}"><i class="fa fa-cloud" aria-hidden="true"></i></a>{{/if}}
- {{if $profile.actions.edit}}<a class="btn btn-labeled btn-primary btn-sm" href="{{$profile.actions.edit.1}}" title="{{$profile.actions.edit.0}}"><i class="fa fa-pencil" aria-hidden="true"></i></a>{{/if}}
+ {{if $profile.actions.edit}}<a class="btn btn-labeled btn-primary btn-sm" href="{{$profile.actions.edit.1}}" title="{{$profile.actions.edit.0}}"><i class="fa fa-user" aria-hidden="true"></i></a>{{/if}}
{{if $profile.actions.follow}}<a class="btn btn-labeled btn-primary btn-sm" href="{{$profile.actions.follow.1}}" title="{{$profile.actions.follow.0}}"><i class="fa fa-user-plus" aria-hidden="true"></i></a>{{/if}}
</div>
</div>
$db_pass = '{{$dbpass}}';
$db_data = '{{$dbdata}}';
-// Set the database connection charset to UTF8.
+// Set the database connection charset to full Unicode (utf8mb4).
// Changing this value will likely corrupt the special characters.
// You have been warned.
$a->config['system']['db_charset'] = "utf8mb4";
--- /dev/null
+{
+ "name": "{{$title}}",
+ "start_url": "{{$baseurl}}",
+ "display": "standalone",
+ "description": "A Decentralized Social Network",
+ "icons": [{
+ "src": "{{$baseurl}}/{{$touch_icon}}"
+ }]
+}
'dsn' => 'mysql:host=127.0.0.1;dbname=installer',
'username' => 'root',
'password' => 'root',
- 'charset' => 'utf8',
+ 'charset' => 'utf8mb4',
),
'user' =>
array (
{{/if}}
</div>
-
</div>
<div class="media-body">
{{if $contact.photo_menu.pm }}<button type="button" class="contact-action-link btn-link" onclick="addToModal('{{$contact.photo_menu.pm.1}}')" data-toggle="tooltip" title="{{$contact.photo_menu.pm.0}}"><i class="fa fa-envelope" aria-hidden="true"></i></button>{{/if}}
{{if $contact.photo_menu.poke }}<button type="button" class="contact-action-link btn-link" onclick="addToModal('{{$contact.photo_menu.poke.1}}')" data-toggle="tooltip" title="{{$contact.photo_menu.poke.0}}"><i class="fa fa-heartbeat" aria-hidden="true"></i></button>{{/if}}
{{if $contact.photo_menu.network}}<a class="contact-action-link btn-link" href="{{$contact.photo_menu.network.1}}" data-toggle="tooltip" title="{{$contact.photo_menu.network.0}}"><i class="fa fa-cloud" aria-hidden="true"></i></a>{{/if}}
- {{if $contact.photo_menu.edit }}<a class="contact-action-link btn-link" href="{{$contact.photo_menu.edit.1}}" data-toggle="tooltip" title="{{$contact.photo_menu.edit.0}}"><i class="fa fa-pencil" aria-hidden="true"></i></a>{{/if}}
+ {{if $contact.photo_menu.edit }}<a class="contact-action-link btn-link" href="{{$contact.photo_menu.edit.1}}" data-toggle="tooltip" title="{{$contact.photo_menu.edit.0}}"><i class="fa fa-user" aria-hidden="true"></i></a>{{/if}}
{{if $contact.photo_menu.drop }}<button type="button" class="contact-action-link btn-link" onclick="addToModal('{{$contact.photo_menu.drop.1}}')" data-toggle="tooltip" title="{{$contact.photo_menu.drop.0}}"><i class="fa fa-user-times" aria-hidden="true"></i></button>{{/if}}
{{if $contact.photo_menu.follow }}<a class="contact-action-link btn-link" href="{{$contact.photo_menu.follow.1}}" data-toggle="tooltip" title="{{$contact.photo_menu.follow.0}}"><i class="fa fa-user-plus" aria-hidden="true"></i></a>{{/if}}
{{if $contact.photo_menu.hide }}<a class="contact-action-link btn-link" href="{{$contact.photo_menu.hide.1}}" data-toggle="tooltip" title="{{$contact.photo_menu.hide.0}}"><i class="fa fa-times" aria-hidden="true"></i></a>{{/if}}
<link rel="apple-touch-icon" href="{{$touch_icon}}"/>
<meta name="apple-mobile-web-app-capable" content="yes" />
+<link rel="manifest" href="{{$baseurl}}/manifest" />
<script>
// Prevents links to switch to Safari in a home screen app - see https://gist.github.com/irae/1042167
(function(a,b,c){if(c in b&&b[c]){var d,e=a.location,f=/^(a|html)$/i;a.addEventListener("click",function(a){d=a.target;while(!f.test(d.nodeName))d=d.parentNode;"href"in d&&(chref=d.href).replace(e.href,"").indexOf("#")&&(!/^[a-z\+\.\-]+:/i.test(chref)||chref.indexOf(e.protocol+"//"+e.host)===0)&&(a.preventDefault(),e.href=d.href)},!1)}})(document,window.navigator,"standalone");