/administrator/components/com_languages/helpers/multilangstatus.php

https://bitbucket.org/eternaware/joomus · PHP · 132 lines · 99 code · 11 blank · 22 comment · 0 complexity · eb4b5f343e198c499933d04e901fdeb8 MD5 · raw file

  1. <?php
  2. /**
  3. * @package Joomla.Administrator
  4. * @subpackage com_languages
  5. *
  6. * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
  7. * @license GNU General Public License version 2 or later; see LICENSE.txt
  8. */
  9. defined('_JEXEC') or die;
  10. /**
  11. * Multilang status helper.
  12. *
  13. * @package Joomla.Administrator
  14. * @subpackage com_languages
  15. * @since 1.7.1
  16. */
  17. abstract class multilangstatusHelper
  18. {
  19. public static function getHomes()
  20. {
  21. // Check for multiple Home pages
  22. $db = JFactory::getDBO();
  23. $query = $db->getQuery(true);
  24. $query->select('COUNT(*)');
  25. $query->from($db->quoteName('#__menu'));
  26. $query->where('home = 1');
  27. $query->where('published = 1');
  28. $query->where('client_id = 0');
  29. $db->setQuery($query);
  30. return $db->loadResult();
  31. }
  32. public static function getLangswitchers()
  33. {
  34. // Check if switcher is published
  35. $db = JFactory::getDBO();
  36. $query = $db->getQuery(true);
  37. $query->select('COUNT(*)');
  38. $query->from($db->quoteName('#__modules'));
  39. $query->where('module = ' . $db->quote('mod_languages'));
  40. $query->where('published = 1');
  41. $query->where('client_id = 0');
  42. $db->setQuery($query);
  43. return $db->loadResult();
  44. }
  45. public static function getContentlangs()
  46. {
  47. // Check for published Content Languages
  48. $db = JFactory::getDBO();
  49. $query = $db->getQuery(true);
  50. $query->select('a.lang_code AS lang_code');
  51. $query->select('a.published AS published');
  52. $query->from('#__languages AS a');
  53. $db->setQuery($query);
  54. return $db->loadObjectList();
  55. }
  56. public static function getSitelangs()
  57. {
  58. // check for published Site Languages
  59. $db = JFactory::getDBO();
  60. $query = $db->getQuery(true);
  61. $query->select('a.element AS element');
  62. $query->from('#__extensions AS a');
  63. $query->where('a.type = '.$db->Quote('language'));
  64. $query->where('a.client_id = 0');
  65. $db->setQuery($query);
  66. return $db->loadObjectList('element');
  67. }
  68. public static function getHomepages()
  69. {
  70. // Check for Home pages languages
  71. $db = JFactory::getDBO();
  72. $query = $db->getQuery(true);
  73. $query->select('language');
  74. $query->from($db->quoteName('#__menu'));
  75. $query->where('home = 1');
  76. $query->where('published = 1');
  77. $query->where('client_id = 0');
  78. $db->setQuery($query);
  79. return $db->loadObjectList('language');
  80. }
  81. public static function getStatus()
  82. {
  83. //check for combined status
  84. $db = JFactory::getDBO();
  85. $query = $db->getQuery(true);
  86. // Select all fields from the languages table.
  87. $query->select('a.*', 'l.home');
  88. $query->select('a.published AS published');
  89. $query->select('a.lang_code AS lang_code');
  90. $query->from('#__languages AS a');
  91. // Select the language home pages
  92. $query->select('l.home AS home');
  93. $query->select('l.language AS home_language');
  94. $query->join('LEFT', '#__menu AS l ON l.language = a.lang_code AND l.home=1 AND l.language <> \'*\'');
  95. $query->select('e.enabled AS enabled');
  96. $query->select('e.element AS element');
  97. $query->join('LEFT', '#__extensions AS e ON e.element = a.lang_code');
  98. $query->where('e.client_id = 0');
  99. $query->where('e.enabled = 1');
  100. $query->where('e.state = 0');
  101. $db->setQuery($query);
  102. return $db->loadObjectList();
  103. }
  104. public static function getContacts()
  105. {
  106. $db = JFactory::getDBO();
  107. $query = $db->getQuery(true);
  108. $query->select('u.name, count(cd.language) as counted, MAX(cd.language='.$db->quote('*').') as all_languages');
  109. $query->from('#__users AS u');
  110. $query->leftJOIN('#__contact_details AS cd ON cd.user_id=u.id');
  111. $query->leftJOIN('#__languages as l on cd.language=l.lang_code');
  112. $query->where('EXISTS (SELECT * from #__content as c where c.created_by=u.id)');
  113. $query->where('(l.published=1 or cd.language='.$db->quote('*').')');
  114. $query->where('cd.published=1');
  115. $query->group('u.id');
  116. $query->having('(counted !=' . count(JLanguageHelper::getLanguages()).' OR all_languages=1)');
  117. $query->having('(counted !=1 OR all_languages=0)');
  118. $db->setQuery($query);
  119. return $db->loadObjectList();
  120. }
  121. }