BxDolStudioPolyglotQuery.php 3.2 KB

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