/** * Record a visit in the database * * @param string $slotname * @param string $timestamp * @return void * @access protected * @since 9/22/08 */ protected function _recordPastVisit($slotname, $timestamp) { $dbc = Services::getService('DatabaseManager'); // First try running an update query, since most will be updates $query = new UpdateQuery(); $query->setTable('segue_accesslog'); $query->addValue('tstamp', $timestamp); $query->addWhereEqual('agent_id', $this->_getCurrentAgentId()); $query->addWhereEqual('fk_slotname', $slotname); $query->addWhereLessThan('tstamp', $timestamp); $result = $dbc->query($query, IMPORTER_CONNECTION); // If no rows were updated, insert a new one for this user/slot if (!$result->getNumberOfRows()) { try { $query = new InsertQuery(); $query->setTable('segue_accesslog'); $query->addValue('tstamp', $timestamp); $query->addValue('agent_id', $this->_getCurrentAgentId()); $query->addValue('fk_slotname', $slotname); $dbc->query($query, IMPORTER_CONNECTION); // If the update query failed the more recent time where clause, // this insert query will fail. That is fine, just ignore. } catch (DuplicateKeyDatabaseException $e) { } } }