BxDolStudioPolyglotQuery.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup UnaStudio UNA Studio
  7. * @{
  8. */
  9. class BxDolStudioPolyglotQuery extends BxDolStudioLanguagesUtilsQuery
  10. {
  11. function __construct()
  12. {
  13. parent::__construct();
  14. }
  15. function getKeyFullInfo($iId, $iPreviewLength = 10)
  16. {
  17. $sSql = $this->prepare("SELECT
  18. `tlk`.`ID` AS `id`,
  19. `tlk`.`Key` AS `key`,
  20. `tlc`.`Name` AS `module`
  21. FROM `sys_localization_keys` AS `tlk`
  22. LEFT JOIN `sys_localization_categories` AS `tlc` ON `tlk`.`IDCategory`=`tlc`.`ID`
  23. WHERE `tlk`.`ID`=? LIMIT 1", $iId);
  24. $aResult = $this->getRow($sSql);
  25. if(!is_array($aResult) || empty($aResult))
  26. return array();
  27. $sSql = $this->prepare("SELECT
  28. `tls`.`String` AS `string`,
  29. SUBSTRING(`tls`.`String`, 1, ?) AS `preview`,
  30. `tll`.`Name` AS `lang_name`,
  31. `tll`.`Title` AS `lang_title`
  32. FROM `sys_localization_strings` AS `tls`
  33. LEFT JOIN `sys_localization_languages` AS `tll` ON `tls`.`IDLanguage`=`tll`.`ID`
  34. WHERE `tls`.`IDKey`=?", $iPreviewLength, $iId);
  35. $aResult['strings'] = $this->getAllWithKey($sSql, 'lang_name');
  36. return $aResult;
  37. }
  38. function getEtemplates($aParams, &$aItems, $bReturnCount = true)
  39. {
  40. $aMethod = array('name' => 'getAll', 'params' => array(0 => 'query'));
  41. $sSelectClause = $sJoinClause = $sWhereClause = $sGroupClause = $sOrderClause = $sLimitClause = "";
  42. if(!isset($aParams['order']) || empty($aParams['order']))
  43. $sOrderClause = "ORDER BY `tet`.`ID` ASC";
  44. switch($aParams['type']) {
  45. case 'by_id':
  46. $aMethod['name'] = 'getRow';
  47. $aMethod['params'][1] = array(
  48. 'id' => $aParams['value']
  49. );
  50. $sWhereClause = " AND `tet`.`ID`=:id ";
  51. break;
  52. case 'counter_by_modules':
  53. $aMethod['name'] = 'getPairs';
  54. $aMethod['params'][1] = 'module';
  55. $aMethod['params'][2] = 'counter';
  56. $sSelectClause .= ", COUNT(*) AS `counter`";
  57. $sGroupClause = "GROUP BY `tet`.`Module`";
  58. break;
  59. case 'all':
  60. break;
  61. }
  62. $aMethod['params'][0] = "SELECT " . ($bReturnCount ? "SQL_CALC_FOUND_ROWS" : "") . "
  63. `tet`.`ID` AS `id`,
  64. `tet`.`Module` AS `module`,
  65. `tet`.`NameSystem` AS `name_system`,
  66. `tet`.`Name` AS `name`,
  67. `tet`.`Subject` AS `subject`,
  68. `tet`.`Body` AS `body`" . $sSelectClause . "
  69. FROM `sys_email_templates` AS `tet` " . $sJoinClause . "
  70. WHERE 1 " . $sWhereClause . " " . $sGroupClause . " " . $sOrderClause . " " . $sLimitClause;
  71. $aItems = call_user_func_array(array($this, $aMethod['name']), $aMethod['params']);
  72. if(!$bReturnCount)
  73. return !empty($aItems);
  74. return (int)$this->getOne("SELECT FOUND_ROWS()");
  75. }
  76. }
  77. /** @} */