Page MenuHomePhorge

D25440.1731986012.diff
No OneTemporary

D25440.1731986012.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -5399,6 +5399,8 @@
'PholioTransactionType' => 'applications/pholio/xaction/PholioTransactionType.php',
'PholioTransactionView' => 'applications/pholio/view/PholioTransactionView.php',
'PholioUploadedImageView' => 'applications/pholio/view/PholioUploadedImageView.php',
+ 'PhorgeCodeWarningSetupCheck' => 'applications/config/check/PhorgeCodeWarningSetupCheck.php',
+ 'PhorgeSystemDeprecationWarningListener' => 'applications/system/events/PhorgeSystemDeprecationWarningListener.php',
'PhortuneAccount' => 'applications/phortune/storage/PhortuneAccount.php',
'PhortuneAccountAddManagerController' => 'applications/phortune/controller/account/PhortuneAccountAddManagerController.php',
'PhortuneAccountBillingAddressTransaction' => 'applications/phortune/xaction/PhortuneAccountBillingAddressTransaction.php',
@@ -12238,6 +12240,8 @@
'PholioTransactionType' => 'PhabricatorModularTransactionType',
'PholioTransactionView' => 'PhabricatorApplicationTransactionView',
'PholioUploadedImageView' => 'AphrontView',
+ 'PhorgeCodeWarningSetupCheck' => 'PhabricatorSetupCheck',
+ 'PhorgeSystemDeprecationWarningListener' => 'PhabricatorEventListener',
'PhortuneAccount' => array(
'PhortuneDAO',
'PhabricatorApplicationTransactionInterface',
diff --git a/src/applications/config/check/PhorgeCodeWarningSetupCheck.php b/src/applications/config/check/PhorgeCodeWarningSetupCheck.php
new file mode 100644
--- /dev/null
+++ b/src/applications/config/check/PhorgeCodeWarningSetupCheck.php
@@ -0,0 +1,79 @@
+<?php
+
+final class PhorgeCodeWarningSetupCheck extends PhabricatorSetupCheck {
+
+ public function getExecutionOrder() {
+ return 2000;
+ }
+
+ public function getDefaultGroup() {
+ return self::GROUP_OTHER;
+ }
+
+ protected function executeChecks() {
+ $warnings = (new PhorgeSystemDeprecationWarningListener())->getWarnings();
+ if (!$warnings) {
+ return;
+ }
+
+ $link = phutil_tag(
+ 'a',
+ array('href' => 'https://we.phorge.it/w/docs/report-warnings/'),
+ pht('%s\'s home page', PlatformSymbols::getPlatformServerName()));
+
+ $message = pht(
+ 'There is some deprecated code found in the %s code-base.'.
+ "\n\n".
+ "This isn't a problem yet, but it means that %s might stop working if ".
+ 'you upgrade PHP version.'.
+ "\n\n".
+ 'This page records a sample of the cases since last server restart. '.
+ "\n\n".
+ 'To solve this issue, either:'.
+ "\n\n".
+ '- Visit %s, file bug report with the information below, or'.
+ "\n".
+ '- Ignore this issue using the `Ignore` button below.'.
+ "\n\n"
+ ,
+ PlatformSymbols::getPlatformServerName(),
+ PlatformSymbols::getPlatformServerName(),
+ $link);
+ $message = array($message);
+
+ $message[] = pht('Recorded items (sample):');
+ $list = array();
+ $warnings = array_reverse(isort($warnings, 'counter'));
+ foreach ($warnings as $key => $data) {
+ $summary = pht(
+ '%s, occurrences: %s',
+ $key,
+ $data['counter']);
+
+ $trace = phutil_tag('tt', array(),
+ array($data['message'] , "\n", $data['trace']));
+
+ $list[] = phutil_tag(
+ 'li',
+ array(),
+ phutil_tag(
+ 'details',
+ array(),
+ array(
+ phutil_tag('summary', array(), $summary),
+ $trace,
+ )));
+ }
+ $message[] = phutil_tag('ul', array(), $list);
+
+
+ $this->newIssue('deprecations')
+ ->setName(pht('Deprecated Code'))
+ ->setMessage($message)
+ ->setSummary(pht('There is some deprecated code found in the code-base.'))
+ ->addLink(
+ 'https://we.phorge.it/w/docs/report-warnings/',
+ 'More Details on the website');
+ }
+
+}
diff --git a/src/applications/system/application/PhabricatorSystemApplication.php b/src/applications/system/application/PhabricatorSystemApplication.php
--- a/src/applications/system/application/PhabricatorSystemApplication.php
+++ b/src/applications/system/application/PhabricatorSystemApplication.php
@@ -17,6 +17,7 @@
public function getEventListeners() {
return array(
new PhabricatorSystemDebugUIEventListener(),
+ new PhorgeSystemDeprecationWarningListener(),
);
}
diff --git a/src/applications/system/events/PhorgeSystemDeprecationWarningListener.php b/src/applications/system/events/PhorgeSystemDeprecationWarningListener.php
new file mode 100644
--- /dev/null
+++ b/src/applications/system/events/PhorgeSystemDeprecationWarningListener.php
@@ -0,0 +1,58 @@
+<?php
+
+final class PhorgeSystemDeprecationWarningListener
+ extends PhabricatorEventListener {
+
+ const CACHE_KEY = 'setup-check:deprecation-warnings';
+ const MAX_ENTRIES = 5;
+
+ public function handleEvent(PhutilEvent $event) {
+ // we're not an actual PhutilEventListener - we're just using the `register`
+ // part of that framework.
+ }
+
+ public function register() {
+ PhutilErrorHandler::addErrorListener(
+ array($this, 'handleErrors'));
+ }
+
+ public function handleErrors($event, $value, $metadata) {
+
+ if ($event !== PhutilErrorHandler::DEPRECATED) {
+ return;
+ }
+
+ $trace_key = sprintf(
+ '%s:%s',
+ basename($metadata['file']),
+ $metadata['line']);
+
+ $cache = PhabricatorCaches::getRuntimeCache();
+ $cache_entry = $cache->getKey(self::CACHE_KEY);
+
+ if (!$cache_entry) {
+ $cache_entry = array();
+ }
+
+ $trace_entry = idx($cache_entry, $trace_key);
+
+ if ($trace_entry) {
+ $trace_entry['counter']++;
+ } else {
+ $trace_entry = array(
+ 'counter' => 1,
+ 'message' => $value,
+ 'trace' => PhutilErrorHandler::formatStacktrace($metadata['trace']),
+ );
+ }
+ $cache_entry[$trace_key] = $trace_entry;
+
+ $cache->setKey(self::CACHE_KEY , $cache_entry);
+ }
+
+ public function getWarnings() {
+ $cache = PhabricatorCaches::getRuntimeCache();
+ return $cache->getKey(self::CACHE_KEY);
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Tue, Nov 19, 03:13 (19 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
977062
Default Alt Text
D25440.1731986012.diff (6 KB)

Event Timeline