View file upload/src/addons/XenCentral/Feedback/Repository/ImportSource/ImportItrader.php

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'];
    }
}