<?php
/********************************************************************************************************************
* @package : kundenbereich {__PRODUKT_VERSION__}
* @file : class.vb.php
* @encoding : UTF-8
* @version : {__PRODUKT_VERSION__}
* @date : 10.11.2007 - 19:15:02
* @author : breaker
* *******************************************************************************************************************/
defined ('_JEXEC') or die ('Restricted access');
/**
* schnittstelle zum vbulletin-forum, worueber prefixe eingefuegt,
* geloescht und bearbeitet werden koennen
*/
class vbulletin
{
private static $instance = null;
public function getVBInstance($options)
{
if (self::$instance == null)
{
self::$instance = new vbulletin($options);
}
return self::$instance;
}
protected function __construct($options)
{
$this->db_vb =& JDatabase::getInstance($options);
$this->time = time();
}
/**
* neues prefix ins vbulletin eintragen und den cache aktualisieren,
* damit es auch aktiv wird
*/
public function prefix_add($n_name)
{
// name vorbehandeln
$new_name = self::prepare_name($n_name);
// pruefen, ob es dieses netzwerk schon gibt
$this->db_vb->setQuery("SELECT displayorder FROM prefix WHERE prefixid = '" . $new_name . "'");
$this->db_vb->query();
// falls es das netzwerk noch nicht gibt, ist das ergebnis false
// also weiter machen ;-)
if ($this->db_vb->loadAssoc() == false)
{
$this->db_vb->setQuery("SELECT displayorder FROM prefix ORDER BY displayorder DESC");
$this->db_vb->query();
$res2 = $this->db_vb->loadAssoc();
// display-order im vbulletin erweitern
$new_order = $res2['displayoder'] + 10;
// prefixe fuer plain und html erstellen und leerzeichen am anfang und ende des namens entfernen
$prefix1 = 'prefix_' . $new_name . '_title_plain';
$prefix2 = 'prefix_' . $new_name . '_title_rich';
// style erstellen, welches im vbulletin fuer die prefixe genutzt werden
$htm = '<font class="promo">' . $new_name . '</font>';
// neue display-order schreiben
$this->db_vb->setQuery("INSERT INTO prefix
(prefixid, prefixsetid, displayorder, options)
VALUES
('" . $new_name . "', '01', $new_order, 0)");
$this->db_vb->query();
// prefix fuer die plain-ansicht schreiben
$this->db_vb->setQuery("INSERT INTO phrase
(languageid, varname, fieldname, text, product, username, dateline, importphraseid)
VALUES
(0, '" . strip_tags($prefix1) . "', 'global', '" . $new_name . "', 'vbulletin', 'breaker', '" . $this->time . "', 0)");
$this->db_vb->query();
// prefix fuer die html-ansicht schreiben
$this->db_vb->setQuery("INSERT INTO phrase
(languageid, varname, fieldname, text, product, username, dateline, importphraseid)
VALUES
(0, '" . strip_tags($prefix2) . "', 'global', '" . addslashes($htm) . "', 'vbulletin', 'breaker', '" . $this->time . "', 0)");
$this->db_vb->query();
}
}
/**
* bestehendes prefix aus der vbulletin-datenbank loeschen und cache aktualisieren
* @param string $n_name name des prefixes, welches geloescht werden soll
*/
public function prefix_del($n_name)
{
// name vorbehandeln
$new_name = self::prepare_name($n_name);
$this->db_vb->setQuery("SELECT
displayorder FROM prefix
WHERE prefixid = '" . $new_name . "'");
$this->db_vb->query();
if ($this->db_vb->loadAssoc() != false)
{
$prefix1 = 'prefix_' . $new_name . '_title_plain';
$prefix2 = 'prefix_' . $new_name . '_title_rich';
$this->db_vb->setQuery("DELETE
FROM prefix WHERE prefixid = '" . $new_name . "'");
$this->db_vb->query();
$this->db_vb->setQuery("DELETE
FROM phrase WHERE varname = '" . strip_tags($prefix1) . "'
OR varname = '" . strip_tags($prefix2) . "'");
$this->db_vb->query();
}
}
public function prefix_edit($n_name, $n_name_old)
{
// echo '$n_name: ' . $n_name . '<br />$n_name_old: ' . $n_name_old . '<br />';
// die();
// namen vorbehandeln
$new_name = self::prepare_name($n_name);
$new_name_old = self::prepare_name($n_name_old);
$prefix1 = 'prefix_' . $new_name . '_title_plain';
$prefix2 = 'prefix_' . $new_name . '_title_rich';
$htm = '<font class="promo">' . $new_name . '</font>';
$this->db_vb->setQuery("SELECT
displayorder FROM prefix WHERE prefixid = '" . $new_name . "'");
$this->db_vb->query();
if ($this->db_vb->loadAssoc() != false)
{
$this->db_vb->setQuery("SELECT
displayoder FROM prefix ORDER BY displayorder DESC");
$this->db_vb->query();
$res1 = $this->db_vb->loadAssoc();
$new_order = $res1['displayoder'] + 10;
$this->db_vb->setQuery("INSERT INTO prefix
(prefixid, prefixsetid, displayorder, options)
VALUES
('" . $new_name . "', '01', $new_order, 0)");
$this->db_vb->query();
$this->db_vb->setQuery("INSERT INTO phrase
(languageid, varname, fieldname, text, product, username, dateline, importphraseid)
VALUES
(0, '" . strip_tags($prefix1) . "', 'global', '" . $new_name . "', 'vbulletin', 'breaker', '" . $this->time . "', 0)");
$this->db_vb->query();
$this->db_vb->setQuery("INSERT INTO phrase
(languageid, varname, fieldname, text, product, username, dateline, importphraseid)
VALUES
(0, '" . strip_tags($prefix2) . "', 'global', '" . addslashes($htm) . "', 'vbulletin', 'breaker', '" . $this->time . "', 0)");
$this->db_vb->query();
}
else
{
$prefix1_old = 'prefix_' . $new_name_old . '_title_plain';
$prefix2_old = 'prefix_' . $new_name_old . '_title_rich';
$this->db_vb->setQuery("UPDATE
prefix SET prefixid = '" . $new_name . "' WHERE prefixid = '" . $new_name_old . "'");
$this->db_vb->query();
$this->db_vb->setQuery("UPDATE
phrase SET varname = '" . strip_tags($prefix1) . "', text = '" . $new_name . "' WHERE varname = '" . strip_tags($prefix1_old) . "'");
$this->db_vb->query();
$this->db_vb->setQuery("UPDATE
phrase SET varname = '" . strip_tags($prefix2) . "', text = '" . addslashes($htm) . "' WHERE varname = '" . strip_tags($prefix2_old) . "'");
$this->db_vb->query();
}
}
/**
* namen des netzwerkes escapen, leerzeichen am anfang und ende entfernen und html entfernen
* @param string $n_name name des netzwerkes
* @return string $c name des netzwerkes zum einfuegen in die datenbank
*/
protected function prepare_name($n_name)
{
$a = trim($n_name);
$b = strip_tags($a);
$c = addslashes($b);
unset ($a, $b);
return $c;
}
}
?>