<?php
class Ragtek_PDT_Install
{
##additional_install_methods##
protected function _installVersion1()
{
$query = array();
/** autogenerated */
self::addColumn('xf_forum', 'ragtek_defaultThread', "mediumtext NOT NULL");
self::_runQuery($query);
/** autogenerated end */
}
public static function uninstall()
{
$query = array();
/** autogenerated */
if (self::_checkIfExist('xf_forum', 'ragtek_defaultThread')) {
$query['remove_xf_forum::ragtek_defaultThread'] = "ALTER TABLE 'xf_forum' DROP COLUMN 'ragtek_defaultThread' ";
}
/** autogenerated end */
self::_runQuery($query);
}
/** everything else here are only helper methods */
public static function install($existingAddOn, $addOnData)
{
$startVersionId = 1;
$endVersionId = $addOnData['version_id'];
if ($existingAddOn) {
$startVersionId = $existingAddOn['version_id'] + 1;
}
$install = self::getInstance();
for ($i = $startVersionId; $i <= $endVersionId; $i++) {
$method = '_installVersion' . $i;
if (method_exists($install, $method) === false) {
continue;
}
$install->$method();
}
}
public static function _runQuery(array $queries)
{
$db = XenForo_Application::getDb();
foreach ($queries AS $id => $query) {
$db->query($query);
}
}
static private $instance = null;
public static function getInstance()
{
if (self::$instance == null) {
self::$instance = new self();
}
return self::$instance;
}
public static function addColumn($table, $field, $attr)
{
if (!self::_checkIfExist($table, $field)) {
$db = XenForo_Application::get('db');
return $db->query("ALTER TABLE `" . $table . "` ADD `" . $field . "` " . $attr);
}
}
protected static function _checkIfExist($table, $field)
{
$db = XenForo_Application::get('db');
if ($db->fetchRow('SHOW columns FROM `' . $table . '` WHERE Field = ?', $field)) {
return true;
} else {
return false;
}
}
protected static function _checkIfAddonExists($addonId)
{
/** @var $addonModel XenForo_Model_AddOn */
$addonModel = XenForo_Model::create('XenForo_Model_AddOn');
if (!$addonModel->getAddOnById($addonId)) {
throw new XenForo_Exception('This addon requires ' . $addonId);
}
return true;
}
protected function checkIfIndexExists($table, $name)
{
$db = XenForo_Application::getDb();
$query = "SHOW INDEX FROM $table WHERE KEY_NAME = " . $db->quote($name);
if ($db->fetchRow($query)) {
return true;
}
return false;
}
}