1
0

BxDolStudioPolyglotQuery.php 3.2 KB

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