07.11.2008, 17:58
08.11.2008, 14:27
Ja, gerne.
PHP-Code:
<?php
/**
* Thank you Thank you 3.0.2
*
* Thank you 3.0.1b
* Arash_j13
*
Email: Arash.j13@gmail.com
WebSite: WWW.CodeCorona.com
*
* April 13, 2007
*
* **************************
* Mod: Thank You 3.0.4
* Fixed by: Hamid Nozari
* Website: www.shceg.com
*
* March 6, 2008
*
* **************************
*
* Mod: Thank You 3.0.6
* Upgraded for MyBB 1.4 by: AmirH Hassaneini,Hamed Arfaee
* Website: www.iranvig.com
*
* September 3, 2008
*
*/
if(!defined("IN_MYBB"))
{
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}
//thx_activate();
$plugins->add_hook("postbit", "thx");
$plugins->add_hook("xmlhttp", "do_action");
$plugins->add_hook("showthread_start","direct_action");
function thx_info()
{
return array(
'name' => '<font color=Red>ThankYou</font>',
'description' => 'Add a thank you note to a certain post.<br />',
'website' => 'http://mods.mybboard.com/',
'author' => 'Arash_j13<br />Update: Hamid Nozari<br>Upgrade: AmirH Hassaneini,Hamed Arfaee',
'authorsite' => 'http://www.iranvig.com/',
'version' => '3.0.6',
'guid' => 'bd86a7a0c79639aff902e44187902c76'
);
}
function thx_activate()
{
global $db;
$db->query("CREATE TABLE IF NOT EXISTS ".TABLE_PREFIX."thx (
txid INT UNSIGNED NOT NULL AUTO_INCREMENT ,
uid int( 10 ) NOT NULL ,
adduid int( 10 ) NOT NULL ,
pid int( 10 ) NOT NULL ,
time bigint(30) NOT NULL,
PRIMARY KEY ( txid )
) TYPE = MYISAM ;"
);
if(!$db->field_exists("thx","users"))
$db->query("ALTER TABLE ".TABLE_PREFIX."users ADD `thx` INT NOT NULL DEFAULT 0 ,
ADD `thxcount` INT NOT NULL DEFAULT 0 ");
if(!$db->field_exists("thx","posts"))
$db->query("ALTER TABLE ".TABLE_PREFIX."posts ADD `thx` INT(1) NOT NULL DEFAULT '0'");
$db->query("UPDATE ".TABLE_PREFIX."users u SET
u.thx=(SELECT COUNT(*) FROM ".TABLE_PREFIX."thx t WHERE t.adduid=u.uid) ,
u.thxcount=(SELECT COUNT(*) FROM ".TABLE_PREFIX."thx t WHERE t.uid=u.uid)");
$db->query("UPDATE ".TABLE_PREFIX."posts p SET
p.thx=(SELECT COUNT(*) FROM ".TABLE_PREFIX."thx t WHERE t.pid=p.pid)");
require '../inc/adminfunctions_templates.php';
find_replace_templatesets("postbit_classic", '#'.preg_quote(' </table>').'#', ' </table>{$post[\'thxdsp\']}');
find_replace_templatesets("postbit", '#'.preg_quote('</tbody>').'#', '<table>{$post[\'thxdsp\']}</table></tbody>');
find_replace_templatesets("postbit_classic", '#'.preg_quote('{$post[\'button_quote\']}').'#', '{$post[\'button_quote\']}{$post[\'thanks\']}');
find_replace_templatesets("postbit", '#'.preg_quote('{$post[\'button_quote\']}').'#', '{$post[\'button_quote\']}{$post[\'thanks\']}');
// Templates für dieses Plugin einfügen
$templatearray = array(
"tid" => "0",
"title" => "postbit_thxcount",
"template" => "<br><br><span class=\"smalltext\">{\$lang->thx_thank} {\$post[\'thank_count\']}<br />
{\$post[\'thanked_count\']}<br /></span>",
"sid" => "-1",
);
$db->insert_query("templates", $templatearray);
find_replace_templatesets("headerinclude","#".preg_quote('{$newpmmsg}').'#',
'<script type="text/javascript" src="jscripts/thx.js?ver=1400"></script>
{$newpmmsg}');
//installing settings
$thx_group = array(
"gid" => "0",
"name" => "Thank you",
"title" => "Thank you",
"description" => "Displays ThankYou note below each post.",
"disporder" => "3",
"isdefault" => "no",
);
$db->insert_query("settinggroups", $thx_group);
$gid = $db->insert_id();
$thx_setting_1 = array(
"sid" => "0",
"name" => "thx_active",
"title" => "Activate/Deactivate plugin",
"description" => "Activate or Deactivate plugin but dont delete table",
"optionscode" => "onoff",
"value" => 'on',
"disporder" => '1',
"gid" => intval($gid),
);
$thx_setting_2 = array(
"sid" => "0",
"name" => "thx_count",
"title" => "Show/Hide Counter",
"description" => "Show/Hide ThankYou Counter in user profile",
"optionscode" => "onoff",
"value" => 'on',
"disporder" => '2',
"gid" => intval($gid),
);
$db->insert_query("settings", $thx_setting_1);
$db->insert_query("settings", $thx_setting_2);
rebuild_settings();
}
function thx_deactivate()
{
global $db;
require '../inc/adminfunctions_templates.php';
//$db->query("drop TABLE ".TABLE_PREFIX."thx");
find_replace_templatesets("postbit_classic", '#'.preg_quote('{$post[\'thxdsp\']}').'#', '', 0);
find_replace_templatesets("postbit", '#'.preg_quote('<table>{$post[\'thxdsp\']}</table>').'#', '', 0);
find_replace_templatesets("postbit_classic", '#'.preg_quote('{$post[\'thanks\']}').'#', '', 0);
find_replace_templatesets("postbit", '#'.preg_quote('{$post[\'thanks\']}').'#', '', 0);
find_replace_templatesets("postbit_classic", '#'.preg_quote('{$post[\'thxcount\']}').'#', '', 0);
find_replace_templatesets("headerinclude","#".
preg_quote('<script type="text/javascript" src="jscripts/thx.js?ver=1400"></script>').'#','',0);
$db->delete_query("settings","name='thx_count'");
$db->delete_query("settings","name='thx_active'");
$db->delete_query("settinggroups","name='Thank you'");
$db->delete_query("templates","title='postbit_thxcount'");
if($db->field_exists("thx","posts"))
$db->query("ALTER TABLE ".TABLE_PREFIX."posts DROP thx");
if($db->field_exists("thx","users"))
$db->query("ALTER TABLE ".TABLE_PREFIX."users DROP thx , DROP thxcount");
rebuild_settings();
}
function thx($post) {
global $db, $mybb, $lang , $altbg,$templates;
if($mybb->settings['thx_active']=="off")
return;
$lang->load("thx");
$b=0; //dose user thank this post?
$entries=build_thank($post['pid'],$b);
global $thread;
if($mybb->user['uid'] != 0 && $mybb->user['uid'] != $post['uid'] && $thread['firstpost'] == $post['pid'])
{
if(!$b) //show thank button
$post['thanks'] = "<a id=\"a{$post['pid']}\" onclick=\"javascript: ThankYou.thx({$post['pid']}); return false; \" href=\"showthread.php?action=thank&tid={$post['tid']}&pid={$post['pid']}\">
<img
src=\"images/{$lang->language}/postbit_thx.gif\" border=\"0\" alt=\"$lang->thx_main\" id=\"i{$post['pid']}\" /></a>";
else
$post['thanks'] = "<a id=\"a{$post['pid']}\" onclick=\"javascript: ThankYou.rthx({$post['pid']}); return false; \" href=\"showthread.php?action=remove_thank&tid={$post['tid']}&pid={$post['pid']}\">
<img src=\"images/{$lang->language}/postbit_rthx.gif\" border=\"0\"
alt=\"$lang->thx_remove\" id=\"i{$post['pid']}\" /></a>";
}
$display= $entries ? "": "none" ;
$post['thxdsp'] = "<tr class=\"$altbg\" id=\"thx{$post['pid']}\" style=\"display:$display\"><td align=\"center\">
<span class=\"smalltext\">$lang->thx_givenby</span></td>
<td id=\"thx_list{$post['pid']}\">$entries</td></tr>";
if($mybb->settings['thx_count']=="on")
{
$query=$db->simple_select("users","thx ,thxcount ","uid={$post['uid']}");
$count1=$db->fetch_array($query);
$query=$db->simple_select("posts","count(*) as count","thx > '0' AND uid={$post['uid']}");
$count3=$db->fetch_array($query);
$post['thank_count']=$count1['thx'];
$post['thanked_count']=$lang-> sprintf($lang->thx_thanked_count,$count1['thxcount'],$count3['count']);
eval("\$post['thxcount'] = \"".$templates->get("postbit_thxcount")."\";");
$post['user_details'].=$post['thxcount'];
}
}
function do_action() {
global $mybb, $db, $lang;
if( ($mybb->input['action'] != "thankyou" && $mybb->input['action'] != "remove_thankyou")
|| $mybb->request_method != "post")
return;
$lang->load("thx");
$pid=intval($mybb->input['pid']);
if ($mybb->input['action'] == "thankyou")
{
do_thank($pid);
}
else
del_thank($pid);
$nonead=0;
$list=build_thank($pid,$nonead);
header('Content-Type: text/xml');
$output="<thankyou>
<list><![CDATA[$list]]></list>
<display>".($list ? "1" : "0")."</display>
<image>{$mybb->settings['bburl']}/images/{$lang->language}/";
$output.=$mybb->input['action'] == "thankyou" ? "postbit_rthx.gif": "postbit_thx.gif";
$output.="</image>
</thankyou>";
echo $output;
}
function direct_action()
{
global $mybb,$lang;
if($mybb->input['action'] != "thank" && $mybb->input['action'] != "remove_thank")
return;
$lang->load("thx");
$pid=intval($mybb->input['pid']);
if ($mybb->input['action'] == "thank" )
do_thank($pid);
else
del_thank($pid);
redirect($_SERVER['HTTP_REFERER']);
}
function build_thank($pid,&$is_thx)
{
$is_thx=0;
global $db,$mybb;
$query=$db->query( "SELECT th.* , u.username ,u.usergroup ,u.displaygroup
FROM ".TABLE_PREFIX."thx th
JOIN ".TABLE_PREFIX."users u ON(th.adduid=u.uid)
WHERE th.pid='$pid'
ORDER BY th.time ASC");
while($record = $db->fetch_array($query))
{
$is_thx+=$record['adduid']==$mybb->user['uid'];
$date=my_date($mybb->settings['dateformat'].' '.$mybb->settings['timeformat'],$record['time']);
$url=get_profile_link($record['adduid']);
$name=format_name($record['username'], $record['usergroup'], $record['displaygroup']);
$entries .= "".$r1comma."<a title=\".$date.\" href=\"$url\"><img src=\"./images/lecker.gif\" alt=\"Danke\" width=\"32\" height=\"29\">$name</a>";
$r1comma =", ";
}
return $entries;
}
function do_thank($pid)
{
global $db,$mybb;
$pid=intval($mybb->input['pid']);
$query=$db->query("SELECT uid FROM ".TABLE_PREFIX."posts WHERE pid=".$pid);
$user=$db->fetch_array($query);
if ($user['uid']==$mybb->user['uid'])
return;
$check_query = $db->simple_select("thx","*" ,"adduid='{$mybb->user['uid']}' AND pid='$pid'");
if($db->num_rows($check_query))
return;
$check_query = $db->simple_select("thx","*" ,"adduid='{$mybb->user['uid']}' AND pid='$pid'");
if($db->num_rows($check_query))
return;
$check_query = $db->simple_select("posts","uid","pid='$pid'");
if($db->num_rows($check_query)==1)// post exsits
{
$tmp=$db->fetch_array($check_query);
$database = array (
"uid" =>$tmp['uid'],
"adduid" => $mybb->user['uid'],
"pid" => $pid,
"time" => time()
);
$db->insert_query("thx", $database); //add thank to thx table
//update user inforamtion
$query=$db->simple_select("users","thx","uid={$mybb->user['uid']}");
$tmp=$db->fetch_array($query);
$update1['thx']=++$tmp['thx'];
$db->update_query("users",$update1,"uid={$mybb->user['uid']}",1);
$query=$db->simple_select("users","thxcount","uid={$database['uid']}");
$tmp=$db->fetch_array($query);
$update2['thxcount']=++$tmp['thxcount'];
$db->update_query("users",$update2,"uid={$database['uid']}",1);
//update post information
$update3['thx']="1";
$db->update_query("posts",$update3,"pid={$database['pid']}",1);
}
}
function del_thank($pid)
{
global $mybb,$db;
$check_query = $db->simple_select("thx","*" ,"adduid='{$mybb->user['uid']}' AND pid='$pid'");
if($db->num_rows($check_query))
{
$data=$db->fetch_array($check_query);
$query=$db->simple_select("users","thx","uid={$mybb->user['uid']}");
$tmp=$db->fetch_array($query);
$update1['thx']=--$tmp['thx'];
$db->update_query("users",$update1,"uid={$mybb->user['uid']}",1);
$query=$db->simple_select("users","thxcount","uid={$data['uid']}");
$tmp=$db->fetch_array($query);
--$tmp['thxcount'];
$update2['thxcount']="{$tmp['thxcount']}";
$db->update_query("users",$update2,"uid={$data['uid']}",1);
$db->delete_query("thx","adduid='{$mybb->user['uid']}' AND pid='$pid'");
/*$db->query("UPDATE ".TABLE_PREFIX."posts p SET p.thx=(SELECT count(*) FROM ".
TABLE_PREFIX."thx t WHERE t.pid='{$pid}') WHERE p.pid='{$pid}'");*/
$query=$db->simple_select("thx","count(*) as c","pid='{$pid}'");
$tmp=$db->fetch_array($query);
$update3['thx']=$temp['c'];
$db->update_query("posts",$update3,"pid='{$pid}'",1);
}
}
if(!function_exists("rebuild_settings"))
{
function rebuild_settings()
{
global $db;
$query = $db->query("SELECT * FROM ".TABLE_PREFIX."settings ORDER BY title ASC");
while($setting = $db->fetch_array($query))
{
$setting['value'] = addslashes($setting['value']);
$settings .= "\$settings['".$setting['name']."'] = \"".$setting['value']."\";\n";
}
$settings = "<?php\n/*********************************\ \n DO NOT EDIT THIS FILE, PLEASE USE\n THE SETTINGS EDITOR\n\*********************************/\n\n$settings\n?>";
$file = fopen("../inc/settings.php", "w");
fwrite($file, $settings);
fclose($file);
}
}
?>
08.11.2008, 15:46
Wo hast du etwas verändert?
08.11.2008, 16:28
nein, ich dachte du möchtest den originalen Code um sehen zu können, was man machen muss.
08.11.2008, 16:35
Den kann ich auch selber runterladen.
An welcher Stelle hast du was verändert hast. Den Fehler zu suchen ist meist einfacher als das selber einzubauen.
An welcher Stelle hast du was verändert hast. Den Fehler zu suchen ist meist einfacher als das selber einzubauen.
11.11.2008, 13:48
So, da bin ich wieder. Hier bei mir geht im Moment alles drunter und drüber.
Jajaja, ich komme mir ja jetzt auch blöd vor.
Also, ich hatte alles frustriert gelöscht, als es nicht klappte. Aber ich habe im Prinzip zwei Varianten gehabt, die ich in verschiedensten Konstellationen ausprobiert habe. :undecided:
Das Original ist ungefähr bei Zeile 187
Es war ungefähr so:
und die andere Variante war ungefähr
Dann habe ich noch versucht es unter
einzusetzen.
Übrigens, muss ich da jetzt nicht die fid-Nummern der Foren eintragen, in denen das ThankYou gezeigt werden soll? Ich wollte eigentlich lieber eintragen, wo es nicht gezeigt werden soll. Das ist weniger.
Jajaja, ich komme mir ja jetzt auch blöd vor.
Also, ich hatte alles frustriert gelöscht, als es nicht klappte. Aber ich habe im Prinzip zwei Varianten gehabt, die ich in verschiedensten Konstellationen ausprobiert habe. :undecided:
Das Original ist ungefähr bei Zeile 187
PHP-Code:
if($mybb->user['uid'] != 0 && $mybb->user['uid'] != $post['uid'] && $thread['firstpost'] == $post['pid'])
Es war ungefähr so:
PHP-Code:
if($mybb->user['uid'] != 0 && $mybb->user['uid'] != $post['uid'] && $thread['firstpost'] == $post['pid']) == $forum['fid'] != 11 && $forum ['fid'] != 46)
und die andere Variante war ungefähr
PHP-Code:
if($mybb->user['uid'] != 0 && $mybb->user['uid'] != $post['uid'] && $thread['firstpost'] == $post['pid'])
if($forum['fid'] != 11 && $forum['fid'] != 46)
Dann habe ich noch versucht es unter
PHP-Code:
//show thank button
Übrigens, muss ich da jetzt nicht die fid-Nummern der Foren eintragen, in denen das ThankYou gezeigt werden soll? Ich wollte eigentlich lieber eintragen, wo es nicht gezeigt werden soll. Das ist weniger.
11.11.2008, 16:12
PHP-Code:
if($mybb->user['uid'] != 0 && $mybb->user['uid'] != $post['uid'] && $thread['firstpost'] == $post['pid'] && $forum['fid'] != 11 && $forum['fid'] != 46)
16.11.2008, 15:19
Ach klar,
habe ich natürlich auch geschrieben.
Aber es ging nicht. Dann kommt folgende Fehlermeldung
PHP-Code:
&&
Aber es ging nicht. Dann kommt folgende Fehlermeldung
Zitat:Parse error: syntax error, unexpected T_BOOLEAN_AND in /xxx/xxx/xx/xx/xxx/htdocs/xxx/inc/plugins/thx.php on line 187
16.11.2008, 18:35
Da war ein Fehler im Code, der sich durch das Kopieren eingeschlichen hatte.
17.11.2008, 09:35
Jetzt habe ich zwar keine Fehlermeldung mehr, aber wieder das Gleiche wie bei meinen eigenen Versuchen: Man kann sich weiterhin überall bedanken, egal was für Nummern ich eintrage oder nicht.