BxBaseModGeneralDb.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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 BaseGeneral Base classes for modules
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. /*
  12. * Module database queries
  13. */
  14. class BxBaseModGeneralDb extends BxDolModuleDb
  15. {
  16. protected $_oConfig;
  17. public function __construct(&$oConfig)
  18. {
  19. parent::__construct($oConfig);
  20. $this->_oConfig = $oConfig;
  21. }
  22. function getEntriesBy($aParams = array())
  23. {
  24. $CNF = &$this->_oConfig->CNF;
  25. $aMethod = array('name' => 'getAll', 'params' => array(0 => 'query', 1 => array()));
  26. $sSelectClause = $sJoinClause = $sWhereClause = $sOrderClause = $sLimitClause = "";
  27. $sSelectClause = "`{$CNF['TABLE_ENTRIES']}`.*";
  28. switch($aParams['type']) {
  29. case 'id':
  30. $aMethod['name'] = 'getRow';
  31. $aMethod['params'][1]['id'] = (int)$aParams['id'];
  32. $sWhereClause .= " AND `{$CNF['TABLE_ENTRIES']}`.`" . $CNF['FIELD_ID'] . "` = :id";
  33. break;
  34. case 'author':
  35. $aMethod['name'] = 'getRow';
  36. $aMethod['params'][1]['author'] = (int)$aParams['author'];
  37. $sWhereClause .= " AND `{$CNF['TABLE_ENTRIES']}`.`" . $CNF['FIELD_AUTHOR'] . "` = :author";
  38. break;
  39. case 'all_ids':
  40. $aMethod['name'] = 'getColumn';
  41. $sSelectClause = "`{$CNF['TABLE_ENTRIES']}`.`" . $CNF['FIELD_ID'] . "`";
  42. $sOrderClause .= "`{$CNF['TABLE_ENTRIES']}`.`" . $CNF['FIELD_ADDED'] . "` ASC";
  43. break;
  44. case 'all':
  45. $sOrderClause .= "`{$CNF['TABLE_ENTRIES']}`.`" . $CNF['FIELD_ADDED'] . "` ASC";
  46. break;
  47. }
  48. if(!empty($sOrderClause))
  49. $sOrderClause = 'ORDER BY ' . $sOrderClause;
  50. if(!empty($sLimitClause))
  51. $sLimitClause = 'LIMIT ' . $sLimitClause;
  52. $aMethod['params'][0] = "SELECT " . $sSelectClause . " FROM `{$CNF['TABLE_ENTRIES']}` " . $sJoinClause . " WHERE 1 " . $sWhereClause . " " . $sOrderClause . " " . $sLimitClause;
  53. return call_user_func_array(array($this, $aMethod['name']), $aMethod['params']);
  54. }
  55. public function getEntriesByAuthor ($iProfileId)
  56. {
  57. $sQuery = $this->prepare ("SELECT * FROM `" . $this->_oConfig->CNF['TABLE_ENTRIES'] . "` WHERE `" . $this->_oConfig->CNF['FIELD_AUTHOR'] . "` = ?", $iProfileId);
  58. return $this->getAll($sQuery);
  59. }
  60. public function getEntriesNumByAuthor ($iProfileId)
  61. {
  62. $sQuery = $this->prepare ("SELECT COUNT(*) FROM `" . $this->_oConfig->CNF['TABLE_ENTRIES'] . "` WHERE `" . $this->_oConfig->CNF['FIELD_AUTHOR'] . "` = ?", $iProfileId);
  63. return $this->getOne($sQuery);
  64. }
  65. public function alterFulltextIndex ()
  66. {
  67. $CNF = $this->_oConfig->CNF;
  68. $bFulltextIndex = false;
  69. $aIndexes = $this->getAll("SHOW INDEXES FROM `" . $CNF['TABLE_ENTRIES'] . "`");
  70. foreach ($aIndexes as $r) {
  71. if ($CNF['TABLE_ENTRIES_FULLTEXT'] == $r['Key_name']) {
  72. $bFulltextIndex = true;
  73. break;
  74. }
  75. }
  76. if ($bFulltextIndex)
  77. $this->query("ALTER TABLE `" . $CNF['TABLE_ENTRIES'] . "` DROP INDEX `" . $CNF['TABLE_ENTRIES_FULLTEXT'] . "`");
  78. if (!($aFields = explode(',', getParam($CNF['PARAM_SEARCHABLE_FIELDS']))))
  79. return true;
  80. $sFields = '';
  81. foreach ($aFields as $s)
  82. $sFields .= "`$s`,";
  83. return $this->query("ALTER TABLE `" . $CNF['TABLE_ENTRIES'] . "` ADD FULLTEXT `" . $CNF['TABLE_ENTRIES_FULLTEXT'] . "` (" . trim($sFields, ', ') . ")");
  84. }
  85. }
  86. /** @} */