BxDolWikiQuery.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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 UnaCore UNA Core
  7. * @{
  8. */
  9. /**
  10. * Database queries for WIKI objects.
  11. * @see BxDolWiki
  12. */
  13. class BxDolWikiQuery extends BxDolDb
  14. {
  15. protected $_aObject;
  16. public function __construct($aObject)
  17. {
  18. parent::__construct();
  19. $this->_aObject = $aObject;
  20. }
  21. static public function getWikiObjectByUri ($sUri)
  22. {
  23. return self::getWikiObjectByField ('uri', $sUri);
  24. }
  25. static public function getWikiObject ($sObject)
  26. {
  27. return self::getWikiObjectByField ('object', $sObject);
  28. }
  29. static public function getWikiObjectByField ($sField, $sValue)
  30. {
  31. $oDb = BxDolDb::getInstance();
  32. $sQuery = $oDb->prepare("SELECT * FROM `sys_objects_wiki` WHERE `$sField` = ?", $sValue);
  33. $aObject = $oDb->getRow($sQuery);
  34. if (!$aObject || !is_array($aObject))
  35. return false;
  36. return $aObject;
  37. }
  38. public function getBlockContent ($iBlockId, $sLang, $iRevision = false)
  39. {
  40. $sWhere = '';
  41. $aBind = array('block' => $iBlockId, 'lang' => $sLang);
  42. if (false !== $iRevision) {
  43. $sWhere = " AND `revision` = :rev";
  44. $aBind['rev'] = $iRevision;
  45. }
  46. // get latest revision for specific language
  47. $aRow = $this->getRow("SELECT `content` FROM `sys_pages_wiki_blocks` WHERE `block_id` = :block AND `language` = :lang $sWhere ORDER BY `revision` DESC LIMIT 1", $aBind);
  48. // if translation isn't found for specific language then get latest revision for main language
  49. if (!$aRow) {
  50. unset($aBind['lang']);
  51. $aRow = $this->getRow("SELECT `content` FROM `sys_pages_wiki_blocks` WHERE `block_id` = :block AND `main_language` = 1 $sWhere ORDER BY `revision` DESC LIMIT 1", $aBind);
  52. }
  53. return $aRow ? $aRow['content'] : false;
  54. }
  55. }
  56. /** @} */