dbFactory->getEchoDb( DB_SLAVE ); $res = $dbr->select( array( 'echo_target_page', 'echo_event' ), array_merge( self::$fields, array( 'event_type' ) ), array( 'etp_user' => $user->getId(), 'etp_page' => $pageId ), __METHOD__, array(), array( 'echo_event' => array( 'JOIN', 'etp_event=event_id' ) ) ); if ( $res ) { $targetPages = array(); foreach ( $res as $row ) { $targetPages[$row->etp_event][] = EchoTargetPage::newFromRow( $row ); } return $targetPages; } else { return false; } } /** * Fetch ids of events associated with a page * * @param int $pageId * @return int[]|false */ public function fetchEventIdsByPageId( $pageId ) { $dbr = $this->dbFactory->getEchoDb( DB_SLAVE ); $res = $dbr->select( array( 'echo_target_page' ), array( 'eventId' => 'DISTINCT etp_event' ), array( 'etp_page' => $pageId ), __METHOD__ ); if ( $res ) { $eventIds = array(); foreach ( $res as $row ) { $eventIds[] = $row->eventId; } return $eventIds; } else { return false; } } /** * Insert an EchoTargetPage instance into the database * * @param EchoTargetPage $targetPage * @return boolean */ public function insert( EchoTargetPage $targetPage ) { $dbw = $this->dbFactory->getEchoDb( DB_MASTER ); $row = $targetPage->toDbArray(); $res = $dbw->insert( 'echo_target_page', $row, __METHOD__ ); return $res; } /** * Delete an EchoTargetPage instance from the database * * @param EchoTargetPage * @return boolean */ public function delete( EchoTargetPage $targetPage ) { $dbw = $this->dbFactory->getEchoDb( DB_MASTER ); $res = $dbw->delete( 'echo_target_page', array( 'etp_user' => $targetPage->getUser()->getId(), 'etp_page' => $targetPage->getPageId(), 'etp_event' => $targetPage->getEventId() ), __METHOD__ ); return $res; } /** * Delete multiple EchoTargetPage records by user & event_id offset * * @param User $user * @param int $eventId * @return boolean */ public function deleteByUserEventOffset( User $user, $eventId ) { $dbw = $this->dbFactory->getEchoDb( DB_MASTER ); $res = $dbw->delete( 'echo_target_page', array( 'etp_user' => $user->getId(), 'etp_event < ' . (int)$eventId ), __METHOD__ ); return $res; } }