I upload a mod with a bug and cannot re-upload it !!

Started by Yio, December 18, 2006, 11:20:20 PM

Previous topic - Next topic

Yio

I upload a mod with a bug and cannot re-upload it !!

They said:

An Error Has Occurred!
The package id given matched another mod's package id. The package id is required to be unique. 

This is the Topics_Started_by_a_user_0.2.xml bigfixed file
<?xml version="1.0"?>
<!DOCTYPE modification SYSTEM "http://www.simplemachines.org/xml/modification">
<modification xmlns="http://www.simplemachines.org/xml/modification" xmlns:smf="http://www.simplemachines.org/">
<id>Yio:Topics_Started_by_a_user</id>
<version>0.1</version>
<homepage>http://www.yio.com.ar</homepage>
<file name="$sourcedir/Profile.php">
<operation>
<search position="before"><![CDATA[
// Clean up after posts that cannot be deleted.
foreach ($context['posts'] as $counter => $dummy)
$context['posts'][$counter]['can_delete'] &= $context['posts'][$counter]['delete_possible'];
}
]]></search>
<add><![CDATA[
// Show all posts started by the current user
function showPostsini($memID)
{
global $txt, $user_info, $scripturl, $modSettings, $db_prefix;
global $context, $user_profile, $ID_MEMBER, $sourcedir;

// If just deleting a message, do it and then redirect back.
if (isset($_GET['delete']))
{
checkSession('get');

// We can be lazy, since removeMessage() will check the permissions for us.
require_once($sourcedir . '/RemoveTopic.php');
removeMessage((int) $_GET['delete']);

// Back to... where we are now ;).
redirectexit('action=profile;u=' . $memID . ';sa=showPostsini;start=' . $_GET['start']);
}

// Is the load average too high to allow searching just now?
if (!empty($context['load_average']) && !empty($modSettings['loadavg_show_posts']) && $context['load_average'] >= $modSettings['loadavg_show_posts'])
fatal_lang_error('loadavg_show_posts_disabled', false);

// Default to 10.
if (empty($_REQUEST['viewscount']) || !is_numeric($_REQUEST['viewscount']))
$_REQUEST['viewscount'] = '10';


$request = db_query("
SELECT COUNT(*)
FROM ({$db_prefix}messages AS m, {$db_prefix}boards AS b)
WHERE m.ID_MEMBER = $memID
AND b.ID_BOARD = m.ID_BOARD
AND $user_info[query_see_board]", __FILE__, __LINE__);
list ($msgCount) = mysql_fetch_row($request);
mysql_free_result($request);

$request = db_query("
SELECT MIN(ID_MSG), MAX(ID_MSG)
FROM {$db_prefix}messages AS m
WHERE m.ID_MEMBER = $memID", __FILE__, __LINE__);
list ($min_msg_member, $max_msg_member) = mysql_fetch_row($request);
mysql_free_result($request);


$reverse = false;
$range_limit = '';
$maxIndex = (int) $modSettings['defaultMaxMessages'];

// Make sure the starting place makes sense and construct our friend the page index.
$context['start'] = (int) $_REQUEST['start'];
$context['page_index'] = constructPageIndex($scripturl . '?action=profile;u=' . $memID . ';sa=showPostsini', $context['start'], $msgCount, $maxIndex);
$context['current_page'] = $context['start'] / $maxIndex;
$context['current_member'] = $memID;

// Reverse the query if we're past 50% of the pages for better performance.
$start = $context['start'];
$reverse = $_REQUEST['start'] > $msgCount / 2;
if ($reverse)
{
$maxIndex = $msgCount < $context['start'] + $modSettings['defaultMaxMessages'] + 1 && $msgCount > $context['start'] ? $msgCount - $context['start'] : (int) $modSettings['defaultMaxMessages'];
$start = $msgCount < $context['start'] + $modSettings['defaultMaxMessages'] + 1 || $msgCount < $context['start'] + $modSettings['defaultMaxMessages'] ? 0 : $msgCount - $context['start'] - $modSettings['defaultMaxMessages'];
}

// Guess the range of messages to be shown.
if ($msgCount > 1000)
{
$margin = floor(($max_msg_member - $min_msg_member) * (($start + $modSettings['defaultMaxMessages']) / $msgCount) + .1 * ($max_msg_member - $min_msg_member));
$range_limit = $reverse ? 'ID_MSG < ' . ($min_msg_member + $margin) : 'ID_MSG > ' . ($max_msg_member - $margin);
}

$context['page_title'] = $txt[458] . ' ' . $user_profile[$memID]['realName'];

// Find this user's posts.  The left join on categories somehow makes this faster, weird as it looks.
$looped = false;
while (true)
{

$request = db_query("
SELECT
b.ID_BOARD, b.name AS bname, c.ID_CAT, c.name AS cname, m.ID_TOPIC, m.ID_MSG,
t.ID_MEMBER_STARTED, t.ID_FIRST_MSG, t.ID_LAST_MSG, m.body, m.smileysEnabled,
m.subject, m.posterTime
FROM ({$db_prefix}messages AS m, {$db_prefix}topics AS t, {$db_prefix}boards AS b)
LEFT JOIN {$db_prefix}categories AS c ON (c.ID_CAT = b.ID_CAT)
WHERE m.ID_MEMBER = $memID
AND m.ID_TOPIC = t.ID_TOPIC
AND m.ID_MSG = t.ID_FIRST_MSG
AND t.ID_MEMBER_STARTED = $memID

AND t.ID_BOARD = b.ID_BOARD" . (empty($range_limit) ? '' : "
AND $range_limit") . "
AND $user_info[query_see_board]
ORDER BY m.ID_MSG " . ($reverse ? 'ASC' : 'DESC') . "
LIMIT $start, $maxIndex", __FILE__, __LINE__);


// Make sure we quit this loop.
if (mysql_num_rows($request) === $maxIndex || $looped)
break;
$looped = true;
$range_limit = '';
}

// Start counting at the number of the first message displayed.
$counter = $reverse ? $context['start'] + $maxIndex + 1 : $context['start'];
$context['posts'] = array();
$board_ids = array('own' => array(), 'any' => array());
while ($row = mysql_fetch_assoc($request))
{
// Censor....
censorText($row['body']);
censorText($row['subject']);

// Do the code.
$row['body'] = parse_bbc($row['body'], $row['smileysEnabled'], $row['ID_MSG']);

// And the array...
$context['posts'][$counter += $reverse ? -1 : 1] = array(
'body' => $row['body'],
'counter' => $counter,
'category' => array(
'name' => $row['cname'],
'id' => $row['ID_CAT']
),
'board' => array(
'name' => $row['bname'],
'id' => $row['ID_BOARD']
),
'topic' => $row['ID_TOPIC'],
'subject' => $row['subject'],
'start' => 'msg' . $row['ID_MSG'],
'time' => timeformat($row['posterTime']),
'timestamp' => forum_time(true, $row['posterTime']),
'id' => $row['ID_MSG'],
'can_reply' => false,
'can_mark_notify' => false,
'can_delete' => false,
'delete_possible' => ($row['ID_FIRST_MSG'] != $row['ID_MSG'] || $row['ID_LAST_MSG'] == $row['ID_MSG']) && (empty($modSettings['edit_disable_time']) || $row['posterTime'] + $modSettings['edit_disable_time'] * 60 >= time()),
);

if ($ID_MEMBER == $row['ID_MEMBER_STARTED'])
$board_ids['own'][$row['ID_BOARD']][] = $counter;
$board_ids['any'][$row['ID_BOARD']][] = $counter;
}
mysql_free_result($request);

// All posts were retrieved in reverse order, get them right again.
if ($reverse)
$context['posts'] = array_reverse($context['posts'], true);

// These are all the permissions that are different from board to board..
$permissions = array(
'own' => array(
'post_reply_own' => 'can_reply',
'delete_own' => 'can_delete',
),
'any' => array(
'post_reply_any' => 'can_reply',
'mark_any_notify' => 'can_mark_notify',
'delete_any' => 'can_delete',
)
);

// For every permission in the own/any lists...
foreach ($permissions as $type => $list)
{
foreach ($list as $permission => $allowed)
{
// Get the boards they can do this on...
$boards = boardsAllowedTo($permission);

// Hmm, they can do it on all boards, can they?
if (!empty($boards) && $boards[0] == 0)
$boards = array_keys($board_ids[$type]);

// Now go through each board they can do the permission on.
foreach ($boards as $board_id)
{
// There aren't any posts displayed from this board.
if (!isset($board_ids[$type][$board_id]))
continue;

// Set the permission to true ;).
foreach ($board_ids[$type][$board_id] as $counter)
$context['posts'][$counter][$allowed] = true;
}
}
}

// Clean up after posts that cannot be deleted.
foreach ($context['posts'] as $counter => $dummy)
$context['posts'][$counter]['can_delete'] &= $context['posts'][$counter]['delete_possible'];
}
]]></add>
</operation>
<operation>
<search position="before"><![CDATA[
'summary' => array(array('profile_view_any', 'profile_view_own'), array('profile_view_any')),
'statPanel' => array(array('profile_view_any', 'profile_view_own'), array('profile_view_any')),
'showPosts' => array(array('profile_view_any', 'profile_view_own'), array('profile_view_any')),
]]></search>
<add><![CDATA[
'showPostsini' => array(array('profile_view_any', 'profile_view_own'), array('profile_view_any')),
]]></add>
</operation>
<operation>
<search position="before"><![CDATA[
$context['profile_areas']['info']['areas']['summary'] = '<a href="' . $scripturl . '?action=profile;u=' . $memID . ';sa=summary">' . $txt['summary'] . '</a>';
$context['profile_areas']['info']['areas']['statPanel'] = '<a href="' . $scripturl . '?action=profile;u=' . $memID . ';sa=statPanel">' . $txt['statPanel'] . '</a>';
$context['profile_areas']['info']['areas']['showPosts'] = '<a href="' . $scripturl . '?action=profile;u=' . $memID . ';sa=showPosts">' . $txt['showPosts'] . '</a>';
]]></search>
<add><![CDATA[
$context['profile_areas']['info']['areas']['showPostsini'] = '<a href="' . $scripturl . '?action=profile;u=' . $memID . ';sa=showPostsini">' . $txt['showPosts'] . '</a>';
]]></add>
</operation>
</file>
<file name="$themedir/Profile.template.php">
        <operation>
                <search position="before"><![CDATA[
// Small template for showing an error message upon a save problem in the profile.
function template_error_message()
{
global $context, $txt;

echo '
<div class="windowbg" style="margin: 1ex; padding: 1ex 2ex; border: 1px dashed red; color: red;">
<span style="text-decoration: underline;">', $txt['profile_errors_occurred'], ':</span>
<ul>';

// Cycle through each error and display an error message.
foreach ($context['post_errors'] as $error)
//if (isset($txt['profile_error_' . $error]))
echo '
<li>', $txt['profile_error_' . $error], '.</li>';

echo '
</ul>
</div>';
}
]]></search>
                        <add><![CDATA[
// Template for showing all the posts started by a user, in chronological order.
function template_showPostsini()
{
global $context, $settings, $options, $scripturl, $modSettings, $txt;

echo '
<table border="0" width="85%" cellspacing="1" cellpadding="4" class="bordercolor" align="center">
<tr class="titlebg">
<td colspan="3" height="26">
&nbsp;<img src="', $settings['images_url'], '/icons/profile_sm.gif" alt="" align="top" />&nbsp;', $txt['showPosts'], '
</td>
</tr>';

// Only show posts if they have made some!
if (!empty($context['posts']))
{
// Page numbers.
echo '
<tr class="catbg3">
<td colspan="3">
', $txt[139], ': ', $context['page_index'], '
</td>
</tr>
</table>';

// Button shortcuts
$quote_button = create_button('quote.gif', 145, 'smf240', 'align="middle"');
$reply_button = create_button('reply_sm.gif', 146, 146, 'align="middle"');
$remove_button = create_button('delete.gif', 121, 31, 'align="middle"');
$notify_button = create_button('notify_sm.gif', 131, 125, 'align="middle"');

// For every post to be displayed, give it its own subtable, and show the important details of the post.
foreach ($context['posts'] as $post)
{
echo '
<table border="0" width="85%" cellspacing="1" cellpadding="0" class="bordercolor" align="center">
<tr>
<td width="100%">
<table border="0" width="100%" cellspacing="0" cellpadding="4" class="bordercolor" align="center">
<tr class="titlebg2">
<td style="padding: 0 1ex;">
', $post['counter'], '
</td>
<td width="75%" class="middletext">
&nbsp;<a href="', $scripturl, '#', $post['category']['id'], '">', $post['category']['name'], '</a> / <a href="', $scripturl, '?board=', $post['board']['id'], '.0">', $post['board']['name'], '</a> / <a href="', $scripturl, '?topic=', $post['topic'], '.', $post['start'], '#msg', $post['id'], '">', $post['subject'], '</a>
</td>
<td class="middletext" align="right" style="padding: 0 1ex; white-space: nowrap;">
', $txt[30], ': ', $post['time'], '
</td>
</tr>
<tr>
<td width="100%" height="80" colspan="3" valign="top" class="windowbg2">
<div class="post">', $post['body'], '</div>
</td>
</tr>
<tr>
<td colspan="3" class="windowbg2" align="', !$context['right_to_left'] ? 'right' : 'left', '"><span class="middletext">';

if ($post['can_delete'])
echo '
<a href="', $scripturl, '?action=profile;u=', $context['current_member'], ';sa=showPosts;start=', $context['start'], ';delete=', $post['id'], ';sesc=', $context['session_id'], '" onclick="return confirm(\'', $txt[154], '?\');">', $remove_button, '</a>';
if ($post['can_delete'] && ($post['can_mark_notify'] || $post['can_reply']))
echo '
', $context['menu_separator'];
if ($post['can_reply'])
echo '
<a href="', $scripturl, '?action=post;topic=', $post['topic'], '.', $post['start'], '">', $reply_button, '</a>', $context['menu_separator'], '
<a href="', $scripturl, '?action=post;topic=', $post['topic'], '.', $post['start'], ';quote=', $post['id'], ';sesc=', $context['session_id'], '">', $quote_button, '</a>';
if ($post['can_reply'] && $post['can_mark_notify'])
echo '
', $context['menu_separator'];
if ($post['can_mark_notify'])
echo '
<a href="' . $scripturl . '?action=notify;topic=' . $post['topic'] . '.' . $post['start'] . '">' . $notify_button . '</a>';

echo '
</span></td>
</tr>
</table>
</td>
</tr>
</table>';
}

// Show more page numbers.
echo '
<table border="0" width="85%" cellspacing="1" cellpadding="4" class="bordercolor" align="center">
<tr>
<td colspan="3" class="catbg3">
', $txt[139], ': ', $context['page_index'], '
</td>
</tr>
</table>';
}
// No posts? Just end the table with a informative message.
else
echo '
<tr class="windowbg2">
<td>
', $txt[170], '
</td>


</tr>
</table>';
}
]]></add>
</operation>
    <operation>
                <search position="before"><![CDATA[
<a href="', $scripturl, '?action=profile;u=', $context['member']['id'], ';sa=showPosts">', $txt[460], ' ', $txt[461], '.</a><br />
]]></search>
                        <add><![CDATA[
<a href="', $scripturl, '?action=profile;u=', $context['member']['id'], ';sa=showPostsini">', $txt[460], ' ', $txt[489], '.</a><br />
]]></add>
</operation>
</file>
<file name="$themedir/Display.template.php">
        <operation>
                <search position="replace"><![CDATA[
<a href="', $message['member']['href'], '">', ($settings['use_image_buttons'] ? '<img src="' . $settings['images_url'] . '/icons/profile_sm.gif" alt="' . $txt[27] . '" title="' . $txt[27] . '" border="0" />' : $txt[27]), '</a>';
]]></search>
                        <add><![CDATA[
<a href="', $message['member']['href'], '">', ($settings['use_image_buttons'] ? '<img src="' . $settings['images_url'] . '/icons/profile_sm.gif" alt="' . $txt[27] . '" title="' . $txt[27] . '" border="0" />' : $txt[27]), '</a>
<a href="', $message['member']['href'], ';sa=showPostsini"><img src="' . $settings['images_url'] . '/icons/speaker.gif" alt="' . $txt[started_by_this_u] . '" title="' . $txt[started_by_this_u] . '" border="0" /></a>';
]]></add>
                </operation>
        </file>
        <file name="$themedir/languages/Modifications.english.php">
                <operation>
                        <search position="end"></search>
                        <add><![CDATA[
$txt['youtube'] = 'YouTube';
]]></add>
                </operation>
        </file>
<file name="$themedir/languages/Modifications.spanish_es.php" error="ignore">
                <operation error="ignore">
                        <search position="end"></search>
                        <add><![CDATA[
$txt[489] = 'topics started by this user';
]]></add>
                </operation>
        </file>
<file name="$themedir/languages/Modifications.spanish_es.php" error="ignore">
                <operation error="ignore">
                        <search position="end"></search>
                        <add><![CDATA[
$txt[started_by_this_u] = 'Show the posts started by this member.';
]]></add>
                </operation>
                <operation error="ignore">
                        <search position="end"></search>
                        <add><![CDATA[
$txt[started_by_this_u] = 'Ver temas iniciados por este usuario';
]]></add>
                </operation>
        </file>
</modification>



This is the package-info.xml file :
<?xml version="1.0"?>
<!DOCTYPE package-info SYSTEM "http://www.simplemachines.org/xml/package-info">
<package-info xmlns="http://www.simplemachines.org/xml/package-info" xmlns:smf="http://www.simplemachines.org/">
<id>Yio:Topics_Started_by_a_user</id>
<name>Topics Started by a user - By Yio</name>
<version>0.2</version>
<type>modification</type>
<install for="1.1">
<readme type="inline">This mod adds a Topics Started by a user link in Profile and Topic Display.</readme>
<modification>Topics_Started_by_a_user_0.2.xml</modification>
<require-file name="speaker.gif" destination="Themes/default/images/icons" />
</install>
<uninstall for="1.1">
<readme type="inline">This will remove Topics Started by a user</readme>
<modification reverse="true">Topics_Started_by_a_user_0.2.xml</modification>
</uninstall>
</package-info>


And the image is ok

RRasco

so go to your server and delete the uploaded file.  you should then be able re-upload it.
Vehicle Management System for SMF - SMFGarage.com

Yio

I´m talking about uploading to www.simplemachines.org

I change the version id in the file and uploaded without troubles
Thanks

SleePy

The ID tag sets the ID for your mod. It can never change for that mod, Nor can anyone upload another mod with that similar ID. Its unique.
If for a very good reason you need it changed somebody from the SMF team who has access to the mod site might be willing to change the ID for you.
Jeremy D ~ Site Team / SMF Developer ~ GitHub Profile ~ Join us on IRC @ Libera.chat/#smf ~ Support the SMF Support team!

Harzem

You don't need to resubmit the mod. Go to your first submission, and edit it by uploading a new file.

Yio

Well, thanks, but changing ID was necesary because I made a bugfix in it.
Next time I'll create a mod I'll must test it much more before upload it to www.simplemachines.org.
I apologize for the first mode I sent and for the inconveniences this might be causing all of you.
Best regards

Yio

Sorry. I haven´t seen the BIG links Edit and Remove.
By the way, I clicked in Remove link but it still appears, as removed ???

SleePy

Jeremy D ~ Site Team / SMF Developer ~ GitHub Profile ~ Join us on IRC @ Libera.chat/#smf ~ Support the SMF Support team!

Yio


Advertisement: