xenforoaddon_moodBadge/upload/library/moodBadge/sharedStatic.php

225 lines
6.5 KiB
PHP

<?php
class moodBadge_sharedStatic
{
public static $moodbadge = array(
0=>array('?','Not informed'),
1=>array('😂','Very happy'),
2=>array('😃','Happy'),
3=>array('😍','In love'),
4=>array('😋','Hungry'),
5=>array('😉','Clever'),
6=>array('😌','In peace'),
7=>array('😐','Neutral'),
8=>array('😒','Unamused'),
9=>array('😕','Confused'),
10=>array('😢','Crying'),
11=>array('😞','Sad'),
12=>array('😠','Angry'),
13=>array('😴','Sleepy'),
14=>array('😔','Bored'),
15=>array('😷','Sick')
);
public static $moodOptions = null;
public static function getMoodOptions(){
$bdgs = null;
if(self::$moodOptions){
$bdgs = self::$moodOptions;
}else{
$bdgs = self::$moodbadge;
$xfopt = XenForo_Application::get('options');
$extra = $xfopt->moodBadgeExtras;
foreach($extra as $itm){
$replaced = false;
foreach($bdgs as $badgeindex => $badgearr){
if($badgearr[1]==$itm[1]){
$replaced = true;
$bdgs[$badgeindex][0]=$itm[0];
break;
}
}
if(!$replaced){
$bdgs[]=$itm;
}
}
$moodOptions = $bdgs;
}
//die(print_r($bdgs,true));
return $bdgs;
}
public static function render_AdminCP_CustomFieldsAdder(XenForo_View $view, $fieldPrefix, array $preparedOption, $canEdit){
$t = $preparedOption['option_value'];
$choices = array();
foreach($t as $entry){
$choices[] = array(
is_string($entry[0]) ? $entry[0] : '',
is_string($entry[1]) ? $entry[1] : ''
);
}
$editLink = $view->createTemplateObject('option_list_option_editlink', array(
'preparedOption' => $preparedOption,
'canEditOptionDefinition' => $canEdit
));
return $view->createTemplateObject('kiror_option_template_custom_badge_adder', array(
'fieldPrefix' => $fieldPrefix,
'listedFieldName' => $fieldPrefix . '_listed[]',
'preparedOption' => $preparedOption,
'formatParams' => $preparedOption['formatParams'],
'editLink' => $editLink,
'choices' => $choices,
'nextCounter' => count($choices)
));
}
public static function verifier_AdminCP_CustomFieldsAdder(array &$emojis, XenForo_DataWriter $dw, $fieldName){
$output = array();
foreach ($emojis AS $candidate){
if (!isset($candidate[0]) || !isset($candidate[1]) || strlen($candidate[0])<=0 || strlen($candidate[1])<=0){
continue;
}
$tmp = array($candidate[0], $candidate[1]);
if ($tmp && !in_array($tmp,$output)){
$output[] = $tmp;
}
}
$emojis = $output;
return true;
}
public static function createTableDB(){
$dbc=XenForo_Application::get('db');
$q='CREATE TABLE IF NOT EXISTS `kiror_moodbadge_users` (
uid INT PRIMARY KEY,
mood INT
) CHARACTER SET utf8 COLLATE utf8_general_ci;';
$dbc->query($q);
}
public static function dropTableDB(){
$dbc=XenForo_Application::get('db');
$q='DROP TABLE IF EXISTS `kiror_moodbadge_users`;';
$dbc->query($q);
}
public static function setMyMood($moodcode){
$moodcode=intval($moodcode);
$visitor = XenForo_Visitor::getInstance();
$uid = intval($visitor['user_id']);
return self::setMood($uid,$moodcode);
}
public static function setMood($uid, $moodcode){
$uid=intval($uid);
$moodcode=intval($moodcode);
$dbc=XenForo_Application::get('db');
$q='DELETE FROM `kiror_moodbadge_users` WHERE uid = ? ;';
$dbc->query($q,$uid);
$q='INSERT INTO `kiror_moodbadge_users` (uid,mood) VALUES (?,?);';
$dbc->query($q,array($uid,$moodcode));
}
public static function getMyMood(){
$visitor = XenForo_Visitor::getInstance();
$uid = intval($visitor['user_id']);
return self::getMood($uid);
}
public static function getMoodId_uncached($uid){
$uid=intval($uid);
if (!self::userHasPermission($uid,'forum','moodbadgeset')){
return 0;
}
$dbc=XenForo_Application::get('db');
$q='SELECT mood FROM `kiror_moodbadge_users` WHERE uid = ? LIMIT 1;';
$mood=$dbc->fetchRow($q,array($uid))['mood'];
if(is_int($mood) && array_key_exists($mood,(self::getMoodOptions()))){
$m = self::getMoodOptions();
return $mood;
}else{
$m=self::getMoodOptions();
return 0;
}
}
public static $moodIdCache = array();
public static function getMoodId($uid){
$uid=intval($uid);
if(!array_key_exists($uid,self::$moodIdCache)){
self::$moodIdCache[$uid] = self::getMoodId_uncached($uid);
}
return self::$moodIdCache[$uid];
}
public static $moodCache = array();
public static function getMood($uid){
$uid=intval($uid);
if(!array_key_exists($uid,self::$moodCache)){
$moodid = self::getMoodId($uid);
$moods = self::getMoodOptions();
self::$moodCache[$uid] = $moods[$moodid];
}
return self::$moodCache[$uid];
}
public static function hasMoodDefined($uid){
$mood = self::getMoodId($uid);
//die(''.$mood);
return ($mood != 0);
}
public static function hasMoodCallback($contents, array $params, XenForo_Template_Abstract $template){
return strtolower(self::getMood(intval($params['uid'])));
}
public static function getMoodCharCallback($contents, array $params, XenForo_Template_Abstract $template){
return self::getMood(intval($params['uid']))[0];
}
public static function getMoodTitleCallback($contents, array $params, XenForo_Template_Abstract $template){
return self::getMood(intval($params['uid']))[1];
}
public static function getMoodTitleLowerCallback($contents, array $params, XenForo_Template_Abstract $template){
return strtolower(self::getMood(intval($params['uid']))[1]);
}
public static function getMoodTitleLowerIfDefinedCallback($contents, array $params, XenForo_Template_Abstract $template){
if(!(self::hasMoodDefined(intval($params['uid'])))){
return '';
}
else return $params['pre'].strtolower(self::getMood(intval($params['uid']))[1]).$params['aft'];
}
public static function renderMoodInThreadViewCallback($contents, array $params, XenForo_Template_Abstract $template){
if(!(self::hasMoodDefined(intval($params['uid'])))){
return '';
}
else{
$m = self::getMood(intval($params['uid']));
return '<dl class="pairsJustified" title="'.$m[1].'"><dt>Mood:</dt><dd>'.$m[0].'</dd></dl>';
}
}
public static function renderMoodInProfileInfoCallback($contents, array $params, XenForo_Template_Abstract $template){
if(!(self::hasMoodDefined(intval($params['uid'])))){
return '';
}
else{
$m = self::getMood(intval($params['uid']));
return '<dl><dt>Mood:</dt><dd>'.$m[1].' - '.$m[0].'</dd></dl>';
}
}
public static function userHasPermission($uid,$permGroupId,$permId){
return moodBadge_Permission::getInstance()->userHasPermission($uid,$permGroupId,$permId);
}
}