New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[com_associations] - use cache for getContentLanguages() #18544
Conversation
I would suggest this for public static function getContentLanguages()
{
if (empty(static::$languages))
{
static::load();
}
return static::$languages;
} |
thanks @csthomas
thanks @csthomas 👍 more clean now |
|
||
return $result; | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please remove whitespace.
} | ||
return static::$languages; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please fix whitespace.
@@ -37,6 +37,14 @@ class AssociationsHelper extends JHelperContent | |||
public static $supportedExtensionsList = array(); | |||
|
|||
/** | |||
* List languages of languages |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
languages of languages ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
changed
{ | ||
$db = \JFactory::getDbo(); | ||
$query = $db->getQuery(true) | ||
->select($db->quoteName(array('sef', 'lang_code', 'image', 'title', 'published'))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
689 and below, replace spaces for indent by tab
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
replaced
static::$languages = $loader(); | ||
} | ||
|
||
return true; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indent: delete spaces
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
idented
yes matter for another PR..... |
hope cs fixed now |
hi guys, just stoped by to say: why not reuse the already available method in the library Joomla\CMS\Language\LanguageHelper::getContentLanguages($checkPublished = true, $checkInstalled = true, $pivot = 'lang_code', $orderField = null, $orderDirection = null) See https://github.com/joomla/joomla-cms/blob/staging/libraries/src/Language/LanguageHelper.php#L336 |
wellcome back @andrepereiradasilva , we are missing you , i'll investigate further your suggestion, i hope in the week-end.... |
applyed the tips from @andrepereiradasilva |
I have tested this item 🔴 unsuccessfully on 6f6c1d3 This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/18544. |
Changed my test to unsuccessful. I get an error |
Silly me, I'll do the needed change later sorry
Il 11 nov 2017 9:45 AM, "infograf768" <notifications@github.com> ha scritto:
… Changed my test to unsuccessful.
I get an error
Call to undefined method AssociationsHelper::getContentLanguages()
when trying to load the face to face page
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#18544 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AALFsfJnFDGi1WH53fV_Sn6pPveR-M7bks5s1V6PgaJpZM4QYkba>
.
|
re-re-test please |
return $db->loadObjectList('lang_code'); | ||
} | ||
return LanguageHelper::getContentLanguages(); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
delete unwanted spaces line 449
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
otherwise, pr is fine
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
I have tested this item ✅ successfully on e935a9d This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/18544. |
perfection is my current challenge, unfortunately i already know that i cant win 😄 |
@alikon can you please give Test Instructions? This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/18544. |
Just want to point out that there is difference between the data returned by old code and new code. With the original code, all content languages (including unpublished) will be returned, with new code, only published content languages will be returned Also, if we decide to use new code, I think it is better to call the new method directly instead of still calling AssociationsHelper::getContentLanguages (because this method is now basically, an alias of LanguageHelper::getContentLanguages() ) |
You are totally correct. I take off RTC. With this patch, it is now impossible to do anything for such a content language in com_associations. This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/18544. |
In fact I guess the solution is easy |
and remove proxy
applyed the tips from @joomdonation |
I have tested this item ✅ successfully on 69d811d Only drawback is that it also proposes those which are in the Trash. This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/18544. |
@infograf768 reggarding the trashed language, true. the language helper method could be improved (while preserving B/C). Something like this. Not tested. Replaced $checkPublished (boolean) argument for $publishedStates (array) and using a B/C layer for that parameter. /**
* Get a list of content languages.
*
* @param array $publishedStates Array with the content language published states. Null or empty array for all.
* @param boolean $checkInstalled Check if the content language is installed.
* @param string $pivot The pivot of the returning array.
* @param string $orderField Field to order the results.
* @param string $orderDirection Direction to order the results.
*
* @return array Array of the content languages.
*
* @since 3.7.0
*/
public static function getContentLanguages($publishedStates = array(1), $checkInstalled = true, $pivot = 'lang_code', $orderField = null, $orderDirection = null)
{
// B/C layer. Before __DEPLOY_VERSION__.
if ($publishedStates === true)
{
$publishedStates = array(1);
}
elseif ($publishedStates === false)
{
$publishedStates = null;
}
// [code removed for brevity...]
// Check if the language is published, if needed.
if ($publishedStates !== null && $publishedStates !== array())
{
foreach ($languages as $key => $language)
{
if (in_array((int) $language->published, $publishedStates, true) === false)
{
unset($languages[$key]);
}
}
}
// [code removed for brevity...]
} then, for published/unpublished, you could call it like this LanguageHelper::getContentLanguages(array(0, 1), true); BTW @alikon unless things changed recently i don't think it's B/C to completly remove a public method in 3.x, you should proxy it to languagehelper method and them put a deprecated 4.0 message. |
managed the trashed lanugages |
added deprecation
Works here |
@alikon If I am not mistaken, the changes you made to \Joomla\CMS\Language\LanguageHelper::getContentLanguages() will cause B/C issue. Before the change, if someone calls \Joomla\CMS\Language\LanguageHelper::getContentLanguages() , the result will include trashed content languages. After your changes, it won't include trashed content languages anymore. I think the propose change from @andrepereiradasilva is better. It extends the method to allow us to get content languages we want based on passed publish states. I made a PR to your branch alikon#38, please review it and if you agree, merge it so that we can have this issue sorted. |
Improve getContentLanguages
thanks folks for teamworking, hope now issues are solved in a B/C way |
I have tested this item ✅ successfully on e3d1b46 This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/18544. |
I have tested this item ✅ successfully on f438af0 This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/18544. |
@infograf768 can you please retest? |
I have tested this item ✅ successfully on f438af0 This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/18544. |
RTC. Thanks to all. This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/18544. |
Pull Request for Issue #15494.
Summary of Changes
use cache instead of query everytime the available languages
Testing Instructions
see #15494
Expected result
reduce the number of duplicate query
Actual result
unnecessary duplicate query for get languages
Additional Comments
reduced this one only
#15494 (comment)