File size: 5Kb
<?php
/**
* @package XenCentral Feedback System
* @author DNF Technology
* @copyright Drnoyan & Nalyan LDA, Portugal, EU
* @license http://dnf.technology/terms/
* @link http://customers.dnf.technology
* @version 2.0.0 Beta 10
* @revision 12
*/
namespace XenCentral\Feedback\Repository\ImportSource;
/**
* @package XenCentral Feedback System
* @author DNF Technology
* @copyright Drnoyan & Nalyan LDA, Portugal, EU
* @license http://dnf.technology/terms/
* @link http://customers.dnf.technology
* @version 1.7.0
* @revision 97
*/
use XenCentral\Feedback\Repository\ImportSource\ImportAbstract;
class ImportItrader extends ImportAbstract
{
/**
* @var Array
* Handles user ID cache for imported users
*/
protected $_dataCache;
/**
* @var array
* Mapping of iTrader type numbers to buy/sell/trade
*/
protected $_types = array('1' => 'sell', '2' => 'buy', '3' => 'trade');
public function getImporterTitle()
{
return 'vBulletin iTrader';
}
/**
* @param $db Zend_Db_Adapter_Abstract
* @param $prefix String
* Throws exception if table prefix is not valid for the system
*/
public function assertTablePrefix($db, $prefix)
{
// simply query database for a user
$db->query('
SELECT userid
FROM ' . $prefix . 'user
LIMIT 1
');
}
/**
* @param $db Zend_Db_Adapter_Abstract
* @param $config
* @param $errors
*/
public function preImport($db, &$config, &$errors)
{
$defaultLanguageId = $db->fetchOne('
SELECT value
FROM ' . $config['prefix'] . 'setting
WHERE varname = \'languageid\'
');
$defaultCharset = $db->fetchOne('
SELECT charset
FROM ' . $config['prefix'] . 'language
WHERE languageid = ?
', $defaultLanguageId);
if (!$defaultCharset || str_replace('-', '', strtolower($defaultCharset)) == 'iso88591') {
if (!$config['charset']) {
$config['charset'] = 'utf8';
}
}
else
{
if (!$config['charset']) {
$config['charset'] = strtolower($defaultCharset);
}
}
$this->_config=$config;
}
public function getAllFeedback($start, $perpage)
{
return $this->_sourceDb->fetchAll("
SELECT CONCAT(rateid, 99, userid) AS originalId, itrader.* FROM {$this->_config['prefix']}itrader AS itrader
ORDER BY rateid ASC
LIMIT $start, $perpage
");
}
public function getForUserId($feedback)
{
return $this->_getFromCache('userid', $feedback['rateduserid']);
}
public function getFromUserId($feedback)
{
return $this->_getFromCache('userid', $feedback['userid']);
}
public function getAmount($feedback)
{
return $feedback['rating'];
}
public function getType($feedback)
{
return $this->_getTypeText($feedback['buyselltrade']);
}
public function getDealUrl($feedback)
{
return $feedback['dealurl'];
}
public function getThreadId($feedback)
{
return 0;
}
public function getDateline($feedback)
{
return $feedback['dateline'];
}
public function getOriginalId($feedback)
{
return $feedback['originalId'];
}
public function getFeedbackText($feedback)
{
return $feedback['subject'];
}
public function getIPAddress($feedback)
{
return $feedback['ipaddress'];
}
public function getAllComments($originalId)
{
$rateId=$this->_getRateIdFromOriginalId($originalId);
return $this->_sourceDb->fetchAll("
SELECT * FROM {$this->_config['prefix']}itrader_comments
WHERE rateid=".intval($rateId)."
");
}
protected function _getRateIdFromOriginalId($originalId)
{
return $this->_sourceDb->fetchOne("
SELECT itrader.rateid FROM {$this->_config['prefix']}itrader AS itrader
WHERE CONCAT(rateid, 99, userid)=$originalId
");
}
public function getCommentUserId($comment)
{
return $this->_getFromCache('userid', $comment['userid']);
}
public function getCommentText($comment)
{
return $comment['comment'];
}
protected function _getFromCache($type, $oldid)
{
if (isset($this->_dataCache[$type][$oldid])) {
return $this->_dataCache[$type][$oldid];
}
switch ($type)
{
case 'userid':
{
$data = $this->db()->fetchOne("
SELECT new_id FROM ".$this->_config['archive_table']."
WHERE content_type='user'
AND old_id=$oldid
");
}
break;
}
$this->_dataCache[$type][$oldid] = $data;
return $data;
}
protected function _getTypeText($number)
{
return $this->_types["$number"];
}
public function getCommentDateline($comment)
{
return $comment['dateline'];
}
}