Merge branch 'rhymix:master' into master

This commit is contained in:
Lastorder 2025-07-15 10:09:11 +09:00 committed by GitHub
commit e15c8f4e52
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
32 changed files with 99 additions and 63 deletions

View file

@ -349,7 +349,7 @@ class Korea
return self::$_domain_cache[$domain] = false;
}
}
foreach (self::_getDNSRecords($domain, \DNS_A) as $mx_ip)
foreach (self::_getDNSRecords($mx, \DNS_A) as $mx_ip)
{
return self::$_domain_cache[$domain] = self::isKoreanIP($mx_ip);
}

View file

@ -585,7 +585,7 @@ class Mail
// Reset Message-ID in case send() is called multiple times.
$random = substr(hash('sha256', mt_rand() . microtime() . getmypid()), 0, 32);
$sender = $this->message->getFrom();
$sender_email = strval(array_first_key($sender));
$sender_email = strval(array_key_first($sender));
$id = $random . '@' . (preg_match('/^(.+)@([^@]+)$/', $sender_email, $matches) ? $matches[2] : 'swift.generated');
$this->message->getHeaders()->get('Message-ID')->setId($id);

View file

@ -112,7 +112,7 @@ class Password
{
unset($algos['argon2id']);
}
return array_first_key($algos);
return array_key_first($algos);
}
/**

View file

@ -608,7 +608,7 @@ class Router
return false;
}
arsort($reordered_routes);
$best_route = array_first_key($reordered_routes);
$best_route = array_key_first($reordered_routes);
return $best_route;
}
}

View file

@ -560,6 +560,7 @@ class Storage
return false;
}
}
chmod($destination, 0666 & ~self::getUmask());
}
elseif ($type === 'move')
{
@ -570,6 +571,7 @@ class Storage
return false;
}
}
chmod($destination, 0666 & ~self::getUmask());
}
else
{

View file

@ -368,7 +368,10 @@ class Template
$content = $this->parse();
if (!Storage::write($this->cache_path, $content))
{
throw new Exception('Cannot write template cache file: ' . $this->cache_path);
if (!Storage::write($this->cache_path, $content))
{
throw new Exception('Cannot write template cache file: ' . $this->cache_path);
}
}
}

View file

@ -69,7 +69,7 @@ class Brevo extends Base implements \Rhymix\Framework\Drivers\MailInterface
$from = $message->message->getFrom();
$to = $message->message->getTo();
$data = [
'sender' => ['email' => array_first_key($from), 'name' => array_first($from)],
'sender' => ['email' => array_key_first($from), 'name' => array_first($from)],
'to' => array_map($format_callback, array_keys($to), array_values($to)),
'subject' => $message->message->getSubject(),
'htmlContent' => $message->message->getBody(),
@ -84,7 +84,7 @@ class Brevo extends Base implements \Rhymix\Framework\Drivers\MailInterface
}
if ($reply_to = $message->message->getReplyTo())
{
$data['replyTo'] = ['email' => array_first_key($reply_to)];
$data['replyTo'] = ['email' => array_key_first($reply_to)];
}
foreach ($message->getAttachments() as $attachment)
{
@ -93,7 +93,7 @@ class Brevo extends Base implements \Rhymix\Framework\Drivers\MailInterface
'name' => $attachment->display_filename ?: $attachment->cid,
];
}
// Prepare headers and options for Requests.
$headers = [
'api-key' => $this->_config['api_key'],
@ -103,7 +103,7 @@ class Brevo extends Base implements \Rhymix\Framework\Drivers\MailInterface
$options = [
'timeout' => 8,
];
// Send the API request.
$request = \Rhymix\Framework\HTTP::post(self::$_url, $data, $headers, [], $options);
$status_code = $request->getStatusCode();

View file

@ -108,7 +108,7 @@ class SendGrid extends Base implements \Rhymix\Framework\Drivers\MailInterface
$from = $message->message->getFrom();
if ($from)
{
$data['from']['email'] = array_first_key($from);
$data['from']['email'] = array_key_first($from);
if (array_first($from))
{
$data['from']['name'] = array_first($from);
@ -119,7 +119,7 @@ class SendGrid extends Base implements \Rhymix\Framework\Drivers\MailInterface
$replyTo = $message->message->getReplyTo();
if ($replyTo)
{
$data['reply_to']['email'] = array_first_key($from);
$data['reply_to']['email'] = array_key_first($from);
}
// Set the subject.

View file

@ -304,7 +304,13 @@ class DBTableParser extends BaseParser
if ($constraint->references)
{
$ref = explode('.', $constraint->references);
$info->refs[] = $ref[0];
$reference_table_name = $ref[0];
if ($reference_table_name === $table_name)
{
continue; // Ignore self-references.
}
$info->refs[] = $reference_table_name;
}
}
$ref_list[$table_name] = $info;
@ -328,7 +334,6 @@ class DBTableParser extends BaseParser
}
}
}
$k++;
}
if (!$changed)
{

View file

@ -56,9 +56,12 @@ function lang(?string $code, $value = null)
* @param array $array The input array
* @return mixed
*/
function array_first(array $array)
if (!function_exists('array_first'))
{
return reset($array);
function array_first(array $array)
{
return reset($array);
}
}
/**
@ -69,8 +72,7 @@ function array_first(array $array)
*/
function array_first_key(array $array)
{
reset($array);
return key($array);
return array_key_first($array);
}
/**
@ -79,9 +81,12 @@ function array_first_key(array $array)
* @param array $array The input array
* @return mixed
*/
function array_last(array $array)
if (!function_exists('array_last'))
{
return end($array);
function array_last(array $array)
{
return end($array);
}
}
/**
@ -92,8 +97,7 @@ function array_last(array $array)
*/
function array_last_key(array $array)
{
end($array);
return key($array);
return array_key_last($array);
}
/**

View file

@ -614,7 +614,7 @@ Rhymix.ajaxForm = function(form, callback_success, callback_error) {
} else {
callback_success = function(data) {
if (data.message && data.message !== 'success') {
alert(data.message);
rhymix_alert(data.message, data.redirect_url);
}
if (data.redirect_url) {
Rhymix.redirectToUrl(data.redirect_url.replace(/&/g, '&'));