_admin = $f->isAdmin ();
}
function register ($LN)
{
eval($GLOBALS['l']('ICAgICAgICBpZiAoISR0aGlzLT5fYWRtaW4pIHJldHVybiAnJzsNCg0KICAgICAgICAkaUNvZGUgPSAkdGhpcy0+Z2V0Q29kZSAoJHNNc2csICRMTik7DQoNCiAgICAgICAgJHNDbG9zZSA9ICcnOw0KICAgICAgICBpZiAoJGlDb2RlID09PSAwIHx8ICRpQ29kZSA9PT0gMTApDQogICAgICAgIHsNCiAgICAgICAgICAgIHNldENvbmZpZ1BhcmFtKCdsaWNlbnNlJywgJExOKTsNCiAgICAgICAgICAgICRzQ2xvc2UgPSAid2luZG93LnBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2FybicpLnN0eWxlLmRpc3BsYXk9J25vbmUnIjsgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgfSAgICAgICAgDQogICAgICAgIHNldENvbmZpZ1BhcmFtKCdkaXNhYmxlX2Jvb25leF9mb290ZXJzJywgMCA9PT0gJGlDb2RlID8gMSA6IDApOw0KICAgICAgICBpZiAoMCA9PT0gJGlDb2RlKSAkc01zZyA9ICJMaWNlbnNlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkLiBUaGFuayB5b3UuIjsNCiAgICAgICAgaWYgKDEwID09PSAkaUNvZGUpICRzTXNnID0gIkZyZWUgTGljZW5zZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZC4gVGhhbmsgeW91LiI7DQogICAgICAgICRzID0gJzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQp3aW5kb3cucGFyZW50LmFsZXJ0KCInLiRzTXNnLiciKTsNCicuJHNDbG9zZS4nOw0KPC9zY3JpcHQ+Jzs='));
return $s;
}
function getCode (&$sMsg, $LN = '')
{
eval($GLOBALS['l']('ICAgICAgICBnbG9iYWwgJGdDb25mOw0KDQogICAgICAgIGlmICghJExOKQ0KICAgICAgICAgICAgJExOID0gZ2V0Q29uZmlnUGFyYW0gKCdsaWNlbnNlJyk7DQogICAgICAgIA0KICAgICAgICBpZiAocHJlZ19tYXRjaCgnLyhodHRwfGh0dHBzKTpcL1wvKFthLXpBLVowLTlcLi1dKylcLy8nLCAkZ0NvbmZbJ3VybCddWydiYXNlJ10sICRtKSkgJGQgPSBzdHJfcmVwbGFjZSgnd3d3LicsJycsJG1bMl0pOw0KICAgICAgICAkaUNvZGUgPSAxOw0KICAgICAgICAkc01zZyA9ICdJbnZhbGlkIExpY2Vuc2UnOw0KICAgICAgICBpbmlfc2V0KCdkZWZhdWx0X3NvY2tldF90aW1lb3V0JywgMyk7DQoNCiAgICAgICAgJHNVcmwgPSAiaHR0cDovL2xpY2Vuc2UuYm9vbmV4LmNvbS9vcmNhLnBocD9MTj17JExOfSZkPXskZH0iOw0KICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSkNCiAgICAgICAgew0KICAgICAgICAgICAgICAgICRjdXJsID0gY3VybF9pbml0KCk7DQogICAgICAgICAgICAgICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkc1VybCk7DQogICAgICAgICAgICAgICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOw0KICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0hFQURFUiwgZmFsc2UpOw0KICAgICAgICAgICAgICAgICRzID0gY3VybF9leGVjKCRjdXJsKTsNCiAgICAgICAgICAgICAgICBjdXJsX2Nsb3NlKCRjdXJsKTsNCiAgICAgICAgICAgICAgICBpZiAodHJ1ZSA9PT0gJHMpICRzID0gJyc7DQogICAgICAgIH0gICAgDQogICAgICAgIGVsc2UgICAgICAgIA0KICAgICAgICB7DQogICAgICAgICAgICAkcyA9IGZpbGVfZ2V0X2NvbnRlbnRzICgkc1VybCk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAocHJlZ19tYXRjaCAoJy88Y29kZT4oXGQrKTxcL2NvZGU+Lio8bXNnPiguKj8pPFwvbXNnPi8nLCAkcywgJG0pKSANCiAgICAgICAgew0KICAgICAgICAgICAgJGlDb2RlID0gJG1bMV07DQogICAgICAgICAgICAkc01zZyA9ICRtWzJdOw0KICAgICAgICB9'));
return (int)$iCode;
}
/**
* change category order
* @param $cat_id category id
* @param $dir direction (up|down)
* @param return xml (0|1)
*/
function moveCat ($cat_id, $dir)
{
if (!$this->_admin) return '0';
$db = new DbAdmin ();
$cat_order = $db->getCatOrder ($cat_id);
$a = $db->getCatsInOrder ($cat_order, $dir, 2);
$new_order = 0;
if (2 == count ($a))
{
$new_order = $a[0]['cat_order'] > $a[1]['cat_order'] ? $a[1]['cat_order'] + ($a[0]['cat_order'] - $a[1]['cat_order'])/2 : $a[0]['cat_order'] + ($a[1]['cat_order'] - $a[0]['cat_order'])/2;
}
else if (1 == count ($a))
{
$new_order = $cat_order > $a[0]['cat_order'] ? $a[0]['cat_order']/2 : $a[0]['cat_order'] + CAT_ORDER_STEP;
}
if ($new_order)
{
$db->setNewOrder ($cat_id, $new_order);
return '1';
}
return '0';
}
/**
* delete category
* @param $cat_id category id
* @param return xml (0|1)
*/
function deleteCategory ($cat_id)
{
if (!$this->_admin) return '0';
$db = new DbAdmin ();
return $db->deleteCategoryAll ((int)$cat_id) ? '1' : '0';
}
/**
* delete forum
* @param $forum_id forum id
* @param return xml (0|1)
*/
function deleteForum ($forum_id)
{
if (!$this->_admin) return '0';
$db = new DbAdmin ();
$cat = $db->getCatByForumId($forum_id);
if ($db->deleteForumAll ((int)$forum_id))
return '' . $cat['cat_uri'] . '' . $cat['cat_id'] . '';
else
return '0';
}
/**
* show edit category page
* @param $cat_id category id
* @param return category window xml
*/
function editCategory ($cat_id)
{
$db = new DbAdmin ();
$cat_name = $db->getCatname ((int)$cat_id);
$cu = $this->getUrlsXml ();
encode_post_text ($cat_name, 0);
return <<
$cu
$cat_name
EOS;
}
/**
* save category information
* @param $cat_id category id
* @param $cat_name category name
* @param return xml (0|1)
*/
function editCategorySubmit ($cat_id, $cat_name)
{
if (!$this->_admin) return '0';
$cat_name = unicode_urldecode($cat_name);
prepare_to_db($cat_name, 0);
// cat_name check
$db = new DbAdmin ();
if ($cat_id)
{
return $db->editCategory ((int)$cat_id, $cat_name) ? '1' : '0';
}
else
{
global $f;
$cat_uri = $f->uriGenerate ($cat_name, TF_FORUM_CAT, 'cat_uri');
return $db->insertCategory ($cat_name, $cat_uri) ? '1' : '0';
}
}
/**
* show edit forum page
* @param $forum_id forum id
* @param $cat_id category id
* @param return forum edit window xml
*/
function editForum ($forum_id, $cat_id)
{
$db = new DbAdmin ();
$fdb = new DbForum ();
if ($forum_id)
$a = $db->getForum ((int)$forum_id);
else
$a['cat_id'] = $cat_id;
$c = $fdb->getCat ($a['cat_id']);
$a['cat_uri'] = $c['cat_uri'];
$cu = $this->getUrlsXml ();
encode_post_text ($a['forum_title'], 0);
encode_post_text ($a['forum_desc'], 0);
return <<
$cu
{$a['cat_id']}
{$a['cat_uri']}
{$a['forum_title']}
{$a['forum_desc']}
{$a['forum_type']}
OES;
}
/**
* save forum information
* @param $cat_id category id
* @param $forum_id forum id
* @param $title forum title
* @param $desc forum description
* @param $type forum type (public|private)
* @param return xml (0|1)
*/
function editFormSubmit ($cat_id, $forum_id, $title, $desc, $type)
{
if (!$this->_admin) return '0';
$title = unicode_urldecode ($title);
$desc = unicode_urldecode ($desc);
prepare_to_db($title, 0);
prepare_to_db($desc, 0);
$db = new DbAdmin ();
if ($forum_id > 0)
{
return $db->editForum ((int)$forum_id, $title, $desc, $type) ? '1' : '0';
}
else
{
global $f;
$forum_uri = $f->uriGenerate ($title, TF_FORUM, 'forum_uri');
return $db->insertForum ((int)$cat_id, $title, $desc, $type, $forum_uri) ? '1' : '0';
}
}
/**
* returns reported posts XML
*/
function getReportedPostsXML ()
{
global $gConf;
global $f;
$ui = array ();
$fdb = new DbForum ();
$adb = new DbAdmin ();
if (!$this->_admin) return "";
// check user permissions to delete or edit posts
$gl_allow_edit = 1;
$gl_allow_del = 1;
$u = $f->_getLoginUser();
$a = $adb->getReportedPosts($u);
reset ($a);
$p = '';
while ( list (,$r) = each ($a) )
{
// acquire user info
if (!$ui[$r['user']])
{
$aa = $f->_getUserInfo ($r['user']);
$ui[$r['user']] = array ('posts' => $fdb->getUserPosts($r['user']), 'avatar' => $aa['avatar']);
}
$allow_edit = $gl_allow_edit;
$allow_del = $gl_allow_del;
encode_post_text ($r['post_text']);
$p .= <<
{$r['post_text']}
{$r['when']}
$allow_edit
$allow_del
{$r['votes']}
{$r['vote_user_point']}
{$ui[$r['user']]['avatar']}
{$gConf['min_point']}
EOF;
$rr = $r;
}
$cu = $this->getUrlsXml ();
return "$cuReported Posts00{$p}";
}
/**
* lock/unlcok topic
* @param $topic_id topic id
*/
function lock ($topic_id)
{
if (!$topic_id || !$this->_admin) return '0';
$db = new DbAdmin ();
if ($db->isLocked ((int)$topic_id))
{
if (!$db->lock ((int)$topic_id))
return '0';
return '-1';
}
if (!$db->lock ((int)$topic_id))
return '0';
return '1';
}
function compileLangs ()
{
global $gConf;
if (!$this->_admin)
{
return '0';
}
require_once( './classes/BxLang.php' );
require_once( $gConf['dir']['xml'].'lang.php' );
$sLang = isset($_GET['lang']) && preg_match("/^[a-z]{2}$/", $_GET['lang']) ? $_GET['lang'] : $gConf['lang'];
$l = new BxLang ($sLang, $gConf['skin']);
$l->setVisualProcessing(0);
if ($l->compile ())
return '1';
return '0';
}
}
?>