PDA

View Full Version : kill tags in tags.php page - my small mod


bartek24m
01-31-2010, 03:15 PM
I would like delete (vb 3.8.4) tags the same way like it is in zoints thread tags mod,
https://vborg.vbsupport.ru/external/2010/01/3.png

so i wrote small hack but it not works. Could someone check it?

in

tag_cloud_link template
find
<a href="tags.php?$session[sessionurl]tag=$thistag[tagtext_url]" class="tagcloudlink level$thistag[level]">$thistag[tagtext]</a>

change to
<a href="tags.php?$session[sessionurl]tag=$thistag[tagtext_url]" class="tagcloudlink level$thistag[level]">$thistag[tagtext]</a>
<if condition="is_member_of($bbuserinfo,5,6,7)">
<font size="1">[<a href="tags.php?do=tagkill&tag=$thistag[tagtext]">x</a>]</font>
</if>

when i try to click in [x] i can see white page :(

Lynne
01-31-2010, 05:07 PM
And what is actually showing up in the page source? And did you create a plugin to define do=tagkill ?

bartek24m
01-31-2010, 05:19 PM
no i didnt set up plugin for tagkill
could you help me with create plugin ?

Lynne
01-31-2010, 05:33 PM
If you need someone else to write the code for you, you should post in the Modification Request forum (either paid or unpaid). If you look at the regular tags list for a thread and go to Edit the tags, you'll see that it doesn't use that page to delete tags, it uses the threadtag.php page. So, you may want to look at that page and see what you need to do to delete a tag.

bartek24m
01-31-2010, 05:59 PM
Ok, next time i'll create threads in proper forum


in admincp/thread.php i found:


// ################################################## ######################

if ($_POST['do'] == 'tagkill')
{
if (sizeof($taglist))
{
$tags_result = $vbulletin->db->query_read("
SELECT tagtext
FROM " . TABLE_PREFIX . "tag
WHERE tagid IN (" . implode(',', $taglist) . ")
");

$tagstodelete = array();
while ($tag = $vbulletin->db->fetch_array($tags_result))
{
$tagstodelete[] = $tag['tagtext'];
}
unset($tag);

if (!empty($tagstodelete))
{
require_once(DIR . "/includes/functions_newpost.php");

$threads_result = $vbulletin->db->query_read("
SELECT DISTINCT thread.*
FROM " . TABLE_PREFIX . "tagthread AS tagthread
INNER JOIN " . TABLE_PREFIX . "thread AS thread ON (thread.threadid = tagthread.threadid)
WHERE tagthread.tagid IN (" . implode(',', $taglist) . ")
");
while ($thread = $vbulletin->db->fetch_array($threads_result))
{
$newtags = array();
foreach (explode(',', trim($thread['taglist'])) AS $oldtag)
{
$oldtag = trim($oldtag);
if (!in_array($oldtag, $tagstodelete))
{
$newtags[] = $oldtag;
}
}

$newtags_string = implode(', ', $newtags);

if ($newtags_string != $thread['taglist'])
{
// if efficiency is needed, this could be changed to a direct query
$threaddm =& datamanager_init('Thread', $vbulletin, ERRTYPE_SILENT, 'threadpost');
$threaddm->set_existing($thread);
$threaddm->set('taglist', $newtags_string);
$threaddm->save();

unset($threaddm);
}
}
}

$db->query_write("
DELETE FROM " . TABLE_PREFIX . "tag
WHERE tagid IN (" . implode(',', $taglist) . ")
");

$db->query_write("
DELETE FROM " . TABLE_PREFIX . "tagthread
WHERE tagid IN (" . implode(',', $taglist) . ")
");

// need to invalidate the search and tag cloud caches
build_datastore('tagcloud', '', 1);
build_datastore('searchcloud', '', 1);
}

setcookie('vbulletin_inlinetag', '', TIMENOW - 3600, '/');

print_cp_header($vbphrase['thread_manager']);
print_stop_message('tags_edited_successfully');
}

// ################################################## ######################




and i paste it in

tags.php


but my mod still not work

Lynne
01-31-2010, 07:25 PM
And what error are you getting? And why didn't you just change the link to thread.php instead of tags.php? And, you never answered my question about the link in the page source.

bartek24m
02-01-2010, 05:43 AM
And what error are you getting? And why didn't you just change the link to thread.php instead of tags.php? And, you never answered my question about the link in the page source.

link in the page source is

<font size="1">[<a rel="nofollow" href="http://mydomain.pl/tags/2pac.html?do=tagkill">x</a>]</font> (I use vbseo)


and error i get after add PHP code to tags.php

Fatal error: Call to undefined function print_cp_header() in /home/kredyciak/domains/mydomain.pl/public_html/tags.php on line 147

Marco van Herwaarden
02-01-2010, 11:53 AM
You are trying to add code that will only work in the AdminCP to a user script.

PS Editing the ./tags.php to add a delete function is probably not what you want. If needed create a new file to hold this function.