1
0

BxDolConnectionRelationQuery.php 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 Relation objects.
  11. * @see BxDolConnection
  12. */
  13. class BxDolConnectionRelationQuery extends BxDolConnectionQuery
  14. {
  15. public function __construct($aObject)
  16. {
  17. parent::__construct($aObject);
  18. }
  19. public function addConnection ($iInitiator, $iContent, &$iMutualParam = null)
  20. {
  21. if ($this->getConnection($iInitiator, $iContent)) // connection already exists
  22. return false;
  23. $iMutual = 0;
  24. if(!$this->query("INSERT INTO `" . $this->_sTable . "` SET `initiator` = :initiator, `content` = :content, `added` = :added, `mutual` = :mutual", array(
  25. 'initiator' => $iInitiator,
  26. 'content' => $iContent,
  27. 'mutual' => $iMutual,
  28. 'added' => time()
  29. ))) return false;
  30. if($iMutualParam !== null)
  31. $iMutualParam = $iMutual;
  32. $this->cleanMemory('BxDolConnectionQuery::getConnection' . $this->_sTable . $iInitiator . '_' . $iContent);
  33. return true;
  34. }
  35. public function removeConnection ($iInitiator, $iContent)
  36. {
  37. $sQuery = $this->prepare("DELETE FROM `" . $this->_sTable . "` WHERE `initiator` = ? AND `content` = ?", $iInitiator, $iContent);
  38. if(!$this->res($sQuery))
  39. return false;
  40. $this->cleanMemory('BxDolConnectionQuery::getConnection' . $this->_sTable . $iInitiator . '_' . $iContent);
  41. return true;
  42. }
  43. public function getCommonContentExt($iInitiator1, $iInitiator2, $isMutual, $iStart, $iLimit, $iOrder)
  44. {
  45. $sFields = "`c`.`content` AS `content`, `c`.`initiator` AS `initiator1`, `c`.`relation` AS `relation1`, `c`.`mutual` AS `mutual1`, `c2`.`initiator` AS `initiator2`, `c2`.`relation` AS `relation2`, `c2`.`mutual` AS `mutual2`";
  46. $sWhereJoin = (false !== $isMutual) ? " AND `c2`.`mutual` = :mutual" : "";
  47. $sJoin = "INNER JOIN `" . $this->_sTable . "` AS `c2` ON (`c2`.`initiator` = :initiator2 AND `c`.`content` = `c2`.`content` $sWhereJoin)";
  48. $sWhere = " AND `c`.`initiator` = :initiator1";
  49. $sQuery = $this->_getConnectionsQuery($sWhere, $sJoin, $sFields, $isMutual, $iStart, $iLimit, $iOrder);
  50. return $this->getAllWithKey($sQuery, 'content', array(
  51. 'mutual' => $isMutual,
  52. 'initiator1' => $iInitiator1,
  53. 'initiator2' => $iInitiator2
  54. ));
  55. }
  56. public function getConnectedContentExt($iInitiator, $isMutual = false, $iStart = 0, $iLimit = BX_CONNECTIONS_LIST_LIMIT, $iOrder = BX_CONNECTIONS_ORDER_NONE)
  57. {
  58. $sWhere = " AND `c`.`initiator` = :initiator";
  59. $sQuery = $this->_getConnectionsQuery($sWhere, '', '*', $isMutual, $iStart, $iLimit, $iOrder);
  60. return $this->getAllWithKey($sQuery, 'content', array(
  61. 'initiator' => $iInitiator
  62. ));
  63. }
  64. public function getConnectedInitiatorsExt($iContent, $isMutual = false, $iStart = 0, $iLimit = BX_CONNECTIONS_LIST_LIMIT, $iOrder = BX_CONNECTIONS_ORDER_NONE)
  65. {
  66. $sWhere = " AND `c`.`content` = :content";
  67. $sQuery = $this->_getConnectionsQuery($sWhere, '', '*', $isMutual, $iStart, $iLimit, $iOrder);
  68. return $this->getAllWithKey($sQuery, 'initiator', array(
  69. 'content' => $iContent
  70. ));
  71. }
  72. }
  73. /** @} */