Skip to content

Commit

Permalink
Merge branch '4.4-dev' into providers/plugins/system
Browse files Browse the repository at this point in the history
  • Loading branch information
laoneo committed Apr 20, 2023
2 parents 147da9d + 0e57bdd commit 2e06b5a
Show file tree
Hide file tree
Showing 116 changed files with 1,036 additions and 456 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
use Joomla\CMS\Mail\Exception\MailDisabledException;
use Joomla\CMS\Mail\MailTemplate;
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
use Joomla\CMS\User\UserFactoryAwareInterface;
use Joomla\CMS\User\UserFactoryAwareTrait;
use Joomla\Component\Actionlogs\Administrator\Helper\ActionlogsHelper;
use Joomla\Utilities\IpHelper;
use PHPMailer\PHPMailer\Exception as phpMailerException;
Expand All @@ -30,8 +32,10 @@
*
* @since 3.9.0
*/
class ActionlogModel extends BaseDatabaseModel
class ActionlogModel extends BaseDatabaseModel implements UserFactoryAwareInterface
{
use UserFactoryAwareTrait;

/**
* Function to add logs to the database
* This method adds a record to #__action_logs contains (message_language_key, message, date, context, user)
Expand All @@ -45,9 +49,13 @@ class ActionlogModel extends BaseDatabaseModel
*
* @since 3.9.0
*/
public function addLog($messages, $messageLanguageKey, $context, $userId = null)
public function addLog($messages, $messageLanguageKey, $context, $userId = 0)
{
$user = Factory::getUser($userId);
if (!is_numeric($userId)) {
@trigger_error(sprintf('User ID must be an integer in %s.', __METHOD__), E_USER_DEPRECATED);
}

$user = $userId ? $this->getUserFactory()->loadUserById($userId) : $this->getCurrentUser();
$db = $this->getDatabase();
$date = Factory::getDate();
$params = ComponentHelper::getComponent('com_actionlogs')->getParams();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ protected function addToolbar()
$saveGroup->configure(
function (Toolbar $childBar) {
$childBar->save('category.save');
$childBar->save('category.save2new');
$childBar->save2new('category.save2new');
}
);

Expand Down
25 changes: 4 additions & 21 deletions administrator/components/com_modules/src/View/Module/HtmlView.php
Original file line number Diff line number Diff line change
Expand Up @@ -116,26 +116,9 @@ function (Toolbar $childBar) {

$toolbar->cancel('module.cancel', 'JTOOLBAR_CANCEL');
} else {
$toolbarButtons = [];

// Can't save the record if it's checked out.
if (!$checkedOut) {
// Since it's an existing record, check the edit permission.
if ($canDo->get('core.edit')) {
$toolbar->apply('module.apply');

$toolbarButtons[] = ['save', 'module.save'];

// We can save this record, but check the create permission to see if we can return to make a new one.
if ($canDo->get('core.create')) {
$toolbarButtons[] = ['save2new', 'module.save2new'];
}
}
}

// If checked out, we can still save
if ($canDo->get('core.create')) {
$toolbarButtons[] = ['save2copy', 'module.save2copy'];
if (!$checkedOut && $canDo->get('core.edit')) {
$toolbar->apply('module.apply');
}

$saveGroup = $toolbar->dropdownButton('save-group');
Expand All @@ -148,13 +131,13 @@ function (Toolbar $childBar) use ($checkedOut, $canDo) {

// We can save this record, but check the create permission to see if we can return to make a new one.
if ($canDo->get('core.create')) {
$childBar->save('module.save2new');
$childBar->save2new('module.save2new');
}
}

// If checked out, we can still save
if ($canDo->get('core.create')) {
$childBar->save('module.save2copy');
$childBar->save2copy('module.save2copy');
}
}
);
Expand Down
13 changes: 6 additions & 7 deletions administrator/components/com_users/src/View/User/HtmlView.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
use Joomla\CMS\Object\CMSObject;
use Joomla\CMS\Toolbar\Toolbar;
use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\User\User;
use Joomla\CMS\User\UserFactoryInterface;
use Joomla\CMS\User\UserFactoryAwareInterface;
use Joomla\CMS\User\UserFactoryAwareTrait;
use Joomla\Component\Users\Administrator\Helper\Mfa;

// phpcs:disable PSR1.Files.SideEffects
Expand All @@ -31,8 +31,10 @@
*
* @since 1.5
*/
class HtmlView extends BaseHtmlView
class HtmlView extends BaseHtmlView implements UserFactoryAwareInterface
{
use UserFactoryAwareTrait;

/**
* The Form object
*
Expand Down Expand Up @@ -114,10 +116,7 @@ public function display($tpl = null)
$this->form->setValue('password', null);
$this->form->setValue('password2', null);

/** @var User $userBeingEdited */
$userBeingEdited = Factory::getContainer()
->get(UserFactoryInterface::class)
->loadUserById($this->item->id);
$userBeingEdited = $this->getUserFactory()->loadUserById($this->item->id);

if ($this->item->id > 0 && (int) $userBeingEdited->id == (int) $this->item->id) {
try {
Expand Down
14 changes: 12 additions & 2 deletions installation/language/eu-ES/joomla.ini
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,8 @@ INSTL_DATABASE_NAME_MSG_POSTGRES="Datu-basearen izena baliogabea da. Letra batek
INSTL_DATABASE_NO_SCHEMA="Ez dago datu-base eskemarik datu-base mota honentzat."
INSTL_DATABASE_PASSWORD_DESC="Sortu duzun pasahitza edo ostalariak emandako pasahitza. Erabiltzaile-izena eta pasahitza ez datoz bat edo oraindik ez duzu konturik."
INSTL_DATABASE_PREFIX_DESC="Sartu taula aurrizki bat edo erabili ausaz sortutakoa."
INSTL_DATABASE_PREFIX_MSG="Taularen aurrizkiak letra batekin hasi behar du, aukeran karaktere alfanumerikoak eta azpimarra batekin jarraitu behar da"
INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Aurrizki bera duten taulak dituen datu-base bat erabiltzen ari bazara, Joomlak dauden taula horien izena aldatuko du \"bak_\" aurrizkia gehituz."
INSTL_DATABASE_PREFIX_MSG="Taularen aurrizkiak letra batekin hasi behar du, aukeran karaktere alfanumerikoak eta azpimarra batekin jarraitu behar du"
INSTL_DATABASE_RESPONSE_ERROR="Instalazio prozesuak huts egin du."
INSTL_DATABASE_TYPE_DESC="Hautatu datu-base mota."
INSTL_DATABASE_USER_DESC="Zeuk sortu duzun erabiltzaile izena edo zure ostalariak emandako izena."
Expand All @@ -105,6 +106,8 @@ INSTL_COMPLETE_ERROR_FOLDER_DELETE="Ezin da \"%s\" karpeta ezabatu. Mesedez, ez
INSTL_COMPLETE_REMOVE_FOLDER="Ezabatu \"%s\" karpeta"
INSTL_COMPLETE_CONGRAT="Zorionak!"
INSTL_COMPLETE_TITLE="Zorionak! Zure Joomla gunea prest dago."
INSTL_COMPLETE_SITE_BTN="Gunea ireki"
INSTL_COMPLETE_ADMIN_BTN="Administratzailea ireki"
INSTL_COMPLETE_FINAL="Instalazioa Osatu da"
INSTL_COMPLETE_FINAL_DESC="Zure Joomla instalazioa osatuta eta erabiltzeko prest dago."
INSTL_COMPLETE_ADD_EXTRA_LANGUAGE="Instalatu Hizkuntza Gehigarriak"
Expand All @@ -115,7 +118,10 @@ INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE="Hizkuntza"
INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE_SELECT="Hautatu Hizkuntza"
INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE_TAG="Hizkuntza Etiketa"
INSTL_LANGUAGES_COLUMN_HEADER_VERSION="Bertsioa"
INSTL_LANGUAGES_DESC="Joomlaren interfazea hainbat hizkuntzatan erabilgarri dago. Aukeratu hobetsitako hizkuntzak kontrol-laukiak hautatuta eta instala itzazu \"Aukeratutako hizkuntzak instalatu\" botoia hautatuta. <br> Oharra: eragiketa honek 10 segundo inguru beharko ditu hizkuntza bakoitza deskargatu eta instalatzeko. Denbora-mugak ekiditeko, hauta itzazu 3 hizkuntza gehienez."
INSTL_LANGUAGES_MESSAGE_PLEASE_WAIT="Eragiketa honek 10 segundo inguru iraun ditzake hizkuntza bakoitzean.<br>Itxaron guk hizkuntzak deskargatu eta instalatu bitartean &hellip;"
INSTL_LANGUAGES_NO_LANGUAGE_SELECTED="Ez da instalatzeko hizkuntzarik hautatu."
INSTL_LANGUAGES_SELECTED="Aukeratutako hizkuntzak instalatu"
INSTL_LANGUAGES_WARNING_NO_INTERNET="Joomla! ezin izan da konektatu hizkuntzen zerbitzariarekin. Mesedez, utzi bertan behera instalazioa."
INSTL_LANGUAGES_WARNING_NO_INTERNET2="Oharra: Joomla administratzailea erabiliz, hizkuntzak instalatu ahal izango dituzu geroago."
INSTL_LANGUAGES_WARNING_BACK_BUTTON="Itzuli instalazioko azken urratsera."
Expand Down Expand Up @@ -166,9 +172,10 @@ INSTL_HEADER_ERROR="Errorea"
; Helpers
INSTL_PAGE_TITLE="Joomla Instalatzailea"
; Configuration model
INSTL_ERROR_CONNECT_DB="Ezin izan da datu-basearekin konektatu. Konektoreak zenbaki hau itzuli du: %d."
INSTL_STD_OFFLINE_MSG="Gunea itxita dago mantentze-lanengatik.<br>Saia zaitez geroago."
; Languages model
INSTL_ERROR_INVALID_URL="URL baliogabea"
INSTL_ERROR_INVALID_URL="Baliogabedun URLa"
; Others
INSTL_CONFPROBLEM="Zure konfigurazio-fitxategia edo karpeta ez da idazgarria edo arazoren bat gertatu da konfigurazio-fitxategia sortzean. Ondoko kodea eskuz kargatu beharko duzu: Egin klik testu-arean eduki osoa kopiatuz eta itsatsi gero testu-fitxategi berri batean. Gorde 'configuration.php' izenarekin, eta kargatu zure guneko erro karpetara."
INSTL_DISPLAY_ERRORS="Bistaratu Erroreak"
Expand All @@ -183,6 +190,7 @@ INSTL_NOTICE_NEEDSTOBEWRITABLE="Instalazioarekin jarrai dezakezu baimenak konpon
INSTL_OUTPUT_BUFFERING="Irteerako Bufferreratzea"
INSTL_PHP_VERSION="PHP Bertsioa"
INSTL_PHP_VERSION_NEWER="PHP Bertsioa >= %s"
INSTL_PROCESS_BUSY="Prozesua martxan dago. Itxaron, mesedez &hellip;"
INSTL_SESSION_AUTO_START="Saio Hasiera Automatikoa"
INSTL_WRITABLE="Ez da aski baimen %s sortzeko."
INSTL_ZIP_SUPPORT_AVAILABLE="ZIP natiboaren laguntza"
Expand Down Expand Up @@ -258,13 +266,15 @@ WARNING="Abisua"
; Javascript ajax error messages
JLIB_JS_AJAX_ERROR_CONNECTION_ABORT="Konexio etena gertatu da JSON datuak eskuratzean."
JLIB_JS_AJAX_ERROR_NO_CONTENT="Ez da edukirik itzuli."
JLIB_JS_AJAX_ERROR_OTHER="Errore bat gertatu da JSON datuak eskuratzerakoan: HTTP %d egoera-kodea."
JLIB_JS_AJAX_ERROR_PARSE="Analisi errore bat gertatu da JSON datu hauek prozesatzean:<br><code style=\"color:inherit;white-space:pre-wrap;padding:0;margin:0;border:0;background:inherit;\">%s</code>"
JLIB_JS_AJAX_ERROR_TIMEOUT="Denbora-muga gainditu da JSON datuak eskuratzean."
; Field password messages
JFIELD_PASSWORD_INDICATE_COMPLETE="Pasahitza onartu da"
JFIELD_PASSWORD_INDICATE_INCOMPLETE="Pasahitzak ez ditu webgunearen eskakizunak betetzen."
JFIELD_PASSWORD_SPACES_IN_PASSWORD="Pasahitzak ezin du zuriunerik eduki ez hasieran, ez amaieran."
JFIELD_PASSWORD_TOO_LONG="Pasahitza luzeegia da. Pasahitzak 100 karaktere baino gutxiago izan behar ditu."
JFIELD_PASSWORD_TOO_SHORT_N="Pasahitza laburregia da. Pasahitzak gutxienez %d karaktere izan behar ditu."
; Javascript Form Validation Messages
JLIB_FORM_CONTAINS_INVALID_FIELDS="Inprimakia ezin da bidali, beharrezko datuak falta baitira. <br> Zuzendu markatutako eremuak eta saiatu berriro."
JLIB_FORM_FIELD_INVALID_VALUE="Balio hau ez da balioduna."
Expand Down
1 change: 1 addition & 0 deletions installation/language/hu-HU/joomla.ini
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ INSTL_DATABASE_NAME_MSG_POSTGRES="Az adatbázis neve érvénytelen. Egy betűvel
INSTL_DATABASE_NO_SCHEMA="Nem létezik adatbázisséma ehhez az adatbázistípushoz."
INSTL_DATABASE_PASSWORD_DESC="Vagy az Ön által, vagy a szolgáltató által létrehozott jelszót."
INSTL_DATABASE_PREFIX_DESC="Adja meg az adatbázis tábla előtagját, vagy használjon a véletlenszerűen előállított előtagot."
INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Ha egy létező adatbázist használ azonos előtaggal rendelkező táblákkal, akkor a Joomla a már létező táblákat átnevezi \"bak_\" előtag hozzáadásával."
INSTL_DATABASE_PREFIX_MSG="A tábla előtagjának betűvel kell kezdődnie, opcionálisan alfanumerikus karakterekkel és aláhúzással"
INSTL_DATABASE_RESPONSE_ERROR="A telepítési folyamat sikertelen."
INSTL_DATABASE_TYPE_DESC="Válassza ki az adatbázis típusát."
Expand Down
1 change: 1 addition & 0 deletions installation/language/it-IT/joomla.ini
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ INSTL_DATABASE_NAME_MSG_POSTGRES="Il nome del database non è valido. Deve inizi
INSTL_DATABASE_NO_SCHEMA="Non esiste nessun schema di database per questo tipo di database."
INSTL_DATABASE_PASSWORD_DESC="La password del database creata da te o fornita dal tuo gestore di hosting."
INSTL_DATABASE_PREFIX_DESC="Immetti un prefisso delle tabelle o utilizza quello generato casualmente."
INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Se stai utilizzando un database esistente con tabelle con lo stesso prefisso, Joomla rinominerà quelle tabelle esistenti aggiungendo il prefisso \"bak_\"."
INSTL_DATABASE_PREFIX_MSG="Il prefisso delle tabelle deve iniziare con una lettera, seguita facoltativamente da caratteri alfanumerici e da un underscore"
INSTL_DATABASE_RESPONSE_ERROR="Il processo di installazione è fallito."
INSTL_DATABASE_TYPE_DESC="Seleziona il tipo di database."
Expand Down
1 change: 1 addition & 0 deletions installation/language/sv-SE/joomla.ini
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ INSTL_DATABASE_NAME_MSG_POSTGRES="Databasnamnet är ogiltigt. Det måste börja
INSTL_DATABASE_NO_SCHEMA="Det finns inget databasschema för den här databastypen."
INSTL_DATABASE_PASSWORD_DESC="Antingen ett lösenord som du skapat eller ett lösenord som tillhandahållits av ditt webbhotell."
INSTL_DATABASE_PREFIX_DESC="Ange ett eget tabellprefix eller använd det slumpmässigt genererade."
INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Om du använder en befintlig databas med tabeller med samma prefix, kommer Joomla att döpa om de befintliga tabellerna genom att lägga till prefixet \"bak_\"."
INSTL_DATABASE_PREFIX_MSG="Tabell prefixet måste börja med en bokstav följt av alfanumeriska tecken och understreck"
INSTL_DATABASE_RESPONSE_ERROR="Installationen misslyckades."
INSTL_DATABASE_TYPE_DESC="Välj databastyp."
Expand Down
28 changes: 4 additions & 24 deletions libraries/src/Application/IdentityAware.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
namespace Joomla\CMS\Application;

use Joomla\CMS\User\User;
use Joomla\CMS\User\UserFactoryInterface;
use Joomla\CMS\User\UserFactoryAwareTrait;

// phpcs:disable PSR1.Files.SideEffects
\defined('JPATH_PLATFORM') or die;
Expand All @@ -23,6 +23,8 @@
*/
trait IdentityAware
{
use UserFactoryAwareTrait;

/**
* The application identity object.
*
Expand All @@ -31,14 +33,6 @@ trait IdentityAware
*/
protected $identity;

/**
* UserFactoryInterface
*
* @var UserFactoryInterface
* @since 4.0.0
*/
private $userFactory;

/**
* Get the application identity.
*
Expand All @@ -62,22 +56,8 @@ public function getIdentity()
*/
public function loadIdentity(User $identity = null)
{
$this->identity = $identity ?: $this->userFactory->loadUserById(0);
$this->identity = $identity ?: $this->getUserFactory()->loadUserById(0);

return $this;
}

/**
* Set the user factory to use.
*
* @param UserFactoryInterface $userFactory The user factory to use
*
* @return void
*
* @since 4.0.0
*/
public function setUserFactory(UserFactoryInterface $userFactory)
{
$this->userFactory = $userFactory;
}
}
2 changes: 2 additions & 0 deletions libraries/src/Extension/Service/Provider/MVCFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use Joomla\CMS\MVC\Factory\ApiMVCFactory;
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
use Joomla\CMS\Router\SiteRouter;
use Joomla\CMS\User\UserFactoryInterface;
use Joomla\Database\DatabaseInterface;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
Expand Down Expand Up @@ -76,6 +77,7 @@ function (Container $container) {
$factory->setDatabase($container->get(DatabaseInterface::class));
$factory->setSiteRouter($container->get(SiteRouter::class));
$factory->setCacheControllerFactory($container->get(CacheControllerFactoryInterface::class));
$factory->setUserFactory($container->get(UserFactoryInterface::class));

return $factory;
}
Expand Down
2 changes: 1 addition & 1 deletion libraries/src/Form/Field/AccesslevelField.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class AccesslevelField extends ListField
/**
* Method to get the field options.
*
* @return array The field option objects.
* @return object[] The field option objects.
*
* @since 4.0.0
*/
Expand Down
2 changes: 1 addition & 1 deletion libraries/src/Form/Field/AliastagField.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class AliastagField extends ListField
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
* @return object[] An array of JHtml options.
*
* @since 3.6
*/
Expand Down
4 changes: 2 additions & 2 deletions libraries/src/Form/Field/AuthorField.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,15 @@ class AuthorField extends ListField
/**
* Cached array of the category items.
*
* @var array
* @var array[]
* @since 3.2
*/
protected static $options = [];

/**
* Method to get the options to populate list
*
* @return array The field option objects.
* @return object[] The field option objects.
*
* @since 3.2
*/
Expand Down
2 changes: 1 addition & 1 deletion libraries/src/Form/Field/CachehandlerField.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class CachehandlerField extends ListField
/**
* Method to get the field options.
*
* @return array The field option objects.
* @return object[] The field option objects.
*
* @since 1.7.0
*/
Expand Down
18 changes: 9 additions & 9 deletions libraries/src/Form/Field/CalendarField.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class CalendarField extends FormField
/**
* The filter.
*
* @var integer
* @var string
* @since 3.2
*/
protected $filter;
Expand Down Expand Up @@ -193,6 +193,8 @@ public function __set($name, $value)
{
switch ($name) {
case 'maxlength':
case 'maxyear':
case 'minyear':
case 'timeformat':
$this->$name = (int) $value;
break;
Expand All @@ -204,8 +206,6 @@ public function __set($name, $value)
case 'format':
case 'filterFormat':
case 'filter':
case 'minyear':
case 'maxyear':
$this->$name = (string) $value;
break;

Expand Down Expand Up @@ -243,8 +243,8 @@ public function setup(\SimpleXMLElement $element, $value, $group = null)
$this->filltable = (string) $this->element['filltable'] ? (string) $this->element['filltable'] : 'true';
$this->timeformat = (int) $this->element['timeformat'] ? (int) $this->element['timeformat'] : 24;
$this->singleheader = (string) $this->element['singleheader'] ? (string) $this->element['singleheader'] : 'false';
$this->minyear = \strlen((string) $this->element['minyear']) ? (string) $this->element['minyear'] : null;
$this->maxyear = \strlen((string) $this->element['maxyear']) ? (string) $this->element['maxyear'] : null;
$this->minyear = \strlen((string) $this->element['minyear']) ? (int) $this->element['minyear'] : null;
$this->maxyear = \strlen((string) $this->element['maxyear']) ? (int) $this->element['maxyear'] : null;

if ($this->maxyear < 0 || $this->minyear > 0) {
$this->todaybutton = 'false';
Expand Down Expand Up @@ -377,10 +377,10 @@ protected function getLayoutData()
/**
* Method to filter a field value.
*
* @param mixed $value The optional value to use as the default for the field.
* @param string $group The optional dot-separated form group path on which to find the field.
* @param Registry $input An optional Registry object with the entire data set to filter
* against the entire form.
* @param mixed $value The optional value to use as the default for the field.
* @param string $group The optional dot-separated form group path on which to find the field.
* @param ?Registry $input An optional Registry object with the entire data set to filter
* against the entire form.
*
* @return mixed The filtered value.
*
Expand Down
2 changes: 1 addition & 1 deletion libraries/src/Form/Field/CaptchaField.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class CaptchaField extends FormField
/**
* The captcha base instance of our type.
*
* @var Captcha
* @var ?Captcha
*/
protected $_captcha;

Expand Down

0 comments on commit 2e06b5a

Please sign in to comment.