BxDolStudioPolyglotQuery.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 TridentStudio Trident 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. $sWhereClause = $this->prepare(" AND `tet`.`ID`=? ", $aParams['value']);
  48. break;
  49. case 'counter_by_modules':
  50. $aMethod['name'] = 'getPairs';
  51. $aMethod['params'][1] = 'module';
  52. $aMethod['params'][2] = 'counter';
  53. $sSelectClause .= ", COUNT(*) AS `counter`";
  54. $sGroupClause = "GROUP BY `tet`.`Module`";
  55. break;
  56. case 'all':
  57. break;
  58. }
  59. $aMethod['params'][0] = "SELECT " . ($bReturnCount ? "SQL_CALC_FOUND_ROWS" : "") . "
  60. `tet`.`ID` AS `id`,
  61. `tet`.`Module` AS `module`,
  62. `tet`.`NameSystem` AS `name_system`,
  63. `tet`.`Name` AS `name`,
  64. `tet`.`Subject` AS `subject`,
  65. `tet`.`Body` AS `body`" . $sSelectClause . "
  66. FROM `sys_email_templates` AS `tet` " . $sJoinClause . "
  67. WHERE 1 " . $sWhereClause . " " . $sGroupClause . " " . $sOrderClause . " " . $sLimitClause;
  68. $aItems = call_user_func_array(array($this, $aMethod['name']), $aMethod['params']);
  69. if(!$bReturnCount)
  70. return !empty($aItems);
  71. return (int)$this->getOne("SELECT FOUND_ROWS()");
  72. }
  73. }
  74. /** @} */