Merge branch 'master' into blender-tweaks
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
"phabricator.uri": "https://developer.blender.org/",
|
"phabricator.uri": "https://developer.blender.org/",
|
||||||
"load": ["src/"]
|
"load": ["src/"],
|
||||||
|
"history.immutable": false
|
||||||
}
|
}
|
||||||
|
|||||||
1
.gitignore
vendored
@@ -4,6 +4,7 @@
|
|||||||
# Diviner
|
# Diviner
|
||||||
/docs/
|
/docs/
|
||||||
/.divinercache/
|
/.divinercache/
|
||||||
|
/src/.cache/
|
||||||
|
|
||||||
# libphutil
|
# libphutil
|
||||||
/src/.phutil_module_cache
|
/src/.phutil_module_cache
|
||||||
|
|||||||
1
bin/calendar
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../scripts/setup/manage_calendar.php
|
||||||
102
externals/mimemailparser/MimeMailParser.class.php
vendored
@@ -111,13 +111,13 @@ class MimeMailParser {
|
|||||||
* @param $data String
|
* @param $data String
|
||||||
*/
|
*/
|
||||||
public function setText($data) {
|
public function setText($data) {
|
||||||
// NOTE: This has been modified for Phabricator. If the input data does not
|
// NOTE: This has been modified for Phabricator. If the input data does not
|
||||||
// end in a newline, Mailparse fails to include the last line in the mail
|
// end in a newline, Mailparse fails to include the last line in the mail
|
||||||
// body. This happens somewhere deep, deep inside the mailparse extension,
|
// body. This happens somewhere deep, deep inside the mailparse extension,
|
||||||
// so adding a newline here seems like the most straightforward fix.
|
// so adding a newline here seems like the most straightforward fix.
|
||||||
if (!preg_match('/\n\z/', $data)) {
|
if (!preg_match('/\n\z/', $data)) {
|
||||||
$data = $data."\n";
|
$data = $data."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->resource = mailparse_msg_create();
|
$this->resource = mailparse_msg_create();
|
||||||
// does not parse incrementally, fast memory hog might explode
|
// does not parse incrementally, fast memory hog might explode
|
||||||
@@ -203,23 +203,23 @@ class MimeMailParser {
|
|||||||
);
|
);
|
||||||
if (in_array($type, array_keys($mime_types))) {
|
if (in_array($type, array_keys($mime_types))) {
|
||||||
foreach($this->parts as $part) {
|
foreach($this->parts as $part) {
|
||||||
$disposition = $this->getPartContentDisposition($part);
|
$disposition = $this->getPartContentDisposition($part);
|
||||||
if ($disposition == 'attachment') {
|
if ($disposition == 'attachment') {
|
||||||
// text/plain parts with "Content-Disposition: attachment" are
|
// text/plain parts with "Content-Disposition: attachment" are
|
||||||
// attachments, not part of the text body.
|
// attachments, not part of the text body.
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($this->getPartContentType($part) == $mime_types[$type]) {
|
if ($this->getPartContentType($part) == $mime_types[$type]) {
|
||||||
$headers = $this->getPartHeaders($part);
|
$headers = $this->getPartHeaders($part);
|
||||||
// Concatenate all the matching parts into the body text. For example,
|
// Concatenate all the matching parts into the body text. For example,
|
||||||
// if a user sends a message with some text, then an image, and then
|
// if a user sends a message with some text, then an image, and then
|
||||||
// some more text, the text body of the email gets split over several
|
// some more text, the text body of the email gets split over several
|
||||||
// attachments.
|
// attachments.
|
||||||
$body .= $this->decode(
|
$body .= $this->decode(
|
||||||
$this->getPartBody($part),
|
$this->getPartBody($part),
|
||||||
array_key_exists('content-transfer-encoding', $headers)
|
array_key_exists('content-transfer-encoding', $headers)
|
||||||
? $headers['content-transfer-encoding']
|
? $headers['content-transfer-encoding']
|
||||||
: '');
|
: '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -251,20 +251,42 @@ class MimeMailParser {
|
|||||||
return $headers;
|
return $headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the attachments contents in order of appearance
|
* Returns the attachments contents in order of appearance
|
||||||
* @return Array
|
* @return Array
|
||||||
* @param $type Object[optional]
|
* @param $type Object[optional]
|
||||||
*/
|
*/
|
||||||
public function getAttachments() {
|
public function getAttachments() {
|
||||||
|
// NOTE: This has been modified for Phabricator. Some mail clients do not
|
||||||
|
// send attachments with "Content-Disposition" headers.
|
||||||
$attachments = array();
|
$attachments = array();
|
||||||
$dispositions = array("attachment","inline");
|
$dispositions = array("attachment","inline");
|
||||||
foreach($this->parts as $part) {
|
$non_attachment_types = array("text/plain", "text/html");
|
||||||
|
$nonameIter = 0;
|
||||||
|
foreach ($this->parts as $part) {
|
||||||
$disposition = $this->getPartContentDisposition($part);
|
$disposition = $this->getPartContentDisposition($part);
|
||||||
if (in_array($disposition, $dispositions)) {
|
$filename = 'noname';
|
||||||
|
if (isset($part['disposition-filename'])) {
|
||||||
|
$filename = $part['disposition-filename'];
|
||||||
|
} elseif (isset($part['content-name'])) {
|
||||||
|
// if we have no disposition but we have a content-name, it's a valid attachment.
|
||||||
|
// we simulate the presence of an attachment disposition with a disposition filename
|
||||||
|
$filename = $part['content-name'];
|
||||||
|
$disposition = 'attachment';
|
||||||
|
} elseif (!in_array($part['content-type'], $non_attachment_types, true)
|
||||||
|
&& substr($part['content-type'], 0, 10) !== 'multipart/'
|
||||||
|
) {
|
||||||
|
// if we cannot get it with getMessageBody, we assume it is an attachment
|
||||||
|
$disposition = 'attachment';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array($disposition, $dispositions) && isset($filename) === true) {
|
||||||
|
if ($filename == 'noname') {
|
||||||
|
$nonameIter++;
|
||||||
|
$filename = 'noname'.$nonameIter;
|
||||||
|
}
|
||||||
$attachments[] = new MimeMailParser_attachment(
|
$attachments[] = new MimeMailParser_attachment(
|
||||||
$part['disposition-filename'],
|
$filename,
|
||||||
$this->getPartContentType($part),
|
$this->getPartContentType($part),
|
||||||
$this->getAttachmentStream($part),
|
$this->getAttachmentStream($part),
|
||||||
$disposition,
|
$disposition,
|
||||||
@@ -413,7 +435,7 @@ class MimeMailParser {
|
|||||||
private function getAttachmentStream(&$part) {
|
private function getAttachmentStream(&$part) {
|
||||||
$temp_fp = tmpfile();
|
$temp_fp = tmpfile();
|
||||||
|
|
||||||
array_key_exists('content-transfer-encoding', $part['headers']) ? $encoding = $part['headers']['content-transfer-encoding'] : $encoding = '';
|
array_key_exists('content-transfer-encoding', $part['headers']) ? $encoding = $part['headers']['content-transfer-encoding'] : $encoding = '';
|
||||||
|
|
||||||
if ($temp_fp) {
|
if ($temp_fp) {
|
||||||
if ($this->stream) {
|
if ($this->stream) {
|
||||||
@@ -445,21 +467,21 @@ class MimeMailParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Decode the string depending on encoding type.
|
* Decode the string depending on encoding type.
|
||||||
* @return String the decoded string.
|
* @return String the decoded string.
|
||||||
* @param $encodedString The string in its original encoded state.
|
* @param $encodedString The string in its original encoded state.
|
||||||
* @param $encodingType The encoding type from the Content-Transfer-Encoding header of the part.
|
* @param $encodingType The encoding type from the Content-Transfer-Encoding header of the part.
|
||||||
*/
|
*/
|
||||||
private function decode($encodedString, $encodingType) {
|
private function decode($encodedString, $encodingType) {
|
||||||
if (strtolower($encodingType) == 'base64') {
|
if (strtolower($encodingType) == 'base64') {
|
||||||
return base64_decode($encodedString);
|
return base64_decode($encodedString);
|
||||||
} else if (strtolower($encodingType) == 'quoted-printable') {
|
} else if (strtolower($encodingType) == 'quoted-printable') {
|
||||||
return quoted_printable_decode($encodedString);
|
return quoted_printable_decode($encodedString);
|
||||||
} else {
|
} else {
|
||||||
return $encodedString;
|
return $encodedString;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
BIN
resources/builtin/conpherence.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
resources/builtin/merchant.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
@@ -36,6 +36,7 @@ return array(
|
|||||||
'phuix-dropdown-menu',
|
'phuix-dropdown-menu',
|
||||||
'phuix-action-list-view',
|
'phuix-action-list-view',
|
||||||
'phuix-action-view',
|
'phuix-action-view',
|
||||||
|
'phuix-icon-view',
|
||||||
'phabricator-phtize',
|
'phabricator-phtize',
|
||||||
'javelin-behavior-phabricator-oncopy',
|
'javelin-behavior-phabricator-oncopy',
|
||||||
'phabricator-tooltip',
|
'phabricator-tooltip',
|
||||||
@@ -83,11 +84,15 @@ return array(
|
|||||||
'conpherence-thread-manager',
|
'conpherence-thread-manager',
|
||||||
'javelin-behavior-detect-timezone',
|
'javelin-behavior-detect-timezone',
|
||||||
'javelin-behavior-setup-check-https',
|
'javelin-behavior-setup-check-https',
|
||||||
|
'javelin-behavior-aphlict-status',
|
||||||
|
'javelin-behavior-user-menu',
|
||||||
|
'phabricator-favicon',
|
||||||
),
|
),
|
||||||
'core.pkg.css' => array(
|
'core.pkg.css' => array(
|
||||||
'phabricator-core-css',
|
'phabricator-core-css',
|
||||||
'phabricator-zindex-css',
|
'phabricator-zindex-css',
|
||||||
'phui-button-css',
|
'phui-button-css',
|
||||||
|
'phui-theme-css',
|
||||||
'phabricator-standard-page-view',
|
'phabricator-standard-page-view',
|
||||||
'aphront-dialog-view-css',
|
'aphront-dialog-view-css',
|
||||||
'phui-form-view-css',
|
'phui-form-view-css',
|
||||||
@@ -96,6 +101,7 @@ return array(
|
|||||||
'aphront-tokenizer-control-css',
|
'aphront-tokenizer-control-css',
|
||||||
'aphront-typeahead-control-css',
|
'aphront-typeahead-control-css',
|
||||||
'aphront-list-filter-view-css',
|
'aphront-list-filter-view-css',
|
||||||
|
'application-search-view-css',
|
||||||
|
|
||||||
'phabricator-remarkup-css',
|
'phabricator-remarkup-css',
|
||||||
'syntax-highlighting-css',
|
'syntax-highlighting-css',
|
||||||
@@ -104,18 +110,22 @@ return array(
|
|||||||
'aphront-tooltip-css',
|
'aphront-tooltip-css',
|
||||||
'phabricator-flag-css',
|
'phabricator-flag-css',
|
||||||
'phui-info-view-css',
|
'phui-info-view-css',
|
||||||
'sprite-menu-css',
|
|
||||||
|
|
||||||
'phabricator-main-menu-view',
|
'phabricator-main-menu-view',
|
||||||
'phabricator-notification-css',
|
'phabricator-notification-css',
|
||||||
'phabricator-notification-menu-css',
|
'phabricator-notification-menu-css',
|
||||||
'lightbox-attachment-css',
|
'phui-lightbox-css',
|
||||||
|
'phui-comment-panel-css',
|
||||||
'phui-header-view-css',
|
'phui-header-view-css',
|
||||||
'phabricator-filetree-view-css',
|
|
||||||
'phabricator-nav-view-css',
|
'phabricator-nav-view-css',
|
||||||
'phabricator-side-menu-view-css',
|
'phui-basic-nav-view-css',
|
||||||
'phui-crumbs-view-css',
|
'phui-crumbs-view-css',
|
||||||
'phui-object-item-list-view-css',
|
'phui-oi-list-view-css',
|
||||||
|
'phui-oi-color-css',
|
||||||
|
'phui-oi-big-ui-css',
|
||||||
|
'phui-oi-drag-ui-css',
|
||||||
|
'phui-oi-simple-ui-css',
|
||||||
|
'phui-oi-flush-ui-css',
|
||||||
'global-drag-and-drop-css',
|
'global-drag-and-drop-css',
|
||||||
'phui-spacing-css',
|
'phui-spacing-css',
|
||||||
'phui-form-css',
|
'phui-form-css',
|
||||||
@@ -129,19 +139,41 @@ return array(
|
|||||||
'phui-list-view-css',
|
'phui-list-view-css',
|
||||||
|
|
||||||
'font-fontawesome',
|
'font-fontawesome',
|
||||||
|
'font-lato',
|
||||||
|
'font-aleo',
|
||||||
'phui-font-icon-base-css',
|
'phui-font-icon-base-css',
|
||||||
|
'phui-fontkit-css',
|
||||||
'phui-box-css',
|
'phui-box-css',
|
||||||
'phui-object-box-css',
|
'phui-object-box-css',
|
||||||
'phui-timeline-view-css',
|
'phui-timeline-view-css',
|
||||||
|
'phui-two-column-view-css',
|
||||||
|
'phui-curtain-view-css',
|
||||||
|
|
||||||
|
'sprite-login-css',
|
||||||
'sprite-tokens-css',
|
'sprite-tokens-css',
|
||||||
'tokens-css',
|
'tokens-css',
|
||||||
'phui-status-list-view-css',
|
'auth-css',
|
||||||
|
|
||||||
|
'phui-status-list-view-css',
|
||||||
'phui-feed-story-css',
|
'phui-feed-story-css',
|
||||||
'phabricator-feed-css',
|
'phabricator-feed-css',
|
||||||
'phabricator-dashboard-css',
|
'phabricator-dashboard-css',
|
||||||
'aphront-multi-column-view-css',
|
'aphront-multi-column-view-css',
|
||||||
|
),
|
||||||
|
'conpherence.pkg.css' => array(
|
||||||
'conpherence-durable-column-view',
|
'conpherence-durable-column-view',
|
||||||
|
'conpherence-menu-css',
|
||||||
|
'conpherence-message-pane-css',
|
||||||
|
'conpherence-notification-css',
|
||||||
|
'conpherence-transaction-css',
|
||||||
|
'conpherence-participant-pane-css',
|
||||||
|
'conpherence-header-pane-css',
|
||||||
|
),
|
||||||
|
'conpherence.pkg.js' => array(
|
||||||
|
'javelin-behavior-conpherence-menu',
|
||||||
|
'javelin-behavior-conpherence-participant-pane',
|
||||||
|
'javelin-behavior-conpherence-pontificate',
|
||||||
|
'javelin-behavior-toggle-widget',
|
||||||
),
|
),
|
||||||
'differential.pkg.css' => array(
|
'differential.pkg.css' => array(
|
||||||
'differential-core-view-css',
|
'differential-core-view-css',
|
||||||
@@ -155,6 +187,7 @@ return array(
|
|||||||
'phabricator-content-source-view-css',
|
'phabricator-content-source-view-css',
|
||||||
'inline-comment-summary-css',
|
'inline-comment-summary-css',
|
||||||
'phui-inline-comment-view-css',
|
'phui-inline-comment-view-css',
|
||||||
|
'phabricator-filetree-view-css',
|
||||||
),
|
),
|
||||||
'differential.pkg.js' => array(
|
'differential.pkg.js' => array(
|
||||||
'phabricator-drag-and-drop-file-upload',
|
'phabricator-drag-and-drop-file-upload',
|
||||||
@@ -165,7 +198,6 @@ return array(
|
|||||||
'javelin-behavior-differential-populate',
|
'javelin-behavior-differential-populate',
|
||||||
'javelin-behavior-differential-diff-radios',
|
'javelin-behavior-differential-diff-radios',
|
||||||
'javelin-behavior-differential-comment-jump',
|
'javelin-behavior-differential-comment-jump',
|
||||||
'javelin-behavior-differential-add-reviewers-and-ccs',
|
|
||||||
'javelin-behavior-differential-keyboard-navigation',
|
'javelin-behavior-differential-keyboard-navigation',
|
||||||
'javelin-behavior-aphront-drag-and-drop-textarea',
|
'javelin-behavior-aphront-drag-and-drop-textarea',
|
||||||
'javelin-behavior-phabricator-object-selector',
|
'javelin-behavior-phabricator-object-selector',
|
||||||
|
|||||||
@@ -15,8 +15,7 @@
|
|||||||
],
|
],
|
||||||
|
|
||||||
"conduit.uri" : null,
|
"conduit.uri" : null,
|
||||||
"conduit.user" : null,
|
"conduit.token" : null,
|
||||||
"conduit.cert" : null,
|
|
||||||
|
|
||||||
"macro.size" : 48,
|
"macro.size" : 48,
|
||||||
"macro.aspect" : 0.66,
|
"macro.aspect" : 0.66,
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.2 KiB |
BIN
resources/sprite/login_1x/Slack.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
BIN
resources/sprite/login_2x/Slack.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
@@ -81,16 +81,16 @@
|
|||||||
"rule": ".login-PayPal",
|
"rule": ".login-PayPal",
|
||||||
"hash": "dfa09f45369c93bb0fd82a333b0fe927"
|
"hash": "dfa09f45369c93bb0fd82a333b0fe927"
|
||||||
},
|
},
|
||||||
"login-Persona": {
|
|
||||||
"name": "login-Persona",
|
|
||||||
"rule": ".login-Persona",
|
|
||||||
"hash": "14cc5b479b14abe16261c01fc432ffd1"
|
|
||||||
},
|
|
||||||
"login-Phabricator": {
|
"login-Phabricator": {
|
||||||
"name": "login-Phabricator",
|
"name": "login-Phabricator",
|
||||||
"rule": ".login-Phabricator",
|
"rule": ".login-Phabricator",
|
||||||
"hash": "d0f830803593bbcc025d7d5a29ee3ecd"
|
"hash": "d0f830803593bbcc025d7d5a29ee3ecd"
|
||||||
},
|
},
|
||||||
|
"login-Slack": {
|
||||||
|
"name": "login-Slack",
|
||||||
|
"rule": ".login-Slack",
|
||||||
|
"hash": "fe0df2df040032b949aa05948b6bd986"
|
||||||
|
},
|
||||||
"login-Stripe": {
|
"login-Stripe": {
|
||||||
"name": "login-Stripe",
|
"name": "login-Stripe",
|
||||||
"rule": ".login-Stripe",
|
"rule": ".login-Stripe",
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 1,
|
|
||||||
"sprites": {
|
|
||||||
"dark-eye": {
|
|
||||||
"name": "dark-eye",
|
|
||||||
"rule": ".dark-eye",
|
|
||||||
"hash": "c8112e52666fa1cb509ebb2cdf3a3df5"
|
|
||||||
},
|
|
||||||
"dark-logo": {
|
|
||||||
"name": "dark-logo",
|
|
||||||
"rule": ".dark-logo",
|
|
||||||
"hash": "e3425da87e8f6737d8db0063d064cd7d"
|
|
||||||
},
|
|
||||||
"light-eye": {
|
|
||||||
"name": "light-eye",
|
|
||||||
"rule": ".light-eye",
|
|
||||||
"hash": "5b6bf7c8c10d4f7414d976f6e79ae2ff"
|
|
||||||
},
|
|
||||||
"light-logo": {
|
|
||||||
"name": "light-logo",
|
|
||||||
"rule": ".light-logo",
|
|
||||||
"hash": "bee37c0a86825ec7ded38936b1ba7b65"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"scales": [
|
|
||||||
1,
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"header": "\/**\n * @provides sprite-menu-css\n * @generated\n *\/\n\n.sprite-menu {\n background-image: url(\/rsrc\/image\/sprite-menu.png);\n background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5),\nonly screen and (min-resolution: 1.5dppx) {\n .sprite-menu {\n background-image: url(\/rsrc\/image\/sprite-menu-X2.png);\n background-size: {X}px {Y}px;\n }\n}\n",
|
|
||||||
"type": "standard"
|
|
||||||
}
|
|
||||||
@@ -4,88 +4,128 @@
|
|||||||
"tokens-coin-1": {
|
"tokens-coin-1": {
|
||||||
"name": "tokens-coin-1",
|
"name": "tokens-coin-1",
|
||||||
"rule": ".tokens-coin-1",
|
"rule": ".tokens-coin-1",
|
||||||
"hash": "0ec4c7309f8191972340c6789a6b5691"
|
"hash": "5343d745423994c45c5fc689edc47d05"
|
||||||
},
|
},
|
||||||
"tokens-coin-2": {
|
"tokens-coin-2": {
|
||||||
"name": "tokens-coin-2",
|
"name": "tokens-coin-2",
|
||||||
"rule": ".tokens-coin-2",
|
"rule": ".tokens-coin-2",
|
||||||
"hash": "4c85dd4b0c388cfefe0075b7056384fd"
|
"hash": "9a94b5f925f3e6f8eed673d50fbfe148"
|
||||||
},
|
},
|
||||||
"tokens-coin-3": {
|
"tokens-coin-3": {
|
||||||
"name": "tokens-coin-3",
|
"name": "tokens-coin-3",
|
||||||
"rule": ".tokens-coin-3",
|
"rule": ".tokens-coin-3",
|
||||||
"hash": "a2e3770894539957e436a7d5a2be4703"
|
"hash": "68db03ca248309a76cee97ada64239c6"
|
||||||
},
|
},
|
||||||
"tokens-coin-4": {
|
"tokens-coin-4": {
|
||||||
"name": "tokens-coin-4",
|
"name": "tokens-coin-4",
|
||||||
"rule": ".tokens-coin-4",
|
"rule": ".tokens-coin-4",
|
||||||
"hash": "856cb87c5590975c0a25177ca2fd2a8f"
|
"hash": "75832b7e42df9287b3c35c6afed12a93"
|
||||||
|
},
|
||||||
|
"tokens-emoji-1": {
|
||||||
|
"name": "tokens-emoji-1",
|
||||||
|
"rule": ".tokens-emoji-1",
|
||||||
|
"hash": "17f57bdeb4078f9c05f1f037ccb1c162"
|
||||||
|
},
|
||||||
|
"tokens-emoji-2": {
|
||||||
|
"name": "tokens-emoji-2",
|
||||||
|
"rule": ".tokens-emoji-2",
|
||||||
|
"hash": "6877c6e0c63522d5819531aaf4aba787"
|
||||||
|
},
|
||||||
|
"tokens-emoji-3": {
|
||||||
|
"name": "tokens-emoji-3",
|
||||||
|
"rule": ".tokens-emoji-3",
|
||||||
|
"hash": "cc67534b0119d4cc385a93ed5aff86e4"
|
||||||
|
},
|
||||||
|
"tokens-emoji-4": {
|
||||||
|
"name": "tokens-emoji-4",
|
||||||
|
"rule": ".tokens-emoji-4",
|
||||||
|
"hash": "f2a6febd638670962dfb5fdd76b23cfb"
|
||||||
|
},
|
||||||
|
"tokens-emoji-5": {
|
||||||
|
"name": "tokens-emoji-5",
|
||||||
|
"rule": ".tokens-emoji-5",
|
||||||
|
"hash": "22bc23d162449fde492e0fd3eccc7301"
|
||||||
|
},
|
||||||
|
"tokens-emoji-6": {
|
||||||
|
"name": "tokens-emoji-6",
|
||||||
|
"rule": ".tokens-emoji-6",
|
||||||
|
"hash": "e3689840f410ff1bbf365f6b06043d3f"
|
||||||
|
},
|
||||||
|
"tokens-emoji-7": {
|
||||||
|
"name": "tokens-emoji-7",
|
||||||
|
"rule": ".tokens-emoji-7",
|
||||||
|
"hash": "a689b9fe7c9f6f300d757b5350e2cc4b"
|
||||||
|
},
|
||||||
|
"tokens-emoji-8": {
|
||||||
|
"name": "tokens-emoji-8",
|
||||||
|
"rule": ".tokens-emoji-8",
|
||||||
|
"hash": "26570ef132caea33307e1e7574d754e8"
|
||||||
},
|
},
|
||||||
"tokens-heart-1": {
|
"tokens-heart-1": {
|
||||||
"name": "tokens-heart-1",
|
"name": "tokens-heart-1",
|
||||||
"rule": ".tokens-heart-1",
|
"rule": ".tokens-heart-1",
|
||||||
"hash": "370228318750a79d93848bdf686444e5"
|
"hash": "2d4812b2129a8eb05fcdbed1e9654422"
|
||||||
},
|
},
|
||||||
"tokens-heart-2": {
|
"tokens-heart-2": {
|
||||||
"name": "tokens-heart-2",
|
"name": "tokens-heart-2",
|
||||||
"rule": ".tokens-heart-2",
|
"rule": ".tokens-heart-2",
|
||||||
"hash": "197144d3987308aaef311e29e3503707"
|
"hash": "64cbdbfb0dc565f17b6f13b5e41bc000"
|
||||||
},
|
},
|
||||||
"tokens-like-1": {
|
"tokens-like-1": {
|
||||||
"name": "tokens-like-1",
|
"name": "tokens-like-1",
|
||||||
"rule": ".tokens-like-1",
|
"rule": ".tokens-like-1",
|
||||||
"hash": "3c5271d6678ad6d217a47779488c9918"
|
"hash": "1b3966d6e0e5d902b558fe3d76ed8a79"
|
||||||
},
|
},
|
||||||
"tokens-like-2": {
|
"tokens-like-2": {
|
||||||
"name": "tokens-like-2",
|
"name": "tokens-like-2",
|
||||||
"rule": ".tokens-like-2",
|
"rule": ".tokens-like-2",
|
||||||
"hash": "b009176baadc3e71786ac24ce8229c5a"
|
"hash": "b74308407fdaa94e08492cfd9b44f2a2"
|
||||||
},
|
},
|
||||||
"tokens-medal-1": {
|
"tokens-medal-1": {
|
||||||
"name": "tokens-medal-1",
|
"name": "tokens-medal-1",
|
||||||
"rule": ".tokens-medal-1",
|
"rule": ".tokens-medal-1",
|
||||||
"hash": "cd897529c6834917da062589ae1a69ae"
|
"hash": "33d837e703091060c1892c402535eef0"
|
||||||
},
|
},
|
||||||
"tokens-medal-2": {
|
"tokens-medal-2": {
|
||||||
"name": "tokens-medal-2",
|
"name": "tokens-medal-2",
|
||||||
"rule": ".tokens-medal-2",
|
"rule": ".tokens-medal-2",
|
||||||
"hash": "d56f106b508c33bca6c0a33e2544d0d6"
|
"hash": "fa2f3b237d7616a6cb309718ad162d7a"
|
||||||
},
|
},
|
||||||
"tokens-medal-3": {
|
"tokens-medal-3": {
|
||||||
"name": "tokens-medal-3",
|
"name": "tokens-medal-3",
|
||||||
"rule": ".tokens-medal-3",
|
"rule": ".tokens-medal-3",
|
||||||
"hash": "d4e7c06cfd39d932a35aa25841d5008c"
|
"hash": "d7282911ba57373b54b4093986143f3e"
|
||||||
},
|
},
|
||||||
"tokens-medal-4": {
|
"tokens-medal-4": {
|
||||||
"name": "tokens-medal-4",
|
"name": "tokens-medal-4",
|
||||||
"rule": ".tokens-medal-4",
|
"rule": ".tokens-medal-4",
|
||||||
"hash": "36f596bd2615e521542ac10a771d6902"
|
"hash": "a107a334968d57314ec6a71620c45b99"
|
||||||
},
|
},
|
||||||
"tokens-misc-1": {
|
"tokens-misc-1": {
|
||||||
"name": "tokens-misc-1",
|
"name": "tokens-misc-1",
|
||||||
"rule": ".tokens-misc-1",
|
"rule": ".tokens-misc-1",
|
||||||
"hash": "8f7575c0176570b30aaffb801bcb2c13"
|
"hash": "671ce03f62c7b0946482ec92d35b8aa3"
|
||||||
},
|
},
|
||||||
"tokens-misc-2": {
|
"tokens-misc-2": {
|
||||||
"name": "tokens-misc-2",
|
"name": "tokens-misc-2",
|
||||||
"rule": ".tokens-misc-2",
|
"rule": ".tokens-misc-2",
|
||||||
"hash": "5c61bc36fd0b5545ebf31b57c6ab5185"
|
"hash": "872353ba82e41512c3b54e5dc2aa3d43"
|
||||||
},
|
},
|
||||||
"tokens-misc-3": {
|
"tokens-misc-3": {
|
||||||
"name": "tokens-misc-3",
|
"name": "tokens-misc-3",
|
||||||
"rule": ".tokens-misc-3",
|
"rule": ".tokens-misc-3",
|
||||||
"hash": "97a383def5eb847077b2b26a1a441c0e"
|
"hash": "cdf9171ec6397b95ea9abe1edeaab359"
|
||||||
},
|
},
|
||||||
"tokens-misc-4": {
|
"tokens-misc-4": {
|
||||||
"name": "tokens-misc-4",
|
"name": "tokens-misc-4",
|
||||||
"rule": ".tokens-misc-4",
|
"rule": ".tokens-misc-4",
|
||||||
"hash": "229c8a28e3b6bb883effbb62689e190f"
|
"hash": "7371fa5ecde282e718b7a15b02ca51e8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"scales": [
|
"scales": [
|
||||||
1,
|
1,
|
||||||
2
|
2
|
||||||
],
|
],
|
||||||
"header": "\/**\n * @provides sprite-tokens-css\n * @generated\n *\/\n\n.sprite-tokens {\n background-image: url(\/rsrc\/image\/sprite-tokens.png);\n background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5),\nonly screen and (min-resolution: 1.5dppx) {\n .sprite-tokens {\n background-image: url(\/rsrc\/image\/sprite-tokens-X2.png);\n background-size: {X}px {Y}px;\n }\n}\n",
|
"header": "/**\n * @provides sprite-tokens-css\n * @generated\n */\n\n.sprite-tokens {\n background-image: url(/rsrc/image/sprite-tokens.png);\n background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5),\nonly screen and (min-resolution: 1.5dppx) {\n .sprite-tokens {\n background-image: url(/rsrc/image/sprite-tokens-X2.png);\n background-size: {X}px {Y}px;\n }\n}\n",
|
||||||
"type": "standard"
|
"type": "standard"
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 638 B After Width: | Height: | Size: 574 B |
|
Before Width: | Height: | Size: 629 B After Width: | Height: | Size: 566 B |
|
Before Width: | Height: | Size: 632 B After Width: | Height: | Size: 551 B |
|
Before Width: | Height: | Size: 791 B After Width: | Height: | Size: 689 B |
BIN
resources/sprite/tokens_1x/emoji-1.png
Normal file
|
After Width: | Height: | Size: 611 B |
BIN
resources/sprite/tokens_1x/emoji-2.png
Normal file
|
After Width: | Height: | Size: 752 B |
BIN
resources/sprite/tokens_1x/emoji-3.png
Normal file
|
After Width: | Height: | Size: 581 B |
BIN
resources/sprite/tokens_1x/emoji-4.png
Normal file
|
After Width: | Height: | Size: 516 B |
BIN
resources/sprite/tokens_1x/emoji-5.png
Normal file
|
After Width: | Height: | Size: 638 B |
BIN
resources/sprite/tokens_1x/emoji-6.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
resources/sprite/tokens_1x/emoji-7.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
resources/sprite/tokens_1x/emoji-8.png
Normal file
|
After Width: | Height: | Size: 717 B |
|
Before Width: | Height: | Size: 742 B After Width: | Height: | Size: 327 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 411 B |
|
Before Width: | Height: | Size: 659 B After Width: | Height: | Size: 337 B |
|
Before Width: | Height: | Size: 719 B After Width: | Height: | Size: 328 B |
|
Before Width: | Height: | Size: 657 B After Width: | Height: | Size: 412 B |
|
Before Width: | Height: | Size: 657 B After Width: | Height: | Size: 423 B |
|
Before Width: | Height: | Size: 653 B After Width: | Height: | Size: 424 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 666 B |
|
Before Width: | Height: | Size: 683 B After Width: | Height: | Size: 534 B |
|
Before Width: | Height: | Size: 716 B After Width: | Height: | Size: 529 B |
|
Before Width: | Height: | Size: 692 B After Width: | Height: | Size: 433 B |
|
Before Width: | Height: | Size: 826 B After Width: | Height: | Size: 568 B |
|
Before Width: | Height: | Size: 753 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 1.5 KiB |
BIN
resources/sprite/tokens_2x/emoji-1.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/sprite/tokens_2x/emoji-2.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
resources/sprite/tokens_2x/emoji-3.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
resources/sprite/tokens_2x/emoji-4.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
resources/sprite/tokens_2x/emoji-5.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
resources/sprite/tokens_2x/emoji-6.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
resources/sprite/tokens_2x/emoji-7.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
resources/sprite/tokens_2x/emoji-8.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 597 B |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 797 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 636 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 682 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 803 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 859 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 841 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 1019 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 794 B |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 1.2 KiB |
@@ -4,27 +4,30 @@ $project_table = new PhabricatorProject();
|
|||||||
$table_name = $project_table->getTableName();
|
$table_name = $project_table->getTableName();
|
||||||
$conn_w = $project_table->establishConnection('w');
|
$conn_w = $project_table->establishConnection('w');
|
||||||
$slug_table_name = id(new PhabricatorProjectSlug())->getTableName();
|
$slug_table_name = id(new PhabricatorProjectSlug())->getTableName();
|
||||||
$time = time();
|
$time = PhabricatorTime::getNow();
|
||||||
|
|
||||||
echo pht('Migrating project phriction slugs...')."\n";
|
echo pht('Migrating projects to slugs...')."\n";
|
||||||
foreach (new LiskMigrationIterator($project_table) as $project) {
|
foreach (new LiskMigrationIterator($project_table) as $project) {
|
||||||
$id = $project->getID();
|
$id = $project->getID();
|
||||||
|
|
||||||
echo pht('Migrating project %d...', $id)."\n";
|
echo pht('Migrating project %d...', $id)."\n";
|
||||||
$phriction_slug = rtrim($project->getPhrictionSlug(), '/');
|
|
||||||
|
$slug_text = PhabricatorSlug::normalizeProjectSlug($project->getName());
|
||||||
$slug = id(new PhabricatorProjectSlug())
|
$slug = id(new PhabricatorProjectSlug())
|
||||||
->loadOneWhere('slug = %s', $phriction_slug);
|
->loadOneWhere('slug = %s', $slug_text);
|
||||||
|
|
||||||
if ($slug) {
|
if ($slug) {
|
||||||
echo pht('Already migrated %d... Continuing.', $id)."\n";
|
echo pht('Already migrated %d... Continuing.', $id)."\n";
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
queryfx(
|
queryfx(
|
||||||
$conn_w,
|
$conn_w,
|
||||||
'INSERT INTO %T (projectPHID, slug, dateCreated, dateModified) '.
|
'INSERT INTO %T (projectPHID, slug, dateCreated, dateModified) '.
|
||||||
'VALUES (%s, %s, %d, %d)',
|
'VALUES (%s, %s, %d, %d)',
|
||||||
$slug_table_name,
|
$slug_table_name,
|
||||||
$project->getPHID(),
|
$project->getPHID(),
|
||||||
$phriction_slug,
|
$slug_text,
|
||||||
$time,
|
$time,
|
||||||
$time);
|
$time);
|
||||||
echo pht('Migrated %d.', $id)."\n";
|
echo pht('Migrated %d.', $id)."\n";
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ foreach ($iterator as $event) {
|
|||||||
// later patch. See T8209.
|
// later patch. See T8209.
|
||||||
$user = id(new PhabricatorPeopleQuery())
|
$user = id(new PhabricatorPeopleQuery())
|
||||||
->setViewer($viewer)
|
->setViewer($viewer)
|
||||||
->withPHIDs(array($event->getUserPHID()))
|
->withPHIDs(array($event->getHostPHID()))
|
||||||
->executeOne();
|
->executeOne();
|
||||||
|
|
||||||
if ($user) {
|
if ($user) {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
$project_table = new PhabricatorProject();
|
$project_table = new PhabricatorProject();
|
||||||
$conn_w = $project_table->establishConnection('w');
|
$conn_w = $project_table->establishConnection('w');
|
||||||
|
|
||||||
$panel_table = id(new PhabricatorProfilePanelConfiguration());
|
$panel_table = id(new PhabricatorProfileMenuItemConfiguration());
|
||||||
$panel_conn = $panel_table->establishConnection('w');
|
$panel_conn = $panel_table->establishConnection('w');
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($project_table) as $project) {
|
foreach (new LiskMigrationIterator($project_table) as $project) {
|
||||||
@@ -50,9 +50,9 @@ foreach (new LiskMigrationIterator($project_table) as $project) {
|
|||||||
$panel_table->getTableName(),
|
$panel_table->getTableName(),
|
||||||
$panel_table->generatePHID(),
|
$panel_table->generatePHID(),
|
||||||
$project->getPHID(),
|
$project->getPHID(),
|
||||||
PhabricatorProjectWorkboardProfilePanel::PANELKEY,
|
PhabricatorProjectWorkboardProfileMenuItem::MENUITEMKEY,
|
||||||
PhabricatorProject::PANEL_WORKBOARD,
|
PhabricatorProject::ITEM_WORKBOARD,
|
||||||
PhabricatorProfilePanelConfiguration::VISIBILITY_DEFAULT,
|
PhabricatorProfileMenuItemConfiguration::VISIBILITY_DEFAULT,
|
||||||
'{}',
|
'{}',
|
||||||
2,
|
2,
|
||||||
PhabricatorTime::getNow(),
|
PhabricatorTime::getNow(),
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_phame.phame_blog
|
||||||
|
MODIFY parentDomain VARCHAR(128) NULL COLLATE {$COLLATE_TEXT};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_phame.phame_blog
|
||||||
|
MODIFY parentSite VARCHAR(128) NULL COLLATE {$COLLATE_TEXT};
|
||||||
2
resources/sql/autopatches/20160707.calendar.01.stub.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_calendar.calendar_event
|
||||||
|
ADD isStub BOOL NOT NULL;
|
||||||
2
resources/sql/autopatches/20160711.files.01.builtin.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_file.file
|
||||||
|
ADD builtinKey VARCHAR(64) COLLATE {$COLLATE_TEXT};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_file.file
|
||||||
|
ADD UNIQUE KEY `key_builtin` (builtinKey);
|
||||||
2
resources/sql/autopatches/20160713.event.01.host.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_calendar.calendar_event
|
||||||
|
CHANGE userPHID hostPHID VARBINARY(64) NOT NULL;
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_calendar.calendar_event
|
||||||
|
ADD allDayDateFrom INT UNSIGNED NOT NULL;
|
||||||
2
resources/sql/autopatches/20160715.event.02.alldayto.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_calendar.calendar_event
|
||||||
|
ADD allDayDateTo INT UNSIGNED NOT NULL;
|
||||||
3
resources/sql/autopatches/20160715.event.03.allday.php
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// This migration was replaced by "20161004.cal.01.noepoch.php".
|
||||||
37
resources/sql/autopatches/20160720.calendar.invitetxn.php
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$table = new PhabricatorCalendarEventTransaction();
|
||||||
|
$conn_w = $table->establishConnection('w');
|
||||||
|
|
||||||
|
echo pht(
|
||||||
|
"Restructuring calendar invite transactions...\n");
|
||||||
|
|
||||||
|
foreach (new LiskMigrationIterator($table) as $txn) {
|
||||||
|
$type = PhabricatorCalendarEventInviteTransaction::TRANSACTIONTYPE;
|
||||||
|
if ($txn->getTransactionType() != $type) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$old_value = array_keys($txn->getOldValue());
|
||||||
|
|
||||||
|
$orig_new = $txn->getNewValue();
|
||||||
|
$status_uninvited = 'uninvited';
|
||||||
|
foreach ($orig_new as $key => $status) {
|
||||||
|
if ($status == $status_uninvited) {
|
||||||
|
unset($orig_new[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$new_value = array_keys($orig_new);
|
||||||
|
|
||||||
|
queryfx(
|
||||||
|
$conn_w,
|
||||||
|
'UPDATE %T SET '.
|
||||||
|
'oldValue = %s, newValue = %s'.
|
||||||
|
'WHERE id = %d',
|
||||||
|
$table->getTableName(),
|
||||||
|
phutil_json_encode($old_value),
|
||||||
|
phutil_json_encode($new_value),
|
||||||
|
$txn->getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
echo pht('Done.')."\n";
|
||||||
11
resources/sql/autopatches/20160721.pack.01.pub.sql
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_packages.packages_publisher (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
phid VARBINARY(64) NOT NULL,
|
||||||
|
name VARCHAR(64) NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
publisherKey VARCHAR(64) NOT NULL COLLATE {$COLLATE_SORT},
|
||||||
|
editPolicy VARBINARY(64) NOT NULL,
|
||||||
|
dateCreated INT UNSIGNED NOT NULL,
|
||||||
|
dateModified INT UNSIGNED NOT NULL,
|
||||||
|
UNIQUE KEY `key_phid` (phid),
|
||||||
|
UNIQUE KEY `key_publisher` (publisherKey)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
19
resources/sql/autopatches/20160721.pack.02.pubxaction.sql
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_packages.packages_publishertransaction (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
phid VARBINARY(64) NOT NULL,
|
||||||
|
authorPHID VARBINARY(64) NOT NULL,
|
||||||
|
objectPHID VARBINARY(64) NOT NULL,
|
||||||
|
viewPolicy VARBINARY(64) NOT NULL,
|
||||||
|
editPolicy VARBINARY(64) NOT NULL,
|
||||||
|
commentPHID VARBINARY(64) DEFAULT NULL,
|
||||||
|
commentVersion INT UNSIGNED NOT NULL,
|
||||||
|
transactionType VARCHAR(32) COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
oldValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
newValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
contentSource LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
metadata LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
dateCreated INT UNSIGNED NOT NULL,
|
||||||
|
dateModified INT UNSIGNED NOT NULL,
|
||||||
|
UNIQUE KEY `key_phid` (`phid`),
|
||||||
|
KEY `key_object` (`objectPHID`)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
16
resources/sql/autopatches/20160721.pack.03.edge.sql
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_packages.edge (
|
||||||
|
src VARBINARY(64) NOT NULL,
|
||||||
|
type INT UNSIGNED NOT NULL,
|
||||||
|
dst VARBINARY(64) NOT NULL,
|
||||||
|
dateCreated INT UNSIGNED NOT NULL,
|
||||||
|
seq INT UNSIGNED NOT NULL,
|
||||||
|
dataID INT UNSIGNED,
|
||||||
|
PRIMARY KEY (src, type, dst),
|
||||||
|
KEY `src` (src, type, dateCreated, seq),
|
||||||
|
UNIQUE KEY `key_dst` (dst, type, src)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
|
|
||||||
|
CREATE TABLE {$NAMESPACE}_packages.edgedata (
|
||||||
|
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||||
|
data LONGTEXT NOT NULL COLLATE {$COLLATE_TEXT}
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
13
resources/sql/autopatches/20160721.pack.04.pkg.sql
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_packages.packages_package (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
phid VARBINARY(64) NOT NULL,
|
||||||
|
name VARCHAR(64) NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
publisherPHID VARBINARY(64) NOT NULL,
|
||||||
|
packageKey VARCHAR(64) NOT NULL COLLATE {$COLLATE_SORT},
|
||||||
|
viewPolicy VARBINARY(64) NOT NULL,
|
||||||
|
editPolicy VARBINARY(64) NOT NULL,
|
||||||
|
dateCreated INT UNSIGNED NOT NULL,
|
||||||
|
dateModified INT UNSIGNED NOT NULL,
|
||||||
|
UNIQUE KEY `key_phid` (phid),
|
||||||
|
UNIQUE KEY `key_package` (publisherPHID, packageKey)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
19
resources/sql/autopatches/20160721.pack.05.pkgxaction.sql
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_packages.packages_packagetransaction (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
phid VARBINARY(64) NOT NULL,
|
||||||
|
authorPHID VARBINARY(64) NOT NULL,
|
||||||
|
objectPHID VARBINARY(64) NOT NULL,
|
||||||
|
viewPolicy VARBINARY(64) NOT NULL,
|
||||||
|
editPolicy VARBINARY(64) NOT NULL,
|
||||||
|
commentPHID VARBINARY(64) DEFAULT NULL,
|
||||||
|
commentVersion INT UNSIGNED NOT NULL,
|
||||||
|
transactionType VARCHAR(32) COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
oldValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
newValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
contentSource LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
metadata LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
dateCreated INT UNSIGNED NOT NULL,
|
||||||
|
dateModified INT UNSIGNED NOT NULL,
|
||||||
|
UNIQUE KEY `key_phid` (`phid`),
|
||||||
|
KEY `key_object` (`objectPHID`)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
10
resources/sql/autopatches/20160721.pack.06.version.sql
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_packages.packages_version (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
phid VARBINARY(64) NOT NULL,
|
||||||
|
name VARCHAR(64) NOT NULL COLLATE {$COLLATE_SORT},
|
||||||
|
packagePHID VARBINARY(64) NOT NULL,
|
||||||
|
dateCreated INT UNSIGNED NOT NULL,
|
||||||
|
dateModified INT UNSIGNED NOT NULL,
|
||||||
|
UNIQUE KEY `key_phid` (phid),
|
||||||
|
UNIQUE KEY `key_package` (packagePHID, name)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_packages.packages_versiontransaction (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
phid VARBINARY(64) NOT NULL,
|
||||||
|
authorPHID VARBINARY(64) NOT NULL,
|
||||||
|
objectPHID VARBINARY(64) NOT NULL,
|
||||||
|
viewPolicy VARBINARY(64) NOT NULL,
|
||||||
|
editPolicy VARBINARY(64) NOT NULL,
|
||||||
|
commentPHID VARBINARY(64) DEFAULT NULL,
|
||||||
|
commentVersion INT UNSIGNED NOT NULL,
|
||||||
|
transactionType VARCHAR(32) COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
oldValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
newValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
contentSource LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
metadata LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
|
||||||
|
dateCreated INT UNSIGNED NOT NULL,
|
||||||
|
dateModified INT UNSIGNED NOT NULL,
|
||||||
|
UNIQUE KEY `key_phid` (`phid`),
|
||||||
|
KEY `key_object` (`objectPHID`)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
7
resources/sql/autopatches/20160722.pack.01.pubngrams.sql
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_packages.packages_publishername_ngrams (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
objectID INT UNSIGNED NOT NULL,
|
||||||
|
ngram CHAR(3) NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
KEY `key_object` (objectID),
|
||||||
|
KEY `key_ngram` (ngram, objectID)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
7
resources/sql/autopatches/20160722.pack.02.pkgngrams.sql
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_packages.packages_packagename_ngrams (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
objectID INT UNSIGNED NOT NULL,
|
||||||
|
ngram CHAR(3) NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
KEY `key_object` (objectID),
|
||||||
|
KEY `key_ngram` (ngram, objectID)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_packages.packages_versionname_ngrams (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
objectID INT UNSIGNED NOT NULL,
|
||||||
|
ngram CHAR(3) NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
KEY `key_object` (objectID),
|
||||||
|
KEY `key_ngram` (ngram, objectID)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_repository.repository_commit
|
||||||
|
CHANGE summary summary VARCHAR(255) NOT NULL COLLATE {$COLLATE_TEXT};
|
||||||
1
resources/sql/autopatches/20160824.connectionlog.sql
Normal file
@@ -0,0 +1 @@
|
|||||||
|
DROP TABLE {$NAMESPACE}_conduit.conduit_connectionlog;
|
||||||
8
resources/sql/autopatches/20160824.repohint.01.hint.sql
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_repository.repository_commithint (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
repositoryPHID VARBINARY(64) NOT NULL,
|
||||||
|
oldCommitIdentifier VARCHAR(40) NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
newCommitIdentifier VARCHAR(40) COLLATE {$COLLATE_TEXT},
|
||||||
|
hintType VARCHAR(32) NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
UNIQUE KEY `key_old` (repositoryPHID, oldCommitIdentifier)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
39
resources/sql/autopatches/20160824.repohint.02.movebad.php
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$table = new PhabricatorRepositoryCommit();
|
||||||
|
$conn = $table->establishConnection('w');
|
||||||
|
|
||||||
|
$rows = queryfx_all(
|
||||||
|
$conn,
|
||||||
|
'SELECT fullCommitName FROM repository_badcommit');
|
||||||
|
|
||||||
|
$viewer = PhabricatorUser::getOmnipotentUser();
|
||||||
|
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
$identifier = $row['fullCommitName'];
|
||||||
|
|
||||||
|
$commit = id(new DiffusionCommitQuery())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->withIdentifiers(array($identifier))
|
||||||
|
->executeOne();
|
||||||
|
|
||||||
|
if (!$commit) {
|
||||||
|
echo tsprintf(
|
||||||
|
"%s\n",
|
||||||
|
pht(
|
||||||
|
'Skipped hint for "%s", this is not a valid commit.',
|
||||||
|
$identifier));
|
||||||
|
} else {
|
||||||
|
PhabricatorRepositoryCommitHint::updateHint(
|
||||||
|
$commit->getRepository()->getPHID(),
|
||||||
|
$commit->getCommitIdentifier(),
|
||||||
|
null,
|
||||||
|
PhabricatorRepositoryCommitHint::HINT_UNREADABLE);
|
||||||
|
|
||||||
|
echo tsprintf(
|
||||||
|
"%s\n",
|
||||||
|
pht(
|
||||||
|
'Updated commit hint for "%s".',
|
||||||
|
$identifier));
|
||||||
|
}
|
||||||
|
}
|
||||||