/** * Clicks the URL, incrementing the counter */ function click() { $id = $this->getState('banner.id'); // update click count $query = new JQuery(); $query->update('#__banners'); $query->set('clicks = (clicks + 1)'); $query->where('id = ' . (int) $id); $this->_db->setQuery((string) $query); if (!$this->_db->query()) { JError::raiseError(500, $this->_db->getErrorMsg()); } // track clicks $item =& $this->getItem(); $trackClicks = $item->track_clicks; if ($trackClicks < 0 && $item->cid) { $trackClicks = $item->client_track_clicks; } if ($trackClicks < 0) { $config =& JComponentHelper::getParams('com_banners'); $trackClicks = $config->get('track_clicks'); } if ($trackClicks > 0) { $trackDate = JFactory::getDate()->toFormat('%Y-%m-%d'); $query = new JQuery(); $query->select('`count`'); $query->from('#__banner_tracks'); $query->where('track_type=2'); $query->where('banner_id=' . (int) $id); $query->where('track_date=' . $this->_db->Quote($trackDate)); $this->_db->setQuery((string) $query); if (!$this->_db->query()) { JError::raiseError(500, $this->_db->getErrorMsg()); } $count = $this->_db->loadResult(); $query = new JQuery(); if ($count) { // update count $query->update('#__banner_tracks'); $query->set('`count` = (`count` + 1)'); $query->where('track_type=2'); $query->where('banner_id=' . (int) $id); $query->where('track_date=' . $this->_db->Quote($trackDate)); } else { // insert new count $query->insert('#__banner_tracks'); $query->set('`count` = 1'); $query->set('track_type=2'); $query->set('banner_id=' . (int) $id); $query->set('track_date=' . $this->_db->Quote($trackDate)); } $this->_db->setQuery((string) $query); if (!$this->_db->query()) { JError::raiseError(500, $this->_db->getErrorMsg()); } } }
/** * Makes impressions on a list of banners */ function impress() { $trackDate = JFactory::getDate()->toFormat('%Y-%m-%d'); $items =& $this->getItems(); foreach ($items as $item) { // Increment impression made $id = $item->id; $query = new JQuery(); $query->update('#__banners'); $query->set('impmade = (impmade + 1)'); $query->where('id=' . (int) $id); $this->_db->setQuery((string) $query); if (!$this->_db->query()) { JError::raiseError(500, $this->_db->getErrorMsg()); } // track impressions $trackImpressions = $item->track_impressions; if ($trackImpressions < 0 && $item->cid) { $trackImpressions = $item->client_track_impressions; } if ($trackImpressions < 0) { $config =& JComponentHelper::getParams('com_banners'); $trackImpressions = $config->get('track_impressions'); } if ($trackImpressions > 0) { // is track already created ? $query = new JQuery(); $query->select('`count`'); $query->from('#__banner_tracks'); $query->where('track_type=1'); $query->where('banner_id=' . (int) $id); $query->where('track_date=' . $this->_db->Quote($trackDate)); $this->_db->setQuery((string) $query); if (!$this->_db->query()) { JError::raiseError(500, $this->_db->getErrorMsg()); } $count = $this->_db->loadResult(); $query = new JQuery(); if ($count) { // update count $query->update('#__banner_tracks'); $query->set('`count` = (`count` + 1)'); $query->where('track_type=1'); $query->where('banner_id=' . (int) $id); $query->where('track_date=' . $this->_db->Quote($trackDate)); } else { // insert new count $query->insert('#__banner_tracks'); $query->set('`count` = 1'); $query->set('track_type=1'); $query->set('banner_id=' . (int) $id); $query->set('track_date=' . $this->_db->Quote($trackDate)); } $this->_db->setQuery((string) $query); if (!$this->_db->query()) { JError::raiseError(500, $this->_db->getErrorMsg()); } } } }
public static function updateReset() { $user = JFactory::getUser(); $db = JFactory::getDBO(); $query = new JQuery(); $query->select('*'); $query->from("#__banners"); $query->where("NOW()>=`reset`"); $query->where("`reset`!='0000-00-00 00:00:00' AND `reset`!=NULL"); $query->where("(`checked_out`=0 OR `checked_out`=" . $db->Quote($user->id) . ")"); $db->setQuery((string) $query); $rows = $db->loadObjectList(); // Check for a database error. if ($db->getErrorNum()) { JError::raiseWarning(500, $db->getErrorMsg()); return false; } JTable::addIncludePath(JPATH_ROOT . '/administrator/components/com_banners/tables'); foreach ($rows as $row) { $purchase_type = $row->purchase_type; if ($purchase_type < 0 && $row->cid) { $client = JTable::getInstance('Client', 'BannersTable'); $client->load($row->cid); $purchase_type = $client->purchase_type; } if ($purchase_type < 0) { $params = JComponentHelper::getParams('com_banners'); $purchase_type = $params->get('purchase_type'); } switch ($purchase_type) { case 1: $reset = '0000-00-00 00:00:00'; break; case 2: $reset = JFactory::getDate('+1 year ' . date('Y-m-d', strtotime('now')))->toMySQL(); break; case 3: $reset = JFactory::getDate('+1 month ' . date('Y-m-d', strtotime('now')))->toMySQL(); break; case 4: $reset = JFactory::getDate('+7 day ' . date('Y-m-d', strtotime('now')))->toMySQL(); break; case 5: $reset = JFactory::getDate('+1 day ' . date('Y-m-d', strtotime('now')))->toMySQL(); break; } // Update the row ordering field. $query = new JQuery(); $query->update('`#__banners`'); $query->set('`reset` = ' . $db->quote($reset)); $query->set('`impmade` = ' . $db->quote(0)); $query->set('`clicks` = ' . $db->quote(0)); $query->where('`id` = ' . $db->quote($row->id)); $db->setQuery((string) $query); $db->query(); // Check for a database error. if ($db->getErrorNum()) { JError::raiseWarning(500, $db->getErrorMsg()); return false; } } return true; }